PluginProbe
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder / 51.1.83
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder v51.1.83
51.1.83 51.1.82 51.1.81 51.1.79 51.1.78 51.1.77 51.1.76 51.1.74 51.1.75 51.1.65 51.1.64 51.1.63 trunk 51.1.14 51.1.2 51.1.35 51.1.36 51.1.37 51.1.38 51.1.39 51.1.44 51.1.45 51.1.46 51.1.47 51.1.49 All 37 releases
king-addons / includes / widgets / Page_List / Page_List.php

Page_List.php in King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder 51.1.83, at includes/widgets/Page_List/Page_List.php

889 lines 30.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace King_Addons;
4
5 use Elementor\Controls_Manager;
6 use Elementor\Icons_Manager;
7 use Elementor\Repeater;
8 use Elementor\Widget_Base;
9 use Elementor\Group_Control_Typography;
10
11 if (!defined('ABSPATH')) {
12 exit; // Exit if accessed directly.
13 }
14
15
16
17 class Page_List extends Widget_Base
18 {
19
20
21
22 public function get_name(): string
23 {
24 return 'king-addons-page-list';
25 }
26
27 public function get_title(): string
28 {
29 return esc_html__('Page List', 'king-addons');
30 }
31
32 public function get_icon(): string
33 {
34 return 'king-addons-icon king-addons-page-list';
35 }
36
37 public function get_style_depends(): array
38 {
39 return [KING_ADDONS_ASSETS_UNIQUE_KEY . '-page-list-style'];
40 }
41
42 public function get_categories(): array
43 {
44 return ['king-addons'];
45 }
46
47 public function get_keywords(): array
48 {
49 return ['page-list', 'list', 'page list', 'page', 'pages', 'items', 'navigation', 'nav',
50 'king addons', 'king', 'addons', 'kingaddons', 'king-addons', 'item'];
51 }
52
53 public function get_custom_help_url()
54 {
55 return 'mailto:bug@kingaddons.com?subject=Bug Report - King Addons&body=Please describe the issue';
56 }
57
58 public function add_control_title_pointer_color_hr()
59 {
60 }
61
62 public function add_control_title_pointer()
63 {
64 }
65
66 public function add_control_title_pointer_height()
67 {
68 }
69
70 public function add_control_title_pointer_animation()
71 {
72 }
73
74 protected function register_controls()
75 {
76 $this->start_controls_section(
77 'section_page_list_general',
78 [
79 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('General', 'king-addons'),
80 'tab' => Controls_Manager::TAB_CONTENT,
81 ]
82 );
83
84 $this->add_control(
85 'taxonomy_list_layout',
86 [
87 'label' => esc_html__('Select Layout', 'king-addons'),
88 'type' => Controls_Manager::CHOOSE,
89 'default' => 'vertical',
90 'options' => [
91 'vertical' => [
92 'title' => esc_html__('Vertical', 'king-addons'),
93 'icon' => 'eicon-editor-list-ul',
94 ],
95 'horizontal' => [
96 'title' => esc_html__('Horizontal', 'king-addons'),
97 'icon' => 'eicon-ellipsis-h',
98 ],
99 ],
100 'prefix_class' => 'king-addons-pl-page-list-',
101 'label_block' => false,
102 ]
103 );
104
105 $repeater = new Repeater();
106
107 $repeater->add_control(
108 'page_list_item_type',
109 [
110 'label' => esc_html__('Page Type', 'king-addons'),
111 'type' => Controls_Manager::SELECT,
112 'label_block' => false,
113 'default' => 'custom',
114 'options' => [
115 'custom' => esc_html__('Custom', 'king-addons'),
116 'dynamic' => esc_html__('Dynamic', 'king-addons')
117 ]
118 ]
119 );
120
121 $repeater->add_control(
122 'query_page_selection',
123 [
124 'label' => esc_html__('Select Page', 'king-addons'),
125 'type' => 'king-addons-ajax-select2',
126 'options' => 'ajaxselect2/getPostsByPostType',
127 'query_slug' => 'page',
128 'label_block' => true,
129 'condition' => [
130 'page_list_item_type' => 'dynamic'
131 ]
132 ]
133 );
134
135 $repeater->add_control(
136 'page_list_item_title',
137 [
138 'label' => esc_html__('Title', 'king-addons'),
139 'type' => Controls_Manager::TEXT,
140 'dynamic' => [
141 'active' => true,
142 ],
143 'default' => esc_html__('New Page', 'king-addons'),
144 'label_block' => true,
145 'separator' => 'before',
146 'condition' => [
147 'page_list_item_type' => 'custom'
148 ]
149 ]
150 );
151
152 $repeater->add_control(
153 'page_list_item_sub_title',
154 [
155 'label' => esc_html__('Sub Title', 'king-addons'),
156 'label_block' => true,
157 'type' => Controls_Manager::TEXT,
158 'dynamic' => [
159 'active' => true,
160 ],
161 'default' => esc_html__('New Page Sub Title', 'king-addons'),
162 ]
163 );
164
165 $repeater->add_control(
166 'page_list_item_title_url',
167 [
168 'label' => esc_html__('Title Link', 'king-addons'),
169 'type' => Controls_Manager::URL,
170 'dynamic' => [
171 'active' => true,
172 ],
173 'placeholder' => esc_html__('https://example.com', 'king-addons'),
174 'default' => [
175 'url' => '',
176 'is_external' => true,
177 'nofollow' => true,
178 'custom_attributes' => '',
179 ],
180 'condition' => [
181 'page_list_item_type' => 'custom'
182 ],
183 'label_block' => true,
184 ]
185 );
186
187 $repeater->add_control(
188 'open_in_new_page',
189 [
190 'label' => esc_html__('Open In New Page', 'king-addons'),
191 'type' => Controls_Manager::SWITCHER,
192 'render_type' => 'template',
193 'default' => 'yes',
194 'separator' => 'before',
195 'condition' => [
196 'page_list_item_type' => 'dynamic'
197 ]
198 ]
199 );
200
201 $repeater->add_control(
202 'page_list_item_icon',
203 [
204 'label' => esc_html__('Select Icon', 'king-addons'),
205 'type' => Controls_Manager::ICONS,
206 'skin' => 'inline',
207 'label_block' => false,
208 'separator' => 'before',
209 'exclude_inline_options' => 'svg'
210 ]
211 );
212
213 $repeater->add_control(
214 'show_page_list_item_badge',
215 [
216 'label' => esc_html__('Show Badge', 'king-addons'),
217 'type' => Controls_Manager::SWITCHER,
218 'return_value' => 'yes',
219 'label_block' => false,
220 'default' => '',
221 'separator' => 'before'
222 ]
223 );
224
225 $repeater->add_control(
226 'show_page_list_item_badge_animation',
227 [
228 'label' => esc_html__('Enable Animation', 'king-addons'),
229 'type' => Controls_Manager::SWITCHER,
230 'label_block' => false,
231 'condition' => [
232 'show_page_list_item_badge' => 'yes'
233 ]
234 ]
235 );
236
237 $repeater->add_control(
238 'page_list_item_badge_text', [
239 'label' => esc_html__('Badge Text', 'king-addons'),
240 'type' => Controls_Manager::TEXT,
241 'dynamic' => [
242 'active' => true,
243 ],
244 'default' => esc_html__('Badge', 'king-addons'),
245 'condition' => [
246 'show_page_list_item_badge' => 'yes'
247 ]
248 ]
249 );
250
251 $repeater->add_control(
252 'badge_bg_color',
253 [
254 'label' => esc_html__('Background Color', 'king-addons'),
255 'type' => Controls_Manager::COLOR,
256 'default' => '#5B03FF',
257 'selectors' => [
258 '{{WRAPPER}} {{CURRENT_ITEM}} .king-addons-pl-page-list-item-badge' => 'background-color: {{VALUE}}',
259 ],
260 'condition' => [
261 'show_page_list_item_badge' => 'yes'
262 ]
263 ]
264 );
265
266 $this->add_control(
267 'page_list',
268 [
269 'label' => esc_html__('Repeater List', 'king-addons'),
270 'type' => Controls_Manager::REPEATER,
271 'fields' => $repeater->get_controls(),
272 'default' => [
273 [
274 'page_list_item_title' => esc_html__('New Page 1', 'king-addons'),
275 'page_list_item_sub_title' => esc_html__('First Sub Title', 'king-addons'),
276 ],
277 [
278 'page_list_item_title' => esc_html__('New Page 2', 'king-addons'),
279 'page_list_item_sub_title' => esc_html__('Second Sub Title', 'king-addons'),
280 ],
281 [
282 'page_list_item_title' => esc_html__('New Page 3', 'king-addons'),
283 'page_list_item_sub_title' => esc_html__('Third Sub Title', 'king-addons'),
284 ],
285 ],
286 'title_field' => '{{ page_list_item_title }}',
287 ]
288 );
289
290 $this->end_controls_section();
291
292 Core::renderProFeaturesSection($this, '', Controls_Manager::RAW_HTML, 'page-list', [
293 'Underline Page Title on Hover Animations',
294 ]);
295
296 $this->start_controls_section(
297 'section_style_page_list_general',
298 [
299 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('List Items', 'king-addons'),
300 'tab' => Controls_Manager::TAB_STYLE,
301 'show_label' => false,
302 ]
303 );
304
305 $this->add_responsive_control(
306 'page_list_item_padding',
307 [
308 'label' => esc_html__('Padding', 'king-addons'),
309 'type' => Controls_Manager::DIMENSIONS,
310 'size_units' => ['px'],
311 'default' => [
312 'top' => '5',
313 'right' => 0,
314 'bottom' => '5',
315 'left' => 0,
316 'isLinked' => ''
317 ],
318 'selectors' => [
319 '{{WRAPPER}} .king-addons-pl-page-list-item' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
320 ]
321 ]
322 );
323
324 $this->add_responsive_control(
325 'page_list_item_margin',
326 [
327 'label' => esc_html__('Margin', 'king-addons'),
328 'type' => Controls_Manager::DIMENSIONS,
329 'size_units' => ['px'],
330 'default' => [
331 'top' => '5',
332 'right' => '8',
333 'bottom' => 0,
334 'left' => 0,
335 'unit' => 'px',
336 'isLinked' => false
337 ],
338 'selectors' => [
339 '{{WRAPPER}} .king-addons-pl-page-list-item' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
340 ],
341 ]
342 );
343
344 $this->add_control(
345 'page_list_item_border_type',
346 [
347 'label' => esc_html__('Border Type', 'king-addons'),
348 'type' => Controls_Manager::SELECT,
349 'options' => [
350 'none' => esc_html__('None', 'king-addons'),
351 'solid' => esc_html__('Solid', 'king-addons'),
352 'double' => esc_html__('Double', 'king-addons'),
353 'dotted' => esc_html__('Dotted', 'king-addons'),
354 'dashed' => esc_html__('Dashed', 'king-addons'),
355 'groove' => esc_html__('Groove', 'king-addons'),
356 ],
357 'default' => 'solid',
358 'selectors' => [
359 '{{WRAPPER}} .king-addons-pl-page-list-item' => 'border-style: {{VALUE}};',
360 ],
361 'separator' => 'before',
362 ]
363 );
364
365 $this->add_control(
366 'page_list_item_border_width',
367 [
368 'label' => esc_html__('Border Width', 'king-addons'),
369 'type' => Controls_Manager::DIMENSIONS,
370 'size_units' => ['px'],
371 'default' => [
372 'top' => 0,
373 'right' => 0,
374 'bottom' => 1,
375 'left' => 0,
376 ],
377 'selectors' => [
378 '{{WRAPPER}} .king-addons-pl-page-list-item' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
379 ],
380 'condition' => [
381 'page_list_item_border_type!' => 'none',
382 ],
383 ]
384 );
385
386 $this->add_control(
387 'page_list_item_radius',
388 [
389 'label' => esc_html__('Border Radius', 'king-addons'),
390 'type' => Controls_Manager::DIMENSIONS,
391 'size_units' => ['px', '%'],
392 'default' => [
393 'top' => 0,
394 'right' => 0,
395 'bottom' => 0,
396 'left' => 0,
397 ],
398 'selectors' => [
399 '{{WRAPPER}} .king-addons-pl-page-list-item' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
400 ]
401 ]
402 );
403
404 $this->end_controls_section();
405
406 $this->start_controls_section(
407 'section_style_page_list_title',
408 [
409 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Title', 'king-addons'),
410 'tab' => Controls_Manager::TAB_STYLE,
411 'show_label' => false,
412 ]
413 );
414
415 $this->start_controls_tabs('list_item_style');
416
417 $this->start_controls_tab(
418 'page_list_item_normal',
419 [
420 'label' => esc_html__('Normal', 'king-addons'),
421 ]
422 );
423
424 $this->add_control(
425 'page_list_item_title_color',
426 [
427 'label' => esc_html__('Title Color', 'king-addons'),
428 'type' => Controls_Manager::COLOR,
429 'default' => '#5B03FF',
430 'selectors' => [
431 '{{WRAPPER}} .king-addons-pl-page-list-item a' => 'color: {{VALUE}}',
432 ],
433 ]
434 );
435
436 $this->add_control(
437 'page_list_item_border_color',
438 [
439 'label' => esc_html__('Border Color', 'king-addons'),
440 'type' => Controls_Manager::COLOR,
441 'default' => '#E8E8E8',
442 'selectors' => [
443 '{{WRAPPER}} .king-addons-pl-page-list-item' => 'border-color: {{VALUE}}',
444 ]
445 ]
446 );
447
448 $this->add_control(
449 'page_list_item_transition_duration',
450 [
451 'label' => esc_html__('Transition Duration (ms)', 'king-addons'),
452 'type' => Controls_Manager::NUMBER,
453 'default' => 300,
454 'min' => 0,
455 'step' => 10,
456 'selectors' => [
457 '{{WRAPPER}} .king-addons-pl-page-list-item' => 'transition-duration: {{VALUE}}ms',
458 '{{WRAPPER}} .king-addons-pl-page-list-item a' => 'transition-duration: {{VALUE}}ms'
459 ]
460 ]
461 );
462
463 $this->add_group_control(
464 Group_Control_Typography::get_type(),
465 [
466 'name' => 'page_list_item_title_typo',
467 'selector' => '{{WRAPPER}} .king-addons-pl-page-list-item a',
468 'fields_options' => [
469 'typography' => [
470 'default' => 'custom',
471 ],
472 'font_size' => [
473 'default' => [
474 'size' => '14',
475 'unit' => 'px',
476 ],
477 ],
478 'line_height' => [
479 'default' => [
480 'size' => '0.8',
481 'unit' => 'em',
482 ]
483 ],
484 ]
485 ]
486 );
487
488 $this->end_controls_tab();
489
490 $this->start_controls_tab(
491 'page_list_item_hover',
492 [
493 'label' => esc_html__('Hover', 'king-addons'),
494 ]
495 );
496
497 $this->add_control(
498 'page_list_item_title_color_hr',
499 [
500 'label' => esc_html__('Title Color', 'king-addons'),
501 'type' => Controls_Manager::COLOR,
502 'default' => '#5B03FF',
503 'selectors' => [
504 '{{WRAPPER}} .king-addons-pl-page-list-item a:hover' => 'color: {{VALUE}}',
505 '{{WRAPPER}} li.king-addons-pl-page-list-item a:hover' => 'color: {{VALUE}}',
506 ],
507 ]
508 );
509
510 $this->add_control_title_pointer_color_hr();
511
512 $this->end_controls_tab();
513
514 $this->end_controls_tabs();
515
516 $this->add_control_title_pointer();
517
518 $this->add_control_title_pointer_animation();
519
520 $this->add_control_title_pointer_height();
521
522 $this->add_responsive_control(
523 'title_distance',
524 [
525 'label' => esc_html__('Bottom Distance', 'king-addons'),
526 'type' => Controls_Manager::SLIDER,
527 'size_units' => ['px'],
528 'range' => [
529 'px' => [
530 'min' => 0,
531 'max' => 50,
532 ],
533 ],
534 'default' => [
535 'unit' => 'px',
536 'size' => 8,
537 ],
538 'selectors' => [
539 '{{WRAPPER}} .king-addons-pl-page-list-item div a' => 'margin-bottom: {{SIZE}}{{UNIT}};',
540 ],
541 'separator' => 'before'
542 ]
543 );
544
545 $this->end_controls_section();
546
547
548 $this->start_controls_section(
549 'section_style_sub_title',
550 [
551 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Sub Title', 'king-addons'),
552 'tab' => Controls_Manager::TAB_STYLE
553 ]
554 );
555
556 $this->add_control(
557 'page_list_item_sub_title_color',
558 [
559 'label' => esc_html__('Sub Title Color', 'king-addons'),
560 'type' => Controls_Manager::COLOR,
561 'default' => '#B6B6B6',
562 'selectors' => [
563 '{{WRAPPER}} .king-addons-pl-page-list-item p' => 'color: {{VALUE}}',
564 ],
565 ]
566 );
567
568 $this->add_group_control(
569 Group_Control_Typography::get_type(),
570 [
571 'name' => 'page_list_item_sub_title_typo',
572 'selector' => '{{WRAPPER}} .king-addons-pl-page-list-item p',
573 'fields_options' => [
574 'typography' => [
575 'default' => 'custom',
576 ],
577 'font_size' => [
578 'default' => [
579 'size' => '12',
580 'unit' => 'px',
581 ],
582 ],
583 'line_height' => [
584 'default' => [
585 'size' => '0.8',
586 'unit' => 'em',
587 ]
588 ]
589 ]
590 ]
591 );
592
593 $this->end_controls_section();
594
595 $this->start_controls_section(
596 'section_style_badge',
597 [
598 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Badge', 'king-addons'),
599 'tab' => Controls_Manager::TAB_STYLE
600 ]
601 );
602
603 $this->add_control(
604 'badge_color',
605 [
606 'label' => esc_html__('Color', 'king-addons'),
607 'type' => Controls_Manager::COLOR,
608 'default' => '#FFFFFF',
609 'selectors' => [
610 '{{WRAPPER}} .king-addons-pl-page-list-item-badge' => 'color: {{VALUE}}',
611 ],
612 ]
613 );
614
615 $this->add_control(
616 'badge_bg_color',
617 [
618 'label' => esc_html__('Background Color', 'king-addons'),
619 'type' => Controls_Manager::COLOR,
620 'default' => '#5B03FF',
621 'selectors' => [
622 '{{WRAPPER}} .king-addons-pl-page-list-item-badge' => 'background-color: {{VALUE}}',
623 ],
624 ]
625 );
626
627 $this->add_control(
628 'badge_vertical_align',
629 [
630 'label' => esc_html__('Vertical Align', 'king-addons'),
631 'type' => Controls_Manager::CHOOSE,
632 'label_block' => false,
633 'default' => 'center',
634 'options' => [
635 'top' => [
636 'title' => esc_html__('Top', 'king-addons'),
637 'icon' => 'eicon-v-align-top',
638 ],
639 'center' => [
640 'title' => esc_html__('Middle', 'king-addons'),
641 'icon' => 'eicon-v-align-middle',
642 ],
643 'bottom' => [
644 'title' => esc_html__('Bottom', 'king-addons'),
645 'icon' => 'eicon-v-align-bottom',
646 ]
647 ],
648 'prefix_class' => 'king-addons-pl-pl-badge-',
649 'render_type' => 'template',
650 'separator' => 'before'
651 ]
652 );
653
654 $this->add_responsive_control(
655 'badge_size',
656 [
657 'label' => esc_html__('Size', 'king-addons'),
658 'type' => Controls_Manager::SLIDER,
659 'size_units' => ['px'],
660 'range' => [
661 'px' => [
662 'min' => 0,
663 'max' => 50,
664 ],
665 ],
666 'default' => [
667 'unit' => 'px',
668 'size' => 12,
669 ],
670 'selectors' => [
671 '{{WRAPPER}} .king-addons-pl-page-list-item-badge' => 'font-size: {{SIZE}}{{UNIT}};',
672 ],
673 'separator' => 'before'
674 ]
675 );
676
677 $this->add_responsive_control(
678 'badge_distance',
679 [
680 'label' => esc_html__('Space (px)', 'king-addons'),
681 'type' => Controls_Manager::SLIDER,
682 'size_units' => ['px'],
683 'range' => [
684 'px' => [
685 'min' => 0,
686 'max' => 50,
687 ],
688 ],
689 'default' => [
690 'unit' => 'px',
691 'size' => 5,
692 ],
693 'selectors' => [
694 '{{WRAPPER}} .king-addons-pl-page-list-item-badge' => 'margin-left: {{SIZE}}{{UNIT}};',
695 ],
696 ]
697 );
698
699 $this->add_control(
700 'badge_border_padding',
701 [
702 'label' => esc_html__('Padding', 'king-addons'),
703 'type' => Controls_Manager::DIMENSIONS,
704 'size_units' => ['px', '%'],
705 'default' => [
706 'top' => 2,
707 'right' => 5,
708 'bottom' => 2,
709 'left' => 5,
710 ],
711 'selectors' => [
712 '{{WRAPPER}} .king-addons-pl-page-list-item-badge' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
713 ]
714 ]
715 );
716
717 $this->add_control(
718 'badge_border_radius',
719 [
720 'label' => esc_html__('Border Radius', 'king-addons'),
721 'type' => Controls_Manager::DIMENSIONS,
722 'size_units' => ['px', '%'],
723 'default' => [
724 'top' => 0,
725 'right' => 0,
726 'bottom' => 0,
727 'left' => 0,
728 ],
729 'selectors' => [
730 '{{WRAPPER}} .king-addons-pl-page-list-item-badge' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
731 ]
732 ]
733 );
734
735 $this->end_controls_section();
736
737 $this->start_controls_section(
738 'section_style_icon',
739 [
740 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Icon', 'king-addons'),
741 'tab' => Controls_Manager::TAB_STYLE
742 ]
743 );
744
745 $this->add_control(
746 'icon_color',
747 [
748 'label' => esc_html__('Color', 'king-addons'),
749 'type' => Controls_Manager::COLOR,
750 'default' => '#5B03FF',
751 'selectors' => [
752 '{{WRAPPER}} .king-addons-pl-page-list i' => 'color: {{VALUE}}',
753 '{{WRAPPER}} .king-addons-pl-page-list svg' => 'fill: {{VALUE}}'
754 ],
755 ]
756 );
757
758 $this->add_control(
759 'icon_vertical_align',
760 [
761 'label' => esc_html__('Vertical Align', 'king-addons'),
762 'type' => Controls_Manager::CHOOSE,
763 'label_block' => false,
764 'default' => 'center',
765 'options' => [
766 'top' => [
767 'title' => esc_html__('Top', 'king-addons'),
768 'icon' => 'eicon-v-align-top',
769 ],
770 'center' => [
771 'title' => esc_html__('Middle', 'king-addons'),
772 'icon' => 'eicon-v-align-middle',
773 ],
774 'bottom' => [
775 'title' => esc_html__('Bottom', 'king-addons'),
776 'icon' => 'eicon-v-align-bottom',
777 ]
778 ],
779 'prefix_class' => 'king-addons-pl-pl-icon-',
780 'render_type' => 'template',
781 'separator' => 'before'
782 ]
783 );
784
785 $this->add_responsive_control(
786 'icon_size',
787 [
788 'label' => esc_html__('Size', 'king-addons'),
789 'type' => Controls_Manager::SLIDER,
790 'size_units' => ['px'],
791 'range' => [
792 'px' => [
793 'min' => 0,
794 'max' => 50,
795 ],
796 ],
797 'default' => [
798 'unit' => 'px',
799 'size' => 15,
800 ],
801 'selectors' => [
802 '{{WRAPPER}} .king-addons-pl-page-list i' => 'font-size: {{SIZE}}{{UNIT}}; max-height: {{SIZE}}{{UNIT}};',
803 '{{WRAPPER}} .king-addons-pl-page-list svg' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};',
804 '{{WRAPPER}} .king-addons-pl-page-list i:before' => 'max-height: {{SIZE}}{{UNIT}};',
805 '{{WRAPPER}} .king-addons-pl-page-list-item-icon' => 'max-height: {{SIZE}}{{UNIT}};',
806 ],
807 'separator' => 'before'
808 ]
809 );
810
811 $this->add_responsive_control(
812 'icon_distance',
813 [
814 'label' => esc_html__('Space (px)', 'king-addons'),
815 'type' => Controls_Manager::SLIDER,
816 'size_units' => ['px'],
817 'range' => [
818 'px' => [
819 'min' => 0,
820 'max' => 50,
821 ],
822 ],
823 'default' => [
824 'unit' => 'px',
825 'size' => 5,
826 ],
827 'selectors' => [
828 '{{WRAPPER}} .king-addons-pl-page-list .king-addons-pl-page-list-item-icon' => 'margin-right: {{SIZE}}{{UNIT}};',
829 ],
830 ]
831 );
832
833
834
835
836 $this->end_controls_section();
837
838
839 }
840
841 protected function render()
842 {
843 $settings = $this->get_settings_for_display();
844
845 $class = ' king-addons-pl-pointer-' .
846 (!king_addons_freemius()->can_use_premium_code__premium_only() ? 'none' : $settings['title_pointer']) .
847 ' king-addons-pl-pointer-line-anim king-addons-pl-pointer-anim-' .
848 (!king_addons_freemius()->can_use_premium_code__premium_only() ? 'fade' : $settings['title_pointer_animation']);
849
850 $pointer_item_class = isset($settings['title_pointer']) && 'none' !== $settings['title_pointer']
851 ? 'king-addons-pl-pointer-item'
852 : 'king-addons-pl-no-pointer';
853
854 echo '<div class="king-addons-pl-page-list-wrap"><ul class="king-addons-pl-page-list">';
855
856 foreach ($settings['page_list'] as $key => $item) {
857 $target = $item['open_in_new_page'] === 'yes' ? '_blank' : '_self';
858 $badge_anim_class = $item['show_page_list_item_badge_animation'] === 'yes' ? ' king-addons-pl-pl-badge-anim-yes' : '';
859 $this->add_render_attribute('page_list_item' . $key, 'class', 'king-addons-pl-page-list-item elementor-repeater-item-' . $item['_id'] . $class . $badge_anim_class);
860
861 $icon = '';
862 if (!empty($item['page_list_item_icon']['value'])) {
863 ob_start();
864 Icons_Manager::render_icon($item['page_list_item_icon'], ['aria-hidden' => 'true']);
865 $icon = ob_get_clean();
866 }
867
868 $link_content = !empty($icon) ? '<span class="king-addons-pl-page-list-item-icon">' . $icon . '</span>' : '';
869 $link_content .= '<div><a class="' . $pointer_item_class . '" href="' .
870 ($item['page_list_item_type'] === 'dynamic' ? get_the_permalink($item['query_page_selection']) : '#') .
871 '" target="' . $target . '">' .
872 ($item['page_list_item_type'] === 'dynamic' ? get_the_title($item['query_page_selection']) : $item['page_list_item_title']) .
873 '</a>';
874 if (!empty($item['page_list_item_sub_title'])) {
875 $link_content .= '<p>' . $item['page_list_item_sub_title'] . '</p>';
876 }
877 $link_content .= '</div>';
878
879 echo '<li ' . $this->get_render_attribute_string('page_list_item' . $key) . '>';
880 echo $link_content;
881 if ($item['show_page_list_item_badge'] === 'yes') {
882 echo '<span class="king-addons-pl-page-list-item-badge">' . $item['page_list_item_badge_text'] . '</span>';
883 }
884 echo '</li>';
885 }
886
887 echo '</ul></div>';
888 }
889 }