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

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

2,209 lines 75.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php /** @noinspection PhpUnused */
2
3 namespace King_Addons;
4
5 use Elementor\Controls_Manager;
6 use Elementor\Icons_Manager;
7 use Elementor\Widget_Base;
8 use Elementor\Group_Control_Typography;
9 use Elementor\Group_Control_Background;
10 use Elementor\Group_Control_Image_Size;
11 use Elementor\Group_Control_Border;
12 use Elementor\Group_Control_Box_Shadow;
13 use Elementor\Group_Control_Css_Filter;
14 use Elementor\Utils;
15
16 if (!defined('ABSPATH')) {
17 exit; // Exit if accessed directly.
18 }
19
20
21
22 class Team_Member extends Widget_Base
23 {
24
25
26 public function get_name(): string
27 {
28 return 'king-addons-team-member';
29 }
30
31 public function get_title(): string
32 {
33 return esc_html__('Team Member', 'king-addons');
34 }
35
36 public function get_icon(): string
37 {
38 return 'king-addons-icon king-addons-team-member';
39 }
40
41 public function get_style_depends(): array
42 {
43 return [
44 KING_ADDONS_ASSETS_UNIQUE_KEY . '-team-member-style',
45 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-general',
46 KING_ADDONS_ASSETS_UNIQUE_KEY . '-animation-button',
47 KING_ADDONS_ASSETS_UNIQUE_KEY . '-general-general',
48 ];
49 }
50
51 public function get_categories(): array
52 {
53 return ['king-addons'];
54 }
55
56 public function get_keywords(): array
57 {
58 return ['team member', 'team', 'member', 'social', 'names', 'roles', 'photos',
59 'social media', 'links', 'social media links', 'king addons', 'king', 'addons', 'kingaddons', 'king-addons'];
60 }
61
62 public function get_custom_help_url()
63 {
64 return 'mailto:bug@kingaddons.com?subject=Bug Report - King Addons&body=Please describe the issue';
65 }
66
67 public function add_section_layout()
68 {
69 $this->start_controls_section(
70 'tm_section_layout',
71 [
72 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Layout', 'king-addons'),
73 ]
74 );
75
76 $this->add_control(
77 'member_name_location',
78 [
79 'type' => Controls_Manager::SELECT,
80 'label' => esc_html__('Name Location', 'king-addons'),
81 'default' => 'below',
82 'options' => [
83 'over' => esc_html__('Over Image', 'king-addons'),
84 'below' => esc_html__('Below Image', 'king-addons'),
85 ],
86 ]
87 );
88
89 $this->add_control(
90 'member_job_location',
91 [
92 'type' => Controls_Manager::SELECT,
93 'label' => esc_html__('Job Location', 'king-addons'),
94 'default' => 'below',
95 'options' => [
96 'over' => esc_html__('Over Image', 'king-addons'),
97 'below' => esc_html__('Below Image', 'king-addons'),
98 ],
99 ]
100 );
101
102 $this->add_control(
103 'member_divider_location',
104 [
105 'type' => Controls_Manager::SELECT,
106 'label' => esc_html__('Divider Location', 'king-addons'),
107 'default' => 'below',
108 'options' => [
109 'over' => esc_html__('Over Image', 'king-addons'),
110 'below' => esc_html__('Below Image', 'king-addons'),
111 ],
112 'condition' => [
113 'member_divider' => 'yes',
114 ],
115 ]
116 );
117
118 $this->add_control(
119 'member_description_location',
120 [
121 'type' => Controls_Manager::SELECT,
122 'label' => esc_html__('Description Location', 'king-addons'),
123 'default' => 'below',
124 'options' => [
125 'over' => esc_html__('Over Image', 'king-addons'),
126 'below' => esc_html__('Below Image', 'king-addons'),
127 ],
128 ]
129 );
130
131 $this->add_control(
132 'member_social_media_location',
133 [
134 'type' => Controls_Manager::SELECT,
135 'label' => esc_html__('Socials Location', 'king-addons'),
136 'default' => 'below',
137 'options' => [
138 'over' => esc_html__('Over Image', 'king-addons'),
139 'below' => esc_html__('Below Image', 'king-addons'),
140 ],
141 'condition' => [
142 'social_media' => 'yes',
143 ],
144 ]
145 );
146
147 $this->add_control(
148 'member_btn_location',
149 [
150 'type' => Controls_Manager::SELECT,
151 'label' => esc_html__('Button Location', 'king-addons'),
152 'default' => 'below',
153 'options' => [
154 'over' => esc_html__('Over Image', 'king-addons'),
155 'below' => esc_html__('Below Image', 'king-addons'),
156 ],
157 'condition' => [
158 'member_btn' => 'yes',
159 ],
160 ]
161 );
162
163 $this->add_control(
164 'content_vertical_align',
165 [
166 'label' => esc_html__('Vertical Align', 'king-addons'),
167 'type' => Controls_Manager::CHOOSE,
168 'label_block' => false,
169 'default' => 'middle',
170 'options' => [
171 'top' => [
172 'title' => esc_html__('Top', 'king-addons'),
173 'icon' => 'eicon-v-align-top',
174 ],
175 'middle' => [
176 'title' => esc_html__('Middle', 'king-addons'),
177 'icon' => 'eicon-v-align-middle',
178 ],
179 'bottom' => [
180 'title' => esc_html__('Bottom', 'king-addons'),
181 'icon' => 'eicon-v-align-bottom',
182 ]
183 ],
184 'selectors' => [
185 '{{WRAPPER}} .king-addons-cv-inner' => 'vertical-align: {{VALUE}}',
186 ]
187 ]
188 );
189
190
191
192
193 $this->end_controls_section();
194
195
196 }
197
198 public function add_section_image_overlay()
199 {
200 $this->start_controls_section(
201 'tm_section_image_overlay',
202 [
203 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Overlay', 'king-addons'),
204 ]
205 );
206
207 $this->add_control(
208 'overlay_animation',
209 [
210 'label' => esc_html__('Select Animation', 'king-addons'),
211 'type' => 'king-addons-animations-alt',
212 'default' => 'none',
213 ]
214 );
215
216 $this->add_control(
217 'overlay_anim_size',
218 [
219 'type' => Controls_Manager::SELECT,
220 'label' => esc_html__('Animation Size', 'king-addons'),
221 'default' => 'large',
222 'options' => [
223 'small' => esc_html__('Small', 'king-addons'),
224 'medium' => esc_html__('Medium', 'king-addons'),
225 'large' => esc_html__('Large', 'king-addons'),
226 ],
227 'condition' => [
228 'overlay_animation!' => 'none',
229 ],
230 ]
231 );
232
233 $this->add_control(
234 'overlay_anim_duration',
235 [
236 'label' => esc_html__('Animation Duration (ms)', 'king-addons'),
237 'type' => Controls_Manager::NUMBER,
238 'default' => 300,
239 'min' => 0,
240 'step' => 50,
241 'selectors' => [
242 '{{WRAPPER}} .king-addons-team-member-animation .king-addons-cv-outer' => '-webkit-transition-duration: {{VALUE}}ms;transition-duration: {{VALUE}}ms;',
243 ],
244 'condition' => [
245 'overlay_animation!' => 'none',
246 ],
247 ]
248 );
249
250 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
251 $this->add_control(
252 'team_member_pro_notice',
253 [
254 'type' => Controls_Manager::RAW_HTML,
255 'raw' => 'Advanced overlay animations are available in the <strong><a href="https://kingaddons.com/pricing/?utm_source=kng-module-team-member-settings-upgrade-pro&utm_medium=plugin&utm_campaign=kng" target="_blank">Pro version</a></strong>',
256 'content_classes' => 'king-addons-pro-notice',
257 ]
258 );
259 }
260
261 $this->end_controls_section();
262 }
263
264 public function add_section_style_overlay()
265 {
266 $this->start_controls_section(
267 'section_style_overlay',
268 [
269 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Overlay', 'king-addons'),
270 'tab' => Controls_Manager::TAB_STYLE,
271 ]
272 );
273
274 $this->add_control(
275 'image_overlay_section',
276 [
277 'label' => esc_html__('Image Overlay', 'king-addons'),
278 'type' => Controls_Manager::HEADING,
279 'separator' => 'before',
280 ]
281 );
282
283 $this->add_group_control(
284 Group_Control_Background::get_type(),
285 [
286 'name' => 'image_overlay_bg_color',
287 'types' => ['classic', 'gradient'],
288 'selector' => '{{WRAPPER}} .king-addons-member-overlay',
289 'fields_options' => [
290 'color' => [
291 'default' => 'rgba(255, 255, 255, 0.8)',
292 ],
293 'background' => [
294 'default' => 'classic',
295 ]
296 ],
297
298 ]
299 );
300
301 $this->add_group_control(
302 Group_Control_Border::get_type(),
303 [
304 'name' => 'overlay_border',
305 'label' => esc_html__('Border', 'king-addons'),
306 'default' => 'solid',
307 'fields_options' => [
308 'color' => [
309 'default' => '#E8E8E8',
310 ],
311 'width' => [
312 'default' => [
313 'top' => '1',
314 'right' => '1',
315 'bottom' => '1',
316 'left' => '1',
317 'isLinked' => true,
318 ],
319 ],
320 ],
321 'selector' => '{{WRAPPER}} .king-addons-member-overlay',
322 'separator' => 'before',
323 ]
324 );
325
326 $this->add_responsive_control(
327 'image_overlay_padding',
328 [
329 'label' => esc_html__('Padding', 'king-addons'),
330 'type' => Controls_Manager::DIMENSIONS,
331 'default' => [
332 'top' => 10,
333 'right' => 10,
334 'bottom' => 10,
335 'left' => 10,
336 ],
337 'size_units' => ['px'],
338 'selectors' => [
339 '{{WRAPPER}} .king-addons-member-overlay-content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
340 ],
341 'separator' => 'before',
342 ]
343 );
344
345 $this->end_controls_section();
346 }
347
348 protected function register_controls()
349 {
350
351 $this->start_controls_section(
352 'section_content',
353 [
354 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Content', 'king-addons'),
355 ]
356 );
357
358 $this->add_control(
359 'member_image',
360 [
361 'label' => esc_html__('Image', 'king-addons'),
362 'type' => Controls_Manager::MEDIA,
363 'dynamic' => [
364 'active' => true,
365 ],
366 'default' => [
367 'url' => Utils::get_placeholder_image_src(),
368 ],
369 ]
370 );
371
372 $this->add_control(
373 'member_name',
374 [
375 'label' => esc_html__('Name', 'king-addons'),
376 'type' => Controls_Manager::TEXT,
377 'dynamic' => [
378 'active' => true,
379 ],
380 'default' => esc_html__('John Doe', 'king-addons'),
381 ]
382 );
383
384 $this->add_control(
385 'member_name_tag',
386 [
387 'type' => Controls_Manager::SELECT,
388 'label' => esc_html__('HTML Tag', 'king-addons'),
389 'default' => 'h3',
390 'options' => [
391 'h1' => esc_html__('H1', 'king-addons'),
392 'h2' => esc_html__('H2', 'king-addons'),
393 'h3' => esc_html__('H3', 'king-addons'),
394 'h4' => esc_html__('H4', 'king-addons'),
395 'h5' => esc_html__('H5', 'king-addons'),
396 'h6' => esc_html__('H6', 'king-addons'),
397 'div' => esc_html__('div', 'king-addons'),
398 'span' => esc_html__('span', 'king-addons'),
399 'p' => esc_html__('p', 'king-addons'),
400 ],
401 ]
402 );
403
404 $this->add_control(
405 'member_job',
406 [
407 'label' => esc_html__('Job', 'king-addons'),
408 'type' => Controls_Manager::TEXT,
409 'dynamic' => [
410 'active' => true,
411 ],
412 'default' => esc_html__('King Addons CEO', 'king-addons'),
413 ]
414 );
415
416 $this->add_control(
417 'member_description',
418 [
419 'label' => esc_html__('Description', 'king-addons'),
420 'type' => Controls_Manager::TEXTAREA,
421 'dynamic' => [
422 'active' => true,
423 ],
424 'default' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur laoreet cursus volutpat. Aliquam sit amet ligula et justo tincidunt laorsoet non vitae lorem.',
425 ]
426 );
427
428 $this->add_control(
429 'member_description_divider',
430 [
431 'type' => Controls_Manager::DIVIDER,
432 'style' => 'thick',
433 ]
434 );
435
436 $this->add_control(
437 'member_divider',
438 [
439 'label' => esc_html__('Divider', 'king-addons'),
440 'type' => Controls_Manager::SWITCHER,
441 'default' => 'yes',
442 ]
443 );
444
445 $this->add_control(
446 'member_divider_position',
447 [
448 'label' => esc_html__('Position', 'king-addons'),
449 'type' => Controls_Manager::SELECT,
450 'options' => [
451 'before_job' => esc_html__('Before Job', 'king-addons'),
452 'after_job' => esc_html__('After Job', 'king-addons'),
453 ],
454 'default' => 'after_job',
455 'condition' => [
456 'member_divider' => 'yes',
457 ],
458 ]
459 );
460
461 $this->end_controls_section();
462
463 $this->add_section_layout();
464
465 $this->start_controls_section(
466 'section_social_media',
467 [
468 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Social Media', 'king-addons'),
469 ]
470 );
471 $this->add_control(
472 'social_media',
473 [
474 'label' => esc_html__('Show Social Media', 'king-addons'),
475 'type' => Controls_Manager::SWITCHER,
476 'default' => 'yes'
477 ]
478 );
479
480 $this->add_control(
481 'social_media_is_external',
482 [
483 'label' => esc_html__('Open in new window', 'king-addons'),
484 'type' => Controls_Manager::SWITCHER,
485 'condition' => [
486 'social_media' => 'yes',
487 ],
488 ]
489 );
490
491 $this->add_control(
492 'social_media_nofollow',
493 [
494 'label' => esc_html__('Add nofollow', 'king-addons'),
495 'type' => Controls_Manager::SWITCHER,
496 'condition' => [
497 'social_media' => 'yes',
498 ],
499 ]
500 );
501
502 $this->add_control(
503 'social_section_1',
504 [
505 'label' => esc_html__('Social 1', 'king-addons'),
506 'type' => Controls_Manager::HEADING,
507 'separator' => 'before',
508 'condition' => [
509 'social_media' => 'yes',
510 ],
511 ]
512 );
513
514 $this->add_control(
515 'social_icon_1',
516 [
517 'label' => esc_html__('Select Icon', 'king-addons'),
518 'type' => Controls_Manager::ICONS,
519 'skin' => 'inline',
520 'label_block' => false,
521 'default' => [
522 'value' => 'fab fa-facebook-f',
523 'library' => 'fa-brands',
524 ],
525 'condition' => [
526 'social_media' => 'yes',
527 ],
528 ]
529 );
530
531 $this->add_control(
532 'social_url_1',
533 [
534 'label' => esc_html__('Social URL', 'king-addons'),
535 'type' => Controls_Manager::URL,
536 'dynamic' => [
537 'active' => true,
538 ],
539 'show_external' => false,
540 'placeholder' => esc_html__('https://example.com', 'king-addons'),
541 'condition' => [
542 'social_media' => 'yes',
543 ],
544 ]
545 );
546
547 $this->add_control(
548 'social_section_2',
549 [
550 'label' => esc_html__('Social 2', 'king-addons'),
551 'type' => Controls_Manager::HEADING,
552 'separator' => 'before',
553 'condition' => [
554 'social_media' => 'yes',
555 ],
556 ]
557 );
558
559 $this->add_control(
560 'social_icon_2',
561 [
562 'label' => esc_html__('Select Icon', 'king-addons'),
563 'type' => Controls_Manager::ICONS,
564 'skin' => 'inline',
565 'label_block' => false,
566 'default' => [
567 'value' => 'fab fa-x-twitter',
568 'library' => 'fa-brands',
569 ],
570 'condition' => [
571 'social_media' => 'yes',
572 ],
573 ]
574 );
575
576 $this->add_control(
577 'social_url_2',
578 [
579 'label' => esc_html__('Social URL', 'king-addons'),
580 'type' => Controls_Manager::URL,
581 'dynamic' => [
582 'active' => true,
583 ],
584 'show_external' => false,
585 'placeholder' => esc_html__('https://example.com', 'king-addons'),
586 'condition' => [
587 'social_media' => 'yes',
588 ],
589 ]
590 );
591
592 $this->add_control(
593 'social_section_3',
594 [
595 'label' => esc_html__('Social 3', 'king-addons'),
596 'type' => Controls_Manager::HEADING,
597 'separator' => 'before',
598 'condition' => [
599 'social_media' => 'yes',
600 ],
601 ]
602 );
603
604 $this->add_control(
605 'social_icon_3',
606 [
607 'label' => esc_html__('Select Icon', 'king-addons'),
608 'type' => Controls_Manager::ICONS,
609 'skin' => 'inline',
610 'label_block' => false,
611 'default' => [
612 'value' => 'fab fa-instagram',
613 'library' => 'fa-brands',
614 ],
615 'condition' => [
616 'social_media' => 'yes',
617 ],
618 ]
619 );
620
621 $this->add_control(
622 'social_url_3',
623 [
624 'label' => esc_html__('Social URL', 'king-addons'),
625 'type' => Controls_Manager::URL,
626 'dynamic' => [
627 'active' => true,
628 ],
629 'show_external' => false,
630 'placeholder' => esc_html__('https://example.com', 'king-addons'),
631 'condition' => [
632 'social_media' => 'yes',
633 ],
634 ]
635 );
636
637 $this->add_control(
638 'social_section_4',
639 [
640 'label' => esc_html__('Social 4', 'king-addons'),
641 'type' => Controls_Manager::HEADING,
642 'separator' => 'before',
643 'condition' => [
644 'social_media' => 'yes',
645 ],
646 ]
647 );
648
649 $this->add_control(
650 'social_icon_4',
651 [
652 'label' => esc_html__('Select Icon', 'king-addons'),
653 'type' => Controls_Manager::ICONS,
654 'skin' => 'inline',
655 'label_block' => false,
656 'default' => [
657 'value' => 'fab fa-linkedin-in',
658 'library' => 'fa-brands',
659 ],
660 'condition' => [
661 'social_media' => 'yes',
662 ],
663 ]
664 );
665
666 $this->add_control(
667 'social_url_4',
668 [
669 'label' => esc_html__('Social URL', 'king-addons'),
670 'type' => Controls_Manager::URL,
671 'dynamic' => [
672 'active' => true,
673 ],
674 'show_external' => false,
675 'placeholder' => esc_html__('https://example.com', 'king-addons'),
676 'condition' => [
677 'social_media' => 'yes',
678 ],
679 ]
680 );
681
682 $this->add_control(
683 'social_section_5',
684 [
685 'label' => esc_html__('Social 5', 'king-addons'),
686 'type' => Controls_Manager::HEADING,
687 'separator' => 'before',
688 'condition' => [
689 'social_media' => 'yes',
690 ],
691 ]
692 );
693
694 $this->add_control(
695 'social_icon_5',
696 [
697 'label' => esc_html__('Select Icon', 'king-addons'),
698 'type' => Controls_Manager::ICONS,
699 'skin' => 'inline',
700 'label_block' => false,
701 'condition' => [
702 'social_media' => 'yes',
703 ],
704 ]
705 );
706
707 $this->add_control(
708 'social_url_5',
709 [
710 'label' => esc_html__('Social URL', 'king-addons'),
711 'type' => Controls_Manager::URL,
712 'dynamic' => [
713 'active' => true,
714 ],
715 'show_external' => false,
716 'placeholder' => esc_html__('https://example.com', 'king-addons'),
717 'condition' => [
718 'social_media' => 'yes',
719 ],
720 ]
721 );
722
723 $this->end_controls_section();
724
725 $this->start_controls_section(
726 'section_button',
727 [
728 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Button', 'king-addons'),
729 ]
730 );
731
732 $this->add_control(
733 'member_btn',
734 [
735 'label' => esc_html__('Show Button', 'king-addons'),
736 'type' => Controls_Manager::SWITCHER,
737 ]
738 );
739
740 $this->add_control(
741 'member_btn_text',
742 [
743 'label' => esc_html__('Button Text', 'king-addons'),
744 'type' => Controls_Manager::TEXT,
745 'dynamic' => [
746 'active' => true,
747 ],
748 'default' => 'About Me',
749 'condition' => [
750 'member_btn' => 'yes',
751 ],
752 ]
753 );
754
755 $this->add_control(
756 'member_btn_url',
757 [
758 'type' => Controls_Manager::URL,
759 'dynamic' => [
760 'active' => true,
761 ],
762 'placeholder' => esc_html__('https://example.com', 'king-addons'),
763 'condition' => [
764 'member_btn' => 'yes',
765 ],
766 'show_label' => false,
767 ]
768 );
769
770 $this->end_controls_section();
771
772 $this->add_section_image_overlay();
773
774 Core::renderProFeaturesSection($this, '', Controls_Manager::RAW_HTML, 'team-member', [
775 'Advanced Image Overlay Hover Animations',
776 'Advanced Button Hover Animations',
777 ]);
778
779 $this->start_controls_section(
780 'tm_section_style_image',
781 [
782 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Image', 'king-addons'),
783 'tab' => Controls_Manager::TAB_STYLE,
784 ]
785 );
786
787 $this->add_control(
788 'image_width',
789 [
790 'label' => esc_html__('Width', 'king-addons'),
791 'type' => Controls_Manager::SLIDER,
792 'size_units' => ['%'],
793 'range' => [
794 'px' => [
795 'min' => 0,
796 'max' => 100,
797 ],
798 ],
799 'default' => [
800 'unit' => '%',
801 'size' => 100,
802 ],
803 'selectors' => [
804 '{{WRAPPER}} .king-addons-member-media' => 'max-width: {{SIZE}}{{UNIT}};',
805 ],
806 ]
807 );
808
809 $this->add_group_control(
810 Group_Control_Image_Size::get_type(),
811 [
812 'name' => 'image_size',
813 'default' => 'full',
814 'separator' => 'before',
815 ]
816 );
817
818 $this->add_group_control(
819 Group_Control_Border::get_type(),
820 [
821 'name' => 'image_border',
822 'label' => esc_html__('Border', 'king-addons'),
823 'default' => 'solid',
824 'fields_options' => [
825 'color' => [
826 'default' => '#E8E8E8',
827 ],
828 'width' => [
829 'default' => [
830 'top' => '1',
831 'right' => '1',
832 'bottom' => '1',
833 'left' => '1',
834 'isLinked' => true,
835 ],
836 ],
837 ],
838 'selector' => '{{WRAPPER}} .king-addons-member-media',
839 'separator' => 'before',
840 ]
841 );
842
843 $this->add_control(
844 'image_border_radius',
845 [
846 'label' => esc_html__('Border Radius', 'king-addons'),
847 'type' => Controls_Manager::DIMENSIONS,
848 'size_units' => ['px', '%'],
849 'selectors' => [
850 '{{WRAPPER}} .king-addons-member-media' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
851 ],
852 'separator' => 'before',
853 ]
854 );
855
856 $this->add_group_control(
857 Group_Control_Css_Filter::get_type(),
858 [
859 'name' => 'kng_image_css_filters',
860 'label' => esc_html__('CSS Filters', 'king-addons'),
861 'selector' => '{{WRAPPER}} .king-addons-member-media img',
862 'separator' => 'before',
863 ]
864 );
865
866 $this->add_group_control(
867 Group_Control_Css_Filter::get_type(),
868 [
869 'name' => 'kng_image_css_filters_hover',
870 'label' => esc_html__('CSS Filters on Hover', 'king-addons'),
871 'selector' => '{{WRAPPER}} .king-addons-member-media:hover img',
872 ]
873 );
874
875 $this->end_controls_section();
876
877 $this->start_controls_section(
878 'section_style_content',
879 [
880 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Content', 'king-addons'),
881 'tab' => Controls_Manager::TAB_STYLE,
882 ]
883 );
884
885 $this->add_group_control(
886 Group_Control_Background::get_type(),
887 [
888 'name' => 'content_bg_color',
889 'types' => ['classic', 'gradient'],
890 'selector' => '{{WRAPPER}} .king-addons-member-content'
891 ]
892 );
893
894 $this->add_responsive_control(
895 'content_padding',
896 [
897 'label' => esc_html__('Padding', 'king-addons'),
898 'type' => Controls_Manager::DIMENSIONS,
899 'default' => [
900 'top' => 20,
901 'right' => 15,
902 'bottom' => 50,
903 'left' => 15,
904 ],
905 'size_units' => ['px'],
906 'selectors' => [
907 '{{WRAPPER}} .king-addons-member-content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
908 ],
909 'separator' => 'before',
910 ]
911 );
912
913 $this->add_control(
914 'name_section',
915 [
916 'label' => esc_html__('Name', 'king-addons'),
917 'type' => Controls_Manager::HEADING,
918 'separator' => 'before',
919 ]
920 );
921
922 $this->add_control(
923 'name_color',
924 [
925 'label' => esc_html__('Color', 'king-addons'),
926 'type' => Controls_Manager::COLOR,
927 'default' => '#222222',
928 'selectors' => [
929 '{{WRAPPER}} .king-addons-member-name' => 'color: {{VALUE}};',
930 ],
931 ]
932 );
933
934 $this->add_group_control(
935 Group_Control_Typography::get_type(),
936 [
937 'name' => 'name_typography',
938 'selector' => '{{WRAPPER}} .king-addons-member-name',
939 ]
940 );
941
942 $this->add_responsive_control(
943 'name_distance',
944 [
945 'label' => esc_html__('Distance', 'king-addons'),
946 'type' => Controls_Manager::SLIDER,
947 'size_units' => ['px'],
948 'range' => [
949 'px' => [
950 'min' => 0,
951 'max' => 50,
952 ],
953 ],
954 'default' => [
955 'unit' => 'px',
956 'size' => 8,
957 ],
958 'selectors' => [
959 '{{WRAPPER}} .king-addons-member-name' => 'margin: 0 0 {{SIZE}}{{UNIT}};',
960 ],
961 ]
962 );
963
964 $this->add_control(
965 'name_align',
966 [
967 'label' => esc_html__('Alignment', 'king-addons'),
968 'type' => Controls_Manager::CHOOSE,
969 'label_block' => false,
970 'default' => 'center',
971 'options' => [
972 'left' => [
973 'title' => esc_html__('Left', 'king-addons'),
974 'icon' => 'eicon-text-align-left',
975 ],
976 'center' => [
977 'title' => esc_html__('Center', 'king-addons'),
978 'icon' => 'eicon-text-align-center',
979 ],
980 'right' => [
981 'title' => esc_html__('Right', 'king-addons'),
982 'icon' => 'eicon-text-align-right',
983 ],
984 ],
985 'selectors' => [
986 '{{WRAPPER}} .king-addons-member-name' => 'text-align: {{VALUE}};',
987 ],
988 ]
989 );
990
991 $this->add_control(
992 'job_section',
993 [
994 'label' => esc_html__('Job', 'king-addons'),
995 'type' => Controls_Manager::HEADING,
996 'separator' => 'before',
997 ]
998 );
999
1000 $this->add_control(
1001 'job_color',
1002 [
1003 'label' => esc_html__('Color', 'king-addons'),
1004 'type' => Controls_Manager::COLOR,
1005 'default' => '#9e9e9e',
1006 'selectors' => [
1007 '{{WRAPPER}} .king-addons-member-job' => 'color: {{VALUE}};',
1008 ],
1009 ]
1010 );
1011
1012 $this->add_group_control(
1013 Group_Control_Typography::get_type(),
1014 [
1015 'name' => 'job_typography',
1016 'selector' => '{{WRAPPER}} .king-addons-member-job',
1017 ]
1018 );
1019
1020 $this->add_responsive_control(
1021 'job_distance',
1022 [
1023 'label' => esc_html__('Distance', 'king-addons'),
1024 'type' => Controls_Manager::SLIDER,
1025 'size_units' => ['px'],
1026 'range' => [
1027 'px' => [
1028 'min' => 0,
1029 'max' => 50,
1030 ],
1031 ],
1032 'default' => [
1033 'unit' => 'px',
1034 'size' => 10,
1035 ],
1036 'selectors' => [
1037 '{{WRAPPER}} .king-addons-member-job' => 'margin: 0 0 {{SIZE}}{{UNIT}};',
1038 ],
1039 ]
1040 );
1041
1042 $this->add_control(
1043 'job_align',
1044 [
1045 'label' => esc_html__('Alignment', 'king-addons'),
1046 'type' => Controls_Manager::CHOOSE,
1047 'label_block' => false,
1048 'default' => 'center',
1049 'options' => [
1050 'left' => [
1051 'title' => esc_html__('Left', 'king-addons'),
1052 'icon' => 'eicon-text-align-left',
1053 ],
1054 'center' => [
1055 'title' => esc_html__('Center', 'king-addons'),
1056 'icon' => 'eicon-text-align-center',
1057 ],
1058 'right' => [
1059 'title' => esc_html__('Right', 'king-addons'),
1060 'icon' => 'eicon-text-align-right',
1061 ],
1062 ],
1063 'selectors' => [
1064 '{{WRAPPER}} .king-addons-member-job' => 'text-align: {{VALUE}};',
1065 ],
1066 ]
1067 );
1068
1069 $this->add_control(
1070 'description_section',
1071 [
1072 'label' => esc_html__('Description', 'king-addons'),
1073 'type' => Controls_Manager::HEADING,
1074 'separator' => 'before',
1075 ]
1076 );
1077
1078 $this->add_control(
1079 'description_color',
1080 [
1081 'label' => esc_html__('Color', 'king-addons'),
1082 'type' => Controls_Manager::COLOR,
1083 'default' => '#545454',
1084 'selectors' => [
1085 '{{WRAPPER}} .king-addons-member-description' => 'color: {{VALUE}};',
1086 ],
1087 ]
1088 );
1089
1090 $this->add_group_control(
1091 Group_Control_Typography::get_type(),
1092 [
1093 'name' => 'description_typography',
1094 'selector' => '{{WRAPPER}} .king-addons-member-description',
1095 ]
1096 );
1097
1098 $this->add_responsive_control(
1099 'description_distance',
1100 [
1101 'label' => esc_html__('Distance', 'king-addons'),
1102 'type' => Controls_Manager::SLIDER,
1103 'size_units' => ['px'],
1104 'range' => [
1105 'px' => [
1106 'min' => 0,
1107 'max' => 50,
1108 ],
1109 ],
1110 'default' => [
1111 'unit' => 'px',
1112 'size' => 18,
1113 ],
1114 'selectors' => [
1115 '{{WRAPPER}} .king-addons-member-description' => 'margin-bottom: {{SIZE}}{{UNIT}};',
1116 ],
1117 ]
1118 );
1119
1120 $this->add_control(
1121 'description_align',
1122 [
1123 'label' => esc_html__('Alignment', 'king-addons'),
1124 'type' => Controls_Manager::CHOOSE,
1125 'label_block' => false,
1126 'default' => 'center',
1127 'options' => [
1128 'left' => [
1129 'title' => esc_html__('Left', 'king-addons'),
1130 'icon' => 'eicon-text-align-left',
1131 ],
1132 'center' => [
1133 'title' => esc_html__('Center', 'king-addons'),
1134 'icon' => 'eicon-text-align-center',
1135 ],
1136 'right' => [
1137 'title' => esc_html__('Right', 'king-addons'),
1138 'icon' => 'eicon-text-align-right',
1139 ],
1140 ],
1141 'selectors' => [
1142 '{{WRAPPER}} .king-addons-member-description' => 'text-align: {{VALUE}};',
1143 ],
1144 ]
1145 );
1146
1147 $this->add_control(
1148 'divider_section',
1149 [
1150 'label' => esc_html__('Divider', 'king-addons'),
1151 'type' => Controls_Manager::HEADING,
1152 'separator' => 'before',
1153 'condition' => [
1154 'member_divider' => 'yes',
1155 ],
1156 ]
1157 );
1158
1159 $this->add_control(
1160 'divider_color',
1161 [
1162 'label' => esc_html__('Color', 'king-addons'),
1163 'type' => Controls_Manager::COLOR,
1164 'default' => '#d1d1d1',
1165 'selectors' => [
1166 '{{WRAPPER}} .king-addons-member-divider:after' => 'border-bottom-color: {{VALUE}};',
1167 ],
1168 'condition' => [
1169 'member_divider' => 'yes',
1170 ],
1171 ]
1172 );
1173
1174 $this->add_control(
1175 'divider_type',
1176 [
1177 'label' => esc_html__('Style', 'king-addons'),
1178 'type' => Controls_Manager::SELECT,
1179 'options' => [
1180 'solid' => esc_html__('Solid', 'king-addons'),
1181 'double' => esc_html__('Double', 'king-addons'),
1182 'dotted' => esc_html__('Dotted', 'king-addons'),
1183 'dashed' => esc_html__('Dashed', 'king-addons'),
1184 'groove' => esc_html__('Groove', 'king-addons'),
1185 ],
1186 'default' => 'solid',
1187 'selectors' => [
1188 '{{WRAPPER}} .king-addons-member-divider:after' => 'border-bottom-style: {{VALUE}};',
1189 ],
1190 'condition' => [
1191 'member_divider' => 'yes',
1192 ],
1193 ]
1194 );
1195
1196 $this->add_control(
1197 'divider_weight',
1198 [
1199 'label' => esc_html__('Weight', 'king-addons'),
1200 'type' => Controls_Manager::SLIDER,
1201 'size_units' => ['px'],
1202 'range' => [
1203 'px' => [
1204 'min' => 1,
1205 'max' => 10,
1206 ],
1207 ],
1208 'default' => [
1209 'size' => 1,
1210 ],
1211 'selectors' => [
1212 '{{WRAPPER}} .king-addons-member-divider:after' => 'border-bottom-width: {{SIZE}}{{UNIT}};',
1213 ],
1214 'condition' => [
1215 'member_divider' => 'yes',
1216 ],
1217 ]
1218 );
1219
1220 $this->add_control(
1221 'divider_width',
1222 [
1223 'label' => esc_html__('Width', 'king-addons'),
1224 'type' => Controls_Manager::SLIDER,
1225 'size_units' => ['%', 'px'],
1226 'range' => [
1227 'px' => [
1228 'min' => 1,
1229 'max' => 100,
1230 ],
1231 '%' => [
1232 'min' => 1,
1233 'max' => 100,
1234 ],
1235 ],
1236 'default' => [
1237 'unit' => 'px',
1238 'size' => 30,
1239 ],
1240 'selectors' => [
1241 '{{WRAPPER}} .king-addons-member-divider:after' => 'max-width: {{SIZE}}{{UNIT}};',
1242 ],
1243 'condition' => [
1244 'member_divider' => 'yes',
1245 ],
1246 ]
1247 );
1248
1249 $this->add_responsive_control(
1250 'divider_distance',
1251 [
1252 'label' => esc_html__('Distance', 'king-addons'),
1253 'type' => Controls_Manager::SLIDER,
1254 'size_units' => ['px'],
1255 'range' => [
1256 'px' => [
1257 'min' => 0,
1258 'max' => 50,
1259 ],
1260 ],
1261 'default' => [
1262 'unit' => 'px',
1263 'size' => 10,
1264 ],
1265 'selectors' => [
1266 '{{WRAPPER}} .king-addons-member-divider:after' => 'margin-bottom: {{SIZE}}{{UNIT}};',
1267 ],
1268 'condition' => [
1269 'member_divider' => 'yes',
1270 ],
1271 ]
1272 );
1273
1274 $this->add_control(
1275 'divider_align',
1276 [
1277 'label' => esc_html__('Alignment', 'king-addons'),
1278 'type' => Controls_Manager::CHOOSE,
1279 'label_block' => false,
1280 'default' => 'center',
1281 'options' => [
1282 'left' => [
1283 'title' => esc_html__('Left', 'king-addons'),
1284 'icon' => 'eicon-text-align-left',
1285 ],
1286 'center' => [
1287 'title' => esc_html__('Center', 'king-addons'),
1288 'icon' => 'eicon-text-align-center',
1289 ],
1290 'right' => [
1291 'title' => esc_html__('Right', 'king-addons'),
1292 'icon' => 'eicon-text-align-right',
1293 ],
1294 ],
1295 'prefix_class' => 'king-addons-team-member-divider-',
1296 'condition' => [
1297 'member_divider' => 'yes',
1298 ],
1299 ]
1300 );
1301
1302 $this->end_controls_section();
1303
1304 $this->start_controls_section(
1305 'tm_section_style_social_media',
1306 [
1307 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Social Media', 'king-addons'),
1308 'tab' => Controls_Manager::TAB_STYLE,
1309 'show_label' => false,
1310 'condition' => [
1311 'social_media' => 'yes',
1312 ],
1313 ]
1314 );
1315
1316 $this->start_controls_tabs('tabs_social_style');
1317
1318 $this->start_controls_tab(
1319 'tab_social_normal',
1320 [
1321 'label' => esc_html__('Normal', 'king-addons'),
1322 ]
1323 );
1324
1325 $this->add_control(
1326 'social_color',
1327 [
1328 'label' => esc_html__('Color', 'king-addons'),
1329 'type' => Controls_Manager::COLOR,
1330 'default' => '#5B03FF',
1331 'selectors' => [
1332 '{{WRAPPER}} .king-addons-member-social' => 'color: {{VALUE}}',
1333 '{{WRAPPER}} .king-addons-member-social svg' => 'fill: {{VALUE}}'
1334 ],
1335 ]
1336 );
1337
1338 $this->add_control(
1339 'social_bg_color',
1340 [
1341 'label' => esc_html__('Background Color', 'king-addons'),
1342 'type' => Controls_Manager::COLOR,
1343 'selectors' => [
1344 '{{WRAPPER}} .king-addons-member-social' => 'background-color: {{VALUE}}',
1345 ],
1346 ]
1347 );
1348
1349 $this->add_control(
1350 'social_border_color',
1351 [
1352 'label' => esc_html__('Border Color', 'king-addons'),
1353 'type' => Controls_Manager::COLOR,
1354 'default' => '#5B03FF',
1355 'selectors' => [
1356 '{{WRAPPER}} .king-addons-member-social' => 'border-color: {{VALUE}}',
1357 ],
1358 ]
1359 );
1360
1361 $this->end_controls_tab();
1362
1363 $this->start_controls_tab(
1364 'tab_social_hover',
1365 [
1366 'label' => esc_html__('Hover', 'king-addons'),
1367 ]
1368 );
1369
1370 $this->add_control(
1371 'social_hover_color',
1372 [
1373 'label' => esc_html__('Color', 'king-addons'),
1374 'type' => Controls_Manager::COLOR,
1375 'default' => '#000000',
1376 'selectors' => [
1377 '{{WRAPPER}} .king-addons-member-social:hover' => 'color: {{VALUE}}',
1378 '{{WRAPPER}} .king-addons-member-social:hover svg' => 'fill: {{VALUE}}'
1379 ],
1380 ]
1381 );
1382
1383 $this->add_control(
1384 'social_hover_bg_color',
1385 [
1386 'label' => esc_html__('Background Color', 'king-addons'),
1387 'type' => Controls_Manager::COLOR,
1388 'selectors' => [
1389 '{{WRAPPER}} .king-addons-member-social:hover' => 'background-color: {{VALUE}}',
1390 ],
1391 ]
1392 );
1393
1394 $this->add_control(
1395 'social_hover_border_color',
1396 [
1397 'label' => esc_html__('Border Color', 'king-addons'),
1398 'type' => Controls_Manager::COLOR,
1399 'default' => '#000000',
1400 'selectors' => [
1401 '{{WRAPPER}} .king-addons-member-social:hover' => 'border-color: {{VALUE}}',
1402 ],
1403 ]
1404 );
1405
1406 $this->end_controls_tab();
1407
1408 $this->end_controls_tabs();
1409
1410 $this->add_control(
1411 'social_trans_divider',
1412 [
1413 'type' => Controls_Manager::DIVIDER,
1414 'style' => 'thick',
1415 ]
1416 );
1417
1418 $this->add_control(
1419 'social_transition_duration',
1420 [
1421 'label' => esc_html__('Transition Duration (ms)', 'king-addons'),
1422 'type' => Controls_Manager::NUMBER,
1423 'default' => 300,
1424 'min' => 0,
1425 'step' => 50,
1426 'selectors' => [
1427 '{{WRAPPER}} .king-addons-member-social' => 'transition-duration: {{VALUE}}ms',
1428 ],
1429 ]
1430 );
1431
1432 $this->add_responsive_control(
1433 'social_size',
1434 [
1435 'label' => esc_html__('Font Size', 'king-addons'),
1436 'type' => Controls_Manager::SLIDER,
1437 'size_units' => ['px'],
1438 'range' => [
1439 'px' => [
1440 'min' => 0,
1441 'max' => 200,
1442 ],
1443 ],
1444 'default' => [
1445 'unit' => 'px',
1446 'size' => 17,
1447 ],
1448 'selectors' => [
1449 '{{WRAPPER}} .king-addons-member-social' => 'font-size: {{SIZE}}{{UNIT}};',
1450 '{{WRAPPER}} .king-addons-member-social svg' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};'
1451 ],
1452 'separator' => 'before',
1453 ]
1454 );
1455
1456 $this->add_responsive_control(
1457 'social_box_size',
1458 [
1459 'label' => esc_html__('Box Size', 'king-addons'),
1460 'type' => Controls_Manager::SLIDER,
1461 'size_units' => ['px'],
1462 'range' => [
1463 'px' => [
1464 'min' => 0,
1465 'max' => 200,
1466 ],
1467 ],
1468 'default' => [
1469 'unit' => 'px',
1470 'size' => 37,
1471 ],
1472 'selectors' => [
1473 '{{WRAPPER}} .king-addons-member-social' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};',
1474 '{{WRAPPER}} .king-addons-member-social i' => 'line-height: {{SIZE}}{{UNIT}};',
1475 '{{WRAPPER}} .king-addons-member-social svg' => 'line-height: {{SIZE}}{{UNIT}};',
1476 ],
1477 ]
1478 );
1479
1480 $this->add_responsive_control(
1481 'social_gutter',
1482 [
1483 'label' => esc_html__('Gutter', 'king-addons'),
1484 'type' => Controls_Manager::SLIDER,
1485 'size_units' => ['px'],
1486 'range' => [
1487 'px' => [
1488 'min' => 0,
1489 'max' => 25,
1490 ],
1491 ],
1492 'default' => [
1493 'unit' => 'px',
1494 'size' => 5,
1495 ],
1496 'selectors' => [
1497 '{{WRAPPER}} .king-addons-member-social' => 'margin-right: {{SIZE}}{{UNIT}};',
1498 ],
1499 ]
1500 );
1501
1502 $this->add_responsive_control(
1503 'social_distance',
1504 [
1505 'label' => esc_html__('Distance', 'king-addons'),
1506 'type' => Controls_Manager::SLIDER,
1507 'size_units' => ['px'],
1508 'range' => [
1509 'px' => [
1510 'min' => 0,
1511 'max' => 50,
1512 ],
1513 ],
1514 'default' => [
1515 'unit' => 'px',
1516 'size' => 20,
1517 ],
1518 'selectors' => [
1519 '{{WRAPPER}} .king-addons-member-social-media' => 'margin-bottom: {{SIZE}}{{UNIT}};',
1520 ],
1521 ]
1522 );
1523
1524 $this->add_control(
1525 'social_align',
1526 [
1527 'label' => esc_html__('Alignment', 'king-addons'),
1528 'type' => Controls_Manager::CHOOSE,
1529 'label_block' => false,
1530 'default' => 'center',
1531 'options' => [
1532 'left' => [
1533 'title' => esc_html__('Left', 'king-addons'),
1534 'icon' => 'eicon-text-align-left',
1535 ],
1536 'center' => [
1537 'title' => esc_html__('Center', 'king-addons'),
1538 'icon' => 'eicon-text-align-center',
1539 ],
1540 'right' => [
1541 'title' => esc_html__('Right', 'king-addons'),
1542 'icon' => 'eicon-text-align-right',
1543 ],
1544 ],
1545 'prefix_class' => 'king-addons-team-member-social-media-',
1546 'separator' => 'before',
1547 ]
1548 );
1549
1550 $this->add_control(
1551 'social_border_type',
1552 [
1553 'label' => esc_html__('Border Type', 'king-addons'),
1554 'type' => Controls_Manager::SELECT,
1555 'options' => [
1556 'none' => esc_html__('None', 'king-addons'),
1557 'solid' => esc_html__('Solid', 'king-addons'),
1558 'double' => esc_html__('Double', 'king-addons'),
1559 'dotted' => esc_html__('Dotted', 'king-addons'),
1560 'dashed' => esc_html__('Dashed', 'king-addons'),
1561 'groove' => esc_html__('Groove', 'king-addons'),
1562 ],
1563 'default' => 'solid',
1564 'selectors' => [
1565 '{{WRAPPER}} .king-addons-member-social' => 'border-style: {{VALUE}};',
1566 ],
1567 'separator' => 'before',
1568 ]
1569 );
1570
1571 $this->add_responsive_control(
1572 'social_border_width',
1573 [
1574 'label' => esc_html__('Border Width', 'king-addons'),
1575 'type' => Controls_Manager::DIMENSIONS,
1576 'size_units' => ['px'],
1577 'default' => [
1578 'top' => 2,
1579 'right' => 2,
1580 'bottom' => 2,
1581 'left' => 2,
1582 ],
1583 'selectors' => [
1584 '{{WRAPPER}} .king-addons-member-social' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1585 ],
1586 'condition' => [
1587 'social_border_type!' => 'none',
1588 ],
1589 ]
1590 );
1591
1592 $this->add_responsive_control(
1593 'social_border_radius',
1594 [
1595 'label' => esc_html__('Border Radius', 'king-addons'),
1596 'type' => Controls_Manager::DIMENSIONS,
1597 'size_units' => ['px', '%'],
1598 'default' => [
1599 'top' => 50,
1600 'right' => 50,
1601 'bottom' => 50,
1602 'left' => 50,
1603 ],
1604 'selectors' => [
1605 '{{WRAPPER}} .king-addons-member-social' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1606 ],
1607 'separator' => 'before',
1608 ]
1609 );
1610
1611 $this->add_control(
1612 'testimonial_style_social_divider',
1613 [
1614 'type' => Controls_Manager::DIVIDER,
1615 'style' => 'thick',
1616 ]
1617 );
1618
1619 $this->add_group_control(
1620 Group_Control_Box_Shadow::get_type(),
1621 [
1622 'name' => 'social_box_shadow',
1623 'selector' => '{{WRAPPER}} .king-addons-member-social',
1624 ]
1625 );
1626
1627 $this->end_controls_section();
1628
1629 $this->start_controls_section(
1630 'tm_section_style_btn',
1631 [
1632 'label' => KING_ADDONS_ELEMENTOR_ICON . esc_html__('Button', 'king-addons'),
1633 'tab' => Controls_Manager::TAB_STYLE,
1634 'condition' => [
1635 'member_btn' => 'yes',
1636 ],
1637 ]
1638 );
1639
1640 $this->start_controls_tabs('tabs_btn_style');
1641
1642 $this->start_controls_tab(
1643 'tab_btn_normal',
1644 [
1645 'label' => esc_html__('Normal', 'king-addons'),
1646 ]
1647 );
1648
1649 $this->add_control(
1650 'btn_color',
1651 [
1652 'label' => esc_html__('Color', 'king-addons'),
1653 'type' => Controls_Manager::COLOR,
1654 'default' => '#ffffff',
1655 'selectors' => [
1656 '{{WRAPPER}} .king-addons-member-btn' => 'color: {{VALUE}}',
1657 ],
1658 ]
1659 );
1660
1661 $this->add_control(
1662 'btn_bg_color',
1663 [
1664 'label' => esc_html__('Background Color', 'king-addons'),
1665 'type' => Controls_Manager::COLOR,
1666 'default' => '#5B03FF',
1667 'selectors' => [
1668 '{{WRAPPER}} .king-addons-member-btn' => 'background-color: {{VALUE}}',
1669 ],
1670 ]
1671 );
1672
1673 $this->add_control(
1674 'btn_border_color',
1675 [
1676 'label' => esc_html__('Border Color', 'king-addons'),
1677 'type' => Controls_Manager::COLOR,
1678 'default' => '#5B03FF',
1679 'selectors' => [
1680 '{{WRAPPER}} .king-addons-member-btn' => 'border-color: {{VALUE}}',
1681 ],
1682 ]
1683 );
1684
1685 $this->add_group_control(
1686 Group_Control_Box_Shadow::get_type(),
1687 [
1688 'name' => 'btn_box_shadow',
1689 'selector' => '{{WRAPPER}} .king-addons-member-btn',
1690 ]
1691 );
1692
1693 $this->end_controls_tab();
1694
1695 $this->start_controls_tab(
1696 'tab_btn_hover',
1697 [
1698 'label' => esc_html__('Hover', 'king-addons'),
1699 ]
1700 );
1701
1702 $this->add_control(
1703 'btn_hover_color',
1704 [
1705 'label' => esc_html__('Color', 'king-addons'),
1706 'type' => Controls_Manager::COLOR,
1707 'default' => '#ffffff',
1708 'selectors' => [
1709 '{{WRAPPER}} .king-addons-member-btn:hover' => 'color: {{VALUE}}',
1710 ],
1711 ]
1712 );
1713
1714 $this->add_control(
1715 'btn_hover_bg_color',
1716 [
1717 'label' => esc_html__('Background Color', 'king-addons'),
1718 'type' => Controls_Manager::COLOR,
1719 'default' => '#000000',
1720 'selectors' => [
1721 '{{WRAPPER}} .king-addons-member-btn.king-addons-button-none:hover' => 'background-color: {{VALUE}}',
1722 '{{WRAPPER}} .king-addons-member-btn:before' => 'background-color: {{VALUE}}',
1723 '{{WRAPPER}} .king-addons-member-btn:after' => 'background-color: {{VALUE}}',
1724 ],
1725 ]
1726 );
1727
1728 $this->add_control(
1729 'btn_hover_border_color',
1730 [
1731 'label' => esc_html__('Border Color', 'king-addons'),
1732 'type' => Controls_Manager::COLOR,
1733 'default' => '#000000',
1734 'selectors' => [
1735 '{{WRAPPER}} .king-addons-member-btn:hover' => 'border-color: {{VALUE}}',
1736 ],
1737 ]
1738 );
1739
1740 $this->add_group_control(
1741 Group_Control_Box_Shadow::get_type(),
1742 [
1743 'name' => 'btn_hover_box_shadow',
1744 'selector' => '{{WRAPPER}} .king-addons-member-btn:hover',
1745 ]
1746 );
1747
1748 $this->end_controls_tab();
1749
1750 $this->end_controls_tabs();
1751
1752 $this->add_control(
1753 'btn_section_anim_divider',
1754 [
1755 'type' => Controls_Manager::DIVIDER,
1756 'style' => 'thick',
1757 ]
1758 );
1759
1760 $this->add_control(
1761 'btn_animation',
1762 [
1763 'label' => esc_html__('Select Animation', 'king-addons'),
1764 'type' => 'king-addons-button-animations',
1765 'default' => 'king-addons-button-sweep-to-top',
1766 ]
1767 );
1768
1769 $this->add_control(
1770 'btn_transition_duration',
1771 [
1772 'label' => esc_html__('Transition Duration (ms)', 'king-addons'),
1773 'type' => Controls_Manager::NUMBER,
1774 'default' => 300,
1775 'min' => 0,
1776 'step' => 50,
1777 'selectors' => [
1778 '{{WRAPPER}} .king-addons-member-btn' => 'transition-duration: {{VALUE}}ms',
1779 '{{WRAPPER}} .king-addons-member-btn:before' => 'transition-duration: {{VALUE}}ms',
1780 '{{WRAPPER}} .king-addons-member-btn:after' => 'transition-duration: {{VALUE}}ms',
1781 ],
1782 ]
1783 );
1784
1785 $this->add_control(
1786 'btn_animation_height',
1787 [
1788 'label' => esc_html__('Animation Height', 'king-addons'),
1789 'type' => Controls_Manager::SLIDER,
1790 'range' => [
1791 '%' => [
1792 'min' => 0,
1793 'max' => 100,
1794 ],
1795 'px' => [
1796 'min' => 0,
1797 'max' => 30,
1798 ],
1799 ],
1800 'size_units' => ['%', 'px'],
1801 'default' => [
1802 'unit' => 'px',
1803 'size' => 3,
1804 ],
1805 'selectors' => [
1806 '{{WRAPPER}} [class*="king-addons-button-underline"]:before' => 'height: {{SIZE}}{{UNIT}};',
1807 '{{WRAPPER}} [class*="king-addons-button-overline"]:before' => 'height: {{SIZE}}{{UNIT}};',
1808 ],
1809 'render_type' => 'template',
1810 'condition' => [
1811 'btn_animation' => [
1812 'king-addons-button-underline-from-left',
1813 'king-addons-button-underline-from-center',
1814 'king-addons-button-underline-from-right',
1815 'king-addons-button-underline-reveal',
1816 'king-addons-button-overline-reveal',
1817 'king-addons-button-overline-from-left',
1818 'king-addons-button-overline-from-center',
1819 'king-addons-button-overline-from-right'
1820 ]
1821 ],
1822 ]
1823 );
1824
1825 if (!king_addons_freemius()->can_use_premium_code__premium_only()) {
1826 $this->add_control(
1827 'team_member_pro_notice_2',
1828 [
1829 'type' => Controls_Manager::RAW_HTML,
1830 'raw' => 'Advanced button animations are available in the <strong><a href="https://kingaddons.com/pricing/?utm_source=kng-module-team-member-settings-upgrade-pro&utm_medium=plugin&utm_campaign=kng" target="_blank">Pro version</a></strong>',
1831 'content_classes' => 'king-addons-pro-notice',
1832 ]
1833 );
1834 }
1835
1836 $this->add_control(
1837 'btn_typography_divider',
1838 [
1839 'type' => Controls_Manager::DIVIDER,
1840 'style' => 'thick',
1841 ]
1842 );
1843
1844 $this->add_group_control(
1845 Group_Control_Typography::get_type(),
1846 [
1847 'name' => 'btn_typography',
1848 'selector' => '{{WRAPPER}} .king-addons-member-btn',
1849 'separator' => 'before',
1850 ]
1851 );
1852
1853 $this->add_control(
1854 'btn_align',
1855 [
1856 'label' => esc_html__('Alignment', 'king-addons'),
1857 'type' => Controls_Manager::CHOOSE,
1858 'label_block' => false,
1859 'default' => 'center',
1860 'options' => [
1861 'left' => [
1862 'title' => esc_html__('Left', 'king-addons'),
1863 'icon' => 'eicon-text-align-left',
1864 ],
1865 'center' => [
1866 'title' => esc_html__('Center', 'king-addons'),
1867 'icon' => 'eicon-text-align-center',
1868 ],
1869 'right' => [
1870 'title' => esc_html__('Right', 'king-addons'),
1871 'icon' => 'eicon-text-align-right',
1872 ],
1873 ],
1874 'selectors' => [
1875 '{{WRAPPER}} .king-addons-member-btn-wrap' => 'text-align: {{VALUE}};',
1876 ],
1877 'separator' => 'before',
1878 ]
1879 );
1880
1881 $this->add_responsive_control(
1882 'btn_padding',
1883 [
1884 'label' => esc_html__('Padding', 'king-addons'),
1885 'type' => Controls_Manager::DIMENSIONS,
1886 'size_units' => ['px',],
1887 'default' => [
1888 'top' => 8,
1889 'right' => 35,
1890 'bottom' => 8,
1891 'left' => 35,
1892 ],
1893 'selectors' => [
1894 '{{WRAPPER}} .king-addons-member-btn' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1895 ],
1896 'separator' => 'before',
1897 ]
1898 );
1899
1900 $this->add_control(
1901 'btn_border_type',
1902 [
1903 'label' => esc_html__('Border Type', 'king-addons'),
1904 'type' => Controls_Manager::SELECT,
1905 'options' => [
1906 'none' => esc_html__('None', 'king-addons'),
1907 'solid' => esc_html__('Solid', 'king-addons'),
1908 'double' => esc_html__('Double', 'king-addons'),
1909 'dotted' => esc_html__('Dotted', 'king-addons'),
1910 'dashed' => esc_html__('Dashed', 'king-addons'),
1911 'groove' => esc_html__('Groove', 'king-addons'),
1912 ],
1913 'default' => 'none',
1914 'selectors' => [
1915 '{{WRAPPER}} .king-addons-member-btn' => 'border-style: {{VALUE}};',
1916 ],
1917 'separator' => 'before',
1918 ]
1919 );
1920
1921 $this->add_responsive_control(
1922 'btn_border_width',
1923 [
1924 'label' => esc_html__('Border Width', 'king-addons'),
1925 'type' => Controls_Manager::DIMENSIONS,
1926 'size_units' => ['px'],
1927 'default' => [
1928 'top' => 1,
1929 'right' => 1,
1930 'bottom' => 1,
1931 'left' => 1,
1932 ],
1933 'selectors' => [
1934 '{{WRAPPER}} .king-addons-member-btn' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1935 ],
1936 'condition' => [
1937 'btn_border_type!' => 'none',
1938 ],
1939 ]
1940 );
1941
1942 $this->add_responsive_control(
1943 'btn_border_radius',
1944 [
1945 'label' => esc_html__('Border Radius', 'king-addons'),
1946 'type' => Controls_Manager::DIMENSIONS,
1947 'size_units' => ['px', '%'],
1948 'default' => [
1949 'top' => 2,
1950 'right' => 2,
1951 'bottom' => 2,
1952 'left' => 2,
1953 ],
1954 'selectors' => [
1955 '{{WRAPPER}} .king-addons-member-btn' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1956 ],
1957 'separator' => 'before',
1958 ]
1959 );
1960
1961 $this->end_controls_section();
1962
1963 $this->add_section_style_overlay();
1964 }
1965
1966 protected function team_member_social_media()
1967 {
1968 $settings = Core::displaySettings($this);
1969
1970 // Define which icon slots to loop over
1971 $icon_indexes = [1, 2, 3, 4, 5];
1972
1973 // Check if at least one icon has a value
1974 $has_icon = false;
1975 foreach ($icon_indexes as $index) {
1976 if (!empty($settings["social_icon_$index"]['value'])) {
1977 $has_icon = true;
1978 break;
1979 }
1980 }
1981
1982 if ($has_icon) {
1983 // Set up attributes once
1984 $this->add_render_attribute('social_attribute', 'class', 'king-addons-member-social');
1985
1986 if (!empty($settings['social_media_is_external'])) {
1987 $this->add_render_attribute('social_attribute', 'target', '_blank');
1988 }
1989
1990 if (!empty($settings['social_media_nofollow'])) {
1991 $this->add_render_attribute('social_attribute', 'nofollow', '');
1992 }
1993
1994 echo '<div class="king-addons-member-social-media">';
1995 // Loop and render each social icon (and link) that is not empty
1996 foreach ($icon_indexes as $index) {
1997 if (!empty($settings["social_icon_$index"]['value'])) {
1998 echo '<a href="' . esc_url($settings["social_url_$index"]['url']) . '" ' .
1999 $this->get_render_attribute_string('social_attribute') . '>';
2000 Icons_Manager::render_icon($settings["social_icon_$index"], ['aria-hidden' => 'true']);
2001 echo '</a>';
2002 }
2003 }
2004 echo '</div>';
2005 }
2006 }
2007
2008 protected function team_member_button()
2009 {
2010 $settings = Core::displaySettings($this);
2011
2012 if ('' !== $settings['member_btn_text']) {
2013 $this->add_render_attribute(
2014 'btn_attribute',
2015 'class',
2016 'king-addons-member-btn king-addons-button-effect ' . sanitize_html_class((string) ($settings['btn_animation'] ?? ''))
2017 );
2018 $this->add_render_attribute('btn_attribute', 'href', esc_url($settings['member_btn_url']['url']));
2019
2020 if (!empty($settings['member_btn_url']['is_external'])) {
2021 $this->add_render_attribute('btn_attribute', 'target', '_blank');
2022 }
2023
2024 if (!empty($settings['member_btn_url']['nofollow'])) {
2025 $this->add_render_attribute('btn_attribute', 'nofollow', '');
2026 }
2027
2028 echo '<div class="king-addons-member-btn-wrap">';
2029 echo '<a ' . $this->get_render_attribute_string('btn_attribute') . '>';
2030 echo '<span>' . esc_html($settings['member_btn_text']) . '</span>';
2031 echo '</a>';
2032 echo '</div>';
2033 }
2034 }
2035
2036 protected function team_member_content()
2037 {
2038 $settings = Core::displaySettings($this);
2039
2040 /** @noinspection DuplicatedCode */
2041 if (
2042 ('' !== $settings['member_name'] && 'below' === $settings['member_name_location']) ||
2043 ('' !== $settings['member_job'] && 'below' === $settings['member_job_location']) ||
2044 ('' !== $settings['member_description'] && 'below' === $settings['member_description_location']) ||
2045 ('yes' === $settings['social_media'] && 'below' === $settings['member_social_media_location']) ||
2046 ('yes' === $settings['member_btn'] && 'below' === $settings['member_btn_location'])
2047 ) : ?>
2048
2049 <div class="king-addons-member-content">
2050 <?php
2051 // Member name
2052 if ('' !== $settings['member_name'] && 'below' === $settings['member_name_location']) {
2053 $tags_whitelist = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'span', 'p'];
2054 $member_name_tag = Core::validateHTMLTags($settings['member_name_tag'], 'h3', $tags_whitelist);
2055
2056 echo '<' . esc_attr($member_name_tag) . ' class="king-addons-member-name">';
2057 echo wp_kses_post($settings['member_name']);
2058 echo '</' . esc_attr($member_name_tag) . '>';
2059 }
2060 ?>
2061
2062 <?php if (
2063 'yes' === $settings['member_divider'] &&
2064 'below' === $settings['member_divider_location'] &&
2065 'before_job' === $settings['member_divider_position']
2066 ) : ?>
2067 <div class="king-addons-member-divider"></div>
2068 <?php endif; ?>
2069
2070 <?php if ('' !== $settings['member_job'] && 'below' === $settings['member_job_location']) : ?>
2071 <div class="king-addons-member-job"><?php echo esc_html($settings['member_job']); ?></div>
2072 <?php endif; ?>
2073
2074 <?php if (
2075 'yes' === $settings['member_divider'] &&
2076 'below' === $settings['member_divider_location'] &&
2077 'after_job' === $settings['member_divider_position']
2078 ) : ?>
2079 <div class="king-addons-member-divider"></div>
2080 <?php endif; ?>
2081
2082 <?php if ('' !== $settings['member_description'] && 'below' === $settings['member_description_location']) : ?>
2083 <div class="king-addons-member-description"><?php echo wp_kses_post($settings['member_description']); ?></div>
2084 <?php endif; ?>
2085
2086 <?php
2087 // Social Media
2088 if ('yes' === $settings['social_media'] && 'below' === $settings['member_social_media_location']) {
2089 $this->team_member_social_media();
2090 }
2091
2092 // Button
2093 if ('yes' === $settings['member_btn'] && 'below' === $settings['member_btn_location']) {
2094 $this->team_member_button();
2095 }
2096 ?>
2097 </div>
2098 <?php
2099 endif;
2100 }
2101
2102 protected function team_member_overlay()
2103 {
2104 $settings = Core::displaySettings($this);
2105
2106 /** @noinspection DuplicatedCode */
2107 if (
2108 ('' !== $settings['member_name'] && 'over' === $settings['member_name_location']) ||
2109 ('' !== $settings['member_job'] && 'over' === $settings['member_job_location']) ||
2110 ('' !== $settings['member_description'] && 'over' === $settings['member_description_location']) ||
2111 ('yes' === $settings['social_media'] && 'over' === $settings['member_social_media_location']) ||
2112 ('yes' === $settings['member_btn'] && 'over' === $settings['member_btn_location'])
2113 ) {
2114 // Add base classes
2115 $this->add_render_attribute('overlay_container', 'class', 'king-addons-member-overlay-wrap king-addons-cv-container');
2116 $this->add_render_attribute('overlay_outer', 'class', 'king-addons-cv-outer');
2117
2118 // Overlay animation classes
2119 if ('none' !== $settings['overlay_animation']) {
2120 $this->add_render_attribute('overlay_container', 'class', 'king-addons-team-member-animation king-addons-animation-wrap');
2121 $this->add_render_attribute(
2122 'overlay_outer',
2123 'class',
2124 'king-addons-anim-transparency king-addons-anim-size-' . $settings['overlay_anim_size'] . ' king-addons-overlay-' . $settings['overlay_animation']
2125 );
2126 }
2127 ?>
2128 <div <?php echo $this->get_render_attribute_string('overlay_container'); ?>>
2129 <div <?php echo $this->get_render_attribute_string('overlay_outer'); ?>>
2130 <div class="king-addons-cv-inner">
2131 <div class="king-addons-member-overlay"></div>
2132 <div class="king-addons-member-overlay-content">
2133 <?php
2134 // Member Name
2135 if ('' !== $settings['member_name'] && 'over' === $settings['member_name_location']) {
2136 echo '<' . esc_attr($settings['member_name_tag']) . ' class="king-addons-member-name">' .
2137 esc_html($settings['member_name']) .
2138 '</' . esc_attr($settings['member_name_tag']) . '>';
2139 }
2140
2141 // Divider before Job
2142 if ('yes' === $settings['member_divider'] && 'over' === $settings['member_divider_location'] && 'before_job' === $settings['member_divider_position']) {
2143 echo '<div class="king-addons-member-divider"></div>';
2144 }
2145
2146 // Member Job
2147 if ('' !== $settings['member_job'] && 'over' === $settings['member_job_location']) {
2148 echo '<div class="king-addons-member-job">' . esc_html($settings['member_job']) . '</div>';
2149 }
2150
2151 // Divider after Job
2152 if ('yes' === $settings['member_divider'] && 'over' === $settings['member_divider_location'] && 'after_job' === $settings['member_divider_position']) {
2153 echo '<div class="king-addons-member-divider"></div>';
2154 }
2155
2156 // Member Description
2157 if ('' !== $settings['member_description'] && 'over' === $settings['member_description_location']) {
2158 echo '<div class="king-addons-member-description">' . esc_html($settings['member_description']) . '</div>';
2159 }
2160
2161 // Social Media
2162 if ('yes' === $settings['social_media'] && 'over' === $settings['member_social_media_location']) {
2163 $this->team_member_social_media();
2164 }
2165
2166 // Button
2167 if ('yes' === $settings['member_btn'] && 'over' === $settings['member_btn_location']) {
2168 $this->team_member_button();
2169 }
2170 ?>
2171 </div>
2172 </div>
2173 </div>
2174 </div>
2175 <?php
2176 }
2177 }
2178
2179 protected function render()
2180 {
2181 $settings = Core::displaySettings($this); ?>
2182
2183 <div class="king-addons-team-member">
2184 <?php if (!empty($settings['member_image']['url'])) : ?>
2185 <?php
2186 $image_src = Group_Control_Image_Size::get_attachment_image_src(
2187 $settings['member_image']['id'],
2188 'image_size',
2189 $settings
2190 );
2191
2192 if (!$image_src) {
2193 $image_src = $settings['member_image']['url'];
2194 }
2195 ?>
2196 <div class="king-addons-member-media">
2197 <div class="king-addons-member-image">
2198 <img src="<?php echo esc_url($image_src); ?>"
2199 alt="<?php echo esc_attr($settings['member_name']); ?>">
2200 </div>
2201 <?php $this->team_member_overlay(); ?>
2202 </div>
2203 <?php endif; ?>
2204
2205 <?php $this->team_member_content(); ?>
2206 </div>
2207 <?php
2208 }
2209 }