/var/www/html/wp-content/plugins/elementor/includes/controls/slider.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?php
namespace Elementor;

use 
Elementor\Modules\DynamicTags\Module as TagsModule;

if ( ! 
defined'ABSPATH' ) ) {
    exit; 
// Exit if accessed directly.
}

/**
 * Elementor slider control.
 *
 * A base control for creating slider control. Displays a draggable range slider.
 * The slider control can optionally have a number of unit types (`size_units`)
 * for the user to choose from. The control also accepts a range argument that
 * allows you to set the `min`, `max` and `step` values per unit type.
 *
 * @since 1.0.0
 */
class Control_Slider extends Control_Base_Units {

    
/**
     * Get slider control type.
     *
     * Retrieve the control type, in this case `slider`.
     *
     * @since 1.0.0
     * @access public
     *
     * @return string Control type.
     */
    
public function get_type() {
        return 
'slider';
    }

    
/**
     * Get slider control default values.
     *
     * Retrieve the default value of the slider control. Used to return the default
     * values while initializing the slider control.
     *
     * @since 1.0.0
     * @access public
     *
     * @return array Control default value.
     */
    
public function get_default_value() {
        return 
array_merge(
            
parent::get_default_value(), [
                
'size' => '',
                
'sizes' => [],
            ]
        );
    }

    
/**
     * Get slider control default settings.
     *
     * Retrieve the default settings of the slider control. Used to return the
     * default settings while initializing the slider control.
     *
     * @since 1.0.0
     * @access protected
     *
     * @return array Control default settings.
     */
    
protected function get_default_settings() {
        return 
array_merge(
            
parent::get_default_settings(), [
                
'label_block' => true,
                
'labels' => [],
                
'scales' => 0,
                
'handles' => 'default',
                
'dynamic' => [
                    
'categories' => [ TagsModule::NUMBER_CATEGORY ],
                    
'property' => 'size',
                ],
            ]
        );
    }

    
/**
     * Render slider 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() {
        
?>
        <div class="elementor-control-field">
            <label for="<?php $this->print_control_uid(); ?>" class="elementor-control-title">{{{ data.label }}}</label>
            <?php $this->print_units_template(); ?>
            <div class="elementor-control-input-wrapper elementor-control-dynamic-switcher-wrapper elementor-clearfix elementor-control-tag-area">
                <# if ( isMultiple && ( data.labels.length || data.scales ) ) { #>
                    <div class="elementor-slider__extra">
                        <# if ( data.labels.length ) { #>
                        <div class="elementor-slider__labels">
                            <# jQuery.each( data.labels, ( index, label ) => { #>
                                <div class="elementor-slider__label">{{{ label }}}</div>
                            <# } ); #>
                        </div>
                        <# } if ( data.scales ) { #>
                        <div class="elementor-slider__scales">
                            <# for ( var i = 0; i < data.scales; i++ ) { #>
                                <div class="elementor-slider__scale"></div>
                            <# } #>
                        </div>
                        <# } #>
                    </div>
                <# } #>
                <div class="elementor-slider"></div>
                <# if ( ! isMultiple ) { #>
                    <div class="elementor-slider-input">
                        <input id="<?php $this->print_control_uid(); ?>" type="text" min="{{ data.min }}" max="{{ data.max }}" step="{{ data.step }}" placeholder="{{ view.getControlPlaceholder()?.size }}" data-setting="size" />
                    </div>
                <# } #>
            </div>
        </div>
        <# if ( data.description ) { #>
        <div class="elementor-control-field-description">{{{ data.description }}}</div>
        <# } #>
        <?php
    
}
}