@wordpress/block-editor
Version:
45 lines (38 loc) • 959 B
JavaScript
/**
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
import { useReducer } from '@wordpress/element';
import { MenuItem } from '@wordpress/components';
import { lockOutline, unlock } from '@wordpress/icons';
/**
* Internal dependencies
*/
import useBlockLock from './use-block-lock';
import BlockLockModal from './modal';
export default function BlockLockMenuItem( { clientId } ) {
const { canLock, isLocked } = useBlockLock( clientId );
const [ isModalOpen, toggleModal ] = useReducer(
( isActive ) => ! isActive,
false
);
if ( ! canLock ) {
return null;
}
const label = isLocked ? __( 'Unlock' ) : __( 'Lock' );
return (
<>
<MenuItem
icon={ isLocked ? unlock : lockOutline }
onClick={ toggleModal }
aria-expanded={ isModalOpen }
aria-haspopup="dialog"
>
{ label }
</MenuItem>
{ isModalOpen && (
<BlockLockModal clientId={ clientId } onClose={ toggleModal } />
) }
</>
);
}