PluginProbe
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder / 51.1.36
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder v51.1.36
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.36, at includes/widgets/Media_Grid/Media_Grid.php

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