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

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

5,727 lines 206.9 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\Icons_Manager;
6 use Elementor\Widget_Base;
7 use Elementor\Controls_Manager;
8 use Elementor\Group_Control_Box_Shadow;
9 use Elementor\Group_Control_Typography;
10 use Elementor\Group_Control_Background;
11 use Elementor\Repeater;
12 use Elementor\Group_Control_Image_Size;
13 use WP_Query;
14
15 if (!defined('ABSPATH')) {
16 exit;
17 }
18
19 class Magazine_Grid extends Widget_Base
20 {
21
22
23
24 public function get_name()
25 {
26 return 'king-addons-magazine-grid';
27 }
28
29 public function get_title()
30 {
31 return esc_html__('Magazine Grid & Slider', 'king-addons');
32 }
33
34 public function get_icon()
35 {
36 return 'king-addons-icon king-addons-magazine-grid';
37 }
38
39 public function get_categories()
40 {
41 return ['king-addons'];
42 }
43
44 public function get_keywords()
45 {
46 return ['king addons', 'king', 'addons', 'kingaddons', 'king-addons', 'blog', 'grid', 'posts', 'magazine', 'masonry',
47 'magazine grid', 'magazine slider', 'isotope', 'slick', 'post tiles', 'posts tiles', 'post', 'journal', 'gr',
48 'tile', 'tiles', 'carousel', 'loop', 'filterable'];
49 }
50
51 public function get_script_depends()
52 {
53 return [
54 KING_ADDONS_ASSETS_UNIQUE_KEY . '-magazine-grid-script',
55 KING_ADDONS_ASSETS_UNIQUE_KEY . '-isotope-kng',
56 KING_ADDONS_ASSETS_UNIQUE_KEY . '-slick-slick',
57 ];
58 }
59
60 public function get_style_depends()
61 {
62 return [
63 KING_ADDONS_ASSETS_UNIQUE_KEY . '-slick-helper',
64 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-button',
65 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-general',
66 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-timing',
67 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-loading',
68 KING_ADDONS_ASSETS_UNIQUE_KEY . '-grid-grid',
69 KING_ADDONS_ASSETS_UNIQUE_KEY . '-general-general',
70 ];
71 }
72
73 public function get_custom_help_url()
74 {
75 return 'mailto:bug@kingaddons.com?subject=Bug Report - King Addons&body=Please describe the issue';
76 }
77
78 public function has_widget_inner_wrapper(): bool
79 {
80 return true;
81 }
82
83 public function add_option_query_source()
84 {
85 $post_types = [
86 'post' => esc_html__('Posts', 'king-addons'),
87 'page' => esc_html__('Pages', 'king-addons'),
88 ];
89
90 $excluded_slugs = ['product', 'e-landing-page'];
91 $can_use_premium = king_addons_freemius()->can_use_premium_code__premium_only();
92 $custom_post_types = Core::getCustomTypes('post');
93
94 foreach ($custom_post_types as $slug => $title) {
95 // Skip excluded slugs
96 if (in_array($slug, $excluded_slugs, true)) {
97 continue;
98 }
99
100 // Add either as-is or with "Pro" label
101 if ($can_use_premium) {
102 $post_types[$slug] = esc_html($title);
103 } else {
104 $post_types['pro-' . substr($slug, 0, 2)] = esc_html($title) . ' (Pro)';
105 }
106 }
107
108 // Append special "Pro" keys
109 $post_types['pro-cr'] = esc_html__('Current Query (Pro)', 'king-addons');
110 $post_types['pro-rl'] = esc_html__('Related Query (Pro)', 'king-addons');
111
112 return $post_types;
113 }
114
115 public function get_available_taxonomies()
116 {
117 $post_taxonomies = [
118 'category' => esc_html__('Categories', 'king-addons'),
119 'post_tag' => esc_html__('Tags', 'king-addons'),
120 ];
121
122 $excluded_slugs = ['product_tag', 'product_cat'];
123 $can_use_premium = king_addons_freemius()->can_use_premium_code__premium_only();
124 $custom_post_taxonomies = Core::getCustomTypes('tax');
125
126 foreach ($custom_post_taxonomies as $slug => $title) {
127 // Skip excluded slugs
128 if (in_array($slug, $excluded_slugs, true)) {
129 continue;
130 }
131
132 // Add either as-is or with "Pro" label
133 if ($can_use_premium) {
134 $post_taxonomies[$slug] = esc_html($title);
135 } else {
136 $post_taxonomies['pro-' . substr($slug, 0, 2)] = esc_html($title) . ' (Pro)';
137 }
138 }
139
140 return $post_taxonomies;
141 }
142
143
144 public function add_control_open_links_in_new_tab()
145 {
146 $this->add_control(
147 'open_links_in_new_tab',
148 [
149 'label' => sprintf(__('Open Links in New Tab %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
150 'type' => Controls_Manager::SWITCHER,
151 'classes' => 'king-addons-pro-control no-distance'
152 ]
153 );
154 }
155
156 public function add_control_query_randomize()
157 {
158 $this->add_control(
159 'query_randomize',
160 [
161 'label' => sprintf(__('Randomize Query %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
162 'type' => Controls_Manager::SWITCHER,
163 'classes' => 'king-addons-pro-control no-distance'
164 ]
165 );
166 }
167
168 public function add_control_order_posts()
169 {
170 $this->add_control(
171 'order_posts',
172 [
173 'label' => esc_html__('Order By', 'king-addons'),
174 'type' => Controls_Manager::SELECT,
175 'default' => 'date',
176 'label_block' => false,
177 'options' => [
178 'date' => esc_html__('Date', 'king-addons'),
179 'pro-tl' => esc_html__('Title (Pro)', 'king-addons'),
180 'pro-mf' => esc_html__('Last Modified (Pro)', 'king-addons'),
181 'pro-d' => esc_html__('Post ID', 'king-addons'),
182 'pro-ar' => esc_html__('Post Author', 'king-addons'),
183 'pro-cc' => esc_html__('Comment Count', 'king-addons')
184 ],
185 'condition' => [
186 'query_randomize!' => 'rand',
187 ]
188 ]
189 );
190 }
191
192 public function add_control_force_responsive_one_column()
193 {
194 $this->add_control(
195 'force_responsive_one_column',
196 [
197 'label' => sprintf(__('Force Responsive One Column %s', 'king-addons'), '<i class="eicon-pro-icon"></i>'),
198 'type' => Controls_Manager::SWITCHER,
199 'classes' => 'king-addons-pro-control'
200 ]
201 );
202 }
203
204 public function add_option_element_select()
205 {
206 return [
207 'title' => esc_html__('Title', 'king-addons'),
208 'content' => esc_html__('Content', 'king-addons'),
209 'excerpt' => esc_html__('Excerpt', 'king-addons'),
210 'date' => esc_html__('Date', 'king-addons'),
211 'time' => esc_html__('Time', 'king-addons'),
212 'author' => esc_html__('Author', 'king-addons'),
213 'comments' => esc_html__('Comments', 'king-addons'),
214 'read-more' => esc_html__('Read More', 'king-addons'),
215 'separator' => esc_html__('Separator', 'king-addons'),
216 'pro-lk' => esc_html__('Likes (Pro)', 'king-addons'),
217 'pro-shr' => esc_html__('Sharing (Pro)', 'king-addons'),
218 'pro-cf' => esc_html__('Custom Field (Pro)', 'king-addons'),
219 ];
220 }
221
222 public function add_repeater_args_element_like_icon()
223 {
224 return [
225 'type' => Controls_Manager::HIDDEN,
226 'default' => ''
227 ];
228 }
229
230 public function add_repeater_args_element_like_text()
231 {
232 return [
233 'type' => Controls_Manager::HIDDEN,
234 'default' => ''
235 ];
236 }
237
238 public function add_repeater_args_element_like_show_count()
239 {
240 return [
241 'type' => Controls_Manager::HIDDEN,
242 'default' => ''
243 ];
244 }
245
246 public function add_repeater_args_element_sharing_icon_1()
247 {
248 return [
249 'type' => Controls_Manager::HIDDEN,
250 'default' => ''
251 ];
252 }
253
254 public function add_repeater_args_element_sharing_icon_2()
255 {
256 return [
257 'type' => Controls_Manager::HIDDEN,
258 'default' => ''
259 ];
260 }
261
262 public function add_repeater_args_element_sharing_icon_3()
263 {
264 return [
265 'type' => Controls_Manager::HIDDEN,
266 'default' => ''
267 ];
268 }
269
270 public function add_repeater_args_element_sharing_icon_4()
271 {
272 return [
273 'type' => Controls_Manager::HIDDEN,
274 'default' => ''
275 ];
276 }
277
278 public function add_repeater_args_element_sharing_icon_5()
279 {
280 return [
281 'type' => Controls_Manager::HIDDEN,
282 'default' => ''
283 ];
284 }
285
286 public function add_repeater_args_element_sharing_icon_6()
287 {
288 return [
289 'type' => Controls_Manager::HIDDEN,
290 'default' => ''
291 ];
292 }
293
294 public function add_repeater_args_element_sharing_trigger()
295 {
296 return [
297 'type' => Controls_Manager::HIDDEN,
298 'default' => ''
299 ];
300 }
301
302 public function add_repeater_args_element_sharing_trigger_icon()
303 {
304 return [
305 'type' => Controls_Manager::HIDDEN,
306 'default' => ''
307 ];
308 }
309
310 public function add_repeater_args_element_sharing_trigger_action()
311 {
312 return [
313 'type' => Controls_Manager::HIDDEN,
314 'default' => ''
315 ];
316 }
317
318 public function add_repeater_args_element_sharing_trigger_direction()
319 {
320 return [
321 'type' => Controls_Manager::HIDDEN,
322 'default' => ''
323 ];
324 }
325
326 public function add_repeater_args_element_sharing_tooltip()
327 {
328 return [
329 'type' => Controls_Manager::HIDDEN,
330 'default' => ''
331 ];
332 }
333
334 public function add_repeater_args_element_custom_field()
335 {
336 return [
337 'type' => Controls_Manager::HIDDEN,
338 'default' => ''
339 ];
340 }
341
342 public function add_repeater_args_element_custom_field_btn_link()
343 {
344 return [
345 'type' => Controls_Manager::HIDDEN,
346 'default' => ''
347 ];
348 }
349
350 public function add_repeater_args_element_custom_field_new_tab()
351 {
352 return [
353 'type' => Controls_Manager::HIDDEN,
354 'default' => ''
355 ];
356 }
357
358 public function add_repeater_args_custom_field_wrapper_html_divider1()
359 {
360 return [
361 'type' => Controls_Manager::HIDDEN,
362 'default' => ''
363 ];
364 }
365
366 public function add_repeater_args_element_custom_field_wrapper()
367 {
368 return [
369 'type' => Controls_Manager::HIDDEN,
370 'default' => ''
371 ];
372 }
373
374 public function add_repeater_args_element_custom_field_wrapper_html()
375 {
376 return [
377 'type' => Controls_Manager::HIDDEN,
378 'default' => ''
379 ];
380 }
381
382 public function add_repeater_args_custom_field_wrapper_html_divider2()
383 {
384 return [
385 'type' => Controls_Manager::HIDDEN,
386 'default' => ''
387 ];
388 }
389
390 public function add_repeater_args_element_custom_field_style()
391 {
392 return [
393 'type' => Controls_Manager::HIDDEN,
394 'default' => ''
395 ];
396 }
397
398 public function add_repeater_args_element_trim_text_by()
399 {
400 return [
401 'word_count' => esc_html__('Word Count', 'king-addons'),
402 'pro-lc' => esc_html__('Letter Count (Pro)', 'king-addons')
403 ];
404 }
405
406 public function add_control_overlay_animation_divider()
407 {
408 }
409
410 public function add_control_overlay_image()
411 {
412 }
413
414 public function add_control_overlay_image_width()
415 {
416 }
417
418 public function add_section_slider()
419 {
420 $this->start_controls_section(
421 'section_slider',
422 [
423 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Posts Slider', 'king-addons'),
424 'tab' => Controls_Manager::TAB_CONTENT,
425 ]
426 );
427
428 $this->add_control(
429 'slider_section_pro_notice',
430 [
431 'raw' => 'Tiled Post Slider is available<br> in the <strong><a href="https://kingaddons.com/pricing/?utm_source=kng-module-magazine-grid-settings-upgrade-pro&utm_medium=plugin&utm_campaign=kng" target="_blank">Pro version</a></strong>',
432
433 'type' => Controls_Manager::RAW_HTML,
434 'content_classes' => 'king-addons-pro-notice',
435 ]
436 );
437
438
439
440
441 $this->end_controls_section();
442
443
444 }
445
446 public function add_control_title_pointer_color_hr()
447 {
448 }
449
450 public function add_control_title_pointer()
451 {
452 }
453
454 public function add_control_title_pointer_height()
455 {
456 }
457
458 public function add_control_title_pointer_animation()
459 {
460 }
461
462 public function add_control_tax1_custom_colors($meta)
463 {
464 }
465
466 public function add_control_tax1_pointer_color_hr()
467 {
468 }
469
470 public function add_control_tax1_pointer()
471 {
472 }
473
474 public function add_control_tax1_pointer_height()
475 {
476 }
477
478 public function add_control_tax1_pointer_animation()
479 {
480 }
481
482 public function add_control_tax2_pointer_color_hr()
483 {
484 }
485
486 public function add_control_tax2_pointer()
487 {
488 }
489
490 public function add_control_tax2_pointer_height()
491 {
492 }
493
494 public function add_control_tax2_pointer_animation()
495 {
496 }
497
498 public function add_control_read_more_animation()
499 {
500 }
501
502 public function add_control_read_more_animation_height()
503 {
504 }
505
506 public function add_section_style_custom_field1()
507 {
508 }
509
510 public function add_section_style_custom_field2()
511 {
512 }
513
514 public function add_section_style_grid_slider_nav()
515 {
516 }
517
518 public function add_section_style_likes()
519 {
520 }
521
522 public function add_section_style_sharing()
523 {
524 }
525
526 protected function register_controls()
527 {
528
529 $this->start_controls_section(
530 'section_grid_query',
531 [
532 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Query', 'king-addons'),
533 'tab' => Controls_Manager::TAB_CONTENT,
534 ]
535 );
536
537 $post_types = $this->add_option_query_source();
538
539 unset($post_types['product']);
540 unset($post_types['e-landing-page']);
541
542 $post_taxonomies = $this->get_available_taxonomies();
543
544 $tax_meta_keys = Core::getCustomMetaKeysTaxonomies();
545
546 $this->add_control(
547 'query_source',
548 [
549 'label' => esc_html__('Source', 'king-addons'),
550 'type' => Controls_Manager::SELECT,
551 'default' => 'post',
552 'options' => $post_types,
553 ]
554 );
555
556 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'magazine-grid', 'query_source', ['pro-rl', 'pro-cr']);
557
558 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
559 $this->add_control(
560 'query_source_cpt_pro_notice',
561 [
562 '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>',
563 'type' => Controls_Manager::RAW_HTML,
564 'content_classes' => 'king-addons-pro-notice',
565 'condition' => [
566 'query_source!' => ['post', 'page', 'related', 'current', 'pro-rl', 'pro-cr'],
567 ]
568 ]
569 );
570 }
571
572 $this->add_control(
573 'query_selection',
574 [
575 'label' => esc_html__('Selection', 'king-addons'),
576 'type' => Controls_Manager::SELECT,
577 'default' => 'dynamic',
578 'options' => [
579 'dynamic' => esc_html__('Dynamic', 'king-addons'),
580 'manual' => esc_html__('Manual', 'king-addons'),
581 ],
582 'condition' => [
583 'query_source!' => ['current', 'related'],
584 ],
585 ]
586 );
587
588 $this->add_control_order_posts();
589
590 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'grid', 'order_posts', ['pro-tl', 'pro-mf', 'pro-d', 'pro-ar', 'pro-cc']);
591
592 $this->add_control(
593 'order_direction',
594 [
595 'label' => esc_html__('Order', 'king-addons'),
596 'type' => Controls_Manager::SELECT,
597 'default' => 'DESC',
598 'label_block' => false,
599 'options' => [
600 'ASC' => esc_html__('Ascending', 'king-addons'),
601 'DESC' => esc_html__('Descending', 'king-addons'),
602 ],
603 'condition' => [
604 'query_randomize!' => 'rand',
605 ]
606 ]
607 );
608
609 $this->add_control(
610 'query_tax_selection',
611 [
612 'label' => esc_html__('Select Taxonomy', 'king-addons'),
613 'type' => Controls_Manager::SELECT,
614 'default' => 'category',
615 'options' => $post_taxonomies,
616 'condition' => [
617 'query_source' => 'related',
618 ],
619 ]
620 );
621
622 $this->add_control(
623 'query_author',
624 [
625 'label' => esc_html__('Authors', 'king-addons'),
626 'type' => 'king-addons-ajax-select2',
627 'options' => 'ajaxselect2/getUsers',
628 'multiple' => true,
629 'label_block' => true,
630 'separator' => 'before',
631 'condition' => [
632 'query_source!' => ['current', 'related'],
633 'query_selection' => 'dynamic',
634 ],
635 ]
636 );
637
638
639 foreach ($post_taxonomies as $slug => $title) {
640 global $wp_taxonomies;
641 $post_type = '';
642
643 if (isset($wp_taxonomies[$slug]->object_type[0])) {
644 $post_type = $wp_taxonomies[$slug]->object_type[0];
645 }
646
647 $this->add_control(
648 'query_taxonomy_' . $slug,
649 [
650 'label' => $title,
651 'type' => 'king-addons-ajax-select2',
652 'options' => 'ajaxselect2/getTaxonomies',
653 'query_slug' => $slug,
654 'multiple' => true,
655 'label_block' => true,
656 'condition' => [
657 'query_source' => $post_type,
658 'query_selection' => 'dynamic',
659 ],
660 ]
661 );
662 }
663
664 foreach ($post_types as $slug => $title) {
665 $this->add_control(
666 'query_exclude_' . $slug,
667 [
668 'label' => esc_html__('Exclude ', 'king-addons') . $title,
669 'type' => 'king-addons-ajax-select2',
670 'options' => 'ajaxselect2/getPostsByPostType',
671 'query_slug' => $slug,
672 'multiple' => true,
673 'label_block' => true,
674 'condition' => [
675 'query_source' => $slug,
676 'query_source!' => ['current', 'related'],
677 'query_selection' => 'dynamic',
678 ],
679 ]
680 );
681 }
682
683 foreach ($post_types as $slug => $title) {
684 $this->add_control(
685 'query_manual_' . $slug,
686 [
687 'label' => esc_html__('Select ', 'king-addons') . $title,
688 'type' => 'king-addons-ajax-select2',
689 'options' => 'ajaxselect2/getPostsByPostType',
690 'query_slug' => $slug,
691 'multiple' => true,
692 'label_block' => true,
693 'condition' => [
694 'query_source' => $slug,
695 'query_selection' => 'manual',
696 ],
697 'separator' => 'before',
698 ]
699 );
700 }
701
702 $this->add_control(
703 'query_offset',
704 [
705 'label' => esc_html__('Offset', 'king-addons'),
706 'type' => Controls_Manager::NUMBER,
707 'default' => 0,
708 'min' => 0,
709 'condition' => [
710 'query_selection' => 'dynamic',
711 ]
712 ]
713 );
714
715 $this->add_control(
716 'query_not_found_text',
717 [
718 'label' => esc_html__('Not Found Text', 'king-addons'),
719 'type' => Controls_Manager::TEXT,
720 'dynamic' => [
721 'active' => true,
722 ],
723 'default' => 'No Posts Found!',
724 'condition' => [
725 'query_selection' => 'dynamic',
726 'query_source!' => 'related',
727 ]
728 ]
729 );
730
731 $this->add_control_query_randomize();
732
733 $this->add_control(
734 'query_exclude_no_images',
735 [
736 'label' => esc_html__('Exclude Items without Thumbnail', 'king-addons'),
737 'type' => Controls_Manager::SWITCHER,
738 'return_value' => 'yes',
739 'label_block' => false
740 ]
741 );
742
743 $this->add_control(
744 'element_select_filter',
745 [
746 'type' => Controls_Manager::HIDDEN,
747 'default' => $this->get_related_taxonomies(),
748 ]
749 );
750
751 $this->end_controls_section();
752
753 $this->start_controls_section(
754 'section_grid_layout',
755 [
756 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Layout', 'king-addons'),
757 'tab' => Controls_Manager::TAB_CONTENT,
758 ]
759 );
760
761 $this->add_control(
762 'king_addons_grid_layout_select',
763 [
764 'label' => esc_html__('Select Layout', 'king-addons'),
765 'type' => Controls_Manager::CHOOSE,
766 'default' => '1-1-3',
767 'options' => [
768 '1-2' => [
769 'title' => esc_html__('Layout 1 (3 posts) (Pro)', 'king-addons'),
770 ],
771 '1-3' => [
772 'title' => esc_html__('Layout 2 (4 posts) (Pro)', 'king-addons'),
773 ],
774 '1-4' => [
775 'title' => esc_html__('Layout 3 (5 posts) (Pro)', 'king-addons'),
776 ],
777 '1-1-2' => [
778 'title' => esc_html__('Layout 4 (4 posts) (Pro)', 'king-addons'),
779 ],
780 '2-1-2' => [
781 'title' => esc_html__('Layout 5 (5 posts) (Pro)', 'king-addons'),
782 ],
783 '1vh-3h' => [
784 'title' => esc_html__('Layout 5.0 (4 posts) (Pro)', 'king-addons'),
785 ],
786 '1-1-1' => [
787 'title' => esc_html__('Layout 5.1 (3 posts)', 'king-addons'),
788 ],
789 '1-1-3' => [
790 'title' => esc_html__('Layout 5.2 (5 posts)', 'king-addons'),
791 ],
792 '2-3' => [
793 'title' => esc_html__('Layout 6 (5 posts)', 'king-addons'),
794 ],
795 '2-h' => [
796 'title' => esc_html__('Layout 7 (2, 4, 6 posts)', 'king-addons'),
797 ],
798 '3-h' => [
799 'title' => esc_html__('Layout 8 (3, 6, 9 posts)', 'king-addons'),
800 ],
801 '4-h' => [
802 'title' => esc_html__('Layout 8 (4, 8, 12 posts)', 'king-addons'),
803 ]
804 ],
805 ]
806 );
807
808 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
809 $this->add_control(
810 'layout_select_pro_notice',
811 [
812 'raw' => 'These Layout options are available<br> in the <strong><a href="https://kingaddons.com/pricing/?utm_source=kng-module-magazine-grid-settings-upgrade-pro&utm_medium=plugin&utm_campaign=kng" target="_blank">Pro version</a></strong>',
813
814 'type' => Controls_Manager::RAW_HTML,
815 'content_classes' => 'king-addons-pro-notice',
816 'condition' => [
817 'king_addons_grid_layout_select' => ['1-2', '1-3', '1-4', '1-1-2', '2-1-2', '1vh-3h']
818 ]
819 ]
820 );
821 }
822
823 $this->add_control_force_responsive_one_column();
824
825 $this->add_control_open_links_in_new_tab();
826
827 $this->add_group_control(
828 Group_Control_Image_Size::get_type(),
829 [
830 'name' => 'layout_image_crop',
831 'default' => 'full',
832 ]
833 );
834
835 $this->add_control(
836 'layout_rows_number',
837 [
838 'label' => esc_html__('Rows Number', 'king-addons'),
839 'type' => Controls_Manager::SELECT,
840 'render_type' => 'template',
841 'default' => '1',
842 'options' => [
843 '1' => esc_html__('1 Row', 'king-addons'),
844 '2' => esc_html__('2 Rows', 'king-addons'),
845 '3' => esc_html__('3 Rows', 'king-addons'),
846 ],
847 'selectors' => [
848 '{{WRAPPER}} .king-addons-magazine-grid-add-2-h' => 'grid-template-rows: repeat({{VALUE}}, 1fr);',
849 '{{WRAPPER}} .king-addons-magazine-grid-add-3-h' => 'grid-template-rows: repeat({{VALUE}}, 1fr);',
850 '{{WRAPPER}} .king-addons-magazine-grid-add-4-h' => 'grid-template-rows: repeat({{VALUE}}, 1fr);',
851 ],
852 'condition' => [
853 'king_addons_grid_layout_select' => ['2-h', '3-h', '4-h']
854 ],
855 ]
856 );
857
858 $this->add_responsive_control(
859 'layout_container_height',
860 [
861 'type' => Controls_Manager::SLIDER,
862 'label' => esc_html__('Container Height', 'king-addons'),
863 'range' => [
864 'px' => [
865 'min' => 100,
866 'max' => 1500,
867 ],
868 ],
869 'default' => [
870 'unit' => 'px',
871 'size' => 520,
872 ],
873 'selectors' => [
874 '{{WRAPPER}} .king-addons-magazine-grid' => 'min-height: {{SIZE}}px;',
875 ],
876 'separator' => 'before'
877 ]
878 );
879
880 $this->add_control(
881 'layout_big_post_width',
882 [
883 'type' => Controls_Manager::SLIDER,
884 'label' => esc_html__('Featured Box Width', 'king-addons'),
885 'range' => [
886 '%' => [
887 'min' => 10,
888 'max' => 100,
889 ],
890 ],
891 'default' => [
892 'unit' => '%',
893 'size' => 50,
894 ],
895 'selectors' => [
896 '{{WRAPPER}} .king-addons-magazine-grid-add-1-2' => 'grid-template-columns: {{SIZE}}% 1fr; -ms-grid-columns: {{SIZE}}% 1fr;',
897 '{{WRAPPER}} .king-addons-magazine-grid-add-1-3' => 'grid-template-columns: {{SIZE}}% 1fr 1fr; -ms-grid-columns: {{SIZE}}% 1fr 1fr;',
898 '{{WRAPPER}} .king-addons-magazine-grid-add-1-4' => 'grid-template-columns: {{SIZE}}% 1fr 1fr; -ms-grid-columns: {{SIZE}}% 1fr 1fr;',
899 '{{WRAPPER}} .king-addons-magazine-grid-add-1-1-2' => 'grid-template-columns: {{SIZE}}% 1fr 1fr; -ms-grid-columns: {{SIZE}}% 1fr 1fr;',
900 '{{WRAPPER}} .king-addons-magazine-grid-add-1vh-3h' => 'grid-template-columns: {{SIZE}}% 1fr; -ms-grid-columns: {{SIZE}}% 1fr;',
901 '{{WRAPPER}} .king-addons-magazine-grid-add-2-1-2' => 'grid-template-columns: 1fr {{SIZE}}% 1fr; -ms-grid-columns: 1fr {{SIZE}}% 1fr;',
902 '{{WRAPPER}} .king-addons-magazine-grid-add-1-1-1' => 'grid-template-columns: 1fr {{SIZE}}% 1fr; -ms-grid-columns: 1fr {{SIZE}}% 1fr;',
903 ],
904 'condition' => [
905 'king_addons_grid_layout_select' => ['1-2', '1-3', '1-4', '1-1-2', '1vh-3h', '2-1-2', '1-1-1']
906 ]
907 ]
908 );
909
910 $this->add_responsive_control(
911 'layout_gutter_hr',
912 [
913 'label' => esc_html__('Horizontal Gutter', 'king-addons'),
914 'type' => Controls_Manager::SLIDER,
915 'default' => [
916 'size' => 4,
917 ],
918 'widescreen_default' => [
919 'size' => 4,
920 ],
921 'laptop_default' => [
922 'size' => 4,
923 ],
924 'tablet_extra_default' => [
925 'size' => 4,
926 ],
927 'tablet_default' => [
928 'size' => 4,
929 ],
930 'mobile_extra_default' => [
931 'size' => 4,
932 ],
933 'mobile_default' => [
934 'size' => 4,
935 ],
936 'range' => [
937 'px' => [
938 'min' => 0,
939 'max' => 50,
940 ],
941 ],
942 'selectors' => [
943 '{{WRAPPER}} .king-addons-magazine-grid' => 'grid-column-gap: {{SIZE}}px;',
944 ],
945 'separator' => 'before'
946 ]
947 );
948
949 $this->add_responsive_control(
950 'layout_gutter_vr',
951 [
952 'label' => esc_html__('Vertical Gutter', 'king-addons'),
953 'type' => Controls_Manager::SLIDER,
954 'default' => [
955 'size' => 4,
956 ],
957 'widescreen_default' => [
958 'size' => 4,
959 ],
960 'laptop_default' => [
961 'size' => 4,
962 ],
963 'tablet_extra_default' => [
964 'size' => 4,
965 ],
966 'tablet_default' => [
967 'size' => 4,
968 ],
969 'mobile_extra_default' => [
970 'size' => 4,
971 ],
972 'mobile_default' => [
973 'size' => 4,
974 ],
975 'range' => [
976 'px' => [
977 'min' => 0,
978 'max' => 50,
979 ],
980 ],
981 'selectors' => [
982 '{{WRAPPER}} .king-addons-magazine-grid' => 'grid-row-gap: {{SIZE}}px;',
983 ],
984 'separator' => 'after'
985 ]
986 );
987
988 $this->end_controls_section();
989
990
991 $this->start_controls_section(
992 'section_grid_elements',
993 [
994 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Elements', 'king-addons'),
995 'tab' => Controls_Manager::TAB_CONTENT,
996 ]
997 );
998
999 $repeater = new Repeater();
1000
1001 $element_select = $this->add_option_element_select();
1002
1003 $repeater->add_control(
1004 'element_select',
1005 [
1006 'label' => esc_html__('Select Element', 'king-addons'),
1007 'type' => Controls_Manager::SELECT,
1008 'default' => 'title',
1009 'options' => array_merge($element_select, $post_taxonomies),
1010 'separator' => 'after'
1011 ]
1012 );
1013
1014 $repeater->add_control(
1015 'show_last_update_date',
1016 [
1017 'label' => esc_html__('Show Last Update Date', 'king-addons'),
1018 'type' => Controls_Manager::SWITCHER,
1019 'return_value' => 'yes',
1020 'separator' => 'after',
1021 'condition' => [
1022 'element_select' => 'date',
1023 ]
1024 ]
1025 );
1026
1027 Core::renderUpgradeProNotice($repeater, Controls_Manager::RAW_HTML, 'magazine-grid', 'element_select', ['pro-lk', 'pro-shr', 'pro-cf']);
1028
1029 $repeater->add_control(
1030 'element_display',
1031 [
1032 'label' => esc_html__('Display', 'king-addons'),
1033 'type' => Controls_Manager::SELECT,
1034 'default' => 'block',
1035 'options' => [
1036 'inline' => esc_html__('Inline', 'king-addons'),
1037 'block' => esc_html__('Separate Line', 'king-addons'),
1038 'custom' => esc_html__('Custom Width', 'king-addons'),
1039 ],
1040 ]
1041 );
1042
1043 $repeater->add_control(
1044 'element_custom_width',
1045 [
1046 'label' => esc_html__('Element Width', 'king-addons'),
1047 'type' => Controls_Manager::SLIDER,
1048 'size_units' => ['%'],
1049 'range' => [
1050 '%' => [
1051 'min' => 0,
1052 'max' => 100,
1053 ],
1054 ],
1055 'default' => [
1056 'unit' => '%',
1057 'size' => 100,
1058 ],
1059 'selectors' => [
1060 '{{WRAPPER}} {{CURRENT_ITEM}}' => 'width: {{SIZE}}%;',
1061 ],
1062 'condition' => [
1063 'element_display' => 'custom',
1064 ],
1065 ]
1066 );
1067
1068 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
1069 $repeater->add_control(
1070 'element_align_pro_notice',
1071 [
1072 'raw' => 'Vertical Align option is available<br> in the <strong><a href="https://kingaddons.com/pricing/?utm_source=kng-module-magazine-grid-settings-upgrade-pro&utm_medium=plugin&utm_campaign=kng" target="_blank">Pro version</a></strong>',
1073
1074 'type' => Controls_Manager::RAW_HTML,
1075 'content_classes' => 'king-addons-pro-notice',
1076 ]
1077 );
1078 }
1079
1080 $repeater->add_control(
1081 'element_align_vr',
1082 [
1083 'label' => esc_html__('Vertical Align', 'king-addons'),
1084 'type' => Controls_Manager::CHOOSE,
1085 'label_block' => false,
1086 'default' => 'middle',
1087 'options' => [
1088 'top' => [
1089 'title' => esc_html__('Top', 'king-addons'),
1090 'icon' => 'eicon-v-align-top',
1091 ],
1092 'middle' => [
1093 'title' => esc_html__('Middle', 'king-addons'),
1094 'icon' => 'eicon-v-align-middle',
1095 ],
1096 'bottom' => [
1097 'title' => esc_html__('Bottom', 'king-addons'),
1098 'icon' => 'eicon-v-align-bottom',
1099 ],
1100 ],
1101 ]
1102 );
1103
1104 $repeater->add_control(
1105 'element_align_hr',
1106 [
1107 'label' => esc_html__('Horizontal Align', 'king-addons'),
1108 'type' => Controls_Manager::CHOOSE,
1109 'label_block' => false,
1110 'default' => 'center',
1111 'options' => [
1112 'left' => [
1113 'title' => esc_html__('Left', 'king-addons'),
1114 'icon' => 'eicon-h-align-left',
1115 ],
1116 'center' => [
1117 'title' => esc_html__('Center', 'king-addons'),
1118 'icon' => 'eicon-h-align-center',
1119 ],
1120 'right' => [
1121 'title' => esc_html__('Right', 'king-addons'),
1122 'icon' => 'eicon-h-align-right',
1123 ]
1124 ],
1125 'selectors' => [
1126 '{{WRAPPER}} {{CURRENT_ITEM}}' => 'text-align: {{VALUE}}',
1127 ],
1128 'render_type' => 'template',
1129 'separator' => 'after'
1130 ]
1131 );
1132
1133 $repeater->add_control(
1134 'element_title_tag',
1135 [
1136 'label' => esc_html__('Title HTML Tag', 'king-addons'),
1137 'type' => Controls_Manager::SELECT,
1138 'options' => [
1139 'h1' => 'H1',
1140 'h2' => 'H2',
1141 'h3' => 'H3',
1142 'h4' => 'H4',
1143 'h5' => 'H5',
1144 'h6' => 'H6',
1145 'div' => 'div',
1146 'span' => 'span',
1147 'P' => 'p'
1148 ],
1149 'default' => 'h2',
1150 'condition' => [
1151 'element_select' => 'title',
1152 ]
1153 ]
1154 );
1155
1156 $repeater->add_control(
1157 'element_dropcap',
1158 [
1159 'label' => esc_html__('Enable Drop Cap', 'king-addons'),
1160 'type' => Controls_Manager::SWITCHER,
1161 'return_value' => 'yes',
1162 'condition' => [
1163 'element_select' => ['content', 'excerpt'],
1164 ]
1165 ]
1166 );
1167
1168 $repeater->add_control(
1169 'element_trim_text_by',
1170 [
1171 'label' => esc_html__('Trim Text By', 'king-addons'),
1172 'type' => Controls_Manager::SELECT,
1173 'default' => 'word_count',
1174 'options' => $this->add_repeater_args_element_trim_text_by(),
1175 'separator' => 'after',
1176 'condition' => [
1177 'element_select' => ['title', 'excerpt'],
1178 ]
1179 ]
1180 );
1181
1182 $repeater->add_control(
1183 'element_word_count',
1184 [
1185 'label' => esc_html__('Word Count', 'king-addons'),
1186 'type' => Controls_Manager::NUMBER,
1187 'default' => 20,
1188 'min' => 1,
1189 'condition' => [
1190 'element_select' => ['title', 'excerpt'],
1191 'element_trim_text_by' => 'word_count'
1192 ]
1193 ]
1194 );
1195
1196 $repeater->add_control(
1197 'element_letter_count',
1198 [
1199 'label' => esc_html__('Letter Count', 'king-addons'),
1200 'type' => Controls_Manager::NUMBER,
1201 'default' => 40,
1202 'min' => 1,
1203 'condition' => [
1204 'element_select' => ['title', 'excerpt'],
1205 'element_trim_text_by' => 'letter_count'
1206 ]
1207 ]
1208 );
1209
1210 $repeater->add_control(
1211 'element_show_avatar',
1212 [
1213 'label' => esc_html__('Show Avatar', 'king-addons'),
1214 'type' => Controls_Manager::SWITCHER,
1215 'return_value' => 'yes',
1216 'condition' => [
1217 'element_select' => ['author']
1218 ]
1219 ]
1220 );
1221
1222 $repeater->add_control(
1223 'element_avatar_size',
1224 [
1225 'label' => esc_html__('Avatar Size', 'king-addons'),
1226 'type' => Controls_Manager::NUMBER,
1227 'default' => 32,
1228 'min' => 8,
1229 'condition' => [
1230 'element_select' => ['author'],
1231 'element_show_avatar' => 'yes'
1232 ],
1233 'separator' => 'after'
1234 ]
1235 );
1236
1237 $repeater->add_control(
1238 'element_read_more_text',
1239 [
1240 'label' => esc_html__('Read More Text', 'king-addons'),
1241 'type' => Controls_Manager::TEXT,
1242 'dynamic' => [
1243 'active' => true,
1244 ],
1245 'default' => 'Read More',
1246 'condition' => [
1247 'element_select' => ['read-more'],
1248 ],
1249 'separator' => 'after'
1250 ]
1251 );
1252
1253 $repeater->add_control(
1254 'element_tax_sep',
1255 [
1256 'label' => esc_html__('Separator', 'king-addons'),
1257 'type' => Controls_Manager::TEXT,
1258 'dynamic' => [
1259 'active' => true,
1260 ],
1261 'default' => ', ',
1262 'condition' => [
1263 'element_select!' => [
1264 'title',
1265 'content',
1266 'excerpt',
1267 'date',
1268 'time',
1269 'author',
1270 'comments',
1271 'read-more',
1272 'likes',
1273 'sharing',
1274 'custom-field',
1275 'separator',
1276 'post_format',
1277 ],
1278 ],
1279 'separator' => 'after'
1280 ]
1281 );
1282
1283 $repeater->add_control(
1284 'element_tax_style',
1285 [
1286 'label' => esc_html__('Select Styling', 'king-addons'),
1287 'type' => Controls_Manager::SELECT,
1288 'default' => 'king-addons-grid-tax-style-1',
1289 'options' => [
1290 'king-addons-grid-tax-style-1' => esc_html__('Taxonomy Style 1', 'king-addons'),
1291 'king-addons-grid-tax-style-2' => esc_html__('Taxonomy Style 2', 'king-addons'),
1292 ],
1293 'condition' => [
1294 'element_select!' => [
1295 'title',
1296 'content',
1297 'excerpt',
1298 'date',
1299 'time',
1300 'author',
1301 'comments',
1302 'read-more',
1303 'likes',
1304 'sharing',
1305 'custom-field',
1306 'separator',
1307 ],
1308 ],
1309 'separator' => 'after'
1310 ]
1311 );
1312
1313 $repeater->add_control(
1314 'element_comments_text_1',
1315 [
1316 'label' => esc_html__('No Comments', 'king-addons'),
1317 'type' => Controls_Manager::TEXT,
1318 'dynamic' => [
1319 'active' => true,
1320 ],
1321 'default' => 'No Comments',
1322 'condition' => [
1323 'element_select' => ['comments'],
1324 ]
1325 ]
1326 );
1327
1328 $repeater->add_control(
1329 'element_comments_text_2',
1330 [
1331 'label' => esc_html__('One Comment', 'king-addons'),
1332 'type' => Controls_Manager::TEXT,
1333 'dynamic' => [
1334 'active' => true,
1335 ],
1336 'default' => 'Comment',
1337 'condition' => [
1338 'element_select' => ['comments'],
1339 ]
1340 ]
1341 );
1342
1343 $repeater->add_control(
1344 'element_comments_text_3',
1345 [
1346 'label' => esc_html__('Multiple Comments', 'king-addons'),
1347 'type' => Controls_Manager::TEXT,
1348 'dynamic' => [
1349 'active' => true,
1350 ],
1351 'default' => 'Comments',
1352 'condition' => [
1353 'element_select' => ['comments'],
1354 ],
1355 'separator' => 'after'
1356 ]
1357 );
1358
1359 $repeater->add_control('element_like_icon', $this->add_repeater_args_element_like_icon());
1360
1361 $repeater->add_control('element_like_show_count', $this->add_repeater_args_element_like_show_count());
1362
1363 $repeater->add_control('element_like_text', $this->add_repeater_args_element_like_text());
1364
1365 $repeater->add_control('element_sharing_icon_1', $this->add_repeater_args_element_sharing_icon_1());
1366
1367 $repeater->add_control('element_sharing_icon_2', $this->add_repeater_args_element_sharing_icon_2());
1368
1369 $repeater->add_control('element_sharing_icon_3', $this->add_repeater_args_element_sharing_icon_3());
1370
1371 $repeater->add_control('element_sharing_icon_4', $this->add_repeater_args_element_sharing_icon_4());
1372
1373 $repeater->add_control('element_sharing_icon_5', $this->add_repeater_args_element_sharing_icon_5());
1374
1375 $repeater->add_control('element_sharing_icon_6', $this->add_repeater_args_element_sharing_icon_6());
1376
1377 $repeater->add_control('element_sharing_trigger', $this->add_repeater_args_element_sharing_trigger());
1378
1379 $repeater->add_control('element_sharing_trigger_icon', $this->add_repeater_args_element_sharing_trigger_icon());
1380
1381 $repeater->add_control('element_sharing_trigger_action', $this->add_repeater_args_element_sharing_trigger_action());
1382
1383 $repeater->add_control('element_sharing_trigger_direction', $this->add_repeater_args_element_sharing_trigger_direction());
1384
1385 $repeater->add_control('element_sharing_tooltip', $this->add_repeater_args_element_sharing_tooltip());
1386
1387 $repeater->add_control('element_custom_field', $this->add_repeater_args_element_custom_field());
1388
1389 $repeater->add_control('element_custom_field_btn_link', $this->add_repeater_args_element_custom_field_btn_link());
1390
1391 $repeater->add_control('element_custom_field_new_tab', $this->add_repeater_args_element_custom_field_new_tab());
1392
1393 $repeater->add_control('custom_field_wrapper_html_divider1', $this->add_repeater_args_custom_field_wrapper_html_divider1());
1394
1395 $repeater->add_control('element_custom_field_wrapper', $this->add_repeater_args_element_custom_field_wrapper());
1396
1397 $repeater->add_control('element_custom_field_wrapper_html', $this->add_repeater_args_element_custom_field_wrapper_html());
1398
1399 $repeater->add_control('custom_field_wrapper_html_divider2', $this->add_repeater_args_custom_field_wrapper_html_divider2());
1400
1401 $repeater->add_control('element_custom_field_style', $this->add_repeater_args_element_custom_field_style());
1402
1403 $repeater->add_control(
1404 'element_separator_style',
1405 [
1406 'label' => esc_html__('Select Styling', 'king-addons'),
1407 'type' => Controls_Manager::SELECT,
1408 'default' => 'king-addons-grid-sep-style-1',
1409 'options' => [
1410 'king-addons-grid-sep-style-1' => esc_html__('Separator Style 1', 'king-addons'),
1411 'king-addons-grid-sep-style-2' => esc_html__('Separator Style 2', 'king-addons'),
1412 ],
1413 'condition' => [
1414 'element_select' => 'separator',
1415 ]
1416 ]
1417 );
1418
1419 $repeater->add_control(
1420 'element_extra_text_pos',
1421 [
1422 'label' => esc_html__('Extra Text Display', 'king-addons'),
1423 'type' => Controls_Manager::SELECT,
1424 'options' => [
1425 'none' => esc_html__('None', 'king-addons'),
1426 'before' => esc_html__('Before Element', 'king-addons'),
1427 'after' => esc_html__('After Element', 'king-addons'),
1428 ],
1429 'default' => 'none',
1430 'condition' => [
1431 'element_select!' => [
1432 'title',
1433 'content',
1434 'excerpt',
1435 'read-more',
1436 'separator',
1437 ],
1438 ]
1439 ]
1440 );
1441
1442 $repeater->add_control(
1443 'element_extra_text',
1444 [
1445 'label' => esc_html__('Extra Text', 'king-addons'),
1446 'type' => Controls_Manager::TEXT,
1447 'dynamic' => [
1448 'active' => true,
1449 ],
1450 'default' => '',
1451 'condition' => [
1452 'element_select!' => [
1453 'title',
1454 'content',
1455 'excerpt',
1456 'read-more',
1457 'separator',
1458 ],
1459 'element_extra_text_pos!' => 'none'
1460 ]
1461 ]
1462 );
1463
1464 $repeater->add_control(
1465 'element_extra_icon_pos',
1466 [
1467 'label' => esc_html__('Extra Icon Position', 'king-addons'),
1468 'type' => Controls_Manager::SELECT,
1469 'options' => [
1470 'none' => esc_html__('None', 'king-addons'),
1471 'before' => esc_html__('Before Element', 'king-addons'),
1472 'after' => esc_html__('After Element', 'king-addons'),
1473 ],
1474 'default' => 'none',
1475 'condition' => [
1476 'element_select!' => [
1477 'title',
1478 'content',
1479 'excerpt',
1480 'separator',
1481 'likes',
1482 'sharing',
1483 ],
1484 ]
1485 ]
1486 );
1487
1488 $repeater->add_control(
1489 'element_extra_icon',
1490 [
1491 'label' => esc_html__('Select Icon', 'king-addons'),
1492 'type' => Controls_Manager::ICONS,
1493 'skin' => 'inline',
1494 'label_block' => false,
1495 'condition' => [
1496 'element_select!' => [
1497 'title',
1498 'content',
1499 'excerpt',
1500 'separator',
1501 'likes',
1502 'sharing',
1503 ],
1504 'element_extra_icon_pos!' => 'none'
1505 ]
1506 ]
1507 );
1508
1509 $repeater->add_control(
1510 'animation_divider',
1511 [
1512 'type' => Controls_Manager::DIVIDER,
1513 'style' => 'thick',
1514 ]
1515 );
1516
1517 $repeater->add_control(
1518 'element_animation',
1519 [
1520 'label' => esc_html__('Select Animation', 'king-addons'),
1521 'type' => 'king-addons-animations',
1522 'default' => 'none',
1523 ]
1524 );
1525
1526
1527 Core::renderUpgradeProNotice($repeater, Controls_Manager::RAW_HTML, 'magazine-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']);
1528
1529 $repeater->add_control(
1530 'element_animation_duration',
1531 [
1532 'label' => esc_html__('Animation Duration', 'king-addons'),
1533 'type' => Controls_Manager::NUMBER,
1534 'default' => 0.3,
1535 'min' => 0,
1536 'max' => 5,
1537 'step' => 0.1,
1538 'selectors' => [
1539 '{{WRAPPER}} {{CURRENT_ITEM}}' => 'transition-duration: {{VALUE}}s;'
1540 ],
1541 'condition' => [
1542 'element_animation!' => 'none',
1543 ],
1544 ]
1545 );
1546
1547 $repeater->add_control(
1548 'element_animation_delay',
1549 [
1550 'label' => esc_html__('Animation Delay', 'king-addons'),
1551 'type' => Controls_Manager::NUMBER,
1552 'default' => 0,
1553 'min' => 0,
1554 'max' => 5,
1555 'step' => 0.1,
1556 'selectors' => [
1557 '{{WRAPPER}} .king-addons-animation-wrap:hover {{CURRENT_ITEM}}' => 'transition-delay: {{VALUE}}s;'
1558 ],
1559 'condition' => [
1560 'element_animation!' => 'none',
1561 ],
1562 ]
1563 );
1564
1565 $repeater->add_control(
1566 'element_animation_timing',
1567 [
1568 'label' => esc_html__('Animation Timing', 'king-addons'),
1569 'type' => Controls_Manager::SELECT,
1570 'options' => Core::getAnimationTimings(),
1571 'default' => 'ease-default',
1572 'condition' => [
1573 'element_animation!' => 'none',
1574 ],
1575 ]
1576 );
1577
1578
1579 Core::renderUpgradeProNotice($repeater, Controls_Manager::RAW_HTML, 'magazine-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',]);
1580
1581 $repeater->add_control(
1582 'element_animation_size',
1583 [
1584 'label' => esc_html__('Animation Size', 'king-addons'),
1585 'type' => Controls_Manager::SELECT,
1586 'options' => [
1587 'small' => esc_html__('Small', 'king-addons'),
1588 'medium' => esc_html__('Medium', 'king-addons'),
1589 'large' => esc_html__('Large', 'king-addons'),
1590 ],
1591 'default' => 'medium',
1592 'condition' => [
1593 'element_animation!' => 'none',
1594 ],
1595 ]
1596 );
1597
1598 $repeater->add_control(
1599 'element_animation_tr',
1600 [
1601 'label' => esc_html__('Animation Transparency', 'king-addons'),
1602 'type' => Controls_Manager::SWITCHER,
1603 'default' => 'yes',
1604 'return_value' => 'yes',
1605 'condition' => [
1606 'element_animation!' => 'none',
1607 ],
1608 ]
1609 );
1610
1611 $repeater->add_responsive_control(
1612 'element_show_on',
1613 [
1614 'label' => esc_html__('Show on this Device', 'king-addons'),
1615 'type' => Controls_Manager::SWITCHER,
1616 'default' => 'yes',
1617 'widescreen_default' => 'yes',
1618 'laptop_default' => 'yes',
1619 'tablet_extra_default' => 'yes',
1620 'tablet_default' => 'yes',
1621 'mobile_extra_default' => 'yes',
1622 'mobile_default' => 'yes',
1623 'selectors_dictionary' => [
1624 '' => 'position: absolute; left: -99999999px;',
1625 'yes' => 'position: static; left: auto;'
1626 ],
1627 'selectors' => [
1628 '{{WRAPPER}} {{CURRENT_ITEM}}' => '{{VALUE}}',
1629 ],
1630 'render_type' => 'template',
1631 ]
1632 );
1633
1634 $this->add_control(
1635 'grid_elements',
1636 [
1637 'label' => esc_html__('Grid Elements', 'king-addons'),
1638 'type' => Controls_Manager::REPEATER,
1639 'fields' => $repeater->get_controls(),
1640 'default' => [
1641 [
1642 'element_select' => 'category',
1643 'element_align_vr' => 'bottom',
1644 'element_align_hr' => 'left',
1645 ],
1646 [
1647 'element_select' => 'title',
1648 'element_align_vr' => 'bottom',
1649 'element_align_hr' => 'left',
1650 ],
1651 [
1652 'element_select' => 'date',
1653 'element_align_vr' => 'bottom',
1654 'element_display' => 'inline',
1655 'element_align_hr' => 'left',
1656 ],
1657 ],
1658 'title_field' => '{{ element_select.charAt(0).toUpperCase() + element_select.slice(1) }}',
1659 ]
1660 );
1661
1662 $this->end_controls_section();
1663
1664
1665 $this->add_section_slider();
1666
1667
1668 $this->start_controls_section(
1669 'section_image_overlay',
1670 [
1671 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Media Overlay', 'king-addons'),
1672 'tab' => Controls_Manager::TAB_CONTENT,
1673 ]
1674 );
1675
1676 $this->add_control(
1677 'overlay_width',
1678 [
1679 'label' => esc_html__('Overlay Width', 'king-addons'),
1680 'type' => Controls_Manager::SLIDER,
1681 'size_units' => ['%', 'px'],
1682 'default' => [
1683 'unit' => '%',
1684 'size' => 100,
1685 ],
1686 'range' => [
1687 '%' => [
1688 'min' => 0,
1689 'max' => 100,
1690 ],
1691 'px' => [
1692 'min' => 0,
1693 'max' => 500,
1694 ],
1695 ],
1696 'selectors' => [
1697 '{{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);',
1698 '{{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);',
1699 '{{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);',
1700 '{{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);',
1701 '{{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);',
1702 ],
1703 ]
1704 );
1705
1706 $this->add_responsive_control(
1707 'overlay_height',
1708 [
1709 'label' => esc_html__('Overlay Height', 'king-addons'),
1710 'type' => Controls_Manager::SLIDER,
1711 'size_units' => ['%', 'px'],
1712 'default' => [
1713 'unit' => '%',
1714 'size' => 100,
1715 ],
1716 'range' => [
1717 '%' => [
1718 'min' => 0,
1719 'max' => 100,
1720 ],
1721 'px' => [
1722 'min' => 0,
1723 'max' => 500,
1724 ],
1725 ],
1726 'selectors' => [
1727 '{{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);',
1728 '{{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);',
1729 '{{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);',
1730 '{{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);',
1731 '{{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);',
1732 ],
1733 'separator' => 'after',
1734 ]
1735 );
1736
1737 $this->add_control(
1738 'overlay_post_link',
1739 [
1740 'label' => esc_html__('Link to Single Page', 'king-addons'),
1741 'type' => Controls_Manager::SWITCHER,
1742 'default' => 'yes',
1743 'return_value' => 'yes',
1744 'separator' => 'after',
1745 ]
1746 );
1747
1748 $this->add_control(
1749 'overlay_animation',
1750 [
1751 'label' => esc_html__('Select Animation', 'king-addons'),
1752 'type' => 'king-addons-animations-alt',
1753 'default' => 'fade-out',
1754 ]
1755 );
1756
1757
1758 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'magazine-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']);
1759
1760 $this->add_control(
1761 'overlay_animation_duration',
1762 [
1763 'label' => esc_html__('Animation Duration', 'king-addons'),
1764 'type' => Controls_Manager::NUMBER,
1765 'default' => 0.7,
1766 'min' => 0,
1767 'max' => 5,
1768 'step' => 0.1,
1769 'selectors' => [
1770 '{{WRAPPER}} .king-addons-grid-media-hover-bg' => 'transition-duration: {{VALUE}}s;'
1771 ],
1772 'condition' => [
1773 'overlay_animation!' => 'none',
1774 ],
1775 ]
1776 );
1777
1778 $this->add_control(
1779 'overlay_animation_delay',
1780 [
1781 'label' => esc_html__('Animation Delay', 'king-addons'),
1782 'type' => Controls_Manager::NUMBER,
1783 'default' => 0,
1784 'min' => 0,
1785 'max' => 5,
1786 'step' => 0.1,
1787 'selectors' => [
1788 '{{WRAPPER}} .king-addons-animation-wrap:hover .king-addons-grid-media-hover-bg' => 'transition-delay: {{VALUE}}s;'
1789 ],
1790 'condition' => [
1791 'overlay_animation!' => 'none',
1792 ],
1793 ]
1794 );
1795
1796 $this->add_control(
1797 'overlay_animation_timing',
1798 [
1799 'label' => esc_html__('Animation Timing', 'king-addons'),
1800 'type' => Controls_Manager::SELECT,
1801 'options' => Core::getAnimationTimings(),
1802 'default' => 'ease-default',
1803 'condition' => [
1804 'overlay_animation!' => 'none',
1805 ],
1806 ]
1807 );
1808
1809
1810 Core::renderUpgradeProNotice($this, Controls_Manager::RAW_HTML, 'magazine-grid', 'overlay_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',]);
1811
1812 $this->add_control(
1813 'overlay_animation_size',
1814 [
1815 'label' => esc_html__('Animation Size', 'king-addons'),
1816 'type' => Controls_Manager::SELECT,
1817 'options' => [
1818 'small' => esc_html__('Small', 'king-addons'),
1819 'medium' => esc_html__('Medium', 'king-addons'),
1820 'large' => esc_html__('Large', 'king-addons'),
1821 ],
1822 'default' => 'medium',
1823 'condition' => [
1824 'overlay_animation!' => 'none',
1825 ],
1826 ]
1827 );
1828
1829 $this->add_control(
1830 'overlay_animation_tr',
1831 [
1832 'label' => esc_html__('Animation Transparency', 'king-addons'),
1833 'type' => Controls_Manager::SWITCHER,
1834 'default' => 'yes',
1835 'return_value' => 'yes',
1836 'separator' => 'after',
1837 'condition' => [
1838 'overlay_animation!' => 'none',
1839 ],
1840 ]
1841 );
1842
1843 $this->add_control_overlay_animation_divider();
1844
1845 $this->add_control_overlay_image();
1846
1847 $this->add_control_overlay_image_width();
1848
1849 $this->end_controls_section();
1850
1851 Core::renderProFeaturesSection($this, '', Controls_Manager::RAW_HTML, 'magazine-grid', [
1852 'Magazine Grid Slider',
1853 '+6 Magazine Grid Layouts',
1854 'Magazine Grid Slider Autoplay Options',
1855 'Magazine Grid Slider Advanced Navigation Positioning',
1856 'Magazine Grid Slider Advanced Pagination Positioning',
1857 'Random Posts Query',
1858 'Posts Order',
1859 'Trim Title & Excerpt By Letter Count',
1860 'Custom Post Types Support',
1861 'Custom Fields Support',
1862 'Advanced Grid Elements Positioning',
1863 'Advanced Post Likes',
1864 'Advanced Post Sharing',
1865 'Unlimited Image Overlay Animations',
1866 'Image Overlay GIF Upload Option',
1867 'Title, Category, Read More Advanced Link Hover Animations',
1868 'Open Links in New Tab'
1869 ]);
1870
1871
1872 $this->start_controls_section(
1873 'section_style_grid_media',
1874 [
1875 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Grid Media', 'king-addons'),
1876 'tab' => Controls_Manager::TAB_STYLE,
1877 'show_label' => false,
1878 ]
1879 );
1880
1881 $this->add_control(
1882 'grid_media_border_color',
1883 [
1884 'label' => esc_html__('Border Color', 'king-addons'),
1885 'type' => Controls_Manager::COLOR,
1886 'default' => '#E8E8E8',
1887 'selectors' => [
1888 '{{WRAPPER}} .king-addons-grid-image-wrap' => 'border-color: {{VALUE}}',
1889 ],
1890 ]
1891 );
1892
1893 $this->add_control(
1894 'grid_media_border_type',
1895 [
1896 'label' => esc_html__('Border Type', 'king-addons'),
1897 'type' => Controls_Manager::SELECT,
1898 'options' => [
1899 'none' => esc_html__('None', 'king-addons'),
1900 'solid' => esc_html__('Solid', 'king-addons'),
1901 'double' => esc_html__('Double', 'king-addons'),
1902 'dotted' => esc_html__('Dotted', 'king-addons'),
1903 'dashed' => esc_html__('Dashed', 'king-addons'),
1904 'groove' => esc_html__('Groove', 'king-addons'),
1905 ],
1906 'default' => 'none',
1907 'selectors' => [
1908 '{{WRAPPER}} .king-addons-grid-image-wrap' => 'border-style: {{VALUE}};',
1909 ],
1910 ]
1911 );
1912
1913 $this->add_control(
1914 'grid_media_border_width',
1915 [
1916 'label' => esc_html__('Border Width', 'king-addons'),
1917 'type' => Controls_Manager::DIMENSIONS,
1918 'size_units' => ['px'],
1919 'default' => [
1920 'top' => 1,
1921 'right' => 1,
1922 'bottom' => 1,
1923 'left' => 1,
1924 ],
1925 'selectors' => [
1926 '{{WRAPPER}} .king-addons-grid-image-wrap' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1927 ],
1928 'condition' => [
1929 'grid_media_border_type!' => 'none',
1930 ],
1931 ]
1932 );
1933
1934 $this->add_control(
1935 'grid_media_radius',
1936 [
1937 'label' => esc_html__('Border Radius', 'king-addons'),
1938 'type' => Controls_Manager::DIMENSIONS,
1939 'size_units' => ['px', '%'],
1940 'default' => [
1941 'top' => 0,
1942 'right' => 0,
1943 'bottom' => 0,
1944 'left' => 0,
1945 ],
1946 'selectors' => [
1947 '{{WRAPPER}} .king-addons-grid-image-wrap' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1948 ],
1949 'separator' => 'before',
1950 ]
1951 );
1952
1953 $this->end_controls_section();
1954
1955
1956 $this->start_controls_section(
1957 'section_style_overlay',
1958 [
1959 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Media Overlay', 'king-addons'),
1960 'tab' => Controls_Manager::TAB_STYLE,
1961 'show_label' => false,
1962 ]
1963 );
1964
1965 $this->add_group_control(
1966 Group_Control_Background::get_type(),
1967 [
1968 'name' => 'overlay_color',
1969 'label' => esc_html__('Background', 'king-addons'),
1970 'types' => ['classic', 'gradient'],
1971 'fields_options' => [
1972 'background' => [
1973 'default' => 'gradient',
1974 ],
1975 'color' => [
1976 'default' => 'rgba(255, 255, 255, 0)',
1977 ],
1978 'color_stop' => [
1979 'default' => [
1980 'unit' => '%',
1981 'size' => 0,
1982 ]
1983 ],
1984 'color_b' => [
1985 'default' => 'rgba(0, 0, 0, 1)',
1986 ]
1987 ],
1988 'selector' => '{{WRAPPER}} .king-addons-grid-media-hover-bg'
1989 ]
1990 );
1991
1992 $this->add_control(
1993 'overlay_border_color',
1994 [
1995 'label' => esc_html__('Border Color', 'king-addons'),
1996 'type' => Controls_Manager::COLOR,
1997 'default' => '#E8E8E8',
1998 'selectors' => [
1999 '{{WRAPPER}} .king-addons-grid-media-hover-bg' => 'border-color: {{VALUE}}',
2000 ],
2001 ]
2002 );
2003
2004 $this->add_control(
2005 'overlay_border_type',
2006 [
2007 'label' => esc_html__('Border Type', 'king-addons'),
2008 'type' => Controls_Manager::SELECT,
2009 'options' => [
2010 'none' => esc_html__('None', 'king-addons'),
2011 'solid' => esc_html__('Solid', 'king-addons'),
2012 'double' => esc_html__('Double', 'king-addons'),
2013 'dotted' => esc_html__('Dotted', 'king-addons'),
2014 'dashed' => esc_html__('Dashed', 'king-addons'),
2015 'groove' => esc_html__('Groove', 'king-addons'),
2016 ],
2017 'default' => 'none',
2018 'selectors' => [
2019 '{{WRAPPER}} .king-addons-grid-media-hover-bg' => 'border-style: {{VALUE}};',
2020 ],
2021 ]
2022 );
2023
2024 $this->add_control(
2025 'overlay_border_width',
2026 [
2027 'label' => esc_html__('Border Width', 'king-addons'),
2028 'type' => Controls_Manager::DIMENSIONS,
2029 'size_units' => ['px'],
2030 'default' => [
2031 'top' => 1,
2032 'right' => 1,
2033 'bottom' => 1,
2034 'left' => 1,
2035 ],
2036 'selectors' => [
2037 '{{WRAPPER}} .king-addons-grid-media-hover-bg' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2038 ],
2039 'condition' => [
2040 'overlay_border_type!' => 'none',
2041 ],
2042 ]
2043 );
2044
2045 $this->add_control(
2046 'overlay_radius',
2047 [
2048 'label' => esc_html__('Border Radius', 'king-addons'),
2049 'type' => Controls_Manager::DIMENSIONS,
2050 'size_units' => ['px', '%'],
2051 'default' => [
2052 'top' => 0,
2053 'right' => 0,
2054 'bottom' => 0,
2055 'left' => 0,
2056 ],
2057 'selectors' => [
2058 '{{WRAPPER}} .king-addons-grid-media-hover-bg' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2059 ],
2060 'separator' => 'before',
2061 ]
2062 );
2063
2064 $this->end_controls_section();
2065
2066
2067 $this->start_controls_section(
2068 'section_style_title',
2069 [
2070 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Title', 'king-addons'),
2071 'tab' => Controls_Manager::TAB_STYLE,
2072 'show_label' => false,
2073 ]
2074 );
2075
2076 $this->start_controls_tabs('tabs_grid_title_style');
2077
2078 $this->start_controls_tab(
2079 'tab_grid_title_normal',
2080 [
2081 'label' => esc_html__('Normal', 'king-addons'),
2082 ]
2083 );
2084
2085 $this->add_control(
2086 'title_color',
2087 [
2088 'label' => esc_html__('Color', 'king-addons'),
2089 'type' => Controls_Manager::COLOR,
2090 'default' => '#ffffff',
2091 'selectors' => [
2092 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'color: {{VALUE}}',
2093 ],
2094 ]
2095 );
2096
2097 $this->add_control(
2098 'title_bg_color',
2099 [
2100 'label' => esc_html__('Background Color', 'king-addons'),
2101 'type' => Controls_Manager::COLOR,
2102 'selectors' => [
2103 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'background-color: {{VALUE}}',
2104 ]
2105 ]
2106 );
2107
2108 $this->add_control(
2109 'title_border_color',
2110 [
2111 'label' => esc_html__('Border Color', 'king-addons'),
2112 'type' => Controls_Manager::COLOR,
2113 'default' => '#E8E8E8',
2114 'selectors' => [
2115 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'border-color: {{VALUE}}',
2116 ],
2117 'separator' => 'after',
2118 ]
2119 );
2120
2121 $this->end_controls_tab();
2122
2123 $this->start_controls_tab(
2124 'tab_grid_title_hover',
2125 [
2126 'label' => esc_html__('Hover', 'king-addons'),
2127 ]
2128 );
2129
2130 $this->add_control(
2131 'title_color_hr',
2132 [
2133 'label' => esc_html__('Color', 'king-addons'),
2134 'type' => Controls_Manager::COLOR,
2135 'default' => '#FFFFFF',
2136 'selectors' => [
2137 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a:hover' => 'color: {{VALUE}}',
2138 ],
2139 ]
2140 );
2141
2142 $this->add_control(
2143 'title_bg_color_hr',
2144 [
2145 'label' => esc_html__('Background Color', 'king-addons'),
2146 'type' => Controls_Manager::COLOR,
2147 'selectors' => [
2148 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a:hover' => 'background-color: {{VALUE}}',
2149 ]
2150 ]
2151 );
2152
2153 $this->add_control(
2154 'title_border_color_hr',
2155 [
2156 'label' => esc_html__('Border Color', 'king-addons'),
2157 'type' => Controls_Manager::COLOR,
2158 'default' => '#E8E8E8',
2159 'selectors' => [
2160 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a:hover' => 'border-color: {{VALUE}}',
2161 ],
2162 ]
2163 );
2164
2165 $this->add_control_title_pointer_color_hr();
2166
2167 $this->end_controls_tab();
2168
2169 $this->end_controls_tabs();
2170
2171 $this->add_control_title_pointer();
2172
2173 $this->add_control_title_pointer_height();
2174
2175 $this->add_control_title_pointer_animation();
2176
2177 $this->add_control(
2178 'title_transition_duration',
2179 [
2180 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
2181 'type' => Controls_Manager::NUMBER,
2182 'default' => 0.1,
2183 'min' => 0,
2184 'max' => 5,
2185 'step' => 0.1,
2186 'selectors' => [
2187 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'transition-duration: {{VALUE}}s',
2188 '{{WRAPPER}} .king-addons-grid-item-title .king-addons-pointer-item:before' => 'transition-duration: {{VALUE}}s',
2189 '{{WRAPPER}} .king-addons-grid-item-title .king-addons-pointer-item:after' => 'transition-duration: {{VALUE}}s',
2190 ],
2191 'separator' => 'after',
2192 ]
2193 );
2194
2195 $this->add_group_control(
2196 Group_Control_Typography::get_type(),
2197 [
2198 'name' => 'title_typography',
2199 'selector' => '{{WRAPPER}} .king-addons-grid-item-title a'
2200 ]
2201 );
2202
2203 $this->add_responsive_control(
2204 'title_featured_box_size',
2205 [
2206 'type' => Controls_Manager::SLIDER,
2207 'label' => esc_html__('Featured Box Title Font Size', 'king-addons'),
2208 'range' => [
2209 'px' => [
2210 'min' => 10,
2211 'max' => 100,
2212 ],
2213 ],
2214 'default' => [
2215 'unit' => 'px',
2216 'size' => 38,
2217 ],
2218 'selectors' => [
2219 '{{WRAPPER}} .king-addons-magazine-grid-add-1-2 article:nth-child(1) .king-addons-grid-item-title a' => 'font-size: {{SIZE}}px;',
2220 '{{WRAPPER}} .king-addons-magazine-grid-add-1-3 article:nth-child(1) .king-addons-grid-item-title a' => 'font-size: {{SIZE}}px;',
2221 '{{WRAPPER}} .king-addons-magazine-grid-add-1-4 article:nth-child(1) .king-addons-grid-item-title a' => 'font-size: {{SIZE}}px;',
2222 '{{WRAPPER}} .king-addons-magazine-grid-add-1-1-2 article:nth-child(1) .king-addons-grid-item-title a' => 'font-size: {{SIZE}}px;',
2223 '{{WRAPPER}} .king-addons-magazine-grid-add-2-1-2 article:nth-child(2) .king-addons-grid-item-title a' => 'font-size: {{SIZE}}px;',
2224 '{{WRAPPER}} .king-addons-magazine-grid-add-1vh-3h article:nth-child(1) .king-addons-grid-item-title a' => 'font-size: {{SIZE}}px;',
2225 '{{WRAPPER}} .king-addons-magazine-grid-add-1-1-1 article:nth-child(2) .king-addons-grid-item-title a' => 'font-size: {{SIZE}}px;',
2226 ],
2227 'condition' => [
2228 'king_addons_grid_layout_select' => ['1-2', '1-3', '1-4', '1-1-2', '2-1-2', '1vh-3h', '1-1-1']
2229 ]
2230 ]
2231 );
2232
2233 $this->add_control(
2234 'title_border_type',
2235 [
2236 'label' => esc_html__('Border Type', 'king-addons'),
2237 'type' => Controls_Manager::SELECT,
2238 'options' => [
2239 'none' => esc_html__('None', 'king-addons'),
2240 'solid' => esc_html__('Solid', 'king-addons'),
2241 'double' => esc_html__('Double', 'king-addons'),
2242 'dotted' => esc_html__('Dotted', 'king-addons'),
2243 'dashed' => esc_html__('Dashed', 'king-addons'),
2244 'groove' => esc_html__('Groove', 'king-addons'),
2245 ],
2246 'default' => 'none',
2247 'selectors' => [
2248 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'border-style: {{VALUE}};',
2249 ],
2250 'render_type' => 'template',
2251 'separator' => 'before',
2252 ]
2253 );
2254
2255 $this->add_control(
2256 'title_border_width',
2257 [
2258 'label' => esc_html__('Border Width', 'king-addons'),
2259 'type' => Controls_Manager::DIMENSIONS,
2260 'size_units' => ['px'],
2261 'default' => [
2262 'top' => 1,
2263 'right' => 1,
2264 'bottom' => 1,
2265 'left' => 1,
2266 ],
2267 'selectors' => [
2268 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2269 ],
2270 'render_type' => 'template',
2271 'condition' => [
2272 'title_border_type!' => 'none',
2273 ],
2274 ]
2275 );
2276
2277 $this->add_responsive_control(
2278 'title_padding',
2279 [
2280 'label' => esc_html__('Padding', 'king-addons'),
2281 'type' => Controls_Manager::DIMENSIONS,
2282 'size_units' => ['px', '%'],
2283 'default' => [
2284 'top' => 0,
2285 'right' => 0,
2286 'bottom' => 0,
2287 'left' => 0,
2288 ],
2289 'selectors' => [
2290 '{{WRAPPER}} .king-addons-grid-item-title .inner-block a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2291 ],
2292 'render_type' => 'template',
2293 'separator' => 'before',
2294 ]
2295 );
2296
2297 $this->add_responsive_control(
2298 'title_margin',
2299 [
2300 'label' => esc_html__('Margin', 'king-addons'),
2301 'type' => Controls_Manager::DIMENSIONS,
2302 'size_units' => ['px', '%'],
2303 'default' => [
2304 'top' => 0,
2305 'right' => 0,
2306 'bottom' => 5,
2307 'left' => 20,
2308 ],
2309 'selectors' => [
2310 '{{WRAPPER}} .king-addons-grid-item-title .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2311 ],
2312 'render_type' => 'template',
2313 ]
2314 );
2315
2316 $this->end_controls_section();
2317
2318
2319 $this->start_controls_section(
2320 'section_style_content',
2321 [
2322 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Content', 'king-addons'),
2323 'tab' => Controls_Manager::TAB_STYLE,
2324 'show_label' => false,
2325 ]
2326 );
2327
2328 $this->add_control(
2329 'content_color',
2330 [
2331 'label' => esc_html__('Color', 'king-addons'),
2332 'type' => Controls_Manager::COLOR,
2333 'default' => '#ffffff',
2334 'selectors' => [
2335 '{{WRAPPER}} .king-addons-grid-item-content .inner-block' => 'color: {{VALUE}}',
2336 ],
2337 ]
2338 );
2339
2340 $this->add_control(
2341 'content_dropcap_color',
2342 [
2343 'label' => esc_html__('DropCap Color', 'king-addons'),
2344 'type' => Controls_Manager::COLOR,
2345 'default' => '#3a3a3a',
2346 'selectors' => [
2347 '{{WRAPPER}} .king-addons-grid-item-content.king-addons-enable-dropcap p:first-child:first-letter' => 'color: {{VALUE}}',
2348 ],
2349 ]
2350 );
2351
2352 $this->add_control(
2353 'content_bg_color',
2354 [
2355 'label' => esc_html__('Background Color', 'king-addons'),
2356 'type' => Controls_Manager::COLOR,
2357 'selectors' => [
2358 '{{WRAPPER}} .king-addons-grid-item-content .inner-block' => 'background-color: {{VALUE}}',
2359 ]
2360 ]
2361 );
2362
2363 $this->add_control(
2364 'content_border_color',
2365 [
2366 'label' => esc_html__('Border Color', 'king-addons'),
2367 'type' => Controls_Manager::COLOR,
2368 'default' => '#E8E8E8',
2369 'selectors' => [
2370 '{{WRAPPER}} .king-addons-grid-item-content .inner-block' => 'border-color: {{VALUE}}',
2371 ],
2372 'separator' => 'after',
2373 ]
2374 );
2375
2376 $this->add_group_control(
2377 Group_Control_Typography::get_type(),
2378 [
2379 'name' => 'content_typography',
2380 'selector' => '{{WRAPPER}} .king-addons-grid-item-content'
2381 ]
2382 );
2383
2384 $this->add_group_control(
2385 Group_Control_Typography::get_type(),
2386 [
2387 'name' => 'content_dropcap_typography',
2388 'label' => esc_html__('Drop Cap Typography', 'king-addons'),
2389 'selector' => '{{WRAPPER}} .king-addons-grid-item-content.king-addons-enable-dropcap p:first-child:first-letter'
2390 ]
2391 );
2392
2393 $this->add_responsive_control(
2394 'content_justify',
2395 [
2396 'label' => esc_html__('Justify Text', 'king-addons'),
2397 'type' => Controls_Manager::SWITCHER,
2398 'default' => '',
2399 'widescreen_default' => '',
2400 'laptop_default' => '',
2401 'tablet_extra_default' => '',
2402 'tablet_default' => '',
2403 'mobile_extra_default' => '',
2404 'mobile_default' => '',
2405 'selectors_dictionary' => [
2406 '' => '',
2407 'yes' => 'text-align: justify;'
2408 ],
2409 'selectors' => [
2410 '{{WRAPPER}} .king-addons-grid-item-content .inner-block' => '{{VALUE}}',
2411 ],
2412 'render_type' => 'template',
2413 ]
2414 );
2415
2416 $this->add_control(
2417 'content_border_type',
2418 [
2419 'label' => esc_html__('Border Type', 'king-addons'),
2420 'type' => Controls_Manager::SELECT,
2421 'options' => [
2422 'none' => esc_html__('None', 'king-addons'),
2423 'solid' => esc_html__('Solid', 'king-addons'),
2424 'double' => esc_html__('Double', 'king-addons'),
2425 'dotted' => esc_html__('Dotted', 'king-addons'),
2426 'dashed' => esc_html__('Dashed', 'king-addons'),
2427 'groove' => esc_html__('Groove', 'king-addons'),
2428 ],
2429 'default' => 'none',
2430 'selectors' => [
2431 '{{WRAPPER}} .king-addons-grid-item-content .inner-block' => 'border-style: {{VALUE}};',
2432 ],
2433 'render_type' => 'template',
2434 'separator' => 'before',
2435 ]
2436 );
2437
2438 $this->add_control(
2439 'content_border_width',
2440 [
2441 'label' => esc_html__('Border Width', 'king-addons'),
2442 'type' => Controls_Manager::DIMENSIONS,
2443 'size_units' => ['px'],
2444 'default' => [
2445 'top' => 1,
2446 'right' => 1,
2447 'bottom' => 1,
2448 'left' => 1,
2449 ],
2450 'selectors' => [
2451 '{{WRAPPER}} .king-addons-grid-item-content .inner-block' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2452 ],
2453 'render_type' => 'template',
2454 'condition' => [
2455 'content_border_type!' => 'none',
2456 ],
2457 ]
2458 );
2459
2460 $this->add_responsive_control(
2461 'content_padding',
2462 [
2463 'label' => esc_html__('Padding', 'king-addons'),
2464 'type' => Controls_Manager::DIMENSIONS,
2465 'size_units' => ['px', '%'],
2466 'default' => [
2467 'top' => 0,
2468 'right' => 0,
2469 'bottom' => 0,
2470 'left' => 0,
2471 ],
2472 'selectors' => [
2473 '{{WRAPPER}} .king-addons-grid-item-content .inner-block' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2474 ],
2475 'render_type' => 'template',
2476 'separator' => 'before',
2477 ]
2478 );
2479
2480 $this->add_responsive_control(
2481 'content_margin',
2482 [
2483 'label' => esc_html__('Margin', 'king-addons'),
2484 'type' => Controls_Manager::DIMENSIONS,
2485 'size_units' => ['px', '%'],
2486 'default' => [
2487 'top' => 0,
2488 'right' => 0,
2489 'bottom' => 0,
2490 'left' => 0,
2491 ],
2492 'render_type' => 'template',
2493 'selectors' => [
2494 '{{WRAPPER}} .king-addons-grid-item-content .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2495 ],
2496 ]
2497 );
2498
2499 $this->end_controls_section();
2500
2501
2502 $this->start_controls_section(
2503 'section_style_excerpt',
2504 [
2505 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Excerpt', 'king-addons'),
2506 'tab' => Controls_Manager::TAB_STYLE,
2507 'show_label' => false,
2508 ]
2509 );
2510
2511 $this->add_control(
2512 'excerpt_color',
2513 [
2514 'label' => esc_html__('Color', 'king-addons'),
2515 'type' => Controls_Manager::COLOR,
2516 'default' => '#ffffff',
2517 'selectors' => [
2518 '{{WRAPPER}} .king-addons-grid-item-excerpt .inner-block' => 'color: {{VALUE}}',
2519 ],
2520 ]
2521 );
2522
2523 $this->add_control(
2524 'excerpt_dropcap_color',
2525 [
2526 'label' => esc_html__('DropCap Color', 'king-addons'),
2527 'type' => Controls_Manager::COLOR,
2528 'default' => '#3a3a3a',
2529 'selectors' => [
2530 '{{WRAPPER}} .king-addons-grid-item-excerpt.king-addons-enable-dropcap p:first-child:first-letter' => 'color: {{VALUE}}',
2531 ],
2532 ]
2533 );
2534
2535 $this->add_control(
2536 'excerpt_bg_color',
2537 [
2538 'label' => esc_html__('Background Color', 'king-addons'),
2539 'type' => Controls_Manager::COLOR,
2540 'selectors' => [
2541 '{{WRAPPER}} .king-addons-grid-item-excerpt .inner-block' => 'background-color: {{VALUE}}',
2542 ]
2543 ]
2544 );
2545
2546 $this->add_control(
2547 'excerpt_border_color',
2548 [
2549 'label' => esc_html__('Border Color', 'king-addons'),
2550 'type' => Controls_Manager::COLOR,
2551 'default' => '#E8E8E8',
2552 'selectors' => [
2553 '{{WRAPPER}} .king-addons-grid-item-excerpt .inner-block' => 'border-color: {{VALUE}}',
2554 ],
2555 'separator' => 'after',
2556 ]
2557 );
2558
2559 $this->add_group_control(
2560 Group_Control_Typography::get_type(),
2561 [
2562 'name' => 'excerpt_typography',
2563 'selector' => '{{WRAPPER}} .king-addons-grid-item-excerpt'
2564 ]
2565 );
2566
2567 $this->add_group_control(
2568 Group_Control_Typography::get_type(),
2569 [
2570 'name' => 'excerpt_dropcap_typography',
2571 'label' => esc_html__('Drop Cap Typography', 'king-addons'),
2572 'selector' => '{{WRAPPER}} .king-addons-grid-item-excerpt.king-addons-enable-dropcap p:first-child:first-letter'
2573 ]
2574 );
2575
2576 $this->add_responsive_control(
2577 'excerpt_justify',
2578 [
2579 'label' => esc_html__('Justify Text', 'king-addons'),
2580 'type' => Controls_Manager::SWITCHER,
2581 'default' => '',
2582 'widescreen_default' => '',
2583 'laptop_default' => '',
2584 'tablet_extra_default' => '',
2585 'tablet_default' => '',
2586 'mobile_extra_default' => '',
2587 'mobile_default' => '',
2588 'selectors_dictionary' => [
2589 '' => '',
2590 'yes' => 'text-align: justify;'
2591 ],
2592 'selectors' => [
2593 '{{WRAPPER}} .king-addons-grid-item-excerpt .inner-block' => '{{VALUE}}',
2594 ],
2595 'render_type' => 'template',
2596 ]
2597 );
2598
2599 $this->add_control(
2600 'excerpt_border_type',
2601 [
2602 'label' => esc_html__('Border Type', 'king-addons'),
2603 'type' => Controls_Manager::SELECT,
2604 'options' => [
2605 'none' => esc_html__('None', 'king-addons'),
2606 'solid' => esc_html__('Solid', 'king-addons'),
2607 'double' => esc_html__('Double', 'king-addons'),
2608 'dotted' => esc_html__('Dotted', 'king-addons'),
2609 'dashed' => esc_html__('Dashed', 'king-addons'),
2610 'groove' => esc_html__('Groove', 'king-addons'),
2611 ],
2612 'default' => 'none',
2613 'selectors' => [
2614 '{{WRAPPER}} .king-addons-grid-item-excerpt .inner-block' => 'border-style: {{VALUE}};',
2615 ],
2616 'render_type' => 'template',
2617 'separator' => 'before',
2618 ]
2619 );
2620
2621 $this->add_control(
2622 'excerpt_border_width',
2623 [
2624 'label' => esc_html__('Border Width', 'king-addons'),
2625 'type' => Controls_Manager::DIMENSIONS,
2626 'size_units' => ['px'],
2627 'default' => [
2628 'top' => 1,
2629 'right' => 1,
2630 'bottom' => 1,
2631 'left' => 1,
2632 ],
2633 'selectors' => [
2634 '{{WRAPPER}} .king-addons-grid-item-excerpt .inner-block' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2635 ],
2636 'render_type' => 'template',
2637 'condition' => [
2638 'excerpt_border_type!' => 'none',
2639 ],
2640 ]
2641 );
2642
2643 $this->add_responsive_control(
2644 'excerpt_padding',
2645 [
2646 'label' => esc_html__('Padding', 'king-addons'),
2647 'type' => Controls_Manager::DIMENSIONS,
2648 'size_units' => ['px', '%'],
2649 'default' => [
2650 'top' => 0,
2651 'right' => 0,
2652 'bottom' => 0,
2653 'left' => 0,
2654 ],
2655 'selectors' => [
2656 '{{WRAPPER}} .king-addons-grid-item-excerpt .inner-block' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2657 ],
2658 'render_type' => 'template',
2659 'separator' => 'before',
2660 ]
2661 );
2662
2663 $this->add_responsive_control(
2664 'excerpt_margin',
2665 [
2666 'label' => esc_html__('Margin', 'king-addons'),
2667 'type' => Controls_Manager::DIMENSIONS,
2668 'size_units' => ['px', '%'],
2669 'default' => [
2670 'top' => 0,
2671 'right' => 0,
2672 'bottom' => 0,
2673 'left' => 0,
2674 ],
2675 'render_type' => 'template',
2676 'selectors' => [
2677 '{{WRAPPER}} .king-addons-grid-item-excerpt .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2678 ],
2679 ]
2680 );
2681
2682 $this->end_controls_section();
2683
2684
2685 $this->start_controls_section(
2686 'section_style_date',
2687 [
2688 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Date', 'king-addons'),
2689 'tab' => Controls_Manager::TAB_STYLE,
2690 'show_label' => false,
2691 ]
2692 );
2693
2694 $this->add_control(
2695 'date_color',
2696 [
2697 'label' => esc_html__('Color', 'king-addons'),
2698 'type' => Controls_Manager::COLOR,
2699 'default' => '#ffffff',
2700 'selectors' => [
2701 '{{WRAPPER}} .king-addons-grid-item-date .inner-block' => 'color: {{VALUE}}',
2702 ],
2703 ]
2704 );
2705
2706 $this->add_control(
2707 'date_bg_color',
2708 [
2709 'label' => esc_html__('Background Color', 'king-addons'),
2710 'type' => Controls_Manager::COLOR,
2711 'selectors' => [
2712 '{{WRAPPER}} .king-addons-grid-item-date .inner-block > span' => 'background-color: {{VALUE}}',
2713 ]
2714 ]
2715 );
2716
2717 $this->add_control(
2718 'date_border_color',
2719 [
2720 'label' => esc_html__('Border Color', 'king-addons'),
2721 'type' => Controls_Manager::COLOR,
2722 'default' => '#E8E8E8',
2723 'selectors' => [
2724 '{{WRAPPER}} .king-addons-grid-item-date .inner-block > span' => 'border-color: {{VALUE}}',
2725 ]
2726 ]
2727 );
2728
2729 $this->add_control(
2730 'date_extra_text_color',
2731 [
2732 'label' => esc_html__('Extra Text Color', 'king-addons'),
2733 'type' => Controls_Manager::COLOR,
2734 'default' => '#ffffff',
2735 'selectors' => [
2736 '{{WRAPPER}} .king-addons-grid-item-date .inner-block span[class*="king-addons-grid-extra-text"]' => 'color: {{VALUE}}',
2737 ],
2738 ]
2739 );
2740
2741 $this->add_control(
2742 'date_extra_icon_color',
2743 [
2744 'label' => esc_html__('Extra Icon Color', 'king-addons'),
2745 'type' => Controls_Manager::COLOR,
2746 'default' => '#ffffff',
2747 'selectors' => [
2748 '{{WRAPPER}} .king-addons-grid-item-date .inner-block [class*="king-addons-grid-extra-icon"] i' => 'color: {{VALUE}}',
2749 '{{WRAPPER}} .king-addons-grid-item-date .inner-block [class*="king-addons-grid-extra-icon"] svg' => 'fill: {{VALUE}}'
2750 ],
2751 'separator' => 'after',
2752 ]
2753 );
2754
2755 $this->add_group_control(
2756 Group_Control_Typography::get_type(),
2757 [
2758 'name' => 'date_typography',
2759 'selector' => '{{WRAPPER}} .king-addons-grid-item-date'
2760 ]
2761 );
2762
2763 $this->add_control(
2764 'date_border_type',
2765 [
2766 'label' => esc_html__('Border Type', 'king-addons'),
2767 'type' => Controls_Manager::SELECT,
2768 'options' => [
2769 'none' => esc_html__('None', 'king-addons'),
2770 'solid' => esc_html__('Solid', 'king-addons'),
2771 'double' => esc_html__('Double', 'king-addons'),
2772 'dotted' => esc_html__('Dotted', 'king-addons'),
2773 'dashed' => esc_html__('Dashed', 'king-addons'),
2774 'groove' => esc_html__('Groove', 'king-addons'),
2775 ],
2776 'default' => 'none',
2777 'selectors' => [
2778 '{{WRAPPER}} .king-addons-grid-item-date .inner-block > span' => 'border-style: {{VALUE}};',
2779 ],
2780 'render_type' => 'template',
2781 'separator' => 'before',
2782 ]
2783 );
2784
2785 $this->add_control(
2786 'date_border_width',
2787 [
2788 'label' => esc_html__('Border Width', 'king-addons'),
2789 'type' => Controls_Manager::DIMENSIONS,
2790 'size_units' => ['px'],
2791 'default' => [
2792 'top' => 1,
2793 'right' => 1,
2794 'bottom' => 1,
2795 'left' => 1,
2796 ],
2797 'selectors' => [
2798 '{{WRAPPER}} .king-addons-grid-item-date .inner-block > span' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2799 ],
2800 'render_type' => 'template',
2801 'condition' => [
2802 'date_border_type!' => 'none',
2803 ],
2804 ]
2805 );
2806
2807 $this->add_control(
2808 'date_text_spacing',
2809 [
2810 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
2811 'type' => Controls_Manager::SLIDER,
2812 'size_units' => ['px'],
2813 'range' => [
2814 'px' => [
2815 'min' => 0,
2816 'max' => 25,
2817 ],
2818 ],
2819 'default' => [
2820 'unit' => 'px',
2821 'size' => 5,
2822 ],
2823 'selectors' => [
2824 '{{WRAPPER}} .king-addons-grid-item-date .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
2825 '{{WRAPPER}} .king-addons-grid-item-date .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
2826 ],
2827 'separator' => 'before',
2828 ]
2829 );
2830
2831 $this->add_control(
2832 'date_icon_spacing',
2833 [
2834 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
2835 'type' => Controls_Manager::SLIDER,
2836 'size_units' => ['px'],
2837 'range' => [
2838 'px' => [
2839 'min' => 0,
2840 'max' => 25,
2841 ],
2842 ],
2843 'default' => [
2844 'unit' => 'px',
2845 'size' => 5,
2846 ],
2847 'selectors' => [
2848 '{{WRAPPER}} .king-addons-grid-item-date .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
2849 '{{WRAPPER}} .king-addons-grid-item-date .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
2850 ],
2851 ]
2852 );
2853
2854 $this->add_responsive_control(
2855 'date_padding',
2856 [
2857 'label' => esc_html__('Padding', 'king-addons'),
2858 'type' => Controls_Manager::DIMENSIONS,
2859 'size_units' => ['px', '%'],
2860 'default' => [
2861 'top' => 0,
2862 'right' => 0,
2863 'bottom' => 0,
2864 'left' => 0,
2865 ],
2866 'selectors' => [
2867 '{{WRAPPER}} .king-addons-grid-item-date .inner-block > span' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2868 ],
2869 'render_type' => 'template',
2870 'separator' => 'before',
2871 ]
2872 );
2873
2874 $this->add_responsive_control(
2875 'date_margin',
2876 [
2877 'label' => esc_html__('Margin', 'king-addons'),
2878 'type' => Controls_Manager::DIMENSIONS,
2879 'size_units' => ['px', '%'],
2880 'default' => [
2881 'top' => 2,
2882 'right' => 0,
2883 'bottom' => 20,
2884 'left' => 22,
2885 ],
2886 'render_type' => 'template',
2887 'selectors' => [
2888 '{{WRAPPER}} .king-addons-grid-item-date .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2889 ],
2890 ]
2891 );
2892
2893 $this->end_controls_section();
2894
2895
2896 $this->start_controls_section(
2897 'section_style_time',
2898 [
2899 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Time', 'king-addons'),
2900 'tab' => Controls_Manager::TAB_STYLE,
2901 'show_label' => false,
2902 ]
2903 );
2904
2905 $this->add_control(
2906 'time_color',
2907 [
2908 'label' => esc_html__('Color', 'king-addons'),
2909 'type' => Controls_Manager::COLOR,
2910 'default' => '#ffffff',
2911 'selectors' => [
2912 '{{WRAPPER}} .king-addons-grid-item-time .inner-block' => 'color: {{VALUE}}',
2913 ],
2914 ]
2915 );
2916
2917 $this->add_control(
2918 'time_bg_color',
2919 [
2920 'label' => esc_html__('Background Color', 'king-addons'),
2921 'type' => Controls_Manager::COLOR,
2922 'selectors' => [
2923 '{{WRAPPER}} .king-addons-grid-item-time .inner-block > span' => 'background-color: {{VALUE}}',
2924 ]
2925 ]
2926 );
2927
2928 $this->add_control(
2929 'time_border_color',
2930 [
2931 'label' => esc_html__('Border Color', 'king-addons'),
2932 'type' => Controls_Manager::COLOR,
2933 'default' => '#E8E8E8',
2934 'selectors' => [
2935 '{{WRAPPER}} .king-addons-grid-item-time .inner-block > span' => 'border-color: {{VALUE}}',
2936 ],
2937 ]
2938 );
2939
2940 $this->add_control(
2941 'time_extra_text_color',
2942 [
2943 'label' => esc_html__('Extra Text Color', 'king-addons'),
2944 'type' => Controls_Manager::COLOR,
2945 'default' => '#ffffff',
2946 'selectors' => [
2947 '{{WRAPPER}} .king-addons-grid-item-time .inner-block span[class*="king-addons-grid-extra-text"]' => 'color: {{VALUE}}',
2948 ],
2949 ]
2950 );
2951
2952 $this->add_control(
2953 'time_extra_icon_color',
2954 [
2955 'label' => esc_html__('Extra Icon Color', 'king-addons'),
2956 'type' => Controls_Manager::COLOR,
2957 'default' => '#ffffff',
2958 'selectors' => [
2959 '{{WRAPPER}} .king-addons-grid-item-time .inner-block [class*="king-addons-grid-extra-icon"] i' => 'color: {{VALUE}}',
2960 '{{WRAPPER}} .king-addons-grid-item-time .inner-block [class*="king-addons-grid-extra-icon"] svg' => 'fill: {{VALUE}}'
2961 ],
2962 'separator' => 'after',
2963 ]
2964 );
2965
2966 $this->add_group_control(
2967 Group_Control_Typography::get_type(),
2968 [
2969 'name' => 'time_typography',
2970 'selector' => '{{WRAPPER}} .king-addons-grid-item-time'
2971 ]
2972 );
2973
2974 $this->add_control(
2975 'time_border_type',
2976 [
2977 'label' => esc_html__('Border Type', 'king-addons'),
2978 'type' => Controls_Manager::SELECT,
2979 'options' => [
2980 'none' => esc_html__('None', 'king-addons'),
2981 'solid' => esc_html__('Solid', 'king-addons'),
2982 'double' => esc_html__('Double', 'king-addons'),
2983 'dotted' => esc_html__('Dotted', 'king-addons'),
2984 'dashed' => esc_html__('Dashed', 'king-addons'),
2985 'groove' => esc_html__('Groove', 'king-addons'),
2986 ],
2987 'default' => 'none',
2988 'selectors' => [
2989 '{{WRAPPER}} .king-addons-grid-item-time .inner-block > span' => 'border-style: {{VALUE}};',
2990 ],
2991 'render_type' => 'template',
2992 'separator' => 'before',
2993 ]
2994 );
2995
2996 $this->add_control(
2997 'time_border_width',
2998 [
2999 'label' => esc_html__('Border Width', 'king-addons'),
3000 'type' => Controls_Manager::DIMENSIONS,
3001 'size_units' => ['px'],
3002 'default' => [
3003 'top' => 1,
3004 'right' => 1,
3005 'bottom' => 1,
3006 'left' => 1,
3007 ],
3008 'selectors' => [
3009 '{{WRAPPER}} .king-addons-grid-item-time .inner-block > span' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3010 ],
3011 'render_type' => 'template',
3012 'condition' => [
3013 'time_border_type!' => 'none',
3014 ],
3015 ]
3016 );
3017
3018 $this->add_control(
3019 'time_text_spacing',
3020 [
3021 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
3022 'type' => Controls_Manager::SLIDER,
3023 'size_units' => ['px'],
3024 'range' => [
3025 'px' => [
3026 'min' => 0,
3027 'max' => 25,
3028 ],
3029 ],
3030 'default' => [
3031 'unit' => 'px',
3032 'size' => 5,
3033 ],
3034 'selectors' => [
3035 '{{WRAPPER}} .king-addons-grid-item-time .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
3036 '{{WRAPPER}} .king-addons-grid-item-time .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
3037 ],
3038 'separator' => 'before',
3039 ]
3040 );
3041
3042 $this->add_control(
3043 'time_icon_spacing',
3044 [
3045 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
3046 'type' => Controls_Manager::SLIDER,
3047 'size_units' => ['px'],
3048 'range' => [
3049 'px' => [
3050 'min' => 0,
3051 'max' => 25,
3052 ],
3053 ],
3054 'default' => [
3055 'unit' => 'px',
3056 'size' => 5,
3057 ],
3058 'selectors' => [
3059 '{{WRAPPER}} .king-addons-grid-item-time .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
3060 '{{WRAPPER}} .king-addons-grid-item-time .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
3061 ],
3062 ]
3063 );
3064
3065 $this->add_responsive_control(
3066 'time_padding',
3067 [
3068 'label' => esc_html__('Padding', 'king-addons'),
3069 'type' => Controls_Manager::DIMENSIONS,
3070 'size_units' => ['px', '%'],
3071 'default' => [
3072 'top' => 0,
3073 'right' => 0,
3074 'bottom' => 0,
3075 'left' => 0,
3076 ],
3077 'selectors' => [
3078 '{{WRAPPER}} .king-addons-grid-item-time .inner-block > span' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3079 ],
3080 'render_type' => 'template',
3081 'separator' => 'before',
3082 ]
3083 );
3084
3085 $this->add_responsive_control(
3086 'time_margin',
3087 [
3088 'label' => esc_html__('Margin', 'king-addons'),
3089 'type' => Controls_Manager::DIMENSIONS,
3090 'size_units' => ['px', '%'],
3091 'default' => [
3092 'top' => 0,
3093 'right' => 0,
3094 'bottom' => 0,
3095 'left' => 0,
3096 ],
3097 'selectors' => [
3098 '{{WRAPPER}} .king-addons-grid-item-time .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3099 ],
3100 'render_type' => 'template',
3101 ]
3102 );
3103
3104 $this->end_controls_section();
3105
3106
3107 $this->start_controls_section(
3108 'section_style_author',
3109 [
3110 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Author', 'king-addons'),
3111 'tab' => Controls_Manager::TAB_STYLE,
3112 'show_label' => false,
3113 ]
3114 );
3115
3116 $this->start_controls_tabs('tabs_grid_author_style');
3117
3118 $this->start_controls_tab(
3119 'tab_grid_author_normal',
3120 [
3121 'label' => esc_html__('Normal', 'king-addons'),
3122 ]
3123 );
3124
3125 $this->add_control(
3126 'author_color',
3127 [
3128 'label' => esc_html__('Color', 'king-addons'),
3129 'type' => Controls_Manager::COLOR,
3130 'default' => '#ffffff',
3131 'selectors' => [
3132 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'color: {{VALUE}}',
3133 ],
3134 ]
3135 );
3136
3137 $this->add_control(
3138 'author_bg_color',
3139 [
3140 'label' => esc_html__('Background Color', 'king-addons'),
3141 'type' => Controls_Manager::COLOR,
3142 'selectors' => [
3143 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'background-color: {{VALUE}}',
3144 ]
3145 ]
3146 );
3147
3148 $this->add_control(
3149 'author_border_color',
3150 [
3151 'label' => esc_html__('Border Color', 'king-addons'),
3152 'type' => Controls_Manager::COLOR,
3153 'default' => '#E8E8E8',
3154 'selectors' => [
3155 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'border-color: {{VALUE}}',
3156 ],
3157 ]
3158 );
3159
3160 $this->add_control(
3161 'author_extra_text_color',
3162 [
3163 'label' => esc_html__('Extra Text Color', 'king-addons'),
3164 'type' => Controls_Manager::COLOR,
3165 'default' => '#ffffff',
3166 'selectors' => [
3167 '{{WRAPPER}} .king-addons-grid-item-author .inner-block span[class*="king-addons-grid-extra-text"]' => 'color: {{VALUE}}',
3168 ],
3169 'separator' => 'after',
3170 ]
3171 );
3172
3173 $this->end_controls_tab();
3174
3175 $this->start_controls_tab(
3176 'tab_grid_author_hover',
3177 [
3178 'label' => esc_html__('Hover', 'king-addons'),
3179 ]
3180 );
3181
3182 $this->add_control(
3183 'author_color_hr',
3184 [
3185 'label' => esc_html__('Color', 'king-addons'),
3186 'type' => Controls_Manager::COLOR,
3187 'default' => '#5B03FF',
3188 'selectors' => [
3189 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a:hover' => 'color: {{VALUE}}',
3190 ],
3191 ]
3192 );
3193
3194 $this->add_control(
3195 'author_bg_color_hr',
3196 [
3197 'label' => esc_html__('Background Color', 'king-addons'),
3198 'type' => Controls_Manager::COLOR,
3199 'selectors' => [
3200 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a:hover' => 'background-color: {{VALUE}}',
3201 ]
3202 ]
3203 );
3204
3205 $this->add_control(
3206 'author_border_color_hr',
3207 [
3208 'label' => esc_html__('Border Color', 'king-addons'),
3209 'type' => Controls_Manager::COLOR,
3210 'default' => '#E8E8E8',
3211 'selectors' => [
3212 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a:hover' => 'border-color: {{VALUE}}',
3213 ],
3214 'separator' => 'after',
3215 ]
3216 );
3217
3218 $this->end_controls_tab();
3219
3220 $this->end_controls_tabs();
3221
3222 $this->add_control(
3223 'author_transition_duration',
3224 [
3225 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
3226 'type' => Controls_Manager::NUMBER,
3227 'default' => 0.1,
3228 'min' => 0,
3229 'max' => 5,
3230 'step' => 0.1,
3231 'selectors' => [
3232 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'transition-duration: {{VALUE}}s',
3233 ],
3234 'separator' => 'after',
3235 ]
3236 );
3237
3238 $this->add_group_control(
3239 Group_Control_Typography::get_type(),
3240 [
3241 'name' => 'author_typography',
3242 'selector' => '{{WRAPPER}} .king-addons-grid-item-author'
3243 ]
3244 );
3245
3246 $this->add_control(
3247 'author_border_type',
3248 [
3249 'label' => esc_html__('Border Type', 'king-addons'),
3250 'type' => Controls_Manager::SELECT,
3251 'options' => [
3252 'none' => esc_html__('None', 'king-addons'),
3253 'solid' => esc_html__('Solid', 'king-addons'),
3254 'double' => esc_html__('Double', 'king-addons'),
3255 'dotted' => esc_html__('Dotted', 'king-addons'),
3256 'dashed' => esc_html__('Dashed', 'king-addons'),
3257 'groove' => esc_html__('Groove', 'king-addons'),
3258 ],
3259 'default' => 'none',
3260 'selectors' => [
3261 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'border-style: {{VALUE}};',
3262 ],
3263 'render_type' => 'template',
3264 'separator' => 'before',
3265 ]
3266 );
3267
3268 $this->add_control(
3269 'author_border_width',
3270 [
3271 'label' => esc_html__('Border Width', 'king-addons'),
3272 'type' => Controls_Manager::DIMENSIONS,
3273 'size_units' => ['px'],
3274 'default' => [
3275 'top' => 1,
3276 'right' => 1,
3277 'bottom' => 1,
3278 'left' => 1,
3279 ],
3280 'selectors' => [
3281 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3282 ],
3283 'render_type' => 'template',
3284 'condition' => [
3285 'author_border_type!' => 'none',
3286 ],
3287 ]
3288 );
3289
3290 $this->add_control(
3291 'author_border_radius',
3292 [
3293 'label' => esc_html__('Border Radius', 'king-addons'),
3294 'type' => Controls_Manager::DIMENSIONS,
3295 'size_units' => ['px'],
3296 'default' => [
3297 'top' => 0,
3298 'right' => 0,
3299 'bottom' => 0,
3300 'left' => 0,
3301 ],
3302 'selectors' => [
3303 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3304 ]
3305 ]
3306 );
3307
3308 $this->add_control(
3309 'author_text_spacing',
3310 [
3311 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
3312 'type' => Controls_Manager::SLIDER,
3313 'size_units' => ['px'],
3314 'range' => [
3315 'px' => [
3316 'min' => 0,
3317 'max' => 25,
3318 ],
3319 ],
3320 'default' => [
3321 'unit' => 'px',
3322 'size' => 5,
3323 ],
3324 'selectors' => [
3325 '{{WRAPPER}} .king-addons-grid-item-author .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
3326 '{{WRAPPER}} .king-addons-grid-item-author .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
3327 ],
3328 'separator' => 'before',
3329 ]
3330 );
3331
3332 $this->add_control(
3333 'author_icon_spacing',
3334 [
3335 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
3336 'type' => Controls_Manager::SLIDER,
3337 'size_units' => ['px'],
3338 'range' => [
3339 'px' => [
3340 'min' => 0,
3341 'max' => 25,
3342 ],
3343 ],
3344 'default' => [
3345 'unit' => 'px',
3346 'size' => 5,
3347 ],
3348 'selectors' => [
3349 '{{WRAPPER}} .king-addons-grid-item-author .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
3350 '{{WRAPPER}} .king-addons-grid-item-author .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
3351 ],
3352 ]
3353 );
3354
3355 $this->add_control(
3356 'author_avatar_spacing',
3357 [
3358 'label' => esc_html__('Avatar Spacing', 'king-addons'),
3359 'type' => Controls_Manager::SLIDER,
3360 'size_units' => ['px'],
3361 'range' => [
3362 'px' => [
3363 'min' => 0,
3364 'max' => 25,
3365 ],
3366 ],
3367 'default' => [
3368 'unit' => 'px',
3369 'size' => 10,
3370 ],
3371 'selectors' => [
3372 '{{WRAPPER}} .king-addons-grid-item-author img' => 'margin-right: {{SIZE}}{{UNIT}};',
3373 ],
3374 ]
3375 );
3376
3377 $this->add_responsive_control(
3378 'author_padding',
3379 [
3380 'label' => esc_html__('Padding', 'king-addons'),
3381 'type' => Controls_Manager::DIMENSIONS,
3382 'size_units' => ['px', '%'],
3383 'default' => [
3384 'top' => 0,
3385 'right' => 0,
3386 'bottom' => 0,
3387 'left' => 0,
3388 ],
3389 'selectors' => [
3390 '{{WRAPPER}} .king-addons-grid-item-author .inner-block a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3391 ],
3392 'render_type' => 'template',
3393 'separator' => 'before',
3394 ]
3395 );
3396
3397 $this->add_responsive_control(
3398 'author_margin',
3399 [
3400 'label' => esc_html__('Margin', 'king-addons'),
3401 'type' => Controls_Manager::DIMENSIONS,
3402 'size_units' => ['px', '%'],
3403 'default' => [
3404 'top' => 1,
3405 'right' => 10,
3406 'bottom' => 0,
3407 'left' => 22,
3408 ],
3409 'render_type' => 'template',
3410 'selectors' => [
3411 '{{WRAPPER}} .king-addons-grid-item-author .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3412 ],
3413 ]
3414 );
3415
3416 $this->end_controls_section();
3417
3418
3419 $this->start_controls_section(
3420 'section_style_comments',
3421 [
3422 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Comments', 'king-addons'),
3423 'tab' => Controls_Manager::TAB_STYLE,
3424 'show_label' => false,
3425 ]
3426 );
3427
3428 $this->start_controls_tabs('tabs_grid_comments_style');
3429
3430 $this->start_controls_tab(
3431 'tab_grid_comments_normal',
3432 [
3433 'label' => esc_html__('Normal', 'king-addons'),
3434 ]
3435 );
3436
3437 $this->add_control(
3438 'comments_color',
3439 [
3440 'label' => esc_html__('Color', 'king-addons'),
3441 'type' => Controls_Manager::COLOR,
3442 'default' => '#ffffff',
3443 'selectors' => [
3444 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a' => 'color: {{VALUE}}',
3445 ],
3446 ]
3447 );
3448
3449 $this->add_control(
3450 'comments_bg_color',
3451 [
3452 'label' => esc_html__('Background Color', 'king-addons'),
3453 'type' => Controls_Manager::COLOR,
3454 'selectors' => [
3455 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a' => 'background-color: {{VALUE}}',
3456 ]
3457 ]
3458 );
3459
3460 $this->add_control(
3461 'comments_border_color',
3462 [
3463 'label' => esc_html__('Border Color', 'king-addons'),
3464 'type' => Controls_Manager::COLOR,
3465 'default' => '#E8E8E8',
3466 'selectors' => [
3467 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a' => 'border-color: {{VALUE}}',
3468 ],
3469 ]
3470 );
3471
3472 $this->add_control(
3473 'comments_extra_text_color',
3474 [
3475 'label' => esc_html__('Extra Text Color', 'king-addons'),
3476 'type' => Controls_Manager::COLOR,
3477 'default' => '#ffffff',
3478 'selectors' => [
3479 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block span[class*="king-addons-grid-extra-text"]' => 'color: {{VALUE}}',
3480 ],
3481 'separator' => 'after',
3482 ]
3483 );
3484
3485 $this->end_controls_tab();
3486
3487 $this->start_controls_tab(
3488 'tab_grid_comments_hover',
3489 [
3490 'label' => esc_html__('Hover', 'king-addons'),
3491 ]
3492 );
3493
3494 $this->add_control(
3495 'comments_color_hr',
3496 [
3497 'label' => esc_html__('Color', 'king-addons'),
3498 'type' => Controls_Manager::COLOR,
3499 'default' => '#5B03FF',
3500 'selectors' => [
3501 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a:hover' => 'color: {{VALUE}}',
3502 ],
3503 ]
3504 );
3505
3506 $this->add_control(
3507 'comments_bg_color_hr',
3508 [
3509 'label' => esc_html__('Background Color', 'king-addons'),
3510 'type' => Controls_Manager::COLOR,
3511 'selectors' => [
3512 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a:hover' => 'background-color: {{VALUE}}',
3513 ]
3514 ]
3515 );
3516
3517 $this->add_control(
3518 'comments_border_color_hr',
3519 [
3520 'label' => esc_html__('Border Color', 'king-addons'),
3521 'type' => Controls_Manager::COLOR,
3522 'default' => '#E8E8E8',
3523 'selectors' => [
3524 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a:hover' => 'border-color: {{VALUE}}',
3525 ],
3526 'separator' => 'after',
3527 ]
3528 );
3529
3530 $this->end_controls_tab();
3531
3532 $this->end_controls_tabs();
3533
3534 $this->add_control(
3535 'comments_transition_duration',
3536 [
3537 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
3538 'type' => Controls_Manager::NUMBER,
3539 'default' => 0.1,
3540 'min' => 0,
3541 'max' => 5,
3542 'step' => 0.1,
3543 'selectors' => [
3544 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a' => 'transition-duration: {{VALUE}}s',
3545 ],
3546 'separator' => 'after',
3547 ]
3548 );
3549
3550 $this->add_group_control(
3551 Group_Control_Typography::get_type(),
3552 [
3553 'name' => 'comments_typography',
3554 'selector' => '{{WRAPPER}} .king-addons-grid-item-comments'
3555 ]
3556 );
3557
3558 $this->add_control(
3559 'comments_border_type',
3560 [
3561 'label' => esc_html__('Border Type', 'king-addons'),
3562 'type' => Controls_Manager::SELECT,
3563 'options' => [
3564 'none' => esc_html__('None', 'king-addons'),
3565 'solid' => esc_html__('Solid', 'king-addons'),
3566 'double' => esc_html__('Double', 'king-addons'),
3567 'dotted' => esc_html__('Dotted', 'king-addons'),
3568 'dashed' => esc_html__('Dashed', 'king-addons'),
3569 'groove' => esc_html__('Groove', 'king-addons'),
3570 ],
3571 'default' => 'none',
3572 'selectors' => [
3573 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a' => 'border-style: {{VALUE}};',
3574 ],
3575 'render_type' => 'template',
3576 'separator' => 'before',
3577 ]
3578 );
3579
3580 $this->add_control(
3581 'comments_border_width',
3582 [
3583 'label' => esc_html__('Border Width', 'king-addons'),
3584 'type' => Controls_Manager::DIMENSIONS,
3585 'size_units' => ['px'],
3586 'default' => [
3587 'top' => 1,
3588 'right' => 1,
3589 'bottom' => 1,
3590 'left' => 1,
3591 ],
3592 'selectors' => [
3593 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3594 ],
3595 'render_type' => 'template',
3596 'condition' => [
3597 'comments_border_type!' => 'none',
3598 ],
3599 ]
3600 );
3601
3602 $this->add_control(
3603 'comments_text_spacing',
3604 [
3605 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
3606 'type' => Controls_Manager::SLIDER,
3607 'size_units' => ['px'],
3608 'range' => [
3609 'px' => [
3610 'min' => 0,
3611 'max' => 25,
3612 ],
3613 ],
3614 'default' => [
3615 'unit' => 'px',
3616 'size' => 5,
3617 ],
3618 'selectors' => [
3619 '{{WRAPPER}} .king-addons-grid-item-comments .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
3620 '{{WRAPPER}} .king-addons-grid-item-comments .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
3621 ],
3622 'separator' => 'before'
3623 ]
3624 );
3625
3626 $this->add_control(
3627 'comments_icon_spacing',
3628 [
3629 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
3630 'type' => Controls_Manager::SLIDER,
3631 'size_units' => ['px'],
3632 'range' => [
3633 'px' => [
3634 'min' => 0,
3635 'max' => 25,
3636 ],
3637 ],
3638 'default' => [
3639 'unit' => 'px',
3640 'size' => 5,
3641 ],
3642 'selectors' => [
3643 '{{WRAPPER}} .king-addons-grid-item-comments .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
3644 '{{WRAPPER}} .king-addons-grid-item-comments .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
3645 ],
3646 ]
3647 );
3648
3649 $this->add_responsive_control(
3650 'comments_padding',
3651 [
3652 'label' => esc_html__('Padding', 'king-addons'),
3653 'type' => Controls_Manager::DIMENSIONS,
3654 'size_units' => ['px', '%'],
3655 'default' => [
3656 'top' => 0,
3657 'right' => 0,
3658 'bottom' => 0,
3659 'left' => 0,
3660 ],
3661 'selectors' => [
3662 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3663 ],
3664 'render_type' => 'template',
3665 'separator' => 'before',
3666 ]
3667 );
3668
3669 $this->add_responsive_control(
3670 'comments_margin',
3671 [
3672 'label' => esc_html__('Margin', 'king-addons'),
3673 'type' => Controls_Manager::DIMENSIONS,
3674 'size_units' => ['px', '%'],
3675 'default' => [
3676 'top' => 0,
3677 'right' => 0,
3678 'bottom' => 0,
3679 'left' => 0,
3680 ],
3681 'selectors' => [
3682 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3683 ],
3684 'render_type' => 'template',
3685 ]
3686 );
3687
3688 $this->add_control(
3689 'comments_radius',
3690 [
3691 'label' => esc_html__('Border Radius', 'king-addons'),
3692 'type' => Controls_Manager::DIMENSIONS,
3693 'size_units' => ['px', '%'],
3694 'default' => [
3695 'top' => 2,
3696 'right' => 2,
3697 'bottom' => 2,
3698 'left' => 2,
3699 ],
3700 'selectors' => [
3701 '{{WRAPPER}} .king-addons-grid-item-comments .inner-block a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3702 ],
3703 'separator' => 'before',
3704 ]
3705 );
3706
3707 $this->end_controls_section();
3708
3709
3710 $this->start_controls_section(
3711 'section_style_read_more',
3712 [
3713 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Read More', 'king-addons'),
3714 'tab' => Controls_Manager::TAB_STYLE,
3715 'show_label' => false,
3716 ]
3717 );
3718
3719 $this->start_controls_tabs('tabs_grid_read_more_style');
3720
3721 $this->start_controls_tab(
3722 'tab_grid_read_more_normal',
3723 [
3724 'label' => esc_html__('Normal', 'king-addons'),
3725 ]
3726 );
3727
3728 $this->add_group_control(
3729 Group_Control_Background::get_type(),
3730 [
3731 'name' => 'read_more_bg_color',
3732 'label' => esc_html__('Background', 'king-addons'),
3733 'types' => ['classic', 'gradient'],
3734 'fields_options' => [
3735 'color' => [
3736 'default' => '#434900',
3737 ],
3738 ],
3739 'selector' => '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a'
3740 ]
3741 );
3742
3743 $this->add_control(
3744 'read_more_color',
3745 [
3746 'label' => esc_html__('Color', 'king-addons'),
3747 'type' => Controls_Manager::COLOR,
3748 'default' => '#ffffff',
3749 'selectors' => [
3750 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a' => 'color: {{VALUE}}',
3751 ],
3752 ]
3753 );
3754
3755 $this->add_control(
3756 'read_more_border_color',
3757 [
3758 'label' => esc_html__('Border Color', 'king-addons'),
3759 'type' => Controls_Manager::COLOR,
3760 'default' => '#E8E8E8',
3761 'selectors' => [
3762 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a' => 'border-color: {{VALUE}}',
3763 ],
3764 ]
3765 );
3766
3767 $this->add_group_control(
3768 Group_Control_Box_Shadow::get_type(),
3769 [
3770 'name' => 'read_more_box_shadow',
3771 'selector' => '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a',
3772 ]
3773 );
3774
3775 $this->end_controls_tab();
3776
3777 $this->start_controls_tab(
3778 'tab_grid_read_more_hover',
3779 [
3780 'label' => esc_html__('Hover', 'king-addons'),
3781 ]
3782 );
3783
3784 $this->add_group_control(
3785 Group_Control_Background::get_type(),
3786 [
3787 'name' => 'read_more_bg_color_hr',
3788 'label' => esc_html__('Background', 'king-addons'),
3789 'types' => ['classic', 'gradient'],
3790 'fields_options' => [
3791 'color' => [
3792 'default' => '#434900',
3793 ],
3794 ],
3795 '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'
3796 ]
3797 );
3798
3799 $this->add_control(
3800 'read_more_color_hr',
3801 [
3802 'label' => esc_html__('Color', 'king-addons'),
3803 'type' => Controls_Manager::COLOR,
3804 'default' => '#5B03FF',
3805 'selectors' => [
3806 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a:hover' => 'color: {{VALUE}}',
3807 ],
3808 ]
3809 );
3810
3811 $this->add_control(
3812 'read_more_border_color_hr',
3813 [
3814 'label' => esc_html__('Border Color', 'king-addons'),
3815 'type' => Controls_Manager::COLOR,
3816 'default' => '#E8E8E8',
3817 'selectors' => [
3818 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a:hover' => 'border-color: {{VALUE}}',
3819 ]
3820 ]
3821 );
3822
3823 $this->add_group_control(
3824 Group_Control_Box_Shadow::get_type(),
3825 [
3826 'name' => 'read_more_box_shadow_hr',
3827 'selector' => '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block :hover a',
3828 ]
3829 );
3830
3831 $this->end_controls_tab();
3832
3833 $this->end_controls_tabs();
3834
3835 $this->add_control(
3836 'read_more_divider',
3837 [
3838 'type' => Controls_Manager::DIVIDER,
3839 'style' => 'thick',
3840 ]
3841 );
3842
3843 $this->add_control_read_more_animation();
3844
3845 $this->add_control(
3846 'read_more_transition_duration',
3847 [
3848 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
3849 'type' => Controls_Manager::NUMBER,
3850 'default' => 0.1,
3851 'min' => 0,
3852 'max' => 5,
3853 'step' => 0.1,
3854 'selectors' => [
3855 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a' => 'transition-duration: {{VALUE}}s',
3856 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a:before' => 'transition-duration: {{VALUE}}s',
3857 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a:after' => 'transition-duration: {{VALUE}}s',
3858 ],
3859 ]
3860 );
3861
3862 $this->add_control_read_more_animation_height();
3863
3864 $this->add_control(
3865 'read_more_typo_divider',
3866 [
3867 'type' => Controls_Manager::DIVIDER,
3868 'style' => 'thick',
3869 ]
3870 );
3871
3872 $this->add_group_control(
3873 Group_Control_Typography::get_type(),
3874 [
3875 'name' => 'read_more_typography',
3876 'selector' => '{{WRAPPER}} .king-addons-grid-item-read-more a'
3877 ]
3878 );
3879
3880 $this->add_control(
3881 'read_more_border_type',
3882 [
3883 'label' => esc_html__('Border Type', 'king-addons'),
3884 'type' => Controls_Manager::SELECT,
3885 'options' => [
3886 'none' => esc_html__('None', 'king-addons'),
3887 'solid' => esc_html__('Solid', 'king-addons'),
3888 'double' => esc_html__('Double', 'king-addons'),
3889 'dotted' => esc_html__('Dotted', 'king-addons'),
3890 'dashed' => esc_html__('Dashed', 'king-addons'),
3891 'groove' => esc_html__('Groove', 'king-addons'),
3892 ],
3893 'default' => 'none',
3894 'selectors' => [
3895 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a' => 'border-style: {{VALUE}};',
3896 ],
3897 'render_type' => 'template',
3898 'separator' => 'before',
3899 ]
3900 );
3901
3902 $this->add_control(
3903 'read_more_border_width',
3904 [
3905 'label' => esc_html__('Border Width', 'king-addons'),
3906 'type' => Controls_Manager::DIMENSIONS,
3907 'size_units' => ['px'],
3908 'default' => [
3909 'top' => 1,
3910 'right' => 1,
3911 'bottom' => 1,
3912 'left' => 1,
3913 ],
3914 'selectors' => [
3915 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3916 ],
3917 'render_type' => 'template',
3918 'condition' => [
3919 'read_more_border_type!' => 'none',
3920 ],
3921 ]
3922 );
3923
3924 $this->add_control(
3925 'read_more_icon_spacing',
3926 [
3927 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
3928 'type' => Controls_Manager::SLIDER,
3929 'size_units' => ['px'],
3930 'range' => [
3931 'px' => [
3932 'min' => 0,
3933 'max' => 25,
3934 ],
3935 ],
3936 'default' => [
3937 'unit' => 'px',
3938 'size' => 5,
3939 ],
3940 'selectors' => [
3941 '{{WRAPPER}} .king-addons-grid-item-read-more .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
3942 '{{WRAPPER}} .king-addons-grid-item-read-more .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
3943 ],
3944 'separator' => 'before'
3945 ]
3946 );
3947
3948 $this->add_responsive_control(
3949 'read_more_padding',
3950 [
3951 'label' => esc_html__('Padding', 'king-addons'),
3952 'type' => Controls_Manager::DIMENSIONS,
3953 'size_units' => ['px', '%'],
3954 'default' => [
3955 'top' => 0,
3956 'right' => 0,
3957 'bottom' => 0,
3958 'left' => 0,
3959 ],
3960 'selectors' => [
3961 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3962 ],
3963 'render_type' => 'template',
3964 'separator' => 'before',
3965 ]
3966 );
3967
3968 $this->add_responsive_control(
3969 'read_more_margin',
3970 [
3971 'label' => esc_html__('Margin', 'king-addons'),
3972 'type' => Controls_Manager::DIMENSIONS,
3973 'size_units' => ['px', '%'],
3974 'default' => [
3975 'top' => 0,
3976 'right' => 0,
3977 'bottom' => 0,
3978 'left' => 0,
3979 ],
3980 'selectors' => [
3981 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
3982 ],
3983 'render_type' => 'template',
3984 ]
3985 );
3986
3987 $this->add_control(
3988 'read_more_radius',
3989 [
3990 'label' => esc_html__('Border Radius', 'king-addons'),
3991 'type' => Controls_Manager::DIMENSIONS,
3992 'size_units' => ['px', '%'],
3993 'default' => [
3994 'top' => 2,
3995 'right' => 2,
3996 'bottom' => 2,
3997 'left' => 2,
3998 ],
3999 'selectors' => [
4000 '{{WRAPPER}} .king-addons-grid-item-read-more .inner-block a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4001 ],
4002 'separator' => 'before',
4003 ]
4004 );
4005
4006 $this->end_controls_section();
4007
4008
4009 $this->add_section_style_likes();
4010
4011
4012 $this->add_section_style_sharing();
4013
4014
4015 $this->start_controls_section(
4016 'section_style_separator1',
4017 [
4018 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Separator Style 1', 'king-addons'),
4019 'tab' => Controls_Manager::TAB_STYLE,
4020 'show_label' => false,
4021 ]
4022 );
4023
4024 $this->add_control(
4025 'separator1_color',
4026 [
4027 'label' => esc_html__('Color', 'king-addons'),
4028 'type' => Controls_Manager::COLOR,
4029 'default' => '#ffffff',
4030 'selectors' => [
4031 '{{WRAPPER}} .king-addons-grid-sep-style-1 .inner-block > span' => 'border-bottom-color: {{VALUE}}',
4032 ],
4033 ]
4034 );
4035
4036 $this->add_control(
4037 'separator1_width',
4038 [
4039 'label' => esc_html__('Width', 'king-addons'),
4040 'type' => Controls_Manager::SLIDER,
4041 'size_units' => ['px', '%'],
4042 'range' => [
4043 'px' => [
4044 'min' => 0,
4045 'max' => 300,
4046 ],
4047 '%' => [
4048 'min' => 0,
4049 'max' => 100,
4050 ],
4051 ],
4052 'default' => [
4053 'unit' => 'px',
4054 'size' => 10,
4055 ],
4056 'selectors' => [
4057 '{{WRAPPER}} .king-addons-grid-sep-style-1:not(.king-addons-grid-item-display-inline) .inner-block > span' => 'width: {{SIZE}}{{UNIT}};',
4058 '{{WRAPPER}} .king-addons-grid-sep-style-1.king-addons-grid-item-display-inline' => 'width: {{SIZE}}{{UNIT}};',
4059 ],
4060 'render_type' => 'template',
4061 'separator' => 'before',
4062 ]
4063 );
4064
4065 $this->add_control(
4066 'separator1_height',
4067 [
4068 'label' => esc_html__('Height', 'king-addons'),
4069 'type' => Controls_Manager::SLIDER,
4070 'size_units' => ['px'],
4071 'range' => [
4072 'px' => [
4073 'min' => 1,
4074 'max' => 100,
4075 ],
4076 ],
4077 'default' => [
4078 'unit' => 'px',
4079 'size' => 1,
4080 ],
4081 'render_type' => 'template',
4082 'selectors' => [
4083 '{{WRAPPER}} .king-addons-grid-sep-style-1 .inner-block > span' => 'border-bottom-width: {{SIZE}}{{UNIT}};',
4084 ],
4085 ]
4086 );
4087
4088 $this->add_control(
4089 'separator1_border_type',
4090 [
4091 'label' => esc_html__('Type', 'king-addons'),
4092 'type' => Controls_Manager::SELECT,
4093 'options' => [
4094 'solid' => esc_html__('Solid', 'king-addons'),
4095 'double' => esc_html__('Double', 'king-addons'),
4096 'dotted' => esc_html__('Dotted', 'king-addons'),
4097 'dashed' => esc_html__('Dashed', 'king-addons'),
4098 'groove' => esc_html__('Groove', 'king-addons'),
4099 ],
4100 'default' => 'solid',
4101 'selectors' => [
4102 '{{WRAPPER}} .king-addons-grid-sep-style-1 .inner-block > span' => 'border-bottom-style: {{VALUE}};',
4103 ],
4104 'separator' => 'before',
4105 ]
4106 );
4107
4108 $this->add_responsive_control(
4109 'separator1_margin',
4110 [
4111 'label' => esc_html__('Margin', 'king-addons'),
4112 'type' => Controls_Manager::DIMENSIONS,
4113 'size_units' => ['px', '%'],
4114 'default' => [
4115 'top' => 13,
4116 'right' => 0,
4117 'bottom' => 0,
4118 'left' => 0,
4119 ],
4120 'render_type' => 'template',
4121 'selectors' => [
4122 '{{WRAPPER}} .king-addons-grid-sep-style-1 .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4123 ],
4124 ]
4125 );
4126
4127 $this->add_control(
4128 'separator1_radius',
4129 [
4130 'label' => esc_html__('Border Radius', 'king-addons'),
4131 'type' => Controls_Manager::DIMENSIONS,
4132 'size_units' => ['px', '%'],
4133 'default' => [
4134 'top' => 0,
4135 'right' => 0,
4136 'bottom' => 0,
4137 'left' => 0,
4138 ],
4139 'selectors' => [
4140 '{{WRAPPER}} .king-addons-grid-sep-style-1 .inner-block > span' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4141 ],
4142 'separator' => 'before',
4143 ]
4144 );
4145
4146 $this->end_controls_section();
4147
4148
4149 $this->start_controls_section(
4150 'section_style_separator2',
4151 [
4152 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Separator Style 2', 'king-addons'),
4153 'tab' => Controls_Manager::TAB_STYLE,
4154 'show_label' => false,
4155 ]
4156 );
4157
4158 $this->add_control(
4159 'separator2_color',
4160 [
4161 'label' => esc_html__('Color', 'king-addons'),
4162 'type' => Controls_Manager::COLOR,
4163 'default' => '#ffffff',
4164 'selectors' => [
4165 '{{WRAPPER}} .king-addons-grid-sep-style-2 .inner-block > span' => 'border-bottom-color: {{VALUE}}',
4166 ],
4167 ]
4168 );
4169
4170 $this->add_control(
4171 'separator2_width',
4172 [
4173 'label' => esc_html__('Width', 'king-addons'),
4174 'type' => Controls_Manager::SLIDER,
4175 'size_units' => ['px', '%'],
4176 'range' => [
4177 'px' => [
4178 'min' => 0,
4179 'max' => 300,
4180 ],
4181 '%' => [
4182 'min' => 0,
4183 'max' => 100,
4184 ],
4185 ],
4186 'default' => [
4187 'unit' => '%',
4188 'size' => 20,
4189 ],
4190 'selectors' => [
4191 '{{WRAPPER}} .king-addons-grid-sep-style-2:not(.king-addons-grid-item-display-inline) .inner-block > span' => 'width: {{SIZE}}{{UNIT}};',
4192 '{{WRAPPER}} .king-addons-grid-sep-style-2.king-addons-grid-item-display-inline' => 'width: {{SIZE}}{{UNIT}};',
4193 ],
4194 'render_type' => 'template',
4195 'separator' => 'before',
4196 ]
4197 );
4198
4199 $this->add_control(
4200 'separator2_height',
4201 [
4202 'label' => esc_html__('Height', 'king-addons'),
4203 'type' => Controls_Manager::SLIDER,
4204 'size_units' => ['px'],
4205 'range' => [
4206 'px' => [
4207 'min' => 0,
4208 'max' => 100,
4209 ],
4210 ],
4211 'default' => [
4212 'unit' => 'px',
4213 'size' => 2,
4214 ],
4215 'selectors' => [
4216 '{{WRAPPER}} .king-addons-grid-sep-style-2 .inner-block > span' => 'border-bottom-width: {{SIZE}}{{UNIT}};',
4217 ],
4218 'render_type' => 'template',
4219 ]
4220 );
4221
4222 $this->add_control(
4223 'separator2_border_type',
4224 [
4225 'label' => esc_html__('Type', 'king-addons'),
4226 'type' => Controls_Manager::SELECT,
4227 'options' => [
4228 'solid' => esc_html__('Solid', 'king-addons'),
4229 'double' => esc_html__('Double', 'king-addons'),
4230 'dotted' => esc_html__('Dotted', 'king-addons'),
4231 'dashed' => esc_html__('Dashed', 'king-addons'),
4232 'groove' => esc_html__('Groove', 'king-addons'),
4233 ],
4234 'default' => 'solid',
4235 'selectors' => [
4236 '{{WRAPPER}} .king-addons-grid-sep-style-2 .inner-block > span' => 'border-bottom-style: {{VALUE}};',
4237 ],
4238 'separator' => 'before',
4239 ]
4240 );
4241
4242 $this->add_responsive_control(
4243 'separator2_margin',
4244 [
4245 'label' => esc_html__('Margin', 'king-addons'),
4246 'type' => Controls_Manager::DIMENSIONS,
4247 'size_units' => ['px', '%'],
4248 'default' => [
4249 'top' => 13,
4250 'right' => 0,
4251 'bottom' => 0,
4252 'left' => 0,
4253 ],
4254 'selectors' => [
4255 '{{WRAPPER}} .king-addons-grid-sep-style-2 .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4256 ],
4257 'render_type' => 'template',
4258 ]
4259 );
4260
4261 $this->add_control(
4262 'separator2_radius',
4263 [
4264 'label' => esc_html__('Border Radius', 'king-addons'),
4265 'type' => Controls_Manager::DIMENSIONS,
4266 'size_units' => ['px', '%'],
4267 'default' => [
4268 'top' => 0,
4269 'right' => 0,
4270 'bottom' => 0,
4271 'left' => 0,
4272 ],
4273 'selectors' => [
4274 '{{WRAPPER}} .king-addons-grid-sep-style-2 .inner-block > span' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4275 ],
4276 'separator' => 'before',
4277 ]
4278 );
4279
4280 $this->end_controls_section();
4281
4282
4283 $this->start_controls_section(
4284 'section_style_tax1',
4285 [
4286 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Taxonomy Style 1', 'king-addons'),
4287 'tab' => Controls_Manager::TAB_STYLE,
4288 'show_label' => false,
4289 ]
4290 );
4291
4292 $this->start_controls_tabs('tabs_grid_tax1_style');
4293
4294 $this->start_controls_tab(
4295 'tab_grid_tax1_normal',
4296 [
4297 'label' => esc_html__('Normal', 'king-addons'),
4298 ]
4299 );
4300
4301 $this->add_control(
4302 'tax1_color',
4303 [
4304 'label' => esc_html__('Color', 'king-addons'),
4305 'type' => Controls_Manager::COLOR,
4306 'default' => '#ffffff',
4307 'selectors' => [
4308 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'color: {{VALUE}}',
4309 ],
4310 ]
4311 );
4312
4313 $this->add_control(
4314 'tax1_bg_color',
4315 [
4316 'label' => esc_html__('Background Color', 'king-addons'),
4317 'type' => Controls_Manager::COLOR,
4318 'selectors' => [
4319 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'background-color: {{VALUE}}',
4320 ]
4321 ]
4322 );
4323
4324 $this->add_control(
4325 'tax1_border_color',
4326 [
4327 'label' => esc_html__('Border Color', 'king-addons'),
4328 'type' => Controls_Manager::COLOR,
4329 'default' => '#E8E8E8',
4330 'selectors' => [
4331 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'border-color: {{VALUE}}',
4332 ],
4333 ]
4334 );
4335
4336 $this->add_control(
4337 'tax1_extra_text_color',
4338 [
4339 'label' => esc_html__('Extra Text Color', 'king-addons'),
4340 'type' => Controls_Manager::COLOR,
4341 'selectors' => [
4342 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block span[class*="king-addons-grid-extra-text"]' => 'color: {{VALUE}}',
4343 ],
4344 ]
4345 );
4346
4347 $this->add_control(
4348 'tax1_extra_icon_color',
4349 [
4350 'label' => esc_html__('Extra Icon Color', 'king-addons'),
4351 'type' => Controls_Manager::COLOR,
4352 'selectors' => [
4353 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block [class*="king-addons-grid-extra-icon"] i' => 'color: {{VALUE}}',
4354 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block [class*="king-addons-grid-extra-icon"] svg' => 'fill: {{VALUE}}'
4355 ],
4356 'separator' => 'after',
4357 ]
4358 );
4359
4360 $this->add_control_tax1_custom_colors($tax_meta_keys[1]);
4361
4362 $this->end_controls_tab();
4363
4364 $this->start_controls_tab(
4365 'tab_grid_tax1_hover',
4366 [
4367 'label' => esc_html__('Hover', 'king-addons'),
4368 ]
4369 );
4370
4371 $this->add_control(
4372 'tax1_color_hr',
4373 [
4374 'label' => esc_html__('Color', 'king-addons'),
4375 'type' => Controls_Manager::COLOR,
4376 'default' => '#5B03FF',
4377 'selectors' => [
4378 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a:hover' => 'color: {{VALUE}}',
4379 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-pointer-item:before' => 'background-color: {{VALUE}}',
4380 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-pointer-item:after' => 'background-color: {{VALUE}}',
4381 ],
4382 ]
4383 );
4384
4385 $this->add_control(
4386 'tax1_bg_color_hr',
4387 [
4388 'label' => esc_html__('Background Color', 'king-addons'),
4389 'type' => Controls_Manager::COLOR,
4390 'selectors' => [
4391 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a:hover' => 'background-color: {{VALUE}}',
4392 ]
4393 ]
4394 );
4395
4396 $this->add_control(
4397 'tax1_border_color_hr',
4398 [
4399 'label' => esc_html__('Border Color', 'king-addons'),
4400 'type' => Controls_Manager::COLOR,
4401 'default' => '#E8E8E8',
4402 'selectors' => [
4403 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a:hover' => 'border-color: {{VALUE}}',
4404 ],
4405 ]
4406 );
4407
4408 $this->add_control_tax1_pointer_color_hr();
4409
4410 $this->end_controls_tab();
4411
4412 $this->end_controls_tabs();
4413
4414 $this->add_control_tax1_pointer();
4415
4416 $this->add_control_tax1_pointer_height();
4417
4418 $this->add_control_tax1_pointer_animation();
4419
4420 $this->add_control(
4421 'tax1_transition_duration',
4422 [
4423 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
4424 'type' => Controls_Manager::NUMBER,
4425 'default' => 0.1,
4426 'min' => 0,
4427 'max' => 5,
4428 'step' => 0.1,
4429 'selectors' => [
4430 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'transition-duration: {{VALUE}}s',
4431 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-pointer-item:before' => 'transition-duration: {{VALUE}}s',
4432 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-pointer-item:after' => 'transition-duration: {{VALUE}}s',
4433 ],
4434 'separator' => 'after',
4435 ]
4436 );
4437
4438 $this->add_group_control(
4439 Group_Control_Typography::get_type(),
4440 [
4441 'name' => 'tax1_typography',
4442 'selector' => '{{WRAPPER}} .king-addons-grid-tax-style-1'
4443 ]
4444 );
4445
4446 $this->add_control(
4447 'tax1_border_type',
4448 [
4449 'label' => esc_html__('Border Type', 'king-addons'),
4450 'type' => Controls_Manager::SELECT,
4451 'options' => [
4452 'none' => esc_html__('None', 'king-addons'),
4453 'solid' => esc_html__('Solid', 'king-addons'),
4454 'double' => esc_html__('Double', 'king-addons'),
4455 'dotted' => esc_html__('Dotted', 'king-addons'),
4456 'dashed' => esc_html__('Dashed', 'king-addons'),
4457 'groove' => esc_html__('Groove', 'king-addons'),
4458 ],
4459 'default' => 'none',
4460 'selectors' => [
4461 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'border-style: {{VALUE}};',
4462 ],
4463 'render_type' => 'template',
4464 'separator' => 'before',
4465 ]
4466 );
4467
4468 $this->add_control(
4469 'tax1_border_width',
4470 [
4471 'label' => esc_html__('Border Width', 'king-addons'),
4472 'type' => Controls_Manager::DIMENSIONS,
4473 'size_units' => ['px'],
4474 'default' => [
4475 'top' => 1,
4476 'right' => 1,
4477 'bottom' => 1,
4478 'left' => 1,
4479 ],
4480 'selectors' => [
4481 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4482 ],
4483 'render_type' => 'template',
4484 'condition' => [
4485 'tax1_border_type!' => 'none',
4486 ],
4487 ]
4488 );
4489
4490 $this->add_control(
4491 'tax1_text_spacing',
4492 [
4493 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
4494 'type' => Controls_Manager::SLIDER,
4495 'size_units' => ['px'],
4496 'range' => [
4497 'px' => [
4498 'min' => 0,
4499 'max' => 25,
4500 ],
4501 ],
4502 'default' => [
4503 'unit' => 'px',
4504 'size' => 5,
4505 ],
4506 'selectors' => [
4507 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
4508 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
4509 ],
4510 'render_type' => 'template',
4511 'separator' => 'before',
4512 ]
4513 );
4514
4515 $this->add_control(
4516 'tax1_icon_spacing',
4517 [
4518 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
4519 'type' => Controls_Manager::SLIDER,
4520 'size_units' => ['px'],
4521 'range' => [
4522 'px' => [
4523 'min' => 0,
4524 'max' => 25,
4525 ],
4526 ],
4527 'default' => [
4528 'unit' => 'px',
4529 'size' => 5,
4530 ],
4531 'selectors' => [
4532 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
4533 '{{WRAPPER}} .king-addons-grid-tax-style-1 .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
4534 ],
4535 ]
4536 );
4537
4538 $this->add_control(
4539 'tax1_gutter',
4540 [
4541 'label' => esc_html__('Gutter', 'king-addons'),
4542 'type' => Controls_Manager::SLIDER,
4543 'size_units' => ['px'],
4544 'range' => [
4545 'px' => [
4546 'min' => 0,
4547 'max' => 20,
4548 ],
4549 ],
4550 'default' => [
4551 'unit' => 'px',
4552 'size' => 3,
4553 ],
4554 'selectors' => [
4555 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'margin-right: {{SIZE}}{{UNIT}};',
4556 ],
4557 'render_type' => 'template',
4558 'separator' => 'before',
4559 ]
4560 );
4561
4562 $this->add_responsive_control(
4563 'tax1_padding',
4564 [
4565 'label' => esc_html__('Padding', 'king-addons'),
4566 'type' => Controls_Manager::DIMENSIONS,
4567 'size_units' => ['px', '%'],
4568 'default' => [
4569 'top' => 0,
4570 'right' => 0,
4571 'bottom' => 0,
4572 'left' => 0,
4573 ],
4574 'selectors' => [
4575 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4576 ],
4577 'render_type' => 'template',
4578 ]
4579 );
4580
4581 $this->add_responsive_control(
4582 'tax1_margin',
4583 [
4584 'label' => esc_html__('Margin', 'king-addons'),
4585 'type' => Controls_Manager::DIMENSIONS,
4586 'size_units' => ['px', '%'],
4587 'default' => [
4588 'top' => 0,
4589 'right' => 0,
4590 'bottom' => 0,
4591 'left' => 22,
4592 ],
4593 'selectors' => [
4594 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4595 ],
4596 'render_type' => 'template',
4597 ]
4598 );
4599
4600 $this->add_control(
4601 'tax1_radius',
4602 [
4603 'label' => esc_html__('Border Radius', 'king-addons'),
4604 'type' => Controls_Manager::DIMENSIONS,
4605 'size_units' => ['px', '%'],
4606 'default' => [
4607 'top' => 2,
4608 'right' => 2,
4609 'bottom' => 2,
4610 'left' => 2,
4611 ],
4612 'selectors' => [
4613 '{{WRAPPER}} .king-addons-grid-tax-style-1 .inner-block a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4614 ],
4615 'separator' => 'before',
4616 ]
4617 );
4618
4619 $this->end_controls_section();
4620
4621
4622 $this->start_controls_section(
4623 'section_style_tax2',
4624 [
4625 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Taxonomy Style 2', 'king-addons'),
4626 'tab' => Controls_Manager::TAB_STYLE,
4627 'show_label' => false,
4628 ]
4629 );
4630
4631 $this->start_controls_tabs('tabs_grid_tax2_style');
4632
4633 $this->start_controls_tab(
4634 'tab_grid_tax2_normal',
4635 [
4636 'label' => esc_html__('Normal', 'king-addons'),
4637 ]
4638 );
4639
4640 $this->add_control(
4641 'tax2_color',
4642 [
4643 'label' => esc_html__('Color', 'king-addons'),
4644 'type' => Controls_Manager::COLOR,
4645 'default' => '#ffffff',
4646 'selectors' => [
4647 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'color: {{VALUE}}',
4648 ],
4649 ]
4650 );
4651
4652 $this->add_control(
4653 'tax2_bg_color',
4654 [
4655 'label' => esc_html__('Background Color', 'king-addons'),
4656 'type' => Controls_Manager::COLOR,
4657 'default' => '#5B03FF',
4658 'selectors' => [
4659 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'background-color: {{VALUE}}',
4660 ]
4661 ]
4662 );
4663
4664 $this->add_control(
4665 'tax2_border_color',
4666 [
4667 'label' => esc_html__('Border Color', 'king-addons'),
4668 'type' => Controls_Manager::COLOR,
4669 'default' => '#E8E8E8',
4670 'selectors' => [
4671 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'border-color: {{VALUE}}',
4672 ],
4673 'separator' => 'after',
4674 ]
4675 );
4676
4677 $this->end_controls_tab();
4678
4679 $this->start_controls_tab(
4680 'tab_grid_tax2_hover',
4681 [
4682 'label' => esc_html__('Hover', 'king-addons'),
4683 ]
4684 );
4685
4686 $this->add_control(
4687 'tax2_color_hr',
4688 [
4689 'label' => esc_html__('Color', 'king-addons'),
4690 'type' => Controls_Manager::COLOR,
4691 'default' => '#ffffff',
4692 'selectors' => [
4693 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a:hover' => 'color: {{VALUE}}',
4694 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-pointer-item:before' => 'background-color: {{VALUE}}',
4695 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-pointer-item:after' => 'background-color: {{VALUE}}',
4696 ],
4697 ]
4698 );
4699
4700 $this->add_control(
4701 'tax2_bg_color_hr',
4702 [
4703 'label' => esc_html__('Background Color', 'king-addons'),
4704 'type' => Controls_Manager::COLOR,
4705 'default' => '#4D02D8',
4706 'selectors' => [
4707 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a:hover' => 'background-color: {{VALUE}}',
4708 ]
4709 ]
4710 );
4711
4712 $this->add_control(
4713 'tax2_border_color_hr',
4714 [
4715 'label' => esc_html__('Border Color', 'king-addons'),
4716 'type' => Controls_Manager::COLOR,
4717 'default' => '#E8E8E8',
4718 'selectors' => [
4719 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a:hover' => 'border-color: {{VALUE}}',
4720 ],
4721 ]
4722 );
4723
4724 $this->add_control_tax2_pointer_color_hr();
4725
4726 $this->end_controls_tab();
4727
4728 $this->end_controls_tabs();
4729
4730 $this->add_control_tax2_pointer();
4731
4732 $this->add_control_tax2_pointer_height();
4733
4734 $this->add_control_tax2_pointer_animation();
4735
4736 $this->add_control(
4737 'tax2_transition_duration',
4738 [
4739 'label' => esc_html__('Transition Duration (seconds)', 'king-addons'),
4740 'type' => Controls_Manager::NUMBER,
4741 'default' => 0.1,
4742 'min' => 0,
4743 'max' => 5,
4744 'step' => 0.1,
4745 'selectors' => [
4746 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'transition-duration: {{VALUE}}s',
4747 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-pointer-item:before' => 'transition-duration: {{VALUE}}s',
4748 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-pointer-item:after' => 'transition-duration: {{VALUE}}s',
4749 ],
4750 'separator' => 'after',
4751 ]
4752 );
4753
4754 $this->add_group_control(
4755 Group_Control_Typography::get_type(),
4756 [
4757 'name' => 'tax2_typography',
4758 'selector' => '{{WRAPPER}} .king-addons-grid-tax-style-2'
4759 ]
4760 );
4761
4762 $this->add_control(
4763 'tax2_border_type',
4764 [
4765 'label' => esc_html__('Border Type', 'king-addons'),
4766 'type' => Controls_Manager::SELECT,
4767 'options' => [
4768 'none' => esc_html__('None', 'king-addons'),
4769 'solid' => esc_html__('Solid', 'king-addons'),
4770 'double' => esc_html__('Double', 'king-addons'),
4771 'dotted' => esc_html__('Dotted', 'king-addons'),
4772 'dashed' => esc_html__('Dashed', 'king-addons'),
4773 'groove' => esc_html__('Groove', 'king-addons'),
4774 ],
4775 'default' => 'none',
4776 'selectors' => [
4777 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'border-style: {{VALUE}};',
4778 ],
4779 'render_type' => 'template',
4780 'separator' => 'before',
4781 ]
4782 );
4783
4784 $this->add_control(
4785 'tax2_border_width',
4786 [
4787 'label' => esc_html__('Border Width', 'king-addons'),
4788 'type' => Controls_Manager::DIMENSIONS,
4789 'size_units' => ['px'],
4790 'default' => [
4791 'top' => 1,
4792 'right' => 1,
4793 'bottom' => 1,
4794 'left' => 1,
4795 ],
4796 'selectors' => [
4797 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4798 ],
4799 'render_type' => 'template',
4800 'condition' => [
4801 'tax2_border_type!' => 'none',
4802 ],
4803 ]
4804 );
4805
4806 $this->add_control(
4807 'tax2_text_spacing',
4808 [
4809 'label' => esc_html__('Extra Text Spacing', 'king-addons'),
4810 'type' => Controls_Manager::SLIDER,
4811 'size_units' => ['px'],
4812 'range' => [
4813 'px' => [
4814 'min' => 0,
4815 'max' => 25,
4816 ],
4817 ],
4818 'default' => [
4819 'unit' => 'px',
4820 'size' => 5,
4821 ],
4822 'selectors' => [
4823 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-grid-extra-text-left' => 'padding-right: {{SIZE}}{{UNIT}};',
4824 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-grid-extra-text-right' => 'padding-left: {{SIZE}}{{UNIT}};',
4825 ],
4826 'separator' => 'before',
4827 ]
4828 );
4829
4830 $this->add_control(
4831 'tax2_icon_spacing',
4832 [
4833 'label' => esc_html__('Extra Icon Spacing', 'king-addons'),
4834 'type' => Controls_Manager::SLIDER,
4835 'size_units' => ['px'],
4836 'range' => [
4837 'px' => [
4838 'min' => 0,
4839 'max' => 25,
4840 ],
4841 ],
4842 'default' => [
4843 'unit' => 'px',
4844 'size' => 5,
4845 ],
4846 'selectors' => [
4847 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-grid-extra-icon-left' => 'padding-right: {{SIZE}}{{UNIT}};',
4848 '{{WRAPPER}} .king-addons-grid-tax-style-2 .king-addons-grid-extra-icon-right' => 'padding-left: {{SIZE}}{{UNIT}};',
4849 ],
4850 ]
4851 );
4852
4853 $this->add_control(
4854 'tax2_gutter',
4855 [
4856 'label' => esc_html__('Gutter', 'king-addons'),
4857 'type' => Controls_Manager::SLIDER,
4858 'size_units' => ['px'],
4859 'range' => [
4860 'px' => [
4861 'min' => 0,
4862 'max' => 20,
4863 ],
4864 ],
4865 'default' => [
4866 'unit' => 'px',
4867 'size' => 3,
4868 ],
4869 'selectors' => [
4870 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'margin-right: {{SIZE}}{{UNIT}};',
4871 ],
4872 'render_type' => 'template',
4873 'separator' => 'before',
4874 ]
4875 );
4876
4877 $this->add_responsive_control(
4878 'tax2_padding',
4879 [
4880 'label' => esc_html__('Padding', 'king-addons'),
4881 'type' => Controls_Manager::DIMENSIONS,
4882 'size_units' => ['px', '%'],
4883 'default' => [
4884 'top' => 2,
4885 'right' => 5,
4886 'bottom' => 2,
4887 'left' => 5,
4888 ],
4889 'selectors' => [
4890 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4891 ],
4892 'render_type' => 'template',
4893 ]
4894 );
4895
4896 $this->add_responsive_control(
4897 'tax2_margin',
4898 [
4899 'label' => esc_html__('Margin', 'king-addons'),
4900 'type' => Controls_Manager::DIMENSIONS,
4901 'size_units' => ['px', '%'],
4902 'default' => [
4903 'top' => 0,
4904 'right' => 0,
4905 'bottom' => 0,
4906 'left' => 20,
4907 ],
4908 'selectors' => [
4909 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4910 ],
4911 'render_type' => 'template',
4912 ]
4913 );
4914
4915 $this->add_control(
4916 'tax2_radius',
4917 [
4918 'label' => esc_html__('Border Radius', 'king-addons'),
4919 'type' => Controls_Manager::DIMENSIONS,
4920 'size_units' => ['px', '%'],
4921 'default' => [
4922 'top' => 2,
4923 'right' => 2,
4924 'bottom' => 2,
4925 'left' => 2,
4926 ],
4927 'selectors' => [
4928 '{{WRAPPER}} .king-addons-grid-tax-style-2 .inner-block a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
4929 ],
4930 'separator' => 'before',
4931 ]
4932 );
4933
4934 $this->end_controls_section();
4935
4936
4937 $this->add_section_style_custom_field1();
4938
4939
4940 $this->add_section_style_custom_field2();
4941
4942
4943 $this->add_section_style_grid_slider_nav();
4944
4945
4946 $this->start_controls_section(
4947 'section_style_pwd_protected',
4948 [
4949 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Password Protected', 'king-addons'),
4950 'tab' => Controls_Manager::TAB_STYLE,
4951 'show_label' => false,
4952 ]
4953 );
4954
4955 $this->add_control(
4956 'pwd_protected_color',
4957 [
4958 'label' => esc_html__('Color', 'king-addons'),
4959 'type' => Controls_Manager::COLOR,
4960 'default' => '#9c9c9c',
4961 'selectors' => [
4962 '{{WRAPPER}} .king-addons-grid-item-protected' => 'color: {{VALUE}}',
4963 ],
4964 ]
4965 );
4966
4967 $this->add_control(
4968 'pwd_protected_bg_color',
4969 [
4970 'label' => esc_html__('Background Color', 'king-addons'),
4971 'type' => Controls_Manager::COLOR,
4972 'default' => '#5B03FF',
4973 'selectors' => [
4974 '{{WRAPPER}} .king-addons-grid-item-protected' => 'background-color: {{VALUE}}',
4975 ]
4976 ]
4977 );
4978
4979 $this->add_control(
4980 'pwd_protected_input_color',
4981 [
4982 'label' => esc_html__('Input Background Color', 'king-addons'),
4983 'type' => Controls_Manager::COLOR,
4984 'default' => '#ffffff',
4985 'selectors' => [
4986 '{{WRAPPER}} .king-addons-grid-item-protected input' => 'background-color: {{VALUE}}',
4987 ]
4988 ]
4989 );
4990
4991 $this->add_group_control(
4992 Group_Control_Typography::get_type(),
4993 [
4994 'name' => 'pwd_protected_typography',
4995 'selector' => '{{WRAPPER}} .king-addons-grid-item-protected p'
4996 ]
4997 );
4998
4999 $this->end_controls_section();
5000
5001 }
5002
5003 public function get_related_taxonomies()
5004 {
5005 $relations = [];
5006 foreach (Core::getCustomTypes('post', false) as $slug => $title) {
5007 // `get_object_taxonomies` already returns an array; assign it directly
5008 $relations[$slug] = get_object_taxonomies($slug);
5009 }
5010 return json_encode($relations);
5011 }
5012
5013 public function get_max_num_pages()
5014 {
5015 $query = new WP_Query($this->get_main_query_args(0));
5016 wp_reset_postdata();
5017 return (int)ceil($query->max_num_pages);
5018 }
5019
5020 public function get_main_query_args($slide_offset)
5021 {
5022 $settings = Core::displaySettings($this);
5023 $author = !empty($settings['query_author']) ? implode(',', $settings['query_author']) : '';
5024 $paged = get_query_var('paged') ?: (get_query_var('page') ?: 1);
5025
5026 // Handle no-premium settings
5027 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
5028 $restricted_layouts = ['1-2', '1-3', '1-4', '1-1-2', '2-1-2', '1vh-3h'];
5029 if (in_array($settings['king_addons_grid_layout_select'], $restricted_layouts, true)) {
5030 $settings['king_addons_grid_layout_select'] = '1-1-3';
5031 }
5032 $settings['slider_enable'] = '';
5033 $settings['query_randomize'] = '';
5034 $settings['order_posts'] = 'date';
5035 }
5036
5037 // Determine posts per page based on layout
5038 switch ($settings['king_addons_grid_layout_select']) {
5039 case '1-2':
5040 case '1-1-1':
5041 $query_posts_per_page = 3;
5042 break;
5043 case '1-3':
5044 case '1-1-2':
5045 case '1vh-3h':
5046 $query_posts_per_page = 4;
5047 break;
5048 case '1-4':
5049 case '2-1-2':
5050 case '1-1-3':
5051 case '2-3':
5052 $query_posts_per_page = 5;
5053 break;
5054 case '2-h':
5055 $query_posts_per_page = 2 * (int)$settings['layout_rows_number'];
5056 break;
5057 case '3-h':
5058 $query_posts_per_page = 3 * (int)$settings['layout_rows_number'];
5059 break;
5060 case '4-h':
5061 $query_posts_per_page = 4 * (int)$settings['layout_rows_number'];
5062 break;
5063 default:
5064 $query_posts_per_page = 3; // Fallback if something else
5065 break;
5066 }
5067
5068 $settings['query_offset'] = !empty($settings['query_offset']) ? $settings['query_offset'] : 0;
5069 $offset = ($paged - 1) * $query_posts_per_page + $settings['query_offset'];
5070 $query_order_by = (!empty($settings['query_randomize'])) ? $settings['query_randomize'] : $settings['order_posts'];
5071
5072 // Override random on front page if not a blog archive
5073 if (is_front_page() && !Core::isBlogArchive()) {
5074 $query_order_by = $settings['order_posts'];
5075 }
5076
5077 // Adjust offset for slider
5078 if ('yes' === $settings['slider_enable']) {
5079 $offset += $query_posts_per_page * $slide_offset;
5080 }
5081
5082 // Default arguments
5083 $args = [
5084 'post_type' => $settings['query_source'],
5085 'tax_query' => $this->get_tax_query_args(),
5086 'post__not_in' => $settings['query_exclude_' . $settings['query_source']],
5087 'posts_per_page' => $query_posts_per_page,
5088 'orderby' => $query_order_by,
5089 'author' => $author,
5090 'paged' => $paged,
5091 'offset' => $offset,
5092 ];
5093
5094 // Exclude posts with no images
5095 if ('yes' === $settings['query_exclude_no_images']) {
5096 $args['meta_key'] = '_thumbnail_id';
5097 }
5098
5099 // Manual selection override
5100 if ('manual' === $settings['query_selection']) {
5101 $post_ids = !empty($settings['query_manual_' . $settings['query_source']])
5102 ? $settings['query_manual_' . $settings['query_source']]
5103 : [''];
5104
5105 $args = [
5106 'post_type' => $settings['query_source'],
5107 'post__in' => $post_ids,
5108 'orderby' => $query_order_by,
5109 'posts_per_page' => $query_posts_per_page,
5110 'offset' => $query_posts_per_page * $slide_offset,
5111 ];
5112 }
5113
5114 // Use current query
5115 if ('current' === $settings['query_source']) {
5116 global $wp_query;
5117 $args = $wp_query->query_vars;
5118 $args['posts_per_page'] = $query_posts_per_page;
5119 $args['orderby'] = $query_order_by;
5120 $args['offset'] = ($paged - 1) * $query_posts_per_page + (int)$settings['query_offset'];
5121 }
5122
5123 // Related posts
5124 if ('related' === $settings['query_source']) {
5125 $args = [
5126 'post_type' => get_post_type(get_the_ID()),
5127 'tax_query' => $this->get_tax_query_args(),
5128 'post__not_in' => [get_the_ID()],
5129 'ignore_sticky_posts' => 1,
5130 'posts_per_page' => $query_posts_per_page,
5131 'orderby' => $query_order_by,
5132 'offset' => $offset,
5133 ];
5134 }
5135
5136 // Add 'order' unless random
5137 if ('rand' !== $query_order_by) {
5138 $args['order'] = $settings['order_direction'];
5139 }
5140
5141 return $args;
5142 }
5143
5144 public function get_tax_query_args()
5145 {
5146 $settings = Core::displaySettings($this);
5147
5148 // If "related" source
5149 if ('related' === $settings['query_source']) {
5150 return [
5151 [
5152 'taxonomy' => $settings['query_tax_selection'],
5153 'field' => 'term_id',
5154 'terms' => wp_get_object_terms(
5155 get_the_ID(),
5156 $settings['query_tax_selection'],
5157 ['fields' => 'ids']
5158 ),
5159 ]
5160 ];
5161 }
5162
5163 // Else build from normal taxonomies
5164 $tax_query = [];
5165 foreach (get_object_taxonomies($settings['query_source']) as $tax) {
5166 $key = 'query_taxonomy_' . $tax;
5167 if (!empty($settings[$key])) {
5168 $tax_query[] = [
5169 'taxonomy' => $tax,
5170 'field' => 'id',
5171 'terms' => $settings[$key],
5172 ];
5173 }
5174 }
5175 return $tax_query;
5176 }
5177
5178 private function get_animation_class($data, $object)
5179 {
5180 $animation = Grid_Ajax_Security::sanitize_animation($data[$object . '_animation'] ?? 'none');
5181 if ('none' === $animation) {
5182 return '';
5183 }
5184
5185 $class = ' king-addons-' . sanitize_html_class($object) . '-' . $animation;
5186 $class .= ' king-addons-anim-size-' . Grid_Ajax_Security::sanitize_animation_size($data[$object . '_animation_size'] ?? 'large');
5187 $class .= ' king-addons-animation-timing-' . Grid_Ajax_Security::sanitize_animation_timing($data[$object . '_animation_timing'] ?? 'ease-default');
5188
5189 if ('yes' === Grid_Ajax_Security::sanitize_yes_no_switcher($data[$object . '_animation_tr'] ?? '')) {
5190 $class .= ' king-addons-anim-transparency';
5191 }
5192 return $class;
5193 }
5194
5195 public function render_password_protected_input()
5196 {
5197 if (!post_password_required()) {
5198 return;
5199 }
5200
5201 add_filter('the_password_form', function () {
5202 $output = '<form action="' . esc_url(home_url('wp-login.php?action=postpass')) . '" method="post">';
5203 $output .= '<i class="fas fa-lock"></i>';
5204 $output .= '<p>' . esc_html(get_the_title()) . '</p>';
5205 $output .= '<input type="password" name="post_password" id="post-' . esc_attr(get_the_ID()) . '" placeholder="' . esc_html__('Type and hit Enter...', 'king-addons') . '">';
5206 $output .= '</form>';
5207 return $output;
5208 });
5209
5210 echo '<div class="king-addons-grid-item-protected king-addons-cv-container">';
5211 echo '<div class="king-addons-cv-outer">';
5212 echo '<div class="king-addons-cv-inner">';
5213 echo get_the_password_form();
5214 echo '</div></div></div>';
5215 }
5216
5217 public function render_post_thumbnail($settings, $post_id = null)
5218 {
5219 $id = $post_id ? get_post_thumbnail_id($post_id) : get_post_thumbnail_id();
5220 $src = Group_Control_Image_Size::get_attachment_image_src($id, 'layout_image_crop', $settings);
5221
5222 if (has_post_thumbnail()) {
5223 echo '<div class="king-addons-grid-image-wrap" data-src="' . esc_url($src) . '" style="background-image: url(' . esc_url($src) . ')"></div>';
5224 }
5225 }
5226
5227 public function render_media_overlay($settings)
5228 {
5229 echo '<div class="king-addons-grid-media-hover-bg ' . esc_attr($this->get_animation_class($settings, 'overlay')) . '" data-url="' . esc_url(get_the_permalink()) . '">';
5230 if (king_addons_freemius()->can_use_premium_code__premium_only() && !empty($settings['overlay_image']['url'])) {
5231 echo '<img src="' . esc_url($settings['overlay_image']['url']) . '" alt="' . esc_attr($settings['overlay_image']['alt']) . '">';
5232 }
5233 echo '</div>';
5234 }
5235
5236 public function render_post_title($settings, $class)
5237 {
5238 $open_links_in_new_tab = ('yes' === ($settings['open_links_in_new_tab'] ?? '')) ? '_blank' : '_self';
5239
5240 // If premium unavailable, fallback pointer settings
5241 $title_pointer = king_addons_freemius()->can_use_premium_code__premium_only()
5242 ? Grid_Ajax_Security::sanitize_class_token($settings['title_pointer'] ?? 'none')
5243 : 'none';
5244 $title_pointer_animation = king_addons_freemius()->can_use_premium_code__premium_only()
5245 ? Grid_Ajax_Security::sanitize_class_token($settings['title_pointer_animation'] ?? 'fade')
5246 : 'fade';
5247
5248 $pointer_item_class = ('none' !== $title_pointer) ? 'class="king-addons-pointer-item"' : '';
5249 $class .= ' king-addons-pointer-' . $title_pointer;
5250 $class .= ' king-addons-pointer-line-fx king-addons-pointer-fx-' . $title_pointer_animation;
5251
5252 $element_title_tag = Grid_Ajax_Security::sanitize_html_tag($settings['element_title_tag'] ?? 'h2');
5253 $trim_type = $settings['element_trim_text_by'];
5254 $limit = $trim_type === 'word_count' ? $settings['element_word_count'] : $settings['element_letter_count'];
5255 $title_text = ($trim_type === 'word_count')
5256 ? wp_trim_words(get_the_title(), $limit)
5257 : mb_substr(html_entity_decode(get_the_title()), 0, $limit) . '...';
5258
5259 echo '<' . esc_attr($element_title_tag) . ' class="' . esc_attr($class) . '">';
5260 echo '<div class="inner-block">';
5261 echo '<a target="' . esc_attr($open_links_in_new_tab) . '" ' . $pointer_item_class . ' href="' . esc_url(get_the_permalink()) . '">';
5262 echo esc_html($title_text);
5263 echo '</a></div>';
5264 echo '</' . esc_attr($element_title_tag) . '>';
5265 }
5266
5267 public function render_post_content($settings, $class)
5268 {
5269 if ('' === get_the_content()) {
5270 return;
5271 }
5272 $class .= ('yes' === $settings['element_dropcap']) ? ' king-addons-enable-dropcap' : '';
5273
5274 echo '<div class="' . esc_attr($class) . '">';
5275 echo '<div class="inner-block">';
5276 echo wp_kses_post(apply_filters('the_content', get_the_content()));
5277 echo '</div></div>';
5278 }
5279
5280 public function render_post_excerpt($settings, $class)
5281 {
5282 if ('' === get_the_excerpt()) {
5283 return;
5284 }
5285 $class .= ('yes' === $settings['element_dropcap']) ? ' king-addons-enable-dropcap' : '';
5286
5287 echo '<div class="' . esc_attr($class) . '">';
5288 echo '<div class="inner-block">';
5289 if ('word_count' === $settings['element_trim_text_by']) {
5290 echo '<p>' . esc_html(wp_trim_words(get_the_excerpt(), $settings['element_word_count'])) . '</p>';
5291 } else {
5292 $trimmed = implode('', array_slice(str_split(get_the_excerpt()), 0, $settings['element_letter_count']));
5293 echo '<p>' . esc_html($trimmed) . '...</p>';
5294 }
5295 echo '</div></div>';
5296 }
5297
5298 public function render_post_date($settings, $class)
5299 {
5300 echo '<div class="' . esc_attr($class) . '"><div class="inner-block"><span>';
5301 $this->render_extra_text_and_icon($settings, 'before');
5302
5303 // Show modified time or published time
5304 echo ('yes' === $settings['show_last_update_date'])
5305 ? esc_html(get_the_modified_time(get_option('date_format')))
5306 : esc_html(apply_filters('the_date', get_the_date(), get_option('date_format'), '', ''));
5307
5308 $this->render_extra_text_and_icon($settings, 'after');
5309 echo '</span></div></div>';
5310 }
5311
5312 public function render_post_time($settings, $class)
5313 {
5314 echo '<div class="' . esc_attr($class) . '"><div class="inner-block"><span>';
5315 $this->render_extra_text_and_icon($settings, 'before');
5316
5317 echo esc_html(get_the_time());
5318
5319 $this->render_extra_text_and_icon($settings, 'after');
5320 echo '</span></div></div>';
5321 }
5322
5323 public function render_post_author($settings, $class)
5324 {
5325 $author_id = get_post_field('post_author');
5326
5327 echo '<div class="' . esc_attr($class) . '"><div class="inner-block">';
5328 $this->render_extra_text_and_icon($settings, 'before');
5329
5330 echo '<a href="' . esc_url(get_author_posts_url($author_id)) . '">';
5331 $this->render_extra_text_and_icon($settings, 'before', true);
5332
5333 if ('yes' === $settings['element_show_avatar']) {
5334 echo get_avatar($author_id, $settings['element_avatar_size']);
5335 }
5336 echo '<span>' . esc_html(get_the_author_meta('display_name', $author_id)) . '</span>';
5337 $this->render_extra_text_and_icon($settings, 'after', true);
5338 echo '</a>';
5339
5340 $this->render_extra_text_and_icon($settings, 'after');
5341 echo '</div></div>';
5342 }
5343
5344 public function render_post_comments($settings, $class)
5345 {
5346 if (!comments_open()) {
5347 return;
5348 }
5349 $count = get_comments_number();
5350 if ($count === 1) {
5351 $text = $count . ' ' . $settings['element_comments_text_2'];
5352 } elseif ($count > 1) {
5353 $text = $count . ' ' . $settings['element_comments_text_3'];
5354 } else {
5355 $text = $settings['element_comments_text_1'];
5356 }
5357
5358 echo '<div class="' . esc_attr($class) . '"><div class="inner-block">';
5359 $this->render_extra_text_and_icon($settings, 'before');
5360
5361 echo '<a href="' . esc_url(get_comments_link()) . '">';
5362 $this->render_extra_text_and_icon($settings, 'before', true);
5363 echo '<span>' . esc_html($text) . '</span>';
5364 $this->render_extra_text_and_icon($settings, 'after', true);
5365 echo '</a>';
5366
5367 $this->render_extra_text_and_icon($settings, 'after');
5368 echo '</div></div>';
5369 }
5370
5371 public function render_post_read_more($settings, $class)
5372 {
5373 $open_links_in_new_tab = ('yes' === $settings['open_links_in_new_tab']) ? '_blank' : '_self';
5374 $read_more_animation = king_addons_freemius()->can_use_premium_code__premium_only()
5375 ? $settings['read_more_animation']
5376 : 'king-addons-button-none';
5377
5378 echo '<div class="' . esc_attr($class) . '"><div class="inner-block">';
5379 echo '<a target="' . esc_attr($open_links_in_new_tab) . '" href="' . esc_url(get_the_permalink()) . '" class="king-addons-button-effect ' . esc_attr($read_more_animation) . '">';
5380 $this->render_extra_text_and_icon($settings, 'before', true);
5381 echo '<span>' . esc_html($settings['element_read_more_text']) . '</span>';
5382 $this->render_extra_text_and_icon($settings, 'after', true);
5383 echo '</a>';
5384 echo '</div></div>';
5385 }
5386
5387 public function render_post_likes($settings, $class, $post_id)
5388 {
5389 // Intentionally empty; placeholder for likes
5390 }
5391
5392 public function render_post_sharing_icons($settings, $class)
5393 {
5394 // Intentionally empty; placeholder for sharing icons
5395 }
5396
5397 public function render_post_custom_field($settings, $class, $post_id)
5398 {
5399 // Intentionally empty; placeholder for custom fields
5400 }
5401
5402 public function render_post_element_separator($settings, $class)
5403 {
5404 echo '<div class="' . esc_attr($class . ' ' . ($settings['element_separator_style'] ?? '')) . '">';
5405 echo '<div class="inner-block"><span></span></div>';
5406 echo '</div>';
5407 }
5408
5409 public function render_post_taxonomies($settings, $class, $post_id)
5410 {
5411 $terms = wp_get_post_terms($post_id, $settings['element_select']);
5412 $count = 0;
5413 $pointer = king_addons_freemius()->can_use_premium_code__premium_only();
5414
5415 // Pointer settings
5416 $tax1_pointer = $pointer ? Grid_Ajax_Security::sanitize_class_token(Core::displaySettings($this)['tax1_pointer'] ?? 'none') : 'none';
5417 $tax1_pointer_animation = $pointer ? Grid_Ajax_Security::sanitize_class_token(Core::displaySettings($this)['tax1_pointer_animation'] ?? 'fade') : 'fade';
5418 $tax2_pointer = $pointer ? Grid_Ajax_Security::sanitize_class_token(Core::displaySettings($this)['tax2_pointer'] ?? 'none') : 'none';
5419 $tax2_pointer_animation = $pointer ? Grid_Ajax_Security::sanitize_class_token(Core::displaySettings($this)['tax2_pointer_animation'] ?? 'fade') : 'fade';
5420
5421 if ($settings['element_tax_style'] === 'king-addons-grid-tax-style-1') {
5422 $class .= " king-addons-pointer-$tax1_pointer king-addons-pointer-fx-$tax1_pointer_animation";
5423 } else {
5424 $class .= " king-addons-pointer-$tax2_pointer king-addons-pointer-fx-$tax2_pointer_animation";
5425 }
5426 $class .= ' king-addons-pointer-line-fx';
5427
5428 $pointer_item_class = (
5429 (isset(Core::displaySettings($this)['tax1_pointer']) && Core::displaySettings($this)['tax1_pointer'] !== 'none') ||
5430 (isset(Core::displaySettings($this)['tax2_pointer']) && Core::displaySettings($this)['tax2_pointer'] !== 'none')
5431 ) ? 'king-addons-pointer-item' : '';
5432
5433 echo '<div class="' . esc_attr($class . ' ' . ($settings['element_tax_style'] ?? '')) . '">';
5434 echo '<div class="inner-block">';
5435
5436 $this->render_extra_text_and_icon($settings, 'before');
5437
5438 foreach ($terms as $term) {
5439 // Check if premium color styling
5440 $enable_custom_colors = $pointer ? Core::displaySettings($this)['tax1_custom_color_switcher'] : '';
5441 if ('yes' === $enable_custom_colors) {
5442 $cfc_text = Grid_Ajax_Security::sanitize_css_color(
5443 get_term_meta($term->term_id, sanitize_key(Core::displaySettings($this)['tax1_custom_color_field_text'] ?? ''), true)
5444 );
5445 $cfc_bg = Grid_Ajax_Security::sanitize_css_color(
5446 get_term_meta($term->term_id, sanitize_key(Core::displaySettings($this)['tax1_custom_color_field_bg'] ?? ''), true)
5447 );
5448
5449 if ($cfc_text || $cfc_bg) {
5450 $style_block = 'color:' . esc_html($cfc_text) . '; background-color:' . esc_html($cfc_bg) . '; border-color:' . esc_html($cfc_bg) . ';';
5451 $css_selector = '.elementor-element' . $this->get_unique_selector() . ' .king-addons-grid-tax-style-1 .inner-block a.king-addons-tax-id-' . absint($term->term_id);
5452 echo '<style>' . esc_html($css_selector) . '{' . $style_block . '}</style>';
5453 }
5454 }
5455
5456 echo '<a class="' . esc_attr($pointer_item_class . ' king-addons-tax-id-' . $term->term_id) . '" href="' . esc_url(get_term_link($term->term_id)) . '">';
5457 echo esc_html($term->name);
5458 if (++$count !== count($terms)) {
5459 echo '<span class="tax-sep">' . esc_html($settings['element_tax_sep']) . '</span>';
5460 }
5461 echo '</a>';
5462 }
5463
5464 $this->render_extra_text_and_icon($settings, 'after');
5465
5466 echo '</div></div>';
5467 }
5468
5469 /**
5470 * Helper function to render extra text/icon before or after
5471 *
5472 * @param array $settings
5473 * @param string $position 'before'|'after'
5474 * @param bool $iconOnly Render icon only if true
5475 * @noinspection PhpMissingParamTypeInspection
5476 */
5477 private function render_extra_text_and_icon($settings, $position, $iconOnly = false)
5478 {
5479 if ($iconOnly) {
5480 // Render icon
5481 if ($position === $settings['element_extra_icon_pos']) {
5482 ob_start();
5483 Icons_Manager::render_icon($settings['element_extra_icon'], ['aria-hidden' => 'true']);
5484 $extra_icon = ob_get_clean();
5485
5486 echo '<span class="king-addons-grid-extra-icon-' . esc_attr($position) . '">';
5487 echo $extra_icon;
5488 echo '</span>';
5489 }
5490 } else {
5491 // Render text
5492 if ($position === $settings['element_extra_text_pos']) {
5493 echo '<span class="king-addons-grid-extra-text-' . esc_attr($position) . '">';
5494 echo esc_html($settings['element_extra_text']);
5495 echo '</span>';
5496 }
5497 }
5498 }
5499
5500 public function get_elements($type, $settings, $class, $post_id)
5501 {
5502 // Fallback for any pro-only items
5503 if (in_array($type, ['pro-lk', 'pro-shr', 'pro-cf'], true)) {
5504 $type = 'title';
5505 }
5506
5507 switch ($type) {
5508 case 'title':
5509 $this->render_post_title($settings, $class);
5510 break;
5511 case 'content':
5512 $this->render_post_content($settings, $class);
5513 break;
5514 case 'excerpt':
5515 $this->render_post_excerpt($settings, $class);
5516 break;
5517 case 'date':
5518 $this->render_post_date($settings, $class);
5519 break;
5520 case 'time':
5521 $this->render_post_time($settings, $class);
5522 break;
5523 case 'author':
5524 $this->render_post_author($settings, $class);
5525 break;
5526 case 'comments':
5527 $this->render_post_comments($settings, $class);
5528 break;
5529 case 'read-more':
5530 $this->render_post_read_more($settings, $class);
5531 break;
5532 case 'likes':
5533 $this->render_post_likes($settings, $class, $post_id);
5534 break;
5535 case 'sharing':
5536 $this->render_post_sharing_icons($settings, $class);
5537 break;
5538 case 'custom-field':
5539 $this->render_post_custom_field($settings, $class, $post_id);
5540 break;
5541 case 'separator':
5542 $this->render_post_element_separator($settings, $class);
5543 break;
5544 default:
5545 $this->render_post_taxonomies($settings, $class, $post_id);
5546 }
5547 }
5548
5549 public function get_elements_by_location($location, $settings, $post_id)
5550 {
5551 $locations = [];
5552
5553 // Build the elements array by location
5554 foreach ($settings['grid_elements'] as $data) {
5555 // Force it to 'over' in original code
5556 $place = 'over';
5557 $align_vr = king_addons_freemius()->can_use_premium_code__premium_only()
5558 ? $data['element_align_vr']
5559 : 'bottom';
5560
5561 if (!isset($locations[$place])) {
5562 $locations[$place] = [];
5563 }
5564 /** @noinspection PhpConditionAlreadyCheckedInspection */
5565 if ('over' === $place) {
5566 if (!isset($locations[$place][$align_vr])) {
5567 $locations[$place][$align_vr] = [];
5568 }
5569 $locations[$place][$align_vr][] = $data;
5570 } else {
5571 $locations[$place][] = $data;
5572 }
5573 }
5574
5575 // Render elements in the correct location
5576 if (empty($locations[$location])) {
5577 return;
5578 }
5579
5580 if ('over' === $location) {
5581 foreach ($locations[$location] as $align => $elements) {
5582 if ('middle' === $align) {
5583 echo '<div class="king-addons-cv-container"><div class="king-addons-cv-outer"><div class="king-addons-cv-inner">';
5584 }
5585 echo '<div class="king-addons-grid-media-hover-' . esc_attr($align) . ' elementor-clearfix">';
5586 foreach ($elements as $data) {
5587 $class = 'king-addons-grid-item-' . sanitize_html_class($data['element_select'] ?? '') .
5588 ' elementor-repeater-item-' . sanitize_html_class($data['_id'] ?? '') .
5589 ' king-addons-grid-item-display-' . sanitize_html_class($data['element_display'] ?? '') .
5590 ' king-addons-grid-item-align-' . sanitize_html_class($data['element_align_hr'] ?? '') .
5591 $this->get_animation_class($data, 'element');
5592 $this->get_elements($data['element_select'], $data, $class, $post_id);
5593 }
5594 echo '</div>';
5595 if ('middle' === $align) {
5596 echo '</div></div></div>';
5597 }
5598 }
5599 } else {
5600 echo '<div class="king-addons-grid-item-' . esc_attr($location) . '-content elementor-clearfix">';
5601 foreach ($locations[$location] as $data) {
5602 $class = 'king-addons-grid-item-' . sanitize_html_class($data['element_select'] ?? '') .
5603 ' elementor-repeater-item-' . sanitize_html_class($data['_id'] ?? '') .
5604 ' king-addons-grid-item-display-' . sanitize_html_class($data['element_display'] ?? '') .
5605 ' king-addons-grid-item-align-' . sanitize_html_class($data['element_align_hr'] ?? '');
5606 $this->get_elements($data['element_select'], $data, $class, $post_id);
5607 }
5608 echo '</div>';
5609 }
5610 }
5611
5612 public function add_slider_settings($settings)
5613 {
5614 $slider_is_rtl = is_rtl();
5615 $slider_direction = $slider_is_rtl ? 'rtl' : 'ltr';
5616
5617 $slider_options = [
5618 'rtl' => $slider_is_rtl,
5619 'slidesToShow' => 1,
5620 'infinite' => ('yes' === $settings['slider_loop']),
5621 'speed' => absint($settings['slider_effect_duration'] * 1000),
5622 'arrows' => true,
5623 'autoplay' => ('yes' === $settings['slider_autoplay']),
5624 'autoplaySpeed' => absint($settings['slider_autoplay_duration'] * 1000),
5625 'pauseOnHover' => $settings['slider_pause_on_hover'],
5626 'prevArrow' => '#king-addons-grid-slider-prev-' . $this->get_id(),
5627 'nextArrow' => '#king-addons-grid-slider-next-' . $this->get_id(),
5628 ];
5629
5630 $this->add_render_attribute('slider-settings', [
5631 'dir' => esc_attr($slider_direction),
5632 'data-slick' => wp_json_encode($slider_options),
5633 ]);
5634 }
5635
5636 public function render_magazine_grid($settings, $slide_offset)
5637 {
5638 $posts = new WP_Query($this->get_main_query_args($slide_offset));
5639
5640 // Check premium fallback for layout
5641 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
5642 $restricted_layouts = ['1-2', '1-3', '1-4', '1-1-2', '2-1-2', '1vh-3h'];
5643 if (in_array($settings['king_addons_grid_layout_select'], $restricted_layouts, true)) {
5644 $settings['king_addons_grid_layout_select'] = '1-1-3';
5645 }
5646 }
5647
5648 echo '<section class="king-addons-magazine-grid king-addons-magazine-grid-add-' . esc_attr($settings['king_addons_grid_layout_select']) .
5649 ' king-addons-magazine-grid-add-rows-' . esc_attr($settings['layout_rows_number']) . '">';
5650
5651 if ($posts->have_posts()) :
5652 // Randomize if needed
5653 if ($settings['query_randomize'] === 'rand' && is_front_page() && !Core::isBlogArchive()) {
5654 shuffle($posts->posts);
5655 }
5656
5657 while ($posts->have_posts()) :
5658 $posts->the_post();
5659 $post_class = implode(' ', get_post_class('king-addons-magazine-grid-item elementor-clearfix', get_the_ID()));
5660
5661 echo '<article class="' . esc_attr($post_class) . '">';
5662 $this->render_password_protected_input();
5663
5664 echo '<div class="king-addons-grid-item-inner">';
5665 echo '<div class="king-addons-grid-media-wrap" data-overlay-link="' . esc_attr($settings['overlay_post_link']) . '">';
5666
5667 $this->render_post_thumbnail($settings, get_the_ID());
5668
5669 echo '<div class="king-addons-grid-media-hover king-addons-animation-wrap">';
5670 $this->render_media_overlay($settings);
5671 $this->get_elements_by_location('over', $settings, get_the_ID());
5672 echo '</div></div></div></article>';
5673
5674 endwhile;
5675 wp_reset_postdata();
5676 else:
5677 echo '<h2>' . esc_html($settings['query_not_found_text']) . '</h2>';
5678 endif;
5679
5680 echo '</section>';
5681 }
5682
5683 protected function render()
5684 {
5685 $settings = Core::displaySettings($this);
5686 $render_attribute = '';
5687
5688 // If no premium, reset slider options
5689 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
5690 $settings['slider_enable'] = '';
5691 $settings['slider_effect'] = '';
5692 }
5693
5694 // Add slider settings if enabled
5695 if ('yes' === $settings['slider_enable']) {
5696 $this->add_slider_settings($settings);
5697 $render_attribute = $this->get_render_attribute_string('slider-settings');
5698 }
5699
5700 echo '<div class="king-addons-magazine-grid-wrap" ' . $render_attribute .
5701 ' data-slide-effect="' . esc_attr($settings['slider_effect']) . '">';
5702
5703 if ('yes' === $settings['slider_enable']) {
5704 for ($i = 0; $i < $settings['slider_amount']; $i++) {
5705 echo '<div class="king-addons-magazine-slide">';
5706 $this->render_magazine_grid($settings, $i);
5707 echo '</div>';
5708 }
5709 } else {
5710 $this->render_magazine_grid($settings, 0);
5711 }
5712
5713 echo '</div>';
5714
5715 // Slider arrows
5716 if ('yes' === $settings['slider_enable']) {
5717 echo '<div class="king-addons-grid-slider-arrow-container">';
5718 echo '<div class="king-addons-grid-slider-prev-arrow king-addons-grid-slider-arrow" id="king-addons-grid-slider-prev-' . esc_html($this->get_id()) . '">';
5719 echo Core::getIcon($settings['slider_nav_icon'], '');
5720 echo '</div>';
5721 echo '<div class="king-addons-grid-slider-next-arrow king-addons-grid-slider-arrow" id="king-addons-grid-slider-next-' . esc_html($this->get_id()) . '">';
5722 echo Core::getIcon($settings['slider_nav_icon'], '');
5723 echo '</div>';
5724 echo '</div>';
5725 }
5726 }
5727 }