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 / widgets / premium-icon-list.php
premium-addons-for-elementor / widgets Last commit date
dep 3 weeks ago premium-banner.php 1 day ago premium-blog.php 2 weeks ago premium-button.php 2 weeks ago premium-carousel.php 2 weeks ago premium-contactform.php 2 weeks ago premium-countdown.php 2 weeks ago premium-counter.php 2 weeks ago premium-dual-header.php 2 weeks ago premium-fancytext.php 2 weeks ago premium-grid.php 2 weeks ago premium-icon-list.php 2 weeks ago premium-image-button.php 2 weeks ago premium-image-scroll.php 2 weeks ago premium-image-separator.php 2 weeks ago premium-lottie.php 2 weeks ago premium-maps.php 2 days ago premium-media-wheel.php 2 weeks ago premium-mobile-menu.php 2 weeks ago premium-modalbox.php 2 days ago premium-nav-menu.php 2 weeks ago premium-notifications.php 2 weeks ago premium-person.php 2 weeks ago premium-pinterest-feed.php 2 weeks ago premium-post-ticker.php 2 weeks ago premium-pricing-table.php 2 days ago premium-progressbar.php 2 weeks ago premium-search-form.php 2 days ago premium-svg-drawer.php 2 weeks ago premium-tcloud.php 2 weeks ago premium-testimonials.php 2 weeks ago premium-textual-showcase.php 2 weeks ago premium-tiktok-feed.php 2 weeks ago premium-title.php 2 days ago premium-videobox.php 2 weeks ago premium-vscroll.php 2 weeks ago premium-weather.php 2 weeks ago premium-world-clock.php 2 weeks ago
premium-icon-list.php
2864 lines
1 <?php
2 /**
3 * Class: Premium_Icon_list
4 * Name: Bullet List
5 * Slug: premium-addon-icon-list
6 */
7
8 namespace PremiumAddons\Widgets;
9
10 // Elementor Classes.
11 use Elementor\Plugin;
12 use Elementor\Icons_Manager;
13 use Elementor\Control_Media;
14 use Elementor\Widget_Base;
15 use Elementor\Utils;
16 use Elementor\Controls_Manager;
17 use Elementor\Repeater;
18 use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
19 use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
20 use Elementor\Group_Control_Box_Shadow;
21 use Elementor\Group_Control_Text_Shadow;
22 use Elementor\Group_Control_Border;
23 use Elementor\Group_Control_Typography;
24
25
26 // PremiumAddons Classes.
27 use PremiumAddons\Admin\Includes\Admin_Helper;
28 use PremiumAddons\Includes\Helper_Functions;
29 use PremiumAddons\Includes\Controls\Premium_Post_Filter;
30 use PremiumAddons\Includes\Controls\Premium_Background;
31
32
33 if ( ! defined( 'ABSPATH' ) ) {
34 exit; // If this file is called directly, abort.
35 }
36
37 /**
38 * Class Premium_Icon_List
39 */
40 class Premium_Icon_List extends Widget_Base {
41
42 /**
43 * Check if the icon draw is enabled.
44 *
45 * @since 4.9.26
46 * @access private
47 *
48 * @var bool
49 */
50 private $is_draw_enabled = null;
51
52 /**
53 * Check Icon Draw Option.
54 *
55 * @since 4.9.26
56 * @access public
57 */
58 public function check_icon_draw() {
59
60 if ( null === $this->is_draw_enabled ) {
61 $this->is_draw_enabled = Admin_Helper::check_svg_draw( 'premium-icon-list' );
62 }
63
64 return $this->is_draw_enabled;
65 }
66
67 /**
68 * Retrieve Widget Name.
69 *
70 * @since 1.0.0
71 * @access public
72 */
73 public function get_name() {
74 return 'premium-icon-list';
75 }
76
77 /**
78 * Retrieve Widget Title.
79 *
80 * @since 1.0.0
81 * @access public
82 */
83 public function get_title() {
84 return __( 'Bullet List', 'premium-addons-for-elementor' );
85 }
86
87 /**
88 * Retrieve Widget Dependent CSS.
89 *
90 * @since 1.0.0
91 * @access public
92 *
93 * @return array CSS style handles.
94 */
95 public function get_style_depends() {
96 return array(
97 'pa-glass',
98 'premium-addons',
99 );
100 }
101
102 /**
103 * Retrieve Widget Dependent JS.
104 *
105 * @since 1.0.0
106 * @access public
107 *
108 * @return array JS script handles.
109 */
110 public function get_script_depends() {
111
112 $is_edit = Helper_Functions::is_edit_mode();
113
114 $scripts = array();
115
116 if ( $is_edit ) {
117
118 $draw_scripts = $this->check_icon_draw() ? array( 'pa-tweenmax', 'pa-motionpath' ) : array();
119
120 $scripts = array_merge( $draw_scripts, array( 'lottie-js', 'pa-glass' ) );
121
122 } else {
123 $settings = $this->get_settings();
124
125 if ( ! empty( $settings['list'] ) ) {
126 foreach ( $settings['list'] as $item ) {
127 if ( 'yes' === $item['draw_svg'] ) {
128 $scripts[] = 'pa-tweenmax';
129 $scripts[] = 'pa-motionpath';
130
131 $draw_js = true;
132 }
133
134 if ( 'lottie' === $item['icon_type'] ) {
135 $scripts[] = 'lottie-js';
136
137 $lottie_js = true;
138 }
139
140 if ( isset( $draw_js ) && isset( $lottie_js ) ) {
141 break;
142 }
143 }
144 }
145
146 if ( 'none' !== $settings['items_lq_effect'] ) {
147 $scripts[] = 'pa-glass';
148 }
149 }
150
151 $scripts[] = 'premium-addons';
152
153 return $scripts;
154 }
155
156 /**
157 * Retrieve Widget Icon.
158 *
159 * @since 1.0.0
160 * @access public
161 *
162 * @return string widget icon.
163 */
164 public function get_icon() {
165 return 'pa-icon-list';
166 }
167
168 /**
169 * Retrieve Widget Categories.
170 *
171 * @since 1.5.1
172 * @access public
173 *
174 * @return array Widget categories.
175 */
176 public function get_categories() {
177 return array( 'premium-elements' );
178 }
179
180 /**
181 * Retrieve Widget Keywords.
182 *
183 * @since 1.0.0
184 * @access public
185 *
186 * @return array Widget keywords.
187 */
188 public function get_keywords() {
189 return array( 'pa', 'premium', 'premium bullet list', 'icon', 'feature', 'list' );
190 }
191
192 protected function is_dynamic_content(): bool {
193 return false;
194 }
195
196 /**
197 * Retrieve Widget Support URL.
198 *
199 * @access public
200 *
201 * @return string support URL.
202 */
203 public function get_custom_help_url() {
204 return 'https://premiumaddons.com/support/';
205 }
206
207 public function has_widget_inner_wrapper(): bool {
208 return ! Helper_Functions::check_elementor_experiment( 'e_optimized_markup' );
209 }
210
211 /**
212 * Register Bullet List controls.
213 *
214 * @since 4.0.0
215 * @access protected
216 */
217 public function register_controls() { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore
218
219 $draw_icon = $this->check_icon_draw();
220
221 $this->add_list_items_controls( $draw_icon );
222
223 $this->add_display_options_controls();
224
225 $this->add_random_badge_controls();
226
227 $this->add_help_section_controls();
228
229 Helper_Functions::register_papro_promotion_controls( $this, 'bullet' );
230
231 $this->register_style_controls( $draw_icon );
232 }
233
234 /**
235 * Register Style Control
236 *
237 * @since 4.0.0
238 * @access private
239 */
240 private function register_style_controls( $draw_icon ) {
241
242 $this->add_general_style_controls();
243 $this->add_bullet_style_controls( $draw_icon );
244 $this->add_title_style_controls();
245 $this->add_desc_style_controls();
246 $this->add_badge_style_controls();
247 $this->add_divider_style_controls();
248 $this->add_connector_style_controls();
249 }
250
251 private function add_list_items_controls( $draw_icon ) {
252
253 $this->start_controls_section(
254 'list_items_section',
255 array(
256 'label' => __( 'List Items', 'premium-addons-for-elementor' ),
257 'tab' => Controls_Manager::TAB_CONTENT,
258 )
259 );
260
261 $demo = Helper_Functions::get_campaign_link( 'https://premiumaddons.com/elementor-bullet-list-widget/', 'bullet', 'wp-editor', 'demo' );
262 Helper_Functions::add_templates_controls( $this, 'bullet-list', $demo );
263
264 $repeater_list = new REPEATER();
265
266 $repeater_list->add_control(
267 'list_title',
268 array(
269 'label' => __( 'Title', 'premium-addons-for-elementor' ),
270 'type' => Controls_Manager::TEXT,
271 'default' => __( 'List Title', 'premium-addons-for-elementor' ),
272 'dynamic' => array( 'active' => true ),
273 'label_block' => true,
274 )
275 );
276
277 $repeater_list->add_control(
278 'list_desc',
279 array(
280 'label' => __( 'Description', 'premium-addons-for-elementor' ),
281 'type' => Controls_Manager::TEXTAREA,
282 'dynamic' => array( 'active' => true ),
283 'label_block' => true,
284 )
285 );
286
287 $repeater_list->add_control(
288 'show_icon',
289 array(
290 'label' => __( 'Show Bullet', 'premium-addons-for-elementor' ),
291 'type' => Controls_Manager::SWITCHER,
292 'return_value' => 'yes',
293 'default' => 'yes',
294 )
295 );
296
297 $common_conditions = array(
298 'show_icon' => 'yes',
299 );
300
301 $repeater_list->add_control(
302 'icon_type',
303 array(
304 'label' => __( 'Bullet Type', 'premium-addons-for-elementor' ),
305 'type' => Controls_Manager::SELECT,
306 'default' => 'icon',
307 'render_type' => 'template',
308 'options' => array(
309 'icon' => __( 'Icon', 'premium-addons-for-elementor' ),
310 'image' => __( 'Image', 'premium-addons-for-elementor' ),
311 'lottie' => __( 'Lottie Animation', 'premium-addons-for-elementor' ),
312 'text' => __( 'Text', 'premium-addons-for-elementor' ),
313 'svg' => __( 'SVG Code', 'premium-addons-for-elementor' ),
314 ),
315 'condition' => $common_conditions,
316 )
317 );
318
319 $repeater_list->add_control(
320 'premium_icon_list_font_updated',
321 array(
322 'label' => __( 'Icon', 'premium-addons-for-elementor' ),
323 'type' => Controls_Manager::ICONS,
324 'default' => array(
325 'value' => 'fas fa-star',
326 'library' => 'fa-solid',
327 ),
328 'condition' => array_merge(
329 $common_conditions,
330 array(
331 'icon_type' => 'icon',
332 )
333 ),
334 )
335 );
336
337 $repeater_list->add_control(
338 'custom_image',
339 array(
340 'label' => __( 'Custom Image', 'premium-addons-for-elementor' ),
341 'type' => Controls_Manager::MEDIA,
342 'dynamic' => array( 'active' => true ),
343 'default' => array(
344 'url' => Utils::get_placeholder_image_src(),
345 ),
346 'condition' => array_merge(
347 $common_conditions,
348 array(
349 'icon_type' => 'image',
350 )
351 ),
352 )
353 );
354
355 $repeater_list->add_control(
356 'list_text_icon',
357 array(
358 'label' => __( 'Text', 'premium-addons-for-elementor' ),
359 'type' => Controls_Manager::TEXT,
360 'default' => __( 'New', 'premium-addons-for-elementor' ),
361 'dynamic' => array( 'active' => true ),
362 'condition' => array_merge(
363 $common_conditions,
364 array(
365 'icon_type' => 'text',
366 )
367 ),
368 )
369 );
370
371 $repeater_list->add_control(
372 'custom_svg',
373 array(
374 'label' => __( 'SVG Code', 'premium-addons-for-elementor' ),
375 'type' => Controls_Manager::TEXTAREA,
376 'description' => 'You can use these sites to create SVGs: <a href="https://danmarshall.github.io/google-font-to-svg-path/" target="_blank">Google Fonts</a> and <a href="https://boxy-svg.com/" target="_blank">Boxy SVG</a>',
377 'condition' => array_merge(
378 $common_conditions,
379 array(
380 'icon_type' => 'svg',
381 )
382 ),
383 'ai' => array(
384 'active' => false,
385 ),
386 )
387 );
388
389 $repeater_list->add_control(
390 'lottie_url',
391 array(
392 'label' => __( 'Animation JSON URL', 'premium-addons-for-elementor' ),
393 'type' => Controls_Manager::TEXT,
394 'dynamic' => array( 'active' => true ),
395 'description' => 'Get JSON code URL from <a href="https://lottiefiles.com/" target="_blank">here</a>',
396 'label_block' => true,
397 'render_type' => 'template',
398 'condition' => array(
399 'show_icon' => 'yes',
400 'icon_type' => 'lottie',
401 ),
402 )
403 );
404
405 $repeater_list->add_control(
406 'draw_svg',
407 array(
408 'label' => __( 'Draw Icon', 'premium-addons-for-elementor' ),
409 'type' => Controls_Manager::SWITCHER,
410 'description' => __( 'Enable this option to make the icon drawable. See ', 'premium-addons-for-elementor' ) . '<a href="https://www.youtube.com/watch?v=ZLr0bRe0RAY" target="_blank">tutorial</a>',
411 'classes' => $draw_icon ? '' : 'editor-pa-control-disabled',
412 'condition' => array_merge(
413 $common_conditions,
414 array(
415 'icon_type' => array( 'icon', 'svg' ),
416 'premium_icon_list_font_updated[library]!' => 'svg',
417 )
418 ),
419 )
420 );
421
422 $animation_conds = array(
423 'terms' => array(
424 array(
425 'name' => 'show_icon',
426 'value' => 'yes',
427 ),
428 array(
429 'relation' => 'or',
430 'terms' => array(
431 array(
432 'name' => 'icon_type',
433 'value' => 'lottie',
434 ),
435 array(
436 'terms' => array(
437 array(
438 'relation' => 'or',
439 'terms' => array(
440 array(
441 'name' => 'icon_type',
442 'value' => 'icon',
443 ),
444 array(
445 'name' => 'icon_type',
446 'value' => 'svg',
447 ),
448 ),
449 ),
450 array(
451 'name' => 'draw_svg',
452 'value' => 'yes',
453 ),
454 ),
455 ),
456 ),
457 ),
458 ),
459 );
460
461 if ( $draw_icon ) {
462 $repeater_list->add_control(
463 'path_width',
464 array(
465 'label' => __( 'Path Thickness', 'premium-addons-for-elementor' ),
466 'type' => Controls_Manager::SLIDER,
467 'range' => array(
468 'px' => array(
469 'min' => 0,
470 'max' => 50,
471 'step' => 0.1,
472 ),
473 ),
474 'condition' => array_merge(
475 $common_conditions,
476 array(
477 'icon_type' => array( 'icon', 'svg' ),
478 )
479 ),
480 'selectors' => array(
481 '{{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-list-wrapper svg *' => 'stroke-width: {{SIZE}}',
482 ),
483 )
484 );
485
486 $repeater_list->add_control(
487 'svg_sync',
488 array(
489 'label' => __( 'Draw All Paths Together', 'premium-addons-for-elementor' ),
490 'type' => Controls_Manager::SWITCHER,
491 'condition' => array_merge(
492 $common_conditions,
493 array(
494 'icon_type' => array( 'icon', 'svg' ),
495 'draw_svg' => 'yes',
496 )
497 ),
498 )
499 );
500
501 $repeater_list->add_control(
502 'frames',
503 array(
504 'label' => __( 'Speed', 'premium-addons-for-elementor' ),
505 'type' => Controls_Manager::NUMBER,
506 'description' => __( 'Larger value means longer animation duration.', 'premium-addons-for-elementor' ),
507 'default' => 5,
508 'min' => 1,
509 'max' => 100,
510 'condition' => array_merge(
511 $common_conditions,
512 array(
513 'icon_type' => array( 'icon', 'svg' ),
514 'draw_svg' => 'yes',
515 )
516 ),
517 )
518 );
519
520 } else {
521
522 Helper_Functions::get_draw_svg_notice(
523 $repeater_list,
524 'bullet',
525 array_merge(
526 $common_conditions,
527 array(
528 'icon_type' => array( 'icon', 'svg' ),
529 'premium_icon_list_font_updated[library]!' => 'svg',
530 )
531 )
532 );
533
534 }
535
536 $repeater_list->add_control(
537 'lottie_loop',
538 array(
539 'label' => __( 'Loop', 'premium-addons-for-elementor' ),
540 'type' => Controls_Manager::SWITCHER,
541 'return_value' => 'true',
542 'default' => 'true',
543 'render_type' => 'template',
544 'conditions' => $animation_conds,
545 )
546 );
547
548 if ( $draw_icon ) {
549 $repeater_list->add_control(
550 'svg_notice',
551 array(
552 'raw' => __( 'Loop and Speed options are overridden when Draw SVGs in Sequence option is enabled.', 'premium-addons-for-elementor' ),
553 'type' => Controls_Manager::RAW_HTML,
554 'content_classes' => 'elementor-panel-alert elementor-panel-alert-warning',
555 'condition' => array_merge(
556 $common_conditions,
557 array(
558 'icon_type' => array( 'icon', 'svg' ),
559 'draw_svg' => 'yes',
560 )
561 ),
562 )
563 );
564 }
565
566 $repeater_list->add_control(
567 'lottie_reverse',
568 array(
569 'label' => __( 'Reverse', 'premium-addons-for-elementor' ),
570 'type' => Controls_Manager::SWITCHER,
571 'return_value' => 'true',
572 'render_type' => 'template',
573 'conditions' => $animation_conds,
574 )
575 );
576
577 if ( $draw_icon ) {
578 $repeater_list->add_control(
579 'start_point',
580 array(
581 'label' => __( 'Start Point (%)', 'premium-addons-for-elementor' ),
582 'type' => Controls_Manager::SLIDER,
583 'description' => __( 'Set the point that the SVG should start from.', 'premium-addons-for-elementor' ),
584 'default' => array(
585 'unit' => '%',
586 'size' => 0,
587 ),
588 'condition' => array_merge(
589 $common_conditions,
590 array(
591 'icon_type' => array( 'icon', 'svg' ),
592 'draw_svg' => 'yes',
593 'lottie_reverse!' => 'true',
594 )
595 ),
596 )
597 );
598
599 $repeater_list->add_control(
600 'end_point',
601 array(
602 'label' => __( 'End Point (%)', 'premium-addons-for-elementor' ),
603 'type' => Controls_Manager::SLIDER,
604 'description' => __( 'Set the point that the SVG should end at.', 'premium-addons-for-elementor' ),
605 'default' => array(
606 'unit' => '%',
607 'size' => 0,
608 ),
609 'condition' => array_merge(
610 $common_conditions,
611 array(
612 'icon_type' => array( 'icon', 'svg' ),
613 'draw_svg' => 'yes',
614 'lottie_reverse' => 'true',
615 )
616 ),
617
618 )
619 );
620
621 $repeater_list->add_control(
622 'svg_hover',
623 array(
624 'label' => __( 'Only Play on Hover', 'premium-addons-for-elementor' ),
625 'type' => Controls_Manager::SWITCHER,
626 'return_value' => 'true',
627 'condition' => array_merge(
628 $common_conditions,
629 array(
630 'icon_type' => array( 'icon', 'svg' ),
631 'draw_svg' => 'yes',
632 )
633 ),
634 )
635 );
636
637 $repeater_list->add_control(
638 'svg_yoyo',
639 array(
640 'label' => __( 'Yoyo Effect', 'premium-addons-for-elementor' ),
641 'type' => Controls_Manager::SWITCHER,
642 'condition' => array_merge(
643 $common_conditions,
644 array(
645 'icon_type' => array( 'icon', 'svg' ),
646 'draw_svg' => 'yes',
647 'lottie_loop' => 'true',
648 )
649 ),
650 )
651 );
652
653 }
654
655 $repeater_list->add_control(
656 'show_list_link',
657 array(
658 'label' => __( 'Link', 'premium-addons-for-elementor' ),
659 'type' => Controls_Manager::SWITCHER,
660 'return_value' => 'yes',
661 )
662 );
663
664 $repeater_list->add_control(
665 'link_select',
666 array(
667 'label' => __( 'Link/URL', 'premium-addons-for-elementor' ),
668 'type' => Controls_Manager::SELECT,
669 'options' => array(
670 'url' => __( 'URL', 'premium-addons-for-elementor' ),
671 'existing_page' => __( 'Existing Page', 'premium-addons-for-elementor' ),
672 ),
673 'default' => 'url',
674 'label_block' => true,
675 'condition' => array(
676 'show_list_link' => 'yes',
677 ),
678 )
679 );
680
681 $repeater_list->add_control(
682 'link',
683 array(
684 'label' => __( 'URL', 'premium-addons-for-elementor' ),
685 'type' => Controls_Manager::URL,
686 'dynamic' => array( 'active' => true ),
687 'placeholder' => 'https://premiumaddons.com/',
688 'label_block' => true,
689 'condition' => array(
690 'link_select' => 'url',
691 'show_list_link' => 'yes',
692 ),
693 )
694 );
695
696 $repeater_list->add_control(
697 'existing_page',
698 array(
699 'label' => __( 'Existing Page', 'premium-addons-for-elementor' ),
700 'type' => Premium_Post_Filter::TYPE,
701 'label_block' => true,
702 'multiple' => false,
703 'source' => array( 'post', 'page' ),
704 'condition' => array(
705 'link_select' => 'existing_page',
706 'show_list_link' => 'yes',
707 ),
708 )
709 );
710
711 $repeater_list->add_control(
712 'show_badge',
713 array(
714 'label' => __( 'Badge', 'premium-addons-for-elementor' ),
715 'type' => Controls_Manager::SWITCHER,
716 'return_value' => 'yes',
717 'separator' => 'before',
718 )
719 );
720
721 $repeater_list->add_control(
722 'badge_title',
723 array(
724 'label' => __( 'Badge Text', 'premium-addons-for-elementor' ),
725 'type' => Controls_Manager::TEXT,
726 'default' => __( 'New', 'premium-addons-for-elementor' ),
727 'condition' => array(
728 'show_badge' => 'yes',
729 ),
730 )
731 );
732
733 $repeater_list->add_control(
734 'badge_text_color',
735 array(
736 'label' => __( 'Text Color', 'premium-addons-for-elementor' ),
737 'type' => Controls_Manager::COLOR,
738 'selectors' => array(
739 '{{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-list-badge span' => 'color: {{VALUE}}',
740 ),
741 'condition' => array(
742 'show_badge' => 'yes',
743 ),
744 )
745 );
746
747 $repeater_list->add_control(
748 'badge_background_color',
749 array(
750 'label' => __( 'Background', 'premium-addons-for-elementor' ),
751 'type' => Controls_Manager::COLOR,
752 'selectors' => array(
753 '{{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-list-badge span' => 'background-color: {{VALUE}}',
754 ),
755 'condition' => array(
756 'show_badge' => 'yes',
757 ),
758 )
759 );
760
761 $repeater_list->add_control(
762 'show_global_style',
763 array(
764 'label' => __( 'Override Global Style', 'premium-addons-for-elementor' ),
765 'type' => Controls_Manager::SWITCHER,
766 'return_value' => 'yes',
767 'default' => 'yes',
768 'separator' => 'before',
769 )
770 );
771
772 $repeater_list->add_control(
773 'list_box_size',
774 array(
775 'label' => __( 'Size', 'premium-addons-for-elementor' ),
776 'type' => Controls_Manager::SLIDER,
777 'size_units' => array( 'px', 'em', '%', 'vw', 'custom' ),
778 'range' => array(
779 'px' => array(
780 'min' => 5,
781 'max' => 200,
782 ),
783 'em' => array(
784 'min' => 5,
785 'max' => 30,
786 ),
787 ),
788 'selectors' => array(
789 '{{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-text, {{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-list-wrapper i, {{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-list-wrapper .premium-bullet-list-icon-text p' => 'font-size: {{SIZE}}{{UNIT}}',
790 '{{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-list-wrapper svg, {{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-list-wrapper img' => 'width: {{SIZE}}{{UNIT}} !important; height: {{SIZE}}{{UNIT}} !important;',
791 '{{WRAPPER}} {{CURRENT_ITEM}}' => '--pa-bullet-hv-size: {{SIZE}}{{UNIT}};',
792 ),
793 'condition' => array(
794 'show_global_style' => 'yes',
795 'icon_type!' => 'svg',
796 ),
797 )
798 );
799
800 $repeater_list->add_responsive_control(
801 'svg_icon_width',
802 array(
803 'label' => __( 'Width', 'premium-addons-for-elementor' ),
804 'type' => Controls_Manager::SLIDER,
805 'size_units' => array( 'px', 'em', '%', 'vw', 'custom' ),
806 'range' => array(
807 'px' => array(
808 'min' => 1,
809 'max' => 600,
810 ),
811 'em' => array(
812 'min' => 1,
813 'max' => 30,
814 ),
815 ),
816 'default' => array(
817 'size' => 100,
818 'unit' => 'px',
819 ),
820 'condition' => array(
821 'show_global_style' => 'yes',
822 'icon_type' => 'svg',
823 ),
824 'selectors' => array(
825 '{{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-list-wrapper svg' => 'width: {{SIZE}}{{UNIT}} !important;',
826 '{{WRAPPER}} {{CURRENT_ITEM}}' => '--pa-bullet-hv-size: {{SIZE}}{{UNIT}};',
827 ),
828 )
829 );
830
831 $repeater_list->add_responsive_control(
832 'svg_icon_height',
833 array(
834 'label' => __( 'Height', 'premium-addons-for-elementor' ),
835 'type' => Controls_Manager::SLIDER,
836 'size_units' => array( 'px', 'em', 'custom' ),
837 'range' => array(
838 'px' => array(
839 'min' => 1,
840 'max' => 300,
841 ),
842 'em' => array(
843 'min' => 1,
844 'max' => 30,
845 ),
846 ),
847 'condition' => array(
848 'show_global_style' => 'yes',
849 'icon_type' => 'svg',
850 ),
851 'selectors' => array(
852 '{{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-list-wrapper svg' => 'height: {{SIZE}}{{UNIT}} !important',
853 '{{WRAPPER}} {{CURRENT_ITEM}}' => '--pa-svg-bullet-h: {{SIZE}}{{UNIT}};',
854 ),
855 )
856 );
857
858 if ( $draw_icon ) {
859 $repeater_list->add_control(
860 'svg_color',
861 array(
862 'label' => __( 'After Draw Fill Color', 'premium-addons-for-elementor' ),
863 'type' => Controls_Manager::COLOR,
864 'global' => false,
865 'condition' => array(
866 'show_icon' => 'yes',
867 'icon_type' => array( 'icon', 'svg' ),
868 'draw_svg' => 'yes',
869 ),
870 )
871 );
872 }
873
874 $repeater_list->start_controls_tabs( 'colors_style_tabs' );
875
876 $repeater_list->start_controls_tab(
877 'color_normal_state',
878 array(
879 'label' => __( 'Normal', 'premium-addons-for-elementor' ),
880 'condition' => array(
881 'show_global_style' => 'yes',
882 ),
883 )
884 );
885
886 $repeater_list->add_control(
887 'icon_color',
888 array(
889 'label' => __( 'Icon/Text Color', 'premium-addons-for-elementor' ),
890 'type' => Controls_Manager::COLOR,
891 'selectors' => array(
892 '{{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-list-wrapper i' => 'color: {{VALUE}}',
893 '{{WRAPPER}} {{CURRENT_ITEM}} .premium-drawable-icon *, {{WRAPPER}} {{CURRENT_ITEM}} svg:not([class*="premium-"])' => 'fill: {{VALUE}};',
894 '{{WRAPPER}} .premium-bullet-list-blur:hover {{CURRENT_ITEM}} .premium-bullet-list-wrapper i, {{WRAPPER}} .premium-bullet-list-blur:hover {{CURRENT_ITEM}} .premium-bullet-list-wrapper svg' => 'text-shadow: 0 0 3px {{VALUE}}',
895 ),
896 'condition' => array(
897 'show_icon' => 'yes',
898 'icon_type' => array( 'icon', 'svg' ),
899 'show_global_style' => 'yes',
900 ),
901 )
902 );
903
904 if ( $draw_icon ) {
905 $repeater_list->add_control(
906 'stroke_color',
907 array(
908 'label' => __( 'Stroke Color', 'premium-addons-for-elementor' ),
909 'type' => Controls_Manager::COLOR,
910 'default' => '#61CE70',
911 'condition' => array(
912 'show_icon' => 'yes',
913 'icon_type' => array( 'icon', 'svg' ),
914 'show_global_style' => 'yes',
915 ),
916 'selectors' => array(
917 '{{WRAPPER}} {{CURRENT_ITEM}} .premium-drawable-icon *, {{WRAPPER}} {{CURRENT_ITEM}} svg:not([class*="premium-"])' => 'stroke: {{VALUE}};',
918 ),
919 )
920 );
921 }
922
923 $repeater_list->add_control(
924 'icon_bg',
925 array(
926 'label' => __( 'Icon Background', 'premium-addons-for-elementor' ),
927 'type' => Controls_Manager::COLOR,
928 'selectors' => array(
929 '{{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-list-wrapper i ,
930 {{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-list-wrapper svg,
931 {{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-list-wrapper img ,
932 {{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-list-icon-text p' => 'background-color: {{VALUE}}',
933 ),
934 'condition' => array(
935 'show_icon' => 'yes',
936 'show_global_style' => 'yes',
937 ),
938 )
939 );
940
941 $repeater_list->add_control(
942 'text_icon_color',
943 array(
944 'label' => __( 'Icon/Text Color', 'premium-addons-for-elementor' ),
945 'type' => Controls_Manager::COLOR,
946 'selectors' => array(
947 '{{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-list-icon-text p' => 'color: {{VALUE}}',
948 '{{WRAPPER}} .premium-bullet-list-blur:hover {{CURRENT_ITEM}} .premium-bullet-list-icon-text p' => 'text-shadow: 0 0 3px {{VALUE}};',
949 ),
950 'condition' => array(
951 'show_icon' => 'yes',
952 'icon_type' => 'text',
953 'show_global_style' => 'yes',
954 ),
955 )
956 );
957
958 $repeater_list->add_control(
959 'background_text_icon_color',
960 array(
961 'label' => __( 'Icon/Text Background', 'premium-addons-for-elementor' ),
962 'type' => Controls_Manager::COLOR,
963 'selectors' => array(
964 '{{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-list-icon-text p' => 'background-color: {{VALUE}}',
965 ),
966 'condition' => array(
967 'show_icon' => 'yes',
968 'icon_type' => 'text',
969 'show_global_style' => 'yes',
970 ),
971 )
972 );
973
974 $repeater_list->add_control(
975 'title_list_color',
976 array(
977 'label' => __( 'Title Color', 'premium-addons-for-elementor' ),
978 'type' => Controls_Manager::COLOR,
979 'selectors' => array(
980 '{{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-text' => 'color: {{VALUE}}',
981 '{{WRAPPER}} .premium-bullet-list-blur:hover {{CURRENT_ITEM}} .premium-bullet-text' => 'text-shadow: 0 0 3px {{VALUE}};',
982 ),
983 'condition' => array(
984 'show_global_style' => 'yes',
985 ),
986 )
987 );
988
989 $repeater_list->add_control(
990 'desc_color',
991 array(
992 'label' => __( 'Description Color', 'premium-addons-for-elementor' ),
993 'type' => Controls_Manager::COLOR,
994 'selectors' => array(
995 '{{WRAPPER}} {{CURRENT_ITEM}} .premium-bullet-list-desc' => 'color: {{VALUE}}',
996 '{{WRAPPER}} .premium-bullet-list-blur:hover {{CURRENT_ITEM}} .premium-bullet-list-desc' => 'text-shadow: 0 0 3px {{VALUE}};',
997 ),
998 'condition' => array(
999 'show_global_style' => 'yes',
1000 'list_desc!' => '',
1001 ),
1002 )
1003 );
1004
1005 $repeater_list->add_control(
1006 'background_color',
1007 array(
1008 'label' => __( 'Background', 'premium-addons-for-elementor' ),
1009 'type' => Controls_Manager::COLOR,
1010 'selectors' => array(
1011 '{{WRAPPER}} {{CURRENT_ITEM}}.premium-bullet-list-content' => 'background-color: {{VALUE}}',
1012 ),
1013 'condition' => array(
1014 'show_global_style' => 'yes',
1015 ),
1016 )
1017 );
1018
1019 $repeater_list->end_controls_tab();
1020
1021 $repeater_list->start_controls_tab(
1022 'color_hover_state',
1023 array(
1024 'label' => __( 'Hover', 'premium-addons-for-elementor' ),
1025 'condition' => array(
1026 'show_global_style' => 'yes',
1027 ),
1028 )
1029 );
1030
1031 $repeater_list->add_control(
1032 'icon_hover_color',
1033 array(
1034 'label' => __( 'Icon/Text Color', 'premium-addons-for-elementor' ),
1035 'type' => Controls_Manager::COLOR,
1036 'selectors' => array(
1037 '{{WRAPPER}} {{CURRENT_ITEM}}.premium-bullet-list-content:hover .premium-bullet-list-wrapper i' => 'color: {{VALUE}}',
1038 '{{WRAPPER}} {{CURRENT_ITEM}}.premium-bullet-list-content:hover .premium-drawable-icon *, {{WRAPPER}} {{CURRENT_ITEM}}.premium-bullet-list-content:hover svg:not([class*="premium-"])' => 'fill: {{VALUE}};',
1039 '{{WRAPPER}} .premium-bullet-list-blur {{CURRENT_ITEM}}.premium-bullet-list-content:hover .premium-bullet-list-wrapper i, {{WRAPPER}} .premium-bullet-list-blur {{CURRENT_ITEM}}.premium-bullet-list-content:hover .premium-bullet-list-wrapper svg' => 'text-shadow: none !important; color: {{VALUE}} !important',
1040 ),
1041 'condition' => array(
1042 'show_icon' => 'yes',
1043 'icon_type' => array( 'icon', 'svg' ),
1044 'show_global_style' => 'yes',
1045 ),
1046 )
1047 );
1048
1049 if ( $draw_icon ) {
1050 $repeater_list->add_control(
1051 'stroke_color_hover',
1052 array(
1053 'label' => __( 'Stroke Color', 'premium-addons-for-elementor' ),
1054 'type' => Controls_Manager::COLOR,
1055 'default' => '#61CE70',
1056 'condition' => array(
1057 'show_icon' => 'yes',
1058 'icon_type' => array( 'icon', 'svg' ),
1059 'show_global_style' => 'yes',
1060 ),
1061 'selectors' => array(
1062 '{{WRAPPER}} {{CURRENT_ITEM}}.premium-bullet-list-content:hover .premium-drawable-icon *, {{WRAPPER}} {{CURRENT_ITEM}}.premium-bullet-list-content:hover svg:not([class*="premium-"])' => 'stroke: {{VALUE}};',
1063 ),
1064 )
1065 );
1066 }
1067
1068 $repeater_list->add_control(
1069 'text_icon_hover_color',
1070 array(
1071 'label' => __( 'Icon/Text Color', 'premium-addons-for-elementor' ),
1072 'type' => Controls_Manager::COLOR,
1073 'selectors' => array(
1074 '{{WRAPPER}} {{CURRENT_ITEM}}.premium-bullet-list-content:hover .premium-bullet-list-icon-text p' => 'color: {{VALUE}}',
1075 '{{WRAPPER}} .premium-bullet-list-blur {{CURRENT_ITEM}}.premium-bullet-list-content:hover .premium-bullet-list-icon-text p' => 'text-shadow: none !important; color: {{VALUE}} !important;',
1076 ),
1077 'condition' => array(
1078 'show_icon' => 'yes',
1079 'icon_type' => 'text',
1080 'show_global_style' => 'yes',
1081 ),
1082 )
1083 );
1084
1085 $repeater_list->add_control(
1086 'background_text_icon_hover_color',
1087 array(
1088 'label' => __( 'Icon/Text Background ', 'premium-addons-for-elementor' ),
1089 'type' => Controls_Manager::COLOR,
1090 'global' => array(
1091 'default' => Global_Colors::COLOR_PRIMARY,
1092 ),
1093 'selectors' => array(
1094 '{{WRAPPER}} {{CURRENT_ITEM}}.premium-bullet-list-content:hover .premium-bullet-list-icon-text p' => 'background-color: {{VALUE}}',
1095 ),
1096 'condition' => array(
1097 'show_icon' => 'yes',
1098 'icon_type' => 'text',
1099 'show_global_style' => 'yes',
1100 ),
1101 )
1102 );
1103
1104 $repeater_list->add_control(
1105 'title_hover_color',
1106 array(
1107 'label' => __( 'Title Color', 'premium-addons-for-elementor' ),
1108 'type' => Controls_Manager::COLOR,
1109 'selectors' => array(
1110 '{{WRAPPER}} {{CURRENT_ITEM}}.premium-bullet-list-content:hover .premium-bullet-text' => 'color: {{VALUE}}',
1111 '{{WRAPPER}} .premium-bullet-list-blur:hover {{CURRENT_ITEM}}.premium-bullet-list-content:hover .premium-bullet-text' => 'text-shadow: none !important; color: {{VALUE}} !important;',
1112 ),
1113 'condition' => array(
1114 'show_global_style' => 'yes',
1115 ),
1116 )
1117 );
1118
1119 $repeater_list->add_control(
1120 'desc_color_hov',
1121 array(
1122 'label' => __( 'Description Color', 'premium-addons-for-elementor' ),
1123 'type' => Controls_Manager::COLOR,
1124 'selectors' => array(
1125 '{{WRAPPER}} {{CURRENT_ITEM}}.premium-bullet-list-content:hover .premium-bullet-list-desc' => 'color: {{VALUE}}',
1126 '{{WRAPPER}} .premium-bullet-list-blur {{CURRENT_ITEM}}.premium-bullet-list-content:hover .premium-bullet-list-desc' => 'text-shadow: 0 0 3px {{VALUE}}; color: {{VALUE}} !important;',
1127 ),
1128 'condition' => array(
1129 'show_global_style' => 'yes',
1130 'list_desc!' => '',
1131 ),
1132 )
1133 );
1134
1135 $repeater_list->add_control(
1136 'background_hover_color',
1137 array(
1138 'label' => __( 'Background', 'premium-addons-for-elementor' ),
1139 'type' => Controls_Manager::COLOR,
1140 'selectors' => array(
1141 '{{WRAPPER}} {{CURRENT_ITEM}}.premium-bullet-list-content:hover' => 'background-color: {{VALUE}}',
1142 ),
1143 'condition' => array(
1144 'show_global_style' => 'yes',
1145 ),
1146 )
1147 );
1148
1149 $repeater_list->end_controls_tab();
1150
1151 $repeater_list->end_controls_tabs();
1152
1153 $this->add_control(
1154 'list',
1155 array(
1156 'label' => __( 'List Items', 'premium-addons-for-elementor' ),
1157 'type' => Controls_Manager::REPEATER,
1158 'fields' => $repeater_list->get_controls(),
1159 'render_type' => 'template',
1160 'default' => array(
1161 array(
1162 'list_title' => 'List Title #1',
1163 'premium_icon_list_font_updated' => array(
1164 'value' => 'fas fa-star',
1165 'library' => 'fa-solid',
1166 ),
1167 ),
1168 array(
1169 'list_title' => 'List Title #2',
1170 'premium_icon_list_font_updated' => array(
1171 'value' => 'far fa-smile',
1172 'library' => 'fa-regular',
1173 ),
1174
1175 ),
1176 array(
1177 'list_title' => 'List Title #3',
1178 'premium_icon_list_font_updated' => array(
1179 'value' => 'fa fa-check',
1180 'library' => 'fa-solid',
1181 ),
1182 ),
1183 ),
1184 'title_field' => '<# if ( "icon" === icon_type ) { #> {{{ elementor.helpers.renderIcon( this, premium_icon_list_font_updated, {}, "i", "panel" ) }}}<#} else if( "text" === icon_type ) { #> {{list_text_icon}} <# } else if( "image" === icon_type) {#> <img class="editor-pa-img" src="{{custom_image.url}}"><# } #> {{{ list_title }}}',
1185 )
1186 );
1187
1188 if ( $draw_icon ) {
1189 $this->add_control(
1190 'draw_svgs_sequence',
1191 array(
1192 'label' => __( 'Draw SVGs In Sequence', 'premium-addons-for-elementor' ),
1193 'type' => Controls_Manager::SWITCHER,
1194 'prefix_class' => 'pa-svg-draw-seq-',
1195 'render_type' => 'template',
1196 )
1197 );
1198
1199 $this->add_control(
1200 'draw_svgs_loop',
1201 array(
1202 'label' => __( 'Loop', 'premium-addons-for-elementor' ),
1203 'type' => Controls_Manager::SWITCHER,
1204 'prefix_class' => 'pa-svg-draw-loop-',
1205 'render_type' => 'template',
1206 'condition' => array(
1207 'draw_svgs_sequence' => 'yes',
1208 ),
1209 )
1210 );
1211
1212 $this->add_control(
1213 'frames',
1214 array(
1215 'label' => __( 'Speed', 'premium-addons-for-elementor' ),
1216 'type' => Controls_Manager::NUMBER,
1217 'description' => __( 'Larger value means longer animation duration.', 'premium-addons-for-elementor' ),
1218 'default' => 5,
1219 'min' => 1,
1220 'max' => 100,
1221 'condition' => array(
1222 'draw_svgs_sequence' => 'yes',
1223 ),
1224 )
1225 );
1226
1227 $this->add_control(
1228 'svg_yoyo',
1229 array(
1230 'label' => __( 'Yoyo Effect', 'premium-addons-for-elementor' ),
1231 'type' => Controls_Manager::SWITCHER,
1232 'prefix_class' => 'pa-svg-draw-yoyo-',
1233 'render_type' => 'template',
1234 'condition' => array(
1235 'draw_svgs_sequence' => 'yes',
1236 'draw_svgs_loop' => 'yes',
1237 ),
1238 )
1239 );
1240 }
1241
1242 $this->end_controls_section();
1243 }
1244
1245 private function add_display_options_controls() {
1246
1247 $this->start_controls_section(
1248 'display_options_section',
1249 array(
1250 'label' => __( 'Display Options', 'premium-addons-for-elementor' ),
1251 'tab' => Controls_Manager::TAB_CONTENT,
1252 )
1253 );
1254
1255 $this->add_control(
1256 'list_overflow',
1257 array(
1258 'label' => __( 'List Overflow', 'premium-addons-for-elementor' ),
1259 'type' => Controls_Manager::SELECT,
1260 'options' => array(
1261 'visible' => __( 'Visible', 'premium-addons-for-elementor' ),
1262 'hidden' => __( 'Hidden', 'premium-addons-for-elementor' ),
1263 ),
1264 'default' => 'hidden',
1265 'render_type' => 'template',
1266 'selectors' => array(
1267 '{{WRAPPER}} .premium-bullet-list-content' => 'overflow: {{VALUE}};',
1268 ),
1269 )
1270 );
1271
1272 $this->add_control(
1273 'overflow_render_notice',
1274 array(
1275 'raw' => __( 'Please note that bullet connector option only appears when overflow set to visible.', 'premium-addons-for-elementor' ),
1276 'type' => Controls_Manager::RAW_HTML,
1277 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
1278 )
1279 );
1280
1281 $this->add_responsive_control(
1282 'layout_type',
1283 array(
1284 'label' => __( 'Layout Type', 'premium-addons-for-elementor' ),
1285 'type' => Controls_Manager::SELECT,
1286 'options' => array(
1287 'row' => __( 'Inline', 'premium-addons-for-elementor' ),
1288 'column' => __( 'Block', 'premium-addons-for-elementor' ),
1289 ),
1290 'prefix_class' => 'premium%s-type-',
1291 'render_type' => 'ui',
1292 'default' => 'column',
1293 'selectors' => array(
1294 '{{WRAPPER}} .premium-bullet-list-box ' => 'flex-direction: {{VALUE}};',
1295 ),
1296 )
1297 );
1298
1299 $this->add_responsive_control(
1300 'premium_icon_list_align',
1301 array(
1302 'label' => __( 'Alignment', 'premium-addons-for-elementor' ),
1303 'type' => Controls_Manager::CHOOSE,
1304 'render_type' => 'template',
1305 'options' => array(
1306 'flex-start' => array(
1307 'title' => __( 'Left', 'premium-addons-for-elementor' ),
1308 'icon' => 'eicon-text-align-left',
1309 ),
1310 'center' => array(
1311 'title' => __( 'Center', 'premium-addons-for-elementor' ),
1312 'icon' => 'eicon-text-align-center',
1313 ),
1314 'flex-end' => array(
1315 'title' => __( 'Right', 'premium-addons-for-elementor' ),
1316 'icon' => 'eicon-text-align-right',
1317 ),
1318 ),
1319 'selectors' => array(
1320 '{{WRAPPER}} .premium-bullet-list-content, {{WRAPPER}} .premium-bullet-list-box' => 'justify-content: {{VALUE}};',
1321 '{{WRAPPER}} .premium-bullet-list-divider, {{WRAPPER}} .premium-bullet-list-wrapper-top' => 'align-self: {{VALUE}};',
1322 '{{WRAPPER}}' => '--pa-bullet-align: {{VALUE}}',
1323 ),
1324 'toggle' => false,
1325 'default' => 'flex-start',
1326 'condition' => array(
1327 'hover_effect_type!' => 'translate-bullet',
1328 ),
1329 )
1330 );
1331
1332 $this->add_responsive_control(
1333 'text_align',
1334 array(
1335 'label' => __( 'Text Alignment', 'premium-addons-for-elementor' ),
1336 'type' => Controls_Manager::CHOOSE,
1337 'description' => __( 'Aligns the <b>title and description</b> inside each list item.', 'premium-addons-for-elementor' ),
1338 'options' => array(
1339 'start' => array(
1340 'title' => __( 'Left', 'premium-addons-for-elementor' ),
1341 'icon' => 'eicon-text-align-left',
1342 ),
1343 'center' => array(
1344 'title' => __( 'Center', 'premium-addons-for-elementor' ),
1345 'icon' => 'eicon-text-align-center',
1346 ),
1347 'end' => array(
1348 'title' => __( 'Right', 'premium-addons-for-elementor' ),
1349 'icon' => 'eicon-text-align-right',
1350 ),
1351 ),
1352 'selectors' => array(
1353 '{{WRAPPER}} .premium-bullet-list-content .premium-bullet-list-text-wrapper > span' => 'align-self: {{VALUE}}; text-align: {{VALUE}};',
1354 ),
1355 'toggle' => false,
1356 'default' => 'start',
1357 )
1358 );
1359
1360 $this->add_control(
1361 'icon_postion',
1362 array(
1363 'label' => __( 'Bullet Position', 'premium-addons-for-elementor' ),
1364 'type' => Controls_Manager::SELECT,
1365 'options' => array(
1366 'row' => __( 'Before', 'premium-addons-for-elementor' ),
1367 'column' => __( 'Top', 'premium-addons-for-elementor' ),
1368 'row-reverse' => __( 'After', 'premium-addons-for-elementor' ),
1369 ),
1370 'render_type' => 'template',
1371 'default' => 'row',
1372 'selectors' => array(
1373 '{{WRAPPER}} .premium-bullet-list-text' => 'display:flex;flex-direction: {{VALUE}};',
1374 ),
1375 )
1376 );
1377
1378 $this->add_responsive_control(
1379 'top_icon_align',
1380 array(
1381 'label' => __( 'Bullet Alignment', 'premium-addons-for-elementor' ),
1382 'type' => Controls_Manager::CHOOSE,
1383 'options' => array(
1384 'flex-start' => array(
1385 'title' => __( 'Left', 'premium-addons-for-elementor' ),
1386 'icon' => 'eicon-text-align-left',
1387 ),
1388 'center' => array(
1389 'title' => __( 'Center', 'premium-addons-for-elementor' ),
1390 'icon' => 'eicon-text-align-center',
1391 ),
1392 'flex-end' => array(
1393 'title' => __( 'Right', 'premium-addons-for-elementor' ),
1394 'icon' => 'eicon-text-align-right',
1395 ),
1396 ),
1397 'toggle' => false,
1398 'selectors' => array(
1399 '{{WRAPPER}} .premium-bullet-list-wrapper-top' => 'align-self: {{VALUE}} !important',
1400 ),
1401 'condition' => array(
1402 'icon_postion' => 'column',
1403 ),
1404 )
1405 );
1406
1407 $this->add_responsive_control(
1408 'inline_icon_align',
1409 array(
1410 'label' => __( 'Bullet Alignment', 'premium-addons-for-elementor' ),
1411 'type' => Controls_Manager::CHOOSE,
1412 'options' => array(
1413 'flex-start' => array(
1414 'title' => __( 'Top', 'premium-addons-for-elementor' ),
1415 'icon' => 'eicon-arrow-up',
1416 ),
1417 'center' => array(
1418 'title' => __( 'Center', 'premium-addons-for-elementor' ),
1419 'icon' => 'eicon-text-align-justify',
1420 ),
1421 'flex-end' => array(
1422 'title' => __( 'Bottom', 'premium-addons-for-elementor' ),
1423 'icon' => 'eicon-arrow-down',
1424 ),
1425 ),
1426 'default' => 'center',
1427 'toggle' => false,
1428 'selectors' => array(
1429 '{{WRAPPER}} .premium-bullet-list-wrapper' => 'align-self: {{VALUE}};',
1430 ),
1431 'condition' => array(
1432 'icon_postion!' => 'column',
1433 ),
1434 )
1435 );
1436
1437 $this->add_responsive_control(
1438 'badge_align_h',
1439 array(
1440 'label' => __( 'Badge Alignment', 'premium-addons-for-elementor' ),
1441 'type' => Controls_Manager::CHOOSE,
1442 'options' => array(
1443 '8' => array(
1444 'title' => __( 'Right', 'premium-addons-for-elementor' ),
1445 'icon' => 'fas fa-long-arrow-alt-right',
1446 ),
1447 '3' => array(
1448 'title' => __( 'Left', 'premium-addons-for-elementor' ),
1449 'icon' => 'fas fa-long-arrow-alt-left',
1450 ),
1451 ),
1452 'default' => '8',
1453 'toggle' => false,
1454 'selectors' => array(
1455 '{{WRAPPER}} .premium-bullet-list-text' => 'order:5 ;',
1456 '{{WRAPPER}} .premium-bullet-list-badge' => 'order:{{VALUE}} ;',
1457 ),
1458 'separator' => 'after',
1459 )
1460 );
1461
1462 $this->add_control(
1463 'show_divider',
1464 array(
1465 'label' => __( 'Divider', 'premium-addons-for-elementor' ),
1466 'type' => Controls_Manager::SWITCHER,
1467 'return_value' => 'yes',
1468 )
1469 );
1470
1471 $this->add_control(
1472 'show_connector',
1473 array(
1474 'label' => __( 'Bullet Connector', 'premium-addons-for-elementor' ),
1475 'type' => Controls_Manager::SWITCHER,
1476 'description' => __( 'We recommend using the same bullet size for all list items to maintain proper alignment and a consistent layout.', 'premium-addons-for-elementor' ),
1477 'frontend_available' => true,
1478 'return_value' => 'yes',
1479 'condition' => array(
1480 'layout_type' => 'column',
1481 'icon_postion!' => 'column',
1482 'hover_effect_type!' => 'grow',
1483 'list_overflow' => 'visible',
1484 'premium_icon_list_animation' => array( '', 'none' ),
1485 ),
1486 )
1487 );
1488
1489 $this->add_control(
1490 'premium_icon_list_animation',
1491 array(
1492 'label' => __( 'Entrance Animation', 'premium-addons-for-elementor' ),
1493 'type' => Controls_Manager::ANIMATION,
1494 'default' => '',
1495 'label_block' => true,
1496 'frontend_available' => true,
1497 'render_type' => 'template',
1498 )
1499 );
1500
1501 $this->add_control(
1502 'premium_icon_list_animation_duration',
1503 array(
1504 'label' => __( 'Animation Duration', 'premium-addons-for-elementor' ),
1505 'type' => Controls_Manager::SELECT,
1506 'default' => '',
1507 'options' => array(
1508 'slow' => __( 'Slow', 'premium-addons-for-elementor' ),
1509 '' => __( 'Normal', 'premium-addons-for-elementor' ),
1510 'fast' => __( 'Fast', 'premium-addons-for-elementor' ),
1511 ),
1512 'condition' => array(
1513 'premium_icon_list_animation!' => array( '', 'none' ),
1514 ),
1515 )
1516 );
1517
1518 $this->add_control(
1519 'premium_icon_list_animation_delay',
1520 array(
1521 'label' => __( 'Animation Delay in Between (s)', 'premium-addons-for-elementor' ),
1522 'type' => Controls_Manager::NUMBER,
1523 'default' => 0,
1524 'step' => 0.1,
1525 'condition' => array(
1526 'premium_icon_list_animation!' => array( '', 'none' ),
1527 ),
1528 'frontend_available' => true,
1529 )
1530 );
1531
1532 $this->add_control(
1533 'hover_effect_type',
1534 array(
1535 'label' => __( 'Hover Effect', 'premium-addons-for-elementor' ),
1536 'type' => Controls_Manager::SELECT,
1537 'description' => __( 'Please note that the <b>Translate Bullet</b> effect will not be applied if the bullet position is <b>top</b>.', 'premium-addons-for-elementor' ),
1538 'options' => array(
1539 'none' => __( 'None', 'premium-addons-for-elementor' ),
1540 'blur' => __( 'Blur', 'premium-addons-for-elementor' ),
1541 'grow' => __( 'Grow', 'premium-addons-for-elementor' ),
1542 'linear gradient' => __( 'Text Gradient', 'premium-addons-for-elementor' ),
1543 'show-bullet' => __( 'Slide Bullet', 'premium-addons-for-elementor' ),
1544 'translate-bullet' => __( 'Translate Bullet', 'premium-addons-for-elementor' ),
1545 ),
1546 'render_type' => 'template',
1547 'default' => 'none',
1548 )
1549 );
1550
1551 $this->add_control(
1552 'show_bullet_transition',
1553 array(
1554 'label' => __( 'Transition (S)', 'premium-addons-for-elementor' ),
1555 'type' => Controls_Manager::NUMBER,
1556 'step' => 0.1,
1557 'default' => 0.7,
1558 'condition' => array(
1559 'hover_effect_type' => array( 'show-bullet', 'translate-bullet' ),
1560 ),
1561 'selectors' => array(
1562 '{{WRAPPER}} .pa-show-bullet, {{WRAPPER}} .pa-translate-bullet' => 'transition-duration: {{VALUE}}s;',
1563 ),
1564 )
1565 );
1566
1567 $this->add_control(
1568 'show_bullet_ease',
1569 array(
1570 'label' => __( 'Easing', 'premium-addons-for-elementor' ),
1571 'type' => Controls_Manager::SELECT,
1572 'default' => 'cubic-bezier(.135,.9,.15,1)',
1573 'options' => array(
1574 'cubic-bezier(.135,.9,.15,1)' => __( 'Default', 'premium-addons-for-elementor' ),
1575 'linear' => __( 'Linear', 'premium-addons-for-elementor' ),
1576 'ease' => __( 'Ease', 'premium-addons-for-elementor' ),
1577 'ease-in' => __( 'Ease In', 'premium-addons-for-elementor' ),
1578 'ease-out' => __( 'Ease Out', 'premium-addons-for-elementor' ),
1579 'ease-in-out' => __( 'Ease In Out', 'premium-addons-for-elementor' ),
1580 ),
1581 'condition' => array(
1582 'hover_effect_type' => 'show-bullet',
1583 ),
1584 'selectors' => array(
1585 '{{WRAPPER}} .pa-show-bullet' => 'transition-timing-function: {{VALUE}};',
1586 ),
1587 )
1588 );
1589
1590 $this->add_group_control(
1591 Premium_Background::get_type(),
1592 array(
1593 'name' => 'gradient_color',
1594 'types' => array( 'gradient' ),
1595 'condition' => array(
1596 'hover_effect_type' => 'linear gradient',
1597 ),
1598 'selector' => '{{WRAPPER}} a[data-text]::before, {{WRAPPER}} .premium-bullet-list-gradient-effect span::before',
1599 )
1600 );
1601
1602 $this->end_controls_section();
1603 }
1604
1605 private function add_random_badge_controls() {
1606
1607 $this->start_controls_section(
1608 'random_badges_section',
1609 array(
1610 'label' => __( 'Random Badges', 'premium-addons-for-elementor' ),
1611 'tab' => Controls_Manager::TAB_CONTENT,
1612 )
1613 );
1614
1615 $rbadges_repeater = new REPEATER();
1616
1617 $rbadges_repeater->add_control(
1618 'badge_title',
1619 array(
1620 'label' => __( 'Badge Text', 'premium-addons-for-elementor' ),
1621 'type' => Controls_Manager::TEXT,
1622 'default' => __( 'New', 'premium-addons-for-elementor' ),
1623 )
1624 );
1625
1626 $rbadges_repeater->add_control(
1627 'badge_text_color',
1628 array(
1629 'label' => __( 'Text Color', 'premium-addons-for-elementor' ),
1630 'type' => Controls_Manager::COLOR,
1631 'selectors' => array(
1632 '{{CURRENT_ITEM}}.premium-bullet-list-badge span' => 'color: {{VALUE}} !important',
1633 ),
1634 )
1635 );
1636
1637 $rbadges_repeater->add_control(
1638 'badge_background_color',
1639 array(
1640 'label' => __( 'Background', 'premium-addons-for-elementor' ),
1641 'type' => Controls_Manager::COLOR,
1642 'selectors' => array(
1643 '{{CURRENT_ITEM}}.premium-bullet-list-badge span' => 'background-color: {{VALUE}} !important',
1644 ),
1645 )
1646 );
1647
1648 $rbadges_repeater->add_control(
1649 'rbadge_selector',
1650 array(
1651 'label' => __( 'CSS Selector', 'premium-addons-for-elementor' ),
1652 'type' => Controls_Manager::TEXT,
1653 'description' => __( 'Use this option to add the CSS selector of the parent element that will be used to search for bullet items in it. This will help you to apply random badges on other bullet list items on the page.', 'premium-addons-for-elementor' ),
1654 )
1655 );
1656
1657 $rbadges_repeater->add_control(
1658 'rbadge_min',
1659 array(
1660 'label' => __( 'Minimum Randomness', 'premium-addons-for-elementor' ),
1661 'type' => Controls_Manager::NUMBER,
1662 'description' => __( 'The minimum number of times that this badge should be applied.', 'premium-addons-for-elementor' ),
1663 'default' => 3,
1664 'min' => 1,
1665 )
1666 );
1667
1668 $rbadges_repeater->add_control(
1669 'rbadge_max',
1670 array(
1671 'label' => __( 'Maximum Randomness', 'premium-addons-for-elementor' ),
1672 'type' => Controls_Manager::NUMBER,
1673 'description' => __( 'The maximum number of times that this badge should be applied.', 'premium-addons-for-elementor' ),
1674 'default' => 5,
1675 'min' => 1,
1676 )
1677 );
1678
1679 $this->add_control(
1680 'rbadges_repeater',
1681 array(
1682 'label' => __( 'Random Badges', 'premium-addons-for-elementor' ),
1683 'type' => Controls_Manager::REPEATER,
1684 'fields' => $rbadges_repeater->get_controls(),
1685 'render_type' => 'template',
1686 'title_field' => '{{{ badge_title }}}',
1687 'prevent_empty' => false,
1688 'frontend_available' => true,
1689 )
1690 );
1691
1692 $this->end_controls_section();
1693 }
1694
1695 private function add_help_section_controls() {
1696 $this->start_controls_section(
1697 'section_pa_docs',
1698 array(
1699 'label' => __( 'Help & Docs', 'premium-addons-for-elementor' ),
1700 )
1701 );
1702
1703 $docs = array(
1704 'https://premiumaddons.com/docs/icon-list-widget-tutorial/' => __( 'Getting started »', 'premium-addons-for-elementor' ),
1705 'https://www.youtube.com/watch?v=MPeXJiZ14sI' => __( 'Check the video tutorial »', 'premium-addons-for-elementor' ),
1706 );
1707
1708 $doc_index = 1;
1709 foreach ( $docs as $url => $title ) {
1710
1711 $doc_url = Helper_Functions::get_campaign_link( $url, 'bullet-widget', 'wp-editor', 'get-support' );
1712
1713 $this->add_control(
1714 'doc_' . $doc_index,
1715 array(
1716 'type' => Controls_Manager::RAW_HTML,
1717 'raw' => sprintf( '<a href="%s" target="_blank">%s</a>', $doc_url, $title ),
1718 'content_classes' => 'editor-pa-doc',
1719 )
1720 );
1721
1722 ++$doc_index;
1723
1724 }
1725
1726 Helper_Functions::register_element_feedback_controls( $this );
1727
1728 $this->end_controls_section();
1729 }
1730
1731 private function add_general_style_controls() {
1732 $this->start_controls_section(
1733 'list_style_section',
1734 array(
1735 'label' => __( 'General', 'premium-addons-for-elementor' ),
1736 'tab' => Controls_Manager::TAB_STYLE,
1737 )
1738 );
1739
1740 $this->add_control(
1741 'list_items_color',
1742 array(
1743 'label' => __( 'Background Color', 'premium-addons-for-elementor' ),
1744 'type' => Controls_Manager::COLOR,
1745 'selectors' => array(
1746 ' {{WRAPPER}} .premium-bullet-list-content' => 'background-color: {{VALUE}}',
1747 ),
1748 )
1749 );
1750
1751 $this->add_control(
1752 'list_items_hover_color',
1753 array(
1754 'label' => __( 'Hover Background Color', 'premium-addons-for-elementor' ),
1755 'type' => Controls_Manager::COLOR,
1756 'selectors' => array(
1757 '{{WRAPPER}} .premium-bullet-list-content:hover ' => 'background-color: {{VALUE}}',
1758 ),
1759 )
1760 );
1761
1762 $this->add_control(
1763 'items_lq_effect',
1764 array(
1765 'label' => __( 'Liquid Glass Effect', 'premium-addons-for-elementor' ),
1766 'type' => Controls_Manager::SELECT,
1767 'description' => sprintf(
1768 /* translators: 1: `<a>` opening tag, 2: `</a>` closing tag. */
1769 esc_html__( 'Important: Make sure this element has a semi-transparent background color to see the effect. See all presets from %1$shere%2$s.', 'premium-addons-for-elementor' ),
1770 '<a href="https://premiumaddons.com/liquid-glass/" target="_blank">',
1771 '</a>'
1772 ),
1773 'options' => array(
1774 'none' => __( 'None', 'premium-addons-for-elementor' ),
1775 'glass1' => __( 'Preset 01', 'premium-addons-for-elementor' ),
1776 'glass2' => __( 'Preset 02', 'premium-addons-for-elementor' ),
1777 'glass3' => apply_filters( 'pa_pro_label', __( 'Preset 03 (Pro)', 'premium-addons-for-elementor' ) ),
1778 'glass4' => apply_filters( 'pa_pro_label', __( 'Preset 04 (Pro)', 'premium-addons-for-elementor' ) ),
1779 'glass5' => apply_filters( 'pa_pro_label', __( 'Preset 05 (Pro)', 'premium-addons-for-elementor' ) ),
1780 'glass6' => apply_filters( 'pa_pro_label', __( 'Preset 06 (Pro)', 'premium-addons-for-elementor' ) ),
1781 ),
1782 'default' => 'none',
1783 'label_block' => true,
1784 )
1785 );
1786
1787 $this->add_group_control(
1788 Group_Control_Box_Shadow::get_type(),
1789 array(
1790 'name' => 'list_items_shadow',
1791 'selector' => '{{WRAPPER}} .premium-bullet-list-content',
1792 )
1793 );
1794
1795 $this->add_group_control(
1796 Group_Control_Box_Shadow::get_type(),
1797 array(
1798 'name' => 'list_items_shadow_hover',
1799 'label' => 'Hover Box Shadow',
1800 'selector' => '{{WRAPPER}} .premium-bullet-list-content:hover',
1801 )
1802 );
1803
1804 $this->add_group_control(
1805 Group_Control_Border::get_type(),
1806 array(
1807 'name' => 'list_item_border',
1808 'label' => __( 'Border', 'premium-addons-for-elementor' ),
1809 'selector' => '{{WRAPPER}} .premium-bullet-list-content ',
1810 )
1811 );
1812
1813 $this->add_responsive_control(
1814 'list_item_border_radius',
1815 array(
1816 'label' => __( 'Border Radius', 'premium-addons-for-elementor' ),
1817 'type' => Controls_Manager::DIMENSIONS,
1818 'size_units' => array( 'px', '%', 'em', 'custom' ),
1819 'default' => array(
1820 'top' => 0,
1821 'right' => 0,
1822 'bottom' => 0,
1823 'left' => 0,
1824 ),
1825 'selectors' => array(
1826 '{{WRAPPER}} .premium-bullet-list-content ' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1827 ),
1828 )
1829 );
1830
1831 $this->add_responsive_control(
1832 'list_item_margin',
1833 array(
1834 'label' => __( 'Margin', 'premium-addons-for-elementor' ),
1835 'type' => Controls_Manager::DIMENSIONS,
1836 'size_units' => array( 'px', 'em', '%', 'vw', 'custom' ),
1837 'selectors' => array(
1838 '{{WRAPPER}} .premium-bullet-list-content ' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1839 ),
1840 )
1841 );
1842
1843 $this->add_responsive_control(
1844 'list_items_padding',
1845 array(
1846 'label' => __( 'Padding', 'premium-addons-for-elementor' ),
1847 'type' => Controls_Manager::DIMENSIONS,
1848 'size_units' => array( 'px', 'em', '%', 'vw', 'custom' ),
1849 'selectors' => array(
1850 '{{WRAPPER}} .premium-bullet-list-content ' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1851 ),
1852 )
1853 );
1854
1855 $this->add_responsive_control(
1856 'list_padding',
1857 array(
1858 'label' => __( 'List Padding', 'premium-addons-for-elementor' ),
1859 'type' => Controls_Manager::DIMENSIONS,
1860 'size_units' => array( 'px', 'em', '%', 'vw', 'custom' ),
1861 'selectors' => array(
1862 '{{WRAPPER}} .premium-bullet-list-box ' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1863 ),
1864 )
1865 );
1866
1867 $this->end_controls_section();
1868 }
1869
1870 private function add_bullet_style_controls( $draw_icon ) {
1871 $this->start_controls_section(
1872 'icon_style_section',
1873 array(
1874 'label' => __( 'Bullet', 'premium-addons-for-elementor' ),
1875 'tab' => Controls_Manager::TAB_STYLE,
1876 )
1877 );
1878
1879 $this->add_control(
1880 'icon_render_notice',
1881 array(
1882 'raw' => __( 'Options below will be applied on items with no style options set individually from the repeater.', 'premium-addons-for-elementor' ),
1883 'type' => Controls_Manager::RAW_HTML,
1884 )
1885 );
1886
1887 $this->add_responsive_control(
1888 'icon_size',
1889 array(
1890 'label' => __( 'Size', 'premium-addons-for-elementor' ),
1891 'type' => Controls_Manager::SLIDER,
1892 'size_units' => array( 'px', 'em', 'vw', 'custom' ),
1893 'range' => array(
1894 'px' => array(
1895 'min' => 1,
1896 'max' => 200,
1897 ),
1898 'em' => array(
1899 'min' => 1,
1900 'max' => 30,
1901 ),
1902 ),
1903 'selectors' => array(
1904 '{{WRAPPER}} .premium-bullet-list-wrapper i, {{WRAPPER}} .premium-bullet-list-text p, {{WRAPPER}} .premium-bullet-text' => 'font-size: {{SIZE}}{{UNIT}}',
1905 '{{WRAPPER}} .premium-bullet-list-wrapper svg, {{WRAPPER}} .premium-bullet-list-wrapper img' => 'width: {{SIZE}}{{UNIT}} !important; height: {{SIZE}}{{UNIT}} !important',
1906 '{{WRAPPER}}' => '--pa-bullet-hv-size: {{SIZE}}{{UNIT}};',
1907 ),
1908 )
1909 );
1910
1911 $selector = $draw_icon ? '{{WRAPPER}} .premium-drawable-icon *, ' : '';
1912 $hover_selector = $draw_icon ? '{{WRAPPER}} .premium-bullet-list-content:hover .premium-drawable-icon *, ' : '';
1913
1914 $this->add_control(
1915 'icon_color',
1916 array(
1917 'label' => __( 'Color', 'premium-addons-for-elementor' ),
1918 'type' => Controls_Manager::COLOR,
1919 'global' => array(
1920 'default' => Global_Colors::COLOR_PRIMARY,
1921 ),
1922 'selectors' => array(
1923 '{{WRAPPER}} .premium-bullet-list-wrapper i, {{WRAPPER}} .premium-bullet-list-icon-text p' => 'color: {{VALUE}}',
1924 $selector . '{{WRAPPER}} svg:not([class*="premium-"])' => 'fill: {{VALUE}};',
1925 '{{WRAPPER}} .premium-bullet-list-blur:hover .premium-bullet-list-wrapper i, {{WRAPPER}} .premium-bullet-list-blur:hover .premium-bullet-list-wrapper svg, {{WRAPPER}} .premium-bullet-list-blur:hover .premium-bullet-list-wrapper .premium-bullet-list-icon-text p' => 'text-shadow: 0 0 3px {{VALUE}};',
1926 ),
1927 )
1928 );
1929
1930 if ( $draw_icon ) {
1931 $this->add_control(
1932 'stroke_color',
1933 array(
1934 'label' => __( 'Stroke Color', 'premium-addons-for-elementor' ),
1935 'type' => Controls_Manager::COLOR,
1936 'global' => array(
1937 'default' => Global_Colors::COLOR_PRIMARY,
1938 ),
1939 'selectors' => array(
1940 '{{WRAPPER}} .premium-drawable-icon *, {{WRAPPER}} svg:not([class*="premium-"])' => 'stroke: {{VALUE}};',
1941 ),
1942 )
1943 );
1944 }
1945
1946 $this->add_control(
1947 'icon_hover_color',
1948 array(
1949 'label' => __( 'Hover Color', 'premium-addons-for-elementor' ),
1950 'type' => Controls_Manager::COLOR,
1951 'global' => array(
1952 'default' => Global_Colors::COLOR_PRIMARY,
1953 ),
1954 'selectors' => array(
1955 '{{WRAPPER}} .premium-bullet-list-content:hover .premium-bullet-list-wrapper i, {{WRAPPER}} .premium-bullet-list-content:hover .premium-bullet-list-icon-text p' => 'color: {{VALUE}}',
1956 '{{WRAPPER}} .premium-bullet-list-blur .premium-bullet-list-content:hover .premium-bullet-list-wrapper i, {{WRAPPER}} .premium-bullet-list-blur .premium-bullet-list-content:hover .premium-bullet-list-icon-text p' => 'text-shadow: none !important; color: {{VALUE}} !important;',
1957 $hover_selector . '{{WRAPPER}} .premium-bullet-list-content:hover svg:not([class*="premium-"])' => 'fill: {{VALUE}};',
1958 ),
1959 )
1960 );
1961
1962 if ( $draw_icon ) {
1963 $this->add_control(
1964 'stroke_color_hover',
1965 array(
1966 'label' => __( 'Hover Stroke Color', 'premium-addons-for-elementor' ),
1967 'type' => Controls_Manager::COLOR,
1968 'global' => array(
1969 'default' => Global_Colors::COLOR_PRIMARY,
1970 ),
1971 'selectors' => array(
1972 '{{WRAPPER}} .premium-bullet-list-content:hover .premium-drawable-icon *, {{WRAPPER}} .premium-bullet-list-content:hover svg:not([class*="premium-"])' => 'stroke: {{VALUE}};',
1973 ),
1974 )
1975 );
1976 }
1977
1978 $this->add_control(
1979 'background_render_notice',
1980 array(
1981 'raw' => __( 'Background Color options below will be applied on all bullet types.', 'premium-addons-for-elementor' ),
1982 'type' => Controls_Manager::RAW_HTML,
1983 'separator' => 'before',
1984 )
1985 );
1986
1987 $this->add_control(
1988 'icon_background_color',
1989 array(
1990 'label' => __( 'Background', 'premium-addons-for-elementor' ),
1991 'type' => Controls_Manager::COLOR,
1992 'selectors' => array(
1993 '{{WRAPPER}} .premium-bullet-list-wrapper i , {{WRAPPER}} .premium-bullet-list-wrapper svg, {{WRAPPER}} .premium-bullet-list-wrapper img , {{WRAPPER}} .premium-bullet-list-icon-text p' => 'background-color: {{VALUE}}',
1994 ),
1995 )
1996 );
1997
1998 $this->add_control(
1999 'icon_background_hover_color',
2000 array(
2001 'label' => __( 'Hover Background', 'premium-addons-for-elementor' ),
2002 'type' => Controls_Manager::COLOR,
2003 'selectors' => array(
2004 '{{WRAPPER}} .premium-bullet-list-content:hover .premium-bullet-list-wrapper i,{{WRAPPER}} .premium-bullet-list-content:hover .premium-bullet-list-wrapper svg ,{{WRAPPER}} .premium-bullet-list-content:hover .premium-bullet-list-wrapper img , {{WRAPPER}} .premium-bullet-list-content:hover .premium-bullet-list-icon-text p' => 'background-color: {{VALUE}}',
2005 ),
2006 )
2007 );
2008
2009 $this->add_control(
2010 'typo_text_render_notice',
2011 array(
2012 'raw' => __( 'Typography option below will be applied on text.', 'premium-addons-for-elementor' ),
2013 'type' => Controls_Manager::RAW_HTML,
2014 'separator' => 'before',
2015 )
2016 );
2017
2018 $this->add_group_control(
2019 Group_Control_Typography::get_type(),
2020 array(
2021 'name' => 'text_icon_typography',
2022 'selector' => ' {{WRAPPER}} .premium-bullet-list-icon-text p',
2023 'global' => array(
2024 'default' => Global_Typography::TYPOGRAPHY_TEXT,
2025 ),
2026 )
2027 );
2028
2029 $this->add_group_control(
2030 Group_Control_Border::get_type(),
2031 array(
2032 'name' => 'border',
2033 'selector' => '{{WRAPPER}} .premium-bullet-list-content .premium-bullet-list-wrapper i , {{WRAPPER}} .premium-bullet-list-content .premium-bullet-list-wrapper svg , {{WRAPPER}} .premium-bullet-list-content .premium-bullet-list-wrapper img ,{{WRAPPER}} .premium-bullet-list-content .premium-bullet-list-wrapper .premium-bullet-list-icon-text p',
2034 'separator' => 'before',
2035 )
2036 );
2037
2038 $this->add_responsive_control(
2039 'icon_border_radius',
2040 array(
2041 'label' => __( 'Border Radius', 'premium-addons-for-elementor' ),
2042 'type' => Controls_Manager::DIMENSIONS,
2043 'size_units' => array( 'px', '%', 'em', 'custom' ),
2044 'selectors' => array(
2045 '{{WRAPPER}} .premium-bullet-list-content .premium-bullet-list-wrapper i ,{{WRAPPER}} .premium-bullet-list-content .premium-bullet-list-wrapper .premium-bullet-list-icon-text p, {{WRAPPER}} .premium-bullet-list-content .premium-bullet-list-wrapper svg , {{WRAPPER}} .premium-bullet-list-content .premium-bullet-list-wrapper img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2046 ),
2047 )
2048 );
2049
2050 $this->add_responsive_control(
2051 'icon_margin',
2052 array(
2053 'label' => __( 'Margin', 'premium-addons-for-elementor' ),
2054 'type' => Controls_Manager::DIMENSIONS,
2055 'size_units' => array( 'px', 'em', '%', 'vw', 'custom' ),
2056 'selectors' => array(
2057 '{{WRAPPER}} .premium-bullet-list-wrapper ' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2058 ),
2059 'separator' => 'before',
2060 )
2061 );
2062
2063 $this->add_responsive_control(
2064 'icon_padding',
2065 array(
2066 'label' => __( 'Padding', 'premium-addons-for-elementor' ),
2067 'type' => Controls_Manager::DIMENSIONS,
2068 'size_units' => array( 'px', 'em', '%', 'vw', 'custom' ),
2069 'selectors' => array(
2070 '{{WRAPPER}} .premium-bullet-list-content .premium-bullet-list-wrapper i,{{WRAPPER}} .premium-bullet-list-content .premium-bullet-list-wrapper .premium-bullet-list-icon-text p , {{WRAPPER}} .premium-bullet-list-content .premium-bullet-list-wrapper svg , {{WRAPPER}} .premium-bullet-list-content .premium-bullet-list-wrapper img' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2071 ),
2072 )
2073 );
2074
2075 $this->end_controls_section();
2076 }
2077
2078 private function add_title_style_controls() {
2079 $this->start_controls_section(
2080 'title_style_section',
2081 array(
2082 'label' => __( 'Title', 'premium-addons-for-elementor' ),
2083 'tab' => Controls_Manager::TAB_STYLE,
2084 )
2085 );
2086
2087 $this->add_control(
2088 'title_render_notice',
2089 array(
2090 'raw' => __( 'Options below will be applied on items with no style options set individually from the repeater.', 'premium-addons-for-elementor' ),
2091 'type' => Controls_Manager::RAW_HTML,
2092 )
2093 );
2094
2095 $this->add_group_control(
2096 Group_Control_Typography::get_type(),
2097 array(
2098 'name' => 'list_title_typography',
2099 'selector' => '{{WRAPPER}} .premium-bullet-text',
2100 'global' => array(
2101 'default' => Global_Typography::TYPOGRAPHY_TEXT,
2102 ),
2103
2104 )
2105 );
2106
2107 $this->add_control(
2108 'title_color',
2109 array(
2110 'label' => __( 'Color', 'premium-addons-for-elementor' ),
2111 'type' => Controls_Manager::COLOR,
2112 'global' => array(
2113 'default' => Global_Colors::COLOR_PRIMARY,
2114 ),
2115 'selectors' => array(
2116 ' {{WRAPPER}} .premium-bullet-text' => 'color: {{VALUE}}',
2117 ' {{WRAPPER}} .premium-bullet-list-blur:hover .premium-bullet-text' => 'text-shadow: 0 0 3px {{VALUE}};',
2118 ),
2119 )
2120 );
2121
2122 $this->add_control(
2123 'title_hover_color',
2124 array(
2125 'label' => __( 'Hover Color', 'premium-addons-for-elementor' ),
2126 'type' => Controls_Manager::COLOR,
2127 'global' => array(
2128 'default' => Global_Colors::COLOR_PRIMARY,
2129 ),
2130 'selectors' => array(
2131 '{{WRAPPER}} .premium-bullet-list-content:hover .premium-bullet-text' => 'color: {{VALUE}}',
2132 '{{WRAPPER}} .premium-bullet-list-blur .premium-bullet-list-content:hover .premium-bullet-text' => 'text-shadow: none !important; color: {{VALUE}} !important;',
2133 ),
2134 )
2135 );
2136
2137 $this->add_group_control(
2138 Group_Control_text_Shadow::get_type(),
2139 array(
2140 'name' => 'list_title_shadow',
2141 'selector' => '{{WRAPPER}} .premium-bullet-text',
2142 )
2143 );
2144
2145 $this->add_responsive_control(
2146 'list_title_margin',
2147 array(
2148 'label' => __( 'Margin', 'premium-addons-for-elementor' ),
2149 'type' => Controls_Manager::DIMENSIONS,
2150 'size_units' => array( 'px', 'em', '%', 'vw', 'custom' ),
2151 'selectors' => array(
2152 '{{WRAPPER}} .premium-bullet-list-text ' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2153 ),
2154 )
2155 );
2156
2157 $this->end_controls_section();
2158 }
2159
2160 private function add_desc_style_controls() {
2161
2162 $this->start_controls_section(
2163 'description_style_section',
2164 array(
2165 'label' => __( 'Description', 'premium-addons-for-elementor' ),
2166 'tab' => Controls_Manager::TAB_STYLE,
2167 )
2168 );
2169
2170 $this->add_control(
2171 'desc_render_notice',
2172 array(
2173 'raw' => __( 'Options below will be applied on items with no style options set individually from the repeater.', 'premium-addons-for-elementor' ),
2174 'type' => Controls_Manager::RAW_HTML,
2175 )
2176 );
2177
2178 $this->add_group_control(
2179 Group_Control_Typography::get_type(),
2180 array(
2181 'name' => 'list_desc_typography',
2182 'selector' => '{{WRAPPER}} .premium-bullet-list-desc',
2183 'global' => array(
2184 'default' => Global_Typography::TYPOGRAPHY_TEXT,
2185 ),
2186
2187 )
2188 );
2189
2190 $this->add_control(
2191 'desc_color',
2192 array(
2193 'label' => __( 'Color', 'premium-addons-for-elementor' ),
2194 'type' => Controls_Manager::COLOR,
2195 'global' => array(
2196 'default' => Global_Colors::COLOR_TEXT,
2197 ),
2198 'selectors' => array(
2199 '{{WRAPPER}} .premium-bullet-list-desc' => 'color: {{VALUE}}',
2200 '{{WRAPPER}} .premium-bullet-list-blur:hover .premium-bullet-list-desc' => 'text-shadow: 0 0 3px {{VALUE}};',
2201 ),
2202 )
2203 );
2204
2205 $this->add_control(
2206 'desc_hover_color',
2207 array(
2208 'label' => __( 'Hover Color', 'premium-addons-for-elementor' ),
2209 'type' => Controls_Manager::COLOR,
2210 'selectors' => array(
2211 '{{WRAPPER}} .premium-bullet-list-content:hover .premium-bullet-list-desc' => 'color: {{VALUE}}',
2212 '{{WRAPPER}} .premium-bullet-list-blur .premium-bullet-list-content:hover .premium-bullet-list-desc' => 'text-shadow: none !important; color: {{VALUE}} !important;',
2213 ),
2214 )
2215 );
2216
2217 $this->add_responsive_control(
2218 'desc_margin',
2219 array(
2220 'label' => __( 'Margin', 'premium-addons-for-elementor' ),
2221 'type' => Controls_Manager::DIMENSIONS,
2222 'size_units' => array( 'px', 'em', '%', 'vw', 'custom' ),
2223 'selectors' => array(
2224 '{{WRAPPER}} .premium-bullet-list-desc' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2225 ),
2226 )
2227 );
2228
2229 $this->end_controls_section();
2230 }
2231
2232 private function add_badge_style_controls() {
2233 $this->start_controls_section(
2234 'badge_style_section',
2235 array(
2236 'label' => __( 'Badge', 'premium-addons-for-elementor' ),
2237 'tab' => Controls_Manager::TAB_STYLE,
2238 )
2239 );
2240
2241 $this->add_group_control(
2242 Group_Control_Typography::get_type(),
2243 array(
2244 'name' => 'badge_title_typography',
2245 'selector' => ' {{WRAPPER}} .premium-bullet-list-badge span',
2246 'global' => array(
2247 'default' => Global_Typography::TYPOGRAPHY_TEXT,
2248 ),
2249 )
2250 );
2251
2252 $this->add_control(
2253 'badge_color_render_notice',
2254 array(
2255 'raw' => __( 'Color options below will be applied on badge with no style options set individually from the repeater.', 'premium-addons-for-elementor' ),
2256 'type' => Controls_Manager::RAW_HTML,
2257 'separator' => 'before',
2258 )
2259 );
2260
2261 $this->add_control(
2262 'badge_text_style_color',
2263 array(
2264 'label' => __( 'Text Color', 'premium-addons-for-elementor' ),
2265 'type' => Controls_Manager::COLOR,
2266 'global' => array(
2267 'default' => Global_Colors::COLOR_PRIMARY,
2268 ),
2269 'selectors' => array(
2270 '{{WRAPPER}} .premium-bullet-list-badge span' => 'color: {{VALUE}}',
2271 ),
2272 'default' => '#fff',
2273 )
2274 );
2275
2276 $this->add_control(
2277 'badge_background_style_color',
2278 array(
2279 'label' => __( 'Background', 'premium-addons-for-elementor' ),
2280 'type' => Controls_Manager::COLOR,
2281 'global' => array(
2282 'default' => Global_Colors::COLOR_PRIMARY,
2283 ),
2284 'default' => '#6ec1e4',
2285 'selectors' => array(
2286 '{{WRAPPER}} .premium-bullet-list-badge span' => 'background-color: {{VALUE}}',
2287 ),
2288 'separator' => 'after',
2289 )
2290 );
2291
2292 $this->add_responsive_control(
2293 'badge_border_radius',
2294 array(
2295 'label' => __( 'Badge Radius', 'premium-addons-for-elementor' ),
2296 'type' => Controls_Manager::DIMENSIONS,
2297 'size_units' => array( 'px', '%', 'em', 'custom' ),
2298 'default' => array(
2299 'top' => 2,
2300 'right' => 2,
2301 'bottom' => 2,
2302 'left' => 2,
2303 ),
2304 'selectors' => array(
2305 '{{WRAPPER}} .premium-bullet-list-badge span ' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2306 ),
2307 )
2308 );
2309
2310 $this->add_group_control(
2311 Group_Control_text_Shadow::get_type(),
2312 array(
2313 'name' => 'Badge_text_shadow',
2314 'selector' => '{{WRAPPER}} .premium-bullet-list-badge span',
2315 )
2316 );
2317
2318 $this->add_group_control(
2319 Group_Control_Box_Shadow::get_type(),
2320 array(
2321 'name' => 'Badge_box_shadow',
2322 'selector' => '{{WRAPPER}} .premium-bullet-list-badge span',
2323 )
2324 );
2325
2326 $this->add_responsive_control(
2327 'Badge_margin',
2328 array(
2329 'label' => __( 'Margin', 'premium-addons-for-elementor' ),
2330 'type' => Controls_Manager::DIMENSIONS,
2331 'size_units' => array( 'px', 'em', '%', 'vw', 'custom' ),
2332 'default' => array(
2333 'top' => 0,
2334 'right' => 0,
2335 'bottom' => 0,
2336 'left' => 5,
2337 ),
2338 'selectors' => array(
2339 '{{WRAPPER}} .premium-bullet-list-badge ' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2340 ),
2341 )
2342 );
2343
2344 $this->add_responsive_control(
2345 'Badge_padding',
2346 array(
2347 'label' => __( 'Padding', 'premium-addons-for-elementor' ),
2348 'type' => Controls_Manager::DIMENSIONS,
2349 'size_units' => array( 'px', 'em', '%', 'vw', 'custom' ),
2350 'default' => array(
2351 'top' => 2,
2352 'right' => 5,
2353 'bottom' => 2,
2354 'left' => 5,
2355 ),
2356 'selectors' => array(
2357 '{{WRAPPER}} .premium-bullet-list-badge span ' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2358 ),
2359 )
2360 );
2361
2362 $this->end_controls_section();
2363 }
2364
2365 private function add_divider_style_controls() {
2366 $this->start_controls_section(
2367 'divider_style_section',
2368 array(
2369 'label' => __( 'Divider', 'premium-addons-for-elementor' ),
2370 'tab' => Controls_Manager::TAB_STYLE,
2371 'condition' => array(
2372 'show_divider' => 'yes',
2373 ),
2374 )
2375 );
2376
2377 $this->add_control(
2378 'list_divider_type',
2379 array(
2380 'label' => __( 'Divider Style', 'premium-addons-for-elementor' ),
2381 'type' => Controls_Manager::SELECT,
2382 'options' => array(
2383 'solid' => __( 'Solid', 'premium-addons-for-elementor' ),
2384 'double' => __( 'Double', 'premium-addons-for-elementor' ),
2385 'dotted' => __( 'Dotted', 'premium-addons-for-elementor' ),
2386 'dashed' => __( 'Dashed', 'premium-addons-for-elementor' ),
2387 'groove' => __( 'Groove', 'premium-addons-for-elementor' ),
2388 ),
2389 'default' => 'solid',
2390 'selectors' => array(
2391 '{{WRAPPER}} .premium-bullet-list-divider:not(:last-child):after' => 'border-top-style: {{VALUE}};',
2392 '{{WRAPPER}} .premium-bullet-list-divider-inline:not(:last-child):after' => 'border-left-style: {{VALUE}};',
2393 ),
2394 'condition' => array(
2395 'show_divider' => 'yes',
2396 ),
2397 )
2398 );
2399
2400 $this->add_responsive_control(
2401 'list_divider_width',
2402 array(
2403 'label' => __( ' Width', 'premium-addons-for-elementor' ),
2404 'type' => Controls_Manager::SLIDER,
2405 'size_units' => array( 'px', 'em', 'vw', 'custom' ),
2406 'range' => array(
2407 'px' => array(
2408 'min' => 0,
2409 'max' => 600,
2410 ),
2411 'em' => array(
2412 'min' => 0,
2413 'max' => 30,
2414 ),
2415 ),
2416 'label_block' => true,
2417 'selectors' => array(
2418 '{{WRAPPER}} .premium-bullet-list-divider:not(:last-child):after' => 'width:{{SIZE}}{{UNIT}};',
2419 '{{WRAPPER}} .premium-bullet-list-divider-inline:not(:last-child):after ' => 'border-left-width: {{SIZE}}{{UNIT}};',
2420 ),
2421 'condition' => array(
2422 'show_divider' => 'yes',
2423 ),
2424 )
2425 );
2426
2427 $this->add_responsive_control(
2428 'list_divider_height',
2429 array(
2430 'label' => __( 'Height', 'premium-addons-for-elementor' ),
2431 'type' => Controls_Manager::SLIDER,
2432 'size_units' => array( 'px', 'em', 'custom' ),
2433 'range' => array(
2434 'px' => array(
2435 'min' => 0,
2436 'max' => 600,
2437 ),
2438 'em' => array(
2439 'min' => 0,
2440 'max' => 30,
2441 ),
2442 ),
2443 'label_block' => true,
2444 'selectors' => array(
2445 '{{WRAPPER}} .premium-bullet-list-divider:not(:last-child):after ' => 'border-top-width: {{SIZE}}{{UNIT}};',
2446 '{{WRAPPER}} .premium-bullet-list-divider-inline:not(:last-child):after' => 'height: {{SIZE}}{{UNIT}};',
2447 ),
2448 'condition' => array(
2449 'show_divider' => 'yes',
2450 ),
2451 )
2452 );
2453
2454 $this->add_control(
2455 'list_divider_color',
2456 array(
2457 'label' => __( 'Color', 'premium-addons-for-elementor' ),
2458 'type' => Controls_Manager::COLOR,
2459 'global' => array(
2460 'default' => Global_Colors::COLOR_SECONDARY,
2461 ),
2462 'default' => '#ddd',
2463 'selectors' => array(
2464 '{{WRAPPER}} .premium-bullet-list-divider:not(:last-child):after ' => 'border-top-color: {{VALUE}};',
2465 '{{WRAPPER}} .premium-bullet-list-divider-inline:not(:last-child):after ' => 'border-left-color: {{VALUE}};',
2466 ),
2467 'condition' => array(
2468 'show_divider' => 'yes',
2469 ),
2470 )
2471 );
2472
2473 $this->end_controls_section();
2474 }
2475
2476 private function add_connector_style_controls() {
2477 $this->start_controls_section(
2478 'connector_style_section',
2479 array(
2480 'label' => __( 'Connector', 'premium-addons-for-elementor' ),
2481 'tab' => Controls_Manager::TAB_STYLE,
2482 'condition' => array(
2483 'layout_type' => 'column',
2484 'icon_postion!' => 'column',
2485 'show_connector' => 'yes',
2486 'hover_effect_type!' => 'grow',
2487 'list_overflow' => 'visible',
2488 'premium_icon_list_animation' => array( '', 'none' ),
2489 ),
2490 )
2491 );
2492
2493 $this->add_control(
2494 'icon_connector_type',
2495 array(
2496 'label' => __( 'Style', 'premium-addons-for-elementor' ),
2497 'type' => Controls_Manager::SELECT,
2498 'options' => array(
2499 'solid' => __( 'Solid', 'premium-addons-for-elementor' ),
2500 'double' => __( 'Double', 'premium-addons-for-elementor' ),
2501 'dotted' => __( 'Dotted', 'premium-addons-for-elementor' ),
2502 'dashed' => __( 'Dashed', 'premium-addons-for-elementor' ),
2503 'groove' => __( 'Groove', 'premium-addons-for-elementor' ),
2504 ),
2505 'default' => 'solid',
2506 'selectors' => array(
2507 '{{WRAPPER}} li.premium-bullet-list-content:not(:last-of-type) .premium-bullet-list-connector .premium-icon-connector-content:after ' => 'border-right-style: {{VALUE}};',
2508 ),
2509 'condition' => array(
2510 'show_connector' => 'yes',
2511 ),
2512 )
2513 );
2514
2515 $this->add_responsive_control(
2516 'icon_connector_width',
2517 array(
2518 'label' => __( ' Width', 'premium-addons-for-elementor' ),
2519 'type' => Controls_Manager::SLIDER,
2520 'size_units' => array( 'px', 'em', 'custom' ),
2521 'range' => array(
2522 'px' => array(
2523 'min' => 0,
2524 'max' => 600,
2525 ),
2526 'em' => array(
2527 'min' => 0,
2528 'max' => 30,
2529 ),
2530 ),
2531 'label_block' => true,
2532 'selectors' => array(
2533 '{{WRAPPER}} li.premium-bullet-list-content:not(:last-of-type) .premium-bullet-list-connector .premium-icon-connector-content:after' => 'border-right-width: {{SIZE}}{{UNIT}};',
2534 ),
2535 'condition' => array(
2536 'show_connector' => 'yes',
2537 ),
2538 )
2539 );
2540
2541 $this->add_control(
2542 'icon_connector_color',
2543 array(
2544 'label' => __( 'Color', 'premium-addons-for-elementor' ),
2545 'type' => Controls_Manager::COLOR,
2546 'global' => array(
2547 'default' => Global_Colors::COLOR_SECONDARY,
2548 ),
2549 'default' => '#ddd',
2550 'selectors' => array(
2551 '{{WRAPPER}} li.premium-bullet-list-content:not(:last-of-type) .premium-bullet-list-connector .premium-icon-connector-content:after' => 'border-color: {{VALUE}};',
2552 ),
2553 'condition' => array(
2554 'show_connector' => 'yes',
2555 ),
2556 )
2557 );
2558
2559 $this->end_controls_section();
2560 }
2561
2562 /**
2563 * Render Bullet List output on the frontend.
2564 *
2565 * Written in PHP and used to generate the final HTML.
2566 *
2567 * @since 3.21.2
2568 * @access protected
2569 */
2570 protected function render() {
2571
2572 $settings = $this->get_settings_for_display();
2573
2574 $id = $this->get_id();
2575 $blur_trans_effect = in_array( $settings['hover_effect_type'], array( 'blur', 'translate-bullet' ), true );
2576 $entrance_animation = $settings['premium_icon_list_animation'];
2577 $draw_icon = $this->check_icon_draw();
2578 $delay = 0;
2579 $has_connector = 'yes' === $settings['show_connector'] && 'column' === $settings['layout_type'] && 'column' !== $settings['icon_postion'] && 'grow' !== $settings['hover_effect_type'] && 'visible' === $settings['list_overflow'];
2580 $items_count = count( $settings['list'] );
2581
2582 $this->add_render_attribute( 'box', 'class', 'premium-bullet-list-box' );
2583
2584 $this->add_render_attribute( 'title_wrapper', 'class', 'premium-bullet-list-text-wrapper' );
2585
2586 if ( $blur_trans_effect ) {
2587 $this->add_render_attribute( 'box', 'class', 'premium-bullet-list-' . $settings['hover_effect_type'] );
2588 }
2589
2590 if ( $entrance_animation ) {
2591
2592 $animation_class = $settings['premium_icon_list_animation'];
2593 $animation_dur = 'animated-' . $settings['premium_icon_list_animation_duration'];
2594
2595 $this->add_render_attribute(
2596 'box',
2597 'data-list-animation',
2598 array(
2599 $entrance_animation,
2600 $animation_dur,
2601 )
2602 );
2603
2604 $has_connector = false;
2605 }
2606
2607 if ( $draw_icon && 'yes' === $settings['draw_svgs_sequence'] ) {
2608 $this->add_render_attribute( 'box', 'data-speed', $settings['frames'] );
2609 }
2610
2611 ?>
2612 <ul <?php $this->print_render_attribute_string( 'box' ); ?>>
2613 <?php
2614
2615 if ( $settings['list'] ) {
2616 foreach ( $settings['list'] as $index => $item ) {
2617
2618 $text_icon = $this->get_repeater_setting_key( 'list_text_icon', 'list', $index );
2619
2620 $text_badge = $this->get_repeater_setting_key( 'badge_title', 'list', $index );
2621
2622 $this->add_inline_editing_attributes( $text_icon, 'basic' );
2623
2624 $this->add_inline_editing_attributes( $text_badge, 'basic' );
2625
2626 $item_link = 'link_' . $index;
2627
2628 if ( 'yes' === $item['show_list_link'] ) {
2629
2630 $link_url = ( 'url' === $item['link_select'] ) ? $item['link'] : get_permalink( $item['existing_page'] );
2631
2632 $this->add_render_attribute(
2633 $item_link,
2634 array(
2635 'class' => 'premium-bullet-list-link',
2636 'aria-label' => $item['list_title'],
2637 )
2638 );
2639
2640 if ( 'url' === $item['link_select'] ) {
2641 $this->add_link_attributes( $item_link, $link_url );
2642 } else {
2643 $this->add_render_attribute( $item_link, 'href', $link_url );
2644 }
2645 }
2646
2647 $animation_key = 'icon_lottie_' . $index;
2648
2649 if ( 'icon' === $item['icon_type'] || 'svg' === $item['icon_type'] ) {
2650
2651 $this->add_render_attribute( $animation_key, 'class', 'premium-drawable-icon' );
2652
2653 if ( 'yes' === $item['draw_svg'] ) {
2654
2655 $this->add_render_attribute(
2656 $animation_key,
2657 array(
2658 'class' => array( 'premium-svg-drawer', 'elementor-invisible' ),
2659 'data-svg-reverse' => $item['lottie_reverse'],
2660 'data-svg-loop' => $item['lottie_loop'],
2661 'data-svg-hover' => $item['svg_hover'],
2662 'data-svg-sync' => $item['svg_sync'],
2663 'data-svg-fill' => $item['svg_color'],
2664 'data-svg-frames' => $item['frames'],
2665 'data-svg-yoyo' => $item['svg_yoyo'],
2666 'data-svg-point' => $item['lottie_reverse'] ? $item['end_point']['size'] : $item['start_point']['size'],
2667 )
2668 );
2669
2670 } else {
2671 $this->add_render_attribute( $animation_key, 'class', 'premium-svg-nodraw' );
2672 }
2673 } elseif ( 'lottie' === $item['icon_type'] ) {
2674
2675 $this->add_render_attribute(
2676 $animation_key,
2677 array(
2678 'class' => 'premium-lottie-animation',
2679 'data-lottie-url' => $item['lottie_url'],
2680 'data-lottie-loop' => $item['lottie_loop'],
2681 'data-lottie-reverse' => $item['lottie_reverse'],
2682 )
2683 );
2684 }
2685
2686 $list_content_key = 'content_index_' . $index;
2687
2688 $this->add_render_attribute(
2689 $list_content_key,
2690 'class',
2691 array(
2692 'premium-bullet-list-content',
2693 'elementor-repeater-item-' . $item['_id'],
2694 )
2695 );
2696
2697 if ( 'none' !== $settings['items_lq_effect'] ) {
2698 $this->add_render_attribute( $list_content_key, 'class', 'premium-con-lq__' . $settings['items_lq_effect'] );
2699 }
2700
2701 if ( $entrance_animation ) {
2702
2703 $this->add_render_attribute(
2704 $list_content_key,
2705 'data-delay',
2706 array(
2707 $delay,
2708 )
2709 );
2710
2711 $delay = $delay + $settings['premium_icon_list_animation_delay'] * 1000;
2712 }
2713
2714 if ( 'grow' === $settings['hover_effect_type'] ) {
2715
2716 $this->add_render_attribute(
2717 $list_content_key,
2718 'class',
2719 array(
2720 'premium-bullet-list-content-grow-effect',
2721 )
2722 );
2723 }
2724
2725 ?>
2726
2727 <li <?php $this->print_render_attribute_string( $list_content_key ); ?>>
2728 <div class="premium-bullet-list-text">
2729 <?php
2730 if ( 'yes' === $item['show_icon'] ) {
2731
2732 $wrapper_class = 'premium-bullet-list-wrapper';
2733
2734 $this->add_render_attribute( 'wrapper-' . $index, 'class', $wrapper_class );
2735
2736 if ( 'column' === $settings['icon_postion'] ) {
2737
2738 $wrapper_top_class = 'premium-bullet-list-wrapper-top ';
2739
2740 $this->add_render_attribute( 'wrapper-' . $index, 'class', $wrapper_top_class );
2741
2742 }
2743
2744 if ( 'linear gradient' === $settings['hover_effect_type'] ) {
2745 $this->add_render_attribute( 'title_wrapper', 'class', 'premium-bullet-list-gradient-effect' );
2746 }
2747
2748 if ( in_array( $settings['hover_effect_type'], array( 'show-bullet', 'translate-bullet' ), true ) ) {
2749 $this->add_render_attribute( 'wrapper-' . $index, 'class', 'pa-' . $settings['hover_effect_type'] );
2750
2751 if ( 'text' === $item['icon_type'] ) {
2752 $this->add_render_attribute( 'wrapper-' . $index, 'class', 'pa-has-text-bullet' );
2753 }
2754 }
2755
2756 ?>
2757 <div <?php $this->print_render_attribute_string( 'wrapper-' . $index ); ?>>
2758 <?php if ( $has_connector && $index < ( $items_count - 1 ) ) { ?>
2759 <div class="premium-bullet-list-connector">
2760 <div class="premium-icon-connector-content"></div>
2761 </div>
2762 <?php
2763 }
2764
2765 if ( 'icon' === $item['icon_type'] ) {
2766 if ( 'yes' !== $item['draw_svg'] ) {
2767 echo '<div class="premium-drawable-icon">';
2768 Icons_Manager::render_icon(
2769 $item['premium_icon_list_font_updated'],
2770 array(
2771 'class' => array( 'premium-svg-nodraw' ),
2772 'aria-hidden' => 'true',
2773 )
2774 );
2775 echo '</div>';
2776 } else {
2777 ?>
2778 <div <?php $this->print_render_attribute_string( $animation_key ); ?>>
2779 <?php echo Helper_Functions::get_svg_by_icon( $item['premium_icon_list_font_updated'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- get_svg_by_icon() returns sanitized inline SVG/icon markup. ?>
2780 </div>
2781 <?php
2782 }
2783 } elseif ( 'svg' === $item['icon_type'] ) {
2784 ?>
2785 <div <?php $this->print_render_attribute_string( $animation_key ); ?>>
2786 <?php echo Helper_Functions::sanitize_svg( $item['custom_svg'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- sanitize_svg() returns wp_kses-sanitized SVG markup. ?>
2787 </div>
2788 <?php
2789 } elseif ( 'text' === $item['icon_type'] ) {
2790 ?>
2791 <div class="premium-bullet-list-icon-text">
2792 <p <?php $this->print_render_attribute_string( $text_icon ); ?>>
2793 <?php echo wp_kses_post( $item['list_text_icon'] ); ?>
2794 </p>
2795 </div>
2796 <?php
2797 } elseif ( 'image' === $item['icon_type'] ) {
2798 if ( ! empty( $item['custom_image']['url'] ) ) {
2799 $alt = Control_Media::get_image_alt( $item['custom_image'] );
2800 echo '<img src="' . esc_url( $item['custom_image']['url'] ) . '" alt="' . esc_attr( $alt ) . '">';
2801 }
2802 } else {
2803 echo '<div ' . wp_kses_post( $this->get_render_attribute_string( $animation_key ) ) . '></div>';
2804 }
2805 ?>
2806 </div>
2807 <?php } ?>
2808
2809 <div <?php $this->print_render_attribute_string( 'title_wrapper' ); ?>>
2810 <?php echo '<span class="premium-bullet-text" data-text="' . esc_attr( $item['list_title'] ) . '"> ' . wp_kses_post( $item['list_title'] ) . ' </span>'; ?>
2811 <?php if ( ! empty( $item['list_desc'] ) ) : ?>
2812 <span class="premium-bullet-list-desc" data-text="<?php echo esc_attr( $item['list_desc'] ); ?>"><?php echo wp_kses_post( $item['list_desc'] ); ?></span>
2813 <?php endif; ?>
2814 </div>
2815 </div>
2816
2817 <?php if ( 'yes' === $item['show_badge'] ) { ?>
2818 <div class="premium-bullet-list-badge">
2819 <span <?php $this->print_render_attribute_string( $text_badge ); ?>>
2820 <?php echo wp_kses_post( $item['badge_title'] ); ?>
2821 </span>
2822 </div>
2823 <?php } ?>
2824
2825 <?php if ( 'yes' === $item['show_list_link'] ) { ?>
2826 <a <?php $this->print_render_attribute_string( $item_link ); ?>>
2827 <span><?php echo wp_kses_post( $item['list_title'] ); ?></span>
2828 </a>
2829 <?php } ?>
2830
2831 </li>
2832
2833 <?php
2834 if ( 'yes' === $settings['show_divider'] ) {
2835 $layout = $settings['layout_type'];
2836 $divider_class = 'premium-bullet-list-divider';
2837
2838 if ( 'row' === $layout ) {
2839 $divider_class .= '-inline';
2840 }
2841
2842 $this->add_render_attribute( 'divider', 'class', $divider_class );
2843 ?>
2844 <div <?php $this->print_render_attribute_string( 'divider' ); ?>></div>
2845 <?php
2846 }
2847 }
2848 }
2849 ?>
2850 </ul>
2851 <?php
2852 }
2853
2854 /**
2855 * Render Bullet List widget output in the editor.
2856 *
2857 * Written as a Backbone JavaScript template and used to generate the live preview.
2858 *
2859 * @since 3.21.2
2860 * @access protected
2861 */
2862 protected function content_template() {}
2863 }
2864