UNPKG

@wordpress/edit-post

Version:
62 lines (56 loc) 1.31 kB
/** * External dependencies */ import { flow } from 'lodash'; /** * WordPress dependencies */ import { withSelect, withDispatch } from '@wordpress/data'; import { compose } from '@wordpress/compose'; import { MenuItem } from '@wordpress/components'; import { __ } from '@wordpress/i18n'; import { check } from '@wordpress/icons'; import { speak } from '@wordpress/a11y'; /** * Internal dependencies */ import { store as editPostStore } from '../../../store'; function FeatureToggle( { onToggle, isActive, label, info, messageActivated, messageDeactivated, shortcut, } ) { const speakMessage = () => { if ( isActive ) { speak( messageDeactivated || __( 'Feature deactivated' ) ); } else { speak( messageActivated || __( 'Feature activated' ) ); } }; return ( <MenuItem icon={ isActive && check } isSelected={ isActive } onClick={ flow( onToggle, speakMessage ) } role="menuitemcheckbox" info={ info } shortcut={ shortcut } > { label } </MenuItem> ); } export default compose( [ withSelect( ( select, { feature } ) => ( { isActive: select( editPostStore ).isFeatureActive( feature ), } ) ), withDispatch( ( dispatch, ownProps ) => ( { onToggle() { dispatch( editPostStore ).toggleFeature( ownProps.feature ); }, } ) ), ] )( FeatureToggle );