PluginProbe
King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder / 51.1.87
King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder v51.1.87
51.1.87 51.1.86 51.1.84 51.1.85 51.1.83 51.1.82 51.1.81 51.1.79 51.1.78 51.1.77 51.1.76 51.1.74 51.1.75 51.1.65 51.1.64 51.1.63 trunk 51.1.14 51.1.2 51.1.35 51.1.36 51.1.37 51.1.38 51.1.39 51.1.44 All 41 releases
← All changes | includes/widgets/Testimonial_Carousel/Testimonial_Carousel.php +2512 -0 51.1.2 → 51.1.87 View file →
@@ -1,0 +1,2512 @@
1 +<?php
2 +/** @noinspection SpellCheckingInspection, DuplicatedCode, PhpUnused */
3 +
4 +namespace King_Addons;
5 +
6 +use Elementor\Controls_Manager;
7 +use Elementor\Group_Control_Background;
8 +use Elementor\Group_Control_Border;
9 +use Elementor\Group_Control_Box_Shadow;
10 +use Elementor\Group_Control_Css_Filter;
11 +use Elementor\Group_Control_Image_Size;
12 +use Elementor\Group_Control_Typography;
13 +use Elementor\Icons_Manager;
14 +use Elementor\Repeater;
15 +use Elementor\Utils;
16 +use Elementor\Widget_Base;
17 +
18 +if (!defined('ABSPATH')) {
19 + exit; // Exit if accessed directly.
20 +}
21 +
22 +
23 +
24 +class Testimonial_Carousel extends Widget_Base
25 +{
26 +
27 +
28 + public function get_name(): string
29 + {
30 + return 'king-addons-testimonial-carousel';
31 + }
32 +
33 + public function get_title(): string
34 + {
35 + return esc_html__('Testimonial & Review Carousel', 'king-addons');
36 + }
37 +
38 + public function get_icon(): string
39 + {
40 + return 'king-addons-icon king-addons-testimonial-carousel';
41 + }
42 +
43 + public function get_script_depends(): array
44 + {
45 + return [KING_ADDONS_ASSETS_UNIQUE_KEY . '-swiper-swiper'];
46 + }
47 +
48 + public function get_style_depends(): array
49 + {
50 + return [KING_ADDONS_ASSETS_UNIQUE_KEY . '-swiper-swiper', KING_ADDONS_ASSETS_UNIQUE_KEY . '-testimonial-carousel-style'];
51 + }
52 +
53 + public function get_categories(): array
54 + {
55 + return ['king-addons'];
56 + }
57 +
58 + public function get_keywords(): array
59 + {
60 + return ['testimonial', 'slider', 'carousel', 'testimonial carousel', 'testimonials',
61 + 'review', 'reviews', 'rating', 'ratings', 'stars', 'rate', 'star',
62 + 'king addons', 'king', 'addons', 'kingaddons', 'king-addons'];
63 + }
64 +
65 + public function get_custom_help_url()
66 + {
67 + return 'mailto:[email protected]?subject=Bug Report - King Addons&body=Please describe the issue';
68 + }
69 +
70 + protected function register_controls(): void
71 + {
72 + $this->start_controls_section(
73 + 'king_addons_testimonial_carousel_layout_section',
74 + [
75 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Layout', 'king-addons'),
76 + 'tab' => Controls_Manager::TAB_CONTENT
77 + ]
78 + );
79 +
80 + // selector - testimonial layouts
81 + $this->add_control(
82 + 'king_addons_testimonial_carousel_layout',
83 + array(
84 + 'label' => '<b>' . esc_html__('Layout', 'king-addons') . '</b>',
85 + 'type' => Controls_Manager::SELECT,
86 + 'options' => array(
87 + 'layout-1' => esc_html__('Default - Image, Desc, Rating, Bio', 'king-addons'),
88 + 'layout-8' => esc_html__('Default Centered - Image, Desc, Rating, Bio', 'king-addons'),
89 + 'layout-2' => esc_html__('Classic - Desc, Bio, Rating, Image', 'king-addons'),
90 + 'layout-3' => esc_html__('Desc, Image, Bio, Rating', 'king-addons'),
91 + 'layout-4' => esc_html__('Image | Content', 'king-addons'),
92 + 'layout-5' => esc_html__('Content | Image', 'king-addons'),
93 + 'layout-6' => esc_html__('Desc | Bottom Bio', 'king-addons'),
94 + 'layout-7' => esc_html__('Top Bio | Desc', 'king-addons'),
95 + ),
96 + 'render_type' => 'template',
97 + 'default' => 'layout-8',
98 + )
99 + );
100 +
101 + $this->end_controls_section();
102 +
103 + $this->start_controls_section(
104 + 'king_addons_testimonial_carousel_content_section',
105 + [
106 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Content', 'king-addons'),
107 + 'tab' => Controls_Manager::TAB_CONTENT
108 + ]
109 + );
110 +
111 + $repeater = new Repeater();
112 +
113 + $repeater->add_control(
114 + 'king_addons_testimonial_carousel_image',
115 + [
116 + 'label' => esc_html__('Image', 'king-addons'),
117 + 'type' => Controls_Manager::MEDIA,
118 + 'dynamic' => array('active' => true),
119 + 'default' => array(
120 + 'url' => Utils::get_placeholder_image_src(),
121 + ),
122 + 'show_external' => true,
123 + ]
124 + );
125 +
126 + $repeater->add_control(
127 + 'king_addons_testimonial_carousel_title',
128 + [
129 + 'label' => '<b>' . esc_html__('Title', 'king-addons') . '</b>',
130 + 'type' => Controls_Manager::TEXT,
131 + 'label_block' => true,
132 + 'default' => esc_html__('Title', 'king-addons'),
133 + ]
134 + );
135 +
136 + $repeater->add_control(
137 + 'king_addons_testimonial_carousel_subtitle',
138 + [
139 + 'label' => '<b>' . esc_html__('Subtitle', 'king-addons') . '</b>',
140 + 'type' => Controls_Manager::TEXT,
141 + 'label_block' => true,
142 + 'default' => esc_html__('Subtitle', 'king-addons'),
143 + 'separator' => 'before'
144 + ]
145 + );
146 +
147 + $repeater->add_control(
148 + 'king_addons_testimonial_carousel_rating_value',
149 + [
150 + 'label' => '<b>' . esc_html__('Rating', 'king-addons') . '</b>',
151 + 'type' => Controls_Manager::NUMBER,
152 + 'min' => 0,
153 + 'max' => 10,
154 + 'default' => 5,
155 + 'step' => 0.25,
156 + 'dynamic' => [
157 + 'active' => true,
158 + ],
159 + ]
160 + );
161 +
162 + $repeater->add_control(
163 + 'king_addons_testimonial_carousel_description_title',
164 + [
165 + 'label' => '<b>' . esc_html__('Description', 'king-addons') . '</b>',
166 + 'type' => Controls_Manager::RAW_HTML,
167 + 'separator' => 'before',
168 + ]
169 + );
170 +
171 + $repeater->add_control(
172 + 'king_addons_testimonial_carousel_description',
173 + [
174 + 'label' => '<b>' . esc_html__('Description', 'king-addons') . '</b>',
175 + 'type' => Controls_Manager::WYSIWYG,
176 + 'show_label' => false,
177 + 'default' => esc_html__('Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', 'king-addons'),
178 + 'placeholder' => esc_html__('Type the description here', 'king-addons'),
179 + ]
180 + );
181 +
182 + $default_cards = [
183 + 'king_addons_testimonial_carousel_image' => Utils::get_placeholder_image_src(),
184 + 'king_addons_testimonial_carousel_title' => esc_html__('Title', 'king-addons'),
185 + 'king_addons_testimonial_carousel_subtitle' => esc_html__('Subtitle', 'king-addons'),
186 + 'king_addons_testimonial_carousel_rating_value' => 5,
187 + 'king_addons_testimonial_carousel_description' => esc_html__('Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', 'king-addons'),
188 + ];
189 +
190 + $this->add_control(
191 + 'king_addons_testimonial_carousel_content_items',
192 + [
193 + 'type' => Controls_Manager::REPEATER,
194 + 'fields' => $repeater->get_controls(),
195 + 'default' => array_fill(0, 5, $default_cards),
196 + 'title_field' => '{{king_addons_testimonial_carousel_title}}',
197 + ]
198 + );
199 +
200 + $this->end_controls_section();
201 +
202 + $this->start_controls_section(
203 + 'king_addons_testimonial_carousel_image_section',
204 + [
205 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Image', 'king-addons'),
206 + 'tab' => Controls_Manager::TAB_CONTENT
207 + ]
208 + );
209 +
210 + $this->add_control(
211 + 'king_addons_testimonial_carousel_image_switcher',
212 + array(
213 + 'label' => esc_html__('Show Image', 'king-addons'),
214 + 'type' => Controls_Manager::SWITCHER,
215 + 'default' => 'yes',
216 + 'return_value' => 'yes',
217 + )
218 + );
219 +
220 + $this->add_group_control(
221 + Group_Control_Image_Size::get_type(),
222 + [
223 + 'name' => 'king_addons_testimonial_carousel_image_size',
224 + 'default' => 'medium',
225 + 'condition' => array(
226 + 'king_addons_testimonial_carousel_image_switcher' => 'yes',
227 + ),
228 + ]
229 + );
230 +
231 + $this->end_controls_section();
232 +
233 + // RATING =================================================
234 + $this->start_controls_section(
235 + 'king_addons_testimonial_carousel_section_rating',
236 + [
237 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Rating', 'king-addons'),
238 + 'tab' => Controls_Manager::TAB_CONTENT,
239 + ]
240 + );
241 +
242 + $this->add_control(
243 + 'king_addons_testimonial_carousel_rating_switcher',
244 + array(
245 + 'label' => esc_html__('Show Rating', 'king-addons'),
246 + 'type' => Controls_Manager::SWITCHER,
247 + 'default' => 'yes',
248 + 'return_value' => 'yes',
249 + )
250 + );
251 +
252 + $this->add_control(
253 + 'king_addons_testimonial_carousel_rating_scale',
254 + [
255 + 'label' => esc_html__('Rating Scale', 'king-addons'),
256 + 'type' => Controls_Manager::SLIDER,
257 + 'range' => [
258 + 'px' => [
259 + 'min' => 1,
260 + 'max' => 10,
261 + ],
262 + ],
263 + 'default' => [
264 + 'size' => 5,
265 + ],
266 + 'condition' => array(
267 + 'king_addons_testimonial_carousel_rating_switcher' => 'yes',
268 + ),
269 + 'separator' => 'before',
270 + ]
271 + );
272 +
273 + $this->add_control(
274 + 'king_addons_testimonial_carousel_rating_icon',
275 + [
276 + 'label' => esc_html__('Icon', 'king-addons'),
277 + 'type' => Controls_Manager::ICONS,
278 + 'fa4compatibility' => 'icon',
279 + 'skin' => 'inline',
280 + 'label_block' => false,
281 + 'skin_settings' => [
282 + 'inline' => [
283 + 'icon' => [
284 + 'icon' => 'eicon-star',
285 + ],
286 + ],
287 + ],
288 + 'default' => [
289 + 'value' => 'eicon-star',
290 + 'library' => 'eicons',
291 + ],
292 + 'separator' => 'before',
293 + 'exclude_inline_options' => ['none'],
294 + 'condition' => array(
295 + 'king_addons_testimonial_carousel_rating_switcher' => 'yes',
296 + ),
297 + ]
298 + );
299 +
300 + $this->end_controls_section();
301 + // END: RATING ============================================
302 +
303 + /** SECTION: Carousel Settings */
304 + $this->start_controls_section(
305 + 'king_addons_testimonial_carousel_sw_content_section_carousel_settings',
306 + [
307 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Carousel Settings', 'king-addons'),
308 + 'tab' => Controls_Manager::TAB_CONTENT,
309 + ]
310 + );
311 +
312 + $this->add_control(
313 + 'king_addons_testimonial_carousel_sw_loop_switcher',
314 + [
315 + 'label' => esc_html__('Loop Cards', 'king-addons'),
316 + 'type' => Controls_Manager::SWITCHER,
317 + 'default' => 'yes'
318 + ]
319 + );
320 +
321 + $this->add_control(
322 + 'king_addons_testimonial_carousel_sw_rewind_switcher',
323 + [
324 + 'label' => esc_html__('Rewind Cards', 'king-addons'),
325 + 'description' => esc_html__('When enabled, clicking the next navigation button when on last slide will slide back to the first slide. Clicking the prev navigation button when on first slide will slide forward to the last slide. Should not be used together with loop mode.', 'king-addons'),
326 + 'type' => Controls_Manager::SWITCHER
327 + ]
328 + );
329 +
330 + $this->add_control(
331 + 'king_addons_testimonial_carousel_sw_autoplay_switcher',
332 + [
333 + 'label' => esc_html__('Autoplay Carousel Cards', 'king-addons'),
334 + 'type' => Controls_Manager::SWITCHER,
335 + 'separator' => 'before',
336 + ]
337 + );
338 +
339 + $this->add_control(
340 + 'king_addons_testimonial_carousel_sw_autoplay_delay',
341 + [
342 + 'label' => esc_html__('Delay between transitions (ms)', 'king-addons'),
343 + 'type' => Controls_Manager::NUMBER,
344 + 'min' => 0,
345 + 'step' => 10,
346 + 'default' => 3000,
347 + 'condition' => [
348 + 'king_addons_testimonial_carousel_sw_autoplay_switcher!' => '',
349 + 'king_addons_testimonial_carousel_sw_autoplay_like_ticker_switcher!' => 'yes',
350 + ]
351 + ]
352 + );
353 +
354 + $this->add_control(
355 + 'king_addons_testimonial_carousel_sw_autoplay_disableoninteraction_switcher',
356 + [
357 + 'label' => esc_html__('Disable on interaction', 'king-addons'),
358 + 'description' => esc_html__('Autoplay will be disabled after user interactions (swipes), it will not be restarted every time after interaction.', 'king-addons'),
359 + 'type' => Controls_Manager::SWITCHER,
360 + 'condition' => [
361 + 'king_addons_testimonial_carousel_sw_autoplay_switcher!' => '',
362 + ]
363 + ]
364 + );
365 +
366 + $this->add_control(
367 + 'king_addons_testimonial_carousel_sw_autoplay_pausedonmouseenter_switcher',
368 + [
369 + 'label' => esc_html__('Pause on mouse enter', 'king-addons'),
370 + 'description' => esc_html__('When enabled autoplay will be paused on pointer (mouse) enter over carousel container.', 'king-addons'),
371 + 'type' => Controls_Manager::SWITCHER,
372 + 'condition' => [
373 + 'king_addons_testimonial_carousel_sw_autoplay_switcher!' => '',
374 + ]
375 + ]
376 + );
377 +
378 + $this->add_control(
379 + 'king_addons_testimonial_carousel_sw_autoplay_reversedirection_switcher',
380 + [
381 + 'label' => esc_html__('Reverse Direction', 'king-addons'),
382 + 'description' => esc_html__('Enables autoplay in reverse direction.', 'king-addons'),
383 + 'type' => Controls_Manager::SWITCHER,
384 + 'condition' => [
385 + 'king_addons_testimonial_carousel_sw_autoplay_switcher!' => '',
386 + ]
387 + ]
388 + );
389 +
390 + $this->add_control(
391 + 'king_addons_testimonial_carousel_sw_autoplay_like_ticker_switcher',
392 + [
393 + 'label' => esc_html__('Autoplay Like Ticker (marquee effect)', 'king-addons'),
394 + 'description' => esc_html__('Autoscrolls cards as on ticker, also known as marquee effect.', 'king-addons'),
395 + 'type' => Controls_Manager::SWITCHER,
396 + 'condition' => [
397 + 'king_addons_testimonial_carousel_sw_autoplay_switcher!' => '',
398 + ],
399 + ]
400 + );
401 +
402 + $this->add_control(
403 + 'king_addons_testimonial_carousel_sw_autoplay_like_ticker_autoplay_speed',
404 + [
405 + 'label' => esc_html__('Autoplay Speed (ms)', 'king-addons'),
406 + 'type' => Controls_Manager::NUMBER,
407 + 'min' => 0,
408 + 'step' => 10,
409 + 'default' => 6000,
410 + 'condition' => [
411 + 'king_addons_testimonial_carousel_sw_autoplay_like_ticker_switcher' => 'yes',
412 + ]
413 + ]
414 + );
415 +
416 + $this->add_control(
417 + 'king_addons_testimonial_carousel_sw_scrolling_speed',
418 + [
419 + 'label' => esc_html__('Scrolling Speed (ms)', 'king-addons'),
420 + 'type' => Controls_Manager::NUMBER,
421 + 'min' => 0,
422 + 'step' => 10,
423 + 'default' => 600,
424 + 'separator' => 'before',
425 + 'condition' => [
426 + 'king_addons_testimonial_carousel_sw_autoplay_like_ticker_switcher!' => 'yes',
427 + ]
428 + ]
429 + );
430 +
431 + $this->add_responsive_control(
432 + 'king_addons_testimonial_carousel_sw_align_card_full_height',
433 + [
434 + 'label' => esc_html__('Make testimonial full height', 'king-addons'),
435 + 'type' => Controls_Manager::SELECT,
436 + 'default' => 'auto',
437 + 'options' => [
438 + '100%' => esc_html__('Yes', 'king-addons'),
439 + 'auto' => esc_html__('No', 'king-addons'),
440 + ],
441 + 'separator' => 'before',
442 + 'selectors' => [
443 + '{{WRAPPER}} .swiper-slide' => 'height: auto;',
444 + '{{WRAPPER}} .swiper-slide .king-addons-testimonial-carousel-layout' => 'height: {{VALUE}};',
445 + ],
446 + ]
447 + );
448 +
449 + $this->add_responsive_control(
450 + 'king_addons_testimonial_carousel_sw_align_card',
451 + [
452 + 'label' => esc_html__('Align Whole Card', 'king-addons'),
453 + 'type' => Controls_Manager::SELECT,
454 + 'options' => [
455 + 'unset' => esc_html__('Default', 'king-addons'),
456 + 'start' => esc_html__('Start', 'king-addons'),
457 + 'center' => esc_html__('Center', 'king-addons'),
458 + 'end' => esc_html__('End', 'king-addons'),
459 + ],
460 + 'default' => 'center',
461 + 'selectors' => [
462 + '{{WRAPPER}} .swiper-slide' => 'align-content: {{VALUE}};',
463 + ],
464 + 'condition' => [
465 + 'king_addons_testimonial_carousel_sw_align_card_full_height' => 'auto'
466 + ],
467 + ]
468 + );
469 +
470 + $this->add_responsive_control(
471 + 'king_addons_testimonial_carousel_sw_align_card_content',
472 + [
473 + 'label' => esc_html__('Align Card Content', 'king-addons'),
474 + 'type' => Controls_Manager::SELECT,
475 + 'options' => [
476 + 'unset' => esc_html__('Default', 'king-addons'),
477 + 'start' => esc_html__('Start', 'king-addons'),
478 + 'center' => esc_html__('Center', 'king-addons'),
479 + 'end' => esc_html__('End', 'king-addons'),
480 + ],
481 + 'default' => 'center',
482 + 'selectors' => [
483 + '{{WRAPPER}} .swiper-slide .king-addons-testimonial-carousel-layout' => 'justify-content: {{VALUE}};'
484 + ],
485 + 'condition' => [
486 + 'king_addons_testimonial_carousel_sw_align_card_full_height' => '100%'
487 + ],
488 + ]
489 + );
490 +
491 + $this->end_controls_section();
492 + /** END SECTION: Carousel Settings */
493 +
494 + /** SECTION: Responsive Settings */
495 + $this->start_controls_section(
496 + 'king_addons_testimonial_carousel_sw_content_section_responsive_settings',
497 + [
498 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Responsive Settings', 'king-addons'),
499 + 'tab' => Controls_Manager::TAB_CONTENT,
500 + ]
501 + );
502 +
503 + $this->add_control(
504 + 'king_addons_testimonial_carousel_sw_desktop_title',
505 + [
506 + 'label' => '<b>' . esc_html__('Desktop', 'king-addons') . '</b>',
507 + 'type' => Controls_Manager::RAW_HTML,
508 + ]
509 + );
510 +
511 + $this->add_control(
512 + 'king_addons_testimonial_carousel_sw_desktop_cards_per_view',
513 + [
514 + 'label' => esc_html__('Cards per view', 'king-addons'),
515 + 'description' => esc_html__('The number of slides per view can be a fractional number like 4.5, 5.25, 6.45, etc., to indicate that further slides exist.', 'king-addons'),
516 + 'type' => Controls_Manager::NUMBER,
517 + 'min' => 1,
518 + 'step' => 0.1,
519 + 'default' => 3.0,
520 + ]
521 + );
522 +
523 + $this->add_control(
524 + 'king_addons_testimonial_carousel_sw_desktop_space_between_cards',
525 + [
526 + 'label' => esc_html__('Space between cards (px)', 'king-addons'),
527 + 'type' => Controls_Manager::NUMBER,
528 + 'min' => 0,
529 + 'step' => 1,
530 + 'default' => 30,
531 + 'separator' => 'after',
532 + ]
533 + );
534 +
535 + $this->add_control(
536 + 'king_addons_testimonial_carousel_sw_tablet_title',
537 + [
538 + 'label' => '<b>' . esc_html__('Tablet', 'king-addons') . '</b>',
539 + 'type' => Controls_Manager::RAW_HTML,
540 + ]
541 + );
542 +
543 + $this->add_control(
544 + 'king_addons_testimonial_carousel_sw_tablet_cards_per_view',
545 + [
546 + 'label' => esc_html__('Cards per view', 'king-addons'),
547 + 'type' => Controls_Manager::NUMBER,
548 + 'min' => 1,
549 + 'step' => 0.1,
550 + 'default' => 2.0,
551 + ]
552 + );
553 +
554 + $this->add_control(
555 + 'king_addons_testimonial_carousel_sw_tablet_space_between_cards',
556 + [
557 + 'label' => esc_html__('Space between cards (px)', 'king-addons'),
558 + 'type' => Controls_Manager::NUMBER,
559 + 'min' => 0,
560 + 'step' => 1,
561 + 'default' => 30,
562 + 'separator' => 'after',
563 + ]
564 + );
565 +
566 + $this->add_control(
567 + 'king_addons_testimonial_carousel_sw_tablet_breakpoint',
568 + [
569 + 'label' => esc_html__('Breakpoint (px)', 'king-addons'),
570 + 'type' => Controls_Manager::NUMBER,
571 + 'min' => 1,
572 + 'step' => 1,
573 + 'default' => 1024,
574 + ]
575 + );
576 +
577 + $this->add_control(
578 + 'king_addons_testimonial_carousel_sw_mobile_title',
579 + [
580 + 'label' => '<b>' . esc_html__('Mobile', 'king-addons') . '</b>',
581 + 'type' => Controls_Manager::RAW_HTML,
582 + ]
583 + );
584 +
585 + $this->add_control(
586 + 'king_addons_testimonial_carousel_sw_mobile_cards_per_view',
587 + [
588 + 'label' => esc_html__('Cards per view', 'king-addons'),
589 + 'type' => Controls_Manager::NUMBER,
590 + 'min' => 1,
591 + 'step' => 0.1,
592 + 'default' => 1.0,
593 + ]
594 + );
595 +
596 + $this->add_control(
597 + 'king_addons_testimonial_carousel_sw_mobile_space_between_cards',
598 + [
599 + 'label' => esc_html__('Space between cards (px)', 'king-addons'),
600 + 'type' => Controls_Manager::NUMBER,
601 + 'min' => 0,
602 + 'step' => 1,
603 + 'default' => 30,
604 + ]
605 + );
606 +
607 + $this->add_control(
608 + 'king_addons_testimonial_carousel_sw_mobile_breakpoint',
609 + [
610 + 'label' => esc_html__('Breakpoint (px)', 'king-addons'),
611 + 'type' => Controls_Manager::NUMBER,
612 + 'min' => 1,
613 + 'step' => 1,
614 + 'default' => 767,
615 + ]
616 + );
617 +
618 + $this->end_controls_section();
619 + /** END SECTION: Responsive Settings */
620 +
621 + /** START SECTION: Navigation */
622 + $this->start_controls_section(
623 + 'king_addons_testimonial_carousel_sw_content_section_nav',
624 + [
625 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Navigation', 'king-addons'),
626 + 'tab' => Controls_Manager::TAB_CONTENT,
627 + ]
628 + );
629 +
630 + $this->add_control(
631 + 'king_addons_testimonial_carousel_sw_nav_switcher',
632 + [
633 + 'label' => esc_html__('Enable navigation', 'king-addons'),
634 + 'type' => Controls_Manager::SWITCHER,
635 + 'default' => 'yes',
636 + ]
637 + );
638 +
639 + $this->add_responsive_control(
640 + 'king_addons_testimonial_carousel_sw_nav_display',
641 + [
642 + 'label' => esc_html__('Display on different screen sizes', 'king-addons'),
643 + 'type' => Controls_Manager::SELECT,
644 + 'options' => [
645 + 'flex' => esc_html__('Show', 'king-addons'),
646 + 'none' => esc_html__('Hide', 'king-addons'),
647 + ],
648 + 'desktop_default' => 'flex',
649 + 'tablet_default' => 'none',
650 + 'mobile_default' => 'none',
651 + 'selectors' => [
652 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav' => 'display: {{VALUE}};'
653 + ],
654 + 'condition' => [
655 + 'king_addons_testimonial_carousel_sw_nav_switcher' => 'yes'
656 + ]
657 + ]
658 + );
659 +
660 + $this->end_controls_section();
661 + /** END SECTION: Navigation */
662 +
663 + /** START SECTION: Pagination */
664 + $this->start_controls_section(
665 + 'king_addons_testimonial_carousel_sw_content_section_pag',
666 + [
667 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Pagination', 'king-addons'),
668 + 'tab' => Controls_Manager::TAB_CONTENT,
669 + ]
670 + );
671 +
672 + $this->add_control(
673 + 'king_addons_testimonial_carousel_sw_pag_switcher',
674 + [
675 + 'label' => esc_html__('Enable pagination', 'king-addons'),
676 + 'type' => Controls_Manager::SWITCHER,
677 + 'default' => 'yes',
678 + ]
679 + );
680 +
681 + $this->add_control(
682 + 'king_addons_testimonial_carousel_sw_pag_type',
683 + [
684 + 'label' => esc_html__('Type', 'king-addons'),
685 + 'type' => Controls_Manager::SELECT,
686 + 'options' => [
687 + 'bullets' => esc_html__('Bullets', 'king-addons'),
688 + 'progressbar' => esc_html__('Progress Bar', 'king-addons'),
689 + 'fraction' => esc_html__('Fraction', 'king-addons'),
690 + ],
691 + 'default' => 'bullets',
692 + 'condition' => [
693 + 'king_addons_testimonial_carousel_sw_pag_switcher' => 'yes'
694 + ]
695 + ]
696 + );
697 +
698 + // position top / bottom
699 + $this->add_responsive_control(
700 + 'king_addons_testimonial_carousel_sw_pag_progressbar_position',
701 + [
702 + 'label' => esc_html__('Progress bar position', 'king-addons'),
703 + 'description' => esc_html__('Check margin settings to properly set the position of the progress bar.', 'king-addons'),
704 + 'type' => Controls_Manager::SELECT,
705 + 'options' => [
706 + '0' => esc_html__('Top', 'king-addons'),
707 + 'unset' => esc_html__('Bottom', 'king-addons'),
708 + ],
709 + 'default' => 'unset',
710 + 'selectors' => [
711 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-pagination' => 'top: {{VALUE}}; bottom: 0;'
712 + ],
713 + 'condition' => [
714 + 'king_addons_testimonial_carousel_sw_pag_type' => 'progressbar',
715 + ]
716 + ]
717 + );
718 +
719 + $this->add_control(
720 + 'king_addons_testimonial_carousel_sw_pag_clickable_switcher',
721 + [
722 + 'label' => esc_html__('Clickable Bullets', 'king-addons'),
723 + 'type' => Controls_Manager::SWITCHER,
724 + 'default' => 'yes',
725 + 'condition' => [
726 + 'king_addons_testimonial_carousel_sw_pag_type' => 'bullets',
727 + ]
728 + ]
729 + );
730 +
731 + $this->add_control(
732 + 'king_addons_testimonial_carousel_sw_pag_dynamic_switcher',
733 + [
734 + 'label' => esc_html__('Dynamic Bullets', 'king-addons'),
735 + 'description' => esc_html__('Good to enable if you use bullets pagination with a lot of cards. So it will keep only few bullets visible at the same time.', 'king-addons'),
736 + 'type' => Controls_Manager::SWITCHER,
737 + 'default' => '',
738 + 'condition' => [
739 + 'king_addons_testimonial_carousel_sw_pag_type' => 'bullets',
740 + ]
741 + ]
742 + );
743 +
744 + $this->add_control(
745 + 'king_addons_testimonial_carousel_sw_pag_dynamic_number',
746 + [
747 + 'label' => esc_html__('Number of Dynamic Bullets', 'king-addons'),
748 + 'description' => esc_html__('The number of main bullets visible when Dynamic Bullets enabled.', 'king-addons'),
749 + 'type' => Controls_Manager::NUMBER,
750 + 'min' => 1,
751 + 'step' => 1,
752 + 'default' => 1,
753 + 'condition' => [
754 + 'king_addons_testimonial_carousel_sw_pag_dynamic_switcher' => 'yes',
755 + 'king_addons_testimonial_carousel_sw_pag_type' => 'bullets',
756 + ]
757 + ]
758 + );
759 +
760 + $this->add_responsive_control(
761 + 'king_addons_testimonial_carousel_sw_pag_display',
762 + [
763 + 'label' => esc_html__('Display on different screen sizes', 'king-addons'),
764 + 'type' => Controls_Manager::SELECT,
765 + 'options' => [
766 + 'block' => esc_html__('Show', 'king-addons'),
767 + 'none' => esc_html__('Hide', 'king-addons'),
768 + ],
769 + 'desktop_default' => 'block',
770 + 'tablet_default' => 'block',
771 + 'mobile_default' => 'block',
772 + 'selectors' => [
773 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-pagination' => 'display: {{VALUE}};'
774 + ],
775 + 'condition' => [
776 + 'king_addons_testimonial_carousel_sw_pag_switcher' => 'yes'
777 + ]
778 + ]
779 + );
780 +
781 + $this->end_controls_section();
782 + /** END SECTION: Pagination */
783 +
784 + /** ========================================================== */
785 + /** ========================================================== */
786 + /** ========================================================== */
787 + /** STYLES */
788 +
789 + // IMAGE
790 + $this->start_controls_section(
791 + 'king_addons_testimonial_carousel_section_image_style',
792 + [
793 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Image', 'king-addons'),
794 + 'tab' => Controls_Manager::TAB_STYLE,
795 + ]
796 + );
797 +
798 + $this->add_responsive_control(
799 + 'king_addons_testimonial_carousel_image_width',
800 + [
801 + 'label' => esc_html__('Width (px)', 'king-addons'),
802 + 'type' => Controls_Manager::NUMBER,
803 + 'min' => 0,
804 + 'step' => 1,
805 + 'default' => 70,
806 + 'selectors' => [
807 + '{{WRAPPER}} .king-addons-testimonial-carousel-image img' => 'width: {{SIZE}}px;',
808 + '{{WRAPPER}} .king-addons-testimonial-carousel-layout-4 .king-addons-testimonial-carousel-image' => 'flex: 0 0 {{SIZE}}px;',
809 + ],
810 + ]
811 + );
812 +
813 + $this->add_responsive_control(
814 + 'king_addons_testimonial_carousel_image_height',
815 + [
816 + 'label' => esc_html__('Height (px)', 'king-addons'),
817 + 'type' => Controls_Manager::NUMBER,
818 + 'min' => 0,
819 + 'step' => 1,
820 + 'default' => 70,
821 + 'selectors' => [
822 + '{{WRAPPER}} .king-addons-testimonial-carousel-image img' => 'height: {{SIZE}}px;'
823 + ],
824 + ]
825 + );
826 +
827 + $this->add_responsive_control(
828 + 'king_addons_testimonial_carousel_whole_testimonial_carousel_gap',
829 + [
830 + 'label' => esc_html__('Gap between Image and Content (px)', 'king-addons'),
831 + 'type' => Controls_Manager::NUMBER,
832 + 'min' => 0,
833 + 'step' => 1,
834 + 'default' => 20,
835 + 'selectors' => [
836 + '{{WRAPPER}} .king-addons-testimonial-carousel-layout-4,
837 + {{WRAPPER}} .king-addons-testimonial-carousel-layout-5' => 'gap: {{SIZE}}px;'
838 + ],
839 + 'condition' => [
840 + 'king_addons_testimonial_carousel_layout' => ['layout-4', 'layout-5']
841 + ],
842 + ]
843 + );
844 +
845 + $this->add_responsive_control(
846 + 'king_addons_testimonial_carousel_whole_testimonial_carousel_gap_2',
847 + [
848 + 'label' => esc_html__('Gap between Image and Content (px)', 'king-addons'),
849 + 'type' => Controls_Manager::NUMBER,
850 + 'min' => 0,
851 + 'step' => 1,
852 + 'default' => 15,
853 + 'selectors' => [
854 + '{{WRAPPER}} .king-addons-testimonial-carousel-layout-1,
855 + {{WRAPPER}} .king-addons-testimonial-carousel-layout-2,
856 + {{WRAPPER}} .king-addons-testimonial-carousel-layout-3,
857 + {{WRAPPER}} .king-addons-testimonial-carousel-layout-8' => 'gap: {{SIZE}}px;'
858 + ],
859 + 'condition' => [
860 + 'king_addons_testimonial_carousel_layout' => ['layout-1', 'layout-2', 'layout-3', 'layout-8']
861 + ],
862 + ]
863 + );
864 +
865 + $this->add_group_control(
866 + Group_Control_Css_Filter::get_type(),
867 + [
868 + 'label' => esc_html__('CSS Filter', 'king-addons'),
869 + 'name' => 'king_addons_testimonial_carousel_image_css_filters',
870 + 'selector' => '{{WRAPPER}} .king-addons-testimonial-carousel-image img',
871 + ]
872 + );
873 +
874 + $this->add_group_control(
875 + Group_Control_Box_Shadow::get_type(),
876 + [
877 + 'name' => 'king_addons_testimonial_carousel_image_box_shadow',
878 + 'selector' => '{{WRAPPER}} .king-addons-testimonial-carousel-image img',
879 + ]
880 + );
881 +
882 + $this->add_group_control(
883 + Group_Control_Border::get_type(),
884 + [
885 + 'name' => 'king_addons_testimonial_carousel_image_border',
886 + 'selector' => '{{WRAPPER}} .king-addons-testimonial-carousel-image img',
887 + 'fields_options' => [
888 + 'border' => [
889 + 'default' => 'none',
890 + ],
891 + ],
892 + ]
893 + );
894 +
895 + $this->add_responsive_control(
896 + 'king_addons_testimonial_carousel_image_border_radius',
897 + [
898 + 'label' => esc_html__('Border Radius', 'king-addons'),
899 + 'type' => Controls_Manager::DIMENSIONS,
900 + 'size_units' => ['px', '%'],
901 + 'default' => [
902 + 'top' => 100,
903 + 'right' => 100,
904 + 'bottom' => 100,
905 + 'left' => 100,
906 + 'unit' => '%',
907 + ],
908 + 'selectors' => [
909 + '{{WRAPPER}} .king-addons-testimonial-carousel-image img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
910 + ]
911 + ]
912 + );
913 +
914 + $this->end_controls_section();
915 +
916 + // TITLE
917 + $this->start_controls_section(
918 + 'king_addons_testimonial_carousel_section_title_style',
919 + [
920 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Title', 'king-addons'),
921 + 'tab' => Controls_Manager::TAB_STYLE,
922 + ]
923 + );
924 +
925 + // title - typography
926 + $this->add_group_control(
927 + Group_Control_Typography::get_type(),
928 + [
929 + 'label' => esc_html__('Typography', 'king-addons'),
930 + 'name' => 'king_addons_testimonial_carousel_title_typography',
931 + 'fields_options' => [
932 + 'font_size' => [
933 + 'default' => [
934 + 'size' => 18,
935 + 'unit' => 'px'
936 + ],
937 + ],
938 + 'font_weight' => [
939 + 'default' => 600,
940 + ],
941 + 'typography' => [
942 + 'default' => 'custom',
943 + ]
944 + ],
945 + 'selector' => '{{WRAPPER}} .king-addons-testimonial-carousel-title',
946 + ]
947 + );
948 +
949 + // title - color
950 + $this->add_control(
951 + 'king_addons_testimonial_carousel_title_color',
952 + [
953 + 'label' => esc_html__('Color', 'king-addons'),
954 + 'type' => Controls_Manager::COLOR,
955 + 'default' => '#000000',
956 + 'selectors' => [
957 + '{{WRAPPER}} .king-addons-testimonial-carousel-title' => 'color: {{VALUE}};',
958 + ],
959 + ]
960 + );
961 +
962 + // title - margin
963 + $this->add_responsive_control(
964 + 'king_addons_testimonial_carousel_title_margin',
965 + [
966 + 'label' => esc_html__('Margin', 'king-addons'),
967 + 'type' => Controls_Manager::DIMENSIONS,
968 + 'size_units' => ['px', 'em', '%'],
969 + 'default' => [
970 + 'top' => 0,
971 + 'right' => 5,
972 + 'bottom' => 0,
973 + 'left' => 0,
974 + 'unit' => 'px',
975 + ],
976 + 'selectors' => [
977 + '{{WRAPPER}} .king-addons-testimonial-carousel-title' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
978 + ]
979 + ]
980 + );
981 +
982 + $this->end_controls_section();
983 +
984 + $this->start_controls_section(
985 + 'king_addons_testimonial_carousel_section_subtitle_style',
986 + [
987 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Subtitle', 'king-addons'),
988 + 'tab' => Controls_Manager::TAB_STYLE,
989 + ]
990 + );
991 +
992 + // subtitle - typography
993 + $this->add_group_control(
994 + Group_Control_Typography::get_type(),
995 + [
996 + 'label' => esc_html__('Typography', 'king-addons'),
997 + 'name' => 'king_addons_testimonial_carousel_subtitle_typography',
998 + 'fields_options' => [
999 + 'font_size' => [
1000 + 'default' => [
1001 + 'size' => 15,
1002 + 'unit' => 'px'
1003 + ],
1004 + ],
1005 + 'font_weight' => [
1006 + 'default' => 400,
1007 + ],
1008 + 'typography' => [
1009 + 'default' => 'custom',
1010 + ]
1011 + ],
1012 + 'selector' => '{{WRAPPER}} .king-addons-testimonial-carousel-subtitle',
1013 + ]
1014 + );
1015 +
1016 + // subtitle - color
1017 + $this->add_control(
1018 + 'king_addons_testimonial_carousel_subtitle_color',
1019 + [
1020 + 'label' => esc_html__('Color', 'king-addons'),
1021 + 'type' => Controls_Manager::COLOR,
1022 + 'default' => '#888888',
1023 + 'selectors' => [
1024 + '{{WRAPPER}} .king-addons-testimonial-carousel-subtitle' => 'color: {{VALUE}};',
1025 + ],
1026 + ]
1027 + );
1028 +
1029 + // subtitle - margin
1030 + $this->add_responsive_control(
1031 + 'king_addons_testimonial_carousel_subtitle_margin',
1032 + [
1033 + 'label' => esc_html__('Margin', 'king-addons'),
1034 + 'type' => Controls_Manager::DIMENSIONS,
1035 + 'size_units' => ['px', 'em', '%'],
1036 + 'default' => [
1037 + 'top' => 0,
1038 + 'right' => 0,
1039 + 'bottom' => 0,
1040 + 'left' => 0,
1041 + 'unit' => 'px',
1042 + ],
1043 + 'selectors' => [
1044 + '{{WRAPPER}} .king-addons-testimonial-carousel-subtitle' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1045 + ]
1046 + ]
1047 + );
1048 +
1049 + // subtitle - margin
1050 + $this->add_responsive_control(
1051 + 'king_addons_testimonial_carousel_title_subtitle_margin',
1052 + [
1053 + 'label' => esc_html__('Title-Subtitle Block Margin', 'king-addons'),
1054 + 'type' => Controls_Manager::DIMENSIONS,
1055 + 'size_units' => ['px', 'em', '%'],
1056 + 'default' => [
1057 + 'top' => 0,
1058 + 'right' => 0,
1059 + 'bottom' => 15,
1060 + 'left' => 0,
1061 + 'unit' => 'px',
1062 + ],
1063 + 'selectors' => [
1064 + '{{WRAPPER}} .king-addons-testimonial-carousel-person-wrapper' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1065 + ],
1066 + 'separator' => 'before',
1067 + 'condition' => [
1068 + 'king_addons_testimonial_carousel_layout' => ['layout-2']
1069 + ],
1070 + ]
1071 + );
1072 +
1073 + $this->add_responsive_control(
1074 + 'king_addons_testimonial_carousel_title_subtitle_margin_2',
1075 + [
1076 + 'label' => esc_html__('Title-Subtitle Block Margin', 'king-addons'),
1077 + 'type' => Controls_Manager::DIMENSIONS,
1078 + 'size_units' => ['px', 'em', '%'],
1079 + 'default' => [
1080 + 'top' => 0,
1081 + 'right' => 0,
1082 + 'bottom' => 10,
1083 + 'left' => 0,
1084 + 'unit' => 'px',
1085 + ],
1086 + 'selectors' => [
1087 + '{{WRAPPER}} .king-addons-testimonial-carousel-person-wrapper' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1088 + ],
1089 + 'separator' => 'before',
1090 + 'condition' => [
1091 + 'king_addons_testimonial_carousel_layout' => ['layout-6', 'layout-7']
1092 + ],
1093 + ]
1094 + );
1095 +
1096 + $this->end_controls_section();
1097 +
1098 + $this->start_controls_section(
1099 + 'king_addons_testimonial_carousel_section_description_style',
1100 + [
1101 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Description', 'king-addons'),
1102 + 'tab' => Controls_Manager::TAB_STYLE,
1103 + ]
1104 + );
1105 +
1106 + // description - typography
1107 + $this->add_group_control(
1108 + Group_Control_Typography::get_type(),
1109 + [
1110 + 'label' => esc_html__('Typography', 'king-addons'),
1111 + 'name' => 'king_addons_testimonial_carousel_description_typography',
1112 + 'fields_options' => [
1113 + 'font_size' => [
1114 + 'default' => [
1115 + 'size' => 16,
1116 + 'unit' => 'px'
1117 + ],
1118 + ],
1119 + 'font_weight' => [
1120 + 'default' => 400,
1121 + ],
1122 + 'typography' => [
1123 + 'default' => 'custom',
1124 + ]
1125 + ],
1126 + 'selector' => '{{WRAPPER}} .king-addons-testimonial-carousel-description',
1127 + ]
1128 + );
1129 +
1130 + // description - color
1131 + $this->add_control(
1132 + 'king_addons_testimonial_carousel_description_color',
1133 + [
1134 + 'label' => esc_html__('Color', 'king-addons'),
1135 + 'type' => Controls_Manager::COLOR,
1136 + 'default' => '#000000',
1137 + 'selectors' => [
1138 + '{{WRAPPER}} .king-addons-testimonial-carousel-description' => 'color: {{VALUE}};',
1139 + ],
1140 + ]
1141 + );
1142 +
1143 + // description - margin
1144 + $this->add_responsive_control(
1145 + 'king_addons_testimonial_carousel_description_margin',
1146 + [
1147 + 'label' => esc_html__('Margin', 'king-addons'),
1148 + 'type' => Controls_Manager::DIMENSIONS,
1149 + 'size_units' => ['px', 'em', '%'],
1150 + 'default' => [
1151 + 'top' => 0,
1152 + 'right' => 0,
1153 + 'bottom' => 10,
1154 + 'left' => 0,
1155 + 'unit' => 'px',
1156 + ],
1157 + 'selectors' => [
1158 + '{{WRAPPER}} .king-addons-testimonial-carousel-description' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1159 + ],
1160 + 'condition' => [
1161 + 'king_addons_testimonial_carousel_layout' => ['layout-1', 'layout-2', 'layout-3', 'layout-4', 'layout-5', 'layout-8']
1162 + ],
1163 + ]
1164 + );
1165 +
1166 + $this->end_controls_section();
1167 +
1168 + // STYLE: RATING ============================================
1169 + $this->start_controls_section(
1170 + 'king_addons_testimonial_carousel_section_icon_style',
1171 + [
1172 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Rating', 'king-addons'),
1173 + 'tab' => Controls_Manager::TAB_STYLE,
1174 + ]
1175 + );
1176 +
1177 + $this->add_responsive_control(
1178 + 'king_addons_testimonial_carousel_icon_size',
1179 + [
1180 + 'label' => esc_html__('Size', 'king-addons'),
1181 + 'type' => Controls_Manager::SLIDER,
1182 + 'size_units' => ['px', 'em', 'rem', 'vw', 'custom'],
1183 + 'range' => [
1184 + 'px' => [
1185 + 'max' => 100,
1186 + ],
1187 + 'em' => [
1188 + 'min' => 0,
1189 + 'max' => 10,
1190 + ],
1191 + 'rem' => [
1192 + 'min' => 0,
1193 + 'max' => 10,
1194 + ],
1195 + ],
1196 + 'selectors' => [
1197 + '{{WRAPPER}} .king-addons-testimonial-carousel-rating-general' => '--king-addons-testimonial-carousel-rating-icon-font-size: {{SIZE}}{{UNIT}}',
1198 + ],
1199 + ]
1200 + );
1201 +
1202 + $this->add_responsive_control(
1203 + 'king_addons_testimonial_carousel_icon_gap',
1204 + [
1205 + 'label' => esc_html__('Spacing', 'king-addons'),
1206 + 'type' => Controls_Manager::SLIDER,
1207 + 'size_units' => ['px', 'em', 'rem', 'vw', 'custom'],
1208 + 'range' => [
1209 + 'px' => [
1210 + 'max' => 100,
1211 + ],
1212 + 'em' => [
1213 + 'min' => 0,
1214 + 'max' => 10,
1215 + ],
1216 + 'rem' => [
1217 + 'min' => 0,
1218 + 'max' => 10,
1219 + ],
1220 + ],
1221 + 'selectors' => [
1222 + '{{WRAPPER}} .king-addons-testimonial-carousel-rating-general' => '--king-addons-testimonial-carousel-rating-gap: {{SIZE}}{{UNIT}}',
1223 + ],
1224 + ]
1225 + );
1226 +
1227 + $this->add_control(
1228 + 'king_addons_testimonial_carousel_icon_color',
1229 + [
1230 + 'label' => esc_html__('Color', 'king-addons'),
1231 + 'type' => Controls_Manager::COLOR,
1232 + 'selectors' => [
1233 + '{{WRAPPER}} .king-addons-testimonial-carousel-rating-general' => '--king-addons-testimonial-carousel-rating-icon-marked-color: {{VALUE}}',
1234 + ],
1235 + 'separator' => 'before',
1236 + ]
1237 + );
1238 +
1239 + $this->add_control(
1240 + 'king_addons_testimonial_carousel_icon_unmarked_color',
1241 + [
1242 + 'label' => esc_html__('Unmarked Color', 'king-addons'),
1243 + 'type' => Controls_Manager::COLOR,
1244 + 'selectors' => [
1245 + '{{WRAPPER}} .king-addons-testimonial-carousel-rating-general' => '--king-addons-testimonial-carousel-rating-icon-color: {{VALUE}}',
1246 + ],
1247 + ]
1248 + );
1249 +
1250 + // rating - margin
1251 + $this->add_responsive_control(
1252 + 'king_addons_testimonial_carousel_icon_margin',
1253 + [
1254 + 'label' => esc_html__('Margin', 'king-addons'),
1255 + 'type' => Controls_Manager::DIMENSIONS,
1256 + 'size_units' => ['px', '%'],
1257 + 'default' => [
1258 + 'top' => 0,
1259 + 'right' => 0,
1260 + 'bottom' => 10,
1261 + 'left' => 0,
1262 + 'unit' => 'px',
1263 + ],
1264 + 'selectors' => [
1265 + '{{WRAPPER}} .king-addons-testimonial-carousel-rating-general' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1266 + ],
1267 + 'condition' => [
1268 + 'king_addons_testimonial_carousel_layout' => ['layout-1', 'layout-2', 'layout-4', 'layout-5', 'layout-8']
1269 + ],
1270 + ]
1271 + );
1272 +
1273 + $this->end_controls_section();
1274 + // END: RATING ============================================
1275 +
1276 + $this->start_controls_section(
1277 + 'king_addons_testimonial_carousel_section_whole_testimonial_carousel_style',
1278 + [
1279 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Testimonial Card', 'king-addons'),
1280 + 'tab' => Controls_Manager::TAB_STYLE,
1281 + ]
1282 + );
1283 +
1284 +
1285 + $this->add_group_control(
1286 + Group_Control_Background::get_type(),
1287 + [
1288 + 'name' => 'king_addons_testimonial_carousel_whole_testimonial_carousel_bg',
1289 + 'fields_options' => [
1290 + 'color' => [
1291 + 'default' => '#FFFFFF',
1292 + ],
1293 + 'background' => [
1294 + 'default' => 'classic',
1295 + ]
1296 + ],
1297 + 'selector' => '{{WRAPPER}} .king-addons-testimonial-carousel-layout'
1298 + ]
1299 + );
1300 +
1301 + $this->add_responsive_control(
1302 + 'king_addons_testimonial_carousel_whole_testimonial_carousel_gap_3',
1303 + [
1304 + 'label' => esc_html__('Space between Bio and Description (px)', 'king-addons'),
1305 + 'type' => Controls_Manager::NUMBER,
1306 + 'min' => 0,
1307 + 'step' => 1,
1308 + 'default' => 25,
1309 + 'separator' => 'before',
1310 + 'selectors' => [
1311 + '{{WRAPPER}} .king-addons-testimonial-carousel-layout-6,
1312 + {{WRAPPER}} .king-addons-testimonial-carousel-layout-7' => 'gap: {{SIZE}}px;'
1313 + ],
1314 + 'condition' => [
1315 + 'king_addons_testimonial_carousel_layout' => ['layout-6', 'layout-7']
1316 + ],
1317 + ]
1318 + );
1319 +
1320 + $this->add_responsive_control(
1321 + 'king_addons_testimonial_carousel_whole_testimonial_carousel_gap_4',
1322 + [
1323 + 'label' => esc_html__('Space between Image and Title + Subtitle, Rating (px)', 'king-addons'),
1324 + 'type' => Controls_Manager::NUMBER,
1325 + 'min' => 0,
1326 + 'step' => 1,
1327 + 'default' => 20,
1328 + 'selectors' => [
1329 + '{{WRAPPER}} .king-addons-testimonial-carousel-layout-6 .king-addons-testimonial-carousel-content,
1330 + {{WRAPPER}} .king-addons-testimonial-carousel-layout-7 .king-addons-testimonial-carousel-content' => 'gap: {{SIZE}}px;'
1331 + ],
1332 + 'condition' => [
1333 + 'king_addons_testimonial_carousel_layout' => ['layout-6', 'layout-7']
1334 + ],
1335 + ]
1336 + );
1337 +
1338 + $this->add_responsive_control(
1339 + 'king_addons_testimonial_carousel_whole_testimonial_carousel_padding',
1340 + [
1341 + 'label' => esc_html__('Padding', 'king-addons'),
1342 + 'type' => Controls_Manager::DIMENSIONS,
1343 + 'size_units' => ['px', '%'],
1344 + 'default' => [
1345 + 'top' => 30,
1346 + 'right' => 30,
1347 + 'bottom' => 30,
1348 + 'left' => 30,
1349 + 'unit' => 'px',
1350 + ],
1351 + 'separator' => 'before',
1352 + 'selectors' => [
1353 + '{{WRAPPER}} .king-addons-testimonial-carousel-layout' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1354 + ]
1355 + ]
1356 + );
1357 +
1358 +// $this->add_responsive_control(
1359 +// 'king_addons_testimonial_carousel_whole_testimonial_carousel_margin',
1360 +// [
1361 +// 'label' => esc_html__('Margin', 'king-addons'),
1362 +// 'type' => Controls_Manager::DIMENSIONS,
1363 +// 'size_units' => ['px', '%'],
1364 +// 'default' => [
1365 +// 'top' => 0,
1366 +// 'right' => 0,
1367 +// 'bottom' => 0,
1368 +// 'left' => 0,
1369 +// 'unit' => 'px',
1370 +// ],
1371 +// 'selectors' => [
1372 +// '{{WRAPPER}} .king-addons-testimonial-carousel-layout' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1373 +// ]
1374 +// ]
1375 +// );
1376 +
1377 + $this->add_group_control(
1378 + Group_Control_Box_Shadow::get_type(),
1379 + [
1380 + 'name' => 'king_addons_testimonial_carousel_whole_testimonial_carousel_box_shadow',
1381 + 'selector' => '{{WRAPPER}} .king-addons-testimonial-carousel-layout',
1382 + 'fields_options' => [
1383 + 'box_shadow' => [
1384 + 'default' => [
1385 + 'horizontal' => 0,
1386 + 'vertical' => 3,
1387 + 'blur' => 10,
1388 + 'spread' => 0,
1389 + 'color' => 'rgba(36, 36, 36, 0.1)',
1390 + ],
1391 + ],
1392 + 'box_shadow_type' => [
1393 + 'default' => 'yes',
1394 + ],
1395 + ],
1396 + ]
1397 + );
1398 +
1399 + $this->add_group_control(
1400 + Group_Control_Border::get_type(),
1401 + [
1402 + 'name' => 'king_addons_testimonial_carousel_whole_testimonial_carousel_border',
1403 + 'selector' => '{{WRAPPER}} .king-addons-testimonial-carousel-layout',
1404 + 'fields_options' => [
1405 + 'border' => [
1406 + 'default' => 'none',
1407 + ],
1408 + ],
1409 + ]
1410 + );
1411 +
1412 + $this->add_responsive_control(
1413 + 'king_addons_testimonial_carousel_whole_testimonial_carousel_border_radius',
1414 + [
1415 + 'label' => esc_html__('Border Radius', 'king-addons'),
1416 + 'type' => Controls_Manager::DIMENSIONS,
1417 + 'size_units' => ['px', '%'],
1418 + 'default' => [
1419 + 'top' => 8,
1420 + 'right' => 8,
1421 + 'bottom' => 8,
1422 + 'left' => 8,
1423 + 'unit' => 'px',
1424 + ],
1425 + 'selectors' => [
1426 + '{{WRAPPER}} .king-addons-testimonial-carousel-layout' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1427 + ]
1428 + ]
1429 + );
1430 +
1431 + $this->end_controls_section();
1432 +
1433 + /** START SECTION: Navigation */
1434 + $this->start_controls_section(
1435 + 'king_addons_testimonial_carousel_sw_style_section_nav',
1436 + [
1437 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Navigation', 'king-addons'),
1438 + 'tab' => Controls_Manager::TAB_STYLE,
1439 + ]
1440 + );
1441 +
1442 + $this->add_control(
1443 + 'king_addons_testimonial_carousel_sw_nav_icon_prev_title',
1444 + [
1445 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Previous button', 'king-addons'),
1446 + 'type' => Controls_Manager::HEADING,
1447 + ]
1448 + );
1449 +
1450 + $this->add_control(
1451 + 'king_addons_testimonial_carousel_sw_nav_icon_prev',
1452 + [
1453 + 'label' => esc_html__('Icon', 'king-addons'),
1454 + 'type' => Controls_Manager::ICONS,
1455 + 'skin' => 'inline',
1456 + 'label_block' => false,
1457 + 'default' => [
1458 + 'value' => 'fas fa-chevron-left',
1459 + 'library' => 'fa-solid',
1460 + ],
1461 + ]
1462 + );
1463 +
1464 + $this->add_responsive_control(
1465 + 'king_addons_testimonial_carousel_sw_nav_margin_prev',
1466 + [
1467 + 'label' => esc_html__('Margin', 'king-addons'),
1468 + 'type' => Controls_Manager::DIMENSIONS,
1469 + 'size_units' => ['px'],
1470 + 'default' => [
1471 + 'top' => 0,
1472 + 'right' => 0,
1473 + 'bottom' => 0,
1474 + 'left' => 0,
1475 + 'unit' => 'px',
1476 + 'isLinked' => false
1477 + ],
1478 + 'selectors' => [
1479 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav-prev .king-addons-testimonial-carousel-sw-nav-inner' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1480 + ]
1481 + ]
1482 + );
1483 +
1484 +
1485 + $this->add_responsive_control(
1486 + 'king_addons_testimonial_carousel_sw_nav_prev_transform_scale',
1487 + [
1488 + 'label' => esc_html__('Scale on hover (%)', 'king-addons'),
1489 + 'type' => Controls_Manager::NUMBER,
1490 + 'step' => 0.1,
1491 + 'min' => 0,
1492 + 'default' => 1.3,
1493 + 'selectors' => [
1494 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav-prev:hover .king-addons-testimonial-carousel-sw-nav-inner' => 'transform: scale({{VALUE}});',
1495 + ],
1496 + ]
1497 + );
1498 +
1499 + $this->add_responsive_control(
1500 + 'king_addons_testimonial_carousel_sw_nav_position_v_prev',
1501 + [
1502 + 'type' => Controls_Manager::SLIDER,
1503 + 'label' => esc_html__('Vertical position (%)', 'king-addons'),
1504 + 'size_units' => ['%'],
1505 + 'range' => [
1506 + '%' => [
1507 + 'min' => 0,
1508 + 'max' => 100,
1509 + ],
1510 + ],
1511 + 'default' => [
1512 + 'unit' => '%',
1513 + 'size' => 50,
1514 + ],
1515 + 'selectors' => [
1516 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav-prev' => 'top: {{SIZE}}{{UNIT}};',
1517 + ],
1518 + ]
1519 + );
1520 +
1521 + $this->add_responsive_control(
1522 + 'king_addons_testimonial_carousel_sw_nav_position_h_prev',
1523 + [
1524 + 'type' => Controls_Manager::SLIDER,
1525 + 'label' => esc_html__('Horizontal position (%)', 'king-addons'),
1526 + 'size_units' => ['%'],
1527 + 'range' => [
1528 + '%' => [
1529 + 'min' => 0,
1530 + 'max' => 100,
1531 + ],
1532 + ],
1533 + 'default' => [
1534 + 'unit' => '%',
1535 + 'size' => 0,
1536 + ],
1537 + 'selectors' => [
1538 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav-prev' => 'left: {{SIZE}}{{UNIT}};',
1539 + ],
1540 + ]
1541 + );
1542 +
1543 + $this->add_control(
1544 + 'king_addons_testimonial_carousel_sw_nav_icon_next_title',
1545 + [
1546 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Next button', 'king-addons'),
1547 + 'type' => Controls_Manager::HEADING,
1548 + 'separator' => 'before',
1549 + ]
1550 + );
1551 +
1552 + $this->add_control(
1553 + 'king_addons_testimonial_carousel_sw_nav_icon_next',
1554 + [
1555 + 'label' => esc_html__('Icon', 'king-addons'),
1556 + 'type' => Controls_Manager::ICONS,
1557 + 'skin' => 'inline',
1558 + 'label_block' => false,
1559 + 'default' => [
1560 + 'value' => 'fas fa-chevron-right',
1561 + 'library' => 'fa-solid',
1562 + ],
1563 + ]
1564 + );
1565 +
1566 + $this->add_responsive_control(
1567 + 'king_addons_testimonial_carousel_sw_nav_margin_next',
1568 + [
1569 + 'label' => esc_html__('Margin', 'king-addons'),
1570 + 'type' => Controls_Manager::DIMENSIONS,
1571 + 'size_units' => ['px'],
1572 + 'default' => [
1573 + 'top' => 0,
1574 + 'right' => 0,
1575 + 'bottom' => 0,
1576 + 'left' => 0,
1577 + 'unit' => 'px',
1578 + 'isLinked' => false
1579 + ],
1580 + 'selectors' => [
1581 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav-next .king-addons-testimonial-carousel-sw-nav-inner' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1582 + ]
1583 + ]
1584 + );
1585 +
1586 + $this->add_responsive_control(
1587 + 'king_addons_testimonial_carousel_sw_nav_next_transform_scale',
1588 + [
1589 + 'label' => esc_html__('Scale on hover (%)', 'king-addons'),
1590 + 'type' => Controls_Manager::NUMBER,
1591 + 'step' => 0.1,
1592 + 'min' => 0,
1593 + 'default' => 1.3,
1594 + 'selectors' => [
1595 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav-next:hover .king-addons-testimonial-carousel-sw-nav-inner' => 'transform: scale({{VALUE}});',
1596 + ],
1597 + ]
1598 + );
1599 +
1600 + $this->add_responsive_control(
1601 + 'king_addons_testimonial_carousel_sw_nav_position_v_next',
1602 + [
1603 + 'type' => Controls_Manager::SLIDER,
1604 + 'label' => esc_html__('Vertical position (%)', 'king-addons'),
1605 + 'size_units' => ['%'],
1606 + 'range' => [
1607 + '%' => [
1608 + 'min' => 0,
1609 + 'max' => 100,
1610 + ],
1611 + ],
1612 + 'default' => [
1613 + 'unit' => '%',
1614 + 'size' => 50,
1615 + ],
1616 + 'selectors' => [
1617 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav-next' => 'top: {{SIZE}}{{UNIT}};',
1618 + ],
1619 + ]
1620 + );
1621 +
1622 + $this->add_responsive_control(
1623 + 'king_addons_testimonial_carousel_sw_nav_position_h_next',
1624 + [
1625 + 'type' => Controls_Manager::SLIDER,
1626 + 'label' => esc_html__('Horizontal position (%)', 'king-addons'),
1627 + 'size_units' => ['%'],
1628 + 'range' => [
1629 + '%' => [
1630 + 'min' => 0,
1631 + 'max' => 100,
1632 + ],
1633 + ],
1634 + 'default' => [
1635 + 'unit' => '%',
1636 + 'size' => 100,
1637 + ],
1638 + 'selectors' => [
1639 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav-next' => 'right: calc(100% - {{SIZE}}{{UNIT}});',
1640 + ],
1641 + ]
1642 + );
1643 +
1644 + // common
1645 + $this->add_control(
1646 + 'king_addons_testimonial_carousel_sw_nav_icon_common_title',
1647 + [
1648 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Common settings', 'king-addons'),
1649 + 'type' => Controls_Manager::HEADING,
1650 + 'separator' => 'before',
1651 + ]
1652 + );
1653 +
1654 + $this->add_responsive_control(
1655 + 'king_addons_testimonial_carousel_sw_nav_icon_size',
1656 + [
1657 + 'label' => esc_html__('Icon Size', 'king-addons'),
1658 + 'type' => Controls_Manager::NUMBER,
1659 + 'step' => 1,
1660 + 'min' => 0,
1661 + 'default' => 32,
1662 + 'selectors' => [
1663 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav i' => 'font-size: {{VALUE}}px; width: {{VALUE}}px;',
1664 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav img' => 'width: {{VALUE}}px; height: {{VALUE}}px;',
1665 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav svg' => 'width: {{VALUE}}px; height: {{VALUE}}px;'
1666 + ],
1667 + ]
1668 + );
1669 +
1670 + $this->add_responsive_control(
1671 + 'king_addons_testimonial_carousel_sw_nav_transition_icon',
1672 + [
1673 + 'label' => esc_html__('Transition duration for icon on hover (ms)', 'king-addons'),
1674 + 'type' => Controls_Manager::NUMBER,
1675 + 'min' => 0,
1676 + 'step' => 10,
1677 + 'default' => 300,
1678 + 'selectors' => [
1679 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav i' => 'transition: all {{SIZE}}ms;',
1680 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav img' => 'transition: all {{SIZE}}ms;',
1681 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav svg' => 'transition: all {{SIZE}}ms;',
1682 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav .king-addons-testimonial-carousel-sw-nav-inner' => 'transition: all {{SIZE}}ms;',
1683 + ],
1684 + ]
1685 + );
1686 +
1687 + $this->add_responsive_control(
1688 + 'king_addons_testimonial_carousel_sw_nav_padding',
1689 + [
1690 + 'label' => esc_html__('Padding', 'king-addons'),
1691 + 'type' => Controls_Manager::DIMENSIONS,
1692 + 'size_units' => ['px', '%'],
1693 + 'default' => [
1694 + 'top' => 10,
1695 + 'right' => 10,
1696 + 'bottom' => 10,
1697 + 'left' => 10,
1698 + 'unit' => 'px',
1699 + ],
1700 + 'selectors' => [
1701 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav-inner' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1702 + ]
1703 + ]
1704 + );
1705 +
1706 + $this->start_controls_tabs('king_addons_testimonial_carousel_sw_nav_tabs');
1707 +
1708 + $this->start_controls_tab(
1709 + 'king_addons_testimonial_carousel_sw_nav_tab_normal',
1710 + [
1711 + 'label' => esc_html__('Normal', 'king-addons'),
1712 + ]
1713 + );
1714 +
1715 + $this->add_control(
1716 + 'king_addons_testimonial_carousel_sw_nav_color',
1717 + [
1718 + 'label' => esc_html__('Color', 'king-addons'),
1719 + 'type' => Controls_Manager::COLOR,
1720 + 'default' => '#00000033',
1721 + 'selectors' => [
1722 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav i' => 'color: {{VALUE}};',
1723 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav svg' => 'fill: {{VALUE}};'
1724 + ],
1725 + ]
1726 + );
1727 +
1728 + $this->add_control(
1729 + 'king_addons_testimonial_carousel_sw_nav_bg_color',
1730 + [
1731 + 'label' => esc_html__('Background Color', 'king-addons'),
1732 + 'type' => Controls_Manager::COLOR,
1733 + 'default' => '',
1734 + 'selectors' => [
1735 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav-inner' => 'background-color: {{VALUE}}',
1736 + ],
1737 + ]
1738 + );
1739 +
1740 + $this->add_group_control(
1741 + Group_Control_Box_Shadow::get_type(),
1742 + [
1743 + 'name' => 'king_addons_testimonial_carousel_sw_nav_box_shadow',
1744 + 'selector' => '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav-inner',
1745 + ]
1746 + );
1747 +
1748 + $this->add_group_control(
1749 + Group_Control_Border::get_type(),
1750 + [
1751 + 'name' => 'king_addons_testimonial_carousel_sw_nav_border',
1752 + 'selector' => '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav-inner',
1753 + 'fields_options' => [
1754 + 'border' => [
1755 + 'default' => 'none',
1756 + ],
1757 + ],
1758 + ]
1759 + );
1760 +
1761 + $this->add_responsive_control(
1762 + 'king_addons_testimonial_carousel_sw_nav_border_radius',
1763 + [
1764 + 'label' => esc_html__('Border Radius', 'king-addons'),
1765 + 'type' => Controls_Manager::DIMENSIONS,
1766 + 'size_units' => ['px', '%'],
1767 + 'default' => [
1768 + 'top' => 100,
1769 + 'right' => 100,
1770 + 'bottom' => 100,
1771 + 'left' => 100,
1772 + 'unit' => '%',
1773 + ],
1774 + 'selectors' => [
1775 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav-inner' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1776 + ]
1777 + ]
1778 + );
1779 + $this->end_controls_tab();
1780 +
1781 + $this->start_controls_tab(
1782 + 'king_addons_testimonial_carousel_sw_nav_tab_hover',
1783 + [
1784 + 'label' => esc_html__('Hover', 'king-addons'),
1785 + ]
1786 + );
1787 +
1788 + $this->add_control(
1789 + 'king_addons_testimonial_carousel_sw_nav_color_hover',
1790 + [
1791 + 'label' => esc_html__('Color', 'king-addons'),
1792 + 'type' => Controls_Manager::COLOR,
1793 + 'selectors' => [
1794 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav i:hover' => 'color: {{VALUE}};',
1795 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav svg:hover' => 'fill: {{VALUE}};'
1796 + ],
1797 + ]
1798 + );
1799 +
1800 + $this->add_control(
1801 + 'king_addons_testimonial_carousel_sw_nav_bg_color_hover',
1802 + [
1803 + 'label' => esc_html__('Background Color', 'king-addons'),
1804 + 'type' => Controls_Manager::COLOR,
1805 + 'selectors' => [
1806 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav-inner:hover' => 'background-color: {{VALUE}}',
1807 + ],
1808 + ]
1809 + );
1810 +
1811 + $this->add_group_control(
1812 + Group_Control_Box_Shadow::get_type(),
1813 + [
1814 + 'name' => 'king_addons_testimonial_carousel_sw_nav_box_shadow_hover',
1815 + 'selector' => '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav-inner:hover',
1816 + ]
1817 + );
1818 +
1819 + $this->add_group_control(
1820 + Group_Control_Border::get_type(),
1821 + [
1822 + 'name' => 'king_addons_testimonial_carousel_sw_nav_border_hover',
1823 + 'selector' => '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav-inner:hover',
1824 + ]
1825 + );
1826 +
1827 + $this->add_responsive_control(
1828 + 'king_addons_testimonial_carousel_sw_nav_border_radius_hover',
1829 + [
1830 + 'label' => esc_html__('Border Radius', 'king-addons'),
1831 + 'type' => Controls_Manager::DIMENSIONS,
1832 + 'size_units' => ['px', '%'],
1833 + 'selectors' => [
1834 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-nav-inner:hover' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1835 + ]
1836 + ]
1837 + );
1838 +
1839 + $this->end_controls_tab();
1840 +
1841 + $this->end_controls_tabs();
1842 + $this->end_controls_section();
1843 + /** END SECTION: Navigation */
1844 +
1845 + /** SECTION: Pagination */
1846 + $this->start_controls_section(
1847 + 'king_addons_testimonial_carousel_sw_style_section_pag',
1848 + [
1849 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Pagination', 'king-addons'),
1850 + 'tab' => Controls_Manager::TAB_STYLE,
1851 + ]
1852 + );
1853 +
1854 + $this->add_control(
1855 + 'king_addons_testimonial_carousel_sw_pag_color',
1856 + [
1857 + 'label' => esc_html__('Color', 'king-addons'),
1858 + 'type' => Controls_Manager::COLOR,
1859 + 'default' => '#000000',
1860 + 'selectors' => [
1861 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-pagination' => '--swiper-theme-color: {{VALUE}}; --swiper-pagination-fraction-color: {{VALUE}};',
1862 + ],
1863 + ]
1864 + );
1865 +
1866 + $this->add_control(
1867 + 'king_addons_testimonial_carousel_sw_pag_color_second',
1868 + [
1869 + 'label' => esc_html__('Second Color', 'king-addons'),
1870 + 'type' => Controls_Manager::COLOR,
1871 + 'default' => '#00000033',
1872 + 'selectors' => [
1873 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-pagination' => '--swiper-pagination-progressbar-bg-color: {{VALUE}}; --swiper-pagination-bullet-inactive-color: {{VALUE}}; --swiper-pagination-bullet-inactive-opacity: 1;',
1874 + ],
1875 + ]
1876 + );
1877 +
1878 + $this->add_control(
1879 + 'king_addons_testimonial_carousel_sw_pag_bullets_title',
1880 + [
1881 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Bullets type', 'king-addons'),
1882 + 'type' => Controls_Manager::HEADING,
1883 + 'separator' => 'before',
1884 + ]
1885 + );
1886 +
1887 + $this->add_responsive_control(
1888 + 'king_addons_testimonial_carousel_sw_pag_bullets_size',
1889 + [
1890 + 'label' => esc_html__('Size', 'king-addons'),
1891 + 'type' => Controls_Manager::NUMBER,
1892 + 'min' => 0,
1893 + 'step' => 1,
1894 + 'default' => 8,
1895 + 'selectors' => [
1896 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-pagination' => '--swiper-pagination-bullet-size: {{SIZE}}px;'
1897 + ],
1898 + ]
1899 + );
1900 +
1901 + $this->add_responsive_control(
1902 + 'king_addons_testimonial_carousel_sw_pag_bullets_gap',
1903 + [
1904 + 'label' => esc_html__('Bullets gap', 'king-addons'),
1905 + 'type' => Controls_Manager::NUMBER,
1906 + 'min' => 0,
1907 + 'step' => 1,
1908 + 'default' => 4,
1909 + 'selectors' => [
1910 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-pagination' => '--swiper-pagination-bullet-horizontal-gap: {{SIZE}}px;'
1911 + ],
1912 + ]
1913 + );
1914 +
1915 + $this->add_control(
1916 + 'king_addons_testimonial_carousel_sw_pag_progressbar_title',
1917 + [
1918 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Progress bar type', 'king-addons'),
1919 + 'type' => Controls_Manager::HEADING,
1920 + 'separator' => 'before',
1921 + ]
1922 + );
1923 +
1924 + $this->add_responsive_control(
1925 + 'king_addons_testimonial_carousel_sw_pag_progressbar_size',
1926 + [
1927 + 'label' => esc_html__('Size', 'king-addons'),
1928 + 'type' => Controls_Manager::NUMBER,
1929 + 'min' => 0,
1930 + 'step' => 1,
1931 + 'default' => 4,
1932 + 'selectors' => [
1933 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-pagination' => '--swiper-pagination-progressbar-size: {{SIZE}}px;'
1934 + ],
1935 + ]
1936 + );
1937 +
1938 + $this->add_control(
1939 + 'king_addons_testimonial_carousel_sw_pag_fraction_title',
1940 + [
1941 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Fraction type', 'king-addons'),
1942 + 'type' => Controls_Manager::HEADING,
1943 + 'separator' => 'before',
1944 + ]
1945 + );
1946 +
1947 + $this->add_group_control(
1948 + Group_Control_Typography::get_type(),
1949 + [
1950 + 'name' => 'king_addons_testimonial_carousel_sw_pag_fraction_typography',
1951 + 'selector' => '{{WRAPPER}} .king-addons-testimonial-carousel-sw-pagination.swiper-pagination-fraction',
1952 + ]
1953 + );
1954 +
1955 + $this->end_controls_section();
1956 + /** END SECTION: Pagination */
1957 +
1958 + /** SECTION: Whole Carousel */
1959 + $this->start_controls_section(
1960 + 'king_addons_testimonial_carousel_sw_style_section_whole_carousel',
1961 + [
1962 + 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Whole Carousel', 'king-addons'),
1963 + 'tab' => Controls_Manager::TAB_STYLE,
1964 + ]
1965 + );
1966 +
1967 + $this->add_group_control(
1968 + Group_Control_Background::get_type(),
1969 + [
1970 + 'name' => 'king_addons_testimonial_carousel_sw_whole_carousel_bg',
1971 + 'selector' => '{{WRAPPER}} .king-addons-testimonial-carousel-sw-items'
1972 + ]
1973 + );
1974 +
1975 + $this->add_responsive_control(
1976 + 'king_addons_testimonial_carousel_sw_whole_carousel_margin',
1977 + [
1978 + 'label' => esc_html__('Whole carousel margin', 'king-addons'),
1979 + 'type' => Controls_Manager::DIMENSIONS,
1980 + 'size_units' => ['px', '%'],
1981 + 'default' => [
1982 + 'top' => 0,
1983 + 'right' => 42,
1984 + 'bottom' => 0,
1985 + 'left' => 42,
1986 + 'unit' => 'px',
1987 + ],
1988 + 'tablet_default' => [
1989 + 'top' => 0,
1990 + 'right' => 0,
1991 + 'bottom' => 0,
1992 + 'left' => 0,
1993 + 'unit' => 'px',
1994 + ],
1995 + 'mobile_default' => [
1996 + 'top' => 0,
1997 + 'right' => 0,
1998 + 'bottom' => 0,
1999 + 'left' => 0,
2000 + 'unit' => 'px',
2001 + ],
2002 + 'selectors' => [
2003 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-items' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2004 + ]
2005 + ]
2006 + );
2007 +
2008 + $this->add_responsive_control(
2009 + 'king_addons_testimonial_carousel_sw_whole_carousel_margin_wrapper',
2010 + [
2011 + 'label' => esc_html__('Cards wrapper margin', 'king-addons'),
2012 + 'type' => Controls_Manager::DIMENSIONS,
2013 + 'size_units' => ['px', '%'],
2014 + 'default' => [
2015 + 'top' => 0,
2016 + 'right' => 0,
2017 + 'bottom' => 0,
2018 + 'left' => 0,
2019 + 'unit' => 'px',
2020 + ],
2021 + 'tablet_default' => [
2022 + 'top' => 0,
2023 + 'right' => 0,
2024 + 'bottom' => 0,
2025 + 'left' => 0,
2026 + 'unit' => 'px',
2027 + ],
2028 + 'mobile_default' => [
2029 + 'top' => 0,
2030 + 'right' => 0,
2031 + 'bottom' => 0,
2032 + 'left' => 0,
2033 + 'unit' => 'px',
2034 + ],
2035 + 'selectors' => [
2036 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-items .swiper-wrapper' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2037 + ]
2038 + ]
2039 + );
2040 +
2041 + $this->add_responsive_control(
2042 + 'king_addons_testimonial_carousel_sw_whole_carousel_padding',
2043 + [
2044 + 'label' => esc_html__('Padding', 'king-addons'),
2045 + 'type' => Controls_Manager::DIMENSIONS,
2046 + 'size_units' => ['px', '%'],
2047 + 'default' => [
2048 + 'top' => 15,
2049 + 'right' => 15,
2050 + 'bottom' => 56,
2051 + 'left' => 15,
2052 + 'unit' => 'px',
2053 + ],
2054 + 'selectors' => [
2055 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-items' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2056 + ]
2057 + ]
2058 + );
2059 +
2060 + $this->add_group_control(
2061 + Group_Control_Box_Shadow::get_type(),
2062 + [
2063 + 'name' => 'king_addons_testimonial_carousel_sw_whole_carousel_box_shadow',
2064 + 'selector' => '{{WRAPPER}} .king-addons-testimonial-carousel-sw-items',
2065 + ]
2066 + );
2067 +
2068 + $this->add_group_control(
2069 + Group_Control_Border::get_type(),
2070 + [
2071 + 'name' => 'king_addons_testimonial_carousel_sw_whole_carousel_border',
2072 + 'selector' => '{{WRAPPER}} .king-addons-testimonial-carousel-sw-items',
2073 + 'fields_options' => [
2074 + 'border' => [
2075 + 'default' => 'none',
2076 + ],
2077 + ],
2078 + ]
2079 + );
2080 +
2081 + $this->add_responsive_control(
2082 + 'king_addons_testimonial_carousel_sw_whole_carousel_border_radius',
2083 + [
2084 + 'label' => esc_html__('Border Radius', 'king-addons'),
2085 + 'type' => Controls_Manager::DIMENSIONS,
2086 + 'size_units' => ['px', '%'],
2087 + 'default' => [
2088 + 'top' => 0,
2089 + 'right' => 0,
2090 + 'bottom' => 0,
2091 + 'left' => 0,
2092 + 'unit' => 'px',
2093 + ],
2094 + 'selectors' => [
2095 + '{{WRAPPER}} .king-addons-testimonial-carousel-sw-items' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
2096 + ]
2097 + ]
2098 + );
2099 +
2100 + $this->end_controls_section();
2101 + /** END SECTION: Whole Carousel */
2102 + }
2103 +
2104 + protected function render(): void
2105 + {
2106 + $settings_all = Core::displaySettings($this);
2107 + $this_ID = $this->get_id();
2108 +
2109 + // Define allowed tags and attributes
2110 + $allowed_tags = wp_kses_allowed_html('post');
2111 + $allowed_tags['img']['srcset'] = true;
2112 + $allowed_tags['img']['sizes'] = true;
2113 + $allowed_tags['img']['decoding'] = true;
2114 + $allowed_tags['img']['loading'] = true;
2115 +
2116 + $layout = $settings_all['king_addons_testimonial_carousel_layout'];
2117 +
2118 + /** START: Cards Container ===================== */
2119 + ?>
2120 + <div class="king-addons-testimonial-carousel-sw-items-wrap">
2121 + <div class="king-addons-testimonial-carousel-sw-items king-addons-testimonial-carousel-sw-items-<?php echo esc_attr($this_ID); ?> swiper-container swiper">
2122 + <div class="swiper-wrapper<?php if ('yes' === $settings_all['king_addons_testimonial_carousel_sw_autoplay_like_ticker_switcher']) {
2123 + echo ' king-addons-testimonial-carousel-sw-autoplay-like-ticker';
2124 + } ?>">
2125 + <?php
2126 +
2127 + foreach ($settings_all['king_addons_testimonial_carousel_content_items'] as $settings) {
2128 +
2129 + $title = $settings['king_addons_testimonial_carousel_title'];
2130 + $subtitle = $settings['king_addons_testimonial_carousel_subtitle'];
2131 + $description = $settings['king_addons_testimonial_carousel_description'];
2132 +
2133 + echo '<div class="swiper-slide">';
2134 + echo '<div class="king-addons-testimonial-carousel-layout king-addons-testimonial-carousel-' . esc_attr($layout) . '">';
2135 +
2136 + if ($layout === 'layout-1') {
2137 +
2138 + $this->renderImage($settings_all, $settings, $allowed_tags);
2139 +
2140 + echo '<div class="king-addons-testimonial-carousel-content">';
2141 +
2142 + $this->renderDescription($description);
2143 +
2144 + $this->renderStars($settings_all, $settings);
2145 +
2146 + $this->renderPerson($title, $subtitle);
2147 +
2148 + echo '</div>';
2149 + }
2150 +
2151 + if ($layout === 'layout-2') {
2152 +
2153 + echo '<div class="king-addons-testimonial-carousel-content">';
2154 +
2155 + $this->renderDescription($description);
2156 +
2157 + $this->renderPerson($title, $subtitle);
2158 +
2159 + $this->renderStars($settings_all, $settings);
2160 +
2161 + echo '</div>';
2162 +
2163 + $this->renderImage($settings_all, $settings, $allowed_tags);
2164 + }
2165 +
2166 + if ($layout === 'layout-3') {
2167 +
2168 + $this->renderDescription($description);
2169 +
2170 + $this->renderImage($settings_all, $settings, $allowed_tags);
2171 +
2172 + $this->renderPerson($title, $subtitle);
2173 +
2174 + $this->renderStars($settings_all, $settings);
2175 +
2176 + }
2177 +
2178 + if ($layout === 'layout-4') {
2179 +
2180 + $this->renderImage($settings_all, $settings, $allowed_tags);
2181 +
2182 + echo '<div class="king-addons-testimonial-carousel-content">';
2183 +
2184 + $this->renderDescription($description);
2185 +
2186 + $this->renderStars($settings_all, $settings);
2187 +
2188 + $this->renderPerson($title, $subtitle);
2189 +
2190 + echo '</div>';
2191 + }
2192 +
2193 + if ($layout === 'layout-5') {
2194 +
2195 + echo '<div class="king-addons-testimonial-carousel-content">';
2196 +
2197 + $this->renderDescription($description);
2198 +
2199 + $this->renderStars($settings_all, $settings);
2200 +
2201 + $this->renderPerson($title, $subtitle);
2202 +
2203 + echo '</div>';
2204 +
2205 + $this->renderImage($settings_all, $settings, $allowed_tags);
2206 + }
2207 +
2208 + if ($layout === 'layout-6') {
2209 +
2210 + $this->renderDescription($description);
2211 +
2212 + echo '<div class="king-addons-testimonial-carousel-content">';
2213 +
2214 + $this->renderImage($settings_all, $settings, $allowed_tags);
2215 +
2216 + echo '<div class="king-addons-testimonial-carousel-content-inner">';
2217 +
2218 + $this->renderPerson($title, $subtitle);
2219 +
2220 + $this->renderStars($settings_all, $settings);
2221 +
2222 + echo '</div>';
2223 +
2224 + echo '</div>';
2225 + }
2226 +
2227 + if ($layout === 'layout-7') {
2228 +
2229 + echo '<div class="king-addons-testimonial-carousel-content">';
2230 +
2231 + $this->renderImage($settings_all, $settings, $allowed_tags);
2232 +
2233 + echo '<div class="king-addons-testimonial-carousel-content-inner">';
2234 +
2235 + $this->renderPerson($title, $subtitle);
2236 +
2237 + $this->renderStars($settings_all, $settings);
2238 +
2239 + echo '</div>';
2240 +
2241 + echo '</div>';
2242 +
2243 + $this->renderDescription($description);
2244 + }
2245 +
2246 + if ($layout === 'layout-8') {
2247 +
2248 + $this->renderImage($settings_all, $settings, $allowed_tags);
2249 +
2250 + echo '<div class="king-addons-testimonial-carousel-content">';
2251 +
2252 + $this->renderDescription($description);
2253 +
2254 + $this->renderStars($settings_all, $settings);
2255 +
2256 + $this->renderPerson($title, $subtitle);
2257 +
2258 + echo '</div>';
2259 + }
2260 +
2261 + echo '</div>';
2262 + echo '</div>';
2263 + // END: foreach
2264 + } ?>
2265 + </div>
2266 + </div>
2267 + <?php
2268 +
2269 + // pagination
2270 + if ('yes' === $settings_all['king_addons_testimonial_carousel_sw_pag_switcher']) {
2271 + echo '<div class="swiper-pagination king-addons-testimonial-carousel-sw-pagination king-addons-testimonial-carousel-sw-pagination-' .
2272 + esc_attr($this_ID) .
2273 + (('yes' === $settings_all['king_addons_testimonial_carousel_sw_autoplay_like_ticker_switcher']) ? ' king-addons-testimonial-carousel-sw-autoplay-like-ticker-pag' : '') .
2274 + '"></div>';
2275 + }
2276 +
2277 + // navigation
2278 + if ('yes' === $settings_all['king_addons_testimonial_carousel_sw_nav_switcher']) {
2279 +
2280 + echo '<div class="king-addons-testimonial-carousel-sw-nav-prev king-addons-testimonial-carousel-sw-nav-prev-' . esc_attr($this_ID) . ' king-addons-testimonial-carousel-sw-nav">';
2281 + echo '<div class="king-addons-testimonial-carousel-sw-nav-inner">';
2282 + Icons_Manager::render_icon($settings_all['king_addons_testimonial_carousel_sw_nav_icon_prev']);
2283 + echo '</div>';
2284 + echo '</div>';
2285 +
2286 + echo '<div class="king-addons-testimonial-carousel-sw-nav-next king-addons-testimonial-carousel-sw-nav-next-' . esc_attr($this_ID) . ' king-addons-testimonial-carousel-sw-nav">';
2287 + echo '<div class="king-addons-testimonial-carousel-sw-nav-inner">';
2288 + Icons_Manager::render_icon($settings_all['king_addons_testimonial_carousel_sw_nav_icon_next']);
2289 + echo '</div>';
2290 + echo '</div>';
2291 +
2292 + }
2293 + ?>
2294 + </div>
2295 + <?php
2296 +
2297 + $js_swiper_check_if_DOM_already_loaded = "document.readyState === 'complete'";
2298 + $js_swiper_check_if_DOM_not_already_loaded = "window.addEventListener('load', function () {";
2299 +
2300 + $js_swiper = "new Swiper('.king-addons-testimonial-carousel-sw-items-" . esc_js($this_ID) . "', {";
2301 + $js_swiper .= "direction: 'horizontal',";
2302 +
2303 + $js_swiper .= "slidesPerView: " . Core::jsNumber($settings_all, 'king_addons_testimonial_carousel_sw_desktop_cards_per_view', 3) . ",";
2304 + $js_swiper .= "spaceBetween: " . Core::jsNumber($settings_all, 'king_addons_testimonial_carousel_sw_desktop_space_between_cards', 30) . ",";
2305 +
2306 + // Responsive breakpoints
2307 + $js_swiper .= 'breakpoints: {0: {slidesPerView: ' .
2308 + Core::jsNumber($settings_all, 'king_addons_testimonial_carousel_sw_mobile_cards_per_view', 1) . ', spaceBetween: ' .
2309 + Core::jsNumber($settings_all, 'king_addons_testimonial_carousel_sw_mobile_space_between_cards', 30) . '}, ';
2310 + $js_swiper .=
2311 + (Core::jsNumber($settings_all, 'king_addons_testimonial_carousel_sw_mobile_breakpoint', 767) + 1) . ': {slidesPerView: ' .
2312 + Core::jsNumber($settings_all, 'king_addons_testimonial_carousel_sw_tablet_cards_per_view', 2) . ', spaceBetween: ' .
2313 + Core::jsNumber($settings_all, 'king_addons_testimonial_carousel_sw_tablet_space_between_cards', 30) . '}, ';
2314 + $js_swiper .=
2315 + (Core::jsNumber($settings_all, 'king_addons_testimonial_carousel_sw_tablet_breakpoint', 1024) + 1) . ': {slidesPerView: ' .
2316 + Core::jsNumber($settings_all, 'king_addons_testimonial_carousel_sw_desktop_cards_per_view', 3) . ', spaceBetween: ' .
2317 + Core::jsNumber($settings_all, 'king_addons_testimonial_carousel_sw_desktop_space_between_cards', 30) . '}},';
2318 +
2319 + // Scrolling speed
2320 + if ('yes' !== $settings_all['king_addons_testimonial_carousel_sw_autoplay_like_ticker_switcher']) {
2321 + $js_swiper .= "speed: " . Core::jsNumber($settings_all, 'king_addons_testimonial_carousel_sw_scrolling_speed', 600) . ",";
2322 + } else {
2323 + $js_swiper .= "speed: " . Core::jsNumber($settings_all, 'king_addons_testimonial_carousel_sw_autoplay_like_ticker_autoplay_speed', 6000) . ",";
2324 + }
2325 +
2326 + // Pagination
2327 + if ('yes' === $settings_all['king_addons_testimonial_carousel_sw_pag_switcher']) {
2328 + $js_swiper .= "pagination: {el: '.king-addons-testimonial-carousel-sw-pagination-" .
2329 + esc_js($this_ID) . "', " .
2330 + ('yes' === $settings_all['king_addons_testimonial_carousel_sw_pag_clickable_switcher'] ? 'clickable: true, ' : '');
2331 + if ('yes' === $settings_all['king_addons_testimonial_carousel_sw_pag_dynamic_switcher']) {
2332 + $js_swiper .= 'dynamicBullets: true, ';
2333 + $js_swiper .= 'dynamicMainBullets: ' . Core::jsNumber($settings_all, 'king_addons_testimonial_carousel_sw_pag_dynamic_number', 1) . ', ';
2334 + }
2335 + $js_swiper .= "type: '" . esc_js($settings_all['king_addons_testimonial_carousel_sw_pag_type']) . "'},";
2336 + }
2337 +
2338 + // Navigation
2339 + if ('yes' === $settings_all['king_addons_testimonial_carousel_sw_nav_switcher']) {
2340 + $js_swiper .= "navigation: {nextEl: '.king-addons-testimonial-carousel-sw-nav-next-" .
2341 + esc_js($this_ID) . "', prevEl: '.king-addons-testimonial-carousel-sw-nav-prev-" .
2342 + esc_js($this_ID) . "'},";
2343 + }
2344 +
2345 + // Loop
2346 + if ('yes' === $settings_all['king_addons_testimonial_carousel_sw_loop_switcher']) {
2347 + $js_swiper .= "loop: true,";
2348 + }
2349 +
2350 + // Rewind
2351 + if ('yes' === $settings_all['king_addons_testimonial_carousel_sw_rewind_switcher']) {
2352 + $js_swiper .= "rewind: true,";
2353 + }
2354 +
2355 + // Autoplay
2356 + if ('yes' === $settings_all['king_addons_testimonial_carousel_sw_autoplay_switcher']) {
2357 + $js_swiper .= "autoplay: {";
2358 + if ('yes' !== $settings_all['king_addons_testimonial_carousel_sw_autoplay_like_ticker_switcher']) {
2359 + $js_swiper .= "delay: " . Core::jsNumber($settings_all, 'king_addons_testimonial_carousel_sw_autoplay_delay', 3000) . ",";
2360 + } else {
2361 + $js_swiper .= "delay: 0,";
2362 + }
2363 + $js_swiper .= "disableOnInteraction: " . ('yes' === $settings_all['king_addons_testimonial_carousel_sw_autoplay_disableoninteraction_switcher'] ? 'true' : 'false') . ",";
2364 + $js_swiper .= "pauseOnMouseEnter: " . ('yes' === $settings_all['king_addons_testimonial_carousel_sw_autoplay_pausedonmouseenter_switcher'] ? 'true' : 'false') . ",";
2365 + $js_swiper .= "reverseDirection: " . ('yes' === $settings_all['king_addons_testimonial_carousel_sw_autoplay_reversedirection_switcher'] ? 'true' : 'false') . ",";
2366 + $js_swiper .= "},";
2367 + }
2368 +
2369 + $js_swiper .= "})";
2370 +
2371 + Core::printFitSlidesHelper();
2372 + $js_swiper = Core::wrapFitSwiper('.king-addons-testimonial-carousel-sw-items-' . $this_ID, $js_swiper, 240);
2373 +
2374 + $js_swiper_full = $js_swiper_check_if_DOM_already_loaded . ' ?' . $js_swiper . ' : ' . $js_swiper_check_if_DOM_not_already_loaded . $js_swiper . '; });';
2375 +
2376 + wp_print_inline_script_tag($js_swiper_full);
2377 + /** END: Cards Container ===================== */
2378 +
2379 +
2380 + }
2381 +
2382 + public function renderImage($settings_all, $settings, $allowed_tags): void
2383 + {
2384 + if ($settings_all['king_addons_testimonial_carousel_image_switcher'] == 'yes') {
2385 + $image = Group_Control_Image_Size::get_attachment_image_html($settings, 'king_addons_testimonial_carousel_image_size', 'king_addons_testimonial_carousel_image');
2386 + echo '<div class="king-addons-testimonial-carousel-image">';
2387 + echo wp_kses($image, $allowed_tags);
2388 + echo '</div>';
2389 + }
2390 + }
2391 +
2392 + public function renderPerson($title, $subtitle): void
2393 + {
2394 + echo '<div class="king-addons-testimonial-carousel-person-wrapper">';
2395 +
2396 + echo '<div class="king-addons-testimonial-carousel-title">';
2397 + echo esc_html($title);
2398 + echo '</div>';
2399 +
2400 + echo '<div class="king-addons-testimonial-carousel-subtitle">';
2401 + echo esc_html($subtitle);
2402 + echo '</div>';
2403 +
2404 + echo '</div>';
2405 + }
2406 +
2407 + public function renderDescription($description): void
2408 + {
2409 + echo '<div class="king-addons-testimonial-carousel-description">';
2410 + echo wp_kses_post($description);
2411 + echo '</div>';
2412 + }
2413 +
2414 + public function renderStars($settings_all, $settings): void
2415 + {
2416 + if ($settings_all['king_addons_testimonial_carousel_rating_switcher'] == 'yes') {
2417 + echo '<div class="king-addons-testimonial-carousel-stars">';
2418 + echo '<div class="king-addons-testimonial-carousel-rating-general">';
2419 + $this->renderRating($settings_all, $settings);
2420 + echo '</div>';
2421 + echo '</div>';
2422 + }
2423 + }
2424 +
2425 + protected function get_rating_value($settings_all, $settings): float
2426 + {
2427 + $initial_value = $this->get_rating_scale($settings_all);
2428 + $rating_value = $settings['king_addons_testimonial_carousel_rating_value'];
2429 +
2430 + if ('' === $rating_value) {
2431 + $rating_value = $initial_value;
2432 + }
2433 +
2434 + $rating_value = floatval($rating_value);
2435 +
2436 + return round($rating_value, 2);
2437 + }
2438 +
2439 + protected function get_rating_scale($settings_all): int
2440 + {
2441 + return intval($settings_all['king_addons_testimonial_carousel_rating_scale']['size']);
2442 + }
2443 +
2444 + protected function get_icon_marked_width($settings_all, $settings, $icon_index): string
2445 + {
2446 + $rating_value = $this->get_rating_value($settings_all, $settings);
2447 +
2448 + $width = '0%';
2449 +
2450 + if ($rating_value >= $icon_index) {
2451 + $width = '100%';
2452 + } elseif (intval(ceil($rating_value)) === $icon_index) {
2453 + $width = ($rating_value - ($icon_index - 1)) * 100 . '%';
2454 + }
2455 +
2456 + return $width;
2457 + }
2458 +
2459 + protected function get_icon_markup($settings_all, $settings): string
2460 + {
2461 + $icon = $settings_all['king_addons_testimonial_carousel_rating_icon'];
2462 + $rating_scale = $this->get_rating_scale($settings_all);
2463 +
2464 + ob_start();
2465 +
2466 + for ($index = 1; $index <= $rating_scale; $index++) {
2467 + echo '<div class="king-addons-testimonial-carousel-icon">';
2468 +
2469 + $icon_marked_width = $this->get_icon_marked_width($settings_all, $settings, $index);
2470 +
2471 + $style_attribute = $icon_marked_width !== '100%' ? 'style="--king-addons-testimonial-carousel-rating-icon-marked-width: ' . esc_attr($icon_marked_width) . ';"' : '';
2472 +
2473 + echo '<div class="king-addons-testimonial-carousel-icon-wrapper king-addons-testimonial-carousel-icon-marked" ' . $style_attribute . '>';
2474 + echo Icons_Manager::try_get_icon_html($icon, ['aria-hidden' => 'true']);
2475 + echo '</div>';
2476 +
2477 + echo '<div class="king-addons-testimonial-carousel-icon-wrapper king-addons-testimonial-carousel-icon-unmarked">';
2478 + echo Icons_Manager::try_get_icon_html($icon, ['aria-hidden' => 'true']);
2479 + echo '</div>';
2480 +
2481 + echo '</div>';
2482 + }
2483 +
2484 + return ob_get_clean();
2485 + }
2486 +
2487 + protected function renderRating($settings_all, $settings): void
2488 + {
2489 + $rating_value = $this->get_rating_value($settings_all, $settings);
2490 + $rating_scale = $this->get_rating_scale($settings_all);
2491 + $aria_label = sprintf(
2492 + esc_html__('Rated %1$s out of %2$s', 'king-addons'),
2493 + $rating_value,
2494 + $rating_scale
2495 + );
2496 +
2497 + echo '<div class="king-addons-testimonial-carousel-rating" itemtype="https://schema.org/Rating" itemscope itemprop="reviewRating">';
2498 + ?>
2499 + <meta itemprop="worstRating" content="0">
2500 + <meta itemprop="bestRating"
2501 + content="<?php echo esc_attr($rating_scale); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2502 + ?>">
2503 + <div class="king-addons-testimonial-carousel-rating-wrapper" itemprop="ratingValue"
2504 + content="<?php echo esc_attr($rating_value); ?>" role="img"
2505 + aria-label="<?php echo esc_attr($aria_label); ?>">
2506 + <?php echo $this->get_icon_markup($settings_all, $settings); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2507 + ?>
2508 + </div>
2509 + <?php
2510 + echo '</div>';
2511 + }
2512 +}