| @@ -1,0 +1,54 @@ | ||
| 1 | +<?php /** @noinspection PhpUnused, SpellCheckingInspection, DuplicatedCode */ | |
| 2 | + | |
| 3 | +namespace King_Addons\AJAX_Select2; | |
| 4 | + | |
| 5 | +use Elementor\Base_Data_Control; | |
| 6 | + | |
| 7 | +if (!defined('ABSPATH')) { | |
| 8 | + exit; // Exit if accessed directly. | |
| 9 | +} | |
| 10 | + | |
| 11 | +class Ajax_Select2 extends Base_Data_Control | |
| 12 | +{ | |
| 13 | + public function get_type(): string | |
| 14 | + { | |
| 15 | + return 'king-addons-ajax-select2'; | |
| 16 | + } | |
| 17 | + | |
| 18 | + public function enqueue(): void | |
| 19 | + { | |
| 20 | + wp_enqueue_script(KING_ADDONS_ASSETS_UNIQUE_KEY . '-ajax-select2', KING_ADDONS_URL . 'includes/controls/Ajax_Select2/ajax-select2.js', array('jquery'), KING_ADDONS_VERSION); | |
| 21 | + } | |
| 22 | + | |
| 23 | + protected function get_default_settings(): array | |
| 24 | + { | |
| 25 | + return [ | |
| 26 | + 'options' => [], | |
| 27 | + 'multiple' => false, | |
| 28 | + 'select2options' => [], | |
| 29 | + 'query_slug' => '', | |
| 30 | + ]; | |
| 31 | + } | |
| 32 | + | |
| 33 | + public function content_template(): void | |
| 34 | + { | |
| 35 | + $control_uid = $this->get_control_uid(); | |
| 36 | + ?> | |
| 37 | + <div class="elementor-control-field"> | |
| 38 | + <label for="<?php echo esc_attr($control_uid); ?>" class="elementor-control-title">{{{ data.label }}}</label> | |
| 39 | + <div class="elementor-control-input-wrapper"> | |
| 40 | + <# var multiple = ( data.multiple ) ? 'multiple' : ''; #> | |
| 41 | + <!--suppress HtmlUnknownAttribute --> | |
| 42 | + <select id="<?php echo esc_attr($control_uid); ?>" | |
| 43 | + class="elementor-control-type-king-addons-ajaxselect2" {{ | |
| 44 | + multiple }} data-query-slug="{{data.query_slug}}" data-setting="{{ data.name }}" | |
| 45 | + data-rest-url="<?php echo esc_attr(get_rest_url() . 'kingaddons/v1' . '/{{data.options}}/'); ?>"> | |
| 46 | + </select> | |
| 47 | + </div> | |
| 48 | + </div> | |
| 49 | + <# if ( data.description ) { #> | |
| 50 | + <div class="elementor-control-field-description">{{{ data.description }}}</div> | |
| 51 | + <# } #> | |
| 52 | + <?php | |
| 53 | + } | |
| 54 | +} | |