PluginProbe
Easy Elements for Elementor – Addons & Website Templates / 1.2.9
Easy Elements for Elementor – Addons & Website Templates v1.2.9
1.5.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.6 1.4.7 1.4.8 1.4.5 1.4.4 1.4.3 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 All 47 releases
easy-elements / widgets / feature-list / feature-list.php

feature-list.php in Easy Elements for Elementor – Addons & Website Templates 1.2.9, at widgets/feature-list/feature-list.php

779 lines 26.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Easyel\EasyElements\Widgets;
3 use Elementor\Utils;
4 use Elementor\Controls_Manager;
5 use Elementor\Responsive_Control;
6
7 defined( 'ABSPATH' ) || die();
8 class Easyel_Feature_List__Widget extends \Elementor\Widget_Base {
9
10 public function get_name() {
11 return 'eel-feature-list';
12 }
13
14 public function get_title() {
15 return esc_html__( 'Feature List', 'easy-elements' );
16 }
17
18 public function get_icon() {
19 return 'easyicon easyelIcon-service-list';
20 }
21
22 public function get_categories() {
23 return [ 'easyelements_category' ];
24 }
25
26 public function get_keywords() {
27 return [ 'feature', 'list', 'icon', 'icon-box', 'text' ];
28 }
29
30 public function get_style_depends() {
31 return [
32 'eel-feature-list',
33 ];
34 }
35
36
37 protected function register_controls() {
38
39 $this->start_controls_section(
40 'section_feature_list',
41 [
42 'label' => esc_html__( 'Feature Settings', 'easy-elements' ),
43 'tab' => Controls_Manager::TAB_CONTENT,
44 ]
45 );
46
47 $repeater = new \Elementor\Repeater();
48
49 // Icon Type
50 $repeater->add_control(
51 'icon_type',
52 [
53 'label' => esc_html__( 'Select Type', 'easy-elements' ),
54 'type' => \Elementor\Controls_Manager::SELECT,
55 'options' => [
56 'icon' => esc_html__( 'Icon', 'easy-elements' ),
57 'number' => esc_html__( 'Number', 'easy-elements' ),
58 'image' => esc_html__( 'Image', 'easy-elements' ),
59 ],
60 'default' => 'icon',
61 'label_block' => true,
62 ]
63 );
64
65 // Icon
66 $repeater->add_control(
67 'fea_list_icon',
68 [
69 'label' => esc_html__( 'Icon', 'easy-elements' ),
70 'type' => \Elementor\Controls_Manager::ICONS,
71 'label_block' => true,
72 'default' => [
73 'value' => 'fas fa-star',
74 'library' => 'fa-solid',
75 ],
76 'condition' => [
77 'icon_type' => 'icon',
78 ],
79 ]
80 );
81
82 // Number
83 $repeater->add_control(
84 'fea_list_number_title',
85 [
86 'label' => esc_html__( 'Number', 'easy-elements' ),
87 'type' => \Elementor\Controls_Manager::TEXT,
88 'default' => esc_html__( '01', 'easy-elements' ),
89 'condition' => [
90 'icon_type' => 'number',
91 ],
92 'label_block' => true,
93 'dynamic' => [ 'active' => true ],
94 ]
95 );
96
97 $repeater->add_control(
98 'fea_list_img',
99 [
100 'label' => esc_html__( 'Image', 'easy-elements' ),
101 'type' => \Elementor\Controls_Manager::MEDIA,
102 'default' => [
103 'url' => \Elementor\Utils::get_placeholder_image_src(),
104 ],
105 'condition' => [
106 'icon_type' => 'image',
107 ],
108 ]
109 );
110
111 // Title
112 $repeater->add_control(
113 'fea_list_title',
114 [
115 'label' => esc_html__( 'Title', 'easy-elements' ),
116 'type' => \Elementor\Controls_Manager::TEXT,
117 'default' => esc_html__( 'Easy Elements', 'easy-elements' ),
118 'label_block' => true,
119 'dynamic' => [ 'active' => true ],
120 ]
121 );
122
123 // Description
124 $repeater->add_control(
125 'fea_list_desc',
126 [
127 'label' => esc_html__( 'Description', 'easy-elements' ),
128 'type' => \Elementor\Controls_Manager::TEXTAREA,
129 'default' => esc_html__( 'Feature description goes here...', 'easy-elements' ),
130 'label_block' => true,
131 'dynamic' => [ 'active' => true ],
132 ]
133 );
134
135 // Add Repeater to widget
136 $this->add_control(
137 'features_list',
138 [
139 'label' => esc_html__( 'Feature Items', 'easy-elements' ),
140 'type' => \Elementor\Controls_Manager::REPEATER,
141 'fields' => $repeater->get_controls(),
142 'default' => [
143 [
144 'icon_type' => 'icon',
145 'fea_list_icon' => [ 'value' => 'fas fa-clock', 'library' => 'fa-solid' ],
146 'fea_list_title' => 'Lightning Fast',
147 'fea_list_desc' => 'Your site loads in seconds with our highly optimized structure.',
148 ],
149 [
150 'icon_type' => 'icon',
151 'fea_list_icon' => [ 'value' => 'far fa-clone', 'library' => 'fa-solid' ],
152 'fea_list_title' => 'Smart & Flexible',
153 'fea_list_desc' => 'Build exactly what you envision with powerful styling controls.',
154 ],
155 [
156 'icon_type' => 'icon',
157 'fea_list_icon' => [ 'value' => 'fas fa-star', 'library' => 'fa-solid' ],
158 'fea_list_title' => 'Reliable Support',
159 'fea_list_desc' => 'Our expert team is always ready to assist you with quick, friendly.',
160 ]
161 ],
162 'title_field' => '{{{ fea_list_title }}}',
163 ]
164 );
165
166 $this->add_responsive_control(
167 'fea_dir',
168 [
169 'label' => esc_html__( 'Icon Direction', 'easy-elements' ),
170 'type' => \Elementor\Controls_Manager::CHOOSE,
171 'options' => [
172 'left' => [
173 'title' => esc_html__( 'Left', 'easy-elements' ),
174 'icon' => 'eicon-h-align-left',
175 ],
176 'right' => [
177 'title' => esc_html__( 'Right', 'easy-elements' ),
178 'icon' => 'eicon-h-align-right',
179 ]
180 ],
181 'default' => 'left',
182 'toggle' => true,
183 ]
184 );
185
186 $this->add_responsive_control(
187 'fea_vertical_align',
188 [
189 'label' => esc_html__( 'Vertical Alignment', 'easy-elements' ),
190 'type' => \Elementor\Controls_Manager::CHOOSE,
191 'options' => [
192 'flex-start' => [
193 'title' => esc_html__( 'Start', 'easy-elements' ),
194 'icon' => 'eicon-v-align-top',
195 ],
196 'center' => [
197 'title' => esc_html__( 'Middle', 'easy-elements' ),
198 'icon' => 'eicon-v-align-middle',
199 ],
200 'flex-end' => [
201 'title' => esc_html__( 'Bottom', 'easy-elements' ),
202 'icon' => 'eicon-v-align-bottom',
203 ],
204 ],
205 'default' => 'center',
206 'toggle' => true,
207 'selectors' => [
208 '{{WRAPPER}} .eel-fea-list' => 'align-items: {{VALUE}};',
209 ],
210 ]
211 );
212
213 $this->add_control(
214 'fea_list_icon_view',
215 [
216 'label' => esc_html__( 'Icon View', 'easy-elements' ),
217 'type' => \Elementor\Controls_Manager::SELECT,
218 'label_block' => true,
219 'default' => 'stracked',
220 'options' => [
221 'default' => esc_html__( 'Default', 'easy-elements' ),
222 'frame' => esc_html__( 'Frame', 'easy-elements' ),
223 'stracked' => esc_html__( 'Stracked', 'easy-elements' )
224 ],
225 'prefix_class' => 'eel-fea-list-icon-view-',
226 ]
227 );
228
229 $this->add_control(
230 'fea_list_icon_shape',
231 [
232 'label' => esc_html__( 'Shape', 'easy-elements' ),
233 'type' => \Elementor\Controls_Manager::SELECT,
234 'label_block' => true,
235 'default' => 'rounded',
236 'options' => [
237 'rounded' => esc_html__( 'Rounded', 'easy-elements' ),
238 'square' => esc_html__( 'Square', 'easy-elements' ),
239 'circle' => esc_html__( 'Circle', 'easy-elements' ),
240 'sq_rotate' => esc_html__( 'Square Rotate', 'easy-elements' ),
241 ],
242 'prefix_class' => 'eel-fea-list-icon-shape-',
243 'condition' => [
244 'fea_list_icon_view' => ['frame', 'stracked']
245 ]
246 ]
247 );
248
249 $this->add_control(
250 'title_tag',
251 [
252 'label' => esc_html__('Title HTML Tag', 'easy-elements'),
253 'type' => Controls_Manager::SELECT,
254 'default' => 'h3',
255 'options' => [
256 'h1' => esc_html__('H1', 'easy-elements'),
257 'h2' => esc_html__('H2', 'easy-elements'),
258 'h3' => esc_html__('H3', 'easy-elements'),
259 'h4' => esc_html__('H4', 'easy-elements'),
260 'h5' => esc_html__('H5', 'easy-elements'),
261 'h6' => esc_html__('H6', 'easy-elements'),
262 'p' => esc_html__('P', 'easy-elements'),
263 'div' => esc_html__('div', 'easy-elements'),
264 'span' => esc_html__('span', 'easy-elements'),
265 ],
266 ]
267 );
268 $this->end_controls_section();
269
270 $this->start_controls_section(
271 'fea_list_styles',
272 [
273 'label' => esc_html__( 'Feature List', 'easy-elements' ),
274 'tab' => \Elementor\Controls_Manager::TAB_STYLE,
275 ]
276 );
277
278 $this->add_group_control(
279 \Elementor\Group_Control_Background::get_type(),
280 [
281 'name' => 'list_background',
282 'types' => [ 'classic', 'gradient', 'video' ],
283 'selector' => '{{WRAPPER}} .eel-fea-list',
284 ]
285 );
286
287 $this->add_responsive_control(
288 'fea_item_gap',
289 [
290 'label' => esc_html__( 'Item Gap', 'easy-elements' ),
291 'type' => \Elementor\Controls_Manager::SLIDER,
292 'range' => [
293 'px' => [
294 'min' => 0,
295 'max' => 100,
296 ],
297 ],
298 'selectors' => [
299 '{{WRAPPER}} .eel-fea-list' => 'margin-bottom: {{SIZE}}{{UNIT}};',
300 ],
301 ]
302 );
303
304 $this->add_responsive_control(
305 'fea_middle_gap',
306 [
307 'label' => esc_html__( 'Middle Gap', 'easy-elements' ),
308 'type' => \Elementor\Controls_Manager::SLIDER,
309 'range' => [
310 'px' => [
311 'min' => 0,
312 'max' => 100,
313 ],
314 ],
315 'default' => [
316 'size' => 20,
317 'unit' => 'px',
318 ],
319 'selectors' => [
320 '{{WRAPPER}} .eel-fea-list' => 'gap: {{SIZE}}{{UNIT}};',
321 ],
322 ]
323 );
324
325 $this->add_control(
326 'fea_connector',
327 [
328 'label' => esc_html__( 'Connector', 'easy-elements' ),
329 'type' => \Elementor\Controls_Manager::SWITCHER,
330 'label_on' => esc_html__( 'Yes', 'easy-elements' ),
331 'label_off' => esc_html__( 'No', 'easy-elements' ),
332 'return_value' => 'yes',
333 'default' => 'no',
334 ]
335 );
336
337 $this->add_control(
338 'fea_connector_left',
339 [
340 'label' => esc_html__( 'Left Connector', 'easy-elements' ),
341 'type' => \Elementor\Controls_Manager::SWITCHER,
342 'label_on' => esc_html__( 'Yes', 'easy-elements' ),
343 'label_off' => esc_html__( 'No', 'easy-elements' ),
344 'return_value' => 'yes',
345 'default' => 'no',
346 'condition' => [
347 'fea_connector' => 'yes'
348 ]
349 ]
350 );
351
352 $this->add_control(
353 'fea_connector_type',
354 [
355 'label' => esc_html__( 'Type', 'easy-elements' ),
356 'type' => \Elementor\Controls_Manager::SELECT,
357 'label_block' => true,
358 'default' => 'solid',
359 'options' => [
360 'solid' => esc_html__( 'Solid', 'easy-elements' ),
361 'dotted' => esc_html__( 'Dotted', 'easy-elements' ),
362 'dashed' => esc_html__( 'Dashed', 'easy-elements' ),
363 'double' => esc_html__( 'Double', 'easy-elements' ),
364 ],
365 'selectors' => [
366 '{{WRAPPER}} .eel-fea-list-wrapper.eel-fea-list-connector::before' => 'border-style: {{VALUE}};',
367 '{{WRAPPER}} .eel-fea-list-icon::after' => 'border-style: {{VALUE}};',
368 ],
369 'condition' => [
370 'fea_connector' => 'yes'
371 ]
372 ]
373 );
374
375 $this->add_responsive_control(
376 'fea_connector_width',
377 [
378 'label' => esc_html__( 'Connector Width', 'easy-elements' ),
379 'type' => \Elementor\Controls_Manager::SLIDER,
380 'selectors' => [
381 '{{WRAPPER}} .eel-fea-list-wrapper.eel-fea-list-connector::before' => 'border-width: {{SIZE}}{{UNIT}};',
382 '{{WRAPPER}} .eel-fea-list-icon::after' => 'border-width: {{SIZE}}{{UNIT}};',
383 ],
384 'condition' => [
385 'fea_connector' => 'yes'
386 ]
387 ]
388 );
389
390 $this->add_responsive_control(
391 'fea_connector_position_x',
392 [
393 'label' => esc_html__( 'Position Horizontal', 'easy-elements' ),
394 'type' => \Elementor\Controls_Manager::SLIDER,
395 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ],
396 'range' => [
397 'px' => [
398 'min' => -50,
399 'max' => 500,
400 'step' => 1,
401 ],
402 '%' => [
403 'min' => -50,
404 'max' => 100,
405 ],
406 ],
407 'selectors' => [
408 '{{WRAPPER}} .eel-fea-list-wrapper.eel-fea-list-connector::before' => 'left: {{SIZE}}{{UNIT}};',
409 ],
410 'condition' => [
411 'fea_connector' => 'yes',
412 'fea_dir' => 'left',
413 ]
414
415 ]
416 );
417
418 $this->add_responsive_control(
419 'fea_connector_right_position_x',
420 [
421 'label' => esc_html__( 'Position Horizontal', 'easy-elements' ),
422 'type' => \Elementor\Controls_Manager::SLIDER,
423 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ],
424 'range' => [
425 'px' => [
426 'min' => -50,
427 'max' => 500,
428 'step' => 1,
429 ],
430 '%' => [
431 'min' => -50,
432 'max' => 100,
433 ],
434 ],
435 'selectors' => [
436 '{{WRAPPER}} .eel-fea-list-connector.eel-fea-list-dir-right::before' => 'right: {{SIZE}}{{UNIT}};',
437 ],
438 'condition' => [
439 'fea_connector' => 'yes',
440 'fea_dir' => 'right'
441 ]
442 ]
443 );
444
445 $this->add_control(
446 'fea_connector_color',
447 [
448 'label' => esc_html__( 'Color', 'easy-elements' ),
449 'type' => \Elementor\Controls_Manager::COLOR,
450 'selectors' => [
451 '{{WRAPPER}} .eel-fea-list-wrapper.eel-fea-list-connector::before' => 'border-color: {{VALUE}};',
452 '{{WRAPPER}} .eel-fea-list-icon::after' => 'border-color: {{VALUE}};',
453 ],
454 'condition' => [
455 'fea_connector' => 'yes'
456 ]
457 ]
458 );
459
460 $this->add_group_control(
461 \Elementor\Group_Control_Border::get_type(),
462 [
463 'name' => 'fea_list_border',
464 'selector' => '{{WRAPPER}} .eel-fea-list',
465 'separator' => 'before'
466 ]
467 );
468
469 $this->add_responsive_control(
470 'fea_list_border_radius',
471 [
472 'label' => esc_html__( 'Border Radius', 'easy-elements' ),
473 'type' => \Elementor\Controls_Manager::DIMENSIONS,
474 'size_units' => [ 'px', '%' ],
475 'selectors' => [
476 '{{WRAPPER}} .eel-fea-list' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
477 ],
478 ]
479 );
480
481 $this->add_responsive_control(
482 'fea_list_padding',
483 [
484 'label' => esc_html__( 'Padding', 'easy-elements' ),
485 'type' => \Elementor\Controls_Manager::DIMENSIONS,
486 'size_units' => [ 'px', '%' ],
487 'selectors' => [
488 '{{WRAPPER}} .eel-fea-list' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
489 ],
490 ]
491 );
492 $this->end_controls_section();
493
494 $this->start_controls_section(
495 'section_style_icon',
496 [
497 'label' => esc_html__( 'Icon', 'easy-elements' ),
498 'tab' => \Elementor\Controls_Manager::TAB_STYLE,
499 ]
500 );
501
502 $this->add_control(
503 'icon_color',
504 [
505 'label' => esc_html__( 'Color', 'easy-elements' ),
506 'type' => \Elementor\Controls_Manager::COLOR,
507 'selectors' => [
508 '{{WRAPPER}} .eel-fea-list-icon svg,{{WRAPPER}} .eel-fea-list-icon svg path, {{WRAPPER}} .eel-fea-list-icon i,
509 {{WRAPPER}} .eel-fea-list-number' => 'color: {{VALUE}}; fill: {{VALUE}};',
510 ],
511 ]
512 );
513
514 $this->add_group_control(
515 \Elementor\Group_Control_Background::get_type(),
516 [
517 'name' => 'icon_bg_color',
518 'types' => [ 'classic', 'gradient', 'video' ],
519 'selector' => '{{WRAPPER}} .eel-fea-list-icon',
520 ]
521 );
522
523 $this->add_responsive_control(
524 'icon_size',
525 [
526 'label' => esc_html__( 'Size', 'easy-elements' ),
527 'type' => \Elementor\Controls_Manager::SLIDER,
528 'range' => [
529 'px' => [
530 'min' => 10,
531 'max' => 150,
532 ],
533 ],
534 'selectors' => [
535 '{{WRAPPER}} .eel-fea-list-icon svg' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};',
536 '{{WRAPPER}} .eel-fea-list-image' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};',
537 '{{WRAPPER}} .eel-fea-list-number' => 'font-size: {{SIZE}}{{UNIT}};',
538 ],
539 ]
540 );
541
542 $this->add_responsive_control(
543 'icon_box_size',
544 [
545 'label' => esc_html__( 'Box Size', 'easy-elements' ),
546 'type' => \Elementor\Controls_Manager::SLIDER,
547 'range' => [
548 'px' => [
549 'min' => 20,
550 'max' => 150,
551 ],
552 ],
553 'size_units' => [ 'px' ],
554 'selectors' => [
555 '{{WRAPPER}} .eel-fea-list-icon' => 'min-width: {{SIZE}}{{UNIT}}; min-height: {{SIZE}}{{UNIT}}; line-height: {{SIZE}}{{UNIT}};',
556 ],
557 ]
558 );
559
560 $this->add_responsive_control(
561 'icon_alignment',
562 [
563 'label' => esc_html__( 'Alignment', 'easy-elements' ),
564 'type' => \Elementor\Controls_Manager::CHOOSE,
565 'options' => [
566 'start' => [
567 'title' => esc_html__( 'Left', 'easy-elements' ),
568 'icon' => 'eicon-text-align-left',
569 ],
570 'center' => [
571 'title' => esc_html__( 'Center', 'easy-elements' ),
572 'icon' => 'eicon-text-align-center',
573 ],
574 'end' => [
575 'title' => esc_html__( 'Right', 'easy-elements' ),
576 'icon' => 'eicon-text-align-right',
577 ],
578 ],
579 'default' => 'center',
580 'toggle' => true,
581 'selectors' => [
582 '{{WRAPPER}} .eel-fea-list-icon' => 'justify-content: {{VALUE}};',
583 ],
584 ]
585 );
586
587 $this->add_group_control(
588 \Elementor\Group_Control_Box_Shadow::get_type(),
589 [
590 'name' => 'icon_shadow',
591 'label' => esc_html__('Box Shadow', 'easy-elements'),
592 'selector' => '{{WRAPPER}} .eel-fea-list-icon',
593 ]
594 );
595
596 $this->add_group_control(
597 \Elementor\Group_Control_Text_Stroke::get_type(),
598 [
599 'name' => 'icon_stroke',
600 'selector' => '{{WRAPPER}} .eel-fea-list-number,{{WRAPPER}} .eel-fea-list-icon svg',
601 ]
602 );
603
604 $this->add_group_control(
605 \Elementor\Group_Control_Border::get_type(),
606 [
607 'name' => 'icon_border',
608 'selector' => '{{WRAPPER}} .eel-fea-list-icon',
609 ]
610 );
611
612 $this->add_responsive_control(
613 'icon_radius',
614 [
615 'label' => esc_html__( 'Border Radius', 'easy-elements' ),
616 'type' => \Elementor\Controls_Manager::DIMENSIONS,
617 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ],
618 'selectors' => [
619 '{{WRAPPER}} .eel-fea-list-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
620 ],
621 ]
622 );
623 $this->end_controls_section();
624
625 $this->start_controls_section(
626 'section_style_title',
627 [
628 'label' => esc_html__( 'Title', 'easy-elements' ),
629 'tab' => \Elementor\Controls_Manager::TAB_STYLE,
630 ]
631 );
632
633 $this->add_control(
634 'title_color',
635 [
636 'label' => esc_html__( 'Color', 'easy-elements' ),
637 'type' => \Elementor\Controls_Manager::COLOR,
638 'selectors' => [
639 '{{WRAPPER}} .eel-fea-list-title' => 'color: {{VALUE}};',
640 ],
641 ]
642 );
643
644 $this->add_group_control(
645 \Elementor\Group_Control_Typography::get_type(),
646 [
647 'name' => 'title_typography',
648 'selector' => '{{WRAPPER}} .eel-fea-list-title',
649 ]
650 );
651
652 $this->add_group_control(
653 \Elementor\Group_Control_Text_Stroke::get_type(),
654 [
655 'name' => 'title_stroke',
656 'selector' => '{{WRAPPER}} .eel-fea-list-title',
657 ]
658 );
659
660 $this->add_responsive_control(
661 'fea_title_padding',
662 [
663 'label' => esc_html__( 'Padding', 'easy-elements' ),
664 'type' => \Elementor\Controls_Manager::DIMENSIONS,
665 'size_units' => [ 'px', '%' ],
666 'selectors' => [
667 '{{WRAPPER}} .eel-fea-list-title' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
668 ],
669 ]
670 );
671 $this->end_controls_section();
672
673 $this->start_controls_section(
674 'section_style_desc',
675 [
676 'label' => esc_html__( 'Description', 'easy-elements' ),
677 'tab' => \Elementor\Controls_Manager::TAB_STYLE,
678 ]
679 );
680
681 $this->add_control(
682 'desc_color',
683 [
684 'label' => esc_html__( 'Color', 'easy-elements' ),
685 'type' => \Elementor\Controls_Manager::COLOR,
686 'selectors' => [
687 '{{WRAPPER}} .eel-fea-list-desc' => 'color: {{VALUE}};',
688 ],
689 ]
690 );
691
692 $this->add_group_control(
693 \Elementor\Group_Control_Typography::get_type(),
694 [
695 'name' => 'desc_typography',
696 'selector' => '{{WRAPPER}} .eel-fea-list-desc',
697 ]
698 );
699 $this->end_controls_section();
700
701 }
702
703 protected function render() {
704
705 $settings = $this->get_settings_for_display();
706 $connector = ( isset($settings['fea_connector']) && $settings['fea_connector'] === 'yes' ) ? 'eel-fea-list-connector' : '';
707 $connector_left = ( isset($settings['fea_connector_left']) && $settings['fea_connector_left'] === 'yes' ) ? 'eel-fea-list-connector-left' : '';
708 $title_tag = ! empty($settings['title_tag']) ? $settings['title_tag'] : 'h3';
709
710 if ( empty( $settings['features_list'] ) ) {
711 return;
712 }
713
714 echo '<div class="eel-fea-list-wrapper ' . esc_attr($connector) . ' ' . esc_attr($connector_left) . ' eel-fea-list-dir-' . esc_attr($settings['fea_dir']) . '">';
715
716 foreach ( $settings['features_list'] as $item ) {
717
718 echo '<div class="eel-fea-list eel-fea-list-dir-' . esc_attr($settings['fea_dir']) . ' ">';
719
720 /* ------------------------------------
721 ICON / NUMBER / IMAGE WRAPPER
722 ------------------------------------- */
723
724 // DEFAULT: no background
725 $icon_style = '';
726
727 // If image icon selected → background image
728 if ( $item['icon_type'] === 'image' && ! empty($item['fea_list_img']['url']) ) {
729 $icon_style = 'style="background-image: url(' . esc_url( $item['fea_list_img']['url'] ) . ');"';
730 }
731
732 echo '<div class="eel-fea-list-icon" ' . esc_attr( $icon_style ) . '>';
733
734 // ICON (Elementor icon library)
735 if ( $item['icon_type'] === 'icon' && ! empty($item['fea_list_icon']['value']) ) {
736 \Elementor\Icons_Manager::render_icon(
737 $item['fea_list_icon'],
738 ['aria-hidden' => 'true']
739 );
740 }
741
742 // NUMBER
743 if ( $item['icon_type'] === 'number' && ! empty($item['fea_list_number_title']) ) {
744 echo '<span class="eel-fea-list-number">' . esc_html($item['fea_list_number_title']) . '</span>';
745 }
746
747 echo '</div>'; // icon end
748
749
750 /* ------------------------------------
751 TEXT CONTENT WRAPPER
752 ------------------------------------- */
753
754 if ( ! empty($item['fea_list_title']) || ! empty($item['fea_list_desc']) ) {
755
756 echo '<div class="eel-fea-list-info">';
757
758 // Title
759 if ( ! empty( $item['fea_list_title'] ) ) {
760 echo '<' . esc_attr($title_tag) . ' class="eel-fea-list-title">'
761 . esc_html($item['fea_list_title'])
762 . '</' . esc_attr($title_tag) . '>';
763 }
764
765 // Description
766 if ( ! empty( $item['fea_list_desc'] ) ) {
767 echo '<p class="eel-fea-list-desc">' . esc_html($item['fea_list_desc']) . '</p>';
768 }
769
770 echo '</div>'; // info end
771 }
772
773 echo '</div>'; // single item end
774 }
775
776 echo '</div>'; // wrapper end
777 }
778
779 }