@wordpress/editor 14.0.3 → 14.2.0
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 +16 -12
- package/README.md +189 -24
- package/build/components/create-template-part-modal/index.js +2 -0
- package/build/components/create-template-part-modal/index.js.map +1 -1
- package/build/components/document-bar/index.js +11 -4
- package/build/components/document-bar/index.js.map +1 -1
- package/build/components/editor/index.js +18 -24
- package/build/components/editor/index.js.map +1 -1
- package/build/components/editor-interface/index.js +3 -1
- package/build/components/editor-interface/index.js.map +1 -1
- package/build/components/entities-saved-states/hooks/use-is-dirty.js +9 -0
- package/build/components/entities-saved-states/hooks/use-is-dirty.js.map +1 -1
- package/build/components/entities-saved-states/index.js +28 -0
- package/build/components/entities-saved-states/index.js.map +1 -1
- package/build/components/global-keyboard-shortcuts/index.js +1 -1
- package/build/components/global-keyboard-shortcuts/index.js.map +1 -1
- package/build/components/header/index.js +6 -2
- package/build/components/header/index.js.map +1 -1
- package/build/components/index.js +15 -0
- package/build/components/index.js.map +1 -1
- package/build/components/post-actions/actions.js +286 -263
- package/build/components/post-actions/actions.js.map +1 -1
- package/build/components/post-actions/index.js +2 -0
- package/build/components/post-actions/index.js.map +1 -1
- package/build/components/post-publish-button/index.js +4 -0
- package/build/components/post-publish-button/index.js.map +1 -1
- package/build/components/post-publish-button/label.js +5 -0
- package/build/components/post-publish-button/label.js.map +1 -1
- package/build/components/post-publish-panel/index.js +4 -0
- package/build/components/post-publish-panel/index.js.map +1 -1
- package/build/components/post-slug/check.js +8 -1
- package/build/components/post-slug/check.js.map +1 -1
- package/build/components/post-slug/index.js +6 -0
- package/build/components/post-slug/index.js.map +1 -1
- package/build/components/post-status/index.js +2 -1
- package/build/components/post-status/index.js.map +1 -1
- package/build/components/post-sticky/check.js +8 -0
- package/build/components/post-sticky/check.js.map +1 -1
- package/build/components/post-sticky/index.js +13 -13
- package/build/components/post-sticky/index.js.map +1 -1
- package/build/components/post-switch-to-draft-button/index.js +11 -2
- package/build/components/post-switch-to-draft-button/index.js.map +1 -1
- package/build/components/post-sync-status/index.js +5 -1
- package/build/components/post-sync-status/index.js.map +1 -1
- package/build/components/post-taxonomies/check.js +8 -0
- package/build/components/post-taxonomies/check.js.map +1 -1
- package/build/components/post-taxonomies/flat-term-selector.js +14 -2
- package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build/components/post-taxonomies/index.js +9 -0
- package/build/components/post-taxonomies/index.js.map +1 -1
- package/build/components/post-taxonomies/panel.js +10 -0
- package/build/components/post-taxonomies/panel.js.map +1 -1
- package/build/components/post-template/create-new-template-modal.js +2 -0
- package/build/components/post-template/create-new-template-modal.js.map +1 -1
- package/build/components/post-title/index.js +4 -8
- package/build/components/post-title/index.js.map +1 -1
- package/build/components/post-title/post-title-raw.js +3 -7
- package/build/components/post-title/post-title-raw.js.map +1 -1
- package/build/components/post-trash/check.js +8 -0
- package/build/components/post-trash/check.js.map +1 -1
- package/build/components/post-trash/index.js +5 -1
- package/build/components/post-trash/index.js.map +1 -1
- package/build/components/provider/index.js +18 -15
- package/build/components/provider/index.js.map +1 -1
- package/build/components/sidebar/index.js +2 -1
- package/build/components/sidebar/index.js.map +1 -1
- package/build/components/sidebar/post-summary.js +2 -3
- package/build/components/sidebar/post-summary.js.map +1 -1
- package/build/components/table-of-contents/index.js +11 -0
- package/build/components/table-of-contents/index.js.map +1 -1
- package/build/components/template-part-content-panel/index.js +70 -0
- package/build/components/template-part-content-panel/index.js.map +1 -0
- package/build/components/template-part-menu-items/convert-to-regular.js +38 -0
- package/build/components/template-part-menu-items/convert-to-regular.js.map +1 -0
- package/build/components/template-part-menu-items/convert-to-template-part.js +77 -0
- package/build/components/template-part-menu-items/convert-to-template-part.js.map +1 -0
- package/build/components/template-part-menu-items/index.js +67 -0
- package/build/components/template-part-menu-items/index.js.map +1 -0
- package/build/components/template-part-menu-items/index.native.js +10 -0
- package/build/components/template-part-menu-items/index.native.js.map +1 -0
- package/build/components/theme-support-check/index.js +9 -0
- package/build/components/theme-support-check/index.js.map +1 -1
- package/build/components/time-to-read/index.js +6 -0
- package/build/components/time-to-read/index.js.map +1 -1
- package/build/components/word-count/index.js +5 -1
- package/build/components/word-count/index.js.map +1 -1
- package/build/dataviews/api.js +61 -0
- package/build/dataviews/api.js.map +1 -0
- package/build/dataviews/store/private-actions.js +28 -0
- package/build/dataviews/store/private-actions.js.map +1 -0
- package/build/dataviews/store/private-selectors.js +20 -0
- package/build/dataviews/store/private-selectors.js.map +1 -0
- package/build/dataviews/store/reducer.js +36 -0
- package/build/dataviews/store/reducer.js.map +1 -0
- package/build/index.js +12 -0
- package/build/index.js.map +1 -1
- package/build/private-apis.js +0 -6
- package/build/private-apis.js.map +1 -1
- package/build/private-apis.native.js +0 -2
- package/build/private-apis.native.js.map +1 -1
- package/build/store/private-actions.js +21 -0
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +5 -0
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +4 -1
- package/build/store/reducer.js.map +1 -1
- package/build-module/components/create-template-part-modal/index.js +2 -0
- package/build-module/components/create-template-part-modal/index.js.map +1 -1
- package/build-module/components/document-bar/index.js +11 -4
- package/build-module/components/document-bar/index.js.map +1 -1
- package/build-module/components/editor/index.js +19 -24
- package/build-module/components/editor/index.js.map +1 -1
- package/build-module/components/editor-interface/index.js +3 -1
- package/build-module/components/editor-interface/index.js.map +1 -1
- package/build-module/components/entities-saved-states/hooks/use-is-dirty.js +10 -0
- package/build-module/components/entities-saved-states/hooks/use-is-dirty.js.map +1 -1
- package/build-module/components/entities-saved-states/index.js +28 -0
- package/build-module/components/entities-saved-states/index.js.map +1 -1
- package/build-module/components/global-keyboard-shortcuts/index.js +1 -1
- package/build-module/components/global-keyboard-shortcuts/index.js.map +1 -1
- package/build-module/components/header/index.js +6 -2
- package/build-module/components/header/index.js.map +1 -1
- package/build-module/components/index.js +16 -0
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/post-actions/actions.js +286 -263
- package/build-module/components/post-actions/actions.js.map +1 -1
- package/build-module/components/post-actions/index.js +2 -0
- package/build-module/components/post-actions/index.js.map +1 -1
- package/build-module/components/post-publish-button/index.js +4 -0
- package/build-module/components/post-publish-button/index.js.map +1 -1
- package/build-module/components/post-publish-button/label.js +6 -0
- package/build-module/components/post-publish-button/label.js.map +1 -1
- package/build-module/components/post-publish-panel/index.js +4 -0
- package/build-module/components/post-publish-panel/index.js.map +1 -1
- package/build-module/components/post-slug/check.js +9 -0
- package/build-module/components/post-slug/check.js.map +1 -1
- package/build-module/components/post-slug/index.js +6 -0
- package/build-module/components/post-slug/index.js.map +1 -1
- package/build-module/components/post-status/index.js +2 -1
- package/build-module/components/post-status/index.js.map +1 -1
- package/build-module/components/post-sticky/check.js +9 -0
- package/build-module/components/post-sticky/check.js.map +1 -1
- package/build-module/components/post-sticky/index.js +15 -13
- package/build-module/components/post-sticky/index.js.map +1 -1
- package/build-module/components/post-switch-to-draft-button/index.js +10 -1
- package/build-module/components/post-switch-to-draft-button/index.js.map +1 -1
- package/build-module/components/post-sync-status/index.js +6 -0
- package/build-module/components/post-sync-status/index.js.map +1 -1
- package/build-module/components/post-taxonomies/check.js +9 -0
- package/build-module/components/post-taxonomies/check.js.map +1 -1
- package/build-module/components/post-taxonomies/flat-term-selector.js +14 -2
- package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build-module/components/post-taxonomies/index.js +9 -0
- package/build-module/components/post-taxonomies/index.js.map +1 -1
- package/build-module/components/post-taxonomies/panel.js +10 -0
- package/build-module/components/post-taxonomies/panel.js.map +1 -1
- package/build-module/components/post-template/create-new-template-modal.js +2 -0
- package/build-module/components/post-template/create-new-template-modal.js.map +1 -1
- package/build-module/components/post-title/index.js +4 -8
- package/build-module/components/post-title/index.js.map +1 -1
- package/build-module/components/post-title/post-title-raw.js +3 -7
- package/build-module/components/post-title/post-title-raw.js.map +1 -1
- package/build-module/components/post-trash/check.js +9 -0
- package/build-module/components/post-trash/check.js.map +1 -1
- package/build-module/components/post-trash/index.js +6 -0
- package/build-module/components/post-trash/index.js.map +1 -1
- package/build-module/components/provider/index.js +18 -15
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/sidebar/index.js +2 -1
- package/build-module/components/sidebar/index.js.map +1 -1
- package/build-module/components/sidebar/post-summary.js +2 -3
- package/build-module/components/sidebar/post-summary.js.map +1 -1
- package/build-module/components/table-of-contents/index.js +11 -0
- package/build-module/components/table-of-contents/index.js.map +1 -1
- package/build-module/components/template-part-content-panel/index.js +63 -0
- package/build-module/components/template-part-content-panel/index.js.map +1 -0
- package/build-module/components/template-part-menu-items/convert-to-regular.js +31 -0
- package/build-module/components/template-part-menu-items/convert-to-regular.js.map +1 -0
- package/build-module/components/template-part-menu-items/convert-to-template-part.js +71 -0
- package/build-module/components/template-part-menu-items/convert-to-template-part.js.map +1 -0
- package/build-module/components/template-part-menu-items/index.js +59 -0
- package/build-module/components/template-part-menu-items/index.js.map +1 -0
- package/build-module/components/template-part-menu-items/index.native.js +4 -0
- package/build-module/components/template-part-menu-items/index.native.js.map +1 -0
- package/build-module/components/theme-support-check/index.js +10 -0
- package/build-module/components/theme-support-check/index.js.map +1 -1
- package/build-module/components/time-to-read/index.js +6 -0
- package/build-module/components/time-to-read/index.js.map +1 -1
- package/build-module/components/word-count/index.js +6 -0
- package/build-module/components/word-count/index.js.map +1 -1
- package/build-module/dataviews/api.js +54 -0
- package/build-module/dataviews/api.js.map +1 -0
- package/build-module/dataviews/store/private-actions.js +21 -0
- package/build-module/dataviews/store/private-actions.js.map +1 -0
- package/build-module/dataviews/store/private-selectors.js +14 -0
- package/build-module/dataviews/store/private-selectors.js.map +1 -0
- package/build-module/dataviews/store/reducer.js +29 -0
- package/build-module/dataviews/store/reducer.js.map +1 -0
- package/build-module/index.js +1 -0
- package/build-module/index.js.map +1 -1
- package/build-module/private-apis.js +0 -6
- package/build-module/private-apis.js.map +1 -1
- package/build-module/private-apis.native.js +0 -2
- package/build-module/private-apis.native.js.map +1 -1
- package/build-module/store/private-actions.js +1 -0
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +4 -0
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +3 -1
- package/build-module/store/reducer.js.map +1 -1
- package/build-style/style-rtl.css +10 -9
- package/build-style/style.css +10 -9
- package/build-types/dataviews/store/private-actions.d.ts +17 -0
- package/build-types/dataviews/store/private-actions.d.ts.map +1 -0
- package/build-types/dataviews/store/private-selectors.d.ts +10 -0
- package/build-types/dataviews/store/private-selectors.d.ts.map +1 -0
- package/build-types/dataviews/store/reducer.d.ts +11 -0
- package/build-types/dataviews/store/reducer.d.ts.map +1 -0
- package/package.json +35 -35
- package/src/components/create-template-part-modal/index.js +2 -0
- package/src/components/create-template-part-modal/style.scss +0 -6
- package/src/components/document-bar/index.js +11 -4
- package/src/components/editor/index.js +23 -28
- package/src/components/editor-interface/index.js +2 -0
- package/src/components/entities-saved-states/hooks/use-is-dirty.js +9 -0
- package/src/components/entities-saved-states/index.js +26 -0
- package/src/components/global-keyboard-shortcuts/index.js +1 -1
- package/src/components/header/index.js +2 -1
- package/src/components/index.js +16 -0
- package/src/components/keyboard-shortcut-help-modal/style.scss +0 -3
- package/src/components/post-actions/actions.js +376 -387
- package/src/components/post-actions/index.js +2 -0
- package/src/components/post-card-panel/style.scss +4 -0
- package/src/components/post-panel-row/style.scss +1 -1
- package/src/components/post-publish-button/index.js +3 -0
- package/src/components/post-publish-button/label.js +5 -0
- package/src/components/post-publish-panel/index.js +3 -0
- package/src/components/post-slug/check.js +8 -0
- package/src/components/post-slug/index.js +5 -0
- package/src/components/post-status/index.js +2 -0
- package/src/components/post-status/style.scss +5 -0
- package/src/components/post-sticky/check.js +8 -0
- package/src/components/post-sticky/index.js +14 -12
- package/src/components/post-sticky/style.scss +3 -2
- package/src/components/post-switch-to-draft-button/index.js +10 -1
- package/src/components/post-sync-status/index.js +5 -0
- package/src/components/post-taxonomies/check.js +8 -0
- package/src/components/post-taxonomies/flat-term-selector.js +13 -2
- package/src/components/post-taxonomies/index.js +8 -0
- package/src/components/post-taxonomies/panel.js +9 -0
- package/src/components/post-template/create-new-template-modal.js +2 -0
- package/src/components/post-title/index.js +2 -5
- package/src/components/post-title/post-title-raw.js +2 -5
- package/src/components/post-trash/check.js +8 -0
- package/src/components/post-trash/index.js +5 -0
- package/src/components/provider/index.js +17 -17
- package/src/components/sidebar/index.js +2 -0
- package/src/components/sidebar/post-summary.js +1 -3
- package/src/components/table-of-contents/index.js +10 -0
- package/src/components/template-part-content-panel/index.js +62 -0
- package/src/components/template-part-menu-items/convert-to-regular.js +32 -0
- package/src/components/template-part-menu-items/convert-to-template-part.js +75 -0
- package/src/components/template-part-menu-items/index.js +59 -0
- package/src/components/template-part-menu-items/index.native.js +3 -0
- package/src/components/theme-support-check/index.js +9 -0
- package/src/components/time-to-read/index.js +5 -0
- package/src/components/word-count/index.js +5 -0
- package/src/dataviews/api.js +55 -0
- package/src/dataviews/store/private-actions.ts +30 -0
- package/src/dataviews/store/private-selectors.ts +15 -0
- package/src/dataviews/store/reducer.ts +44 -0
- package/src/index.js +1 -0
- package/src/private-apis.js +0 -6
- package/src/private-apis.native.js +0 -2
- package/src/store/private-actions.js +1 -0
- package/src/store/private-selectors.js +5 -0
- package/src/store/reducer.js +2 -0
- package/tsconfig.json +36 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -78,7 +78,6 @@ const deletePostAction = {
|
|
|
78
78
|
RenderModal: ({
|
|
79
79
|
items,
|
|
80
80
|
closeModal,
|
|
81
|
-
onActionStart,
|
|
82
81
|
onActionPerformed
|
|
83
82
|
}) => {
|
|
84
83
|
const [isBusy, setIsBusy] = useState(false);
|
|
@@ -105,9 +104,6 @@ const deletePostAction = {
|
|
|
105
104
|
variant: "primary",
|
|
106
105
|
onClick: async () => {
|
|
107
106
|
setIsBusy(true);
|
|
108
|
-
if (onActionStart) {
|
|
109
|
-
onActionStart(items);
|
|
110
|
-
}
|
|
111
107
|
await removeTemplates(items, {
|
|
112
108
|
allowUndo: false
|
|
113
109
|
});
|
|
@@ -124,15 +120,6 @@ const deletePostAction = {
|
|
|
124
120
|
});
|
|
125
121
|
}
|
|
126
122
|
};
|
|
127
|
-
function useCanUserEligibilityCheckPostType(capability, resource, action) {
|
|
128
|
-
const registry = useRegistry();
|
|
129
|
-
return useMemo(() => ({
|
|
130
|
-
...action,
|
|
131
|
-
isEligible(item) {
|
|
132
|
-
return action.isEligible(item) && registry.select(coreStore).canUser(capability, resource, item.id);
|
|
133
|
-
}
|
|
134
|
-
}), [action, registry, capability, resource]);
|
|
135
|
-
}
|
|
136
123
|
const trashPostAction = {
|
|
137
124
|
id: 'move-to-trash',
|
|
138
125
|
label: __('Move to Trash'),
|
|
@@ -146,7 +133,6 @@ const trashPostAction = {
|
|
|
146
133
|
RenderModal: ({
|
|
147
134
|
items,
|
|
148
135
|
closeModal,
|
|
149
|
-
onActionStart,
|
|
150
136
|
onActionPerformed
|
|
151
137
|
}) => {
|
|
152
138
|
const [isBusy, setIsBusy] = useState(false);
|
|
@@ -177,9 +163,6 @@ const trashPostAction = {
|
|
|
177
163
|
variant: "primary",
|
|
178
164
|
onClick: async () => {
|
|
179
165
|
setIsBusy(true);
|
|
180
|
-
if (onActionStart) {
|
|
181
|
-
onActionStart(items);
|
|
182
|
-
}
|
|
183
166
|
const promiseResult = await Promise.allSettled(items.map(item => deleteEntityRecord('postType', item.type, item.id, {}, {
|
|
184
167
|
throwOnError: true
|
|
185
168
|
})));
|
|
@@ -252,180 +235,191 @@ const trashPostAction = {
|
|
|
252
235
|
});
|
|
253
236
|
}
|
|
254
237
|
};
|
|
238
|
+
function useCanUserEligibilityCheckPostType(capability, resource, action) {
|
|
239
|
+
const registry = useRegistry();
|
|
240
|
+
return useMemo(() => ({
|
|
241
|
+
...action,
|
|
242
|
+
isEligible(item) {
|
|
243
|
+
return action.isEligible(item) && registry.select(coreStore).canUser(capability, resource, item.id);
|
|
244
|
+
}
|
|
245
|
+
}), [action, registry, capability, resource]);
|
|
246
|
+
}
|
|
255
247
|
function useTrashPostAction(resource) {
|
|
256
248
|
return useCanUserEligibilityCheckPostType('delete', resource, trashPostAction);
|
|
257
249
|
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
250
|
+
const permanentlyDeletePostAction = {
|
|
251
|
+
id: 'permanently-delete',
|
|
252
|
+
label: __('Permanently delete'),
|
|
253
|
+
supportsBulk: true,
|
|
254
|
+
isEligible({
|
|
255
|
+
status
|
|
256
|
+
}) {
|
|
257
|
+
return status === 'trash';
|
|
258
|
+
},
|
|
259
|
+
async callback(posts, {
|
|
260
|
+
registry
|
|
261
|
+
}) {
|
|
262
|
+
const {
|
|
263
|
+
createSuccessNotice,
|
|
264
|
+
createErrorNotice
|
|
265
|
+
} = registry.dispatch(noticesStore);
|
|
266
|
+
const {
|
|
267
|
+
deleteEntityRecord
|
|
268
|
+
} = registry.dispatch(coreStore);
|
|
269
|
+
const promiseResult = await Promise.allSettled(posts.map(post => {
|
|
270
|
+
return deleteEntityRecord('postType', post.type, post.id, {
|
|
271
|
+
force: true
|
|
272
|
+
}, {
|
|
273
|
+
throwOnError: true
|
|
274
|
+
});
|
|
275
|
+
}));
|
|
276
|
+
// If all the promises were fulfilled with success.
|
|
277
|
+
if (promiseResult.every(({
|
|
271
278
|
status
|
|
272
|
-
}) {
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
279
|
+
}) => status === 'fulfilled')) {
|
|
280
|
+
let successMessage;
|
|
281
|
+
if (promiseResult.length === 1) {
|
|
282
|
+
successMessage = sprintf( /* translators: The posts's title. */
|
|
283
|
+
__('"%s" permanently deleted.'), getItemTitle(posts[0]));
|
|
284
|
+
} else {
|
|
285
|
+
successMessage = __('The posts were permanently deleted.');
|
|
286
|
+
}
|
|
287
|
+
createSuccessNotice(successMessage, {
|
|
288
|
+
type: 'snackbar',
|
|
289
|
+
id: 'permanently-delete-post-action'
|
|
290
|
+
});
|
|
291
|
+
} else {
|
|
292
|
+
// If there was at lease one failure.
|
|
293
|
+
let errorMessage;
|
|
294
|
+
// If we were trying to permanently delete a single post.
|
|
295
|
+
if (promiseResult.length === 1) {
|
|
296
|
+
if (promiseResult[0].reason?.message) {
|
|
297
|
+
errorMessage = promiseResult[0].reason.message;
|
|
291
298
|
} else {
|
|
292
|
-
|
|
293
|
-
}
|
|
294
|
-
createSuccessNotice(successMessage, {
|
|
295
|
-
type: 'snackbar',
|
|
296
|
-
id: 'permanently-delete-post-action'
|
|
297
|
-
});
|
|
298
|
-
if (onActionPerformed) {
|
|
299
|
-
onActionPerformed(posts);
|
|
299
|
+
errorMessage = __('An error occurred while permanently deleting the post.');
|
|
300
300
|
}
|
|
301
|
+
// If we were trying to permanently delete multiple posts
|
|
301
302
|
} else {
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
errorMessage = __('An error occurred while permanently deleting the post.');
|
|
303
|
+
const errorMessages = new Set();
|
|
304
|
+
const failedPromises = promiseResult.filter(({
|
|
305
|
+
status
|
|
306
|
+
}) => status === 'rejected');
|
|
307
|
+
for (const failedPromise of failedPromises) {
|
|
308
|
+
if (failedPromise.reason?.message) {
|
|
309
|
+
errorMessages.add(failedPromise.reason.message);
|
|
310
310
|
}
|
|
311
|
-
|
|
311
|
+
}
|
|
312
|
+
if (errorMessages.size === 0) {
|
|
313
|
+
errorMessage = __('An error occurred while permanently deleting the posts.');
|
|
314
|
+
} else if (errorMessages.size === 1) {
|
|
315
|
+
errorMessage = sprintf( /* translators: %s: an error message */
|
|
316
|
+
__('An error occurred while permanently deleting the posts: %s'), [...errorMessages][0]);
|
|
312
317
|
} else {
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
status
|
|
316
|
-
}) => status === 'rejected');
|
|
317
|
-
for (const failedPromise of failedPromises) {
|
|
318
|
-
if (failedPromise.reason?.message) {
|
|
319
|
-
errorMessages.add(failedPromise.reason.message);
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
if (errorMessages.size === 0) {
|
|
323
|
-
errorMessage = __('An error occurred while permanently deleting the posts.');
|
|
324
|
-
} else if (errorMessages.size === 1) {
|
|
325
|
-
errorMessage = sprintf( /* translators: %s: an error message */
|
|
326
|
-
__('An error occurred while permanently deleting the posts: %s'), [...errorMessages][0]);
|
|
327
|
-
} else {
|
|
328
|
-
errorMessage = sprintf( /* translators: %s: a list of comma separated error messages */
|
|
329
|
-
__('Some errors occurred while permanently deleting the posts: %s'), [...errorMessages].join(','));
|
|
330
|
-
}
|
|
318
|
+
errorMessage = sprintf( /* translators: %s: a list of comma separated error messages */
|
|
319
|
+
__('Some errors occurred while permanently deleting the posts: %s'), [...errorMessages].join(','));
|
|
331
320
|
}
|
|
332
|
-
createErrorNotice(errorMessage, {
|
|
333
|
-
type: 'snackbar'
|
|
334
|
-
});
|
|
335
321
|
}
|
|
322
|
+
createErrorNotice(errorMessage, {
|
|
323
|
+
type: 'snackbar'
|
|
324
|
+
});
|
|
336
325
|
}
|
|
337
|
-
}
|
|
326
|
+
}
|
|
327
|
+
};
|
|
328
|
+
function usePermanentlyDeletePostAction(resource) {
|
|
338
329
|
return useCanUserEligibilityCheckPostType('delete', resource, permanentlyDeletePostAction);
|
|
339
330
|
}
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
331
|
+
const restorePostAction = {
|
|
332
|
+
id: 'restore',
|
|
333
|
+
label: __('Restore'),
|
|
334
|
+
isPrimary: true,
|
|
335
|
+
icon: backup,
|
|
336
|
+
supportsBulk: true,
|
|
337
|
+
isEligible({
|
|
338
|
+
status
|
|
339
|
+
}) {
|
|
340
|
+
return status === 'trash';
|
|
341
|
+
},
|
|
342
|
+
async callback(posts, {
|
|
343
|
+
registry,
|
|
344
|
+
onActionPerformed
|
|
345
|
+
}) {
|
|
346
|
+
const {
|
|
347
|
+
createSuccessNotice,
|
|
348
|
+
createErrorNotice
|
|
349
|
+
} = registry.dispatch(noticesStore);
|
|
350
|
+
const {
|
|
351
|
+
editEntityRecord,
|
|
352
|
+
saveEditedEntityRecord
|
|
353
|
+
} = registry.dispatch(coreStore);
|
|
354
|
+
await Promise.allSettled(posts.map(post => {
|
|
355
|
+
return editEntityRecord('postType', post.type, post.id, {
|
|
356
|
+
status: 'draft'
|
|
357
|
+
});
|
|
358
|
+
}));
|
|
359
|
+
const promiseResult = await Promise.allSettled(posts.map(post => {
|
|
360
|
+
return saveEditedEntityRecord('postType', post.type, post.id, {
|
|
361
|
+
throwOnError: true
|
|
362
|
+
});
|
|
363
|
+
}));
|
|
364
|
+
if (promiseResult.every(({
|
|
356
365
|
status
|
|
357
|
-
}) {
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
366
|
+
}) => status === 'fulfilled')) {
|
|
367
|
+
let successMessage;
|
|
368
|
+
if (posts.length === 1) {
|
|
369
|
+
successMessage = sprintf( /* translators: The number of posts. */
|
|
370
|
+
__('"%s" has been restored.'), getItemTitle(posts[0]));
|
|
371
|
+
} else if (posts[0].type === 'page') {
|
|
372
|
+
successMessage = sprintf( /* translators: The number of posts. */
|
|
373
|
+
__('%d pages have been restored.'), posts.length);
|
|
374
|
+
} else {
|
|
375
|
+
successMessage = sprintf( /* translators: The number of posts. */
|
|
376
|
+
__('%d posts have been restored.'), posts.length);
|
|
377
|
+
}
|
|
378
|
+
createSuccessNotice(successMessage, {
|
|
379
|
+
type: 'snackbar',
|
|
380
|
+
id: 'restore-post-action'
|
|
381
|
+
});
|
|
382
|
+
if (onActionPerformed) {
|
|
383
|
+
onActionPerformed(posts);
|
|
384
|
+
}
|
|
385
|
+
} else {
|
|
386
|
+
// If there was at lease one failure.
|
|
387
|
+
let errorMessage;
|
|
388
|
+
// If we were trying to move a single post to the trash.
|
|
389
|
+
if (promiseResult.length === 1) {
|
|
390
|
+
if (promiseResult[0].reason?.message) {
|
|
391
|
+
errorMessage = promiseResult[0].reason.message;
|
|
381
392
|
} else {
|
|
382
|
-
|
|
383
|
-
__('%d posts have been restored.'), posts.length);
|
|
384
|
-
}
|
|
385
|
-
createSuccessNotice(successMessage, {
|
|
386
|
-
type: 'snackbar',
|
|
387
|
-
id: 'restore-post-action'
|
|
388
|
-
});
|
|
389
|
-
if (onActionPerformed) {
|
|
390
|
-
onActionPerformed(posts);
|
|
393
|
+
errorMessage = __('An error occurred while restoring the post.');
|
|
391
394
|
}
|
|
395
|
+
// If we were trying to move multiple posts to the trash
|
|
392
396
|
} else {
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
errorMessage = __('An error occurred while restoring the post.');
|
|
397
|
+
const errorMessages = new Set();
|
|
398
|
+
const failedPromises = promiseResult.filter(({
|
|
399
|
+
status
|
|
400
|
+
}) => status === 'rejected');
|
|
401
|
+
for (const failedPromise of failedPromises) {
|
|
402
|
+
if (failedPromise.reason?.message) {
|
|
403
|
+
errorMessages.add(failedPromise.reason.message);
|
|
401
404
|
}
|
|
402
|
-
|
|
405
|
+
}
|
|
406
|
+
if (errorMessages.size === 0) {
|
|
407
|
+
errorMessage = __('An error occurred while restoring the posts.');
|
|
408
|
+
} else if (errorMessages.size === 1) {
|
|
409
|
+
errorMessage = sprintf( /* translators: %s: an error message */
|
|
410
|
+
__('An error occurred while restoring the posts: %s'), [...errorMessages][0]);
|
|
403
411
|
} else {
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
status
|
|
407
|
-
}) => status === 'rejected');
|
|
408
|
-
for (const failedPromise of failedPromises) {
|
|
409
|
-
if (failedPromise.reason?.message) {
|
|
410
|
-
errorMessages.add(failedPromise.reason.message);
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
if (errorMessages.size === 0) {
|
|
414
|
-
errorMessage = __('An error occurred while restoring the posts.');
|
|
415
|
-
} else if (errorMessages.size === 1) {
|
|
416
|
-
errorMessage = sprintf( /* translators: %s: an error message */
|
|
417
|
-
__('An error occurred while restoring the posts: %s'), [...errorMessages][0]);
|
|
418
|
-
} else {
|
|
419
|
-
errorMessage = sprintf( /* translators: %s: a list of comma separated error messages */
|
|
420
|
-
__('Some errors occurred while restoring the posts: %s'), [...errorMessages].join(','));
|
|
421
|
-
}
|
|
412
|
+
errorMessage = sprintf( /* translators: %s: a list of comma separated error messages */
|
|
413
|
+
__('Some errors occurred while restoring the posts: %s'), [...errorMessages].join(','));
|
|
422
414
|
}
|
|
423
|
-
createErrorNotice(errorMessage, {
|
|
424
|
-
type: 'snackbar'
|
|
425
|
-
});
|
|
426
415
|
}
|
|
416
|
+
createErrorNotice(errorMessage, {
|
|
417
|
+
type: 'snackbar'
|
|
418
|
+
});
|
|
427
419
|
}
|
|
428
|
-
}
|
|
420
|
+
}
|
|
421
|
+
};
|
|
422
|
+
function useRestorePostAction(resource) {
|
|
429
423
|
return useCanUserEligibilityCheckPostType('update', resource, restorePostAction);
|
|
430
424
|
}
|
|
431
425
|
const viewPostAction = {
|
|
@@ -436,7 +430,9 @@ const viewPostAction = {
|
|
|
436
430
|
isEligible(post) {
|
|
437
431
|
return post.status !== 'trash';
|
|
438
432
|
},
|
|
439
|
-
callback(posts,
|
|
433
|
+
callback(posts, {
|
|
434
|
+
onActionPerformed
|
|
435
|
+
}) {
|
|
440
436
|
const post = posts[0];
|
|
441
437
|
window.open(post.link, '_blank');
|
|
442
438
|
if (onActionPerformed) {
|
|
@@ -462,7 +458,9 @@ const postRevisionsAction = {
|
|
|
462
458
|
const revisionsCount = (_post$_links$version = post?._links?.['version-history']?.[0]?.count) !== null && _post$_links$version !== void 0 ? _post$_links$version : 0;
|
|
463
459
|
return lastRevisionId && revisionsCount > 1;
|
|
464
460
|
},
|
|
465
|
-
callback(posts,
|
|
461
|
+
callback(posts, {
|
|
462
|
+
onActionPerformed
|
|
463
|
+
}) {
|
|
466
464
|
const post = posts[0];
|
|
467
465
|
const href = addQueryArgs('revision.php', {
|
|
468
466
|
revision: post?._links?.['predecessor-version']?.[0]?.id
|
|
@@ -572,42 +570,52 @@ const renamePostAction = {
|
|
|
572
570
|
function useRenamePostAction(resource) {
|
|
573
571
|
return useCanUserEligibilityCheckPostType('update', resource, renamePostAction);
|
|
574
572
|
}
|
|
575
|
-
const
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
status
|
|
580
|
-
}) {
|
|
581
|
-
return status !== 'trash';
|
|
582
|
-
},
|
|
583
|
-
RenderModal: ({
|
|
584
|
-
items,
|
|
585
|
-
closeModal,
|
|
586
|
-
onActionPerformed
|
|
587
|
-
}) => {
|
|
588
|
-
const [item] = items;
|
|
589
|
-
const [isCreatingPage, setIsCreatingPage] = useState(false);
|
|
590
|
-
const [title, setTitle] = useState(sprintf( /* translators: %s: Existing item title */
|
|
591
|
-
__('%s (Copy)'), getItemTitle(item)));
|
|
592
|
-
const {
|
|
593
|
-
saveEntityRecord
|
|
594
|
-
} = useDispatch(coreStore);
|
|
573
|
+
const useDuplicatePostAction = postType => {
|
|
574
|
+
const {
|
|
575
|
+
userCanCreatePost
|
|
576
|
+
} = useSelect(select => {
|
|
595
577
|
const {
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
} =
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
578
|
+
getPostType,
|
|
579
|
+
canUser
|
|
580
|
+
} = select(coreStore);
|
|
581
|
+
const resource = getPostType(postType)?.rest_base || '';
|
|
582
|
+
return {
|
|
583
|
+
userCanCreatePost: canUser('create', resource)
|
|
584
|
+
};
|
|
585
|
+
}, [postType]);
|
|
586
|
+
return useMemo(() => userCanCreatePost && {
|
|
587
|
+
id: 'duplicate-post',
|
|
588
|
+
label: _x('Duplicate', 'action label'),
|
|
589
|
+
isEligible({
|
|
590
|
+
status
|
|
591
|
+
}) {
|
|
592
|
+
return status !== 'trash';
|
|
593
|
+
},
|
|
594
|
+
RenderModal: ({
|
|
595
|
+
items,
|
|
596
|
+
closeModal,
|
|
597
|
+
onActionPerformed
|
|
598
|
+
}) => {
|
|
599
|
+
const [item] = items;
|
|
600
|
+
const [isCreatingPage, setIsCreatingPage] = useState(false);
|
|
601
|
+
const [title, setTitle] = useState(sprintf( /* translators: %s: Existing item title */
|
|
602
|
+
__('%s (Copy)'), getItemTitle(item)));
|
|
603
|
+
const {
|
|
604
|
+
saveEntityRecord
|
|
605
|
+
} = useDispatch(coreStore);
|
|
606
|
+
const {
|
|
607
|
+
createSuccessNotice,
|
|
608
|
+
createErrorNotice
|
|
609
|
+
} = useDispatch(noticesStore);
|
|
610
|
+
async function createPage(event) {
|
|
611
|
+
event.preventDefault();
|
|
612
|
+
if (isCreatingPage) {
|
|
613
|
+
return;
|
|
614
|
+
}
|
|
615
|
+
const newItemOject = {
|
|
607
616
|
status: 'draft',
|
|
608
617
|
title,
|
|
609
618
|
slug: title || __('No title'),
|
|
610
|
-
author: item.author,
|
|
611
619
|
comment_status: item.comment_status,
|
|
612
620
|
content: typeof item.content === 'string' ? item.content : item.content.raw,
|
|
613
621
|
excerpt: item.excerpt.raw,
|
|
@@ -618,58 +626,69 @@ const duplicatePostAction = {
|
|
|
618
626
|
format: item.format,
|
|
619
627
|
featured_media: item.featured_media,
|
|
620
628
|
menu_order: item.menu_order,
|
|
621
|
-
ping_status: item.ping_status
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
});
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
type: 'snackbar'
|
|
629
|
+
ping_status: item.ping_status
|
|
630
|
+
};
|
|
631
|
+
const assignablePropertiesPrefix = 'wp:action-assign-';
|
|
632
|
+
// Get all the properties that the current user is able to assign normally author, categories, tags,
|
|
633
|
+
// and custom taxonomies.
|
|
634
|
+
const assignableProperties = Object.keys(item?._links || {}).filter(property => property.startsWith(assignablePropertiesPrefix)).map(property => property.slice(assignablePropertiesPrefix.length));
|
|
635
|
+
assignableProperties.forEach(property => {
|
|
636
|
+
if (item[property]) {
|
|
637
|
+
newItemOject[property] = item[property];
|
|
638
|
+
}
|
|
632
639
|
});
|
|
633
|
-
|
|
634
|
-
|
|
640
|
+
setIsCreatingPage(true);
|
|
641
|
+
try {
|
|
642
|
+
const newItem = await saveEntityRecord('postType', item.type, newItemOject, {
|
|
643
|
+
throwOnError: true
|
|
644
|
+
});
|
|
645
|
+
createSuccessNotice(sprintf(
|
|
646
|
+
// translators: %s: Title of the created template e.g: "Category".
|
|
647
|
+
__('"%s" successfully created.'), decodeEntities(newItem.title?.rendered || title)), {
|
|
648
|
+
id: 'duplicate-post-action',
|
|
649
|
+
type: 'snackbar'
|
|
650
|
+
});
|
|
651
|
+
if (onActionPerformed) {
|
|
652
|
+
onActionPerformed([newItem]);
|
|
653
|
+
}
|
|
654
|
+
} catch (error) {
|
|
655
|
+
const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : __('An error occurred while duplicating the page.');
|
|
656
|
+
createErrorNotice(errorMessage, {
|
|
657
|
+
type: 'snackbar'
|
|
658
|
+
});
|
|
659
|
+
} finally {
|
|
660
|
+
setIsCreatingPage(false);
|
|
661
|
+
closeModal();
|
|
635
662
|
}
|
|
636
|
-
} catch (error) {
|
|
637
|
-
const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : __('An error occurred while duplicating the page.');
|
|
638
|
-
createErrorNotice(errorMessage, {
|
|
639
|
-
type: 'snackbar'
|
|
640
|
-
});
|
|
641
|
-
} finally {
|
|
642
|
-
setIsCreatingPage(false);
|
|
643
|
-
closeModal();
|
|
644
663
|
}
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
664
|
+
return /*#__PURE__*/_jsx("form", {
|
|
665
|
+
onSubmit: createPage,
|
|
666
|
+
children: /*#__PURE__*/_jsxs(VStack, {
|
|
667
|
+
spacing: 3,
|
|
668
|
+
children: [/*#__PURE__*/_jsx(TextControl, {
|
|
669
|
+
label: __('Title'),
|
|
670
|
+
onChange: setTitle,
|
|
671
|
+
placeholder: __('No title'),
|
|
672
|
+
value: title
|
|
673
|
+
}), /*#__PURE__*/_jsxs(HStack, {
|
|
674
|
+
spacing: 2,
|
|
675
|
+
justify: "end",
|
|
676
|
+
children: [/*#__PURE__*/_jsx(Button, {
|
|
677
|
+
variant: "tertiary",
|
|
678
|
+
onClick: closeModal,
|
|
679
|
+
children: __('Cancel')
|
|
680
|
+
}), /*#__PURE__*/_jsx(Button, {
|
|
681
|
+
variant: "primary",
|
|
682
|
+
type: "submit",
|
|
683
|
+
isBusy: isCreatingPage,
|
|
684
|
+
"aria-disabled": isCreatingPage,
|
|
685
|
+
children: _x('Duplicate', 'action label')
|
|
686
|
+
})]
|
|
668
687
|
})]
|
|
669
|
-
})
|
|
670
|
-
})
|
|
671
|
-
}
|
|
672
|
-
}
|
|
688
|
+
})
|
|
689
|
+
});
|
|
690
|
+
}
|
|
691
|
+
}, [userCanCreatePost]);
|
|
673
692
|
};
|
|
674
693
|
const isTemplatePartRevertable = item => {
|
|
675
694
|
if (!item) {
|
|
@@ -690,7 +709,6 @@ const resetTemplateAction = {
|
|
|
690
709
|
RenderModal: ({
|
|
691
710
|
items,
|
|
692
711
|
closeModal,
|
|
693
|
-
onActionStart,
|
|
694
712
|
onActionPerformed
|
|
695
713
|
}) => {
|
|
696
714
|
const [isBusy, setIsBusy] = useState(false);
|
|
@@ -754,9 +772,6 @@ const resetTemplateAction = {
|
|
|
754
772
|
variant: "primary",
|
|
755
773
|
onClick: async () => {
|
|
756
774
|
setIsBusy(true);
|
|
757
|
-
if (onActionStart) {
|
|
758
|
-
onActionStart(items);
|
|
759
|
-
}
|
|
760
775
|
await onConfirm(items);
|
|
761
776
|
onActionPerformed?.(items);
|
|
762
777
|
setIsBusy(false);
|
|
@@ -832,25 +847,31 @@ export function usePostActions({
|
|
|
832
847
|
context
|
|
833
848
|
}) {
|
|
834
849
|
const {
|
|
850
|
+
defaultActions,
|
|
835
851
|
postTypeObject,
|
|
852
|
+
userCanCreatePostType,
|
|
836
853
|
resource,
|
|
837
|
-
cachedCanUserResolvers
|
|
838
|
-
userCanCreatePostType
|
|
854
|
+
cachedCanUserResolvers
|
|
839
855
|
} = useSelect(select => {
|
|
840
856
|
const {
|
|
841
857
|
getPostType,
|
|
842
|
-
|
|
843
|
-
|
|
858
|
+
canUser,
|
|
859
|
+
getCachedResolvers
|
|
844
860
|
} = select(coreStore);
|
|
861
|
+
const {
|
|
862
|
+
getEntityActions
|
|
863
|
+
} = unlock(select(editorStore));
|
|
845
864
|
const _postTypeObject = getPostType(postType);
|
|
846
865
|
const _resource = _postTypeObject?.rest_base || '';
|
|
847
866
|
return {
|
|
848
867
|
postTypeObject: _postTypeObject,
|
|
868
|
+
defaultActions: getEntityActions('postType', postType),
|
|
869
|
+
userCanCreatePostType: canUser('create', _resource),
|
|
849
870
|
resource: _resource,
|
|
850
|
-
cachedCanUserResolvers: getCachedResolvers()?.canUser
|
|
851
|
-
userCanCreatePostType: canUser('create', _resource)
|
|
871
|
+
cachedCanUserResolvers: getCachedResolvers()?.canUser
|
|
852
872
|
};
|
|
853
873
|
}, [postType]);
|
|
874
|
+
const duplicatePostAction = useDuplicatePostAction(postType);
|
|
854
875
|
const trashPostActionForPostType = useTrashPostAction(resource);
|
|
855
876
|
const permanentlyDeletePostActionForPostType = usePermanentlyDeletePostAction(resource);
|
|
856
877
|
const renamePostActionForPostType = useRenamePostAction(resource);
|
|
@@ -864,7 +885,7 @@ export function usePostActions({
|
|
|
864
885
|
if (!isLoaded) {
|
|
865
886
|
return [];
|
|
866
887
|
}
|
|
867
|
-
let actions = [postTypeObject?.viewable && viewPostAction, supportsRevisions && postRevisionsAction, globalThis.IS_GUTENBERG_PLUGIN ? !isTemplateOrTemplatePart && !isPattern && duplicatePostAction : false, isTemplateOrTemplatePart && userCanCreatePostType && duplicateTemplatePartAction, isPattern && userCanCreatePostType && duplicatePatternAction, supportsTitle && renamePostActionForPostType, isPattern && exportPatternAsJSONAction, isTemplateOrTemplatePart ? resetTemplateAction : restorePostActionForPostType, isTemplateOrTemplatePart || isPattern ? deletePostAction : trashPostActionForPostType, !isTemplateOrTemplatePart && permanentlyDeletePostActionForPostType].filter(Boolean);
|
|
888
|
+
let actions = [postTypeObject?.viewable && viewPostAction, supportsRevisions && postRevisionsAction, globalThis.IS_GUTENBERG_PLUGIN ? !isTemplateOrTemplatePart && !isPattern && duplicatePostAction : false, isTemplateOrTemplatePart && userCanCreatePostType && duplicateTemplatePartAction, isPattern && userCanCreatePostType && duplicatePatternAction, supportsTitle && renamePostActionForPostType, isPattern && exportPatternAsJSONAction, isTemplateOrTemplatePart ? resetTemplateAction : restorePostActionForPostType, isTemplateOrTemplatePart || isPattern ? deletePostAction : trashPostActionForPostType, !isTemplateOrTemplatePart && permanentlyDeletePostActionForPostType, ...defaultActions].filter(Boolean);
|
|
868
889
|
// Filter actions based on provided context. If not provided
|
|
869
890
|
// all actions are returned. We'll have a single entry for getting the actions
|
|
870
891
|
// and the consumer should provide the context to filter the actions, if needed.
|
|
@@ -883,7 +904,9 @@ export function usePostActions({
|
|
|
883
904
|
const existingCallback = actions[i].callback;
|
|
884
905
|
actions[i] = {
|
|
885
906
|
...actions[i],
|
|
886
|
-
callback: (items,
|
|
907
|
+
callback: (items, {
|
|
908
|
+
_onActionPerformed
|
|
909
|
+
}) => {
|
|
887
910
|
existingCallback(items, _items => {
|
|
888
911
|
if (_onActionPerformed) {
|
|
889
912
|
_onActionPerformed(_items);
|
|
@@ -916,6 +939,6 @@ export function usePostActions({
|
|
|
916
939
|
// We are making this use memo depend on cachedCanUserResolvers as a way to make the component using this hook re-render
|
|
917
940
|
// when user capabilities are resolved. This makes sure the isEligible functions of actions dependent on capabilities are re-evaluated.
|
|
918
941
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
919
|
-
}, [isTemplateOrTemplatePart, isPattern, postTypeObject?.viewable,
|
|
942
|
+
}, [defaultActions, userCanCreatePostType, isTemplateOrTemplatePart, isPattern, postTypeObject?.viewable, duplicatePostAction, trashPostActionForPostType, restorePostActionForPostType, renamePostActionForPostType, permanentlyDeletePostActionForPostType, onActionPerformed, isLoaded, supportsRevisions, supportsTitle, context, cachedCanUserResolvers]);
|
|
920
943
|
}
|
|
921
944
|
//# sourceMappingURL=actions.js.map
|