1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
<?php namespace Elementor;
if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. }
/** * Elementor animation control. * * A base control for creating entrance animation control. Displays a select box * with the available entrance animation effects @see Control_Animation::get_animations() . * * @since 1.0.0 */ class Control_Animation extends Base_Data_Control {
/** * Get control type. * * Retrieve the animation control type. * * @since 1.0.0 * @access public * * @return string Control type. */ public function get_type() { return 'animation'; }
/** * Retrieve default control settings. * * Get the default settings of the control. Used to return the default * settings while initializing the control. * * @since 2.5.0 * @access protected * * @return array Control default settings. */ protected function get_default_settings() { $default_settings['label_block'] = true; $default_settings['render_type'] = 'none';
return $default_settings; }
/** * Get animations list. * * Retrieve the list of all the available animations. * * @since 1.0.0 * @access public * @static * * @return array Control type. */ public static function get_animations() { $additional_animations = [];
/** * Entrance animations. * * Filters the animations list displayed in the animations control. * * This hook can be used to register animations in addition to the * basic Elementor animations. * * @since 2.4.0 * * @param array $additional_animations Additional animations array. */ $additional_animations = apply_filters( 'elementor/controls/animations/additional_animations', $additional_animations );
return array_merge( static::get_default_animations(), $additional_animations ); }
public static function get_default_animations() { return [ 'Fading' => [ 'fadeIn' => 'Fade In', 'fadeInDown' => 'Fade In Down', 'fadeInLeft' => 'Fade In Left', 'fadeInRight' => 'Fade In Right', 'fadeInUp' => 'Fade In Up', ], 'Zooming' => [ 'zoomIn' => 'Zoom In', 'zoomInDown' => 'Zoom In Down', 'zoomInLeft' => 'Zoom In Left', 'zoomInRight' => 'Zoom In Right', 'zoomInUp' => 'Zoom In Up', ], 'Bouncing' => [ 'bounceIn' => 'Bounce In', 'bounceInDown' => 'Bounce In Down', 'bounceInLeft' => 'Bounce In Left', 'bounceInRight' => 'Bounce In Right', 'bounceInUp' => 'Bounce In Up', ], 'Sliding' => [ 'slideInDown' => 'Slide In Down', 'slideInLeft' => 'Slide In Left', 'slideInRight' => 'Slide In Right', 'slideInUp' => 'Slide In Up', ], 'Rotating' => [ 'rotateIn' => 'Rotate In', 'rotateInDownLeft' => 'Rotate In Down Left', 'rotateInDownRight' => 'Rotate In Down Right', 'rotateInUpLeft' => 'Rotate In Up Left', 'rotateInUpRight' => 'Rotate In Up Right', ], 'Attention Seekers' => [ 'bounce' => 'Bounce', 'flash' => 'Flash', 'pulse' => 'Pulse', 'rubberBand' => 'Rubber Band', 'shake' => 'Shake', 'headShake' => 'Head Shake', 'swing' => 'Swing', 'tada' => 'Tada', 'wobble' => 'Wobble', 'jello' => 'Jello', ], 'Light Speed' => [ 'lightSpeedIn' => 'Light Speed In', ], 'Specials' => [ 'rollIn' => 'Roll In', ], ]; }
/** * Render animations control template. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { ?> <div class="elementor-control-field"> <label for="<?php $this->print_control_uid(); ?>" class="elementor-control-title">{{{ data.label }}}</label> <div class="elementor-control-input-wrapper"> <select id="<?php $this->print_control_uid(); ?>" data-setting="{{ data.name }}"> <option value=""><?php echo esc_html__( 'Default', 'elementor' ); ?></option> <option value="none"><?php echo esc_html__( 'None', 'elementor' ); ?></option> <?php foreach ( static::get_animations() as $animations_group_name => $animations_group ) : ?> <optgroup label="<?php echo esc_attr( $animations_group_name ); ?>"> <?php foreach ( $animations_group as $animation_name => $animation_title ) : ?> <option value="<?php echo esc_attr( $animation_name ); ?>"><?php echo esc_html( $animation_title ); ?></option> <?php endforeach; ?> </optgroup> <?php endforeach; ?> </select> </div> </div> <# if ( data.description ) { #> <div class="elementor-control-field-description">{{{ data.description }}}</div> <# } #> <?php }
public static function get_assets( $setting ) { if ( ! $setting || 'none' === $setting ) { return []; }
return [ 'styles' => [ 'e-animation-' . $setting ], ]; } }
|