- WordPress 6.9.4 (es_ES) with Kadence theme - Homepage: Hero, La Asociación, Pilares, Beneficios, Eventos, Miembros, Hazte Miembro, Contacto - Brand identity: #13294b navy, #a12932 burgundy, #c69c48 gold - Fonts: Raleway (headings) + Source Sans 3 (body) + Lato (UI) - Plugins: Kadence Blocks, Polylang, Contact Form 7 - Custom CSS with full brand styling and responsive layout - HTTPS enforced via wp-config.php proxy detection
132 lines
3.5 KiB
JavaScript
132 lines
3.5 KiB
JavaScript
/* jshint esversion: 6 */
|
|
import PropTypes from 'prop-types';
|
|
import classnames from 'classnames';
|
|
import Icons from '../common/icons.js';
|
|
|
|
import { __ } from '@wordpress/i18n';
|
|
|
|
const { ButtonGroup, Dashicon, Tooltip, Button } = wp.components;
|
|
|
|
const { Component, Fragment } = wp.element;
|
|
class CheckIconComponent extends Component {
|
|
constructor() {
|
|
super( ...arguments );
|
|
this.updateValues = this.updateValues.bind( this );
|
|
let value = this.props.control.setting.get();
|
|
let defaultParams = {
|
|
options: {
|
|
desktop: {
|
|
name: __( 'Desktop', 'kadence' ),
|
|
icon: 'desktop',
|
|
},
|
|
tablet: {
|
|
name: __( 'Tablet', 'kadence' ),
|
|
icon: 'tablet',
|
|
},
|
|
mobile: {
|
|
name: __( 'Mobile', 'kadence' ),
|
|
icon: 'smartphone',
|
|
},
|
|
},
|
|
};
|
|
this.controlParams = this.props.control.params.input_attrs ? {
|
|
...defaultParams,
|
|
...this.props.control.params.input_attrs,
|
|
} : defaultParams;
|
|
let baseDefault = {
|
|
'mobile': true,
|
|
'tablet': true,
|
|
'desktop': true,
|
|
};
|
|
this.defaultValue = this.props.control.params.default ? this.props.control.params.default : baseDefault;
|
|
value = value ? {
|
|
...JSON.parse( JSON.stringify( this.defaultValue ) ),
|
|
...value
|
|
} : JSON.parse( JSON.stringify( this.defaultValue ) );
|
|
this.state = {
|
|
value: value,
|
|
};
|
|
}
|
|
render() {
|
|
const controlLabel = (
|
|
<Fragment>
|
|
<Tooltip text={ __( 'Reset Values', 'kadence' ) }>
|
|
<Button
|
|
className="reset kadence-reset"
|
|
disabled={ ( this.state.value == this.defaultValue ) }
|
|
onClick={ () => {
|
|
let value = this.defaultValue;
|
|
this.setState( { value: this.defaultValue } );
|
|
this.updateValues( value );
|
|
} }
|
|
>
|
|
<Dashicon icon='image-rotate' />
|
|
</Button>
|
|
</Tooltip>
|
|
{ this.props.control.params.label &&
|
|
this.props.control.params.label
|
|
}
|
|
</Fragment>
|
|
);
|
|
return (
|
|
<div className="kadence-control-field kadence-radio-icon-control">
|
|
<div className="kadence-responsive-control-bar">
|
|
<span className="customize-control-title">{ controlLabel }</span>
|
|
</div>
|
|
<ButtonGroup className="kadence-radio-container-control">
|
|
{ Object.keys( this.controlParams.options ).map( ( item ) => {
|
|
return (
|
|
<Fragment>
|
|
<Tooltip text={ this.controlParams.options[ item ].name }>
|
|
<Button
|
|
isTertiary
|
|
className={ ( true === this.state.value[ item ] ?
|
|
'active-radio ' :
|
|
'' ) + item }
|
|
onClick={ () => {
|
|
let value = this.state.value;
|
|
if( value[ item ] ) {
|
|
value[ item ] = false;
|
|
} else {
|
|
value[ item ] = true;
|
|
}
|
|
this.setState( { value: value });
|
|
this.updateValues( value );
|
|
} }
|
|
>
|
|
{ this.controlParams.options[ item ].icon && (
|
|
<span className="kadence-radio-icon">
|
|
{ <Dashicon icon={this.controlParams.options[ item ].icon}/> }
|
|
</span>
|
|
) }
|
|
{ ! this.controlParams.options[ item ].icon && (
|
|
<span className="kadence-radio-name">
|
|
{ this.controlParams.options[ item ].name }
|
|
</span>
|
|
) }
|
|
</Button>
|
|
</Tooltip>
|
|
</Fragment>
|
|
);
|
|
} )}
|
|
</ButtonGroup>
|
|
{ this.props.control.renderNotice() }
|
|
</div>
|
|
);
|
|
}
|
|
|
|
updateValues( value ) {
|
|
this.props.control.setting.set( {
|
|
...this.props.control.setting.get(),
|
|
...value,
|
|
flag: !this.props.control.setting.get().flag
|
|
} );
|
|
}
|
|
}
|
|
|
|
CheckIconComponent.propTypes = {
|
|
control: PropTypes.object.isRequired
|
|
};
|
|
|
|
export default CheckIconComponent;
|