@wordpress/editor 14.3.0 → 14.5.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.
Files changed (537) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +2 -1
  3. package/build/bindings/api.js +65 -0
  4. package/build/bindings/api.js.map +1 -0
  5. package/build/bindings/pattern-overrides.js +23 -13
  6. package/build/bindings/pattern-overrides.js.map +1 -1
  7. package/build/bindings/post-meta.js +35 -12
  8. package/build/bindings/post-meta.js.map +1 -1
  9. package/build/components/block-settings-menu/content-only-settings-menu.js +4 -1
  10. package/build/components/block-settings-menu/content-only-settings-menu.js.map +1 -1
  11. package/build/components/blog-title/index.js +7 -3
  12. package/build/components/blog-title/index.js.map +1 -1
  13. package/build/components/collapsible-block-toolbar/index.js +2 -3
  14. package/build/components/collapsible-block-toolbar/index.js.map +1 -1
  15. package/build/components/commands/index.js +8 -2
  16. package/build/components/commands/index.js.map +1 -1
  17. package/build/components/document-bar/index.js +1 -1
  18. package/build/components/document-bar/index.js.map +1 -1
  19. package/build/components/global-styles-provider/index.js +15 -3
  20. package/build/components/global-styles-provider/index.js.map +1 -1
  21. package/build/components/header/back-button.js +7 -8
  22. package/build/components/header/back-button.js.map +1 -1
  23. package/build/components/header/index.js +21 -20
  24. package/build/components/header/index.js.map +1 -1
  25. package/build/components/page-attributes/order.js +1 -67
  26. package/build/components/page-attributes/order.js.map +1 -1
  27. package/build/components/page-attributes/panel.js +1 -4
  28. package/build/components/page-attributes/panel.js.map +1 -1
  29. package/build/components/page-attributes/parent.js +6 -2
  30. package/build/components/page-attributes/parent.js.map +1 -1
  31. package/build/components/post-actions/actions.js +131 -344
  32. package/build/components/post-actions/actions.js.map +1 -1
  33. package/build/components/post-actions/index.js +16 -6
  34. package/build/components/post-actions/index.js.map +1 -1
  35. package/build/components/post-author/hook.js +10 -3
  36. package/build/components/post-author/hook.js.map +1 -1
  37. package/build/components/post-author/panel.js +2 -1
  38. package/build/components/post-author/panel.js.map +1 -1
  39. package/build/components/post-card-panel/index.js +9 -3
  40. package/build/components/post-card-panel/index.js.map +1 -1
  41. package/build/components/post-comments/index.js +6 -20
  42. package/build/components/post-comments/index.js.map +1 -1
  43. package/build/components/post-content-information/index.js +7 -1
  44. package/build/components/post-content-information/index.js.map +1 -1
  45. package/build/components/post-discussion/panel.js +2 -2
  46. package/build/components/post-discussion/panel.js.map +1 -1
  47. package/build/components/post-excerpt/panel.js +1 -1
  48. package/build/components/post-excerpt/panel.js.map +1 -1
  49. package/build/components/post-featured-image/index.js +3 -1
  50. package/build/components/post-featured-image/index.js.map +1 -1
  51. package/build/components/post-last-revision/index.js +2 -1
  52. package/build/components/post-last-revision/index.js.map +1 -1
  53. package/build/components/post-publish-button/index.js +4 -11
  54. package/build/components/post-publish-button/index.js.map +1 -1
  55. package/build/components/post-publish-panel/maybe-category-panel.js +4 -1
  56. package/build/components/post-publish-panel/maybe-category-panel.js.map +1 -1
  57. package/build/components/post-publish-panel/maybe-tags-panel.js +2 -1
  58. package/build/components/post-publish-panel/maybe-tags-panel.js.map +1 -1
  59. package/build/components/post-status/index.js +47 -51
  60. package/build/components/post-status/index.js.map +1 -1
  61. package/build/components/post-taxonomies/flat-term-selector.js +17 -6
  62. package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
  63. package/build/components/post-taxonomies/index.js +7 -1
  64. package/build/components/post-taxonomies/index.js.map +1 -1
  65. package/build/components/post-template/block-theme.js +4 -4
  66. package/build/components/post-template/block-theme.js.map +1 -1
  67. package/build/components/post-template/classic-theme.js +8 -2
  68. package/build/components/post-template/classic-theme.js.map +1 -1
  69. package/build/components/post-template/create-new-template-modal.js +3 -0
  70. package/build/components/post-template/create-new-template-modal.js.map +1 -1
  71. package/build/components/post-template/create-new-template.js +4 -1
  72. package/build/components/post-template/create-new-template.js.map +1 -1
  73. package/build/components/post-template/hooks.js +5 -1
  74. package/build/components/post-template/hooks.js.map +1 -1
  75. package/build/components/post-template/panel.js +8 -2
  76. package/build/components/post-template/panel.js.map +1 -1
  77. package/build/components/post-trash/check.js +6 -4
  78. package/build/components/post-trash/check.js.map +1 -1
  79. package/build/components/post-url/panel.js +9 -4
  80. package/build/components/post-url/panel.js.map +1 -1
  81. package/build/components/posts-per-page/index.js +6 -2
  82. package/build/components/posts-per-page/index.js.map +1 -1
  83. package/build/components/preview-dropdown/index.js +82 -17
  84. package/build/components/preview-dropdown/index.js.map +1 -1
  85. package/build/components/provider/disable-non-page-content-blocks.js +14 -18
  86. package/build/components/provider/disable-non-page-content-blocks.js.map +1 -1
  87. package/build/components/provider/use-block-editor-settings.js +15 -6
  88. package/build/components/provider/use-block-editor-settings.js.map +1 -1
  89. package/build/components/save-publish-panels/index.js +1 -2
  90. package/build/components/save-publish-panels/index.js.map +1 -1
  91. package/build/components/sidebar/index.js +3 -9
  92. package/build/components/sidebar/index.js.map +1 -1
  93. package/build/components/site-discussion/index.js +12 -22
  94. package/build/components/site-discussion/index.js.map +1 -1
  95. package/build/components/template-content-panel/index.js +17 -15
  96. package/build/components/template-content-panel/index.js.map +1 -1
  97. package/build/components/visual-editor/edit-template-blocks-notification.js +4 -4
  98. package/build/components/visual-editor/edit-template-blocks-notification.js.map +1 -1
  99. package/build/components/visual-editor/index.js +7 -3
  100. package/build/components/visual-editor/index.js.map +1 -1
  101. package/build/{hooks → components/visual-editor}/use-select-nearest-editable-block.js +1 -1
  102. package/build/components/visual-editor/use-select-nearest-editable-block.js.map +1 -0
  103. package/build/dataviews/actions/delete-post.js +2 -0
  104. package/build/dataviews/actions/delete-post.js.map +1 -1
  105. package/build/dataviews/actions/export-pattern.native.js +9 -0
  106. package/build/dataviews/actions/export-pattern.native.js.map +1 -0
  107. package/build/dataviews/actions/permanently-delete-post.js +107 -0
  108. package/build/dataviews/actions/permanently-delete-post.js.map +1 -0
  109. package/build/dataviews/actions/restore-post.js +112 -0
  110. package/build/dataviews/actions/restore-post.js.map +1 -0
  111. package/build/dataviews/actions/trash-post.js +142 -0
  112. package/build/dataviews/actions/trash-post.js.map +1 -0
  113. package/build/dataviews/store/private-actions.js +45 -0
  114. package/build/dataviews/store/private-actions.js.map +1 -1
  115. package/build/dataviews/store/private-selectors.js +10 -10
  116. package/build/dataviews/store/private-selectors.js.map +1 -1
  117. package/build/dataviews/store/reducer.js +15 -1
  118. package/build/dataviews/store/reducer.js.map +1 -1
  119. package/build/dataviews/types.js.map +1 -1
  120. package/build/hooks/pattern-overrides.js +1 -1
  121. package/build/hooks/pattern-overrides.js.map +1 -1
  122. package/build/index.js +0 -1
  123. package/build/index.js.map +1 -1
  124. package/build/private-apis.js +3 -2
  125. package/build/private-apis.js.map +1 -1
  126. package/build/store/actions.js +16 -2
  127. package/build/store/actions.js.map +1 -1
  128. package/build/store/private-actions.js +8 -1
  129. package/build/store/private-actions.js.map +1 -1
  130. package/build/store/private-selectors.js +33 -2
  131. package/build/store/private-selectors.js.map +1 -1
  132. package/build/utils/media-upload/index.js +35 -2
  133. package/build/utils/media-upload/index.js.map +1 -1
  134. package/build-module/bindings/api.js +57 -0
  135. package/build-module/bindings/api.js.map +1 -0
  136. package/build-module/bindings/pattern-overrides.js +23 -13
  137. package/build-module/bindings/pattern-overrides.js.map +1 -1
  138. package/build-module/bindings/post-meta.js +35 -12
  139. package/build-module/bindings/post-meta.js.map +1 -1
  140. package/build-module/components/block-settings-menu/content-only-settings-menu.js +4 -1
  141. package/build-module/components/block-settings-menu/content-only-settings-menu.js.map +1 -1
  142. package/build-module/components/blog-title/index.js +7 -3
  143. package/build-module/components/blog-title/index.js.map +1 -1
  144. package/build-module/components/collapsible-block-toolbar/index.js +1 -2
  145. package/build-module/components/collapsible-block-toolbar/index.js.map +1 -1
  146. package/build-module/components/commands/index.js +8 -2
  147. package/build-module/components/commands/index.js.map +1 -1
  148. package/build-module/components/document-bar/index.js +1 -1
  149. package/build-module/components/document-bar/index.js.map +1 -1
  150. package/build-module/components/global-styles-provider/index.js +15 -3
  151. package/build-module/components/global-styles-provider/index.js.map +1 -1
  152. package/build-module/components/header/back-button.js +5 -7
  153. package/build-module/components/header/back-button.js.map +1 -1
  154. package/build-module/components/header/index.js +21 -22
  155. package/build-module/components/header/index.js.map +1 -1
  156. package/build-module/components/page-attributes/order.js +4 -70
  157. package/build-module/components/page-attributes/order.js.map +1 -1
  158. package/build-module/components/page-attributes/panel.js +1 -6
  159. package/build-module/components/page-attributes/panel.js.map +1 -1
  160. package/build-module/components/page-attributes/parent.js +7 -3
  161. package/build-module/components/page-attributes/parent.js.map +1 -1
  162. package/build-module/components/post-actions/actions.js +137 -350
  163. package/build-module/components/post-actions/actions.js.map +1 -1
  164. package/build-module/components/post-actions/index.js +16 -6
  165. package/build-module/components/post-actions/index.js.map +1 -1
  166. package/build-module/components/post-author/hook.js +10 -3
  167. package/build-module/components/post-author/hook.js.map +1 -1
  168. package/build-module/components/post-author/panel.js +2 -1
  169. package/build-module/components/post-author/panel.js.map +1 -1
  170. package/build-module/components/post-card-panel/index.js +9 -3
  171. package/build-module/components/post-card-panel/index.js.map +1 -1
  172. package/build-module/components/post-comments/index.js +8 -24
  173. package/build-module/components/post-comments/index.js.map +1 -1
  174. package/build-module/components/post-content-information/index.js +7 -1
  175. package/build-module/components/post-content-information/index.js.map +1 -1
  176. package/build-module/components/post-discussion/panel.js +3 -3
  177. package/build-module/components/post-discussion/panel.js.map +1 -1
  178. package/build-module/components/post-excerpt/panel.js +1 -1
  179. package/build-module/components/post-excerpt/panel.js.map +1 -1
  180. package/build-module/components/post-featured-image/index.js +3 -1
  181. package/build-module/components/post-featured-image/index.js.map +1 -1
  182. package/build-module/components/post-last-revision/index.js +2 -1
  183. package/build-module/components/post-last-revision/index.js.map +1 -1
  184. package/build-module/components/post-publish-button/index.js +4 -11
  185. package/build-module/components/post-publish-button/index.js.map +1 -1
  186. package/build-module/components/post-publish-panel/maybe-category-panel.js +4 -1
  187. package/build-module/components/post-publish-panel/maybe-category-panel.js.map +1 -1
  188. package/build-module/components/post-publish-panel/maybe-tags-panel.js +2 -1
  189. package/build-module/components/post-publish-panel/maybe-tags-panel.js.map +1 -1
  190. package/build-module/components/post-status/index.js +49 -53
  191. package/build-module/components/post-status/index.js.map +1 -1
  192. package/build-module/components/post-taxonomies/flat-term-selector.js +17 -6
  193. package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
  194. package/build-module/components/post-taxonomies/index.js +7 -1
  195. package/build-module/components/post-taxonomies/index.js.map +1 -1
  196. package/build-module/components/post-template/block-theme.js +4 -4
  197. package/build-module/components/post-template/block-theme.js.map +1 -1
  198. package/build-module/components/post-template/classic-theme.js +8 -2
  199. package/build-module/components/post-template/classic-theme.js.map +1 -1
  200. package/build-module/components/post-template/create-new-template-modal.js +3 -0
  201. package/build-module/components/post-template/create-new-template-modal.js.map +1 -1
  202. package/build-module/components/post-template/create-new-template.js +4 -1
  203. package/build-module/components/post-template/create-new-template.js.map +1 -1
  204. package/build-module/components/post-template/hooks.js +5 -1
  205. package/build-module/components/post-template/hooks.js.map +1 -1
  206. package/build-module/components/post-template/panel.js +8 -2
  207. package/build-module/components/post-template/panel.js.map +1 -1
  208. package/build-module/components/post-trash/check.js +6 -4
  209. package/build-module/components/post-trash/check.js.map +1 -1
  210. package/build-module/components/post-url/panel.js +10 -7
  211. package/build-module/components/post-url/panel.js.map +1 -1
  212. package/build-module/components/posts-per-page/index.js +6 -2
  213. package/build-module/components/posts-per-page/index.js.map +1 -1
  214. package/build-module/components/preview-dropdown/index.js +84 -19
  215. package/build-module/components/preview-dropdown/index.js.map +1 -1
  216. package/build-module/components/provider/disable-non-page-content-blocks.js +15 -19
  217. package/build-module/components/provider/disable-non-page-content-blocks.js.map +1 -1
  218. package/build-module/components/provider/use-block-editor-settings.js +15 -6
  219. package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
  220. package/build-module/components/save-publish-panels/index.js +1 -2
  221. package/build-module/components/save-publish-panels/index.js.map +1 -1
  222. package/build-module/components/sidebar/index.js +3 -9
  223. package/build-module/components/sidebar/index.js.map +1 -1
  224. package/build-module/components/site-discussion/index.js +14 -24
  225. package/build-module/components/site-discussion/index.js.map +1 -1
  226. package/build-module/components/template-content-panel/index.js +18 -16
  227. package/build-module/components/template-content-panel/index.js.map +1 -1
  228. package/build-module/components/visual-editor/edit-template-blocks-notification.js +4 -4
  229. package/build-module/components/visual-editor/edit-template-blocks-notification.js.map +1 -1
  230. package/build-module/components/visual-editor/index.js +7 -3
  231. package/build-module/components/visual-editor/index.js.map +1 -1
  232. package/build-module/{hooks → components/visual-editor}/use-select-nearest-editable-block.js +1 -1
  233. package/build-module/components/visual-editor/use-select-nearest-editable-block.js.map +1 -0
  234. package/build-module/dataviews/actions/delete-post.js +2 -0
  235. package/build-module/dataviews/actions/delete-post.js.map +1 -1
  236. package/build-module/dataviews/actions/export-pattern.native.js +3 -0
  237. package/build-module/dataviews/actions/export-pattern.native.js.map +1 -0
  238. package/build-module/dataviews/actions/permanently-delete-post.js +99 -0
  239. package/build-module/dataviews/actions/permanently-delete-post.js.map +1 -0
  240. package/build-module/dataviews/actions/restore-post.js +104 -0
  241. package/build-module/dataviews/actions/restore-post.js.map +1 -0
  242. package/build-module/dataviews/actions/trash-post.js +135 -0
  243. package/build-module/dataviews/actions/trash-post.js.map +1 -0
  244. package/build-module/dataviews/store/private-actions.js +40 -0
  245. package/build-module/dataviews/store/private-actions.js.map +1 -1
  246. package/build-module/dataviews/store/private-selectors.js +8 -9
  247. package/build-module/dataviews/store/private-selectors.js.map +1 -1
  248. package/build-module/dataviews/store/reducer.js +15 -1
  249. package/build-module/dataviews/store/reducer.js.map +1 -1
  250. package/build-module/dataviews/types.js.map +1 -1
  251. package/build-module/hooks/pattern-overrides.js +1 -1
  252. package/build-module/hooks/pattern-overrides.js.map +1 -1
  253. package/build-module/index.js +0 -1
  254. package/build-module/index.js.map +1 -1
  255. package/build-module/private-apis.js +3 -2
  256. package/build-module/private-apis.js.map +1 -1
  257. package/build-module/store/actions.js +16 -2
  258. package/build-module/store/actions.js.map +1 -1
  259. package/build-module/store/private-actions.js +8 -1
  260. package/build-module/store/private-actions.js.map +1 -1
  261. package/build-module/store/private-selectors.js +32 -2
  262. package/build-module/store/private-selectors.js.map +1 -1
  263. package/build-module/utils/media-upload/index.js +36 -3
  264. package/build-module/utils/media-upload/index.js.map +1 -1
  265. package/build-style/style-rtl.css +97 -45
  266. package/build-style/style.css +97 -45
  267. package/build-types/bindings/api.d.ts +25 -0
  268. package/build-types/bindings/api.d.ts.map +1 -0
  269. package/build-types/bindings/pattern-overrides.d.ts +5 -6
  270. package/build-types/bindings/pattern-overrides.d.ts.map +1 -1
  271. package/build-types/bindings/post-meta.d.ts +11 -7
  272. package/build-types/bindings/post-meta.d.ts.map +1 -1
  273. package/build-types/components/autocompleters/user.d.ts +2 -2
  274. package/build-types/components/autocompleters/user.d.ts.map +1 -1
  275. package/build-types/components/block-settings-menu/plugin-block-settings-menu-item.d.ts.map +1 -1
  276. package/build-types/components/blog-title/index.d.ts.map +1 -1
  277. package/build-types/components/collapsible-block-toolbar/index.d.ts +1 -2
  278. package/build-types/components/collapsible-block-toolbar/index.d.ts.map +1 -1
  279. package/build-types/components/commands/index.d.ts.map +1 -1
  280. package/build-types/components/document-bar/index.d.ts.map +1 -1
  281. package/build-types/components/document-outline/check.d.ts.map +1 -1
  282. package/build-types/components/document-outline/index.d.ts.map +1 -1
  283. package/build-types/components/editor-history/redo.d.ts +1 -1
  284. package/build-types/components/editor-history/undo.d.ts +1 -1
  285. package/build-types/components/editor-notices/index.d.ts.map +1 -1
  286. package/build-types/components/editor-snackbars/index.d.ts.map +1 -1
  287. package/build-types/components/entities-saved-states/index.d.ts.map +1 -1
  288. package/build-types/components/global-styles-provider/index.d.ts.map +1 -1
  289. package/build-types/components/header/back-button.d.ts +1 -0
  290. package/build-types/components/header/back-button.d.ts.map +1 -1
  291. package/build-types/components/header/index.d.ts.map +1 -1
  292. package/build-types/components/local-autosave-monitor/index.d.ts.map +1 -1
  293. package/build-types/components/media-categories/index.d.ts.map +1 -1
  294. package/build-types/components/more-menu/tools-more-menu-group.d.ts.map +1 -1
  295. package/build-types/components/more-menu/view-more-menu-group.d.ts.map +1 -1
  296. package/build-types/components/page-attributes/check.d.ts.map +1 -1
  297. package/build-types/components/page-attributes/order.d.ts +1 -1
  298. package/build-types/components/page-attributes/order.d.ts.map +1 -1
  299. package/build-types/components/page-attributes/panel.d.ts.map +1 -1
  300. package/build-types/components/page-attributes/parent.d.ts.map +1 -1
  301. package/build-types/components/plugin-document-setting-panel/index.d.ts.map +1 -1
  302. package/build-types/components/plugin-post-publish-panel/index.d.ts.map +1 -1
  303. package/build-types/components/plugin-post-status-info/index.d.ts.map +1 -1
  304. package/build-types/components/plugin-pre-publish-panel/index.d.ts.map +1 -1
  305. package/build-types/components/plugin-sidebar/index.d.ts.map +1 -1
  306. package/build-types/components/plugin-sidebar-more-menu-item/index.d.ts.map +1 -1
  307. package/build-types/components/post-actions/actions.d.ts.map +1 -1
  308. package/build-types/components/post-actions/index.d.ts.map +1 -1
  309. package/build-types/components/post-author/check.d.ts.map +1 -1
  310. package/build-types/components/post-author/hook.d.ts +1 -1
  311. package/build-types/components/post-author/hook.d.ts.map +1 -1
  312. package/build-types/components/post-author/index.d.ts.map +1 -1
  313. package/build-types/components/post-author/panel.d.ts.map +1 -1
  314. package/build-types/components/post-card-panel/index.d.ts.map +1 -1
  315. package/build-types/components/post-comments/index.d.ts.map +1 -1
  316. package/build-types/components/post-content-information/index.d.ts.map +1 -1
  317. package/build-types/components/post-discussion/panel.d.ts.map +1 -1
  318. package/build-types/components/post-excerpt/check.d.ts.map +1 -1
  319. package/build-types/components/post-excerpt/index.d.ts.map +1 -1
  320. package/build-types/components/post-excerpt/panel.d.ts.map +1 -1
  321. package/build-types/components/post-excerpt/plugin.d.ts.map +1 -1
  322. package/build-types/components/post-featured-image/check.d.ts.map +1 -1
  323. package/build-types/components/post-featured-image/panel.d.ts.map +1 -1
  324. package/build-types/components/post-format/index.d.ts.map +1 -1
  325. package/build-types/components/post-format/panel.d.ts.map +1 -1
  326. package/build-types/components/post-last-revision/check.d.ts.map +1 -1
  327. package/build-types/components/post-last-revision/index.d.ts.map +1 -1
  328. package/build-types/components/post-last-revision/panel.d.ts.map +1 -1
  329. package/build-types/components/post-locked-modal/index.d.ts.map +1 -1
  330. package/build-types/components/post-pending-status/check.d.ts.map +1 -1
  331. package/build-types/components/post-pending-status/index.d.ts.map +1 -1
  332. package/build-types/components/post-preview-button/index.d.ts.map +1 -1
  333. package/build-types/components/post-publish-button/index.d.ts.map +1 -1
  334. package/build-types/components/post-publish-panel/maybe-category-panel.d.ts.map +1 -1
  335. package/build-types/components/post-saved-state/index.d.ts +1 -1
  336. package/build-types/components/post-saved-state/index.d.ts.map +1 -1
  337. package/build-types/components/post-schedule/check.d.ts.map +1 -1
  338. package/build-types/components/post-schedule/index.d.ts.map +1 -1
  339. package/build-types/components/post-schedule/label.d.ts.map +1 -1
  340. package/build-types/components/post-schedule/panel.d.ts.map +1 -1
  341. package/build-types/components/post-slug/check.d.ts.map +1 -1
  342. package/build-types/components/post-slug/index.d.ts.map +1 -1
  343. package/build-types/components/post-status/index.d.ts +2 -1
  344. package/build-types/components/post-status/index.d.ts.map +1 -1
  345. package/build-types/components/post-sticky/check.d.ts.map +1 -1
  346. package/build-types/components/post-sticky/index.d.ts.map +1 -1
  347. package/build-types/components/post-switch-to-draft-button/index.d.ts.map +1 -1
  348. package/build-types/components/post-sync-status/index.d.ts.map +1 -1
  349. package/build-types/components/post-taxonomies/check.d.ts.map +1 -1
  350. package/build-types/components/post-taxonomies/flat-term-selector.d.ts +9 -7
  351. package/build-types/components/post-taxonomies/flat-term-selector.d.ts.map +1 -1
  352. package/build-types/components/post-taxonomies/hierarchical-term-selector.d.ts +13 -11
  353. package/build-types/components/post-taxonomies/hierarchical-term-selector.d.ts.map +1 -1
  354. package/build-types/components/post-taxonomies/index.d.ts.map +1 -1
  355. package/build-types/components/post-template/block-theme.d.ts.map +1 -1
  356. package/build-types/components/post-template/classic-theme.d.ts.map +1 -1
  357. package/build-types/components/post-template/create-new-template-modal.d.ts.map +1 -1
  358. package/build-types/components/post-template/create-new-template.d.ts.map +1 -1
  359. package/build-types/components/post-template/hooks.d.ts.map +1 -1
  360. package/build-types/components/post-template/panel.d.ts.map +1 -1
  361. package/build-types/components/post-text-editor/index.d.ts.map +1 -1
  362. package/build-types/components/post-trash/check.d.ts.map +1 -1
  363. package/build-types/components/post-trash/index.d.ts.map +1 -1
  364. package/build-types/components/post-type-support-check/index.d.ts.map +1 -1
  365. package/build-types/components/post-url/check.d.ts.map +1 -1
  366. package/build-types/components/post-url/index.d.ts.map +1 -1
  367. package/build-types/components/post-url/label.d.ts.map +1 -1
  368. package/build-types/components/post-url/panel.d.ts.map +1 -1
  369. package/build-types/components/post-visibility/check.d.ts.map +1 -1
  370. package/build-types/components/post-visibility/index.d.ts.map +1 -1
  371. package/build-types/components/posts-per-page/index.d.ts.map +1 -1
  372. package/build-types/components/preferences-modal/enable-plugin-document-setting-panel.d.ts.map +1 -1
  373. package/build-types/components/preview-dropdown/index.d.ts.map +1 -1
  374. package/build-types/components/provider/disable-non-page-content-blocks.d.ts.map +1 -1
  375. package/build-types/components/provider/index.d.ts.map +1 -1
  376. package/build-types/components/provider/use-block-editor-settings.d.ts.map +1 -1
  377. package/build-types/components/save-publish-panels/index.d.ts.map +1 -1
  378. package/build-types/components/sidebar/index.d.ts.map +1 -1
  379. package/build-types/components/site-discussion/index.d.ts.map +1 -1
  380. package/build-types/components/template-content-panel/index.d.ts +1 -3
  381. package/build-types/components/template-content-panel/index.d.ts.map +1 -1
  382. package/build-types/components/theme-support-check/index.d.ts.map +1 -1
  383. package/build-types/components/time-to-read/index.d.ts.map +1 -1
  384. package/build-types/components/unsaved-changes-warning/index.d.ts.map +1 -1
  385. package/build-types/components/visual-editor/edit-template-blocks-notification.d.ts +1 -1
  386. package/build-types/components/visual-editor/edit-template-blocks-notification.d.ts.map +1 -1
  387. package/build-types/components/visual-editor/index.d.ts.map +1 -1
  388. package/build-types/components/visual-editor/use-select-nearest-editable-block.d.ts.map +1 -0
  389. package/build-types/components/word-count/index.d.ts.map +1 -1
  390. package/build-types/dataviews/actions/delete-post.d.ts.map +1 -1
  391. package/build-types/dataviews/actions/export-pattern.native.d.ts +3 -0
  392. package/build-types/dataviews/actions/export-pattern.native.d.ts.map +1 -0
  393. package/build-types/dataviews/actions/permanently-delete-post.d.ts +5 -0
  394. package/build-types/dataviews/actions/permanently-delete-post.d.ts.map +1 -0
  395. package/build-types/dataviews/actions/restore-post.d.ts +5 -0
  396. package/build-types/dataviews/actions/restore-post.d.ts.map +1 -0
  397. package/build-types/dataviews/actions/trash-post.d.ts +5 -0
  398. package/build-types/dataviews/actions/trash-post.d.ts.map +1 -0
  399. package/build-types/dataviews/api.d.ts +1 -1
  400. package/build-types/dataviews/api.d.ts.map +1 -1
  401. package/build-types/dataviews/store/private-actions.d.ts +8 -3
  402. package/build-types/dataviews/store/private-actions.d.ts.map +1 -1
  403. package/build-types/dataviews/store/private-selectors.d.ts +2 -2
  404. package/build-types/dataviews/store/private-selectors.d.ts.map +1 -1
  405. package/build-types/dataviews/store/reducer.d.ts +4 -1
  406. package/build-types/dataviews/store/reducer.d.ts.map +1 -1
  407. package/build-types/dataviews/types.d.ts +9 -0
  408. package/build-types/dataviews/types.d.ts.map +1 -1
  409. package/build-types/hooks/custom-sources-backwards-compatibility.d.ts +1 -1
  410. package/build-types/hooks/custom-sources-backwards-compatibility.d.ts.map +1 -1
  411. package/build-types/hooks/pattern-overrides.d.ts.map +1 -1
  412. package/build-types/private-apis.d.ts.map +1 -1
  413. package/build-types/store/actions.d.ts.map +1 -1
  414. package/build-types/store/private-actions.d.ts.map +1 -1
  415. package/build-types/store/private-selectors.d.ts +11 -0
  416. package/build-types/store/private-selectors.d.ts.map +1 -1
  417. package/build-types/store/reducer.d.ts +1 -0
  418. package/build-types/store/reducer.d.ts.map +1 -1
  419. package/build-types/store/selectors.d.ts +0 -1
  420. package/build-types/store/selectors.d.ts.map +1 -1
  421. package/build-types/utils/media-upload/index.d.ts.map +1 -1
  422. package/package.json +38 -37
  423. package/src/bindings/api.js +57 -0
  424. package/src/bindings/pattern-overrides.js +28 -17
  425. package/src/bindings/post-meta.js +39 -14
  426. package/src/components/block-settings-menu/content-only-settings-menu.js +4 -4
  427. package/src/components/blog-title/index.js +8 -3
  428. package/src/components/collapsible-block-toolbar/index.js +1 -3
  429. package/src/components/collapsible-block-toolbar/style.scss +0 -3
  430. package/src/components/commands/index.js +4 -2
  431. package/src/components/document-bar/index.js +1 -1
  432. package/src/components/document-bar/style.scss +2 -6
  433. package/src/components/document-tools/style.scss +4 -4
  434. package/src/components/editor-interface/style.scss +9 -0
  435. package/src/components/global-styles-provider/index.js +22 -11
  436. package/src/components/header/back-button.js +6 -6
  437. package/src/components/header/index.js +27 -27
  438. package/src/components/header/style.scss +64 -21
  439. package/src/components/inserter-sidebar/style.scss +1 -6
  440. package/src/components/list-view-sidebar/style.scss +4 -0
  441. package/src/components/page-attributes/order.js +3 -77
  442. package/src/components/page-attributes/panel.js +1 -7
  443. package/src/components/page-attributes/parent.js +25 -7
  444. package/src/components/post-actions/actions.js +158 -463
  445. package/src/components/post-actions/index.js +19 -7
  446. package/src/components/post-author/hook.js +11 -3
  447. package/src/components/post-author/panel.js +3 -1
  448. package/src/components/post-card-panel/index.js +9 -3
  449. package/src/components/post-comments/index.js +8 -21
  450. package/src/components/post-content-information/index.js +7 -1
  451. package/src/components/post-discussion/panel.js +5 -3
  452. package/src/components/post-excerpt/panel.js +2 -1
  453. package/src/components/post-featured-image/index.js +5 -1
  454. package/src/components/post-last-revision/index.js +1 -0
  455. package/src/components/post-panel-row/style.scss +0 -1
  456. package/src/components/post-publish-button/index.js +4 -17
  457. package/src/components/post-publish-panel/maybe-category-panel.js +4 -1
  458. package/src/components/post-publish-panel/maybe-tags-panel.js +1 -1
  459. package/src/components/post-publish-panel/test/__snapshots__/index.js.snap +2 -2
  460. package/src/components/post-status/index.js +29 -51
  461. package/src/components/post-taxonomies/flat-term-selector.js +19 -5
  462. package/src/components/post-taxonomies/index.js +8 -1
  463. package/src/components/post-template/block-theme.js +5 -1
  464. package/src/components/post-template/classic-theme.js +8 -3
  465. package/src/components/post-template/create-new-template-modal.js +7 -1
  466. package/src/components/post-template/create-new-template.js +4 -1
  467. package/src/components/post-template/hooks.js +8 -2
  468. package/src/components/post-template/panel.js +10 -2
  469. package/src/components/post-trash/check.js +9 -5
  470. package/src/components/post-url/panel.js +15 -4
  471. package/src/components/posts-per-page/index.js +7 -2
  472. package/src/components/preview-dropdown/index.js +113 -35
  473. package/src/components/preview-dropdown/style.scss +5 -0
  474. package/src/components/provider/disable-non-page-content-blocks.js +27 -24
  475. package/src/components/provider/use-block-editor-settings.js +15 -6
  476. package/src/components/save-publish-panels/index.js +1 -4
  477. package/src/components/sidebar/index.js +2 -5
  478. package/src/components/site-discussion/index.js +15 -22
  479. package/src/components/template-content-panel/index.js +37 -21
  480. package/src/components/visual-editor/edit-template-blocks-notification.js +5 -1
  481. package/src/components/visual-editor/index.js +13 -8
  482. package/src/components/visual-editor/style.scss +1 -4
  483. package/src/{hooks → components/visual-editor}/use-select-nearest-editable-block.js +1 -1
  484. package/src/dataviews/actions/delete-post.tsx +2 -0
  485. package/src/dataviews/actions/export-pattern.native.tsx +3 -0
  486. package/src/dataviews/actions/permanently-delete-post.tsx +116 -0
  487. package/src/dataviews/actions/restore-post.tsx +134 -0
  488. package/src/dataviews/actions/trash-post.tsx +196 -0
  489. package/src/dataviews/store/private-actions.ts +68 -0
  490. package/src/dataviews/store/private-selectors.ts +9 -17
  491. package/src/dataviews/store/reducer.ts +20 -1
  492. package/src/dataviews/types.ts +11 -0
  493. package/src/hooks/pattern-overrides.js +1 -1
  494. package/src/index.js +0 -1
  495. package/src/private-apis.js +6 -2
  496. package/src/store/actions.js +36 -13
  497. package/src/store/private-actions.js +8 -4
  498. package/src/store/private-selectors.js +45 -2
  499. package/src/store/test/actions.js +9 -3
  500. package/src/store/test/private-selectors.js +78 -0
  501. package/src/utils/media-upload/index.js +38 -3
  502. package/tsconfig.tsbuildinfo +1 -1
  503. package/build/bindings/index.js +0 -22
  504. package/build/bindings/index.js.map +0 -1
  505. package/build/dataviews/actions/index.js +0 -32
  506. package/build/dataviews/actions/index.js.map +0 -1
  507. package/build/hooks/use-select-nearest-editable-block.js.map +0 -1
  508. package/build/store/utils/get-filtered-template-parts.js +0 -71
  509. package/build/store/utils/get-filtered-template-parts.js.map +0 -1
  510. package/build/utils/set-nested-value.js +0 -44
  511. package/build/utils/set-nested-value.js.map +0 -1
  512. package/build-module/bindings/index.js +0 -17
  513. package/build-module/bindings/index.js.map +0 -1
  514. package/build-module/dataviews/actions/index.js +0 -24
  515. package/build-module/dataviews/actions/index.js.map +0 -1
  516. package/build-module/hooks/use-select-nearest-editable-block.js.map +0 -1
  517. package/build-module/store/utils/get-filtered-template-parts.js +0 -64
  518. package/build-module/store/utils/get-filtered-template-parts.js.map +0 -1
  519. package/build-module/utils/set-nested-value.js +0 -38
  520. package/build-module/utils/set-nested-value.js.map +0 -1
  521. package/build-types/bindings/index.d.ts +0 -2
  522. package/build-types/bindings/index.d.ts.map +0 -1
  523. package/build-types/dataviews/actions/index.d.ts +0 -2
  524. package/build-types/dataviews/actions/index.d.ts.map +0 -1
  525. package/build-types/hooks/use-select-nearest-editable-block.d.ts.map +0 -1
  526. package/build-types/store/utils/get-filtered-template-parts.d.ts +0 -3
  527. package/build-types/store/utils/get-filtered-template-parts.d.ts.map +0 -1
  528. package/build-types/utils/set-nested-value.d.ts +0 -20
  529. package/build-types/utils/set-nested-value.d.ts.map +0 -1
  530. package/src/bindings/index.js +0 -15
  531. package/src/components/document-outline/test/__snapshots__/index.js.snap +0 -111
  532. package/src/components/document-outline/test/index.js +0 -185
  533. package/src/dataviews/actions/index.ts +0 -25
  534. package/src/store/utils/get-filtered-template-parts.js +0 -69
  535. package/src/store/utils/test/get-filtered-template-parts.js +0 -189
  536. package/src/utils/set-nested-value.js +0 -39
  537. /package/build-types/{hooks → components/visual-editor}/use-select-nearest-editable-block.d.ts +0 -0
