@wordpress/fields 0.6.0 → 0.7.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.
Files changed (28) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/LICENSE.md +1 -1
  3. package/build/actions/permanently-delete-post.js +104 -65
  4. package/build/actions/permanently-delete-post.js.map +1 -1
  5. package/build/components/create-template-part-modal/index.js +40 -35
  6. package/build/components/create-template-part-modal/index.js.map +1 -1
  7. package/build/fields/page-title/view.js +6 -2
  8. package/build/fields/page-title/view.js.map +1 -1
  9. package/build-module/actions/permanently-delete-post.js +105 -66
  10. package/build-module/actions/permanently-delete-post.js.map +1 -1
  11. package/build-module/components/create-template-part-modal/index.js +41 -36
  12. package/build-module/components/create-template-part-modal/index.js.map +1 -1
  13. package/build-module/fields/page-title/view.js +6 -2
  14. package/build-module/fields/page-title/view.js.map +1 -1
  15. package/build-style/style-rtl.css +49 -43
  16. package/build-style/style.css +49 -43
  17. package/build-types/actions/permanently-delete-post.d.ts.map +1 -1
  18. package/build-types/components/create-template-part-modal/index.d.ts.map +1 -1
  19. package/build-types/fields/page-title/view.d.ts.map +1 -1
  20. package/package.json +25 -25
  21. package/src/actions/permanently-delete-post.tsx +157 -86
  22. package/src/components/create-template-part-modal/index.tsx +61 -45
  23. package/src/components/create-template-part-modal/style.scss +79 -54
  24. package/src/fields/page-title/view.tsx +5 -2
  25. package/src/style.scss +0 -1
  26. package/tsconfig.json +1 -4
  27. package/tsconfig.tsbuildinfo +1 -1
  28. package/src/fields/page-title/style.scss +0 -10
package/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.7.0 (2025-01-02)
6
+
5
7
  ## 0.6.0 (2024-12-11)
6
8
 
7
9
  ## 0.5.0 (2024-11-27)
package/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## Gutenberg
2
2
 
3
- Copyright 2016-2024 by the contributors
3
+ Copyright 2016-2025 by the contributors
4
4
 
5
5
  **License for Contributions (on and after April 15, 2021)**
6
6
 
@@ -9,7 +9,12 @@ var _coreData = require("@wordpress/core-data");
9
9
  var _i18n = require("@wordpress/i18n");
10
10
  var _notices = require("@wordpress/notices");
11
11
  var _icons = require("@wordpress/icons");
12
+ var _element = require("@wordpress/element");
13
+ var _data = require("@wordpress/data");
14
+ var _components = require("@wordpress/components");
15
+ var _htmlEntities = require("@wordpress/html-entities");
12
16
  var _utils = require("./utils");
17
+ var _jsxRuntime = require("react/jsx-runtime");
13
18
  /**
14
19
  * WordPress dependencies
15
20
  */
@@ -33,77 +38,111 @@ const permanentlyDeletePost = {
33
38
  } = item;
34
39
  return status === 'trash' && permissions?.delete;
35
40
  },
36
- async callback(posts, {
37
- registry,
41
+ hideModalHeader: true,
42
+ RenderModal: ({
43
+ items,
44
+ closeModal,
38
45
  onActionPerformed
39
- }) {
46
+ }) => {
47
+ const [isBusy, setIsBusy] = (0, _element.useState)(false);
40
48
  const {
41
49
  createSuccessNotice,
42
50
  createErrorNotice
43
- } = registry.dispatch(_notices.store);
51
+ } = (0, _data.useDispatch)(_notices.store);
44
52
  const {
45
53
  deleteEntityRecord
46
- } = registry.dispatch(_coreData.store);
47
- const promiseResult = await Promise.allSettled(posts.map(post => {
48
- return deleteEntityRecord('postType', post.type, post.id, {
49
- force: true
50
- }, {
51
- throwOnError: true
52
- });
53
- }));
54
- // If all the promises were fulfilled with success.
55
- if (promiseResult.every(({
56
- status
57
- }) => status === 'fulfilled')) {
58
- let successMessage;
59
- if (promiseResult.length === 1) {
60
- successMessage = (0, _i18n.sprintf)(/* translators: The posts's title. */
61
- (0, _i18n.__)('"%s" permanently deleted.'), (0, _utils.getItemTitle)(posts[0]));
62
- } else {
63
- successMessage = (0, _i18n.__)('The items were permanently deleted.');
64
- }
65
- createSuccessNotice(successMessage, {
66
- type: 'snackbar',
67
- id: 'permanently-delete-post-action'
68
- });
69
- onActionPerformed?.(posts);
70
- } else {
71
- // If there was at lease one failure.
72
- let errorMessage;
73
- // If we were trying to permanently delete a single post.
74
- if (promiseResult.length === 1) {
75
- const typedError = promiseResult[0];
76
- if (typedError.reason?.message) {
77
- errorMessage = typedError.reason.message;
78
- } else {
79
- errorMessage = (0, _i18n.__)('An error occurred while permanently deleting the item.');
80
- }
81
- // If we were trying to permanently delete multiple posts
82
- } else {
83
- const errorMessages = new Set();
84
- const failedPromises = promiseResult.filter(({
85
- status
86
- }) => status === 'rejected');
87
- for (const failedPromise of failedPromises) {
88
- const typedError = failedPromise;
89
- if (typedError.reason?.message) {
90
- errorMessages.add(typedError.reason.message);
91
- }
92
- }
93
- if (errorMessages.size === 0) {
94
- errorMessage = (0, _i18n.__)('An error occurred while permanently deleting the items.');
95
- } else if (errorMessages.size === 1) {
96
- errorMessage = (0, _i18n.sprintf)(/* translators: %s: an error message */
97
- (0, _i18n.__)('An error occurred while permanently deleting the items: %s'), [...errorMessages][0]);
98
- } else {
99
- errorMessage = (0, _i18n.sprintf)(/* translators: %s: a list of comma separated error messages */
100
- (0, _i18n.__)('Some errors occurred while permanently deleting the items: %s'), [...errorMessages].join(','));
101
- }
102
- }
103
- createErrorNotice(errorMessage, {
104
- type: 'snackbar'
105
- });
106
- }
54
+ } = (0, _data.useDispatch)(_coreData.store);
55
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
56
+ spacing: "5",
57
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalText, {
58
+ children: items.length > 1 ? (0, _i18n.sprintf)(
59
+ // translators: %d: number of items to delete.
60
+ (0, _i18n._n)('Are you sure you want to permanently delete %d item?', 'Are you sure you want to permanently delete %d items?', items.length), items.length) : (0, _i18n.sprintf)(
61
+ // translators: %s: The post's title
62
+ (0, _i18n.__)('Are you sure you want to permanently delete "%s"?'), (0, _htmlEntities.decodeEntities)((0, _utils.getItemTitle)(items[0])))
63
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
64
+ justify: "right",
65
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
66
+ variant: "tertiary",
67
+ onClick: closeModal,
68
+ disabled: isBusy,
69
+ accessibleWhenDisabled: true,
70
+ __next40pxDefaultSize: true,
71
+ children: (0, _i18n.__)('Cancel')
72
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
73
+ variant: "primary",
74
+ onClick: async () => {
75
+ setIsBusy(true);
76
+ const promiseResult = await Promise.allSettled(items.map(post => deleteEntityRecord('postType', post.type, post.id, {
77
+ force: true
78
+ }, {
79
+ throwOnError: true
80
+ })));
81
+
82
+ // If all the promises were fulfilled with success.
83
+ if (promiseResult.every(({
84
+ status
85
+ }) => status === 'fulfilled')) {
86
+ let successMessage;
87
+ if (promiseResult.length === 1) {
88
+ successMessage = (0, _i18n.sprintf)(/* translators: The posts's title. */
89
+ (0, _i18n.__)('"%s" permanently deleted.'), (0, _utils.getItemTitle)(items[0]));
90
+ } else {
91
+ successMessage = (0, _i18n.__)('The items were permanently deleted.');
92
+ }
93
+ createSuccessNotice(successMessage, {
94
+ type: 'snackbar',
95
+ id: 'permanently-delete-post-action'
96
+ });
97
+ onActionPerformed?.(items);
98
+ } else {
99
+ // If there was at lease one failure.
100
+ let errorMessage;
101
+ // If we were trying to permanently delete a single post.
102
+ if (promiseResult.length === 1) {
103
+ const typedError = promiseResult[0];
104
+ if (typedError.reason?.message) {
105
+ errorMessage = typedError.reason.message;
106
+ } else {
107
+ errorMessage = (0, _i18n.__)('An error occurred while permanently deleting the item.');
108
+ }
109
+ // If we were trying to permanently delete multiple posts
110
+ } else {
111
+ const errorMessages = new Set();
112
+ const failedPromises = promiseResult.filter(({
113
+ status
114
+ }) => status === 'rejected');
115
+ for (const failedPromise of failedPromises) {
116
+ const typedError = failedPromise;
117
+ if (typedError.reason?.message) {
118
+ errorMessages.add(typedError.reason.message);
119
+ }
120
+ }
121
+ if (errorMessages.size === 0) {
122
+ errorMessage = (0, _i18n.__)('An error occurred while permanently deleting the items.');
123
+ } else if (errorMessages.size === 1) {
124
+ errorMessage = (0, _i18n.sprintf)(/* translators: %s: an error message */
125
+ (0, _i18n.__)('An error occurred while permanently deleting the items: %s'), [...errorMessages][0]);
126
+ } else {
127
+ errorMessage = (0, _i18n.sprintf)(/* translators: %s: a list of comma separated error messages */
128
+ (0, _i18n.__)('Some errors occurred while permanently deleting the items: %s'), [...errorMessages].join(','));
129
+ }
130
+ }
131
+ createErrorNotice(errorMessage, {
132
+ type: 'snackbar'
133
+ });
134
+ }
135
+ setIsBusy(false);
136
+ closeModal?.();
137
+ },
138
+ isBusy: isBusy,
139
+ disabled: isBusy,
140
+ accessibleWhenDisabled: true,
141
+ __next40pxDefaultSize: true,
142
+ children: (0, _i18n.__)('Delete permanently')
143
+ })]
144
+ })]
145
+ });
107
146
  }
