@wordpress/reusable-blocks 4.2.0 → 4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 4.3.0 (2023-02-01)
6
+
5
7
  ## 4.2.0 (2023-01-11)
6
8
 
7
9
  ## 4.1.0 (2023-01-02)
@@ -106,7 +106,6 @@ function ReusableBlockConvertButton(_ref) {
106
106
  }
107
107
  }, (0, _i18n.__)('Create Reusable block')), isModalOpen && (0, _element.createElement)(_components.Modal, {
108
108
  title: (0, _i18n.__)('Create Reusable block'),
109
- closeLabel: (0, _i18n.__)('Close'),
110
109
  onRequestClose: () => {
111
110
  setIsModalOpen(false);
112
111
  setTitle('');
@@ -120,20 +119,22 @@ function ReusableBlockConvertButton(_ref) {
120
119
  setTitle('');
121
120
  onClose();
122
121
  }
122
+ }, (0, _element.createElement)(_components.__experimentalVStack, {
123
+ spacing: "5"
123
124
  }, (0, _element.createElement)(_components.TextControl, {
125
+ __nextHasNoMarginBottom: true,
124
126
  label: (0, _i18n.__)('Name'),
125
127
  value: title,
126
128
  onChange: setTitle
127
- }), (0, _element.createElement)(_components.Flex, {
128
- className: "reusable-blocks-menu-items__convert-modal-actions",
129
- justify: "flex-end"
130
- }, (0, _element.createElement)(_components.FlexItem, null, (0, _element.createElement)(_components.Button, {
129
+ }), (0, _element.createElement)(_components.__experimentalHStack, {
130
+ justify: "right"
131
+ }, (0, _element.createElement)(_components.Button, {
131
132
  variant: "tertiary",
132
133
  onClick: () => {
133
134
  setIsModalOpen(false);
134
135
  setTitle('');
135
136
  }
136
- }, (0, _i18n.__)('Cancel'))), (0, _element.createElement)(_components.FlexItem, null, (0, _element.createElement)(_components.Button, {
137
+ }, (0, _i18n.__)('Cancel')), (0, _element.createElement)(_components.Button, {
137
138
  variant: "primary",
138
139
  type: "submit"
139
140
  }, (0, _i18n.__)('Save')))))));
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js"],"names":["ReusableBlockConvertButton","clientIds","rootClientId","isModalOpen","setIsModalOpen","title","setTitle","canConvert","select","canUser","coreStore","getBlocksByClientId","canInsertBlockType","blockEditorStore","blocks","isReusable","length","getEntityRecord","attributes","ref","_canConvert","every","block","isValid","name","__experimentalConvertBlocksToReusable","convertBlocksToReusable","store","createSuccessNotice","createErrorNotice","noticesStore","onConvert","reusableBlockTitle","type","error","message","onClose","symbol","event","preventDefault"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { hasBlockSupport, isReusableBlock } from '@wordpress/blocks';\nimport {\n\tBlockSettingsMenuControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useCallback, useState } from '@wordpress/element';\nimport {\n\tMenuItem,\n\tModal,\n\tButton,\n\tTextControl,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { symbol } from '@wordpress/icons';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store } from '../../store';\n\n/**\n * Menu control to convert block(s) to reusable block.\n *\n * @param {Object} props Component props.\n * @param {string[]} props.clientIds Client ids of selected blocks.\n * @param {string} props.rootClientId ID of the currently selected top-level block.\n * @return {import('@wordpress/element').WPComponent} The menu control or null.\n */\nexport default function ReusableBlockConvertButton( {\n\tclientIds,\n\trootClientId,\n} ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst [ title, setTitle ] = useState( '' );\n\tconst canConvert = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst { getBlocksByClientId, canInsertBlockType } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst blocks = getBlocksByClientId( clientIds ) ?? [];\n\n\t\t\tconst isReusable =\n\t\t\t\tblocks.length === 1 &&\n\t\t\t\tblocks[ 0 ] &&\n\t\t\t\tisReusableBlock( blocks[ 0 ] ) &&\n\t\t\t\t!! select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblocks[ 0 ].attributes.ref\n\t\t\t\t);\n\n\t\t\tconst _canConvert =\n\t\t\t\t// Hide when this is already a reusable block.\n\t\t\t\t! isReusable &&\n\t\t\t\t// Hide when reusable blocks are disabled.\n\t\t\t\tcanInsertBlockType( 'core/block', rootClientId ) &&\n\t\t\t\tblocks.every(\n\t\t\t\t\t( block ) =>\n\t\t\t\t\t\t// Guard against the case where a regular block has *just* been converted.\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\t// Hide on invalid blocks.\n\t\t\t\t\t\tblock.isValid &&\n\t\t\t\t\t\t// Hide when block doesn't support being made reusable.\n\t\t\t\t\t\thasBlockSupport( block.name, 'reusable', true )\n\t\t\t\t) &&\n\t\t\t\t// Hide when current doesn't have permission to do that.\n\t\t\t\t!! canUser( 'create', 'blocks' );\n\n\t\t\treturn _canConvert;\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst { __experimentalConvertBlocksToReusable: convertBlocksToReusable } =\n\t\tuseDispatch( store );\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst onConvert = useCallback(\n\t\tasync function ( reusableBlockTitle ) {\n\t\t\ttry {\n\t\t\t\tawait convertBlocksToReusable( clientIds, reusableBlockTitle );\n\t\t\t\tcreateSuccessNotice( __( 'Reusable block created.' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t} catch ( error ) {\n\t\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tif ( ! canConvert ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSettingsMenuControls>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\ticon={ symbol }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetIsModalOpen( true );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Create Reusable block' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t\t<Modal\n\t\t\t\t\t\t\ttitle={ __( 'Create Reusable block' ) }\n\t\t\t\t\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\toverlayClassName=\"reusable-blocks-menu-items__convert-modal\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<form\n\t\t\t\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\tonConvert( title );\n\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"reusable-blocks-menu-items__convert-modal-actions\"\n\t\t\t\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t</Modal>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</BlockSettingsMenuControls>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js"],"names":["ReusableBlockConvertButton","clientIds","rootClientId","isModalOpen","setIsModalOpen","title","setTitle","canConvert","select","canUser","coreStore","getBlocksByClientId","canInsertBlockType","blockEditorStore","blocks","isReusable","length","getEntityRecord","attributes","ref","_canConvert","every","block","isValid","name","__experimentalConvertBlocksToReusable","convertBlocksToReusable","store","createSuccessNotice","createErrorNotice","noticesStore","onConvert","reusableBlockTitle","type","error","message","onClose","symbol","event","preventDefault"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { hasBlockSupport, isReusableBlock } from '@wordpress/blocks';\nimport {\n\tBlockSettingsMenuControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useCallback, useState } from '@wordpress/element';\nimport {\n\tMenuItem,\n\tModal,\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { symbol } from '@wordpress/icons';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store } from '../../store';\n\n/**\n * Menu control to convert block(s) to reusable block.\n *\n * @param {Object} props Component props.\n * @param {string[]} props.clientIds Client ids of selected blocks.\n * @param {string} props.rootClientId ID of the currently selected top-level block.\n * @return {import('@wordpress/element').WPComponent} The menu control or null.\n */\nexport default function ReusableBlockConvertButton( {\n\tclientIds,\n\trootClientId,\n} ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst [ title, setTitle ] = useState( '' );\n\tconst canConvert = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst { getBlocksByClientId, canInsertBlockType } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst blocks = getBlocksByClientId( clientIds ) ?? [];\n\n\t\t\tconst isReusable =\n\t\t\t\tblocks.length === 1 &&\n\t\t\t\tblocks[ 0 ] &&\n\t\t\t\tisReusableBlock( blocks[ 0 ] ) &&\n\t\t\t\t!! select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblocks[ 0 ].attributes.ref\n\t\t\t\t);\n\n\t\t\tconst _canConvert =\n\t\t\t\t// Hide when this is already a reusable block.\n\t\t\t\t! isReusable &&\n\t\t\t\t// Hide when reusable blocks are disabled.\n\t\t\t\tcanInsertBlockType( 'core/block', rootClientId ) &&\n\t\t\t\tblocks.every(\n\t\t\t\t\t( block ) =>\n\t\t\t\t\t\t// Guard against the case where a regular block has *just* been converted.\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\t// Hide on invalid blocks.\n\t\t\t\t\t\tblock.isValid &&\n\t\t\t\t\t\t// Hide when block doesn't support being made reusable.\n\t\t\t\t\t\thasBlockSupport( block.name, 'reusable', true )\n\t\t\t\t) &&\n\t\t\t\t// Hide when current doesn't have permission to do that.\n\t\t\t\t!! canUser( 'create', 'blocks' );\n\n\t\t\treturn _canConvert;\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst { __experimentalConvertBlocksToReusable: convertBlocksToReusable } =\n\t\tuseDispatch( store );\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst onConvert = useCallback(\n\t\tasync function ( reusableBlockTitle ) {\n\t\t\ttry {\n\t\t\t\tawait convertBlocksToReusable( clientIds, reusableBlockTitle );\n\t\t\t\tcreateSuccessNotice( __( 'Reusable block created.' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t} catch ( error ) {\n\t\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tif ( ! canConvert ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSettingsMenuControls>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\ticon={ symbol }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetIsModalOpen( true );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Create Reusable block' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t\t<Modal\n\t\t\t\t\t\t\ttitle={ __( 'Create Reusable block' ) }\n\t\t\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\toverlayClassName=\"reusable-blocks-menu-items__convert-modal\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<form\n\t\t\t\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\tonConvert( title );\n\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<VStack spacing=\"5\">\n\t\t\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t</Modal>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</BlockSettingsMenuControls>\n\t);\n}\n"]}
@@ -6,7 +6,7 @@ import { createElement, Fragment } from "@wordpress/element";
6
6
  import { hasBlockSupport, isReusableBlock } from '@wordpress/blocks';
7
7
  import { BlockSettingsMenuControls, store as blockEditorStore } from '@wordpress/block-editor';
8
8
  import { useCallback, useState } from '@wordpress/element';
9
- import { MenuItem, Modal, Button, TextControl, Flex, FlexItem } from '@wordpress/components';
9
+ import { MenuItem, Modal, Button, TextControl, __experimentalHStack as HStack, __experimentalVStack as VStack } from '@wordpress/components';
10
10
  import { symbol } from '@wordpress/icons';
11
11
  import { useDispatch, useSelect } from '@wordpress/data';
12
12
  import { __ } from '@wordpress/i18n';
@@ -91,7 +91,6 @@ export default function ReusableBlockConvertButton(_ref) {
91
91
  }
92
92
  }, __('Create Reusable block')), isModalOpen && createElement(Modal, {
93
93
  title: __('Create Reusable block'),
94
- closeLabel: __('Close'),
95
94
  onRequestClose: () => {
96
95
  setIsModalOpen(false);
97
96
  setTitle('');
@@ -105,20 +104,22 @@ export default function ReusableBlockConvertButton(_ref) {
105
104
  setTitle('');
106
105
  onClose();
107
106
  }
107
+ }, createElement(VStack, {
108
+ spacing: "5"
108
109
  }, createElement(TextControl, {
110
+ __nextHasNoMarginBottom: true,
109
111
  label: __('Name'),
110
112
  value: title,
111
113
  onChange: setTitle
112
- }), createElement(Flex, {
113
- className: "reusable-blocks-menu-items__convert-modal-actions",
114
- justify: "flex-end"
115
- }, createElement(FlexItem, null, createElement(Button, {
114
+ }), createElement(HStack, {
115
+ justify: "right"
116
+ }, createElement(Button, {
116
117
  variant: "tertiary",
117
118
  onClick: () => {
118
119
  setIsModalOpen(false);
119
120
  setTitle('');
120
121
  }
121
- }, __('Cancel'))), createElement(FlexItem, null, createElement(Button, {
122
+ }, __('Cancel')), createElement(Button, {
122
123
  variant: "primary",
123
124
  type: "submit"
124
125
  }, __('Save')))))));
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js"],"names":["hasBlockSupport","isReusableBlock","BlockSettingsMenuControls","store","blockEditorStore","useCallback","useState","MenuItem","Modal","Button","TextControl","Flex","FlexItem","symbol","useDispatch","useSelect","__","noticesStore","coreStore","ReusableBlockConvertButton","clientIds","rootClientId","isModalOpen","setIsModalOpen","title","setTitle","canConvert","select","canUser","getBlocksByClientId","canInsertBlockType","blocks","isReusable","length","getEntityRecord","attributes","ref","_canConvert","every","block","isValid","name","__experimentalConvertBlocksToReusable","convertBlocksToReusable","createSuccessNotice","createErrorNotice","onConvert","reusableBlockTitle","type","error","message","onClose","event","preventDefault"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,eAAT,EAA0BC,eAA1B,QAAiD,mBAAjD;AACA,SACCC,yBADD,EAECC,KAAK,IAAIC,gBAFV,QAGO,yBAHP;AAIA,SAASC,WAAT,EAAsBC,QAAtB,QAAsC,oBAAtC;AACA,SACCC,QADD,EAECC,KAFD,EAGCC,MAHD,EAICC,WAJD,EAKCC,IALD,EAMCC,QAND,QAOO,uBAPP;AAQA,SAASC,MAAT,QAAuB,kBAAvB;AACA,SAASC,WAAT,EAAsBC,SAAtB,QAAuC,iBAAvC;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASb,KAAK,IAAIc,YAAlB,QAAsC,oBAAtC;AACA,SAASd,KAAK,IAAIe,SAAlB,QAAmC,sBAAnC;AAEA;AACA;AACA;;AACA,SAASf,KAAT,QAAsB,aAAtB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASgB,0BAAT,OAGX;AAAA,MAHgD;AACnDC,IAAAA,SADmD;AAEnDC,IAAAA;AAFmD,GAGhD;AACH,QAAM,CAAEC,WAAF,EAAeC,cAAf,IAAkCjB,QAAQ,CAAE,KAAF,CAAhD;AACA,QAAM,CAAEkB,KAAF,EAASC,QAAT,IAAsBnB,QAAQ,CAAE,EAAF,CAApC;AACA,QAAMoB,UAAU,GAAGX,SAAS,CACzBY,MAAF,IAAc;AAAA;;AACb,UAAM;AAAEC,MAAAA;AAAF,QAAcD,MAAM,CAAET,SAAF,CAA1B;AACA,UAAM;AAAEW,MAAAA,mBAAF;AAAuBC,MAAAA;AAAvB,QACLH,MAAM,CAAEvB,gBAAF,CADP;AAGA,UAAM2B,MAAM,2BAAGF,mBAAmB,CAAET,SAAF,CAAtB,uEAAuC,EAAnD;AAEA,UAAMY,UAAU,GACfD,MAAM,CAACE,MAAP,KAAkB,CAAlB,IACAF,MAAM,CAAE,CAAF,CADN,IAEA9B,eAAe,CAAE8B,MAAM,CAAE,CAAF,CAAR,CAFf,IAGA,CAAC,CAAEJ,MAAM,CAAET,SAAF,CAAN,CAAoBgB,eAApB,CACF,UADE,EAEF,UAFE,EAGFH,MAAM,CAAE,CAAF,CAAN,CAAYI,UAAZ,CAAuBC,GAHrB,CAJJ;;AAUA,UAAMC,WAAW,GAChB;AACA,KAAEL,UAAF,IACA;AACAF,IAAAA,kBAAkB,CAAE,YAAF,EAAgBT,YAAhB,CAFlB,IAGAU,MAAM,CAACO,KAAP,CACGC,KAAF,IACC;AACA,KAAC,CAAEA,KAAH,IACA;AACAA,IAAAA,KAAK,CAACC,OAFN,IAGA;AACAxC,IAAAA,eAAe,CAAEuC,KAAK,CAACE,IAAR,EAAc,UAAd,EAA0B,IAA1B,CAPjB,CAHA,IAYA;AACA,KAAC,CAAEb,OAAO,CAAE,QAAF,EAAY,QAAZ,CAfX;;AAiBA,WAAOS,WAAP;AACA,GApC0B,EAqC3B,CAAEjB,SAAF,CArC2B,CAA5B;AAwCA,QAAM;AAAEsB,IAAAA,qCAAqC,EAAEC;AAAzC,MACL7B,WAAW,CAAEX,KAAF,CADZ;AAGA,QAAM;AAAEyC,IAAAA,mBAAF;AAAuBC,IAAAA;AAAvB,MACL/B,WAAW,CAAEG,YAAF,CADZ;AAEA,QAAM6B,SAAS,GAAGzC,WAAW,CAC5B,gBAAiB0C,kBAAjB,EAAsC;AACrC,QAAI;AACH,YAAMJ,uBAAuB,CAAEvB,SAAF,EAAa2B,kBAAb,CAA7B;AACAH,MAAAA,mBAAmB,CAAE5B,EAAE,CAAE,yBAAF,CAAJ,EAAmC;AACrDgC,QAAAA,IAAI,EAAE;AAD+C,OAAnC,CAAnB;AAGA,KALD,CAKE,OAAQC,KAAR,EAAgB;AACjBJ,MAAAA,iBAAiB,CAAEI,KAAK,CAACC,OAAR,EAAiB;AACjCF,QAAAA,IAAI,EAAE;AAD2B,OAAjB,CAAjB;AAGA;AACD,GAZ2B,EAa5B,CAAE5B,SAAF,CAb4B,CAA7B;;AAgBA,MAAK,CAAEM,UAAP,EAAoB;AACnB,WAAO,IAAP;AACA;;AAED,SACC,cAAC,yBAAD,QACG;AAAA,QAAE;AAAEyB,MAAAA;AAAF,KAAF;AAAA,WACD,8BACC,cAAC,QAAD;AACC,MAAA,IAAI,EAAGtC,MADR;AAEC,MAAA,OAAO,EAAG,MAAM;AACfU,QAAAA,cAAc,CAAE,IAAF,CAAd;AACA;AAJF,OAMGP,EAAE,CAAE,uBAAF,CANL,CADD,EASGM,WAAW,IACZ,cAAC,KAAD;AACC,MAAA,KAAK,EAAGN,EAAE,CAAE,uBAAF,CADX;AAEC,MAAA,UAAU,EAAGA,EAAE,CAAE,OAAF,CAFhB;AAGC,MAAA,cAAc,EAAG,MAAM;AACtBO,QAAAA,cAAc,CAAE,KAAF,CAAd;AACAE,QAAAA,QAAQ,CAAE,EAAF,CAAR;AACA,OANF;AAOC,MAAA,gBAAgB,EAAC;AAPlB,OASC;AACC,MAAA,QAAQ,EAAK2B,KAAF,IAAa;AACvBA,QAAAA,KAAK,CAACC,cAAN;AACAP,QAAAA,SAAS,CAAEtB,KAAF,CAAT;AACAD,QAAAA,cAAc,CAAE,KAAF,CAAd;AACAE,QAAAA,QAAQ,CAAE,EAAF,CAAR;AACA0B,QAAAA,OAAO;AACP;AAPF,OASC,cAAC,WAAD;AACC,MAAA,KAAK,EAAGnC,EAAE,CAAE,MAAF,CADX;AAEC,MAAA,KAAK,EAAGQ,KAFT;AAGC,MAAA,QAAQ,EAAGC;AAHZ,MATD,EAcC,cAAC,IAAD;AACC,MAAA,SAAS,EAAC,mDADX;AAEC,MAAA,OAAO,EAAC;AAFT,OAIC,cAAC,QAAD,QACC,cAAC,MAAD;AACC,MAAA,OAAO,EAAC,UADT;AAEC,MAAA,OAAO,EAAG,MAAM;AACfF,QAAAA,cAAc,CAAE,KAAF,CAAd;AACAE,QAAAA,QAAQ,CAAE,EAAF,CAAR;AACA;AALF,OAOGT,EAAE,CAAE,QAAF,CAPL,CADD,CAJD,EAeC,cAAC,QAAD,QACC,cAAC,MAAD;AAAQ,MAAA,OAAO,EAAC,SAAhB;AAA0B,MAAA,IAAI,EAAC;AAA/B,OACGA,EAAE,CAAE,MAAF,CADL,CADD,CAfD,CAdD,CATD,CAVF,CADC;AAAA,GADH,CADD;AAgEA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { hasBlockSupport, isReusableBlock } from '@wordpress/blocks';\nimport {\n\tBlockSettingsMenuControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useCallback, useState } from '@wordpress/element';\nimport {\n\tMenuItem,\n\tModal,\n\tButton,\n\tTextControl,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { symbol } from '@wordpress/icons';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store } from '../../store';\n\n/**\n * Menu control to convert block(s) to reusable block.\n *\n * @param {Object} props Component props.\n * @param {string[]} props.clientIds Client ids of selected blocks.\n * @param {string} props.rootClientId ID of the currently selected top-level block.\n * @return {import('@wordpress/element').WPComponent} The menu control or null.\n */\nexport default function ReusableBlockConvertButton( {\n\tclientIds,\n\trootClientId,\n} ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst [ title, setTitle ] = useState( '' );\n\tconst canConvert = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst { getBlocksByClientId, canInsertBlockType } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst blocks = getBlocksByClientId( clientIds ) ?? [];\n\n\t\t\tconst isReusable =\n\t\t\t\tblocks.length === 1 &&\n\t\t\t\tblocks[ 0 ] &&\n\t\t\t\tisReusableBlock( blocks[ 0 ] ) &&\n\t\t\t\t!! select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblocks[ 0 ].attributes.ref\n\t\t\t\t);\n\n\t\t\tconst _canConvert =\n\t\t\t\t// Hide when this is already a reusable block.\n\t\t\t\t! isReusable &&\n\t\t\t\t// Hide when reusable blocks are disabled.\n\t\t\t\tcanInsertBlockType( 'core/block', rootClientId ) &&\n\t\t\t\tblocks.every(\n\t\t\t\t\t( block ) =>\n\t\t\t\t\t\t// Guard against the case where a regular block has *just* been converted.\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\t// Hide on invalid blocks.\n\t\t\t\t\t\tblock.isValid &&\n\t\t\t\t\t\t// Hide when block doesn't support being made reusable.\n\t\t\t\t\t\thasBlockSupport( block.name, 'reusable', true )\n\t\t\t\t) &&\n\t\t\t\t// Hide when current doesn't have permission to do that.\n\t\t\t\t!! canUser( 'create', 'blocks' );\n\n\t\t\treturn _canConvert;\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst { __experimentalConvertBlocksToReusable: convertBlocksToReusable } =\n\t\tuseDispatch( store );\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst onConvert = useCallback(\n\t\tasync function ( reusableBlockTitle ) {\n\t\t\ttry {\n\t\t\t\tawait convertBlocksToReusable( clientIds, reusableBlockTitle );\n\t\t\t\tcreateSuccessNotice( __( 'Reusable block created.' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t} catch ( error ) {\n\t\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tif ( ! canConvert ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSettingsMenuControls>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\ticon={ symbol }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetIsModalOpen( true );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Create Reusable block' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t\t<Modal\n\t\t\t\t\t\t\ttitle={ __( 'Create Reusable block' ) }\n\t\t\t\t\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\toverlayClassName=\"reusable-blocks-menu-items__convert-modal\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<form\n\t\t\t\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\tonConvert( title );\n\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"reusable-blocks-menu-items__convert-modal-actions\"\n\t\t\t\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t</Modal>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</BlockSettingsMenuControls>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js"],"names":["hasBlockSupport","isReusableBlock","BlockSettingsMenuControls","store","blockEditorStore","useCallback","useState","MenuItem","Modal","Button","TextControl","__experimentalHStack","HStack","__experimentalVStack","VStack","symbol","useDispatch","useSelect","__","noticesStore","coreStore","ReusableBlockConvertButton","clientIds","rootClientId","isModalOpen","setIsModalOpen","title","setTitle","canConvert","select","canUser","getBlocksByClientId","canInsertBlockType","blocks","isReusable","length","getEntityRecord","attributes","ref","_canConvert","every","block","isValid","name","__experimentalConvertBlocksToReusable","convertBlocksToReusable","createSuccessNotice","createErrorNotice","onConvert","reusableBlockTitle","type","error","message","onClose","event","preventDefault"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { hasBlockSupport, isReusableBlock } from '@wordpress/blocks';\nimport {\n\tBlockSettingsMenuControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useCallback, useState } from '@wordpress/element';\nimport {\n\tMenuItem,\n\tModal,\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { symbol } from '@wordpress/icons';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store } from '../../store';\n\n/**\n * Menu control to convert block(s) to reusable block.\n *\n * @param {Object} props Component props.\n * @param {string[]} props.clientIds Client ids of selected blocks.\n * @param {string} props.rootClientId ID of the currently selected top-level block.\n * @return {import('@wordpress/element').WPComponent} The menu control or null.\n */\nexport default function ReusableBlockConvertButton( {\n\tclientIds,\n\trootClientId,\n} ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst [ title, setTitle ] = useState( '' );\n\tconst canConvert = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst { getBlocksByClientId, canInsertBlockType } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst blocks = getBlocksByClientId( clientIds ) ?? [];\n\n\t\t\tconst isReusable =\n\t\t\t\tblocks.length === 1 &&\n\t\t\t\tblocks[ 0 ] &&\n\t\t\t\tisReusableBlock( blocks[ 0 ] ) &&\n\t\t\t\t!! select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblocks[ 0 ].attributes.ref\n\t\t\t\t);\n\n\t\t\tconst _canConvert =\n\t\t\t\t// Hide when this is already a reusable block.\n\t\t\t\t! isReusable &&\n\t\t\t\t// Hide when reusable blocks are disabled.\n\t\t\t\tcanInsertBlockType( 'core/block', rootClientId ) &&\n\t\t\t\tblocks.every(\n\t\t\t\t\t( block ) =>\n\t\t\t\t\t\t// Guard against the case where a regular block has *just* been converted.\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\t// Hide on invalid blocks.\n\t\t\t\t\t\tblock.isValid &&\n\t\t\t\t\t\t// Hide when block doesn't support being made reusable.\n\t\t\t\t\t\thasBlockSupport( block.name, 'reusable', true )\n\t\t\t\t) &&\n\t\t\t\t// Hide when current doesn't have permission to do that.\n\t\t\t\t!! canUser( 'create', 'blocks' );\n\n\t\t\treturn _canConvert;\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst { __experimentalConvertBlocksToReusable: convertBlocksToReusable } =\n\t\tuseDispatch( store );\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst onConvert = useCallback(\n\t\tasync function ( reusableBlockTitle ) {\n\t\t\ttry {\n\t\t\t\tawait convertBlocksToReusable( clientIds, reusableBlockTitle );\n\t\t\t\tcreateSuccessNotice( __( 'Reusable block created.' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t} catch ( error ) {\n\t\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tif ( ! canConvert ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSettingsMenuControls>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\ticon={ symbol }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetIsModalOpen( true );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Create Reusable block' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t\t<Modal\n\t\t\t\t\t\t\ttitle={ __( 'Create Reusable block' ) }\n\t\t\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\toverlayClassName=\"reusable-blocks-menu-items__convert-modal\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<form\n\t\t\t\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\tonConvert( title );\n\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<VStack spacing=\"5\">\n\t\t\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t</Modal>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</BlockSettingsMenuControls>\n\t);\n}\n"]}
@@ -105,8 +105,4 @@
105
105
 
106
106
  .reusable-blocks-menu-items__convert-modal {
107
107
  z-index: 1000001;
108
- }
109
-
110
- .reusable-blocks-menu-items__convert-modal-actions {
111
- padding-top: 12px;
112
108
  }
@@ -105,8 +105,4 @@
105
105
 
106
106
  .reusable-blocks-menu-items__convert-modal {
107
107
  z-index: 1000001;
108
- }
109
-
110
- .reusable-blocks-menu-items__convert-modal-actions {
111
- padding-top: 12px;
112
108
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/reusable-blocks",
3
- "version": "4.2.0",
3
+ "version": "4.3.1",
4
4
  "description": "Reusable blocks utilities.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -28,16 +28,16 @@
28
28
  "{src,build,build-module}/{index.js,store/index.js}"
29
29
  ],
30
30
  "dependencies": {
31
- "@wordpress/block-editor": "^11.2.0",
32
- "@wordpress/blocks": "^12.2.0",
33
- "@wordpress/components": "^23.2.0",
34
- "@wordpress/core-data": "^6.2.0",
35
- "@wordpress/data": "^8.2.0",
36
- "@wordpress/element": "^5.2.0",
37
- "@wordpress/i18n": "^4.25.0",
38
- "@wordpress/icons": "^9.16.0",
39
- "@wordpress/notices": "^3.25.0",
40
- "@wordpress/url": "^3.26.0"
31
+ "@wordpress/block-editor": "^11.3.1",
32
+ "@wordpress/blocks": "^12.3.1",
33
+ "@wordpress/components": "^23.3.1",
34
+ "@wordpress/core-data": "^6.3.1",
35
+ "@wordpress/data": "^8.3.1",
36
+ "@wordpress/element": "^5.3.1",
37
+ "@wordpress/i18n": "^4.26.1",
38
+ "@wordpress/icons": "^9.17.1",
39
+ "@wordpress/notices": "^3.26.1",
40
+ "@wordpress/url": "^3.27.1"
41
41
  },
42
42
  "peerDependencies": {
43
43
  "react": "^18.0.0",
@@ -46,5 +46,5 @@
46
46
  "publishConfig": {
47
47
  "access": "public"
48
48
  },
49
- "gitHead": "204c880ff65295768e9695dfee6c7a9fee1fdd05"
49
+ "gitHead": "e9ff92d836928aba65dde94d9d193bc401a934d7"
50
50
  }
@@ -12,8 +12,8 @@ import {
12
12
  Modal,
13
13
  Button,
14
14
  TextControl,
15
- Flex,
16
- FlexItem,
15
+ __experimentalHStack as HStack,
16
+ __experimentalVStack as VStack,
17
17
  } from '@wordpress/components';
18
18
  import { symbol } from '@wordpress/icons';
19
19
  import { useDispatch, useSelect } from '@wordpress/data';
@@ -120,7 +120,6 @@ export default function ReusableBlockConvertButton( {
120
120
  { isModalOpen && (
121
121
  <Modal
122
122
  title={ __( 'Create Reusable block' ) }
123
- closeLabel={ __( 'Close' ) }
124
123
  onRequestClose={ () => {
125
124
  setIsModalOpen( false );
126
125
  setTitle( '' );
@@ -136,16 +135,14 @@ export default function ReusableBlockConvertButton( {
136
135
  onClose();
137
136
  } }
138
137
  >
139
- <TextControl
140
- label={ __( 'Name' ) }
141
- value={ title }
142
- onChange={ setTitle }
143
- />
144
- <Flex
145
- className="reusable-blocks-menu-items__convert-modal-actions"
146
- justify="flex-end"
147
- >
148
- <FlexItem>
138
+ <VStack spacing="5">
139
+ <TextControl
140
+ __nextHasNoMarginBottom
141
+ label={ __( 'Name' ) }
142
+ value={ title }
143
+ onChange={ setTitle }
144
+ />
145
+ <HStack justify="right">
149
146
  <Button
150
147
  variant="tertiary"
151
148
  onClick={ () => {
@@ -155,13 +152,12 @@ export default function ReusableBlockConvertButton( {
155
152
  >
156
153
  { __( 'Cancel' ) }
157
154
  </Button>
158
- </FlexItem>
159
- <FlexItem>
155
+
160
156
  <Button variant="primary" type="submit">
161
157
  { __( 'Save' ) }
162
158
  </Button>
163
- </FlexItem>
164
- </Flex>
159
+ </HStack>
160
+ </VStack>
165
161
  </form>
166
162
  </Modal>
167
163
  ) }
@@ -1,7 +1,3 @@
1
1
  .reusable-blocks-menu-items__convert-modal {
2
2
  z-index: z-index(".reusable-blocks-menu-items__convert-modal");
3
3
  }
4
-
5
- .reusable-blocks-menu-items__convert-modal-actions {
6
- padding-top: $grid-unit-15;
7
- }