@@ -1,18 +1,18 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { external, trash, backup } from '@wordpress/icons';
4
+ import { external } from '@wordpress/icons';
5
5
  import { addQueryArgs } from '@wordpress/url';
6
- import { useDispatch, useSelect, useRegistry } from '@wordpress/data';
6
+ import { useDispatch, useSelect } from '@wordpress/data';
7
7
  import { decodeEntities } from '@wordpress/html-entities';
8
8
  import { store as coreStore } from '@wordpress/core-data';
9
- import { __, _n, sprintf, _x } from '@wordpress/i18n';
9
+ import { __, sprintf, _x } from '@wordpress/i18n';
10
10
  import { store as noticesStore } from '@wordpress/notices';
11
- import { useMemo, useState } from '@wordpress/element';
11
+ import { useMemo, useState, useEffect } from '@wordpress/element';
12
12
  import { privateApis as patternsPrivateApis } from '@wordpress/patterns';
13
13
  import { parse } from '@wordpress/blocks';
14
- import { DataForm } from '@wordpress/dataviews';
15
- import { Button, TextControl, __experimentalText as Text, __experimentalHStack as HStack, __experimentalVStack as VStack } from '@wordpress/components';
14
+ import { DataForm, isItemValid } from '@wordpress/dataviews';
15
+ import { Button, TextControl, __experimentalHStack as HStack, __experimentalVStack as VStack } from '@wordpress/components';
16
16
 
