PluginProbe
UiCore Elements – Free widgets and templates for Elementor / trunk
UiCore Elements – Free widgets and templates for Elementor vtrunk
1.3.16 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.3.0 All 40 releases
uicore-elements / includes / utils / form-component.php

form-component.php in UiCore Elements – Free widgets and templates for Elementor trunk, at includes/utils/form-component.php

1,523 lines 55.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace UiCoreElements\Utils;
4
5 use UiCoreElements\Helper;
6
7 use Elementor\Controls_Manager;
8 use Elementor\Group_Control_Typography;
9 use Elementor\Group_Control_Border;
10 use Elementor\Group_Control_Box_Shadow;
11 use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
12 use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
13
14 defined('ABSPATH') || exit();
15
16 /**
17 * Register some Form Widgets controls and methods.
18 */
19
20 trait Form_Component
21 {
22
23 // Submission Controls
24 function TRAIT_register_submit_email_controls($instance, $slug = '')
25 {
26 $instance->add_control(
27 'email_to' . $slug,
28 [
29 'label' => esc_html__('To', 'uicore-elements'),
30 'type' => Controls_Manager::TEXT,
31 'default' => get_option('admin_email'),
32 'ai' => [
33 'active' => false,
34 ],
35 'placeholder' => get_option('admin_email'),
36 'label_block' => true,
37 'title' => esc_html__('Separate emails with commas', 'uicore-elements'),
38 'render_type' => 'none',
39 'dynamic' => [
40 'active' => true,
41 ],
42 ]
43 );
44
45 /* translators: %s: Site title. */
46 $default_message = sprintf(html_entity_decode(esc_html__('New message from "%s"', 'uicore-elements')), get_option('blogname'));
47
48 $instance->add_control(
49 'email_subject' . $slug,
50 [
51 'label' => esc_html__('Subject', 'uicore-elements'),
52 'type' => Controls_Manager::TEXT,
53 'default' => $default_message,
54 'ai' => [
55 'active' => false,
56 ],
57 'placeholder' => $default_message,
58 'label_block' => true,
59 'render_type' => 'none',
60 'dynamic' => [
61 'active' => true,
62 ],
63 ]
64 );
65
66 $instance->add_control(
67 'email_content' . $slug,
68 [
69 'label' => esc_html__('Message', 'uicore-elements'),
70 'type' => Controls_Manager::TEXTAREA,
71 'default' => '[all-fields]',
72 'ai' => [
73 'active' => false,
74 ],
75 'placeholder' => '[all-fields]',
76 'description' => sprintf(
77 /* translators: %s: The [all-fields] shortcode. */
78 esc_html__('By default, all form fields are sent via %s shortcode. To customize sent fields, copy the shortcode that appears inside each field and paste it above.', 'uicore-elements'),
79 '<code>[all-fields]</code>'
80 ),
81 'render_type' => 'none',
82 'dynamic' => [
83 'active' => true,
84 ],
85 ]
86 );
87
88 $site_domain = Helper::get_site_domain();
89
90 $instance->add_control(
91 'email_from' . $slug,
92 [
93 'label' => esc_html__('From Email', 'uicore-elements'),
94 'type' => Controls_Manager::TEXT,
95 'default' => 'email@' . $site_domain,
96 'ai' => [
97 'active' => false,
98 ],
99 'render_type' => 'none',
100 'dynamic' => [
101 'active' => true,
102 ],
103 ]
104 );
105
106 $instance->add_control(
107 'email_from_name' . $slug,
108 [
109 'label' => esc_html__('From Name', 'uicore-elements'),
110 'type' => Controls_Manager::TEXT,
111 'default' => get_bloginfo('name'),
112 'ai' => [
113 'active' => false,
114 ],
115 'render_type' => 'none',
116 'dynamic' => [
117 'active' => true,
118 ],
119 ]
120 );
121
122 $instance->add_control(
123 'email_reply_to' . $slug,
124 [
125 'label' => esc_html__('Reply-To', 'uicore-elements'),
126 'type' => Controls_Manager::TEXT,
127 'options' => [
128 '' => '',
129 ],
130 'default' => 'noreply@' . Helper::get_site_domain(),
131 'render_type' => 'none',
132 ]
133 );
134
135 $instance->add_control(
136 'email_to_cc' . $slug,
137 [
138 'label' => esc_html__('Cc', 'uicore-elements'),
139 'type' => Controls_Manager::TEXT,
140 'default' => '',
141 'ai' => [
142 'active' => false,
143 ],
144 'title' => esc_html__('Separate emails with commas', 'uicore-elements'),
145 'render_type' => 'none',
146 'dynamic' => [
147 'active' => true,
148 ],
149 ]
150 );
151
152 $instance->add_control(
153 'email_to_bcc' . $slug,
154 [
155 'label' => esc_html__('Bcc', 'uicore-elements'),
156 'type' => Controls_Manager::TEXT,
157 'default' => '',
158 'ai' => [
159 'active' => false,
160 ],
161 'title' => esc_html__('Separate emails with commas', 'uicore-elements'),
162 'render_type' => 'none',
163 'dynamic' => [
164 'active' => true,
165 ],
166 ]
167 );
168
169 $instance->add_control(
170 'form_metadata' . $slug,
171 [
172 'label' => esc_html__('Meta Data', 'uicore-elements'),
173 'type' => Controls_Manager::SELECT2,
174 'multiple' => true,
175 'label_block' => true,
176 'separator' => 'before',
177 'default' => [
178 'date',
179 'time',
180 'page_url',
181 'user_agent',
182 'remote_ip',
183 ],
184 'options' => [
185 'date' => esc_html__('Date', 'uicore-elements'),
186 'time' => esc_html__('Time', 'uicore-elements'),
187 'page_url' => esc_html__('Page URL', 'uicore-elements'),
188 'user_agent' => esc_html__('User Agent', 'uicore-elements'),
189 'remote_ip' => esc_html__('Remote IP', 'uicore-elements'),
190 ],
191 'render_type' => 'none',
192 ]
193 );
194
195 $instance->add_control(
196 'email_content_type' . $slug,
197 [
198 'label' => esc_html__('Send As', 'uicore-elements'),
199 'type' => Controls_Manager::SELECT,
200 'default' => 'html',
201 'render_type' => 'none',
202 'options' => [
203 'html' => esc_html__('HTML', 'uicore-elements'),
204 'plain' => esc_html__('Plain', 'uicore-elements'),
205 ],
206 ]
207 );
208 }
209 function TRAIT_register_submit_redirect_controls()
210 {
211 $this->start_controls_section(
212 'section_redirect',
213 [
214 'label' => esc_html__('Redirect', 'uicore-elements'),
215 'condition' => [
216 'submit_actions' => 'redirect',
217 ],
218 ]
219 );
220
221 $this->add_control(
222 'redirect_to',
223 [
224 'label' => esc_html__('Redirect To', 'uicore-elements'),
225 'type' => Controls_Manager::TEXT,
226 'placeholder' => esc_html__('https://your-link.com', 'uicore-elements'),
227 'ai' => [
228 'active' => false,
229 ],
230 'dynamic' => [
231 'active' => true,
232 'categories' => [
233 'url',
234 ],
235 ],
236 'label_block' => true,
237 'render_type' => 'none',
238 ]
239 );
240
241 $this->end_controls_section();
242 }
243 function TRAIT_register_submit_popup_controls()
244 {
245 if (defined('UICORE_ASSETS')) {
246 $this->start_controls_section(
247 'section_popup',
248 [
249 'label' => esc_html__('Popup', 'uicore-elements'),
250 'condition' => [
251 'submit_actions' => 'popup',
252 ],
253 ]
254 );
255 $this->add_control(
256 'popup_action',
257 [
258 'label' => esc_html__('Action', 'uicore-elements'),
259 'type' => Controls_Manager::SELECT,
260 'default' => '',
261 'options' => [
262 '' => esc_html__('Choose', 'uicore-elements'),
263 'close' => esc_html__('Close Popup', 'uicore-elements'),
264 'open' => esc_html__('Open Popup', 'uicore-elements'),
265 ],
266 'label_block' => true,
267 'render_type' => 'none',
268 ]
269 );
270 $this->add_control(
271 'open_popup',
272 [
273 'label' => esc_html__('Popup', 'uicore-elements'),
274 'type' => Controls_Manager::SELECT2,
275 'multiple' => false,
276 'options' => Helper::get_uicore_popups(),
277 'label_block' => true,
278 'render_type' => 'none',
279 'condition' => [
280 'popup_action' => 'open',
281 ],
282 ]
283 );
284 $this->add_control(
285 'popup_warning',
286 [
287 'type' => Controls_Manager::ALERT,
288 'alert_type' => 'warning',
289 'dismissible' => false,
290 'heading' => esc_html__('Popup Visibility', 'uicore-elements'),
291 'content' => esc_html__("Make sure the chosen popup is enabled on the pages where your widget will be shown. Otherwise, this action won't work.", 'uicore-elements'),
292 'condition' => [
293 'popup_action' => 'open',
294 ],
295 ]
296 );
297
298 $this->end_controls_section();
299 }
300 }
301
302 function TRAIT_register_submit_webhook_controls()
303 {
304 $this->start_controls_section(
305 'section_webhook',
306 [
307 'label' => esc_html__('Webhook', 'uicore-elements'),
308 'condition' => [
309 'submit_actions' => 'webhook',
310 ],
311 ]
312 );
313
314 $this->add_control(
315 'webhook_url',
316 [
317 'label' => esc_html__('Webhook URL', 'uicore-elements'),
318 'type' => Controls_Manager::TEXT,
319 'placeholder' => esc_html__('https://your-endpoint.com/webhook', 'uicore-elements'),
320 'label_block' => true,
321 'ai' => [
322 'active' => false,
323 ],
324 'dynamic' => [
325 'active' => true,
326 'categories' => [
327 'url',
328 ],
329 ],
330 'render_type' => 'none',
331 ]
332 );
333
334 $this->add_control(
335 'webhook_advanced_data',
336 [
337 'label' => esc_html__('Advanced Data', 'uicore-elements'),
338 'type' => Controls_Manager::SWITCHER,
339 'label_on' => esc_html__('On', 'uicore-elements'),
340 'label_off' => esc_html__('Off', 'uicore-elements'),
341 'return_value' => 'true',
342 'default' => '',
343 'render_type' => 'none',
344 ]
345 );
346
347 $this->end_controls_section();
348 }
349
350 /**
351 * Register Newsletter Services controls for the submit action.
352 *
353 * @param array $services - The list of services available.
354 * @param bool $field_mapping - Enable Field Mapping control if the widget accepts form fields management.
355 *
356 * @return void
357 */
358 function TRAIT_register_submit_newsletter_services_controls(array $services, bool $field_mapping = false)
359 {
360
361 // Get and build the newsletter services section conditional display
362 $terms = [];
363 foreach ($services as $service) {
364 $terms[] = [
365 'name' => 'submit_actions',
366 'operator' => 'contains',
367 'value' => $service,
368 ];
369 }
370
371 $this->start_controls_section(
372 'newsletter_services_section',
373 [
374 'label' => esc_html__('Newsletter Service', 'uicore-elements'),
375 'conditions' => [
376 'relation' => 'or',
377 'terms' => $terms,
378 ],
379 ]
380 );
381
382 if (!get_option('uicore_elements_newsletter_service_key')) {
383 $this->add_control(
384 'services_warning',
385 [
386 'type' => Controls_Manager::ALERT,
387 'alert_type' => 'warning',
388 'dismissible' => false,
389 'heading' => esc_html__("You haven't set your Newsletter Service API key yet.", 'uicore-elements'),
390 'content' => Helper::get_admin_settings_url(esc_html__("Click here to configure your API keys.", 'uicore-elements')),
391 ]
392 );
393 }
394
395 $this->add_control(
396 'mailchimp_audience_id',
397 [
398 'label' => esc_html__('ID', 'uicore-elements'),
399 'type' => Controls_Manager::TEXT,
400 'description' => esc_html__('The ID of the service list, group, audience, or form where contacts will be saved.', 'uicore-elements'),
401 'ai' => [
402 'active' => false,
403 ],
404 'dynamic' => [
405 'active' => true,
406 ],
407 'label_block' => true,
408 'render_type' => 'none',
409 ]
410 );
411
412 if ($field_mapping) {
413
414 $this->add_control(
415 'services_map_description',
416 [
417 'label' => esc_html__('Field Mapping', 'uicore-elements'),
418 'type' => Controls_Manager::RAW_HTML,
419 'raw' => esc_html__('You need to set the "ID" of the field you want to map.', 'uicore-elements'),
420 'content_classes' => 'elementor-control-field-description',
421 'separator' => 'before',
422 ]
423 );
424 $this->add_control(
425 'mailchimp_fname_id',
426 [
427 'label' => esc_html__('First Name', 'uicore-elements'),
428 'type' => Controls_Manager::TEXT,
429 'ai' => [
430 'active' => false,
431 ],
432 'render_type' => 'none',
433 ]
434 );
435 $this->add_control(
436 'mailchimp_lname_id',
437 [
438 'label' => esc_html__('Last Name', 'uicore-elements'),
439 'type' => Controls_Manager::TEXT,
440 'ai' => [
441 'active' => false,
442 ],
443 'render_type' => 'none',
444 'conditions' => [
445 'terms' => [
446 [
447 'name' => 'submit_actions',
448 'operator' => '!contains',
449 'value' => 'moosend',
450 ],
451 [
452 'name' => 'submit_actions',
453 'operator' => '!contains',
454 'value' => 'getresponse',
455 ],
456 ]
457 ]
458 ]
459 );
460 $this->add_control(
461 'mailchimp_email_id',
462 [
463 'label' => esc_html__('Email*', 'uicore-elements'),
464 'type' => Controls_Manager::TEXT,
465 'ai' => [
466 'active' => false,
467 ],
468 'render_type' => 'none',
469 ]
470 );
471 $this->add_control(
472 'mailchimp_birthday_id',
473 [
474 'label' => esc_html__('Birthday', 'uicore-elements'),
475 'type' => Controls_Manager::TEXT,
476 'ai' => [
477 'active' => false,
478 ],
479 'render_type' => 'none',
480 'conditions' => [
481 'terms' => [
482 [
483 'name' => 'submit_actions',
484 'operator' => '!contains',
485 'value' => 'moosend',
486 ],
487 [
488 'name' => 'submit_actions',
489 'operator' => '!contains',
490 'value' => 'getresponse',
491 ],
492 [
493 'name' => 'submit_actions',
494 'operator' => '!contains',
495 'value' => 'mailerlite',
496 ],
497 ]
498 ]
499 ]
500 );
501 $this->add_control(
502 'mailchimp_phone_id',
503 [
504 'label' => esc_html__('Phone', 'uicore-elements'),
505 'type' => Controls_Manager::TEXT,
506 'ai' => [
507 'active' => false,
508 ],
509 'render_type' => 'none',
510 'conditions' => [
511 'terms' => [
512 [
513 'name' => 'submit_actions',
514 'operator' => '!contains',
515 'value' => 'moosend',
516 ],
517 [
518 'name' => 'submit_actions',
519 'operator' => '!contains',
520 'value' => 'getresponse',
521 ],
522 ]
523 ]
524 ]
525 );
526
527 $this->add_control(
528 'services_custom_fields_description',
529 [
530 'label' => esc_html__('Custom Fields', 'uicore-elements'),
531 'type' => Controls_Manager::RAW_HTML,
532 'raw' => esc_html__('Set the "ID" of the custom field you want to pass.', 'uicore-elements'),
533 'content_classes' => 'elementor-control-field-description',
534 'separator' => 'before',
535 ]
536 );
537 $this->add_control(
538 'newsletter_service_custom_fields',
539 [
540 'label' => esc_html__('Custom Fields', 'uicore-elements'),
541 'type' => Controls_Manager::REPEATER,
542 'prevent_empty' => false,
543 'fields' => [
544 [
545 'name' => 'field_name',
546 'label' => esc_html__('API Field Key', 'uicore-elements'),
547 'description' => esc_html__('How the field is called in the newsletter service provider.', 'uicore-elements'),
548 'type' => Controls_Manager::TEXT,
549 ],
550 [
551 'name' => 'field_id',
552 'label' => esc_html__('Form Field ID', 'uicore-elements'),
553 'description' => esc_html__('The correspondent form field ID in the widget data.', 'uicore-elements'),
554 'type' => Controls_Manager::TEXT,
555 ],
556 [
557 'name' => 'field_type',
558 'label' => esc_html__('Sanitization Type', 'uicore-elements'),
559 'description' => esc_html__('Defines which sanitization type this field should receive. E.g.: phone number validation.', 'uicore-elements'),
560 'default' => 'text',
561 'options' => [
562 'text' => esc_html__('Text', 'uicore-elements'),
563 'email' => esc_html__('Email', 'uicore-elements'),
564 'phone' => esc_html__('Phone', 'uicore-elements'),
565 'birthday' => esc_html__('Birthday', 'uicore-elements'),
566 'date' => esc_html__('Date', 'uicore-elements'),
567 ],
568 'type' => Controls_Manager::SELECT,
569 ]
570 ],
571 ]
572 );
573 }
574
575 $this->end_controls_section();
576 }
577
578 // Settings and Content Controls
579 function TRAIT_register_additional_controls($messages)
580 {
581 $this->start_controls_section(
582 'section_form_options',
583 [
584 'label' => esc_html__('Additional Options', 'uicore-elements'),
585 'tab' => Controls_Manager::TAB_CONTENT,
586 ]
587 );
588
589 $this->add_control(
590 'form_id',
591 [
592 'label' => esc_html__('Form ID', 'uicore-elements'),
593 'type' => Controls_Manager::TEXT,
594 'ai' => [
595 'active' => false,
596 ],
597 'placeholder' => 'new_form_id',
598 'description' => esc_html__('Please make sure the ID is unique and not used elsewhere on the page this form is displayed. This field allows `A-z 0-9` & underscore chars without spaces.', 'uicore-elements'),
599 'separator' => 'after',
600 'dynamic' => [
601 'active' => true,
602 ],
603 ]
604 );
605 $this->add_control(
606 'form_validation',
607 [
608 'label' => esc_html__('Form Validation', 'uicore-elements'),
609 'type' => Controls_Manager::SELECT,
610 'options' => [
611 '' => esc_html__('Browser Default', 'uicore-elements'),
612 'no' => esc_html__('No validation', 'uicore-elements'),
613 ],
614 'default' => '',
615 ]
616 );
617 $this->add_control(
618 'custom_messages',
619 [
620 'label' => esc_html__('Custom Messages', 'uicore-elements'),
621 'type' => Controls_Manager::SWITCHER,
622 'default' => '',
623 'separator' => 'before',
624 'render_type' => 'none',
625 ]
626 );
627 $this->add_control(
628 'success_message',
629 [
630 'label' => esc_html__('Success Message', 'uicore-elements'),
631 'type' => Controls_Manager::TEXT,
632 'default' => $messages['success'],
633 'placeholder' => $messages['success'],
634 'label_block' => true,
635 'condition' => [
636 'custom_messages!' => '',
637 ],
638 'render_type' => 'none',
639 'dynamic' => [
640 'active' => true,
641 ],
642 ]
643 );
644 $this->add_control(
645 'error_message',
646 [
647 'label' => esc_html__('Form Error', 'uicore-elements'),
648 'type' => Controls_Manager::TEXT,
649 'default' => $messages['error'],
650 'placeholder' => $messages['error'],
651 'label_block' => true,
652 'condition' => [
653 'custom_messages!' => '',
654 ],
655 'render_type' => 'none',
656 'dynamic' => [
657 'active' => true,
658 ],
659 ]
660 );
661 $this->add_control(
662 'mail_error_message',
663 [
664 'label' => esc_html__('Email Sending Error', 'uicore-elements'),
665 'type' => Controls_Manager::TEXT,
666 'default' => $messages['mail_error'],
667 'placeholder' => $messages['mail_error'],
668 'label_block' => true,
669 'condition' => [
670 'custom_messages!' => '',
671 ],
672 'render_type' => 'none',
673 'dynamic' => [
674 'active' => true,
675 ],
676 ]
677 );
678 $this->add_control(
679 'redirect_message',
680 [
681 'label' => esc_html__('Sucessfull Redirect', 'uicore-elements'),
682 'type' => Controls_Manager::TEXT,
683 'default' => $messages['redirect'],
684 'placeholder' => $messages['redirect'],
685 'label_block' => true,
686 'conditions' => [
687 'terms' => [
688 [
689 'name' => 'custom_messages',
690 'operator' => '!=',
691 'value' => '',
692 ],
693 [
694 'name' => 'submit_actions',
695 'operator' => 'contains',
696 'value' => 'redirect',
697 ]
698 ],
699 ],
700 'render_type' => 'none',
701 'dynamic' => [
702 'active' => true,
703 ],
704 ]
705 );
706 $this->end_controls_section();
707 }
708 function TRAIT_register_button_controls(string $submit_text = 'send')
709 {
710 $this->add_responsive_control(
711 'button_width',
712 [
713 'label' => esc_html__('Column Width', 'uicore-elements'),
714 'type' => Controls_Manager::SELECT,
715 'options' => $this->TRAIT_get_width_values(),
716 'default' => '20',
717 ]
718 );
719 $this->add_responsive_control(
720 'button_align',
721 [
722 'label' => esc_html__('Alignment', 'uicore-elements'),
723 'type' => Controls_Manager::CHOOSE,
724 'options' => [
725 'left' => [
726 'title' => esc_html__('Left', 'uicore-elements'),
727 'icon' => 'eicon-text-align-left',
728 ],
729 'center' => [
730 'title' => esc_html__('Center', 'uicore-elements'),
731 'icon' => 'eicon-text-align-center',
732 ],
733 'right' => [
734 'title' => esc_html__('Right', 'uicore-elements'),
735 'icon' => 'eicon-text-align-right',
736 ],
737 'stretch' => [
738 'title' => esc_html__('Justified', 'uicore-elements'),
739 'icon' => 'eicon-text-align-justify',
740 ],
741 ],
742 'default' => 'stretch',
743 'prefix_class' => 'ui-e-submit-align-',
744 ]
745 );
746 $this->add_control(
747 'button_text',
748 [
749 'label' => esc_html__('Submit', 'uicore-elements'),
750 'type' => Controls_Manager::TEXT,
751 /* translators: %s: Submit text */
752 'default' => esc_html(sprintf('%s', $submit_text), 'uicore-elements'),
753 /* translators: %s: Submit text */
754 'placeholder' => esc_html(sprintf('%s', $submit_text), 'uicore-elements'),
755 'dynamic' => [
756 'active' => true,
757 ],
758 'ai' => [
759 'active' => false,
760 ],
761 ]
762 );
763 $this->add_control(
764 'selected_button_icon',
765 [
766 'label' => esc_html__('Icon', 'uicore-elements'),
767 'type' => Controls_Manager::ICONS,
768 'skin' => 'inline',
769 'label_block' => false,
770 ]
771 );
772 $this->add_control(
773 'button_icon_align',
774 [
775 'label' => esc_html__('Icon Position', 'uicore-elements'),
776 'type' => Controls_Manager::SELECT,
777 'default' => 'left',
778 'options' => [
779 'left' => esc_html__('Before', 'uicore-elements'),
780 'right' => esc_html__('After', 'uicore-elements'),
781 ],
782 'condition' => [
783 'selected_button_icon[value]!' => '',
784 ],
785 ]
786 );
787 $this->add_control(
788 'button_icon_indent',
789 [
790 'label' => esc_html__('Icon Spacing', 'uicore-elements'),
791 'type' => Controls_Manager::SLIDER,
792 'size_units' => ['px', 'em', 'rem', 'custom'],
793 'range' => [
794 'px' => [
795 'max' => 100,
796 ],
797 'em' => [
798 'max' => 10,
799 ],
800 'rem' => [
801 'max' => 10,
802 ],
803 ],
804 'condition' => [
805 'selected_button_icon[value]!' => '',
806 ],
807 'selectors' => [
808 '{{WRAPPER}} .elementor-button .ui-e-align-right' => 'margin-left: {{SIZE}}{{UNIT}};',
809 '{{WRAPPER}} .elementor-button .ui-e-align-left' => 'margin-right: {{SIZE}}{{UNIT}};',
810 ],
811 ]
812 );
813 $this->add_control(
814 'button_css_id',
815 [
816 'label' => esc_html__('Button ID', 'uicore-elements'),
817 'type' => Controls_Manager::TEXT,
818 'default' => '',
819 'ai' => [
820 'active' => false,
821 ],
822 'title' => esc_html__('Add your custom id WITHOUT the Pound key. e.g: my-id', 'uicore-elements'),
823 'description' => esc_html__('Please make sure the ID is unique and not used elsewhere on the page this form is displayed. This field allows `A-z 0-9` & underscore chars without spaces.', 'uicore-elements'),
824 'separator' => 'before',
825 'dynamic' => [
826 'active' => true,
827 ],
828 ]
829 );
830 }
831
832 /**
833 * Register the submit action options;
834 *
835 * @param array $options - The options list for the elementor SELECT2 control.
836 *
837 * @return void
838 */
839 function TRAIT_register_submit_actions_controls($options)
840 {
841 $this->start_controls_section(
842 'section_actions',
843 [
844 'label' => esc_html__('Actions After Submit', 'uicore-elements'),
845 ]
846 );
847
848 $this->add_control(
849 'submit_actions',
850 [
851 'label' => esc_html__('Submit Actions', 'uicore-elements'),
852 'type' => Controls_Manager::SELECT2,
853 'label_block' => true,
854 'multiple' => true,
855 'options' => $options,
856 'default' => ['email'],
857 ]
858 );
859
860 $this->end_controls_section();
861 }
862
863 // Style Controls
864 function TRAIT_register_form_style_controls($section = true)
865 {
866 if ($section) {
867 $this->start_controls_section(
868 'section_form_style',
869 [
870 'label' => esc_html__('Form', 'uicore-elements'),
871 'tab' => Controls_Manager::TAB_STYLE,
872 ]
873 );
874 }
875 $this->add_control(
876 'column_gap',
877 [
878 'label' => esc_html__('Columns Gap', 'uicore-elements'),
879 'type' => Controls_Manager::SLIDER,
880 'size_units' => ['px', 'em', 'rem', 'custom'],
881 'default' => [
882 'size' => 10,
883 ],
884 'range' => [
885 'px' => [
886 'max' => 60,
887 ],
888 'em' => [
889 'max' => 6,
890 ],
891 'rem' => [
892 'max' => 6,
893 ],
894 ],
895 'selectors' => [
896 '{{WRAPPER}} .ui-e-field-group' => 'padding-right: calc( {{SIZE}}{{UNIT}}/2 ); padding-left: calc( {{SIZE}}{{UNIT}}/2 );',
897 '{{WRAPPER}} .ui-e-fields-wrp' => 'margin-left: calc( -{{SIZE}}{{UNIT}}/2 ); margin-right: calc( -{{SIZE}}{{UNIT}}/2 );',
898 ],
899 ]
900 );
901 $this->add_control(
902 'row_gap',
903 [
904 'label' => esc_html__('Rows Gap', 'uicore-elements'),
905 'type' => Controls_Manager::SLIDER,
906 'size_units' => ['px', 'em', 'rem', 'custom'],
907 'default' => [
908 'size' => 10,
909 ],
910 'range' => [
911 'px' => [
912 'max' => 60,
913 ],
914 'em' => [
915 'max' => 6,
916 ],
917 'rem' => [
918 'max' => 6,
919 ],
920 ],
921 'selectors' => [
922 '{{WRAPPER}} .ui-e-field-group' => 'margin-bottom: {{SIZE}}{{UNIT}};',
923 '{{WRAPPER}} .ui-e-fields-wrp' => 'margin-bottom: -{{SIZE}}{{UNIT}};',
924 ],
925 ]
926 );
927 $this->add_control(
928 'heading_label',
929 [
930 'label' => esc_html__('Label', 'uicore-elements'),
931 'type' => Controls_Manager::HEADING,
932 'separator' => 'before',
933 ]
934 );
935 $this->add_control(
936 'label_spacing',
937 [
938 'label' => esc_html__('Spacing', 'uicore-elements'),
939 'type' => Controls_Manager::SLIDER,
940 'size_units' => ['px', 'em', 'rem', 'custom'],
941 'default' => [
942 'size' => 0,
943 ],
944 'range' => [
945 'px' => [
946 'max' => 60,
947 ],
948 'em' => [
949 'max' => 6,
950 ],
951 'rem' => [
952 'max' => 6,
953 ],
954 ],
955 'selectors' => [
956 'body {{WRAPPER}} .ui-e-field-group > label' => 'padding-bottom: {{SIZE}}{{UNIT}};',
957 ],
958 ]
959 );
960 $this->add_control(
961 'label_color',
962 [
963 'label' => esc_html__('Text Color', 'uicore-elements'),
964 'type' => Controls_Manager::COLOR,
965 'selectors' => [
966 '{{WRAPPER}} .ui-e-field-group > label, {{WRAPPER}} .ui-e-field-subgroup label' => 'color: {{VALUE}};',
967 ],
968 'default' => 'var(--e-global-color-uicore_body)',
969 ]
970 );
971 $this->add_control(
972 'mark_required_color',
973 [
974 'label' => esc_html__('Mark Color', 'uicore-elements'),
975 'type' => Controls_Manager::COLOR,
976 'default' => '',
977 'selectors' => [
978 '{{WRAPPER}} .ui-e-required .ui-e-label:after' => 'color: {{COLOR}};',
979 ],
980 'condition' => [
981 'mark_required' => 'yes',
982 ],
983 ]
984 );
985 $this->add_group_control(
986 Group_Control_Typography::get_type(),
987 [
988 'name' => 'label_typography',
989 'selector' => '{{WRAPPER}} .ui-e-field-group > label',
990 'global' => [
991 'default' => Global_Typography::TYPOGRAPHY_TEXT,
992 ],
993 ]
994 );
995 $this->add_control(
996 'form_styles_component_divider',
997 [
998 'type' => Controls_Manager::DIVIDER,
999 ]
1000 );
1001 if ($section) {
1002 $this->end_controls_section();
1003 }
1004 }
1005 function TRAIT_register_fields_style_controls($section = true)
1006 {
1007 if ($section) {
1008 $this->start_controls_section(
1009 'section_field_style',
1010 [
1011 'label' => esc_html__('Fields', 'uicore-elements'),
1012 'tab' => Controls_Manager::TAB_STYLE,
1013 ]
1014 );
1015 }
1016
1017 $this->start_controls_tabs(
1018 'field_style_tabs'
1019 );
1020
1021 $this->start_controls_tab(
1022 'field_normal_tab',
1023 [
1024 'label' => esc_html__('Normal', 'uicore-elements'),
1025 ]
1026 );
1027
1028 $this->add_group_control(
1029 Group_Control_Typography::get_type(),
1030 [
1031 'name' => 'field_typography',
1032 'selector' => '{{WRAPPER}} .ui-e-field-group .ui-e-field, {{WRAPPER}} .ui-e-field-subgroup label, {{WRAPPER}} .ui-e-field-group .ui-e-field-select select',
1033 'global' => [
1034 'default' => Global_Typography::TYPOGRAPHY_TEXT,
1035 ],
1036 ]
1037 );
1038 $this->add_control(
1039 'field_text_color',
1040 [
1041 'label' => esc_html__('Text Color', 'uicore-elements'),
1042 'type' => Controls_Manager::COLOR,
1043 'selectors' => [
1044 '{{WRAPPER}} .ui-e-field-group .ui-e-field, {{WRAPPER}} .ui-e-field-group .ui-e-field-select select' => 'color: {{VALUE}};',
1045 ],
1046 'default' => 'var(--e-global-color-uicore_body)',
1047
1048 ]
1049 );
1050 $this->add_control(
1051 'field_placeholder_color',
1052 [
1053 'label' => esc_html__('Placeholder Color', 'uicore-elements'),
1054 'type' => Controls_Manager::COLOR,
1055 'selectors' => [
1056 '{{WRAPPER}} .ui-e-field-group .ui-e-field::placeholder' => 'color: {{VALUE}};',
1057 ],
1058 'default' => 'var(--e-global-color-uicore_body)',
1059
1060 ]
1061 );
1062 $this->add_control(
1063 'field_background_color',
1064 [
1065 'label' => esc_html__('Background Color', 'uicore-elements'),
1066 'type' => Controls_Manager::COLOR,
1067 'default' => '#ffffff',
1068 'selectors' => [
1069 '{{WRAPPER}} .ui-e-field-group:not(.ui-e-field-type-file, .ui-e-field-type-acceptance) .ui-e-field:not(.ui-e-field-select)' => 'background-color: {{VALUE}};',
1070 '{{WRAPPER}} .ui-e-field-group .ui-e-field-select select' => 'background-color: {{VALUE}};',
1071 ],
1072 ]
1073 );
1074 $this->add_group_control(
1075 Group_Control_Border::get_type(),
1076 [
1077 'name' => 'field_border',
1078 'selector' =>
1079 '{{WRAPPER}} .ui-e-field-group:not(.ui-e-field-type-file, .ui-e-field-type-acceptance) .ui-e-field:not(.ui-e-field-select),
1080 {{WRAPPER}} .ui-e-field-group .ui-e-field-select select',
1081 ]
1082 );
1083 $this->add_group_control(
1084 Group_Control_Box_Shadow::get_type(),
1085 [
1086 'name' => 'field_box_shadow',
1087 'selector' => '{{WRAPPER}} .ui-e-field-group:not(.ui-e-field-type-file, .ui-e-field-type-acceptance) .ui-e-field:not(.ui-e-field-select),
1088 {{WRAPPER}} .ui-e-field-group .ui-e-field-select select',
1089 ]
1090 );
1091
1092 $this->end_controls_tab();
1093
1094 $this->start_controls_tab(
1095 'field_hover_tab',
1096 [
1097 'label' => esc_html__('Hover', 'uicore-elements'),
1098 ]
1099 );
1100
1101 $this->add_control(
1102 'field_text_hover_color',
1103 [
1104 'label' => esc_html__('Text Color', 'uicore-elements'),
1105 'type' => Controls_Manager::COLOR,
1106 'selectors' => [
1107 '{{WRAPPER}} .ui-e-field-group:hover .ui-e-field, {{WRAPPER}} .ui-e-field-group:hover .ui-e-field-select select' => 'color: {{VALUE}};',
1108 ],
1109 'default' => 'var(--e-global-color-uicore_body)',
1110
1111 ]
1112 );
1113 $this->add_control(
1114 'field_placeholder_hover_color',
1115 [
1116 'label' => esc_html__('Placeholder Color', 'uicore-elements'),
1117 'type' => Controls_Manager::COLOR,
1118 'selectors' => [
1119 '{{WRAPPER}} .ui-e-field-group:hover .ui-e-field::placeholder' => 'color: {{VALUE}};',
1120 ],
1121 'default' => 'var(--e-global-color-uicore_body)',
1122
1123 ]
1124 );
1125 $this->add_control(
1126 'field_background_hover_color',
1127 [
1128 'label' => esc_html__('Background Color', 'uicore-elements'),
1129 'type' => Controls_Manager::COLOR,
1130 'default' => '#ffffff',
1131 'selectors' => [
1132 '{{WRAPPER}} .ui-e-field-group:hover:not(.ui-e-field-type-file, .ui-e-field-type-acceptance) .ui-e-field:not(.ui-e-field-select)' => 'background-color: {{VALUE}};',
1133 '{{WRAPPER}} .ui-e-field-group:hover .ui-e-field-select select' => 'background-color: {{VALUE}};',
1134 ],
1135 ]
1136 );
1137 $this->add_group_control(
1138 Group_Control_Border::get_type(),
1139 [
1140 'name' => 'field_hover_border',
1141 'selector' =>
1142 '{{WRAPPER}} .ui-e-field-group:hover:not(.ui-e-field-type-file, .ui-e-field-type-acceptance) .ui-e-field:not(.ui-e-field-select),
1143 {{WRAPPER}} .ui-e-field-group:hover .ui-e-field-select select',
1144 ]
1145 );
1146 $this->add_group_control(
1147 Group_Control_Box_Shadow::get_type(),
1148 [
1149 'name' => 'field_box_shadow_hover',
1150 'selector' => '{{WRAPPER}} .ui-e-field-group:hover:not(.ui-e-field-type-file, .ui-e-field-type-acceptance) .ui-e-field:not(.ui-e-field-select),
1151 {{WRAPPER}} .ui-e-field-group:hover .ui-e-field-select select',
1152 ]
1153 );
1154
1155 $this->end_controls_tab();
1156
1157 $this->start_controls_tab(
1158 'field_active_tab',
1159 [
1160 'label' => esc_html__('Active', 'uicore-elements'),
1161 ]
1162 );
1163
1164 $this->add_control(
1165 'field_text_active_color',
1166 [
1167 'label' => esc_html__('Text Color', 'uicore-elements'),
1168 'type' => Controls_Manager::COLOR,
1169 'selectors' => [
1170 '{{WRAPPER}} .ui-e-field-group .ui-e-field:focus, {{WRAPPER}} .ui-e-field-group .ui-e-field-select select:focus' => 'color: {{VALUE}};',
1171 ],
1172 'default' => 'var(--e-global-color-uicore_body)',
1173
1174 ]
1175 );
1176 $this->add_control(
1177 'field_background_active_color',
1178 [
1179 'label' => esc_html__('Background Color', 'uicore-elements'),
1180 'type' => Controls_Manager::COLOR,
1181 'default' => '#ffffff',
1182 'selectors' => [
1183 '{{WRAPPER}} .ui-e-field-group:not(.ui-e-field-type-file, .ui-e-field-type-acceptance) .ui-e-field:focus:not(.ui-e-field-select)' => 'background-color: {{VALUE}};',
1184 '{{WRAPPER}} .ui-e-field-group .ui-e-field-select:focus select' => 'background-color: {{VALUE}};',
1185 ],
1186 ]
1187 );
1188 $this->add_group_control(
1189 Group_Control_Border::get_type(),
1190 [
1191 'name' => 'field_active_border',
1192 'selector' =>
1193 '{{WRAPPER}} .ui-e-field-group:not(.ui-e-field-type-file, .ui-e-field-type-acceptance) .ui-e-field:focus:not(.ui-e-field-select),
1194 {{WRAPPER}} .ui-e-field-group .ui-e-field-select:focus select',
1195 ]
1196 );
1197 $this->add_group_control(
1198 Group_Control_Box_Shadow::get_type(),
1199 [
1200 'name' => 'field_box_shadow_active',
1201 'selector' => '{{WRAPPER}} .ui-e-field-group:not(.ui-e-field-type-file, .ui-e-field-type-acceptance) .ui-e-field:focus:not(.ui-e-field-select),
1202 {{WRAPPER}} .ui-e-field-group .ui-e-field-select:focus select',
1203 ]
1204 );
1205
1206 $this->end_controls_tab();
1207
1208 $this->end_controls_tabs();
1209
1210 $this->add_responsive_control(
1211 'field_border_radius',
1212 [
1213 'label' => esc_html__('Border Radius', 'uicore-elements'),
1214 'type' => Controls_Manager::DIMENSIONS,
1215 'size_units' => ['px', '%', 'em', 'rem', 'custom'],
1216 'selectors' => [
1217 '{{WRAPPER}} .ui-e-field-group:not(.ui-e-field-type-file, .ui-e-field-type-acceptance) .ui-e-field:not(.ui-e-field-select)' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1218 '{{WRAPPER}} .ui-e-field-group .ui-e-field-select select' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1219 ],
1220 'separator' => 'before'
1221 ]
1222 );
1223 $this->add_responsive_control(
1224 'field_padding',
1225 [
1226 'label' => esc_html__('Padding', 'uicore-elements'),
1227 'type' => Controls_Manager::DIMENSIONS,
1228 'size_units' => ['px', '%', 'em', 'rem', 'custom'],
1229 'selectors' => [
1230 '{{WRAPPER}} .ui-e-field-group:not(.ui-e-field-type-file, .ui-e-field-type-acceptance) .ui-e-field:not(.ui-e-field-select)' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1231 '{{WRAPPER}} .ui-e-field-group .ui-e-field-select select' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1232 ],
1233 ]
1234 );
1235 if ($section) {
1236 $this->end_controls_section();
1237 }
1238 }
1239 function TRAIT_register_button_style_controls($section = true)
1240 {
1241 if ($section) {
1242 $this->start_controls_section(
1243 'section_button_style',
1244 [
1245 'label' => esc_html__('Button', 'uicore-elements'),
1246 'tab' => Controls_Manager::TAB_STYLE,
1247 ]
1248 );
1249 }
1250
1251 $this->add_group_control(
1252 Group_Control_Typography::get_type(),
1253 [
1254 'name' => 'button_typography',
1255 'global' => [
1256 'default' => Global_Typography::TYPOGRAPHY_ACCENT,
1257 ],
1258 'selector' => '{{WRAPPER}} .elementor-button',
1259 ]
1260 );
1261 $this->add_group_control(
1262 Group_Control_Border::get_type(),
1263 [
1264 'name' => 'button_border',
1265 'selector' => '{{WRAPPER}} .elementor-button',
1266 'exclude' => [
1267 'color',
1268 ],
1269 ]
1270 );
1271
1272 $this->start_controls_tabs('tabs_button_style');
1273
1274 $this->start_controls_tab(
1275 'tab_button_normal',
1276 [
1277 'label' => esc_html__('Normal', 'uicore-elements'),
1278 ]
1279 );
1280
1281 $this->add_control(
1282 'button_background_color',
1283 [
1284 'label' => esc_html__('Background Color', 'uicore-elements'),
1285 'type' => Controls_Manager::COLOR,
1286 'selectors' => [
1287 '{{WRAPPER}} .e-form__buttons__wrapper__button-next' => 'background-color: {{VALUE}};',
1288 '{{WRAPPER}} .elementor-button[type="submit"]' => 'background-color: {{VALUE}};',
1289 ],
1290 ]
1291 );
1292 $this->add_control(
1293 'button_text_color',
1294 [
1295 'label' => esc_html__('Text Color', 'uicore-elements'),
1296 'type' => Controls_Manager::COLOR,
1297 'default' => '#ffffff',
1298 'selectors' => [
1299 '{{WRAPPER}} .e-form__buttons__wrapper__button-next' => 'color: {{VALUE}};',
1300 '{{WRAPPER}} .elementor-button[type="submit"]' => 'color: {{VALUE}};',
1301 '{{WRAPPER}} .elementor-button[type="submit"] svg *' => 'fill: {{VALUE}};',
1302 ],
1303 ]
1304 );
1305 $this->add_control(
1306 'button_border_color',
1307 [
1308 'label' => esc_html__('Border Color', 'uicore-elements'),
1309 'type' => Controls_Manager::COLOR,
1310 'default' => '',
1311 'selectors' => [
1312 '{{WRAPPER}} .e-form__buttons__wrapper__button-next' => 'border-color: {{VALUE}};',
1313 '{{WRAPPER}} .elementor-button[type="submit"]' => 'border-color: {{VALUE}};',
1314 ],
1315 'condition' => [
1316 'button_border_border!' => '',
1317 ],
1318 ]
1319 );
1320
1321 $this->end_controls_tab();
1322
1323 $this->start_controls_tab(
1324 'tab_button_hover',
1325 [
1326 'label' => esc_html__('Hover', 'uicore-elements'),
1327 ]
1328 );
1329
1330 $this->add_control(
1331 'button_background_hover_color',
1332 [
1333 'label' => esc_html__('Background Color', 'uicore-elements'),
1334 'type' => Controls_Manager::COLOR,
1335 'default' => '',
1336 'selectors' => [
1337 '{{WRAPPER}} .e-form__buttons__wrapper__button-next:hover' => 'background-color: {{VALUE}};',
1338 '{{WRAPPER}} .elementor-button[type="submit"]:hover' => 'background-color: {{VALUE}};',
1339 ],
1340 ]
1341 );
1342 $this->add_control(
1343 'button_hover_color',
1344 [
1345 'label' => esc_html__('Text Color', 'uicore-elements'),
1346 'type' => Controls_Manager::COLOR,
1347 'default' => '#ffffff',
1348 'selectors' => [
1349 '{{WRAPPER}} .e-form__buttons__wrapper__button-next:hover' => 'color: {{VALUE}};',
1350 '{{WRAPPER}} .elementor-button[type="submit"]:hover' => 'color: {{VALUE}};',
1351 '{{WRAPPER}} .elementor-button[type="submit"]:hover svg *' => 'fill: {{VALUE}};',
1352 ],
1353 ]
1354 );
1355 $this->add_control(
1356 'button_hover_border_color',
1357 [
1358 'label' => esc_html__('Border Color', 'uicore-elements'),
1359 'type' => Controls_Manager::COLOR,
1360 'default' => '',
1361 'selectors' => [
1362 '{{WRAPPER}} .e-form__buttons__wrapper__button-next:hover' => 'border-color: {{VALUE}};',
1363 '{{WRAPPER}} .elementor-button[type="submit"]:hover' => 'border-color: {{VALUE}};',
1364 ],
1365 'condition' => [
1366 'button_border_border!' => '',
1367 ],
1368 ]
1369 );
1370 $this->add_control(
1371 'hover_transition_duration',
1372 [
1373 'label' => esc_html__('Transition Duration', 'uicore-elements'),
1374 'type' => Controls_Manager::SLIDER,
1375 'size_units' => ['s', 'ms', 'custom'],
1376 'default' => [
1377 'unit' => 'ms',
1378 ],
1379 'selectors' => [
1380 '{{WRAPPER}} .e-form__buttons__wrapper__button-previous' => 'transition-duration: {{SIZE}}{{UNIT}};',
1381 '{{WRAPPER}} .e-form__buttons__wrapper__button-next' => 'transition-duration: {{SIZE}}{{UNIT}};',
1382 '{{WRAPPER}} .elementor-button[type="submit"] svg *' => 'transition-duration: {{SIZE}}{{UNIT}};',
1383 '{{WRAPPER}} .elementor-button[type="submit"]' => 'transition-duration: {{SIZE}}{{UNIT}};',
1384 ],
1385 ]
1386 );
1387 $this->add_control(
1388 'button_hover_animation',
1389 [
1390 'label' => esc_html__('Animation', 'uicore-elements'),
1391 'type' => Controls_Manager::HOVER_ANIMATION,
1392 ]
1393 );
1394
1395 $this->end_controls_tab();
1396
1397 $this->end_controls_tabs();
1398
1399 $this->add_responsive_control(
1400 'button_border_radius',
1401 [
1402 'label' => esc_html__('Border Radius', 'uicore-elements'),
1403 'type' => Controls_Manager::DIMENSIONS,
1404 'size_units' => ['px', '%', 'em', 'rem', 'custom'],
1405 'selectors' => [
1406 '{{WRAPPER}} .elementor-button' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1407 ],
1408 'separator' => 'before',
1409 ]
1410 );
1411
1412 $this->add_responsive_control(
1413 'button_text_padding',
1414 [
1415 'label' => esc_html__('Text Padding', 'uicore-elements'),
1416 'type' => Controls_Manager::DIMENSIONS,
1417 'size_units' => ['px', '%', 'em', 'rem', 'custom'],
1418 'selectors' => [
1419 '{{WRAPPER}} .elementor-button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1420 ],
1421 ]
1422 );
1423
1424 if ($section) {
1425 $this->end_controls_section();
1426 }
1427 }
1428 function TRAIT_register_messages_style_controls($section = true)
1429 {
1430 if ($section) {
1431 $this->start_controls_section(
1432 'section_messages_style',
1433 [
1434 'label' => esc_html__('Messages', 'uicore-elements'),
1435 'tab' => Controls_Manager::TAB_STYLE,
1436 ]
1437 );
1438 }
1439
1440 $this->add_control(
1441 'show_messages',
1442 [
1443 'label' => esc_html__('Show/Hide messages', 'uicore-elements'),
1444 'type' => Controls_Manager::BUTTON,
1445 'separator' => 'before',
1446 'text' => esc_html__('Toggle', 'uicore-elements'),
1447 'event' => 'ui-e-form-show-messages',
1448 ]
1449 );
1450 $this->add_group_control(
1451 Group_Control_Typography::get_type(),
1452 [
1453 'name' => 'message_typography',
1454 'global' => [
1455 'default' => Global_Typography::TYPOGRAPHY_TEXT,
1456 ],
1457 'selector' => '{{WRAPPER}} .ui-e-message',
1458 ]
1459 );
1460 $this->add_control(
1461 'success_message_color',
1462 [
1463 'label' => esc_html__('Success Message Color', 'uicore-elements'),
1464 'type' => Controls_Manager::COLOR,
1465 'default' => '#4CAF50',
1466 'selectors' => [
1467 '{{WRAPPER}} .ui-e-message span.success' => 'color: {{COLOR}};',
1468 ],
1469 ]
1470 );
1471 $this->add_control(
1472 'error_message_color',
1473 [
1474 'label' => esc_html__('Error Message Color', 'uicore-elements'),
1475 'type' => Controls_Manager::COLOR,
1476 'default' => '#F44336',
1477 'selectors' => [
1478 '{{WRAPPER}} .ui-e-message span.error' => 'color: {{COLOR}};',
1479 ],
1480 ]
1481 );
1482
1483 if ($section) {
1484 $this->end_controls_section();
1485 }
1486 }
1487 function TRAIT_register_all_form_style_controls()
1488 {
1489 $this->TRAIT_register_form_style_controls();
1490 $this->TRAIT_register_fields_style_controls();
1491 $this->TRAIT_register_button_style_controls();
1492 $this->TRAIT_register_messages_style_controls();
1493 }
1494
1495 // Helper and Utility Functions
1496 function TRAIT_get_width_values()
1497 {
1498 return [
1499 '' => esc_html__('Default', 'uicore-elements'),
1500 '100' => '100%',
1501 '80' => '80%',
1502 '75' => '75%',
1503 '70' => '70%',
1504 '66' => '66%',
1505 '60' => '60%',
1506 '50' => '50%',
1507 '40' => '40%',
1508 '33' => '33%',
1509 '30' => '30%',
1510 '25' => '25%',
1511 '20' => '20%',
1512 ];
1513 }
1514 function TRAIT_recaptcha_key_js()
1515 {
1516 ?>
1517 <script>
1518 window.uicore_elements_recaptcha = '<?php echo esc_html(get_option('uicore_elements_recaptcha_site_key')); ?>';
1519 </script>
1520 <?php
1521 }
1522 }
1523