PluginProbe
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder / 51.1.49
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder v51.1.49
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 / Media_Grid / Media_Grid.php

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

7,526 lines 285.2 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\Embed;
6 use Elementor\Icons_Manager;
7 use Elementor\Widget_Base;
8 use Elementor\Controls_Manager;
9 use Elementor\Group_Control_Box_Shadow;
10 use Elementor\Group_Control_Text_Shadow;
11 use Elementor\Group_Control_Typography;
12 use Elementor\Repeater;
13 use Elementor\Group_Control_Image_Size;
14 use WP_Query;
15
16 if (!defined('ABSPATH')) {
17 exit;
18 }
19
20 class Media_Grid extends Widget_Base
21 {
22
23 public function get_name()
24 {
25 return 'king-addons-media-grid';
26 }
27
28 public function get_title()
29 {
30 return esc_html__('Advanced Image Gallery', 'king-addons');
31 }
32
33 public function get_icon()
34 {
35 return 'king-addons-icon king-addons-media-grid';
36 }
37
38 public function get_categories()
39 {
40 return ['king-addons'];
41 }
42
43 public function get_keywords()
44 {
45 return ['king addons', 'king', 'addons', 'kingaddons', 'king-addons', 'carousel', 'slider', 'img', 'gr', 'filter', 'loop',
46 'image gallery', 'image slider', 'image carousel', 'image grid', 'media grid', 'slick', 'tile', 'tiles', 'gallery',
47 'masonry grid', 'isotope', 'masonry', 'grid', 'filterable grid', 'media', 'image', 'filterable'];
48 }
49
50 public function get_script_depends()
51 {
52 return [
53 KING_ADDONS_ASSETS_UNIQUE_KEY . '-grid-media',
54 KING_ADDONS_ASSETS_UNIQUE_KEY . '-isotope-kng',
55 KING_ADDONS_ASSETS_UNIQUE_KEY . '-slick-slick',
56 KING_ADDONS_ASSETS_UNIQUE_KEY . '-lightgallery-lightgallery'
57 ];
58 }
59
60 public function get_style_depends()
61 {
62 return [
63 KING_ADDONS_ASSETS_UNIQUE_KEY . '-grid-grid',
64 KING_ADDONS_ASSETS_UNIQUE_KEY . '-slick-helper',
65 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-button',
66 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-general',
67 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-timing',
68 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-loading',
69 KING_ADDONS_ASSETS_UNIQUE_KEY . '-lightgallery-lightgallery',
70 KING_ADDONS_ASSETS_UNIQUE_KEY . '-general-general',
71 ];
72 }
73
74 public function get_custom_help_url()
75 {
76 return 'mailto:bug@kingaddons.com?subject=Bug Report - King Addons&body=Please describe the issue';
77 }
78
79 public function has_widget_inner_wrapper(): bool
80 {
81 return true;
82 }
83
84 public function add_control_query_randomize()
85 {
86 $this->add_control(
87 'query_randomize',
88 [
89 'label' => sprintf(__('Randomize Query %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
90 'type' => Controls_Manager::SWITCHER,
91 'classes' => 'king-addons-pro-control no-distance'
92 ]
93 );
94 }
95
96 public function add_control_order_posts()
97 {
98 $this->add_control(
99 'order_posts',
100 [
101 'label' => esc_html__('Order By', 'king-addons'),
102 'type' => Controls_Manager::SELECT,
103 'default' => 'date',
104 'label_block' => false,
105 'options' => [
106 'date' => esc_html__('Date', 'king-addons'),
107 'pro-tl' => esc_html__('Title (Pro)', 'king-addons'),
108 'pro-mf' => esc_html__('Last Modified (Pro)', 'king-addons'),
109 'pro-d' => esc_html__('Post ID (Pro)', 'king-addons'),
110 'pro-ar' => esc_html__('Post Author (Pro)', 'king-addons'),
111 'pro-cc' => esc_html__('Comment Count (Pro)', 'king-addons')
112 ],
113 'condition' => [
114 'query_randomize!' => 'rand',
115 'query_selection!' => 'manual'
116 ]
117 ]
118 );
119 }
120
121 public function add_control_layout_columns()
122 {
123 $this->add_responsive_control(
124 'layout_columns',
125 [
126 'label' => esc_html__('Columns', 'king-addons'),
127 'type' => Controls_Manager::SELECT,
128 'default' => 4,
129 'widescreen_default' => 4,
130 'laptop_default' => 4,
131 'tablet_extra_default' => 4,
132 'tablet_default' => 3,
133 'mobile_extra_default' => 3,
134 'mobile_default' => 1,
135 'options' => [
136 1 => esc_html__('One', 'king-addons'),
137 2 => esc_html__('Two', 'king-addons'),
138 3 => esc_html__('Three', 'king-addons'),
139 4 => esc_html__('Four', 'king-addons'),
140 'pro-5' => esc_html__('Five (Pro)', 'king-addons'),
141 'pro-6' => esc_html__('Six (Pro)', 'king-addons'),
142 'pro-7' => esc_html__('Seven (Pro)', 'king-addons'),
143 'pro-8' => esc_html__('Eight (Pro)', 'king-addons'),
144 ],
145 'prefix_class' => 'king-addons-grid-columns-%s',
146 'separator' => 'before',
147 'render_type' => 'template',
148 'condition' => [
149 'layout_select' => ['fitRows', 'masonry', 'list'],
150 ]
151 ]
152 );
153 }
154
155 public function add_control_layout_animation()
156 {
157 $this->add_control(
158 'layout_animation',
159 [
160 'label' => esc_html__('Select Animation', 'king-addons'),
161 'type' => Controls_Manager::SELECT,
162 'default' => 'default',
163 'options' => [
164 'default' => esc_html__('Default', 'king-addons'),
165 'zoom' => esc_html__('Zoom', 'king-addons'),
166 'pro-fd' => esc_html__('Fade (Pro)', 'king-addons'),
167 'pro-fs' => esc_html__('Fade + SlideUp (Pro)', 'king-addons'),
168 ],
169 'selectors_dictionary' => [
170 'default' => '',
171 'zoom' => 'opacity: 0; transform: scale(0.01)',
172 ],
173 'selectors' => [
174 '{{WRAPPER}} .king-addons-grid-item-inner' => '{{VALUE}}',
175 ],
176 'render_type' => 'template',
177 'separator' => 'before',
178 'condition' => [
179 'layout_select!' => 'slider',
180 ]
181 ]
182 );
183 }
184
185 public function add_control_layout_slider_amount()
186 {
187 $this->add_responsive_control(
188 'layout_slider_amount',
189 [
190 'label' => esc_html__('Columns (Carousel)', 'king-addons'),
191 'type' => Controls_Manager::SELECT,
192 'label_block' => false,
193 'default' => 2,
194 'widescreen_default' => 2,
195 'laptop_default' => 2,
196 'tablet_extra_default' => 2,
197 'tablet_default' => 2,
198 'mobile_extra_default' => 2,
199 'mobile_default' => 1,
200 'options' => [
201 1 => esc_html__('One', 'king-addons'),
202 2 => esc_html__('Two', 'king-addons'),
203 'pro-3' => esc_html__('Three (Pro)', 'king-addons'),
204 'pro-4' => esc_html__('Four (Pro)', 'king-addons'),
205 'pro-5' => esc_html__('Five (Pro)', 'king-addons'),
206 'pro-6' => esc_html__('Six (Pro)', 'king-addons'),
207 ],
208 'prefix_class' => 'king-addons-grid-slider-columns-%s',
209 'frontend_available' => true,
210 'render_type' => 'template',
211 'separator' => 'before',
212 'condition' => [
213 'layout_select' => 'slider',
214 ],
215 ]
216 );
217 }
218
219 public function add_control_layout_slider_rows()
220 {
221 /** @noinspection PhpDuplicateArrayKeysInspection */
222 $this->add_control(
223 'layout_slider_rows',
224 [
225 'label' => esc_html__('Rows (Carousel)', 'king-addons'),
226 'type' => Controls_Manager::SELECT,
227 'label_block' => false,
228 'default' => 1,
229 'classes' => 'king-addons-pro-control no-distance',
230 'options' => [
231 1 => esc_html__('One', 'king-addons'),
232 1 => esc_html__('Two (Pro)', 'king-addons'),
233 1 => esc_html__('Three (Pro)', 'king-addons'),
234 ],
235 'frontend_available' => true,
236 'render_type' => 'template',
237 'separator' => 'before',
238 'condition' => [
239 'layout_select' => 'slider',
240 ],
241 ]
242 );
243 }
244
245 public function add_control_layout_slider_nav_hover()
246 {
247 $this->add_control(
248 'layout_slider_nav_hover',
249 [
250 'label' => sprintf(__('Show on Hover %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
251 'type' => Controls_Manager::SWITCHER,
252 'classes' => 'king-addons-pro-control no-distance'
253 ]
254 );
255 }
256
257 public function add_control_layout_slider_dots_position()
258 {
259 $this->add_control(
260 'layout_slider_dots_position',
261 [
262 'label' => esc_html__('Pagination Layout', 'king-addons'),
263 'type' => Controls_Manager::SELECT,
264 'default' => 'horizontal',
265 'options' => [
266 'horizontal' => esc_html__('Horizontal', 'king-addons'),
267 'pro-vr' => esc_html__('Vertical (Pro)', 'king-addons'),
268 ],
269 'prefix_class' => 'king-addons-grid-slider-dots-',
270 'render_type' => 'template',
271 'condition' => [
272 'layout_slider_dots' => 'yes',
273 'layout_select' => 'slider',
274 ],
275 ]
276 );
277 }
278
279 public function add_controls_group_layout_slider_autoplay()
280 {
281 $this->add_control(
282 'layout_slider_autoplay',
283 [
284 'label' => sprintf(__('Autoplay %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
285 'type' => Controls_Manager::SWITCHER,
286 'classes' => 'king-addons-pro-control no-distance'
287 ]
288 );
289 }
290
291 public function add_option_element_select()
292 {
293 return [
294 'title' => esc_html__('Title', 'king-addons'),
295 'caption' => esc_html__('Caption', 'king-addons'),
296 'date' => esc_html__('Date', 'king-addons'),
297 'time' => esc_html__('Time', 'king-addons'),
298 'author' => esc_html__('Author', 'king-addons'),
299 'lightbox' => esc_html__('Lightbox', 'king-addons'),
300 'separator' => esc_html__('Separator', 'king-addons'),
301 'pro-lk' => esc_html__('Likes (Pro)', 'king-addons'),
302 'pro-shr' => esc_html__('Sharing (Pro)', 'king-addons'),
303 ];
304 }
305
306 public function add_repeater_args_element_like_icon()
307 {
308 return [
309 'type' => Controls_Manager::HIDDEN,
310 'default' => ''
311 ];
312 }
313
314 public function add_repeater_args_element_like_text()
315 {
316 return [
317 'type' => Controls_Manager::HIDDEN,
318 'default' => ''
319 ];
320 }
321
322 public function add_repeater_args_element_like_show_count()
323 {
324 return [
325 'type' => Controls_Manager::HIDDEN,
326 'default' => ''
327 ];
328 }
329
330 public function add_repeater_args_element_sharing_icon_1()
331 {
332 return [
333 'type' => Controls_Manager::HIDDEN,
334 'default' => ''
335 ];
336 }
337
338 public function add_repeater_args_element_sharing_icon_2()
339 {
340 return [
341 'type' => Controls_Manager::HIDDEN,
342 'default' => ''
343 ];
344 }
345
346 public function add_repeater_args_element_sharing_icon_3()
347 {
348 return [
349 'type' => Controls_Manager::HIDDEN,
350 'default' => ''
351 ];
352 }
353
354 public function add_repeater_args_element_sharing_icon_4()
355 {
356 return [
357 'type' => Controls_Manager::HIDDEN,
358 'default' => ''
359 ];
360 }
361
362 public function add_repeater_args_element_sharing_icon_5()
363 {
364 return [
365 'type' => Controls_Manager::HIDDEN,
366 'default' => ''
367 ];
368 }
369
370 public function add_repeater_args_element_sharing_icon_6()
371 {
372 return [
373 'type' => Controls_Manager::HIDDEN,
374 'default' => ''
375 ];
376 }
377
378 public function add_repeater_args_element_sharing_trigger()
379 {
380 return [
381 'type' => Controls_Manager::HIDDEN,
382 'default' => ''
383 ];
384 }
385
386 public function add_repeater_args_element_sharing_trigger_icon()
387 {
388 return [
389 'type' => Controls_Manager::HIDDEN,
390 'default' => ''
391 ];
392 }
393
394 public function add_repeater_args_element_sharing_trigger_action()
395 {
396 return [
397 'type' => Controls_Manager::HIDDEN,
398 'default' => ''
399 ];
400 }
401
402 public function add_repeater_args_element_sharing_trigger_direction()
403 {
404 return [
405 'type' => Controls_Manager::HIDDEN,
406 'default' => ''
407 ];
408 }
409
410 public function add_repeater_args_element_sharing_tooltip()
411 {
412 return [
413 'type' => Controls_Manager::HIDDEN,
414 'default' => ''
415 ];
416 }
417
418 public function add_control_overlay_animation_divider()
419 {
420 }
421
422 public function add_control_overlay_image()
423 {
424 }
425
426 public function add_control_overlay_image_width()
427 {
428 }
429
430 public function add_control_image_effects()
431 {
432 $this->add_control(
433 'image_effects',
434 [
435 'label' => esc_html__('Select Effect', 'king-addons'),
436 'type' => Controls_Manager::SELECT,
437 'options' => [
438 'none' => esc_html__('None', 'king-addons'),
439 'pro-zi' => esc_html__('Zoom In (Pro)', 'king-addons'),
440 'pro-zo' => esc_html__('Zoom Out (Pro)', 'king-addons'),
441 'grayscale-in' => esc_html__('Grayscale In', 'king-addons'),
442 'pro-go' => esc_html__('Grayscale Out (Pro)', 'king-addons'),
443 'blur-in' => esc_html__('Blur In', 'king-addons'),
444 'pro-bo' => esc_html__('Blur Out (Pro)', 'king-addons'),
445 'slide' => esc_html__('Slide', 'king-addons'),
446 ],
447 'default' => 'none',
448 ]
449 );
450 }
451
452 public function add_control_lightbox_popup_thumbnails()
453 {
454 $this->add_control(
455 'lightbox_popup_thumbnails',
456 [
457 'label' => sprintf(__('Show Thumbnails %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
458 'type' => Controls_Manager::SWITCHER,
459 'classes' => 'king-addons-pro-control no-distance'
460 ]
461 );
462 }
463
464 public function add_control_lightbox_popup_thumbnails_default()
465 {
466 $this->add_control(
467 'lightbox_popup_thumbnails_default',
468 [
469 'label' => sprintf(__('Show Thumbnails by Default %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
470 'type' => Controls_Manager::SWITCHER,
471 'classes' => 'king-addons-pro-control no-distance'
472 ]
473 );
474 }
475
476 public function add_control_lightbox_popup_sharing()
477 {
478 $this->add_control(
479 'lightbox_popup_sharing',
480 [
481 'label' => sprintf(__('Show Sharing Button %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
482 'type' => Controls_Manager::SWITCHER,
483 'classes' => 'king-addons-pro-control no-distance'
484 ]
485 );
486 }
487
488 public function add_control_filters_deeplinking()
489 {
490 $this->add_control(
491 'filters_deeplinking',
492 [
493 'label' => sprintf(__('Enable Deep Linking %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
494 'type' => Controls_Manager::SWITCHER,
495 'classes' => 'king-addons-pro-control no-distance'
496 ]
497 );
498 }
499
500 public function add_control_filters_animation()
501 {
502 $this->add_control(
503 'filters_animation',
504 [
505 'label' => esc_html__('Select Animation', 'king-addons'),
506 'type' => Controls_Manager::SELECT,
507 'default' => 'default',
508 'options' => [
509 'default' => esc_html__('Default', 'king-addons'),
510 'zoom' => esc_html__('Zoom', 'king-addons'),
511 'pro-fd' => esc_html__('Fade (Pro)', 'king-addons'),
512 'pro-fs' => esc_html__('Fade + SlideUp (Pro)', 'king-addons'),
513 ],
514 'separator' => 'before',
515 ]
516 );
517 }
518
519 public function add_control_filters_icon()
520 {
521 }
522
523 public function add_control_filters_icon_align()
524 {
525 }
526
527 public function add_control_filters_count()
528 {
529 $this->add_control(
530 'filters_count',
531 [
532 'label' => sprintf(__('Show Count %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
533 'type' => Controls_Manager::SWITCHER,
534 'classes' => 'king-addons-pro-control no-distance'
535 ]
536 );
537 }
538
539 public function add_control_filters_count_superscript()
540 {
541 }
542
543 public function add_control_filters_count_brackets()
544 {
545 }
546
547 public function add_control_filters_default_filter()
548 {
549 }
550
551 public function add_control_pagination_type()
552 {
553 $this->add_control(
554 'pagination_type',
555 [
556 'label' => esc_html__('Select Type', 'king-addons'),
557 'type' => Controls_Manager::SELECT,
558 'default' => 'load-more',
559 'options' => [
560 'default' => esc_html__('Default', 'king-addons'),
561 'numbered' => esc_html__('Numbered', 'king-addons'),
562 'load-more' => esc_html__('Load More Button', 'king-addons'),
563 'pro-is' => esc_html__('Infinite Scrolling (Pro)', 'king-addons'),
564 ],
565 'separator' => 'after'
566 ]
567 );
568 }
569
570 public function add_section_style_likes()
571 {
572 }
573
574 public function add_section_style_sharing()
575 {
576 }
577
578 public function add_control_grid_item_even_bg_color()
579 {
580 }
581
582 public function add_control_grid_item_even_border_color()
583 {
584 }
585
586 public function add_control_overlay_color()
587 {
588 $this->add_control(
589 'overlay_color',
590 [
591 'label' => esc_html__('Background Color', 'king-addons'),
592 'type' => Controls_Manager::COLOR,
593 'default' => 'rgba(0, 0, 0, 0.25)',
594 'selectors' => [
595 '{{WRAPPER}} .king-addons-grid-media-hover-bg' => 'background-color: {{VALUE}}',
596 ],
597 ]
598 );
599 }
600
601 public function add_control_overlay_blend_mode()
602 {
603 }
604
605 public function add_control_overlay_border_color()
606 {
607 }
608
609 public function add_control_overlay_border_type()
610 {
611 }
612
613 public function add_control_overlay_border_width()
614 {
615 }
616
617 public function add_control_title_pointer_color_hr()
618 {
619 }
620
621 public function add_control_title_pointer()
622 {
623 }
624
625 public function add_control_title_pointer_height()
626 {
627 }
628
629 public function add_control_title_pointer_animation()
630 {
631 }
632
633 public function add_control_tax1_pointer_color_hr()
634 {
635 }
636
637 public function add_control_tax1_pointer()
638 {
639 }
640
641 public function add_control_tax1_pointer_height()
642 {
643 }
644
645 public function add_control_tax1_pointer_animation()
646 {
647 }
648
649 public function add_control_tax2_pointer_color_hr()
650 {
651 }
652
653 public function add_control_tax2_pointer()
654 {
655 }
656
657 public function add_control_tax2_pointer_height()
658 {
659 }
660
661 public function add_control_tax2_pointer_animation()
662 {
663 }
664
665 public function add_control_filters_pointer_color_hr()
666 {
667 }
668
669 public function add_control_filters_pointer()
670 {
671 }
672
673 public function add_control_filters_pointer_height()
674 {
675 }
676
677 public function add_control_filters_pointer_animation()
678 {
679 }
680
681 public function add_control_stack_grid_slider_nav_position()
682 {
683 }
684
685 public function add_control_grid_slider_dots_hr()
686 {
687 }
688
689 protected function register_controls()
690 {
691
692
693 $this->start_controls_section(
694 'section_grid_query',
695 [
696 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Query', 'king-addons'),
697 'tab' => Controls_Manager::TAB_CONTENT,
698 ]
699 );
700
701
702 $post_taxonomies = get_object_taxonomies('attachment', 'objects');
703 $post_taxonomy_names = [];
704
705 $this->add_control(
706 'query_selection',
707 [
708 'label' => esc_html__('Selection', 'king-addons'),
709 'type' => Controls_Manager::SELECT,
710 'default' => 'dynamic',
711 'options' => [
712 'dynamic' => esc_html__('Auto', 'king-addons'),
713 'manual' => esc_html__('Manual', 'king-addons'),
714 ],
715 ]
716 );
717
718 $this->add_control_order_posts();
719
720 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'grid', 'order_posts', ['pro-tl', 'pro-mf', 'pro-d', 'pro-ar', 'pro-cc']);
721
722 $this->add_control(
723 'order_direction',
724 [
725 'label' => esc_html__('Order', 'king-addons'),
726 'type' => Controls_Manager::SELECT,
727 'default' => 'DESC',
728 'label_block' => false,
729 'options' => [
730 'ASC' => esc_html__('Ascending', 'king-addons'),
731 'DESC' => esc_html__('Descending', 'king-addons'),
732 ],
733 'condition' => [
734 'query_randomize!' => 'rand',
735 'query_selection!' => 'manual'
736 ]
737 ]
738 );
739
740 $this->add_control(
741 'query_author',
742 [
743 'label' => esc_html__('Authors', 'king-addons'),
744 'type' => 'king-addons-ajax-select2',
745 'options' => 'ajaxselect2/getUsers',
746 'multiple' => true,
747 'label_block' => true,
748 'separator' => 'before',
749 'condition' => [
750 'query_selection' => 'dynamic',
751 ],
752 ]
753 );
754
755
756 foreach ($post_taxonomies as $slug => $tax) {
757 global $wp_taxonomies;
758 $post_type = '';
759
760 if (isset($wp_taxonomies[$slug]->object_type[0])) {
761 $post_type = $wp_taxonomies[$slug]->object_type[0];
762 }
763
764 $post_taxonomy_names[$slug] = $tax->label;
765
766 $this->add_control(
767 'query_taxonomy_' . $slug,
768 [
769 'label' => $tax,
770 'type' => 'king-addons-ajax-select2',
771 'options' => 'ajaxselect2/getTaxonomies',
772 'query_slug' => $slug,
773 'multiple' => true,
774 'label_block' => true,
775 'condition' => [
776 'query_source' => $post_type,
777 'query_selection' => 'dynamic',
778 ],
779 ]
780 );
781 }
782
783
784 $this->add_control(
785 'query_exclude_attachment',
786 [
787 'label' => esc_html__('Exclude Images', 'king-addons'),
788 'type' => 'king-addons-ajax-select2',
789 'options' => 'ajaxselect2/getPostsByPostType',
790 'query_slug' => 'attachment',
791 'multiple' => true,
792 'label_block' => true,
793 'condition' => [
794 'query_selection' => 'dynamic',
795 ],
796 ]
797 );
798
799
800 $this->add_control(
801 'query_manual_attachment',
802 [
803 'label' => esc_html__('Add Images', 'king-addons'),
804 'type' => Controls_Manager::GALLERY,
805 'separator' => 'before',
806 'dynamic' => [
807 'active' => true,
808 ],
809 'condition' => [
810 'query_selection' => 'manual',
811 ],
812 ]
813 );
814
815 $this->add_control(
816 'query_posts_per_page',
817 [
818 'label' => esc_html__('Items Per Page', 'king-addons'),
819 'type' => Controls_Manager::NUMBER,
820 'default' => 10,
821 'min' => 0,
822 ]
823 );
824
825 $this->add_control(
826 'query_offset',
827 [
828 'label' => esc_html__('Offset', 'king-addons'),
829 'type' => Controls_Manager::NUMBER,
830 'default' => 0,
831 'min' => 0,
832 'condition' => [
833 'query_selection' => 'dynamic',
834 ]
835 ]
836 );
837
838 $this->add_control(
839 'query_not_found_text',
840 [
841 'label' => esc_html__('Not Found Text', 'king-addons'),
842 'type' => Controls_Manager::TEXT,
843 'dynamic' => [
844 'active' => true,
845 ],
846 'default' => 'No Images Found!',
847 'condition' => [
848 'query_selection' => 'dynamic',
849 ]
850 ]
851 );
852
853 $this->add_control_query_randomize();
854
855
856 $this->end_controls_section();
857
858
859 $this->start_controls_section(
860 'section_grid_layout',
861 [
862 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Layout', 'king-addons'),
863 'tab' => Controls_Manager::TAB_CONTENT,
864 ]
865 );
866
867 $this->add_control(
868 'layout_select',
869 [
870 'label' => esc_html__('Select Layout', 'king-addons'),
871 'type' => Controls_Manager::SELECT,
872 'default' => 'masonry',
873 'options' => [
874 'fitRows' => esc_html__('FitRows - Equal Height', 'king-addons'),
875 'masonry' => esc_html__('Masonry - Unlimited Height', 'king-addons'),
876 'slider' => esc_html__('Slider / Carousel', 'king-addons'),
877 ],
878 'render_type' => 'template',
879 'label_block' => true
880 ]
881 );
882
883 $this->add_group_control(
884 Group_Control_Image_Size::get_type(),
885 [
886 'name' => 'layout_image_crop',
887 'default' => 'full',
888 ]
889 );
890
891 $this->add_control_layout_columns();
892
893 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
894 $this->add_control(
895 'grid_columns_pro_notice',
896 [
897 'type' => Controls_Manager::RAW_HTML,
898 'raw' => 'Grid Columns option is fully supported<br> in the <strong><a href="https://kingaddons.com/pricing/?utm_source=kng-module-media-grid-settings-upgrade-pro&utm_medium=plugin&utm_campaign=kng" target="_blank">Pro version</a></strong>',
899
900 'content_classes' => 'king-addons-pro-notice',
901 ]
902 );
903 }
904
905 $this->add_responsive_control(
906 'layout_gutter_hr',
907 [
908 'label' => esc_html__('Horizontal Gutter', 'king-addons'),
909 'type' => Controls_Manager::SLIDER,
910 'default' => [
911 'size' => 10,
912 ],
913 'widescreen_default' => [
914 'size' => 10,
915 ],
916 'laptop_default' => [
917 'size' => 10,
918 ],
919 'tablet_extra_default' => [
920 'size' => 10,
921 ],
922 'tablet_default' => [
923 'size' => 10,
924 ],
925 'mobile_extra_default' => [
926 'size' => 10,
927 ],
928 'mobile_default' => [
929 'size' => 10,
930 ],
931 'range' => [
932 'px' => [
933 'min' => 0,
934 'max' => 150,
935 ],
936 ],
937 'condition' => [
938 'layout_select' => ['fitRows', 'masonry', 'list'],
939 ],
940 'separator' => 'before'
941 ]
942 );
943
944 $this->add_responsive_control(
945 'layout_gutter_vr',
946 [
947 'label' => esc_html__('Vertical Gutter', 'king-addons'),
948 'type' => Controls_Manager::SLIDER,
949 'default' => [
950 'size' => 10,
951 ],
952 'widescreen_default' => [
953 'size' => 10,
954 ],
955 'laptop_default' => [
956 'size' => 10,
957 ],
958 'tablet_extra_default' => [
959 'size' => 10,
960 ],
961 'tablet_default' => [
962 'size' => 10,
963 ],
964 'mobile_extra_default' => [
965 'size' => 10,
966 ],
967 'mobile_default' => [
968 'size' => 10,
969 ],
970 'range' => [
971 'px' => [
972 'min' => 0,
973 'max' => 150,
974 ],
975 ],
976 'condition' => [
977 'layout_select' => ['fitRows', 'masonry', 'list'],
978 ],
979 ]
980 );
981
982 $this->add_responsive_control(
983 'layout_filters',
984 [
985 'label' => esc_html__('Show Filters', 'king-addons'),
986 'type' => Controls_Manager::SWITCHER,
987 'default' => '',
988 'selectors_dictionary' => [
989 '' => 'none',
990 'yes' => 'block'
991 ],
992 'selectors' => [
993 '{{WRAPPER}} .king-addons-grid-filters' => 'display:{{VALUE}};',
994 ],
995 'render_type' => 'template',
996 'separator' => 'before',
997 'condition' => [
998 'layout_select!' => 'slider',
999 ]
1000 ]
1001 );
1002
1003 $this->add_control(
1004 'layout_pagination',
1005 [
1006 'label' => esc_html__('Show Pagination', 'king-addons'),
1007 'description' => esc_html__('Please note that Pagination doesn\'t work in editor', 'king-addons'),
1008 'type' => Controls_Manager::SWITCHER,
1009 'default' => 'yes',
1010 'return_value' => 'yes',
1011 'render_type' => 'template',
1012 'condition' => [
1013 'layout_select!' => 'slider',
1014 ]
1015 ]
1016 );
1017
1018 $this->add_control_layout_animation();
1019
1020
1021 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'media-grid', 'layout_animation', ['pro-fd', 'pro-fs']);
1022
1023 $this->add_control(
1024 'layout_animation_duration',
1025 [
1026 'label' => esc_html__('Animation Duration', 'king-addons'),
1027 'type' => Controls_Manager::NUMBER,
1028 'default' => 0.3,
1029 'min' => 0,
1030 'max' => 5,
1031 'step' => 0.1,
1032 'condition' => [
1033 'layout_animation!' => 'default',
1034 'layout_select!' => 'slider',
1035 ],
1036 ]
1037 );
1038
1039 $this->add_control(
1040 'layout_animation_delay',
1041 [
1042 'label' => esc_html__('Animation Delay', 'king-addons'),
1043 'type' => Controls_Manager::NUMBER,
1044 'default' => 0.1,
1045 'min' => 0,
1046 'max' => 5,
1047 'step' => 0.05,
1048 'condition' => [
1049 'layout_animation!' => 'default',
1050 'layout_select!' => 'slider',
1051 ],
1052 ]
1053 );
1054
1055 $this->add_control_layout_slider_amount();
1056
1057 $this->add_control_layout_slider_rows();
1058
1059 $this->add_control(
1060 'layout_slides_to_scroll',
1061 [
1062 'label' => esc_html__('Slides to Scroll', 'king-addons'),
1063 'type' => Controls_Manager::NUMBER,
1064 'min' => 1,
1065 'max' => 10,
1066 'default' => 2,
1067 'frontend_available' => true,
1068 'separator' => 'before',
1069 'condition' => [
1070 'layout_select' => 'slider',
1071 ],
1072 ]
1073 );
1074
1075 $this->add_responsive_control(
1076 'layout_slider_gutter',
1077 [
1078 'type' => Controls_Manager::SLIDER,
1079 'label' => esc_html__('Gutter', 'king-addons'),
1080 'size_units' => ['px'],
1081 'range' => [
1082 'px' => [
1083 'min' => 0,
1084 'max' => 50,
1085 ]
1086 ],
1087 'default' => [
1088 'unit' => 'px',
1089 'size' => 0,
1090 ],
1091 'selectors' => [
1092 '{{WRAPPER}} .king-addons-grid .slick-slide' => 'margin-left: {{SIZE}}{{UNIT}};',
1093 '{{WRAPPER}}.king-addons-grid-slider-rows-2 .king-addons-grid .king-addons-grid-item' => 'margin-bottom: {{SIZE}}{{UNIT}};',
1094 '{{WRAPPER}}.king-addons-grid-slider-rows-3 .king-addons-grid .king-addons-grid-item' => 'margin-bottom: {{SIZE}}{{UNIT}};',
1095 '{{WRAPPER}} .king-addons-grid .slick-list' => 'margin-left: -{{SIZE}}{{UNIT}};',
1096 '{{WRAPPER}}.king-addons-grid-slider-rows-2 .king-addons-grid .slick-list' => 'margin-bottom: -{{SIZE}}{{UNIT}};',
1097 '{{WRAPPER}}.king-addons-grid-slider-rows-3 .king-addons-grid .slick-list' => 'margin-bottom: -{{SIZE}}{{UNIT}};'
1098 ],
1099 'render_type' => 'template',
1100 'condition' => [
1101 'layout_slider_amount!' => '1',
1102 'layout_select' => 'slider',
1103 ]
1104 ]
1105 );
1106
1107 $this->add_responsive_control(
1108 'layout_slider_nav',
1109 [
1110 'label' => esc_html__('Navigation', 'king-addons'),
1111 'type' => Controls_Manager::SWITCHER,
1112 'default' => 'yes',
1113 'widescreen_default' => 'yes',
1114 'laptop_default' => 'yes',
1115 'tablet_extra_default' => 'yes',
1116 'tablet_default' => 'yes',
1117 'mobile_extra_default' => 'yes',
1118 'mobile_default' => 'yes',
1119 'selectors_dictionary' => [
1120 '' => 'none',
1121 'yes' => 'flex'
1122 ],
1123 'selectors' => [
1124 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'display:{{VALUE}} !important;',
1125 ],
1126 'separator' => 'before',
1127 'condition' => [
1128 'layout_select' => 'slider',
1129 ]
1130 ]
1131 );
1132
1133 $this->add_control_layout_slider_nav_hover();
1134
1135 $this->add_control(
1136 'layout_slider_nav_icon',
1137 [
1138 'label' => esc_html__('Select Icon', 'king-addons'),
1139 'type' => Controls_Manager::SELECT,
1140 'default' => 'fas fa-angle-left',
1141 'options' => [
1142 'fas fa-angle-left' => esc_html__('Angle', 'king-addons'),
1143 'fas fa-angle-double-left' => esc_html__('Angle Double', 'king-addons'),
1144 'fas fa-arrow-left' => esc_html__('Arrow', 'king-addons'),
1145 'fas fa-arrow-alt-circle-left' => esc_html__('Arrow Circle', 'king-addons'),
1146 'far fa-arrow-alt-circle-left' => esc_html__('Arrow Circle Alt', 'king-addons'),
1147 'fas fa-long-arrow-alt-left' => esc_html__('Long Arrow', 'king-addons'),
1148 'fas fa-chevron-left' => esc_html__('Chevron', 'king-addons'),
1149 ],
1150 'separator' => 'after',
1151 'condition' => [
1152 'layout_slider_nav' => 'yes',
1153 'layout_select' => 'slider',
1154 ],
1155 ]
1156 );
1157
1158 $this->add_responsive_control(
1159 'layout_slider_dots',
1160 [
1161 'label' => esc_html__('Pagination', 'king-addons'),
1162 'type' => Controls_Manager::SWITCHER,
1163 'default' => 'yes',
1164 'widescreen_default' => 'yes',
1165 'laptop_default' => 'yes',
1166 'tablet_extra_default' => 'yes',
1167 'tablet_default' => 'yes',
1168 'mobile_extra_default' => 'yes',
1169 'mobile_default' => 'yes',
1170 'selectors_dictionary' => [
1171 '' => 'none',
1172 'yes' => 'inline-table'
1173 ],
1174 'selectors' => [
1175 '{{WRAPPER}} .king-addons-grid-slider-dots' => 'display:{{VALUE}};',
1176 ],
1177 'render_type' => 'template',
1178 'condition' => [
1179 'layout_select' => 'slider',
1180 ]
1181 ]
1182 );
1183
1184 $this->add_control_layout_slider_dots_position();
1185
1186
1187 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'media-grid', 'layout_slider_dots_position', ['pro-vr']);
1188
1189 $this->add_controls_group_layout_slider_autoplay();
1190
1191 $this->add_control(
1192 'layout_slider_loop',
1193 [
1194 'label' => esc_html__('Infinite Loop', 'king-addons'),
1195 'type' => Controls_Manager::SWITCHER,
1196 'default' => 'yes',
1197 'frontend_available' => true,
1198 'separator' => 'before',
1199 'condition' => [
1200 'layout_select' => 'slider',
1201 ],
1202 ]
1203 );
1204
1205 $this->add_control(
1206 'layout_slider_effect',
1207 [
1208 'type' => Controls_Manager::SELECT,
1209 'label' => esc_html__('Effect', 'king-addons'),
1210 'default' => 'slide',
1211 'options' => [
1212 'slide' => esc_html__('Slide', 'king-addons'),
1213 'fade' => esc_html__('Fade', 'king-addons'),
1214 ],
1215 'condition' => [
1216 'layout_slider_amount' => 1,
1217 'layout_select' => 'slider',
1218 ],
1219 ]
1220 );
1221
1222 $this->add_control(
1223 'layout_slider_effect_duration',
1224 [
1225 'label' => esc_html__('Effect Duration', 'king-addons'),
1226 'type' => Controls_Manager::NUMBER,
1227 'default' => 0.7,
1228 'min' => 0,
1229 'max' => 5,
1230 'step' => 0.1,
1231 'condition' => [
1232 'layout_slider_amount' => 1,
1233 'layout_select' => 'slider',
1234 ],
1235 ]
1236 );
1237
1238 $this->end_controls_section();
1239
1240
1241 $this->start_controls_section(
1242 'section_grid_elements',
1243 [
1244 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Elements', 'king-addons'),
1245 'tab' => Controls_Manager::TAB_CONTENT,
1246 ]
1247 );
1248
1249 $repeater = new Repeater();
1250
1251 $repeater->add_control(
1252 'element_select',
1253 [
1254 'label' => esc_html__('Select Element', 'king-addons'),
1255 'type' => Controls_Manager::SELECT,
1256 'default' => 'title',
1257 'options' => array_merge($this->add_option_element_select(), $post_taxonomy_names),
1258 'separator' => 'after'
1259 ]
1260 );
1261
1262
1263 Core::renderUpgradeProNotice($repeater, Controls_Manager::RAW_HTML, 'media-grid', 'element_select', ['pro-lk', 'pro-shr']);
1264
1265 $repeater->add_control(
1266 'element_location',
1267 [
1268 'label' => esc_html__('Location', 'king-addons'),
1269 'type' => Controls_Manager::SELECT,
1270 'default' => 'over',
1271 'options' => [
1272 'above' => esc_html__('Above Media', 'king-addons'),
1273 'over' => esc_html__('Over Media', 'king-addons'),
1274 'below' => esc_html__('Below Media', 'king-addons'),
1275 ]
1276 ]
1277 );
1278
1279 $repeater->add_control(
1280 'element_display',
1281 [
1282 'label' => esc_html__('Display', 'king-addons'),
1283 'type' => Controls_Manager::SELECT,
1284 'default' => 'block',
1285 'options' => [
1286 'inline' => esc_html__('Inline', 'king-addons'),
1287 'block' => esc_html__('Seperate Line', 'king-addons'),
1288 'custom' => esc_html__('Custom Width', 'king-addons'),
1289 ],
1290 ]
1291 );
1292
1293 $repeater->add_control(
1294 'element_custom_width',
1295 [
1296 'label' => esc_html__('Element Width', 'king-addons'),
1297 'type' => Controls_Manager::SLIDER,
1298 'size_units' => ['%'],
1299 'range' => [
1300 '%' => [
1301 'min' => 0,
1302 'max' => 100,
1303 ],
1304 ],
1305 'default' => [
1306 'unit' => '%',
1307 'size' => 100,
1308 ],
1309 'selectors' => [
1310 '{{WRAPPER}} {{CURRENT_ITEM}}' => 'width: {{SIZE}}%;',
1311 ],
1312 'condition' => [
1313 'element_display' => 'custom',
1314 ],
1315 ]
1316 );
1317
1318 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
1319 $repeater->add_control(
1320 'element_align_pro_notice',
1321 [
1322 'raw' => 'Vertical Align option is available<br> in the <strong><a href="https://kingaddons.com/pricing/?utm_source=kng-module-media-grid-settings-upgrade-pro&utm_medium=plugin&utm_campaign=kng" target="_blank">Pro version</a></strong>',
1323
1324 'type' => Controls_Manager::RAW_HTML,
1325 'content_classes' => 'king-addons-pro-notice',
1326 'condition' => [
1327 'element_location' => 'over',
1328 ],
1329 ]
1330 );
1331 }
1332
1333 $repeater->add_control(
1334 'element_align_vr',
1335 [
1336 'label' => esc_html__('Vertical Align', 'king-addons'),
1337 'type' => Controls_Manager::CHOOSE,
1338 'label_block' => false,
1339 'default' => 'middle',
1340 'options' => [
1341 'top' => [
1342 'title' => esc_html__('Top', 'king-addons'),
1343 'icon' => 'eicon-v-align-top',
1344 ],
1345 'middle' => [
1346 'title' => esc_html__('Middle', 'king-addons'),
1347 'icon' => 'eicon-v-align-middle',
1348 ],
1349 'bottom' => [
1350 'title' => esc_html__('Bottom', 'king-addons'),
1351 'icon' => 'eicon-v-align-bottom',
1352 ],
1353 ],
1354 'condition' => [
1355 'element_location' => 'over',
1356 ],
1357 ]
1358 );
1359
1360 $repeater->add_control(
1361 'element_align_hr',
1362 [
1363 'label' => esc_html__('Horizontal Align', 'king-addons'),
1364 'type' => Controls_Manager::CHOOSE,
1365 'label_block' => false,
1366 'default' => 'center',
1367 'options' => [
1368 'left' => [
1369 'title' => esc_html__('Left', 'king-addons'),
1370 'icon' => 'eicon-h-align-left',
1371 ],
1372 'center' => [
1373 'title' => esc_html__('Center', 'king-addons'),
1374 'icon' => 'eicon-h-align-center',
1375 ],
1376 'right' => [
1377 'title' => esc_html__('Right', 'king-addons'),
1378 'icon' => 'eicon-h-align-right',
1379 ]
1380 ],
1381 'selectors' => [
1382 '{{WRAPPER}} {{CURRENT_ITEM}}' => 'text-align: {{VALUE}}',
1383 ],
1384 'render_type' => 'template',
1385 'separator' => 'after'
1386 ]
1387 );
1388
1389 $repeater->add_control(
1390 'element_title_tag',
1391 [
1392 'label' => esc_html__('Title HTML Tag', 'king-addons'),
1393 'type' => Controls_Manager::SELECT,
1394 'options' => [
1395 'h1' => 'H1',
1396 'h2' => 'H2',
1397 'h3' => 'H3',
1398 'h4' => 'H4',
1399 'h5' => 'H5',
1400 'h6' => 'H6',
1401 'div' => 'div',
1402 'span' => 'span',
1403 'P' => 'p'
1404 ],
1405 'default' => 'h2',
1406 'condition' => [
1407 'element_select' => 'title',
1408 ]
1409 ]
1410 );
1411
1412 $repeater->add_control(
1413 'element_dropcap',
1414 [
1415 'label' => esc_html__('Enable Drop Cap', 'king-addons'),
1416 'type' => Controls_Manager::SWITCHER,
1417 'return_value' => 'yes',
1418 'condition' => [
1419 'element_select' => ['caption'],
1420 ]
1421 ]
1422 );
1423
1424 $repeater->add_control(
1425 'element_word_count',
1426 [
1427 'label' => esc_html__('Word Count', 'king-addons'),
1428 'type' => Controls_Manager::NUMBER,
1429 'default' => 20,
1430 'min' => 1,
1431 'condition' => [
1432 'element_select' => ['title', 'caption'],
1433 ]
1434 ]
1435 );
1436
1437 $repeater->add_control(
1438 'element_show_avatar',
1439 [
1440 'label' => esc_html__('Show Avatar', 'king-addons'),
1441 'type' => Controls_Manager::SWITCHER,
1442 'return_value' => 'yes',
1443 'condition' => [
1444 'element_select' => ['author']
1445 ]
1446 ]
1447 );
1448
1449 $repeater->add_control(
1450 'element_avatar_size',
1451 [
1452 'label' => esc_html__('Avatar Size', 'king-addons'),
1453 'type' => Controls_Manager::NUMBER,
1454 'default' => 32,
1455 'min' => 8,
1456 'condition' => [
1457 'element_select' => ['author'],
1458 'element_show_avatar' => 'yes'
1459 ],
1460 'separator' => 'after'
1461 ]
1462 );
1463
1464 $repeater->add_control(
1465 'element_tax_sep',
1466 [
1467 'label' => esc_html__('Separator', 'king-addons'),
1468 'type' => Controls_Manager::TEXT,
1469 'dynamic' => [
1470 'active' => true,
1471 ],
1472 'default' => ', ',
1473 'condition' => [
1474 'element_select!' => [
1475 'title',
1476 'caption',
1477 'date',
1478 'time',
1479 'author',
1480 'likes',
1481 'sharing',
1482 'lightbox',
1483 'separator',
1484 'post_format',
1485 ],
1486 ],
1487 'separator' => 'after'
1488 ]
1489 );
1490
1491 $repeater->add_control(
1492 'element_tax_style',
1493 [
1494 'label' => esc_html__('Select Styling', 'king-addons'),
1495 'type' => Controls_Manager::SELECT,
1496 'default' => 'king-addons-grid-tax-style-1',
1497 'options' => [
1498 'king-addons-grid-tax-style-1' => esc_html__('Taxonomy Style 1', 'king-addons'),
1499 'king-addons-grid-tax-style-2' => esc_html__('Taxonomy Style 2', 'king-addons'),
1500 ],
1501 'condition' => [
1502 'element_select!' => [
1503 'title',
1504 'caption',
1505 'date',
1506 'time',
1507 'author',
1508 'likes',
1509 'sharing',
1510 'lightbox',
1511 'separator',
1512 ],
1513 ],
1514 'separator' => 'after'
1515 ]
1516 );
1517
1518 $repeater->add_control('element_like_icon', $this->add_repeater_args_element_like_icon());
1519
1520 $repeater->add_control('element_like_show_count', $this->add_repeater_args_element_like_show_count());
1521
1522 $repeater->add_control('element_like_text', $this->add_repeater_args_element_like_text());
1523
1524 $repeater->add_control('element_sharing_icon_1', $this->add_repeater_args_element_sharing_icon_1());
1525
1526 $repeater->add_control('element_sharing_icon_2', $this->add_repeater_args_element_sharing_icon_2());
1527
1528 $repeater->add_control('element_sharing_icon_3', $this->add_repeater_args_element_sharing_icon_3());
1529
1530 $repeater->add_control('element_sharing_icon_4', $this->add_repeater_args_element_sharing_icon_4());
1531
1532 $repeater->add_control('element_sharing_icon_5', $this->add_repeater_args_element_sharing_icon_5());
1533
1534 $repeater->add_control('element_sharing_icon_6', $this->add_repeater_args_element_sharing_icon_6());
1535
1536 $repeater->add_control('element_sharing_trigger', $this->add_repeater_args_element_sharing_trigger());
1537
1538 $repeater->add_control('element_sharing_trigger_icon', $this->add_repeater_args_element_sharing_trigger_icon());
1539
1540 $repeater->add_control('element_sharing_trigger_action', $this->add_repeater_args_element_sharing_trigger_action());
1541
1542 $repeater->add_control('element_sharing_trigger_direction', $this->add_repeater_args_element_sharing_trigger_direction());
1543
1544 $repeater->add_control('element_sharing_tooltip', $this->add_repeater_args_element_sharing_tooltip());
1545
1546 $repeater->add_control(
1547 'element_lightbox_overlay',
1548 [
1549 'label' => esc_html__('Media Overlay', 'king-addons'),
1550 'type' => Controls_Manager::SWITCHER,
1551 'return_value' => 'yes',
1552 'separator' => 'after',
1553 'condition' => [
1554 'element_select' => ['lightbox'],
1555 ],
1556 ]
1557 );
1558
1559 $repeater->add_control(
1560 'element_separator_style',
1561 [
1562 'label' => esc_html__('Select Styling', 'king-addons'),
1563 'type' => Controls_Manager::SELECT,
1564 'default' => 'king-addons-grid-sep-style-1',
1565 'options' => [
1566 'king-addons-grid-sep-style-1' => esc_html__('Separator Style 1', 'king-addons'),
1567 'king-addons-grid-sep-style-2' => esc_html__('Separator Style 2', 'king-addons'),
1568 ],
1569 'condition' => [
1570 'element_select' => 'separator',
1571 ]
1572 ]
1573 );
1574
1575 $repeater->add_control(
1576 'element_extra_text_pos',
1577 [
1578 'label' => esc_html__('Extra Text Display', 'king-addons'),
1579 'type' => Controls_Manager::SELECT,
1580 'options' => [
1581 'none' => esc_html__('None', 'king-addons'),
1582 'before' => esc_html__('Before Element', 'king-addons'),
1583 'after' => esc_html__('After Element', 'king-addons'),
1584 ],
1585 'default' => 'none',
1586 'condition' => [
1587 'element_select!' => [
1588 'title',
1589 'caption',
1590 'separator',
1591 ],
1592 ]
1593 ]
1594 );
1595
1596 $repeater->add_control(
1597 'element_extra_text',
1598 [
1599 'label' => esc_html__('Extra Text', 'king-addons'),
1600 'type' => Controls_Manager::TEXT,
1601 'dynamic' => [
1602 'active' => true,
1603 ],
1604 'default' => '',
1605 'condition' => [
1606 'element_select!' => [
1607 'title',
1608 'caption',
1609 'separator',
1610 ],
1611 'element_extra_text_pos!' => 'none'
1612 ]
1613 ]
1614 );
1615
1616 $repeater->add_control(
1617 'element_extra_icon_pos',
1618 [
1619 'label' => esc_html__('Extra Icon Position', 'king-addons'),
1620 'type' => Controls_Manager::SELECT,
1621 'options' => [
1622 'none' => esc_html__('None', 'king-addons'),
1623 'before' => esc_html__('Before Element', 'king-addons'),
1624 'after' => esc_html__('After Element', 'king-addons'),
1625 ],
1626 'default' => 'none',
1627 'condition' => [
1628 'element_select!' => [
1629 'title',
1630 'caption',
1631 'separator',
1632 'likes',
1633 'sharing',
1634 ],
1635 ]
1636 ]
1637 );
1638
1639 $repeater->add_control(
1640 'element_extra_icon',
1641 [
1642 'label' => esc_html__('Select Icon', 'king-addons'),
1643 'type' => Controls_Manager::ICONS,
1644 'skin' => 'inline',
1645 'label_block' => false,
1646 'default' => [
1647 'value' => 'fas fa-search',
1648 'library' => 'fa-solid',
1649 ],
1650 'condition' => [
1651 'element_select!' => [
1652 'title',
1653 'caption',
1654 'separator',
1655 'likes',
1656 'sharing',
1657 ],
1658 'element_extra_icon_pos!' => 'none'
1659 ]
1660 ]
1661 );
1662
1663 $repeater->add_control(
1664 'animation_divider',
1665 [
1666 'type' => Controls_Manager::DIVIDER,
1667 'style' => 'thick',
1668 'condition' => [
1669 'element_location' => 'over'
1670 ],
1671 ]
1672 );
1673
1674 $repeater->add_control(
1675 'element_animation',
1676 [
1677 'label' => esc_html__('Select Animation', 'king-addons'),
1678 'type' => 'king-addons-animations',
1679 'default' => 'none',
1680 'condition' => [
1681 'element_location' => 'over'
1682 ],
1683 ]
1684 );
1685
1686
1687 Core::renderUpgradeProNotice($repeater, Controls_Manager::RAW_HTML, 'media-grid', 'element_animation', ['pro-slrt', 'pro-slxrt', 'pro-slbt', 'pro-sllt', 'pro-sltp', 'pro-slxlt', 'pro-sktp', 'pro-skrt', 'pro-skbt', 'pro-sklt', 'pro-scup', 'pro-scdn', 'pro-rllt', 'pro-rlrt']);
1688
1689 $repeater->add_control(
1690 'element_animation_duration',
1691 [
1692 'label' => esc_html__('Animation Duration', 'king-addons'),
1693 'type' => Controls_Manager::NUMBER,
1694 'default' => 0.3,
1695 'min' => 0,
1696 'max' => 5,
1697 'step' => 0.1,
1698 'selectors' => [
1699 '{{WRAPPER}} {{CURRENT_ITEM}}' => 'transition-duration: {{VALUE}}s;'
1700 ],
1701 'condition' => [
1702 'element_animation!' => 'none',
1703 'element_location' => 'over',
1704 ],
1705 ]
1706 );
1707
1708 $repeater->add_control(
1709 'element_animation_delay',
1710 [
1711 'label' => esc_html__('Animation Delay', 'king-addons'),
1712 'type' => Controls_Manager::NUMBER,
1713 'default' => 0,
1714 'min' => 0,
1715 'max' => 5,
1716 'step' => 0.1,
1717 'selectors' => [
1718 '{{WRAPPER}} .king-addons-animation-wrap:hover {{CURRENT_ITEM}}' => 'transition-delay: {{VALUE}}s;'
1719 ],
1720 'condition' => [
1721 'element_animation!' => 'none',
1722 'element_location' => 'over'
1723 ],
1724 ]
1725 );
1726
1727 $repeater->add_control(
1728 'element_animation_timing',
1729 [
1730 'label' => esc_html__('Animation Timing', 'king-addons'),
1731 'type' => Controls_Manager::SELECT,
1732 'options' => Core::getAnimationTimings(),
1733 'default' => 'ease-default',
1734 'condition' => [
1735 'element_animation!' => 'none',
1736 'element_location' => 'over'
1737 ],
1738 ]
1739 );
1740
1741
1742 Core::renderUpgradeProNotice($repeater, Controls_Manager::RAW_HTML, 'media-grid', 'element_animation_timing', Core::getAnimationTimingsConditionsPro());
1743
1744 $repeater->add_control(
1745 'element_animation_size',
1746 [
1747 'label' => esc_html__('Animation Size', 'king-addons'),
1748 'type' => Controls_Manager::SELECT,
1749 'options' => [
1750 'small' => esc_html__('Small', 'king-addons'),
1751 'medium' => esc_html__('Medium', 'king-addons'),
1752 'large' => esc_html__('Large', 'king-addons'),
1753 ],
1754 'default' => 'large',
1755 'condition' => [
1756 'element_animation!' => 'none',
1757 'element_location' => 'over'
1758 ],
1759 ]
1760 );
1761
1762 $repeater->add_control(
1763 'element_animation_tr',
1764 [
1765 'label' => esc_html__('Animation Transparency', 'king-addons'),
1766 'type' => Controls_Manager::SWITCHER,
1767 'default' => 'yes',
1768 'return_value' => 'yes',
1769 'condition' => [
1770 'element_animation!' => 'none',
1771 'element_location' => 'over'
1772 ],
1773 ]
1774 );
1775
1776 $repeater->add_control(
1777 'element_disable_link',
1778 [
1779 'label' => esc_html__('Disable Link', 'king-addons'),
1780 'type' => Controls_Manager::SWITCHER,
1781 'condition' => [
1782 'element_select' => 'title'
1783 ],
1784 ]
1785 );
1786
1787 $repeater->add_responsive_control(
1788 'element_show_on',
1789 [
1790 'label' => esc_html__('Show on this Device', 'king-addons'),
1791 'type' => Controls_Manager::SWITCHER,
1792 'default' => 'yes',
1793 'widescreen_default' => 'yes',
1794 'laptop_default' => 'yes',
1795 'tablet_extra_default' => 'yes',
1796 'tablet_default' => 'yes',
1797 'mobile_extra_default' => 'yes',
1798 'mobile_default' => 'yes',
1799 'selectors_dictionary' => [
1800 '' => 'position: absolute; left: -99999999px;',
1801 'yes' => 'position: static; left: auto;'
1802 ],
1803 'selectors' => [
1804 '{{WRAPPER}} {{CURRENT_ITEM}}' => '{{VALUE}}',
1805 ],
1806 'render_type' => 'template',
1807 ]
1808 );
1809
1810 $this->add_control(
1811 'grid_elements',
1812 [
1813 'label' => esc_html__('Grid Elements', 'king-addons'),
1814 'type' => Controls_Manager::REPEATER,
1815 'fields' => $repeater->get_controls(),
1816 'default' => [
1817 [
1818 'element_select' => 'lightbox',
1819 'element_location' => 'over',
1820 'element_extra_icon_pos' => 'before',
1821 'element_animation' => 'fade-in',
1822 'element_animation_size' => 'large',
1823 'element_lightbox_overlay' => 'yes',
1824 'element_sharing_trigger_icon' => 'fas fa-share',
1825 ],
1826 [
1827 'element_select' => 'title',
1828 'element_location' => 'over',
1829 'element_extra_icon_pos' => 'before',
1830 'element_animation' => 'fade-in',
1831 'element_animation_size' => 'large',
1832 'element_sharing_trigger_icon' => 'fas fa-share',
1833 ],
1834 ],
1835 'title_field' => '{{{ element_select.charAt(0).toUpperCase() + element_select.slice(1) }}}',
1836 ]
1837 );
1838
1839 $this->end_controls_section();
1840
1841
1842 $this->start_controls_section(
1843 'section_image_overlay',
1844 [
1845 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Media Overlay', 'king-addons'),
1846 'tab' => Controls_Manager::TAB_CONTENT,
1847 ]
1848 );
1849
1850 $this->add_responsive_control(
1851 'overlay_width',
1852 [
1853 'label' => esc_html__('Overlay Width', 'king-addons'),
1854 'type' => Controls_Manager::SLIDER,
1855 'size_units' => ['%', 'px'],
1856 'default' => [
1857 'unit' => '%',
1858 'size' => 100,
1859 ],
1860 'range' => [
1861 '%' => [
1862 'min' => 0,
1863 'max' => 100,
1864 ],
1865 'px' => [
1866 'min' => 0,
1867 'max' => 500,
1868 ],
1869 ],
1870 'selectors' => [
1871 '{{WRAPPER}} .king-addons-grid-media-hover-bg' => 'width: {{SIZE}}{{UNIT}};top:calc((100% - {{overlay_height.SIZE}}{{overlay_height.UNIT}})/2);left:calc((100% - {{SIZE}}{{UNIT}})/2);',
1872 '{{WRAPPER}} .king-addons-grid-media-hover-bg[class*="-top"]' => 'top:calc((100% - {{overlay_height.SIZE}}{{overlay_height.UNIT}})/2);left:calc((100% - {{SIZE}}{{UNIT}})/2);',
1873 '{{WRAPPER}} .king-addons-grid-media-hover-bg[class*="-bottom"]' => 'bottom:calc((100% - {{overlay_height.SIZE}}{{overlay_height.UNIT}})/2);left:calc((100% - {{SIZE}}{{UNIT}})/2);',
1874 '{{WRAPPER}} .king-addons-grid-media-hover-bg[class*="-right"]' => 'top:calc((100% - {{overlay_height.SIZE}}{{overlay_height.UNIT}})/2);right:calc((100% - {{SIZE}}{{UNIT}})/2);',
1875 '{{WRAPPER}} .king-addons-grid-media-hover-bg[class*="-left"]' => 'top:calc((100% - {{overlay_height.SIZE}}{{overlay_height.UNIT}})/2);left:calc((100% - {{SIZE}}{{UNIT}})/2);',
1876 ],
1877 ]
1878 );
1879
1880 $this->add_responsive_control(
1881 'overlay_height',
1882 [
1883 'label' => esc_html__('Overlay Height', 'king-addons'),
1884 'type' => Controls_Manager::SLIDER,
1885 'size_units' => ['%', 'px'],
1886 'default' => [
1887 'unit' => '%',
1888 'size' => 100,
1889 ],
1890 'range' => [
1891 '%' => [
1892 'min' => 0,
1893 'max' => 100,
1894 ],
1895 'px' => [
1896 'min' => 0,
1897 'max' => 500,
1898 ],
1899 ],
1900 'selectors' => [
1901 '{{WRAPPER}} .king-addons-grid-media-hover-bg' => 'height: {{SIZE}}{{UNIT}};top:calc((100% - {{SIZE}}{{UNIT}})/2);left:calc((100% - {{overlay_width.SIZE}}{{overlay_width.UNIT}})/2);',
1902 '{{WRAPPER}} .king-addons-grid-media-hover-bg[class*="-top"]' => 'top:calc((100% - {{SIZE}}{{UNIT}})/2);left:calc((100% - {{overlay_width.SIZE}}{{overlay_width.UNIT}})/2);',
1903 '{{WRAPPER}} .king-addons-grid-media-hover-bg[class*="-bottom"]' => 'bottom:calc((100% - {{SIZE}}{{UNIT}})/2);left:calc((100% - {{overlay_width.SIZE}}{{overlay_width.UNIT}})/2);',
1904 '{{WRAPPER}} .king-addons-grid-media-hover-bg[class*="-right"]' => 'top:calc((100% - {{SIZE}}{{UNIT}})/2);right:calc((100% - {{overlay_width.SIZE}}{{overlay_width.UNIT}})/2);',
1905 '{{WRAPPER}} .king-addons-grid-media-hover-bg[class*="-left"]' => 'top:calc((100% - {{SIZE}}{{UNIT}})/2);left:calc((100% - {{overlay_width.SIZE}}{{overlay_width.UNIT}})/2);',
1906 ],
1907 'separator' => 'after',
1908 ]
1909 );
1910
1911 $this->add_control(
1912 'overlay_animation',
1913 [
1914 'label' => esc_html__('Select Animation', 'king-addons'),
1915 'type' => 'king-addons-animations-alt',
1916 'default' => 'fade-in',
1917 ]
1918 );
1919
1920
1921 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'media-grid', 'overlay_animation', ['pro-slrt', 'pro-slxrt', 'pro-slbt', 'pro-sllt', 'pro-sltp', 'pro-slxlt', 'pro-sktp', 'pro-skrt', 'pro-skbt', 'pro-sklt', 'pro-scup', 'pro-scdn', 'pro-rllt', 'pro-rlrt',]);
1922
1923 $this->add_control(
1924 'overlay_animation_duration',
1925 [
1926 'label' => esc_html__('Animation Duration', 'king-addons'),
1927 'type' => Controls_Manager::NUMBER,
1928 'default' => 0.3,
1929 'min' => 0,
1930 'max' => 5,
1931 'step' => 0.1,
1932 'selectors' => [
1933 '{{WRAPPER}} .king-addons-grid-media-hover-bg' => 'transition-duration: {{VALUE}}s;'
1934 ],
1935 'condition' => [
1936 'overlay_animation!' => 'none',
1937 ],
1938 ]
1939 );
1940
1941 $this->add_control(
1942 'overlay_animation_delay',
1943 [
1944 'label' => esc_html__('Animation Delay', 'king-addons'),
1945 'type' => Controls_Manager::NUMBER,
1946 'default' => 0,
1947 'min' => 0,
1948 'max' => 5,
1949 'step' => 0.1,
1950 'selectors' => [
1951 '{{WRAPPER}} .king-addons-animation-wrap:hover .king-addons-grid-media-hover-bg' => 'transition-delay: {{VALUE}}s;'
1952 ],
1953 'condition' => [
1954 'overlay_animation!' => 'none',
1955 ],
1956 ]
1957 );
1958
1959 $this->add_control(
1960 'overlay_animation_timing',
1961 [
1962 'label' => esc_html__('Animation Timing', 'king-addons'),
1963 'type' => Controls_Manager::SELECT,
1964 'options' => Core::getAnimationTimings(),
1965 'default' => 'ease-default',
1966 'condition' => [
1967 'overlay_animation!' => 'none',
1968 ],
1969 ]
1970 );
1971
1972
1973 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'media-grid', 'overlay_animation_timing', Core::getAnimationTimingsConditionsPro());
1974
1975 $this->add_control(
1976 'overlay_animation_size',
1977 [
1978 'label' => esc_html__('Animation Size', 'king-addons'),
1979 'type' => Controls_Manager::SELECT,
1980 'options' => [
1981 'small' => esc_html__('Small', 'king-addons'),
1982 'medium' => esc_html__('Medium', 'king-addons'),
1983 'large' => esc_html__('Large', 'king-addons'),
1984 ],
1985 'default' => 'large',
1986 'condition' => [
1987 'overlay_animation!' => 'none',
1988 ],
1989 ]
1990 );
1991
1992 $this->add_control(
1993 'overlay_animation_tr',
1994 [
1995 'label' => esc_html__('Animation Transparency', 'king-addons'),
1996 'type' => Controls_Manager::SWITCHER,
1997 'default' => 'yes',
1998 'return_value' => 'yes',
1999 'condition' => [
2000 'overlay_animation!' => 'none',
2001 ],
2002 ]
2003 );
2004
2005 $this->add_control_overlay_animation_divider();
2006
2007 $this->add_control_overlay_image();
2008
2009 $this->add_control_overlay_image_width();
2010
2011 $this->end_controls_section();
2012
2013
2014 $this->start_controls_section(
2015 'section_image_effects',
2016 [
2017 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Image Effects', 'king-addons'),
2018 'tab' => Controls_Manager::TAB_CONTENT,
2019 ]
2020 );
2021
2022 $this->add_control_image_effects();
2023
2024
2025 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'media-grid', 'image_effects', ['pro-zi', 'pro-zo', 'pro-go', 'pro-bo']);
2026
2027 $this->add_control(
2028 'image_effects_duration',
2029 [
2030 'label' => esc_html__('Animation Duration', 'king-addons'),
2031 'type' => Controls_Manager::NUMBER,
2032 'default' => 0.3,
2033 'min' => 0,
2034 'max' => 5,
2035 'step' => 0.1,
2036 'selectors' => [
2037 '{{WRAPPER}} .king-addons-grid-media-wrap img' => 'transition-duration: {{VALUE}}s;'
2038 ],
2039 'condition' => [
2040 'image_effects!' => 'none',
2041 ],
2042 ]
2043 );
2044
2045 $this->add_control(
2046 'image_effects_delay',
2047 [
2048 'label' => esc_html__('Animation Delay', 'king-addons'),
2049 'type' => Controls_Manager::NUMBER,
2050 'default' => 0,
2051 'min' => 0,
2052 'max' => 5,
2053 'step' => 0.1,
2054 'selectors' => [
2055 '{{WRAPPER}} .king-addons-grid-media-wrap:hover img' => 'transition-delay: {{VALUE}}s;'
2056 ],
2057 'condition' => [
2058 'image_effects!' => 'none',
2059 ],
2060 ]
2061 );
2062
2063 $this->add_control(
2064 'image_effects_animation_timing',
2065 [
2066 'label' => esc_html__('Animation Timing', 'king-addons'),
2067 'type' => Controls_Manager::SELECT,
2068 'options' => Core::getAnimationTimings(),
2069 'default' => 'ease-default',
2070 'condition' => [
2071 'image_effects!' => 'none',
2072 ],
2073 ]
2074 );
2075
2076
2077 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'media-grid', 'image_effects_animation_timing', Core::getAnimationTimingsConditionsPro());
2078
2079 $this->add_control(
2080 'image_effects_size',
2081 [
2082 'label' => esc_html__('Animation Size', 'king-addons'),
2083 'type' => Controls_Manager::SELECT,
2084 'options' => [
2085 'small' => esc_html__('Small', 'king-addons'),
2086 'medium' => esc_html__('Medium', 'king-addons'),
2087 'large' => esc_html__('Large', 'king-addons'),
2088 ],
2089 'default' => 'small',
2090 'condition' => [
2091 'image_effects!' => ['none', 'slide'],
2092 ]
2093 ]
2094 );
2095
2096 $this->add_control(
2097 'image_effects_direction',
2098 [
2099 'label' => esc_html__('Animation Direction', 'king-addons'),
2100 'type' => Controls_Manager::SELECT,
2101 'options' => [
2102 'top' => esc_html__('Top', 'king-addons'),
2103 'right' => esc_html__('Right', 'king-addons'),
2104 'bottom' => esc_html__('Bottom', 'king-addons'),
2105 'left' => esc_html__('Left', 'king-addons'),
2106 ],
2107 'default' => 'bottom',
2108 'condition' => [
2109 'image_effects!' => 'none',
2110 'image_effects' => 'slide'
2111 ]
2112 ]
2113 );
2114
2115 $this->end_controls_section();
2116
2117
2118 $this->start_controls_section(
2119 'section_lightbox_popup',
2120 [
2121 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Lightbox Popup', 'king-addons'),
2122 'tab' => Controls_Manager::TAB_CONTENT,
2123 ]
2124 );
2125
2126 $this->add_control(
2127 'lightbox_popup_autoplay',
2128 [
2129 'label' => esc_html__('Autoplay Slides', 'king-addons'),
2130 'type' => Controls_Manager::SWITCHER,
2131 'default' => 'true',
2132 'return_value' => 'true',
2133 ]
2134 );
2135
2136 $this->add_control(
2137 'lightbox_popup_progressbar',
2138 [
2139 'label' => esc_html__('Show Progress Bar', 'king-addons'),
2140 'type' => Controls_Manager::SWITCHER,
2141 'default' => 'true',
2142 'return_value' => 'true',
2143 'condition' => [
2144 'lightbox_popup_autoplay' => 'true'
2145 ]
2146 ]
2147 );
2148
2149 $this->add_control(
2150 'lightbox_popup_pause',
2151 [
2152 'label' => esc_html__('Autoplay Speed', 'king-addons'),
2153 'type' => Controls_Manager::NUMBER,
2154 'default' => 5,
2155 'min' => 1,
2156 'max' => 10,
2157 'step' => 1,
2158 'condition' => [
2159 'lightbox_popup_autoplay' => 'true',
2160 ],
2161 ]
2162 );
2163
2164 $this->add_control(
2165 'lightbox_popup_counter',
2166 [
2167 'label' => esc_html__('Show Counter', 'king-addons'),
2168 'type' => Controls_Manager::SWITCHER,
2169 'default' => 'true',
2170 'return_value' => 'true',
2171 ]
2172 );
2173
2174 $this->add_control(
2175 'lightbox_popup_arrows',
2176 [
2177 'label' => esc_html__('Show Arrows', 'king-addons'),
2178 'type' => Controls_Manager::SWITCHER,
2179 'default' => 'true',
2180 'return_value' => 'true',
2181 ]
2182 );
2183
2184 $this->add_control(
2185 'lightbox_popup_captions',
2186 [
2187 'label' => esc_html__('Show Captions', 'king-addons'),
2188 'type' => Controls_Manager::SWITCHER,
2189 'default' => 'true',
2190 'return_value' => 'true',
2191 ]
2192 );
2193
2194 $this->add_control_lightbox_popup_thumbnails();
2195
2196 $this->add_control_lightbox_popup_thumbnails_default();
2197
2198 $this->add_control_lightbox_popup_sharing();
2199
2200 $this->add_control(
2201 'lightbox_popup_zoom',
2202 [
2203 'label' => esc_html__('Show Zoom Button', 'king-addons'),
2204 'type' => Controls_Manager::SWITCHER,
2205 'default' => 'true',
2206 'return_value' => 'true',
2207 ]
2208 );
2209
2210 $this->add_control(
2211 'lightbox_popup_fullscreen',
2212 [
2213 'label' => esc_html__('Show Full Screen Button', 'king-addons'),
2214 'type' => Controls_Manager::SWITCHER,
2215 'default' => 'true',
2216 'return_value' => 'true',
2217 ]
2218 );
2219
2220 $this->add_control(
2221 'lightbox_popup_download',
2222 [
2223 'label' => esc_html__('Show Download Button', 'king-addons'),
2224 'type' => Controls_Manager::SWITCHER,
2225 'default' => 'true',
2226 'return_value' => 'true',
2227 ]
2228 );
2229
2230 $this->add_control(
2231 'lightbox_popup_description',
2232 [
2233 'raw' => sprintf(__('You can change Lightbox Popup styling options globally. Navigate to <strong>Dashboard > %s > Settings</strong>.', 'king-addons'), Core::getPluginName()),
2234 'type' => Controls_Manager::RAW_HTML,
2235 'separator' => 'before',
2236 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
2237 ]
2238 );
2239
2240 $this->end_controls_section();
2241
2242 $this->start_controls_section(
2243 'section_grid_filters',
2244 [
2245 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Filters', 'king-addons'),
2246 'tab' => Controls_Manager::TAB_CONTENT,
2247 'condition' => [
2248 'layout_select!' => 'slider',
2249 'layout_filters' => 'yes',
2250 ],
2251 ]
2252 );
2253
2254 $this->add_control(
2255 'filters_select',
2256 [
2257 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Select Taxonomy', 'king-addons'),
2258 'type' => Controls_Manager::SELECT,
2259 'options' => $post_taxonomy_names,
2260 'default' => 'media_category',
2261 'description' => 'If it is empty, add a taxonomy for media in the WordPress dashboard using Media Library Assistant or any CPT manager plugin. ',
2262 'separator' => 'after',
2263 ]
2264 );
2265
2266 $this->add_control(
2267 'filters_linkable',
2268 [
2269 'label' => esc_html__('Set Linkable Filters', 'king-addons'),
2270 'type' => Controls_Manager::SWITCHER,
2271 'default' => 'no',
2272 'return_value' => 'yes',
2273 ]
2274 );
2275
2276 $this->add_control(
2277 'filters_hide_empty',
2278 [
2279 'label' => esc_html__('Hide Empty Filters', 'king-addons'),
2280 'type' => Controls_Manager::SWITCHER,
2281 'default' => 'no',
2282 'return_value' => 'yes',
2283 'condition' => [
2284 'filters_linkable!' => 'yes',
2285 ],
2286 ]
2287 );
2288
2289 $this->add_control_filters_deeplinking();
2290
2291 $this->add_control(
2292 'filters_all',
2293 [
2294 'label' => esc_html__('Show "All" Filter', 'king-addons'),
2295 'type' => Controls_Manager::SWITCHER,
2296 'default' => 'yes',
2297 'return_value' => 'yes',
2298 'condition' => [
2299 'filters_linkable!' => 'yes',
2300 ],
2301 ]
2302 );
2303
2304 $this->add_control(
2305 'filters_all_text',
2306 [
2307 'label' => esc_html__('"All" Filter Text', 'king-addons'),
2308 'type' => Controls_Manager::TEXT,
2309 'dynamic' => [
2310 'active' => true,
2311 ],
2312 'default' => 'All Photos',
2313 'condition' => [
2314 'filters_all' => 'yes',
2315 'filters_linkable!' => 'yes',
2316 ],
2317 ]
2318 );
2319
2320 $this->add_control_filters_count();
2321
2322 $this->add_control_filters_count_superscript();
2323
2324 $this->add_control_filters_count_brackets();
2325
2326 $this->add_control_filters_default_filter();
2327
2328 $this->add_control_filters_icon();
2329
2330 $this->add_control_filters_icon_align();
2331
2332 $this->add_control(
2333 'filters_separator',
2334 [
2335 'label' => esc_html__('Separator', 'king-addons'),
2336 'type' => Controls_Manager::TEXT,
2337 'dynamic' => [
2338 'active' => true,
2339 ],
2340 'default' => '',
2341 'separator' => 'before',
2342 ]
2343 );
2344
2345 $this->add_control(
2346 'filters_separator_align',
2347 [
2348 'label' => esc_html__('Separator Position', 'king-addons'),
2349 'type' => Controls_Manager::CHOOSE,
2350 'label_block' => false,
2351 'default' => 'left',
2352 'options' => [
2353 'left' => [
2354 'title' => esc_html__('Left', 'king-addons'),
2355 'icon' => 'eicon-h-align-left',
2356 ],
2357 'right' => [
2358 'title' => esc_html__('Right', 'king-addons'),
2359 'icon' => 'eicon-h-align-right',
2360 ]
2361 ],
2362 'condition' => [
2363 'filters_separator!' => '',
2364 ],
2365 ]
2366 );
2367
2368 $this->add_responsive_control(
2369 'filters_align',
2370 [
2371 'label' => esc_html__('Align', 'king-addons'),
2372 'type' => Controls_Manager::CHOOSE,
2373 'label_block' => false,
2374 'default' => 'center',
2375 'options' => [
2376 'left' => [
2377 'title' => esc_html__('Left', 'king-addons'),
2378 'icon' => 'eicon-h-align-left',
2379 ],
2380 'center' => [
2381 'title' => esc_html__('Center', 'king-addons'),
2382 'icon' => 'eicon-h-align-center',
2383 ],
2384 'right' => [
2385 'title' => esc_html__('Right', 'king-addons'),
2386 'icon' => 'eicon-h-align-right',
2387 ]
2388 ],
2389 'selectors' => [
2390 '{{WRAPPER}} .king-addons-grid-filters' => 'text-align: {{VALUE}}',
2391 ],
2392 'separator' => 'before',
2393 ]
2394 );
2395
2396 $this->add_control_filters_animation();
2397
2398 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'media-grid', 'filters_animation', ['pro-fd', 'pro-fs']);
2399
2400 $this->add_control(
2401 'filters_animation_duration',
2402 [
2403 'label' => esc_html__('Animation Duration', 'king-addons'),
2404 'type' => Controls_Manager::NUMBER,
2405 'default' => 0.3,
2406 'min' => 0,
2407 'max' => 5,
2408 'step' => 0.1,
2409 'condition' => [
2410 'filters_animation!' => 'default',
2411 ],
2412 ]
2413 );
2414
2415 $this->add_control(
2416 'filters_animation_delay',
2417 [
2418 'label' => esc_html__('Animation Delay', 'king-addons'),
2419 'type' => Controls_Manager::NUMBER,
2420 'default' => 0.1,
2421 'min' => 0,
2422 'max' => 5,
2423 'step' => 0.05,
2424 'condition' => [
2425 'filters_animation!' => 'default'
2426 ],
2427 ]
2428 );
2429
2430 $this->end_controls_section();
2431
2432
2433 $this->start_controls_section(
2434 'section_grid_pagination',
2435 [
2436 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Pagination', 'king-addons'),
2437 'tab' => Controls_Manager::TAB_CONTENT,
2438 'condition' => [
2439 'layout_select!' => 'slider',
2440 'layout_pagination' => 'yes',
2441 ],
2442 ]
2443 );
2444
2445 $this->add_control_pagination_type();
2446
2447
2448 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'media-grid', 'pagination_type', ['pro-is']);
2449
2450 $this->add_control(
2451 'pagination_older_text',
2452 [
2453 'label' => esc_html__('Older Posts Text', 'king-addons'),
2454 'type' => Controls_Manager::TEXT,
2455 'dynamic' => [
2456 'active' => true,
2457 ],
2458 'default' => 'Older Posts',
2459 'condition' => [
2460 'pagination_type' => 'default',
2461 ],
2462 ]
2463 );
2464
2465 $this->add_control(
2466 'pagination_newer_text',
2467 [
2468 'label' => esc_html__('Newer Posts Text', 'king-addons'),
2469 'type' => Controls_Manager::TEXT,
2470 'dynamic' => [
2471 'active' => true,
2472 ],
2473 'default' => 'Newer Posts',
2474 'condition' => [
2475 'pagination_type' => 'default',
2476 ]
2477 ]
2478 );
2479
2480 $this->add_control(
2481 'pagination_on_icon',
2482 [
2483 'label' => esc_html__('Select Icon', 'king-addons'),
2484 'type' => Controls_Manager::SELECT,
2485 'default' => 'fas fa-angle',
2486 'options' => [
2487 'fas fa-angle' => esc_html__('Angle', 'king-addons'),
2488 'fas fa-angle-double' => esc_html__('Angle Double', 'king-addons'),
2489 'fas fa-arrow' => esc_html__('Arrow', 'king-addons'),
2490 'fas fa-arrow-alt-circle' => esc_html__('Arrow Circle', 'king-addons'),
2491 'far fa-arrow-alt-circle' => esc_html__('Arrow Circle Alt', 'king-addons'),
2492 'fas fa-long-arrow-alt' => esc_html__('Long Arrow', 'king-addons'),
2493 'fas fa-chevron' => esc_html__('Chevron', 'king-addons'),
2494 ],
2495 'condition' => [
2496 'pagination_type' => 'default'
2497 ],
2498 ]
2499 );
2500
2501 $this->add_control(
2502 'pagination_prev_next',
2503 [
2504 'label' => esc_html__('Previous & Next Buttons', 'king-addons'),
2505 'type' => Controls_Manager::SWITCHER,
2506 'default' => 'yes',
2507 'return_value' => 'yes',
2508 'condition' => [
2509 'pagination_type' => 'numbered',
2510 ],
2511 ]
2512 );
2513
2514 $this->add_control(
2515 'pagination_prev_text',
2516 [
2517 'label' => esc_html__('Prev Page Text', 'king-addons'),
2518 'type' => Controls_Manager::TEXT,
2519 'dynamic' => [
2520 'active' => true,
2521 ],
2522 'default' => 'Previous Page',
2523 'condition' => [
2524 'pagination_type' => 'numbered',
2525 'pagination_prev_next' => 'yes',
2526 ],
2527 ]
2528 );
2529
2530 $this->add_control(
2531 'pagination_next_text',
2532 [
2533 'label' => esc_html__('Next Page Text', 'king-addons'),
2534 'type' => Controls_Manager::TEXT,
2535 'dynamic' => [
2536 'active' => true,
2537 ],
2538 'default' => 'Next Page',
2539 'condition' => [
2540 'pagination_type' => 'numbered',
2541 'pagination_prev_next' => 'yes',
2542 ]
2543 ]
2544 );
2545
2546 $this->add_control(
2547 'pagination_pn_icon',
2548 [
2549 'label' => esc_html__('Select Icon', 'king-addons'),
2550 'type' => Controls_Manager::SELECT,
2551 'default' => 'fas fa-angle',
2552 'options' => [
2553 'fas fa-angle' => esc_html__('Angle', 'king-addons'),
2554 'fas fa-angle-double' => esc_html__('Angle Double', 'king-addons'),
2555 'fas fa-arrow' => esc_html__('Arrow', 'king-addons'),
2556 'fas fa-arrow-alt-circle' => esc_html__('Arrow Circle', 'king-addons'),
2557 'far fa-arrow-alt-circle' => esc_html__('Arrow Circle Alt', 'king-addons'),
2558 'fas fa-long-arrow-alt' => esc_html__('Long Arrow', 'king-addons'),
2559 'fas fa-chevron' => esc_html__('Chevron', 'king-addons'),
2560 ],
2561 'condition' => [
2562 'pagination_type' => 'numbered',
2563 'pagination_prev_next' => 'yes'
2564 ],
2565 ]
2566 );
2567
2568 $this->add_control(
2569 'pagination_first_last',
2570 [
2571 'label' => esc_html__('First & Last Buttons', 'king-addons'),
2572 'type' => Controls_Manager::SWITCHER,
2573 'default' => 'yes',
2574 'return_value' => 'yes',
2575 'condition' => [
2576 'pagination_type' => 'numbered',
2577 ],
2578 ]
2579 );
2580
2581 $this->add_control(
2582 'pagination_first_text',
2583 [
2584 'label' => esc_html__('First Page Text', 'king-addons'),
2585 'type' => Controls_Manager::TEXT,
2586 'dynamic' => [
2587 'active' => true,
2588 ],
2589 'default' => 'First Page',
2590 'condition' => [
2591 'pagination_type' => 'numbered',
2592 'pagination_first_last' => 'yes',
2593 ],
2594 ]
2595 );
2596
2597 $this->add_control(
2598 'pagination_last_text',
2599 [
2600 'label' => esc_html__('Last Page Text', 'king-addons'),
2601 'type' => Controls_Manager::TEXT,
2602 'dynamic' => [
2603 'active' => true,
2604 ],
2605 'default' => 'Last Page',
2606 'condition' => [
2607 'pagination_type' => 'numbered',
2608 'pagination_first_last' => 'yes',
2609 ]
2610 ]
2611 );
2612
2613 $this->add_control(
2614 'pagination_fl_icon',
2615 [
2616 'label' => esc_html__('Select Icon', 'king-addons'),
2617 'type' => Controls_Manager::SELECT,
2618 'default' => 'fas fa-angle',
2619 'options' => [
2620 'fas fa-angle' => esc_html__('Angle', 'king-addons'),
2621 'fas fa-angle-double' => esc_html__('Angle Double', 'king-addons'),
2622 'fas fa-arrow' => esc_html__('Arrow', 'king-addons'),
2623 'fas fa-arrow-alt-circle' => esc_html__('Arrow Circle', 'king-addons'),
2624 'far fa-arrow-alt-circle' => esc_html__('Arrow Circle Alt', 'king-addons'),
2625 'fas fa-long-arrow-alt' => esc_html__('Long Arrow', 'king-addons'),
2626 'fas fa-chevron' => esc_html__('Chevron', 'king-addons'),
2627 ],
2628 'condition' => [
2629 'pagination_type' => 'numbered',
2630 'pagination_first_last' => 'yes'
2631 ],
2632 ]
2633 );
2634
2635 $this->add_control(
2636 'pagination_disabled_arrows',
2637 [
2638 'label' => esc_html__('Show Disabled Buttons', 'king-addons'),
2639 'type' => Controls_Manager::SWITCHER,
2640 'default' => 'yes',
2641 'return_value' => 'yes',
2642 'condition' => [
2643 'pagination_type' => ['default', 'numbered'],
2644 ],
2645 ]
2646 );
2647
2648 $this->add_control(
2649 'pagination_range',
2650 [
2651 'label' => esc_html__('Range', 'king-addons'),
2652 'type' => Controls_Manager::NUMBER,
2653 'default' => 2,
2654 'min' => 1,
2655 'condition' => [
2656 'pagination_type' => 'numbered',
2657 ]
2658 ]
2659 );
2660
2661 $this->add_control(
2662 'pagination_load_more_text',
2663 [
2664 'label' => esc_html__('Load More Text', 'king-addons'),
2665 'type' => Controls_Manager::TEXT,
2666 'dynamic' => [
2667 'active' => true,
2668 ],
2669 'default' => 'Load More',
2670 'condition' => [
2671 'pagination_type' => 'load-more',
2672 ]
2673 ]
2674 );
2675
2676 $this->add_control(
2677 'pagination_finish_text',
2678 [
2679 'label' => esc_html__('Finish Text', 'king-addons'),
2680 'type' => Controls_Manager::TEXT,
2681 'dynamic' => [
2682 'active' => true,
2683 ],
2684 'default' => 'End of Content.',
2685 'condition' => [
2686 'pagination_type' => ['load-more', 'infinite-scroll'],
2687 ]
2688 ]
2689 );
2690
2691 $this->add_control(
2692 'pagination_animation',
2693 [
2694 'label' => esc_html__('Select Animation', 'king-addons'),
2695 'type' => Controls_Manager::SELECT,
2696 'default' => 'loader-1',
2697 'options' => [
2698 'none' => esc_html__('None', 'king-addons'),
2699 'loader-1' => esc_html__('Loader 1', 'king-addons'),
2700 'loader-2' => esc_html__('Loader 2', 'king-addons'),
2701 'loader-3' => esc_html__('Loader 3', 'king-addons'),
2702 'loader-4' => esc_html__('Loader 4', 'king-addons'),
2703 'loader-5' => esc_html__('Loader 5', 'king-addons'),
2704 'loader-6' => esc_html__('Loader 6', 'king-addons'),
2705 ],
2706 'condition' => [
2707 'pagination_type' => ['load-more', 'infinite-scroll'],
2708 ]
2709 ]
2710 );
2711
2712 $this->add_control(
2713 'pagination_align',
2714 [
2715 'label' => esc_html__('Alignment', 'king-addons'),
2716 'type' => Controls_Manager::CHOOSE,
2717 'options' => [
2718 'left' => [
2719 'title' => esc_html__('Left', 'king-addons'),
2720 'icon' => 'eicon-text-align-left',
2721 ],
2722 'center' => [
2723 'title' => esc_html__('Center', 'king-addons'),
2724 'icon' => 'eicon-text-align-center',
2725 ],
2726 'right' => [
2727 'title' => esc_html__('Right', 'king-addons'),
2728 'icon' => 'eicon-text-align-right',
2729 ],
2730 'justify' => [
2731 'title' => esc_html__('Justified', 'king-addons'),
2732 'icon' => 'eicon-text-align-justify',
2733 ],
2734 ],
2735 'default' => 'center',
2736 'prefix_class' => 'king-addons-grid-pagination-',
2737 'render_type' => 'template',
2738 'separator' => 'before',
2739 'condition' => [
2740 'pagination_type!' => 'infinite-scroll',
2741 ]
2742 ]
2743 );
2744
2745 $this->add_control(
2746 'pagination_notice',
2747 [
2748 'raw' => sprintf(__('<strong>Performance Note:</strong> For grids that include a large number of images (100+), we recommend using the Default and Numbered pagination types because the browser tab can become heavy (especially in Chromium-based browsers).', 'king-addons'), Core::getPluginName()),
2749 'type' => Controls_Manager::RAW_HTML,
2750 'separator' => 'before',
2751 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
2752 ]
2753 );
2754
2755 $this->end_controls_section();
2756
2757 Core::renderProFeaturesSection($this, '', Controls_Manager::RAW_HTML, 'media-grid', [
2758 'Grid Columns 1, 2, 3, 4, 5, 6, 7, 8',
2759 'Masonry Layout',
2760 'Image Slider Columns (Carousel) 1, 2, 3, 4, 5, 6, 7, 8',
2761 'Image Slider Autoplay Options',
2762 'Infinite Scrolling Pagination',
2763 'Random Images Query',
2764 'Image Order',
2765 'Grid Category Filter Deep Linking',
2766 'Grid Category Filter Icons Select',
2767 'Grid Category Filter Count',
2768 'Image Slider Advanced Navigation Positioning',
2769 'Image Slider Advanced Pagination Positioning',
2770 'Lightbox Thumbnail Gallery, Lightbox Image Sharing Button',
2771 'Advanced Grid Loading Animations (Fade In & Slide Up)',
2772 'Advanced Grid Elements Positioning',
2773 'Unlimited Image Overlay Animations',
2774 'Image Overlay GIF Upload Option',
2775 'Image Overlay Blend Mode',
2776 'Image Effects: Zoom, Grayscale, Blur',
2777 'Advanced Image Likes',
2778 'Advanced Image Sharing',
2779 'Grid Item Even/Odd Background Color',
2780 'Title & Category Advanced Link Hover Animations'
2781 ]);
2782
2783
2784 $this->start_controls_section(
2785 'section_style_grid_item',
2786 [
2787 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Grid Item', 'king-addons'),
2788 'tab' => Controls_Manager::TAB_STYLE,
2789 'show_label' => false,
2790 ]
2791 );
2792
2793 $this->add_control(
2794 'grid_item_bg_color',
2795 [
2796 'label' => esc_html__('Background Color', 'king-addons'),
2797 'type' => Controls_Manager::COLOR,
2798 'default' => '#ffffff',
2799 'selectors' => [
2800 '{{WRAPPER}} .king-addons-grid-item-above-content' => 'background-color: {{VALUE}}',
2801 '{{WRAPPER}} .king-addons-grid-item-below-content' => 'background-color: {{VALUE}}',
2802 ],
2803 ]
2804 );
2805
2806 $this->add_control_grid_item_even_bg_color();
2807
2808 $this->add_control(
2809 'grid_item_border_color',
2810 [
2811 'label' => esc_html__('Border Color', 'king-addons'),
2812 'type' => Controls_Manager::COLOR,
2813 'default' => '#E8E8E8',
2814 'selectors' => [
2815 '{{WRAPPER}} .king-addons-grid-item-above-content' => 'border-color: {{VALUE}}',
2816 '{{WRAPPER}} .king-addons-grid-item-below-content' => 'border-color: {{VALUE}}',
2817 ],
2818 ]
2819 );
2820
2821 $this->add_control_grid_item_even_border_color();
2822
2823 $this->add_control(
2824 'grid_item_border_type',
2825 [
2826 'label' => esc_html__('Border Type', 'king-addons'),
2827 'type' => Controls_Manager::SELECT,
2828 'options' => [
2829 'none' => esc_html__('None', 'king-addons'),
2830 'solid' => esc_html__('Solid', 'king-addons'),
2831 'double' => esc_html__('Double', 'king-addons'),
2832 'dotted' => esc_html__('Dotted', 'king-addons'),
2833 'dashed' => esc_html__('Dashed', 'king-addons'),
2834 'groove' => esc_html__('Groove', 'king-addons'),
2835 ],
2836 'default' => 'solid',
2837 'selectors' => [
2838 '{{WRAPPER}} .king-addons-grid-item-above-content' => 'border-style: {{VALUE}};',
2839 '{{WRAPPER}} .king-addons-grid-item-below-content' => 'border-style: {{VALUE}};',
2840 ],
2841 'separator' => 'before',
2842 ]
2843 );
2844
2845 $this->add_control(
2846 'grid_item_border_width',
2847 [
2848 'label' => esc_html__('Border Width', 'king-addons'),
2849 'type' => Controls_Manager::DIMENSIONS,
2850 'size_units' => ['px'],
2851 'default' => [
2852 'top' => 1,
2853 'right' => 1,
2854 'bottom' => 1,
2855 'left' => 1,
2856 ],
2857 'selectors' => [
2858 '{{WRAPPER}} .king-addons-grid-item-above-content' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2859 '{{WRAPPER}} .king-addons-grid-item-below-content' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2860 ],
2861 'condition' => [
2862 'grid_item_border_type!' => 'none',
2863 ],
2864 'render_type' => 'template'
2865 ]
2866 );
2867
2868 $this->add_responsive_control(
2869 'grid_item_padding',
2870 [
2871 'label' => esc_html__('Padding', 'king-addons'),
2872 'type' => Controls_Manager::DIMENSIONS,
2873 'size_units' => ['px', '%'],
2874 'default' => [
2875 'top' => 10,
2876 'right' => 10,
2877 'bottom' => 10,
2878 'left' => 10,
2879 ],
2880 'selectors' => [
2881 '{{WRAPPER}} .king-addons-grid-item-above-content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2882 '{{WRAPPER}} .king-addons-grid-item-below-content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2883 ],
2884 'render_type' => 'template'
2885 ]
2886 );
2887
2888 $this->add_control(
2889 'grid_item_radius',
2890 [
2891 'label' => esc_html__('Border Radius', 'king-addons'),
2892 'type' => Controls_Manager::DIMENSIONS,
2893 'size_units' => ['px', '%'],
2894 'default' => [
2895 'top' => 0,
2896 'right' => 0,
2897 'bottom' => 0,
2898 'left' => 0,
2899 ],
2900 'selectors' => [
2901 '{{WRAPPER}} .king-addons-grid-item' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2902 '{{WRAPPER}} .king-addons-grid-item-above-content' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2903 '{{WRAPPER}} .king-addons-grid-item-below-content' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2904 ],
2905 'separator' => 'before',
2906 ]
2907 );
2908
2909 $this->add_group_control(
2910 Group_Control_Box_Shadow::get_type(),
2911 [
2912 'name' => 'grid_item_shadow',
2913 'selector' => '{{WRAPPER}} .king-addons-grid-item',
2914 ]
2915 );
2916
2917 $this->end_controls_section();
2918
2919
2920 $this->start_controls_section(
2921 'section_style_grid_media',
2922 [
2923 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Grid Media', 'king-addons'),
2924 'tab' => Controls_Manager::TAB_STYLE,
2925 'show_label' => false,
2926 ]
2927 );
2928
2929 $this->add_control(
2930 'grid_media_border_color',
2931 [
2932 'label' => esc_html__('Border Color', 'king-addons'),
2933 'type' => Controls_Manager::COLOR,
2934 'default' => '#E8E8E8',
2935 'selectors' => [
2936 '{{WRAPPER}} .king-addons-grid-image-wrap' => 'border-color: {{VALUE}}',
2937 ],
2938 ]
2939 );
2940
2941 $this->add_control(
2942 'grid_media_border_type',
2943 [
2944 'label' => esc_html__('Border Type', 'king-addons'),
2945 'type' => Controls_Manager::SELECT,
2946 'options' => [
2947 'none' => esc_html__('None', 'king-addons'),
2948 'solid' => esc_html__('Solid', 'king-addons'),
2949 'double' => esc_html__('Double', 'king-addons'),
2950 'dotted' => esc_html__('Dotted', 'king-addons'),
2951 'dashed' => esc_html__('Dashed', 'king-addons'),
2952 'groove' => esc_html__('Groove', 'king-addons'),
2953 ],
2954 'default' => 'none',
2955 'selectors' => [
2956 '{{WRAPPER}} .king-addons-grid-image-wrap' => 'border-style: {{VALUE}};',
2957 ],
2958 ]
2959 );
2960
2961 $this->add_control(
2962 'grid_media_border_width',
2963 [
2964 'label' => esc_html__('Border Width', 'king-addons'),
2965 'type' => Controls_Manager::DIMENSIONS,
2966 'size_units' => ['px'],
2967 'default' => [
2968 'top' => 1,
2969 'right' => 1,
2970 'bottom' => 1,
2971 'left' => 1,
2972 ],
2973 'selectors' => [
2974 '{{WRAPPER}} .king-addons-grid-image-wrap' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2975 ],
2976 'condition' => [
2977 'grid_media_border_type!' => 'none',
2978 ],
2979 ]
2980 );
2981
2982 $this->add_control(
2983 'grid_media_radius',
2984 [
2985 'label' => esc_html__('Border Radius', 'king-addons'),
2986 'type' => Controls_Manager::DIMENSIONS,
2987 'size_units' => ['px', '%'],
2988 'default' => [
2989 'top' => 0,
2990 'right' => 0,
2991 'bottom' => 0,
2992 'left' => 0,
2993 ],
2994 'selectors' => [
2995 '{{WRAPPER}} .king-addons-grid-image-wrap' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2996 ],
2997 'separator' => 'before',
2998 ]
2999 );
3000
3001 $this->end_controls_section();
3002
3003
3004 $this->start_controls_section(
3005 'section_style_overlay',
3006 [
3007 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Media Overlay', 'king-addons'),
3008 'tab' => Controls_Manager::TAB_STYLE,
3009 'show_label' => false,
3010 ]
3011 );
3012
3013 $this->add_control_overlay_color();
3014
3015 $this->add_control_overlay_blend_mode();
3016
3017 $this->add_control_overlay_border_color();
3018
3019 $this->add_control_overlay_border_type();
3020
3021 $this->add_control_overlay_border_width();
3022
3023 $this->add_control(
3024 'overlay_radius',
3025 [
3026 'label' => esc_html__('Border Radius', 'king-addons'),
3027 'type' => Controls_Manager::DIMENSIONS,
3028 'size_units' => ['px', '%'],
3029 'default' => [
3030 'top' => 0,
3031 'right' => 0,
3032 'bottom' => 0,
3033 'left' => 0,
3034 ],
3035 'selectors' => [
3036 '{{WRAPPER}} .king-addons-grid-media-hover-bg' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3037 ],
3038 'separator' => 'before',
3039 ]
3040 );
3041
3042 $this->end_controls_section();
3043
3044
3045 $this->start_controls_section(
3046 'section_style_title',
3047 [
3048 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Title', 'king-addons'),
3049 'tab' => Controls_Manager::TAB_STYLE,
3050 'show_label' => false,
3051 ]
3052 );
3053
3054 $this->start_controls_tabs('tabs_grid_title_style');
3055
3056 $this->start_controls_tab(
3057 'tab_grid_title_normal',
3058 [
3059 'label' => esc_html__('Normal', 'king-addons'),
3060 ]
3061 );
3062
3063 $this->add_control(
3064 'title_color',
3065 [
3066 'label' => esc_html__('Color', 'king-addons'),
3067 'type' => Controls_Manager::COLOR,
3068 'default' => '#ffffff',
3069 'selectors' => [
3070 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'color: {{VALUE}}',
3071 '{{WRAPPER}} .king-addons-grid-item-title .inner-block span' => 'color: {{VALUE}}'
3072 ],
3073 ]
3074 );
3075
3076 $this->add_control(
3077 'title_bg_color',
3078 [
3079 'label' => esc_html__('Background Color', 'king-addons'),
3080 'type' => Controls_Manager::COLOR,
3081 'selectors' => [
3082 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'background-color: {{VALUE}}',
3083 '{{WRAPPER}} .king-addons-grid-item-title .inner-block span' => 'background-color: {{VALUE}}'
3084 ]
3085 ]
3086 );
3087
3088 $this->add_control(
3089 'title_border_color',
3090 [
3091 'label' => esc_html__('Border Color', 'king-addons'),
3092 'type' => Controls_Manager::COLOR,
3093 'default' => '#E8E8E8',
3094 'selectors' => [
3095 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'border-color: {{VALUE}}',
3096 '{{WRAPPER}} .king-addons-grid-item-title .inner-block span' => 'border-color: {{VALUE}}',
3097 ],
3098 'separator' => 'after',
3099 ]
3100 );
3101
3102 $this->end_controls_tab();
3103
3104 $this->start_controls_tab(
3105 'tab_grid_title_hover',
3106 [
3107 'label' => esc_html__('Hover', 'king-addons'),
3108 ]
3109 );
3110
3111 $this->add_control(
3112 'title_color_hr',
3113 [
3114 'label' => esc_html__('Color', 'king-addons'),
3115 'type' => Controls_Manager::COLOR,
3116 'default' => '#ffffff',
3117 'selectors' => [
3118 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a:hover' => 'color: {{VALUE}}',
3119 '{{WRAPPER}} .king-addons-grid-item-title .inner-block span:hover' => 'color: {{VALUE}}'
3120 ],
3121 ]
3122 );
3123
3124 $this->add_control(
3125 'title_bg_color_hr',
3126 [
3127 'label' => esc_html__('Background Color', 'king-addons'),
3128 'type' => Controls_Manager::COLOR,
3129 'selectors' => [
3130 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a:hover' => 'background-color: {{VALUE}}',
3131 '{{WRAPPER}} .king-addons-grid-item-title .inner-block span:hover' => 'background-color: {{VALUE}}'
3132 ]
3133 ]
3134 );
3135
3136 $this->add_control(
3137 'title_border_color_hr',
3138 [
3139 'label' => esc_html__('Border Color', 'king-addons'),
3140 'type' => Controls_Manager::COLOR,
3141 'default' => '#E8E8E8',
3142 'selectors' => [
3143 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a:hover' => 'border-color: {{VALUE}}',
3144 '{{WRAPPER}} .king-addons-grid-item-title .inner-block span:hover' => 'border-color: {{VALUE}}'
3145 ],
3146 ]
3147 );
3148
3149 $this->add_control_title_pointer_color_hr();
3150
3151 $this->end_controls_tab();
3152
3153 $this->end_controls_tabs();
3154
3155 $this->add_control_title_pointer();
3156
3157 $this->add_control_title_pointer_height();
3158
3159 $this->add_control_title_pointer_animation();
3160
3161 $this->add_control(
3162 'title_transition_duration',
3163 [
3164 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
3165 'type' => Controls_Manager::NUMBER,
3166 'default' => 0.3,
3167 'min' => 0,
3168 'max' => 5,
3169 'step' => 0.1,
3170 'selectors' => [
3171 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'transition-duration: {{VALUE}}s',
3172 '{{WRAPPER}} .king-addons-grid-item-title .inner-block span' => 'transition-duration: {{VALUE}}s',
3173 '{{WRAPPER}} .king-addons-grid-item-title .king-addons-pointer-item:before' => 'transition-duration: {{VALUE}}s',
3174 '{{WRAPPER}} .king-addons-grid-item-title .king-addons-pointer-item:after' => 'transition-duration: {{VALUE}}s',
3175 ],
3176 'separator' => 'after',
3177 ]
3178 );
3179
3180 $this->add_group_control(
3181 Group_Control_Typography::get_type(),
3182 [
3183 'name' => 'title_typography',
3184 'selector' => '{{WRAPPER}} .king-addons-grid-item-title a, {{WRAPPER}} .king-addons-grid-item-title span'
3185 ]
3186 );
3187
3188 $this->add_control(
3189 'title_border_type',
3190 [
3191 'label' => esc_html__('Border Type', 'king-addons'),
3192 'type' => Controls_Manager::SELECT,
3193 'options' => [
3194 'none' => esc_html__('None', 'king-addons'),
3195 'solid' => esc_html__('Solid', 'king-addons'),
3196 'double' => esc_html__('Double', 'king-addons'),
3197 'dotted' => esc_html__('Dotted', 'king-addons'),
3198 'dashed' => esc_html__('Dashed', 'king-addons'),
3199 'groove' => esc_html__('Groove', 'king-addons'),
3200 ],
3201 'default' => 'none',
3202 'selectors' => [
3203 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'border-style: {{VALUE}};',
3204 '{{WRAPPER}} .king-addons-grid-item-title .inner-block span' => 'border-style: {{VALUE}};'
3205 ],
3206 'render_type' => 'template',
3207 'separator' => 'before',
3208 ]
3209 );
3210
3211 $this->add_control(
3212 'title_border_width',
3213 [
3214 'label' => esc_html__('Border Width', 'king-addons'),
3215 'type' => Controls_Manager::DIMENSIONS,
3216 'size_units' => ['px'],
3217 'default' => [
3218 'top' => 1,
3219 'right' => 1,
3220 'bottom' => 1,
3221 'left' => 1,
3222 ],
3223 'selectors' => [
3224 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3225 '{{WRAPPER}} .king-addons-grid-item-title .inner-block span' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};'
3226 ],
3227 'render_type' => 'template',
3228 'condition' => [
3229 'title_border_type!' => 'none',
3230 ],
3231 ]
3232 );
3233
3234 $this->add_responsive_control(
3235 'title_padding',
3236 [
3237 'label' => esc_html__('Padding', 'king-addons'),
3238 'type' => Controls_Manager::DIMENSIONS,
3239 'size_units' => ['px', '%'],
3240 'default' => [
3241 'top' => 0,
3242 'right' => 0,
3243 'bottom' => 0,
3244 'left' => 0,
3245 ],
3246 'selectors' => [
3247 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3248 '{{WRAPPER}} .king-addons-grid-item-title .inner-block span' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};'
3249 ],
3250 'render_type' => 'template',
3251 'separator' => 'before',
3252 ]
3253 );
3254
3255 $this->add_responsive_control(
3256 'title_margin',
3257 [
3258 'label' => esc_html__('Margin', 'king-addons'),
3259 'type' => Controls_Manager::DIMENSIONS,
3260 'size_units' => ['px', '%'],
3261 'default' => [
3262 'top' => 0,
3263 'right' => 0,
3264 'bottom' => 0,
3265 'left' => 0,
3266 ],
3267 'selectors' => [
3268 '{{WRAPPER}} .king-addons-grid-item-title .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3269 ],
3270 'render_type' => 'template',
3271 ]
3272 );
3273
3274 $this->end_controls_section();
3275
3276
3277 $this->start_controls_section(
3278 'section_style_caption',
3279 [
3280 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Caption', 'king-addons'),
3281 'tab' => Controls_Manager::TAB_STYLE,
3282 'show_label' => false,
3283 ]
3284 );
3285
3286 $this->add_control(
3287 'caption_color',
3288 [
3289 'label' => esc_html__('Color', 'king-addons'),
3290 'type' => Controls_Manager::COLOR,
3291 'default' => '#ffffff',
3292 'selectors' => [
3293 '{{WRAPPER}} .king-addons-grid-item-caption .inner-block p' => 'color: {{VALUE}}',
3294 ],
3295 ]
3296 );
3297
3298 $this->add_control(
3299 'caption_bg_color',
3300 [
3301 'label' => esc_html__('Background Color', 'king-addons'),
3302 'type' => Controls_Manager::COLOR,
3303 'selectors' => [
3304 '{{WRAPPER}} .king-addons-grid-item-caption .inner-block' => 'background-color: {{VALUE}}',
3305 ]
3306 ]
3307 );
3308
3309 $this->add_control(
3310 'caption_border_color',
3311 [
3312 'label' => esc_html__('Border Color', 'king-addons'),
3313 'type' => Controls_Manager::COLOR,
3314 'default' => '#E8E8E8',
3315 'selectors' => [
3316 '{{WRAPPER}} .king-addons-grid-item-caption .inner-block' => 'border-color: {{VALUE}}',
3317 ],
3318 'separator' => 'after',
3319 ]
3320 );
3321
3322 $this->add_group_control(
3323 Group_Control_Typography::get_type(),
3324 [
3325 'name' => 'caption_typography',
3326 'selector' => '{{WRAPPER}} .king-addons-grid-item-caption'
3327 ]
3328 );
3329
3330 $this->add_group_control(
3331 Group_Control_Typography::get_type(),
3332 [
3333 'name' => 'caption_dropcap_typography',
3334 'label' => esc_html__('Drop Cap Typography', 'king-addons'),
3335 'selector' => '{{WRAPPER}} .king-addons-grid-item-caption.king-addons-enable-dropcap p:first-child:first-letter'
3336 ]
3337 );
3338
3339 $this->add_responsive_control(
3340 'caption_justify',
3341 [
3342 'label' => esc_html__('Justify Text', 'king-addons'),
3343 'type' => Controls_Manager::SWITCHER,
3344 'default' => '',
3345 'widescreen_default' => '',
3346 'laptop_default' => '',
3347 'tablet_extra_default' => '',
3348 'tablet_default' => '',
3349 'mobile_extra_default' => '',
3350 'mobile_default' => '',
3351 'selectors_dictionary' => [
3352 '' => '',
3353 'yes' => 'text-align: justify;'
3354 ],
3355 'selectors' => [
3356 '{{WRAPPER}} .king-addons-grid-item-caption .inner-block' => '{{VALUE}}',
3357 ],
3358 'render_type' => 'template',
3359 ]
3360 );
3361
3362 $this->add_control(
3363 'caption_border_type',
3364 [
3365 'label' => esc_html__('Border Type', 'king-addons'),
3366 'type' => Controls_Manager::SELECT,
3367 'options' => [
3368 'none' => esc_html__('None', 'king-addons'),
3369 'solid' => esc_html__('Solid', 'king-addons'),
3370 'double' => esc_html__('Double', 'king-addons'),
3371 'dotted' => esc_html__('Dotted', 'king-addons'),
3372 'dashed' => esc_html__('Dashed', 'king-addons'),
3373 'groove' => esc_html__('Groove', 'king-addons'),
3374 ],
3375 'default' => 'none',
3376 'selectors' => [
3377 '{{WRAPPER}} .king-addons-grid-item-caption .inner-block' => 'border-style: {{VALUE}};',
3378 ],
3379 'render_type' => 'template',
3380 'separator' => 'before',
3381 ]
3382 );
3383
3384 $this->add_control(
3385 'caption_border_width',
3386 [
3387 'label' => esc_html__('Border Width', 'king-addons'),
3388 'type' => Controls_Manager::DIMENSIONS,
3389 'size_units' => ['px'],
3390 'default' => [
3391 'top' => 1,
3392 'right' => 1,
3393 'bottom' => 1,
3394 'left' => 1,
3395 ],
3396 'selectors' => [
3397 '{{WRAPPER}} .king-addons-grid-item-caption .inner-block' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3398 ],
3399 'render_type' => 'template',
3400 'condition' => [
3401 'caption_border_type!' => 'none',
3402 ],
3403 ]
3404 );
3405
3406 $this->add_responsive_control(
3407 'caption_padding',
3408 [
3409 'label' => esc_html__('Padding', 'king-addons'),
3410 'type' => Controls_Manager::DIMENSIONS,
3411 'size_units' => ['px', '%'],
3412 'default' => [
3413 'top' => 0,
3414 'right' => 0,
3415 'bottom' => 0,
3416 'left' => 0,
3417 ],
3418 'selectors' => [
3419 '{{WRAPPER}} .king-addons-grid-item-caption .inner-block' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3420 ],
3421 'render_type' => 'template',
3422 'separator' => 'before',
3423 ]
3424 );
3425
3426 $this->add_responsive_control(
3427 'caption_margin',
3428 [
3429 'label' => esc_html__('Margin', 'king-addons'),
3430 'type' => Controls_Manager::DIMENSIONS,
3431 'size_units' => ['px', '%'],
3432 'default' => [
3433 'top' => 0,
3434 'right' => 0,
3435 'bottom' => 0,
3436 'left' => 0,
3437 ],
3438 'render_type' => 'template',
3439 'selectors' => [
3440 '{{WRAPPER}} .king-addons-grid-item-caption .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3441 ],
3442 ]
3443 );
3444
3445 $this->end_controls_section();
3446
3447
3448 $this->start_controls_section(
3449 'section_style_date',
3450 [
3451 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Date', 'king-addons'),
3452 'tab' => Controls_Manager::TAB_STYLE,
3453 'show_label' => false,
3454 ]
3455 );
3456
3457 $this->add_control(
3458 'date_color',
3459 [
3460 'label' => esc_html__('Color', 'king-addons'),
3461 'type' => Controls_Manager::COLOR,
3462 'default' => '#ffffff',
3463 'selectors' => [
3464 '{{WRAPPER}} .king-addons-grid-item-date .inner-block' => 'color: {{VALUE}}',
3465 ],
3466 ]
3467 );
3468
3469 $this->add_control(
3470 'date_bg_color',
3471 [
3472 'label' => esc_html__('Background Color', 'king-addons'),
3473 'type' => Controls_Manager::COLOR,
3474 'selectors' => [
3475 '{{WRAPPER}} .king-addons-grid-item-date .inner-block > span' => 'background-color: {{VALUE}}',
3476 ]
3477 ]
3478 );
3479
3480 $this->add_control(
3481 'date_border_color',
3482 [
3483 'label' => esc_html__('Border Color', 'king-addons'),
3484 'type' => Controls_Manager::COLOR,
3485 'default' => '#E8E8E8',
3486 'selectors' => [
3487 '{{WRAPPER}} .king-addons-grid-item-date .inner-block > span' => 'border-color: {{VALUE}}',
3488 ]
3489 ]
3490 );
3491
3492 $this->add_control(
3493 'date_extra_text_color',
3494 [
3495 'label' => esc_html__('Extra Text Color', 'king-addons'),
3496 'type' => Controls_Manager::COLOR,
3497 'default' => '#9C9C9C',
3498 'selectors' => [
3499 '{{WRAPPER}} .king-addons-grid-item-date .inner-block span[class*="king-addons-grid-extra-text"]' => 'color: {{VALUE}}',
3500 ],
3501 ]
3502 );
3503
3504 $this->add_control(
3505 'date_extra_icon_color',
3506 [
3507 'label' => esc_html__('Extra Icon Color', 'king-addons'),
3508 'type' => Controls_Manager::COLOR,
3509 'default' => '#9C9C9C',
3510 'selectors' => [
3511 '{{WRAPPER}} .king-addons-grid-item-date .inner-block [class*="king-addons-grid-extra-icon"] i' => 'color: {{VALUE}}',
3512 '{{WRAPPER}} .king-addons-grid-item-date .inner-block [class*="king-addons-grid-extra-icon"] svg' => 'fill: {{VALUE}}'
3513 ],
3514 'separator' => 'after',
3515 ]
3516 );
3517
3518 $this->add_group_control(
3519 Group_Control_Typography::get_type(),
3520 [
3521 'name' => 'date_typography',
3522 'selector' => '{{WRAPPER}} .king-addons-grid-item-date'
3523 ]
3524 );
3525
3526 $this->add_control(
3527 'date_border_type',
3528 [
3529 'label' => esc_html__('Border Type', 'king-addons'),
3530 'type' => Controls_Manager::SELECT,
3531 'options' => [
3532 'none' => esc_html__('None', 'king-addons'),
3533 'solid' => esc_html__('Solid', 'king-addons'),
3534 'double' => esc_html__('Double', 'king-addons'),
3535 'dotted' => esc_html__('Dotted', 'king-addons'),
3536 'dashed' => esc_html__('Dashed', 'king-addons'),
3537 'groove' => esc_html__('Groove', 'king-addons'),
3538 ],
3539 'default' => 'none',
3540 'selectors' => [
3541 '{{WRAPPER}} .king-addons-grid-item-date .inner-block > span' => 'border-style: {{VALUE}};',
3542 ],
3543 'render_type' => 'template',
3544 'separator' => 'before',
3545 ]
3546 );
3547
3548 $this->add_control(
3549 'date_border_width',
3550 [
3551 'label' => esc_html__('Border Width', 'king-addons'),
3552 'type' => Controls_Manager::DIMENSIONS,
3553 'size_units' => ['px'],
3554 'default' => [
3555 'top' => 1,
3556 'right' => 1,
3557 'bottom' => 1,
3558 'left' => 1,
3559 ],
3560 'selectors' => [
3561 '{{WRAPPER}} .king-addons-grid-item-date .inner-block > span' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3562 ],
3563 'render_type' => 'template',
3564 'condition' => [
3565 'date_border_type!' => 'none',
3566 ],
3567 ]
3568 );
3569
3570 $this->add_control(
3571 'date_text_spacing',
3572 [
3573 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
3574 'type' => Controls_Manager::SLIDER,
3575 'size_units' => ['px'],
3576 'range' => [
3577 'px' => [
3578 'min' => 0,
3579 'max' => 25,
3580 ],
3581 ],
3582 'default' => [
3583 'unit' => 'px',
3584 'size' => 5,
3585 ],
3586 'selectors' => [
3587 '{{WRAPPER}} .king-addons-grid-item-date .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
3588 '{{WRAPPER}} .king-addons-grid-item-date .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
3589 ],
3590 'separator' => 'before',
3591 ]
3592 );
3593
3594 $this->add_control(
3595 'date_icon_spacing',
3596 [
3597 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
3598 'type' => Controls_Manager::SLIDER,
3599 'size_units' => ['px'],
3600 'range' => [
3601 'px' => [
3602 'min' => 0,
3603 'max' => 25,
3604 ],
3605 ],
3606 'default' => [
3607 'unit' => 'px',
3608 'size' => 5,
3609 ],
3610 'selectors' => [
3611 '{{WRAPPER}} .king-addons-grid-item-date .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
3612 '{{WRAPPER}} .king-addons-grid-item-date .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
3613 ],
3614 ]
3615 );
3616
3617 $this->add_responsive_control(
3618 'date_padding',
3619 [
3620 'label' => esc_html__('Padding', 'king-addons'),
3621 'type' => Controls_Manager::DIMENSIONS,
3622 'size_units' => ['px', '%'],
3623 'default' => [
3624 'top' => 0,
3625 'right' => 0,
3626 'bottom' => 0,
3627 'left' => 0,
3628 ],
3629 'selectors' => [
3630 '{{WRAPPER}} .king-addons-grid-item-date .inner-block > span' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3631 ],
3632 'render_type' => 'template',
3633 'separator' => 'before',
3634 ]
3635 );
3636
3637 $this->add_responsive_control(
3638 'date_margin',
3639 [
3640 'label' => esc_html__('Margin', 'king-addons'),
3641 'type' => Controls_Manager::DIMENSIONS,
3642 'size_units' => ['px', '%'],
3643 'default' => [
3644 'top' => 0,
3645 'right' => 0,
3646 'bottom' => 0,
3647 'left' => 0,
3648 ],
3649 'render_type' => 'template',
3650 'selectors' => [
3651 '{{WRAPPER}} .king-addons-grid-item-date .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3652 ],
3653 ]
3654 );
3655
3656 $this->end_controls_section();
3657
3658
3659 $this->start_controls_section(
3660 'section_style_time',
3661 [
3662 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Time', 'king-addons'),
3663 'tab' => Controls_Manager::TAB_STYLE,
3664 'show_label' => false,
3665 ]
3666 );
3667
3668 $this->add_control(
3669 'time_color',
3670 [
3671 'label' => esc_html__('Color', 'king-addons'),
3672 'type' => Controls_Manager::COLOR,
3673 'default' => '#ffffff',
3674 'selectors' => [
3675 '{{WRAPPER}} .king-addons-grid-item-time .inner-block' => 'color: {{VALUE}}',
3676 ],
3677 ]
3678 );
3679
3680 $this->add_control(
3681 'time_bg_color',
3682 [
3683 'label' => esc_html__('Background Color', 'king-addons'),
3684 'type' => Controls_Manager::COLOR,
3685 'selectors' => [
3686 '{{WRAPPER}} .king-addons-grid-item-time .inner-block > span' => 'background-color: {{VALUE}}',
3687 ]
3688 ]
3689 );
3690
3691 $this->add_control(
3692 'time_border_color',
3693 [
3694 'label' => esc_html__('Border Color', 'king-addons'),
3695 'type' => Controls_Manager::COLOR,
3696 'default' => '#E8E8E8',
3697 'selectors' => [
3698 '{{WRAPPER}} .king-addons-grid-item-time .inner-block > span' => 'border-color: {{VALUE}}',
3699 ],
3700 ]
3701 );
3702
3703 $this->add_control(
3704 'time_extra_text_color',
3705 [
3706 'label' => esc_html__('Extra Text Color', 'king-addons'),
3707 'type' => Controls_Manager::COLOR,
3708 'default' => '#9C9C9C',
3709 'selectors' => [
3710 '{{WRAPPER}} .king-addons-grid-item-time .inner-block span[class*="king-addons-grid-extra-text"]' => 'color: {{VALUE}}',
3711 ],
3712 ]
3713 );
3714
3715 $this->add_control(
3716 'time_extra_icon_color',
3717 [
3718 'label' => esc_html__('Extra Icon Color', 'king-addons'),
3719 'type' => Controls_Manager::COLOR,
3720 'default' => '#9C9C9C',
3721 'selectors' => [
3722 '{{WRAPPER}} .king-addons-grid-item-time .inner-block [class*="king-addons-grid-extra-icon"] i' => 'color: {{VALUE}}',
3723 '{{WRAPPER}} .king-addons-grid-item-time .inner-block [class*="king-addons-grid-extra-icon"] svg' => 'fill: {{VALUE}}'
3724 ],
3725 'separator' => 'after',
3726 ]
3727 );
3728
3729 $this->add_group_control(
3730 Group_Control_Typography::get_type(),
3731 [
3732 'name' => 'time_typography',
3733 'selector' => '{{WRAPPER}} .king-addons-grid-item-time'
3734 ]
3735 );
3736
3737 $this->add_control(
3738 'time_border_type',
3739 [
3740 'label' => esc_html__('Border Type', 'king-addons'),
3741 'type' => Controls_Manager::SELECT,
3742 'options' => [
3743 'none' => esc_html__('None', 'king-addons'),
3744 'solid' => esc_html__('Solid', 'king-addons'),
3745 'double' => esc_html__('Double', 'king-addons'),
3746 'dotted' => esc_html__('Dotted', 'king-addons'),
3747 'dashed' => esc_html__('Dashed', 'king-addons'),
3748 'groove' => esc_html__('Groove', 'king-addons'),
3749 ],
3750 'default' => 'none',
3751 'selectors' => [
3752 '{{WRAPPER}} .king-addons-grid-item-time .inner-block > span' => 'border-style: {{VALUE}};',
3753 ],
3754 'render_type' => 'template',
3755 'separator' => 'before',
3756 ]
3757 );
3758
3759 $this->add_control(
3760 'time_border_width',
3761 [
3762 'label' => esc_html__('Border Width', 'king-addons'),
3763 'type' => Controls_Manager::DIMENSIONS,
3764 'size_units' => ['px'],
3765 'default' => [
3766 'top' => 1,
3767 'right' => 1,
3768 'bottom' => 1,
3769 'left' => 1,
3770 ],
3771 'selectors' => [
3772 '{{WRAPPER}} .king-addons-grid-item-time .inner-block > span' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3773 ],
3774 'render_type' => 'template',
3775 'condition' => [
3776 'time_border_type!' => 'none',
3777 ],
3778 ]
3779 );
3780
3781 $this->add_control(
3782 'time_text_spacing',
3783 [
3784 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
3785 'type' => Controls_Manager::SLIDER,
3786 'size_units' => ['px'],
3787 'range' => [
3788 'px' => [
3789 'min' => 0,
3790 'max' => 25,
3791 ],
3792 ],
3793 'default' => [
3794 'unit' => 'px',
3795 'size' => 5,
3796 ],
3797 'selectors' => [
3798 '{{WRAPPER}} .king-addons-grid-item-time .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
3799 '{{WRAPPER}} .king-addons-grid-item-time .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
3800 ],
3801 'separator' => 'before',
3802 ]
3803 );
3804
3805 $this->add_control(
3806 'time_icon_spacing',
3807 [
3808 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
3809 'type' => Controls_Manager::SLIDER,
3810 'size_units' => ['px'],
3811 'range' => [
3812 'px' => [
3813 'min' => 0,
3814 'max' => 25,
3815 ],
3816 ],
3817 'default' => [
3818 'unit' => 'px',
3819 'size' => 5,
3820 ],
3821 'selectors' => [
3822 '{{WRAPPER}} .king-addons-grid-item-time .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
3823 '{{WRAPPER}} .king-addons-grid-item-time .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
3824 ],
3825 ]
3826 );
3827
3828 $this->add_responsive_control(
3829 'time_padding',
3830 [
3831 'label' => esc_html__('Padding', 'king-addons'),
3832 'type' => Controls_Manager::DIMENSIONS,
3833 'size_units' => ['px', '%'],
3834 'default' => [
3835 'top' => 0,
3836 'right' => 0,
3837 'bottom' => 0,
3838 'left' => 0,
3839 ],
3840 'selectors' => [
3841 '{{WRAPPER}} .king-addons-grid-item-time .inner-block > span' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3842 ],
3843 'render_type' => 'template',
3844 'separator' => 'before',
3845 ]
3846 );
3847
3848 $this->add_responsive_control(
3849 'time_margin',
3850 [
3851 'label' => esc_html__('Margin', 'king-addons'),
3852 'type' => Controls_Manager::DIMENSIONS,
3853 'size_units' => ['px', '%'],
3854 'default' => [
3855 'top' => 0,
3856 'right' => 0,
3857 'bottom' => 0,
3858 'left' => 0,
3859 ],
3860 'selectors' => [
3861 '{{WRAPPER}} .king-addons-grid-item-time .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3862 ],
3863 'render_type' => 'template',
3864 ]
3865 );
3866
3867 $this->end_controls_section();
3868
3869
3870 $this->start_controls_section(
3871 'section_style_author',
3872 [
3873 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Author', 'king-addons'),
3874 'tab' => Controls_Manager::TAB_STYLE,
3875 'show_label' => false,
3876 ]
3877 );
3878
3879 $this->start_controls_tabs('tabs_grid_author_style');
3880
3881 $this->start_controls_tab(
3882 'tab_grid_author_normal',
3883 [
3884 'label' => esc_html__('Normal', 'king-addons'),
3885 ]
3886 );
3887
3888 $this->add_control(
3889 'author_color',
3890 [
3891 'label' => esc_html__('Color', 'king-addons'),
3892 'type' => Controls_Manager::COLOR,
3893 'default' => '#ffffff',
3894 'selectors' => [
3895 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'color: {{VALUE}}',
3896 ],
3897 ]
3898 );
3899
3900 $this->add_control(
3901 'author_bg_color',
3902 [
3903 'label' => esc_html__('Background Color', 'king-addons'),
3904 'type' => Controls_Manager::COLOR,
3905 'selectors' => [
3906 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'background-color: {{VALUE}}',
3907 ]
3908 ]
3909 );
3910
3911 $this->add_control(
3912 'author_border_color',
3913 [
3914 'label' => esc_html__('Border Color', 'king-addons'),
3915 'type' => Controls_Manager::COLOR,
3916 'default' => '#E8E8E8',
3917 'selectors' => [
3918 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'border-color: {{VALUE}}',
3919 ],
3920 ]
3921 );
3922
3923 $this->add_control(
3924 'author_extra_text_color',
3925 [
3926 'label' => esc_html__('Extra Text Color', 'king-addons'),
3927 'type' => Controls_Manager::COLOR,
3928 'default' => '#9C9C9C',
3929 'selectors' => [
3930 '{{WRAPPER}} .king-addons-grid-item-author .inner-block span[class*="king-addons-grid-extra-text"]' => 'color: {{VALUE}}',
3931 ],
3932 'separator' => 'after',
3933 ]
3934 );
3935
3936 $this->end_controls_tab();
3937
3938 $this->start_controls_tab(
3939 'tab_grid_author_hover',
3940 [
3941 'label' => esc_html__('Hover', 'king-addons'),
3942 ]
3943 );
3944
3945 $this->add_control(
3946 'author_color_hr',
3947 [
3948 'label' => esc_html__('Color', 'king-addons'),
3949 'type' => Controls_Manager::COLOR,
3950 'default' => '#5B03FF',
3951 'selectors' => [
3952 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a:hover' => 'color: {{VALUE}}',
3953 ],
3954 ]
3955 );
3956
3957 $this->add_control(
3958 'author_bg_color_hr',
3959 [
3960 'label' => esc_html__('Background Color', 'king-addons'),
3961 'type' => Controls_Manager::COLOR,
3962 'selectors' => [
3963 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a:hover' => 'background-color: {{VALUE}}',
3964 ]
3965 ]
3966 );
3967
3968 $this->add_control(
3969 'author_border_color_hr',
3970 [
3971 'label' => esc_html__('Border Color', 'king-addons'),
3972 'type' => Controls_Manager::COLOR,
3973 'default' => '#E8E8E8',
3974 'selectors' => [
3975 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a:hover' => 'border-color: {{VALUE}}',
3976 ],
3977 'separator' => 'after',
3978 ]
3979 );
3980
3981 $this->end_controls_tab();
3982
3983 $this->end_controls_tabs();
3984
3985 $this->add_control(
3986 'author_transition_duration',
3987 [
3988 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
3989 'type' => Controls_Manager::NUMBER,
3990 'default' => 0.1,
3991 'min' => 0,
3992 'max' => 5,
3993 'step' => 0.1,
3994 'selectors' => [
3995 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'transition-duration: {{VALUE}}s',
3996 ],
3997 'separator' => 'after',
3998 ]
3999 );
4000
4001 $this->add_group_control(
4002 Group_Control_Typography::get_type(),
4003 [
4004 'name' => 'author_typography',
4005 'selector' => '{{WRAPPER}} .king-addons-grid-item-author'
4006 ]
4007 );
4008
4009 $this->add_control(
4010 'author_border_type',
4011 [
4012 'label' => esc_html__('Border Type', 'king-addons'),
4013 'type' => Controls_Manager::SELECT,
4014 'options' => [
4015 'none' => esc_html__('None', 'king-addons'),
4016 'solid' => esc_html__('Solid', 'king-addons'),
4017 'double' => esc_html__('Double', 'king-addons'),
4018 'dotted' => esc_html__('Dotted', 'king-addons'),
4019 'dashed' => esc_html__('Dashed', 'king-addons'),
4020 'groove' => esc_html__('Groove', 'king-addons'),
4021 ],
4022 'default' => 'none',
4023 'selectors' => [
4024 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'border-style: {{VALUE}};',
4025 ],
4026 'render_type' => 'template',
4027 'separator' => 'before',
4028 ]
4029 );
4030
4031 $this->add_control(
4032 'author_border_width',
4033 [
4034 'label' => esc_html__('Border Width', 'king-addons'),
4035 'type' => Controls_Manager::DIMENSIONS,
4036 'size_units' => ['px'],
4037 'default' => [
4038 'top' => 1,
4039 'right' => 1,
4040 'bottom' => 1,
4041 'left' => 1,
4042 ],
4043 'selectors' => [
4044 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4045 ],
4046 'render_type' => 'template',
4047 'condition' => [
4048 'author_border_type!' => 'none',
4049 ],
4050 ]
4051 );
4052
4053 $this->add_control(
4054 'author_border_radius',
4055 [
4056 'label' => esc_html__('Border Radius', 'king-addons'),
4057 'type' => Controls_Manager::DIMENSIONS,
4058 'size_units' => ['px'],
4059 'default' => [
4060 'top' => 0,
4061 'right' => 0,
4062 'bottom' => 0,
4063 'left' => 0,
4064 ],
4065 'selectors' => [
4066 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4067 ]
4068 ]
4069 );
4070
4071 $this->add_control(
4072 'author_text_spacing',
4073 [
4074 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
4075 'type' => Controls_Manager::SLIDER,
4076 'size_units' => ['px'],
4077 'range' => [
4078 'px' => [
4079 'min' => 0,
4080 'max' => 25,
4081 ],
4082 ],
4083 'default' => [
4084 'unit' => 'px',
4085 'size' => 5,
4086 ],
4087 'selectors' => [
4088 '{{WRAPPER}} .king-addons-grid-item-author .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
4089 '{{WRAPPER}} .king-addons-grid-item-author .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
4090 ],
4091 'separator' => 'before',
4092 ]
4093 );
4094
4095 $this->add_control(
4096 'author_icon_spacing',
4097 [
4098 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
4099 'type' => Controls_Manager::SLIDER,
4100 'size_units' => ['px'],
4101 'range' => [
4102 'px' => [
4103 'min' => 0,
4104 'max' => 25,
4105 ],
4106 ],
4107 'default' => [
4108 'unit' => 'px',
4109 'size' => 5,
4110 ],
4111 'selectors' => [
4112 '{{WRAPPER}} .king-addons-grid-item-author .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
4113 '{{WRAPPER}} .king-addons-grid-item-author .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
4114 ],
4115 ]
4116 );
4117
4118 $this->add_control(
4119 'author_avatar_spacing',
4120 [
4121 'label' => esc_html__('Avatar Spacing', 'king-addons'),
4122 'type' => Controls_Manager::SLIDER,
4123 'size_units' => ['px'],
4124 'range' => [
4125 'px' => [
4126 'min' => 0,
4127 'max' => 25,
4128 ],
4129 ],
4130 'default' => [
4131 'unit' => 'px',
4132 'size' => 5,
4133 ],
4134 'selectors' => [
4135 '{{WRAPPER}} .king-addons-grid-item-author img' => 'margin-right: {{SIZE}}{{UNIT}};',
4136 ],
4137 ]
4138 );
4139
4140 $this->add_responsive_control(
4141 'author_padding',
4142 [
4143 'label' => esc_html__('Padding', 'king-addons'),
4144 'type' => Controls_Manager::DIMENSIONS,
4145 'size_units' => ['px', '%'],
4146 'default' => [
4147 'top' => 0,
4148 'right' => 0,
4149 'bottom' => 0,
4150 'left' => 0,
4151 ],
4152 'selectors' => [
4153 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4154 ],
4155 'render_type' => 'template',
4156 'separator' => 'before',
4157 ]
4158 );
4159
4160 $this->add_responsive_control(
4161 'author_margin',
4162 [
4163 'label' => esc_html__('Margin', 'king-addons'),
4164 'type' => Controls_Manager::DIMENSIONS,
4165 'size_units' => ['px', '%'],
4166 'default' => [
4167 'top' => 0,
4168 'right' => 0,
4169 'bottom' => 0,
4170 'left' => 0,
4171 ],
4172 'render_type' => 'template',
4173 'selectors' => [
4174 '{{WRAPPER}} .king-addons-grid-item-author .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4175 ],
4176 ]
4177 );
4178
4179 $this->end_controls_section();
4180
4181
4182 $this->add_section_style_likes();
4183
4184
4185 $this->add_section_style_sharing();
4186
4187
4188 $this->start_controls_section(
4189 'section_style_lightbox',
4190 [
4191 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Lightbox', 'king-addons'),
4192 'tab' => Controls_Manager::TAB_STYLE,
4193 'show_label' => false,
4194 ]
4195 );
4196
4197 $this->start_controls_tabs('tabs_grid_lightbox_style');
4198
4199 $this->start_controls_tab(
4200 'tab_grid_lightbox_normal',
4201 [
4202 'label' => esc_html__('Normal', 'king-addons'),
4203 ]
4204 );
4205
4206 $this->add_control(
4207 'lightbox_color',
4208 [
4209 'label' => esc_html__('Text Color', 'king-addons'),
4210 'type' => Controls_Manager::COLOR,
4211 'default' => '#ffffff',
4212 'selectors' => [
4213 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span, {{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'color: {{VALUE}}',
4214 ],
4215 ]
4216 );
4217
4218 $this->add_control(
4219 'lightbox_bg_color',
4220 [
4221 'label' => esc_html__('Background Color', 'king-addons'),
4222 'type' => Controls_Manager::COLOR,
4223 'selectors' => [
4224 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'background-color: {{VALUE}}',
4225 ]
4226 ]
4227 );
4228
4229 $this->add_control(
4230 'lightbox_border_color',
4231 [
4232 'label' => esc_html__('Border Color', 'king-addons'),
4233 'type' => Controls_Manager::COLOR,
4234 'default' => '#E8E8E8',
4235 'selectors' => [
4236 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'border-color: {{VALUE}}',
4237 ],
4238 ]
4239 );
4240
4241 $this->add_group_control(
4242 Group_Control_Text_Shadow::get_type(),
4243 [
4244 'name' => 'lightbox_shadow',
4245 'selector' => '{{WRAPPER}} .king-addons-grid-item-lightbox i',
4246 ]
4247 );
4248
4249 $this->end_controls_tab();
4250
4251 $this->start_controls_tab(
4252 'tab_grid_lightbox_hover',
4253 [
4254 'label' => esc_html__('Hover', 'king-addons'),
4255 ]
4256 );
4257
4258 $this->add_control(
4259 'lightbox_color_hr',
4260 [
4261 'label' => esc_html__('Text Color', 'king-addons'),
4262 'type' => Controls_Manager::COLOR,
4263 'default' => '#ffffff',
4264 'selectors' => [
4265 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span:hover, {{WRAPPER}} .king-addons-grid-item-title .inner-block a:hover' => 'color: {{VALUE}} !important;',
4266 ],
4267 ]
4268 );
4269
4270 $this->add_control(
4271 'lightbox_bg_color_hr',
4272 [
4273 'label' => esc_html__('Background Color', 'king-addons'),
4274 'type' => Controls_Manager::COLOR,
4275 'selectors' => [
4276 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span:hover' => 'background-color: {{VALUE}}',
4277 ]
4278 ]
4279 );
4280
4281 $this->add_control(
4282 'lightbox_border_color_hr',
4283 [
4284 'label' => esc_html__('Border Color', 'king-addons'),
4285 'type' => Controls_Manager::COLOR,
4286 'default' => '#E8E8E8',
4287 'selectors' => [
4288 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span:hover' => 'border-color: {{VALUE}}',
4289 ],
4290 'separator' => 'after',
4291 ]
4292 );
4293
4294 $this->end_controls_tab();
4295
4296 $this->end_controls_tabs();
4297
4298 $this->add_control(
4299 'lightbox_shadow_divider',
4300 [
4301 'type' => Controls_Manager::DIVIDER,
4302 'style' => 'thick',
4303 ]
4304 );
4305
4306 $this->add_control(
4307 'lightbox_transition_duration',
4308 [
4309 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
4310 'type' => Controls_Manager::NUMBER,
4311 'default' => 0.1,
4312 'min' => 0,
4313 'max' => 5,
4314 'step' => 0.1,
4315 'selectors' => [
4316 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'transition-duration: {{VALUE}}s',
4317 ],
4318 'separator' => 'after',
4319 ]
4320 );
4321
4322 // Icon Size Control - separate from typography
4323 $this->add_responsive_control(
4324 'lightbox_icon_size',
4325 [
4326 'label' => esc_html__('Icon Size', 'king-addons'),
4327 'type' => Controls_Manager::SLIDER,
4328 'size_units' => ['px', 'em', 'rem'],
4329 'range' => [
4330 'px' => [
4331 'min' => 5,
4332 'max' => 100,
4333 'step' => 1,
4334 ],
4335 'em' => [
4336 'min' => 0.5,
4337 'max' => 5,
4338 'step' => 0.1,
4339 ],
4340 'rem' => [
4341 'min' => 0.5,
4342 'max' => 5,
4343 'step' => 0.1,
4344 ],
4345 ],
4346 'default' => [
4347 'unit' => 'px',
4348 'size' => 16,
4349 ],
4350 'selectors' => [
4351 '{{WRAPPER}} .king-addons-grid-item-lightbox i' => 'font-size: {{SIZE}}{{UNIT}};',
4352 '{{WRAPPER}} .king-addons-grid-item-lightbox svg' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};',
4353 ],
4354 'separator' => 'before',
4355 ]
4356 );
4357
4358 // Icon Color Control - separate from text color
4359 $this->add_responsive_control(
4360 'lightbox_icon_color',
4361 [
4362 'label' => esc_html__('Icon Color', 'king-addons'),
4363 'type' => Controls_Manager::COLOR,
4364 'default' => '#ffffff',
4365 'selectors' => [
4366 '{{WRAPPER}} .king-addons-grid-item-lightbox i' => 'color: {{VALUE}};',
4367 '{{WRAPPER}} .king-addons-grid-item-lightbox svg' => 'fill: {{VALUE}};',
4368 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span i' => 'color: {{VALUE}};',
4369 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span svg' => 'fill: {{VALUE}};',
4370 ],
4371 ]
4372 );
4373
4374 // Icon Hover Color Control
4375 $this->add_responsive_control(
4376 'lightbox_icon_color_hover',
4377 [
4378 'label' => esc_html__('Icon Color (Hover)', 'king-addons'),
4379 'type' => Controls_Manager::COLOR,
4380 'selectors' => [
4381 '{{WRAPPER}} .king-addons-grid-item-lightbox span:hover i' => 'color: {{VALUE}} !important;',
4382 '{{WRAPPER}} .king-addons-grid-item-lightbox span:hover svg' => 'fill: {{VALUE}} !important;',
4383 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span:hover i' => 'color: {{VALUE}} !important;',
4384 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span:hover svg' => 'fill: {{VALUE}} !important;',
4385 ],
4386 ]
4387 );
4388
4389 $this->add_group_control(
4390 Group_Control_Typography::get_type(),
4391 [
4392 'name' => 'lightbox_typography',
4393 'selector' => '{{WRAPPER}} .king-addons-grid-item-lightbox, {{WRAPPER}} .king-addons-grid-item-title .inner-block a',
4394 ]
4395 );
4396
4397 $this->add_control(
4398 'lightbox_border_type',
4399 [
4400 'label' => esc_html__('Border Type', 'king-addons'),
4401 'type' => Controls_Manager::SELECT,
4402 'options' => [
4403 'none' => esc_html__('None', 'king-addons'),
4404 'solid' => esc_html__('Solid', 'king-addons'),
4405 'double' => esc_html__('Double', 'king-addons'),
4406 'dotted' => esc_html__('Dotted', 'king-addons'),
4407 'dashed' => esc_html__('Dashed', 'king-addons'),
4408 'groove' => esc_html__('Groove', 'king-addons'),
4409 ],
4410 'default' => 'none',
4411 'selectors' => [
4412 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'border-style: {{VALUE}};',
4413 ],
4414 'render_type' => 'template',
4415 'separator' => 'before',
4416 ]
4417 );
4418
4419 $this->add_control(
4420 'lightbox_border_width',
4421 [
4422 'label' => esc_html__('Border Width', 'king-addons'),
4423 'type' => Controls_Manager::DIMENSIONS,
4424 'size_units' => ['px'],
4425 'default' => [
4426 'top' => 1,
4427 'right' => 1,
4428 'bottom' => 1,
4429 'left' => 1,
4430 ],
4431 'selectors' => [
4432 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4433 ],
4434 'render_type' => 'template',
4435 'condition' => [
4436 'lightbox_border_type!' => 'none',
4437 ],
4438 ]
4439 );
4440
4441 $this->add_control(
4442 'lightbox_text_spacing',
4443 [
4444 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
4445 'type' => Controls_Manager::SLIDER,
4446 'size_units' => ['px'],
4447 'range' => [
4448 'px' => [
4449 'min' => 0,
4450 'max' => 25,
4451 ],
4452 ],
4453 'default' => [
4454 'unit' => 'px',
4455 'size' => 5,
4456 ],
4457 'selectors' => [
4458 '{{WRAPPER}} .king-addons-grid-item-lightbox .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
4459 '{{WRAPPER}} .king-addons-grid-item-lightbox .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
4460 ],
4461 'separator' => 'before'
4462 ]
4463 );
4464
4465 $this->add_responsive_control(
4466 'lightbox_padding',
4467 [
4468 'label' => esc_html__('Padding', 'king-addons'),
4469 'type' => Controls_Manager::DIMENSIONS,
4470 'size_units' => ['px', '%'],
4471 'default' => [
4472 'top' => 0,
4473 'right' => 0,
4474 'bottom' => 0,
4475 'left' => 0,
4476 ],
4477 'selectors' => [
4478 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4479 ],
4480 'render_type' => 'template',
4481 'separator' => 'before',
4482 ]
4483 );
4484
4485 $this->add_responsive_control(
4486 'lightbox_margin',
4487 [
4488 'label' => esc_html__('Margin', 'king-addons'),
4489 'type' => Controls_Manager::DIMENSIONS,
4490 'size_units' => ['px', '%'],
4491 'default' => [
4492 'top' => 0,
4493 'right' => 0,
4494 'bottom' => 10,
4495 'left' => 0,
4496 ],
4497 'render_type' => 'template',
4498 'selectors' => [
4499 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4500 ],
4501 ]
4502 );
4503
4504 $this->add_control(
4505 'lightbox_radius',
4506 [
4507 'label' => esc_html__('Border Radius', 'king-addons'),
4508 'type' => Controls_Manager::DIMENSIONS,
4509 'size_units' => ['px', '%'],
4510 'default' => [
4511 'top' => 2,
4512 'right' => 2,
4513 'bottom' => 2,
4514 'left' => 2,
4515 ],
4516 'selectors' => [
4517 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4518 ],
4519 'separator' => 'before',
4520 ]
4521 );
4522
4523 $this->end_controls_section();
4524
4525
4526 $this->start_controls_section(
4527 'section_style_separator1',
4528 [
4529 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Separator Style 1', 'king-addons'),
4530 'tab' => Controls_Manager::TAB_STYLE,
4531 'show_label' => false,
4532 ]
4533 );
4534
4535 $this->add_control(
4536 'separator1_color',
4537 [
4538 'label' => esc_html__('Color', 'king-addons'),
4539 'type' => Controls_Manager::COLOR,
4540 'default' => '#E8E8E8',
4541 'selectors' => [
4542 '{{WRAPPER}} .king-addons-grid-sep-style-1 .inner-block > span' => 'border-bottom-color: {{VALUE}}',
4543 ],
4544 ]
4545 );
4546
4547 $this->add_control(
4548 'separator1_width',
4549 [
4550 'label' => esc_html__('Width', 'king-addons'),
4551 'type' => Controls_Manager::SLIDER,
4552 'size_units' => ['px', '%'],
4553 'range' => [
4554 'px' => [
4555 'min' => 0,
4556 'max' => 300,
4557 ],
4558 '%' => [
4559 'min' => 0,
4560 'max' => 100,
4561 ],
4562 ],
4563 'default' => [
4564 'unit' => '%',
4565 'size' => 100,
4566 ],
4567 'selectors' => [
4568 '{{WRAPPER}} .king-addons-grid-sep-style-1:not(.king-addons-grid-item-display-inline) .inner-block > span' => 'width: {{SIZE}}{{UNIT}};',
4569 '{{WRAPPER}} .king-addons-grid-sep-style-1.king-addons-grid-item-display-inline' => 'width: {{SIZE}}{{UNIT}};',
4570 ],
4571 'render_type' => 'template',
4572 'separator' => 'before',
4573 ]
4574 );
4575
4576 $this->add_control(
4577 'separator1_height',
4578 [
4579 'label' => esc_html__('Height', 'king-addons'),
4580 'type' => Controls_Manager::SLIDER,
4581 'size_units' => ['px'],
4582 'range' => [
4583 'px' => [
4584 'min' => 1,
4585 'max' => 100,
4586 ],
4587 ],
4588 'default' => [
4589 'unit' => 'px',
4590 'size' => 2,
4591 ],
4592 'render_type' => 'template',
4593 'selectors' => [
4594 '{{WRAPPER}} .king-addons-grid-sep-style-1 .inner-block > span' => 'border-bottom-width: {{SIZE}}{{UNIT}};',
4595 ],
4596 ]
4597 );
4598
4599 $this->add_control(
4600 'separator1_border_type',
4601 [
4602 'label' => esc_html__('Type', 'king-addons'),
4603 'type' => Controls_Manager::SELECT,
4604 'options' => [
4605 'solid' => esc_html__('Solid', 'king-addons'),
4606 'double' => esc_html__('Double', 'king-addons'),
4607 'dotted' => esc_html__('Dotted', 'king-addons'),
4608 'dashed' => esc_html__('Dashed', 'king-addons'),
4609 'groove' => esc_html__('Groove', 'king-addons'),
4610 ],
4611 'default' => 'solid',
4612 'selectors' => [
4613 '{{WRAPPER}} .king-addons-grid-sep-style-1 .inner-block > span' => 'border-bottom-style: {{VALUE}};',
4614 ],
4615 'separator' => 'before',
4616 ]
4617 );
4618
4619 $this->add_responsive_control(
4620 'separator1_margin',
4621 [
4622 'label' => esc_html__('Margin', 'king-addons'),
4623 'type' => Controls_Manager::DIMENSIONS,
4624 'size_units' => ['px', '%'],
4625 'default' => [
4626 'top' => 0,
4627 'right' => 0,
4628 'bottom' => 0,
4629 'left' => 0,
4630 ],
4631 'render_type' => 'template',
4632 'selectors' => [
4633 '{{WRAPPER}} .king-addons-grid-sep-style-1 .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4634 ],
4635 ]
4636 );
4637
4638 $this->add_control(
4639 'separator1_radius',
4640 [
4641 'label' => esc_html__('Border Radius', 'king-addons'),
4642 'type' => Controls_Manager::DIMENSIONS,
4643 'size_units' => ['px', '%'],
4644 'default' => [
4645 'top' => 0,
4646 'right' => 0,
4647 'bottom' => 0,
4648 'left' => 0,
4649 ],
4650 'selectors' => [
4651 '{{WRAPPER}} .king-addons-grid-sep-style-1 .inner-block > span' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4652 ],
4653 'separator' => 'before',
4654 ]
4655 );
4656
4657 $this->end_controls_section();
4658
4659
4660 $this->start_controls_section(
4661 'section_style_separator2',
4662 [
4663 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Separator Style 2', 'king-addons'),
4664 'tab' => Controls_Manager::TAB_STYLE,
4665 'show_label' => false,
4666 ]
4667 );
4668
4669 $this->add_control(
4670 'separator2_color',
4671 [
4672 'label' => esc_html__('Color', 'king-addons'),
4673 'type' => Controls_Manager::COLOR,
4674 'default' => '#5B03FF',
4675 'selectors' => [
4676 '{{WRAPPER}} .king-addons-grid-sep-style-2 .inner-block > span' => 'border-bottom-color: {{VALUE}}',
4677 ],
4678 ]
4679 );
4680
4681 $this->add_control(
4682 'separator2_width',
4683 [
4684 'label' => esc_html__('Width', 'king-addons'),
4685 'type' => Controls_Manager::SLIDER,
4686 'size_units' => ['px', '%'],
4687 'range' => [
4688 'px' => [
4689 'min' => 0,
4690 'max' => 300,
4691 ],
4692 '%' => [
4693 'min' => 0,
4694 'max' => 100,
4695 ],
4696 ],
4697 'default' => [
4698 'unit' => '%',
4699 'size' => 20,
4700 ],
4701 'selectors' => [
4702 '{{WRAPPER}} .king-addons-grid-sep-style-2:not(.king-addons-grid-item-display-inline) .inner-block > span' => 'width: {{SIZE}}{{UNIT}};',
4703 '{{WRAPPER}} .king-addons-grid-sep-style-2.king-addons-grid-item-display-inline' => 'width: {{SIZE}}{{UNIT}};',
4704 ],
4705 'render_type' => 'template',
4706 'separator' => 'before',
4707 ]
4708 );
4709
4710 $this->add_control(
4711 'separator2_height',
4712 [
4713 'label' => esc_html__('Height', 'king-addons'),
4714 'type' => Controls_Manager::SLIDER,
4715 'size_units' => ['px'],
4716 'range' => [
4717 'px' => [
4718 'min' => 0,
4719 'max' => 100,
4720 ],
4721 ],
4722 'default' => [
4723 'unit' => 'px',
4724 'size' => 2,
4725 ],
4726 'selectors' => [
4727 '{{WRAPPER}} .king-addons-grid-sep-style-2 .inner-block > span' => 'border-bottom-width: {{SIZE}}{{UNIT}};',
4728 ],
4729 'render_type' => 'template',
4730 ]
4731 );
4732
4733 $this->add_control(
4734 'separator2_border_type',
4735 [
4736 'label' => esc_html__('Type', 'king-addons'),
4737 'type' => Controls_Manager::SELECT,
4738 'options' => [
4739 'solid' => esc_html__('Solid', 'king-addons'),
4740 'double' => esc_html__('Double', 'king-addons'),
4741 'dotted' => esc_html__('Dotted', 'king-addons'),
4742 'dashed' => esc_html__('Dashed', 'king-addons'),
4743 'groove' => esc_html__('Groove', 'king-addons'),
4744 ],
4745 'default' => 'solid',
4746 'selectors' => [
4747 '{{WRAPPER}} .king-addons-grid-sep-style-2 .inner-block > span' => 'border-bottom-style: {{VALUE}};',
4748 ],
4749 'separator' => 'before',
4750 ]
4751 );
4752
4753 $this->add_responsive_control(
4754 'separator2_margin',
4755 [
4756 'label' => esc_html__('Margin', 'king-addons'),
4757 'type' => Controls_Manager::DIMENSIONS,
4758 'size_units' => ['px', '%'],
4759 'default' => [
4760 'top' => 0,
4761 'right' => 0,
4762 'bottom' => 0,
4763 'left' => 0,
4764 ],
4765 'selectors' => [
4766 '{{WRAPPER}} .king-addons-grid-sep-style-2 .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4767 ],
4768 'render_type' => 'template',
4769 ]
4770 );
4771
4772 $this->add_control(
4773 'separator2_radius',
4774 [
4775 'label' => esc_html__('Border Radius', 'king-addons'),
4776 'type' => Controls_Manager::DIMENSIONS,
4777 'size_units' => ['px', '%'],
4778 'default' => [
4779 'top' => 0,
4780 'right' => 0,
4781 'bottom' => 0,
4782 'left' => 0,
4783 ],
4784 'selectors' => [
4785 '{{WRAPPER}} .king-addons-grid-sep-style-2 .inner-block > span' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4786 ],
4787 'separator' => 'before',
4788 ]
4789 );
4790
4791 $this->end_controls_section();
4792
4793
4794 $this->start_controls_section(
4795 'section_style_tax1',
4796 [
4797 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Taxonomy Style 1', 'king-addons'),
4798 'tab' => Controls_Manager::TAB_STYLE,
4799 'show_label' => false,
4800 ]
4801 );
4802
4803 $this->start_controls_tabs('tabs_grid_tax1_style');
4804
4805 $this->start_controls_tab(
4806 'tab_grid_tax1_normal',
4807 [
4808 'label' => esc_html__('Normal', 'king-addons'),
4809 ]
4810 );
4811
4812 $this->add_control(
4813 'tax1_color',
4814 [
4815 'label' => esc_html__('Color', 'king-addons'),
4816 'type' => Controls_Manager::COLOR,
4817 'default' => '#ffffff',
4818 'selectors' => [
4819 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'color: {{VALUE}}',
4820 ],
4821 ]
4822 );
4823
4824 $this->add_control(
4825 'tax1_bg_color',
4826 [
4827 'label' => esc_html__('Background Color', 'king-addons'),
4828 'type' => Controls_Manager::COLOR,
4829 'selectors' => [
4830 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'background-color: {{VALUE}}',
4831 ]
4832 ]
4833 );
4834
4835 $this->add_control(
4836 'tax1_border_color',
4837 [
4838 'label' => esc_html__('Border Color', 'king-addons'),
4839 'type' => Controls_Manager::COLOR,
4840 'default' => '#E8E8E8',
4841 'selectors' => [
4842 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'border-color: {{VALUE}}',
4843 ],
4844 ]
4845 );
4846
4847 $this->add_control(
4848 'tax1_extra_text_color',
4849 [
4850 'label' => esc_html__('Extra Text Color', 'king-addons'),
4851 'type' => Controls_Manager::COLOR,
4852 'default' => '#9C9C9C',
4853 'selectors' => [
4854 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block span[class*="king-addons-grid-extra-text"]' => 'color: {{VALUE}}',
4855 ],
4856 ]
4857 );
4858
4859 $this->add_control(
4860 'tax1_extra_icon_color',
4861 [
4862 'label' => esc_html__('Extra Icon Color', 'king-addons'),
4863 'type' => Controls_Manager::COLOR,
4864 'default' => '#9C9C9C',
4865 'selectors' => [
4866 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block [class*="king-addons-grid-extra-icon"] i' => 'color: {{VALUE}}',
4867 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block [class*="king-addons-grid-extra-icon"] svg' => 'fill: {{VALUE}}'
4868 ],
4869 'separator' => 'after',
4870 ]
4871 );
4872
4873 $this->end_controls_tab();
4874
4875 $this->start_controls_tab(
4876 'tab_grid_tax1_hover',
4877 [
4878 'label' => esc_html__('Hover', 'king-addons'),
4879 ]
4880 );
4881
4882 $this->add_control(
4883 'tax1_color_hr',
4884 [
4885 'label' => esc_html__('Color', 'king-addons'),
4886 'type' => Controls_Manager::COLOR,
4887 'default' => '#5B03FF',
4888 'selectors' => [
4889 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a:hover' => 'color: {{VALUE}}',
4890 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-pointer-item:before' => 'background-color: {{VALUE}}',
4891 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-pointer-item:after' => 'background-color: {{VALUE}}',
4892 ],
4893 ]
4894 );
4895
4896 $this->add_control(
4897 'tax1_bg_color_hr',
4898 [
4899 'label' => esc_html__('Background Color', 'king-addons'),
4900 'type' => Controls_Manager::COLOR,
4901 'selectors' => [
4902 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a:hover' => 'background-color: {{VALUE}}',
4903 ]
4904 ]
4905 );
4906
4907 $this->add_control(
4908 'tax1_border_color_hr',
4909 [
4910 'label' => esc_html__('Border Color', 'king-addons'),
4911 'type' => Controls_Manager::COLOR,
4912 'default' => '#E8E8E8',
4913 'selectors' => [
4914 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a:hover' => 'border-color: {{VALUE}}',
4915 ],
4916 ]
4917 );
4918
4919 $this->add_control_tax1_pointer_color_hr();
4920
4921 $this->end_controls_tab();
4922
4923 $this->end_controls_tabs();
4924
4925 $this->add_control_tax1_pointer();
4926
4927 $this->add_control_tax1_pointer_height();
4928
4929 $this->add_control_tax1_pointer_animation();
4930
4931 $this->add_control(
4932 'tax1_transition_duration',
4933 [
4934 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
4935 'type' => Controls_Manager::NUMBER,
4936 'default' => 0.1,
4937 'min' => 0,
4938 'max' => 5,
4939 'step' => 0.1,
4940 'selectors' => [
4941 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'transition-duration: {{VALUE}}s',
4942 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-pointer-item:before' => 'transition-duration: {{VALUE}}s',
4943 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-pointer-item:after' => 'transition-duration: {{VALUE}}s',
4944 ],
4945 'separator' => 'after',
4946 ]
4947 );
4948
4949 $this->add_group_control(
4950 Group_Control_Typography::get_type(),
4951 [
4952 'name' => 'tax1_typography',
4953 'selector' => '{{WRAPPER}} .king-addons-grid-tax-style-1'
4954 ]
4955 );
4956
4957 $this->add_control(
4958 'tax1_border_type',
4959 [
4960 'label' => esc_html__('Border Type', 'king-addons'),
4961 'type' => Controls_Manager::SELECT,
4962 'options' => [
4963 'none' => esc_html__('None', 'king-addons'),
4964 'solid' => esc_html__('Solid', 'king-addons'),
4965 'double' => esc_html__('Double', 'king-addons'),
4966 'dotted' => esc_html__('Dotted', 'king-addons'),
4967 'dashed' => esc_html__('Dashed', 'king-addons'),
4968 'groove' => esc_html__('Groove', 'king-addons'),
4969 ],
4970 'default' => 'none',
4971 'selectors' => [
4972 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'border-style: {{VALUE}};',
4973 ],
4974 'render_type' => 'template',
4975 'separator' => 'before',
4976 ]
4977 );
4978
4979 $this->add_control(
4980 'tax1_border_width',
4981 [
4982 'label' => esc_html__('Border Width', 'king-addons'),
4983 'type' => Controls_Manager::DIMENSIONS,
4984 'size_units' => ['px'],
4985 'default' => [
4986 'top' => 1,
4987 'right' => 1,
4988 'bottom' => 1,
4989 'left' => 1,
4990 ],
4991 'selectors' => [
4992 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4993 ],
4994 'render_type' => 'template',
4995 'condition' => [
4996 'tax1_border_type!' => 'none',
4997 ],
4998 ]
4999 );
5000
5001 $this->add_control(
5002 'tax1_text_spacing',
5003 [
5004 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
5005 'type' => Controls_Manager::SLIDER,
5006 'size_units' => ['px'],
5007 'range' => [
5008 'px' => [
5009 'min' => 0,
5010 'max' => 25,
5011 ],
5012 ],
5013 'default' => [
5014 'unit' => 'px',
5015 'size' => 5,
5016 ],
5017 'selectors' => [
5018 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
5019 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
5020 ],
5021 'render_type' => 'template',
5022 'separator' => 'before',
5023 ]
5024 );
5025
5026 $this->add_control(
5027 'tax1_icon_spacing',
5028 [
5029 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
5030 'type' => Controls_Manager::SLIDER,
5031 'size_units' => ['px'],
5032 'range' => [
5033 'px' => [
5034 'min' => 0,
5035 'max' => 25,
5036 ],
5037 ],
5038 'default' => [
5039 'unit' => 'px',
5040 'size' => 5,
5041 ],
5042 'selectors' => [
5043 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
5044 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
5045 ],
5046 ]
5047 );
5048
5049 $this->add_control(
5050 'tax1_gutter',
5051 [
5052 'label' => esc_html__('Gutter', 'king-addons'),
5053 'type' => Controls_Manager::SLIDER,
5054 'size_units' => ['px'],
5055 'range' => [
5056 'px' => [
5057 'min' => 0,
5058 'max' => 20,
5059 ],
5060 ],
5061 'default' => [
5062 'unit' => 'px',
5063 'size' => 3,
5064 ],
5065 'selectors' => [
5066 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'margin-right: {{SIZE}}{{UNIT}};',
5067 ],
5068 'render_type' => 'template',
5069 'separator' => 'before',
5070 ]
5071 );
5072
5073 $this->add_responsive_control(
5074 'tax1_padding',
5075 [
5076 'label' => esc_html__('Padding', 'king-addons'),
5077 'type' => Controls_Manager::DIMENSIONS,
5078 'size_units' => ['px', '%'],
5079 'default' => [
5080 'top' => 0,
5081 'right' => 0,
5082 'bottom' => 0,
5083 'left' => 0,
5084 ],
5085 'selectors' => [
5086 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5087 ],
5088 'render_type' => 'template',
5089 ]
5090 );
5091
5092 $this->add_responsive_control(
5093 'tax1_margin',
5094 [
5095 'label' => esc_html__('Margin', 'king-addons'),
5096 'type' => Controls_Manager::DIMENSIONS,
5097 'size_units' => ['px', '%'],
5098 'default' => [
5099 'top' => 0,
5100 'right' => 0,
5101 'bottom' => 0,
5102 'left' => 0,
5103 ],
5104 'selectors' => [
5105 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5106 ],
5107 'render_type' => 'template',
5108 ]
5109 );
5110
5111 $this->add_control(
5112 'tax1_radius',
5113 [
5114 'label' => esc_html__('Border Radius', 'king-addons'),
5115 'type' => Controls_Manager::DIMENSIONS,
5116 'size_units' => ['px', '%'],
5117 'default' => [
5118 'top' => 2,
5119 'right' => 2,
5120 'bottom' => 2,
5121 'left' => 2,
5122 ],
5123 'selectors' => [
5124 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5125 ],
5126 'separator' => 'before',
5127 ]
5128 );
5129
5130 $this->end_controls_section();
5131
5132
5133 $this->start_controls_section(
5134 'section_style_tax2',
5135 [
5136 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Taxonomy Style 2', 'king-addons'),
5137 'tab' => Controls_Manager::TAB_STYLE,
5138 'show_label' => false,
5139 ]
5140 );
5141
5142 $this->start_controls_tabs('tabs_grid_tax2_style');
5143
5144 $this->start_controls_tab(
5145 'tab_grid_tax2_normal',
5146 [
5147 'label' => esc_html__('Normal', 'king-addons'),
5148 ]
5149 );
5150
5151 $this->add_control(
5152 'tax2_color',
5153 [
5154 'label' => esc_html__('Color', 'king-addons'),
5155 'type' => Controls_Manager::COLOR,
5156 'default' => '#ffffff',
5157 'selectors' => [
5158 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'color: {{VALUE}}',
5159 ],
5160 ]
5161 );
5162
5163 $this->add_control(
5164 'tax2_bg_color',
5165 [
5166 'label' => esc_html__('Background Color', 'king-addons'),
5167 'type' => Controls_Manager::COLOR,
5168 'default' => '#5B03FF',
5169 'selectors' => [
5170 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'background-color: {{VALUE}}',
5171 ]
5172 ]
5173 );
5174
5175 $this->add_control(
5176 'tax2_border_color',
5177 [
5178 'label' => esc_html__('Border Color', 'king-addons'),
5179 'type' => Controls_Manager::COLOR,
5180 'default' => '#E8E8E8',
5181 'selectors' => [
5182 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'border-color: {{VALUE}}',
5183 ],
5184 'separator' => 'after',
5185 ]
5186 );
5187
5188 $this->end_controls_tab();
5189
5190 $this->start_controls_tab(
5191 'tab_grid_tax2_hover',
5192 [
5193 'label' => esc_html__('Hover', 'king-addons'),
5194 ]
5195 );
5196
5197 $this->add_control(
5198 'tax2_color_hr',
5199 [
5200 'label' => esc_html__('Color', 'king-addons'),
5201 'type' => Controls_Manager::COLOR,
5202 'default' => '#ffffff',
5203 'selectors' => [
5204 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a:hover' => 'color: {{VALUE}}',
5205 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-pointer-item:before' => 'background-color: {{VALUE}}',
5206 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-pointer-item:after' => 'background-color: {{VALUE}}',
5207 ],
5208 ]
5209 );
5210
5211 $this->add_control(
5212 'tax2_bg_color_hr',
5213 [
5214 'label' => esc_html__('Background Color', 'king-addons'),
5215 'type' => Controls_Manager::COLOR,
5216 'default' => '#4D02D8',
5217 'selectors' => [
5218 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a:hover' => 'background-color: {{VALUE}}',
5219 ]
5220 ]
5221 );
5222
5223 $this->add_control(
5224 'tax2_border_color_hr',
5225 [
5226 'label' => esc_html__('Border Color', 'king-addons'),
5227 'type' => Controls_Manager::COLOR,
5228 'default' => '#E8E8E8',
5229 'selectors' => [
5230 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a:hover' => 'border-color: {{VALUE}}',
5231 ],
5232 ]
5233 );
5234
5235 $this->add_control_tax2_pointer_color_hr();
5236
5237 $this->end_controls_tab();
5238
5239 $this->end_controls_tabs();
5240
5241 $this->add_control_tax2_pointer();
5242
5243 $this->add_control_tax2_pointer_height();
5244
5245 $this->add_control_tax2_pointer_animation();
5246
5247 $this->add_control(
5248 'tax2_transition_duration',
5249 [
5250 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
5251 'type' => Controls_Manager::NUMBER,
5252 'default' => 0.1,
5253 'min' => 0,
5254 'max' => 5,
5255 'step' => 0.1,
5256 'selectors' => [
5257 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'transition-duration: {{VALUE}}s',
5258 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-pointer-item:before' => 'transition-duration: {{VALUE}}s',
5259 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-pointer-item:after' => 'transition-duration: {{VALUE}}s',
5260 ],
5261 'separator' => 'after',
5262 ]
5263 );
5264
5265 $this->add_group_control(
5266 Group_Control_Typography::get_type(),
5267 [
5268 'name' => 'tax2_typography',
5269 'selector' => '{{WRAPPER}} .king-addons-grid-tax-style-2'
5270 ]
5271 );
5272
5273 $this->add_control(
5274 'tax2_border_type',
5275 [
5276 'label' => esc_html__('Border Type', 'king-addons'),
5277 'type' => Controls_Manager::SELECT,
5278 'options' => [
5279 'none' => esc_html__('None', 'king-addons'),
5280 'solid' => esc_html__('Solid', 'king-addons'),
5281 'double' => esc_html__('Double', 'king-addons'),
5282 'dotted' => esc_html__('Dotted', 'king-addons'),
5283 'dashed' => esc_html__('Dashed', 'king-addons'),
5284 'groove' => esc_html__('Groove', 'king-addons'),
5285 ],
5286 'default' => 'none',
5287 'selectors' => [
5288 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'border-style: {{VALUE}};',
5289 ],
5290 'render_type' => 'template',
5291 'separator' => 'before',
5292 ]
5293 );
5294
5295 $this->add_control(
5296 'tax2_border_width',
5297 [
5298 'label' => esc_html__('Border Width', 'king-addons'),
5299 'type' => Controls_Manager::DIMENSIONS,
5300 'size_units' => ['px'],
5301 'default' => [
5302 'top' => 1,
5303 'right' => 1,
5304 'bottom' => 1,
5305 'left' => 1,
5306 ],
5307 'selectors' => [
5308 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5309 ],
5310 'render_type' => 'template',
5311 'condition' => [
5312 'tax2_border_type!' => 'none',
5313 ],
5314 ]
5315 );
5316
5317 $this->add_control(
5318 'tax2_text_spacing',
5319 [
5320 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
5321 'type' => Controls_Manager::SLIDER,
5322 'size_units' => ['px'],
5323 'range' => [
5324 'px' => [
5325 'min' => 0,
5326 'max' => 25,
5327 ],
5328 ],
5329 'default' => [
5330 'unit' => 'px',
5331 'size' => 5,
5332 ],
5333 'selectors' => [
5334 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
5335 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
5336 ],
5337 'separator' => 'before',
5338 ]
5339 );
5340
5341 $this->add_control(
5342 'tax2_icon_spacing',
5343 [
5344 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
5345 'type' => Controls_Manager::SLIDER,
5346 'size_units' => ['px'],
5347 'range' => [
5348 'px' => [
5349 'min' => 0,
5350 'max' => 25,
5351 ],
5352 ],
5353 'default' => [
5354 'unit' => 'px',
5355 'size' => 5,
5356 ],
5357 'selectors' => [
5358 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
5359 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
5360 ],
5361 ]
5362 );
5363
5364 $this->add_control(
5365 'tax2_gutter',
5366 [
5367 'label' => esc_html__('Gutter', 'king-addons'),
5368 'type' => Controls_Manager::SLIDER,
5369 'size_units' => ['px'],
5370 'range' => [
5371 'px' => [
5372 'min' => 0,
5373 'max' => 20,
5374 ],
5375 ],
5376 'default' => [
5377 'unit' => 'px',
5378 'size' => 3,
5379 ],
5380 'selectors' => [
5381 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'margin-right: {{SIZE}}{{UNIT}};',
5382 ],
5383 'render_type' => 'template',
5384 'separator' => 'before',
5385 ]
5386 );
5387
5388 $this->add_responsive_control(
5389 'tax2_padding',
5390 [
5391 'label' => esc_html__('Padding', 'king-addons'),
5392 'type' => Controls_Manager::DIMENSIONS,
5393 'size_units' => ['px', '%'],
5394 'default' => [
5395 'top' => 0,
5396 'right' => 10,
5397 'bottom' => 0,
5398 'left' => 10,
5399 ],
5400 'selectors' => [
5401 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5402 ],
5403 'render_type' => 'template',
5404 ]
5405 );
5406
5407 $this->add_responsive_control(
5408 'tax2_margin',
5409 [
5410 'label' => esc_html__('Margin', 'king-addons'),
5411 'type' => Controls_Manager::DIMENSIONS,
5412 'size_units' => ['px', '%'],
5413 'default' => [
5414 'top' => 0,
5415 'right' => 0,
5416 'bottom' => 0,
5417 'left' => 0,
5418 ],
5419 'selectors' => [
5420 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5421 ],
5422 'render_type' => 'template',
5423 ]
5424 );
5425
5426 $this->add_control(
5427 'tax2_radius',
5428 [
5429 'label' => esc_html__('Border Radius', 'king-addons'),
5430 'type' => Controls_Manager::DIMENSIONS,
5431 'size_units' => ['px', '%'],
5432 'default' => [
5433 'top' => 3,
5434 'right' => 3,
5435 'bottom' => 3,
5436 'left' => 3,
5437 ],
5438 'selectors' => [
5439 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5440 ],
5441 'separator' => 'before',
5442 ]
5443 );
5444
5445 $this->end_controls_section();
5446
5447
5448 $this->start_controls_section(
5449 'settings_section_style_grid_slider_nav',
5450 [
5451 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Slider Navigation', 'king-addons'),
5452 'tab' => Controls_Manager::TAB_STYLE,
5453 'condition' => [
5454 'layout_select' => 'slider',
5455 ],
5456 ]
5457 );
5458
5459 $this->start_controls_tabs('tabs_grid_slider_nav_style');
5460
5461 $this->start_controls_tab(
5462 'tab_grid_slider_nav_normal',
5463 [
5464 'label' => esc_html__('Normal', 'king-addons'),
5465 ]
5466 );
5467
5468 $this->add_control(
5469 'grid_slider_nav_color',
5470 [
5471 'label' => esc_html__('Color', 'king-addons'),
5472 'type' => Controls_Manager::COLOR,
5473 'default' => 'rgba(255,255,255,0.8)',
5474 'selectors' => [
5475 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'color: {{VALUE}};',
5476 '{{WRAPPER}} .king-addons-grid-slider-arrow svg' => 'fill: {{VALUE}};',
5477 ],
5478 ]
5479 );
5480
5481 $this->add_control(
5482 'grid_slider_nav_bg_color',
5483 [
5484 'label' => esc_html__('Background Color', 'king-addons'),
5485 'type' => Controls_Manager::COLOR,
5486 'selectors' => [
5487 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'background-color: {{VALUE}};',
5488 ],
5489 ]
5490 );
5491
5492 $this->add_control(
5493 'grid_slider_nav_border_color',
5494 [
5495 'label' => esc_html__('Border Color', 'king-addons'),
5496 'type' => Controls_Manager::COLOR,
5497 'default' => '#E8E8E8',
5498 'selectors' => [
5499 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'border-color: {{VALUE}};',
5500 ],
5501 ]
5502 );
5503
5504 $this->end_controls_tab();
5505
5506 $this->start_controls_tab(
5507 'tab_grid_slider_nav_hover',
5508 [
5509 'label' => esc_html__('Hover', 'king-addons'),
5510 ]
5511 );
5512
5513 $this->add_control(
5514 'grid_slider_nav_hover_color',
5515 [
5516 'label' => esc_html__('Color', 'king-addons'),
5517 'type' => Controls_Manager::COLOR,
5518 'default' => '#ffffff',
5519 'selectors' => [
5520 '{{WRAPPER}} .king-addons-grid-slider-arrow:hover' => 'color: {{VALUE}};',
5521 '{{WRAPPER}} .king-addons-grid-slider-arrow:hover svg' => 'fill: {{VALUE}};',
5522 ],
5523 ]
5524 );
5525
5526 $this->add_control(
5527 'grid_slider_nav_hover_bg_color',
5528 [
5529 'label' => esc_html__('Background Color', 'king-addons'),
5530 'type' => Controls_Manager::COLOR,
5531 'selectors' => [
5532 '{{WRAPPER}} .king-addons-grid-slider-arrow:hover' => 'background-color: {{VALUE}};',
5533 ],
5534 ]
5535 );
5536
5537 $this->add_control(
5538 'grid_slider_nav_hover_border_color',
5539 [
5540 'label' => esc_html__('Border Color', 'king-addons'),
5541 'type' => Controls_Manager::COLOR,
5542 'default' => '#E8E8E8',
5543 'selectors' => [
5544 '{{WRAPPER}} .king-addons-grid-slider-arrow:hover' => 'border-color: {{VALUE}};',
5545 ],
5546 ]
5547 );
5548
5549 $this->end_controls_tab();
5550
5551 $this->end_controls_tabs();
5552
5553 $this->add_control(
5554 'grid_slider_nav_transition_duration',
5555 [
5556 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
5557 'type' => Controls_Manager::NUMBER,
5558 'default' => 0.1,
5559 'min' => 0,
5560 'max' => 5,
5561 'step' => 0.1,
5562 'selectors' => [
5563 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'transition-duration: {{VALUE}}s',
5564 '{{WRAPPER}} .king-addons-grid-slider-arrow svg' => 'transition-duration: {{VALUE}}s',
5565 ],
5566 'separator' => 'before',
5567 ]
5568 );
5569
5570 $this->add_responsive_control(
5571 'grid_slider_nav_font_size',
5572 [
5573 'label' => esc_html__('Font Size', 'king-addons'),
5574 'type' => Controls_Manager::SLIDER,
5575 'size_units' => ['px',],
5576 'range' => [
5577 'px' => [
5578 'min' => 10,
5579 'max' => 200,
5580 ],
5581 ],
5582 'default' => [
5583 'unit' => 'px',
5584 'size' => 25,
5585 ],
5586 'selectors' => [
5587 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'font-size: {{SIZE}}{{UNIT}};',
5588 '{{WRAPPER}} .king-addons-grid-slider-arrow svg' => 'width: {{SIZE}}{{UNIT}};',
5589 ],
5590 'separator' => 'before',
5591 ]
5592 );
5593
5594 $this->add_responsive_control(
5595 'grid_slider_nav_size',
5596 [
5597 'label' => esc_html__('Box Size', 'king-addons'),
5598 'type' => Controls_Manager::SLIDER,
5599 'size_units' => ['px',],
5600 'range' => [
5601 'px' => [
5602 'min' => 10,
5603 'max' => 200,
5604 ],
5605 ],
5606 'default' => [
5607 'unit' => 'px',
5608 'size' => 60,
5609 ],
5610 'selectors' => [
5611 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};',
5612 ],
5613 'separator' => 'after',
5614 ]
5615 );
5616
5617 $this->add_control(
5618 'grid_slider_nav_border_type',
5619 [
5620 'label' => esc_html__('Border Type', 'king-addons'),
5621 'type' => Controls_Manager::SELECT,
5622 'options' => [
5623 'none' => esc_html__('None', 'king-addons'),
5624 'solid' => esc_html__('Solid', 'king-addons'),
5625 'double' => esc_html__('Double', 'king-addons'),
5626 'dotted' => esc_html__('Dotted', 'king-addons'),
5627 'dashed' => esc_html__('Dashed', 'king-addons'),
5628 'groove' => esc_html__('Groove', 'king-addons'),
5629 ],
5630 'default' => 'none',
5631 'selectors' => [
5632 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'border-style: {{VALUE}};',
5633 ],
5634 ]
5635 );
5636
5637 $this->add_control(
5638 'grid_slider_nav_border_width',
5639 [
5640 'label' => esc_html__('Border Width', 'king-addons'),
5641 'type' => Controls_Manager::DIMENSIONS,
5642 'size_units' => ['px'],
5643 'default' => [
5644 'top' => 2,
5645 'right' => 2,
5646 'bottom' => 0,
5647 'left' => 2,
5648 ],
5649 'selectors' => [
5650 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5651 ],
5652 'condition' => [
5653 'grid_slider_nav_border_type!' => 'none',
5654 ],
5655 ]
5656 );
5657
5658 $this->add_control(
5659 'grid_slider_nav_border_radius',
5660 [
5661 'label' => esc_html__('Border Radius', 'king-addons'),
5662 'type' => Controls_Manager::DIMENSIONS,
5663 'size_units' => ['px', '%'],
5664 'selectors' => [
5665 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5666 ],
5667 'separator' => 'after',
5668 ]
5669 );
5670
5671 $this->add_control_stack_grid_slider_nav_position();
5672
5673 $this->end_controls_section();
5674
5675
5676 $this->start_controls_section(
5677 'settings_section_style_grid_slider_dots',
5678 [
5679 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Slider Pagination', 'king-addons'),
5680 'tab' => Controls_Manager::TAB_STYLE,
5681 'condition' => [
5682 'layout_select' => 'slider',
5683 ],
5684 ]
5685 );
5686
5687 $this->start_controls_tabs('tabs_grid_slider_dots');
5688
5689 $this->start_controls_tab(
5690 'tab_grid_slider_dots_normal',
5691 [
5692 'label' => esc_html__('Normal', 'king-addons'),
5693 ]
5694 );
5695
5696 $this->add_control(
5697 'grid_slider_dots_bg_color',
5698 [
5699 'label' => esc_html__('Background Color', 'king-addons'),
5700 'type' => Controls_Manager::COLOR,
5701 'default' => 'rgba(0,0,0,0.35)',
5702 'selectors' => [
5703 '{{WRAPPER}} .king-addons-grid-slider-dot' => 'background-color: {{VALUE}};',
5704 ],
5705 ]
5706 );
5707
5708 $this->add_control(
5709 'grid_slider_dots_border_color',
5710 [
5711 'label' => esc_html__('Border Color', 'king-addons'),
5712 'type' => Controls_Manager::COLOR,
5713 'default' => '#E8E8E8',
5714 'selectors' => [
5715 '{{WRAPPER}} .king-addons-grid-slider-dot' => 'border-color: {{VALUE}}',
5716 ],
5717 ]
5718 );
5719
5720 $this->end_controls_tab();
5721
5722 $this->start_controls_tab(
5723 'tab_grid_slider_dots_active',
5724 [
5725 'label' => esc_html__('Active', 'king-addons'),
5726 ]
5727 );
5728
5729 $this->add_control(
5730 'grid_slider_dots_active_bg_color',
5731 [
5732 'label' => esc_html__('Background Color', 'king-addons'),
5733 'type' => Controls_Manager::COLOR,
5734 'default' => '#222222',
5735 'selectors' => [
5736 '{{WRAPPER}} .king-addons-grid-slider-dots .slick-active .king-addons-grid-slider-dot' => 'background-color: {{VALUE}}',
5737 ],
5738 ]
5739 );
5740
5741 $this->add_control(
5742 'grid_slider_dots_active_border_color',
5743 [
5744 'label' => esc_html__('Border Color', 'king-addons'),
5745 'type' => Controls_Manager::COLOR,
5746 'default' => '#E8E8E8',
5747 'selectors' => [
5748 '{{WRAPPER}} .king-addons-grid-slider-dots .slick-active .king-addons-grid-slider-dot' => 'border-color: {{VALUE}}',
5749 ],
5750 ]
5751 );
5752
5753 $this->end_controls_tab();
5754
5755 $this->end_controls_tabs();
5756
5757 $this->add_responsive_control(
5758 'grid_slider_dots_width',
5759 [
5760 'label' => esc_html__('Box Width', 'king-addons'),
5761 'type' => Controls_Manager::SLIDER,
5762 'size_units' => ['px',],
5763 'range' => [
5764 'px' => [
5765 'min' => 1,
5766 'max' => 100,
5767 ],
5768 ],
5769 'default' => [
5770 'unit' => 'px',
5771 'size' => 8,
5772 ],
5773 'selectors' => [
5774 '{{WRAPPER}} .king-addons-grid-slider-dot' => 'width: {{SIZE}}{{UNIT}};',
5775 ],
5776 'separator' => 'before',
5777 'render_type' => 'template'
5778 ]
5779 );
5780
5781 $this->add_responsive_control(
5782 'grid_slider_dots_height',
5783 [
5784 'label' => esc_html__('Box Height', 'king-addons'),
5785 'type' => Controls_Manager::SLIDER,
5786 'size_units' => ['px',],
5787 'range' => [
5788 'px' => [
5789 'min' => 1,
5790 'max' => 100,
5791 ],
5792 ],
5793 'default' => [
5794 'unit' => 'px',
5795 'size' => 8,
5796 ],
5797 'selectors' => [
5798 '{{WRAPPER}} .king-addons-grid-slider-dot' => 'height: {{SIZE}}{{UNIT}};',
5799 ],
5800 'render_type' => 'template'
5801 ]
5802 );
5803
5804 $this->add_control(
5805 'grid_slider_dots_border_type',
5806 [
5807 'label' => esc_html__('Border Type', 'king-addons'),
5808 'type' => Controls_Manager::SELECT,
5809 'options' => [
5810 'none' => esc_html__('None', 'king-addons'),
5811 'solid' => esc_html__('Solid', 'king-addons'),
5812 'double' => esc_html__('Double', 'king-addons'),
5813 'dotted' => esc_html__('Dotted', 'king-addons'),
5814 'dashed' => esc_html__('Dashed', 'king-addons'),
5815 'groove' => esc_html__('Groove', 'king-addons'),
5816 ],
5817 'default' => 'none',
5818 'selectors' => [
5819 '{{WRAPPER}} .king-addons-grid-slider-dot' => 'border-style: {{VALUE}};',
5820 ],
5821 'render_type' => 'template',
5822 'separator' => 'before',
5823 ]
5824 );
5825
5826 $this->add_control(
5827 'grid_slider_dots_border_width',
5828 [
5829 'label' => esc_html__('Border Width', 'king-addons'),
5830 'type' => Controls_Manager::DIMENSIONS,
5831 'size_units' => ['px'],
5832 'default' => [
5833 'top' => 1,
5834 'right' => 1,
5835 'bottom' => 1,
5836 'left' => 1,
5837 ],
5838 'selectors' => [
5839 '{{WRAPPER}} .king-addons-grid-slider-dot' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5840 ],
5841 'render_type' => 'template',
5842 'condition' => [
5843 'grid_slider_dots_border_type!' => 'none',
5844 ],
5845 ]
5846 );
5847
5848 $this->add_control(
5849 'grid_slider_dots_border_radius',
5850 [
5851 'label' => esc_html__('Border Radius', 'king-addons'),
5852 'type' => Controls_Manager::DIMENSIONS,
5853 'default' => [
5854 'top' => 50,
5855 'right' => 50,
5856 'bottom' => 50,
5857 'left' => 50,
5858 'unit' => '%',
5859 ],
5860 'size_units' => ['px', '%'],
5861 'selectors' => [
5862 '{{WRAPPER}} .king-addons-grid-slider-dot' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5863 ],
5864 'separator' => 'before',
5865 ]
5866 );
5867
5868 $this->add_responsive_control(
5869 'grid_slider_dots_gutter',
5870 [
5871 'type' => Controls_Manager::SLIDER,
5872 'label' => esc_html__('Gutter', 'king-addons'),
5873 'size_units' => ['px'],
5874 'range' => [
5875 'px' => [
5876 'min' => 0,
5877 'max' => 100,
5878 ],
5879 ],
5880 'default' => [
5881 'unit' => 'px',
5882 'size' => 7,
5883 ],
5884 'selectors' => [
5885 '{{WRAPPER}}.king-addons-grid-slider-dots-horizontal .king-addons-grid-slider-dot' => 'margin-right: {{SIZE}}{{UNIT}};',
5886 '{{WRAPPER}}.king-addons-grid-slider-dots-vertical .king-addons-grid-slider-dot' => 'margin-bottom: {{SIZE}}{{UNIT}};',
5887 ],
5888 'render_type' => 'template',
5889 'separator' => 'before',
5890 ]
5891 );
5892
5893 $this->add_control_grid_slider_dots_hr();
5894
5895 $this->add_responsive_control(
5896 'grid_slider_dots_vr',
5897 [
5898 'type' => Controls_Manager::SLIDER,
5899 'label' => esc_html__('Vertical Position', 'king-addons'),
5900 'size_units' => ['%', 'px'],
5901 'range' => [
5902 '%' => [
5903 'min' => -20,
5904 'max' => 120,
5905 ],
5906 'px' => [
5907 'min' => -200,
5908 'max' => 2000,
5909 ],
5910 ],
5911 'default' => [
5912 'unit' => '%',
5913 'size' => 96,
5914 ],
5915 'selectors' => [
5916 '{{WRAPPER}} .king-addons-grid-slider-dots' => 'top: {{SIZE}}{{UNIT}};',
5917 ],
5918 ]
5919 );
5920
5921 $this->end_controls_section();
5922
5923
5924 $this->start_controls_section(
5925 'section_style_filters',
5926 [
5927 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Filters', 'king-addons'),
5928 'tab' => Controls_Manager::TAB_STYLE,
5929 'show_label' => false,
5930 'condition' => [
5931 'layout_select!' => 'slider',
5932 'layout_filters' => 'yes',
5933 ],
5934 ]
5935 );
5936
5937 $this->add_control(
5938 'active_styles_notice',
5939 [
5940 'type' => Controls_Manager::RAW_HTML,
5941 'raw' => esc_html__('Apply active filter styles from the hover tab.', 'king-addons'),
5942 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info'
5943 ]
5944 );
5945
5946 $this->start_controls_tabs('tabs_grid_filters_style');
5947
5948 $this->start_controls_tab(
5949 'tab_grid_filters_normal',
5950 [
5951 'label' => esc_html__('Normal', 'king-addons'),
5952 ]
5953 );
5954
5955 $this->add_control(
5956 'filters_color',
5957 [
5958 'label' => esc_html__('Color', 'king-addons'),
5959 'type' => Controls_Manager::COLOR,
5960 'default' => '#7A7A7A',
5961 'selectors' => [
5962 '{{WRAPPER}} .king-addons-grid-filters li' => 'color: {{VALUE}}',
5963 '{{WRAPPER}} .king-addons-grid-filters li a' => 'color: {{VALUE}}',
5964 ],
5965 ]
5966 );
5967
5968 $this->add_control(
5969 'filters_bg_color',
5970 [
5971 'label' => esc_html__('Background Color', 'king-addons'),
5972 'type' => Controls_Manager::COLOR,
5973 'selectors' => [
5974 '{{WRAPPER}} .king-addons-grid-filters li > a' => 'background-color: {{VALUE}}',
5975 '{{WRAPPER}} .king-addons-grid-filters li > span' => 'background-color: {{VALUE}}',
5976 ]
5977 ]
5978 );
5979
5980 $this->add_control(
5981 'filters_border_color',
5982 [
5983 'label' => esc_html__('Border Color', 'king-addons'),
5984 'type' => Controls_Manager::COLOR,
5985 'default' => '#E8E8E8',
5986 'selectors' => [
5987 '{{WRAPPER}} .king-addons-grid-filters li > a' => 'border-color: {{VALUE}}',
5988 '{{WRAPPER}} .king-addons-grid-filters li > span' => 'border-color: {{VALUE}}',
5989 ],
5990 ]
5991 );
5992
5993 $this->add_group_control(
5994 Group_Control_Box_Shadow::get_type(),
5995 [
5996 'name' => 'filters_box_shadow',
5997 'selector' => '{{WRAPPER}} .king-addons-grid-filters li > a, {{WRAPPER}} .king-addons-grid-filters li > span',
5998 ]
5999 );
6000
6001 $this->add_control(
6002 'filters_wrapper_color',
6003 [
6004 'label' => esc_html__('Wrapper Color', 'king-addons'),
6005 'type' => Controls_Manager::COLOR,
6006 'selectors' => [
6007 '{{WRAPPER}} .king-addons-grid-filters' => 'background-color: {{VALUE}}',
6008 ],
6009 'separator' => 'after',
6010 ]
6011 );
6012
6013 $this->end_controls_tab();
6014
6015 $this->start_controls_tab(
6016 'tab_grid_filters_hover',
6017 [
6018 'label' => esc_html__('Hover', 'king-addons'),
6019 ]
6020 );
6021
6022 $this->add_control(
6023 'filters_color_hr',
6024 [
6025 'label' => esc_html__('Color', 'king-addons'),
6026 'type' => Controls_Manager::COLOR,
6027 'default' => '#ffffff',
6028 'selectors' => [
6029 '{{WRAPPER}} .king-addons-grid-filters li > a:hover' => 'color: {{VALUE}}',
6030 '{{WRAPPER}} .king-addons-grid-filters li > span:hover' => 'color: {{VALUE}}',
6031 '{{WRAPPER}} .king-addons-grid-filters li > .king-addons-active-filter' => 'color: {{VALUE}}',
6032 ],
6033 ]
6034 );
6035
6036 $this->add_control(
6037 'filters_bg_color_hr',
6038 [
6039 'label' => esc_html__('Background Color', 'king-addons'),
6040 'type' => Controls_Manager::COLOR,
6041 'default' => '#5B03FF',
6042 'selectors' => [
6043 '{{WRAPPER}} .king-addons-grid-filters li > a:hover' => 'background-color: {{VALUE}}',
6044 '{{WRAPPER}} .king-addons-grid-filters li > span:hover' => 'background-color: {{VALUE}}',
6045 '{{WRAPPER}} .king-addons-grid-filters li > .king-addons-active-filter' => 'background-color: {{VALUE}}',
6046 ]
6047 ]
6048 );
6049
6050 $this->add_control(
6051 'filters_border_color_hr',
6052 [
6053 'label' => esc_html__('Border Color', 'king-addons'),
6054 'type' => Controls_Manager::COLOR,
6055 'default' => '#E8E8E8',
6056 'selectors' => [
6057 '{{WRAPPER}} .king-addons-grid-filters li > a:hover' => 'border-color: {{VALUE}}',
6058 '{{WRAPPER}} .king-addons-grid-filters li > span:hover' => 'border-color: {{VALUE}}',
6059 '{{WRAPPER}} .king-addons-grid-filters li > .king-addons-active-filter' => 'border-color: {{VALUE}}',
6060 ]
6061 ]
6062 );
6063
6064 $this->add_control_filters_pointer_color_hr();
6065
6066 $this->add_group_control(
6067 Group_Control_Box_Shadow::get_type(),
6068 [
6069 'name' => 'filters_box_shadow_hr',
6070 'selector' => '{{WRAPPER}} .king-addons-grid-filters li > a:hover, {{WRAPPER}} .king-addons-grid-filters li > span:hover',
6071 'separator' => 'after',
6072 ]
6073 );
6074
6075 $this->end_controls_tab();
6076
6077 $this->end_controls_tabs();
6078
6079 $this->add_control_filters_pointer();
6080
6081 $this->add_control_filters_pointer_height();
6082
6083 $this->add_control_filters_pointer_animation();
6084
6085 $this->add_control(
6086 'filters_transition_duration',
6087 [
6088 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
6089 'type' => Controls_Manager::NUMBER,
6090 'default' => 0.1,
6091 'min' => 0,
6092 'max' => 5,
6093 'step' => 0.1,
6094 'selectors' => [
6095 '{{WRAPPER}} .king-addons-grid-filters li > a' => 'transition-duration: {{VALUE}}s',
6096 '{{WRAPPER}} .king-addons-grid-filters li > span' => 'transition-duration: {{VALUE}}s',
6097 '{{WRAPPER}} .king-addons-pointer-item:before' => 'transition-duration: {{VALUE}}s',
6098 '{{WRAPPER}} .king-addons-pointer-item:after' => 'transition-duration: {{VALUE}}s',
6099 ],
6100 'separator' => 'after',
6101 ]
6102 );
6103
6104 $this->add_group_control(
6105 Group_Control_Typography::get_type(),
6106 [
6107 'name' => 'filters_typography',
6108 'selector' => '{{WRAPPER}} .king-addons-grid-filters li'
6109 ]
6110 );
6111
6112 $this->add_control(
6113 'filters_border_type',
6114 [
6115 'label' => esc_html__('Border Type', 'king-addons'),
6116 'type' => Controls_Manager::SELECT,
6117 'options' => [
6118 'none' => esc_html__('None', 'king-addons'),
6119 'solid' => esc_html__('Solid', 'king-addons'),
6120 'double' => esc_html__('Double', 'king-addons'),
6121 'dotted' => esc_html__('Dotted', 'king-addons'),
6122 'dashed' => esc_html__('Dashed', 'king-addons'),
6123 'groove' => esc_html__('Groove', 'king-addons'),
6124 ],
6125 'default' => 'none',
6126 'selectors' => [
6127 '{{WRAPPER}} .king-addons-grid-filters li > a' => 'border-style: {{VALUE}};',
6128 '{{WRAPPER}} .king-addons-grid-filters li > span' => 'border-style: {{VALUE}};',
6129 ],
6130 'separator' => 'before',
6131 ]
6132 );
6133
6134 $this->add_control(
6135 'filters_border_width',
6136 [
6137 'label' => esc_html__('Border Width', 'king-addons'),
6138 'type' => Controls_Manager::DIMENSIONS,
6139 'size_units' => ['px'],
6140 'default' => [
6141 'top' => 1,
6142 'right' => 1,
6143 'bottom' => 1,
6144 'left' => 1,
6145 ],
6146 'selectors' => [
6147 '{{WRAPPER}} .king-addons-grid-filters li > a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6148 '{{WRAPPER}} .king-addons-grid-filters li > span' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6149 ],
6150 'condition' => [
6151 'filters_border_type!' => 'none',
6152 ],
6153 ]
6154 );
6155
6156 $this->add_responsive_control(
6157 'filters_distance_from_grid',
6158 [
6159 'label' => esc_html__('Distance From Grid', 'king-addons'),
6160 'type' => Controls_Manager::SLIDER,
6161 'size_units' => ['px'],
6162 'range' => [
6163 'px' => [
6164 'min' => 0,
6165 'max' => 100,
6166 ],
6167 ],
6168 'default' => [
6169 'unit' => 'px',
6170 'size' => 25,
6171 ],
6172 'selectors' => [
6173 '{{WRAPPER}} .king-addons-grid-filters' => 'margin-bottom: {{SIZE}}{{UNIT}};',
6174 ],
6175 'separator' => 'before'
6176 ]
6177 );
6178
6179 $this->add_control(
6180 'filters_icon_spacing',
6181 [
6182 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
6183 'type' => Controls_Manager::SLIDER,
6184 'size_units' => ['px'],
6185 'range' => [
6186 'px' => [
6187 'min' => 0,
6188 'max' => 25,
6189 ],
6190 ],
6191 'default' => [
6192 'unit' => 'px',
6193 'size' => 0,
6194 ],
6195 'selectors' => [
6196 '{{WRAPPER}} .king-addons-grid-filters-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
6197 '{{WRAPPER}} .king-addons-grid-filters-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
6198 ],
6199 ]
6200 );
6201
6202 $this->add_responsive_control(
6203 'filters_margin',
6204 [
6205 'label' => esc_html__('Margin', 'king-addons'),
6206 'type' => Controls_Manager::DIMENSIONS,
6207 'size_units' => ['px'],
6208 'default' => [
6209 'top' => 0,
6210 'right' => 5,
6211 'bottom' => 0,
6212 'left' => 0,
6213 ],
6214 'selectors' => [
6215 '{{WRAPPER}} .king-addons-grid-filters li' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6216 ],
6217 ]
6218 );
6219
6220 $this->add_responsive_control(
6221 'filters_padding',
6222 [
6223 'label' => esc_html__('Padding', 'king-addons'),
6224 'type' => Controls_Manager::DIMENSIONS,
6225 'size_units' => ['px',],
6226 'default' => [
6227 'top' => 3,
6228 'right' => 15,
6229 'bottom' => 3,
6230 'left' => 15,
6231 ],
6232 'selectors' => [
6233 '{{WRAPPER}} .king-addons-grid-filters li > a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6234 '{{WRAPPER}} .king-addons-grid-filters li > span' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6235 ],
6236 ]
6237 );
6238
6239 $this->add_responsive_control(
6240 'filters_wrapper_padding',
6241 [
6242 'label' => esc_html__('Wrapper Padding', 'king-addons'),
6243 'type' => Controls_Manager::DIMENSIONS,
6244 'size_units' => ['px',],
6245 'default' => [
6246 'top' => 0,
6247 'right' => 0,
6248 'bottom' => 0,
6249 'left' => 0,
6250 ],
6251 'selectors' => [
6252 '{{WRAPPER}} .king-addons-grid-filters' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6253 ],
6254 ]
6255 );
6256
6257 $this->add_control(
6258 'filters_radius',
6259 [
6260 'label' => esc_html__('Border Radius', 'king-addons'),
6261 'type' => Controls_Manager::DIMENSIONS,
6262 'size_units' => ['px', '%'],
6263 'default' => [
6264 'top' => 3,
6265 'right' => 3,
6266 'bottom' => 3,
6267 'left' => 3,
6268 ],
6269 'selectors' => [
6270 '{{WRAPPER}} .king-addons-grid-filters li > a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6271 '{{WRAPPER}} .king-addons-grid-filters li > span' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6272 ],
6273 'separator' => 'before',
6274 ]
6275 );
6276
6277 $this->end_controls_section();
6278
6279
6280 $this->start_controls_section(
6281 'section_style_pagination',
6282 [
6283 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Pagination', 'king-addons'),
6284 'tab' => Controls_Manager::TAB_STYLE,
6285 'show_label' => false,
6286 'condition' => [
6287 'layout_select!' => 'slider',
6288 'layout_pagination' => 'yes',
6289 ],
6290 ]
6291 );
6292
6293 $this->start_controls_tabs('tabs_grid_pagination_style');
6294
6295 $this->start_controls_tab(
6296 'tab_grid_pagination_normal',
6297 [
6298 'label' => esc_html__('Normal', 'king-addons'),
6299 ]
6300 );
6301
6302 $this->add_control(
6303 'pagination_color',
6304 [
6305 'label' => esc_html__('Color', 'king-addons'),
6306 'type' => Controls_Manager::COLOR,
6307 'default' => '#ffffff',
6308 'selectors' => [
6309 '{{WRAPPER}} .king-addons-grid-pagination a' => 'color: {{VALUE}}',
6310 '{{WRAPPER}} .king-addons-grid-pagination svg' => 'fill: {{VALUE}}',
6311 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'color: {{VALUE}}',
6312 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-disabled-arrow' => 'color: {{VALUE}}',
6313 ],
6314 ]
6315 );
6316
6317 $this->add_control(
6318 'pagination_bg_color',
6319 [
6320 'label' => esc_html__('Background Color', 'king-addons'),
6321 'type' => Controls_Manager::COLOR,
6322 'default' => '#5B03FF',
6323 'selectors' => [
6324 '{{WRAPPER}} .king-addons-grid-pagination a' => 'background-color: {{VALUE}}',
6325 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'background-color: {{VALUE}}',
6326 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-disabled-arrow' => 'background-color: {{VALUE}}',
6327 '{{WRAPPER}} .king-addons-pagination-finish' => 'color: {{VALUE}}',
6328 ]
6329 ]
6330 );
6331
6332 $this->add_control(
6333 'pagination_border_color',
6334 [
6335 'label' => esc_html__('Border Color', 'king-addons'),
6336 'type' => Controls_Manager::COLOR,
6337 'default' => '#E8E8E8',
6338 'selectors' => [
6339 '{{WRAPPER}} .king-addons-grid-pagination a' => 'border-color: {{VALUE}}',
6340 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'border-color: {{VALUE}}',
6341 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-disabled-arrow' => 'border-color: {{VALUE}}',
6342 ],
6343 ]
6344 );
6345
6346 $this->add_group_control(
6347 Group_Control_Box_Shadow::get_type(),
6348 [
6349 'name' => 'pagination_box_shadow',
6350 'selector' => '{{WRAPPER}} .king-addons-grid-pagination a, {{WRAPPER}} .king-addons-grid-pagination > div > span',
6351 ]
6352 );
6353
6354 $this->add_control(
6355 'pagination_loader_color',
6356 [
6357 'label' => esc_html__('Loader Color', 'king-addons'),
6358 'type' => Controls_Manager::COLOR,
6359 'default' => '#5B03FF',
6360 'selectors' => [
6361 '{{WRAPPER}} .king-addons-double-bounce .king-addons-child' => 'background-color: {{VALUE}}',
6362 '{{WRAPPER}} .king-addons-wave .king-addons-rect' => 'background-color: {{VALUE}}',
6363 '{{WRAPPER}} .king-addons-spinner-pulse' => 'background-color: {{VALUE}}',
6364 '{{WRAPPER}} .king-addons-chasing-dots .king-addons-child' => 'background-color: {{VALUE}}',
6365 '{{WRAPPER}} .king-addons-three-bounce .king-addons-child' => 'background-color: {{VALUE}}',
6366 '{{WRAPPER}} .king-addons-fading-circle .king-addons-circle:before' => 'background-color: {{VALUE}}',
6367 ],
6368 'condition' => [
6369 'pagination_type' => ['load-more', 'infinite-scroll']
6370 ]
6371 ]
6372 );
6373
6374 $this->add_control(
6375 'pagination_wrapper_color',
6376 [
6377 'label' => esc_html__('Wrapper Color', 'king-addons'),
6378 'type' => Controls_Manager::COLOR,
6379 'selectors' => [
6380 '{{WRAPPER}} .king-addons-grid-pagination' => 'background-color: {{VALUE}}',
6381 ],
6382 'separator' => 'after',
6383 ]
6384 );
6385
6386 $this->end_controls_tab();
6387
6388 $this->start_controls_tab(
6389 'tab_grid_pagination_hover',
6390 [
6391 'label' => esc_html__('Hover', 'king-addons'),
6392 ]
6393 );
6394
6395 $this->add_control(
6396 'pagination_color_hr',
6397 [
6398 'label' => esc_html__('Color', 'king-addons'),
6399 'type' => Controls_Manager::COLOR,
6400 'default' => '#ffffff',
6401 'selectors' => [
6402 '{{WRAPPER}} .king-addons-grid-pagination a:hover' => 'color: {{VALUE}}',
6403 '{{WRAPPER}} .king-addons-grid-pagination a:hover svg' => 'fill: {{VALUE}}',
6404 '{{WRAPPER}} .king-addons-grid-pagination > div > span:not(.king-addons-disabled-arrow):hover' => 'color: {{VALUE}}',
6405 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-grid-current-page' => 'color: {{VALUE}}',
6406 ],
6407 ]
6408 );
6409
6410 $this->add_control(
6411 'pagination_bg_color_hr',
6412 [
6413 'label' => esc_html__('Background Color', 'king-addons'),
6414 'type' => Controls_Manager::COLOR,
6415 'default' => '#4D02D8',
6416 'selectors' => [
6417 '{{WRAPPER}} .king-addons-grid-pagination a:hover' => 'background-color: {{VALUE}}',
6418 '{{WRAPPER}} .king-addons-grid-pagination > div > span:not(.king-addons-disabled-arrow):hover' => 'background-color: {{VALUE}}',
6419 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-grid-current-page' => 'background-color: {{VALUE}}',
6420 ]
6421 ]
6422 );
6423
6424 $this->add_control(
6425 'pagination_border_color_hr',
6426 [
6427 'label' => esc_html__('Border Color', 'king-addons'),
6428 'type' => Controls_Manager::COLOR,
6429 'default' => '#E8E8E8',
6430 'selectors' => [
6431 '{{WRAPPER}} .king-addons-grid-pagination a:hover' => 'border-color: {{VALUE}}',
6432 '{{WRAPPER}} .king-addons-grid-pagination > div > span:not(.king-addons-disabled-arrow):hover' => 'border-color: {{VALUE}}',
6433 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-grid-current-page' => 'border-color: {{VALUE}}',
6434 ]
6435 ]
6436 );
6437
6438 $this->add_group_control(
6439 Group_Control_Box_Shadow::get_type(),
6440 [
6441 'name' => 'pagination_box_shadow_hr',
6442 'selector' => '{{WRAPPER}} .king-addons-grid-pagination a:hover, {{WRAPPER}} .king-addons-grid-pagination > div > span:not(.king-addons-disabled-arrow):hover',
6443 'separator' => 'after',
6444 ]
6445 );
6446
6447 $this->end_controls_tab();
6448
6449 $this->end_controls_tabs();
6450
6451 $this->add_control(
6452 'pagination_transition_duration',
6453 [
6454 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
6455 'type' => Controls_Manager::NUMBER,
6456 'default' => 0.1,
6457 'min' => 0,
6458 'max' => 5,
6459 'step' => 0.1,
6460 'selectors' => [
6461 '{{WRAPPER}} .king-addons-grid-pagination a' => 'transition-duration: {{VALUE}}s',
6462 '{{WRAPPER}} .king-addons-grid-pagination svg' => 'transition-duration: {{VALUE}}s',
6463 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'transition-duration: {{VALUE}}s',
6464 ],
6465 'separator' => 'after',
6466 ]
6467 );
6468
6469 $this->add_group_control(
6470 Group_Control_Typography::get_type(),
6471 [
6472 'name' => 'pagination_typography',
6473 'selector' => '{{WRAPPER}} .king-addons-grid-pagination'
6474 ]
6475 );
6476
6477 $this->add_responsive_control(
6478 'pagination_icon_size',
6479 [
6480 'label' => esc_html__('Icon Size', 'king-addons'),
6481 'type' => Controls_Manager::SLIDER,
6482 'size_units' => ['px'],
6483 'range' => [
6484 'px' => [
6485 'min' => 5,
6486 'max' => 30,
6487 ],
6488 ],
6489 'default' => [
6490 'unit' => 'px',
6491 'size' => 15,
6492 ],
6493 'selectors' => [
6494 '{{WRAPPER}} .king-addons-grid-pagination i' => 'font-size: {{SIZE}}{{UNIT}};',
6495 '{{WRAPPER}} .king-addons-grid-pagination svg' => 'width: {{SIZE}}{{UNIT}};',
6496 ],
6497 ]
6498 );
6499
6500 $this->add_control(
6501 'pagination_border_type',
6502 [
6503 'label' => esc_html__('Border Type', 'king-addons'),
6504 'type' => Controls_Manager::SELECT,
6505 'options' => [
6506 'none' => esc_html__('None', 'king-addons'),
6507 'solid' => esc_html__('Solid', 'king-addons'),
6508 'double' => esc_html__('Double', 'king-addons'),
6509 'dotted' => esc_html__('Dotted', 'king-addons'),
6510 'dashed' => esc_html__('Dashed', 'king-addons'),
6511 'groove' => esc_html__('Groove', 'king-addons'),
6512 ],
6513 'default' => 'none',
6514 'selectors' => [
6515 '{{WRAPPER}} .king-addons-grid-pagination a' => 'border-style: {{VALUE}};',
6516 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'border-style: {{VALUE}};',
6517 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-grid-current-page' => 'border-style: {{VALUE}};',
6518 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-disabled-arrow' => 'border-style: {{VALUE}};',
6519 ],
6520 'separator' => 'before',
6521 ]
6522 );
6523
6524 $this->add_control(
6525 'pagination_border_width',
6526 [
6527 'label' => esc_html__('Border Width', 'king-addons'),
6528 'type' => Controls_Manager::DIMENSIONS,
6529 'size_units' => ['px'],
6530 'default' => [
6531 'top' => 1,
6532 'right' => 1,
6533 'bottom' => 1,
6534 'left' => 1,
6535 ],
6536 'selectors' => [
6537 '{{WRAPPER}} .king-addons-grid-pagination a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6538 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6539 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-disabled-arrow' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6540 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-grid-current-page' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6541 ],
6542 'condition' => [
6543 'pagination_border_type!' => 'none',
6544 ],
6545 ]
6546 );
6547
6548 $this->add_responsive_control(
6549 'pagination_distance_from_grid',
6550 [
6551 'label' => esc_html__('Distance From Grid', 'king-addons'),
6552 'type' => Controls_Manager::SLIDER,
6553 'size_units' => ['px'],
6554 'range' => [
6555 'px' => [
6556 'min' => 0,
6557 'max' => 100,
6558 ],
6559 ],
6560 'default' => [
6561 'unit' => 'px',
6562 'size' => 35,
6563 ],
6564 'selectors' => [
6565 '{{WRAPPER}} .king-addons-grid-pagination' => 'margin-top: {{SIZE}}{{UNIT}};',
6566 ],
6567 'separator' => 'before'
6568 ]
6569 );
6570
6571 $this->add_control(
6572 'pagination_gutter',
6573 [
6574 'label' => esc_html__('Gutter', 'king-addons'),
6575 'type' => Controls_Manager::SLIDER,
6576 'size_units' => ['px'],
6577 'range' => [
6578 'px' => [
6579 'min' => 0,
6580 'max' => 25,
6581 ],
6582 ],
6583 'default' => [
6584 'unit' => 'px',
6585 'size' => 10,
6586 ],
6587 'selectors' => [
6588 '{{WRAPPER}} .king-addons-grid-pagination a' => 'margin-right: {{SIZE}}{{UNIT}};',
6589 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'margin-right: {{SIZE}}{{UNIT}};',
6590 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-disabled-arrow' => 'margin-right: {{SIZE}}{{UNIT}};',
6591 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-grid-current-page' => 'margin-right: {{SIZE}}{{UNIT}};',
6592 ],
6593 ]
6594 );
6595
6596 $this->add_control(
6597 'pagination_icon_spacing',
6598 [
6599 'label' => esc_html__('Icon Spacing', 'king-addons'),
6600 'type' => Controls_Manager::SLIDER,
6601 'size_units' => ['px'],
6602 'range' => [
6603 'px' => [
6604 'min' => 0,
6605 'max' => 25,
6606 ],
6607 ],
6608 'default' => [
6609 'unit' => 'px',
6610 'size' => 10,
6611 ],
6612 'selectors' => [
6613 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-prev-post-link i' => 'padding-right: {{SIZE}}{{UNIT}};',
6614 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-next-post-link i' => 'padding-left: {{SIZE}}{{UNIT}};',
6615 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-first-page i' => 'padding-right: {{SIZE}}{{UNIT}};',
6616 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-prev-page i' => 'padding-right: {{SIZE}}{{UNIT}};',
6617 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-next-page i' => 'padding-left: {{SIZE}}{{UNIT}};',
6618 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-last-page i' => 'padding-left: {{SIZE}}{{UNIT}};',
6619 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-prev-post-link svg' => 'margin-right: {{SIZE}}{{UNIT}};',
6620 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-next-post-link svg' => 'margin-left: {{SIZE}}{{UNIT}};',
6621 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-first-page svg' => 'margin-right: {{SIZE}}{{UNIT}};',
6622 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-prev-page svg' => 'margin-right: {{SIZE}}{{UNIT}};',
6623 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-next-page svg' => 'margin-left: {{SIZE}}{{UNIT}};',
6624 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-last-page svg' => 'margin-left: {{SIZE}}{{UNIT}};',
6625 ],
6626 ]
6627 );
6628
6629 $this->add_responsive_control(
6630 'pagination_padding',
6631 [
6632 'label' => esc_html__('Padding', 'king-addons'),
6633 'type' => Controls_Manager::DIMENSIONS,
6634 'size_units' => ['px'],
6635 'default' => [
6636 'top' => 8,
6637 'right' => 15,
6638 'bottom' => 8,
6639 'left' => 15,
6640 ],
6641 'selectors' => [
6642 '{{WRAPPER}} .king-addons-grid-pagination a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6643 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6644 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-disabled-arrow' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6645 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-grid-current-page' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6646 ],
6647 ]
6648 );
6649
6650 $this->add_responsive_control(
6651 'pagination_wrapper_padding',
6652 [
6653 'label' => esc_html__('Wrapper Padding', 'king-addons'),
6654 'type' => Controls_Manager::DIMENSIONS,
6655 'size_units' => ['px'],
6656 'default' => [
6657 'top' => 0,
6658 'right' => 0,
6659 'bottom' => 0,
6660 'left' => 0,
6661 ],
6662 'selectors' => [
6663 '{{WRAPPER}} .king-addons-grid-pagination' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6664 ],
6665 ]
6666 );
6667
6668 $this->add_control(
6669 'pagination_radius',
6670 [
6671 'label' => esc_html__('Border Radius', 'king-addons'),
6672 'type' => Controls_Manager::DIMENSIONS,
6673 'size_units' => ['px', '%'],
6674 'default' => [
6675 'top' => 3,
6676 'right' => 3,
6677 'bottom' => 3,
6678 'left' => 3,
6679 ],
6680 'selectors' => [
6681 '{{WRAPPER}} .king-addons-grid-pagination a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6682 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6683 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-grid-current-page' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6684 ],
6685 'separator' => 'before',
6686 ]
6687 );
6688
6689
6690
6691
6692 $this->end_controls_section();
6693
6694
6695
6696 }
6697
6698 public function get_related_taxonomies()
6699 {
6700 $relations = [];
6701 foreach (Core::getCustomTypes('post', false) as $slug => $title) {
6702 $relations[$slug] = get_object_taxonomies($slug);
6703 }
6704 return json_encode($relations);
6705 }
6706
6707 public function get_max_num_pages()
6708 {
6709 $query = new WP_Query($this->get_main_query_args());
6710 $pages = (int)ceil($query->max_num_pages);
6711 wp_reset_postdata();
6712 return $pages;
6713 }
6714
6715 public function get_main_query_args()
6716 {
6717 $s = $this->get_settings_for_display();
6718 $author = !empty($s['query_author']) ? implode(',', $s['query_author']) : '';
6719 $paged = get_query_var('paged') ? get_query_var('paged') : (get_query_var('page') ? get_query_var('page') : 1);
6720 $offset = ($paged - 1) * $s['query_posts_per_page'] + (empty($s['query_offset']) ? 0 : $s['query_offset']);
6721
6722 // Remove premium-only randomize if not available
6723 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
6724 $s['query_randomize'] = '';
6725 $s['order_posts'] = 'date';
6726 }
6727 $order_by = $s['query_randomize'] !== '' ? $s['query_randomize'] : $s['order_posts'];
6728 if ('manual' === $s['query_selection']) $order_by = 'post__in';
6729
6730 $args = [
6731 'post_type' => 'attachment',
6732 'post_mime_type' => 'image', // <-- Only images
6733 'post_status' => 'inherit',
6734 'tax_query' => $this->get_tax_query_args(),
6735 'post__not_in' => $s['query_exclude_attachment'],
6736 'posts_per_page' => $s['query_posts_per_page'],
6737 'orderby' => $order_by,
6738 'author' => $author,
6739 'paged' => $paged,
6740 'offset' => $offset
6741 ];
6742
6743 if ('manual' === $s['query_selection']) {
6744 $post_ids = [];
6745 if (!empty($s['query_manual_attachment'])) {
6746 foreach ($s['query_manual_attachment'] as $attachment) {
6747 $post_ids[] = $attachment['id'];
6748 }
6749 }
6750 $orderby = ('' === $s['query_randomize']) ? 'post__in' : 'rand';
6751 $args = [
6752 'post_type' => 'attachment',
6753 'post_mime_type' => 'image', // <-- Only images
6754 'post_status' => 'inherit',
6755 'post__in' => $post_ids,
6756 'orderby' => $orderby,
6757 'posts_per_page' => $s['query_posts_per_page'],
6758 'paged' => $paged
6759 ];
6760 }
6761 if ('rand' !== $order_by && 'manual' !== $s['query_selection']) {
6762 $args['order'] = $s['order_direction'];
6763 }
6764 return $args;
6765 }
6766
6767 public function get_tax_query_args()
6768 {
6769 $s = $this->get_settings();
6770 $tax_query = [];
6771 foreach (get_object_taxonomies('attachment') as $tax) {
6772 if (!empty($s['query_taxonomy_' . $tax])) {
6773 $tax_query[] = [
6774 'taxonomy' => $tax,
6775 'field' => 'id',
6776 'terms' => $s['query_taxonomy_' . $tax]
6777 ];
6778 }
6779 }
6780 return $tax_query;
6781 }
6782
6783 public function get_animation_class($data, $object)
6784 {
6785 $class = '';
6786 if ('none' !== $data[$object . '_animation']) {
6787 $class .= ' king-addons-' . $object . '-' . $data[$object . '_animation'];
6788 $class .= ' king-addons-anim-size-' . $data[$object . '_animation_size'];
6789 $class .= ' king-addons-animation-timing-' . $data[$object . '_animation_timing'];
6790 if ('yes' === $data[$object . '_animation_tr']) $class .= ' king-addons-anim-transparency';
6791 }
6792 return $class;
6793 }
6794
6795 public function get_image_effect_class($s)
6796 {
6797 $class = '';
6798 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
6799 if (in_array($s['image_effects'], ['pro-zi', 'pro-zo', 'pro-go', 'pro-bo'])) {
6800 $s['image_effects'] = 'none';
6801 }
6802 }
6803 if ('none' !== $s['image_effects']) {
6804 $class .= ' king-addons-' . $s['image_effects'];
6805 }
6806 if ('slide' !== $s['image_effects']) {
6807 $class .= ' king-addons-effect-size-' . $s['image_effects_size'];
6808 } else {
6809 $class .= ' king-addons-effect-dir-' . $s['image_effects_direction'];
6810 }
6811 return $class;
6812 }
6813
6814 public function render_post_thumbnail($settings)
6815 {
6816 $id = get_the_ID();
6817 $src = Group_Control_Image_Size::get_attachment_image_src($id, 'layout_image_crop', $settings);
6818 $alt = ('' === wp_get_attachment_caption($id)) ? get_the_title() : wp_get_attachment_caption($id);
6819 echo '<div class="king-addons-grid-image-wrap" data-src="' . esc_url(wp_get_attachment_url($id)) . '">';
6820 echo '<img src="' . esc_url($src) . '" alt="' . wp_kses_post($alt) . '" class="king-addons-animation-timing-' . esc_html($settings['image_effects_animation_timing']) . '">';
6821 echo '</div>';
6822 }
6823
6824 public function render_media_overlay($s)
6825 {
6826 echo '<div class="king-addons-grid-media-hover-bg ' . $this->get_animation_class($s, 'overlay') . '" data-url="' . esc_url(get_the_permalink(get_the_ID())) . '">';
6827 if (king_addons_freemius()->can_use_premium_code__premium_only()) {
6828 if ('' !== $s['overlay_image']['url']) {
6829 echo '<img src="' . esc_url($s['overlay_image']['url']) . '">';
6830 }
6831 }
6832 echo '</div>';
6833 }
6834
6835 public function render_post_title($settings, $class)
6836 {
6837 $title_pointer = !king_addons_freemius()->can_use_premium_code__premium_only() ? 'none' : $this->get_settings()['title_pointer'];
6838 $title_pointer_animation = !king_addons_freemius()->can_use_premium_code__premium_only() ? 'fade' : $this->get_settings()['title_pointer_animation'];
6839 $pointer_item_class = (isset($this->get_settings()['title_pointer']) && 'none' !== $this->get_settings()['title_pointer']) ? 'class="king-addons-pointer-item"' : '';
6840 $class .= ' king-addons-pointer-' . $title_pointer . ' king-addons-pointer-line-fx king-addons-pointer-fx-' . $title_pointer_animation;
6841
6842 $tags_whitelist = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'span', 'p'];
6843 $element_title_tag = Core::validateHTMLTags($settings['element_title_tag'], 'h2', $tags_whitelist);
6844
6845 echo '<' . esc_attr($element_title_tag) . ' class="' . esc_attr($class) . '">';
6846 echo '<div class="inner-block">';
6847 if ('yes' === $settings['element_disable_link']) {
6848 echo '<span ' . $pointer_item_class . '>' . esc_html(wp_trim_words(get_the_title(), $settings['element_word_count'])) . '</span>';
6849 } else {
6850 echo '<a ' . $pointer_item_class . ' href="' . esc_url(get_the_permalink()) . '">';
6851 echo esc_html(wp_trim_words(get_the_title(), $settings['element_word_count']));
6852 echo '</a>';
6853 }
6854 echo '</div>';
6855 echo '</' . esc_attr($element_title_tag) . '>';
6856 }
6857
6858 public function render_post_excerpt($s, $class)
6859 {
6860 $dropcap_class = ('yes' === $s['element_dropcap']) ? ' king-addons-enable-dropcap' : '';
6861 $class .= $dropcap_class;
6862 if ('' === get_the_excerpt()) return;
6863 echo '<div class="' . esc_attr($class) . '"><div class="inner-block">';
6864 echo '<p>' . esc_html(wp_trim_words(get_the_excerpt(), $s['element_word_count'])) . '</p>';
6865 echo '</div></div>';
6866 }
6867
6868 public function render_post_date($s, $class)
6869 {
6870 echo '<div class="' . esc_attr($class) . '"><div class="inner-block"><span>';
6871 if ('before' === $s['element_extra_text_pos']) {
6872 echo '<span class="king-addons-grid-extra-text-left">' . esc_html($s['element_extra_text']) . '</span>';
6873 }
6874 if ('before' === $s['element_extra_icon_pos']) {
6875 ob_start();
6876 Icons_Manager::render_icon($s['element_extra_icon'], ['aria-hidden' => 'true']);
6877 $extra_icon = ob_get_clean();
6878 echo '<span class="king-addons-grid-extra-icon-left">' . $extra_icon . '</span>';
6879 }
6880 echo esc_html(apply_filters('the_date', get_the_date(), get_option('date_format'), '', ''));
6881 if ('after' === $s['element_extra_icon_pos']) {
6882 ob_start();
6883 Icons_Manager::render_icon($s['element_extra_icon'], ['aria-hidden' => 'true']);
6884 $extra_icon = ob_get_clean();
6885 echo '<span class="king-addons-grid-extra-icon-right">' . $extra_icon . '</span>';
6886 }
6887 if ('after' === $s['element_extra_text_pos']) {
6888 echo '<span class="king-addons-grid-extra-text-right">' . esc_html($s['element_extra_text']) . '</span>';
6889 }
6890 echo '</span></div></div>';
6891 }
6892
6893 public function render_post_time($s, $class)
6894 {
6895 echo '<div class="' . esc_attr($class) . '"><div class="inner-block"><span>';
6896 if ('before' === $s['element_extra_text_pos']) {
6897 echo '<span class="king-addons-grid-extra-text-left">' . esc_html($s['element_extra_text']) . '</span>';
6898 }
6899 if ('before' === $s['element_extra_icon_pos']) {
6900 ob_start();
6901 Icons_Manager::render_icon($s['element_extra_icon'], ['aria-hidden' => 'true']);
6902 $extra_icon = ob_get_clean();
6903 echo '<span class="king-addons-grid-extra-icon-left">' . $extra_icon . '</span>';
6904 }
6905 echo esc_html(get_the_time());
6906 if ('after' === $s['element_extra_icon_pos']) {
6907 ob_start();
6908 Icons_Manager::render_icon($s['element_extra_icon'], ['aria-hidden' => 'true']);
6909 $extra_icon = ob_get_clean();
6910 echo '<span class="king-addons-grid-extra-icon-right">' . $extra_icon . '</span>';
6911 }
6912 if ('after' === $s['element_extra_text_pos']) {
6913 echo '<span class="king-addons-grid-extra-text-right">' . esc_html($s['element_extra_text']) . '</span>';
6914 }
6915 echo '</span></div></div>';
6916 }
6917
6918 public function render_post_author($s, $class)
6919 {
6920 $author_id = get_post_field('post_author');
6921 echo '<div class="' . esc_attr($class) . '"><div class="inner-block">';
6922 if ('before' === $s['element_extra_text_pos']) {
6923 echo '<span class="king-addons-grid-extra-text-left">' . esc_html($s['element_extra_text']) . '</span>';
6924 }
6925 echo '<a href="' . esc_url(get_author_posts_url($author_id)) . '">';
6926 if ('before' === $s['element_extra_icon_pos']) {
6927 ob_start();
6928 Icons_Manager::render_icon($s['element_extra_icon'], ['aria-hidden' => 'true']);
6929 $extra_icon = ob_get_clean();
6930 echo '<span class="king-addons-grid-extra-icon-left">' . $extra_icon . '</span>';
6931 }
6932 if ('yes' === $s['element_show_avatar']) {
6933 echo get_avatar($author_id, $s['element_avatar_size']);
6934 }
6935 echo '<span>' . esc_html(get_the_author_meta('display_name', $author_id)) . '</span>';
6936 if ('after' === $s['element_extra_icon_pos']) {
6937 ob_start();
6938 Icons_Manager::render_icon($s['element_extra_icon'], ['aria-hidden' => 'true']);
6939 $extra_icon = ob_get_clean();
6940 echo '<span class="king-addons-grid-extra-icon-right">' . $extra_icon . '</span>';
6941 }
6942 echo '</a>';
6943 if ('after' === $s['element_extra_text_pos']) {
6944 echo '<span class="king-addons-grid-extra-text-right">' . esc_html($s['element_extra_text']) . '</span>';
6945 }
6946 echo '</div></div>';
6947 }
6948
6949 public function render_post_likes($s, $class, $post_id)
6950 {
6951 // Intentionally empty in the original
6952 }
6953
6954 public function render_post_sharing_icons($s, $class)
6955 {
6956 // Intentionally empty in the original
6957 }
6958
6959 public function render_post_lightbox($s, $class, $post_id)
6960 {
6961 echo '<div class="' . esc_attr($class) . '"><div class="inner-block">';
6962 $lightbox_source = get_the_post_thumbnail_url($post_id);
6963 if ('audio' === get_post_format()) {
6964 if ('meta' === $s['element_lightbox_pfa_select']) {
6965 $meta_value = get_post_meta($post_id, $s['element_lightbox_pfa_meta'], true);
6966 if (false === strpos($meta_value, '<iframe ')) {
6967 add_filter('oembed_result', $media_grid_filter = function ($html) {
6968 preg_match('/<iframe.*src=\"(.*)\".*><\/iframe>/isU', $html, $m);
6969 return $m[1] . '&auto_play=true';
6970 }, 50, 3);
6971 $track_url = wp_oembed_get($meta_value);
6972 remove_filter('oembed_result', $media_grid_filter, 50);
6973 } else {
6974 $track_url = Core::filterOembedResults($meta_value);
6975 }
6976 $lightbox_source = $track_url;
6977 }
6978 } elseif ('video' === get_post_format()) {
6979 if ('meta' === $s['element_lightbox_pfv_select']) {
6980 $meta_value = get_post_meta($post_id, $s['element_lightbox_pfv_meta'], true);
6981 if (false === strpos($meta_value, '<iframe ')) {
6982 $video = Embed::get_video_properties($meta_value);
6983 } else {
6984 $video = Embed::get_video_properties(Core::filterOembedResults($meta_value));
6985 }
6986 if ('youtube' === $video['provider']) {
6987 $video_url = 'https://www.youtube.com/embed/' . $video['video_id'] . '?feature=oembed&autoplay=1&controls=1';
6988 } elseif ('vimeo' === $video['provider']) {
6989 $video_url = 'https://player.vimeo.com/video/' . $video['video_id'] . '?autoplay=1#t=0';
6990 }
6991 if (isset($video_url)) $lightbox_source = $video_url;
6992 }
6993 }
6994 if (!$lightbox_source) $lightbox_source = wp_get_attachment_url($post_id);
6995 echo '<span data-src="' . esc_url($lightbox_source) . '">';
6996 if ('before' === $s['element_extra_text_pos']) {
6997 echo '<span class="king-addons-grid-extra-text-left">' . esc_html($s['element_extra_text']) . '</span>';
6998 }
6999 echo '<i class="' . esc_attr($s['element_extra_icon']['value']) . '"></i>';
7000 if ('after' === $s['element_extra_text_pos']) {
7001 echo '<span class="king-addons-grid-extra-text-right">' . esc_html($s['element_extra_text']) . '</span>';
7002 }
7003 echo '</span>';
7004 if ('yes' === $s['element_lightbox_overlay']) {
7005 echo '<div class="king-addons-grid-lightbox-overlay"></div>';
7006 }
7007 echo '</div></div>';
7008 }
7009
7010 public function render_post_element_separator($s, $class)
7011 {
7012 echo '<div class="' . esc_attr($class . ' ' . $s['element_separator_style']) . '">';
7013 echo '<div class="inner-block"><span></span></div></div>';
7014 }
7015
7016 public function render_post_taxonomies($settings, $class, $post_id)
7017 {
7018 $terms = wp_get_post_terms($post_id, $settings['element_select']);
7019 $count = 0;
7020
7021 $tax1_pointer = !king_addons_freemius()->can_use_premium_code__premium_only() ? 'none' : $this->get_settings()['tax1_pointer'];
7022 $tax1_pointer_animation = !king_addons_freemius()->can_use_premium_code__premium_only() ? 'fade' : $this->get_settings()['tax1_pointer_animation'];
7023 $tax2_pointer = !king_addons_freemius()->can_use_premium_code__premium_only() ? 'none' : $this->get_settings()['tax2_pointer'];
7024 $tax2_pointer_animation = !king_addons_freemius()->can_use_premium_code__premium_only() ? 'fade' : $this->get_settings()['tax2_pointer_animation'];
7025 $pointer_item_class = ('none' !== $tax1_pointer || 'none' !== $tax2_pointer) ? 'class="king-addons-pointer-item"' : '';
7026
7027 if ('king-addons-grid-tax-style-1' === $settings['element_tax_style']) {
7028 $class .= ' king-addons-pointer-' . $tax1_pointer . ' king-addons-pointer-line-fx king-addons-pointer-fx-' . $tax1_pointer_animation;
7029 } else {
7030 $class .= ' king-addons-pointer-' . $tax2_pointer . ' king-addons-pointer-line-fx king-addons-pointer-fx-' . $tax2_pointer_animation;
7031 }
7032
7033 echo '<div class="' . esc_attr($class . ' ' . $settings['element_tax_style']) . '">';
7034 echo '<div class="inner-block">';
7035
7036 if ('before' === $settings['element_extra_text_pos']) {
7037 echo '<span class="king-addons-grid-extra-text-left">' . esc_html($settings['element_extra_text']) . '</span>';
7038 }
7039 if ('before' === $settings['element_extra_icon_pos']) {
7040 ob_start();
7041 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
7042 $extra_icon = ob_get_clean();
7043 echo '<span class="king-addons-grid-extra-icon-left">' . $extra_icon . '</span>';
7044 }
7045
7046 foreach ($terms as $term) {
7047 echo '<a ' . $pointer_item_class . ' href="' . esc_url(get_term_link($term->term_id)) . '">' . esc_html($term->name);
7048 if (++$count !== count($terms)) {
7049 echo '<span class="tax-sep">' . esc_html($settings['element_tax_sep']) . '</span>';
7050 }
7051 echo '</a>';
7052 }
7053
7054 if ('after' === $settings['element_extra_icon_pos']) {
7055 ob_start();
7056 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
7057 $extra_icon = ob_get_clean();
7058 echo '<span class="king-addons-grid-extra-icon-right">' . $extra_icon . '</span>';
7059 }
7060 if ('after' === $settings['element_extra_text_pos']) {
7061 echo '<span class="king-addons-grid-extra-text-right">' . esc_html($settings['element_extra_text']) . '</span>';
7062 }
7063 echo '</div></div>';
7064 }
7065
7066 public function get_elements($type, $settings, $class, $post_id)
7067 {
7068 if ('pro-lk' === $type || 'pro-shr' === $type) $type = 'title';
7069 switch ($type) {
7070 case 'title':
7071 $this->render_post_title($settings, $class);
7072 break;
7073 case 'caption':
7074 $this->render_post_excerpt($settings, $class);
7075 break;
7076 case 'date':
7077 $this->render_post_date($settings, $class);
7078 break;
7079 case 'time':
7080 $this->render_post_time($settings, $class);
7081 break;
7082 case 'author':
7083 $this->render_post_author($settings, $class);
7084 break;
7085 case 'likes':
7086 $this->render_post_likes($settings, $class, $post_id);
7087 break;
7088 case 'sharing':
7089 $this->render_post_sharing_icons($settings, $class);
7090 break;
7091 case 'lightbox':
7092 $this->render_post_lightbox($settings, $class, $post_id);
7093 break;
7094 case 'separator':
7095 $this->render_post_element_separator($settings, $class);
7096 break;
7097 default:
7098 $this->render_post_taxonomies($settings, $class, $post_id);
7099 break;
7100 }
7101 }
7102
7103 public function get_elements_by_location($location, $settings, $post_id)
7104 {
7105 $locations = [];
7106 foreach ($settings['grid_elements'] as $data) {
7107 $place = $data['element_location'];
7108 $alignV = $data['element_align_vr'];
7109 if (!king_addons_freemius()->can_use_premium_code__premium_only()) $alignV = 'middle';
7110 if (!isset($locations[$place])) $locations[$place] = [];
7111 if ('over' === $place) {
7112 if (!isset($locations[$place][$alignV])) $locations[$place][$alignV] = [];
7113 $locations[$place][$alignV][] = $data;
7114 } else {
7115 $locations[$place][] = $data;
7116 }
7117 }
7118 if (!empty($locations[$location])) {
7119 if ('over' === $location) {
7120 foreach ($locations[$location] as $align => $elements) {
7121 if ('middle' === $align) {
7122 echo '<div class="king-addons-cv-container"><div class="king-addons-cv-outer"><div class="king-addons-cv-inner">';
7123 }
7124 echo '<div class="king-addons-grid-media-hover-' . esc_attr($align) . ' elementor-clearfix">';
7125 foreach ($elements as $data) {
7126 $class = 'king-addons-grid-item-' . $data['element_select'] . ' elementor-repeater-item-' . $data['_id'];
7127 $class .= ' king-addons-grid-item-display-' . $data['element_display'];
7128 $class .= ' king-addons-grid-item-align-' . $data['element_align_hr'];
7129 $class .= $this->get_animation_class($data, 'element');
7130 $this->get_elements($data['element_select'], $data, $class, $post_id);
7131 }
7132 echo '</div>';
7133 if ('middle' === $align) echo '</div></div></div>';
7134 }
7135 } else {
7136 echo '<div class="king-addons-grid-item-' . esc_attr($location) . '-content elementor-clearfix">';
7137 foreach ($locations[$location] as $data) {
7138 $class = 'king-addons-grid-item-' . $data['element_select'] . ' elementor-repeater-item-' . $data['_id'];
7139 $class .= ' king-addons-grid-item-display-' . $data['element_display'];
7140 $class .= ' king-addons-grid-item-align-' . $data['element_align_hr'];
7141 $this->get_elements($data['element_select'], $data, $class, $post_id);
7142 }
7143 echo '</div>';
7144 }
7145 }
7146 }
7147
7148 public function render_grid_filters($s)
7149 {
7150 $taxonomy = $s['filters_select'];
7151 if ('' === $taxonomy || !isset($s['query_taxonomy_' . $taxonomy])) return;
7152 $custom_filters = $s['query_taxonomy_' . $taxonomy];
7153
7154 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
7155 $s['filters_default_filter'] = '';
7156 $s['filters_icon_align'] = '';
7157 $s['filters_count'] = '';
7158 $s['filters_pointer'] = 'none';
7159 $s['filters_pointer_animation'] = 'none';
7160 }
7161
7162 $left_icon = ('left' === $s['filters_icon_align']) ? '<i class="' . esc_attr($s['filters_icon']['value']) . ' king-addons-grid-filters-icon-left"></i>' : '';
7163 $right_icon = ('right' === $s['filters_icon_align']) ? '<i class="' . esc_attr($s['filters_icon']['value']) . ' king-addons-grid-filters-icon-right"></i>' : '';
7164 $l_sep = ('left' === $s['filters_separator_align']) ? '<em class="king-addons-grid-filters-sep">' . esc_attr($s['filters_separator']) . '</em>' : '';
7165 $r_sep = ('right' === $s['filters_separator_align']) ? '<em class="king-addons-grid-filters-sep">' . esc_attr($s['filters_separator']) . '</em>' : '';
7166 $post_count = ('yes' === $s['filters_count']) ? '<sup data-brackets="' . esc_attr($s['filters_count_brackets']) . '"></sup>' : '';
7167 $p_class = ' king-addons-pointer-' . $s['filters_pointer'] . ' king-addons-pointer-line-fx king-addons-pointer-fx-' . $s['filters_pointer_animation'];
7168 $p_item_class = ('none' !== $s['filters_pointer']) ? 'king-addons-pointer-item' : '';
7169
7170 echo '<ul class="king-addons-grid-filters elementor-clearfix king-addons-grid-filters-sep-' . esc_attr($s['filters_separator_align']) . '">';
7171 if ('yes' === $s['filters_all'] && 'yes' !== $s['filters_linkable']) {
7172 echo '<li class="' . esc_attr($p_class) . '">';
7173 echo '<span data-filter="*" class="king-addons-active-filter ' . $p_item_class . '">' . $left_icon . esc_html($s['filters_all_text']) . $right_icon . $post_count . '</span>' . $r_sep;
7174 echo '</li>';
7175 }
7176
7177 if ($s['query_selection'] === 'dynamic' && !empty($custom_filters)) {
7178 $parent_filters = [];
7179 foreach ($custom_filters as $term_id) {
7180 $filter = get_term_by('id', $term_id, $taxonomy);
7181 if (!$filter) continue;
7182 $dataAttr = ('post_tag' === $taxonomy) ? 'tag-' . $filter->slug : $taxonomy . '-' . $filter->slug;
7183 if (0 === $filter->parent) {
7184 $children = get_term_children($filter->term_id, $taxonomy);
7185 $dataRole = (!empty($children)) ? ' data-role="parent"' : '';
7186 echo '<li' . $dataRole . ' class="' . esc_attr($p_class) . '">';
7187 if ('yes' !== $s['filters_linkable']) {
7188 echo $l_sep . '<span class="' . $p_item_class . '" data-filter=".' . esc_attr(urldecode($dataAttr)) . '">' . $left_icon . esc_html($filter->name) . $right_icon . $post_count . '</span>' . $r_sep;
7189 } else {
7190 echo $l_sep . '<a class="' . $p_item_class . '" href="' . esc_url(get_term_link($filter->term_id, $taxonomy)) . '">' . $left_icon . esc_html($filter->name) . $right_icon . $post_count . '</a>' . $r_sep;
7191 }
7192 echo '</li>';
7193 } else {
7194 $parent_filters[] = $filter->parent;
7195 }
7196 }
7197 } else {
7198 $all_filters = get_terms($taxonomy);
7199 $parent_filters = [];
7200 if (!is_wp_error($all_filters)) {
7201 foreach ($all_filters as $filter) {
7202 $dataAttr = ('post_tag' === $taxonomy) ? 'tag-' . $filter->slug : $taxonomy . '-' . $filter->slug;
7203 if (0 === $filter->parent) {
7204 $children = get_term_children($filter->term_id, $taxonomy);
7205 $dataRole = (!empty($children)) ? ' data-role="parent"' : '';
7206 echo '<li' . $dataRole . ' class="' . esc_attr($p_class) . '">';
7207 if ('yes' !== $s['filters_linkable']) {
7208 echo $l_sep . '<span class="' . $p_item_class . '" data-filter=".' . esc_attr(urldecode($dataAttr)) . '">' . $left_icon . esc_html($filter->name) . $right_icon . $post_count . '</span>' . $r_sep;
7209 } else {
7210 echo $l_sep . '<a class="' . $p_item_class . '" href="' . esc_url(get_term_link($filter->term_id, $taxonomy)) . '" data-filter=".' . esc_attr(urldecode($dataAttr)) . '">' . $left_icon . esc_html($filter->name) . $right_icon . $post_count . '</a>' . $r_sep;
7211 }
7212 echo '</li>';
7213 } else {
7214 $parent_filters[] = $filter->parent;
7215 }
7216 }
7217 }
7218 }
7219
7220 if ('yes' !== $s['filters_linkable']) {
7221 foreach (array_unique($parent_filters) as $parent_filter) {
7222 $parent = get_term_by('id', $parent_filter, $taxonomy);
7223 if (!$parent) continue;
7224 $children = get_term_children($parent_filter, $taxonomy);
7225 $dataAttr = ('post_tag' === $taxonomy) ? 'tag-' . $parent->slug : $taxonomy . '-' . $parent->slug;
7226 echo '<ul data-parent=".' . esc_attr(urldecode($dataAttr)) . '" class="king-addons-sub-filters">';
7227 echo '<li data-role="back" class="' . esc_attr($p_class) . '">';
7228 echo '<span class="king-addons-back-filter" data-filter=".' . esc_attr(urldecode($dataAttr)) . '">';
7229 echo '<i class="fas fa-long-arrow-alt-left"></i>&nbsp;&nbsp;' . esc_html__('Back', 'king-addons') . '</span></li>';
7230 foreach ($children as $child) {
7231 $sub_filter = get_term_by('id', $child, $taxonomy);
7232 if (!$sub_filter) continue;
7233 $dataAttr = ('post_tag' === $taxonomy) ? 'tag-' . $sub_filter->slug : $taxonomy . '-' . $sub_filter->slug;
7234 echo '<li data-role="sub" class="' . esc_attr($p_class) . '">';
7235 echo $l_sep . '<span class="' . $p_item_class . '" data-filter=".' . esc_attr(urldecode($dataAttr)) . '">' . $left_icon . esc_html($sub_filter->name) . $right_icon . $post_count . '</span>' . $r_sep;
7236 echo '</li>';
7237 }
7238 echo '</ul>';
7239 }
7240 }
7241 echo '</ul>';
7242 }
7243
7244 public function render_grid_pagination($s)
7245 {
7246 if ('yes' !== $s['layout_pagination'] || 1 === $this->get_max_num_pages() || 'slider' === $s['layout_select']) return;
7247 global $paged;
7248 $pages = $this->get_max_num_pages();
7249 $paged = empty($paged) ? 1 : $paged;
7250
7251 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
7252 if ('pro-is' === $s['pagination_type']) $s['pagination_type'] = 'default';
7253 }
7254 echo '<div class="king-addons-grid-pagination elementor-clearfix king-addons-grid-pagination-' . esc_attr($s['pagination_type']) . '">';
7255
7256 if ('default' === $s['pagination_type']) {
7257 if ($paged < $pages) {
7258 echo '<a href="' . esc_url(get_pagenum_link($paged + 1)) . '" class="king-addons-prev-post-link">';
7259 echo Core::getIcon($s['pagination_on_icon'], 'left') . esc_html($s['pagination_older_text']) . '</a>';
7260 } elseif ('yes' === $s['pagination_disabled_arrows']) {
7261 echo '<span class="king-addons-prev-post-link king-addons-disabled-arrow">';
7262 echo Core::getIcon($s['pagination_on_icon'], 'left') . esc_html($s['pagination_older_text']) . '</span>';
7263 }
7264 if ($paged > 1) {
7265 echo '<a href="' . esc_url(get_pagenum_link($paged - 1)) . '" class="king-addons-next-post-link">';
7266 echo esc_html($s['pagination_newer_text']) . Core::getIcon($s['pagination_on_icon'], 'right') . '</a>';
7267 } elseif ('yes' === $s['pagination_disabled_arrows']) {
7268 echo '<span class="king-addons-next-post-link king-addons-disabled-arrow">';
7269 echo esc_html($s['pagination_newer_text']) . Core::getIcon($s['pagination_on_icon'], 'right') . '</span>';
7270 }
7271 } elseif ('numbered' === $s['pagination_type']) {
7272 $range = $s['pagination_range'];
7273 $showitems = ($range * 2) + 1;
7274 if (1 !== $pages) {
7275 if ('yes' === $s['pagination_prev_next'] || 'yes' === $s['pagination_first_last']) {
7276 echo '<div class="king-addons-grid-pagination-left-arrows">';
7277 if ('yes' === $s['pagination_first_last']) {
7278 if ($paged >= 2) {
7279 echo '<a href="' . esc_url(get_pagenum_link()) . '" class="king-addons-first-page">';
7280 echo Core::getIcon($s['pagination_fl_icon'], 'left') . '<span>' . esc_html($s['pagination_first_text']) . '</span></a>';
7281 } elseif ('yes' === $s['pagination_disabled_arrows']) {
7282 echo '<span class="king-addons-first-page king-addons-disabled-arrow">';
7283 echo Core::getIcon($s['pagination_fl_icon'], 'left') . '<span>' . esc_html($s['pagination_first_text']) . '</span></span>';
7284 }
7285 }
7286 if ('yes' === $s['pagination_prev_next']) {
7287 if ($paged > 1) {
7288 echo '<a href="' . esc_url(get_pagenum_link($paged - 1)) . '" class="king-addons-prev-page">';
7289 echo Core::getIcon($s['pagination_pn_icon'], 'left') . '<span>' . esc_html($s['pagination_prev_text']) . '</span></a>';
7290 } elseif ('yes' === $s['pagination_disabled_arrows']) {
7291 echo '<span class="king-addons-prev-page king-addons-disabled-arrow">';
7292 echo Core::getIcon($s['pagination_pn_icon'], 'left') . '<span>' . esc_html($s['pagination_prev_text']) . '</span></span>';
7293 }
7294 }
7295 echo '</div>';
7296 }
7297 for ($i = 1; $i <= $pages; $i++) {
7298 if (1 !== $pages && (!($i >= $paged + $range + 1 || $i <= $paged - $range - 1) || $pages <= $showitems)) {
7299 if ($paged === $i) {
7300 echo '<span class="king-addons-grid-current-page">' . $i . '</span>';
7301 } else {
7302 echo '<a href="' . esc_url(get_pagenum_link($i)) . '">' . $i . '</a>';
7303 }
7304 }
7305 }
7306 if ('yes' === $s['pagination_prev_next'] || 'yes' === $s['pagination_first_last']) {
7307 echo '<div class="king-addons-grid-pagination-right-arrows">';
7308 if ('yes' === $s['pagination_prev_next']) {
7309 if ($paged < $pages) {
7310 echo '<a href="' . esc_url(get_pagenum_link($paged + 1)) . '" class="king-addons-next-page">';
7311 echo '<span>' . esc_html($s['pagination_next_text']) . '</span>' . Core::getIcon($s['pagination_pn_icon'], 'right') . '</a>';
7312 } elseif ('yes' === $s['pagination_disabled_arrows']) {
7313 echo '<span class="king-addons-next-page king-addons-disabled-arrow">';
7314 echo '<span>' . esc_html($s['pagination_next_text']) . '</span>' . Core::getIcon($s['pagination_pn_icon'], 'right') . '</span>';
7315 }
7316 }
7317 if ('yes' === $s['pagination_first_last']) {
7318 if ($paged <= $pages - 1) {
7319 echo '<a href="' . esc_url(get_pagenum_link($pages)) . '" class="king-addons-last-page">';
7320 echo '<span>' . esc_html($s['pagination_last_text']) . '</span>' . Core::getIcon($s['pagination_fl_icon'], 'right') . '</a>';
7321 } elseif ('yes' === $s['pagination_disabled_arrows']) {
7322 echo '<span class="king-addons-last-page king-addons-disabled-arrow">';
7323 echo '<span>' . esc_html($s['pagination_last_text']) . '</span>' . Core::getIcon($s['pagination_fl_icon'], 'right') . '</span>';
7324 }
7325 }
7326 echo '</div>';
7327 }
7328 }
7329 } else {
7330 echo '<a href="' . esc_url(get_pagenum_link($paged + 1)) . '" class="king-addons-load-more-btn" data-e-disable-page-transition>';
7331 echo esc_html($s['pagination_load_more_text']) . '</a>';
7332 echo '<div class="king-addons-pagination-loading">';
7333 switch ($s['pagination_animation']) {
7334 case 'loader-1':
7335 echo '<div class="king-addons-double-bounce"><div class="king-addons-child king-addons-double-bounce1"></div><div class="king-addons-child king-addons-double-bounce2"></div></div>';
7336 break;
7337 case 'loader-2':
7338 echo '<div class="king-addons-wave"><div class="king-addons-rect king-addons-rect1"></div><div class="king-addons-rect king-addons-rect2"></div><div class="king-addons-rect king-addons-rect3"></div><div class="king-addons-rect king-addons-rect4"></div><div class="king-addons-rect king-addons-rect5"></div></div>';
7339 break;
7340 case 'loader-3':
7341 echo '<div class="king-addons-spinner king-addons-spinner-pulse"></div>';
7342 break;
7343 case 'loader-4':
7344 echo '<div class="king-addons-chasing-dots"><div class="king-addons-child king-addons-dot1"></div><div class="king-addons-child king-addons-dot2"></div></div>';
7345 break;
7346 case 'loader-5':
7347 echo '<div class="king-addons-three-bounce"><div class="king-addons-child king-addons-bounce1"></div><div class="king-addons-child king-addons-bounce2"></div><div class="king-addons-child king-addons-bounce3"></div></div>';
7348 break;
7349 case 'loader-6':
7350 echo '<div class="king-addons-fading-circle">';
7351 for ($i = 1; $i <= 12; $i++) {
7352 echo '<div class="king-addons-circle king-addons-circle' . $i . '"></div>';
7353 }
7354 echo '</div>';
7355 break;
7356 }
7357 echo '</div>';
7358 echo '<p class="king-addons-pagination-finish">' . esc_html($s['pagination_finish_text']) . '</p>';
7359 }
7360 echo '</div>';
7361 }
7362
7363 public function add_grid_settings($s)
7364 {
7365 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
7366 $s['filters_deeplinking'] = '';
7367 $s['filters_count'] = '';
7368 $s['filters_default_filter'] = '';
7369 if (in_array($s['filters_animation'], ['pro-fd', 'pro-fs'])) {
7370 $s['filters_animation'] = 'zoom';
7371 }
7372 }
7373 $ghrD = $s['layout_gutter_hr']['size'];
7374 $ghrM = $s['layout_gutter_hr_mobile']['size'] ?? $ghrD;
7375 $ghrME = $s['layout_gutter_hr_mobile_extra']['size'] ?? $ghrM;
7376 $ghrT = $s['layout_gutter_hr_tablet']['size'] ?? $ghrME;
7377 $ghrTE = $s['layout_gutter_hr_tablet_extra']['size'] ?? $ghrT;
7378 $ghrL = $s['layout_gutter_hr_laptop']['size'] ?? $ghrD;
7379 $ghrW = $s['layout_gutter_hr_widescreen']['size'] ?? $ghrD;
7380
7381 $gvrD = $s['layout_gutter_vr']['size'];
7382 $gvrM = $s['layout_gutter_vr_mobile']['size'] ?? $gvrD;
7383 $gvrME = $s['layout_gutter_vr_mobile_extra']['size'] ?? $gvrM;
7384 $gvrT = $s['layout_gutter_vr_tablet']['size'] ?? $gvrME;
7385 $gvrTE = $s['layout_gutter_vr_tablet_extra']['size'] ?? $gvrT;
7386 $gvrL = $s['layout_gutter_vr_laptop']['size'] ?? $gvrD;
7387 $gvrW = $s['layout_gutter_vr_widescreen']['size'] ?? $gvrD;
7388
7389 $layout_settings = [
7390 'layout' => $s['layout_select'],
7391 'columns_desktop' => $s['layout_columns'],
7392 'gutter_hr' => $ghrD, 'gutter_hr_mobile' => $ghrM, 'gutter_hr_mobile_extra' => $ghrME, 'gutter_hr_tablet' => $ghrT, 'gutter_hr_tablet_extra' => $ghrTE, 'gutter_hr_laptop' => $ghrL, 'gutter_hr_widescreen' => $ghrW,
7393 'gutter_vr' => $gvrD, 'gutter_vr_mobile' => $gvrM, 'gutter_vr_mobile_extra' => $gvrME, 'gutter_vr_tablet' => $gvrT, 'gutter_vr_tablet_extra' => $gvrTE, 'gutter_vr_laptop' => $gvrL, 'gutter_vr_widescreen' => $gvrW,
7394 'animation' => $s['layout_animation'], 'animation_duration' => $s['layout_animation_duration'], 'animation_delay' => $s['layout_animation_delay'],
7395 'deeplinking' => $s['filters_deeplinking'],
7396 'filters_default_filter' => $s['filters_default_filter'],
7397 'filters_linkable' => $s['filters_linkable'],
7398 'filters_count' => $s['filters_count'],
7399 'filters_hide_empty' => $s['filters_hide_empty'],
7400 'filters_animation' => $s['filters_animation'],
7401 'filters_animation_duration' => $s['filters_animation_duration'],
7402 'filters_animation_delay' => $s['filters_animation_delay'],
7403 'pagination_type' => $s['pagination_type'],
7404 'pagination_max_pages' => $this->get_max_num_pages(),
7405 'lightbox' => [
7406 'selector' => '.king-addons-grid-image-wrap',
7407 'iframeMaxWidth' => '60%',
7408 'hash' => false,
7409 'autoplay' => $s['lightbox_popup_autoplay'],
7410 'pause' => $s['lightbox_popup_pause'] * 1000,
7411 'progressBar' => $s['lightbox_popup_progressbar'],
7412 'counter' => $s['lightbox_popup_counter'],
7413 'controls' => $s['lightbox_popup_arrows'],
7414 'getCaptionFromTitleOrAlt' => $s['lightbox_popup_captions'],
7415 'thumbnail' => $s['lightbox_popup_thumbnails'],
7416 'showThumbByDefault' => $s['lightbox_popup_thumbnails_default'],
7417 'share' => $s['lightbox_popup_sharing'],
7418 'zoom' => $s['lightbox_popup_zoom'],
7419 'fullScreen' => $s['lightbox_popup_fullscreen'],
7420 'download' => $s['lightbox_popup_download'],
7421 ]
7422 ];
7423 $this->add_render_attribute('grid-settings', ['data-settings' => wp_json_encode($layout_settings)]);
7424 }
7425
7426 public function add_slider_settings($s)
7427 {
7428 $slider_is_rtl = is_rtl();
7429 $slider_dir = $slider_is_rtl ? 'rtl' : 'ltr';
7430 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
7431 $s['layout_slider_autoplay'] = '';
7432 $s['layout_slider_autoplay_duration'] = 0;
7433 $s['layout_slider_pause_on_hover'] = '';
7434 }
7435 if (in_array($s['layout_slider_amount'], ['pro-3', 'pro-4', 'pro-5', 'pro-6'])) {
7436 $s['layout_slider_amount'] = 2; // fallback for free version
7437 }
7438 $slider_options = [
7439 'rtl' => $slider_is_rtl,
7440 'infinite' => ($s['layout_slider_loop'] === 'yes'),
7441 'speed' => absint($s['layout_slider_effect_duration'] * 1000),
7442 'arrows' => true,
7443 'dots' => true,
7444 'autoplay' => ($s['layout_slider_autoplay'] === 'yes'),
7445 'autoplaySpeed' => absint($s['layout_slider_autoplay_duration'] * 1000),
7446 'pauseOnHover' => $s['layout_slider_pause_on_hover'],
7447 'prevArrow' => '#king-addons-grid-slider-prev-' . $this->get_id(),
7448 'nextArrow' => '#king-addons-grid-slider-next-' . $this->get_id(),
7449 'sliderSlidesToScroll' => +$s['layout_slides_to_scroll'],
7450 'sliderRows' => $s['layout_slider_rows'] ?? 1,
7451 'lightbox' => [
7452 'selector' => 'article:not(.slick-cloned) .king-addons-grid-image-wrap',
7453 'iframeMaxWidth' => '60%',
7454 'hash' => false,
7455 'autoplay' => $s['lightbox_popup_autoplay'],
7456 'pause' => $s['lightbox_popup_pause'] * 1000,
7457 'progressBar' => $s['lightbox_popup_progressbar'],
7458 'counter' => $s['lightbox_popup_counter'],
7459 'controls' => $s['lightbox_popup_arrows'],
7460 'getCaptionFromTitleOrAlt' => $s['lightbox_popup_captions'],
7461 'thumbnail' => $s['lightbox_popup_thumbnails'],
7462 'showThumbByDefault' => $s['lightbox_popup_thumbnails_default'],
7463 'share' => $s['lightbox_popup_sharing'],
7464 'zoom' => $s['lightbox_popup_zoom'],
7465 'fullScreen' => $s['lightbox_popup_fullscreen'],
7466 'download' => $s['lightbox_popup_download']
7467 ]
7468 ];
7469 if ($s['layout_slider_amount'] === 1 && $s['layout_slider_effect'] === 'fade') {
7470 $slider_options['fade'] = true;
7471 }
7472 $this->add_render_attribute('slider-settings', [
7473 'dir' => esc_attr($slider_dir),
7474 'data-slick' => wp_json_encode($slider_options),
7475 ]);
7476 }
7477
7478 protected function render()
7479 {
7480 $s = $this->get_settings();
7481 $posts = new WP_Query($this->get_main_query_args());
7482 if ($posts->have_posts()) {
7483 if ('slider' !== $s['layout_select']) {
7484 $this->render_grid_filters($s);
7485 $this->add_grid_settings($s);
7486 $render_attribute = $this->get_render_attribute_string('grid-settings');
7487 } else {
7488 $this->add_slider_settings($s);
7489 $render_attribute = $this->get_render_attribute_string('slider-settings');
7490 }
7491 echo '<section class="king-addons-grid king-addons-media-grid elementor-clearfix" ' . $render_attribute . '>';
7492 while ($posts->have_posts()) {
7493 $posts->the_post();
7494 // Skip non-image attachments (in case)
7495 if (!wp_attachment_is_image(get_the_ID())) continue;
7496
7497 $post_class = implode(' ', get_post_class('king-addons-grid-item elementor-clearfix', get_the_ID()));
7498 echo '<article class="' . esc_attr($post_class) . '">';
7499 echo '<div class="king-addons-grid-item-inner">';
7500 $this->get_elements_by_location('above', $s, get_the_ID());
7501 echo '<div class="king-addons-grid-media-wrap' . $this->get_image_effect_class($s) . ' ">';
7502 $this->render_post_thumbnail($s);
7503 echo '<div class="king-addons-grid-media-hover king-addons-animation-wrap">';
7504 $this->render_media_overlay($s);
7505 $this->get_elements_by_location('over', $s, get_the_ID());
7506 echo '</div></div>';
7507 $this->get_elements_by_location('below', $s, get_the_ID());
7508 echo '</div></article>';
7509 }
7510 wp_reset_postdata();
7511 echo '</section>';
7512
7513 if ('slider' === $s['layout_select']) {
7514 echo '<div class="king-addons-grid-slider-arrow-container">';
7515 echo '<div class="king-addons-grid-slider-prev-arrow king-addons-grid-slider-arrow" id="king-addons-grid-slider-prev-' . esc_attr($this->get_id()) . '">' . Core::getIcon($s['layout_slider_nav_icon'], '') . '</div>';
7516 echo '<div class="king-addons-grid-slider-next-arrow king-addons-grid-slider-arrow" id="king-addons-grid-slider-next-' . esc_attr($this->get_id()) . '">' . Core::getIcon($s['layout_slider_nav_icon'], '') . '</div>';
7517 echo '</div><div class="king-addons-grid-slider-dots"></div>';
7518 }
7519 $this->render_grid_pagination($s);
7520 } else {
7521 echo '<h2>' . esc_html($s['query_not_found_text']) . '</h2>';
7522 }
7523 }
7524
7525
7526 }