UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 4.96 kB
{ "version": 3, "sources": ["../../../src/components/block-removal-warning-modal/index.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useEffect, useState } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tModal,\n\tButton,\n\tCheckboxControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nexport function BlockRemovalWarningModal( { rules } ) {\n\tconst [ confirmed, setConfirmed ] = useState( false );\n\tconst { clientIds, selectPrevious, message } = useSelect( ( select ) =>\n\t\tunlock( select( blockEditorStore ) ).getRemovalPromptData()\n\t);\n\n\tconst {\n\t\tclearBlockRemovalPrompt,\n\t\tsetBlockRemovalRules,\n\t\tprivateRemoveBlocks,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\t// Load block removal rules, simultaneously signalling that the block\n\t// removal prompt is in place.\n\tuseEffect( () => {\n\t\tsetBlockRemovalRules( rules );\n\t\treturn () => {\n\t\t\tsetBlockRemovalRules();\n\t\t};\n\t}, [ rules, setBlockRemovalRules ] );\n\n\t// Reset confirmed state when modal opens with new content.\n\tuseEffect( () => {\n\t\tsetConfirmed( false );\n\t}, [ clientIds ] );\n\n\tif ( ! message ) {\n\t\treturn;\n\t}\n\n\tconst isStructured = typeof message === 'object' && message !== null;\n\tconst description = isStructured ? message.description : message;\n\tconst requireConfirmation = isStructured && message.requireConfirmation;\n\tconst isRemoveDisabled = requireConfirmation && ! confirmed;\n\n\tconst onConfirmRemoval = () => {\n\t\tprivateRemoveBlocks( clientIds, selectPrevious, /* force */ true );\n\t\tclearBlockRemovalPrompt();\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Confirm deletion' ) }\n\t\t\tonRequestClose={ clearBlockRemovalPrompt }\n\t\t\tsize=\"medium\"\n\t\t>\n\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t<div>\n\t\t\t\t\t<p>{ description }</p>\n\t\t\t\t\t{ isStructured &&\n\t\t\t\t\t\t( message.warning || message.subtext ) && (\n\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t{ message.warning && (\n\t\t\t\t\t\t\t\t\t<strong>{ message.warning }</strong>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ message.warning && message.subtext && ' ' }\n\t\t\t\t\t\t\t\t{ message.subtext }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t\t{ requireConfirmation && (\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\tlabel={ __( 'I understand the consequences' ) }\n\t\t\t\t\t\tchecked={ confirmed }\n\t\t\t\t\t\tonChange={ setConfirmed }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ clearBlockRemovalPrompt }\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ onConfirmRemoval }\n\t\t\t\t\t\tdisabled={ isRemoveDisabled }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t</Modal>\n\t);\n}\n"], "mappings": ";AAGA,SAAS,WAAW,gBAAgB;AACpC,SAAS,aAAa,iBAAiB;AACvC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,OAClB;AACP,SAAS,UAAU;AAKnB,SAAS,SAAS,wBAAwB;AAC1C,SAAS,cAAc;AAkDlB,cAGE,YAHF;AAhDE,SAAS,yBAA0B,EAAE,MAAM,GAAI;AACrD,QAAM,CAAE,WAAW,YAAa,IAAI,SAAU,KAAM;AACpD,QAAM,EAAE,WAAW,gBAAgB,QAAQ,IAAI;AAAA,IAAW,CAAE,WAC3D,OAAQ,OAAQ,gBAAiB,CAAE,EAAE,qBAAqB;AAAA,EAC3D;AAEA,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI,OAAQ,YAAa,gBAAiB,CAAE;AAI5C,YAAW,MAAM;AAChB,yBAAsB,KAAM;AAC5B,WAAO,MAAM;AACZ,2BAAqB;AAAA,IACtB;AAAA,EACD,GAAG,CAAE,OAAO,oBAAqB,CAAE;AAGnC,YAAW,MAAM;AAChB,iBAAc,KAAM;AAAA,EACrB,GAAG,CAAE,SAAU,CAAE;AAEjB,MAAK,CAAE,SAAU;AAChB;AAAA,EACD;AAEA,QAAM,eAAe,OAAO,YAAY,YAAY,YAAY;AAChE,QAAM,cAAc,eAAe,QAAQ,cAAc;AACzD,QAAM,sBAAsB,gBAAgB,QAAQ;AACpD,QAAM,mBAAmB,uBAAuB,CAAE;AAElD,QAAM,mBAAmB,MAAM;AAC9B;AAAA,MAAqB;AAAA,MAAW;AAAA;AAAA,MAA4B;AAAA,IAAK;AACjE,4BAAwB;AAAA,EACzB;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ,GAAI,kBAAmB;AAAA,MAC/B,gBAAiB;AAAA,MACjB,MAAK;AAAA,MAEL,+BAAC,UAAO,SAAU,GACjB;AAAA,6BAAC,SACA;AAAA,8BAAC,OAAI,uBAAa;AAAA,UAChB,iBACC,QAAQ,WAAW,QAAQ,YAC5B,qBAAC,OACE;AAAA,oBAAQ,WACT,oBAAC,YAAS,kBAAQ,SAAS;AAAA,YAE1B,QAAQ,WAAW,QAAQ,WAAW;AAAA,YACtC,QAAQ;AAAA,aACX;AAAA,WAEH;AAAA,QACE,uBACD;AAAA,UAAC;AAAA;AAAA,YACA,OAAQ,GAAI,+BAAgC;AAAA,YAC5C,SAAU;AAAA,YACV,UAAW;AAAA;AAAA,QACZ;AAAA,QAED,qBAAC,UAAO,SAAQ,SACf;AAAA;AAAA,YAAC;AAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAU;AAAA,cACV,uBAAqB;AAAA,cAEnB,aAAI,QAAS;AAAA;AAAA,UAChB;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAU;AAAA,cACV,UAAW;AAAA,cACX,wBAAsB;AAAA,cACtB,uBAAqB;AAAA,cAEnB,aAAI,QAAS;AAAA;AAAA,UAChB;AAAA,WACD;AAAA,SACD;AAAA;AAAA,EACD;AAEF;", "names": [] }