PluginProbe ʕ •ᴥ•ʔ
Premium Addons for Elementor – Powerful Elementor Templates & Widgets / 4.11.84
Premium Addons for Elementor – Powerful Elementor Templates & Widgets v4.11.84
4.11.84 4.11.83 4.11.82 4.11.80 4.11.81 4.11.79 4.11.78 4.11.77 4.11.76 4.11.75 3.20.5 4.11.69 3.20.6 4.11.7 3.20.7 4.11.70 3.20.8 4.11.71 3.20.9 4.11.72 3.21.1 4.11.73 3.21.2 4.11.74 3.21.3 4.11.8 3.21.4 4.11.9 3.21.5 4.2.0 3.21.6 4.2.1 3.3.0 4.2.2 3.3.1 4.2.3 3.3.2 4.2.4 3.3.3 4.2.5 3.3.4 4.2.6 3.3.5 4.2.7 3.3.6 4.2.8 3.3.7 4.2.9 3.3.8 4.3.0 3.3.9 4.3.1 3.4.0 4.3.2 3.4.1 4.3.3 3.4.2 4.3.4 3.4.3 4.3.5 3.4.4 4.3.6 3.4.5 4.3.7 3.4.6 4.3.8 3.4.7 4.3.9 3.4.8 4.4.0 3.4.9 4.4.1 3.5.0 4.4.2 3.5.1 4.4.3 3.5.2 4.4.4 3.5.3 4.4.5 3.5.4 4.4.6 3.5.5 4.4.7 3.5.6 4.4.8 3.5.7 4.4.9 3.5.8 4.5.0 3.5.9 4.5.1 3.6.0 4.5.2 3.6.1 4.5.3 3.6.2 4.5.4 3.6.3 4.5.5 3.6.4 4.5.6 3.6.5 4.5.7 3.6.6 4.5.8 3.6.7 4.5.9 3.6.8 4.6.0 3.6.9 4.6.1 3.7.0 4.7.0 3.7.1 4.7.1 3.7.2 4.7.2 3.7.3 4.7.3 3.7.4 4.7.4 3.7.5 4.7.5 3.7.6 4.7.6 3.7.7 4.7.7 3.7.8 4.7.8 3.7.9 4.7.9 3.8.0 4.8.0 3.8.1 4.8.1 3.8.2 4.8.10 3.8.3 4.8.11 3.8.4 4.8.2 3.8.5 4.8.3 3.8.6 4.8.4 3.8.7 4.8.5 3.8.8 4.8.6 3.8.9 4.8.7 3.9.0 4.8.8 3.9.1 4.8.9 3.9.2 4.9.0 3.9.3 4.9.0-beta1 3.9.4 4.9.0-beta2 3.9.5 4.9.1 3.9.6 4.9.10 3.9.7 4.9.11 3.9.8 4.9.12 3.9.9 4.9.13 4.0.1 4.9.14 4.0.3 4.9.15 4.0.4 4.9.16 4.0.5 4.9.17 4.0.6 4.9.18 4.0.7 4.9.19 4.0.8 4.9.2 4.0.9 4.9.20 4.1.0 4.9.21 4.1.1 4.9.22 4.1.2 4.9.23 4.1.3 4.9.24 trunk 4.1.4 4.9.25 1.0 4.1.5 4.9.26 1.01 4.1.6 4.9.27 1.02 4.1.7 4.9.28 1.03 4.1.8 4.9.29 1.04 4.1.9 4.9.3 1.05 4.10.0 4.9.30 1.06 4.10.1 4.9.31 1.07 4.10.10 4.9.32 1.08 4.10.11 4.9.33 1.09 4.10.12 4.9.34 2.0 4.10.13 4.9.35 2.0.1 4.10.14 4.9.36 2.0.2 4.10.15 4.9.37 2.0.3 4.10.16 4.9.38 2.0.4 4.10.17 4.9.39 2.0.5 4.10.18 4.9.4 2.0.6 4.10.19 4.9.40 2.0.7 4.10.2 4.9.41 2.0.8 4.10.20 4.9.42 2.0.9 4.10.21 4.9.43 2.1.0 4.10.22 4.9.45 2.1.1 4.10.23 4.9.46 2.1.2 4.10.24 4.9.47 2.1.3 4.10.25 4.9.48 2.1.4 4.10.26 4.9.49 2.1.5 4.10.27 4.9.5 2.1.5-beta1 4.10.28 4.9.50 2.1.6 4.10.29 4.9.51 2.1.7 4.10.3 4.9.52 2.1.8 4.10.30 4.9.53 2.1.9 4.10.31 4.9.54 2.2.0 4.10.32 4.9.55 2.2.1 4.10.33 4.9.56 2.2.2 4.10.34 4.9.57 2.2.3 4.10.35 4.9.6 2.2.4 4.10.36 4.9.7 2.2.5 4.10.37 4.9.8 2.2.6 4.10.38 4.9.9 2.2.7 4.10.39 2.2.8 4.10.4 2.2.9 4.10.40 2.3.0 4.10.41 2.3.1 4.10.42 2.3.2 4.10.43 2.3.3 4.10.44 2.3.4 4.10.45 2.3.5 4.10.46 2.3.6 4.10.47 2.3.7 4.10.48 2.3.8 4.10.49 2.3.9 4.10.5 2.4.0 4.10.50 2.4.1 4.10.51 2.5.0 4.10.52 2.5.1 4.10.53 2.5.2 4.10.54 2.5.3 4.10.55 2.5.4 4.10.56 2.5.5 4.10.57 2.5.6 4.10.58 2.5.7 4.10.59 2.5.8 4.10.6 2.5.9 4.10.60 2.6.0 4.10.61 2.6.1 4.10.62 2.6.2 4.10.63 2.6.3 4.10.64 2.6.4 4.10.65 2.6.5 4.10.66 2.6.6 4.10.67 2.6.7 4.10.68 2.6.8 4.10.69 2.6.9 4.10.7 2.7.0 4.10.70 2.7.1 4.10.71 2.7.2 4.10.72 2.7.3 4.10.73 2.7.4 4.10.74 2.7.5 4.10.75 2.7.6 4.10.76 2.7.7 4.10.77 2.7.8 4.10.78 2.7.9 4.10.79 2.8.0 4.10.8 2.8.1 4.10.80 2.8.2 4.10.81 2.8.3 4.10.82 2.8.4 4.10.83 2.8.5 4.10.84 2.8.6 4.10.85 2.8.7 4.10.86 2.8.8 4.10.87 2.8.9 4.10.88 2.9.0 4.10.89 2.9.1 4.10.9 2.9.2 4.10.90 2.9.3 4.11.0 2.9.4 4.11.1 2.9.5 4.11.10 2.9.6 4.11.11 2.9.7 4.11.12 2.9.8 4.11.13 2.9.9 4.11.14 3.0.0 4.11.15 3.0.1 4.11.16 3.0.2 4.11.17 3.0.3 4.11.18 3.0.4 4.11.19 3.0.5 4.11.2 3.0.6 4.11.20 3.0.7 4.11.21 3.0.8 4.11.22 3.0.9 4.11.23 3.1.0 4.11.24 3.1.1 4.11.25 3.1.2 4.11.26 3.1.3 4.11.27 3.1.4 4.11.28 3.1.5 4.11.29 3.1.6 4.11.3 3.1.7 4.11.30 3.1.8 4.11.31 3.1.9 4.11.32 3.10.0 4.11.33 3.10.1 4.11.34 3.10.2 4.11.35 3.10.3 4.11.36 3.10.4 4.11.37 3.10.5 4.11.38 3.10.6 4.11.39 3.10.7 4.11.4 3.10.8 4.11.40 3.10.9 4.11.41 3.11.0 4.11.42 3.11.1 4.11.43 3.11.2 4.11.44 3.11.3 4.11.45 3.11.4 4.11.46 3.11.5 4.11.47 3.11.6 4.11.48 3.11.7 4.11.49 3.11.8 4.11.5 3.11.9 4.11.50 3.12.0 4.11.51 3.12.1 4.11.52 3.12.2 4.11.53 3.12.3 4.11.54 3.2.0 4.11.55 3.2.1 4.11.56 3.2.2 4.11.57 3.2.3 4.11.58 3.2.4 4.11.59 3.2.5 4.11.6 3.2.6 4.11.60 3.2.7 4.11.61 3.2.8 4.11.62 3.2.9 4.11.63 3.20.0 4.11.64 3.20.1 4.11.65 3.20.2 4.11.66 3.20.3 4.11.67 3.20.4 4.11.68
premium-addons-for-elementor / addons / equal-height.php
premium-addons-for-elementor / addons Last commit date
display-conditions.php 2 weeks ago equal-height.php 2 weeks ago floating-effects.php 2 weeks ago liquid-glass.php 2 weeks ago shape-divider.php 2 weeks ago shapes.php 2 weeks ago tooltips.php 2 days ago wrapper-link.php 2 weeks ago
equal-height.php
349 lines
1 <?php
2 /**
3 * Class: Equal_Height
4 * Name: Premium Equal Height
5 * Slug: premium-equal-height
6 */
7
8 namespace PremiumAddons\Addons;
9
10 // PremiumAddons Classes.
11 use PremiumAddons\Includes\Controls\Premium_Select;
12 use PremiumAddons\Admin\Includes\Admin_Helper;
13 use PremiumAddons\Includes\Helper_Functions;
14
15 // Elementor Classes.
16 use Elementor\Repeater;
17 use Elementor\Controls_Manager;
18
19
20 if ( ! defined( 'ABSPATH' ) ) {
21 exit;
22 }
23
24 /**
25 * Class Equal_Height
26 *
27 * @since 4.11.58
28 * @access public
29 * @package PremiumAddons\Addons
30 */
31 class Equal_Height {
32
33 /**
34 * Load Script
35 *
36 * @var bool|null
37 */
38 private static $load_script = null;
39
40 /**
41 * Class object
42 *
43 * @var self|null
44 */
45 private static $instance = null;
46
47 /**
48 * Class Constructor Function.
49 */
50 public function __construct() {
51
52 // Enqueue the required JS file.
53 add_action( 'elementor/preview/enqueue_scripts', array( $this, 'enqueue_scripts' ) );
54
55 // Create Premium Equal Height tab at the end of section layout tab.
56 add_action( 'elementor/element/section/section_advanced/after_section_end', array( $this, 'register_controls' ), 10 );
57
58 add_action( 'elementor/section/print_template', array( $this, 'print_template' ), 10, 1 );
59
60 // Insert data before section rendering.
61 add_action( 'elementor/frontend/section/before_render', array( $this, 'before_render' ), 10, 1 );
62
63 // Check if scripts should be loaded.
64 add_action( 'elementor/frontend/section/before_render', array( $this, 'check_script_enqueue' ) );
65
66 add_action( 'elementor/element/container/section_layout/after_section_end', array( $this, 'register_controls' ), 10 );
67 add_action( 'elementor/container/print_template', array( $this, 'print_template' ), 10, 1 );
68 add_action( 'elementor/frontend/container/before_render', array( $this, 'before_render' ), 100, 1 );
69 add_action( 'elementor/frontend/container/before_render', array( $this, 'check_script_enqueue' ) );
70 }
71
72 /**
73 * Enqueue scripts.
74 *
75 * Registers required dependencies for the extension and enqueues them.
76 *
77 * @since 1.6.5
78 * @access public
79 */
80 public function enqueue_scripts() {
81
82 if ( ! wp_script_is( 'pa-eq-height', 'enqueued' ) ) {
83 wp_enqueue_script( 'pa-eq-height' );
84 }
85 }
86
87 /**
88 * Register Premium Equal Height controls.
89 *
90 * @access public
91 * @param object $element for current element.
92 */
93 public function register_controls( $element ) {
94
95 $element->start_controls_section(
96 'section_premium_eq_height',
97 array(
98 'label' => sprintf( '<i class="pa-extension-icon pa-dash-icon"></i> %s', __( 'Equal Height', 'premium-addons-for-elementor' ) ),
99 'tab' => Controls_Manager::TAB_ADVANCED,
100 )
101 );
102
103 $element->add_control(
104 'premium_eq_height_update',
105 array(
106 'label' => '<div class="elementor-update-preview editor-pa-preview-update" style="background-color: #fff;"><div class="elementor-update-preview-title">Update changes to page</div><div class="elementor-update-preview-button-wrapper"><button class="elementor-update-preview-button elementor-button elementor-button-success">Apply</button></div></div>',
107 'type' => Controls_Manager::RAW_HTML,
108 )
109 );
110
111 $element->add_control(
112 'premium_eq_height_switcher',
113 array(
114 'label' => __( 'Enable Equal Height', 'premium-addons-for-elementor' ),
115 'type' => Controls_Manager::SWITCHER,
116 'return_value' => 'yes',
117 'render_type' => 'template',
118 'prefix_class' => 'premium-equal-height-',
119 'frontend_available' => true,
120 )
121 );
122
123 $element->add_control(
124 'premium_eq_height_type',
125 array(
126 'label' => __( 'Apply on', 'premium-addons-for-elementor' ),
127 'type' => Controls_Manager::SELECT,
128 'default' => 'widget',
129 'options' => array(
130 'widget' => __( 'Widgets', 'premium-addons-for-elementor' ),
131 'custom' => __( 'Custom Selector', 'premium-addons-for-elementor' ),
132 ),
133 'condition' => array(
134 'premium_eq_height_switcher' => 'yes',
135 ),
136 )
137 );
138
139 $element->add_control(
140 'premium_eq_height_target',
141 array(
142 'label' => __( 'Widgets', 'premium-addons-for-elementor' ),
143 'type' => Premium_Select::TYPE,
144 'render_type' => 'template',
145 'label_block' => true,
146 'multiple' => true,
147 'frontend_available' => true,
148 'condition' => array(
149 'premium_eq_height_switcher' => 'yes',
150 'premium_eq_height_type' => 'widget',
151 ),
152 )
153 );
154
155 $element->add_control(
156 'premium_eq_height_custom_target',
157 array(
158 'label' => __( 'Selectors', 'premium-addons-for-elementor' ),
159 'type' => Controls_Manager::TEXT,
160 'label_block' => true,
161 'placeholder' => __( '.class-name, .class-name2 .my-custom-class', 'premium-addons-for-elementor' ),
162 'description' => __( 'Enter selectors separated with \' , \' ', 'premium-addons-for-elementor' ),
163 'condition' => array(
164 'premium_eq_height_switcher' => 'yes',
165 'premium_eq_height_type' => 'custom',
166 ),
167 )
168 );
169
170 $element->add_control(
171 'premium_eq_height_trigger',
172 array(
173 'label' => __( 'Trigger on', 'premium-addons-for-elementor' ),
174 'type' => Controls_Manager::SELECT,
175 'options' => array(
176 'load' => __( 'Page Load', 'premium-addons-for-elementor' ),
177 'scroll' => __( 'Scroll', 'premium-addons-for-elementor' ),
178 ),
179 'default' => 'load',
180 'condition' => array(
181 'premium_eq_height_switcher' => 'yes',
182 ),
183 )
184 );
185
186 $element->add_control(
187 'premium_eq_height_enable_on',
188 array(
189 'label' => __( 'Enable Equal Height on', 'premium-addons-for-elementor' ),
190 'type' => Controls_Manager::SELECT2,
191 'multiple' => true,
192 'options' => Helper_Functions::get_all_breakpoints(),
193 'label_block' => true,
194 'default' => Helper_Functions::get_all_breakpoints( 'keys' ),
195 'condition' => array(
196 'premium_eq_height_switcher' => 'yes',
197 ),
198 )
199 );
200
201 $docs = array(
202 'https://premiumaddons.com/docs/elementor-column-equal-height/' => __( 'How to use Premium Equal Height feature »', 'premium-addons-for-elementor' ),
203 'https://www.youtube.com/watch?v=ZaZ163p-saA' => __( 'Video tutorial »', 'premium-addons-for-elementor' ),
204 );
205
206 $doc_index = 1;
207 foreach ( $docs as $url => $title ) {
208
209 $doc_url = Helper_Functions::get_campaign_link( $url, 'eq-height-addon', 'wp-editor', 'get-support' );
210
211 $element->add_control(
212 'doc_' . $doc_index,
213 array(
214 'type' => Controls_Manager::RAW_HTML,
215 'raw' => sprintf( '<a href="%s" target="_blank">%s</a>', $doc_url, $title ),
216 'content_classes' => 'editor-pa-doc',
217 )
218 );
219
220 ++$doc_index;
221
222 }
223
224 $element->end_controls_section();
225 }
226
227 /**
228 * Render Premium Equal Height output in the editor.
229 *
230 * Written as a Backbone JavaScript template and used to generate the live preview.
231 *
232 * @since 4.2.5
233 * @access public
234 * @param string $template for current template.
235 */
236 public function print_template( $template ) {
237
238 $old_template = $template;
239 ob_start();
240
241 ?>
242 <# if( 'yes' === settings.premium_eq_height_switcher ) {
243
244 var targetType = settings.premium_eq_height_type,
245
246 target = 'custom' === targetType ? settings.premium_eq_height_custom_target.split(',') : settings.premium_eq_height_target,
247
248 addonSettings = {
249 'targetType': targetType,
250 'target': target,
251 'trigger':settings.premium_eq_height_trigger,
252 'enableOn':settings.premium_eq_height_enable_on
253 };
254
255 view.addRenderAttribute( 'equal_height', {
256 'id' : 'premium-temp-equal-height-' + view.getID(),
257 'data-pa-eq-height': JSON.stringify( addonSettings )
258 });
259
260 #>
261 <div {{{ view.getRenderAttributeString( 'equal_height' ) }}}></div>
262 <# } #>
263 <?php
264
265 $element_content = ob_get_contents();
266
267 ob_end_clean();
268
269 $template = $element_content . $old_template;
270 return $template;
271 }
272
273 /**
274 * Render Premium Equal Height output on the frontend.
275 *
276 * Written in PHP and used to generate the final HTML.
277 *
278 * @since 4.2.5
279 * @access public
280 *
281 * @param object $element for current element.
282 */
283 public function before_render( $element ) {
284
285 $settings = $element->get_settings_for_display();
286
287 if ( 'yes' === $settings['premium_eq_height_switcher'] ) {
288
289 $target_type = $settings['premium_eq_height_type'];
290
291 $target = ( 'custom' === $target_type ) ? explode( ',', $settings['premium_eq_height_custom_target'] ) : $settings['premium_eq_height_target'];
292
293 $addon_settings = array(
294 'targetType' => $target_type,
295 'target' => $target,
296 'trigger' => $settings['premium_eq_height_trigger'],
297 'enableOn' => $settings['premium_eq_height_enable_on'],
298 );
299
300 $element->add_render_attribute( '_wrapper', 'data-pa-eq-height', wp_json_encode( $addon_settings ) );
301 }
302 }
303
304 /**
305 * Check Script Enqueue
306 *
307 * Check if the script files should be loaded.
308 *
309 * @since 4.7.7
310 * @access public
311 *
312 * @param object $element for current element.
313 */
314 public function check_script_enqueue( $element ) {
315
316 if ( self::$load_script ) {
317 return;
318 }
319
320 if ( 'yes' === $element->get_settings_for_display( 'premium_eq_height_switcher' ) ) {
321 $this->enqueue_scripts();
322
323 self::$load_script = true;
324
325 remove_action( 'elementor/frontend/section/before_render', array( $this, 'check_script_enqueue' ) );
326 remove_action( 'elementor/frontend/container/before_render', array( $this, 'check_script_enqueue' ) );
327 }
328 }
329
330 /**
331 * Creates and returns an instance of the class
332 *
333 * @since 4.2.5
334 * @access public
335 *
336 * @return object
337 */
338 public static function get_instance() {
339
340 if ( ! isset( self::$instance ) ) {
341
342 self::$instance = new self();
343
344 }
345
346 return self::$instance;
347 }
348 }
349