File "responsive.js"
Full Path: /home/magiggjm/magistvandroids.com/wp-content/themes/kadence/inc/customizer/react/src/common/responsive.js
File size: 3.19 KB
MIME-type: text/x-java
Charset: utf-8
import PropTypes from 'prop-types';
import Icons from './icons';
import { __ } from '@wordpress/i18n';
const {
Component,
Fragment
} = wp.element;
const {
Button,
Dashicon,
Tooltip,
ButtonGroup,
Icon
} = wp.components;
class ResponsiveControl extends Component {
constructor(props) {
super( props );
this.state = {
view: undefined !== this.props.deviceSize ? this.props.deviceSize : 'desktop'
};
this.linkResponsiveButtons();
}
render() {
let { view } = this.state,
deviceMap = {
'desktop': {
'tooltip': __( 'Desktop', 'kadence' ),
'icon': <Icon icon={ Icons.desktop }/>
},
'tablet': {
'tooltip': __( 'Tablet', 'kadence' ),
'icon': <Icon icon={ Icons.tablet }/>
},
'mobile': {
'tooltip': __( 'Mobile', 'kadence' ),
'icon': <Icon icon={ Icons.smartphone }/>
}
};
return (
<Fragment>
<div className={ 'kadence-responsive-control-bar' }>
{ this.props.controlLabel && (
<span className="customize-control-title">{ this.props.controlLabel }</span>
) }
{
!this.props.hideResponsive &&
<div className="floating-controls">
{ this.props.tooltip && (
<ButtonGroup>
{Object.keys( deviceMap ).map( (device) => {
return (
<Tooltip text={deviceMap[device].tooltip}>
<Button
isTertiary
className={( device === view ?
'active-device ' :
'' ) + device}
onClick={() => {
let event = new CustomEvent(
'kadenceChangedRepsonsivePreview', {
'detail': device
} );
document.dispatchEvent( event );
}}
>
{ deviceMap[device].icon }
</Button>
</Tooltip>
);
} )}
</ButtonGroup>
) }
{ ! this.props.tooltip && (
<ButtonGroup>
{Object.keys( deviceMap ).map( (device) => {
return (
<Button
isTertiary
className={( device === view ?
'active-device ' :
'' ) + device}
onClick={() => {
let event = new CustomEvent(
'kadenceChangedRepsonsivePreview', {
'detail': device
} );
document.dispatchEvent( event );
}}
>
{ deviceMap[device].icon }
</Button>
);
} )}
</ButtonGroup>
) }
</div>
}
</div>
<div className="kadence-responsive-controls-content">
{this.props.children}
</div>
</Fragment>
);
}
changeViewType(device) {
this.setState( { view: device } );
wp.customize.previewedDevice( device );
this.props.onChange( device );
}
linkResponsiveButtons() {
let self = this;
document.addEventListener( 'kadenceChangedRepsonsivePreview', function(e) {
self.changeViewType( e.detail );
} );
}
}
ResponsiveControl.propTypes = {
onChange: PropTypes.func,
controlLabel: PropTypes.string
};
ResponsiveControl.defaultProps = {
tooltip: true,
};
export default ResponsiveControl;