File "check-icon-component.js"
Full Path: /home/romayxjt/public_html/wp-content/themes/kadence/inc/customizer/react/src/check-icon/check-icon-component.js
File size: 3.5 KB
MIME-type: text/x-java
Charset: utf-8
/* 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>
</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;