UNPKG

@wordpress/block-editor

Version:
74 lines (66 loc) 1.64 kB
/** * WordPress dependencies */ import { useEffect } from '@wordpress/element'; import { useDispatch, useSelect } from '@wordpress/data'; import { Modal, Button, __experimentalHStack as HStack, } from '@wordpress/components'; import { __ } from '@wordpress/i18n'; /** * Internal dependencies */ import { store as blockEditorStore } from '../../store'; import { unlock } from '../../lock-unlock'; export function BlockRemovalWarningModal( { rules } ) { const { clientIds, selectPrevious, message } = useSelect( ( select ) => unlock( select( blockEditorStore ) ).getRemovalPromptData() ); const { clearBlockRemovalPrompt, setBlockRemovalRules, privateRemoveBlocks, } = unlock( useDispatch( blockEditorStore ) ); // Load block removal rules, simultaneously signalling that the block // removal prompt is in place. useEffect( () => { setBlockRemovalRules( rules ); return () => { setBlockRemovalRules(); }; }, [ rules, setBlockRemovalRules ] ); if ( ! message ) { return; } const onConfirmRemoval = () => { privateRemoveBlocks( clientIds, selectPrevious, /* force */ true ); clearBlockRemovalPrompt(); }; return ( <Modal title={ __( 'Be careful!' ) } onRequestClose={ clearBlockRemovalPrompt } size="medium" > <p>{ message }</p> <HStack justify="right"> <Button variant="tertiary" onClick={ clearBlockRemovalPrompt } __next40pxDefaultSize > { __( 'Cancel' ) } </Button> <Button variant="primary" onClick={ onConfirmRemoval } __next40pxDefaultSize > { __( 'Delete' ) } </Button> </HStack> </Modal> ); }