@wordpress/edit-post
Version:
Edit Post module for WordPress.
62 lines (56 loc) • 1.31 kB
JavaScript
/**
* 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 );