PluginProbe
Elementor Website Builder – more than just a page builder / 3.2.3
Elementor Website Builder – more than just a page builder v3.2.3
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
elementor / includes / controls / select2.php

select2.php in Elementor Website Builder – more than just a page builder 3.2.3, at includes/controls/select2.php

96 lines 2.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Elementor;
3
4 if ( ! defined( 'ABSPATH' ) ) {
5 exit; // Exit if accessed directly.
6 }
7
8 /**
9 * Elementor select2 control.
10 *
11 * A base control for creating select2 control. Displays a select box control
12 * based on select2 jQuery plugin @see https://select2.github.io/ .
13 * It accepts an array in which the `key` is the value and the `value` is the
14 * option name. Set `multiple` to `true` to allow multiple value selection.
15 *
16 * @since 1.0.0
17 */
18 class Control_Select2 extends Base_Data_Control {
19
20 /**
21 * Get select2 control type.
22 *
23 * Retrieve the control type, in this case `select2`.
24 *
25 * @since 1.0.0
26 * @access public
27 *
28 * @return string Control type.
29 */
30 public function get_type() {
31 return 'select2';
32 }
33
34 /**
35 * Get select2 control default settings.
36 *
37 * Retrieve the default settings of the select2 control. Used to return the
38 * default settings while initializing the select2 control.
39 *
40 * @since 1.8.0
41 * @access protected
42 *
43 * @return array Control default settings.
44 */
45 protected function get_default_settings() {
46 return [
47 'options' => [],
48 'multiple' => false,
49 // Select2 library options
50 'select2options' => [],
51 // the lockedOptions array can be passed option keys. The passed option keys will be non-deletable.
52 'lockedOptions' => [],
53 ];
54 }
55
56 /**
57 * Render select2 control output in the editor.
58 *
59 * Used to generate the control HTML in the editor using Underscore JS
60 * template. The variables for the class are available using `data` JS
61 * object.
62 *
63 * @since 1.0.0
64 * @access public
65 */
66 public function content_template() {
67 $control_uid = $this->get_control_uid();
68 ?>
69 <div class="elementor-control-field">
70 <# if ( data.label ) {#>
71 <label for="<?php echo $control_uid; ?>" class="elementor-control-title">{{{ data.label }}}</label>
72 <# } #>
73 <div class="elementor-control-input-wrapper elementor-control-unit-5">
74 <# var multiple = ( data.multiple ) ? 'multiple' : ''; #>
75 <select id="<?php echo $control_uid; ?>" class="elementor-select2" type="select2" {{ multiple }} data-setting="{{ data.name }}">
76 <# _.each( data.options, function( option_title, option_value ) {
77 var value = data.controlValue;
78 if ( typeof value == 'string' ) {
79 var selected = ( option_value === value ) ? 'selected' : '';
80 } else if ( null !== value ) {
81 var value = _.values( value );
82 var selected = ( -1 !== value.indexOf( option_value ) ) ? 'selected' : '';
83 }
84 #>
85 <option {{ selected }} value="{{ option_value }}">{{{ option_title }}}</option>
86 <# } ); #>
87 </select>
88 </div>
89 </div>
90 <# if ( data.description ) { #>
91 <div class="elementor-control-field-description">{{{ data.description }}}</div>
92 <# } #>
93 <?php
94 }
95 }
96