PluginProbe
King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder / 51.1.87
King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder v51.1.87
51.1.87 51.1.86 51.1.84 51.1.85 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 All 41 releases
king-addons / includes / widgets / Posts_Grid / Posts_Grid.php

Posts_Grid.php in King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder 51.1.87, at includes/widgets/Posts_Grid/Posts_Grid.php

9,894 lines 367.1 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\Widget_Base;
7 use Elementor\Controls_Manager;
8 use Elementor\Group_Control_Box_Shadow;
9 use Elementor\Group_Control_Text_Shadow;
10 use Elementor\Group_Control_Background;
11 use Elementor\Group_Control_Typography;
12 use Elementor\Icons_Manager;
13 use Elementor\Repeater;
14 use Elementor\Group_Control_Image_Size;
15 use Elementor\Utils;
16 use WP_Query;
17
18 if (!defined('ABSPATH')) {
19 exit;
20 }
21
22 class Posts_Grid extends Widget_Base
23 {
24
25
26
27 public function get_name()
28 {
29 return 'king-addons-grid';
30 }
31
32 public function get_title()
33 {
34 return esc_html__('Posts Grid & Slider', 'king-addons');
35 }
36
37 public function get_icon()
38 {
39 return 'king-addons-icon king-addons-posts-grid';
40 }
41
42 public function get_categories()
43 {
44 return ['king-addons'];
45 }
46
47 public function get_keywords()
48 {
49 return ['king addons', 'king', 'addons', 'kingaddons', 'king-addons', 'gr', 'carousel', 'portfolio', 'loop', 'filterable',
50 'blog', 'portfolio grid', 'posts', 'post grid', 'posts grid', 'filter', 'post', 'posts', 'masonry', 'grid',
51 'post slider', 'posts slider', 'post carousel', 'posts carousel', 'masonry grid', 'gallery', 'slider',
52 'isotope', 'post gallery', 'posts gallery', 'filterable grid', 'loop grid'];
53 }
54
55 public function get_script_depends()
56 {
57 return [
58 KING_ADDONS_ASSETS_UNIQUE_KEY . '-imagesloaded-imagesloaded',
59 KING_ADDONS_ASSETS_UNIQUE_KEY . '-infinitescroll-infinitescroll',
60 KING_ADDONS_ASSETS_UNIQUE_KEY . '-isotope-kng',
61 KING_ADDONS_ASSETS_UNIQUE_KEY . '-slick-slick',
62 // KING_ADDONS_ASSETS_UNIQUE_KEY . '-lightgallery-lightgallery',
63 KING_ADDONS_ASSETS_UNIQUE_KEY . '-grid-grid',
64 ];
65 }
66
67 public function get_style_depends()
68 {
69 return [
70 KING_ADDONS_ASSETS_UNIQUE_KEY . '-slick-helper',
71 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-button',
72 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-general',
73 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-timing',
74 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-loading',
75 // KING_ADDONS_ASSETS_UNIQUE_KEY . '-lightgallery-lightgallery',
76 KING_ADDONS_ASSETS_UNIQUE_KEY . '-grid-grid',
77 KING_ADDONS_ASSETS_UNIQUE_KEY . '-general-general',
78 ];
79 }
80
81 public function get_custom_help_url()
82 {
83 return 'mailto:[email protected]?subject=Bug Report - King Addons&body=Please describe the issue';
84 }
85
86 public function is_reload_preview_required()
87 {
88 return true;
89 }
90
91 public function has_widget_inner_wrapper(): bool
92 {
93 return true;
94 }
95
96 public function add_option_query_source()
97 {
98 $post_types = [];
99 $post_types['post'] = esc_html__('Posts', 'king-addons');
100 $post_types['page'] = esc_html__('Pages', 'king-addons');
101
102 $custom_post_types = Core::getCustomTypes('post');
103 foreach ($custom_post_types as $slug => $title) {
104 if ('product' === $slug || 'e-landing-page' === $slug) {
105 continue;
106 }
107
108 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
109 $post_types['pro-' . substr($slug, 0, 2)] = esc_html($title) . ' (Pro)';
110 } else {
111 $post_types[$slug] = esc_html($title);
112 }
113 }
114
115 $post_types['current'] = esc_html__('Current Query', 'king-addons');
116 $post_types['pro-rl'] = esc_html__('Related Query (Pro)', 'king-addons');
117
118 return $post_types;
119 }
120
121 public function get_available_taxonomies()
122 {
123 $post_taxonomies = [];
124 $post_taxonomies['category'] = esc_html__('Categories', 'king-addons');
125 $post_taxonomies['post_tag'] = esc_html__('Tags', 'king-addons');
126
127 $custom_post_taxonomies = Core::getCustomTypes('tax');
128 foreach ($custom_post_taxonomies as $slug => $title) {
129 if ('product_tag' === $slug || 'product_cat' === $slug) {
130 continue;
131 }
132
133 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
134 $post_taxonomies['pro-' . substr($slug, 0, 2)] = esc_html($title) . ' (Pro)';
135 } else {
136 $post_taxonomies[$slug] = esc_html($title);
137 }
138 }
139
140 return $post_taxonomies;
141 }
142
143 public function add_control_secondary_img_on_hover()
144 {
145 $this->add_control(
146 'secondary_img_on_hover',
147 [
148 'label' => sprintf(__('Secondary Image on Hover %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
149 'type' => Controls_Manager::SWITCHER,
150 'classes' => 'king-addons-pro-control no-distance'
151 ]
152 );
153 }
154
155 public function add_control_open_links_in_new_tab()
156 {
157 $this->add_control(
158 'open_links_in_new_tab',
159 [
160 'label' => sprintf(__('Open Links in New Tab %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
161 'type' => Controls_Manager::SWITCHER,
162 'classes' => 'king-addons-pro-control no-distance'
163 ]
164 );
165 }
166
167 public function add_control_grid_lazy_loading()
168 {
169 $this->add_control(
170 'grid_lazy_loading',
171 [
172 'label' => sprintf(__('Lazy Loading %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
173 'type' => Controls_Manager::SWITCHER,
174 'classes' => 'king-addons-pro-control no-distance'
175 ]
176 );
177 }
178
179 public function add_control_display_scheduled_posts()
180 {
181 $this->add_control(
182 'display_scheduled_posts',
183 [
184 'label' => sprintf(__('Display Only Scheduled %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
185 'type' => Controls_Manager::SWITCHER,
186 'classes' => 'king-addons-pro-control no-distance'
187 ]
188 );
189 }
190
191 public function add_control_query_randomize()
192 {
193 $this->add_control(
194 'query_randomize',
195 [
196 'label' => sprintf(__('Randomize Query %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
197 'type' => Controls_Manager::SWITCHER,
198 'classes' => 'king-addons-pro-control no-distance'
199 ]
200 );
201 }
202
203 public function add_control_order_posts()
204 {
205 $this->add_control(
206 'order_posts',
207 [
208 'label' => esc_html__('Order By', 'king-addons'),
209 'type' => Controls_Manager::SELECT,
210 'default' => 'date',
211 'label_block' => false,
212 'options' => [
213 'date' => esc_html__('Date', 'king-addons'),
214 'pro-tl' => esc_html__('Title (Pro)', 'king-addons'),
215 'pro-mf' => esc_html__('Last Modified (Pro)', 'king-addons'),
216 'pro-d' => esc_html__('Post ID (Pro)', 'king-addons'),
217 'pro-ar' => esc_html__('Post Author (Pro)', 'king-addons'),
218 'pro-cc' => esc_html__('Comment Count (Pro)', 'king-addons'),
219 'pro-mv' => esc_html__('Custom Field (Pro)', 'king-addons')
220 ],
221 'condition' => [
222 'query_randomize!' => 'rand',
223 ]
224 ]
225 );
226 }
227
228 public function add_control_order_posts_by_acf($meta)
229 {
230 }
231
232 public function add_control_query_slides_to_show()
233 {
234 $this->add_control(
235 'query_slides_to_show',
236 [
237 'label' => esc_html__('Slides to Show', 'king-addons'),
238 'type' => Controls_Manager::NUMBER,
239 'default' => 4,
240 'min' => 0,
241 'max' => 4,
242 'condition' => [
243 'layout_select' => 'slider',
244 ],
245 ]
246 );
247 }
248
249 public function add_control_layout_select()
250 {
251 $this->add_control(
252 'layout_select',
253 [
254 'label' => esc_html__('Select Layout', 'king-addons'),
255 'type' => Controls_Manager::SELECT,
256 'default' => 'fitRows',
257 'options' => [
258 'fitRows' => esc_html__('FitRows - Equal Height', 'king-addons'),
259 'list' => esc_html__('List Style', 'king-addons'),
260 'slider' => esc_html__('Slider / Carousel', 'king-addons'),
261 'pro-ms' => esc_html__('Masonry - Unlimited Height (Pro)', 'king-addons'),
262 ],
263 'render_type' => 'template'
264 ]
265 );
266 }
267
268 public function add_control_layout_columns()
269 {
270 $this->add_responsive_control(
271 'layout_columns',
272 [
273 'label' => esc_html__('Columns', 'king-addons'),
274 'type' => Controls_Manager::SELECT,
275 'default' => 3,
276 'widescreen_default' => 3,
277 'laptop_default' => 3,
278 'tablet_extra_default' => 3,
279 'tablet_default' => 2,
280 'mobile_extra_default' => 2,
281 'mobile_default' => 1,
282 'options' => [
283 1 => esc_html__('One', 'king-addons'),
284 2 => esc_html__('Two', 'king-addons'),
285 3 => esc_html__('Three', 'king-addons'),
286 'pro-4' => esc_html__('Four (Pro)', 'king-addons'),
287 'pro-5' => esc_html__('Five (Pro)', 'king-addons'),
288 'pro-6' => esc_html__('Six (Pro)', 'king-addons'),
289 ],
290 'prefix_class' => 'king-addons-grid-columns-%s',
291 'render_type' => 'template',
292 'separator' => 'before',
293 'condition' => [
294 'layout_select' => ['fitRows', 'masonry', 'list'],
295 ]
296 ]
297 );
298 }
299
300 public function add_control_layout_animation()
301 {
302 $this->add_control(
303 'layout_animation',
304 [
305 'label' => esc_html__('Select Animation', 'king-addons'),
306 'type' => Controls_Manager::SELECT,
307 'default' => 'default',
308 'options' => [
309 'default' => esc_html__('None', 'king-addons'),
310 'zoom' => esc_html__('Zoom', 'king-addons'),
311 'pro-fd' => esc_html__('Fade (Pro)', 'king-addons'),
312 'pro-fs' => esc_html__('Fade + SlideUp (Pro)', 'king-addons'),
313 ],
314 'selectors_dictionary' => [
315 'default' => '',
316 'zoom' => 'opacity: 0; transform: scale(0.01)',
317 ],
318 'selectors' => [
319 '{{WRAPPER}} .king-addons-grid-item-inner' => '{{VALUE}}',
320 ],
321 'render_type' => 'template',
322 'separator' => 'before',
323 'condition' => [
324 'layout_select!' => 'slider',
325 ]
326 ]
327 );
328 }
329
330 public function add_control_layout_slider_amount()
331 {
332 $this->add_responsive_control(
333 'layout_slider_amount',
334 [
335 'label' => esc_html__('Columns (Carousel)', 'king-addons'),
336 'type' => Controls_Manager::SELECT,
337 'label_block' => false,
338 'default' => 2,
339 'widescreen_default' => 2,
340 'laptop_default' => 2,
341 'tablet_extra_default' => 2,
342 'tablet_default' => 2,
343 'mobile_extra_default' => 2,
344 'mobile_default' => 1,
345 'options' => [
346 1 => esc_html__('One', 'king-addons'),
347 2 => esc_html__('Two', 'king-addons'),
348 'pro-3' => esc_html__('Three (Pro)', 'king-addons'),
349 'pro-4' => esc_html__('Four (Pro)', 'king-addons'),
350 'pro-5' => esc_html__('Five (Pro)', 'king-addons'),
351 'pro-6' => esc_html__('Six (Pro)', 'king-addons'),
352 ],
353 'prefix_class' => 'king-addons-grid-slider-columns-%s',
354 'render_type' => 'template',
355 'frontend_available' => true,
356 'separator' => 'before',
357 'condition' => [
358 'layout_select' => 'slider',
359 ],
360 ]
361 );
362 }
363
364 public function add_control_layout_slider_nav_hover()
365 {
366 $this->add_control(
367 'layout_slider_nav_hover',
368 [
369 'label' => sprintf(__('Show on Hover %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
370 'type' => Controls_Manager::SWITCHER,
371 'classes' => 'king-addons-pro-control no-distance',
372 'condition' => [
373 'layout_slider_nav' => 'yes',
374 'layout_select' => 'slider',
375
376 ],
377 ]
378 );
379 }
380
381 public function add_control_layout_slider_dots_position()
382 {
383 $this->add_control(
384 'layout_slider_dots_position',
385 [
386 'label' => esc_html__('Pagination Layout', 'king-addons'),
387 'type' => Controls_Manager::SELECT,
388 'default' => 'horizontal',
389 'options' => [
390 'horizontal' => esc_html__('Horizontal', 'king-addons'),
391 'pro-vr' => esc_html__('Vertical (Pro)', 'king-addons'),
392 ],
393 'prefix_class' => 'king-addons-grid-slider-dots-',
394 'render_type' => 'template',
395 'condition' => [
396 'layout_slider_dots' => 'yes',
397 'layout_select' => 'slider',
398 ],
399 ]
400 );
401 }
402
403 public function add_control_layout_slider_autoplay()
404 {
405 $this->add_control(
406 'layout_slider_autoplay',
407 [
408 'label' => sprintf(__('Autoplay %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
409 'type' => Controls_Manager::SWITCHER,
410 'classes' => 'king-addons-pro-control',
411 'separator' => 'before',
412 'condition' => [
413 'layout_select' => 'slider',
414 ],
415 ]
416 );
417 }
418
419 public function add_controls_group_layout_slider_autoplay()
420 {
421 }
422
423 public function add_option_element_select()
424 {
425 return [
426 'title' => esc_html__('Title', 'king-addons'),
427 'content' => esc_html__('Content', 'king-addons'),
428 'excerpt' => esc_html__('Excerpt', 'king-addons'),
429 'date' => esc_html__('Date', 'king-addons'),
430 'time' => esc_html__('Time', 'king-addons'),
431 'author' => esc_html__('Author', 'king-addons'),
432 'comments' => esc_html__('Comments', 'king-addons'),
433 'read-more' => esc_html__('Read More', 'king-addons'),
434 // TODO: Lightbox
435 // 'lightbox' => esc_html__('Lightbox', 'king-addons'),
436 'separator' => esc_html__('Separator', 'king-addons'),
437 'pro-lk' => esc_html__('Likes (Pro)', 'king-addons'),
438 'pro-shr' => esc_html__('Sharing (Pro)', 'king-addons'),
439 'pro-cf' => esc_html__('Custom Field (Pro)', 'king-addons'),
440 ];
441 }
442
443 public function add_repeater_args_element_like_icon()
444 {
445 return [
446 'type' => Controls_Manager::HIDDEN,
447 'default' => ''
448 ];
449 }
450
451 public function add_repeater_args_element_like_text()
452 {
453 return [
454 'type' => Controls_Manager::HIDDEN,
455 'default' => ''
456 ];
457 }
458
459 public function add_repeater_args_element_like_show_count()
460 {
461 return [
462 'type' => Controls_Manager::HIDDEN,
463 'default' => ''
464 ];
465 }
466
467 public function add_repeater_args_element_sharing_icon_1()
468 {
469 return [
470 'type' => Controls_Manager::HIDDEN,
471 'default' => ''
472 ];
473 }
474
475 public function add_repeater_args_element_sharing_icon_2()
476 {
477 return [
478 'type' => Controls_Manager::HIDDEN,
479 'default' => ''
480 ];
481 }
482
483 public function add_repeater_args_element_sharing_icon_3()
484 {
485 return [
486 'type' => Controls_Manager::HIDDEN,
487 'default' => ''
488 ];
489 }
490
491 public function add_repeater_args_element_sharing_icon_4()
492 {
493 return [
494 'type' => Controls_Manager::HIDDEN,
495 'default' => ''
496 ];
497 }
498
499 public function add_repeater_args_element_sharing_icon_5()
500 {
501 return [
502 'type' => Controls_Manager::HIDDEN,
503 'default' => ''
504 ];
505 }
506
507 public function add_repeater_args_element_sharing_icon_6()
508 {
509 return [
510 'type' => Controls_Manager::HIDDEN,
511 'default' => ''
512 ];
513 }
514
515 public function add_repeater_args_element_sharing_trigger()
516 {
517 return [
518 'type' => Controls_Manager::HIDDEN,
519 'default' => ''
520 ];
521 }
522
523 public function add_repeater_args_element_sharing_trigger_icon()
524 {
525 return [
526 'type' => Controls_Manager::HIDDEN,
527 'default' => ''
528 ];
529 }
530
531 public function add_repeater_args_element_sharing_trigger_action()
532 {
533 return [
534 'type' => Controls_Manager::HIDDEN,
535 'default' => ''
536 ];
537 }
538
539 public function add_repeater_args_element_sharing_trigger_direction()
540 {
541 return [
542 'type' => Controls_Manager::HIDDEN,
543 'default' => ''
544 ];
545 }
546
547 public function add_repeater_args_element_sharing_tooltip()
548 {
549 return [
550 'type' => Controls_Manager::HIDDEN,
551 'default' => ''
552 ];
553 }
554
555 public function add_repeater_args_element_custom_field()
556 {
557 return [
558 'type' => Controls_Manager::HIDDEN,
559 'default' => ''
560 ];
561 }
562
563 public function add_repeater_args_element_custom_field_img_ID()
564 {
565 return [
566 'type' => Controls_Manager::HIDDEN,
567 'default' => ''
568 ];
569 }
570
571 public function add_repeater_args_element_custom_field_btn_link()
572 {
573 return [
574 'type' => Controls_Manager::HIDDEN,
575 'default' => ''
576 ];
577 }
578
579 public function add_repeater_args_element_custom_field_new_tab()
580 {
581 return [
582 'type' => Controls_Manager::HIDDEN,
583 'default' => ''
584 ];
585 }
586
587 public function add_repeater_args_custom_field_wrapper_html_divider1()
588 {
589 return [
590 'type' => Controls_Manager::HIDDEN,
591 'default' => ''
592 ];
593 }
594
595 public function add_repeater_args_element_custom_field_wrapper()
596 {
597 return [
598 'type' => Controls_Manager::HIDDEN,
599 'default' => ''
600 ];
601 }
602
603 public function add_repeater_args_element_custom_field_wrapper_html()
604 {
605 return [
606 'type' => Controls_Manager::HIDDEN,
607 'default' => ''
608 ];
609 }
610
611 public function add_repeater_args_custom_field_wrapper_html_divider2()
612 {
613 return [
614 'type' => Controls_Manager::HIDDEN,
615 'default' => ''
616 ];
617 }
618
619 public function add_repeater_args_element_cf_tag()
620 {
621 return [
622 'type' => Controls_Manager::HIDDEN,
623 'default' => ''
624 ];
625 }
626
627 public function add_repeater_args_element_custom_field_style()
628 {
629 return [
630 'type' => Controls_Manager::HIDDEN,
631 'default' => ''
632 ];
633 }
634
635 public function add_repeater_args_element_trim_text_by()
636 {
637 return [
638 'word_count' => esc_html__('Word Count', 'king-addons'),
639 'pro-lc' => esc_html__('Letter Count (Pro)', 'king-addons')
640 ];
641 }
642
643 public function add_control_overlay_animation_divider()
644 {
645 }
646
647 public function add_control_overlay_image()
648 {
649 }
650
651 public function add_control_overlay_image_width()
652 {
653 }
654
655 public function add_control_image_effects()
656 {
657 $this->add_control(
658 'image_effects',
659 [
660 'label' => esc_html__('Select Effect', 'king-addons'),
661 'type' => Controls_Manager::SELECT,
662 'options' => [
663 'none' => esc_html__('None', 'king-addons'),
664 'pro-zi' => esc_html__('Zoom In (Pro)', 'king-addons'),
665 'pro-zo' => esc_html__('Zoom Out (Pro)', 'king-addons'),
666 'grayscale-in' => esc_html__('Grayscale In', 'king-addons'),
667 'pro-go' => esc_html__('Grayscale Out (Pro)', 'king-addons'),
668 'blur-in' => esc_html__('Blur In', 'king-addons'),
669 'pro-bo' => esc_html__('Blur Out (Pro)', 'king-addons'),
670 'slide' => esc_html__('Slide', 'king-addons'),
671 ],
672 'default' => 'none',
673 ]
674 );
675 }
676
677 /** @noinspection PhpUnused */
678 public function add_section_general_lightbox() {
679 $this->start_controls_section(
680 'section_lightbox_popup',
681 [
682 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Lightbox Popup', 'king-addons'),
683 'tab' => Controls_Manager::TAB_CONTENT,
684 ]
685 );
686
687 $this->add_control(
688 'lightbox_popup_autoplay',
689 [
690 'label' => esc_html__('Autoplay Slides', 'king-addons'),
691 'type' => Controls_Manager::SWITCHER,
692 'default' => 'true',
693 'return_value' => 'true',
694 ]
695 );
696
697 $this->add_control(
698 'lightbox_popup_progressbar',
699 [
700 'label' => esc_html__('Show Progress Bar', 'king-addons'),
701 'type' => Controls_Manager::SWITCHER,
702 'default' => 'true',
703 'return_value' => 'true',
704 'condition' => [
705 'lightbox_popup_autoplay' => 'true'
706 ]
707 ]
708 );
709
710 $this->add_control(
711 'lightbox_popup_pause',
712 [
713 'label' => esc_html__('Autoplay Speed', 'king-addons'),
714 'type' => Controls_Manager::NUMBER,
715 'default' => 5,
716 'min' => 1,
717 'max' => 10,
718 'step' => 1,
719 'condition' => [
720 'lightbox_popup_autoplay' => 'true',
721 ],
722 ]
723 );
724
725 $this->add_control(
726 'lightbox_popup_counter',
727 [
728 'label' => esc_html__('Show Counter', 'king-addons'),
729 'type' => Controls_Manager::SWITCHER,
730 'default' => 'true',
731 'return_value' => 'true',
732 ]
733 );
734
735 $this->add_control(
736 'lightbox_popup_arrows',
737 [
738 'label' => esc_html__('Show Arrows', 'king-addons'),
739 'type' => Controls_Manager::SWITCHER,
740 'default' => 'true',
741 'return_value' => 'true',
742 ]
743 );
744
745 $this->add_control(
746 'lightbox_popup_captions',
747 [
748 'label' => esc_html__('Show Captions', 'king-addons'),
749 'type' => Controls_Manager::SWITCHER,
750 'default' => 'true',
751 'return_value' => 'true',
752 ]
753 );
754
755 $this->add_control_lightbox_popup_thumbnails();
756
757 $this->add_control_lightbox_popup_thumbnails_default();
758
759 $this->add_control_lightbox_popup_sharing();
760
761 $this->add_control(
762 'lightbox_popup_zoom',
763 [
764 'label' => esc_html__('Show Zoom Button', 'king-addons'),
765 'type' => Controls_Manager::SWITCHER,
766 'default' => 'true',
767 'return_value' => 'true',
768 ]
769 );
770
771 $this->add_control(
772 'lightbox_popup_fullscreen',
773 [
774 'label' => esc_html__('Show Full Screen Button', 'king-addons'),
775 'type' => Controls_Manager::SWITCHER,
776 'default' => 'true',
777 'return_value' => 'true',
778 ]
779 );
780
781 $this->add_control(
782 'lightbox_popup_download',
783 [
784 'label' => esc_html__('Show Download Button', 'king-addons'),
785 'type' => Controls_Manager::SWITCHER,
786 'default' => 'true',
787 'return_value' => 'true',
788 ]
789 );
790
791 $this->add_control(
792 'lightbox_popup_description',
793 [
794 'raw' => sprintf(__('You can change Lightbox Popup styling options globally. Navigate to <strong>Dashboard > %s > Settings</strong>.', 'king-addons'), Core::getPluginName()),
795 'type' => Controls_Manager::RAW_HTML,
796 'separator' => 'before',
797 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
798 ]
799 );
800
801 $this->end_controls_section();
802 }
803
804 /** @noinspection PhpUnused */
805 public function add_section_style_lightbox() {
806 $this->start_controls_section(
807 'section_style_lightbox',
808 [
809 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Lightbox', 'king-addons'),
810 'tab' => Controls_Manager::TAB_STYLE,
811 'show_label' => false,
812 ]
813 );
814
815 $this->start_controls_tabs('tabs_grid_lightbox_style');
816
817 $this->start_controls_tab(
818 'tab_grid_lightbox_normal',
819 [
820 'label' => esc_html__('Normal', 'king-addons'),
821 ]
822 );
823
824 $this->add_control(
825 'lightbox_color',
826 [
827 'label' => esc_html__('Color', 'king-addons'),
828 'type' => Controls_Manager::COLOR,
829 'default' => '#ffffff',
830 'selectors' => [
831 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'color: {{VALUE}}',
832 ],
833 ]
834 );
835
836 $this->add_control(
837 'lightbox_bg_color',
838 [
839 'label' => esc_html__('Background Color', 'king-addons'),
840 'type' => Controls_Manager::COLOR,
841 'selectors' => [
842 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'background-color: {{VALUE}}',
843 ]
844 ]
845 );
846
847 $this->add_control(
848 'lightbox_border_color',
849 [
850 'label' => esc_html__('Border Color', 'king-addons'),
851 'type' => Controls_Manager::COLOR,
852 'default' => '#E8E8E8',
853 'selectors' => [
854 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'border-color: {{VALUE}}',
855 ],
856 ]
857 );
858
859 $this->add_group_control(
860 Group_Control_Text_Shadow::get_type(),
861 [
862 'name' => 'lightbox_shadow',
863 'selector' => '{{WRAPPER}} .king-addons-grid-item-lightbox i',
864 ]
865 );
866
867 $this->end_controls_tab();
868
869 $this->start_controls_tab(
870 'tab_grid_lightbox_hover',
871 [
872 'label' => esc_html__('Hover', 'king-addons'),
873 ]
874 );
875
876 $this->add_control(
877 'lightbox_color_hr',
878 [
879 'label' => esc_html__('Color', 'king-addons'),
880 'type' => Controls_Manager::COLOR,
881 'default' => '#5B03FF',
882 'selectors' => [
883 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span:hover' => 'color: {{VALUE}}',
884 ],
885 ]
886 );
887
888 $this->add_control(
889 'lightbox_bg_color_hr',
890 [
891 'label' => esc_html__('Background Color', 'king-addons'),
892 'type' => Controls_Manager::COLOR,
893 'selectors' => [
894 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span:hover' => 'background-color: {{VALUE}}',
895 ]
896 ]
897 );
898
899 $this->add_control(
900 'lightbox_border_color_hr',
901 [
902 'label' => esc_html__('Border Color', 'king-addons'),
903 'type' => Controls_Manager::COLOR,
904 'default' => '#E8E8E8',
905 'selectors' => [
906 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span:hover' => 'border-color: {{VALUE}}',
907 ],
908 'separator' => 'after',
909 ]
910 );
911
912 $this->end_controls_tab();
913
914 $this->end_controls_tabs();
915
916 $this->add_control(
917 'lightbox_shadow_divider',
918 [
919 'type' => Controls_Manager::DIVIDER,
920 'style' => 'thick',
921 ]
922 );
923
924 $this->add_control(
925 'lightbox_transition_duration',
926 [
927 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
928 'type' => Controls_Manager::NUMBER,
929 'default' => 0.1,
930 'min' => 0,
931 'max' => 5,
932 'step' => 0.1,
933 'selectors' => [
934 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'transition-duration: {{VALUE}}s',
935 ],
936 'separator' => 'after',
937 ]
938 );
939
940 $this->add_group_control(
941 Group_Control_Typography::get_type(),
942 [
943 'name' => 'lightbox_typography',
944 'selector' => '{{WRAPPER}} .king-addons-grid-item-lightbox'
945 ]
946 );
947
948 $this->add_control(
949 'lightbox_border_type',
950 [
951 'label' => esc_html__('Border Type', 'king-addons'),
952 'type' => Controls_Manager::SELECT,
953 'options' => [
954 'none' => esc_html__('None', 'king-addons'),
955 'solid' => esc_html__('Solid', 'king-addons'),
956 'double' => esc_html__('Double', 'king-addons'),
957 'dotted' => esc_html__('Dotted', 'king-addons'),
958 'dashed' => esc_html__('Dashed', 'king-addons'),
959 'groove' => esc_html__('Groove', 'king-addons'),
960 ],
961 'default' => 'none',
962 'selectors' => [
963 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'border-style: {{VALUE}};',
964 ],
965 'render_type' => 'template',
966 'separator' => 'before',
967 ]
968 );
969
970 $this->add_control(
971 'lightbox_border_width',
972 [
973 'label' => esc_html__('Border Width', 'king-addons'),
974 'type' => Controls_Manager::DIMENSIONS,
975 'size_units' => ['px'],
976 'default' => [
977 'top' => 1,
978 'right' => 1,
979 'bottom' => 1,
980 'left' => 1,
981 ],
982 'selectors' => [
983 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
984 ],
985 'render_type' => 'template',
986 'condition' => [
987 'lightbox_border_type!' => 'none',
988 ],
989 ]
990 );
991
992 $this->add_control(
993 'lightbox_text_spacing',
994 [
995 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
996 'type' => Controls_Manager::SLIDER,
997 'size_units' => ['px'],
998 'range' => [
999 'px' => [
1000 'min' => 0,
1001 'max' => 25,
1002 ],
1003 ],
1004 'default' => [
1005 'unit' => 'px',
1006 'size' => 5,
1007 ],
1008 'selectors' => [
1009 '{{WRAPPER}} .king-addons-grid-item-lightbox .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
1010 '{{WRAPPER}} .king-addons-grid-item-lightbox .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
1011 ],
1012 'separator' => 'before'
1013 ]
1014 );
1015
1016 $this->add_responsive_control(
1017 'lightbox_padding',
1018 [
1019 'label' => esc_html__('Padding', 'king-addons'),
1020 'type' => Controls_Manager::DIMENSIONS,
1021 'size_units' => ['px', '%'],
1022 'default' => [
1023 'top' => 0,
1024 'right' => 0,
1025 'bottom' => 0,
1026 'left' => 0,
1027 ],
1028 'selectors' => [
1029 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1030 ],
1031 'render_type' => 'template',
1032 'separator' => 'before',
1033 ]
1034 );
1035
1036 $this->add_responsive_control(
1037 'lightbox_margin',
1038 [
1039 'label' => esc_html__('Margin', 'king-addons'),
1040 'type' => Controls_Manager::DIMENSIONS,
1041 'size_units' => ['px', '%'],
1042 'default' => [
1043 'top' => 0,
1044 'right' => 0,
1045 'bottom' => 0,
1046 'left' => 0,
1047 ],
1048 'render_type' => 'template',
1049 'selectors' => [
1050 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1051 ],
1052 ]
1053 );
1054
1055 $this->add_control(
1056 'lightbox_radius',
1057 [
1058 'label' => esc_html__('Border Radius', 'king-addons'),
1059 'type' => Controls_Manager::DIMENSIONS,
1060 'size_units' => ['px', '%'],
1061 'default' => [
1062 'top' => 2,
1063 'right' => 2,
1064 'bottom' => 2,
1065 'left' => 2,
1066 ],
1067 'selectors' => [
1068 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1069 ],
1070 'separator' => 'before',
1071 ]
1072 );
1073
1074
1075
1076
1077 $this->end_controls_section();
1078
1079
1080 }
1081
1082 public function add_control_lightbox_popup_thumbnails()
1083 {
1084 $this->add_control(
1085 'lightbox_popup_thumbnails',
1086 [
1087 'label' => sprintf(__('Show Thumbnails %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
1088 'type' => Controls_Manager::SWITCHER,
1089 'classes' => 'king-addons-pro-control no-distance'
1090 ]
1091 );
1092 }
1093
1094 public function add_control_lightbox_popup_thumbnails_default()
1095 {
1096 $this->add_control(
1097 'popup_thumbnails_default',
1098 [
1099 'label' => sprintf(__('Show Thumbs by Default %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
1100 'type' => Controls_Manager::SWITCHER,
1101 'classes' => 'king-addons-pro-control no-distance'
1102 ]
1103 );
1104 }
1105
1106 public function add_control_lightbox_popup_sharing()
1107 {
1108 $this->add_control(
1109 'lightbox_popup_sharing',
1110 [
1111 'label' => sprintf(__('Show Sharing Button %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
1112 'type' => Controls_Manager::SWITCHER,
1113 'classes' => 'king-addons-pro-control no-distance'
1114 ]
1115 );
1116 }
1117
1118 public function add_control_filters_deeplinking()
1119 {
1120 $this->add_control(
1121 'filters_deeplinking',
1122 [
1123 'label' => sprintf(__('Enable Deep Linking %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
1124 'type' => Controls_Manager::SWITCHER,
1125 'classes' => 'king-addons-pro-control no-distance'
1126 ]
1127 );
1128 }
1129
1130 public function add_control_filters_animation()
1131 {
1132 $this->add_control(
1133 'filters_animation',
1134 [
1135 'label' => esc_html__('Select Animation', 'king-addons'),
1136 'type' => Controls_Manager::SELECT,
1137 'default' => 'default',
1138 'options' => [
1139 'default' => esc_html__('Default', 'king-addons'),
1140 'zoom' => esc_html__('Zoom', 'king-addons'),
1141 'pro-fd' => esc_html__('Fade (Pro)', 'king-addons'),
1142 'pro-fs' => esc_html__('Fade + SlideUp (Pro)', 'king-addons'),
1143 ],
1144 'separator' => 'before',
1145 ]
1146 );
1147 }
1148
1149 public function add_control_filters_icon()
1150 {
1151 }
1152
1153 public function add_control_filters_icon_align()
1154 {
1155 }
1156
1157 public function add_control_filters_count()
1158 {
1159 $this->add_control(
1160 'filters_count',
1161 [
1162 'label' => sprintf(__('Show Count %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
1163 'type' => Controls_Manager::SWITCHER,
1164 'classes' => 'king-addons-pro-control no-distance'
1165 ]
1166 );
1167 }
1168
1169 public function add_control_filters_count_superscript()
1170 {
1171 }
1172
1173 public function add_control_filters_count_brackets()
1174 {
1175 }
1176
1177 public function add_control_filters_default_filter()
1178 {
1179 }
1180
1181 public function add_control_pagination_type()
1182 {
1183 $options = [
1184 'default' => esc_html__('Default', 'king-addons'),
1185 'numbered' => esc_html__('Numbered', 'king-addons'),
1186 'load-more' => esc_html__('Load More Button', 'king-addons'),
1187 'pro-is' => esc_html__('Infinite Scrolling (Pro)', 'king-addons'),
1188 ];
1189
1190 if (king_addons_freemius()->can_use_premium_code__premium_only()) {
1191 $options = [
1192 'default' => esc_html__('Default', 'king-addons'),
1193 'load-more' => esc_html__('Load More Button', 'king-addons'),
1194 'pro-nb' => esc_html__('Numbered (Pro)', 'king-addons'),
1195 'pro-is' => esc_html__('Infinite Scrolling (Pro)', 'king-addons'),
1196 ];
1197 }
1198
1199 $this->add_control(
1200 'pagination_type',
1201 [
1202 'label' => esc_html__('Select Type', 'king-addons'),
1203 'type' => Controls_Manager::SELECT,
1204 'default' => 'load-more',
1205 'options' => $options,
1206 'separator' => 'after'
1207 ]
1208 );
1209 }
1210
1211 public function add_section_style_likes()
1212 {
1213 }
1214
1215 public function add_section_style_sharing()
1216 {
1217 }
1218
1219 public function add_section_style_custom_field1()
1220 {
1221 }
1222
1223 public function add_section_style_custom_field2()
1224 {
1225 }
1226
1227 public function add_section_style_custom_field3()
1228 {
1229 }
1230
1231 public function add_section_style_custom_field4()
1232 {
1233 }
1234
1235 public function add_control_grid_item_even_bg_color()
1236 {
1237 }
1238
1239 public function add_control_grid_item_even_border_color()
1240 {
1241 }
1242
1243 public function add_control_overlay_color()
1244 {
1245 $this->add_control(
1246 'overlay_color',
1247 [
1248 'label' => esc_html__('Background Color', 'king-addons'),
1249 'type' => Controls_Manager::COLOR,
1250 'default' => 'rgba(0, 0, 0, 0.25)',
1251 'selectors' => [
1252 '{{WRAPPER}} .king-addons-grid-media-hover-bg' => 'background-color: {{VALUE}}',
1253 ],
1254 ]
1255 );
1256 }
1257
1258 public function add_control_overlay_blend_mode()
1259 {
1260 }
1261
1262 public function add_control_overlay_border_color()
1263 {
1264 }
1265
1266 public function add_control_overlay_border_type()
1267 {
1268 }
1269
1270 public function add_control_overlay_border_width()
1271 {
1272 }
1273
1274 public function add_control_title_pointer_color_hr()
1275 {
1276 }
1277
1278 public function add_control_title_pointer()
1279 {
1280 }
1281
1282 public function add_control_title_pointer_height()
1283 {
1284 }
1285
1286 public function add_control_title_pointer_animation()
1287 {
1288 }
1289
1290 public function add_control_tax1_custom_colors($meta)
1291 {
1292 }
1293
1294 public function add_control_tax1_pointer_color_hr()
1295 {
1296 }
1297
1298 public function add_control_tax1_pointer()
1299 {
1300 }
1301
1302 public function add_control_tax1_pointer_height()
1303 {
1304 }
1305
1306 public function add_control_tax1_pointer_animation()
1307 {
1308 }
1309
1310 public function add_control_tax2_pointer_color_hr()
1311 {
1312 }
1313
1314 public function add_control_tax2_pointer()
1315 {
1316 }
1317
1318 public function add_control_tax2_pointer_height()
1319 {
1320 }
1321
1322 public function add_control_tax2_pointer_animation()
1323 {
1324 }
1325
1326 public function add_control_read_more_animation()
1327 {
1328 }
1329
1330 public function add_control_read_more_animation_height()
1331 {
1332 }
1333
1334 public function add_control_filters_pointer_color_hr()
1335 {
1336 }
1337
1338 public function add_control_filters_pointer()
1339 {
1340 }
1341
1342 public function add_control_filters_pointer_height()
1343 {
1344 }
1345
1346 public function add_control_filters_pointer_animation()
1347 {
1348 }
1349
1350 public function add_control_stack_grid_slider_nav_position()
1351 {
1352 }
1353
1354 public function add_control_grid_slider_dots_hr()
1355 {
1356 }
1357
1358 protected function register_controls()
1359 {
1360
1361
1362 $this->start_controls_section(
1363 'section_grid_query',
1364 [
1365 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Query', 'king-addons'),
1366 'tab' => Controls_Manager::TAB_CONTENT,
1367 ]
1368 );
1369
1370
1371 $post_types = $this->add_option_query_source();
1372
1373 $post_taxonomies = $this->get_available_taxonomies();
1374
1375 $tax_meta_keys = Core::getCustomMetaKeysTaxonomies();
1376
1377 $this->add_control(
1378 'query_source',
1379 [
1380 'label' => esc_html__('Source', 'king-addons'),
1381 'type' => Controls_Manager::SELECT,
1382 'default' => 'post',
1383 'options' => $post_types,
1384 ]
1385 );
1386
1387 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'grid', 'query_source', ['pro-rl']);
1388
1389 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
1390 $this->add_control(
1391 'query_source_cpt_pro_notice',
1392 [
1393 'raw' => 'This option is available<br> in the <strong><a href="https://kingaddons.com/pricing/?utm_source=kng-module-grid-upgrade-pro&utm_medium=plugin&utm_campaign=kng" target="_blank">Pro version</a></strong>',
1394 'type' => Controls_Manager::RAW_HTML,
1395 'content_classes' => 'king-addons-pro-notice',
1396 'condition' => [
1397 'query_source!' => ['post', 'page', 'related', 'current', 'pro-rl'],
1398 ]
1399 ]
1400 );
1401 }
1402
1403 $this->add_control(
1404 'query_selection',
1405 [
1406 'label' => esc_html__('Selection', 'king-addons'),
1407 'type' => Controls_Manager::SELECT,
1408 'default' => 'dynamic',
1409 'options' => [
1410 'dynamic' => esc_html__('Dynamic', 'king-addons'),
1411 'manual' => esc_html__('Manual', 'king-addons'),
1412 ],
1413 'condition' => [
1414 'query_source!' => ['current', 'related'],
1415 ],
1416 ]
1417 );
1418
1419 $this->add_control_order_posts();
1420
1421 $this->add_control_order_posts_by_acf([]);
1422
1423 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'grid', 'order_posts', ['pro-tl', 'pro-mf', 'pro-d', 'pro-ar', 'pro-cc']);
1424
1425 $this->add_control(
1426 'order_direction',
1427 [
1428 'label' => esc_html__('Order', 'king-addons'),
1429 'type' => Controls_Manager::SELECT,
1430 'default' => 'DESC',
1431 'label_block' => false,
1432 'options' => [
1433 'ASC' => esc_html__('Ascending', 'king-addons'),
1434 'DESC' => esc_html__('Descending', 'king-addons'),
1435 ],
1436 'condition' => [
1437 'query_randomize!' => 'rand',
1438 ]
1439 ]
1440 );
1441
1442 $this->add_control(
1443 'query_tax_selection',
1444 [
1445 'label' => esc_html__('Select Taxonomy', 'king-addons'),
1446 'type' => Controls_Manager::SELECT,
1447 'default' => 'category',
1448 'options' => $post_taxonomies,
1449 'condition' => [
1450 'query_source' => 'related',
1451 ],
1452 ]
1453 );
1454
1455 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
1456 $this->add_control(
1457 'query_tax_selection_pro_notice',
1458 [
1459 'raw' => 'This option is available<br> in the <strong><a href="https://kingaddons.com/pricing/?utm_source=kng-module-grid-upgrade-pro&utm_medium=plugin&utm_campaign=kng" target="_blank">Pro version</a></strong>',
1460 'type' => Controls_Manager::RAW_HTML,
1461 'content_classes' => 'king-addons-pro-notice',
1462 'condition' => [
1463 'query_tax_selection!' => ['category', 'post_tag'],
1464 ]
1465 ]
1466 );
1467 }
1468
1469 $this->add_control(
1470 'query_author',
1471 [
1472 'label' => esc_html__('Authors', 'king-addons'),
1473 'type' => 'king-addons-ajax-select2',
1474 'options' => 'ajaxselect2/getUsers',
1475 'multiple' => true,
1476 'label_block' => true,
1477 'separator' => 'before',
1478 'condition' => [
1479 'query_source!' => ['current', 'related'],
1480 'query_selection' => 'dynamic',
1481 ],
1482 ]
1483 );
1484
1485
1486 foreach ($post_taxonomies as $slug => $title) {
1487 global $wp_taxonomies;
1488 $post_type = '';
1489
1490 if (isset($wp_taxonomies[$slug]->object_type[0])) {
1491 $post_type = $wp_taxonomies[$slug]->object_type[0];
1492 }
1493
1494 $this->add_control(
1495 'query_taxonomy_' . $slug,
1496 [
1497 'label' => $title,
1498 'type' => 'king-addons-ajax-select2',
1499 'options' => 'ajaxselect2/getTaxonomies',
1500 'query_slug' => $slug,
1501 'multiple' => true,
1502 'label_block' => true,
1503 'condition' => [
1504 'query_source' => $post_type,
1505 'query_selection' => 'dynamic',
1506 ],
1507 ]
1508 );
1509 }
1510
1511
1512 foreach ($post_types as $slug => $title) {
1513 $this->add_control(
1514 'query_exclude_' . $slug,
1515 [
1516 'label' => esc_html__('Exclude ', 'king-addons') . $title,
1517 'type' => 'king-addons-ajax-select2',
1518 'options' => 'ajaxselect2/getPostsByPostType',
1519 'query_slug' => $slug,
1520 'multiple' => true,
1521 'label_block' => true,
1522 'condition' => [
1523 'query_source' => $slug,
1524 'query_source!' => ['current', 'related'],
1525 'query_selection' => 'dynamic',
1526 ],
1527 ]
1528 );
1529 }
1530
1531
1532 foreach ($post_types as $slug => $title) {
1533 $this->add_control(
1534 'query_manual_' . $slug,
1535 [
1536 'label' => esc_html__('Select ', 'king-addons') . $title,
1537 'type' => 'king-addons-ajax-select2',
1538 'options' => 'ajaxselect2/getPostsByPostType',
1539 'query_slug' => $slug,
1540 'multiple' => true,
1541 'label_block' => true,
1542 'condition' => [
1543 'query_source' => $slug,
1544 'query_selection' => 'manual',
1545 ],
1546 'separator' => 'before',
1547 ]
1548 );
1549 }
1550
1551 $this->add_control(
1552 'query_posts_per_page',
1553 [
1554 'label' => esc_html__('Items Per Page', 'king-addons'),
1555 'type' => Controls_Manager::NUMBER,
1556 'default' => 9,
1557 'min' => 0,
1558 'condition' => (king_addons_freemius()->can_use_premium_code__premium_only() ? ['query_source!' => 'current', 'layout_select!' => 'slider',] : ['query_source!' => 'current']),
1559 ]
1560 );
1561
1562 if (king_addons_freemius()->can_use_premium_code__premium_only()) {
1563 $this->add_control_query_slides_to_show();
1564 } else {
1565 $this->add_control(
1566 'limit_slides_to_show_pro_notice',
1567 [
1568 'type' => Controls_Manager::RAW_HTML,
1569 'raw' => 'More than <strong>4 Slides</strong> are available<br>in the <strong><a href="https://kingaddons.com/pricing/?utm_source=kng-module-grid-settings-upgrade-pro&utm_medium=plugin&utm_campaign=kng" target="_blank">Pro version</a></strong>',
1570
1571 'content_classes' => 'king-addons-pro-notice',
1572 'condition' => [
1573 'layout_select' => 'slider',
1574 ]
1575 ]
1576 );
1577 }
1578
1579 $this->add_control(
1580 'query_offset',
1581 [
1582 'label' => esc_html__('Offset', 'king-addons'),
1583 'type' => Controls_Manager::NUMBER,
1584 'default' => 0,
1585 'min' => 0,
1586 'condition' => [
1587 'query_selection' => 'dynamic',
1588 ]
1589 ]
1590 );
1591
1592 $this->add_control(
1593 'query_not_found_text',
1594 [
1595 'label' => esc_html__('Not Found Text', 'king-addons'),
1596 'type' => Controls_Manager::TEXT,
1597 'dynamic' => [
1598 'active' => true,
1599 ],
1600 'default' => 'No Posts Found!',
1601 'condition' => [
1602 'query_selection' => 'dynamic',
1603 'query_source!' => 'related',
1604 ]
1605 ]
1606 );
1607
1608 $this->add_control_display_scheduled_posts();
1609
1610 // TODO: Under development feature.
1611 // $this->add_control_query_randomize();
1612
1613 $this->add_control(
1614 'query_exclude_no_images',
1615 [
1616 'label' => esc_html__('Exclude Items without Thumbnail', 'king-addons'),
1617 'type' => Controls_Manager::SWITCHER,
1618 'return_value' => 'yes',
1619 'label_block' => false
1620 ]
1621 );
1622
1623 /** @noinspection HtmlUnknownTarget */
1624 $this->add_control(
1625 'current_query_notice',
1626 [
1627 'type' => Controls_Manager::RAW_HTML,
1628 'raw' => sprintf(__('To set Posts per Page for all Blog <strong>Archive Pages</strong>, navigate to <strong><a href="%s" target="_blank">Settings > Reading</a></strong>.', 'king-addons'), admin_url('options-reading.php')),
1629 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
1630 'condition' => [
1631 'query_source' => 'current',
1632 ],
1633 ]
1634 );
1635
1636
1637 $this->add_control(
1638 'element_select_filter',
1639 [
1640 'type' => Controls_Manager::HIDDEN,
1641 'default' => $this->get_related_taxonomies(),
1642 ]
1643 );
1644
1645 $this->end_controls_section();
1646
1647
1648 $this->start_controls_section(
1649 'section_grid_layout',
1650 [
1651 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Layout', 'king-addons'),
1652 'tab' => Controls_Manager::TAB_CONTENT,
1653 ]
1654 );
1655
1656 $this->add_control_layout_select();
1657
1658
1659 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'grid', 'layout_select', ['pro-ms']);
1660
1661 $this->add_control(
1662 'stick_last_element_to_bottom',
1663 [
1664 'label' => esc_html__('Last Element to Bottom', 'king-addons'),
1665 'type' => Controls_Manager::SWITCHER,
1666 'default' => '',
1667 'render_type' => 'template',
1668
1669 'condition' => [
1670 'layout_select' => 'fitRows',
1671 ]
1672 ]
1673 );
1674
1675 $this->add_control(
1676 'last_element_position',
1677 [
1678 'label' => esc_html__('Last Element Position', 'king-addons'),
1679 'type' => Controls_Manager::CHOOSE,
1680 'label_block' => false,
1681 'default' => 'left',
1682 'options' => [
1683 'left' => [
1684 'title' => esc_html__('Left', 'king-addons'),
1685 'icon' => 'eicon-h-align-left',
1686 ],
1687 'center' => [
1688 'title' => esc_html__('Center', 'king-addons'),
1689 'icon' => 'eicon-h-align-center',
1690 ],
1691 'right' => [
1692 'title' => esc_html__('Right', 'king-addons'),
1693 'icon' => 'eicon-h-align-right',
1694 ]
1695 ],
1696 'selectors_dictionary' => [
1697 'left' => 'left: 0; right: auto;',
1698 'center' => 'left: 50%; transform: translateX(-50%);',
1699 'right' => 'left: auto; right: 0;'
1700 ],
1701 'selectors' => [
1702 '{{WRAPPER}}.king-addons-grid-last-element-yes .king-addons-grid-item-below-content>div:last-child' => '{{VALUE}}',
1703 ],
1704 'render_type' => 'template',
1705 'separator' => 'after'
1706 ]
1707 );
1708
1709 $this->add_group_control(
1710 Group_Control_Image_Size::get_type(),
1711 [
1712 'name' => 'layout_image_crop',
1713 'default' => 'full',
1714 ]
1715 );
1716
1717 $this->add_control_layout_columns();
1718
1719 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
1720 $this->add_control(
1721 'grid_columns_pro_notice',
1722 [
1723 'type' => Controls_Manager::RAW_HTML,
1724 'raw' => 'Grid Columns option is fully supported<br> in the <strong><a href="https://kingaddons.com/pricing/?utm_source=kng-module-grid-settings-upgrade-pro&utm_medium=plugin&utm_campaign=kng" target="_blank">Pro version</a></strong>',
1725
1726 'content_classes' => 'king-addons-pro-notice',
1727 ]
1728 );
1729 }
1730
1731
1732 $this->add_control(
1733 'layout_list_media_section',
1734 [
1735 'label' => esc_html__('Media', 'king-addons'),
1736 'type' => Controls_Manager::HEADING,
1737 'separator' => 'before',
1738 'condition' => [
1739 'layout_select' => 'list',
1740 ],
1741 ]
1742 );
1743
1744 /**
1745 * Add a switcher control to allow users to hide the post thumbnail in the grid.
1746 *
1747 * @since 1.0.0
1748 */
1749 $this->add_control(
1750 'hide_post_thumbnail',
1751 [
1752 'label' => esc_html__('Hide Post Thumbnail', 'king-addons'),
1753 'type' => Controls_Manager::SWITCHER,
1754 'default' => '',
1755 'return_value' => 'yes',
1756 'separator' => 'before',
1757 'description' => esc_html__('Completely hide the post featured image/thumbnail in the grid.', 'king-addons'),
1758 ]
1759 );
1760
1761 $this->add_control(
1762 'layout_list_align',
1763 [
1764 'label' => esc_html__('Alignment', 'king-addons'),
1765 'type' => Controls_Manager::SELECT,
1766 'default' => 'left',
1767 'options' => [
1768 'left' => esc_html__('Left', 'king-addons'),
1769 'right' => esc_html__('Right', 'king-addons'),
1770 'zigzag' => esc_html__('ZigZag', 'king-addons'),
1771 ],
1772 'condition' => [
1773 'layout_select' => 'list',
1774 ],
1775 ]
1776 );
1777
1778 $this->add_control(
1779 'layout_list_media_width',
1780 [
1781 'label' => esc_html__('Width', 'king-addons'),
1782 'type' => Controls_Manager::SLIDER,
1783 'default' => [
1784 'size' => 30,
1785 ],
1786 'range' => [
1787 '%' => [
1788 'min' => 0,
1789 'max' => 100,
1790 ],
1791 ],
1792 'condition' => [
1793 'layout_select' => 'list',
1794 ]
1795 ]
1796 );
1797
1798 $this->add_control(
1799 'layout_list_media_distance',
1800 [
1801 'label' => esc_html__('Distance', 'king-addons'),
1802 'type' => Controls_Manager::SLIDER,
1803 'default' => [
1804 'size' => 20,
1805 ],
1806 'range' => [
1807 'px' => [
1808 'min' => 0,
1809 'max' => 100,
1810 ],
1811 ],
1812 'condition' => [
1813 'layout_select' => 'list',
1814 ]
1815 ]
1816 );
1817
1818 $this->add_responsive_control(
1819 'layout_gutter_hr',
1820 [
1821 'label' => esc_html__('Horizontal Gutter', 'king-addons'),
1822 'type' => Controls_Manager::SLIDER,
1823 'range' => [
1824 'px' => [
1825 'min' => 0,
1826 'max' => 150,
1827 ],
1828 ],
1829 'default' => [
1830 'size' => 15,
1831 ],
1832 'widescreen_default' => [
1833 'size' => 15,
1834 ],
1835 'laptop_default' => [
1836 'size' => 15,
1837 ],
1838 'tablet_extra_default' => [
1839 'size' => 15,
1840 ],
1841 'tablet_default' => [
1842 'size' => 15,
1843 ],
1844 'mobile_extra_default' => [
1845 'size' => 15,
1846 ],
1847 'mobile_default' => [
1848 'size' => 15,
1849 ],
1850 'condition' => [
1851 'layout_select' => ['fitRows', 'masonry', 'list'],
1852 ],
1853 'separator' => 'before'
1854 ]
1855 );
1856
1857 $this->add_responsive_control(
1858 'layout_gutter_vr',
1859 [
1860 'label' => esc_html__('Vertical Gutter', 'king-addons'),
1861 'type' => Controls_Manager::SLIDER,
1862 'range' => [
1863 'px' => [
1864 'min' => 0,
1865 'max' => 150,
1866 ],
1867 ],
1868 'default' => [
1869 'size' => 15,
1870 ],
1871 'condition' => [
1872 'layout_select' => ['fitRows', 'masonry', 'list'],
1873 ]
1874 ]
1875 );
1876
1877 $this->add_responsive_control(
1878 'layout_filters',
1879 [
1880 'label' => esc_html__('Show Filters', 'king-addons'),
1881 'type' => Controls_Manager::SWITCHER,
1882 'default' => 'yes',
1883 'selectors_dictionary' => [
1884 '' => 'none',
1885 'yes' => 'block'
1886 ],
1887 'selectors' => [
1888 '{{WRAPPER}} .king-addons-grid-filters' => 'display:{{VALUE}};',
1889 ],
1890 'render_type' => 'template',
1891 'separator' => 'before',
1892 'condition' => [
1893 'layout_select!' => 'slider',
1894 ]
1895 ]
1896 );
1897
1898 $this->add_control(
1899 'layout_pagination',
1900 [
1901 'label' => esc_html__('Show Pagination', 'king-addons'),
1902 'description' => esc_html__('Please note that Pagination doesn\'t work in editor.', 'king-addons'),
1903 'type' => Controls_Manager::SWITCHER,
1904 'default' => 'yes',
1905 'return_value' => 'yes',
1906 'render_type' => 'template',
1907 'condition' => [
1908 'layout_select!' => 'slider',
1909 ]
1910 ]
1911 );
1912
1913 $this->add_control(
1914 'filters_experiment_hr_before',
1915 [
1916 'type' => Controls_Manager::DIVIDER,
1917 ]
1918 );
1919
1920 // TODO: Implement the Randomize Query feature.
1921 $this->add_control(
1922 'filters_experiment',
1923 [
1924 'label' => esc_html__('Filters & Load More Dynamic Loading (beta feature)', 'king-addons'),
1925 'type' => Controls_Manager::SWITCHER,
1926 'default' => 'no',
1927 'label_block' => false,
1928 'return_value' => 'yes',
1929 'render_type' => 'template',
1930 'separator' => 'after',
1931 // TODO: Later
1932
1933 // 'conditions' => [
1934 // 'relation' => 'and',
1935 // 'terms' => [
1936 // [
1937 // 'name' => 'layout_filters',
1938 // 'operator' => '!=',
1939 // 'value' => '',
1940 // ],
1941 // [
1942 // 'relation' => 'or',
1943 // 'terms' => [
1944 // [
1945 // 'relation' => 'and',
1946 // 'terms' => [
1947 // [
1948 // 'name' => 'layout_pagination',
1949 // 'operator' => '!=',
1950 // 'value' => '',
1951 // ],
1952 // [
1953 // 'name' => 'pagination_type',
1954 // 'operator' => 'in',
1955 // 'value' => ['load-more', 'infinite'],
1956 // ],
1957 // ]
1958 // ],
1959 // [
1960 // 'name' => 'layout_pagination',
1961 // 'operator' => '==',
1962 // 'value' => '',
1963 // ]
1964 // ],
1965 // ],
1966 // ]
1967 // ]
1968 ]
1969 );
1970
1971 $this->add_control_open_links_in_new_tab();
1972
1973 $this->add_control_grid_lazy_loading();
1974
1975 $this->add_control_layout_animation();
1976
1977 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'grid', 'layout_animation', ['pro-fd', 'pro-fs']);
1978
1979 $this->add_control(
1980 'layout_animation_duration',
1981 [
1982 'label' => esc_html__('Animation Duration', 'king-addons'),
1983 'type' => Controls_Manager::NUMBER,
1984 'default' => 0.3,
1985 'min' => 0,
1986 'max' => 5,
1987 'step' => 0.1,
1988 'condition' => [
1989 'layout_animation!' => 'default',
1990 'layout_select!' => 'slider',
1991 ],
1992 ]
1993 );
1994
1995 $this->add_control(
1996 'layout_animation_delay',
1997 [
1998 'label' => esc_html__('Animation Delay', 'king-addons'),
1999 'type' => Controls_Manager::NUMBER,
2000 'default' => 0.1,
2001 'min' => 0,
2002 'max' => 5,
2003 'step' => 0.05,
2004 'condition' => [
2005 'layout_animation!' => 'default',
2006 'layout_select!' => 'slider',
2007 ],
2008 ]
2009 );
2010
2011 $this->add_control_layout_slider_amount();
2012
2013 $this->add_control(
2014 'layout_slides_to_scroll',
2015 [
2016 'label' => esc_html__('Slides to Scroll', 'king-addons'),
2017 'type' => Controls_Manager::NUMBER,
2018 'min' => 1,
2019 'max' => 10,
2020 'default' => 1,
2021 'render_type' => 'template',
2022 'frontend_available' => true,
2023 'separator' => 'before',
2024 'condition' => [
2025 'layout_select' => 'slider',
2026 ],
2027 ]
2028 );
2029
2030 $this->add_responsive_control(
2031 'layout_slider_gutter',
2032 [
2033 'type' => Controls_Manager::SLIDER,
2034 'label' => esc_html__('Gutter', 'king-addons'),
2035 'size_units' => ['px'],
2036 'range' => [
2037 'px' => [
2038 'min' => 0,
2039 'max' => 50,
2040 ]
2041 ],
2042 'default' => [
2043 'unit' => 'px',
2044 'size' => 10,
2045 ],
2046 'selectors' => [
2047 '{{WRAPPER}} .king-addons-grid .slick-slide' => 'margin-left: {{SIZE}}{{UNIT}};',
2048 '{{WRAPPER}} .king-addons-grid .slick-list' => 'margin-left: -{{SIZE}}{{UNIT}};',
2049 ],
2050 'render_type' => 'template',
2051 'condition' => [
2052 'layout_slider_amount!' => '1',
2053 'layout_select' => 'slider',
2054 ],
2055 ]
2056 );
2057
2058 $this->add_responsive_control(
2059 'layout_slider_nav',
2060 [
2061 'label' => esc_html__('Navigation', 'king-addons'),
2062 'type' => Controls_Manager::SWITCHER,
2063 'default' => 'yes',
2064 'widescreen_default' => 'yes',
2065 'laptop_default' => 'yes',
2066 'tablet_extra_default' => 'yes',
2067 'tablet_default' => 'yes',
2068 'mobile_extra_default' => 'yes',
2069 'mobile_default' => 'yes',
2070 'selectors_dictionary' => [
2071 '' => 'none',
2072 'yes' => 'flex'
2073 ],
2074 'selectors' => [
2075 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'display:{{VALUE}} !important;',
2076 ],
2077 'separator' => 'before',
2078 'condition' => [
2079 'layout_select' => 'slider',
2080 ]
2081 ]
2082 );
2083
2084 $this->add_control_layout_slider_nav_hover();
2085
2086
2087 $this->add_control(
2088 'layout_slider_nav_icon',
2089 [
2090 'label' => esc_html__('Select Icon', 'king-addons'),
2091 'type' => Controls_Manager::SELECT,
2092 'default' => 'fas fa-angle-left',
2093 'options' => [
2094 'fas fa-angle-left' => esc_html__('Angle', 'king-addons'),
2095 'fas fa-angle-double-left' => esc_html__('Angle Double', 'king-addons'),
2096 'fas fa-arrow-left' => esc_html__('Arrow', 'king-addons'),
2097 'fas fa-arrow-alt-circle-left' => esc_html__('Arrow Circle', 'king-addons'),
2098 'far fa-arrow-alt-circle-left' => esc_html__('Arrow Circle Alt', 'king-addons'),
2099 'fas fa-long-arrow-alt-left' => esc_html__('Long Arrow', 'king-addons'),
2100 'fas fa-chevron-left' => esc_html__('Chevron', 'king-addons'),
2101 ],
2102 'separator' => 'after',
2103 'condition' => [
2104 'layout_slider_nav' => 'yes',
2105 'layout_select' => 'slider',
2106 ],
2107 ]
2108 );
2109
2110 $this->add_responsive_control(
2111 'layout_slider_dots',
2112 [
2113 'label' => esc_html__('Pagination', 'king-addons'),
2114 'type' => Controls_Manager::SWITCHER,
2115 'default' => 'yes',
2116 'widescreen_default' => 'yes',
2117 'laptop_default' => 'yes',
2118 'tablet_extra_default' => 'yes',
2119 'tablet_default' => 'yes',
2120 'mobile_extra_default' => 'yes',
2121 'mobile_default' => 'yes',
2122 'selectors_dictionary' => [
2123 '' => 'none',
2124 'yes' => 'inline-table'
2125 ],
2126 'selectors' => [
2127 '{{WRAPPER}} .king-addons-grid-slider-dots' => 'display:{{VALUE}};',
2128 ],
2129 'render_type' => 'template',
2130 'condition' => [
2131 'layout_select' => 'slider',
2132 ],
2133 ]
2134 );
2135
2136 $this->add_control_layout_slider_dots_position();
2137
2138
2139 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'grid', 'layout_slider_dots_position', ['pro-vr']);
2140
2141 $this->add_control_layout_slider_autoplay();
2142
2143 $this->add_controls_group_layout_slider_autoplay();
2144
2145 $this->add_control(
2146 'layout_slider_loop',
2147 [
2148 'label' => esc_html__('Infinite Loop', 'king-addons'),
2149 'type' => Controls_Manager::SWITCHER,
2150 'default' => 'yes',
2151 'separator' => 'before',
2152 'frontend_available' => true,
2153 'condition' => [
2154 'layout_select' => 'slider',
2155 ],
2156 ]
2157 );
2158
2159 $this->add_control(
2160 'layout_slider_effect',
2161 [
2162 'type' => Controls_Manager::SELECT,
2163 'label' => esc_html__('Effect', 'king-addons'),
2164 'default' => 'slide',
2165 'options' => [
2166 'slide' => esc_html__('Slide', 'king-addons'),
2167 'fade' => esc_html__('Fade', 'king-addons'),
2168 ],
2169 'condition' => [
2170 'layout_slider_amount' => 1,
2171 'layout_select' => 'slider',
2172 ],
2173 ]
2174 );
2175
2176 $this->add_control(
2177 'layout_slider_effect_duration',
2178 [
2179 'label' => esc_html__('Effect Duration', 'king-addons'),
2180 'type' => Controls_Manager::NUMBER,
2181 'default' => 0.7,
2182 'min' => 0,
2183 'max' => 5,
2184 'step' => 0.1,
2185 'condition' => [
2186 'layout_slider_amount' => 1,
2187 'layout_select' => 'slider',
2188 ],
2189 ]
2190 );
2191
2192 $this->end_controls_section();
2193
2194
2195 $this->start_controls_section(
2196 'section_grid_elements',
2197 [
2198 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Elements', 'king-addons'),
2199 'tab' => Controls_Manager::TAB_CONTENT,
2200 ]
2201 );
2202
2203 $repeater = new Repeater();
2204
2205 $element_select = $this->add_option_element_select();
2206
2207 $repeater->add_control(
2208 'element_select',
2209 [
2210 'label' => esc_html__('Select Element', 'king-addons'),
2211 'type' => Controls_Manager::SELECT,
2212 'default' => 'title',
2213 'options' => array_merge($element_select, $post_taxonomies),
2214 'separator' => 'after'
2215 ]
2216 );
2217
2218 $repeater->add_control(
2219 'show_last_update_date',
2220 [
2221 'label' => esc_html__('Show Last Update Date', 'king-addons'),
2222 'type' => Controls_Manager::SWITCHER,
2223 'return_value' => 'yes',
2224 'separator' => 'after',
2225 'condition' => [
2226 'element_select' => 'date',
2227 ]
2228 ]
2229 );
2230
2231 Core::renderUpgradeProNotice($repeater, Controls_Manager::RAW_HTML, 'grid', 'element_select', ['pro-lk', 'pro-shr', 'pro-cf']);
2232
2233 $repeater->add_control(
2234 'element_location',
2235 [
2236 'label' => esc_html__('Location', 'king-addons'),
2237 'type' => Controls_Manager::SELECT,
2238 'default' => 'below',
2239 'options' => [
2240 'above' => esc_html__('Above Media', 'king-addons'),
2241 'over' => esc_html__('Over Media', 'king-addons'),
2242 'below' => esc_html__('Below Media', 'king-addons'),
2243 ]
2244 ]
2245 );
2246
2247 $repeater->add_control(
2248 'element_display',
2249 [
2250 'label' => esc_html__('Display', 'king-addons'),
2251 'type' => Controls_Manager::SELECT,
2252 'default' => 'block',
2253 'options' => [
2254 'inline' => esc_html__('Inline', 'king-addons'),
2255 'block' => esc_html__('Separate Line', 'king-addons'),
2256 'custom' => esc_html__('Custom Width', 'king-addons'),
2257 ],
2258 ]
2259 );
2260
2261 $repeater->add_control(
2262 'element_custom_width',
2263 [
2264 'label' => esc_html__('Element Width', 'king-addons'),
2265 'type' => Controls_Manager::SLIDER,
2266 'size_units' => ['%'],
2267 'range' => [
2268 '%' => [
2269 'min' => 0,
2270 'max' => 100,
2271 ],
2272 ],
2273 'default' => [
2274 'unit' => '%',
2275 'size' => 100,
2276 ],
2277 'selectors' => [
2278 '{{WRAPPER}} {{CURRENT_ITEM}}' => 'width: {{SIZE}}%;',
2279 ],
2280 'condition' => [
2281 'element_display' => 'custom',
2282 ],
2283 ]
2284 );
2285
2286 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
2287 $repeater->add_control(
2288 'element_align_pro_notice',
2289 [
2290 'raw' => 'Vertical Align option is available<br> in the <strong><a href="https://kingaddons.com/pricing/?utm_source=kng-module-grid-settings-upgrade-pro&utm_medium=plugin&utm_campaign=kng" target="_blank">Pro version</a></strong>',
2291 'type' => Controls_Manager::RAW_HTML,
2292 'content_classes' => 'king-addons-pro-notice',
2293 'condition' => [
2294 'element_location' => 'over',
2295 ],
2296 ]
2297 );
2298 }
2299
2300 $repeater->add_control(
2301 'element_align_vr',
2302 [
2303 'label' => esc_html__('Vertical Align', 'king-addons'),
2304 'type' => Controls_Manager::CHOOSE,
2305 'label_block' => false,
2306 'default' => 'middle',
2307 'options' => [
2308 'top' => [
2309 'title' => esc_html__('Top', 'king-addons'),
2310 'icon' => 'eicon-v-align-top',
2311 ],
2312 'middle' => [
2313 'title' => esc_html__('Middle', 'king-addons'),
2314 'icon' => 'eicon-v-align-middle',
2315 ],
2316 'bottom' => [
2317 'title' => esc_html__('Bottom', 'king-addons'),
2318 'icon' => 'eicon-v-align-bottom',
2319 ],
2320 ],
2321 'condition' => [
2322 'element_location' => 'over',
2323 ],
2324 ]
2325 );
2326
2327 $repeater->add_control(
2328 'element_align_hr',
2329 [
2330 'label' => esc_html__('Horizontal Align', 'king-addons'),
2331 'type' => Controls_Manager::CHOOSE,
2332 'label_block' => false,
2333 'default' => 'left',
2334 'options' => [
2335 'left' => [
2336 'title' => esc_html__('Left', 'king-addons'),
2337 'icon' => 'eicon-h-align-left',
2338 ],
2339 'center' => [
2340 'title' => esc_html__('Center', 'king-addons'),
2341 'icon' => 'eicon-h-align-center',
2342 ],
2343 'right' => [
2344 'title' => esc_html__('Right', 'king-addons'),
2345 'icon' => 'eicon-h-align-right',
2346 ]
2347 ],
2348 'selectors' => [
2349 '{{WRAPPER}} {{CURRENT_ITEM}}' => 'text-align: {{VALUE}}',
2350 ],
2351 'render_type' => 'template',
2352 'separator' => 'after'
2353 ]
2354 );
2355
2356 $repeater->add_control(
2357 'element_title_tag',
2358 [
2359 'label' => esc_html__('Title HTML Tag', 'king-addons'),
2360 'type' => Controls_Manager::SELECT,
2361 'options' => [
2362 'h1' => 'H1',
2363 'h2' => 'H2',
2364 'h3' => 'H3',
2365 'h4' => 'H4',
2366 'h5' => 'H5',
2367 'h6' => 'H6',
2368 'div' => 'div',
2369 'span' => 'span',
2370 'P' => 'p'
2371 ],
2372 'default' => 'h2',
2373 'condition' => [
2374 'element_select' => 'title',
2375 ]
2376 ]
2377 );
2378
2379 $repeater->add_control(
2380 'element_dropcap',
2381 [
2382 'label' => esc_html__('Enable Drop Cap', 'king-addons'),
2383 'type' => Controls_Manager::SWITCHER,
2384 'return_value' => 'yes',
2385 'condition' => [
2386 'element_select' => ['content', 'excerpt'],
2387 ]
2388 ]
2389 );
2390
2391 $repeater->add_control(
2392 'element_trim_text_by',
2393 [
2394 'label' => esc_html__('Trim Text By', 'king-addons'),
2395 'type' => Controls_Manager::SELECT,
2396 'default' => 'word_count',
2397 'options' => $this->add_repeater_args_element_trim_text_by(),
2398 'separator' => 'after',
2399 'condition' => [
2400 'element_select' => ['title', 'excerpt'],
2401 ]
2402 ]
2403 );
2404
2405 $repeater->add_control(
2406 'element_word_count',
2407 [
2408 'label' => esc_html__('Word Count', 'king-addons'),
2409 'type' => Controls_Manager::NUMBER,
2410 'default' => 20,
2411 'min' => 1,
2412 'condition' => [
2413 'element_select' => ['title', 'excerpt'],
2414 'element_trim_text_by' => 'word_count'
2415 ]
2416 ]
2417 );
2418
2419 $repeater->add_control(
2420 'element_letter_count',
2421 [
2422 'label' => esc_html__('Letter Count', 'king-addons'),
2423 'type' => Controls_Manager::NUMBER,
2424 'default' => 40,
2425 'min' => 1,
2426 'condition' => [
2427 'element_select' => ['title', 'excerpt'],
2428 'element_trim_text_by' => 'letter_count'
2429 ]
2430 ]
2431 );
2432
2433 $repeater->add_control(
2434 'element_show_avatar',
2435 [
2436 'label' => esc_html__('Show Avatar', 'king-addons'),
2437 'type' => Controls_Manager::SWITCHER,
2438 'return_value' => 'yes',
2439 'condition' => [
2440 'element_select' => ['author']
2441 ]
2442 ]
2443 );
2444
2445 $repeater->add_control(
2446 'element_avatar_size',
2447 [
2448 'label' => esc_html__('Avatar Size', 'king-addons'),
2449 'type' => Controls_Manager::NUMBER,
2450 'default' => 16,
2451 'min' => 8,
2452 'condition' => [
2453 'element_select' => ['author'],
2454 'element_show_avatar' => 'yes'
2455 ],
2456 'separator' => 'after'
2457 ]
2458 );
2459
2460 $repeater->add_control(
2461 'element_read_more_text',
2462 [
2463 'label' => esc_html__('Read More Text', 'king-addons'),
2464 'type' => Controls_Manager::TEXT,
2465 'dynamic' => [
2466 'active' => true,
2467 ],
2468 'default' => 'Read More',
2469 'condition' => [
2470 'element_select' => ['read-more'],
2471 ],
2472 'separator' => 'after'
2473 ]
2474 );
2475
2476 $repeater->add_control(
2477 'element_tax_sep',
2478 [
2479 'label' => esc_html__('Separator', 'king-addons'),
2480 'type' => Controls_Manager::TEXT,
2481 'dynamic' => [
2482 'active' => true,
2483 ],
2484 'default' => ', ',
2485 'condition' => [
2486 'element_select!' => [
2487 'title',
2488 'content',
2489 'excerpt',
2490 'date',
2491 'time',
2492 'author',
2493 'comments',
2494 'read-more',
2495 'likes',
2496 'sharing',
2497 'lightbox',
2498 'custom-field',
2499 'separator',
2500 'post_format',
2501 ],
2502 ],
2503 'separator' => 'after'
2504 ]
2505 );
2506
2507 $repeater->add_control(
2508 'element_tax_style',
2509 [
2510 'label' => esc_html__('Select Styling', 'king-addons'),
2511 'type' => Controls_Manager::SELECT,
2512 'default' => 'king-addons-grid-tax-style-1',
2513 'options' => [
2514 'king-addons-grid-tax-style-1' => esc_html__('Taxonomy Style 1', 'king-addons'),
2515 'king-addons-grid-tax-style-2' => esc_html__('Taxonomy Style 2', 'king-addons'),
2516 ],
2517 'condition' => [
2518 'element_select!' => [
2519 'title',
2520 'content',
2521 'excerpt',
2522 'date',
2523 'time',
2524 'author',
2525 'comments',
2526 'read-more',
2527 'likes',
2528 'sharing',
2529 'lightbox',
2530 'custom-field',
2531 'separator',
2532 ],
2533 ],
2534 'separator' => 'after'
2535 ]
2536 );
2537
2538 $repeater->add_control(
2539 'element_comments_text_1',
2540 [
2541 'label' => esc_html__('No Comments', 'king-addons'),
2542 'type' => Controls_Manager::TEXT,
2543 'dynamic' => [
2544 'active' => true,
2545 ],
2546 'default' => 'No Comments',
2547 'condition' => [
2548 'element_select' => ['comments'],
2549 ]
2550 ]
2551 );
2552
2553 $repeater->add_control(
2554 'element_comments_text_2',
2555 [
2556 'label' => esc_html__('One Comment', 'king-addons'),
2557 'type' => Controls_Manager::TEXT,
2558 'dynamic' => [
2559 'active' => true,
2560 ],
2561 'default' => 'Comment',
2562 'condition' => [
2563 'element_select' => ['comments'],
2564 ]
2565 ]
2566 );
2567
2568 $repeater->add_control(
2569 'element_comments_text_3',
2570 [
2571 'label' => esc_html__('Multiple Comments', 'king-addons'),
2572 'type' => Controls_Manager::TEXT,
2573 'dynamic' => [
2574 'active' => true,
2575 ],
2576 'default' => 'Comments',
2577 'condition' => [
2578 'element_select' => ['comments'],
2579 ],
2580 'separator' => 'after'
2581 ]
2582 );
2583
2584 $repeater->add_control('element_like_icon', $this->add_repeater_args_element_like_icon());
2585
2586 $repeater->add_control('element_like_show_count', $this->add_repeater_args_element_like_show_count());
2587
2588 $repeater->add_control('element_like_text', $this->add_repeater_args_element_like_text());
2589
2590 $repeater->add_control('element_sharing_icon_1', $this->add_repeater_args_element_sharing_icon_1());
2591
2592 $repeater->add_control('element_sharing_icon_2', $this->add_repeater_args_element_sharing_icon_2());
2593
2594 $repeater->add_control('element_sharing_icon_3', $this->add_repeater_args_element_sharing_icon_3());
2595
2596 $repeater->add_control('element_sharing_icon_4', $this->add_repeater_args_element_sharing_icon_4());
2597
2598 $repeater->add_control('element_sharing_icon_5', $this->add_repeater_args_element_sharing_icon_5());
2599
2600 $repeater->add_control('element_sharing_icon_6', $this->add_repeater_args_element_sharing_icon_6());
2601
2602 $repeater->add_control('element_sharing_trigger', $this->add_repeater_args_element_sharing_trigger());
2603
2604 $repeater->add_control('element_sharing_trigger_icon', $this->add_repeater_args_element_sharing_trigger_icon());
2605
2606 $repeater->add_control('element_sharing_trigger_action', $this->add_repeater_args_element_sharing_trigger_action());
2607
2608 $repeater->add_control('element_sharing_trigger_direction', $this->add_repeater_args_element_sharing_trigger_direction());
2609
2610 $repeater->add_control('element_sharing_tooltip', $this->add_repeater_args_element_sharing_tooltip());
2611
2612 $repeater->add_control(
2613 'element_lightbox_pfa_select',
2614 [
2615 'label' => esc_html__('Post Format Audio', 'king-addons'),
2616 'type' => Controls_Manager::SELECT,
2617 'default' => 'default',
2618 'options' => [
2619 'default' => esc_html__('Default', 'king-addons'),
2620 'meta' => esc_html__('Meta Value', 'king-addons'),
2621 ],
2622 'condition' => [
2623 'element_select' => 'lightbox',
2624 ],
2625 ]
2626 );
2627
2628 $repeater->add_control(
2629 'element_lightbox_pfa_meta',
2630 [
2631 'label' => esc_html__('Audio Meta Value', 'king-addons'),
2632 'type' => 'king-addons-ajax-select2',
2633 'label_block' => true,
2634 'default' => 'default',
2635 'options' => 'ajaxselect2/getCustomMetaKeys',
2636 'condition' => [
2637 'element_select' => 'lightbox',
2638 'element_lightbox_pfa_select' => 'meta',
2639 ],
2640 ]
2641 );
2642
2643 $repeater->add_control(
2644 'element_lightbox_pfv_select',
2645 [
2646 'label' => esc_html__('Post Format Video', 'king-addons'),
2647 'type' => Controls_Manager::SELECT,
2648 'default' => 'default',
2649 'options' => [
2650 'default' => esc_html__('Default', 'king-addons'),
2651 'meta' => esc_html__('Meta Value', 'king-addons'),
2652 ],
2653 'condition' => [
2654 'element_select' => 'lightbox',
2655 ],
2656 ]
2657 );
2658
2659 $repeater->add_control(
2660 'element_lightbox_pfv_meta',
2661 [
2662 'label' => esc_html__('Video Meta Value', 'king-addons'),
2663 'type' => 'king-addons-ajax-select2',
2664 'label_block' => true,
2665 'default' => 'default',
2666 'options' => 'ajaxselect2/getCustomMetaKeys',
2667 'condition' => [
2668 'element_select' => 'lightbox',
2669 'element_lightbox_pfv_select' => 'meta',
2670 ],
2671 ]
2672 );
2673
2674 $repeater->add_control(
2675 'element_lightbox_overlay',
2676 [
2677 'label' => esc_html__('Media Overlay', 'king-addons'),
2678 'type' => Controls_Manager::SWITCHER,
2679 'return_value' => 'yes',
2680 'separator' => 'after',
2681 'condition' => [
2682 'element_select' => ['lightbox'],
2683 ],
2684 ]
2685 );
2686
2687 $repeater->add_control('element_custom_field', $this->add_repeater_args_element_custom_field());
2688
2689 $repeater->add_control('element_custom_field_img_ID', $this->add_repeater_args_element_custom_field_img_ID());
2690
2691 $repeater->add_control('element_custom_field_btn_link', $this->add_repeater_args_element_custom_field_btn_link());
2692
2693 $repeater->add_control('element_custom_field_new_tab', $this->add_repeater_args_element_custom_field_new_tab());
2694
2695 $repeater->add_control('custom_field_wrapper_html_divider1', $this->add_repeater_args_custom_field_wrapper_html_divider1());
2696
2697 $repeater->add_control('element_custom_field_wrapper', $this->add_repeater_args_element_custom_field_wrapper());
2698
2699 $repeater->add_control('element_custom_field_wrapper_html', $this->add_repeater_args_element_custom_field_wrapper_html());
2700
2701 $repeater->add_control('custom_field_wrapper_html_divider2', $this->add_repeater_args_custom_field_wrapper_html_divider2());
2702
2703 $repeater->add_control('element_cf_tag', $this->add_repeater_args_element_cf_tag());
2704
2705 $repeater->add_control('element_custom_field_style', $this->add_repeater_args_element_custom_field_style());
2706
2707 $repeater->add_control(
2708 'element_separator_style',
2709 [
2710 'label' => esc_html__('Select Styling', 'king-addons'),
2711 'type' => Controls_Manager::SELECT,
2712 'default' => 'king-addons-grid-sep-style-1',
2713 'options' => [
2714 'king-addons-grid-sep-style-1' => esc_html__('Separator Style 1', 'king-addons'),
2715 'king-addons-grid-sep-style-2' => esc_html__('Separator Style 2', 'king-addons'),
2716 ],
2717 'condition' => [
2718 'element_select' => 'separator',
2719 ]
2720 ]
2721 );
2722
2723 $repeater->add_control(
2724 'element_extra_text_pos',
2725 [
2726 'label' => esc_html__('Extra Text Display', 'king-addons'),
2727 'type' => Controls_Manager::SELECT,
2728 'options' => [
2729 'none' => esc_html__('None', 'king-addons'),
2730 'before' => esc_html__('Before Element', 'king-addons'),
2731 'after' => esc_html__('After Element', 'king-addons'),
2732 ],
2733 'default' => 'none',
2734 'condition' => [
2735 'element_select!' => [
2736 'title',
2737 'content',
2738 'excerpt',
2739 'read-more',
2740 'separator',
2741 ],
2742 ]
2743 ]
2744 );
2745
2746 $repeater->add_control(
2747 'element_extra_text',
2748 [
2749 'label' => esc_html__('Extra Text', 'king-addons'),
2750 'type' => Controls_Manager::TEXT,
2751 'dynamic' => [
2752 'active' => true,
2753 ],
2754 'default' => '',
2755 'condition' => [
2756 'element_select!' => [
2757 'title',
2758 'content',
2759 'excerpt',
2760 'read-more',
2761 'separator',
2762 ],
2763 'element_extra_text_pos!' => 'none'
2764 ]
2765 ]
2766 );
2767
2768 $repeater->add_control(
2769 'element_extra_icon_pos',
2770 [
2771 'label' => esc_html__('Extra Icon Position', 'king-addons'),
2772 'type' => Controls_Manager::SELECT,
2773 'options' => [
2774 'none' => esc_html__('None', 'king-addons'),
2775 'before' => esc_html__('Before Element', 'king-addons'),
2776 'after' => esc_html__('After Element', 'king-addons'),
2777 ],
2778 'default' => 'none',
2779 'condition' => [
2780 'element_select!' => [
2781 'title',
2782 'content',
2783 'excerpt',
2784 'separator',
2785 'likes',
2786 'sharing',
2787 ],
2788 ]
2789 ]
2790 );
2791
2792 $repeater->add_control(
2793 'element_extra_icon',
2794 [
2795 'label' => esc_html__('Select Icon', 'king-addons'),
2796 'type' => Controls_Manager::ICONS,
2797 'skin' => 'inline',
2798 'label_block' => false,
2799 'default' => [
2800 'value' => 'fas fa-search',
2801 'library' => 'fa-solid',
2802 ],
2803 'condition' => [
2804 'element_select!' => [
2805 'title',
2806 'content',
2807 'excerpt',
2808 'separator',
2809 'likes',
2810 'sharing',
2811 ],
2812 'element_extra_icon_pos!' => 'none'
2813 ]
2814 ]
2815 );
2816
2817 $repeater->add_control(
2818 'animation_divider',
2819 [
2820 'type' => Controls_Manager::DIVIDER,
2821 'style' => 'thick',
2822 'condition' => [
2823 'element_location' => 'over'
2824 ],
2825 ]
2826 );
2827
2828 $repeater->add_control(
2829 'element_animation',
2830 [
2831 'label' => esc_html__('Select Animation', 'king-addons'),
2832 'type' => 'king-addons-animations',
2833 'default' => 'none',
2834 'condition' => [
2835 'element_location' => 'over'
2836 ],
2837 ]
2838 );
2839
2840
2841 Core::renderUpgradeProNotice($repeater, Controls_Manager::RAW_HTML, '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']);
2842
2843 $repeater->add_control(
2844 'element_animation_duration',
2845 [
2846 'label' => esc_html__('Animation Duration', 'king-addons'),
2847 'type' => Controls_Manager::NUMBER,
2848 'default' => 0.3,
2849 'min' => 0,
2850 'max' => 5,
2851 'step' => 0.1,
2852 'selectors' => [
2853 '{{WRAPPER}} {{CURRENT_ITEM}}' => 'transition-duration: {{VALUE}}s;'
2854 ],
2855 'condition' => [
2856 'element_animation!' => 'none',
2857 'element_location' => 'over',
2858 ],
2859 ]
2860 );
2861
2862 $repeater->add_control(
2863 'element_animation_delay',
2864 [
2865 'label' => esc_html__('Animation Delay', 'king-addons'),
2866 'type' => Controls_Manager::NUMBER,
2867 'default' => 0,
2868 'min' => 0,
2869 'max' => 5,
2870 'step' => 0.1,
2871 'selectors' => [
2872 '{{WRAPPER}} .king-addons-animation-wrap:hover {{CURRENT_ITEM}}' => 'transition-delay: {{VALUE}}s;'
2873 ],
2874 'condition' => [
2875 'element_animation!' => 'none',
2876 'element_location' => 'over'
2877 ],
2878 ]
2879 );
2880
2881 $repeater->add_control(
2882 'element_animation_timing',
2883 [
2884 'label' => esc_html__('Animation Timing', 'king-addons'),
2885 'type' => Controls_Manager::SELECT,
2886 'options' => Core::getAnimationTimings(),
2887 'default' => 'ease-default',
2888 'condition' => [
2889 'element_animation!' => 'none',
2890 'element_location' => 'over'
2891 ],
2892 ]
2893 );
2894
2895
2896 Core::renderUpgradeProNotice($repeater, Controls_Manager::RAW_HTML, 'grid', 'element_animation_timing', ['pro-eio', 'pro-eiqd', 'pro-eicb', 'pro-eiqrt', 'pro-eiqnt', 'pro-eisn', 'pro-eiex', 'pro-eicr', 'pro-eibk', 'pro-eoqd', 'pro-eocb', 'pro-eoqrt', 'pro-eoqnt', 'pro-eosn', 'pro-eoex', 'pro-eocr', 'pro-eobk', 'pro-eioqd', 'pro-eiocb', 'pro-eioqrt', 'pro-eioqnt', 'pro-eiosn', 'pro-eioex', 'pro-eiocr', 'pro-eiobk',]);
2897
2898 $repeater->add_control(
2899 'element_animation_size',
2900 [
2901 'label' => esc_html__('Animation Size', 'king-addons'),
2902 'type' => Controls_Manager::SELECT,
2903 'options' => [
2904 'small' => esc_html__('Small', 'king-addons'),
2905 'medium' => esc_html__('Medium', 'king-addons'),
2906 'large' => esc_html__('Large', 'king-addons'),
2907 ],
2908 'default' => 'large',
2909 'condition' => [
2910 'element_animation!' => 'none',
2911 'element_location' => 'over'
2912 ],
2913 ]
2914 );
2915
2916 $repeater->add_control(
2917 'element_animation_tr',
2918 [
2919 'label' => esc_html__('Animation Transparency', 'king-addons'),
2920 'type' => Controls_Manager::SWITCHER,
2921 'default' => 'yes',
2922 'return_value' => 'yes',
2923 'condition' => [
2924 'element_animation!' => 'none',
2925 'element_location' => 'over'
2926 ],
2927 ]
2928 );
2929
2930 $repeater->add_control(
2931 'element_animation_disable_mobile',
2932 [
2933 'label' => esc_html__('Disable on Mobile/Tablet', 'king-addons'),
2934 'type' => Controls_Manager::SWITCHER,
2935 'return_value' => 'yes',
2936 'condition' => [
2937 'element_animation!' => 'none',
2938 'element_location' => 'over'
2939 ],
2940 ]
2941 );
2942
2943 $repeater->add_responsive_control(
2944 'element_show_on',
2945 [
2946 'label' => esc_html__('Show on this Device', 'king-addons'),
2947 'type' => Controls_Manager::SWITCHER,
2948 'default' => 'yes',
2949 'widescreen_default' => 'yes',
2950 'laptop_default' => 'yes',
2951 'tablet_extra_default' => 'yes',
2952 'tablet_default' => 'yes',
2953 'mobile_extra_default' => 'yes',
2954 'mobile_default' => 'yes',
2955 'selectors_dictionary' => [
2956 '' => 'position: absolute; left: -99999999px;',
2957 'yes' => 'position: static; left: auto;'
2958 ],
2959 'selectors' => [
2960 '{{WRAPPER}} {{CURRENT_ITEM}}' => '{{VALUE}}',
2961 ],
2962 'render_type' => 'template',
2963 ]
2964 );
2965
2966 $this->add_control(
2967 'grid_elements',
2968 [
2969 'label' => esc_html__('Grid Elements', 'king-addons'),
2970 'type' => Controls_Manager::REPEATER,
2971 'fields' => $repeater->get_controls(),
2972 'default' => [
2973 [
2974 'element_select' => 'title',
2975 ],
2976 [
2977 'element_select' => 'date',
2978 'element_display' => 'inline',
2979 'element_extra_text_pos' => 'after',
2980 'element_extra_text' => '/',
2981 ],
2982 [
2983 'element_select' => 'comments',
2984 'element_display' => 'inline',
2985 ],
2986 [
2987 'element_select' => 'excerpt',
2988 ],
2989 [
2990 'element_select' => 'read-more',
2991 ],
2992 ],
2993 'title_field' => '{{ element_select.charAt(0).toUpperCase() + element_select.slice(1) }}',
2994 ]
2995 );
2996
2997 $this->end_controls_section();
2998
2999
3000 $this->start_controls_section(
3001 'section_image_overlay',
3002 [
3003 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Media Overlay', 'king-addons'),
3004 'tab' => Controls_Manager::TAB_CONTENT,
3005 ]
3006 );
3007
3008 $this->add_responsive_control(
3009 'overlay_width',
3010 [
3011 'label' => esc_html__('Overlay Width', 'king-addons'),
3012 'type' => Controls_Manager::SLIDER,
3013 'size_units' => ['%', 'px'],
3014 'default' => [
3015 'unit' => '%',
3016 'size' => 100,
3017 ],
3018 'range' => [
3019 '%' => [
3020 'min' => 0,
3021 'max' => 100,
3022 ],
3023 'px' => [
3024 'min' => 0,
3025 'max' => 500,
3026 ],
3027 ],
3028 'selectors' => [
3029 '{{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);',
3030 '{{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);',
3031 '{{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);',
3032 '{{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);',
3033 '{{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);',
3034 ],
3035 ]
3036 );
3037
3038 $this->add_responsive_control(
3039 'overlay_height',
3040 [
3041 'label' => esc_html__('Overlay Height', 'king-addons'),
3042 'type' => Controls_Manager::SLIDER,
3043 'size_units' => ['%', 'px'],
3044 'default' => [
3045 'unit' => '%',
3046 'size' => 100,
3047 ],
3048 'range' => [
3049 '%' => [
3050 'min' => 0,
3051 'max' => 100,
3052 ],
3053 'px' => [
3054 'min' => 0,
3055 'max' => 500,
3056 ],
3057 ],
3058 'selectors' => [
3059 '{{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);',
3060 '{{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);',
3061 '{{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);',
3062 '{{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);',
3063 '{{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);',
3064 ],
3065 'separator' => 'after',
3066 ]
3067 );
3068
3069 $this->add_control(
3070 'overlay_post_link',
3071 [
3072 'label' => esc_html__('Link to Single Page', 'king-addons'),
3073 'type' => Controls_Manager::SWITCHER,
3074 'default' => 'yes',
3075 'return_value' => 'yes',
3076 'separator' => 'after',
3077 ]
3078 );
3079
3080 $this->add_control(
3081 'overlay_animation',
3082 [
3083 'label' => esc_html__('Select Animation', 'king-addons'),
3084 'type' => 'king-addons-animations-alt',
3085 'default' => 'fade-in',
3086 ]
3087 );
3088
3089
3090 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, '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']);
3091
3092 $this->add_control(
3093 'overlay_animation_duration',
3094 [
3095 'label' => esc_html__('Animation Duration', 'king-addons'),
3096 'type' => Controls_Manager::NUMBER,
3097 'default' => 0.3,
3098 'min' => 0,
3099 'max' => 5,
3100 'step' => 0.1,
3101 'selectors' => [
3102 '{{WRAPPER}} .king-addons-grid-media-hover-bg' => 'transition-duration: {{VALUE}}s;'
3103 ],
3104 'condition' => [
3105 'overlay_animation!' => 'none',
3106 ],
3107 ]
3108 );
3109
3110 $this->add_control(
3111 'overlay_animation_delay',
3112 [
3113 'label' => esc_html__('Animation Delay', 'king-addons'),
3114 'type' => Controls_Manager::NUMBER,
3115 'default' => 0,
3116 'min' => 0,
3117 'max' => 5,
3118 'step' => 0.1,
3119 'selectors' => [
3120 '{{WRAPPER}} .king-addons-animation-wrap:hover .king-addons-grid-media-hover-bg' => 'transition-delay: {{VALUE}}s;'
3121 ],
3122 'condition' => [
3123 'overlay_animation!' => 'none',
3124 ],
3125 ]
3126 );
3127
3128 $this->add_control(
3129 'overlay_animation_timing',
3130 [
3131 'label' => esc_html__('Animation Timing', 'king-addons'),
3132 'type' => Controls_Manager::SELECT,
3133 'options' => Core::getAnimationTimings(),
3134 'default' => 'ease-default',
3135 'condition' => [
3136 'overlay_animation!' => 'none',
3137 ],
3138 ]
3139 );
3140
3141
3142 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'grid', 'overlay_animation_timing', Core::getAnimationTimingsConditionsPro());
3143
3144 $this->add_control(
3145 'overlay_animation_size',
3146 [
3147 'label' => esc_html__('Animation Size', 'king-addons'),
3148 'type' => Controls_Manager::SELECT,
3149 'options' => [
3150 'small' => esc_html__('Small', 'king-addons'),
3151 'medium' => esc_html__('Medium', 'king-addons'),
3152 'large' => esc_html__('Large', 'king-addons'),
3153 ],
3154 'default' => 'large',
3155 'condition' => [
3156 'overlay_animation!' => 'none',
3157 ],
3158 ]
3159 );
3160
3161 $this->add_control(
3162 'overlay_animation_tr',
3163 [
3164 'label' => esc_html__('Animation Transparency', 'king-addons'),
3165 'type' => Controls_Manager::SWITCHER,
3166 'default' => 'yes',
3167 'return_value' => 'yes',
3168 'condition' => [
3169 'overlay_animation!' => 'none',
3170 ],
3171 ]
3172 );
3173
3174 $this->add_control_overlay_animation_divider();
3175
3176 $this->add_control_overlay_image();
3177
3178 $this->add_control_overlay_image_width();
3179
3180 $this->end_controls_section();
3181
3182
3183 $this->start_controls_section(
3184 'section_image_effects',
3185 [
3186 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Image Effects', 'king-addons'),
3187 'tab' => Controls_Manager::TAB_CONTENT,
3188 ]
3189 );
3190
3191 $this->add_control_secondary_img_on_hover();
3192
3193 $this->add_control_image_effects();
3194
3195 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'grid', 'image_effects', ['pro-zi', 'pro-zo', 'pro-go', 'pro-bo']);
3196
3197 $this->add_control(
3198 'image_effects_duration',
3199 [
3200 'label' => esc_html__('Animation Duration', 'king-addons'),
3201 'type' => Controls_Manager::NUMBER,
3202 'default' => 0.5,
3203 'min' => 0,
3204 'max' => 5,
3205 'step' => 0.1,
3206 'selectors' => [
3207 '{{WRAPPER}} .king-addons-grid-media-wrap img' => 'transition-duration: {{VALUE}}s;'
3208 ],
3209 'condition' => [
3210 'image_effects!' => 'none',
3211 ],
3212 ]
3213 );
3214
3215 $this->add_control(
3216 'image_effects_delay',
3217 [
3218 'label' => esc_html__('Animation Delay', 'king-addons'),
3219 'type' => Controls_Manager::NUMBER,
3220 'default' => 0,
3221 'min' => 0,
3222 'max' => 5,
3223 'step' => 0.1,
3224 'selectors' => [
3225 '{{WRAPPER}} .king-addons-grid-media-wrap:hover img' => 'transition-delay: {{VALUE}}s;'
3226 ],
3227 'condition' => [
3228 'image_effects!' => 'none',
3229 ],
3230 ]
3231 );
3232
3233 $this->add_control(
3234 'image_effects_animation_timing',
3235 [
3236 'label' => esc_html__('Animation Timing', 'king-addons'),
3237 'type' => Controls_Manager::SELECT,
3238 'options' => Core::getAnimationTimings(),
3239 'default' => 'ease-default',
3240 'condition' => [
3241 'image_effects!' => 'none',
3242 ],
3243 ]
3244 );
3245
3246
3247 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'grid', 'image_effects_animation_timing', Core::getAnimationTimingsConditionsPro());
3248
3249 $this->add_control(
3250 'image_effects_size',
3251 [
3252 'label' => esc_html__('Animation Size', 'king-addons'),
3253 'type' => Controls_Manager::SELECT,
3254 'options' => [
3255 'small' => esc_html__('Small', 'king-addons'),
3256 'medium' => esc_html__('Medium', 'king-addons'),
3257 'large' => esc_html__('Large', 'king-addons'),
3258 ],
3259 'default' => 'medium',
3260 'condition' => [
3261 'image_effects!' => ['none', 'slide'],
3262 ]
3263 ]
3264 );
3265
3266 $this->add_control(
3267 'image_effects_direction',
3268 [
3269 'label' => esc_html__('Animation Direction', 'king-addons'),
3270 'type' => Controls_Manager::SELECT,
3271 'options' => [
3272 'top' => esc_html__('Top', 'king-addons'),
3273 'right' => esc_html__('Right', 'king-addons'),
3274 'bottom' => esc_html__('Bottom', 'king-addons'),
3275 'left' => esc_html__('Left', 'king-addons'),
3276 ],
3277 'default' => 'bottom',
3278 'condition' => [
3279 'image_effects!' => 'none',
3280 'image_effects' => 'slide'
3281 ]
3282 ]
3283 );
3284
3285 $this->end_controls_section();
3286
3287 // TODO: Check for issues.
3288 // $this->add_section_general_lightbox();
3289
3290 $this->start_controls_section(
3291 'section_grid_filters',
3292 [
3293 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Filters', 'king-addons'),
3294 'tab' => Controls_Manager::TAB_CONTENT,
3295 'condition' => [
3296 'layout_select!' => 'slider',
3297 'layout_filters' => 'yes',
3298 ],
3299 ]
3300 );
3301
3302 $this->add_control(
3303 'filters_select',
3304 [
3305 'label' => esc_html__('Select Taxonomy', 'king-addons'),
3306 'type' => Controls_Manager::SELECT,
3307 'options' => $post_taxonomies,
3308 'default' => 'category',
3309 ]
3310 );
3311
3312 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
3313 $this->add_control(
3314 'filters_select_pro_notice',
3315 [
3316 'raw' => 'This option is available<br> in the <strong><a href="https://kingaddons.com/pricing/?utm_source=kng-module-grid-upgrade-pro&utm_medium=plugin&utm_campaign=kng" target="_blank">Pro version</a></strong>',
3317 'type' => Controls_Manager::RAW_HTML,
3318 'content_classes' => 'king-addons-pro-notice',
3319 'condition' => [
3320 'filters_select!' => ['category', 'post_tag'],
3321 ]
3322 ]
3323 );
3324 }
3325
3326 $this->add_control(
3327 'filters_linkable',
3328 [
3329 'label' => esc_html__('Set Linkable Filters', 'king-addons'),
3330 'type' => Controls_Manager::SWITCHER,
3331 'default' => 'no',
3332 'return_value' => 'yes',
3333 ]
3334 );
3335
3336 $this->add_control(
3337 'filters_hide_empty',
3338 [
3339 'label' => esc_html__('Hide Empty Filters', 'king-addons'),
3340 'type' => Controls_Manager::SWITCHER,
3341 'default' => 'no',
3342 'return_value' => 'yes',
3343 'condition' => [
3344 'filters_linkable!' => 'yes',
3345 ],
3346 ]
3347 );
3348
3349 $this->add_control_filters_deeplinking();
3350
3351 $this->add_control(
3352 'filters_all',
3353 [
3354 'label' => esc_html__('Show "All" Filter', 'king-addons'),
3355 'type' => Controls_Manager::SWITCHER,
3356 'default' => 'yes',
3357 'return_value' => 'yes',
3358 'condition' => [
3359 'filters_linkable!' => 'yes',
3360 ],
3361 ]
3362 );
3363
3364 $this->add_control(
3365 'filters_all_text',
3366 [
3367 'label' => esc_html__('"All" Filter Text', 'king-addons'),
3368 'type' => Controls_Manager::TEXT,
3369 'dynamic' => [
3370 'active' => true,
3371 ],
3372 'default' => 'All Posts',
3373 'condition' => [
3374 'filters_all' => 'yes',
3375 'filters_linkable!' => 'yes',
3376 ],
3377 ]
3378 );
3379
3380 $this->add_control_filters_count();
3381
3382 $this->add_control_filters_count_superscript();
3383
3384 $this->add_control_filters_count_brackets();
3385
3386 $this->add_control_filters_default_filter();
3387
3388 $this->add_control_filters_icon();
3389
3390 $this->add_control_filters_icon_align();
3391
3392 $this->add_control(
3393 'filters_separator',
3394 [
3395 'label' => esc_html__('Separator', 'king-addons'),
3396 'type' => Controls_Manager::TEXT,
3397 'dynamic' => [
3398 'active' => true,
3399 ],
3400 'default' => '',
3401 'separator' => 'before',
3402 ]
3403 );
3404
3405 $this->add_control(
3406 'filters_separator_align',
3407 [
3408 'label' => esc_html__('Separator Position', 'king-addons'),
3409 'type' => Controls_Manager::CHOOSE,
3410 'label_block' => false,
3411 'default' => 'right',
3412 'options' => [
3413 'left' => [
3414 'title' => esc_html__('Left', 'king-addons'),
3415 'icon' => 'eicon-h-align-left',
3416 ],
3417 'right' => [
3418 'title' => esc_html__('Right', 'king-addons'),
3419 'icon' => 'eicon-h-align-right',
3420 ]
3421 ],
3422 'condition' => [
3423 'filters_separator!' => '',
3424 ],
3425 ]
3426 );
3427
3428 $this->add_responsive_control(
3429 'filters_align',
3430 [
3431 'label' => esc_html__('Align', 'king-addons'),
3432 'type' => Controls_Manager::CHOOSE,
3433 'label_block' => false,
3434 'default' => 'center',
3435 'options' => [
3436 'left' => [
3437 'title' => esc_html__('Left', 'king-addons'),
3438 'icon' => 'eicon-h-align-left',
3439 ],
3440 'center' => [
3441 'title' => esc_html__('Center', 'king-addons'),
3442 'icon' => 'eicon-h-align-center',
3443 ],
3444 'right' => [
3445 'title' => esc_html__('Right', 'king-addons'),
3446 'icon' => 'eicon-h-align-right',
3447 ]
3448 ],
3449 'selectors' => [
3450 '{{WRAPPER}} .king-addons-grid-filters' => 'text-align: {{VALUE}}',
3451 ],
3452 'separator' => 'before',
3453 ]
3454 );
3455
3456 $this->add_control_filters_animation();
3457
3458
3459 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'grid', 'filters_animation', ['pro-fd', 'pro-fs']);
3460
3461 $this->add_control(
3462 'filters_animation_duration',
3463 [
3464 'label' => esc_html__('Animation Duration', 'king-addons'),
3465 'type' => Controls_Manager::NUMBER,
3466 'default' => 0.3,
3467 'min' => 0,
3468 'max' => 5,
3469 'step' => 0.1,
3470 'condition' => [
3471 'filters_animation!' => 'default',
3472 ],
3473 ]
3474 );
3475
3476 $this->add_control(
3477 'filters_animation_delay',
3478 [
3479 'label' => esc_html__('Animation Delay', 'king-addons'),
3480 'type' => Controls_Manager::NUMBER,
3481 'default' => 0.1,
3482 'min' => 0,
3483 'max' => 5,
3484 'step' => 0.05,
3485 'condition' => [
3486 'filters_animation!' => 'default'
3487 ],
3488 ]
3489 );
3490
3491 $this->end_controls_section();
3492
3493
3494 $this->start_controls_section(
3495 'section_grid_pagination',
3496 [
3497 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Pagination', 'king-addons'),
3498 'tab' => Controls_Manager::TAB_CONTENT,
3499 'condition' => [
3500 'layout_select!' => 'slider',
3501 'layout_pagination' => 'yes',
3502 ],
3503 ]
3504 );
3505
3506 $this->add_control_pagination_type();
3507
3508
3509 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'grid', 'pagination_type', ['pro-is', 'pro-nb']);
3510
3511 $this->add_control(
3512 'pagination_older_text',
3513 [
3514 'label' => esc_html__('Older Posts Text', 'king-addons'),
3515 'type' => Controls_Manager::TEXT,
3516 'dynamic' => [
3517 'active' => true,
3518 ],
3519 'default' => 'Older Posts',
3520 'condition' => [
3521 'pagination_type' => 'default',
3522 ],
3523 ]
3524 );
3525
3526 $this->add_control(
3527 'pagination_newer_text',
3528 [
3529 'label' => esc_html__('Newer Posts Text', 'king-addons'),
3530 'type' => Controls_Manager::TEXT,
3531 'dynamic' => [
3532 'active' => true,
3533 ],
3534 'default' => 'Newer Posts',
3535 'condition' => [
3536 'pagination_type' => 'default',
3537 ]
3538 ]
3539 );
3540
3541 $this->add_control(
3542 'pagination_on_icon',
3543 [
3544 'label' => esc_html__('Select Icon', 'king-addons'),
3545 'type' => Controls_Manager::SELECT,
3546 'default' => 'fas fa-angle',
3547 'options' => [
3548 'fas fa-angle' => esc_html__('Angle', 'king-addons'),
3549 'fas fa-angle-double' => esc_html__('Angle Double', 'king-addons'),
3550 'fas fa-arrow' => esc_html__('Arrow', 'king-addons'),
3551 'fas fa-arrow-alt-circle' => esc_html__('Arrow Circle', 'king-addons'),
3552 'far fa-arrow-alt-circle' => esc_html__('Arrow Circle Alt', 'king-addons'),
3553 'fas fa-long-arrow-alt' => esc_html__('Long Arrow', 'king-addons'),
3554 'fas fa-chevron' => esc_html__('Chevron', 'king-addons'),
3555 ],
3556 'condition' => [
3557 'pagination_type' => 'default'
3558 ],
3559 ]
3560 );
3561
3562 $this->add_control(
3563 'pagination_prev_next',
3564 [
3565 'label' => esc_html__('Previous & Next Buttons', 'king-addons'),
3566 'type' => Controls_Manager::SWITCHER,
3567 'default' => 'yes',
3568 'return_value' => 'yes',
3569 'condition' => [
3570 'pagination_type' => 'numbered',
3571 ],
3572 ]
3573 );
3574
3575 $this->add_control(
3576 'pagination_prev_text',
3577 [
3578 'label' => esc_html__('Prev Page Text', 'king-addons'),
3579 'type' => Controls_Manager::TEXT,
3580 'dynamic' => [
3581 'active' => true,
3582 ],
3583 'default' => 'Previous Page',
3584 'condition' => [
3585 'pagination_type' => 'numbered',
3586 'pagination_prev_next' => 'yes',
3587 ],
3588 ]
3589 );
3590
3591 $this->add_control(
3592 'pagination_next_text',
3593 [
3594 'label' => esc_html__('Next Page Text', 'king-addons'),
3595 'type' => Controls_Manager::TEXT,
3596 'dynamic' => [
3597 'active' => true,
3598 ],
3599 'default' => 'Next Page',
3600 'condition' => [
3601 'pagination_type' => 'numbered',
3602 'pagination_prev_next' => 'yes',
3603 ]
3604 ]
3605 );
3606
3607 $this->add_control(
3608 'pagination_pn_icon',
3609 [
3610 'label' => esc_html__('Select Icon', 'king-addons'),
3611 'type' => Controls_Manager::SELECT,
3612 'default' => 'fas fa-angle',
3613 'options' => [
3614 'fas fa-angle' => esc_html__('Angle', 'king-addons'),
3615 'fas fa-angle-double' => esc_html__('Angle Double', 'king-addons'),
3616 'fas fa-arrow' => esc_html__('Arrow', 'king-addons'),
3617 'fas fa-arrow-alt-circle' => esc_html__('Arrow Circle', 'king-addons'),
3618 'far fa-arrow-alt-circle' => esc_html__('Arrow Circle Alt', 'king-addons'),
3619 'fas fa-long-arrow-alt' => esc_html__('Long Arrow', 'king-addons'),
3620 'fas fa-chevron' => esc_html__('Chevron', 'king-addons'),
3621 ],
3622 'condition' => [
3623 'pagination_type' => 'numbered',
3624 'pagination_prev_next' => 'yes'
3625 ],
3626 ]
3627 );
3628
3629 $this->add_control(
3630 'pagination_first_last',
3631 [
3632 'label' => esc_html__('First & Last Buttons', 'king-addons'),
3633 'type' => Controls_Manager::SWITCHER,
3634 'default' => 'yes',
3635 'return_value' => 'yes',
3636 'condition' => [
3637 'pagination_type' => 'numbered',
3638 ],
3639 ]
3640 );
3641
3642 $this->add_control(
3643 'pagination_first_text',
3644 [
3645 'label' => esc_html__('First Page Text', 'king-addons'),
3646 'type' => Controls_Manager::TEXT,
3647 'dynamic' => [
3648 'active' => true,
3649 ],
3650 'default' => 'First Page',
3651 'condition' => [
3652 'pagination_type' => 'numbered',
3653 'pagination_first_last' => 'yes',
3654 ],
3655 ]
3656 );
3657
3658 $this->add_control(
3659 'pagination_last_text',
3660 [
3661 'label' => esc_html__('Last Page Text', 'king-addons'),
3662 'type' => Controls_Manager::TEXT,
3663 'dynamic' => [
3664 'active' => true,
3665 ],
3666 'default' => 'Last Page',
3667 'condition' => [
3668 'pagination_type' => 'numbered',
3669 'pagination_first_last' => 'yes',
3670 ]
3671 ]
3672 );
3673
3674 $this->add_control(
3675 'pagination_fl_icon',
3676 [
3677 'label' => esc_html__('Select Icon', 'king-addons'),
3678 'type' => Controls_Manager::SELECT,
3679 'default' => 'fas fa-angle-double',
3680 'options' => [
3681 'fas fa-angle' => esc_html__('Angle', 'king-addons'),
3682 'fas fa-angle-double' => esc_html__('Angle Double', 'king-addons'),
3683 'fas fa-arrow' => esc_html__('Arrow', 'king-addons'),
3684 'fas fa-arrow-alt-circle' => esc_html__('Arrow Circle', 'king-addons'),
3685 'far fa-arrow-alt-circle' => esc_html__('Arrow Circle Alt', 'king-addons'),
3686 'fas fa-long-arrow-alt' => esc_html__('Long Arrow', 'king-addons'),
3687 'fas fa-chevron' => esc_html__('Chevron', 'king-addons'),
3688 ],
3689 'condition' => [
3690 'pagination_type' => 'numbered',
3691 'pagination_first_last' => 'yes'
3692 ],
3693 ]
3694 );
3695
3696 $this->add_control(
3697 'pagination_disabled_arrows',
3698 [
3699 'label' => esc_html__('Show Disabled Buttons', 'king-addons'),
3700 'type' => Controls_Manager::SWITCHER,
3701 'default' => 'yes',
3702 'return_value' => 'yes',
3703 'condition' => [
3704 'pagination_type' => ['default', 'numbered'],
3705 ],
3706 ]
3707 );
3708
3709 $this->add_control(
3710 'pagination_range',
3711 [
3712 'label' => esc_html__('Range', 'king-addons'),
3713 'type' => Controls_Manager::NUMBER,
3714 'default' => 2,
3715 'min' => 1,
3716 'condition' => [
3717 'pagination_type' => 'numbered',
3718 ]
3719 ]
3720 );
3721
3722 $this->add_control(
3723 'pagination_load_more_text',
3724 [
3725 'label' => esc_html__('Load More Text', 'king-addons'),
3726 'type' => Controls_Manager::TEXT,
3727 'dynamic' => [
3728 'active' => true,
3729 ],
3730 'default' => 'Load More',
3731 'condition' => [
3732 'pagination_type' => 'load-more',
3733 ]
3734 ]
3735 );
3736
3737 $this->add_control(
3738 'pagination_finish_text',
3739 [
3740 'label' => esc_html__('Finish Text', 'king-addons'),
3741 'type' => Controls_Manager::TEXT,
3742 'dynamic' => [
3743 'active' => true,
3744 ],
3745 'default' => 'End of Content.',
3746 'condition' => [
3747 'pagination_type' => ['load-more', 'infinite-scroll'],
3748 ]
3749 ]
3750 );
3751
3752 $this->add_control(
3753 'pagination_animation',
3754 [
3755 'label' => esc_html__('Select Animation', 'king-addons'),
3756 'type' => Controls_Manager::SELECT,
3757 'default' => 'loader-1',
3758 'options' => [
3759 'none' => esc_html__('None', 'king-addons'),
3760 'loader-1' => esc_html__('Loader 1', 'king-addons'),
3761 'loader-2' => esc_html__('Loader 2', 'king-addons'),
3762 'loader-3' => esc_html__('Loader 3', 'king-addons'),
3763 'loader-4' => esc_html__('Loader 4', 'king-addons'),
3764 'loader-5' => esc_html__('Loader 5', 'king-addons'),
3765 'loader-6' => esc_html__('Loader 6', 'king-addons'),
3766 ],
3767 'condition' => [
3768 'pagination_type' => ['load-more', 'infinite-scroll'],
3769 ]
3770 ]
3771 );
3772
3773 $this->add_control(
3774 'pagination_align',
3775 [
3776 'label' => esc_html__('Alignment', 'king-addons'),
3777 'type' => Controls_Manager::CHOOSE,
3778 'options' => [
3779 'left' => [
3780 'title' => esc_html__('Left', 'king-addons'),
3781 'icon' => 'eicon-text-align-left',
3782 ],
3783 'center' => [
3784 'title' => esc_html__('Center', 'king-addons'),
3785 'icon' => 'eicon-text-align-center',
3786 ],
3787 'right' => [
3788 'title' => esc_html__('Right', 'king-addons'),
3789 'icon' => 'eicon-text-align-right',
3790 ],
3791 'justify' => [
3792 'title' => esc_html__('Justified', 'king-addons'),
3793 'icon' => 'eicon-text-align-justify',
3794 ],
3795 ],
3796 'default' => 'center',
3797 'prefix_class' => 'king-addons-grid-pagination-',
3798 'render_type' => 'template',
3799 'separator' => 'before',
3800 'condition' => [
3801 'pagination_type!' => 'infinite-scroll',
3802 ]
3803 ]
3804 );
3805
3806 $this->end_controls_section();
3807
3808 Core::renderProFeaturesSection($this, '', Controls_Manager::RAW_HTML, 'grid', [
3809 'Grid Columns 1, 2, 3, 4, 5, 6',
3810 'Masonry Layout',
3811 'Posts Slider Columns (Carousel) 1, 2, 3, 4, 5, 6',
3812 'Post Slider Autoplay Options',
3813 'Infinite Scrolling Pagination',
3814 'Related Posts Query, Current Page Query, Random Posts Query',
3815 'Custom Post Types Support',
3816 'Custom Fields Support',
3817 'Trim Title & Excerpt By Letter Count',
3818 'Posts Order',
3819 'Display Scheduled Posts',
3820 'Post Slider Advanced Navigation Positioning',
3821 'Post Slider Advanced Pagination Positioning',
3822 'Grid Category Filter Deep Linking',
3823 'Grid Category Filter Icons Select',
3824 'Grid Category Filter Count',
3825 'Grid Item Even/Odd Background Color',
3826 'Lightbox Thumbnail Gallery, Lightbox Image Sharing Button',
3827 'Open Links in New Tab',
3828 'Lazy Loading',
3829 'Advanced Grid Loading Animations (Fade In & Slide Up)',
3830 'Advanced Grid Elements Positioning',
3831 'Title, Category, Read More Advanced Link Hover Animations',
3832 'Advanced Post Likes',
3833 'Advanced Post Sharing',
3834 'Unlimited Image Overlay Animations',
3835 'Image Overlay GIF Upload Option',
3836 'Image Overlay Blend Mode',
3837 'Image Effects: Zoom, Grayscale, Blur',
3838 'List Layout Zig-zag',
3839 'Secondary Featured Image'
3840 ]);
3841
3842 $this->start_controls_section(
3843 'section_style_grid_item',
3844 [
3845 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Grid Item', 'king-addons'),
3846 'tab' => Controls_Manager::TAB_STYLE,
3847 'show_label' => false,
3848 ]
3849 );
3850
3851 $this->add_control(
3852 'grid_item_styles_selector',
3853 [
3854 'label' => esc_html__('Apply Styles To', 'king-addons'),
3855 'type' => Controls_Manager::SELECT,
3856 'options' => [
3857 'inner' => esc_html__('Inner Elements', 'king-addons'),
3858 'wrapper' => esc_html__('Wrapper', 'king-addons')
3859 ],
3860 'default' => 'inner',
3861 'prefix_class' => 'king-addons-item-styles-',
3862 'render_type' => 'template'
3863 ]
3864 );
3865
3866 $this->add_control(
3867 'grid_item_bg_color',
3868 [
3869 'label' => esc_html__('Background Color', 'king-addons'),
3870 'type' => Controls_Manager::COLOR,
3871 'default' => '',
3872 'selectors' => [
3873 '{{WRAPPER}} .king-addons-grid-item-above-content' => 'background-color: {{VALUE}}',
3874 '{{WRAPPER}} .king-addons-grid-item-below-content' => 'background-color: {{VALUE}}',
3875 '{{WRAPPER}} .king-addons-grid[data-settings*="fitRows"] .king-addons-grid-item' => 'background-color: {{VALUE}}',
3876 '{{WRAPPER}}.king-addons-item-styles-wrapper .king-addons-grid-item' => 'background-color: {{VALUE}}'
3877 ],
3878 ]
3879 );
3880
3881 $this->add_control_grid_item_even_bg_color();
3882
3883 $this->add_control(
3884 'grid_item_border_color',
3885 [
3886 'label' => esc_html__('Border Color', 'king-addons'),
3887 'type' => Controls_Manager::COLOR,
3888 'default' => '#E8E8E8',
3889 'selectors' => [
3890 '{{WRAPPER}}.king-addons-item-styles-inner .king-addons-grid-item-above-content' => 'border-color: {{VALUE}}',
3891 '{{WRAPPER}}.king-addons-item-styles-inner .king-addons-grid-item-below-content' => 'border-color: {{VALUE}}',
3892 '{{WRAPPER}}.king-addons-item-styles-wrapper .king-addons-grid-item' => 'border-color: {{VALUE}}'
3893 ],
3894 ]
3895 );
3896
3897 $this->add_control_grid_item_even_border_color();
3898
3899 $this->add_control(
3900 'grid_item_border_type',
3901 [
3902 'label' => esc_html__('Border Type', 'king-addons'),
3903 'type' => Controls_Manager::SELECT,
3904 'options' => [
3905 'none' => esc_html__('None', 'king-addons'),
3906 'solid' => esc_html__('Solid', 'king-addons'),
3907 'double' => esc_html__('Double', 'king-addons'),
3908 'dotted' => esc_html__('Dotted', 'king-addons'),
3909 'dashed' => esc_html__('Dashed', 'king-addons'),
3910 'groove' => esc_html__('Groove', 'king-addons'),
3911 ],
3912 'default' => 'none',
3913 'selectors' => [
3914 '{{WRAPPER}}.king-addons-item-styles-inner .king-addons-grid-item-above-content' => 'border-style: {{VALUE}};',
3915 '{{WRAPPER}}.king-addons-item-styles-inner .king-addons-grid-item-below-content' => 'border-style: {{VALUE}};',
3916 '{{WRAPPER}}.king-addons-item-styles-wrapper .king-addons-grid-item' => 'border-style: {{VALUE}}'
3917 ],
3918 'separator' => 'before',
3919 ]
3920 );
3921
3922 $this->add_control(
3923 'grid_item_border_width',
3924 [
3925 'label' => esc_html__('Border Width', 'king-addons'),
3926 'type' => Controls_Manager::DIMENSIONS,
3927 'size_units' => ['px'],
3928 'default' => [
3929 'top' => 1,
3930 'right' => 1,
3931 'bottom' => 1,
3932 'left' => 1,
3933 ],
3934 'selectors' => [
3935 '{{WRAPPER}}.king-addons-item-styles-inner .king-addons-grid-item-above-content' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3936 '{{WRAPPER}}.king-addons-item-styles-inner .king-addons-grid-item-below-content' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3937 '{{WRAPPER}}.king-addons-item-styles-wrapper .king-addons-grid-item' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};'
3938 ],
3939 'condition' => [
3940 'grid_item_border_type!' => 'none',
3941 ],
3942 'render_type' => 'template'
3943 ]
3944 );
3945
3946 $this->add_responsive_control(
3947 'grid_item_padding',
3948 [
3949 'label' => esc_html__('Padding', 'king-addons'),
3950 'type' => Controls_Manager::DIMENSIONS,
3951 'size_units' => ['px'],
3952 'default' => [
3953 'top' => 10,
3954 'right' => 0,
3955 'bottom' => 0,
3956 'left' => 0,
3957 ],
3958 'selectors' => [
3959 '{{WRAPPER}} .king-addons-grid-item-above-content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3960 '{{WRAPPER}} .king-addons-grid-item-below-content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3961 '{{WRAPPER}}.king-addons-item-styles-wrapper .king-addons-grid-item' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};'
3962 ],
3963 'condition' => [
3964 'grid_item_styles_selector' => 'inner'
3965 ],
3966 'render_type' => 'template'
3967 ]
3968 );
3969
3970
3971 $this->add_responsive_control(
3972 'grid_item_wrap_padding',
3973 [
3974 'label' => esc_html__('Padding', 'king-addons'),
3975 'type' => Controls_Manager::DIMENSIONS,
3976 'size_units' => ['px'],
3977 'default' => [
3978 'top' => 10,
3979 'right' => 0,
3980 'bottom' => 0,
3981 'left' => 0,
3982 ],
3983 'selectors' => [
3984 '{{WRAPPER}}.king-addons-item-styles-wrapper .king-addons-grid-item' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};'
3985 ],
3986 'condition' => [
3987 'grid_item_styles_selector' => 'wrapper'
3988 ],
3989 'render_type' => 'template'
3990 ]
3991 );
3992
3993 $this->add_control(
3994 'grid_item_radius',
3995 [
3996 'label' => esc_html__('Border Radius', 'king-addons'),
3997 'type' => Controls_Manager::DIMENSIONS,
3998 'size_units' => ['px', '%'],
3999 'default' => [
4000 'top' => 0,
4001 'right' => 0,
4002 'bottom' => 0,
4003 'left' => 0,
4004 ],
4005 'selectors' => [
4006 '{{WRAPPER}} .king-addons-grid-item' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4007 '{{WRAPPER}} .king-addons-grid-item-above-content' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4008 '{{WRAPPER}} .king-addons-grid-item-below-content' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4009 ],
4010 'separator' => 'before',
4011 ]
4012 );
4013
4014 $this->add_group_control(
4015 Group_Control_Box_Shadow::get_type(),
4016 [
4017 'name' => 'grid_item_shadow',
4018 'selector' => '{{WRAPPER}} .king-addons-grid-item',
4019 ]
4020 );
4021
4022 $this->end_controls_section();
4023
4024
4025 $this->start_controls_section(
4026 'section_style_grid_media',
4027 [
4028 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Grid Media', 'king-addons'),
4029 'tab' => Controls_Manager::TAB_STYLE,
4030 'show_label' => false,
4031 ]
4032 );
4033
4034 $this->add_control(
4035 'grid_media_border_color',
4036 [
4037 'label' => esc_html__('Border Color', 'king-addons'),
4038 'type' => Controls_Manager::COLOR,
4039 'default' => '#E8E8E8',
4040 'selectors' => [
4041 '{{WRAPPER}} .king-addons-grid-image-wrap' => 'border-color: {{VALUE}}',
4042 ]
4043 ]
4044 );
4045
4046 $this->add_control(
4047 'grid_media_border_type',
4048 [
4049 'label' => esc_html__('Border Type', 'king-addons'),
4050 'type' => Controls_Manager::SELECT,
4051 'options' => [
4052 'none' => esc_html__('None', 'king-addons'),
4053 'solid' => esc_html__('Solid', 'king-addons'),
4054 'double' => esc_html__('Double', 'king-addons'),
4055 'dotted' => esc_html__('Dotted', 'king-addons'),
4056 'dashed' => esc_html__('Dashed', 'king-addons'),
4057 'groove' => esc_html__('Groove', 'king-addons'),
4058 ],
4059 'default' => 'none',
4060 'selectors' => [
4061 '{{WRAPPER}} .king-addons-grid-image-wrap' => 'border-style: {{VALUE}};',
4062 ]
4063 ]
4064 );
4065
4066 $this->add_control(
4067 'grid_media_border_width',
4068 [
4069 'label' => esc_html__('Border Width', 'king-addons'),
4070 'type' => Controls_Manager::DIMENSIONS,
4071 'size_units' => ['px'],
4072 'default' => [
4073 'top' => 1,
4074 'right' => 1,
4075 'bottom' => 1,
4076 'left' => 1,
4077 ],
4078 'selectors' => [
4079 '{{WRAPPER}} .king-addons-grid-image-wrap' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4080 ],
4081 'condition' => [
4082 'grid_media_border_type!' => 'none',
4083 ],
4084 ]
4085 );
4086
4087 $this->add_control(
4088 'grid_media_radius',
4089 [
4090 'label' => esc_html__('Border Radius', 'king-addons'),
4091 'type' => Controls_Manager::DIMENSIONS,
4092 'size_units' => ['px', '%'],
4093 'default' => [
4094 'top' => 0,
4095 'right' => 0,
4096 'bottom' => 0,
4097 'left' => 0,
4098 ],
4099 'selectors' => [
4100 '{{WRAPPER}} .king-addons-grid-image-wrap' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4101 ],
4102 'separator' => 'before',
4103 ]
4104 );
4105
4106 $this->end_controls_section();
4107
4108
4109 $this->start_controls_section(
4110 'section_style_overlay',
4111 [
4112 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Media Overlay', 'king-addons'),
4113 'tab' => Controls_Manager::TAB_STYLE,
4114 'show_label' => false,
4115 ]
4116 );
4117
4118 $this->add_control_overlay_color();
4119
4120 $this->add_control_overlay_blend_mode();
4121
4122 $this->add_control_overlay_border_color();
4123
4124 $this->add_control_overlay_border_type();
4125
4126 $this->add_control_overlay_border_width();
4127
4128 $this->add_control(
4129 'overlay_radius',
4130 [
4131 'label' => esc_html__('Border Radius', 'king-addons'),
4132 'type' => Controls_Manager::DIMENSIONS,
4133 'size_units' => ['px', '%'],
4134 'default' => [
4135 'top' => 0,
4136 'right' => 0,
4137 'bottom' => 0,
4138 'left' => 0,
4139 ],
4140 'selectors' => [
4141 '{{WRAPPER}} .king-addons-grid-media-hover-bg' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4142 ],
4143 'separator' => 'before',
4144 ]
4145 );
4146
4147 $this->end_controls_section();
4148
4149
4150 $this->start_controls_section(
4151 'section_style_title',
4152 [
4153 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Title', 'king-addons'),
4154 'tab' => Controls_Manager::TAB_STYLE,
4155 'show_label' => false,
4156 ]
4157 );
4158
4159 $this->start_controls_tabs('tabs_grid_title_style');
4160
4161 $this->start_controls_tab(
4162 'tab_grid_title_normal',
4163 [
4164 'label' => esc_html__('Normal', 'king-addons'),
4165 ]
4166 );
4167
4168 $this->add_control(
4169 'title_color',
4170 [
4171 'label' => esc_html__('Color', 'king-addons'),
4172 'type' => Controls_Manager::COLOR,
4173 'default' => '#333333',
4174 'selectors' => [
4175 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'color: {{VALUE}}',
4176 ],
4177 ]
4178 );
4179
4180 $this->add_control(
4181 'title_bg_color',
4182 [
4183 'label' => esc_html__('Background Color', 'king-addons'),
4184 'type' => Controls_Manager::COLOR,
4185 'selectors' => [
4186 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'background-color: {{VALUE}}',
4187 ]
4188 ]
4189 );
4190
4191 $this->add_control(
4192 'title_border_color',
4193 [
4194 'label' => esc_html__('Border Color', 'king-addons'),
4195 'type' => Controls_Manager::COLOR,
4196 'default' => '#E8E8E8',
4197 'selectors' => [
4198 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'border-color: {{VALUE}}',
4199 ],
4200 'separator' => 'after',
4201 ]
4202 );
4203
4204 $this->end_controls_tab();
4205
4206 $this->start_controls_tab(
4207 'tab_grid_title_hover',
4208 [
4209 'label' => esc_html__('Hover', 'king-addons'),
4210 ]
4211 );
4212
4213 $this->add_control(
4214 'title_color_hr',
4215 [
4216 'label' => esc_html__('Color', 'king-addons'),
4217 'type' => Controls_Manager::COLOR,
4218 'default' => '#54595f',
4219 'selectors' => [
4220 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a:hover' => 'color: {{VALUE}}',
4221 ],
4222 ]
4223 );
4224
4225 $this->add_control(
4226 'title_bg_color_hr',
4227 [
4228 'label' => esc_html__('Background Color', 'king-addons'),
4229 'type' => Controls_Manager::COLOR,
4230 'selectors' => [
4231 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a:hover' => 'background-color: {{VALUE}}',
4232 ]
4233 ]
4234 );
4235
4236 $this->add_control(
4237 'title_border_color_hr',
4238 [
4239 'label' => esc_html__('Border Color', 'king-addons'),
4240 'type' => Controls_Manager::COLOR,
4241 'default' => '#E8E8E8',
4242 'selectors' => [
4243 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a:hover' => 'border-color: {{VALUE}}',
4244 ],
4245 ]
4246 );
4247
4248 $this->add_control_title_pointer_color_hr();
4249
4250 $this->end_controls_tab();
4251
4252 $this->end_controls_tabs();
4253
4254 $this->add_control_title_pointer();
4255
4256 $this->add_control_title_pointer_height();
4257
4258 $this->add_control_title_pointer_animation();
4259
4260 $this->add_control(
4261 'title_transition_duration',
4262 [
4263 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
4264 'type' => Controls_Manager::NUMBER,
4265 'default' => 0.2,
4266 'min' => 0,
4267 'max' => 5,
4268 'step' => 0.1,
4269 'selectors' => [
4270 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'transition-duration: {{VALUE}}s',
4271 '{{WRAPPER}} .king-addons-grid-item-title .king-addons-pointer-item:before' => 'transition-duration: {{VALUE}}s',
4272 '{{WRAPPER}} .king-addons-grid-item-title .king-addons-pointer-item:after' => 'transition-duration: {{VALUE}}s',
4273 ],
4274 'separator' => 'after',
4275 ]
4276 );
4277
4278 $this->add_group_control(
4279 Group_Control_Typography::get_type(),
4280 [
4281 'name' => 'title_typography',
4282 'selector' => '{{WRAPPER}} .king-addons-grid-item-title a'
4283 ]
4284 );
4285
4286 $this->add_control(
4287 'title_border_type',
4288 [
4289 'label' => esc_html__('Border Type', 'king-addons'),
4290 'type' => Controls_Manager::SELECT,
4291 'options' => [
4292 'none' => esc_html__('None', 'king-addons'),
4293 'solid' => esc_html__('Solid', 'king-addons'),
4294 'double' => esc_html__('Double', 'king-addons'),
4295 'dotted' => esc_html__('Dotted', 'king-addons'),
4296 'dashed' => esc_html__('Dashed', 'king-addons'),
4297 'groove' => esc_html__('Groove', 'king-addons'),
4298 ],
4299 'default' => 'none',
4300 'selectors' => [
4301 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'border-style: {{VALUE}};',
4302 ],
4303 'render_type' => 'template',
4304 'separator' => 'before',
4305 ]
4306 );
4307
4308 $this->add_control(
4309 'title_border_width',
4310 [
4311 'label' => esc_html__('Border Width', 'king-addons'),
4312 'type' => Controls_Manager::DIMENSIONS,
4313 'size_units' => ['px'],
4314 'default' => [
4315 'top' => 1,
4316 'right' => 1,
4317 'bottom' => 1,
4318 'left' => 1,
4319 ],
4320 'selectors' => [
4321 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4322 ],
4323 'render_type' => 'template',
4324 'condition' => [
4325 'title_border_type!' => 'none',
4326 ],
4327 ]
4328 );
4329
4330 $this->add_responsive_control(
4331 'title_padding',
4332 [
4333 'label' => esc_html__('Padding', 'king-addons'),
4334 'type' => Controls_Manager::DIMENSIONS,
4335 'size_units' => ['px', '%'],
4336 'default' => [
4337 'top' => 0,
4338 'right' => 0,
4339 'bottom' => 0,
4340 'left' => 0,
4341 ],
4342 'selectors' => [
4343 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4344 ],
4345 'render_type' => 'template',
4346 'separator' => 'before',
4347 ]
4348 );
4349
4350 $this->add_responsive_control(
4351 'title_margin',
4352 [
4353 'label' => esc_html__('Margin', 'king-addons'),
4354 'type' => Controls_Manager::DIMENSIONS,
4355 'size_units' => ['px', '%'],
4356 'default' => [
4357 'top' => 0,
4358 'right' => 0,
4359 'bottom' => 0,
4360 'left' => 0,
4361 ],
4362 'selectors' => [
4363 '{{WRAPPER}} .king-addons-grid-item-title .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4364 ],
4365 'render_type' => 'template',
4366 ]
4367 );
4368
4369 $this->end_controls_section();
4370
4371
4372 $this->start_controls_section(
4373 'section_style_content',
4374 [
4375 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Content', 'king-addons'),
4376 'tab' => Controls_Manager::TAB_STYLE,
4377 'show_label' => false,
4378 ]
4379 );
4380
4381 $this->add_control(
4382 'content_color',
4383 [
4384 'label' => esc_html__('Color', 'king-addons'),
4385 'type' => Controls_Manager::COLOR,
4386 'default' => '#6A6A6A',
4387 'selectors' => [
4388 '{{WRAPPER}} .king-addons-grid-item-content .inner-block' => 'color: {{VALUE}}',
4389 ],
4390 ]
4391 );
4392
4393 $this->add_control(
4394 'content_dropcap_color',
4395 [
4396 'label' => esc_html__('DropCap Color', 'king-addons'),
4397 'type' => Controls_Manager::COLOR,
4398 'default' => '#3a3a3a',
4399 'selectors' => [
4400 '{{WRAPPER}} .king-addons-grid-item-content.king-addons-enable-dropcap p:first-child:first-letter' => 'color: {{VALUE}}',
4401 ],
4402 ]
4403 );
4404
4405 $this->add_control(
4406 'content_bg_color',
4407 [
4408 'label' => esc_html__('Background Color', 'king-addons'),
4409 'type' => Controls_Manager::COLOR,
4410 'selectors' => [
4411 '{{WRAPPER}} .king-addons-grid-item-content .inner-block' => 'background-color: {{VALUE}}',
4412 ]
4413 ]
4414 );
4415
4416 $this->add_control(
4417 'content_border_color',
4418 [
4419 'label' => esc_html__('Border Color', 'king-addons'),
4420 'type' => Controls_Manager::COLOR,
4421 'default' => '#E8E8E8',
4422 'selectors' => [
4423 '{{WRAPPER}} .king-addons-grid-item-content .inner-block' => 'border-color: {{VALUE}}',
4424 ],
4425 'separator' => 'after',
4426 ]
4427 );
4428
4429 $this->add_group_control(
4430 Group_Control_Typography::get_type(),
4431 [
4432 'name' => 'content_typography',
4433 'selector' => '{{WRAPPER}} .king-addons-grid-item-content'
4434 ]
4435 );
4436
4437 $this->add_group_control(
4438 Group_Control_Typography::get_type(),
4439 [
4440 'name' => 'content_dropcap_typography',
4441 'label' => esc_html__('Drop Cap Typography', 'king-addons'),
4442 'selector' => '{{WRAPPER}} .king-addons-grid-item-content.king-addons-enable-dropcap p:first-child:first-letter'
4443 ]
4444 );
4445
4446 $this->add_responsive_control(
4447 'content_justify',
4448 [
4449 'label' => esc_html__('Justify Text', 'king-addons'),
4450 'type' => Controls_Manager::SWITCHER,
4451 'default' => '',
4452 'widescreen_default' => '',
4453 'laptop_default' => '',
4454 'tablet_extra_default' => '',
4455 'tablet_default' => '',
4456 'mobile_extra_default' => '',
4457 'mobile_default' => '',
4458 'selectors_dictionary' => [
4459 '' => '',
4460 'yes' => 'text-align: justify;'
4461 ],
4462 'selectors' => [
4463 '{{WRAPPER}} .king-addons-grid-item-content .inner-block' => '{{VALUE}}',
4464 ],
4465 'render_type' => 'template',
4466 ]
4467 );
4468
4469 $this->add_control(
4470 'content_width',
4471 [
4472 'label' => esc_html__('Content Width', 'king-addons'),
4473 'type' => Controls_Manager::SLIDER,
4474 'size_units' => ['%'],
4475 'range' => [
4476 '%' => [
4477 'min' => 10,
4478 'max' => 100,
4479 ],
4480 ],
4481 'default' => [
4482 'unit' => '%',
4483 'size' => 100,
4484 ],
4485 'selectors' => [
4486 '{{WRAPPER}} .king-addons-grid-item-content .inner-block' => 'width: {{SIZE}}{{UNIT}};',
4487 ],
4488 'separator' => 'before',
4489 ]
4490 );
4491
4492 $this->add_control(
4493 'content_border_type',
4494 [
4495 'label' => esc_html__('Border Type', 'king-addons'),
4496 'type' => Controls_Manager::SELECT,
4497 'options' => [
4498 'none' => esc_html__('None', 'king-addons'),
4499 'solid' => esc_html__('Solid', 'king-addons'),
4500 'double' => esc_html__('Double', 'king-addons'),
4501 'dotted' => esc_html__('Dotted', 'king-addons'),
4502 'dashed' => esc_html__('Dashed', 'king-addons'),
4503 'groove' => esc_html__('Groove', 'king-addons'),
4504 ],
4505 'default' => 'none',
4506 'selectors' => [
4507 '{{WRAPPER}} .king-addons-grid-item-content .inner-block' => 'border-style: {{VALUE}};',
4508 ],
4509 'render_type' => 'template',
4510 'separator' => 'before',
4511 ]
4512 );
4513
4514 $this->add_control(
4515 'content_border_width',
4516 [
4517 'label' => esc_html__('Border Width', 'king-addons'),
4518 'type' => Controls_Manager::DIMENSIONS,
4519 'size_units' => ['px'],
4520 'default' => [
4521 'top' => 1,
4522 'right' => 1,
4523 'bottom' => 1,
4524 'left' => 1,
4525 ],
4526 'selectors' => [
4527 '{{WRAPPER}} .king-addons-grid-item-content .inner-block' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4528 ],
4529 'render_type' => 'template',
4530 'condition' => [
4531 'content_border_type!' => 'none',
4532 ],
4533 ]
4534 );
4535
4536 $this->add_responsive_control(
4537 'content_padding',
4538 [
4539 'label' => esc_html__('Padding', 'king-addons'),
4540 'type' => Controls_Manager::DIMENSIONS,
4541 'size_units' => ['px', '%'],
4542 'default' => [
4543 'top' => 0,
4544 'right' => 0,
4545 'bottom' => 0,
4546 'left' => 0,
4547 ],
4548 'selectors' => [
4549 '{{WRAPPER}} .king-addons-grid-item-content .inner-block' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4550 ],
4551 'render_type' => 'template',
4552 'separator' => 'before',
4553 ]
4554 );
4555
4556 $this->add_responsive_control(
4557 'content_margin',
4558 [
4559 'label' => esc_html__('Margin', 'king-addons'),
4560 'type' => Controls_Manager::DIMENSIONS,
4561 'size_units' => ['px', '%'],
4562 'default' => [
4563 'top' => 0,
4564 'right' => 0,
4565 'bottom' => 0,
4566 'left' => 0,
4567 ],
4568 'render_type' => 'template',
4569 'selectors' => [
4570 '{{WRAPPER}} .king-addons-grid-item-content .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4571 ],
4572 ]
4573 );
4574
4575 $this->end_controls_section();
4576
4577
4578 $this->start_controls_section(
4579 'section_style_excerpt',
4580 [
4581 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Excerpt', 'king-addons'),
4582 'tab' => Controls_Manager::TAB_STYLE,
4583 'show_label' => false,
4584 ]
4585 );
4586
4587 $this->add_control(
4588 'excerpt_color',
4589 [
4590 'label' => esc_html__('Color', 'king-addons'),
4591 'type' => Controls_Manager::COLOR,
4592 'default' => '#6A6A6A',
4593 'selectors' => [
4594 '{{WRAPPER}} .king-addons-grid-item-excerpt .inner-block' => 'color: {{VALUE}}',
4595 ],
4596 ]
4597 );
4598
4599 $this->add_control(
4600 'excerpt_dropcap_color',
4601 [
4602 'label' => esc_html__('DropCap Color', 'king-addons'),
4603 'type' => Controls_Manager::COLOR,
4604 'default' => '#3a3a3a',
4605 'selectors' => [
4606 '{{WRAPPER}} .king-addons-grid-item-excerpt.king-addons-enable-dropcap p:first-child:first-letter' => 'color: {{VALUE}}',
4607 ],
4608 ]
4609 );
4610
4611 $this->add_control(
4612 'excerpt_bg_color',
4613 [
4614 'label' => esc_html__('Background Color', 'king-addons'),
4615 'type' => Controls_Manager::COLOR,
4616 'selectors' => [
4617 '{{WRAPPER}} .king-addons-grid-item-excerpt .inner-block' => 'background-color: {{VALUE}}',
4618 ]
4619 ]
4620 );
4621
4622 $this->add_control(
4623 'excerpt_border_color',
4624 [
4625 'label' => esc_html__('Border Color', 'king-addons'),
4626 'type' => Controls_Manager::COLOR,
4627 'default' => '#E8E8E8',
4628 'selectors' => [
4629 '{{WRAPPER}} .king-addons-grid-item-excerpt .inner-block' => 'border-color: {{VALUE}}',
4630 ],
4631 'separator' => 'after',
4632 ]
4633 );
4634
4635 $this->add_group_control(
4636 Group_Control_Typography::get_type(),
4637 [
4638 'name' => 'excerpt_typography',
4639 'selector' => '{{WRAPPER}} .king-addons-grid-item-excerpt'
4640 ]
4641 );
4642
4643 $this->add_group_control(
4644 Group_Control_Typography::get_type(),
4645 [
4646 'name' => 'excerpt_dropcap_typography',
4647 'label' => esc_html__('Drop Cap Typography', 'king-addons'),
4648 'selector' => '{{WRAPPER}} .king-addons-grid-item-excerpt.king-addons-enable-dropcap p:first-child:first-letter'
4649 ]
4650 );
4651
4652 $this->add_responsive_control(
4653 'excerpt_justify',
4654 [
4655 'label' => esc_html__('Justify Text', 'king-addons'),
4656 'type' => Controls_Manager::SWITCHER,
4657 'default' => '',
4658 'widescreen_default' => '',
4659 'laptop_default' => '',
4660 'tablet_extra_default' => '',
4661 'tablet_default' => '',
4662 'mobile_extra_default' => '',
4663 'mobile_default' => '',
4664 'selectors_dictionary' => [
4665 '' => '',
4666 'yes' => 'text-align: justify;'
4667 ],
4668 'selectors' => [
4669 '{{WRAPPER}} .king-addons-grid-item-excerpt .inner-block' => '{{VALUE}}',
4670 ],
4671 'render_type' => 'template',
4672 ]
4673 );
4674
4675 $this->add_control(
4676 'excerpt_width',
4677 [
4678 'label' => esc_html__('Excerpt Width', 'king-addons'),
4679 'type' => Controls_Manager::SLIDER,
4680 'size_units' => ['%'],
4681 'range' => [
4682 '%' => [
4683 'min' => 10,
4684 'max' => 100,
4685 ],
4686 ],
4687 'default' => [
4688 'unit' => '%',
4689 'size' => 100,
4690 ],
4691 'selectors' => [
4692 '{{WRAPPER}} .king-addons-grid-item-excerpt .inner-block' => 'width: {{SIZE}}{{UNIT}};',
4693 ],
4694 'separator' => 'before',
4695 ]
4696 );
4697
4698 $this->add_control(
4699 'excerpt_border_type',
4700 [
4701 'label' => esc_html__('Border Type', 'king-addons'),
4702 'type' => Controls_Manager::SELECT,
4703 'options' => [
4704 'none' => esc_html__('None', 'king-addons'),
4705 'solid' => esc_html__('Solid', 'king-addons'),
4706 'double' => esc_html__('Double', 'king-addons'),
4707 'dotted' => esc_html__('Dotted', 'king-addons'),
4708 'dashed' => esc_html__('Dashed', 'king-addons'),
4709 'groove' => esc_html__('Groove', 'king-addons'),
4710 ],
4711 'default' => 'none',
4712 'selectors' => [
4713 '{{WRAPPER}} .king-addons-grid-item-excerpt .inner-block' => 'border-style: {{VALUE}};',
4714 ],
4715 'render_type' => 'template',
4716 'separator' => 'before',
4717 ]
4718 );
4719
4720 $this->add_control(
4721 'excerpt_border_width',
4722 [
4723 'label' => esc_html__('Border Width', 'king-addons'),
4724 'type' => Controls_Manager::DIMENSIONS,
4725 'size_units' => ['px'],
4726 'default' => [
4727 'top' => 1,
4728 'right' => 1,
4729 'bottom' => 1,
4730 'left' => 1,
4731 ],
4732 'selectors' => [
4733 '{{WRAPPER}} .king-addons-grid-item-excerpt .inner-block' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4734 ],
4735 'render_type' => 'template',
4736 'condition' => [
4737 'excerpt_border_type!' => 'none',
4738 ],
4739 ]
4740 );
4741
4742 $this->add_responsive_control(
4743 'excerpt_padding',
4744 [
4745 'label' => esc_html__('Padding', 'king-addons'),
4746 'type' => Controls_Manager::DIMENSIONS,
4747 'size_units' => ['px', '%'],
4748 'default' => [
4749 'top' => 0,
4750 'right' => 0,
4751 'bottom' => 0,
4752 'left' => 0,
4753 ],
4754 'selectors' => [
4755 '{{WRAPPER}} .king-addons-grid-item-excerpt .inner-block' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4756 ],
4757 'render_type' => 'template',
4758 'separator' => 'before',
4759 ]
4760 );
4761
4762 $this->add_responsive_control(
4763 'excerpt_margin',
4764 [
4765 'label' => esc_html__('Margin', 'king-addons'),
4766 'type' => Controls_Manager::DIMENSIONS,
4767 'size_units' => ['px', '%'],
4768 'default' => [
4769 'top' => 0,
4770 'right' => 0,
4771 'bottom' => 0,
4772 'left' => 0,
4773 ],
4774 'render_type' => 'template',
4775 'selectors' => [
4776 '{{WRAPPER}} .king-addons-grid-item-excerpt .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4777 ],
4778 ]
4779 );
4780
4781 $this->end_controls_section();
4782
4783
4784 $this->start_controls_section(
4785 'section_style_date',
4786 [
4787 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Date', 'king-addons'),
4788 'tab' => Controls_Manager::TAB_STYLE,
4789 'show_label' => false,
4790 ]
4791 );
4792
4793 $this->add_control(
4794 'date_color',
4795 [
4796 'label' => esc_html__('Color', 'king-addons'),
4797 'type' => Controls_Manager::COLOR,
4798 'default' => '#9C9C9C',
4799 'selectors' => [
4800 '{{WRAPPER}} .king-addons-grid-item-date .inner-block' => 'color: {{VALUE}}',
4801 ],
4802 ]
4803 );
4804
4805 $this->add_control(
4806 'date_bg_color',
4807 [
4808 'label' => esc_html__('Background Color', 'king-addons'),
4809 'type' => Controls_Manager::COLOR,
4810 'selectors' => [
4811 '{{WRAPPER}} .king-addons-grid-item-date .inner-block > span' => 'background-color: {{VALUE}}',
4812 ]
4813 ]
4814 );
4815
4816 $this->add_control(
4817 'date_border_color',
4818 [
4819 'label' => esc_html__('Border Color', 'king-addons'),
4820 'type' => Controls_Manager::COLOR,
4821 'default' => '#E8E8E8',
4822 'selectors' => [
4823 '{{WRAPPER}} .king-addons-grid-item-date .inner-block > span' => 'border-color: {{VALUE}}',
4824 ]
4825 ]
4826 );
4827
4828 $this->add_control(
4829 'date_extra_text_color',
4830 [
4831 'label' => esc_html__('Extra Text Color', 'king-addons'),
4832 'type' => Controls_Manager::COLOR,
4833 'default' => '#9C9C9C',
4834 'selectors' => [
4835 '{{WRAPPER}} .king-addons-grid-item-date .inner-block span[class*="king-addons-grid-extra-text"]' => 'color: {{VALUE}}',
4836 ],
4837 ]
4838 );
4839
4840 $this->add_control(
4841 'date_extra_icon_color',
4842 [
4843 'label' => esc_html__('Extra Icon Color', 'king-addons'),
4844 'type' => Controls_Manager::COLOR,
4845 'default' => '#9C9C9C',
4846 'selectors' => [
4847 '{{WRAPPER}} .king-addons-grid-item-date .inner-block [class*="king-addons-grid-extra-icon"] i' => 'color: {{VALUE}}',
4848 '{{WRAPPER}} .king-addons-grid-item-date .inner-block [class*="king-addons-grid-extra-icon"] svg' => 'fill: {{VALUE}}'
4849 ],
4850 'separator' => 'after',
4851 ]
4852 );
4853
4854 $this->add_group_control(
4855 Group_Control_Typography::get_type(),
4856 [
4857 'name' => 'date_typography',
4858 'selector' => '{{WRAPPER}} .king-addons-grid-item-date, {{WRAPPER}} .king-addons-grid-item-date span'
4859 ]
4860 );
4861
4862 $this->add_control(
4863 'date_border_type',
4864 [
4865 'label' => esc_html__('Border Type', 'king-addons'),
4866 'type' => Controls_Manager::SELECT,
4867 'options' => [
4868 'none' => esc_html__('None', 'king-addons'),
4869 'solid' => esc_html__('Solid', 'king-addons'),
4870 'double' => esc_html__('Double', 'king-addons'),
4871 'dotted' => esc_html__('Dotted', 'king-addons'),
4872 'dashed' => esc_html__('Dashed', 'king-addons'),
4873 'groove' => esc_html__('Groove', 'king-addons'),
4874 ],
4875 'default' => 'none',
4876 'selectors' => [
4877 '{{WRAPPER}} .king-addons-grid-item-date .inner-block > span' => 'border-style: {{VALUE}};',
4878 ],
4879 'render_type' => 'template',
4880 'separator' => 'before',
4881 ]
4882 );
4883
4884 $this->add_control(
4885 'date_border_width',
4886 [
4887 'label' => esc_html__('Border Width', 'king-addons'),
4888 'type' => Controls_Manager::DIMENSIONS,
4889 'size_units' => ['px'],
4890 'default' => [
4891 'top' => 1,
4892 'right' => 1,
4893 'bottom' => 1,
4894 'left' => 1,
4895 ],
4896 'selectors' => [
4897 '{{WRAPPER}} .king-addons-grid-item-date .inner-block > span' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4898 ],
4899 'render_type' => 'template',
4900 'condition' => [
4901 'date_border_type!' => 'none',
4902 ],
4903 ]
4904 );
4905
4906 $this->add_control(
4907 'date_text_spacing',
4908 [
4909 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
4910 'type' => Controls_Manager::SLIDER,
4911 'size_units' => ['px'],
4912 'range' => [
4913 'px' => [
4914 'min' => 0,
4915 'max' => 25,
4916 ],
4917 ],
4918 'default' => [
4919 'unit' => 'px',
4920 'size' => 5,
4921 ],
4922 'selectors' => [
4923 '{{WRAPPER}} .king-addons-grid-item-date .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
4924 '{{WRAPPER}} .king-addons-grid-item-date .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
4925 ],
4926 'separator' => 'before',
4927 ]
4928 );
4929
4930 $this->add_control(
4931 'date_icon_spacing',
4932 [
4933 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
4934 'type' => Controls_Manager::SLIDER,
4935 'size_units' => ['px'],
4936 'range' => [
4937 'px' => [
4938 'min' => 0,
4939 'max' => 25,
4940 ],
4941 ],
4942 'default' => [
4943 'unit' => 'px',
4944 'size' => 5,
4945 ],
4946 'selectors' => [
4947 '{{WRAPPER}} .king-addons-grid-item-date .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
4948 '{{WRAPPER}} .king-addons-grid-item-date .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
4949 ],
4950 ]
4951 );
4952
4953 $this->add_responsive_control(
4954 'date_padding',
4955 [
4956 'label' => esc_html__('Padding', 'king-addons'),
4957 'type' => Controls_Manager::DIMENSIONS,
4958 'size_units' => ['px', '%'],
4959 'default' => [
4960 'top' => 0,
4961 'right' => 0,
4962 'bottom' => 0,
4963 'left' => 0,
4964 ],
4965 'selectors' => [
4966 '{{WRAPPER}} .king-addons-grid-item-date .inner-block > span' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4967 ],
4968 'render_type' => 'template',
4969 'separator' => 'before',
4970 ]
4971 );
4972
4973 $this->add_responsive_control(
4974 'date_margin',
4975 [
4976 'label' => esc_html__('Margin', 'king-addons'),
4977 'type' => Controls_Manager::DIMENSIONS,
4978 'size_units' => ['px', '%'],
4979 'default' => [
4980 'top' => 0,
4981 'right' => 7,
4982 'bottom' => 0,
4983 'left' => 0,
4984 ],
4985 'render_type' => 'template',
4986 'selectors' => [
4987 '{{WRAPPER}} .king-addons-grid-item-date .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4988 ],
4989 ]
4990 );
4991
4992 $this->end_controls_section();
4993
4994
4995 $this->start_controls_section(
4996 'section_style_time',
4997 [
4998 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Time', 'king-addons'),
4999 'tab' => Controls_Manager::TAB_STYLE,
5000 'show_label' => false,
5001 ]
5002 );
5003
5004 $this->add_control(
5005 'time_color',
5006 [
5007 'label' => esc_html__('Color', 'king-addons'),
5008 'type' => Controls_Manager::COLOR,
5009 'default' => '#9C9C9C',
5010 'selectors' => [
5011 '{{WRAPPER}} .king-addons-grid-item-time .inner-block' => 'color: {{VALUE}}',
5012 ],
5013 ]
5014 );
5015
5016 $this->add_control(
5017 'time_bg_color',
5018 [
5019 'label' => esc_html__('Background Color', 'king-addons'),
5020 'type' => Controls_Manager::COLOR,
5021 'selectors' => [
5022 '{{WRAPPER}} .king-addons-grid-item-time .inner-block > span' => 'background-color: {{VALUE}}',
5023 ]
5024 ]
5025 );
5026
5027 $this->add_control(
5028 'time_border_color',
5029 [
5030 'label' => esc_html__('Border Color', 'king-addons'),
5031 'type' => Controls_Manager::COLOR,
5032 'default' => '#E8E8E8',
5033 'selectors' => [
5034 '{{WRAPPER}} .king-addons-grid-item-time .inner-block > span' => 'border-color: {{VALUE}}',
5035 ],
5036 ]
5037 );
5038
5039 $this->add_control(
5040 'time_extra_text_color',
5041 [
5042 'label' => esc_html__('Extra Text Color', 'king-addons'),
5043 'type' => Controls_Manager::COLOR,
5044 'default' => '#9C9C9C',
5045 'selectors' => [
5046 '{{WRAPPER}} .king-addons-grid-item-time .inner-block span[class*="king-addons-grid-extra-text"]' => 'color: {{VALUE}}',
5047 ],
5048 ]
5049 );
5050
5051 $this->add_control(
5052 'time_extra_icon_color',
5053 [
5054 'label' => esc_html__('Extra Icon Color', 'king-addons'),
5055 'type' => Controls_Manager::COLOR,
5056 'default' => '#9C9C9C',
5057 'selectors' => [
5058 '{{WRAPPER}} .king-addons-grid-item-time .inner-block [class*="king-addons-grid-extra-icon"] i' => 'color: {{VALUE}}',
5059 '{{WRAPPER}} .king-addons-grid-item-time .inner-block [class*="king-addons-grid-extra-icon"] svg' => 'fill: {{VALUE}}'
5060 ],
5061 'separator' => 'after',
5062 ]
5063 );
5064
5065 $this->add_group_control(
5066 Group_Control_Typography::get_type(),
5067 [
5068 'name' => 'time_typography',
5069 'selector' => '{{WRAPPER}} .king-addons-grid-item-time'
5070 ]
5071 );
5072
5073 $this->add_control(
5074 'time_border_type',
5075 [
5076 'label' => esc_html__('Border Type', 'king-addons'),
5077 'type' => Controls_Manager::SELECT,
5078 'options' => [
5079 'none' => esc_html__('None', 'king-addons'),
5080 'solid' => esc_html__('Solid', 'king-addons'),
5081 'double' => esc_html__('Double', 'king-addons'),
5082 'dotted' => esc_html__('Dotted', 'king-addons'),
5083 'dashed' => esc_html__('Dashed', 'king-addons'),
5084 'groove' => esc_html__('Groove', 'king-addons'),
5085 ],
5086 'default' => 'none',
5087 'selectors' => [
5088 '{{WRAPPER}} .king-addons-grid-item-time .inner-block > span' => 'border-style: {{VALUE}};',
5089 ],
5090 'render_type' => 'template',
5091 'separator' => 'before',
5092 ]
5093 );
5094
5095 $this->add_control(
5096 'time_border_width',
5097 [
5098 'label' => esc_html__('Border Width', 'king-addons'),
5099 'type' => Controls_Manager::DIMENSIONS,
5100 'size_units' => ['px'],
5101 'default' => [
5102 'top' => 1,
5103 'right' => 1,
5104 'bottom' => 1,
5105 'left' => 1,
5106 ],
5107 'selectors' => [
5108 '{{WRAPPER}} .king-addons-grid-item-time .inner-block > span' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5109 ],
5110 'render_type' => 'template',
5111 'condition' => [
5112 'time_border_type!' => 'none',
5113 ],
5114 ]
5115 );
5116
5117 $this->add_control(
5118 'time_text_spacing',
5119 [
5120 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
5121 'type' => Controls_Manager::SLIDER,
5122 'size_units' => ['px'],
5123 'range' => [
5124 'px' => [
5125 'min' => 0,
5126 'max' => 25,
5127 ],
5128 ],
5129 'default' => [
5130 'unit' => 'px',
5131 'size' => 5,
5132 ],
5133 'selectors' => [
5134 '{{WRAPPER}} .king-addons-grid-item-time .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
5135 '{{WRAPPER}} .king-addons-grid-item-time .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
5136 ],
5137 'separator' => 'before',
5138 ]
5139 );
5140
5141 $this->add_control(
5142 'time_icon_spacing',
5143 [
5144 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
5145 'type' => Controls_Manager::SLIDER,
5146 'size_units' => ['px'],
5147 'range' => [
5148 'px' => [
5149 'min' => 0,
5150 'max' => 25,
5151 ],
5152 ],
5153 'default' => [
5154 'unit' => 'px',
5155 'size' => 5,
5156 ],
5157 'selectors' => [
5158 '{{WRAPPER}} .king-addons-grid-item-time .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
5159 '{{WRAPPER}} .king-addons-grid-item-time .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
5160 ],
5161 ]
5162 );
5163
5164 $this->add_responsive_control(
5165 'time_padding',
5166 [
5167 'label' => esc_html__('Padding', 'king-addons'),
5168 'type' => Controls_Manager::DIMENSIONS,
5169 'size_units' => ['px', '%'],
5170 'default' => [
5171 'top' => 0,
5172 'right' => 0,
5173 'bottom' => 0,
5174 'left' => 0,
5175 ],
5176 'selectors' => [
5177 '{{WRAPPER}} .king-addons-grid-item-time .inner-block > span' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5178 ],
5179 'render_type' => 'template',
5180 'separator' => 'before',
5181 ]
5182 );
5183
5184 $this->add_responsive_control(
5185 'time_margin',
5186 [
5187 'label' => esc_html__('Margin', 'king-addons'),
5188 'type' => Controls_Manager::DIMENSIONS,
5189 'size_units' => ['px', '%'],
5190 'default' => [
5191 'top' => 0,
5192 'right' => 0,
5193 'bottom' => 0,
5194 'left' => 0,
5195 ],
5196 'selectors' => [
5197 '{{WRAPPER}} .king-addons-grid-item-time .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5198 ],
5199 'render_type' => 'template',
5200 ]
5201 );
5202
5203 $this->end_controls_section();
5204
5205
5206 $this->start_controls_section(
5207 'section_style_author',
5208 [
5209 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Author', 'king-addons'),
5210 'tab' => Controls_Manager::TAB_STYLE,
5211 'show_label' => false,
5212 ]
5213 );
5214
5215 $this->start_controls_tabs('tabs_grid_author_style');
5216
5217 $this->start_controls_tab(
5218 'tab_grid_author_normal',
5219 [
5220 'label' => esc_html__('Normal', 'king-addons'),
5221 ]
5222 );
5223
5224 $this->add_control(
5225 'author_color',
5226 [
5227 'label' => esc_html__('Color', 'king-addons'),
5228 'type' => Controls_Manager::COLOR,
5229 'default' => '#9C9C9C',
5230 'selectors' => [
5231 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'color: {{VALUE}}',
5232 ],
5233 ]
5234 );
5235
5236 $this->add_control(
5237 'author_bg_color',
5238 [
5239 'label' => esc_html__('Background Color', 'king-addons'),
5240 'type' => Controls_Manager::COLOR,
5241 'selectors' => [
5242 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'background-color: {{VALUE}}',
5243 ]
5244 ]
5245 );
5246
5247 $this->add_control(
5248 'author_border_color',
5249 [
5250 'label' => esc_html__('Border Color', 'king-addons'),
5251 'type' => Controls_Manager::COLOR,
5252 'default' => '#E8E8E8',
5253 'selectors' => [
5254 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'border-color: {{VALUE}}',
5255 ],
5256 ]
5257 );
5258
5259 $this->add_control(
5260 'author_extra_text_color',
5261 [
5262 'label' => esc_html__('Extra Text Color', 'king-addons'),
5263 'type' => Controls_Manager::COLOR,
5264 'default' => '#9C9C9C',
5265 'selectors' => [
5266 '{{WRAPPER}} .king-addons-grid-item-author .inner-block span[class*="king-addons-grid-extra-text"]' => 'color: {{VALUE}}',
5267 ],
5268 'separator' => 'after',
5269 ]
5270 );
5271
5272 $this->end_controls_tab();
5273
5274 $this->start_controls_tab(
5275 'tab_grid_author_hover',
5276 [
5277 'label' => esc_html__('Hover', 'king-addons'),
5278 ]
5279 );
5280
5281 $this->add_control(
5282 'author_color_hr',
5283 [
5284 'label' => esc_html__('Color', 'king-addons'),
5285 'type' => Controls_Manager::COLOR,
5286 'default' => '#5B03FF',
5287 'selectors' => [
5288 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a:hover' => 'color: {{VALUE}}',
5289 ],
5290 ]
5291 );
5292
5293 $this->add_control(
5294 'author_bg_color_hr',
5295 [
5296 'label' => esc_html__('Background Color', 'king-addons'),
5297 'type' => Controls_Manager::COLOR,
5298 'selectors' => [
5299 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a:hover' => 'background-color: {{VALUE}}',
5300 ]
5301 ]
5302 );
5303
5304 $this->add_control(
5305 'author_border_color_hr',
5306 [
5307 'label' => esc_html__('Border Color', 'king-addons'),
5308 'type' => Controls_Manager::COLOR,
5309 'default' => '#E8E8E8',
5310 'selectors' => [
5311 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a:hover' => 'border-color: {{VALUE}}',
5312 ],
5313 'separator' => 'after',
5314 ]
5315 );
5316
5317 $this->end_controls_tab();
5318
5319 $this->end_controls_tabs();
5320
5321 $this->add_control(
5322 'author_transition_duration',
5323 [
5324 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
5325 'type' => Controls_Manager::NUMBER,
5326 'default' => 0.1,
5327 'min' => 0,
5328 'max' => 5,
5329 'step' => 0.1,
5330 'selectors' => [
5331 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'transition-duration: {{VALUE}}s',
5332 ],
5333 'separator' => 'after',
5334 ]
5335 );
5336
5337 $this->add_group_control(
5338 Group_Control_Typography::get_type(),
5339 [
5340 'name' => 'author_typography',
5341 'selector' => '{{WRAPPER}} .king-addons-grid-item-author, {{WRAPPER}} .king-addons-grid-item-author .inner-block a'
5342 ]
5343 );
5344
5345 $this->add_control(
5346 'author_border_type',
5347 [
5348 'label' => esc_html__('Border Type', 'king-addons'),
5349 'type' => Controls_Manager::SELECT,
5350 'options' => [
5351 'none' => esc_html__('None', 'king-addons'),
5352 'solid' => esc_html__('Solid', 'king-addons'),
5353 'double' => esc_html__('Double', 'king-addons'),
5354 'dotted' => esc_html__('Dotted', 'king-addons'),
5355 'dashed' => esc_html__('Dashed', 'king-addons'),
5356 'groove' => esc_html__('Groove', 'king-addons'),
5357 ],
5358 'default' => 'none',
5359 'selectors' => [
5360 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'border-style: {{VALUE}};',
5361 ],
5362 'render_type' => 'template',
5363 'separator' => 'before',
5364 ]
5365 );
5366
5367 $this->add_control(
5368 'author_border_width',
5369 [
5370 'label' => esc_html__('Border Width', 'king-addons'),
5371 'type' => Controls_Manager::DIMENSIONS,
5372 'size_units' => ['px'],
5373 'default' => [
5374 'top' => 1,
5375 'right' => 1,
5376 'bottom' => 1,
5377 'left' => 1,
5378 ],
5379 'selectors' => [
5380 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5381 ],
5382 'render_type' => 'template',
5383 'condition' => [
5384 'author_border_type!' => 'none',
5385 ],
5386 ]
5387 );
5388
5389 $this->add_control(
5390 'author_border_radius',
5391 [
5392 'label' => esc_html__('Border Radius', 'king-addons'),
5393 'type' => Controls_Manager::DIMENSIONS,
5394 'size_units' => ['px'],
5395 'default' => [
5396 'top' => 0,
5397 'right' => 0,
5398 'bottom' => 0,
5399 'left' => 0,
5400 ],
5401 'selectors' => [
5402 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5403 ]
5404 ]
5405 );
5406
5407 $this->add_control(
5408 'author_text_spacing',
5409 [
5410 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
5411 'type' => Controls_Manager::SLIDER,
5412 'size_units' => ['px'],
5413 'range' => [
5414 'px' => [
5415 'min' => 0,
5416 'max' => 25,
5417 ],
5418 ],
5419 'default' => [
5420 'unit' => 'px',
5421 'size' => 5,
5422 ],
5423 'selectors' => [
5424 '{{WRAPPER}} .king-addons-grid-item-author .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
5425 '{{WRAPPER}} .king-addons-grid-item-author .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
5426 ],
5427 'separator' => 'before',
5428 ]
5429 );
5430
5431 $this->add_control(
5432 'author_icon_spacing',
5433 [
5434 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
5435 'type' => Controls_Manager::SLIDER,
5436 'size_units' => ['px'],
5437 'range' => [
5438 'px' => [
5439 'min' => 0,
5440 'max' => 25,
5441 ],
5442 ],
5443 'default' => [
5444 'unit' => 'px',
5445 'size' => 5,
5446 ],
5447 'selectors' => [
5448 '{{WRAPPER}} .king-addons-grid-item-author .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
5449 '{{WRAPPER}} .king-addons-grid-item-author .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
5450 ],
5451 ]
5452 );
5453
5454 $this->add_control(
5455 'author_avatar_spacing',
5456 [
5457 'label' => esc_html__('Avatar Spacing', 'king-addons'),
5458 'type' => Controls_Manager::SLIDER,
5459 'size_units' => ['px'],
5460 'range' => [
5461 'px' => [
5462 'min' => 0,
5463 'max' => 25,
5464 ],
5465 ],
5466 'default' => [
5467 'unit' => 'px',
5468 'size' => 5,
5469 ],
5470 'selectors' => [
5471 '{{WRAPPER}} .king-addons-grid-item-author img' => 'margin-right: {{SIZE}}{{UNIT}};',
5472 ],
5473 ]
5474 );
5475
5476 $this->add_responsive_control(
5477 'author_padding',
5478 [
5479 'label' => esc_html__('Padding', 'king-addons'),
5480 'type' => Controls_Manager::DIMENSIONS,
5481 'size_units' => ['px', '%'],
5482 'default' => [
5483 'top' => 0,
5484 'right' => 0,
5485 'bottom' => 0,
5486 'left' => 0,
5487 ],
5488 'selectors' => [
5489 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5490 ],
5491 'render_type' => 'template',
5492 'separator' => 'before',
5493 ]
5494 );
5495
5496 $this->add_responsive_control(
5497 'author_margin',
5498 [
5499 'label' => esc_html__('Margin', 'king-addons'),
5500 'type' => Controls_Manager::DIMENSIONS,
5501 'size_units' => ['px', '%'],
5502 'default' => [
5503 'top' => 0,
5504 'right' => 0,
5505 'bottom' => 0,
5506 'left' => 0,
5507 ],
5508 'render_type' => 'template',
5509 'selectors' => [
5510 '{{WRAPPER}} .king-addons-grid-item-author .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5511 ],
5512 ]
5513 );
5514
5515 $this->end_controls_section();
5516
5517
5518 $this->start_controls_section(
5519 'section_style_comments',
5520 [
5521 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Comments', 'king-addons'),
5522 'tab' => Controls_Manager::TAB_STYLE,
5523 'show_label' => false,
5524 ]
5525 );
5526
5527 $this->start_controls_tabs('tabs_grid_comments_style');
5528
5529 $this->start_controls_tab(
5530 'tab_grid_comments_normal',
5531 [
5532 'label' => esc_html__('Normal', 'king-addons'),
5533 ]
5534 );
5535
5536 $this->add_control(
5537 'comments_color',
5538 [
5539 'label' => esc_html__('Color', 'king-addons'),
5540 'type' => Controls_Manager::COLOR,
5541 'default' => '#9C9C9C',
5542 'selectors' => [
5543 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a' => 'color: {{VALUE}}',
5544 ],
5545 ]
5546 );
5547
5548 $this->add_control(
5549 'comments_bg_color',
5550 [
5551 'label' => esc_html__('Background Color', 'king-addons'),
5552 'type' => Controls_Manager::COLOR,
5553 'selectors' => [
5554 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a' => 'background-color: {{VALUE}}',
5555 ]
5556 ]
5557 );
5558
5559 $this->add_control(
5560 'comments_border_color',
5561 [
5562 'label' => esc_html__('Border Color', 'king-addons'),
5563 'type' => Controls_Manager::COLOR,
5564 'default' => '#E8E8E8',
5565 'selectors' => [
5566 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a' => 'border-color: {{VALUE}}',
5567 ],
5568 ]
5569 );
5570
5571 $this->add_control(
5572 'comments_extra_text_color',
5573 [
5574 'label' => esc_html__('Extra Text Color', 'king-addons'),
5575 'type' => Controls_Manager::COLOR,
5576 'default' => '#9C9C9C',
5577 'selectors' => [
5578 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block span[class*="king-addons-grid-extra-text"]' => 'color: {{VALUE}}',
5579 ],
5580 'separator' => 'after',
5581 ]
5582 );
5583
5584 $this->end_controls_tab();
5585
5586 $this->start_controls_tab(
5587 'tab_grid_comments_hover',
5588 [
5589 'label' => esc_html__('Hover', 'king-addons'),
5590 ]
5591 );
5592
5593 $this->add_control(
5594 'comments_color_hr',
5595 [
5596 'label' => esc_html__('Color', 'king-addons'),
5597 'type' => Controls_Manager::COLOR,
5598 'default' => '#5B03FF',
5599 'selectors' => [
5600 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a:hover' => 'color: {{VALUE}}',
5601 ],
5602 ]
5603 );
5604
5605 $this->add_control(
5606 'comments_bg_color_hr',
5607 [
5608 'label' => esc_html__('Background Color', 'king-addons'),
5609 'type' => Controls_Manager::COLOR,
5610 'selectors' => [
5611 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a:hover' => 'background-color: {{VALUE}}',
5612 ]
5613 ]
5614 );
5615
5616 $this->add_control(
5617 'comments_border_color_hr',
5618 [
5619 'label' => esc_html__('Border Color', 'king-addons'),
5620 'type' => Controls_Manager::COLOR,
5621 'default' => '#E8E8E8',
5622 'selectors' => [
5623 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a:hover' => 'border-color: {{VALUE}}',
5624 ],
5625 'separator' => 'after',
5626 ]
5627 );
5628
5629 $this->end_controls_tab();
5630
5631 $this->end_controls_tabs();
5632
5633 $this->add_control(
5634 'comments_transition_duration',
5635 [
5636 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
5637 'type' => Controls_Manager::NUMBER,
5638 'default' => 0.1,
5639 'min' => 0,
5640 'max' => 5,
5641 'step' => 0.1,
5642 'selectors' => [
5643 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a' => 'transition-duration: {{VALUE}}s',
5644 ],
5645 'separator' => 'after',
5646 ]
5647 );
5648
5649 $this->add_group_control(
5650 Group_Control_Typography::get_type(),
5651 [
5652 'name' => 'comments_typography',
5653 'selector' => '{{WRAPPER}} .king-addons-grid-item-comments'
5654 ]
5655 );
5656
5657 $this->add_control(
5658 'comments_border_type',
5659 [
5660 'label' => esc_html__('Border Type', 'king-addons'),
5661 'type' => Controls_Manager::SELECT,
5662 'options' => [
5663 'none' => esc_html__('None', 'king-addons'),
5664 'solid' => esc_html__('Solid', 'king-addons'),
5665 'double' => esc_html__('Double', 'king-addons'),
5666 'dotted' => esc_html__('Dotted', 'king-addons'),
5667 'dashed' => esc_html__('Dashed', 'king-addons'),
5668 'groove' => esc_html__('Groove', 'king-addons'),
5669 ],
5670 'default' => 'none',
5671 'selectors' => [
5672 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a' => 'border-style: {{VALUE}};',
5673 ],
5674 'render_type' => 'template',
5675 'separator' => 'before',
5676 ]
5677 );
5678
5679 $this->add_control(
5680 'comments_border_width',
5681 [
5682 'label' => esc_html__('Border Width', 'king-addons'),
5683 'type' => Controls_Manager::DIMENSIONS,
5684 'size_units' => ['px'],
5685 'default' => [
5686 'top' => 1,
5687 'right' => 1,
5688 'bottom' => 1,
5689 'left' => 1,
5690 ],
5691 'selectors' => [
5692 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5693 ],
5694 'render_type' => 'template',
5695 'condition' => [
5696 'comments_border_type!' => 'none',
5697 ],
5698 ]
5699 );
5700
5701 $this->add_control(
5702 'comments_text_spacing',
5703 [
5704 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
5705 'type' => Controls_Manager::SLIDER,
5706 'size_units' => ['px'],
5707 'range' => [
5708 'px' => [
5709 'min' => 0,
5710 'max' => 25,
5711 ],
5712 ],
5713 'default' => [
5714 'unit' => 'px',
5715 'size' => 5,
5716 ],
5717 'selectors' => [
5718 '{{WRAPPER}} .king-addons-grid-item-comments .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
5719 '{{WRAPPER}} .king-addons-grid-item-comments .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
5720 ],
5721 'separator' => 'before'
5722 ]
5723 );
5724
5725 $this->add_control(
5726 'comments_icon_spacing',
5727 [
5728 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
5729 'type' => Controls_Manager::SLIDER,
5730 'size_units' => ['px'],
5731 'range' => [
5732 'px' => [
5733 'min' => 0,
5734 'max' => 25,
5735 ],
5736 ],
5737 'default' => [
5738 'unit' => 'px',
5739 'size' => 5,
5740 ],
5741 'selectors' => [
5742 '{{WRAPPER}} .king-addons-grid-item-comments .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
5743 '{{WRAPPER}} .king-addons-grid-item-comments .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
5744 ],
5745 ]
5746 );
5747
5748 $this->add_responsive_control(
5749 'comments_padding',
5750 [
5751 'label' => esc_html__('Padding', 'king-addons'),
5752 'type' => Controls_Manager::DIMENSIONS,
5753 'size_units' => ['px', '%'],
5754 'default' => [
5755 'top' => 0,
5756 'right' => 0,
5757 'bottom' => 0,
5758 'left' => 0,
5759 ],
5760 'selectors' => [
5761 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5762 ],
5763 'render_type' => 'template',
5764 'separator' => 'before',
5765 ]
5766 );
5767
5768 $this->add_responsive_control(
5769 'comments_margin',
5770 [
5771 'label' => esc_html__('Margin', 'king-addons'),
5772 'type' => Controls_Manager::DIMENSIONS,
5773 'size_units' => ['px', '%'],
5774 'default' => [
5775 'top' => 0,
5776 'right' => 0,
5777 'bottom' => 0,
5778 'left' => 0,
5779 ],
5780 'selectors' => [
5781 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5782 ],
5783 'render_type' => 'template',
5784 ]
5785 );
5786
5787 $this->add_control(
5788 'comments_radius',
5789 [
5790 'label' => esc_html__('Border Radius', 'king-addons'),
5791 'type' => Controls_Manager::DIMENSIONS,
5792 'size_units' => ['px', '%'],
5793 'default' => [
5794 'top' => 2,
5795 'right' => 2,
5796 'bottom' => 2,
5797 'left' => 2,
5798 ],
5799 'selectors' => [
5800 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
5801 ],
5802 'separator' => 'before',
5803 ]
5804 );
5805
5806 $this->end_controls_section();
5807
5808
5809 $this->start_controls_section(
5810 'section_style_read_more',
5811 [
5812 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Read More', 'king-addons'),
5813 'tab' => Controls_Manager::TAB_STYLE,
5814 'show_label' => false,
5815 ]
5816 );
5817
5818 $this->start_controls_tabs('tabs_grid_read_more_style');
5819
5820 $this->start_controls_tab(
5821 'tab_grid_read_more_normal',
5822 [
5823 'label' => esc_html__('Normal', 'king-addons'),
5824 ]
5825 );
5826
5827 $this->add_group_control(
5828 Group_Control_Background::get_type(),
5829 [
5830 'name' => 'read_more_bg_color',
5831 'label' => esc_html__('Background', 'king-addons'),
5832 'types' => ['classic', 'gradient'],
5833 'fields_options' => [
5834 'color' => [
5835 'default' => '#434900',
5836 ],
5837 ],
5838 'selector' => '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a'
5839 ]
5840 );
5841
5842 $this->add_control(
5843 'read_more_color',
5844 [
5845 'label' => esc_html__('Color', 'king-addons'),
5846 'type' => Controls_Manager::COLOR,
5847 'default' => '#5B03FF',
5848 'selectors' => [
5849 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a' => 'color: {{VALUE}}',
5850 ],
5851 ]
5852 );
5853
5854 $this->add_control(
5855 'read_more_border_color',
5856 [
5857 'label' => esc_html__('Border Color', 'king-addons'),
5858 'type' => Controls_Manager::COLOR,
5859 'default' => '#E8E8E8',
5860 'selectors' => [
5861 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a' => 'border-color: {{VALUE}}',
5862 ],
5863 ]
5864 );
5865
5866 $this->add_group_control(
5867 Group_Control_Box_Shadow::get_type(),
5868 [
5869 'name' => 'read_more_box_shadow',
5870 'selector' => '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a',
5871 ]
5872 );
5873
5874 $this->end_controls_tab();
5875
5876 $this->start_controls_tab(
5877 'tab_grid_read_more_hover',
5878 [
5879 'label' => esc_html__('Hover', 'king-addons'),
5880 ]
5881 );
5882
5883 $this->add_group_control(
5884 Group_Control_Background::get_type(),
5885 [
5886 'name' => 'read_more_bg_color_hr',
5887 'label' => esc_html__('Background', 'king-addons'),
5888 'types' => ['classic', 'gradient'],
5889 'fields_options' => [
5890 'color' => [
5891 'default' => '#434900',
5892 ],
5893 ],
5894 'selector' => '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a.king-addons-button-none:hover, {{WRAPPER}} .king-addons-grid-item-read-more .inner-block a:before, {{WRAPPER}} .king-addons-grid-item-read-more .inner-block a:after'
5895 ]
5896 );
5897
5898 $this->add_control(
5899 'read_more_color_hr',
5900 [
5901 'label' => esc_html__('Color', 'king-addons'),
5902 'type' => Controls_Manager::COLOR,
5903 'default' => '#4D02D8',
5904 'selectors' => [
5905 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a:hover' => 'color: {{VALUE}}',
5906 ],
5907 ]
5908 );
5909
5910 $this->add_control(
5911 'read_more_border_color_hr',
5912 [
5913 'label' => esc_html__('Border Color', 'king-addons'),
5914 'type' => Controls_Manager::COLOR,
5915 'default' => '#E8E8E8',
5916 'selectors' => [
5917 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a:hover' => 'border-color: {{VALUE}}',
5918 ]
5919 ]
5920 );
5921
5922 $this->add_group_control(
5923 Group_Control_Box_Shadow::get_type(),
5924 [
5925 'name' => 'read_more_box_shadow_hr',
5926 'selector' => '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block :hover a',
5927 ]
5928 );
5929
5930 $this->end_controls_tab();
5931
5932 $this->end_controls_tabs();
5933
5934 $this->add_control(
5935 'read_more_divider',
5936 [
5937 'type' => Controls_Manager::DIVIDER,
5938 'style' => 'thick',
5939 ]
5940 );
5941
5942 $this->add_control_read_more_animation();
5943
5944 $this->add_control(
5945 'read_more_transition_duration',
5946 [
5947 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
5948 'type' => Controls_Manager::NUMBER,
5949 'default' => 0.1,
5950 'min' => 0,
5951 'max' => 5,
5952 'step' => 0.1,
5953 'selectors' => [
5954 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a' => 'transition-duration: {{VALUE}}s',
5955 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a:before' => 'transition-duration: {{VALUE}}s',
5956 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a:after' => 'transition-duration: {{VALUE}}s',
5957 ],
5958 ]
5959 );
5960
5961 $this->add_control_read_more_animation_height();
5962
5963 $this->add_control(
5964 'read_more_typo_divider',
5965 [
5966 'type' => Controls_Manager::DIVIDER,
5967 'style' => 'thick',
5968 ]
5969 );
5970
5971 $this->add_group_control(
5972 Group_Control_Typography::get_type(),
5973 [
5974 'name' => 'read_more_typography',
5975 'selector' => '{{WRAPPER}} .king-addons-grid-item-read-more a'
5976 ]
5977 );
5978
5979 $this->add_control(
5980 'read_more_border_type',
5981 [
5982 'label' => esc_html__('Border Type', 'king-addons'),
5983 'type' => Controls_Manager::SELECT,
5984 'options' => [
5985 'none' => esc_html__('None', 'king-addons'),
5986 'solid' => esc_html__('Solid', 'king-addons'),
5987 'double' => esc_html__('Double', 'king-addons'),
5988 'dotted' => esc_html__('Dotted', 'king-addons'),
5989 'dashed' => esc_html__('Dashed', 'king-addons'),
5990 'groove' => esc_html__('Groove', 'king-addons'),
5991 ],
5992 'default' => 'none',
5993 'selectors' => [
5994 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a' => 'border-style: {{VALUE}};',
5995 ],
5996 'render_type' => 'template',
5997 'separator' => 'before',
5998 ]
5999 );
6000
6001 $this->add_control(
6002 'read_more_border_width',
6003 [
6004 'label' => esc_html__('Border Width', 'king-addons'),
6005 'type' => Controls_Manager::DIMENSIONS,
6006 'size_units' => ['px'],
6007 'default' => [
6008 'top' => 1,
6009 'right' => 1,
6010 'bottom' => 1,
6011 'left' => 1,
6012 ],
6013 'selectors' => [
6014 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6015 ],
6016 'render_type' => 'template',
6017 'condition' => [
6018 'read_more_border_type!' => 'none',
6019 ],
6020 ]
6021 );
6022
6023 $this->add_control(
6024 'read_more_icon_spacing',
6025 [
6026 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
6027 'type' => Controls_Manager::SLIDER,
6028 'size_units' => ['px'],
6029 'range' => [
6030 'px' => [
6031 'min' => 0,
6032 'max' => 25,
6033 ],
6034 ],
6035 'default' => [
6036 'unit' => 'px',
6037 'size' => 5,
6038 ],
6039 'selectors' => [
6040 '{{WRAPPER}} .king-addons-grid-item-read-more .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
6041 '{{WRAPPER}} .king-addons-grid-item-read-more .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
6042 ],
6043 'separator' => 'before'
6044 ]
6045 );
6046
6047 $this->add_responsive_control(
6048 'read_more_padding',
6049 [
6050 'label' => esc_html__('Padding', 'king-addons'),
6051 'type' => Controls_Manager::DIMENSIONS,
6052 'size_units' => ['px', '%'],
6053 'default' => [
6054 'top' => 0,
6055 'right' => 0,
6056 'bottom' => 0,
6057 'left' => 0,
6058 ],
6059 'selectors' => [
6060 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6061 ],
6062 'render_type' => 'template',
6063 'separator' => 'before',
6064 ]
6065 );
6066
6067 $this->add_responsive_control(
6068 'read_more_margin',
6069 [
6070 'label' => esc_html__('Margin', 'king-addons'),
6071 'type' => Controls_Manager::DIMENSIONS,
6072 'size_units' => ['px', '%'],
6073 'default' => [
6074 'top' => 0,
6075 'right' => 0,
6076 'bottom' => 0,
6077 'left' => 0,
6078 ],
6079 'selectors' => [
6080 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6081 ],
6082 'render_type' => 'template',
6083 ]
6084 );
6085
6086 $this->add_control(
6087 'read_more_radius',
6088 [
6089 'label' => esc_html__('Border Radius', 'king-addons'),
6090 'type' => Controls_Manager::DIMENSIONS,
6091 'size_units' => ['px', '%'],
6092 'default' => [
6093 'top' => 0,
6094 'right' => 0,
6095 'bottom' => 0,
6096 'left' => 0,
6097 ],
6098 'selectors' => [
6099 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6100 ],
6101 'separator' => 'before',
6102 ]
6103 );
6104
6105 $this->end_controls_section();
6106
6107
6108 $this->add_section_style_likes();
6109
6110
6111 $this->add_section_style_sharing();
6112
6113 // TODO
6114 // $this->add_section_style_lightbox();
6115
6116 $this->start_controls_section(
6117 'section_style_filters',
6118 [
6119 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Filters', 'king-addons'),
6120 'tab' => Controls_Manager::TAB_STYLE,
6121 'show_label' => false,
6122 'condition' => [
6123 'layout_select!' => 'slider',
6124 'layout_filters' => 'yes',
6125 ],
6126 ]
6127 );
6128
6129 $this->add_control(
6130 'active_styles_notice',
6131 [
6132 'type' => Controls_Manager::RAW_HTML,
6133 'raw' => esc_html__('Apply active filter styles from the hover tab.', 'king-addons'),
6134 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info'
6135 ]
6136 );
6137
6138 $this->start_controls_tabs('tabs_grid_filters_style');
6139
6140 $this->start_controls_tab(
6141 'tab_grid_filters_normal',
6142 [
6143 'label' => esc_html__('Normal', 'king-addons'),
6144 ]
6145 );
6146
6147 $this->add_control(
6148 'filters_color',
6149 [
6150 'label' => esc_html__('Color', 'king-addons'),
6151 'type' => Controls_Manager::COLOR,
6152 'default' => '#7A7A7A',
6153 'selectors' => [
6154 '{{WRAPPER}} .king-addons-grid-filters li' => 'color: {{VALUE}}',
6155 '{{WRAPPER}} .king-addons-grid-filters li a' => 'color: {{VALUE}}',
6156 ],
6157 ]
6158 );
6159
6160 $this->add_control(
6161 'filters_bg_color',
6162 [
6163 'label' => esc_html__('Background Color', 'king-addons'),
6164 'type' => Controls_Manager::COLOR,
6165 'selectors' => [
6166 '{{WRAPPER}} .king-addons-grid-filters li > a' => 'background-color: {{VALUE}}',
6167 '{{WRAPPER}} .king-addons-grid-filters li > span' => 'background-color: {{VALUE}}',
6168 ]
6169 ]
6170 );
6171
6172 $this->add_control(
6173 'filters_border_color',
6174 [
6175 'label' => esc_html__('Border Color', 'king-addons'),
6176 'type' => Controls_Manager::COLOR,
6177 'default' => '#E8E8E8',
6178 'selectors' => [
6179 '{{WRAPPER}} .king-addons-grid-filters li > a' => 'border-color: {{VALUE}}',
6180 '{{WRAPPER}} .king-addons-grid-filters li > span' => 'border-color: {{VALUE}}',
6181 ],
6182 ]
6183 );
6184
6185 $this->add_group_control(
6186 Group_Control_Box_Shadow::get_type(),
6187 [
6188 'name' => 'filters_box_shadow',
6189 'selector' => '{{WRAPPER}} .king-addons-grid-filters li > a, {{WRAPPER}} .king-addons-grid-filters li > span',
6190 ]
6191 );
6192
6193 $this->add_control(
6194 'filters_wrapper_color',
6195 [
6196 'label' => esc_html__('Wrapper Color', 'king-addons'),
6197 'type' => Controls_Manager::COLOR,
6198 'selectors' => [
6199 '{{WRAPPER}} .king-addons-grid-filters' => 'background-color: {{VALUE}}',
6200 ],
6201 'separator' => 'after',
6202 ]
6203 );
6204
6205 $this->end_controls_tab();
6206
6207 $this->start_controls_tab(
6208 'tab_grid_filters_hover',
6209 [
6210 'label' => esc_html__('Hover', 'king-addons'),
6211 ]
6212 );
6213
6214 $this->add_control(
6215 'filters_color_hr',
6216 [
6217 'label' => esc_html__('Color', 'king-addons'),
6218 'type' => Controls_Manager::COLOR,
6219 'default' => '#ffffff',
6220 'selectors' => [
6221 '{{WRAPPER}} .king-addons-grid-filters li > a:hover' => 'color: {{VALUE}}',
6222 '{{WRAPPER}} .king-addons-grid-filters li > span:hover' => 'color: {{VALUE}}',
6223 '{{WRAPPER}} .king-addons-grid-filters li > .king-addons-active-filter' => 'color: {{VALUE}}',
6224 ],
6225 ]
6226 );
6227
6228 $this->add_control(
6229 'filters_bg_color_hr',
6230 [
6231 'label' => esc_html__('Background Color', 'king-addons'),
6232 'type' => Controls_Manager::COLOR,
6233 'default' => '#5B03FF',
6234 'selectors' => [
6235 '{{WRAPPER}} .king-addons-grid-filters li > a:hover' => 'background-color: {{VALUE}}',
6236 '{{WRAPPER}} .king-addons-grid-filters li > span:hover' => 'background-color: {{VALUE}}',
6237 '{{WRAPPER}} .king-addons-grid-filters li > .king-addons-active-filter' => 'background-color: {{VALUE}}',
6238 ]
6239 ]
6240 );
6241
6242 $this->add_control(
6243 'filters_border_color_hr',
6244 [
6245 'label' => esc_html__('Border Color', 'king-addons'),
6246 'type' => Controls_Manager::COLOR,
6247 'default' => '#E8E8E8',
6248 'selectors' => [
6249 '{{WRAPPER}} .king-addons-grid-filters li > a:hover' => 'border-color: {{VALUE}}',
6250 '{{WRAPPER}} .king-addons-grid-filters li > span:hover' => 'border-color: {{VALUE}}',
6251 '{{WRAPPER}} .king-addons-grid-filters li > .king-addons-active-filter' => 'border-color: {{VALUE}}',
6252 ]
6253 ]
6254 );
6255
6256 $this->add_control_filters_pointer_color_hr();
6257
6258 $this->add_group_control(
6259 Group_Control_Box_Shadow::get_type(),
6260 [
6261 'name' => 'filters_box_shadow_hr',
6262 'selector' => '{{WRAPPER}} .king-addons-grid-filters li > a:hover, {{WRAPPER}} .king-addons-grid-filters li > span:hover',
6263 'separator' => 'after',
6264 ]
6265 );
6266
6267 $this->end_controls_tab();
6268
6269 $this->end_controls_tabs();
6270
6271 $this->add_control_filters_pointer();
6272
6273 $this->add_control_filters_pointer_height();
6274
6275 $this->add_control_filters_pointer_animation();
6276
6277 $this->add_control(
6278 'filters_transition_duration',
6279 [
6280 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
6281 'type' => Controls_Manager::NUMBER,
6282 'default' => 0.1,
6283 'min' => 0,
6284 'max' => 5,
6285 'step' => 0.1,
6286 'selectors' => [
6287 '{{WRAPPER}} .king-addons-grid-filters li > a' => 'transition-duration: {{VALUE}}s',
6288 '{{WRAPPER}} .king-addons-grid-filters li > span' => 'transition-duration: {{VALUE}}s',
6289 '{{WRAPPER}} .king-addons-grid-filters .king-addons-pointer-item:before' => 'transition-duration: {{VALUE}}s',
6290 '{{WRAPPER}} .king-addons-grid-filters .king-addons-pointer-item:after' => 'transition-duration: {{VALUE}}s',
6291 ],
6292 'separator' => 'after',
6293 ]
6294 );
6295
6296 $this->add_group_control(
6297 Group_Control_Typography::get_type(),
6298 [
6299 'name' => 'filters_typography',
6300 'selector' => '{{WRAPPER}} .king-addons-grid-filters li'
6301 ]
6302 );
6303
6304 $this->add_control(
6305 'filters_border_type',
6306 [
6307 'label' => esc_html__('Border Type', 'king-addons'),
6308 'type' => Controls_Manager::SELECT,
6309 'options' => [
6310 'none' => esc_html__('None', 'king-addons'),
6311 'solid' => esc_html__('Solid', 'king-addons'),
6312 'double' => esc_html__('Double', 'king-addons'),
6313 'dotted' => esc_html__('Dotted', 'king-addons'),
6314 'dashed' => esc_html__('Dashed', 'king-addons'),
6315 'groove' => esc_html__('Groove', 'king-addons'),
6316 ],
6317 'default' => 'none',
6318 'selectors' => [
6319 '{{WRAPPER}} .king-addons-grid-filters li > a' => 'border-style: {{VALUE}};',
6320 '{{WRAPPER}} .king-addons-grid-filters li > span' => 'border-style: {{VALUE}};',
6321 ],
6322 'separator' => 'before',
6323 ]
6324 );
6325
6326 $this->add_control(
6327 'filters_border_width',
6328 [
6329 'label' => esc_html__('Border Width', 'king-addons'),
6330 'type' => Controls_Manager::DIMENSIONS,
6331 'size_units' => ['px'],
6332 'default' => [
6333 'top' => 1,
6334 'right' => 1,
6335 'bottom' => 1,
6336 'left' => 1,
6337 ],
6338 'selectors' => [
6339 '{{WRAPPER}} .king-addons-grid-filters li > a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6340 '{{WRAPPER}} .king-addons-grid-filters li > span' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6341 ],
6342 'condition' => [
6343 'filters_border_type!' => 'none',
6344 ],
6345 ]
6346 );
6347
6348 $this->add_responsive_control(
6349 'filters_distance_from_grid',
6350 [
6351 'label' => esc_html__('Distance From Grid', 'king-addons'),
6352 'type' => Controls_Manager::SLIDER,
6353 'size_units' => ['px'],
6354 'range' => [
6355 'px' => [
6356 'min' => 0,
6357 'max' => 100,
6358 ],
6359 ],
6360 'default' => [
6361 'unit' => 'px',
6362 'size' => 25,
6363 ],
6364 'selectors' => [
6365 '{{WRAPPER}} .king-addons-grid-filters' => 'margin-bottom: {{SIZE}}{{UNIT}};',
6366 ],
6367 'separator' => 'before'
6368 ]
6369 );
6370
6371 $this->add_control(
6372 'filters_icon_spacing',
6373 [
6374 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
6375 'type' => Controls_Manager::SLIDER,
6376 'size_units' => ['px'],
6377 'range' => [
6378 'px' => [
6379 'min' => 0,
6380 'max' => 25,
6381 ],
6382 ],
6383 'default' => [
6384 'unit' => 'px',
6385 'size' => 0,
6386 ],
6387 'selectors' => [
6388 '{{WRAPPER}} .king-addons-grid-filters-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
6389 '{{WRAPPER}} .king-addons-grid-filters-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
6390 ],
6391 ]
6392 );
6393
6394 $this->add_responsive_control(
6395 'filters_margin',
6396 [
6397 'label' => esc_html__('Margin', 'king-addons'),
6398 'type' => Controls_Manager::DIMENSIONS,
6399 'size_units' => ['px'],
6400 'default' => [
6401 'top' => 0,
6402 'right' => 5,
6403 'bottom' => 0,
6404 'left' => 0,
6405 ],
6406 'selectors' => [
6407 '{{WRAPPER}} .king-addons-grid-filters li' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6408 ],
6409 ]
6410 );
6411
6412 $this->add_responsive_control(
6413 'filters_padding',
6414 [
6415 'label' => esc_html__('Padding', 'king-addons'),
6416 'type' => Controls_Manager::DIMENSIONS,
6417 'size_units' => ['px',],
6418 'default' => [
6419 'top' => 3,
6420 'right' => 15,
6421 'bottom' => 3,
6422 'left' => 15,
6423 ],
6424 'selectors' => [
6425 '{{WRAPPER}} .king-addons-grid-filters li > a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6426 '{{WRAPPER}} .king-addons-grid-filters li > span' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6427 ],
6428 ]
6429 );
6430
6431 $this->add_responsive_control(
6432 'filters_wrapper_padding',
6433 [
6434 'label' => esc_html__('Wrapper Padding', 'king-addons'),
6435 'type' => Controls_Manager::DIMENSIONS,
6436 'size_units' => ['px',],
6437 'default' => [
6438 'top' => 0,
6439 'right' => 0,
6440 'bottom' => 0,
6441 'left' => 0,
6442 ],
6443 'selectors' => [
6444 '{{WRAPPER}} .king-addons-grid-filters' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6445 ],
6446 ]
6447 );
6448
6449 $this->add_control(
6450 'filters_radius',
6451 [
6452 'label' => esc_html__('Border Radius', 'king-addons'),
6453 'type' => Controls_Manager::DIMENSIONS,
6454 'size_units' => ['px', '%'],
6455 'default' => [
6456 'top' => 3,
6457 'right' => 3,
6458 'bottom' => 3,
6459 'left' => 3,
6460 ],
6461 'selectors' => [
6462 '{{WRAPPER}} .king-addons-grid-filters li > a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6463 '{{WRAPPER}} .king-addons-grid-filters li > span' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6464 ],
6465 'separator' => 'before',
6466 ]
6467 );
6468
6469 $this->end_controls_section();
6470
6471
6472 $this->start_controls_section(
6473 'section_style_pagination',
6474 [
6475 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Pagination', 'king-addons'),
6476 'tab' => Controls_Manager::TAB_STYLE,
6477 'show_label' => false,
6478 'condition' => [
6479 'layout_select!' => 'slider',
6480 ],
6481 ]
6482 );
6483
6484 $this->start_controls_tabs('tabs_grid_pagination_style');
6485
6486 $this->start_controls_tab(
6487 'tab_grid_pagination_normal',
6488 [
6489 'label' => esc_html__('Normal', 'king-addons'),
6490 ]
6491 );
6492
6493 $this->add_control(
6494 'pagination_color',
6495 [
6496 'label' => esc_html__('Color', 'king-addons'),
6497 'type' => Controls_Manager::COLOR,
6498 'default' => '#ffffff',
6499 'selectors' => [
6500 '{{WRAPPER}} .king-addons-grid-pagination a' => 'color: {{VALUE}}',
6501 '{{WRAPPER}} .king-addons-grid-pagination svg' => 'fill: {{VALUE}}',
6502 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'color: {{VALUE}}',
6503 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-disabled-arrow' => 'color: {{VALUE}}',
6504 ],
6505 ]
6506 );
6507
6508 $this->add_control(
6509 'pagination_bg_color',
6510 [
6511 'label' => esc_html__('Background Color', 'king-addons'),
6512 'type' => Controls_Manager::COLOR,
6513 'default' => '#5B03FF',
6514 'selectors' => [
6515 '{{WRAPPER}} .king-addons-grid-pagination a' => 'background-color: {{VALUE}}',
6516 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'background-color: {{VALUE}}',
6517 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-disabled-arrow' => 'background-color: {{VALUE}}',
6518 '{{WRAPPER}} .king-addons-pagination-finish' => 'color: {{VALUE}}',
6519 ]
6520 ]
6521 );
6522
6523 $this->add_control(
6524 'pagination_border_color',
6525 [
6526 'label' => esc_html__('Border Color', 'king-addons'),
6527 'type' => Controls_Manager::COLOR,
6528 'default' => '#E8E8E8',
6529 'selectors' => [
6530 '{{WRAPPER}} .king-addons-grid-pagination a' => 'border-color: {{VALUE}}',
6531 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'border-color: {{VALUE}}',
6532 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-disabled-arrow' => 'border-color: {{VALUE}}',
6533 ],
6534 ]
6535 );
6536
6537 $this->add_group_control(
6538 Group_Control_Box_Shadow::get_type(),
6539 [
6540 'name' => 'pagination_box_shadow',
6541 'selector' => '{{WRAPPER}} .king-addons-grid-pagination a, {{WRAPPER}} .king-addons-grid-pagination > div > span',
6542 ]
6543 );
6544
6545 $this->add_control(
6546 'pagination_loader_color',
6547 [
6548 'label' => esc_html__('Loader Color', 'king-addons'),
6549 'type' => Controls_Manager::COLOR,
6550 'default' => '#5B03FF',
6551 'selectors' => [
6552 '{{WRAPPER}} .king-addons-double-bounce .king-addons-child' => 'background-color: {{VALUE}}',
6553 '{{WRAPPER}} .king-addons-wave .king-addons-rect' => 'background-color: {{VALUE}}',
6554 '{{WRAPPER}} .king-addons-spinner-pulse' => 'background-color: {{VALUE}}',
6555 '{{WRAPPER}} .king-addons-chasing-dots .king-addons-child' => 'background-color: {{VALUE}}',
6556 '{{WRAPPER}} .king-addons-three-bounce .king-addons-child' => 'background-color: {{VALUE}}',
6557 '{{WRAPPER}} .king-addons-fading-circle .king-addons-circle:before' => 'background-color: {{VALUE}}',
6558 '{{WRAPPER}} .king-addons-ring div' => 'border-color: {{VALUE}} transparent transparent transparent',
6559 ],
6560 'condition' => [
6561 'pagination_type' => ['load-more', 'infinite-scroll']
6562 ]
6563 ]
6564 );
6565
6566 $this->add_control(
6567 'pagination_wrapper_color',
6568 [
6569 'label' => esc_html__('Wrapper Color', 'king-addons'),
6570 'type' => Controls_Manager::COLOR,
6571 'selectors' => [
6572 '{{WRAPPER}} .king-addons-grid-pagination' => 'background-color: {{VALUE}}',
6573 ],
6574 'separator' => 'after',
6575 ]
6576 );
6577
6578 $this->end_controls_tab();
6579
6580 $this->start_controls_tab(
6581 'tab_grid_pagination_hover',
6582 [
6583 'label' => esc_html__('Hover', 'king-addons'),
6584 ]
6585 );
6586
6587 $this->add_control(
6588 'pagination_color_hr',
6589 [
6590 'label' => esc_html__('Color', 'king-addons'),
6591 'type' => Controls_Manager::COLOR,
6592 'default' => '#ffffff',
6593 'selectors' => [
6594 '{{WRAPPER}} .king-addons-grid-pagination a:hover' => 'color: {{VALUE}}',
6595 '{{WRAPPER}} .king-addons-grid-pagination a:hover svg' => 'fill: {{VALUE}}',
6596 '{{WRAPPER}} .king-addons-grid-pagination > div > span:not(.king-addons-disabled-arrow):hover' => 'color: {{VALUE}}',
6597 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-grid-current-page' => 'color: {{VALUE}}',
6598 ],
6599 ]
6600 );
6601
6602 $this->add_control(
6603 'pagination_bg_color_hr',
6604 [
6605 'label' => esc_html__('Background Color', 'king-addons'),
6606 'type' => Controls_Manager::COLOR,
6607 'default' => '#4D02D8',
6608 'selectors' => [
6609 '{{WRAPPER}} .king-addons-grid-pagination a:hover' => 'background-color: {{VALUE}}',
6610 '{{WRAPPER}} .king-addons-grid-pagination > div > span:not(.king-addons-disabled-arrow):hover' => 'background-color: {{VALUE}}',
6611 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-grid-current-page' => 'background-color: {{VALUE}}',
6612 ]
6613 ]
6614 );
6615
6616 $this->add_control(
6617 'pagination_border_color_hr',
6618 [
6619 'label' => esc_html__('Border Color', 'king-addons'),
6620 'type' => Controls_Manager::COLOR,
6621 'default' => '#E8E8E8',
6622 'selectors' => [
6623 '{{WRAPPER}} .king-addons-grid-pagination a:hover' => 'border-color: {{VALUE}}',
6624 '{{WRAPPER}} .king-addons-grid-pagination > div > span:not(.king-addons-disabled-arrow):hover' => 'border-color: {{VALUE}}',
6625 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-grid-current-page' => 'border-color: {{VALUE}}',
6626 ]
6627 ]
6628 );
6629
6630 $this->add_group_control(
6631 Group_Control_Box_Shadow::get_type(),
6632 [
6633 'name' => 'pagination_box_shadow_hr',
6634 'selector' => '{{WRAPPER}} .king-addons-grid-pagination a:hover, {{WRAPPER}} .king-addons-grid-pagination > div > span:not(.king-addons-disabled-arrow):hover',
6635 'separator' => 'after',
6636 ]
6637 );
6638
6639 $this->end_controls_tab();
6640
6641 $this->end_controls_tabs();
6642
6643 $this->add_control(
6644 'pagination_transition_duration',
6645 [
6646 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
6647 'type' => Controls_Manager::NUMBER,
6648 'default' => 0.1,
6649 'min' => 0,
6650 'max' => 5,
6651 'step' => 0.1,
6652 'selectors' => [
6653 '{{WRAPPER}} .king-addons-grid-pagination a' => 'transition-duration: {{VALUE}}s',
6654 '{{WRAPPER}} .king-addons-grid-pagination svg' => 'transition-duration: {{VALUE}}s',
6655 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'transition-duration: {{VALUE}}s',
6656 ],
6657 'separator' => 'after',
6658 ]
6659 );
6660
6661 $this->add_group_control(
6662 Group_Control_Typography::get_type(),
6663 [
6664 'name' => 'pagination_typography',
6665 'selector' => '{{WRAPPER}} .king-addons-grid-pagination, {{WRAPPER}} .king-addons-grid-pagination a'
6666 ]
6667 );
6668
6669 $this->add_responsive_control(
6670 'pagination_icon_size',
6671 [
6672 'label' => esc_html__('Icon Size', 'king-addons'),
6673 'type' => Controls_Manager::SLIDER,
6674 'size_units' => ['px'],
6675 'range' => [
6676 'px' => [
6677 'min' => 5,
6678 'max' => 30,
6679 ],
6680 ],
6681 'default' => [
6682 'unit' => 'px',
6683 'size' => 15,
6684 ],
6685 'selectors' => [
6686 '{{WRAPPER}} .king-addons-grid-pagination i' => 'font-size: {{SIZE}}{{UNIT}};',
6687 '{{WRAPPER}} .king-addons-grid-pagination svg' => 'width: {{SIZE}}{{UNIT}};',
6688 ],
6689 ]
6690 );
6691
6692 $this->add_control(
6693 'pagination_border_type',
6694 [
6695 'label' => esc_html__('Border Type', 'king-addons'),
6696 'type' => Controls_Manager::SELECT,
6697 'options' => [
6698 'none' => esc_html__('None', 'king-addons'),
6699 'solid' => esc_html__('Solid', 'king-addons'),
6700 'double' => esc_html__('Double', 'king-addons'),
6701 'dotted' => esc_html__('Dotted', 'king-addons'),
6702 'dashed' => esc_html__('Dashed', 'king-addons'),
6703 'groove' => esc_html__('Groove', 'king-addons'),
6704 ],
6705 'default' => 'none',
6706 'selectors' => [
6707 '{{WRAPPER}} .king-addons-grid-pagination a' => 'border-style: {{VALUE}};',
6708 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'border-style: {{VALUE}};',
6709 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-grid-current-page' => 'border-style: {{VALUE}};',
6710 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-disabled-arrow' => 'border-style: {{VALUE}}',
6711 ],
6712 'separator' => 'before',
6713 ]
6714 );
6715
6716 $this->add_control(
6717 'pagination_border_width',
6718 [
6719 'label' => esc_html__('Border Width', 'king-addons'),
6720 'type' => Controls_Manager::DIMENSIONS,
6721 'size_units' => ['px'],
6722 'default' => [
6723 'top' => 1,
6724 'right' => 1,
6725 'bottom' => 1,
6726 'left' => 1,
6727 ],
6728 'selectors' => [
6729 '{{WRAPPER}} .king-addons-grid-pagination a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6730 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6731 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-grid-current-page' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6732 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-disabled-arrow' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6733 ],
6734 'condition' => [
6735 'pagination_border_type!' => 'none',
6736 ],
6737 ]
6738 );
6739
6740 $this->add_responsive_control(
6741 'pagination_distance_from_grid',
6742 [
6743 'label' => esc_html__('Distance From Grid', 'king-addons'),
6744 'type' => Controls_Manager::SLIDER,
6745 'size_units' => ['px'],
6746 'range' => [
6747 'px' => [
6748 'min' => 0,
6749 'max' => 100,
6750 ],
6751 ],
6752 'default' => [
6753 'unit' => 'px',
6754 'size' => 25,
6755 ],
6756 'selectors' => [
6757 '{{WRAPPER}} .king-addons-grid-pagination' => 'margin-top: {{SIZE}}{{UNIT}};',
6758 ],
6759 'separator' => 'before'
6760 ]
6761 );
6762
6763 $this->add_control(
6764 'pagination_gutter',
6765 [
6766 'label' => esc_html__('Gutter', 'king-addons'),
6767 'type' => Controls_Manager::SLIDER,
6768 'size_units' => ['px'],
6769 'range' => [
6770 'px' => [
6771 'min' => 0,
6772 'max' => 25,
6773 ],
6774 ],
6775 'default' => [
6776 'unit' => 'px',
6777 'size' => 10,
6778 ],
6779 'selectors' => [
6780
6781 '{{WRAPPER}} .king-addons-grid-pagination a:not(:last-child)' => 'margin-right: {{SIZE}}{{UNIT}};',
6782 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'margin-right: {{SIZE}}{{UNIT}};',
6783 '{{WRAPPER}} .king-addons-grid-pagination > div > a.king-addons-prev-page' => 'margin-right: {{SIZE}}{{UNIT}};',
6784
6785 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-disabled-arrow:not(:last-child)' => 'margin-right: {{SIZE}}{{UNIT}};',
6786 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-grid-current-page' => 'margin-right: {{SIZE}}{{UNIT}};',
6787 ],
6788 ]
6789 );
6790
6791 $this->add_control(
6792 'pagination_icon_spacing',
6793 [
6794 'label' => esc_html__('Icon Spacing', 'king-addons'),
6795 'type' => Controls_Manager::SLIDER,
6796 'size_units' => ['px'],
6797 'range' => [
6798 'px' => [
6799 'min' => 0,
6800 'max' => 25,
6801 ],
6802 ],
6803 'default' => [
6804 'unit' => 'px',
6805 'size' => 10,
6806 ],
6807 'selectors' => [
6808 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-prev-post-link i' => 'padding-right: {{SIZE}}{{UNIT}};',
6809 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-next-post-link i' => 'padding-left: {{SIZE}}{{UNIT}};',
6810 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-first-page i' => 'padding-right: {{SIZE}}{{UNIT}};',
6811 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-prev-page i' => 'padding-right: {{SIZE}}{{UNIT}};',
6812 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-next-page i' => 'padding-left: {{SIZE}}{{UNIT}};',
6813 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-last-page i' => 'padding-left: {{SIZE}}{{UNIT}};',
6814 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-prev-post-link svg' => 'margin-right: {{SIZE}}{{UNIT}};',
6815 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-next-post-link svg' => 'margin-left: {{SIZE}}{{UNIT}};',
6816 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-first-page svg' => 'margin-right: {{SIZE}}{{UNIT}};',
6817 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-prev-page svg' => 'margin-right: {{SIZE}}{{UNIT}};',
6818 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-next-page svg' => 'margin-left: {{SIZE}}{{UNIT}};',
6819 '{{WRAPPER}} .king-addons-grid-pagination .king-addons-last-page svg' => 'margin-left: {{SIZE}}{{UNIT}};',
6820 ],
6821 ]
6822 );
6823
6824 $this->add_responsive_control(
6825 'pagination_padding',
6826 [
6827 'label' => esc_html__('Padding', 'king-addons'),
6828 'type' => Controls_Manager::DIMENSIONS,
6829 'size_units' => ['px'],
6830 'default' => [
6831 'top' => 8,
6832 'right' => 20,
6833 'bottom' => 8,
6834 'left' => 20,
6835 ],
6836 'selectors' => [
6837 '{{WRAPPER}} .king-addons-grid-pagination a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6838 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6839 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-disabled-arrow' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6840 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-grid-current-page' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6841 ],
6842 ]
6843 );
6844
6845 $this->add_responsive_control(
6846 'pagination_wrapper_padding',
6847 [
6848 'label' => esc_html__('Wrapper Padding', 'king-addons'),
6849 'type' => Controls_Manager::DIMENSIONS,
6850 'size_units' => ['px'],
6851 'default' => [
6852 'top' => 0,
6853 'right' => 0,
6854 'bottom' => 0,
6855 'left' => 0,
6856 ],
6857 'selectors' => [
6858 '{{WRAPPER}} .king-addons-grid-pagination' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6859 ],
6860 ]
6861 );
6862
6863 $this->add_control(
6864 'pagination_radius',
6865 [
6866 'label' => esc_html__('Border Radius', 'king-addons'),
6867 'type' => Controls_Manager::DIMENSIONS,
6868 'size_units' => ['px', '%'],
6869 'default' => [
6870 'top' => 3,
6871 'right' => 3,
6872 'bottom' => 3,
6873 'left' => 3,
6874 ],
6875 'selectors' => [
6876 '{{WRAPPER}} .king-addons-grid-pagination a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6877 '{{WRAPPER}} .king-addons-grid-pagination > div > span' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6878 '{{WRAPPER}} .king-addons-grid-pagination span.king-addons-grid-current-page' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
6879 ],
6880 'separator' => 'before',
6881 ]
6882 );
6883
6884 $this->end_controls_section();
6885
6886
6887 $this->start_controls_section(
6888 'section_style_pwd_protected',
6889 [
6890 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Password Protected', 'king-addons'),
6891 'tab' => Controls_Manager::TAB_STYLE,
6892 'show_label' => false,
6893 ]
6894 );
6895
6896 $this->add_control(
6897 'pwd_protected_color',
6898 [
6899 'label' => esc_html__('Color', 'king-addons'),
6900 'type' => Controls_Manager::COLOR,
6901 'default' => '#ffffff',
6902 'selectors' => [
6903 '{{WRAPPER}} .king-addons-grid-item-protected' => 'color: {{VALUE}}',
6904 ],
6905 ]
6906 );
6907
6908 $this->add_control(
6909 'pwd_protected_bg_color',
6910 [
6911 'label' => esc_html__('Background Color', 'king-addons'),
6912 'type' => Controls_Manager::COLOR,
6913 'default' => '#5B03FF',
6914 'selectors' => [
6915 '{{WRAPPER}} .king-addons-grid-item-protected' => 'background-color: {{VALUE}}',
6916 ]
6917 ]
6918 );
6919
6920 $this->add_control(
6921 'pwd_protected_input_color',
6922 [
6923 'label' => esc_html__('Input Background Color', 'king-addons'),
6924 'type' => Controls_Manager::COLOR,
6925 'default' => '#ffffff',
6926 'selectors' => [
6927 '{{WRAPPER}} .king-addons-grid-item-protected input' => 'background-color: {{VALUE}}',
6928 ]
6929 ]
6930 );
6931
6932 $this->add_group_control(
6933 Group_Control_Typography::get_type(),
6934 [
6935 'name' => 'pwd_protected_typography',
6936 'selector' => '{{WRAPPER}} .king-addons-grid-item-protected p'
6937 ]
6938 );
6939
6940 $this->end_controls_section();
6941
6942
6943 $this->start_controls_section(
6944 'section_style_separator1',
6945 [
6946 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Separator Style 1', 'king-addons'),
6947 'tab' => Controls_Manager::TAB_STYLE,
6948 'show_label' => false,
6949 ]
6950 );
6951
6952 $this->add_control(
6953 'separator1_color',
6954 [
6955 'label' => esc_html__('Color', 'king-addons'),
6956 'type' => Controls_Manager::COLOR,
6957 'default' => '#E8E8E8',
6958 'selectors' => [
6959 '{{WRAPPER}} .king-addons-grid-sep-style-1 .inner-block > span' => 'border-bottom-color: {{VALUE}}',
6960 ],
6961 ]
6962 );
6963
6964 $this->add_control(
6965 'separator1_width',
6966 [
6967 'label' => esc_html__('Width', 'king-addons'),
6968 'type' => Controls_Manager::SLIDER,
6969 'size_units' => ['px', '%'],
6970 'range' => [
6971 'px' => [
6972 'min' => 0,
6973 'max' => 300,
6974 ],
6975 '%' => [
6976 'min' => 0,
6977 'max' => 100,
6978 ],
6979 ],
6980 'default' => [
6981 'unit' => '%',
6982 'size' => 100,
6983 ],
6984 'selectors' => [
6985 '{{WRAPPER}} .king-addons-grid-sep-style-1:not(.king-addons-grid-item-display-inline) .inner-block > span' => 'width: {{SIZE}}{{UNIT}};',
6986 '{{WRAPPER}} .king-addons-grid-sep-style-1.king-addons-grid-item-display-inline' => 'width: {{SIZE}}{{UNIT}};',
6987 ],
6988 'render_type' => 'template',
6989 'separator' => 'before',
6990 ]
6991 );
6992
6993 $this->add_control(
6994 'separator1_height',
6995 [
6996 'label' => esc_html__('Height', 'king-addons'),
6997 'type' => Controls_Manager::SLIDER,
6998 'size_units' => ['px'],
6999 'range' => [
7000 'px' => [
7001 'min' => 1,
7002 'max' => 100,
7003 ],
7004 ],
7005 'default' => [
7006 'unit' => 'px',
7007 'size' => 2,
7008 ],
7009 'render_type' => 'template',
7010 'selectors' => [
7011 '{{WRAPPER}} .king-addons-grid-sep-style-1 .inner-block > span' => 'border-bottom-width: {{SIZE}}{{UNIT}};',
7012 ],
7013 ]
7014 );
7015
7016 $this->add_control(
7017 'separator1_border_type',
7018 [
7019 'label' => esc_html__('Type', 'king-addons'),
7020 'type' => Controls_Manager::SELECT,
7021 'options' => [
7022 'solid' => esc_html__('Solid', 'king-addons'),
7023 'double' => esc_html__('Double', 'king-addons'),
7024 'dotted' => esc_html__('Dotted', 'king-addons'),
7025 'dashed' => esc_html__('Dashed', 'king-addons'),
7026 'groove' => esc_html__('Groove', 'king-addons'),
7027 ],
7028 'default' => 'solid',
7029 'selectors' => [
7030 '{{WRAPPER}} .king-addons-grid-sep-style-1 .inner-block > span' => 'border-bottom-style: {{VALUE}};',
7031 ],
7032 'separator' => 'before',
7033 ]
7034 );
7035
7036 $this->add_responsive_control(
7037 'separator1_margin',
7038 [
7039 'label' => esc_html__('Margin', 'king-addons'),
7040 'type' => Controls_Manager::DIMENSIONS,
7041 'size_units' => ['px', '%'],
7042 'default' => [
7043 'top' => 15,
7044 'right' => 0,
7045 'bottom' => 15,
7046 'left' => 0,
7047 ],
7048 'render_type' => 'template',
7049 'selectors' => [
7050 '{{WRAPPER}} .king-addons-grid-sep-style-1 .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
7051 ],
7052 ]
7053 );
7054
7055 $this->add_control(
7056 'separator1_radius',
7057 [
7058 'label' => esc_html__('Border Radius', 'king-addons'),
7059 'type' => Controls_Manager::DIMENSIONS,
7060 'size_units' => ['px', '%'],
7061 'default' => [
7062 'top' => 0,
7063 'right' => 0,
7064 'bottom' => 0,
7065 'left' => 0,
7066 ],
7067 'selectors' => [
7068 '{{WRAPPER}} .king-addons-grid-sep-style-1 .inner-block > span' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
7069 ],
7070 'separator' => 'before',
7071 ]
7072 );
7073
7074 $this->end_controls_section();
7075
7076
7077 $this->start_controls_section(
7078 'section_style_separator2',
7079 [
7080 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Separator Style 2', 'king-addons'),
7081 'tab' => Controls_Manager::TAB_STYLE,
7082 'show_label' => false,
7083 ]
7084 );
7085
7086 $this->add_control(
7087 'separator2_color',
7088 [
7089 'label' => esc_html__('Color', 'king-addons'),
7090 'type' => Controls_Manager::COLOR,
7091 'default' => '#5B03FF',
7092 'selectors' => [
7093 '{{WRAPPER}} .king-addons-grid-sep-style-2 .inner-block > span' => 'border-bottom-color: {{VALUE}}',
7094 ],
7095 ]
7096 );
7097
7098 $this->add_control(
7099 'separator2_width',
7100 [
7101 'label' => esc_html__('Width', 'king-addons'),
7102 'type' => Controls_Manager::SLIDER,
7103 'size_units' => ['px', '%'],
7104 'range' => [
7105 'px' => [
7106 'min' => 0,
7107 'max' => 300,
7108 ],
7109 '%' => [
7110 'min' => 0,
7111 'max' => 100,
7112 ],
7113 ],
7114 'default' => [
7115 'unit' => '%',
7116 'size' => 20,
7117 ],
7118 'selectors' => [
7119 '{{WRAPPER}} .king-addons-grid-sep-style-2:not(.king-addons-grid-item-display-inline) .inner-block > span' => 'width: {{SIZE}}{{UNIT}};',
7120 '{{WRAPPER}} .king-addons-grid-sep-style-2.king-addons-grid-item-display-inline' => 'width: {{SIZE}}{{UNIT}};',
7121 ],
7122 'render_type' => 'template',
7123 'separator' => 'before',
7124 ]
7125 );
7126
7127 $this->add_control(
7128 'separator2_height',
7129 [
7130 'label' => esc_html__('Height', 'king-addons'),
7131 'type' => Controls_Manager::SLIDER,
7132 'size_units' => ['px'],
7133 'range' => [
7134 'px' => [
7135 'min' => 0,
7136 'max' => 100,
7137 ],
7138 ],
7139 'default' => [
7140 'unit' => 'px',
7141 'size' => 2,
7142 ],
7143 'selectors' => [
7144 '{{WRAPPER}} .king-addons-grid-sep-style-2 .inner-block > span' => 'border-bottom-width: {{SIZE}}{{UNIT}};',
7145 ],
7146 'render_type' => 'template',
7147 ]
7148 );
7149
7150 $this->add_control(
7151 'separator2_border_type',
7152 [
7153 'label' => esc_html__('Type', 'king-addons'),
7154 'type' => Controls_Manager::SELECT,
7155 'options' => [
7156 'solid' => esc_html__('Solid', 'king-addons'),
7157 'double' => esc_html__('Double', 'king-addons'),
7158 'dotted' => esc_html__('Dotted', 'king-addons'),
7159 'dashed' => esc_html__('Dashed', 'king-addons'),
7160 'groove' => esc_html__('Groove', 'king-addons'),
7161 ],
7162 'default' => 'solid',
7163 'selectors' => [
7164 '{{WRAPPER}} .king-addons-grid-sep-style-2 .inner-block > span' => 'border-bottom-style: {{VALUE}};',
7165 ],
7166 'separator' => 'before',
7167 ]
7168 );
7169
7170 $this->add_responsive_control(
7171 'separator2_margin',
7172 [
7173 'label' => esc_html__('Margin', 'king-addons'),
7174 'type' => Controls_Manager::DIMENSIONS,
7175 'size_units' => ['px', '%'],
7176 'default' => [
7177 'top' => 15,
7178 'right' => 0,
7179 'bottom' => 15,
7180 'left' => 0,
7181 ],
7182 'selectors' => [
7183 '{{WRAPPER}} .king-addons-grid-sep-style-2 .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
7184 ],
7185 'render_type' => 'template',
7186 ]
7187 );
7188
7189 $this->add_control(
7190 'separator2_radius',
7191 [
7192 'label' => esc_html__('Border Radius', 'king-addons'),
7193 'type' => Controls_Manager::DIMENSIONS,
7194 'size_units' => ['px', '%'],
7195 'default' => [
7196 'top' => 0,
7197 'right' => 0,
7198 'bottom' => 0,
7199 'left' => 0,
7200 ],
7201 'selectors' => [
7202 '{{WRAPPER}} .king-addons-grid-sep-style-2 .inner-block > span' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
7203 ],
7204 'separator' => 'before',
7205 ]
7206 );
7207
7208 $this->end_controls_section();
7209
7210
7211 $this->start_controls_section(
7212 'section_style_tax1',
7213 [
7214 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Taxonomy Style 1', 'king-addons'),
7215 'tab' => Controls_Manager::TAB_STYLE,
7216 'show_label' => false,
7217 ]
7218 );
7219
7220 $this->start_controls_tabs('tabs_grid_tax1_style');
7221
7222 $this->start_controls_tab(
7223 'tab_grid_tax1_normal',
7224 [
7225 'label' => esc_html__('Normal', 'king-addons'),
7226 ]
7227 );
7228
7229 $this->add_control(
7230 'tax1_color',
7231 [
7232 'label' => esc_html__('Color', 'king-addons'),
7233 'type' => Controls_Manager::COLOR,
7234 'default' => '#9C9C9C',
7235 'selectors' => [
7236 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'color: {{VALUE}}',
7237 ],
7238 ]
7239 );
7240
7241 $this->add_control(
7242 'tax1_bg_color',
7243 [
7244 'label' => esc_html__('Background Color', 'king-addons'),
7245 'type' => Controls_Manager::COLOR,
7246 'selectors' => [
7247 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'background-color: {{VALUE}}',
7248 ]
7249 ]
7250 );
7251
7252 $this->add_control(
7253 'tax1_border_color',
7254 [
7255 'label' => esc_html__('Border Color', 'king-addons'),
7256 'type' => Controls_Manager::COLOR,
7257 'default' => '#E8E8E8',
7258 'selectors' => [
7259 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'border-color: {{VALUE}}',
7260 ],
7261 ]
7262 );
7263
7264 $this->add_control(
7265 'tax1_extra_text_color',
7266 [
7267 'label' => esc_html__('Extra Text Color', 'king-addons'),
7268 'type' => Controls_Manager::COLOR,
7269 'default' => '#9C9C9C',
7270 'selectors' => [
7271 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block span[class*="king-addons-grid-extra-text"]' => 'color: {{VALUE}}',
7272 ],
7273 ]
7274 );
7275
7276 $this->add_control(
7277 'tax1_extra_icon_color',
7278 [
7279 'label' => esc_html__('Extra Icon Color', 'king-addons'),
7280 'type' => Controls_Manager::COLOR,
7281 'default' => '#9C9C9C',
7282 'selectors' => [
7283 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block [class*="king-addons-grid-extra-icon"] i' => 'color: {{VALUE}}',
7284 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block [class*="king-addons-grid-extra-icon"] svg' => 'fill: {{VALUE}}'
7285 ],
7286 'separator' => 'after',
7287 ]
7288 );
7289
7290 $this->add_control_tax1_custom_colors($tax_meta_keys[1]);
7291
7292 $this->end_controls_tab();
7293
7294 $this->start_controls_tab(
7295 'tab_grid_tax1_hover',
7296 [
7297 'label' => esc_html__('Hover', 'king-addons'),
7298 ]
7299 );
7300
7301 $this->add_control(
7302 'tax1_color_hr',
7303 [
7304 'label' => esc_html__('Color', 'king-addons'),
7305 'type' => Controls_Manager::COLOR,
7306 'default' => '#5B03FF',
7307 'selectors' => [
7308 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a:hover' => 'color: {{VALUE}}',
7309 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-pointer-item:before' => 'background-color: {{VALUE}}',
7310 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-pointer-item:after' => 'background-color: {{VALUE}}',
7311 ],
7312 ]
7313 );
7314
7315 $this->add_control(
7316 'tax1_bg_color_hr',
7317 [
7318 'label' => esc_html__('Background Color', 'king-addons'),
7319 'type' => Controls_Manager::COLOR,
7320 'selectors' => [
7321 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a:hover' => 'background-color: {{VALUE}}',
7322 ]
7323 ]
7324 );
7325
7326 $this->add_control(
7327 'tax1_border_color_hr',
7328 [
7329 'label' => esc_html__('Border Color', 'king-addons'),
7330 'type' => Controls_Manager::COLOR,
7331 'default' => '#E8E8E8',
7332 'selectors' => [
7333 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a:hover' => 'border-color: {{VALUE}}',
7334 ],
7335 ]
7336 );
7337
7338 $this->add_control_tax1_pointer_color_hr();
7339
7340 $this->end_controls_tab();
7341
7342 $this->end_controls_tabs();
7343
7344 $this->add_control_tax1_pointer();
7345
7346 $this->add_control_tax1_pointer_height();
7347
7348 $this->add_control_tax1_pointer_animation();
7349
7350 $this->add_control(
7351 'tax1_transition_duration',
7352 [
7353 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
7354 'type' => Controls_Manager::NUMBER,
7355 'default' => 0.1,
7356 'min' => 0,
7357 'max' => 5,
7358 'step' => 0.1,
7359 'selectors' => [
7360 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'transition-duration: {{VALUE}}s',
7361 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-pointer-item:before' => 'transition-duration: {{VALUE}}s',
7362 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-pointer-item:after' => 'transition-duration: {{VALUE}}s',
7363 ],
7364 'separator' => 'after',
7365 ]
7366 );
7367
7368 $this->add_group_control(
7369 Group_Control_Typography::get_type(),
7370 [
7371 'name' => 'tax1_typography',
7372 'selector' => '{{WRAPPER}} .king-addons-grid-tax-style-1'
7373 ]
7374 );
7375
7376 $this->add_control(
7377 'tax1_border_type',
7378 [
7379 'label' => esc_html__('Border Type', 'king-addons'),
7380 'type' => Controls_Manager::SELECT,
7381 'options' => [
7382 'none' => esc_html__('None', 'king-addons'),
7383 'solid' => esc_html__('Solid', 'king-addons'),
7384 'double' => esc_html__('Double', 'king-addons'),
7385 'dotted' => esc_html__('Dotted', 'king-addons'),
7386 'dashed' => esc_html__('Dashed', 'king-addons'),
7387 'groove' => esc_html__('Groove', 'king-addons'),
7388 ],
7389 'default' => 'none',
7390 'selectors' => [
7391 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'border-style: {{VALUE}};',
7392 ],
7393 'render_type' => 'template',
7394 'separator' => 'before',
7395 ]
7396 );
7397
7398 $this->add_control(
7399 'tax1_border_width',
7400 [
7401 'label' => esc_html__('Border Width', 'king-addons'),
7402 'type' => Controls_Manager::DIMENSIONS,
7403 'size_units' => ['px'],
7404 'default' => [
7405 'top' => 1,
7406 'right' => 1,
7407 'bottom' => 1,
7408 'left' => 1,
7409 ],
7410 'selectors' => [
7411 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
7412 ],
7413 'render_type' => 'template',
7414 'condition' => [
7415 'tax1_border_type!' => 'none',
7416 ],
7417 ]
7418 );
7419
7420 $this->add_control(
7421 'tax1_text_spacing',
7422 [
7423 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
7424 'type' => Controls_Manager::SLIDER,
7425 'size_units' => ['px'],
7426 'range' => [
7427 'px' => [
7428 'min' => 0,
7429 'max' => 25,
7430 ],
7431 ],
7432 'default' => [
7433 'unit' => 'px',
7434 'size' => 5,
7435 ],
7436 'selectors' => [
7437 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
7438 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
7439 ],
7440 'render_type' => 'template',
7441 'separator' => 'before',
7442 ]
7443 );
7444
7445 $this->add_control(
7446 'tax1_icon_spacing',
7447 [
7448 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
7449 'type' => Controls_Manager::SLIDER,
7450 'size_units' => ['px'],
7451 'range' => [
7452 'px' => [
7453 'min' => 0,
7454 'max' => 25,
7455 ],
7456 ],
7457 'default' => [
7458 'unit' => 'px',
7459 'size' => 5,
7460 ],
7461 'selectors' => [
7462 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
7463 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
7464 ],
7465 ]
7466 );
7467
7468 $this->add_control(
7469 'tax1_gutter',
7470 [
7471 'label' => esc_html__('Gutter', 'king-addons'),
7472 'type' => Controls_Manager::SLIDER,
7473 'size_units' => ['px'],
7474 'range' => [
7475 'px' => [
7476 'min' => 0,
7477 'max' => 20,
7478 ],
7479 ],
7480 'default' => [
7481 'unit' => 'px',
7482 'size' => 3,
7483 ],
7484 'selectors' => [
7485 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'margin-right: {{SIZE}}{{UNIT}};',
7486 ],
7487 'render_type' => 'template',
7488 'separator' => 'before',
7489 ]
7490 );
7491
7492 $this->add_responsive_control(
7493 'tax1_padding',
7494 [
7495 'label' => esc_html__('Padding', 'king-addons'),
7496 'type' => Controls_Manager::DIMENSIONS,
7497 'size_units' => ['px', '%'],
7498 'default' => [
7499 'top' => 0,
7500 'right' => 0,
7501 'bottom' => 0,
7502 'left' => 0,
7503 ],
7504 'selectors' => [
7505 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
7506 ],
7507 'render_type' => 'template',
7508 ]
7509 );
7510
7511 $this->add_responsive_control(
7512 'tax1_margin',
7513 [
7514 'label' => esc_html__('Margin', 'king-addons'),
7515 'type' => Controls_Manager::DIMENSIONS,
7516 'size_units' => ['px', '%'],
7517 'default' => [
7518 'top' => 0,
7519 'right' => 0,
7520 'bottom' => 0,
7521 'left' => 0,
7522 ],
7523 'selectors' => [
7524 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
7525 ],
7526 'render_type' => 'template',
7527 ]
7528 );
7529
7530 $this->add_control(
7531 'tax1_radius',
7532 [
7533 'label' => esc_html__('Border Radius', 'king-addons'),
7534 'type' => Controls_Manager::DIMENSIONS,
7535 'size_units' => ['px', '%'],
7536 'default' => [
7537 'top' => 0,
7538 'right' => 0,
7539 'bottom' => 0,
7540 'left' => 0,
7541 ],
7542 'selectors' => [
7543 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
7544 ],
7545 'separator' => 'before',
7546 ]
7547 );
7548
7549 $this->end_controls_section();
7550
7551
7552 $this->start_controls_section(
7553 'section_style_tax2',
7554 [
7555 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Taxonomy Style 2', 'king-addons'),
7556 'tab' => Controls_Manager::TAB_STYLE,
7557 'show_label' => false,
7558 ]
7559 );
7560
7561 $this->start_controls_tabs('tabs_grid_tax2_style');
7562
7563 $this->start_controls_tab(
7564 'tab_grid_tax2_normal',
7565 [
7566 'label' => esc_html__('Normal', 'king-addons'),
7567 ]
7568 );
7569
7570 $this->add_control(
7571 'tax2_color',
7572 [
7573 'label' => esc_html__('Color', 'king-addons'),
7574 'type' => Controls_Manager::COLOR,
7575 'default' => '#ffffff',
7576 'selectors' => [
7577 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'color: {{VALUE}}',
7578 ],
7579 ]
7580 );
7581
7582 $this->add_control(
7583 'tax2_bg_color',
7584 [
7585 'label' => esc_html__('Background Color', 'king-addons'),
7586 'type' => Controls_Manager::COLOR,
7587 'default' => '#5B03FF',
7588 'selectors' => [
7589 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'background-color: {{VALUE}}',
7590 ]
7591 ]
7592 );
7593
7594 $this->add_control(
7595 'tax2_border_color',
7596 [
7597 'label' => esc_html__('Border Color', 'king-addons'),
7598 'type' => Controls_Manager::COLOR,
7599 'default' => '#E8E8E8',
7600 'selectors' => [
7601 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'border-color: {{VALUE}}',
7602 ],
7603 ]
7604 );
7605
7606 $this->add_control(
7607 'tax2_extra_text_color',
7608 [
7609 'label' => esc_html__('Extra Text Color', 'king-addons'),
7610 'type' => Controls_Manager::COLOR,
7611 'default' => '#9C9C9C',
7612 'selectors' => [
7613 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block span[class*="king-addons-grid-extra-text"]' => 'color: {{VALUE}}',
7614 ],
7615 ]
7616 );
7617
7618 $this->add_control(
7619 'tax2_extra_icon_color',
7620 [
7621 'label' => esc_html__('Extra Icon Color', 'king-addons'),
7622 'type' => Controls_Manager::COLOR,
7623 'default' => '#9C9C9C',
7624 'selectors' => [
7625 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block [class*="king-addons-grid-extra-icon"] i' => 'color: {{VALUE}}',
7626 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block [class*="king-addons-grid-extra-icon"] svg' => 'fill: {{VALUE}}'
7627 ],
7628 'separator' => 'after',
7629 ]
7630 );
7631
7632 $this->end_controls_tab();
7633
7634 $this->start_controls_tab(
7635 'tab_grid_tax2_hover',
7636 [
7637 'label' => esc_html__('Hover', 'king-addons'),
7638 ]
7639 );
7640
7641 $this->add_control(
7642 'tax2_color_hr',
7643 [
7644 'label' => esc_html__('Color', 'king-addons'),
7645 'type' => Controls_Manager::COLOR,
7646 'default' => '#ffffff',
7647 'selectors' => [
7648 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a:hover' => 'color: {{VALUE}}',
7649 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-pointer-item:before' => 'background-color: {{VALUE}}',
7650 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-pointer-item:after' => 'background-color: {{VALUE}}',
7651 ],
7652 ]
7653 );
7654
7655 $this->add_control(
7656 'tax2_bg_color_hr',
7657 [
7658 'label' => esc_html__('Background Color', 'king-addons'),
7659 'type' => Controls_Manager::COLOR,
7660 'default' => '#4D02D8',
7661 'selectors' => [
7662 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a:hover' => 'background-color: {{VALUE}}',
7663 ]
7664 ]
7665 );
7666
7667 $this->add_control(
7668 'tax2_border_color_hr',
7669 [
7670 'label' => esc_html__('Border Color', 'king-addons'),
7671 'type' => Controls_Manager::COLOR,
7672 'default' => '#E8E8E8',
7673 'selectors' => [
7674 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a:hover' => 'border-color: {{VALUE}}',
7675 ],
7676 ]
7677 );
7678
7679 $this->add_control_tax2_pointer_color_hr();
7680
7681 $this->end_controls_tab();
7682
7683 $this->end_controls_tabs();
7684
7685 $this->add_control_tax2_pointer();
7686
7687 $this->add_control_tax2_pointer_height();
7688
7689 $this->add_control_tax2_pointer_animation();
7690
7691 $this->add_control(
7692 'tax2_transition_duration',
7693 [
7694 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
7695 'type' => Controls_Manager::NUMBER,
7696 'default' => 0.1,
7697 'min' => 0,
7698 'max' => 5,
7699 'step' => 0.1,
7700 'selectors' => [
7701 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'transition-duration: {{VALUE}}s',
7702 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-pointer-item:before' => 'transition-duration: {{VALUE}}s',
7703 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-pointer-item:after' => 'transition-duration: {{VALUE}}s',
7704 ],
7705 'separator' => 'after',
7706 ]
7707 );
7708
7709 $this->add_group_control(
7710 Group_Control_Typography::get_type(),
7711 [
7712 'name' => 'tax2_typography',
7713 'selector' => '{{WRAPPER}} .king-addons-grid-tax-style-2'
7714 ]
7715 );
7716
7717 $this->add_control(
7718 'tax2_border_type',
7719 [
7720 'label' => esc_html__('Border Type', 'king-addons'),
7721 'type' => Controls_Manager::SELECT,
7722 'options' => [
7723 'none' => esc_html__('None', 'king-addons'),
7724 'solid' => esc_html__('Solid', 'king-addons'),
7725 'double' => esc_html__('Double', 'king-addons'),
7726 'dotted' => esc_html__('Dotted', 'king-addons'),
7727 'dashed' => esc_html__('Dashed', 'king-addons'),
7728 'groove' => esc_html__('Groove', 'king-addons'),
7729 ],
7730 'default' => 'none',
7731 'selectors' => [
7732 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'border-style: {{VALUE}};',
7733 ],
7734 'render_type' => 'template',
7735 'separator' => 'before',
7736 ]
7737 );
7738
7739 $this->add_control(
7740 'tax2_border_width',
7741 [
7742 'label' => esc_html__('Border Width', 'king-addons'),
7743 'type' => Controls_Manager::DIMENSIONS,
7744 'size_units' => ['px'],
7745 'default' => [
7746 'top' => 1,
7747 'right' => 1,
7748 'bottom' => 1,
7749 'left' => 1,
7750 ],
7751 'selectors' => [
7752 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
7753 ],
7754 'render_type' => 'template',
7755 'condition' => [
7756 'tax2_border_type!' => 'none',
7757 ],
7758 ]
7759 );
7760
7761 $this->add_control(
7762 'tax2_text_spacing',
7763 [
7764 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
7765 'type' => Controls_Manager::SLIDER,
7766 'size_units' => ['px'],
7767 'range' => [
7768 'px' => [
7769 'min' => 0,
7770 'max' => 25,
7771 ],
7772 ],
7773 'default' => [
7774 'unit' => 'px',
7775 'size' => 5,
7776 ],
7777 'selectors' => [
7778 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
7779 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
7780 ],
7781 'separator' => 'before',
7782 ]
7783 );
7784
7785 $this->add_control(
7786 'tax2_icon_spacing',
7787 [
7788 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
7789 'type' => Controls_Manager::SLIDER,
7790 'size_units' => ['px'],
7791 'range' => [
7792 'px' => [
7793 'min' => 0,
7794 'max' => 25,
7795 ],
7796 ],
7797 'default' => [
7798 'unit' => 'px',
7799 'size' => 5,
7800 ],
7801 'selectors' => [
7802 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
7803 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
7804 ],
7805 ]
7806 );
7807
7808 $this->add_control(
7809 'tax2_gutter',
7810 [
7811 'label' => esc_html__('Gutter', 'king-addons'),
7812 'type' => Controls_Manager::SLIDER,
7813 'size_units' => ['px'],
7814 'range' => [
7815 'px' => [
7816 'min' => 0,
7817 'max' => 20,
7818 ],
7819 ],
7820 'default' => [
7821 'unit' => 'px',
7822 'size' => 3,
7823 ],
7824 'selectors' => [
7825 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'margin-right: {{SIZE}}{{UNIT}};',
7826 ],
7827 'render_type' => 'template',
7828 'separator' => 'before',
7829 ]
7830 );
7831
7832 $this->add_responsive_control(
7833 'tax2_padding',
7834 [
7835 'label' => esc_html__('Padding', 'king-addons'),
7836 'type' => Controls_Manager::DIMENSIONS,
7837 'size_units' => ['px', '%'],
7838 'default' => [
7839 'top' => 0,
7840 'right' => 10,
7841 'bottom' => 0,
7842 'left' => 10,
7843 ],
7844 'selectors' => [
7845 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
7846 ],
7847 'render_type' => 'template',
7848 ]
7849 );
7850
7851 $this->add_responsive_control(
7852 'tax2_margin',
7853 [
7854 'label' => esc_html__('Margin', 'king-addons'),
7855 'type' => Controls_Manager::DIMENSIONS,
7856 'size_units' => ['px', '%'],
7857 'default' => [
7858 'top' => 0,
7859 'right' => 0,
7860 'bottom' => 0,
7861 'left' => 0,
7862 ],
7863 'selectors' => [
7864 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
7865 ],
7866 'render_type' => 'template',
7867 ]
7868 );
7869
7870 $this->add_control(
7871 'tax2_radius',
7872 [
7873 'label' => esc_html__('Border Radius', 'king-addons'),
7874 'type' => Controls_Manager::DIMENSIONS,
7875 'size_units' => ['px', '%'],
7876 'default' => [
7877 'top' => 3,
7878 'right' => 3,
7879 'bottom' => 3,
7880 'left' => 3,
7881 ],
7882 'selectors' => [
7883 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
7884 ],
7885 'separator' => 'before',
7886 ]
7887 );
7888
7889 $this->end_controls_section();
7890
7891
7892 $this->add_section_style_custom_field1();
7893
7894
7895 $this->add_section_style_custom_field2();
7896
7897
7898 $this->add_section_style_custom_field3();
7899
7900
7901 $this->add_section_style_custom_field4();
7902
7903
7904 $this->start_controls_section(
7905 'settings_section_style_grid_slider_nav',
7906 [
7907 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Slider Navigation', 'king-addons'),
7908 'tab' => Controls_Manager::TAB_STYLE,
7909 'condition' => [
7910 'layout_select' => 'slider',
7911 ],
7912 ]
7913 );
7914
7915 $this->start_controls_tabs('tabs_grid_slider_nav_style');
7916
7917 $this->start_controls_tab(
7918 'tab_grid_slider_nav_normal',
7919 [
7920 'label' => esc_html__('Normal', 'king-addons'),
7921 ]
7922 );
7923
7924 $this->add_control(
7925 'grid_slider_nav_color',
7926 [
7927 'label' => esc_html__('Color', 'king-addons'),
7928 'type' => Controls_Manager::COLOR,
7929 'default' => '#5B03FF',
7930 'selectors' => [
7931 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'color: {{VALUE}};',
7932 '{{WRAPPER}} .king-addons-grid-slider-arrow svg' => 'fill: {{VALUE}};',
7933 ],
7934 ]
7935 );
7936
7937 $this->add_control(
7938 'grid_slider_nav_bg_color',
7939 [
7940 'label' => esc_html__('Background Color', 'king-addons'),
7941 'type' => Controls_Manager::COLOR,
7942 'selectors' => [
7943 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'background-color: {{VALUE}};',
7944 ],
7945 ]
7946 );
7947
7948 $this->add_control(
7949 'grid_slider_nav_border_color',
7950 [
7951 'label' => esc_html__('Border Color', 'king-addons'),
7952 'type' => Controls_Manager::COLOR,
7953 'default' => 'rgba(255,255,255,0.8)',
7954 'selectors' => [
7955 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'border-color: {{VALUE}};',
7956 ],
7957 ]
7958 );
7959
7960 $this->end_controls_tab();
7961
7962 $this->start_controls_tab(
7963 'tab_grid_slider_nav_hover',
7964 [
7965 'label' => esc_html__('Hover', 'king-addons'),
7966 ]
7967 );
7968
7969 $this->add_control(
7970 'grid_slider_nav_hover_color',
7971 [
7972 'label' => esc_html__('Color', 'king-addons'),
7973 'type' => Controls_Manager::COLOR,
7974 'default' => '#4D02D8',
7975 'selectors' => [
7976 '{{WRAPPER}} .king-addons-grid-slider-arrow:hover' => 'color: {{VALUE}};',
7977 '{{WRAPPER}} .king-addons-grid-slider-arrow:hover svg' => 'fill: {{VALUE}};',
7978 ],
7979 ]
7980 );
7981
7982 $this->add_control(
7983 'grid_slider_nav_hover_bg_color',
7984 [
7985 'label' => esc_html__('Background Color', 'king-addons'),
7986 'type' => Controls_Manager::COLOR,
7987 'selectors' => [
7988 '{{WRAPPER}} .king-addons-grid-slider-arrow:hover' => 'background-color: {{VALUE}};',
7989 ],
7990 ]
7991 );
7992
7993 $this->add_control(
7994 'grid_slider_nav_hover_border_color',
7995 [
7996 'label' => esc_html__('Border Color', 'king-addons'),
7997 'type' => Controls_Manager::COLOR,
7998 'selectors' => [
7999 '{{WRAPPER}} .king-addons-grid-slider-arrow:hover' => 'border-color: {{VALUE}};',
8000 ],
8001 ]
8002 );
8003
8004 $this->end_controls_tab();
8005
8006 $this->end_controls_tabs();
8007
8008 $this->add_control(
8009 'grid_slider_nav_transition_duration',
8010 [
8011 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
8012 'type' => Controls_Manager::NUMBER,
8013 'default' => 0.1,
8014 'min' => 0,
8015 'max' => 5,
8016 'step' => 0.1,
8017 'selectors' => [
8018 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'transition-duration: {{VALUE}}s',
8019 '{{WRAPPER}} .king-addons-grid-slider-arrow svg' => 'transition-duration: {{VALUE}}s',
8020 ],
8021 'separator' => 'before',
8022 ]
8023 );
8024
8025 $this->add_responsive_control(
8026 'grid_slider_nav_font_size',
8027 [
8028 'label' => esc_html__('Font Size', 'king-addons'),
8029 'type' => Controls_Manager::SLIDER,
8030 'size_units' => ['px',],
8031 'range' => [
8032 'px' => [
8033 'min' => 10,
8034 'max' => 200,
8035 ],
8036 ],
8037 'default' => [
8038 'unit' => 'px',
8039 'size' => 25,
8040 ],
8041 'selectors' => [
8042 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'font-size: {{SIZE}}{{UNIT}};',
8043 '{{WRAPPER}} .king-addons-grid-slider-arrow svg' => 'width: {{SIZE}}{{UNIT}};',
8044 ],
8045 'separator' => 'before',
8046 ]
8047 );
8048
8049 $this->add_responsive_control(
8050 'grid_slider_nav_size',
8051 [
8052 'label' => esc_html__('Box Size', 'king-addons'),
8053 'type' => Controls_Manager::SLIDER,
8054 'size_units' => ['px',],
8055 'range' => [
8056 'px' => [
8057 'min' => 10,
8058 'max' => 200,
8059 ],
8060 ],
8061 'default' => [
8062 'unit' => 'px',
8063 'size' => 60,
8064 ],
8065 'selectors' => [
8066 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};',
8067 ],
8068 'separator' => 'after',
8069 ]
8070 );
8071
8072 $this->add_control(
8073 'grid_slider_nav_border_type',
8074 [
8075 'label' => esc_html__('Border Type', 'king-addons'),
8076 'type' => Controls_Manager::SELECT,
8077 'options' => [
8078 'none' => esc_html__('None', 'king-addons'),
8079 'solid' => esc_html__('Solid', 'king-addons'),
8080 'double' => esc_html__('Double', 'king-addons'),
8081 'dotted' => esc_html__('Dotted', 'king-addons'),
8082 'dashed' => esc_html__('Dashed', 'king-addons'),
8083 'groove' => esc_html__('Groove', 'king-addons'),
8084 ],
8085 'default' => 'none',
8086 'selectors' => [
8087 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'border-style: {{VALUE}};',
8088 ],
8089 ]
8090 );
8091
8092 $this->add_control(
8093 'grid_slider_nav_border_width',
8094 [
8095 'label' => esc_html__('Border Width', 'king-addons'),
8096 'type' => Controls_Manager::DIMENSIONS,
8097 'size_units' => ['px'],
8098 'default' => [
8099 'top' => 2,
8100 'right' => 2,
8101 'bottom' => 2,
8102 'left' => 2,
8103 ],
8104 'selectors' => [
8105 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
8106 ],
8107 'condition' => [
8108 'grid_slider_nav_border_type!' => 'none',
8109 ],
8110 ]
8111 );
8112
8113 $this->add_control(
8114 'grid_slider_nav_border_radius',
8115 [
8116 'label' => esc_html__('Border Radius', 'king-addons'),
8117 'type' => Controls_Manager::DIMENSIONS,
8118 'size_units' => ['px', '%'],
8119 'selectors' => [
8120 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
8121 ],
8122 'separator' => 'after',
8123 ]
8124 );
8125
8126 $this->add_control_stack_grid_slider_nav_position();
8127
8128 $this->end_controls_section();
8129
8130
8131 $this->start_controls_section(
8132 'settings_section_style_grid_slider_dots',
8133 [
8134 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Slider Pagination', 'king-addons'),
8135 'tab' => Controls_Manager::TAB_STYLE,
8136 'condition' => [
8137 'layout_select' => 'slider',
8138 ],
8139 ]
8140 );
8141
8142 $this->start_controls_tabs('tabs_grid_slider_dots');
8143
8144 $this->start_controls_tab(
8145 'tab_grid_slider_dots_normal',
8146 [
8147 'label' => esc_html__('Normal', 'king-addons'),
8148 ]
8149 );
8150
8151 $this->add_control(
8152 'grid_slider_dots_bg_color',
8153 [
8154 'label' => esc_html__('Background Color', 'king-addons'),
8155 'type' => Controls_Manager::COLOR,
8156 'default' => 'rgba(0,0,0,0.35)',
8157 'selectors' => [
8158 '{{WRAPPER}} .king-addons-grid-slider-dot' => 'background-color: {{VALUE}};',
8159 ],
8160 ]
8161 );
8162
8163 $this->add_control(
8164 'grid_slider_dots_border_color',
8165 [
8166 'label' => esc_html__('Border Color', 'king-addons'),
8167 'type' => Controls_Manager::COLOR,
8168 'selectors' => [
8169 '{{WRAPPER}} .king-addons-grid-slider-dot' => 'border-color: {{VALUE}}',
8170 ],
8171 ]
8172 );
8173
8174 $this->end_controls_tab();
8175
8176 $this->start_controls_tab(
8177 'tab_grid_slider_dots_active',
8178 [
8179 'label' => esc_html__('Active', 'king-addons'),
8180 ]
8181 );
8182
8183 $this->add_control(
8184 'grid_slider_dots_active_bg_color',
8185 [
8186 'label' => esc_html__('Background Color', 'king-addons'),
8187 'type' => Controls_Manager::COLOR,
8188 'default' => '#5B03FF',
8189 'selectors' => [
8190 '{{WRAPPER}} .king-addons-grid-slider-dots .slick-active .king-addons-grid-slider-dot' => 'background-color: {{VALUE}}',
8191 ],
8192 ]
8193 );
8194
8195 $this->add_control(
8196 'grid_slider_dots_active_border_color',
8197 [
8198 'label' => esc_html__('Border Color', 'king-addons'),
8199 'type' => Controls_Manager::COLOR,
8200 'selectors' => [
8201 '{{WRAPPER}} .king-addons-grid-slider-dots .slick-active .king-addons-grid-slider-dot' => 'border-color: {{VALUE}}',
8202 ],
8203 ]
8204 );
8205
8206 $this->end_controls_tab();
8207
8208 $this->end_controls_tabs();
8209
8210 $this->add_responsive_control(
8211 'grid_slider_dots_width',
8212 [
8213 'label' => esc_html__('Box Width', 'king-addons'),
8214 'type' => Controls_Manager::SLIDER,
8215 'size_units' => ['px',],
8216 'range' => [
8217 'px' => [
8218 'min' => 1,
8219 'max' => 100,
8220 ],
8221 ],
8222 'default' => [
8223 'unit' => 'px',
8224 'size' => 8,
8225 ],
8226 'selectors' => [
8227 '{{WRAPPER}} .king-addons-grid-slider-dot' => 'width: {{SIZE}}{{UNIT}};',
8228 ],
8229 'separator' => 'before',
8230 'render_type' => 'template'
8231 ]
8232 );
8233
8234 $this->add_responsive_control(
8235 'grid_slider_dots_height',
8236 [
8237 'label' => esc_html__('Box Height', 'king-addons'),
8238 'type' => Controls_Manager::SLIDER,
8239 'size_units' => ['px',],
8240 'range' => [
8241 'px' => [
8242 'min' => 1,
8243 'max' => 100,
8244 ],
8245 ],
8246 'default' => [
8247 'unit' => 'px',
8248 'size' => 8,
8249 ],
8250 'selectors' => [
8251 '{{WRAPPER}} .king-addons-grid-slider-dot' => 'height: {{SIZE}}{{UNIT}};',
8252 ],
8253 'render_type' => 'template'
8254 ]
8255 );
8256
8257 $this->add_control(
8258 'grid_slider_dots_border_type',
8259 [
8260 'label' => esc_html__('Border Type', 'king-addons'),
8261 'type' => Controls_Manager::SELECT,
8262 'options' => [
8263 'none' => esc_html__('None', 'king-addons'),
8264 'solid' => esc_html__('Solid', 'king-addons'),
8265 'double' => esc_html__('Double', 'king-addons'),
8266 'dotted' => esc_html__('Dotted', 'king-addons'),
8267 'dashed' => esc_html__('Dashed', 'king-addons'),
8268 'groove' => esc_html__('Groove', 'king-addons'),
8269 ],
8270 'default' => 'none',
8271 'selectors' => [
8272 '{{WRAPPER}} .king-addons-grid-slider-dot' => 'border-style: {{VALUE}};',
8273 ],
8274 'render_type' => 'template',
8275 'separator' => 'before',
8276 ]
8277 );
8278
8279 $this->add_control(
8280 'grid_slider_dots_border_width',
8281 [
8282 'label' => esc_html__('Border Width', 'king-addons'),
8283 'type' => Controls_Manager::DIMENSIONS,
8284 'size_units' => ['px'],
8285 'default' => [
8286 'top' => 1,
8287 'right' => 1,
8288 'bottom' => 1,
8289 'left' => 1,
8290 ],
8291 'selectors' => [
8292 '{{WRAPPER}} .king-addons-grid-slider-dot' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
8293 ],
8294 'render_type' => 'template',
8295 'condition' => [
8296 'grid_slider_dots_border_type!' => 'none',
8297 ],
8298 ]
8299 );
8300
8301 $this->add_control(
8302 'grid_slider_dots_border_radius',
8303 [
8304 'label' => esc_html__('Border Radius', 'king-addons'),
8305 'type' => Controls_Manager::DIMENSIONS,
8306 'default' => [
8307 'top' => 50,
8308 'right' => 50,
8309 'bottom' => 50,
8310 'left' => 50,
8311 'unit' => '%',
8312 ],
8313 'size_units' => ['px', '%'],
8314 'selectors' => [
8315 '{{WRAPPER}} .king-addons-grid-slider-dot' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
8316 ],
8317 'separator' => 'before',
8318 ]
8319 );
8320
8321 $this->add_responsive_control(
8322 'grid_slider_dots_gutter',
8323 [
8324 'type' => Controls_Manager::SLIDER,
8325 'label' => esc_html__('Gutter', 'king-addons'),
8326 'size_units' => ['px'],
8327 'range' => [
8328 'px' => [
8329 'min' => 0,
8330 'max' => 100,
8331 ],
8332 ],
8333 'default' => [
8334 'unit' => 'px',
8335 'size' => 7,
8336 ],
8337 'selectors' => [
8338 '{{WRAPPER}}.king-addons-grid-slider-dots-horizontal .king-addons-grid-slider-dot' => 'margin-right: {{SIZE}}{{UNIT}};',
8339 '{{WRAPPER}}.king-addons-grid-slider-dots-vertical .king-addons-grid-slider-dot' => 'margin-bottom: {{SIZE}}{{UNIT}};',
8340 ],
8341 'render_type' => 'template',
8342 'separator' => 'before',
8343 ]
8344 );
8345
8346 $this->add_control_grid_slider_dots_hr();
8347
8348 $this->add_responsive_control(
8349 'grid_slider_dots_vr',
8350 [
8351 'type' => Controls_Manager::SLIDER,
8352 'label' => esc_html__('Vertical Position', 'king-addons'),
8353 'size_units' => ['%', 'px'],
8354 'range' => [
8355 '%' => [
8356 'min' => -20,
8357 'max' => 120,
8358 ],
8359 'px' => [
8360 'min' => -200,
8361 'max' => 2000,
8362 ],
8363 ],
8364 'default' => [
8365 'unit' => '%',
8366 'size' => 96,
8367 ],
8368 'selectors' => [
8369 '{{WRAPPER}} .king-addons-grid-slider-dots' => 'top: {{SIZE}}{{UNIT}};',
8370 ],
8371 ]
8372 );
8373
8374 $this->end_controls_section();
8375
8376 }
8377
8378 public function get_related_taxonomies()
8379 {
8380 $post_types = Core::getCustomTypes('post', false);
8381 $relations = [];
8382
8383 // Simply assign the array returned by get_object_taxonomies() to avoid extra loops
8384 foreach ($post_types as $slug => $title) {
8385 $relations[$slug] = get_object_taxonomies($slug);
8386 }
8387
8388 return json_encode($relations);
8389 }
8390
8391 public function get_max_num_pages()
8392 {
8393 $query = new WP_Query($this->get_main_query_args());
8394 $max_num_pages = (int)ceil($query->max_num_pages);
8395 wp_reset_postdata();
8396 return $max_num_pages;
8397 }
8398
8399 public function get_main_query_args()
8400 {
8401 $settings = Core::displaySettings($this);
8402
8403 // Detect paged
8404 $paged = get_query_var('paged') ?: (get_query_var('page') ?: 1);
8405
8406 // Build author string if needed
8407 $author = !empty($settings['query_author']) ? implode(',', $settings['query_author']) : '';
8408
8409 // Adjust posts_per_page for slider (premium check)
8410 if (
8411 'slider' === $settings['layout_select'] &&
8412 king_addons_freemius()->can_use_premium_code__premium_only()
8413 ) {
8414 $slidesToShow = $settings['query_slides_to_show'] ?: -1;
8415 $settings['query_posts_per_page'] = min($slidesToShow, 4);
8416 }
8417
8418 // Slider forces paged to 1
8419 if ('slider' === $settings['layout_select']) {
8420 $paged = 1;
8421 }
8422
8423 // Ensure offset is set
8424 $settings['query_offset'] = $settings['query_offset'] ?? 0;
8425
8426 // Calculate offset
8427 $postsPerPage = $settings['query_posts_per_page'] ?? 0;
8428 if (empty($postsPerPage) && !(
8429 'slider' === $settings['layout_select'] &&
8430 king_addons_freemius()->can_use_premium_code__premium_only()
8431 )) {
8432 $postsPerPage = 999;
8433 }
8434
8435 $offset = ($paged - 1) * (int)$postsPerPage + (int)$settings['query_offset'];
8436
8437 // If premium not available, reset certain settings
8438 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
8439 $settings['query_randomize'] = '';
8440 $settings['order_posts'] = 'date';
8441 }
8442
8443 // Determine "orderby"
8444 $query_order_by = !empty($settings['query_randomize'])
8445 ? $settings['query_randomize']
8446 : $settings['order_posts'];
8447
8448 // Determine excluded posts array
8449 $excludeKey = 'query_exclude_' . $settings['query_source'];
8450 $post__not_in = !empty($settings[$excludeKey]) ? $settings[$excludeKey] : [];
8451
8452 // Default query args
8453 $args = [
8454 'post_type' => $settings['query_source'],
8455 'tax_query' => $this->get_tax_query_args(),
8456 'post__not_in' => $post__not_in,
8457 'posts_per_page' => $postsPerPage,
8458 'orderby' => $query_order_by,
8459 'author' => $author,
8460 'paged' => $paged,
8461 'offset' => $offset,
8462 ];
8463
8464 // Handle meta_value ordering
8465 if ('meta_value' === $query_order_by) {
8466 $args['meta_key'] = $settings['order_posts_by_acf'];
8467 }
8468
8469 // Handle scheduled/future posts
8470 $args['post_status'] = (
8471 'yes' === $settings['display_scheduled_posts'] &&
8472 king_addons_freemius()->can_use_premium_code__premium_only()
8473 )
8474 ? 'future'
8475 : 'publish';
8476
8477 // Exclude posts with no thumbnail if requested
8478 if ('yes' === $settings['query_exclude_no_images']) {
8479 $args['meta_key'] = '_thumbnail_id';
8480 }
8481
8482 // MANUAL selection overrides everything else
8483 if ('manual' === $settings['query_selection']) {
8484 $manualKey = 'query_manual_' . $settings['query_source'];
8485 $post_ids = !empty($settings[$manualKey]) ? $settings[$manualKey] : [''];
8486
8487 $args = [
8488 'post_type' => $settings['query_source'],
8489 'post__in' => $post_ids,
8490 'ignore_sticky_posts' => 1,
8491 'posts_per_page' => $postsPerPage,
8492 'orderby' => $query_order_by,
8493 'paged' => $paged,
8494 ];
8495 }
8496
8497 // "CURRENT" uses global $wp_query
8498 if ('current' === $settings['query_source']) {
8499 global $wp_query;
8500 $args = $wp_query->query_vars;
8501 $args['orderby'] = $query_order_by;
8502
8503 if (is_post_type_archive()) {
8504 $args['posts_per_page'] = (int)get_option('king_addons_cpt_ppp_' . $args['post_type'], 10);
8505 } else {
8506 $args['posts_per_page'] = (int)get_option('posts_per_page');
8507 }
8508
8509 $args['offset'] = ($paged - 1) * $args['posts_per_page'] + (int)$settings['query_offset'];
8510
8511 // Build a small tax_query if categories are passed in GET
8512 $tax_query = [];
8513 foreach (['category', 'king_addons_select_category'] as $catParam) {
8514 if (!empty($_GET[$catParam]) && $_GET[$catParam] !== '0') {
8515 $tax_query[] = [
8516 'taxonomy' => 'category',
8517 'field' => 'id',
8518 'terms' => sanitize_text_field($_GET[$catParam]),
8519 ];
8520 }
8521 }
8522 if (!empty($tax_query)) {
8523 $args['tax_query'] = $tax_query;
8524 }
8525 }
8526
8527 // "RELATED" posts
8528 if ('related' === $settings['query_source']) {
8529 $args = [
8530 'post_type' => get_post_type(get_the_ID()),
8531 'tax_query' => $this->get_tax_query_args(),
8532 'post__not_in' => [get_the_ID()],
8533 'ignore_sticky_posts' => 1,
8534 'posts_per_page' => $postsPerPage,
8535 'orderby' => $query_order_by,
8536 'offset' => $offset,
8537 ];
8538 }
8539
8540 // Order direction (unless random)
8541 if ('rand' !== $query_order_by) {
8542 $args['order'] = $settings['order_direction'];
8543 }
8544
8545 return $args;
8546 }
8547
8548 public function get_tax_query_args()
8549 {
8550 $settings = Core::displaySettings($this);
8551
8552 // "RELATED" means match the same terms as current post in a chosen taxonomy
8553 if ('related' === $settings['query_source']) {
8554 return [[
8555 'taxonomy' => $settings['query_tax_selection'],
8556 'field' => 'term_id',
8557 'terms' => wp_get_object_terms(
8558 get_the_ID(),
8559 $settings['query_tax_selection'],
8560 ['fields' => 'ids']
8561 ),
8562 ]];
8563 }
8564
8565 // Otherwise, gather chosen taxonomies
8566 $tax_query = [];
8567 $taxonomies = get_object_taxonomies($settings['query_source']);
8568
8569 foreach ($taxonomies as $tax) {
8570 $fieldKey = 'query_taxonomy_' . $tax;
8571 if (!empty($settings[$fieldKey])) {
8572 $tax_query[] = [
8573 'taxonomy' => $tax,
8574 'field' => 'id',
8575 'terms' => $settings[$fieldKey],
8576 ];
8577 }
8578 }
8579 return $tax_query;
8580 }
8581
8582 public function get_animation_class($data, $object)
8583 {
8584 if (
8585 'overlay' !== $object &&
8586 'yes' === ($data[$object . '_animation_disable_mobile'] ?? '') &&
8587 wp_is_mobile()
8588 ) {
8589 return '';
8590 }
8591
8592 $animation = Grid_Ajax_Security::sanitize_animation($data[$object . '_animation'] ?? 'none');
8593 if ('none' === $animation) {
8594 return '';
8595 }
8596
8597 $class = ' king-addons-' . sanitize_html_class((string) $object) . '-' . $animation;
8598 $class .= ' king-addons-anim-size-' . Grid_Ajax_Security::sanitize_animation_size($data[$object . '_animation_size'] ?? 'large');
8599 $class .= ' king-addons-animation-timing-' . Grid_Ajax_Security::sanitize_animation_timing($data[$object . '_animation_timing'] ?? 'ease-default');
8600 if ('yes' === Grid_Ajax_Security::sanitize_yes_no_switcher($data[$object . '_animation_tr'] ?? '')) {
8601 $class .= ' king-addons-anim-transparency';
8602 }
8603 return $class;
8604 }
8605
8606 public function get_image_effect_class($settings)
8607 {
8608 $effect = Grid_Ajax_Security::sanitize_image_effect($settings['image_effects'] ?? 'none');
8609 $class = '';
8610 if ('none' !== $effect) {
8611 $class .= ' king-addons-' . $effect;
8612 }
8613 if ('slide' !== $effect) {
8614 $class .= ' king-addons-effect-size-' . Grid_Ajax_Security::sanitize_image_effect_size($settings['image_effects_size'] ?? 'medium');
8615 } else {
8616 $class .= ' king-addons-effect-dir-' . Grid_Ajax_Security::sanitize_image_effect_direction($settings['image_effects_direction'] ?? 'bottom');
8617 }
8618 return $class;
8619 }
8620
8621 public function render_password_protected_input()
8622 {
8623 if (!post_password_required()) {
8624 return;
8625 }
8626
8627 add_filter('the_password_form', function () {
8628 $output = '<form action="' . esc_url(home_url('wp-login.php?action=postpass')) . '" method="post">';
8629 $output .= '<i class="fas fa-lock"></i>';
8630 $output .= '<p>' . esc_html(get_the_title()) . '</p>';
8631 $output .= '<input type="password" name="post_password" id="post-' . esc_attr(get_the_id()) . '" placeholder="' . esc_html__('Type and hit Enter...', 'king-addons') . '">';
8632 $output .= '</form>';
8633 return $output;
8634 });
8635
8636 echo '<div class="king-addons-grid-item-protected king-addons-cv-container">';
8637 echo ' <div class="king-addons-cv-outer">';
8638 echo ' <div class="king-addons-cv-inner">';
8639 echo get_the_password_form();
8640 echo ' </div>';
8641 echo ' </div>';
8642 echo '</div>';
8643 }
8644
8645 public function render_post_thumbnail($settings)
8646 {
8647 $id = get_post_thumbnail_id();
8648 $src = Group_Control_Image_Size::get_attachment_image_src($id, 'layout_image_crop', $settings);
8649
8650 // A post with no featured image would otherwise drop the whole media block,
8651 // and the cards beside it in the row would no longer line up.
8652 if (!$src) {
8653 $src = Utils::get_placeholder_image_src();
8654 }
8655
8656 // Secondary image
8657 $sec_meta = get_post_meta(get_the_ID(), 'king_addons_secondary_image_id', true);
8658 $src2 = !empty($sec_meta)
8659 ? Group_Control_Image_Size::get_attachment_image_src($sec_meta, 'layout_image_crop', $settings)
8660 : '';
8661
8662 // Determine alt
8663 $alt = '' === wp_get_attachment_caption($id)
8664 ? get_the_title()
8665 : wp_get_attachment_caption($id);
8666
8667 echo '<div class="king-addons-grid-image-wrap" data-src="' . esc_url($src) . '" data-img-on-hover="' . esc_attr($settings['secondary_img_on_hover']) . '" data-src-secondary="' . esc_url($src2) . '">';
8668
8669 // Lazy loading vs normal
8670 /** @noinspection PhpIfWithCommonPartsInspection */
8671 if ('yes' === $settings['grid_lazy_loading']) {
8672 echo '<img loading="lazy" src="'.esc_url($src).'"
8673 alt="' . esc_attr($alt) . '" class="king-addons-hidden-image king-addons-animation-timing-' . esc_attr($settings['image_effects_animation_timing']) . '">';
8674 if ('yes' === $settings['secondary_img_on_hover']) {
8675 echo '<img src="' . esc_url($src2) . '" alt="' . esc_attr($alt) . '" class="king-addons-hidden-img king-addons-animation-timing-' . esc_attr($settings['image_effects_animation_timing']) . '">';
8676 }
8677 } else {
8678 echo '<img src="' . esc_url($src) . '" alt="' . esc_attr($alt) . '" class="king-addons-animation-timing-' . esc_attr($settings['image_effects_animation_timing']) . '">';
8679 if ('yes' === $settings['secondary_img_on_hover']) {
8680 echo '<img src="' . esc_url($src2) . '" alt="' . esc_attr($alt) . '" class="king-addons-hidden-img king-addons-animation-timing-' . esc_attr($settings['image_effects_animation_timing']) . '">';
8681 }
8682 }
8683 echo '</div>';
8684 }
8685
8686 public function render_media_overlay($settings)
8687 {
8688 echo '<div class="king-addons-grid-media-hover-bg ' . esc_attr($this->get_animation_class($settings, 'overlay')) . '" data-url="' . esc_url(get_the_permalink()) . '">';
8689 if (king_addons_freemius()->can_use_premium_code__premium_only() && !empty($settings['overlay_image']['url'])) {
8690 echo '<img src="' . esc_url($settings['overlay_image']['url']) . '" alt="' . esc_attr($settings['overlay_image']['alt']) . '">';
8691 }
8692 echo '</div>';
8693 }
8694
8695 public function render_post_title($settings, $class)
8696 {
8697 // Fallback pointer for non-premium
8698 $title_pointer = king_addons_freemius()->can_use_premium_code__premium_only()
8699 ? (Core::displaySettings($this)['title_pointer'] ?? 'none')
8700 : 'none';
8701 $title_pointer_animation = king_addons_freemius()->can_use_premium_code__premium_only()
8702 ? (Core::displaySettings($this)['title_pointer_animation'] ?? 'fade')
8703 : 'fade';
8704
8705 $pointer_item_class = ($title_pointer !== 'none')
8706 ? 'class="king-addons-pointer-item"'
8707 : '';
8708
8709 $new_tab = ('yes' === Core::displaySettings($this)['open_links_in_new_tab']) ? '_blank' : '_self';
8710
8711 $class .= ' king-addons-pointer-' . $title_pointer;
8712 $class .= ' king-addons-pointer-line-fx king-addons-pointer-fx-' . $title_pointer_animation;
8713
8714 // Validate allowed HTML tags
8715 $tags_whitelist = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'span', 'p'];
8716 $element_title_tag = Core::validateHTMLTags($settings['element_title_tag'], 'h2', $tags_whitelist);
8717
8718 echo '<' . esc_attr($element_title_tag) . ' class="' . esc_attr($class) . '">';
8719 echo ' <div class="inner-block">';
8720 echo ' <a target="' . esc_attr($new_tab) . '" ' . $pointer_item_class . ' href="' . esc_url(get_the_permalink()) . '">';
8721 if ('word_count' === $settings['element_trim_text_by']) {
8722 echo esc_html(wp_trim_words(get_the_title(), $settings['element_word_count']));
8723 } else {
8724 echo esc_html(mb_substr(html_entity_decode(get_the_title()), 0, $settings['element_letter_count'])) . '...';
8725 }
8726 echo ' </a>';
8727 echo ' </div>';
8728 echo '</' . esc_attr($element_title_tag) . '>';
8729 }
8730
8731 public function render_post_content($settings, $class)
8732 {
8733 if ('' === get_the_content()) {
8734 return;
8735 }
8736 if ('yes' === $settings['element_dropcap']) {
8737 $class .= ' king-addons-enable-dropcap';
8738 }
8739
8740 echo '<div class="' . esc_attr($class) . '">';
8741 echo ' <div class="inner-block">';
8742 echo wp_kses_post(apply_filters('the_content', get_the_content()));
8743 echo ' </div>';
8744 echo '</div>';
8745 }
8746
8747 public function render_post_excerpt($settings, $class)
8748 {
8749 if ('' === get_the_excerpt()) {
8750 return;
8751 }
8752 if ('yes' === $settings['element_dropcap']) {
8753 $class .= ' king-addons-enable-dropcap';
8754 }
8755
8756 echo '<div class="' . esc_attr($class) . '">';
8757 echo ' <div class="inner-block">';
8758 if ('word_count' === $settings['element_trim_text_by']) {
8759 echo '<p>' . esc_html(wp_trim_words(get_the_excerpt(), $settings['element_word_count'])) . '</p>';
8760 } else {
8761 // slice letters
8762 $excerptLetters = implode('', array_slice(str_split(get_the_excerpt()), 0, $settings['element_letter_count']));
8763 echo '<p>' . esc_html($excerptLetters) . '...</p>';
8764 }
8765 echo ' </div>';
8766 echo '</div>';
8767 }
8768
8769 public function render_post_date($settings, $class)
8770 {
8771 echo '<div class="' . esc_attr($class) . '">';
8772 echo ' <div class="inner-block">';
8773 echo ' <span>';
8774
8775 if ('before' === $settings['element_extra_text_pos']) {
8776 echo '<span class="king-addons-grid-extra-text-left">' . esc_html($settings['element_extra_text']) . '</span>';
8777 }
8778 if ('before' === $settings['element_extra_icon_pos']) {
8779 ob_start();
8780 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
8781 $icon = ob_get_clean();
8782 echo '<span class="king-addons-grid-extra-icon-left">' . $icon . '</span>';
8783 }
8784
8785 if ('yes' === $settings['show_last_update_date']) {
8786 echo esc_html(get_the_modified_time(get_option('date_format')));
8787 } else {
8788 echo esc_html(apply_filters('the_date', get_the_date(), get_option('date_format'), '', ''));
8789 }
8790
8791 if ('after' === $settings['element_extra_icon_pos']) {
8792 ob_start();
8793 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
8794 $icon = ob_get_clean();
8795 echo '<span class="king-addons-grid-extra-icon-right">' . $icon . '</span>';
8796 }
8797 if ('after' === $settings['element_extra_text_pos']) {
8798 echo '<span class="king-addons-grid-extra-text-right">' . esc_html($settings['element_extra_text']) . '</span>';
8799 }
8800
8801 echo ' </span>';
8802 echo ' </div>';
8803 echo '</div>';
8804 }
8805
8806 public function render_post_time($settings, $class)
8807 {
8808 echo '<div class="' . esc_attr($class) . '">';
8809 echo ' <div class="inner-block">';
8810 echo ' <span>';
8811
8812 if ('before' === $settings['element_extra_text_pos']) {
8813 echo '<span class="king-addons-grid-extra-text-left">' . esc_html($settings['element_extra_text']) . '</span>';
8814 }
8815 if ('before' === $settings['element_extra_icon_pos']) {
8816 ob_start();
8817 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
8818 $icon = ob_get_clean();
8819 echo '<span class="king-addons-grid-extra-icon-left">' . $icon . '</span>';
8820 }
8821
8822 echo esc_html(get_the_time());
8823
8824 if ('after' === $settings['element_extra_icon_pos']) {
8825 ob_start();
8826 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
8827 $icon = ob_get_clean();
8828 echo '<span class="king-addons-grid-extra-icon-right">' . $icon . '</span>';
8829 }
8830 if ('after' === $settings['element_extra_text_pos']) {
8831 echo '<span class="king-addons-grid-extra-text-right">' . esc_html($settings['element_extra_text']) . '</span>';
8832 }
8833
8834 echo ' </span>';
8835 echo ' </div>';
8836 echo '</div>';
8837 }
8838
8839 public function render_post_author($settings, $class)
8840 {
8841 $author_id = get_post_field('post_author');
8842
8843 echo '<div class="' . esc_attr($class) . '">';
8844 echo ' <div class="inner-block">';
8845
8846 if ('before' === $settings['element_extra_text_pos']) {
8847 echo '<span class="king-addons-grid-extra-text-left">' . esc_html($settings['element_extra_text']) . '</span>';
8848 }
8849
8850 echo '<a href="' . esc_url(get_author_posts_url($author_id)) . '">';
8851
8852 if ('before' === $settings['element_extra_icon_pos']) {
8853 ob_start();
8854 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
8855 $icon = ob_get_clean();
8856 echo '<span class="king-addons-grid-extra-icon-left">' . $icon . '</span>';
8857 }
8858 if ('yes' === $settings['element_show_avatar']) {
8859 echo get_avatar($author_id, $settings['element_avatar_size']);
8860 }
8861
8862 echo '<span>' . esc_html(get_the_author_meta('display_name', $author_id)) . '</span>';
8863
8864 if ('after' === $settings['element_extra_icon_pos']) {
8865 ob_start();
8866 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
8867 $icon = ob_get_clean();
8868 echo '<span class="king-addons-grid-extra-icon-right">' . $icon . '</span>';
8869 }
8870
8871 echo '</a>';
8872
8873 if ('after' === $settings['element_extra_text_pos']) {
8874 echo '<span class="king-addons-grid-extra-text-right">' . esc_html($settings['element_extra_text']) . '</span>';
8875 }
8876
8877 echo ' </div>';
8878 echo '</div>';
8879 }
8880
8881 public function render_post_comments($settings, $class)
8882 {
8883 if (!comments_open()) {
8884 return;
8885 }
8886
8887 $count = get_comments_number();
8888 if ($count == 1) {
8889 $text = $count . ' ' . $settings['element_comments_text_2'];
8890 } elseif ($count > 1) {
8891 $text = $count . ' ' . $settings['element_comments_text_3'];
8892 } else {
8893 $text = $settings['element_comments_text_1'];
8894 }
8895
8896 echo '<div class="' . esc_attr($class) . '">';
8897 echo ' <div class="inner-block">';
8898
8899 if ('before' === $settings['element_extra_text_pos']) {
8900 echo '<span class="king-addons-grid-extra-text-left">' . esc_html($settings['element_extra_text']) . '</span>';
8901 }
8902
8903 echo '<a href="' . esc_url(get_comments_link()) . '">';
8904
8905 if ('before' === $settings['element_extra_icon_pos']) {
8906 ob_start();
8907 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
8908 $icon = ob_get_clean();
8909 echo '<span class="king-addons-grid-extra-icon-left">' . $icon . '</span>';
8910 }
8911
8912 echo '<span>' . esc_html($text) . '</span>';
8913
8914 if ('after' === $settings['element_extra_icon_pos']) {
8915 ob_start();
8916 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
8917 $icon = ob_get_clean();
8918 echo '<span class="king-addons-grid-extra-icon-right">' . $icon . '</span>';
8919 }
8920
8921 echo '</a>';
8922
8923 if ('after' === $settings['element_extra_text_pos']) {
8924 echo '<span class="king-addons-grid-extra-text-right">' . esc_html($settings['element_extra_text']) . '</span>';
8925 }
8926
8927 echo ' </div>';
8928 echo '</div>';
8929 }
8930
8931 public function render_post_read_more($settings, $class)
8932 {
8933 // Fallback animation for non-premium
8934 $read_more_animation = king_addons_freemius()->can_use_premium_code__premium_only()
8935 ? Core::displaySettings($this)['read_more_animation']
8936 : 'king-addons-button-none';
8937
8938 $new_tab = ('yes' === Core::displaySettings($this)['open_links_in_new_tab']) ? '_blank' : '_self';
8939
8940 echo '<div class="' . esc_attr($class) . '">';
8941 echo ' <div class="inner-block">';
8942 echo ' <a target="' . esc_attr($new_tab) . '" href="' . esc_url(get_the_permalink()) . '" class="king-addons-button-effect ' . esc_attr($read_more_animation) . '">';
8943
8944 if ('before' === $settings['element_extra_icon_pos']) {
8945 ob_start();
8946 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
8947 $icon = ob_get_clean();
8948 echo '<span class="king-addons-grid-extra-icon-left">' . $icon . '</span>';
8949 }
8950
8951 echo '<span>' . esc_html($settings['element_read_more_text']) . '</span>';
8952
8953 if ('after' === $settings['element_extra_icon_pos']) {
8954 ob_start();
8955 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
8956 $icon = ob_get_clean();
8957 echo '<span class="king-addons-grid-extra-icon-right">' . $icon . '</span>';
8958 }
8959
8960 echo ' </a>';
8961 echo ' </div>';
8962 echo '</div>';
8963 }
8964
8965 // Placeholder for premium-protected items
8966 public function render_post_likes($settings, $class, $post_id)
8967 {
8968 }
8969
8970 public function render_post_sharing_icons($settings, $class)
8971 {
8972 }
8973
8974 public function render_post_custom_field($settings, $class, $post_id)
8975 {
8976 }
8977
8978 public function render_post_lightbox($settings, $class, $post_id)
8979 {
8980 echo '<div class="' . esc_attr($class) . '">';
8981 echo ' <div class="inner-block">';
8982
8983 // Default to post thumbnail if set
8984 $lightbox_source = get_the_post_thumbnail_url($post_id);
8985
8986 // Handle Audio/Video meta
8987 if ('audio' === get_post_format()) {
8988 if ('meta' === $settings['element_lightbox_pfa_select']) {
8989 $meta_value = get_post_meta($post_id, $settings['element_lightbox_pfa_meta'], true);
8990 // Attempt to oEmbed
8991 if (false === strpos($meta_value, '<iframe ')) {
8992 add_filter('oembed_result', $posts_grid_filter = function ($html) {
8993 preg_match('/<iframe.*src=\"(.*)\".*><\/iframe>/isU', $html, $matches);
8994 return $matches[1] . '&auto_play=true';
8995 }, 50, 3);
8996 $track_url = wp_oembed_get($meta_value);
8997 remove_filter('oembed_result', $posts_grid_filter, 50);
8998 } else {
8999 $track_url = Core::filterOembedResults($meta_value);
9000 }
9001 $lightbox_source = $track_url;
9002 }
9003 } elseif ('video' === get_post_format()) {
9004 if ('meta' === $settings['element_lightbox_pfv_select']) {
9005 $meta_value = get_post_meta($post_id, $settings['element_lightbox_pfv_meta'], true);
9006 if (false === strpos($meta_value, '<iframe ')) {
9007 $video = Embed::get_video_properties($meta_value);
9008 } else {
9009 $video = Embed::get_video_properties(Core::filterOembedResults($meta_value));
9010 }
9011
9012 if (isset($video['provider'], $video['video_id'])) {
9013 if ('youtube' === $video['provider']) {
9014 $lightbox_source = 'https://www.youtube.com/embed/' . $video['video_id'] . '?feature=oembed&autoplay=1&controls=1';
9015 } elseif ('vimeo' === $video['provider']) {
9016 $lightbox_source = 'https://player.vimeo.com/video/' . $video['video_id'] . '?autoplay=1#t=0';
9017 }
9018 }
9019 }
9020 }
9021
9022 echo ' <span data-src="' . esc_url($lightbox_source) . '">';
9023
9024 if ('before' === $settings['element_extra_text_pos']) {
9025 echo '<span class="king-addons-grid-extra-text-left">' . esc_html($settings['element_extra_text']) . '</span>';
9026 }
9027
9028 echo ' <i class="' . esc_attr($settings['element_extra_icon']['value']) . '"></i>';
9029
9030 if ('after' === $settings['element_extra_text_pos']) {
9031 echo '<span class="king-addons-grid-extra-text-right">' . esc_html($settings['element_extra_text']) . '</span>';
9032 }
9033
9034 echo ' </span>';
9035
9036 if ('yes' === $settings['element_lightbox_overlay']) {
9037 echo '<div class="king-addons-grid-lightbox-overlay"></div>';
9038 }
9039
9040 echo ' </div>';
9041 echo '</div>';
9042 }
9043
9044 public function render_post_element_separator($settings, $class)
9045 {
9046 echo '<div class="' . esc_attr($class . ' ' . $settings['element_separator_style']) . '">';
9047 echo ' <div class="inner-block"><span></span></div>';
9048 echo '</div>';
9049 }
9050
9051 public function render_post_taxonomies($settings, $class, $post_id)
9052 {
9053 $terms = wp_get_post_terms($post_id, $settings['element_select']);
9054 if (empty($terms)) {
9055 return;
9056 }
9057
9058 // Handle pointer classes (premium or fallback)
9059 $tax1_pointer = king_addons_freemius()->can_use_premium_code__premium_only()
9060 ? (Core::displaySettings($this)['tax1_pointer'] ?? 'none')
9061 : 'none';
9062 $tax1_pointer_animation = king_addons_freemius()->can_use_premium_code__premium_only()
9063 ? (Core::displaySettings($this)['tax1_pointer_animation'] ?? 'fade')
9064 : 'fade';
9065 $tax2_pointer = king_addons_freemius()->can_use_premium_code__premium_only()
9066 ? (Core::displaySettings($this)['tax2_pointer'] ?? 'none')
9067 : 'none';
9068 $tax2_pointer_animation = king_addons_freemius()->can_use_premium_code__premium_only()
9069 ? (Core::displaySettings($this)['tax2_pointer_animation'] ?? 'fade')
9070 : 'fade';
9071
9072 // Decide which pointer to use
9073 if ('king-addons-grid-tax-style-1' === $settings['element_tax_style']) {
9074 $class .= ' king-addons-pointer-' . $tax1_pointer;
9075 $class .= ' king-addons-pointer-line-fx king-addons-pointer-fx-' . $tax1_pointer_animation;
9076 } else {
9077 $class .= ' king-addons-pointer-' . $tax2_pointer;
9078 $class .= ' king-addons-pointer-line-fx king-addons-pointer-fx-' . $tax2_pointer_animation;
9079 }
9080
9081 echo '<div class="' . esc_attr($class . ' ' . $settings['element_tax_style']) . '">';
9082 echo ' <div class="inner-block">';
9083
9084 if ('before' === $settings['element_extra_text_pos']) {
9085 echo '<span class="king-addons-grid-extra-text-left">' . esc_html($settings['element_extra_text']) . '</span>';
9086 }
9087 if ('before' === $settings['element_extra_icon_pos']) {
9088 ob_start();
9089 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
9090 $icon = ob_get_clean();
9091 echo '<span class="king-addons-grid-extra-icon-left">' . $icon . '</span>';
9092 }
9093
9094 $count = 0;
9095 $sep = esc_html($settings['element_tax_sep'] ?? '');
9096 $pointer = (($tax1_pointer !== 'none') || ($tax2_pointer !== 'none')) ? 'king-addons-pointer-item' : '';
9097
9098 foreach ($terms as $term) {
9099 // Possibly set custom colors (premium) for tax style 1
9100 if (
9101 'yes' === (Core::displaySettings($this)['tax1_custom_color_switcher'] ?? '') &&
9102 'king-addons-grid-tax-style-1' === $settings['element_tax_style']
9103 ) {
9104 $cfc_text = get_term_meta($term->term_id, Core::displaySettings($this)['tax1_custom_color_field_text'], true);
9105 $cfc_bg = get_term_meta($term->term_id, Core::displaySettings($this)['tax1_custom_color_field_bg'], true);
9106 $color_css = "color:$cfc_text; background-color:$cfc_bg; border-color:$cfc_bg;";
9107 $custom_selector = '.elementor-element' . $this->get_unique_selector() .
9108 ' .king-addons-grid-tax-style-1 .inner-block a.king-addons-tax-id-' . esc_attr($term->term_id);
9109 echo '<style>' . $custom_selector . '{' . $color_css . '}</style>';
9110 }
9111
9112 echo '<a class="' . $pointer . ' king-addons-tax-id-' . esc_attr($term->term_id) . '" href="' . esc_url(get_term_link($term->term_id)) . '">';
9113 echo esc_html($term->name);
9114 if (++$count !== count($terms)) {
9115 echo '<span class="tax-sep">' . $sep . '</span>';
9116 }
9117 echo '</a>';
9118 }
9119
9120 if ('after' === $settings['element_extra_icon_pos']) {
9121 ob_start();
9122 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
9123 $icon = ob_get_clean();
9124 echo '<span class="king-addons-grid-extra-icon-right">' . $icon . '</span>';
9125 }
9126 if ('after' === $settings['element_extra_text_pos']) {
9127 echo '<span class="king-addons-grid-extra-text-right">' . esc_html($settings['element_extra_text']) . '</span>';
9128 }
9129
9130 echo ' </div>';
9131 echo '</div>';
9132 }
9133
9134 public function get_elements($type, $settings, $class, $post_id)
9135 {
9136 // Fallback for certain pro elements
9137 if (in_array($type, ['pro-lk', 'pro-shr', 'pro-cf'])) {
9138 $type = 'title';
9139 }
9140
9141 switch ($type) {
9142 case 'title':
9143 $this->render_post_title($settings, $class);
9144 break;
9145 case 'content':
9146 $this->render_post_content($settings, $class);
9147 break;
9148 case 'excerpt':
9149 $this->render_post_excerpt($settings, $class);
9150 break;
9151 case 'date':
9152 $this->render_post_date($settings, $class);
9153 break;
9154 case 'time':
9155 $this->render_post_time($settings, $class);
9156 break;
9157 case 'author':
9158 $this->render_post_author($settings, $class);
9159 break;
9160 case 'comments':
9161 $this->render_post_comments($settings, $class);
9162 break;
9163 case 'read-more':
9164 $this->render_post_read_more($settings, $class);
9165 break;
9166 case 'likes':
9167 $this->render_post_likes($settings, $class, $post_id);
9168 break;
9169 case 'sharing':
9170 $this->render_post_sharing_icons($settings, $class);
9171 break;
9172 case 'lightbox':
9173 $this->render_post_lightbox($settings, $class, $post_id);
9174 break;
9175 case 'custom-field':
9176 $this->render_post_custom_field($settings, $class, $post_id);
9177 break;
9178 case 'separator':
9179 $this->render_post_element_separator($settings, $class);
9180 break;
9181 default:
9182 $this->render_post_taxonomies($settings, $class, $post_id);
9183 }
9184 }
9185
9186 public function get_elements_by_location($location, $settings, $post_id)
9187 {
9188 $locations = [];
9189
9190 // Group elements by location; also group "over" by vertical alignment
9191 foreach ($settings['grid_elements'] as $data) {
9192 $place = $data['element_location'];
9193 $alignV = $data['element_align_vr'];
9194
9195 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
9196 $alignV = 'middle';
9197 }
9198
9199 if (!isset($locations[$place])) {
9200 $locations[$place] = [];
9201 }
9202
9203 if ('over' === $place) {
9204 if (!isset($locations[$place][$alignV])) {
9205 $locations[$place][$alignV] = [];
9206 }
9207 $locations[$place][$alignV][] = $data;
9208 } else {
9209 $locations[$place][] = $data;
9210 }
9211 }
9212
9213 // Render each group of elements
9214 if (!empty($locations[$location])) {
9215 if ('over' === $location) {
9216 foreach ($locations[$location] as $align => $elements) {
9217 if ('middle' === $align) {
9218 echo '<div class="king-addons-cv-container"><div class="king-addons-cv-outer"><div class="king-addons-cv-inner">';
9219 }
9220 echo '<div class="king-addons-grid-media-hover-' . esc_attr($align) . ' elementor-clearfix">';
9221
9222 foreach ($elements as $data) {
9223 $itemClass = 'king-addons-grid-item-' . $data['element_select']
9224 . ' elementor-repeater-item-' . $data['_id']
9225 . ' king-addons-grid-item-display-' . $data['element_display']
9226 . ' king-addons-grid-item-align-' . $data['element_align_hr']
9227 . $this->get_animation_class($data, 'element');
9228 $this->get_elements($data['element_select'], $data, $itemClass, $post_id);
9229 }
9230 echo '</div>';
9231
9232 if ('middle' === $align) {
9233 echo '</div></div></div>';
9234 }
9235 }
9236 } else {
9237 echo '<div class="king-addons-grid-item-' . esc_attr($location) . '-content elementor-clearfix">';
9238 foreach ($locations[$location] as $data) {
9239 $itemClass = 'king-addons-grid-item-' . $data['element_select']
9240 . ' elementor-repeater-item-' . $data['_id']
9241 . ' king-addons-grid-item-display-' . $data['element_display']
9242 . ' king-addons-grid-item-align-' . $data['element_align_hr'];
9243 $this->get_elements($data['element_select'], $data, $itemClass, $post_id);
9244 }
9245 echo '</div>';
9246 }
9247 }
9248 }
9249
9250 public function render_grid_filters($settings)
9251 {
9252 $taxonomy = $settings['filters_select'] ?? '';
9253
9254 // Ensure we have some taxonomy selected
9255 if ('' === $taxonomy || !isset($settings['query_taxonomy_' . $taxonomy])) {
9256 return;
9257 }
9258
9259 $custom_filters = $settings['query_taxonomy_' . $taxonomy];
9260
9261 // Fall back for non-premium
9262 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
9263 $settings['filters_default_filter'] = '';
9264 $settings['filters_icon_align'] = '';
9265 $settings['filters_count'] = '';
9266 $settings['filters_pointer'] = 'none';
9267 $settings['filters_pointer_animation'] = 'none';
9268 }
9269
9270 $left_icon = ('left' === $settings['filters_icon_align'])
9271 ? '<i class="' . esc_attr($settings['filters_icon']['value']) . ' king-addons-grid-filters-icon-left"></i>' : '';
9272 $right_icon = ('right' === $settings['filters_icon_align'])
9273 ? '<i class="' . esc_attr($settings['filters_icon']['value']) . ' king-addons-grid-filters-icon-right"></i>' : '';
9274 $left_separator = ('left' === $settings['filters_separator_align'])
9275 ? '<em class="king-addons-grid-filters-sep">' . esc_html($settings['filters_separator']) . '</em>' : '';
9276 $right_separator = ('right' === $settings['filters_separator_align'])
9277 ? '<em class="king-addons-grid-filters-sep">' . esc_html($settings['filters_separator']) . '</em>' : '';
9278 $post_count = ('yes' === $settings['filters_count'])
9279 ? '<sup data-brackets="' . esc_attr($settings['filters_count_brackets']) . '"></sup>'
9280 : '';
9281
9282 $pointer_class = ' king-addons-pointer-' . $settings['filters_pointer'];
9283 $pointer_class .= ' king-addons-pointer-line-fx king-addons-pointer-fx-' . $settings['filters_pointer_animation'];
9284 $pointer_item_class = ('none' !== $settings['filters_pointer']) ? 'king-addons-pointer-item' : '';
9285
9286 echo '<ul class="king-addons-grid-filters elementor-clearfix king-addons-grid-filters-sep-' . esc_attr($settings['filters_separator_align']) . '">';
9287
9288 // "Show All" button if needed
9289 if ('yes' === $settings['filters_all'] && 'yes' !== $settings['filters_linkable']) {
9290 echo '<li class="' . esc_attr($pointer_class) . '">';
9291 echo ' <span data-filter="*" class="king-addons-grid-filters-item king-addons-active-filter ' . esc_attr($pointer_item_class) . '">';
9292 echo $left_icon . esc_html($settings['filters_all_text']) . $right_icon . $post_count;
9293 echo ' </span>' . $right_separator;
9294 echo '</li>';
9295 }
9296
9297 $q = get_queried_object();
9298 $categoryName = (is_category() && $q) ? strtolower($q->name) : 'no-category';
9299 $parent_filters = [];
9300
9301 // Dynamic
9302 if ($settings['query_selection'] === 'dynamic' && !empty($custom_filters)) {
9303 foreach ($custom_filters as $term_id) {
9304 $filter = get_term_by('id', $term_id, $taxonomy);
9305 $data_attr = ('post_tag' === $taxonomy) ? 'tag-' . $filter->slug : $taxonomy . '-' . $filter->slug;
9306 $tax_data = ('post_tag' === $taxonomy) ? 'tag' : $taxonomy;
9307 $active = (strpos($data_attr, $categoryName) !== false) ? 'king-addons-active-filter' : '';
9308
9309 if (0 === $filter->parent) {
9310 $children = get_term_children($filter->term_id, $taxonomy);
9311 $data_role = !empty($children) ? ' data-role="parent"' : '';
9312
9313 echo '<li' . $data_role . ' class="' . esc_attr($pointer_class) . '">';
9314 if ('yes' !== $settings['filters_linkable']) {
9315 echo $left_separator . '<span class="' . $pointer_item_class . '" data-ajax-filter=\'' . json_encode([$tax_data, $filter->slug]) . '\' data-filter=".' . esc_attr(urldecode($data_attr)) . '">';
9316 echo $left_icon . esc_html($filter->name) . $right_icon . $post_count . '</span>' . $right_separator;
9317 } else {
9318 echo $left_separator . '<a class="' . $active . ' ' . $pointer_item_class . '" href="' . esc_url(get_term_link($filter->term_id, $taxonomy)) . '">';
9319 echo $left_icon . esc_html($filter->name) . $right_icon . $post_count . '</a>' . $right_separator;
9320 }
9321 echo '</li>';
9322 } else {
9323 $parent_filters[] = $filter->parent;
9324 }
9325 }
9326 } else {
9327 // All terms from taxonomy
9328 $all_filters = get_terms($taxonomy);
9329 foreach ((array)$all_filters as $filter) {
9330 $data_attr = ('post_tag' === $taxonomy) ? 'tag-' . $filter->slug : $taxonomy . '-' . $filter->slug;
9331 $tax_data = ('post_tag' === $taxonomy) ? 'tag' : $taxonomy;
9332 $active = (strpos($data_attr, $categoryName) !== false) ? 'king-addons-active-filter' : '';
9333 $hidden = $this->get_hidden_filter_class($filter->slug, $settings);
9334
9335 if (0 === $filter->parent) {
9336 $children = get_term_children($filter->term_id, $taxonomy);
9337 $data_role = !empty($children) ? ' data-role="parent"' : '';
9338
9339 echo '<li' . $data_role . ' class="' . esc_attr($pointer_class . $hidden) . '">';
9340 if ('yes' !== $settings['filters_linkable']) {
9341 echo $left_separator . '<span class="' . $pointer_item_class . '" data-ajax-filter=\'' . json_encode([$tax_data, $filter->slug]) . '\' data-filter=".' . esc_attr(urldecode($data_attr)) . '">';
9342 echo $left_icon . esc_html($filter->name) . $right_icon . $post_count . '</span>' . $right_separator;
9343 } else {
9344 echo $left_separator . '<a class="' . $active . ' ' . $pointer_item_class . '" href="' . esc_url(get_term_link($filter->term_id, $taxonomy)) . '" data-ajax-filter=\'' . json_encode([$tax_data, $filter->slug]) . '\' data-filter=".' . esc_attr(urldecode($data_attr)) . '">';
9345 echo $left_icon . esc_html($filter->name) . $right_icon . $post_count . '</a>' . $right_separator;
9346 }
9347 echo '</li>';
9348 } else {
9349 $parent_filters[] = $filter->parent;
9350 }
9351 }
9352 }
9353
9354 // Child terms as sub-filters if not linkable
9355 if ('yes' !== $settings['filters_linkable']) {
9356 foreach (array_unique($parent_filters) as $parent_filter) {
9357 $parent = get_term_by('id', $parent_filter, $taxonomy);
9358 $children = get_term_children($parent_filter, $taxonomy);
9359 $data_attr = ('post_tag' === $taxonomy) ? 'tag-' . $parent->slug : $taxonomy . '-' . $parent->slug;
9360 $tax_data = ('post_tag' === $taxonomy) ? 'tag' : $taxonomy;
9361
9362 echo '<ul data-parent=".' . esc_attr(urldecode($data_attr)) . '" class="king-addons-sub-filters">';
9363 echo ' <li data-role="back" class="' . esc_attr($pointer_class) . '">';
9364 echo ' <span class="king-addons-back-filter" data-ajax-filter=\'' . json_encode([$tax_data, $parent->slug]) . '\' data-filter=".' . esc_attr(urldecode($data_attr)) . '">';
9365 echo ' <i class="fas fa-long-arrow-alt-left"></i>&nbsp;&nbsp;' . esc_html__('Back', 'king-addons');
9366 echo ' </span>';
9367 echo ' </li>';
9368
9369 foreach ($children as $child) {
9370 $sub_filter = get_term_by('id', $child, $taxonomy);
9371 $child_attr = ('post_tag' === $taxonomy)
9372 ? 'tag-' . $sub_filter->slug
9373 : $taxonomy . '-' . $sub_filter->slug;
9374
9375 echo '<li data-role="sub" class="' . esc_attr($pointer_class) . '">';
9376 echo $left_separator . '<span class="' . $pointer_item_class . '" data-ajax-filter=\'' . json_encode([$tax_data, $sub_filter->slug]) . '\' data-filter=".' . esc_attr(urldecode($child_attr)) . '">';
9377 echo $left_icon . esc_html($sub_filter->name) . $right_icon . $post_count;
9378 echo '</span>' . $right_separator;
9379 echo '</li>';
9380 }
9381 echo '</ul>';
9382 }
9383 }
9384
9385 echo '</ul>';
9386 }
9387
9388 public function get_hidden_filter_class($slug, $settings)
9389 {
9390 // Query posts & see if the category is used
9391 $posts = new WP_Query($this->get_main_query_args());
9392 $visible_slugs = [];
9393
9394 if ($posts->have_posts()) {
9395 while ($posts->have_posts()) {
9396 $posts->the_post();
9397 $cats = get_the_category();
9398 foreach ($cats as $c) {
9399 $visible_slugs[] = $c->slug;
9400 }
9401 }
9402 $visible_slugs = array_unique($visible_slugs);
9403 wp_reset_postdata();
9404 }
9405
9406 return (!in_array($slug, $visible_slugs) && 'yes' === $settings['filters_hide_empty'])
9407 ? ' king-addons-hidden-element'
9408 : '';
9409 }
9410
9411 public function render_grid_pagination($settings)
9412 {
9413 // Bail if pagination off, or only one page, or in slider mode
9414 if (
9415 'yes' !== $settings['layout_pagination'] ||
9416 1 === $this->get_max_num_pages() ||
9417 'slider' === $settings['layout_select']
9418 ) {
9419 return;
9420 }
9421
9422 global $paged;
9423 $pages = $this->get_max_num_pages();
9424
9425 $paged = get_query_var('paged') ?: (get_query_var('page') ?: 1);
9426
9427 // Ensure no premium pagination type if not premium
9428 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
9429 if ('pro-is' === $settings['pagination_type']) {
9430 $settings['pagination_type'] = 'default';
9431 }
9432 }
9433
9434 echo '<div class="king-addons-grid-pagination elementor-clearfix king-addons-grid-pagination-' . esc_attr($settings['pagination_type']) . '">';
9435
9436 // 1) Default older/newer
9437 if ('default' === $settings['pagination_type']) {
9438 if ($paged < $pages) {
9439 echo '<a href="' . esc_url(get_pagenum_link($paged + 1)) . '" class="king-addons-prev-post-link">';
9440 echo Core::getIcon($settings['pagination_on_icon'], 'left');
9441 echo esc_html($settings['pagination_older_text']);
9442 echo '</a>';
9443 } elseif ('yes' === $settings['pagination_disabled_arrows']) {
9444 echo '<span class="king-addons-prev-post-link king-addons-disabled-arrow">';
9445 echo Core::getIcon($settings['pagination_on_icon'], 'left');
9446 echo esc_html($settings['pagination_older_text']);
9447 echo '</span>';
9448 }
9449
9450 if ($paged > 1) {
9451 echo '<a href="' . esc_url(get_pagenum_link($paged - 1)) . '" class="king-addons-next-post-link">';
9452 echo esc_html($settings['pagination_newer_text']);
9453 echo Core::getIcon($settings['pagination_on_icon'], 'right');
9454 echo '</a>';
9455 } elseif ('yes' === $settings['pagination_disabled_arrows']) {
9456 echo '<span class="king-addons-next-post-link king-addons-disabled-arrow">';
9457 echo esc_html($settings['pagination_newer_text']);
9458 echo Core::getIcon($settings['pagination_on_icon'], 'right');
9459 echo '</span>';
9460 }
9461
9462 // 2) Numbered pagination
9463 } elseif ('numbered' === $settings['pagination_type']) {
9464 $range = $settings['pagination_range'];
9465 $showitems = ($range * 2) + 1;
9466
9467 if (1 !== $pages) {
9468 // Prev / First arrows if needed
9469 if ('yes' === $settings['pagination_prev_next'] || 'yes' === $settings['pagination_first_last']) {
9470 echo '<div class="king-addons-grid-pagination-left-arrows">';
9471 if ('yes' === $settings['pagination_first_last']) {
9472 if ($paged >= 2) {
9473 echo '<a href="' . esc_url(get_pagenum_link()) . '" class="king-addons-first-page">';
9474 echo Core::getIcon($settings['pagination_fl_icon'], 'left');
9475 echo '<span>' . esc_html($settings['pagination_first_text']) . '</span>';
9476 echo '</a>';
9477 } elseif ('yes' === $settings['pagination_disabled_arrows']) {
9478 echo '<span class="king-addons-first-page king-addons-disabled-arrow">';
9479 echo Core::getIcon($settings['pagination_fl_icon'], 'left');
9480 echo '<span>' . esc_html($settings['pagination_first_text']) . '</span>';
9481 echo '</span>';
9482 }
9483 }
9484 if ('yes' === $settings['pagination_prev_next']) {
9485 if ($paged > 1) {
9486 echo '<a href="' . esc_url(get_pagenum_link($paged - 1)) . '" class="king-addons-prev-page">';
9487 echo Core::getIcon($settings['pagination_pn_icon'], 'left');
9488 echo '<span>' . esc_html($settings['pagination_prev_text']) . '</span>';
9489 echo '</a>';
9490 } elseif ('yes' === $settings['pagination_disabled_arrows']) {
9491 echo '<span class="king-addons-prev-page king-addons-disabled-arrow">';
9492 echo Core::getIcon($settings['pagination_pn_icon'], 'left');
9493 echo '<span>' . esc_html($settings['pagination_prev_text']) . '</span>';
9494 echo '</span>';
9495 }
9496 }
9497 echo '</div>';
9498 }
9499
9500 // Loop through pages
9501 for ($i = 1; $i <= $pages; $i++) {
9502 if (1 !== $pages && (
9503 !($i >= $paged + $range + 1 || $i <= $paged - $range - 1) ||
9504 $pages <= $showitems
9505 )) {
9506 if ($paged === $i) {
9507 echo '<span class="king-addons-grid-current-page">' . esc_html($i) . '</span>';
9508 } else {
9509 echo '<a href="' . esc_url(get_pagenum_link($i)) . '">' . esc_html($i) . '</a>';
9510 }
9511 }
9512 }
9513
9514 // Next / Last arrows if needed
9515 if ('yes' === $settings['pagination_prev_next'] || 'yes' === $settings['pagination_first_last']) {
9516 echo '<div class="king-addons-grid-pagination-right-arrows">';
9517 if ('yes' === $settings['pagination_prev_next']) {
9518 if ($paged < $pages) {
9519 echo '<a href="' . esc_url(get_pagenum_link($paged + 1)) . '" class="king-addons-next-page">';
9520 echo '<span>' . esc_html($settings['pagination_next_text']) . '</span>';
9521 echo Core::getIcon($settings['pagination_pn_icon'], 'right');
9522 echo '</a>';
9523 } elseif ('yes' === $settings['pagination_disabled_arrows']) {
9524 echo '<span class="king-addons-next-page king-addons-disabled-arrow">';
9525 echo '<span>' . esc_html($settings['pagination_next_text']) . '</span>';
9526 echo Core::getIcon($settings['pagination_pn_icon'], 'right');
9527 echo '</span>';
9528 }
9529 }
9530 if ('yes' === $settings['pagination_first_last']) {
9531 if ($paged <= $pages - 1) {
9532 echo '<a href="' . esc_url(get_pagenum_link($pages)) . '" class="king-addons-last-page">';
9533 echo '<span>' . esc_html($settings['pagination_last_text']) . '</span>';
9534 echo Core::getIcon($settings['pagination_fl_icon'], 'right');
9535 echo '</a>';
9536 } elseif ('yes' === $settings['pagination_disabled_arrows']) {
9537 echo '<span class="king-addons-last-page king-addons-disabled-arrow">';
9538 echo '<span>' . esc_html($settings['pagination_last_text']) . '</span>';
9539 echo Core::getIcon($settings['pagination_fl_icon'], 'right');
9540 echo '</span>';
9541 }
9542 }
9543 echo '</div>';
9544 }
9545 }
9546
9547 // 3) "Load More" infinite style
9548 } else {
9549 echo '<a href="' . esc_url(get_pagenum_link($paged + 1)) . '" class="king-addons-load-more-btn" data-e-disable-page-transition>';
9550 echo esc_html($settings['pagination_load_more_text']);
9551 echo '</a>';
9552
9553 echo '<div class="king-addons-pagination-loading">';
9554 switch ($settings['pagination_animation']) {
9555 case 'loader-1':
9556 echo '<div class="king-addons-double-bounce">';
9557 echo ' <div class="king-addons-child king-addons-double-bounce1"></div>';
9558 echo ' <div class="king-addons-child king-addons-double-bounce2"></div>';
9559 echo '</div>';
9560 break;
9561 case 'loader-2':
9562 echo '<div class="king-addons-wave">';
9563 echo ' <div class="king-addons-rect king-addons-rect1"></div>';
9564 echo ' <div class="king-addons-rect king-addons-rect2"></div>';
9565 echo ' <div class="king-addons-rect king-addons-rect3"></div>';
9566 echo ' <div class="king-addons-rect king-addons-rect4"></div>';
9567 echo ' <div class="king-addons-rect king-addons-rect5"></div>';
9568 echo '</div>';
9569 break;
9570 case 'loader-3':
9571 echo '<div class="king-addons-spinner king-addons-spinner-pulse"></div>';
9572 break;
9573 case 'loader-4':
9574 echo '<div class="king-addons-chasing-dots">';
9575 echo ' <div class="king-addons-child king-addons-dot1"></div>';
9576 echo ' <div class="king-addons-child king-addons-dot2"></div>';
9577 echo '</div>';
9578 break;
9579 case 'loader-5':
9580 echo '<div class="king-addons-three-bounce">';
9581 echo ' <div class="king-addons-child king-addons-bounce1"></div>';
9582 echo ' <div class="king-addons-child king-addons-bounce2"></div>';
9583 echo ' <div class="king-addons-child king-addons-bounce3"></div>';
9584 echo '</div>';
9585 break;
9586 case 'loader-6':
9587 echo '<div class="king-addons-fading-circle">';
9588 for ($i = 1; $i <= 12; $i++) {
9589 echo '<div class="king-addons-circle king-addons-circle' . $i . '"></div>';
9590 }
9591 echo '</div>';
9592 break;
9593 default:
9594 break;
9595 }
9596 echo '</div>';
9597
9598 echo '<p class="king-addons-pagination-finish">' . esc_html($settings['pagination_finish_text']) . '</p>';
9599 }
9600
9601 echo '</div>';
9602 }
9603
9604 public function add_grid_settings($settings)
9605 {
9606 // Prevent undefined index notices for lightbox popup settings.
9607 $settings = wp_parse_args(
9608 $settings,
9609 [
9610 'lightbox_popup_autoplay' => 'true',
9611 'lightbox_popup_pause' => 5,
9612 'lightbox_popup_progressbar' => 'true',
9613 'lightbox_popup_counter' => 'true',
9614 'lightbox_popup_arrows' => 'true',
9615 'lightbox_popup_captions' => 'true',
9616 'lightbox_popup_thumbnails' => '',
9617 'lightbox_popup_thumbnails_default' => '',
9618 'lightbox_popup_sharing' => '',
9619 'lightbox_popup_zoom' => 'true',
9620 'lightbox_popup_fullscreen' => 'true',
9621 'lightbox_popup_download' => 'true',
9622 ]
9623 );
9624
9625 // If premium not available, fallback
9626 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
9627 if ('pro-ms' === $settings['layout_select']) {
9628 $settings['layout_select'] = 'fitRows';
9629 }
9630 $settings['filters_deeplinking'] = '';
9631 $settings['filters_count'] = '';
9632 $settings['filters_default_filter'] = '';
9633 if (in_array($settings['filters_animation'], ['pro-fd', 'pro-fs'])) {
9634 $settings['filters_animation'] = 'zoom';
9635 }
9636 }
9637
9638 // Only allow "stick_last_element_to_bottom" if layout_select == fitRows
9639 $stick_last_element = ('fitRows' === $settings['layout_select'])
9640 ? $settings['stick_last_element_to_bottom']
9641 : 'no';
9642
9643 // Prepare gutter sizes
9644 $gutter_hr_widescreen = $settings['layout_gutter_hr_widescreen']['size'] ?? $settings['layout_gutter_hr']['size'];
9645 $gutter_hr_desktop = $settings['layout_gutter_hr']['size'] ?? 0;
9646 $gutter_hr_laptop = $settings['layout_gutter_hr_laptop']['size'] ?? $gutter_hr_desktop;
9647 $gutter_hr_tablet_ex = $settings['layout_gutter_hr_tablet_extra']['size'] ?? $gutter_hr_laptop;
9648 $gutter_hr_tablet = $settings['layout_gutter_hr_tablet']['size'] ?? $gutter_hr_tablet_ex;
9649 $gutter_hr_mobile_ex = $settings['layout_gutter_hr_mobile_extra']['size'] ?? $gutter_hr_tablet;
9650 $gutter_hr_mobile = $settings['layout_gutter_hr_mobile']['size'] ?? $gutter_hr_mobile_ex;
9651 $gutter_vr_widescreen = $settings['layout_gutter_vr_widescreen']['size'] ?? $settings['layout_gutter_vr']['size'];
9652 $gutter_vr_desktop = $settings['layout_gutter_vr']['size'] ?? 0;
9653 $gutter_vr_laptop = $settings['layout_gutter_vr_laptop']['size'] ?? $gutter_vr_desktop;
9654 $gutter_vr_tablet_ex = $settings['layout_gutter_vr_tablet_extra']['size'] ?? $gutter_vr_laptop;
9655 $gutter_vr_tablet = $settings['layout_gutter_vr_tablet']['size'] ?? $gutter_vr_tablet_ex;
9656 $gutter_vr_mobile_ex = $settings['layout_gutter_vr_mobile_extra']['size'] ?? $gutter_vr_tablet;
9657 $gutter_vr_mobile = $settings['layout_gutter_vr_mobile']['size'] ?? $gutter_vr_mobile_ex;
9658
9659 $layout_settings = [
9660 'layout' => $settings['layout_select'],
9661 'stick_last_element_to_bottom' => $stick_last_element,
9662 'columns_desktop' => $settings['layout_columns'],
9663 'gutter_hr' => $gutter_hr_desktop,
9664 'gutter_hr_mobile' => $gutter_hr_mobile,
9665 'gutter_hr_mobile_extra' => $gutter_hr_mobile_ex,
9666 'gutter_hr_tablet' => $gutter_hr_tablet,
9667 'gutter_hr_tablet_extra' => $gutter_hr_tablet_ex,
9668 'gutter_hr_laptop' => $gutter_hr_laptop,
9669 'gutter_hr_widescreen' => $gutter_hr_widescreen,
9670 'gutter_vr' => $gutter_vr_desktop,
9671 'gutter_vr_mobile' => $gutter_vr_mobile,
9672 'gutter_vr_mobile_extra' => $gutter_vr_mobile_ex,
9673 'gutter_vr_tablet' => $gutter_vr_tablet,
9674 'gutter_vr_tablet_extra' => $gutter_vr_tablet_ex,
9675 'gutter_vr_laptop' => $gutter_vr_laptop,
9676 'gutter_vr_widescreen' => $gutter_vr_widescreen,
9677 'animation' => $settings['layout_animation'],
9678 'animation_duration' => $settings['layout_animation_duration'],
9679 'animation_delay' => $settings['layout_animation_delay'],
9680 'deeplinking' => $settings['filters_deeplinking'],
9681 'filters_linkable' => $settings['filters_linkable'],
9682 'filters_default_filter' => $settings['filters_default_filter'],
9683 'filters_count' => $settings['filters_count'],
9684 'filters_hide_empty' => $settings['filters_hide_empty'],
9685 'filters_animation' => $settings['filters_animation'],
9686 'filters_animation_duration' => $settings['filters_animation_duration'],
9687 'filters_animation_delay' => $settings['filters_animation_delay'],
9688 'pagination_type' => $settings['pagination_type'],
9689 'pagination_max_pages' => $this->get_max_num_pages(),
9690 ];
9691
9692 if ('list' === $settings['layout_select']) {
9693 $layout_settings['media_align'] = $settings['layout_list_align'];
9694 $layout_settings['media_width'] = $settings['layout_list_media_width']['size'];
9695 $layout_settings['media_distance'] = $settings['layout_list_media_distance']['size'];
9696 }
9697
9698 // Restrict pop-up if not premium
9699 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
9700 $settings['lightbox_popup_thumbnails'] = '';
9701 $settings['lightbox_popup_thumbnails_default'] = '';
9702 $settings['lightbox_popup_sharing'] = '';
9703 }
9704
9705 // Lightbox config
9706 $layout_settings['lightbox'] = [
9707 'selector' => '.king-addons-grid-image-wrap',
9708 'iframeMaxWidth' => '60%',
9709 'hash' => false,
9710 'autoplay' => $settings['lightbox_popup_autoplay'],
9711 'pause' => $settings['lightbox_popup_pause'] * 1000,
9712 'progressBar' => $settings['lightbox_popup_progressbar'],
9713 'counter' => $settings['lightbox_popup_counter'],
9714 'controls' => $settings['lightbox_popup_arrows'],
9715 'getCaptionFromTitleOrAlt' => false,
9716 'thumbnail' => $settings['lightbox_popup_thumbnails'],
9717 'showThumbByDefault' => $settings['lightbox_popup_thumbnails_default'],
9718 'share' => $settings['lightbox_popup_sharing'],
9719 'zoom' => $settings['lightbox_popup_zoom'],
9720 'fullScreen' => $settings['lightbox_popup_fullscreen'],
9721 'download' => $settings['lightbox_popup_download'],
9722 ];
9723
9724 if ('yes' === ($settings['filters_experiment'] ?? '')) {
9725 // Potentially store entire $settings if needed
9726 $layout_settings['grid_settings'] = $settings;
9727 }
9728
9729 $this->add_render_attribute('grid-settings', [
9730 'data-settings' => wp_json_encode($layout_settings),
9731 ]);
9732 }
9733
9734 public function add_slider_settings($settings)
9735 {
9736 // Prevent undefined index notices for lightbox popup settings.
9737 $settings = wp_parse_args(
9738 $settings,
9739 [
9740 'lightbox_popup_autoplay' => 'true',
9741 'lightbox_popup_pause' => 5,
9742 'lightbox_popup_progressbar' => 'true',
9743 'lightbox_popup_counter' => 'true',
9744 'lightbox_popup_arrows' => 'true',
9745 'lightbox_popup_captions' => 'true',
9746 'lightbox_popup_thumbnails' => '',
9747 'lightbox_popup_thumbnails_default' => '',
9748 'lightbox_popup_sharing' => '',
9749 'lightbox_popup_zoom' => 'true',
9750 'lightbox_popup_fullscreen' => 'true',
9751 'lightbox_popup_download' => 'true',
9752 ]
9753 );
9754
9755 $slider_is_rtl = is_rtl();
9756 $slider_dir = $slider_is_rtl ? 'rtl' : 'ltr';
9757
9758 // Fall back for non-premium
9759 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
9760 $settings['layout_slider_autoplay'] = '';
9761 $settings['layout_slider_autoplay_duration'] = 0;
9762 $settings['layout_slider_pause_on_hover'] = '';
9763 }
9764
9765 if (in_array($settings['layout_slider_amount'], ['pro-3', 'pro-4', 'pro-5', 'pro-6'])) {
9766 $settings['layout_slider_amount'] = 1; // fallback
9767 }
9768
9769 $slider_options = [
9770 'rtl' => $slider_is_rtl,
9771 'infinite' => ('yes' === $settings['layout_slider_loop']),
9772 'speed' => absint($settings['layout_slider_effect_duration'] * 1000),
9773 'arrows' => true,
9774 'dots' => true,
9775 'autoplay' => ('yes' === $settings['layout_slider_autoplay']),
9776 'autoplaySpeed' => absint($settings['layout_slider_autoplay_duration'] * 1000),
9777 'pauseOnHover' => $settings['layout_slider_pause_on_hover'],
9778 'prevArrow' => '#king-addons-grid-slider-prev-' . $this->get_id(),
9779 'nextArrow' => '#king-addons-grid-slider-next-' . $this->get_id(),
9780 'sliderSlidesToScroll' => $settings['layout_slides_to_scroll'] ? absint($settings['layout_slides_to_scroll']) : 1,
9781 ];
9782
9783 // Restrict pop-up for non-premium
9784 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
9785 $settings['lightbox_popup_thumbnails'] = '';
9786 $settings['lightbox_popup_thumbnails_default'] = '';
9787 $settings['lightbox_popup_sharing'] = '';
9788 }
9789
9790 // Lightbox config
9791 $slider_options['lightbox'] = [
9792 'selector' => 'article:not(.slick-cloned) .king-addons-grid-image-wrap',
9793 'iframeMaxWidth' => '60%',
9794 'hash' => false,
9795 'autoplay' => $settings['lightbox_popup_autoplay'],
9796 'pause' => $settings['lightbox_popup_pause'] * 1000,
9797 'progressBar' => $settings['lightbox_popup_progressbar'],
9798 'counter' => $settings['lightbox_popup_counter'],
9799 'controls' => $settings['lightbox_popup_arrows'],
9800 'getCaptionFromTitleOrAlt' => false,
9801 'thumbnail' => $settings['lightbox_popup_thumbnails'],
9802 'showThumbByDefault' => $settings['lightbox_popup_thumbnails_default'],
9803 'share' => $settings['lightbox_popup_sharing'],
9804 'zoom' => $settings['lightbox_popup_zoom'],
9805 'fullScreen' => $settings['lightbox_popup_fullscreen'],
9806 'download' => $settings['lightbox_popup_download'],
9807 ];
9808
9809 // Enable fade effect for single-slide
9810 if ($settings['layout_slider_amount'] === 1 && $settings['layout_slider_effect'] === 'fade') {
9811 $slider_options['fade'] = true;
9812 }
9813
9814 $this->add_render_attribute('slider-settings', [
9815 'dir' => esc_attr($slider_dir),
9816 'data-slick' => wp_json_encode($slider_options),
9817 ]);
9818 }
9819
9820 protected function render()
9821 {
9822 $settings = Core::displaySettings($this);
9823 $posts = new WP_Query($this->get_main_query_args());
9824
9825 if ($posts->have_posts()) {
9826 // Render filters if not slider
9827 if ('slider' !== $settings['layout_select']) {
9828 $this->render_grid_filters($settings);
9829 $this->add_grid_settings($settings);
9830 $render_attribute = $this->get_render_attribute_string('grid-settings');
9831 } else {
9832 // If slider
9833 $this->add_slider_settings($settings);
9834 $render_attribute = $this->get_render_attribute_string('slider-settings');
9835 }
9836
9837 echo '<section class="king-addons-grid elementor-clearfix" ' . $render_attribute . '>';
9838
9839 while ($posts->have_posts()) {
9840 $posts->the_post();
9841 $post_class = implode(' ', get_post_class('king-addons-grid-item elementor-clearfix', get_the_ID()));
9842
9843 echo '<article class="' . esc_attr($post_class) . '">';
9844 // Check password
9845 $this->render_password_protected_input();
9846
9847 echo '<div class="king-addons-grid-item-inner">';
9848 // Location: ABOVE
9849 $this->get_elements_by_location('above', $settings, get_the_ID());
9850
9851 // If has featured image, render
9852 if ('yes' !== $settings['hide_post_thumbnail']) {
9853 echo '<div class="king-addons-grid-media-wrap' . esc_attr($this->get_image_effect_class($settings)) . '" data-overlay-link="' . esc_attr($settings['overlay_post_link']) . '">';
9854 $this->render_post_thumbnail($settings);
9855
9856 echo '<div class="king-addons-grid-media-hover king-addons-animation-wrap">';
9857 $this->render_media_overlay($settings);
9858 $this->get_elements_by_location('over', $settings, get_the_ID());
9859 echo '</div>';
9860
9861 echo '</div>';
9862 }
9863
9864 // Location: BELOW
9865 $this->get_elements_by_location('below', $settings, get_the_ID());
9866 echo '</div>';
9867
9868 echo '</article>';
9869 }
9870 echo '</section>';
9871
9872 // Reset
9873 wp_reset_postdata();
9874
9875 // If slider, render nav
9876 if ('slider' === $settings['layout_select']) {
9877 echo '<div class="king-addons-grid-slider-arrow-container">';
9878 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($settings['layout_slider_nav_icon'], '') . '</div>';
9879 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($settings['layout_slider_nav_icon'], '') . '</div>';
9880 echo '</div>';
9881
9882 echo '<div class="king-addons-grid-slider-dots"></div>';
9883 }
9884
9885 // Render pagination if needed
9886 $this->render_grid_pagination($settings);
9887 } else {
9888 // If no posts found
9889 if ('dynamic' === $settings['query_selection']) {
9890 echo '<h2>' . esc_html($settings['query_not_found_text']) . '</h2>';
9891 }
9892 }
9893 }
9894 }