108
147
  };
109
148
 
@@ -1 +1 @@
1
- {"version":3,"names":["_coreData","require","_i18n","_notices","_icons","_utils","permanentlyDeletePost","id","label","__","supportsBulk","icon","trash","isEligible","item","isTemplateOrTemplatePart","type","status","permissions","delete","callback","posts","registry","onActionPerformed","createSuccessNotice","createErrorNotice","dispatch","noticesStore","deleteEntityRecord","coreStore","promiseResult","Promise","allSettled","map","post","force","throwOnError","every","successMessage","length","sprintf","getItemTitle","errorMessage","typedError","reason","message","errorMessages","Set","failedPromises","filter","failedPromise","add","size","join","_default","exports","default"],"sources":["@wordpress/fields/src/actions/permanently-delete-post.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport type { Action } from '@wordpress/dataviews';\nimport { trash } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { getItemTitle, isTemplateOrTemplatePart } from './utils';\nimport type { CoreDataError, PostWithPermissions } from '../types';\n\nconst permanentlyDeletePost: Action< PostWithPermissions > = {\n\tid: 'permanently-delete',\n\tlabel: __( 'Permanently delete' ),\n\tsupportsBulk: true,\n\ticon: trash,\n\tisEligible( item ) {\n\t\tif ( isTemplateOrTemplatePart( item ) || item.type === 'wp_block' ) {\n\t\t\treturn false;\n\t\t}\n\t\tconst { status, permissions } = item;\n\t\treturn status === 'trash' && permissions?.delete;\n\t},\n\tasync callback( posts, { registry, onActionPerformed } ) {\n\t\tconst { createSuccessNotice, createErrorNotice } =\n\t\t\tregistry.dispatch( noticesStore );\n\t\tconst { deleteEntityRecord } = registry.dispatch( coreStore );\n\t\tconst promiseResult = await Promise.allSettled(\n\t\t\tposts.map( ( post ) => {\n\t\t\t\treturn deleteEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpost.type,\n\t\t\t\t\tpost.id,\n\t\t\t\t\t{ force: true },\n\t\t\t\t\t{ throwOnError: true }\n\t\t\t\t);\n\t\t\t} )\n\t\t);\n\t\t// If all the promises were fulfilled with success.\n\t\tif ( promiseResult.every( ( { status } ) => status === 'fulfilled' ) ) {\n\t\t\tlet successMessage;\n\t\t\tif ( promiseResult.length === 1 ) {\n\t\t\t\tsuccessMessage = sprintf(\n\t\t\t\t\t/* translators: The posts's title. */\n\t\t\t\t\t__( '\"%s\" permanently deleted.' ),\n\t\t\t\t\tgetItemTitle( posts[ 0 ] )\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tsuccessMessage = __( 'The items were permanently deleted.' );\n\t\t\t}\n\t\t\tcreateSuccessNotice( successMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'permanently-delete-post-action',\n\t\t\t} );\n\t\t\tonActionPerformed?.( posts );\n\t\t} else {\n\t\t\t// If there was at lease one failure.\n\t\t\tlet errorMessage;\n\t\t\t// If we were trying to permanently delete a single post.\n\t\t\tif ( promiseResult.length === 1 ) {\n\t\t\t\tconst typedError = promiseResult[ 0 ] as {\n\t\t\t\t\treason?: CoreDataError;\n\t\t\t\t};\n\t\t\t\tif ( typedError.reason?.message ) {\n\t\t\t\t\terrorMessage = typedError.reason.message;\n\t\t\t\t} else {\n\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t'An error occurred while permanently deleting the item.'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// If we were trying to permanently delete multiple posts\n\t\t\t} else {\n\t\t\t\tconst errorMessages = new Set();\n\t\t\t\tconst failedPromises = promiseResult.filter(\n\t\t\t\t\t( { status } ) => status === 'rejected'\n\t\t\t\t);\n\t\t\t\tfor ( const failedPromise of failedPromises ) {\n\t\t\t\t\tconst typedError = failedPromise as {\n\t\t\t\t\t\treason?: CoreDataError;\n\t\t\t\t\t};\n\t\t\t\t\tif ( typedError.reason?.message ) {\n\t\t\t\t\t\terrorMessages.add( typedError.reason.message );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( errorMessages.size === 0 ) {\n\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t'An error occurred while permanently deleting the items.'\n\t\t\t\t\t);\n\t\t\t\t} else if ( errorMessages.size === 1 ) {\n\t\t\t\t\terrorMessage = sprintf(\n\t\t\t\t\t\t/* translators: %s: an error message */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'An error occurred while permanently deleting the items: %s'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t[ ...errorMessages ][ 0 ]\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\terrorMessage = sprintf(\n\t\t\t\t\t\t/* translators: %s: a list of comma separated error messages */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Some errors occurred while permanently deleting the items: %s'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t[ ...errorMessages ].join( ',' )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t}\n\t},\n};\n\n/**\n * Delete action for PostWithPermissions.\n */\nexport default permanentlyDeletePost;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_coreData","require","_i18n","_notices","_icons","_element","_data","_components","_htmlEntities","_utils","_jsxRuntime","permanentlyDeletePost","id","label","__","supportsBulk","icon","trash","isEligible","item","isTemplateOrTemplatePart","type","status","permissions","delete","hideModalHeader","RenderModal","items","closeModal","onActionPerformed","isBusy","setIsBusy","useState","createSuccessNotice","createErrorNotice","useDispatch","noticesStore","deleteEntityRecord","coreStore","jsxs","__experimentalVStack","spacing","children","jsx","__experimentalText","length","sprintf","_n","decodeEntities","getItemTitle","__experimentalHStack","justify","Button","variant","onClick","disabled","accessibleWhenDisabled","__next40pxDefaultSize","promiseResult","Promise","allSettled","map","post","force","throwOnError","every","successMessage","errorMessage","typedError","reason","message","errorMessages","Set","failedPromises","filter","failedPromise","add","size","join","_default","exports","default"],"sources":["@wordpress/fields/src/actions/permanently-delete-post.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport type { Action } from '@wordpress/dataviews';\nimport { trash } from '@wordpress/icons';\nimport { useState } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\nimport {\n\tButton,\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { getItemTitle, isTemplateOrTemplatePart } from './utils';\nimport type { CoreDataError, PostWithPermissions } from '../types';\n\nconst permanentlyDeletePost: Action< PostWithPermissions > = {\n\tid: 'permanently-delete',\n\tlabel: __( 'Permanently delete' ),\n\tsupportsBulk: true,\n\ticon: trash,\n\tisEligible( item ) {\n\t\tif ( isTemplateOrTemplatePart( item ) || item.type === 'wp_block' ) {\n\t\t\treturn false;\n\t\t}\n\t\tconst { status, permissions } = item;\n\t\treturn status === 'trash' && permissions?.delete;\n\t},\n\thideModalHeader: true,\n\tRenderModal: ( { items, closeModal, onActionPerformed } ) => {\n\t\tconst [ isBusy, setIsBusy ] = useState( false );\n\t\tconst { createSuccessNotice, createErrorNotice } =\n\t\t\tuseDispatch( noticesStore );\n\t\tconst { deleteEntityRecord } = useDispatch( coreStore );\n\n\t\treturn (\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<Text>\n\t\t\t\t\t{ items.length > 1\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %d: number of items to delete.\n\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t'Are you sure you want to permanently delete %d item?',\n\t\t\t\t\t\t\t\t\t'Are you sure you want to permanently delete %d items?',\n\t\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The post's title\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Are you sure you want to permanently delete \"%s\"?'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tdecodeEntities( getItemTitle( items[ 0 ] ) )\n\t\t\t\t\t\t ) }\n\t\t\t\t</Text>\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={ closeModal }\n\t\t\t\t\t\tdisabled={ isBusy }\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{ __( '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={ async () => {\n\t\t\t\t\t\t\tsetIsBusy( true );\n\t\t\t\t\t\t\tconst promiseResult = await Promise.allSettled(\n\t\t\t\t\t\t\t\titems.map( ( post ) =>\n\t\t\t\t\t\t\t\t\tdeleteEntityRecord(\n\t\t\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\t\t\tpost.type,\n\t\t\t\t\t\t\t\t\t\tpost.id,\n\t\t\t\t\t\t\t\t\t\t{ force: true },\n\t\t\t\t\t\t\t\t\t\t{ throwOnError: true }\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t// If all the promises were fulfilled with success.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tpromiseResult.every(\n\t\t\t\t\t\t\t\t\t( { status } ) => status === 'fulfilled'\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\tlet successMessage;\n\t\t\t\t\t\t\t\tif ( promiseResult.length === 1 ) {\n\t\t\t\t\t\t\t\t\tsuccessMessage = sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: The posts's title. */\n\t\t\t\t\t\t\t\t\t\t__( '\"%s\" permanently deleted.' ),\n\t\t\t\t\t\t\t\t\t\tgetItemTitle( items[ 0 ] )\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsuccessMessage = __(\n\t\t\t\t\t\t\t\t\t\t'The items were permanently deleted.'\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcreateSuccessNotice( successMessage, {\n\t\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\t\tid: 'permanently-delete-post-action',\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\tonActionPerformed?.( items );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// If there was at lease one failure.\n\t\t\t\t\t\t\t\tlet errorMessage;\n\t\t\t\t\t\t\t\t// If we were trying to permanently delete a single post.\n\t\t\t\t\t\t\t\tif ( promiseResult.length === 1 ) {\n\t\t\t\t\t\t\t\t\tconst typedError = promiseResult[ 0 ] as {\n\t\t\t\t\t\t\t\t\t\treason?: CoreDataError;\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\tif ( typedError.reason?.message ) {\n\t\t\t\t\t\t\t\t\t\terrorMessage =\n\t\t\t\t\t\t\t\t\t\t\ttypedError.reason.message;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t\t\t\t\t\t'An error occurred while permanently deleting the item.'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// If we were trying to permanently delete multiple posts\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconst errorMessages = new Set();\n\t\t\t\t\t\t\t\t\tconst failedPromises = promiseResult.filter(\n\t\t\t\t\t\t\t\t\t\t( { status } ) => status === 'rejected'\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tfor ( const failedPromise of failedPromises ) {\n\t\t\t\t\t\t\t\t\t\tconst typedError = failedPromise as {\n\t\t\t\t\t\t\t\t\t\t\treason?: CoreDataError;\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tif ( typedError.reason?.message ) {\n\t\t\t\t\t\t\t\t\t\t\terrorMessages.add(\n\t\t\t\t\t\t\t\t\t\t\t\ttypedError.reason.message\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}\n\t\t\t\t\t\t\t\t\tif ( errorMessages.size === 0 ) {\n\t\t\t\t\t\t\t\t\t\terrorMessage = __(\n\t\t\t\t\t\t\t\t\t\t\t'An error occurred while permanently deleting the items.'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} else if ( errorMessages.size === 1 ) {\n\t\t\t\t\t\t\t\t\t\terrorMessage = sprintf(\n\t\t\t\t\t\t\t\t\t\t\t/* translators: %s: an error message */\n\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t'An error occurred while permanently deleting the items: %s'\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t[ ...errorMessages ][ 0 ]\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\terrorMessage = sprintf(\n\t\t\t\t\t\t\t\t\t\t\t/* translators: %s: a list of comma separated error messages */\n\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t'Some errors occurred while permanently deleting the items: %s'\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t[ ...errorMessages ].join( ',' )\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsetIsBusy( false );\n\t\t\t\t\t\t\tcloseModal?.();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisBusy={ isBusy }\n\t\t\t\t\t\tdisabled={ isBusy }\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 permanently' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t);\n\t},\n};\n\n/**\n * Delete action for PostWithPermissions.\n */\nexport default permanentlyDeletePost;\n"],"mappings":"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","ignoreList":[]}
@@ -27,6 +27,12 @@ var _jsxRuntime = require("react/jsx-runtime");
27
27
  * Internal dependencies