17
17
  /**
18
18
  * Internal dependencies
@@ -32,18 +32,26 @@ const {
32
32
  useDuplicatePatternProps
33
33
  } = unlock(patternsPrivateApis);
34
34
 
35
- // TODO: this should be shared with other components (page-pages).
35
+ // TODO: this should be shared with other components (see post-fields in edit-site).
36
36
  const fields = [{
37
37
  type: 'text',
38
- header: __('Title'),
39
38
  id: 'title',
39
+ label: __('Title'),
40
40
  placeholder: __('No title'),
41
41
  getValue: ({
42
42
  item
43
43
  }) => item.title
44
+ }, {
45
+ type: 'integer',
46
+ id: 'menu_order',
47
+ label: __('Order'),
48
+ description: __('Determines the order of pages.')
44
49
  }];
45
- const form = {
46
- visibleFields: ['title']
50
+ const formDuplicateAction = {
51
+ fields: ['title']
52
+ };
53
+ const formOrderAction = {
54
+ fields: ['menu_order']
47
55
  };
48
56
 
49
57
  /**
@@ -61,307 +69,6 @@ function isTemplateRemovable(template) {
61
69
  // two props whether is custom or has a theme file.
62
70
  return template?.source === TEMPLATE_ORIGINS.custom && !template?.has_theme_file;
63
71
  }
64
- const trashPostAction = {
65
- id: 'move-to-trash',
66
- label: __('Move to Trash'),
67
- isPrimary: true,
68
- icon: trash,
69
- isEligible(item) {
70
- return !['auto-draft', 'trash'].includes(item.status);
71
- },
72
- supportsBulk: true,
73
- hideModalHeader: true,
74
- RenderModal: ({
75
- items,
76
- closeModal,
77
- onActionPerformed
78
- }) => {
79
- const [isBusy, setIsBusy] = useState(false);
80
- const {
81
- createSuccessNotice,
82
- createErrorNotice
83
- } = useDispatch(noticesStore);
84
- const {
85
- deleteEntityRecord
86
- } = useDispatch(coreStore);
87
- return /*#__PURE__*/_jsxs(VStack, {
88
- spacing: "5",
89
- children: [/*#__PURE__*/_jsx(Text, {
90
- children: items.length === 1 ? sprintf(
91
- // translators: %s: The item's title.
92
- __('Are you sure you want to move to trash "%s"?'), getItemTitle(items[0])) : sprintf(
93
- // translators: %d: The number of items (2 or more).
94
- _n('Are you sure you want to move to trash %d item?', 'Are you sure you want to move to trash %d items?', items.length), items.length)
95
- }), /*#__PURE__*/_jsxs(HStack, {
96
- justify: "right",
97
- children: [/*#__PURE__*/_jsx(Button, {
98
- variant: "tertiary",
99
- onClick: closeModal,
100
- disabled: isBusy,
101
- accessibleWhenDisabled: true,
102
- children: __('Cancel')
103
- }), /*#__PURE__*/_jsx(Button, {
104
- variant: "primary",
105
- onClick: async () => {
106
- setIsBusy(true);
107
- const promiseResult = await Promise.allSettled(items.map(item => deleteEntityRecord('postType', item.type, item.id, {}, {
108
- throwOnError: true
109
- })));
110
- // If all the promises were fulfilled with success.
111
- if (promiseResult.every(({
112
- status
113
- }) => status === 'fulfilled')) {
114
- let successMessage;
115
- if (promiseResult.length === 1) {
116
- successMessage = sprintf( /* translators: The item's title. */
117
- __('"%s" moved to trash.'), getItemTitle(items[0]));
118
- } else {
119
- successMessage = sprintf( /* translators: The number of items. */
120
- _n('%s item moved to trash.', '%s items moved to trash.', items.length), items.length);
121
- }
122
- createSuccessNotice(successMessage, {
123
- type: 'snackbar',
124
- id: 'move-to-trash-action'
125
- });
126
- } else {
127
- // If there was at least one failure.
128
- let errorMessage;
129
- // If we were trying to delete a single item.
130
- if (promiseResult.length === 1) {
131
- if (promiseResult[0].reason?.message) {
132
- errorMessage = promiseResult[0].reason.message;
133
- } else {
134
- errorMessage = __('An error occurred while moving to trash the item.');
135
- }
136
- // If we were trying to delete multiple items.
137
- } else {
138
- const errorMessages = new Set();
139
- const failedPromises = promiseResult.filter(({
140
- status
141
- }) => status === 'rejected');
142
- for (const failedPromise of failedPromises) {
143
- if (failedPromise.reason?.message) {
144
- errorMessages.add(failedPromise.reason.message);
145
- }
146
- }
147
- if (errorMessages.size === 0) {
148
- errorMessage = __('An error occurred while moving to trash the items.');
149
- } else if (errorMessages.size === 1) {
150
- errorMessage = sprintf( /* translators: %s: an error message */
151
- __('An error occurred while moving to trash the item: %s'), [...errorMessages][0]);
152
- } else {
153
- errorMessage = sprintf( /* translators: %s: a list of comma separated error messages */
154
- __('Some errors occurred while moving to trash the items: %s'), [...errorMessages].join(','));
155
- }
156
- }
157
- createErrorNotice(errorMessage, {
158
- type: 'snackbar'
159
- });
160
- }
161
- if (onActionPerformed) {
162
- onActionPerformed(items);
163
- }
164
- setIsBusy(false);
165
- closeModal();
166
- },
167
- isBusy: isBusy,
168
- disabled: isBusy,
169
- accessibleWhenDisabled: true,
170
- children: __('Trash')
171
- })]
172
- })]
173
- });
174
- }
175
- };
176
- function useCanUserEligibilityCheckPostType(capability, resource, action) {
177
- const registry = useRegistry();
178
- return useMemo(() => ({
179
- ...action,
180
- isEligible(item) {
181
- return action.isEligible(item) && registry.select(coreStore).canUser(capability, resource, item.id);
182
- }
183
- }), [action, registry, capability, resource]);
184
- }
185
- function useTrashPostAction(resource) {
186
- return useCanUserEligibilityCheckPostType('delete', resource, trashPostAction);
187
- }
188
- const permanentlyDeletePostAction = {
189
- id: 'permanently-delete',
190
- label: __('Permanently delete'),
191
- supportsBulk: true,
192
- isEligible({
193
- status
194
- }) {
195
- return status === 'trash';
196
- },
197
- async callback(posts, {
198
- registry,
199
- onActionPerformed
200
- }) {
201
- const {
202
- createSuccessNotice,
203
- createErrorNotice
204
- } = registry.dispatch(noticesStore);
205
- const {
206
- deleteEntityRecord
207
- } = registry.dispatch(coreStore);
208
- const promiseResult = await Promise.allSettled(posts.map(post => {
209
- return deleteEntityRecord('postType', post.type, post.id, {
210
- force: true
211
- }, {
212
- throwOnError: true
213
- });
214
- }));
215
- // If all the promises were fulfilled with success.
216
- if (promiseResult.every(({
217
- status
218
- }) => status === 'fulfilled')) {
219
- let successMessage;
220
- if (promiseResult.length === 1) {
221
- successMessage = sprintf( /* translators: The posts's title. */
222
- __('"%s" permanently deleted.'), getItemTitle(posts[0]));
223
- } else {
224
- successMessage = __('The posts were permanently deleted.');
225
- }
226
- createSuccessNotice(successMessage, {
227
- type: 'snackbar',
228
- id: 'permanently-delete-post-action'
229
- });
230
- onActionPerformed?.(posts);
231
- } else {
232
- // If there was at lease one failure.
233
- let errorMessage;
234
- // If we were trying to permanently delete a single post.
235
- if (promiseResult.length === 1) {
236
- if (promiseResult[0].reason?.message) {
237
- errorMessage = promiseResult[0].reason.message;
238
- } else {
239
- errorMessage = __('An error occurred while permanently deleting the post.');
240
- }
241
- // If we were trying to permanently delete multiple posts
242
- } else {
243
- const errorMessages = new Set();
244
- const failedPromises = promiseResult.filter(({
245
- status
246
- }) => status === 'rejected');
247
- for (const failedPromise of failedPromises) {
248
- if (failedPromise.reason?.message) {
249
- errorMessages.add(failedPromise.reason.message);
250
- }
251
- }
252
- if (errorMessages.size === 0) {
253
- errorMessage = __('An error occurred while permanently deleting the posts.');
254
- } else if (errorMessages.size === 1) {
255
- errorMessage = sprintf( /* translators: %s: an error message */
256
- __('An error occurred while permanently deleting the posts: %s'), [...errorMessages][0]);
257
- } else {
258
- errorMessage = sprintf( /* translators: %s: a list of comma separated error messages */
259
- __('Some errors occurred while permanently deleting the posts: %s'), [...errorMessages].join(','));
260
- }
261
- }
262
- createErrorNotice(errorMessage, {
263
- type: 'snackbar'
264
- });
265
- }
266
- }
267
- };
268
- function usePermanentlyDeletePostAction(resource) {
269
- return useCanUserEligibilityCheckPostType('delete', resource, permanentlyDeletePostAction);
270
- }
271
- const restorePostAction = {
272
- id: 'restore',
273
- label: __('Restore'),
274
- isPrimary: true,
275
- icon: backup,
276
- supportsBulk: true,
277
- isEligible({
278
- status
279
- }) {
280
- return status === 'trash';
281
- },
282
- async callback(posts, {
283
- registry,
284
- onActionPerformed
285
- }) {
286
- const {
287
- createSuccessNotice,
288
- createErrorNotice
289
- } = registry.dispatch(noticesStore);
290
- const {
291
- editEntityRecord,
292
- saveEditedEntityRecord
293
- } = registry.dispatch(coreStore);
294
- await Promise.allSettled(posts.map(post => {
295
- return editEntityRecord('postType', post.type, post.id, {
296
- status: 'draft'
297
- });
298
- }));
299
- const promiseResult = await Promise.allSettled(posts.map(post => {
300
- return saveEditedEntityRecord('postType', post.type, post.id, {
301
- throwOnError: true
302
- });
303
- }));
304
- if (promiseResult.every(({
305
- status
306
- }) => status === 'fulfilled')) {
307
- let successMessage;
308
- if (posts.length === 1) {
309
- successMessage = sprintf( /* translators: The number of posts. */
310
- __('"%s" has been restored.'), getItemTitle(posts[0]));
311
- } else if (posts[0].type === 'page') {
312
- successMessage = sprintf( /* translators: The number of posts. */
313
- __('%d pages have been restored.'), posts.length);
314
- } else {
315
- successMessage = sprintf( /* translators: The number of posts. */
316
- __('%d posts have been restored.'), posts.length);
317
- }
318
- createSuccessNotice(successMessage, {
319
- type: 'snackbar',
320
- id: 'restore-post-action'
321
- });
322
- if (onActionPerformed) {
323
- onActionPerformed(posts);
324
- }
325
- } else {
326
- // If there was at lease one failure.
327
- let errorMessage;
328
- // If we were trying to move a single post to the trash.
329
- if (promiseResult.length === 1) {
330
- if (promiseResult[0].reason?.message) {
331
- errorMessage = promiseResult[0].reason.message;
332
- } else {
333
- errorMessage = __('An error occurred while restoring the post.');
334
- }
335
- // If we were trying to move multiple posts to the trash
336
- } else {
337
- const errorMessages = new Set();
338
- const failedPromises = promiseResult.filter(({
339
- status
340
- }) => status === 'rejected');
341
- for (const failedPromise of failedPromises) {
342
- if (failedPromise.reason?.message) {
343
- errorMessages.add(failedPromise.reason.message);
344
- }
345
- }
346
- if (errorMessages.size === 0) {
347
- errorMessage = __('An error occurred while restoring the posts.');
348
- } else if (errorMessages.size === 1) {
349
- errorMessage = sprintf( /* translators: %s: an error message */
350
- __('An error occurred while restoring the posts: %s'), [...errorMessages][0]);
351
- } else {
352
- errorMessage = sprintf( /* translators: %s: a list of comma separated error messages */
353
- __('Some errors occurred while restoring the posts: %s'), [...errorMessages].join(','));
354
- }
355
- }
356
- createErrorNotice(errorMessage, {
357
- type: 'snackbar'
358
- });
359
- }
360
- }
361
- };
362
- function useRestorePostAction(resource) {
363
- return useCanUserEligibilityCheckPostType('update', resource, restorePostAction);
364
- }
365
72
  const viewPostAction = {
366
73
  id: 'view-post',
367
74
  label: __('View'),
@@ -420,11 +127,11 @@ const renamePostAction = {
420
127
  }
421
128
  // Templates, template parts and patterns have special checks for renaming.
422
129
  if (![TEMPLATE_POST_TYPE, TEMPLATE_PART_POST_TYPE, ...Object.values(PATTERN_TYPES)].includes(post.type)) {
423
- return true;
130
+ return post.permissions?.update;
424
131
  }
425
132
  // In the case of templates, we can only rename custom templates.
426
133
  if (post.type === TEMPLATE_POST_TYPE) {
427
- return isTemplateRemovable(post) && post.is_custom;
134
+ return isTemplateRemovable(post) && post.is_custom && post.permissions?.update;
428
135
  }
429
136
  // Make necessary checks for template parts and patterns.
430
137
  const isTemplatePart = post.type === TEMPLATE_PART_POST_TYPE;
@@ -434,7 +141,7 @@ const renamePostAction = {
434
141
  // two props whether is custom or has a theme file.
435
142
  const isCustomPattern = isUserPattern || isTemplatePart && post.source === TEMPLATE_ORIGINS.custom;
436
143
  const hasThemeFile = post?.has_theme_file;
437
- return isCustomPattern && !hasThemeFile;
144
+ return isCustomPattern && !hasThemeFile && post.permissions?.update;
438
145
  },
439
146
  RenderModal: ({
440
147
  items,
@@ -506,21 +213,105 @@ const renamePostAction = {
506
213
  });
507
214
  }
508
215
  };
