args_to_props( $args ); } /** * Send the parameters via JSON. */ public function json() { $json = parent::json(); $json['default'] = $this->setting->default; if ( isset( $this->default ) ) { $json['default'] = $this->default; } $json['value'] = json_decode( $this->value(), true ); $json['link'] = $this->get_link(); $json['id'] = $this->id; $json['label'] = esc_html( $this->label ); $json['units'] = $this->units; $json['responsive'] = $this->responsive; $json['inputAttr'] = $this->input_attr; return $json; } /** * Render the control * * @access protected */ protected function content_template() { $this->render_title(); ?> <# var wrapClass = data.responsive ? 'has-media-queries' : ''; #> <# wrapClass += data.units.length ? '' : 'no-units'; #>
<# if( data.responsive === true ) { #> <# _.each( data.inputAttr, function( attr, mediaQuery ) { #> render_input(); ?> <# } ) #> <# } else { var mediaQuery = 'desktop'; var attr = data.inputAttr; #> render_input(); ?> <# } #>
<# var value = data.value ? data.value[mediaQuery] : attr.default; var suffix = ''; if( data.value ) { suffix = data.value.suffix ? data.value.suffix[mediaQuery] : attr.default_unit; } if( ! data.responsive ) { value = data.value? data.value : attr.default } var active = mediaQuery === 'desktop' ? 'active' : ''; #>
min="{{attr.min}}" <# } if ( attr.max ) { #> max="{{attr.max}}" <# } #> data-query="{{mediaQuery}}" data-default="{{attr.default}}" value="{{ value }}" /> <# if( data.units.length ) { var disabled = data.units.length === 1 ? 'disabled' : ''; #> <# } #>
<# if ( data.label ) { #> {{{ data.label }}} <# if ( data.description ) { #> <# } #> <# if( data.responsive === true ) { #> render_responsive_switches(); ?> <# } #> <# } #> input_attr = $args['input_attr']; } if ( ! empty( $args['media_query'] ) ) { $this->responsive = (bool) $args['responsive']; } if ( ! isset( $this->input_attr['mobile'] ) || ! isset( $this->input_attr['tablet'] ) || ! isset( $this->input_attr['desktop'] ) ) { $this->responsive = false; } } }