28
28
  */
29
29
 
30
+ function getAreaRadioId(value, instanceId) {
31
+ return `fields-create-template-part-modal__area-option-${value}-${instanceId}`;
32
+ }
33
+ function getAreaRadioDescriptionId(value, instanceId) {
34
+ return `fields-create-template-part-modal__area-option-description-${value}-${instanceId}`;
35
+ }
30
36
  /**
31
37
  * A React component that renders a modal for creating a template part. The modal displays a title and the contents for creating the template part.
32
38
  * This component should not live in this package, it should be moved to a dedicated package responsible for managing template.
@@ -141,45 +147,44 @@ function CreateTemplatePartModalContents({
141
147
  value: title,
142
148
  onChange: setTitle,
143
149
  required: true
144
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.BaseControl, {
145
- __nextHasNoMarginBottom: true,
146
- label: (0, _i18n.__)('Area'),
147
- id: `fields-create-template-part-modal__area-selection-${instanceId}`,
148
- className: "fields-create-template-part-modal__area-base-control",
149
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalRadioGroup, {
150
- label: (0, _i18n.__)('Area'),
150
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("fieldset", {
151
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.BaseControl.VisualLabel, {
152
+ as: "legend",
153
+ children: (0, _i18n.__)('Area')
154
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
151
155
  className: "fields-create-template-part-modal__area-radio-group",
152
- id: `fields-create-template-part-modal__area-selection-${instanceId}`,
153
- onChange: value => value && typeof value === 'string' ? setArea(value) : () => void 0,
154
- checked: area,
155
156
  children: (defaultTemplatePartAreas !== null && defaultTemplatePartAreas !== void 0 ? defaultTemplatePartAreas : []).map(item => {
156
157
  const icon = getTemplatePartIcon(item.icon);
157
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalRadio, {
158
- __next40pxDefaultSize: true,
159
- value: item.area,
160
- className: "fields-create-template-part-modal__area-radio",
161
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.Flex, {
162
- align: "start",
163
- justify: "start",
164
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.FlexItem, {
165
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Icon, {
166
- icon: icon
167
- })
168
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.FlexBlock, {
169
- className: "fields-create-template-part-modal__option-label",
170
- children: [item.label, /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
171
- children: item.description
172
- })]
173
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.FlexItem, {
174
- className: "fields-create-template-part-modal__checkbox",
175
- children: area === item.area && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Icon, {
176
- icon: _icons.check
177
- })
178
- })]
179
- })
180
- }, item.label);
158
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
159
+ className: "fields-create-template-part-modal__area-radio-wrapper",
160
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
161
+ type: "radio",
162
+ id: getAreaRadioId(item.area, instanceId),
163
+ name: `fields-create-template-part-modal__area-${instanceId}`,
164
+ value: item.area,
165
+ checked: area === item.area,
166
+ onChange: () => {
167
+ setArea(item.area);
168
+ },
169
+ "aria-describedby": getAreaRadioDescriptionId(item.area, instanceId)
170
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Icon, {
171
+ icon: icon,
172
+ className: "fields-create-template-part-modal__area-radio-icon"
173
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("label", {
174
+ htmlFor: getAreaRadioId(item.area, instanceId),
175
+ className: "fields-create-template-part-modal__area-radio-label",
176
+ children: item.label
177
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Icon, {
178
+ icon: _icons.check,
179
+ className: "fields-create-template-part-modal__area-radio-checkmark"
180
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
181
+ className: "fields-create-template-part-modal__area-radio-description",
182
+ id: getAreaRadioDescriptionId(item.area, instanceId),
183
+ children: item.description
184
+ })]
185
+ }, item.area);
181
186
  })
182
- })
187
+ })]
183
188
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
184
189
  justify: "right",
185
190
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_compose","_coreData","_data","_element","_i18n","_icons","_notices","_blocks","_utils","_jsxRuntime","CreateTemplatePartModal","modalTitle","restProps","defaultModalTitle","useSelect","select","coreStore","getPostType","labels","add_new_item","jsx","Modal","title","onRequestClose","closeModal","overlayClassName","focusOnMount","size","children","CreateTemplatePartModalContents","getTemplatePartIcon","iconName","headerIcon","footerIcon","sidebarIcon","symbolFilledIcon","defaultArea","blocks","confirmLabel","__","onCreate","onError","defaultTitle","createErrorNotice","useDispatch","noticesStore","saveEntityRecord","existingTemplateParts","useExistingTemplateParts","setTitle","useState","area","setArea","isSubmitting","setIsSubmitting","instanceId","useInstanceId","defaultTemplatePartAreas","getEntityRecord","default_template_part_areas","createTemplatePart","uniqueTitle","getUniqueTemplatePartTitle","cleanSlug","getCleanTemplatePartSlug","templatePart","slug","content","serialize","throwOnError","error","errorMessage","Error","message","code","type","onSubmit","event","preventDefault","jsxs","__experimentalVStack","spacing","TextControl","__next40pxDefaultSize","__nextHasNoMarginBottom","label","value","onChange","required","BaseControl","id","className","__experimentalRadioGroup","checked","map","item","icon","__experimentalRadio","Flex","align","justify","FlexItem","Icon","FlexBlock","description","check","__experimentalHStack","Button","variant","onClick","isBusy"],"sources":["@wordpress/fields/src/components/create-template-part-modal/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\tBaseControl,\n\tTextControl,\n\tFlex,\n\tFlexItem,\n\tFlexBlock,\n\tButton,\n\tModal,\n\t__experimentalRadioGroup as RadioGroup,\n\t__experimentalRadio as Radio,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tcheck,\n\tfooter as footerIcon,\n\theader as headerIcon,\n\tsidebar as sidebarIcon,\n\tsymbolFilled as symbolFilledIcon,\n} from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n// @ts-expect-error serialize is not typed\nimport { serialize } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetCleanTemplatePartSlug,\n\tgetUniqueTemplatePartTitle,\n\tuseExistingTemplateParts,\n} from './utils';\n\ntype CreateTemplatePartModalContentsProps = {\n\tdefaultArea?: string;\n\tblocks: any[];\n\tconfirmLabel?: string;\n\tcloseModal: () => void;\n\tonCreate: ( templatePart: any ) => void;\n\tonError?: () => void;\n\tdefaultTitle?: string;\n};\n\ntype TemplatePartArea = {\n\tarea: string;\n\tlabel: string;\n\ticon: string;\n\tdescription: string;\n};\n\n/**\n * A React component that renders a modal for creating a template part. The modal displays a title and the contents for creating the template part.\n * This component should not live in this package, it should be moved to a dedicated package responsible for managing template.\n * @param {Object} props The component props.\n * @param props.modalTitle\n */\nexport default function CreateTemplatePartModal( {\n\tmodalTitle,\n\t...restProps\n}: {\n\tmodalTitle: string;\n} & CreateTemplatePartModalContentsProps ) {\n\tconst defaultModalTitle = useSelect(\n\t\t( select ) =>\n\t\t\t// @ts-expect-error getPostType is not typed with 'wp_template_part' as argument.\n\t\t\tselect( coreStore ).getPostType( 'wp_template_part' )?.labels\n\t\t\t\t?.add_new_item,\n\t\t[]\n\t);\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalTitle || defaultModalTitle }\n\t\t\tonRequestClose={ restProps.closeModal }\n\t\t\toverlayClassName=\"fields-create-template-part-modal\"\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"medium\"\n\t\t>\n\t\t\t<CreateTemplatePartModalContents { ...restProps } />\n\t\t</Modal>\n\t);\n}\n\nconst getTemplatePartIcon = ( iconName: string ) => {\n\tif ( 'header' === iconName ) {\n\t\treturn headerIcon;\n\t} else if ( 'footer' === iconName ) {\n\t\treturn footerIcon;\n\t} else if ( 'sidebar' === iconName ) {\n\t\treturn sidebarIcon;\n\t}\n\treturn symbolFilledIcon;\n};\n\n/**\n * A React component that renders the content of a model for creating a template part.\n * This component should not live in this package; it should be moved to a dedicated package responsible for managing template.\n *\n * @param {Object} props - The component props.\n * @param {string} [props.defaultArea=uncategorized] - The default area for the template part.\n * @param {Array} [props.blocks=[]] - The blocks to be included in the template part.\n * @param {string} [props.confirmLabel='Add'] - The label for the confirm button.\n * @param {Function} props.closeModal - Function to close the modal.\n * @param {Function} props.onCreate - Function to call when the template part is successfully created.\n * @param {Function} [props.onError] - Function to call when there is an error creating the template part.\n * @param {string} [props.defaultTitle=''] - The default title for the template part.\n */\nexport function CreateTemplatePartModalContents( {\n\tdefaultArea = 'uncategorized',\n\tblocks = [],\n\tconfirmLabel = __( 'Add' ),\n\tcloseModal,\n\tonCreate,\n\tonError,\n\tdefaultTitle = '',\n}: CreateTemplatePartModalContentsProps ) {\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst existingTemplateParts = useExistingTemplateParts();\n\n\tconst [ title, setTitle ] = useState( defaultTitle );\n\tconst [ area, setArea ] = useState( defaultArea );\n\tconst [ isSubmitting, setIsSubmitting ] = useState( false );\n\tconst instanceId = useInstanceId( CreateTemplatePartModal );\n\n\tconst defaultTemplatePartAreas = useSelect(\n\t\t( select ) =>\n\t\t\t// @ts-expect-error getEntityRecord is not typed with unstableBase as argument.\n\t\t\tselect( coreStore ).getEntityRecord< {\n\t\t\t\tdefault_template_part_areas: Array< TemplatePartArea >;\n\t\t\t} >( 'root', '__unstableBase' )?.default_template_part_areas,\n\t\t[]\n\t);\n\n\tasync function createTemplatePart() {\n\t\tif ( ! title || isSubmitting ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tsetIsSubmitting( true );\n\t\t\tconst uniqueTitle = getUniqueTemplatePartTitle(\n\t\t\t\ttitle,\n\t\t\t\texistingTemplateParts\n\t\t\t);\n\t\t\tconst cleanSlug = getCleanTemplatePartSlug( uniqueTitle );\n\n\t\t\tconst templatePart = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\t{\n\t\t\t\t\tslug: cleanSlug,\n\t\t\t\t\ttitle: uniqueTitle,\n\t\t\t\t\tcontent: serialize( blocks ),\n\t\t\t\t\tarea,\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\t\t\tawait onCreate( templatePart );\n\n\t\t\t// TODO: Add a success notice?\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror instanceof Error &&\n\t\t\t\t'code' in error &&\n\t\t\t\terror.message &&\n\t\t\t\terror.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __(\n\t\t\t\t\t\t\t'An error occurred while creating the template part.'\n\t\t\t\t\t );\n\n\t\t\tcreateErrorNotice( errorMessage, { type: 'snackbar' } );\n\n\t\t\tonError?.();\n\t\t} finally {\n\t\t\tsetIsSubmitting( false );\n\t\t}\n\t}\n\treturn (\n\t\t<form\n\t\t\tonSubmit={ async ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tawait createTemplatePart();\n\t\t\t} }\n\t\t>\n\t\t\t<VStack spacing=\"4\">\n\t\t\t\t<TextControl\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\tvalue={ title }\n\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\trequired\n\t\t\t\t/>\n\t\t\t\t<BaseControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Area' ) }\n\t\t\t\t\tid={ `fields-create-template-part-modal__area-selection-${ instanceId }` }\n\t\t\t\t\tclassName=\"fields-create-template-part-modal__area-base-control\"\n\t\t\t\t>\n\t\t\t\t\t<RadioGroup\n\t\t\t\t\t\tlabel={ __( 'Area' ) }\n\t\t\t\t\t\tclassName=\"fields-create-template-part-modal__area-radio-group\"\n\t\t\t\t\t\tid={ `fields-create-template-part-modal__area-selection-${ instanceId }` }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tvalue && typeof value === 'string'\n\t\t\t\t\t\t\t\t? setArea( value )\n\t\t\t\t\t\t\t\t: () => void 0\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchecked={ area }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( defaultTemplatePartAreas ?? [] ).map( ( item ) => {\n\t\t\t\t\t\t\tconst icon = getTemplatePartIcon( item.icon );\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Radio\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tkey={ item.label }\n\t\t\t\t\t\t\t\t\tvalue={ item.area }\n\t\t\t\t\t\t\t\t\tclassName=\"fields-create-template-part-modal__area-radio\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Flex align=\"start\" justify=\"start\">\n\t\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock className=\"fields-create-template-part-modal__option-label\">\n\t\t\t\t\t\t\t\t\t\t\t{ item.label }\n\t\t\t\t\t\t\t\t\t\t\t<div>{ item.description }</div>\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\n\t\t\t\t\t\t\t\t\t\t<FlexItem className=\"fields-create-template-part-modal__checkbox\">\n\t\t\t\t\t\t\t\t\t\t\t{ area === item.area && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t\t</Radio>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</RadioGroup>\n\t\t\t\t</BaseControl>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseModal();\n\t\t\t\t\t\t} }\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\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\taria-disabled={ ! title || isSubmitting }\n\t\t\t\t\t\tisBusy={ isSubmitting }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ confirmLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t</form>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_components","require","_compose","_coreData","_data","_element","_i18n","_icons","_notices","_blocks","_utils","_jsxRuntime","getAreaRadioId","value","instanceId","getAreaRadioDescriptionId","CreateTemplatePartModal","modalTitle","restProps","defaultModalTitle","useSelect","select","coreStore","getPostType","labels","add_new_item","jsx","Modal","title","onRequestClose","closeModal","overlayClassName","focusOnMount","size","children","CreateTemplatePartModalContents","getTemplatePartIcon","iconName","headerIcon","footerIcon","sidebarIcon","symbolFilledIcon","defaultArea","blocks","confirmLabel","__","onCreate","onError","defaultTitle","createErrorNotice","useDispatch","noticesStore","saveEntityRecord","existingTemplateParts","useExistingTemplateParts","setTitle","useState","area","setArea","isSubmitting","setIsSubmitting","useInstanceId","defaultTemplatePartAreas","getEntityRecord","default_template_part_areas","createTemplatePart","uniqueTitle","getUniqueTemplatePartTitle","cleanSlug","getCleanTemplatePartSlug","templatePart","slug","content","serialize","throwOnError","error","errorMessage","Error","message","code","type","onSubmit","event","preventDefault","jsxs","__experimentalVStack","spacing","TextControl","__next40pxDefaultSize","__nextHasNoMarginBottom","label","onChange","required","BaseControl","VisualLabel","as","className","map","item","icon","id","name","checked","Icon","htmlFor","check","description","__experimentalHStack","justify","Button","variant","onClick","isBusy"],"sources":["@wordpress/fields/src/components/create-template-part-modal/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\tBaseControl,\n\tTextControl,\n\tButton,\n\tModal,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tcheck,\n\tfooter as footerIcon,\n\theader as headerIcon,\n\tsidebar as sidebarIcon,\n\tsymbolFilled as symbolFilledIcon,\n} from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n// @ts-expect-error serialize is not typed\nimport { serialize } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetCleanTemplatePartSlug,\n\tgetUniqueTemplatePartTitle,\n\tuseExistingTemplateParts,\n} from './utils';\n\nfunction getAreaRadioId( value: string, instanceId: number ) {\n\treturn `fields-create-template-part-modal__area-option-${ value }-${ instanceId }`;\n}\nfunction getAreaRadioDescriptionId( value: string, instanceId: number ) {\n\treturn `fields-create-template-part-modal__area-option-description-${ value }-${ instanceId }`;\n}\n\ntype CreateTemplatePartModalContentsProps = {\n\tdefaultArea?: string;\n\tblocks: any[];\n\tconfirmLabel?: string;\n\tcloseModal: () => void;\n\tonCreate: ( templatePart: any ) => void;\n\tonError?: () => void;\n\tdefaultTitle?: string;\n};\n\ntype TemplatePartArea = {\n\tarea: string;\n\tlabel: string;\n\ticon: string;\n\tdescription: string;\n};\n\n/**\n * A React component that renders a modal for creating a template part. The modal displays a title and the contents for creating the template part.\n * This component should not live in this package, it should be moved to a dedicated package responsible for managing template.\n * @param {Object} props The component props.\n * @param props.modalTitle\n */\nexport default function CreateTemplatePartModal( {\n\tmodalTitle,\n\t...restProps\n}: {\n\tmodalTitle: string;\n} & CreateTemplatePartModalContentsProps ) {\n\tconst defaultModalTitle = useSelect(\n\t\t( select ) =>\n\t\t\t// @ts-expect-error getPostType is not typed with 'wp_template_part' as argument.\n\t\t\tselect( coreStore ).getPostType( 'wp_template_part' )?.labels\n\t\t\t\t?.add_new_item,\n\t\t[]\n\t);\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalTitle || defaultModalTitle }\n\t\t\tonRequestClose={ restProps.closeModal }\n\t\t\toverlayClassName=\"fields-create-template-part-modal\"\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"medium\"\n\t\t>\n\t\t\t<CreateTemplatePartModalContents { ...restProps } />\n\t\t</Modal>\n\t);\n}\n\nconst getTemplatePartIcon = ( iconName: string ) => {\n\tif ( 'header' === iconName ) {\n\t\treturn headerIcon;\n\t} else if ( 'footer' === iconName ) {\n\t\treturn footerIcon;\n\t} else if ( 'sidebar' === iconName ) {\n\t\treturn sidebarIcon;\n\t}\n\treturn symbolFilledIcon;\n};\n\n/**\n * A React component that renders the content of a model for creating a template part.\n * This component should not live in this package; it should be moved to a dedicated package responsible for managing template.\n *\n * @param {Object} props - The component props.\n * @param {string} [props.defaultArea=uncategorized] - The default area for the template part.\n * @param {Array} [props.blocks=[]] - The blocks to be included in the template part.\n * @param {string} [props.confirmLabel='Add'] - The label for the confirm button.\n * @param {Function} props.closeModal - Function to close the modal.\n * @param {Function} props.onCreate - Function to call when the template part is successfully created.\n * @param {Function} [props.onError] - Function to call when there is an error creating the template part.\n * @param {string} [props.defaultTitle=''] - The default title for the template part.\n */\nexport function CreateTemplatePartModalContents( {\n\tdefaultArea = 'uncategorized',\n\tblocks = [],\n\tconfirmLabel = __( 'Add' ),\n\tcloseModal,\n\tonCreate,\n\tonError,\n\tdefaultTitle = '',\n}: CreateTemplatePartModalContentsProps ) {\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst existingTemplateParts = useExistingTemplateParts();\n\n\tconst [ title, setTitle ] = useState( defaultTitle );\n\tconst [ area, setArea ] = useState( defaultArea );\n\tconst [ isSubmitting, setIsSubmitting ] = useState( false );\n\tconst instanceId = useInstanceId( CreateTemplatePartModal );\n\n\tconst defaultTemplatePartAreas = useSelect(\n\t\t( select ) =>\n\t\t\t// @ts-expect-error getEntityRecord is not typed with unstableBase as argument.\n\t\t\tselect( coreStore ).getEntityRecord< {\n\t\t\t\tdefault_template_part_areas: Array< TemplatePartArea >;\n\t\t\t} >( 'root', '__unstableBase' )?.default_template_part_areas,\n\t\t[]\n\t);\n\n\tasync function createTemplatePart() {\n\t\tif ( ! title || isSubmitting ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tsetIsSubmitting( true );\n\t\t\tconst uniqueTitle = getUniqueTemplatePartTitle(\n\t\t\t\ttitle,\n\t\t\t\texistingTemplateParts\n\t\t\t);\n\t\t\tconst cleanSlug = getCleanTemplatePartSlug( uniqueTitle );\n\n\t\t\tconst templatePart = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\t{\n\t\t\t\t\tslug: cleanSlug,\n\t\t\t\t\ttitle: uniqueTitle,\n\t\t\t\t\tcontent: serialize( blocks ),\n\t\t\t\t\tarea,\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\t\t\tawait onCreate( templatePart );\n\n\t\t\t// TODO: Add a success notice?\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror instanceof Error &&\n\t\t\t\t'code' in error &&\n\t\t\t\terror.message &&\n\t\t\t\terror.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __(\n\t\t\t\t\t\t\t'An error occurred while creating the template part.'\n\t\t\t\t\t );\n\n\t\t\tcreateErrorNotice( errorMessage, { type: 'snackbar' } );\n\n\t\t\tonError?.();\n\t\t} finally {\n\t\t\tsetIsSubmitting( false );\n\t\t}\n\t}\n\treturn (\n\t\t<form\n\t\t\tonSubmit={ async ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tawait createTemplatePart();\n\t\t\t} }\n\t\t>\n\t\t\t<VStack spacing=\"4\">\n\t\t\t\t<TextControl\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\tvalue={ title }\n\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\trequired\n\t\t\t\t/>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t\t\t{ __( 'Area' ) }\n\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t<div className=\"fields-create-template-part-modal__area-radio-group\">\n\t\t\t\t\t\t{ ( defaultTemplatePartAreas ?? [] ).map( ( item ) => {\n\t\t\t\t\t\t\tconst icon = getTemplatePartIcon( item.icon );\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={ item.area }\n\t\t\t\t\t\t\t\t\tclassName=\"fields-create-template-part-modal__area-radio-wrapper\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t\t\t\t\tid={ getAreaRadioId(\n\t\t\t\t\t\t\t\t\t\t\titem.area,\n\t\t\t\t\t\t\t\t\t\t\tinstanceId\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tname={ `fields-create-template-part-modal__area-${ instanceId }` }\n\t\t\t\t\t\t\t\t\t\tvalue={ item.area }\n\t\t\t\t\t\t\t\t\t\tchecked={ area === item.area }\n\t\t\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetArea( item.area );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\taria-describedby={ getAreaRadioDescriptionId(\n\t\t\t\t\t\t\t\t\t\t\titem.area,\n\t\t\t\t\t\t\t\t\t\t\tinstanceId\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\t\tclassName=\"fields-create-template-part-modal__area-radio-icon\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\t\thtmlFor={ getAreaRadioId(\n\t\t\t\t\t\t\t\t\t\t\titem.area,\n\t\t\t\t\t\t\t\t\t\t\tinstanceId\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tclassName=\"fields-create-template-part-modal__area-radio-label\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ item.label }\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\ticon={ check }\n\t\t\t\t\t\t\t\t\t\tclassName=\"fields-create-template-part-modal__area-radio-checkmark\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<p\n\t\t\t\t\t\t\t\t\t\tclassName=\"fields-create-template-part-modal__area-radio-description\"\n\t\t\t\t\t\t\t\t\t\tid={ getAreaRadioDescriptionId(\n\t\t\t\t\t\t\t\t\t\t\titem.area,\n\t\t\t\t\t\t\t\t\t\t\tinstanceId\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ item.description }\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</div>\n\t\t\t\t</fieldset>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseModal();\n\t\t\t\t\t\t} }\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\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\taria-disabled={ ! title || isSubmitting }\n\t\t\t\t\t\tisBusy={ isSubmitting }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ confirmLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t</form>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -7,7 +7,9 @@ exports.default = PageTitleView;
7
7
  var _i18n = require("@wordpress/i18n");
8
8
  var _data = require("@wordpress/data");
9
9
  var _coreData = require("@wordpress/core-data");
10
+ var _components = require("@wordpress/components");
10
11
  var _view = require("../title/view");
12
+ var _lockUnlock = require("../../lock-unlock");
11
13
  var _jsxRuntime = require("react/jsx-runtime");
12
14
  /**
13
15
  * WordPress dependencies
@@ -17,6 +19,9 @@ var _jsxRuntime = require("react/jsx-runtime");
17
19
  * Internal dependencies
18
20
  */
19
21
 
22
+ const {
23
+ Badge
24
+ } = (0, _lockUnlock.unlock)(_components.privateApis);
20
25
  function PageTitleView({
21
26
  item
22
27
  }) {
@@ -36,8 +41,7 @@ function PageTitleView({
36
41
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_view.BaseTitleView, {
37
42
  item: item,
38
43
  className: "fields-field__page-title",
39
- children: [frontPageId, postsPageId].includes(item.id) && /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
40
- className: "fields-field__page-title__badge",
44
+ children: [frontPageId, postsPageId].includes(item.id) && /*#__PURE__*/(0, _jsxRuntime.jsx)(Badge, {
41
45
  children: item.id === frontPageId ? (0, _i18n.__)('Homepage') : (0, _i18n.__)('Posts Page')
42
46
  })
43
47
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_data","_coreData","_view","_jsxRuntime","PageTitleView","item","frontPageId","postsPageId","useSelect","select","getEntityRecord","coreStore","siteSettings","page_on_front","page_for_posts","jsx","BaseTitleView","className","children","includes","id","__"],"sources":["@wordpress/fields/src/fields/page-title/view.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport type { Settings } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport type { CommonPost } from '../../types';\nimport { BaseTitleView } from '../title/view';\n\nexport default function PageTitleView( { item }: { item: CommonPost } ) {\n\tconst { frontPageId, postsPageId } = useSelect( ( select ) => {\n\t\tconst { getEntityRecord } = select( coreStore );\n\t\tconst siteSettings = getEntityRecord(\n\t\t\t'root',\n\t\t\t'site'\n\t\t) as Partial< Settings >;\n\t\treturn {\n\t\t\tfrontPageId: siteSettings?.page_on_front,\n\t\t\tpostsPageId: siteSettings?.page_for_posts,\n\t\t};\n\t}, [] );\n\treturn (\n\t\t<BaseTitleView item={ item } className=\"fields-field__page-title\">\n\t\t\t{ [ frontPageId, postsPageId ].includes( item.id as number ) && (\n\t\t\t\t<span className=\"fields-field__page-title__badge\">\n\t\t\t\t\t{ item.id === frontPageId\n\t\t\t\t\t\t? __( 'Homepage' )\n\t\t\t\t\t\t: __( 'Posts Page' ) }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t</BaseTitleView>\n\t);\n}\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAOA,IAAAG,KAAA,GAAAH,OAAA;AAA8C,IAAAI,WAAA,GAAAJ,OAAA;AAZ9C;AACA;AACA;;AAMA;AACA;AACA;;AAIe,SAASK,aAAaA,CAAE;EAAEC;AAA2B,CAAC,EAAG;EACvE,MAAM;IAAEC,WAAW;IAAEC;EAAY,CAAC,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IAC7D,MAAM;MAAEC;IAAgB,CAAC,GAAGD,MAAM,CAAEE,eAAU,CAAC;IAC/C,MAAMC,YAAY,GAAGF,eAAe,CACnC,MAAM,EACN,MACD,CAAwB;IACxB,OAAO;MACNJ,WAAW,EAAEM,YAAY,EAAEC,aAAa;MACxCN,WAAW,EAAEK,YAAY,EAAEE;IAC5B,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EACP,oBACC,IAAAX,WAAA,CAAAY,GAAA,EAACb,KAAA,CAAAc,aAAa;IAACX,IAAI,EAAGA,IAAM;IAACY,SAAS,EAAC,0BAA0B;IAAAC,QAAA,EAC9D,CAAEZ,WAAW,EAAEC,WAAW,CAAE,CAACY,QAAQ,CAAEd,IAAI,CAACe,EAAa,CAAC,iBAC3D,IAAAjB,WAAA,CAAAY,GAAA;MAAME,SAAS,EAAC,iCAAiC;MAAAC,QAAA,EAC9Cb,IAAI,CAACe,EAAE,KAAKd,WAAW,GACtB,IAAAe,QAAE,EAAE,UAAW,CAAC,GAChB,IAAAA,QAAE,EAAE,YAAa;IAAC,CAChB;EACN,CACa,CAAC;AAElB","ignoreList":[]}
1
+ {"version":3,"names":["_i18n","require","_data","_coreData","_components","_view","_lockUnlock","_jsxRuntime","Badge","unlock","componentsPrivateApis","PageTitleView","item","frontPageId","postsPageId","useSelect","select","getEntityRecord","coreStore","siteSettings","page_on_front","page_for_posts","jsx","BaseTitleView","className","children","includes","id","__"],"sources":["@wordpress/fields/src/fields/page-title/view.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport type { Settings } from '@wordpress/core-data';\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport type { CommonPost } from '../../types';\nimport { BaseTitleView } from '../title/view';\nimport { unlock } from '../../lock-unlock';\nconst { Badge } = unlock( componentsPrivateApis );\n\nexport default function PageTitleView( { item }: { item: CommonPost } ) {\n\tconst { frontPageId, postsPageId } = useSelect( ( select ) => {\n\t\tconst { getEntityRecord } = select( coreStore );\n\t\tconst siteSettings = getEntityRecord(\n\t\t\t'root',\n\t\t\t'site'\n\t\t) as Partial< Settings >;\n\t\treturn {\n\t\t\tfrontPageId: siteSettings?.page_on_front,\n\t\t\tpostsPageId: siteSettings?.page_for_posts,\n\t\t};\n\t}, [] );\n\treturn (\n\t\t<BaseTitleView item={ item } className=\"fields-field__page-title\">\n\t\t\t{ [ frontPageId, postsPageId ].includes( item.id as number ) && (\n\t\t\t\t<Badge>\n\t\t\t\t\t{ item.id === frontPageId\n\t\t\t\t\t\t? __( 'Homepage' )\n\t\t\t\t\t\t: __( 'Posts Page' ) }\n\t\t\t\t</Badge>\n\t\t\t) }\n\t\t</BaseTitleView>\n\t);\n}\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAEA,IAAAG,WAAA,GAAAH,OAAA;AAMA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AAA2C,IAAAM,WAAA,GAAAN,OAAA;AAd3C;AACA;AACA;;AAOA;AACA;AACA;;AAIA,MAAM;EAAEO;AAAM,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAsB,CAAC;AAElC,SAASC,aAAaA,CAAE;EAAEC;AAA2B,CAAC,EAAG;EACvE,MAAM;IAAEC,WAAW;IAAEC;EAAY,CAAC,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IAC7D,MAAM;MAAEC;IAAgB,CAAC,GAAGD,MAAM,CAAEE,eAAU,CAAC;IAC/C,MAAMC,YAAY,GAAGF,eAAe,CACnC,MAAM,EACN,MACD,CAAwB;IACxB,OAAO;MACNJ,WAAW,EAAEM,YAAY,EAAEC,aAAa;MACxCN,WAAW,EAAEK,YAAY,EAAEE;IAC5B,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EACP,oBACC,IAAAd,WAAA,CAAAe,GAAA,EAACjB,KAAA,CAAAkB,aAAa;IAACX,IAAI,EAAGA,IAAM;IAACY,SAAS,EAAC,0BAA0B;IAAAC,QAAA,EAC9D,CAAEZ,WAAW,EAAEC,WAAW,CAAE,CAACY,QAAQ,CAAEd,IAAI,CAACe,EAAa,CAAC,iBAC3D,IAAApB,WAAA,CAAAe,GAAA,EAACd,KAAK;MAAAiB,QAAA,EACHb,IAAI,CAACe,EAAE,KAAKd,WAAW,GACtB,IAAAe,QAAE,EAAE,UAAW,CAAC,GAChB,IAAAA,QAAE,EAAE,YAAa;IAAC,CACf;EACP,CACa,CAAC;AAElB","ignoreList":[]}