509
- function useRenamePostAction(resource) {
510
- return useCanUserEligibilityCheckPostType('update', resource, renamePostAction);
511
- }
512
- const useDuplicatePostAction = postType => {
216
+ function ReorderModal({
217
+ items,
218
+ closeModal,
219
+ onActionPerformed
220
+ }) {
221
+ const [item, setItem] = useState(items[0]);
222
+ const orderInput = item.menu_order;
513
223
  const {
514
- userCanCreatePost
515
- } = useSelect(select => {
224
+ editEntityRecord,
225
+ saveEditedEntityRecord
226
+ } = useDispatch(coreStore);
227
+ const {
228
+ createSuccessNotice,
229
+ createErrorNotice
230
+ } = useDispatch(noticesStore);
231
+ async function onOrder(event) {
232
+ event.preventDefault();
233
+ if (!isItemValid(item, fields, formOrderAction)) {
234
+ return;
235
+ }
236
+ try {
237
+ await editEntityRecord('postType', item.type, item.id, {
238
+ menu_order: orderInput
239
+ });
240
+ closeModal();
241
+ // Persist edited entity.
242
+ await saveEditedEntityRecord('postType', item.type, item.id, {
243
+ throwOnError: true
244
+ });
245
+ createSuccessNotice(__('Order updated'), {
246
+ type: 'snackbar'
247
+ });
248
+ onActionPerformed?.(items);
249
+ } catch (error) {
250
+ const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : __('An error occurred while updating the order');
251
+ createErrorNotice(errorMessage, {
252
+ type: 'snackbar'
253
+ });
254
+ }
255
+ }
256
+ const isSaveDisabled = !isItemValid(item, fields, formOrderAction);
257
+ return /*#__PURE__*/_jsx("form", {
258
+ onSubmit: onOrder,
259
+ children: /*#__PURE__*/_jsxs(VStack, {
260
+ spacing: "5",
261
+ children: [/*#__PURE__*/_jsx("div", {
262
+ children: __('Determines the order of pages. Pages with the same order value are sorted alphabetically. Negative order values are supported.')
263
+ }), /*#__PURE__*/_jsx(DataForm, {
264
+ data: item,
265
+ fields: fields,
266
+ form: formOrderAction,
267
+ onChange: setItem
268
+ }), /*#__PURE__*/_jsxs(HStack, {
269
+ justify: "right",
270
+ children: [/*#__PURE__*/_jsx(Button, {
271
+ __next40pxDefaultSize: true,
272
+ variant: "tertiary",
273
+ onClick: () => {
274
+ closeModal();
275
+ },
276
+ children: __('Cancel')
277
+ }), /*#__PURE__*/_jsx(Button, {
278
+ __next40pxDefaultSize: true,
279
+ variant: "primary",
280
+ type: "submit",
281
+ accessibleWhenDisabled: true,
282
+ disabled: isSaveDisabled,
283
+ __experimentalIsFocusable: true,
284
+ children: __('Save')
285
+ })]
286
+ })]
287
+ })
288
+ });
289
+ }
290
+ function useReorderPagesAction(postType) {
291
+ const supportsPageAttributes = useSelect(select => {
516
292
  const {
517
- getPostType,
518
- canUser
293
+ getPostType
519
294
  } = select(coreStore);
520
- const resource = getPostType(postType)?.rest_base || '';
521
- return {
522
- userCanCreatePost: canUser('create', resource)
523
- };
295
+ const postTypeObject = getPostType(postType);
296
+ return !!postTypeObject?.supports?.['page-attributes'];
297
+ }, [postType]);
298
+ return useMemo(() => supportsPageAttributes && {
299
+ id: 'order-pages',
300
+ label: __('Order'),
301
+ isEligible({
302
+ status
303
+ }) {
304
+ return status !== 'trash';
305
+ },
306
+ RenderModal: ReorderModal
307
+ }, [supportsPageAttributes]);
308
+ }
309
+ const useDuplicatePostAction = postType => {
310
+ const userCanCreatePost = useSelect(select => {
311
+ return select(coreStore).canUser('create', {
312
+ kind: 'postType',
313
+ name: postType
314
+ });
524
315
  }, [postType]);
525
316
  return useMemo(() => userCanCreatePost && {
526
317
  id: 'duplicate-post',
@@ -609,7 +400,7 @@ const useDuplicatePostAction = postType => {
609
400
  children: [/*#__PURE__*/_jsx(DataForm, {
610
401
  data: item,
611
402
  fields: fields,
612
- form: form,
403
+ form: formDuplicateAction,
613
404
  onChange: setItem
614
405
  }), /*#__PURE__*/_jsxs(HStack, {
615
406
  spacing: 2,
@@ -666,10 +457,10 @@ export const duplicateTemplatePartAction = {
666
457
  const [item] = items;
667
458
  const blocks = useMemo(() => {
668
459
  var _item$blocks;
669
- return (_item$blocks = item.blocks) !== null && _item$blocks !== void 0 ? _item$blocks : parse(item.content.raw, {
460
+ return (_item$blocks = item.blocks) !== null && _item$blocks !== void 0 ? _item$blocks : parse(typeof item.content === 'string' ? item.content : item.content.raw, {
670
461
  __unstableSkipMigrationLogs: true
671
462
  });
672
- }, [item?.content?.raw, item.blocks]);
463
+ }, [item.content, item.blocks]);
673
464
  const {
674
465
  createSuccessNotice
675
466
  } = useDispatch(noticesStore);
@@ -701,33 +492,32 @@ export function usePostActions({
701
492
  const {
702
493
  defaultActions,
703
494
  postTypeObject,
704
- userCanCreatePostType,
705
- resource,
706
- cachedCanUserResolvers
495
+ userCanCreatePostType
707
496
  } = useSelect(select => {
708
497
  const {
709
498
  getPostType,
710
- canUser,
711
- getCachedResolvers
499
+ canUser
712
500
  } = select(coreStore);
713
501
  const {
714
502
  getEntityActions
715
503
  } = unlock(select(editorStore));
716
- const _postTypeObject = getPostType(postType);
717
- const _resource = _postTypeObject?.rest_base || '';
718
504
  return {
719
- postTypeObject: _postTypeObject,
505
+ postTypeObject: getPostType(postType),
720
506
  defaultActions: getEntityActions('postType', postType),
721
- userCanCreatePostType: canUser('create', _resource),
722
- resource: _resource,
723
- cachedCanUserResolvers: getCachedResolvers()?.canUser
507
+ userCanCreatePostType: canUser('create', {
508
+ kind: 'postType',
509
+ name: postType
510
+ })
724
511
  };
725
512
  }, [postType]);
513
+ const {
514
+ registerPostTypeActions
515
+ } = unlock(useDispatch(editorStore));
516
+ useEffect(() => {
517
+ registerPostTypeActions(postType);
518
+ }, [registerPostTypeActions, postType]);
726
519
  const duplicatePostAction = useDuplicatePostAction(postType);
727
- const trashPostActionForPostType = useTrashPostAction(resource);
728
- const permanentlyDeletePostActionForPostType = usePermanentlyDeletePostAction(resource);
729
- const renamePostActionForPostType = useRenamePostAction(resource);
730
- const restorePostActionForPostType = useRestorePostAction(resource);
520
+ const reorderPagesAction = useReorderPagesAction(postType);
731
521
  const isTemplateOrTemplatePart = [TEMPLATE_POST_TYPE, TEMPLATE_PART_POST_TYPE].includes(postType);
732
522
  const isPattern = postType === PATTERN_POST_TYPE;
733
523
  const isLoaded = !!postTypeObject;
@@ -737,7 +527,7 @@ export function usePostActions({
737
527
  if (!isLoaded) {
738
528
  return [];
739
529
  }
740
- let actions = [postTypeObject?.viewable && viewPostAction, supportsRevisions && postRevisionsAction, globalThis.IS_GUTENBERG_PLUGIN ? !isTemplateOrTemplatePart && !isPattern && duplicatePostAction : false, isTemplateOrTemplatePart && userCanCreatePostType && duplicateTemplatePartAction, isPattern && userCanCreatePostType && duplicatePatternAction, supportsTitle && renamePostActionForPostType, !isTemplateOrTemplatePart && restorePostActionForPostType, !isTemplateOrTemplatePart && !isPattern && trashPostActionForPostType, !isTemplateOrTemplatePart && permanentlyDeletePostActionForPostType, ...defaultActions].filter(Boolean);
530
+ let actions = [postTypeObject?.viewable && viewPostAction, supportsRevisions && postRevisionsAction, globalThis.IS_GUTENBERG_PLUGIN ? !isTemplateOrTemplatePart && !isPattern && duplicatePostAction : false, isTemplateOrTemplatePart && userCanCreatePostType && duplicateTemplatePartAction, isPattern && userCanCreatePostType && duplicatePatternAction, supportsTitle && renamePostAction, reorderPagesAction, ...defaultActions].filter(Boolean);
741
531
  // Filter actions based on provided context. If not provided
742
532
  // all actions are returned. We'll have a single entry for getting the actions
743
533
  // and the consumer should provide the context to filter the actions, if needed.
@@ -760,7 +550,7 @@ export function usePostActions({
760
550
  existingCallback(items, {
761
551
  ...argsObject,
762
552
  onActionPerformed: _items => {
763
- if (argsObject.onActionPerformed) {
553
+ if (argsObject?.onActionPerformed) {
764
554
  argsObject.onActionPerformed(_items);
765
555
  }
766
556
  onActionPerformed(actions[i].id, _items);
@@ -789,9 +579,6 @@ export function usePostActions({
789
579
  }
790
580
  }
791
581
  return actions;
792
- // We are making this use memo depend on cachedCanUserResolvers as a way to make the component using this hook re-render
793
- // when user capabilities are resolved. This makes sure the isEligible functions of actions dependent on capabilities are re-evaluated.
794
- // eslint-disable-next-line react-hooks/exhaustive-deps
795
- }, [defaultActions, userCanCreatePostType, isTemplateOrTemplatePart, isPattern, postTypeObject?.viewable, duplicatePostAction, trashPostActionForPostType, restorePostActionForPostType, renamePostActionForPostType, permanentlyDeletePostActionForPostType, onActionPerformed, isLoaded, supportsRevisions, supportsTitle, context, cachedCanUserResolvers]);
582
+ }, [defaultActions, userCanCreatePostType, isTemplateOrTemplatePart, isPattern, postTypeObject?.viewable, duplicatePostAction, reorderPagesAction, onActionPerformed, isLoaded, supportsRevisions, supportsTitle, context]);
796
583
  }
797
584
  //# sourceMappingURL=actions.js.map