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

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

9,903 lines 367.0 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 WP_Query;
16
17 if (!defined('ABSPATH')) {
18 exit;
19 }
20
21 class Posts_Grid extends Widget_Base
22 {
23
24
25
26 public function get_name()
27 {
28 return 'king-addons-grid';
29 }
30
31 public function get_title()
32 {
33 return esc_html__('Posts Grid & Slider', 'king-addons');
34 }
35
36 public function get_icon()
37 {
38 return 'king-addons-icon king-addons-posts-grid';
39 }
40
41 public function get_categories()
42 {
43 return ['king-addons'];
44 }
45
46 public function get_keywords()
47 {
48 return ['king addons', 'king', 'addons', 'kingaddons', 'king-addons', 'gr', 'carousel', 'portfolio', 'loop', 'filterable',
49 'blog', 'portfolio grid', 'posts', 'post grid', 'posts grid', 'filter', 'post', 'posts', 'masonry', 'grid',
50 'post slider', 'posts slider', 'post carousel', 'posts carousel', 'masonry grid', 'gallery', 'slider',
51 'isotope', 'post gallery', 'posts gallery', 'filterable grid', 'loop grid'];
52 }
53
54 public function get_script_depends()
55 {
56 return [
57 KING_ADDONS_ASSETS_UNIQUE_KEY . '-imagesloaded-imagesloaded',
58 KING_ADDONS_ASSETS_UNIQUE_KEY . '-infinitescroll-infinitescroll',
59 KING_ADDONS_ASSETS_UNIQUE_KEY . '-isotope-kng',
60 KING_ADDONS_ASSETS_UNIQUE_KEY . '-slick-slick',
61 // KING_ADDONS_ASSETS_UNIQUE_KEY . '-lightgallery-lightgallery',
62 KING_ADDONS_ASSETS_UNIQUE_KEY . '-grid-grid',
63 ];
64 }
65
66 public function get_style_depends()
67 {
68 return [
69 KING_ADDONS_ASSETS_UNIQUE_KEY . '-slick-helper',
70 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-button',
71 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-general',
72 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-timing',
73 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-loading',
74 // KING_ADDONS_ASSETS_UNIQUE_KEY . '-lightgallery-lightgallery',
75 KING_ADDONS_ASSETS_UNIQUE_KEY . '-grid-grid',
76 KING_ADDONS_ASSETS_UNIQUE_KEY . '-general-general',
77 ];
78 }
79
80 public function get_custom_help_url()
81 {
82 return 'mailto:bug@kingaddons.com?subject=Bug Report - King Addons&body=Please describe the issue';
83 }
84
85 public function is_reload_preview_required()
86 {
87 return true;
88 }
89
90 public function has_widget_inner_wrapper(): bool
91 {
92 return true;
93 }
94
95 public function add_option_query_source()
96 {
97 $post_types = [];
98 $post_types['post'] = esc_html__('Posts', 'king-addons');
99 $post_types['page'] = esc_html__('Pages', 'king-addons');
100
101 $custom_post_types = Core::getCustomTypes('post');
102 foreach ($custom_post_types as $slug => $title) {
103 if ('product' === $slug || 'e-landing-page' === $slug) {
104 continue;
105 }
106
107 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
108 $post_types['pro-' . substr($slug, 0, 2)] = esc_html($title) . ' (Pro)';
109 } else {
110 $post_types[$slug] = esc_html($title);
111 }
112 }
113
114 $post_types['current'] = esc_html__('Current Query', 'king-addons');
115 $post_types['pro-rl'] = esc_html__('Related Query (Pro)', 'king-addons');
116
117 return $post_types;
118 }
119
120 public function get_available_taxonomies()
121 {
122 $post_taxonomies = [];
123 $post_taxonomies['category'] = esc_html__('Categories', 'king-addons');
124 $post_taxonomies['post_tag'] = esc_html__('Tags', 'king-addons');
125
126 $custom_post_taxonomies = Core::getCustomTypes('tax');
127 foreach ($custom_post_taxonomies as $slug => $title) {
128 if ('product_tag' === $slug || 'product_cat' === $slug) {
129 continue;
130 }
131
132 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
133 $post_taxonomies['pro-' . substr($slug, 0, 2)] = esc_html($title) . ' (Pro)';
134 } else {
135 $post_taxonomies[$slug] = esc_html($title);
136 }
137 }
138
139 return $post_taxonomies;
140 }
141
142 public function add_control_secondary_img_on_hover()
143 {
144 $this->add_control(
145 'secondary_img_on_hover',
146 [
147 'label' => sprintf(__('Secondary Image on Hover %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
148 'type' => Controls_Manager::SWITCHER,
149 'classes' => 'king-addons-pro-control no-distance'
150 ]
151 );
152 }
153
154 public function add_control_open_links_in_new_tab()
155 {
156 $this->add_control(
157 'open_links_in_new_tab',
158 [
159 'label' => sprintf(__('Open Links in New Tab %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
160 'type' => Controls_Manager::SWITCHER,
161 'classes' => 'king-addons-pro-control no-distance'
162 ]
163 );
164 }
165
166 public function add_control_grid_lazy_loading()
167 {
168 $this->add_control(
169 'grid_lazy_loading',
170 [
171 'label' => sprintf(__('Lazy Loading %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
172 'type' => Controls_Manager::SWITCHER,
173 'classes' => 'king-addons-pro-control no-distance'
174 ]
175 );
176 }
177
178 public function add_control_display_scheduled_posts()
179 {
180 $this->add_control(
181 'display_scheduled_posts',
182 [
183 'label' => sprintf(__('Display Only Scheduled %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
184 'type' => Controls_Manager::SWITCHER,
185 'classes' => 'king-addons-pro-control no-distance'
186 ]
187 );
188 }
189
190 public function add_control_query_randomize()
191 {
192 $this->add_control(
193 'query_randomize',
194 [
195 'label' => sprintf(__('Randomize Query %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
196 'type' => Controls_Manager::SWITCHER,
197 'classes' => 'king-addons-pro-control no-distance'
198 ]
199 );
200 }
201
202 public function add_control_order_posts()
203 {
204 $this->add_control(
205 'order_posts',
206 [
207 'label' => esc_html__('Order By', 'king-addons'),
208 'type' => Controls_Manager::SELECT,
209 'default' => 'date',
210 'label_block' => false,
211 'options' => [
212 'date' => esc_html__('Date', 'king-addons'),
213 'pro-tl' => esc_html__('Title (Pro)', 'king-addons'),
214 'pro-mf' => esc_html__('Last Modified (Pro)', 'king-addons'),
215 'pro-d' => esc_html__('Post ID (Pro)', 'king-addons'),
216 'pro-ar' => esc_html__('Post Author (Pro)', 'king-addons'),
217 'pro-cc' => esc_html__('Comment Count (Pro)', 'king-addons'),
218 'pro-mv' => esc_html__('Custom Field (Pro)', 'king-addons')
219 ],
220 'condition' => [
221 'query_randomize!' => 'rand',
222 ]
223 ]
224 );
225 }
226
227 public function add_control_order_posts_by_acf($meta)
228 {
229 }
230
231 public function add_control_query_slides_to_show()
232 {
233 $this->add_control(
234 'query_slides_to_show',
235 [
236 'label' => esc_html__('Slides to Show', 'king-addons'),
237 'type' => Controls_Manager::NUMBER,
238 'default' => 4,
239 'min' => 0,
240 'max' => 4,
241 'condition' => [
242 'layout_select' => 'slider',
243 ],
244 ]
245 );
246 }
247
248 public function add_control_layout_select()
249 {
250 $this->add_control(
251 'layout_select',
252 [
253 'label' => esc_html__('Select Layout', 'king-addons'),
254 'type' => Controls_Manager::SELECT,
255 'default' => 'fitRows',
256 'options' => [
257 'fitRows' => esc_html__('FitRows - Equal Height', 'king-addons'),
258 'list' => esc_html__('List Style', 'king-addons'),
259 'slider' => esc_html__('Slider / Carousel', 'king-addons'),
260 'pro-ms' => esc_html__('Masonry - Unlimited Height (Pro)', 'king-addons'),
261 ],
262 'render_type' => 'template'
263 ]
264 );
265 }
266
267 public function add_control_layout_columns()
268 {
269 $this->add_responsive_control(
270 'layout_columns',
271 [
272 'label' => esc_html__('Columns', 'king-addons'),
273 'type' => Controls_Manager::SELECT,
274 'default' => 3,
275 'widescreen_default' => 3,
276 'laptop_default' => 3,
277 'tablet_extra_default' => 3,
278 'tablet_default' => 2,
279 'mobile_extra_default' => 2,
280 'mobile_default' => 1,
281 'options' => [
282 1 => esc_html__('One', 'king-addons'),
283 2 => esc_html__('Two', 'king-addons'),
284 3 => esc_html__('Three', 'king-addons'),
285 'pro-4' => esc_html__('Four (Pro)', 'king-addons'),
286 'pro-5' => esc_html__('Five (Pro)', 'king-addons'),
287 'pro-6' => esc_html__('Six (Pro)', 'king-addons'),
288 ],
289 'prefix_class' => 'king-addons-grid-columns-%s',
290 'render_type' => 'template',
291 'separator' => 'before',
292 'condition' => [
293 'layout_select' => ['fitRows', 'masonry', 'list'],
294 ]
295 ]
296 );
297 }
298
299 public function add_control_layout_animation()
300 {
301 $this->add_control(
302 'layout_animation',
303 [
304 'label' => esc_html__('Select Animation', 'king-addons'),
305 'type' => Controls_Manager::SELECT,
306 'default' => 'default',
307 'options' => [
308 'default' => esc_html__('None', 'king-addons'),
309 'zoom' => esc_html__('Zoom', 'king-addons'),
310 'pro-fd' => esc_html__('Fade (Pro)', 'king-addons'),
311 'pro-fs' => esc_html__('Fade + SlideUp (Pro)', 'king-addons'),
312 ],
313 'selectors_dictionary' => [
314 'default' => '',
315 'zoom' => 'opacity: 0; transform: scale(0.01)',
316 ],
317 'selectors' => [
318 '{{WRAPPER}} .king-addons-grid-item-inner' => '{{VALUE}}',
319 ],
320 'render_type' => 'template',
321 'separator' => 'before',
322 'condition' => [
323 'layout_select!' => 'slider',
324 ]
325 ]
326 );
327 }
328
329 public function add_control_layout_slider_amount()
330 {
331 $this->add_responsive_control(
332 'layout_slider_amount',
333 [
334 'label' => esc_html__('Columns (Carousel)', 'king-addons'),
335 'type' => Controls_Manager::SELECT,
336 'label_block' => false,
337 'default' => 2,
338 'widescreen_default' => 2,
339 'laptop_default' => 2,
340 'tablet_extra_default' => 2,
341 'tablet_default' => 2,
342 'mobile_extra_default' => 2,
343 'mobile_default' => 1,
344 'options' => [
345 1 => esc_html__('One', 'king-addons'),
346 2 => esc_html__('Two', 'king-addons'),
347 'pro-3' => esc_html__('Three (Pro)', 'king-addons'),
348 'pro-4' => esc_html__('Four (Pro)', 'king-addons'),
349 'pro-5' => esc_html__('Five (Pro)', 'king-addons'),
350 'pro-6' => esc_html__('Six (Pro)', 'king-addons'),
351 ],
352 'prefix_class' => 'king-addons-grid-slider-columns-%s',
353 'render_type' => 'template',
354 'frontend_available' => true,
355 'separator' => 'before',
356 'condition' => [
357 'layout_select' => 'slider',
358 ],
359 ]
360 );
361 }
362
363 public function add_control_layout_slider_nav_hover()
364 {
365 $this->add_control(
366 'layout_slider_nav_hover',
367 [
368 'label' => sprintf(__('Show on Hover %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
369 'type' => Controls_Manager::SWITCHER,
370 'classes' => 'king-addons-pro-control no-distance',
371 'condition' => [
372 'layout_slider_nav' => 'yes',
373 'layout_select' => 'slider',
374
375 ],
376 ]
377 );
378 }
379
380 public function add_control_layout_slider_dots_position()
381 {
382 $this->add_control(
383 'layout_slider_dots_position',
384 [
385 'label' => esc_html__('Pagination Layout', 'king-addons'),
386 'type' => Controls_Manager::SELECT,
387 'default' => 'horizontal',
388 'options' => [
389 'horizontal' => esc_html__('Horizontal', 'king-addons'),
390 'pro-vr' => esc_html__('Vertical (Pro)', 'king-addons'),
391 ],
392 'prefix_class' => 'king-addons-grid-slider-dots-',
393 'render_type' => 'template',
394 'condition' => [
395 'layout_slider_dots' => 'yes',
396 'layout_select' => 'slider',
397 ],
398 ]
399 );
400 }
401
402 public function add_control_layout_slider_autoplay()
403 {
404 $this->add_control(
405 'layout_slider_autoplay',
406 [
407 'label' => sprintf(__('Autoplay %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
408 'type' => Controls_Manager::SWITCHER,
409 'classes' => 'king-addons-pro-control',
410 'separator' => 'before',
411 'condition' => [
412 'layout_select' => 'slider',
413 ],
414 ]
415 );
416 }
417
418 public function add_controls_group_layout_slider_autoplay()
419 {
420 }
421
422 public function add_option_element_select()
423 {
424 return [
425 'title' => esc_html__('Title', 'king-addons'),
426 'content' => esc_html__('Content', 'king-addons'),
427 'excerpt' => esc_html__('Excerpt', 'king-addons'),
428 'date' => esc_html__('Date', 'king-addons'),
429 'time' => esc_html__('Time', 'king-addons'),
430 'author' => esc_html__('Author', 'king-addons'),
431 'comments' => esc_html__('Comments', 'king-addons'),
432 'read-more' => esc_html__('Read More', 'king-addons'),
433 // TODO: Lightbox
434 // 'lightbox' => esc_html__('Lightbox', 'king-addons'),
435 'separator' => esc_html__('Separator', 'king-addons'),
436 'pro-lk' => esc_html__('Likes (Pro)', 'king-addons'),
437 'pro-shr' => esc_html__('Sharing (Pro)', 'king-addons'),
438 'pro-cf' => esc_html__('Custom Field (Pro)', 'king-addons'),
439 ];
440 }
441
442 public function add_repeater_args_element_like_icon()
443 {
444 return [
445 'type' => Controls_Manager::HIDDEN,
446 'default' => ''
447 ];
448 }
449
450 public function add_repeater_args_element_like_text()
451 {
452 return [
453 'type' => Controls_Manager::HIDDEN,
454 'default' => ''
455 ];
456 }
457
458 public function add_repeater_args_element_like_show_count()
459 {
460 return [
461 'type' => Controls_Manager::HIDDEN,
462 'default' => ''
463 ];
464 }
465
466 public function add_repeater_args_element_sharing_icon_1()
467 {
468 return [
469 'type' => Controls_Manager::HIDDEN,
470 'default' => ''
471 ];
472 }
473
474 public function add_repeater_args_element_sharing_icon_2()
475 {
476 return [
477 'type' => Controls_Manager::HIDDEN,
478 'default' => ''
479 ];
480 }
481
482 public function add_repeater_args_element_sharing_icon_3()
483 {
484 return [
485 'type' => Controls_Manager::HIDDEN,
486 'default' => ''
487 ];
488 }
489
490 public function add_repeater_args_element_sharing_icon_4()
491 {
492 return [
493 'type' => Controls_Manager::HIDDEN,
494 'default' => ''
495 ];
496 }
497
498 public function add_repeater_args_element_sharing_icon_5()
499 {
500 return [
501 'type' => Controls_Manager::HIDDEN,
502 'default' => ''
503 ];
504 }
505
506 public function add_repeater_args_element_sharing_icon_6()
507 {
508 return [
509 'type' => Controls_Manager::HIDDEN,
510 'default' => ''
511 ];
512 }
513
514 public function add_repeater_args_element_sharing_trigger()
515 {
516 return [
517 'type' => Controls_Manager::HIDDEN,
518 'default' => ''
519 ];
520 }
521
522 public function add_repeater_args_element_sharing_trigger_icon()
523 {
524 return [
525 'type' => Controls_Manager::HIDDEN,
526 'default' => ''
527 ];
528 }
529
530 public function add_repeater_args_element_sharing_trigger_action()
531 {
532 return [
533 'type' => Controls_Manager::HIDDEN,
534 'default' => ''
535 ];
536 }
537
538 public function add_repeater_args_element_sharing_trigger_direction()
539 {
540 return [
541 'type' => Controls_Manager::HIDDEN,
542 'default' => ''
543 ];
544 }
545
546 public function add_repeater_args_element_sharing_tooltip()
547 {
548 return [
549 'type' => Controls_Manager::HIDDEN,
550 'default' => ''
551 ];
552 }
553
554 public function add_repeater_args_element_custom_field()
555 {
556 return [
557 'type' => Controls_Manager::HIDDEN,
558 'default' => ''
559 ];
560 }
561
562 public function add_repeater_args_element_custom_field_img_ID()
563 {
564 return [
565 'type' => Controls_Manager::HIDDEN,
566 'default' => ''
567 ];
568 }
569
570 public function add_repeater_args_element_custom_field_btn_link()
571 {
572 return [
573 'type' => Controls_Manager::HIDDEN,
574 'default' => ''
575 ];
576 }
577
578 public function add_repeater_args_element_custom_field_new_tab()
579 {
580 return [
581 'type' => Controls_Manager::HIDDEN,
582 'default' => ''
583 ];
584 }
585
586 public function add_repeater_args_custom_field_wrapper_html_divider1()
587 {
588 return [
589 'type' => Controls_Manager::HIDDEN,
590 'default' => ''
591 ];
592 }
593
594 public function add_repeater_args_element_custom_field_wrapper()
595 {
596 return [
597 'type' => Controls_Manager::HIDDEN,
598 'default' => ''
599 ];
600 }
601
602 public function add_repeater_args_element_custom_field_wrapper_html()
603 {
604 return [
605 'type' => Controls_Manager::HIDDEN,
606 'default' => ''
607 ];
608 }
609
610 public function add_repeater_args_custom_field_wrapper_html_divider2()
611 {
612 return [
613 'type' => Controls_Manager::HIDDEN,
614 'default' => ''
615 ];
616 }
617
618 public function add_repeater_args_element_cf_tag()
619 {
620 return [
621 'type' => Controls_Manager::HIDDEN,
622 'default' => ''
623 ];
624 }
625
626 public function add_repeater_args_element_custom_field_style()
627 {
628 return [
629 'type' => Controls_Manager::HIDDEN,
630 'default' => ''
631 ];
632 }
633
634 public function add_repeater_args_element_trim_text_by()
635 {
636 return [
637 'word_count' => esc_html__('Word Count', 'king-addons'),
638 'pro-lc' => esc_html__('Letter Count (Pro)', 'king-addons')
639 ];
640 }
641
642 public function add_control_overlay_animation_divider()
643 {
644 }
645
646 public function add_control_overlay_image()
647 {
648 }
649
650 public function add_control_overlay_image_width()
651 {
652 }
653
654 public function add_control_image_effects()
655 {
656 $this->add_control(
657 'image_effects',
658 [
659 'label' => esc_html__('Select Effect', 'king-addons'),
660 'type' => Controls_Manager::SELECT,
661 'options' => [
662 'none' => esc_html__('None', 'king-addons'),
663 'pro-zi' => esc_html__('Zoom In (Pro)', 'king-addons'),
664 'pro-zo' => esc_html__('Zoom Out (Pro)', 'king-addons'),
665 'grayscale-in' => esc_html__('Grayscale In', 'king-addons'),
666 'pro-go' => esc_html__('Grayscale Out (Pro)', 'king-addons'),
667 'blur-in' => esc_html__('Blur In', 'king-addons'),
668 'pro-bo' => esc_html__('Blur Out (Pro)', 'king-addons'),
669 'slide' => esc_html__('Slide', 'king-addons'),
670 ],
671 'default' => 'none',
672 ]
673 );
674 }
675
676 /** @noinspection PhpUnused */
677 public function add_section_general_lightbox() {
678 $this->start_controls_section(
679 'section_lightbox_popup',
680 [
681 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Lightbox Popup', 'king-addons'),
682 'tab' => Controls_Manager::TAB_CONTENT,
683 ]
684 );
685
686 $this->add_control(
687 'lightbox_popup_autoplay',
688 [
689 'label' => esc_html__('Autoplay Slides', 'king-addons'),
690 'type' => Controls_Manager::SWITCHER,
691 'default' => 'true',
692 'return_value' => 'true',
693 ]
694 );
695
696 $this->add_control(
697 'lightbox_popup_progressbar',
698 [
699 'label' => esc_html__('Show Progress Bar', 'king-addons'),
700 'type' => Controls_Manager::SWITCHER,
701 'default' => 'true',
702 'return_value' => 'true',
703 'condition' => [
704 'lightbox_popup_autoplay' => 'true'
705 ]
706 ]
707 );
708
709 $this->add_control(
710 'lightbox_popup_pause',
711 [
712 'label' => esc_html__('Autoplay Speed', 'king-addons'),
713 'type' => Controls_Manager::NUMBER,
714 'default' => 5,
715 'min' => 1,
716 'max' => 10,
717 'step' => 1,
718 'condition' => [
719 'lightbox_popup_autoplay' => 'true',
720 ],
721 ]
722 );
723
724 $this->add_control(
725 'lightbox_popup_counter',
726 [
727 'label' => esc_html__('Show Counter', 'king-addons'),
728 'type' => Controls_Manager::SWITCHER,
729 'default' => 'true',
730 'return_value' => 'true',
731 ]
732 );
733
734 $this->add_control(
735 'lightbox_popup_arrows',
736 [
737 'label' => esc_html__('Show Arrows', 'king-addons'),
738 'type' => Controls_Manager::SWITCHER,
739 'default' => 'true',
740 'return_value' => 'true',
741 ]
742 );
743
744 $this->add_control(
745 'lightbox_popup_captions',
746 [
747 'label' => esc_html__('Show Captions', 'king-addons'),
748 'type' => Controls_Manager::SWITCHER,
749 'default' => 'true',
750 'return_value' => 'true',
751 ]
752 );
753
754 $this->add_control_lightbox_popup_thumbnails();
755
756 $this->add_control_lightbox_popup_thumbnails_default();
757
758 $this->add_control_lightbox_popup_sharing();
759
760 $this->add_control(
761 'lightbox_popup_zoom',
762 [
763 'label' => esc_html__('Show Zoom Button', 'king-addons'),
764 'type' => Controls_Manager::SWITCHER,
765 'default' => 'true',
766 'return_value' => 'true',
767 ]
768 );
769
770 $this->add_control(
771 'lightbox_popup_fullscreen',
772 [
773 'label' => esc_html__('Show Full Screen Button', 'king-addons'),
774 'type' => Controls_Manager::SWITCHER,
775 'default' => 'true',
776 'return_value' => 'true',
777 ]
778 );
779
780 $this->add_control(
781 'lightbox_popup_download',
782 [
783 'label' => esc_html__('Show Download Button', 'king-addons'),
784 'type' => Controls_Manager::SWITCHER,
785 'default' => 'true',
786 'return_value' => 'true',
787 ]
788 );
789
790 $this->add_control(
791 'lightbox_popup_description',
792 [
793 'raw' => sprintf(__('You can change Lightbox Popup styling options globally. Navigate to <strong>Dashboard > %s > Settings</strong>.', 'king-addons'), Core::getPluginName()),
794 'type' => Controls_Manager::RAW_HTML,
795 'separator' => 'before',
796 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
797 ]
798 );
799
800 $this->end_controls_section();
801 }
802
803 /** @noinspection PhpUnused */
804 public function add_section_style_lightbox() {
805 $this->start_controls_section(
806 'section_style_lightbox',
807 [
808 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Lightbox', 'king-addons'),
809 'tab' => Controls_Manager::TAB_STYLE,
810 'show_label' => false,
811 ]
812 );
813
814 $this->start_controls_tabs('tabs_grid_lightbox_style');
815
816 $this->start_controls_tab(
817 'tab_grid_lightbox_normal',
818 [
819 'label' => esc_html__('Normal', 'king-addons'),
820 ]
821 );
822
823 $this->add_control(
824 'lightbox_color',
825 [
826 'label' => esc_html__('Color', 'king-addons'),
827 'type' => Controls_Manager::COLOR,
828 'default' => '#ffffff',
829 'selectors' => [
830 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'color: {{VALUE}}',
831 ],
832 ]
833 );
834
835 $this->add_control(
836 'lightbox_bg_color',
837 [
838 'label' => esc_html__('Background Color', 'king-addons'),
839 'type' => Controls_Manager::COLOR,
840 'selectors' => [
841 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'background-color: {{VALUE}}',
842 ]
843 ]
844 );
845
846 $this->add_control(
847 'lightbox_border_color',
848 [
849 'label' => esc_html__('Border Color', 'king-addons'),
850 'type' => Controls_Manager::COLOR,
851 'default' => '#E8E8E8',
852 'selectors' => [
853 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'border-color: {{VALUE}}',
854 ],
855 ]
856 );
857
858 $this->add_group_control(
859 Group_Control_Text_Shadow::get_type(),
860 [
861 'name' => 'lightbox_shadow',
862 'selector' => '{{WRAPPER}} .king-addons-grid-item-lightbox i',
863 ]
864 );
865
866 $this->end_controls_tab();
867
868 $this->start_controls_tab(
869 'tab_grid_lightbox_hover',
870 [
871 'label' => esc_html__('Hover', 'king-addons'),
872 ]
873 );
874
875 $this->add_control(
876 'lightbox_color_hr',
877 [
878 'label' => esc_html__('Color', 'king-addons'),
879 'type' => Controls_Manager::COLOR,
880 'default' => '#5B03FF',
881 'selectors' => [
882 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span:hover' => 'color: {{VALUE}}',
883 ],
884 ]
885 );
886
887 $this->add_control(
888 'lightbox_bg_color_hr',
889 [
890 'label' => esc_html__('Background Color', 'king-addons'),
891 'type' => Controls_Manager::COLOR,
892 'selectors' => [
893 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span:hover' => 'background-color: {{VALUE}}',
894 ]
895 ]
896 );
897
898 $this->add_control(
899 'lightbox_border_color_hr',
900 [
901 'label' => esc_html__('Border Color', 'king-addons'),
902 'type' => Controls_Manager::COLOR,
903 'default' => '#E8E8E8',
904 'selectors' => [
905 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span:hover' => 'border-color: {{VALUE}}',
906 ],
907 'separator' => 'after',
908 ]
909 );
910
911 $this->end_controls_tab();
912
913 $this->end_controls_tabs();
914
915 $this->add_control(
916 'lightbox_shadow_divider',
917 [
918 'type' => Controls_Manager::DIVIDER,
919 'style' => 'thick',
920 ]
921 );
922
923 $this->add_control(
924 'lightbox_transition_duration',
925 [
926 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
927 'type' => Controls_Manager::NUMBER,
928 'default' => 0.1,
929 'min' => 0,
930 'max' => 5,
931 'step' => 0.1,
932 'selectors' => [
933 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'transition-duration: {{VALUE}}s',
934 ],
935 'separator' => 'after',
936 ]
937 );
938
939 $this->add_group_control(
940 Group_Control_Typography::get_type(),
941 [
942 'name' => 'lightbox_typography',
943 'selector' => '{{WRAPPER}} .king-addons-grid-item-lightbox'
944 ]
945 );
946
947 $this->add_control(
948 'lightbox_border_type',
949 [
950 'label' => esc_html__('Border Type', 'king-addons'),
951 'type' => Controls_Manager::SELECT,
952 'options' => [
953 'none' => esc_html__('None', 'king-addons'),
954 'solid' => esc_html__('Solid', 'king-addons'),
955 'double' => esc_html__('Double', 'king-addons'),
956 'dotted' => esc_html__('Dotted', 'king-addons'),
957 'dashed' => esc_html__('Dashed', 'king-addons'),
958 'groove' => esc_html__('Groove', 'king-addons'),
959 ],
960 'default' => 'none',
961 'selectors' => [
962 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'border-style: {{VALUE}};',
963 ],
964 'render_type' => 'template',
965 'separator' => 'before',
966 ]
967 );
968
969 $this->add_control(
970 'lightbox_border_width',
971 [
972 'label' => esc_html__('Border Width', 'king-addons'),
973 'type' => Controls_Manager::DIMENSIONS,
974 'size_units' => ['px'],
975 'default' => [
976 'top' => 1,
977 'right' => 1,
978 'bottom' => 1,
979 'left' => 1,
980 ],
981 'selectors' => [
982 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
983 ],
984 'render_type' => 'template',
985 'condition' => [
986 'lightbox_border_type!' => 'none',
987 ],
988 ]
989 );
990
991 $this->add_control(
992 'lightbox_text_spacing',
993 [
994 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
995 'type' => Controls_Manager::SLIDER,
996 'size_units' => ['px'],
997 'range' => [
998 'px' => [
999 'min' => 0,
1000 'max' => 25,
1001 ],
1002 ],
1003 'default' => [
1004 'unit' => 'px',
1005 'size' => 5,
1006 ],
1007 'selectors' => [
1008 '{{WRAPPER}} .king-addons-grid-item-lightbox .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
1009 '{{WRAPPER}} .king-addons-grid-item-lightbox .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
1010 ],
1011 'separator' => 'before'
1012 ]
1013 );
1014
1015 $this->add_responsive_control(
1016 'lightbox_padding',
1017 [
1018 'label' => esc_html__('Padding', 'king-addons'),
1019 'type' => Controls_Manager::DIMENSIONS,
1020 'size_units' => ['px', '%'],
1021 'default' => [
1022 'top' => 0,
1023 'right' => 0,
1024 'bottom' => 0,
1025 'left' => 0,
1026 ],
1027 'selectors' => [
1028 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1029 ],
1030 'render_type' => 'template',
1031 'separator' => 'before',
1032 ]
1033 );
1034
1035 $this->add_responsive_control(
1036 'lightbox_margin',
1037 [
1038 'label' => esc_html__('Margin', 'king-addons'),
1039 'type' => Controls_Manager::DIMENSIONS,
1040 'size_units' => ['px', '%'],
1041 'default' => [
1042 'top' => 0,
1043 'right' => 0,
1044 'bottom' => 0,
1045 'left' => 0,
1046 ],
1047 'render_type' => 'template',
1048 'selectors' => [
1049 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1050 ],
1051 ]
1052 );
1053
1054 $this->add_control(
1055 'lightbox_radius',
1056 [
1057 'label' => esc_html__('Border Radius', 'king-addons'),
1058 'type' => Controls_Manager::DIMENSIONS,
1059 'size_units' => ['px', '%'],
1060 'default' => [
1061 'top' => 2,
1062 'right' => 2,
1063 'bottom' => 2,
1064 'left' => 2,
1065 ],
1066 'selectors' => [
1067 '{{WRAPPER}} .king-addons-grid-item-lightbox .inner-block > span' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1068 ],
1069 'separator' => 'before',
1070 ]
1071 );
1072
1073
1074
1075
1076 $this->end_controls_section();
1077
1078
1079 }
1080
1081 public function add_control_lightbox_popup_thumbnails()
1082 {
1083 $this->add_control(
1084 'lightbox_popup_thumbnails',
1085 [
1086 'label' => sprintf(__('Show Thumbnails %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
1087 'type' => Controls_Manager::SWITCHER,
1088 'classes' => 'king-addons-pro-control no-distance'
1089 ]
1090 );
1091 }
1092
1093 public function add_control_lightbox_popup_thumbnails_default()
1094 {
1095 $this->add_control(
1096 'popup_thumbnails_default',
1097 [
1098 'label' => sprintf(__('Show Thumbs by Default %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
1099 'type' => Controls_Manager::SWITCHER,
1100 'classes' => 'king-addons-pro-control no-distance'
1101 ]
1102 );
1103 }
1104
1105 public function add_control_lightbox_popup_sharing()
1106 {
1107 $this->add_control(
1108 'lightbox_popup_sharing',
1109 [
1110 'label' => sprintf(__('Show Sharing Button %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
1111 'type' => Controls_Manager::SWITCHER,
1112 'classes' => 'king-addons-pro-control no-distance'
1113 ]
1114 );
1115 }
1116
1117 public function add_control_filters_deeplinking()
1118 {
1119 $this->add_control(
1120 'filters_deeplinking',
1121 [
1122 'label' => sprintf(__('Enable Deep Linking %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
1123 'type' => Controls_Manager::SWITCHER,
1124 'classes' => 'king-addons-pro-control no-distance'
1125 ]
1126 );
1127 }
1128
1129 public function add_control_filters_animation()
1130 {
1131 $this->add_control(
1132 'filters_animation',
1133 [
1134 'label' => esc_html__('Select Animation', 'king-addons'),
1135 'type' => Controls_Manager::SELECT,
1136 'default' => 'default',
1137 'options' => [
1138 'default' => esc_html__('Default', 'king-addons'),
1139 'zoom' => esc_html__('Zoom', 'king-addons'),
1140 'pro-fd' => esc_html__('Fade (Pro)', 'king-addons'),
1141 'pro-fs' => esc_html__('Fade + SlideUp (Pro)', 'king-addons'),
1142 ],
1143 'separator' => 'before',
1144 ]
1145 );
1146 }
1147
1148 public function add_control_filters_icon()
1149 {
1150 }
1151
1152 public function add_control_filters_icon_align()
1153 {
1154 }
1155
1156 public function add_control_filters_count()
1157 {
1158 $this->add_control(
1159 'filters_count',
1160 [
1161 'label' => sprintf(__('Show Count %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
1162 'type' => Controls_Manager::SWITCHER,
1163 'classes' => 'king-addons-pro-control no-distance'
1164 ]
1165 );
1166 }
1167
1168 public function add_control_filters_count_superscript()
1169 {
1170 }
1171
1172 public function add_control_filters_count_brackets()
1173 {
1174 }
1175
1176 public function add_control_filters_default_filter()
1177 {
1178 }
1179
1180 public function add_control_pagination_type()
1181 {
1182 $options = [
1183 'default' => esc_html__('Default', 'king-addons'),
1184 'numbered' => esc_html__('Numbered', 'king-addons'),
1185 'load-more' => esc_html__('Load More Button', 'king-addons'),
1186 'pro-is' => esc_html__('Infinite Scrolling (Pro)', 'king-addons'),
1187 ];
1188
1189 if (king_addons_freemius()->can_use_premium_code__premium_only()) {
1190 $options = [
1191 'default' => esc_html__('Default', 'king-addons'),
1192 'load-more' => esc_html__('Load More Button', 'king-addons'),
1193 'pro-nb' => esc_html__('Numbered (Pro)', 'king-addons'),
1194 'pro-is' => esc_html__('Infinite Scrolling (Pro)', 'king-addons'),
1195 ];
1196 }
1197
1198 $this->add_control(
1199 'pagination_type',
1200 [
1201 'label' => esc_html__('Select Type', 'king-addons'),
1202 'type' => Controls_Manager::SELECT,
1203 'default' => 'load-more',
1204 'options' => $options,
1205 'separator' => 'after'
1206 ]
1207 );
1208 }
1209
1210 public function add_section_style_likes()
1211 {
1212 }
1213
1214 public function add_section_style_sharing()
1215 {
1216 }
1217
1218 public function add_section_style_custom_field1()
1219 {
1220 }
1221
1222 public function add_section_style_custom_field2()
1223 {
1224 }
1225
1226 public function add_section_style_custom_field3()
1227 {
1228 }
1229
1230 public function add_section_style_custom_field4()
1231 {
1232 }
1233
1234 public function add_control_grid_item_even_bg_color()
1235 {
1236 }
1237
1238 public function add_control_grid_item_even_border_color()
1239 {
1240 }
1241
1242 public function add_control_overlay_color()
1243 {
1244 $this->add_control(
1245 'overlay_color',
1246 [
1247 'label' => esc_html__('Background Color', 'king-addons'),
1248 'type' => Controls_Manager::COLOR,
1249 'default' => 'rgba(0, 0, 0, 0.25)',
1250 'selectors' => [
1251 '{{WRAPPER}} .king-addons-grid-media-hover-bg' => 'background-color: {{VALUE}}',
1252 ],
1253 ]
1254 );
1255 }
1256
1257 public function add_control_overlay_blend_mode()
1258 {
1259 }
1260
1261 public function add_control_overlay_border_color()
1262 {
1263 }
1264
1265 public function add_control_overlay_border_type()
1266 {
1267 }
1268
1269 public function add_control_overlay_border_width()
1270 {
1271 }
1272
1273 public function add_control_title_pointer_color_hr()
1274 {
1275 }
1276
1277 public function add_control_title_pointer()
1278 {
1279 }
1280
1281 public function add_control_title_pointer_height()
1282 {
1283 }
1284
1285 public function add_control_title_pointer_animation()
1286 {
1287 }
1288
1289 public function add_control_tax1_custom_colors($meta)
1290 {
1291 }
1292
1293 public function add_control_tax1_pointer_color_hr()
1294 {
1295 }
1296
1297 public function add_control_tax1_pointer()
1298 {
1299 }
1300
1301 public function add_control_tax1_pointer_height()
1302 {
1303 }
1304
1305 public function add_control_tax1_pointer_animation()
1306 {
1307 }
1308
1309 public function add_control_tax2_pointer_color_hr()
1310 {
1311 }
1312
1313 public function add_control_tax2_pointer()
1314 {
1315 }
1316
1317 public function add_control_tax2_pointer_height()
1318 {
1319 }
1320
1321 public function add_control_tax2_pointer_animation()
1322 {
1323 }
1324
1325 public function add_control_read_more_animation()
1326 {
1327 }
1328
1329 public function add_control_read_more_animation_height()
1330 {
1331 }
1332
1333 public function add_control_filters_pointer_color_hr()
1334 {
1335 }
1336
1337 public function add_control_filters_pointer()
1338 {
1339 }
1340
1341 public function add_control_filters_pointer_height()
1342 {
1343 }
1344
1345 public function add_control_filters_pointer_animation()
1346 {
1347 }
1348
1349 public function add_control_stack_grid_slider_nav_position()
1350 {
1351 }
1352
1353 public function add_control_grid_slider_dots_hr()
1354 {
1355 }
1356
1357 protected function register_controls()
1358 {
1359
1360
1361 $this->start_controls_section(
1362 'section_grid_query',
1363 [
1364 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Query', 'king-addons'),
1365 'tab' => Controls_Manager::TAB_CONTENT,
1366 ]
1367 );
1368
1369
1370 $post_types = $this->add_option_query_source();
1371
1372 $post_taxonomies = $this->get_available_taxonomies();
1373
1374 $tax_meta_keys = Core::getCustomMetaKeysTaxonomies();
1375
1376 $this->add_control(
1377 'query_source',
1378 [
1379 'label' => esc_html__('Source', 'king-addons'),
1380 'type' => Controls_Manager::SELECT,
1381 'default' => 'post',
1382 'options' => $post_types,
1383 ]
1384 );
1385
1386 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'grid', 'query_source', ['pro-rl']);
1387
1388 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
1389 $this->add_control(
1390 'query_source_cpt_pro_notice',
1391 [
1392 '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>',
1393 'type' => Controls_Manager::RAW_HTML,
1394 'content_classes' => 'king-addons-pro-notice',
1395 'condition' => [
1396 'query_source!' => ['post', 'page', 'related', 'current', 'pro-rl'],
1397 ]
1398 ]
1399 );
1400 }
1401
1402 $this->add_control(
1403 'query_selection',
1404 [
1405 'label' => esc_html__('Selection', 'king-addons'),
1406 'type' => Controls_Manager::SELECT,
1407 'default' => 'dynamic',
1408 'options' => [
1409 'dynamic' => esc_html__('Dynamic', 'king-addons'),
1410 'manual' => esc_html__('Manual', 'king-addons'),
1411 ],
1412 'condition' => [
1413 'query_source!' => ['current', 'related'],
1414 ],
1415 ]
1416 );
1417
1418 $this->add_control_order_posts();
1419
1420 $this->add_control_order_posts_by_acf([]);
1421
1422 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'grid', 'order_posts', ['pro-tl', 'pro-mf', 'pro-d', 'pro-ar', 'pro-cc']);
1423
1424 $this->add_control(
1425 'order_direction',
1426 [
1427 'label' => esc_html__('Order', 'king-addons'),
1428 'type' => Controls_Manager::SELECT,
1429 'default' => 'DESC',
1430 'label_block' => false,
1431 'options' => [
1432 'ASC' => esc_html__('Ascending', 'king-addons'),
1433 'DESC' => esc_html__('Descending', 'king-addons'),
1434 ],
1435 'condition' => [
1436 'query_randomize!' => 'rand',
1437 ]
1438 ]
1439 );
1440
1441 $this->add_control(
1442 'query_tax_selection',
1443 [
1444 'label' => esc_html__('Select Taxonomy', 'king-addons'),
1445 'type' => Controls_Manager::SELECT,
1446 'default' => 'category',
1447 'options' => $post_taxonomies,
1448 'condition' => [
1449 'query_source' => 'related',
1450 ],
1451 ]
1452 );
1453
1454 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
1455 $this->add_control(
1456 'query_tax_selection_pro_notice',
1457 [
1458 '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>',
1459 'type' => Controls_Manager::RAW_HTML,
1460 'content_classes' => 'king-addons-pro-notice',
1461 'condition' => [
1462 'query_tax_selection!' => ['category', 'post_tag'],
1463 ]
1464 ]
1465 );
1466 }
1467
1468 $this->add_control(
1469 'query_author',
1470 [
1471 'label' => esc_html__('Authors', 'king-addons'),
1472 'type' => 'king-addons-ajax-select2',
1473 'options' => 'ajaxselect2/getUsers',
1474 'multiple' => true,
1475 'label_block' => true,
1476 'separator' => 'before',
1477 'condition' => [
1478 'query_source!' => ['current', 'related'],
1479 'query_selection' => 'dynamic',
1480 ],
1481 ]
1482 );
1483
1484
1485 foreach ($post_taxonomies as $slug => $title) {
1486 global $wp_taxonomies;
1487 $post_type = '';
1488
1489 if (isset($wp_taxonomies[$slug]->object_type[0])) {
1490 $post_type = $wp_taxonomies[$slug]->object_type[0];
1491 }
1492
1493 $this->add_control(
1494 'query_taxonomy_' . $slug,
1495 [
1496 'label' => $title,
1497 'type' => 'king-addons-ajax-select2',
1498 'options' => 'ajaxselect2/getTaxonomies',
1499 'query_slug' => $slug,
1500 'multiple' => true,
1501 'label_block' => true,
1502 'condition' => [
1503 'query_source' => $post_type,
1504 'query_selection' => 'dynamic',
1505 ],
1506 ]
1507 );
1508 }
1509
1510
1511 foreach ($post_types as $slug => $title) {
1512 $this->add_control(
1513 'query_exclude_' . $slug,
1514 [
1515 'label' => esc_html__('Exclude ', 'king-addons') . $title,
1516 'type' => 'king-addons-ajax-select2',
1517 'options' => 'ajaxselect2/getPostsByPostType',
1518 'query_slug' => $slug,
1519 'multiple' => true,
1520 'label_block' => true,
1521 'condition' => [
1522 'query_source' => $slug,
1523 'query_source!' => ['current', 'related'],
1524 'query_selection' => 'dynamic',
1525 ],
1526 ]
1527 );
1528 }
1529
1530
1531 foreach ($post_types as $slug => $title) {
1532 $this->add_control(
1533 'query_manual_' . $slug,
1534 [
1535 'label' => esc_html__('Select ', 'king-addons') . $title,
1536 'type' => 'king-addons-ajax-select2',
1537 'options' => 'ajaxselect2/getPostsByPostType',
1538 'query_slug' => $slug,
1539 'multiple' => true,
1540 'label_block' => true,
1541 'condition' => [
1542 'query_source' => $slug,
1543 'query_selection' => 'manual',
1544 ],
1545 'separator' => 'before',
1546 ]
1547 );
1548 }
1549
1550 $this->add_control(
1551 'query_posts_per_page',
1552 [
1553 'label' => esc_html__('Items Per Page', 'king-addons'),
1554 'type' => Controls_Manager::NUMBER,
1555 'default' => 9,
1556 'min' => 0,
1557 'condition' => (king_addons_freemius()->can_use_premium_code__premium_only() ? ['query_source!' => 'current', 'layout_select!' => 'slider',] : ['query_source!' => 'current']),
1558 ]
1559 );
1560
1561 if (king_addons_freemius()->can_use_premium_code__premium_only()) {
1562 $this->add_control_query_slides_to_show();
1563 } else {
1564 $this->add_control(
1565 'limit_slides_to_show_pro_notice',
1566 [
1567 'type' => Controls_Manager::RAW_HTML,
1568 '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>',
1569
1570 'content_classes' => 'king-addons-pro-notice',
1571 'condition' => [
1572 'layout_select' => 'slider',
1573 ]
1574 ]
1575 );
1576 }
1577
1578 $this->add_control(
1579 'query_offset',
1580 [
1581 'label' => esc_html__('Offset', 'king-addons'),
1582 'type' => Controls_Manager::NUMBER,
1583 'default' => 0,
1584 'min' => 0,
1585 'condition' => [
1586 'query_selection' => 'dynamic',
1587 ]
1588 ]
1589 );
1590
1591 $this->add_control(
1592 'query_not_found_text',
1593 [
1594 'label' => esc_html__('Not Found Text', 'king-addons'),
1595 'type' => Controls_Manager::TEXT,
1596 'dynamic' => [
1597 'active' => true,
1598 ],
1599 'default' => 'No Posts Found!',
1600 'condition' => [
1601 'query_selection' => 'dynamic',
1602 'query_source!' => 'related',
1603 ]
1604 ]
1605 );
1606
1607 $this->add_control_display_scheduled_posts();
1608
1609 // TODO: Under development feature.
1610 // $this->add_control_query_randomize();
1611
1612 $this->add_control(
1613 'query_exclude_no_images',
1614 [
1615 'label' => esc_html__('Exclude Items without Thumbnail', 'king-addons'),
1616 'type' => Controls_Manager::SWITCHER,
1617 'return_value' => 'yes',
1618 'label_block' => false
1619 ]
1620 );
1621
1622 /** @noinspection HtmlUnknownTarget */
1623 $this->add_control(
1624 'current_query_notice',
1625 [
1626 'type' => Controls_Manager::RAW_HTML,
1627 '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')),
1628 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
1629 'condition' => [
1630 'query_source' => 'current',
1631 ],
1632 ]
1633 );
1634
1635
1636 $this->add_control(
1637 'element_select_filter',
1638 [
1639 'type' => Controls_Manager::HIDDEN,
1640 'default' => $this->get_related_taxonomies(),
1641 ]
1642 );
1643
1644 $this->end_controls_section();
1645
1646
1647 $this->start_controls_section(
1648 'section_grid_layout',
1649 [
1650 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Layout', 'king-addons'),
1651 'tab' => Controls_Manager::TAB_CONTENT,
1652 ]
1653 );
1654
1655 $this->add_control_layout_select();
1656
1657
1658 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'grid', 'layout_select', ['pro-ms']);
1659
1660 $this->add_control(
1661 'stick_last_element_to_bottom',
1662 [
1663 'label' => esc_html__('Last Element to Bottom', 'king-addons'),
1664 'type' => Controls_Manager::SWITCHER,
1665 'default' => '',
1666 'render_type' => 'template',
1667
1668 'condition' => [
1669 'layout_select' => 'fitRows',
1670 ]
1671 ]
1672 );
1673
1674 $this->add_control(
1675 'last_element_position',
1676 [
1677 'label' => esc_html__('Last Element Position', 'king-addons'),
1678 'type' => Controls_Manager::CHOOSE,
1679 'label_block' => false,
1680 'default' => 'left',
1681 'options' => [
1682 'left' => [
1683 'title' => esc_html__('Left', 'king-addons'),
1684 'icon' => 'eicon-h-align-left',
1685 ],
1686 'center' => [
1687 'title' => esc_html__('Center', 'king-addons'),
1688 'icon' => 'eicon-h-align-center',
1689 ],
1690 'right' => [
1691 'title' => esc_html__('Right', 'king-addons'),
1692 'icon' => 'eicon-h-align-right',
1693 ]
1694 ],
1695 'selectors_dictionary' => [
1696 'left' => 'left: 0; right: auto;',
1697 'center' => 'left: 50%; transform: translateX(-50%);',
1698 'right' => 'left: auto; right: 0;'
1699 ],
1700 'selectors' => [
1701 '{{WRAPPER}}.king-addons-grid-last-element-yes .king-addons-grid-item-below-content>div:last-child' => '{{VALUE}}',
1702 ],
1703 'render_type' => 'template',
1704 'separator' => 'after'
1705 ]
1706 );
1707
1708 $this->add_group_control(
1709 Group_Control_Image_Size::get_type(),
1710 [
1711 'name' => 'layout_image_crop',
1712 'default' => 'full',
1713 ]
1714 );
1715
1716 $this->add_control_layout_columns();
1717
1718 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
1719 $this->add_control(
1720 'grid_columns_pro_notice',
1721 [
1722 'type' => Controls_Manager::RAW_HTML,
1723 '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>',
1724
1725 'content_classes' => 'king-addons-pro-notice',
1726 ]
1727 );
1728 }
1729
1730
1731 $this->add_control(
1732 'layout_list_media_section',
1733 [
1734 'label' => esc_html__('Media', 'king-addons'),
1735 'type' => Controls_Manager::HEADING,
1736 'separator' => 'before',
1737 'condition' => [
1738 'layout_select' => 'list',
1739 ],
1740 ]
1741 );
1742
1743 /**
1744 * Add a switcher control to allow users to hide the post thumbnail in the grid.
1745 *
1746 * @since 1.0.0
1747 */
1748 $this->add_control(
1749 'hide_post_thumbnail',
1750 [
1751 'label' => esc_html__('Hide Post Thumbnail', 'king-addons'),
1752 'type' => Controls_Manager::SWITCHER,
1753 'default' => '',
1754 'return_value' => 'yes',
1755 'separator' => 'before',
1756 'description' => esc_html__('Completely hide the post featured image/thumbnail in the grid.', 'king-addons'),
1757 ]
1758 );
1759
1760 $this->add_control(
1761 'layout_list_align',
1762 [
1763 'label' => esc_html__('Alignment', 'king-addons'),
1764 'type' => Controls_Manager::SELECT,
1765 'default' => 'left',
1766 'options' => [
1767 'left' => esc_html__('Left', 'king-addons'),
1768 'right' => esc_html__('Right', 'king-addons'),
1769 'zigzag' => esc_html__('ZigZag', 'king-addons'),
1770 ],
1771 'condition' => [
1772 'layout_select' => 'list',
1773 ],
1774 ]
1775 );
1776
1777 $this->add_control(
1778 'layout_list_media_width',
1779 [
1780 'label' => esc_html__('Width', 'king-addons'),
1781 'type' => Controls_Manager::SLIDER,
1782 'default' => [
1783 'size' => 30,
1784 ],
1785 'range' => [
1786 '%' => [
1787 'min' => 0,
1788 'max' => 100,
1789 ],
1790 ],
1791 'condition' => [
1792 'layout_select' => 'list',
1793 ]
1794 ]
1795 );
1796
1797 $this->add_control(
1798 'layout_list_media_distance',
1799 [
1800 'label' => esc_html__('Distance', 'king-addons'),
1801 'type' => Controls_Manager::SLIDER,
1802 'default' => [
1803 'size' => 20,
1804 ],
1805 'range' => [
1806 'px' => [
1807 'min' => 0,
1808 'max' => 100,
1809 ],
1810 ],
1811 'condition' => [
1812 'layout_select' => 'list',
1813 ]
1814 ]
1815 );
1816
1817 $this->add_responsive_control(
1818 'layout_gutter_hr',
1819 [
1820 'label' => esc_html__('Horizontal Gutter', 'king-addons'),
1821 'type' => Controls_Manager::SLIDER,
1822 'range' => [
1823 'px' => [
1824 'min' => 0,
1825 'max' => 150,
1826 ],
1827 ],
1828 'default' => [
1829 'size' => 15,
1830 ],
1831 'widescreen_default' => [
1832 'size' => 15,
1833 ],
1834 'laptop_default' => [
1835 'size' => 15,
1836 ],
1837 'tablet_extra_default' => [
1838 'size' => 15,
1839 ],
1840 'tablet_default' => [
1841 'size' => 15,
1842 ],
1843 'mobile_extra_default' => [
1844 'size' => 15,
1845 ],
1846 'mobile_default' => [
1847 'size' => 15,
1848 ],
1849 'condition' => [
1850 'layout_select' => ['fitRows', 'masonry', 'list'],
1851 ],
1852 'separator' => 'before'
1853 ]
1854 );
1855
1856 $this->add_responsive_control(
1857 'layout_gutter_vr',
1858 [
1859 'label' => esc_html__('Vertical Gutter', 'king-addons'),
1860 'type' => Controls_Manager::SLIDER,
1861 'range' => [
1862 'px' => [
1863 'min' => 0,
1864 'max' => 150,
1865 ],
1866 ],
1867 'default' => [
1868 'size' => 15,
1869 ],
1870 'condition' => [
1871 'layout_select' => ['fitRows', 'masonry', 'list'],
1872 ]
1873 ]
1874 );
1875
1876 $this->add_responsive_control(
1877 'layout_filters',
1878 [
1879 'label' => esc_html__('Show Filters', 'king-addons'),
1880 'type' => Controls_Manager::SWITCHER,
1881 'default' => 'yes',
1882 'selectors_dictionary' => [
1883 '' => 'none',
1884 'yes' => 'block'
1885 ],
1886 'selectors' => [
1887 '{{WRAPPER}} .king-addons-grid-filters' => 'display:{{VALUE}};',
1888 ],
1889 'render_type' => 'template',
1890 'separator' => 'before',
1891 'condition' => [
1892 'layout_select!' => 'slider',
1893 ]
1894 ]
1895 );
1896
1897 $this->add_control(
1898 'layout_pagination',
1899 [
1900 'label' => esc_html__('Show Pagination', 'king-addons'),
1901 'description' => esc_html__('Please note that Pagination doesn\'t work in editor.', 'king-addons'),
1902 'type' => Controls_Manager::SWITCHER,
1903 'default' => 'yes',
1904 'return_value' => 'yes',
1905 'render_type' => 'template',
1906 'condition' => [
1907 'layout_select!' => 'slider',
1908 ]
1909 ]
1910 );
1911
1912 $this->add_control(
1913 'filters_experiment_hr_before',
1914 [
1915 'type' => Controls_Manager::DIVIDER,
1916 ]
1917 );
1918
1919 // TODO: Implement the Randomize Query feature.
1920 $this->add_control(
1921 'filters_experiment',
1922 [
1923 'label' => esc_html__('Filters & Load More Dynamic Loading (beta feature)', 'king-addons'),
1924 'type' => Controls_Manager::SWITCHER,
1925 'default' => 'no',
1926 'label_block' => false,
1927 'return_value' => 'yes',
1928 'render_type' => 'template',
1929 'separator' => 'after',
1930 // TODO: Later
1931
1932 // 'conditions' => [
1933 // 'relation' => 'and',
1934 // 'terms' => [
1935 // [
1936 // 'name' => 'layout_filters',
1937 // 'operator' => '!=',
1938 // 'value' => '',
1939 // ],
1940 // [
1941 // 'relation' => 'or',
1942 // 'terms' => [
1943 // [
1944 // 'relation' => 'and',
1945 // 'terms' => [
1946 // [
1947 // 'name' => 'layout_pagination',
1948 // 'operator' => '!=',
1949 // 'value' => '',
1950 // ],
1951 // [
1952 // 'name' => 'pagination_type',
1953 // 'operator' => 'in',
1954 // 'value' => ['load-more', 'infinite'],
1955 // ],
1956 // ]
1957 // ],
1958 // [
1959 // 'name' => 'layout_pagination',
1960 // 'operator' => '==',
1961 // 'value' => '',
1962 // ]
1963 // ],
1964 // ],
1965 // ]
1966 // ]
1967 ]
1968 );
1969
1970 $this->add_control_open_links_in_new_tab();
1971
1972 $this->add_control_grid_lazy_loading();
1973
1974 $this->add_control_layout_animation();
1975
1976 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'grid', 'layout_animation', ['pro-fd', 'pro-fs']);
1977
1978 $this->add_control(
1979 'layout_animation_duration',
1980 [
1981 'label' => esc_html__('Animation Duration', 'king-addons'),
1982 'type' => Controls_Manager::NUMBER,
1983 'default' => 0.3,
1984 'min' => 0,
1985 'max' => 5,
1986 'step' => 0.1,
1987 'condition' => [
1988 'layout_animation!' => 'default',
1989 'layout_select!' => 'slider',
1990 ],
1991 ]
1992 );
1993
1994 $this->add_control(
1995 'layout_animation_delay',
1996 [
1997 'label' => esc_html__('Animation Delay', 'king-addons'),
1998 'type' => Controls_Manager::NUMBER,
1999 'default' => 0.1,
2000 'min' => 0,
2001 'max' => 5,
2002 'step' => 0.05,
2003 'condition' => [
2004 'layout_animation!' => 'default',
2005 'layout_select!' => 'slider',
2006 ],
2007 ]
2008 );
2009
2010 $this->add_control_layout_slider_amount();
2011
2012 $this->add_control(
2013 'layout_slides_to_scroll',
2014 [
2015 'label' => esc_html__('Slides to Scroll', 'king-addons'),
2016 'type' => Controls_Manager::NUMBER,
2017 'min' => 1,
2018 'max' => 10,
2019 'default' => 1,
2020 'render_type' => 'template',
2021 'frontend_available' => true,
2022 'separator' => 'before',
2023 'condition' => [
2024 'layout_select' => 'slider',
2025 ],
2026 ]
2027 );
2028
2029 $this->add_responsive_control(
2030 'layout_slider_gutter',
2031 [
2032 'type' => Controls_Manager::SLIDER,
2033 'label' => esc_html__('Gutter', 'king-addons'),
2034 'size_units' => ['px'],
2035 'range' => [
2036 'px' => [
2037 'min' => 0,
2038 'max' => 50,
2039 ]
2040 ],
2041 'default' => [
2042 'unit' => 'px',
2043 'size' => 10,
2044 ],
2045 'selectors' => [
2046 '{{WRAPPER}} .king-addons-grid .slick-slide' => 'margin-left: {{SIZE}}{{UNIT}};',
2047 '{{WRAPPER}} .king-addons-grid .slick-list' => 'margin-left: -{{SIZE}}{{UNIT}};',
2048 ],
2049 'render_type' => 'template',
2050 'condition' => [
2051 'layout_slider_amount!' => '1',
2052 'layout_select' => 'slider',
2053 ],
2054 ]
2055 );
2056
2057 $this->add_responsive_control(
2058 'layout_slider_nav',
2059 [
2060 'label' => esc_html__('Navigation', 'king-addons'),
2061 'type' => Controls_Manager::SWITCHER,
2062 'default' => 'yes',
2063 'widescreen_default' => 'yes',
2064 'laptop_default' => 'yes',
2065 'tablet_extra_default' => 'yes',
2066 'tablet_default' => 'yes',
2067 'mobile_extra_default' => 'yes',
2068 'mobile_default' => 'yes',
2069 'selectors_dictionary' => [
2070 '' => 'none',
2071 'yes' => 'flex'
2072 ],
2073 'selectors' => [
2074 '{{WRAPPER}} .king-addons-grid-slider-arrow' => 'display:{{VALUE}} !important;',
2075 ],
2076 'separator' => 'before',
2077 'condition' => [
2078 'layout_select' => 'slider',
2079 ]
2080 ]
2081 );
2082
2083 $this->add_control_layout_slider_nav_hover();
2084
2085
2086 $this->add_control(
2087 'layout_slider_nav_icon',
2088 [
2089 'label' => esc_html__('Select Icon', 'king-addons'),
2090 'type' => Controls_Manager::SELECT,
2091 'default' => 'fas fa-angle-left',
2092 'options' => [
2093 'fas fa-angle-left' => esc_html__('Angle', 'king-addons'),
2094 'fas fa-angle-double-left' => esc_html__('Angle Double', 'king-addons'),
2095 'fas fa-arrow-left' => esc_html__('Arrow', 'king-addons'),
2096 'fas fa-arrow-alt-circle-left' => esc_html__('Arrow Circle', 'king-addons'),
2097 'far fa-arrow-alt-circle-left' => esc_html__('Arrow Circle Alt', 'king-addons'),
2098 'fas fa-long-arrow-alt-left' => esc_html__('Long Arrow', 'king-addons'),
2099 'fas fa-chevron-left' => esc_html__('Chevron', 'king-addons'),
2100 ],
2101 'separator' => 'after',
2102 'condition' => [
2103 'layout_slider_nav' => 'yes',
2104 'layout_select' => 'slider',
2105 ],
2106 ]
2107 );
2108
2109 $this->add_responsive_control(
2110 'layout_slider_dots',
2111 [
2112 'label' => esc_html__('Pagination', 'king-addons'),
2113 'type' => Controls_Manager::SWITCHER,
2114 'default' => 'yes',
2115 'widescreen_default' => 'yes',
2116 'laptop_default' => 'yes',
2117 'tablet_extra_default' => 'yes',
2118 'tablet_default' => 'yes',
2119 'mobile_extra_default' => 'yes',
2120 'mobile_default' => 'yes',
2121 'selectors_dictionary' => [
2122 '' => 'none',
2123 'yes' => 'inline-table'
2124 ],
2125 'selectors' => [
2126 '{{WRAPPER}} .king-addons-grid-slider-dots' => 'display:{{VALUE}};',
2127 ],
2128 'render_type' => 'template',
2129 'condition' => [
2130 'layout_select' => 'slider',
2131 ],
2132 ]
2133 );
2134
2135 $this->add_control_layout_slider_dots_position();
2136
2137
2138 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'grid', 'layout_slider_dots_position', ['pro-vr']);
2139
2140 $this->add_control_layout_slider_autoplay();
2141
2142 $this->add_controls_group_layout_slider_autoplay();
2143
2144 $this->add_control(
2145 'layout_slider_loop',
2146 [
2147 'label' => esc_html__('Infinite Loop', 'king-addons'),
2148 'type' => Controls_Manager::SWITCHER,
2149 'default' => 'yes',
2150 'separator' => 'before',
2151 'frontend_available' => true,
2152 'condition' => [
2153 'layout_select' => 'slider',
2154 ],
2155 ]
2156 );
2157
2158 $this->add_control(
2159 'layout_slider_effect',
2160 [
2161 'type' => Controls_Manager::SELECT,
2162 'label' => esc_html__('Effect', 'king-addons'),
2163 'default' => 'slide',
2164 'options' => [
2165 'slide' => esc_html__('Slide', 'king-addons'),
2166 'fade' => esc_html__('Fade', 'king-addons'),
2167 ],
2168 'condition' => [
2169 'layout_slider_amount' => 1,
2170 'layout_select' => 'slider',
2171 ],
2172 ]
2173 );
2174
2175 $this->add_control(
2176 'layout_slider_effect_duration',
2177 [
2178 'label' => esc_html__('Effect Duration', 'king-addons'),
2179 'type' => Controls_Manager::NUMBER,
2180 'default' => 0.7,
2181 'min' => 0,
2182 'max' => 5,
2183 'step' => 0.1,
2184 'condition' => [
2185 'layout_slider_amount' => 1,
2186 'layout_select' => 'slider',
2187 ],
2188 ]
2189 );
2190
2191 $this->end_controls_section();
2192
2193
2194 $this->start_controls_section(
2195 'section_grid_elements',
2196 [
2197 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Elements', 'king-addons'),
2198 'tab' => Controls_Manager::TAB_CONTENT,
2199 ]
2200 );
2201
2202 $repeater = new Repeater();
2203
2204 $element_select = $this->add_option_element_select();
2205
2206 $repeater->add_control(
2207 'element_select',
2208 [
2209 'label' => esc_html__('Select Element', 'king-addons'),
2210 'type' => Controls_Manager::SELECT,
2211 'default' => 'title',
2212 'options' => array_merge($element_select, $post_taxonomies),
2213 'separator' => 'after'
2214 ]
2215 );
2216
2217 $repeater->add_control(
2218 'show_last_update_date',
2219 [
2220 'label' => esc_html__('Show Last Update Date', 'king-addons'),
2221 'type' => Controls_Manager::SWITCHER,
2222 'return_value' => 'yes',
2223 'separator' => 'after',
2224 'condition' => [
2225 'element_select' => 'date',
2226 ]
2227 ]
2228 );
2229
2230 Core::renderUpgradeProNotice($repeater, Controls_Manager::RAW_HTML, 'grid', 'element_select', ['pro-lk', 'pro-shr']);
2231 Core::renderUpgradeProNotice($repeater, Controls_Manager::RAW_HTML, 'grid', 'element_select', ['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 = $this->get_settings();
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 = $this->get_settings();
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 // Disable if mobile + disable-mobile setting
8585 if (
8586 'overlay' !== $object &&
8587 'yes' === ($data[$object . '_animation_disable_mobile'] ?? '') &&
8588 wp_is_mobile()
8589 ) {
8590 return '';
8591 }
8592
8593 $class = '';
8594 $anim = $data[$object . '_animation'] ?? 'none';
8595
8596 if ('none' !== $anim) {
8597 $class .= ' king-addons-' . $object . '-' . $anim;
8598 $class .= ' king-addons-anim-size-' . ($data[$object . '_animation_size'] ?? '');
8599 $class .= ' king-addons-animation-timing-' . ($data[$object . '_animation_timing'] ?? '');
8600 if ('yes' === ($data[$object . '_animation_tr'] ?? '')) {
8601 $class .= ' king-addons-anim-transparency';
8602 }
8603 }
8604 return $class;
8605 }
8606
8607 public function get_image_effect_class($settings)
8608 {
8609 // Restrict effects if premium not available
8610 if (
8611 !king_addons_freemius()->can_use_premium_code__premium_only() &&
8612 in_array($settings['image_effects'], ['pro-zi', 'pro-zo', 'pro-go', 'pro-bo'])
8613 ) {
8614 $settings['image_effects'] = 'none';
8615 }
8616
8617 $class = '';
8618 $effect = $settings['image_effects'] ?? 'none';
8619
8620 if ('none' !== $effect) {
8621 $class .= ' king-addons-' . $effect;
8622 }
8623
8624 // For 'slide' vs other effect directions
8625 if ('slide' !== $effect) {
8626 $class .= ' king-addons-effect-size-' . ($settings['image_effects_size'] ?? '');
8627 } else {
8628 $class .= ' king-addons-effect-dir-' . ($settings['image_effects_direction'] ?? '');
8629 }
8630
8631 return $class;
8632 }
8633
8634 public function render_password_protected_input()
8635 {
8636 if (!post_password_required()) {
8637 return;
8638 }
8639
8640 add_filter('the_password_form', function () {
8641 $output = '<form action="' . esc_url(home_url('wp-login.php?action=postpass')) . '" method="post">';
8642 $output .= '<i class="fas fa-lock"></i>';
8643 $output .= '<p>' . esc_html(get_the_title()) . '</p>';
8644 $output .= '<input type="password" name="post_password" id="post-' . esc_attr(get_the_id()) . '" placeholder="' . esc_html__('Type and hit Enter...', 'king-addons') . '">';
8645 $output .= '</form>';
8646 return $output;
8647 });
8648
8649 echo '<div class="king-addons-grid-item-protected king-addons-cv-container">';
8650 echo ' <div class="king-addons-cv-outer">';
8651 echo ' <div class="king-addons-cv-inner">';
8652 echo get_the_password_form();
8653 echo ' </div>';
8654 echo ' </div>';
8655 echo '</div>';
8656 }
8657
8658 public function render_post_thumbnail($settings)
8659 {
8660 $id = get_post_thumbnail_id();
8661 $src = Group_Control_Image_Size::get_attachment_image_src($id, 'layout_image_crop', $settings);
8662
8663 // Secondary image
8664 $sec_meta = get_post_meta(get_the_ID(), 'king_addons_secondary_image_id', true);
8665 $src2 = !empty($sec_meta)
8666 ? Group_Control_Image_Size::get_attachment_image_src($sec_meta, 'layout_image_crop', $settings)
8667 : '';
8668
8669 // Determine alt
8670 $alt = '' === wp_get_attachment_caption($id)
8671 ? get_the_title()
8672 : wp_get_attachment_caption($id);
8673
8674 if (has_post_thumbnail()) {
8675 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) . '">';
8676
8677 // Lazy loading vs normal
8678 /** @noinspection PhpIfWithCommonPartsInspection */
8679 if ('yes' === $settings['grid_lazy_loading']) {
8680 echo '<img loading="lazy" src="'.esc_url($src).'"
8681 alt="' . esc_attr($alt) . '" class="king-addons-hidden-image king-addons-animation-timing-' . esc_attr($settings['image_effects_animation_timing']) . '">';
8682 if ('yes' === $settings['secondary_img_on_hover']) {
8683 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']) . '">';
8684 }
8685 } else {
8686 echo '<img src="' . esc_url($src) . '" alt="' . esc_attr($alt) . '" class="king-addons-animation-timing-' . esc_attr($settings['image_effects_animation_timing']) . '">';
8687 if ('yes' === $settings['secondary_img_on_hover']) {
8688 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']) . '">';
8689 }
8690 }
8691 echo '</div>';
8692 }
8693 }
8694
8695 public function render_media_overlay($settings)
8696 {
8697 echo '<div class="king-addons-grid-media-hover-bg ' . esc_attr($this->get_animation_class($settings, 'overlay')) . '" data-url="' . esc_url(get_the_permalink()) . '">';
8698 if (king_addons_freemius()->can_use_premium_code__premium_only() && !empty($settings['overlay_image']['url'])) {
8699 echo '<img src="' . esc_url($settings['overlay_image']['url']) . '" alt="' . esc_attr($settings['overlay_image']['alt']) . '">';
8700 }
8701 echo '</div>';
8702 }
8703
8704 public function render_post_title($settings, $class)
8705 {
8706 // Fallback pointer for non-premium
8707 $title_pointer = king_addons_freemius()->can_use_premium_code__premium_only()
8708 ? ($this->get_settings()['title_pointer'] ?? 'none')
8709 : 'none';
8710 $title_pointer_animation = king_addons_freemius()->can_use_premium_code__premium_only()
8711 ? ($this->get_settings()['title_pointer_animation'] ?? 'fade')
8712 : 'fade';
8713
8714 $pointer_item_class = ($title_pointer !== 'none')
8715 ? 'class="king-addons-pointer-item"'
8716 : '';
8717
8718 $new_tab = ('yes' === $this->get_settings()['open_links_in_new_tab']) ? '_blank' : '_self';
8719
8720 $class .= ' king-addons-pointer-' . $title_pointer;
8721 $class .= ' king-addons-pointer-line-fx king-addons-pointer-fx-' . $title_pointer_animation;
8722
8723 // Validate allowed HTML tags
8724 $tags_whitelist = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'span', 'p'];
8725 $element_title_tag = Core::validateHTMLTags($settings['element_title_tag'], 'h2', $tags_whitelist);
8726
8727 echo '<' . esc_attr($element_title_tag) . ' class="' . esc_attr($class) . '">';
8728 echo ' <div class="inner-block">';
8729 echo ' <a target="' . esc_attr($new_tab) . '" ' . $pointer_item_class . ' href="' . esc_url(get_the_permalink()) . '">';
8730 if ('word_count' === $settings['element_trim_text_by']) {
8731 echo esc_html(wp_trim_words(get_the_title(), $settings['element_word_count']));
8732 } else {
8733 echo esc_html(mb_substr(html_entity_decode(get_the_title()), 0, $settings['element_letter_count'])) . '...';
8734 }
8735 echo ' </a>';
8736 echo ' </div>';
8737 echo '</' . esc_attr($element_title_tag) . '>';
8738 }
8739
8740 public function render_post_content($settings, $class)
8741 {
8742 if ('' === get_the_content()) {
8743 return;
8744 }
8745 if ('yes' === $settings['element_dropcap']) {
8746 $class .= ' king-addons-enable-dropcap';
8747 }
8748
8749 echo '<div class="' . esc_attr($class) . '">';
8750 echo ' <div class="inner-block">';
8751 echo wp_kses_post(apply_filters('the_content', get_the_content()));
8752 echo ' </div>';
8753 echo '</div>';
8754 }
8755
8756 public function render_post_excerpt($settings, $class)
8757 {
8758 if ('' === get_the_excerpt()) {
8759 return;
8760 }
8761 if ('yes' === $settings['element_dropcap']) {
8762 $class .= ' king-addons-enable-dropcap';
8763 }
8764
8765 echo '<div class="' . esc_attr($class) . '">';
8766 echo ' <div class="inner-block">';
8767 if ('word_count' === $settings['element_trim_text_by']) {
8768 echo '<p>' . esc_html(wp_trim_words(get_the_excerpt(), $settings['element_word_count'])) . '</p>';
8769 } else {
8770 // slice letters
8771 $excerptLetters = implode('', array_slice(str_split(get_the_excerpt()), 0, $settings['element_letter_count']));
8772 echo '<p>' . esc_html($excerptLetters) . '...</p>';
8773 }
8774 echo ' </div>';
8775 echo '</div>';
8776 }
8777
8778 public function render_post_date($settings, $class)
8779 {
8780 echo '<div class="' . esc_attr($class) . '">';
8781 echo ' <div class="inner-block">';
8782 echo ' <span>';
8783
8784 if ('before' === $settings['element_extra_text_pos']) {
8785 echo '<span class="king-addons-grid-extra-text-left">' . esc_html($settings['element_extra_text']) . '</span>';
8786 }
8787 if ('before' === $settings['element_extra_icon_pos']) {
8788 ob_start();
8789 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
8790 $icon = ob_get_clean();
8791 echo '<span class="king-addons-grid-extra-icon-left">' . $icon . '</span>';
8792 }
8793
8794 if ('yes' === $settings['show_last_update_date']) {
8795 echo esc_html(get_the_modified_time(get_option('date_format')));
8796 } else {
8797 echo esc_html(apply_filters('the_date', get_the_date(), get_option('date_format'), '', ''));
8798 }
8799
8800 if ('after' === $settings['element_extra_icon_pos']) {
8801 ob_start();
8802 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
8803 $icon = ob_get_clean();
8804 echo '<span class="king-addons-grid-extra-icon-right">' . $icon . '</span>';
8805 }
8806 if ('after' === $settings['element_extra_text_pos']) {
8807 echo '<span class="king-addons-grid-extra-text-right">' . esc_html($settings['element_extra_text']) . '</span>';
8808 }
8809
8810 echo ' </span>';
8811 echo ' </div>';
8812 echo '</div>';
8813 }
8814
8815 public function render_post_time($settings, $class)
8816 {
8817 echo '<div class="' . esc_attr($class) . '">';
8818 echo ' <div class="inner-block">';
8819 echo ' <span>';
8820
8821 if ('before' === $settings['element_extra_text_pos']) {
8822 echo '<span class="king-addons-grid-extra-text-left">' . esc_html($settings['element_extra_text']) . '</span>';
8823 }
8824 if ('before' === $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-left">' . $icon . '</span>';
8829 }
8830
8831 echo esc_html(get_the_time());
8832
8833 if ('after' === $settings['element_extra_icon_pos']) {
8834 ob_start();
8835 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
8836 $icon = ob_get_clean();
8837 echo '<span class="king-addons-grid-extra-icon-right">' . $icon . '</span>';
8838 }
8839 if ('after' === $settings['element_extra_text_pos']) {
8840 echo '<span class="king-addons-grid-extra-text-right">' . esc_html($settings['element_extra_text']) . '</span>';
8841 }
8842
8843 echo ' </span>';
8844 echo ' </div>';
8845 echo '</div>';
8846 }
8847
8848 public function render_post_author($settings, $class)
8849 {
8850 $author_id = get_post_field('post_author');
8851
8852 echo '<div class="' . esc_attr($class) . '">';
8853 echo ' <div class="inner-block">';
8854
8855 if ('before' === $settings['element_extra_text_pos']) {
8856 echo '<span class="king-addons-grid-extra-text-left">' . esc_html($settings['element_extra_text']) . '</span>';
8857 }
8858
8859 echo '<a href="' . esc_url(get_author_posts_url($author_id)) . '">';
8860
8861 if ('before' === $settings['element_extra_icon_pos']) {
8862 ob_start();
8863 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
8864 $icon = ob_get_clean();
8865 echo '<span class="king-addons-grid-extra-icon-left">' . $icon . '</span>';
8866 }
8867 if ('yes' === $settings['element_show_avatar']) {
8868 echo get_avatar($author_id, $settings['element_avatar_size']);
8869 }
8870
8871 echo '<span>' . esc_html(get_the_author_meta('display_name', $author_id)) . '</span>';
8872
8873 if ('after' === $settings['element_extra_icon_pos']) {
8874 ob_start();
8875 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
8876 $icon = ob_get_clean();
8877 echo '<span class="king-addons-grid-extra-icon-right">' . $icon . '</span>';
8878 }
8879
8880 echo '</a>';
8881
8882 if ('after' === $settings['element_extra_text_pos']) {
8883 echo '<span class="king-addons-grid-extra-text-right">' . esc_html($settings['element_extra_text']) . '</span>';
8884 }
8885
8886 echo ' </div>';
8887 echo '</div>';
8888 }
8889
8890 public function render_post_comments($settings, $class)
8891 {
8892 if (!comments_open()) {
8893 return;
8894 }
8895
8896 $count = get_comments_number();
8897 if ($count == 1) {
8898 $text = $count . ' ' . $settings['element_comments_text_2'];
8899 } elseif ($count > 1) {
8900 $text = $count . ' ' . $settings['element_comments_text_3'];
8901 } else {
8902 $text = $settings['element_comments_text_1'];
8903 }
8904
8905 echo '<div class="' . esc_attr($class) . '">';
8906 echo ' <div class="inner-block">';
8907
8908 if ('before' === $settings['element_extra_text_pos']) {
8909 echo '<span class="king-addons-grid-extra-text-left">' . esc_html($settings['element_extra_text']) . '</span>';
8910 }
8911
8912 echo '<a href="' . esc_url(get_comments_link()) . '">';
8913
8914 if ('before' === $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-left">' . $icon . '</span>';
8919 }
8920
8921 echo '<span>' . esc_html($text) . '</span>';
8922
8923 if ('after' === $settings['element_extra_icon_pos']) {
8924 ob_start();
8925 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
8926 $icon = ob_get_clean();
8927 echo '<span class="king-addons-grid-extra-icon-right">' . $icon . '</span>';
8928 }
8929
8930 echo '</a>';
8931
8932 if ('after' === $settings['element_extra_text_pos']) {
8933 echo '<span class="king-addons-grid-extra-text-right">' . esc_html($settings['element_extra_text']) . '</span>';
8934 }
8935
8936 echo ' </div>';
8937 echo '</div>';
8938 }
8939
8940 public function render_post_read_more($settings, $class)
8941 {
8942 // Fallback animation for non-premium
8943 $read_more_animation = king_addons_freemius()->can_use_premium_code__premium_only()
8944 ? $this->get_settings()['read_more_animation']
8945 : 'king-addons-button-none';
8946
8947 $new_tab = ('yes' === $this->get_settings()['open_links_in_new_tab']) ? '_blank' : '_self';
8948
8949 echo '<div class="' . esc_attr($class) . '">';
8950 echo ' <div class="inner-block">';
8951 echo ' <a target="' . esc_attr($new_tab) . '" href="' . esc_url(get_the_permalink()) . '" class="king-addons-button-effect ' . esc_attr($read_more_animation) . '">';
8952
8953 if ('before' === $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-left">' . $icon . '</span>';
8958 }
8959
8960 echo '<span>' . esc_html($settings['element_read_more_text']) . '</span>';
8961
8962 if ('after' === $settings['element_extra_icon_pos']) {
8963 ob_start();
8964 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
8965 $icon = ob_get_clean();
8966 echo '<span class="king-addons-grid-extra-icon-right">' . $icon . '</span>';
8967 }
8968
8969 echo ' </a>';
8970 echo ' </div>';
8971 echo '</div>';
8972 }
8973
8974 // Placeholder for premium-protected items
8975 public function render_post_likes($settings, $class, $post_id)
8976 {
8977 }
8978
8979 public function render_post_sharing_icons($settings, $class)
8980 {
8981 }
8982
8983 public function render_post_custom_field($settings, $class, $post_id)
8984 {
8985 }
8986
8987 public function render_post_lightbox($settings, $class, $post_id)
8988 {
8989 echo '<div class="' . esc_attr($class) . '">';
8990 echo ' <div class="inner-block">';
8991
8992 // Default to post thumbnail if set
8993 $lightbox_source = get_the_post_thumbnail_url($post_id);
8994
8995 // Handle Audio/Video meta
8996 if ('audio' === get_post_format()) {
8997 if ('meta' === $settings['element_lightbox_pfa_select']) {
8998 $meta_value = get_post_meta($post_id, $settings['element_lightbox_pfa_meta'], true);
8999 // Attempt to oEmbed
9000 if (false === strpos($meta_value, '<iframe ')) {
9001 add_filter('oembed_result', $posts_grid_filter = function ($html) {
9002 preg_match('/<iframe.*src=\"(.*)\".*><\/iframe>/isU', $html, $matches);
9003 return $matches[1] . '&auto_play=true';
9004 }, 50, 3);
9005 $track_url = wp_oembed_get($meta_value);
9006 remove_filter('oembed_result', $posts_grid_filter, 50);
9007 } else {
9008 $track_url = Core::filterOembedResults($meta_value);
9009 }
9010 $lightbox_source = $track_url;
9011 }
9012 } elseif ('video' === get_post_format()) {
9013 if ('meta' === $settings['element_lightbox_pfv_select']) {
9014 $meta_value = get_post_meta($post_id, $settings['element_lightbox_pfv_meta'], true);
9015 if (false === strpos($meta_value, '<iframe ')) {
9016 $video = Embed::get_video_properties($meta_value);
9017 } else {
9018 $video = Embed::get_video_properties(Core::filterOembedResults($meta_value));
9019 }
9020
9021 if (isset($video['provider'], $video['video_id'])) {
9022 if ('youtube' === $video['provider']) {
9023 $lightbox_source = 'https://www.youtube.com/embed/' . $video['video_id'] . '?feature=oembed&autoplay=1&controls=1';
9024 } elseif ('vimeo' === $video['provider']) {
9025 $lightbox_source = 'https://player.vimeo.com/video/' . $video['video_id'] . '?autoplay=1#t=0';
9026 }
9027 }
9028 }
9029 }
9030
9031 echo ' <span data-src="' . esc_url($lightbox_source) . '">';
9032
9033 if ('before' === $settings['element_extra_text_pos']) {
9034 echo '<span class="king-addons-grid-extra-text-left">' . esc_html($settings['element_extra_text']) . '</span>';
9035 }
9036
9037 echo ' <i class="' . esc_attr($settings['element_extra_icon']['value']) . '"></i>';
9038
9039 if ('after' === $settings['element_extra_text_pos']) {
9040 echo '<span class="king-addons-grid-extra-text-right">' . esc_html($settings['element_extra_text']) . '</span>';
9041 }
9042
9043 echo ' </span>';
9044
9045 if ('yes' === $settings['element_lightbox_overlay']) {
9046 echo '<div class="king-addons-grid-lightbox-overlay"></div>';
9047 }
9048
9049 echo ' </div>';
9050 echo '</div>';
9051 }
9052
9053 public function render_post_element_separator($settings, $class)
9054 {
9055 echo '<div class="' . esc_attr($class . ' ' . $settings['element_separator_style']) . '">';
9056 echo ' <div class="inner-block"><span></span></div>';
9057 echo '</div>';
9058 }
9059
9060 public function render_post_taxonomies($settings, $class, $post_id)
9061 {
9062 $terms = wp_get_post_terms($post_id, $settings['element_select']);
9063 if (empty($terms)) {
9064 return;
9065 }
9066
9067 // Handle pointer classes (premium or fallback)
9068 $tax1_pointer = king_addons_freemius()->can_use_premium_code__premium_only()
9069 ? ($this->get_settings()['tax1_pointer'] ?? 'none')
9070 : 'none';
9071 $tax1_pointer_animation = king_addons_freemius()->can_use_premium_code__premium_only()
9072 ? ($this->get_settings()['tax1_pointer_animation'] ?? 'fade')
9073 : 'fade';
9074 $tax2_pointer = king_addons_freemius()->can_use_premium_code__premium_only()
9075 ? ($this->get_settings()['tax2_pointer'] ?? 'none')
9076 : 'none';
9077 $tax2_pointer_animation = king_addons_freemius()->can_use_premium_code__premium_only()
9078 ? ($this->get_settings()['tax2_pointer_animation'] ?? 'fade')
9079 : 'fade';
9080
9081 // Decide which pointer to use
9082 if ('king-addons-grid-tax-style-1' === $settings['element_tax_style']) {
9083 $class .= ' king-addons-pointer-' . $tax1_pointer;
9084 $class .= ' king-addons-pointer-line-fx king-addons-pointer-fx-' . $tax1_pointer_animation;
9085 } else {
9086 $class .= ' king-addons-pointer-' . $tax2_pointer;
9087 $class .= ' king-addons-pointer-line-fx king-addons-pointer-fx-' . $tax2_pointer_animation;
9088 }
9089
9090 echo '<div class="' . esc_attr($class . ' ' . $settings['element_tax_style']) . '">';
9091 echo ' <div class="inner-block">';
9092
9093 if ('before' === $settings['element_extra_text_pos']) {
9094 echo '<span class="king-addons-grid-extra-text-left">' . esc_html($settings['element_extra_text']) . '</span>';
9095 }
9096 if ('before' === $settings['element_extra_icon_pos']) {
9097 ob_start();
9098 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
9099 $icon = ob_get_clean();
9100 echo '<span class="king-addons-grid-extra-icon-left">' . $icon . '</span>';
9101 }
9102
9103 $count = 0;
9104 $sep = esc_html($settings['element_tax_sep'] ?? '');
9105 $pointer = (($tax1_pointer !== 'none') || ($tax2_pointer !== 'none')) ? 'king-addons-pointer-item' : '';
9106
9107 foreach ($terms as $term) {
9108 // Possibly set custom colors (premium) for tax style 1
9109 if (
9110 'yes' === ($this->get_settings()['tax1_custom_color_switcher'] ?? '') &&
9111 'king-addons-grid-tax-style-1' === $settings['element_tax_style']
9112 ) {
9113 $cfc_text = get_term_meta($term->term_id, $this->get_settings()['tax1_custom_color_field_text'], true);
9114 $cfc_bg = get_term_meta($term->term_id, $this->get_settings()['tax1_custom_color_field_bg'], true);
9115 $color_css = "color:$cfc_text; background-color:$cfc_bg; border-color:$cfc_bg;";
9116 $custom_selector = '.elementor-element' . $this->get_unique_selector() .
9117 ' .king-addons-grid-tax-style-1 .inner-block a.king-addons-tax-id-' . esc_attr($term->term_id);
9118 echo '<style>' . $custom_selector . '{' . $color_css . '}</style>';
9119 }
9120
9121 echo '<a class="' . $pointer . ' king-addons-tax-id-' . esc_attr($term->term_id) . '" href="' . esc_url(get_term_link($term->term_id)) . '">';
9122 echo esc_html($term->name);
9123 if (++$count !== count($terms)) {
9124 echo '<span class="tax-sep">' . $sep . '</span>';
9125 }
9126 echo '</a>';
9127 }
9128
9129 if ('after' === $settings['element_extra_icon_pos']) {
9130 ob_start();
9131 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
9132 $icon = ob_get_clean();
9133 echo '<span class="king-addons-grid-extra-icon-right">' . $icon . '</span>';
9134 }
9135 if ('after' === $settings['element_extra_text_pos']) {
9136 echo '<span class="king-addons-grid-extra-text-right">' . esc_html($settings['element_extra_text']) . '</span>';
9137 }
9138
9139 echo ' </div>';
9140 echo '</div>';
9141 }
9142
9143 public function get_elements($type, $settings, $class, $post_id)
9144 {
9145 // Fallback for certain pro elements
9146 if (in_array($type, ['pro-lk', 'pro-shr', 'pro-cf'])) {
9147 $type = 'title';
9148 }
9149
9150 switch ($type) {
9151 case 'title':
9152 $this->render_post_title($settings, $class);
9153 break;
9154 case 'content':
9155 $this->render_post_content($settings, $class);
9156 break;
9157 case 'excerpt':
9158 $this->render_post_excerpt($settings, $class);
9159 break;
9160 case 'date':
9161 $this->render_post_date($settings, $class);
9162 break;
9163 case 'time':
9164 $this->render_post_time($settings, $class);
9165 break;
9166 case 'author':
9167 $this->render_post_author($settings, $class);
9168 break;
9169 case 'comments':
9170 $this->render_post_comments($settings, $class);
9171 break;
9172 case 'read-more':
9173 $this->render_post_read_more($settings, $class);
9174 break;
9175 case 'likes':
9176 $this->render_post_likes($settings, $class, $post_id);
9177 break;
9178 case 'sharing':
9179 $this->render_post_sharing_icons($settings, $class);
9180 break;
9181 case 'lightbox':
9182 $this->render_post_lightbox($settings, $class, $post_id);
9183 break;
9184 case 'custom-field':
9185 $this->render_post_custom_field($settings, $class, $post_id);
9186 break;
9187 case 'separator':
9188 $this->render_post_element_separator($settings, $class);
9189 break;
9190 default:
9191 $this->render_post_taxonomies($settings, $class, $post_id);
9192 }
9193 }
9194
9195 public function get_elements_by_location($location, $settings, $post_id)
9196 {
9197 $locations = [];
9198
9199 // Group elements by location; also group "over" by vertical alignment
9200 foreach ($settings['grid_elements'] as $data) {
9201 $place = $data['element_location'];
9202 $alignV = $data['element_align_vr'];
9203
9204 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
9205 $alignV = 'middle';
9206 }
9207
9208 if (!isset($locations[$place])) {
9209 $locations[$place] = [];
9210 }
9211
9212 if ('over' === $place) {
9213 if (!isset($locations[$place][$alignV])) {
9214 $locations[$place][$alignV] = [];
9215 }
9216 $locations[$place][$alignV][] = $data;
9217 } else {
9218 $locations[$place][] = $data;
9219 }
9220 }
9221
9222 // Render each group of elements
9223 if (!empty($locations[$location])) {
9224 if ('over' === $location) {
9225 foreach ($locations[$location] as $align => $elements) {
9226 if ('middle' === $align) {
9227 echo '<div class="king-addons-cv-container"><div class="king-addons-cv-outer"><div class="king-addons-cv-inner">';
9228 }
9229 echo '<div class="king-addons-grid-media-hover-' . esc_attr($align) . ' elementor-clearfix">';
9230
9231 foreach ($elements as $data) {
9232 $itemClass = 'king-addons-grid-item-' . $data['element_select']
9233 . ' elementor-repeater-item-' . $data['_id']
9234 . ' king-addons-grid-item-display-' . $data['element_display']
9235 . ' king-addons-grid-item-align-' . $data['element_align_hr']
9236 . $this->get_animation_class($data, 'element');
9237 $this->get_elements($data['element_select'], $data, $itemClass, $post_id);
9238 }
9239 echo '</div>';
9240
9241 if ('middle' === $align) {
9242 echo '</div></div></div>';
9243 }
9244 }
9245 } else {
9246 echo '<div class="king-addons-grid-item-' . esc_attr($location) . '-content elementor-clearfix">';
9247 foreach ($locations[$location] as $data) {
9248 $itemClass = 'king-addons-grid-item-' . $data['element_select']
9249 . ' elementor-repeater-item-' . $data['_id']
9250 . ' king-addons-grid-item-display-' . $data['element_display']
9251 . ' king-addons-grid-item-align-' . $data['element_align_hr'];
9252 $this->get_elements($data['element_select'], $data, $itemClass, $post_id);
9253 }
9254 echo '</div>';
9255 }
9256 }
9257 }
9258
9259 public function render_grid_filters($settings)
9260 {
9261 $taxonomy = $settings['filters_select'] ?? '';
9262
9263 // Ensure we have some taxonomy selected
9264 if ('' === $taxonomy || !isset($settings['query_taxonomy_' . $taxonomy])) {
9265 return;
9266 }
9267
9268 $custom_filters = $settings['query_taxonomy_' . $taxonomy];
9269
9270 // Fall back for non-premium
9271 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
9272 $settings['filters_default_filter'] = '';
9273 $settings['filters_icon_align'] = '';
9274 $settings['filters_count'] = '';
9275 $settings['filters_pointer'] = 'none';
9276 $settings['filters_pointer_animation'] = 'none';
9277 }
9278
9279 $left_icon = ('left' === $settings['filters_icon_align'])
9280 ? '<i class="' . esc_attr($settings['filters_icon']['value']) . ' king-addons-grid-filters-icon-left"></i>' : '';
9281 $right_icon = ('right' === $settings['filters_icon_align'])
9282 ? '<i class="' . esc_attr($settings['filters_icon']['value']) . ' king-addons-grid-filters-icon-right"></i>' : '';
9283 $left_separator = ('left' === $settings['filters_separator_align'])
9284 ? '<em class="king-addons-grid-filters-sep">' . esc_html($settings['filters_separator']) . '</em>' : '';
9285 $right_separator = ('right' === $settings['filters_separator_align'])
9286 ? '<em class="king-addons-grid-filters-sep">' . esc_html($settings['filters_separator']) . '</em>' : '';
9287 $post_count = ('yes' === $settings['filters_count'])
9288 ? '<sup data-brackets="' . esc_attr($settings['filters_count_brackets']) . '"></sup>'
9289 : '';
9290
9291 $pointer_class = ' king-addons-pointer-' . $settings['filters_pointer'];
9292 $pointer_class .= ' king-addons-pointer-line-fx king-addons-pointer-fx-' . $settings['filters_pointer_animation'];
9293 $pointer_item_class = ('none' !== $settings['filters_pointer']) ? 'king-addons-pointer-item' : '';
9294
9295 echo '<ul class="king-addons-grid-filters elementor-clearfix king-addons-grid-filters-sep-' . esc_attr($settings['filters_separator_align']) . '">';
9296
9297 // "Show All" button if needed
9298 if ('yes' === $settings['filters_all'] && 'yes' !== $settings['filters_linkable']) {
9299 echo '<li class="' . esc_attr($pointer_class) . '">';
9300 echo ' <span data-filter="*" class="king-addons-grid-filters-item king-addons-active-filter ' . esc_attr($pointer_item_class) . '">';
9301 echo $left_icon . esc_html($settings['filters_all_text']) . $right_icon . $post_count;
9302 echo ' </span>' . $right_separator;
9303 echo '</li>';
9304 }
9305
9306 $q = get_queried_object();
9307 $categoryName = (is_category() && $q) ? strtolower($q->name) : 'no-category';
9308 $parent_filters = [];
9309
9310 // Dynamic
9311 if ($settings['query_selection'] === 'dynamic' && !empty($custom_filters)) {
9312 foreach ($custom_filters as $term_id) {
9313 $filter = get_term_by('id', $term_id, $taxonomy);
9314 $data_attr = ('post_tag' === $taxonomy) ? 'tag-' . $filter->slug : $taxonomy . '-' . $filter->slug;
9315 $tax_data = ('post_tag' === $taxonomy) ? 'tag' : $taxonomy;
9316 $active = (strpos($data_attr, $categoryName) !== false) ? 'king-addons-active-filter' : '';
9317
9318 if (0 === $filter->parent) {
9319 $children = get_term_children($filter->term_id, $taxonomy);
9320 $data_role = !empty($children) ? ' data-role="parent"' : '';
9321
9322 echo '<li' . $data_role . ' class="' . esc_attr($pointer_class) . '">';
9323 if ('yes' !== $settings['filters_linkable']) {
9324 echo $left_separator . '<span class="' . $pointer_item_class . '" data-ajax-filter=\'' . json_encode([$tax_data, $filter->slug]) . '\' data-filter=".' . esc_attr(urldecode($data_attr)) . '">';
9325 echo $left_icon . esc_html($filter->name) . $right_icon . $post_count . '</span>' . $right_separator;
9326 } else {
9327 echo $left_separator . '<a class="' . $active . ' ' . $pointer_item_class . '" href="' . esc_url(get_term_link($filter->term_id, $taxonomy)) . '">';
9328 echo $left_icon . esc_html($filter->name) . $right_icon . $post_count . '</a>' . $right_separator;
9329 }
9330 echo '</li>';
9331 } else {
9332 $parent_filters[] = $filter->parent;
9333 }
9334 }
9335 } else {
9336 // All terms from taxonomy
9337 $all_filters = get_terms($taxonomy);
9338 foreach ((array)$all_filters as $filter) {
9339 $data_attr = ('post_tag' === $taxonomy) ? 'tag-' . $filter->slug : $taxonomy . '-' . $filter->slug;
9340 $tax_data = ('post_tag' === $taxonomy) ? 'tag' : $taxonomy;
9341 $active = (strpos($data_attr, $categoryName) !== false) ? 'king-addons-active-filter' : '';
9342 $hidden = $this->get_hidden_filter_class($filter->slug, $settings);
9343
9344 if (0 === $filter->parent) {
9345 $children = get_term_children($filter->term_id, $taxonomy);
9346 $data_role = !empty($children) ? ' data-role="parent"' : '';
9347
9348 echo '<li' . $data_role . ' class="' . esc_attr($pointer_class . $hidden) . '">';
9349 if ('yes' !== $settings['filters_linkable']) {
9350 echo $left_separator . '<span class="' . $pointer_item_class . '" data-ajax-filter=\'' . json_encode([$tax_data, $filter->slug]) . '\' data-filter=".' . esc_attr(urldecode($data_attr)) . '">';
9351 echo $left_icon . esc_html($filter->name) . $right_icon . $post_count . '</span>' . $right_separator;
9352 } else {
9353 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)) . '">';
9354 echo $left_icon . esc_html($filter->name) . $right_icon . $post_count . '</a>' . $right_separator;
9355 }
9356 echo '</li>';
9357 } else {
9358 $parent_filters[] = $filter->parent;
9359 }
9360 }
9361 }
9362
9363 // Child terms as sub-filters if not linkable
9364 if ('yes' !== $settings['filters_linkable']) {
9365 foreach (array_unique($parent_filters) as $parent_filter) {
9366 $parent = get_term_by('id', $parent_filter, $taxonomy);
9367 $children = get_term_children($parent_filter, $taxonomy);
9368 $data_attr = ('post_tag' === $taxonomy) ? 'tag-' . $parent->slug : $taxonomy . '-' . $parent->slug;
9369 $tax_data = ('post_tag' === $taxonomy) ? 'tag' : $taxonomy;
9370
9371 echo '<ul data-parent=".' . esc_attr(urldecode($data_attr)) . '" class="king-addons-sub-filters">';
9372 echo ' <li data-role="back" class="' . esc_attr($pointer_class) . '">';
9373 echo ' <span class="king-addons-back-filter" data-ajax-filter=\'' . json_encode([$tax_data, $parent->slug]) . '\' data-filter=".' . esc_attr(urldecode($data_attr)) . '">';
9374 echo ' <i class="fas fa-long-arrow-alt-left"></i>&nbsp;&nbsp;' . esc_html__('Back', 'king-addons');
9375 echo ' </span>';
9376 echo ' </li>';
9377
9378 foreach ($children as $child) {
9379 $sub_filter = get_term_by('id', $child, $taxonomy);
9380 $child_attr = ('post_tag' === $taxonomy)
9381 ? 'tag-' . $sub_filter->slug
9382 : $taxonomy . '-' . $sub_filter->slug;
9383
9384 echo '<li data-role="sub" class="' . esc_attr($pointer_class) . '">';
9385 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)) . '">';
9386 echo $left_icon . esc_html($sub_filter->name) . $right_icon . $post_count;
9387 echo '</span>' . $right_separator;
9388 echo '</li>';
9389 }
9390 echo '</ul>';
9391 }
9392 }
9393
9394 echo '</ul>';
9395 }
9396
9397 public function get_hidden_filter_class($slug, $settings)
9398 {
9399 // Query posts & see if the category is used
9400 $posts = new WP_Query($this->get_main_query_args());
9401 $visible_slugs = [];
9402
9403 if ($posts->have_posts()) {
9404 while ($posts->have_posts()) {
9405 $posts->the_post();
9406 $cats = get_the_category();
9407 foreach ($cats as $c) {
9408 $visible_slugs[] = $c->slug;
9409 }
9410 }
9411 $visible_slugs = array_unique($visible_slugs);
9412 wp_reset_postdata();
9413 }
9414
9415 return (!in_array($slug, $visible_slugs) && 'yes' === $settings['filters_hide_empty'])
9416 ? ' king-addons-hidden-element'
9417 : '';
9418 }
9419
9420 public function render_grid_pagination($settings)
9421 {
9422 // Bail if pagination off, or only one page, or in slider mode
9423 if (
9424 'yes' !== $settings['layout_pagination'] ||
9425 1 === $this->get_max_num_pages() ||
9426 'slider' === $settings['layout_select']
9427 ) {
9428 return;
9429 }
9430
9431 global $paged;
9432 $pages = $this->get_max_num_pages();
9433
9434 $paged = get_query_var('paged') ?: (get_query_var('page') ?: 1);
9435
9436 // Ensure no premium pagination type if not premium
9437 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
9438 if ('pro-is' === $settings['pagination_type']) {
9439 $settings['pagination_type'] = 'default';
9440 }
9441 }
9442
9443 echo '<div class="king-addons-grid-pagination elementor-clearfix king-addons-grid-pagination-' . esc_attr($settings['pagination_type']) . '">';
9444
9445 // 1) Default older/newer
9446 if ('default' === $settings['pagination_type']) {
9447 if ($paged < $pages) {
9448 echo '<a href="' . esc_url(get_pagenum_link($paged + 1)) . '" class="king-addons-prev-post-link">';
9449 echo Core::getIcon($settings['pagination_on_icon'], 'left');
9450 echo esc_html($settings['pagination_older_text']);
9451 echo '</a>';
9452 } elseif ('yes' === $settings['pagination_disabled_arrows']) {
9453 echo '<span class="king-addons-prev-post-link king-addons-disabled-arrow">';
9454 echo Core::getIcon($settings['pagination_on_icon'], 'left');
9455 echo esc_html($settings['pagination_older_text']);
9456 echo '</span>';
9457 }
9458
9459 if ($paged > 1) {
9460 echo '<a href="' . esc_url(get_pagenum_link($paged - 1)) . '" class="king-addons-next-post-link">';
9461 echo esc_html($settings['pagination_newer_text']);
9462 echo Core::getIcon($settings['pagination_on_icon'], 'right');
9463 echo '</a>';
9464 } elseif ('yes' === $settings['pagination_disabled_arrows']) {
9465 echo '<span class="king-addons-next-post-link king-addons-disabled-arrow">';
9466 echo esc_html($settings['pagination_newer_text']);
9467 echo Core::getIcon($settings['pagination_on_icon'], 'right');
9468 echo '</span>';
9469 }
9470
9471 // 2) Numbered pagination
9472 } elseif ('numbered' === $settings['pagination_type']) {
9473 $range = $settings['pagination_range'];
9474 $showitems = ($range * 2) + 1;
9475
9476 if (1 !== $pages) {
9477 // Prev / First arrows if needed
9478 if ('yes' === $settings['pagination_prev_next'] || 'yes' === $settings['pagination_first_last']) {
9479 echo '<div class="king-addons-grid-pagination-left-arrows">';
9480 if ('yes' === $settings['pagination_first_last']) {
9481 if ($paged >= 2) {
9482 echo '<a href="' . esc_url(get_pagenum_link()) . '" class="king-addons-first-page">';
9483 echo Core::getIcon($settings['pagination_fl_icon'], 'left');
9484 echo '<span>' . esc_html($settings['pagination_first_text']) . '</span>';
9485 echo '</a>';
9486 } elseif ('yes' === $settings['pagination_disabled_arrows']) {
9487 echo '<span class="king-addons-first-page king-addons-disabled-arrow">';
9488 echo Core::getIcon($settings['pagination_fl_icon'], 'left');
9489 echo '<span>' . esc_html($settings['pagination_first_text']) . '</span>';
9490 echo '</span>';
9491 }
9492 }
9493 if ('yes' === $settings['pagination_prev_next']) {
9494 if ($paged > 1) {
9495 echo '<a href="' . esc_url(get_pagenum_link($paged - 1)) . '" class="king-addons-prev-page">';
9496 echo Core::getIcon($settings['pagination_pn_icon'], 'left');
9497 echo '<span>' . esc_html($settings['pagination_prev_text']) . '</span>';
9498 echo '</a>';
9499 } elseif ('yes' === $settings['pagination_disabled_arrows']) {
9500 echo '<span class="king-addons-prev-page king-addons-disabled-arrow">';
9501 echo Core::getIcon($settings['pagination_pn_icon'], 'left');
9502 echo '<span>' . esc_html($settings['pagination_prev_text']) . '</span>';
9503 echo '</span>';
9504 }
9505 }
9506 echo '</div>';
9507 }
9508
9509 // Loop through pages
9510 for ($i = 1; $i <= $pages; $i++) {
9511 if (1 !== $pages && (
9512 !($i >= $paged + $range + 1 || $i <= $paged - $range - 1) ||
9513 $pages <= $showitems
9514 )) {
9515 if ($paged === $i) {
9516 echo '<span class="king-addons-grid-current-page">' . esc_html($i) . '</span>';
9517 } else {
9518 echo '<a href="' . esc_url(get_pagenum_link($i)) . '">' . esc_html($i) . '</a>';
9519 }
9520 }
9521 }
9522
9523 // Next / Last arrows if needed
9524 if ('yes' === $settings['pagination_prev_next'] || 'yes' === $settings['pagination_first_last']) {
9525 echo '<div class="king-addons-grid-pagination-right-arrows">';
9526 if ('yes' === $settings['pagination_prev_next']) {
9527 if ($paged < $pages) {
9528 echo '<a href="' . esc_url(get_pagenum_link($paged + 1)) . '" class="king-addons-next-page">';
9529 echo '<span>' . esc_html($settings['pagination_next_text']) . '</span>';
9530 echo Core::getIcon($settings['pagination_pn_icon'], 'right');
9531 echo '</a>';
9532 } elseif ('yes' === $settings['pagination_disabled_arrows']) {
9533 echo '<span class="king-addons-next-page king-addons-disabled-arrow">';
9534 echo '<span>' . esc_html($settings['pagination_next_text']) . '</span>';
9535 echo Core::getIcon($settings['pagination_pn_icon'], 'right');
9536 echo '</span>';
9537 }
9538 }
9539 if ('yes' === $settings['pagination_first_last']) {
9540 if ($paged <= $pages - 1) {
9541 echo '<a href="' . esc_url(get_pagenum_link($pages)) . '" class="king-addons-last-page">';
9542 echo '<span>' . esc_html($settings['pagination_last_text']) . '</span>';
9543 echo Core::getIcon($settings['pagination_fl_icon'], 'right');
9544 echo '</a>';
9545 } elseif ('yes' === $settings['pagination_disabled_arrows']) {
9546 echo '<span class="king-addons-last-page king-addons-disabled-arrow">';
9547 echo '<span>' . esc_html($settings['pagination_last_text']) . '</span>';
9548 echo Core::getIcon($settings['pagination_fl_icon'], 'right');
9549 echo '</span>';
9550 }
9551 }
9552 echo '</div>';
9553 }
9554 }
9555
9556 // 3) "Load More" infinite style
9557 } else {
9558 echo '<a href="' . esc_url(get_pagenum_link($paged + 1)) . '" class="king-addons-load-more-btn" data-e-disable-page-transition>';
9559 echo esc_html($settings['pagination_load_more_text']);
9560 echo '</a>';
9561
9562 echo '<div class="king-addons-pagination-loading">';
9563 switch ($settings['pagination_animation']) {
9564 case 'loader-1':
9565 echo '<div class="king-addons-double-bounce">';
9566 echo ' <div class="king-addons-child king-addons-double-bounce1"></div>';
9567 echo ' <div class="king-addons-child king-addons-double-bounce2"></div>';
9568 echo '</div>';
9569 break;
9570 case 'loader-2':
9571 echo '<div class="king-addons-wave">';
9572 echo ' <div class="king-addons-rect king-addons-rect1"></div>';
9573 echo ' <div class="king-addons-rect king-addons-rect2"></div>';
9574 echo ' <div class="king-addons-rect king-addons-rect3"></div>';
9575 echo ' <div class="king-addons-rect king-addons-rect4"></div>';
9576 echo ' <div class="king-addons-rect king-addons-rect5"></div>';
9577 echo '</div>';
9578 break;
9579 case 'loader-3':
9580 echo '<div class="king-addons-spinner king-addons-spinner-pulse"></div>';
9581 break;
9582 case 'loader-4':
9583 echo '<div class="king-addons-chasing-dots">';
9584 echo ' <div class="king-addons-child king-addons-dot1"></div>';
9585 echo ' <div class="king-addons-child king-addons-dot2"></div>';
9586 echo '</div>';
9587 break;
9588 case 'loader-5':
9589 echo '<div class="king-addons-three-bounce">';
9590 echo ' <div class="king-addons-child king-addons-bounce1"></div>';
9591 echo ' <div class="king-addons-child king-addons-bounce2"></div>';
9592 echo ' <div class="king-addons-child king-addons-bounce3"></div>';
9593 echo '</div>';
9594 break;
9595 case 'loader-6':
9596 echo '<div class="king-addons-fading-circle">';
9597 for ($i = 1; $i <= 12; $i++) {
9598 echo '<div class="king-addons-circle king-addons-circle' . $i . '"></div>';
9599 }
9600 echo '</div>';
9601 break;
9602 default:
9603 break;
9604 }
9605 echo '</div>';
9606
9607 echo '<p class="king-addons-pagination-finish">' . esc_html($settings['pagination_finish_text']) . '</p>';
9608 }
9609
9610 echo '</div>';
9611 }
9612
9613 public function add_grid_settings($settings)
9614 {
9615 // Prevent undefined index notices for lightbox popup settings.
9616 $settings = wp_parse_args(
9617 $settings,
9618 [
9619 'lightbox_popup_autoplay' => 'true',
9620 'lightbox_popup_pause' => 5,
9621 'lightbox_popup_progressbar' => 'true',
9622 'lightbox_popup_counter' => 'true',
9623 'lightbox_popup_arrows' => 'true',
9624 'lightbox_popup_captions' => 'true',
9625 'lightbox_popup_thumbnails' => '',
9626 'lightbox_popup_thumbnails_default' => '',
9627 'lightbox_popup_sharing' => '',
9628 'lightbox_popup_zoom' => 'true',
9629 'lightbox_popup_fullscreen' => 'true',
9630 'lightbox_popup_download' => 'true',
9631 ]
9632 );
9633
9634 // If premium not available, fallback
9635 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
9636 if ('pro-ms' === $settings['layout_select']) {
9637 $settings['layout_select'] = 'fitRows';
9638 }
9639 $settings['filters_deeplinking'] = '';
9640 $settings['filters_count'] = '';
9641 $settings['filters_default_filter'] = '';
9642 if (in_array($settings['filters_animation'], ['pro-fd', 'pro-fs'])) {
9643 $settings['filters_animation'] = 'zoom';
9644 }
9645 }
9646
9647 // Only allow "stick_last_element_to_bottom" if layout_select == fitRows
9648 $stick_last_element = ('fitRows' === $settings['layout_select'])
9649 ? $settings['stick_last_element_to_bottom']
9650 : 'no';
9651
9652 // Prepare gutter sizes
9653 $gutter_hr_widescreen = $settings['layout_gutter_hr_widescreen']['size'] ?? $settings['layout_gutter_hr']['size'];
9654 $gutter_hr_desktop = $settings['layout_gutter_hr']['size'] ?? 0;
9655 $gutter_hr_laptop = $settings['layout_gutter_hr_laptop']['size'] ?? $gutter_hr_desktop;
9656 $gutter_hr_tablet_ex = $settings['layout_gutter_hr_tablet_extra']['size'] ?? $gutter_hr_laptop;
9657 $gutter_hr_tablet = $settings['layout_gutter_hr_tablet']['size'] ?? $gutter_hr_tablet_ex;
9658 $gutter_hr_mobile_ex = $settings['layout_gutter_hr_mobile_extra']['size'] ?? $gutter_hr_tablet;
9659 $gutter_hr_mobile = $settings['layout_gutter_hr_mobile']['size'] ?? $gutter_hr_mobile_ex;
9660 $gutter_vr_widescreen = $settings['layout_gutter_vr_widescreen']['size'] ?? $settings['layout_gutter_vr']['size'];
9661 $gutter_vr_desktop = $settings['layout_gutter_vr']['size'] ?? 0;
9662 $gutter_vr_laptop = $settings['layout_gutter_vr_laptop']['size'] ?? $gutter_vr_desktop;
9663 $gutter_vr_tablet_ex = $settings['layout_gutter_vr_tablet_extra']['size'] ?? $gutter_vr_laptop;
9664 $gutter_vr_tablet = $settings['layout_gutter_vr_tablet']['size'] ?? $gutter_vr_tablet_ex;
9665 $gutter_vr_mobile_ex = $settings['layout_gutter_vr_mobile_extra']['size'] ?? $gutter_vr_tablet;
9666 $gutter_vr_mobile = $settings['layout_gutter_vr_mobile']['size'] ?? $gutter_vr_mobile_ex;
9667
9668 $layout_settings = [
9669 'layout' => $settings['layout_select'],
9670 'stick_last_element_to_bottom' => $stick_last_element,
9671 'columns_desktop' => $settings['layout_columns'],
9672 'gutter_hr' => $gutter_hr_desktop,
9673 'gutter_hr_mobile' => $gutter_hr_mobile,
9674 'gutter_hr_mobile_extra' => $gutter_hr_mobile_ex,
9675 'gutter_hr_tablet' => $gutter_hr_tablet,
9676 'gutter_hr_tablet_extra' => $gutter_hr_tablet_ex,
9677 'gutter_hr_laptop' => $gutter_hr_laptop,
9678 'gutter_hr_widescreen' => $gutter_hr_widescreen,
9679 'gutter_vr' => $gutter_vr_desktop,
9680 'gutter_vr_mobile' => $gutter_vr_mobile,
9681 'gutter_vr_mobile_extra' => $gutter_vr_mobile_ex,
9682 'gutter_vr_tablet' => $gutter_vr_tablet,
9683 'gutter_vr_tablet_extra' => $gutter_vr_tablet_ex,
9684 'gutter_vr_laptop' => $gutter_vr_laptop,
9685 'gutter_vr_widescreen' => $gutter_vr_widescreen,
9686 'animation' => $settings['layout_animation'],
9687 'animation_duration' => $settings['layout_animation_duration'],
9688 'animation_delay' => $settings['layout_animation_delay'],
9689 'deeplinking' => $settings['filters_deeplinking'],
9690 'filters_linkable' => $settings['filters_linkable'],
9691 'filters_default_filter' => $settings['filters_default_filter'],
9692 'filters_count' => $settings['filters_count'],
9693 'filters_hide_empty' => $settings['filters_hide_empty'],
9694 'filters_animation' => $settings['filters_animation'],
9695 'filters_animation_duration' => $settings['filters_animation_duration'],
9696 'filters_animation_delay' => $settings['filters_animation_delay'],
9697 'pagination_type' => $settings['pagination_type'],
9698 'pagination_max_pages' => $this->get_max_num_pages(),
9699 ];
9700
9701 if ('list' === $settings['layout_select']) {
9702 $layout_settings['media_align'] = $settings['layout_list_align'];
9703 $layout_settings['media_width'] = $settings['layout_list_media_width']['size'];
9704 $layout_settings['media_distance'] = $settings['layout_list_media_distance']['size'];
9705 }
9706
9707 // Restrict pop-up if not premium
9708 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
9709 $settings['lightbox_popup_thumbnails'] = '';
9710 $settings['lightbox_popup_thumbnails_default'] = '';
9711 $settings['lightbox_popup_sharing'] = '';
9712 }
9713
9714 // Lightbox config
9715 $layout_settings['lightbox'] = [
9716 'selector' => '.king-addons-grid-image-wrap',
9717 'iframeMaxWidth' => '60%',
9718 'hash' => false,
9719 'autoplay' => $settings['lightbox_popup_autoplay'],
9720 'pause' => $settings['lightbox_popup_pause'] * 1000,
9721 'progressBar' => $settings['lightbox_popup_progressbar'],
9722 'counter' => $settings['lightbox_popup_counter'],
9723 'controls' => $settings['lightbox_popup_arrows'],
9724 'getCaptionFromTitleOrAlt' => false,
9725 'thumbnail' => $settings['lightbox_popup_thumbnails'],
9726 'showThumbByDefault' => $settings['lightbox_popup_thumbnails_default'],
9727 'share' => $settings['lightbox_popup_sharing'],
9728 'zoom' => $settings['lightbox_popup_zoom'],
9729 'fullScreen' => $settings['lightbox_popup_fullscreen'],
9730 'download' => $settings['lightbox_popup_download'],
9731 ];
9732
9733 if ('yes' === ($settings['filters_experiment'] ?? '')) {
9734 // Potentially store entire $settings if needed
9735 $layout_settings['grid_settings'] = $settings;
9736 }
9737
9738 $this->add_render_attribute('grid-settings', [
9739 'data-settings' => wp_json_encode($layout_settings),
9740 ]);
9741 }
9742
9743 public function add_slider_settings($settings)
9744 {
9745 // Prevent undefined index notices for lightbox popup settings.
9746 $settings = wp_parse_args(
9747 $settings,
9748 [
9749 'lightbox_popup_autoplay' => 'true',
9750 'lightbox_popup_pause' => 5,
9751 'lightbox_popup_progressbar' => 'true',
9752 'lightbox_popup_counter' => 'true',
9753 'lightbox_popup_arrows' => 'true',
9754 'lightbox_popup_captions' => 'true',
9755 'lightbox_popup_thumbnails' => '',
9756 'lightbox_popup_thumbnails_default' => '',
9757 'lightbox_popup_sharing' => '',
9758 'lightbox_popup_zoom' => 'true',
9759 'lightbox_popup_fullscreen' => 'true',
9760 'lightbox_popup_download' => 'true',
9761 ]
9762 );
9763
9764 $slider_is_rtl = is_rtl();
9765 $slider_dir = $slider_is_rtl ? 'rtl' : 'ltr';
9766
9767 // Fall back for non-premium
9768 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
9769 $settings['layout_slider_autoplay'] = '';
9770 $settings['layout_slider_autoplay_duration'] = 0;
9771 $settings['layout_slider_pause_on_hover'] = '';
9772 }
9773
9774 if (in_array($settings['layout_slider_amount'], ['pro-3', 'pro-4', 'pro-5', 'pro-6'])) {
9775 $settings['layout_slider_amount'] = 1; // fallback
9776 }
9777
9778 $slider_options = [
9779 'rtl' => $slider_is_rtl,
9780 'infinite' => ('yes' === $settings['layout_slider_loop']),
9781 'speed' => absint($settings['layout_slider_effect_duration'] * 1000),
9782 'arrows' => true,
9783 'dots' => true,
9784 'autoplay' => ('yes' === $settings['layout_slider_autoplay']),
9785 'autoplaySpeed' => absint($settings['layout_slider_autoplay_duration'] * 1000),
9786 'pauseOnHover' => $settings['layout_slider_pause_on_hover'],
9787 'prevArrow' => '#king-addons-grid-slider-prev-' . $this->get_id(),
9788 'nextArrow' => '#king-addons-grid-slider-next-' . $this->get_id(),
9789 'sliderSlidesToScroll' => $settings['layout_slides_to_scroll'] ? absint($settings['layout_slides_to_scroll']) : 1,
9790 ];
9791
9792 // Restrict pop-up for non-premium
9793 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
9794 $settings['lightbox_popup_thumbnails'] = '';
9795 $settings['lightbox_popup_thumbnails_default'] = '';
9796 $settings['lightbox_popup_sharing'] = '';
9797 }
9798
9799 // Lightbox config
9800 $slider_options['lightbox'] = [
9801 'selector' => 'article:not(.slick-cloned) .king-addons-grid-image-wrap',
9802 'iframeMaxWidth' => '60%',
9803 'hash' => false,
9804 'autoplay' => $settings['lightbox_popup_autoplay'],
9805 'pause' => $settings['lightbox_popup_pause'] * 1000,
9806 'progressBar' => $settings['lightbox_popup_progressbar'],
9807 'counter' => $settings['lightbox_popup_counter'],
9808 'controls' => $settings['lightbox_popup_arrows'],
9809 'getCaptionFromTitleOrAlt' => false,
9810 'thumbnail' => $settings['lightbox_popup_thumbnails'],
9811 'showThumbByDefault' => $settings['lightbox_popup_thumbnails_default'],
9812 'share' => $settings['lightbox_popup_sharing'],
9813 'zoom' => $settings['lightbox_popup_zoom'],
9814 'fullScreen' => $settings['lightbox_popup_fullscreen'],
9815 'download' => $settings['lightbox_popup_download'],
9816 ];
9817
9818 // Enable fade effect for single-slide
9819 if ($settings['layout_slider_amount'] === 1 && $settings['layout_slider_effect'] === 'fade') {
9820 $slider_options['fade'] = true;
9821 }
9822
9823 $this->add_render_attribute('slider-settings', [
9824 'dir' => esc_attr($slider_dir),
9825 'data-slick' => wp_json_encode($slider_options),
9826 ]);
9827 }
9828
9829 protected function render()
9830 {
9831 $settings = $this->get_settings();
9832 $posts = new WP_Query($this->get_main_query_args());
9833
9834 if ($posts->have_posts()) {
9835 // Render filters if not slider
9836 if ('slider' !== $settings['layout_select']) {
9837 $this->render_grid_filters($settings);
9838 $this->add_grid_settings($settings);
9839 $render_attribute = $this->get_render_attribute_string('grid-settings');
9840 } else {
9841 // If slider
9842 $this->add_slider_settings($settings);
9843 $render_attribute = $this->get_render_attribute_string('slider-settings');
9844 }
9845
9846 echo '<section class="king-addons-grid elementor-clearfix" ' . $render_attribute . '>';
9847
9848 while ($posts->have_posts()) {
9849 $posts->the_post();
9850 $post_class = implode(' ', get_post_class('king-addons-grid-item elementor-clearfix', get_the_ID()));
9851
9852 echo '<article class="' . esc_attr($post_class) . '">';
9853 // Check password
9854 $this->render_password_protected_input();
9855
9856 echo '<div class="king-addons-grid-item-inner">';
9857 // Location: ABOVE
9858 $this->get_elements_by_location('above', $settings, get_the_ID());
9859
9860 // If has featured image, render
9861 if (has_post_thumbnail() && 'yes' !== $settings['hide_post_thumbnail']) {
9862 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']) . '">';
9863 $this->render_post_thumbnail($settings);
9864
9865 echo '<div class="king-addons-grid-media-hover king-addons-animation-wrap">';
9866 $this->render_media_overlay($settings);
9867 $this->get_elements_by_location('over', $settings, get_the_ID());
9868 echo '</div>';
9869
9870 echo '</div>';
9871 }
9872
9873 // Location: BELOW
9874 $this->get_elements_by_location('below', $settings, get_the_ID());
9875 echo '</div>';
9876
9877 echo '</article>';
9878 }
9879 echo '</section>';
9880
9881 // Reset
9882 wp_reset_postdata();
9883
9884 // If slider, render nav
9885 if ('slider' === $settings['layout_select']) {
9886 echo '<div class="king-addons-grid-slider-arrow-container">';
9887 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>';
9888 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>';
9889 echo '</div>';
9890
9891 echo '<div class="king-addons-grid-slider-dots"></div>';
9892 }
9893
9894 // Render pagination if needed
9895 $this->render_grid_pagination($settings);
9896 } else {
9897 // If no posts found
9898 if ('dynamic' === $settings['query_selection']) {
9899 echo '<h2>' . esc_html($settings['query_not_found_text']) . '</h2>';
9900 }
9901 }
9902 }
9903 }