| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <?php
- namespace Elementor;
- if ( ! defined( 'ABSPATH' ) ) {
- exit; // Exit if accessed directly.
- }
- /**
- * Elementor select control.
- *
- * A base control for creating select control. Displays a simple select box.
- * It accepts an array in which the `key` is the option value and the `value` is
- * the option name.
- *
- * @since 1.0.0
- */
- class Control_Select extends Base_Data_Control {
- /**
- * Get select control type.
- *
- * Retrieve the control type, in this case `select`.
- *
- * @since 1.0.0
- * @access public
- *
- * @return string Control type.
- */
- public function get_type() {
- return 'select';
- }
- /**
- * Get select control default settings.
- *
- * Retrieve the default settings of the select control. Used to return the
- * default settings while initializing the select control.
- *
- * @since 2.0.0
- * @access protected
- *
- * @return array Control default settings.
- */
- protected function get_default_settings() {
- return [
- 'options' => [],
- ];
- }
- /**
- * Render select control output in the editor.
- *
- * Used to generate the control HTML in the editor using Underscore JS
- * template. The variables for the class are available using `data` JS
- * object.
- *
- * @since 1.0.0
- * @access public
- */
- public function content_template() {
- $control_uid = $this->get_control_uid();
- ?>
- <div class="elementor-control-field">
- <label for="<?php echo $control_uid; ?>" class="elementor-control-title">{{{ data.label }}}</label>
- <div class="elementor-control-input-wrapper">
- <select id="<?php echo $control_uid; ?>" data-setting="{{ data.name }}">
- <#
- var printOptions = function( options ) {
- _.each( options, function( option_title, option_value ) { #>
- <option value="{{ option_value }}">{{{ option_title }}}</option>
- <# } );
- };
- if ( data.groups ) {
- for ( var groupIndex in data.groups ) {
- var groupArgs = data.groups[ groupIndex ];
- if ( groupArgs.options ) { #>
- <optgroup label="{{ groupArgs.label }}">
- <# printOptions( groupArgs.options ) #>
- </optgroup>
- <# } else if ( _.isString( groupArgs ) ) { #>
- <option value="{{ groupIndex }}">{{{ groupArgs }}}</option>
- <# }
- }
- } else {
- printOptions( data.options );
- }
- #>
- </select>
- </div>
- </div>
- <# if ( data.description ) { #>
- <div class="elementor-control-field-description">{{{ data.description }}}</div>
- <# } #>
- <?php
- }
- }
|