@wordpress/editor 13.32.0 → 13.33.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 (589) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +225 -2
  3. package/build/bindings/index.js.map +1 -1
  4. package/build/bindings/pattern-overrides.js.map +1 -1
  5. package/build/bindings/post-meta.js +12 -30
  6. package/build/bindings/post-meta.js.map +1 -1
  7. package/build/components/autocompleters/index.js.map +1 -1
  8. package/build/components/autocompleters/user.js.map +1 -1
  9. package/build/components/autosave-monitor/index.js +10 -0
  10. package/build/components/autosave-monitor/index.js.map +1 -1
  11. package/build/components/block-manager/category.js.map +1 -1
  12. package/build/components/block-manager/checklist.js.map +1 -1
  13. package/build/components/block-manager/index.js.map +1 -1
  14. package/build/components/block-removal-warnings/index.js.map +1 -1
  15. package/build/components/block-settings-menu/plugin-block-settings-menu-item.js.map +1 -1
  16. package/build/components/character-count/index.js.map +1 -1
  17. package/build/components/commands/index.js +19 -0
  18. package/build/components/commands/index.js.map +1 -1
  19. package/build/components/commands/index.native.js.map +1 -1
  20. package/build/components/deprecated.js.map +1 -1
  21. package/build/components/deprecated.native.js.map +1 -1
  22. package/build/components/document-bar/index.js.map +1 -1
  23. package/build/components/document-outline/check.js.map +1 -1
  24. package/build/components/document-outline/index.js.map +1 -1
  25. package/build/components/document-outline/item.js.map +1 -1
  26. package/build/components/document-tools/index.js +1 -1
  27. package/build/components/document-tools/index.js.map +1 -1
  28. package/build/components/editor-canvas/edit-template-blocks-notification.js +13 -2
  29. package/build/components/editor-canvas/edit-template-blocks-notification.js.map +1 -1
  30. package/build/components/editor-canvas/index.js +2 -2
  31. package/build/components/editor-canvas/index.js.map +1 -1
  32. package/build/components/editor-help/add-blocks.native.js.map +1 -1
  33. package/build/components/editor-help/customize-blocks.native.js.map +1 -1
  34. package/build/components/editor-help/help-detail-navigation-screen.native.js.map +1 -1
  35. package/build/components/editor-help/help-get-support-button.native.js.map +1 -1
  36. package/build/components/editor-help/help-section-title.native.js.map +1 -1
  37. package/build/components/editor-help/help-topic-row.native.js.map +1 -1
  38. package/build/components/editor-help/icon-move-blocks.native.js.map +1 -1
  39. package/build/components/editor-help/index.native.js.map +1 -1
  40. package/build/components/editor-help/intro-to-blocks.native.js.map +1 -1
  41. package/build/components/editor-help/move-blocks.native.js.map +1 -1
  42. package/build/components/editor-help/remove-blocks.native.js.map +1 -1
  43. package/build/components/editor-help/view-sections.native.js.map +1 -1
  44. package/build/components/editor-history/redo.js.map +1 -1
  45. package/build/components/editor-history/undo.js.map +1 -1
  46. package/build/components/editor-notices/index.js.map +1 -1
  47. package/build/components/editor-snackbars/index.js.map +1 -1
  48. package/build/components/entities-saved-states/entity-record-item.js.map +1 -1
  49. package/build/components/entities-saved-states/entity-type-list.js.map +1 -1
  50. package/build/components/entities-saved-states/hooks/use-is-dirty.js.map +1 -1
  51. package/build/components/entities-saved-states/index.js.map +1 -1
  52. package/build/components/error-boundary/index.js.map +1 -1
  53. package/build/components/error-boundary/index.native.js.map +1 -1
  54. package/build/components/global-keyboard-shortcuts/index.js +24 -0
  55. package/build/components/global-keyboard-shortcuts/index.js.map +1 -1
  56. package/build/components/global-keyboard-shortcuts/register-shortcuts.js +18 -0
  57. package/build/components/global-keyboard-shortcuts/register-shortcuts.js.map +1 -1
  58. package/build/components/index.js +33 -1
  59. package/build/components/index.js.map +1 -1
  60. package/build/components/index.native.js.map +1 -1
  61. package/build/components/inserter-sidebar/index.js.map +1 -1
  62. package/build/components/keyboard-shortcut-help-modal/config.js +78 -0
  63. package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -0
  64. package/build/components/keyboard-shortcut-help-modal/dynamic-shortcut.js +49 -0
  65. package/build/components/keyboard-shortcut-help-modal/dynamic-shortcut.js.map +1 -0
  66. package/build/components/keyboard-shortcut-help-modal/index.js +126 -0
  67. package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -0
  68. package/build/components/keyboard-shortcut-help-modal/shortcut.js +55 -0
  69. package/build/components/keyboard-shortcut-help-modal/shortcut.js.map +1 -0
  70. package/build/components/list-view-sidebar/index.js.map +1 -1
  71. package/build/components/list-view-sidebar/list-view-outline.js.map +1 -1
  72. package/build/components/local-autosave-monitor/index.js.map +1 -1
  73. package/build/components/media-categories/index.js.map +1 -1
  74. package/build/components/mode-switcher/index.js.map +1 -1
  75. package/build/components/offline-status/index.native.js.map +1 -1
  76. package/build/components/page-attributes/check.js.map +1 -1
  77. package/build/components/page-attributes/order.js.map +1 -1
  78. package/build/components/page-attributes/panel.js.map +1 -1
  79. package/build/components/page-attributes/parent.js.map +1 -1
  80. package/build/components/pattern-overrides-panel/index.js.map +1 -1
  81. package/build/components/plugin-document-setting-panel/index.js.map +1 -1
  82. package/build/components/plugin-more-menu-item/index.js +78 -0
  83. package/build/components/plugin-more-menu-item/index.js.map +1 -0
  84. package/build/components/plugin-post-publish-panel/index.js.map +1 -1
  85. package/build/components/plugin-post-status-info/index.js +73 -0
  86. package/build/components/plugin-post-status-info/index.js.map +1 -0
  87. package/build/components/plugin-pre-publish-panel/index.js.map +1 -1
  88. package/build/components/plugin-sidebar/index.js +108 -0
  89. package/build/components/plugin-sidebar/index.js.map +1 -0
  90. package/build/components/plugin-sidebar-more-menu-item/index.js +71 -0
  91. package/build/components/plugin-sidebar-more-menu-item/index.js.map +1 -0
  92. package/build/components/post-actions/actions.js +218 -17
  93. package/build/components/post-actions/actions.js.map +1 -1
  94. package/build/components/post-actions/index.js +137 -0
  95. package/build/components/post-actions/index.js.map +1 -0
  96. package/build/components/post-author/check.js.map +1 -1
  97. package/build/components/post-author/combobox.js.map +1 -1
  98. package/build/components/post-author/constants.js.map +1 -1
  99. package/build/components/post-author/hook.js.map +1 -1
  100. package/build/components/post-author/index.js.map +1 -1
  101. package/build/components/post-author/panel.js.map +1 -1
  102. package/build/components/post-author/select.js.map +1 -1
  103. package/build/components/post-card-panel/index.js +40 -6
  104. package/build/components/post-card-panel/index.js.map +1 -1
  105. package/build/components/post-comments/index.js.map +1 -1
  106. package/build/components/post-discussion/panel.js.map +1 -1
  107. package/build/components/post-excerpt/check.js +8 -0
  108. package/build/components/post-excerpt/check.js.map +1 -1
  109. package/build/components/post-excerpt/index.js.map +1 -1
  110. package/build/components/post-excerpt/panel.js.map +1 -1
  111. package/build/components/post-excerpt/plugin.js.map +1 -1
  112. package/build/components/post-featured-image/check.js.map +1 -1
  113. package/build/components/post-featured-image/index.js.map +1 -1
  114. package/build/components/post-featured-image/panel.js.map +1 -1
  115. package/build/components/post-format/check.js.map +1 -1
  116. package/build/components/post-format/index.js.map +1 -1
  117. package/build/components/post-last-revision/check.js.map +1 -1
  118. package/build/components/post-last-revision/index.js.map +1 -1
  119. package/build/components/post-last-revision/panel.js.map +1 -1
  120. package/build/components/post-locked-modal/index.js.map +1 -1
  121. package/build/components/post-panel-row/index.js.map +1 -1
  122. package/build/components/post-pending-status/check.js.map +1 -1
  123. package/build/components/post-pending-status/index.js.map +1 -1
  124. package/build/components/post-pingbacks/index.js.map +1 -1
  125. package/build/components/post-preview-button/index.js.map +1 -1
  126. package/build/components/post-publish-button/index.js +31 -31
  127. package/build/components/post-publish-button/index.js.map +1 -1
  128. package/build/components/post-publish-button/label.js +51 -43
  129. package/build/components/post-publish-button/label.js.map +1 -1
  130. package/build/components/post-publish-panel/index.js.map +1 -1
  131. package/build/components/post-publish-panel/maybe-category-panel.js.map +1 -1
  132. package/build/components/post-publish-panel/maybe-post-format-panel.js.map +1 -1
  133. package/build/components/post-publish-panel/maybe-tags-panel.js.map +1 -1
  134. package/build/components/post-publish-panel/maybe-upload-media.js.map +1 -1
  135. package/build/components/post-publish-panel/postpublish.js.map +1 -1
  136. package/build/components/post-publish-panel/prepublish.js.map +1 -1
  137. package/build/components/post-saved-state/index.js +10 -6
  138. package/build/components/post-saved-state/index.js.map +1 -1
  139. package/build/components/post-schedule/check.js.map +1 -1
  140. package/build/components/post-schedule/index.js.map +1 -1
  141. package/build/components/post-schedule/label.js.map +1 -1
  142. package/build/components/post-schedule/panel.js +8 -0
  143. package/build/components/post-schedule/panel.js.map +1 -1
  144. package/build/components/post-slug/check.js.map +1 -1
  145. package/build/components/post-slug/index.js +43 -68
  146. package/build/components/post-slug/index.js.map +1 -1
  147. package/build/components/post-status/index.js +239 -0
  148. package/build/components/post-status/index.js.map +1 -0
  149. package/build/components/post-sticky/check.js.map +1 -1
  150. package/build/components/post-sticky/index.js.map +1 -1
  151. package/build/components/post-switch-to-draft-button/index.js +6 -1
  152. package/build/components/post-switch-to-draft-button/index.js.map +1 -1
  153. package/build/components/post-sync-status/index.js.map +1 -1
  154. package/build/components/post-taxonomies/check.js.map +1 -1
  155. package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
  156. package/build/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
  157. package/build/components/post-taxonomies/index.js.map +1 -1
  158. package/build/components/post-taxonomies/most-used-terms.js.map +1 -1
  159. package/build/components/post-taxonomies/panel.js.map +1 -1
  160. package/build/components/post-template/block-theme.js +6 -2
  161. package/build/components/post-template/block-theme.js.map +1 -1
  162. package/build/components/post-template/classic-theme.js.map +1 -1
  163. package/build/components/post-template/create-new-template-modal.js.map +1 -1
  164. package/build/components/post-template/create-new-template.js.map +1 -1
  165. package/build/components/post-template/hooks.js.map +1 -1
  166. package/build/components/post-template/panel.js.map +1 -1
  167. package/build/components/post-template/reset-default-template.js.map +1 -1
  168. package/build/components/post-template/swap-template-button.js.map +1 -1
  169. package/build/components/post-text-editor/index.js.map +1 -1
  170. package/build/components/post-title/constants.js.map +1 -1
  171. package/build/components/post-title/index.js.map +1 -1
  172. package/build/components/post-title/index.native.js.map +1 -1
  173. package/build/components/post-title/post-title-raw.js.map +1 -1
  174. package/build/components/post-title/use-post-title-focus.js.map +1 -1
  175. package/build/components/post-title/use-post-title.js.map +1 -1
  176. package/build/components/post-trash/check.js +23 -25
  177. package/build/components/post-trash/check.js.map +1 -1
  178. package/build/components/post-trash/index.js +2 -1
  179. package/build/components/post-trash/index.js.map +1 -1
  180. package/build/components/post-type-support-check/index.js.map +1 -1
  181. package/build/components/post-url/check.js.map +1 -1
  182. package/build/components/post-url/index.js +44 -19
  183. package/build/components/post-url/index.js.map +1 -1
  184. package/build/components/post-url/label.js.map +1 -1
  185. package/build/components/post-url/panel.js +14 -7
  186. package/build/components/post-url/panel.js.map +1 -1
  187. package/build/components/post-view-link/index.js.map +1 -1
  188. package/build/components/post-visibility/check.js.map +1 -1
  189. package/build/components/post-visibility/index.js +2 -1
  190. package/build/components/post-visibility/index.js.map +1 -1
  191. package/build/components/post-visibility/label.js.map +1 -1
  192. package/build/components/post-visibility/utils.js.map +1 -1
  193. package/build/components/preferences-modal/enable-panel.js.map +1 -1
  194. package/build/components/preferences-modal/enable-plugin-document-setting-panel.js.map +1 -1
  195. package/build/components/preferences-modal/index.js +19 -17
  196. package/build/components/preferences-modal/index.js.map +1 -1
  197. package/build/components/preview-dropdown/index.js.map +1 -1
  198. package/build/components/provider/disable-non-page-content-blocks.js.map +1 -1
  199. package/build/components/provider/index.js +4 -2
  200. package/build/components/provider/index.js.map +1 -1
  201. package/build/components/provider/index.native.js +6 -1
  202. package/build/components/provider/index.native.js.map +1 -1
  203. package/build/components/provider/navigation-block-editing-mode.js.map +1 -1
  204. package/build/components/provider/use-auto-switch-editor-sidebars.js +52 -0
  205. package/build/components/provider/use-auto-switch-editor-sidebars.js.map +1 -0
  206. package/build/components/provider/use-block-editor-settings.js +64 -43
  207. package/build/components/provider/use-block-editor-settings.js.map +1 -1
  208. package/build/components/provider/use-block-editor-settings.native.js.map +1 -1
  209. package/build/components/provider/use-hide-blocks-from-inserter.js.map +1 -1
  210. package/build/components/provider/with-registry-provider.js +1 -0
  211. package/build/components/provider/with-registry-provider.js.map +1 -1
  212. package/build/components/start-page-options/index.js +139 -0
  213. package/build/components/start-page-options/index.js.map +1 -0
  214. package/build/components/table-of-contents/index.js.map +1 -1
  215. package/build/components/table-of-contents/panel.js.map +1 -1
  216. package/build/components/template-areas/index.js.map +1 -1
  217. package/build/components/template-validation-notice/index.js +23 -29
  218. package/build/components/template-validation-notice/index.js.map +1 -1
  219. package/build/components/theme-support-check/index.js +10 -16
  220. package/build/components/theme-support-check/index.js.map +1 -1
  221. package/build/components/time-to-read/index.js.map +1 -1
  222. package/build/components/unsaved-changes-warning/index.js.map +1 -1
  223. package/build/components/word-count/index.js.map +1 -1
  224. package/build/hooks/custom-sources-backwards-compatibility.js.map +1 -1
  225. package/build/hooks/default-autocompleters.js.map +1 -1
  226. package/build/hooks/index.js.map +1 -1
  227. package/build/hooks/index.native.js.map +1 -1
  228. package/build/hooks/pattern-overrides.js +22 -10
  229. package/build/hooks/pattern-overrides.js.map +1 -1
  230. package/build/hooks/use-select-nearest-editable-block.js.map +1 -1
  231. package/build/index.js.map +1 -1
  232. package/build/index.native.js.map +1 -1
  233. package/build/lock-unlock.js.map +1 -1
  234. package/build/private-apis.js +20 -1
  235. package/build/private-apis.js.map +1 -1
  236. package/build/store/actions.js.map +1 -1
  237. package/build/store/actions.native.js.map +1 -1
  238. package/build/store/constants.js +8 -1
  239. package/build/store/constants.js.map +1 -1
  240. package/build/store/defaults.js.map +1 -1
  241. package/build/store/index.js +1 -1
  242. package/build/store/index.js.map +1 -1
  243. package/build/store/local-autosave.js.map +1 -1
  244. package/build/store/private-actions.js +177 -4
  245. package/build/store/private-actions.js.map +1 -1
  246. package/build/store/private-selectors.js +1 -7
  247. package/build/store/private-selectors.js.map +1 -1
  248. package/build/store/reducer.js.map +1 -1
  249. package/build/store/reducer.native.js.map +1 -1
  250. package/build/store/selectors.js +5 -10
  251. package/build/store/selectors.js.map +1 -1
  252. package/build/store/selectors.native.js.map +1 -1
  253. package/build/store/utils/get-filtered-template-parts.js.map +1 -1
  254. package/build/store/utils/is-template-revertable.js +28 -0
  255. package/build/store/utils/is-template-revertable.js.map +1 -0
  256. package/build/store/utils/notice-builder.js.map +1 -1
  257. package/build/utils/get-template-part-icon.js.map +1 -1
  258. package/build/utils/index.js.map +1 -1
  259. package/build/utils/index.native.js.map +1 -1
  260. package/build/utils/media-upload/index.js.map +1 -1
  261. package/build/utils/media-upload/index.native.js.map +1 -1
  262. package/build/utils/terms.js.map +1 -1
  263. package/build/utils/url.js.map +1 -1
  264. package/build-module/bindings/index.js.map +1 -1
  265. package/build-module/bindings/pattern-overrides.js.map +1 -1
  266. package/build-module/bindings/post-meta.js +14 -31
  267. package/build-module/bindings/post-meta.js.map +1 -1
  268. package/build-module/components/autocompleters/index.js.map +1 -1
  269. package/build-module/components/autocompleters/user.js.map +1 -1
  270. package/build-module/components/autosave-monitor/index.js +10 -0
  271. package/build-module/components/autosave-monitor/index.js.map +1 -1
  272. package/build-module/components/block-manager/category.js.map +1 -1
  273. package/build-module/components/block-manager/checklist.js.map +1 -1
  274. package/build-module/components/block-manager/index.js.map +1 -1
  275. package/build-module/components/block-removal-warnings/index.js.map +1 -1
  276. package/build-module/components/block-settings-menu/plugin-block-settings-menu-item.js.map +1 -1
  277. package/build-module/components/character-count/index.js.map +1 -1
  278. package/build-module/components/commands/index.js +20 -1
  279. package/build-module/components/commands/index.js.map +1 -1
  280. package/build-module/components/commands/index.native.js.map +1 -1
  281. package/build-module/components/deprecated.js.map +1 -1
  282. package/build-module/components/deprecated.native.js.map +1 -1
  283. package/build-module/components/document-bar/index.js.map +1 -1
  284. package/build-module/components/document-outline/check.js.map +1 -1
  285. package/build-module/components/document-outline/index.js.map +1 -1
  286. package/build-module/components/document-outline/item.js.map +1 -1
  287. package/build-module/components/document-tools/index.js +1 -1
  288. package/build-module/components/document-tools/index.js.map +1 -1
  289. package/build-module/components/editor-canvas/edit-template-blocks-notification.js +13 -2
  290. package/build-module/components/editor-canvas/edit-template-blocks-notification.js.map +1 -1
  291. package/build-module/components/editor-canvas/index.js +2 -2
  292. package/build-module/components/editor-canvas/index.js.map +1 -1
  293. package/build-module/components/editor-help/add-blocks.native.js.map +1 -1
  294. package/build-module/components/editor-help/customize-blocks.native.js.map +1 -1
  295. package/build-module/components/editor-help/help-detail-navigation-screen.native.js.map +1 -1
  296. package/build-module/components/editor-help/help-get-support-button.native.js.map +1 -1
  297. package/build-module/components/editor-help/help-section-title.native.js.map +1 -1
  298. package/build-module/components/editor-help/help-topic-row.native.js.map +1 -1
  299. package/build-module/components/editor-help/icon-move-blocks.native.js.map +1 -1
  300. package/build-module/components/editor-help/index.native.js.map +1 -1
  301. package/build-module/components/editor-help/intro-to-blocks.native.js.map +1 -1
  302. package/build-module/components/editor-help/move-blocks.native.js.map +1 -1
  303. package/build-module/components/editor-help/remove-blocks.native.js.map +1 -1
  304. package/build-module/components/editor-help/view-sections.native.js.map +1 -1
  305. package/build-module/components/editor-history/redo.js.map +1 -1
  306. package/build-module/components/editor-history/undo.js.map +1 -1
  307. package/build-module/components/editor-notices/index.js.map +1 -1
  308. package/build-module/components/editor-snackbars/index.js.map +1 -1
  309. package/build-module/components/entities-saved-states/entity-record-item.js.map +1 -1
  310. package/build-module/components/entities-saved-states/entity-type-list.js.map +1 -1
  311. package/build-module/components/entities-saved-states/hooks/use-is-dirty.js.map +1 -1
  312. package/build-module/components/entities-saved-states/index.js.map +1 -1
  313. package/build-module/components/error-boundary/index.js.map +1 -1
  314. package/build-module/components/error-boundary/index.native.js.map +1 -1
  315. package/build-module/components/global-keyboard-shortcuts/index.js +24 -0
  316. package/build-module/components/global-keyboard-shortcuts/index.js.map +1 -1
  317. package/build-module/components/global-keyboard-shortcuts/register-shortcuts.js +18 -0
  318. package/build-module/components/global-keyboard-shortcuts/register-shortcuts.js.map +1 -1
  319. package/build-module/components/index.js +4 -0
  320. package/build-module/components/index.js.map +1 -1
  321. package/build-module/components/index.native.js.map +1 -1
  322. package/build-module/components/inserter-sidebar/index.js.map +1 -1
  323. package/build-module/components/keyboard-shortcut-help-modal/config.js +71 -0
  324. package/build-module/components/keyboard-shortcut-help-modal/config.js.map +1 -0
  325. package/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.js +41 -0
  326. package/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.js.map +1 -0
  327. package/build-module/components/keyboard-shortcut-help-modal/index.js +118 -0
  328. package/build-module/components/keyboard-shortcut-help-modal/index.js.map +1 -0
  329. package/build-module/components/keyboard-shortcut-help-modal/shortcut.js +48 -0
  330. package/build-module/components/keyboard-shortcut-help-modal/shortcut.js.map +1 -0
  331. package/build-module/components/list-view-sidebar/index.js.map +1 -1
  332. package/build-module/components/list-view-sidebar/list-view-outline.js.map +1 -1
  333. package/build-module/components/local-autosave-monitor/index.js.map +1 -1
  334. package/build-module/components/media-categories/index.js.map +1 -1
  335. package/build-module/components/mode-switcher/index.js.map +1 -1
  336. package/build-module/components/offline-status/index.native.js.map +1 -1
  337. package/build-module/components/page-attributes/check.js.map +1 -1
  338. package/build-module/components/page-attributes/order.js.map +1 -1
  339. package/build-module/components/page-attributes/panel.js.map +1 -1
  340. package/build-module/components/page-attributes/parent.js.map +1 -1
  341. package/build-module/components/pattern-overrides-panel/index.js.map +1 -1
  342. package/build-module/components/plugin-document-setting-panel/index.js.map +1 -1
  343. package/build-module/components/plugin-more-menu-item/index.js +73 -0
  344. package/build-module/components/plugin-more-menu-item/index.js.map +1 -0
  345. package/build-module/components/plugin-post-publish-panel/index.js.map +1 -1
  346. package/build-module/components/plugin-post-status-info/index.js +66 -0
  347. package/build-module/components/plugin-post-status-info/index.js.map +1 -0
  348. package/build-module/components/plugin-pre-publish-panel/index.js.map +1 -1
  349. package/build-module/components/plugin-sidebar/index.js +102 -0
  350. package/build-module/components/plugin-sidebar/index.js.map +1 -0
  351. package/build-module/components/plugin-sidebar-more-menu-item/index.js +65 -0
  352. package/build-module/components/plugin-sidebar-more-menu-item/index.js.map +1 -0
  353. package/build-module/components/post-actions/actions.js +219 -15
  354. package/build-module/components/post-actions/actions.js.map +1 -1
  355. package/build-module/components/post-actions/index.js +130 -0
  356. package/build-module/components/post-actions/index.js.map +1 -0
  357. package/build-module/components/post-author/check.js.map +1 -1
  358. package/build-module/components/post-author/combobox.js.map +1 -1
  359. package/build-module/components/post-author/constants.js.map +1 -1
  360. package/build-module/components/post-author/hook.js.map +1 -1
  361. package/build-module/components/post-author/index.js.map +1 -1
  362. package/build-module/components/post-author/panel.js.map +1 -1
  363. package/build-module/components/post-author/select.js.map +1 -1
  364. package/build-module/components/post-card-panel/index.js +42 -8
  365. package/build-module/components/post-card-panel/index.js.map +1 -1
  366. package/build-module/components/post-comments/index.js.map +1 -1
  367. package/build-module/components/post-discussion/panel.js.map +1 -1
  368. package/build-module/components/post-excerpt/check.js +9 -0
  369. package/build-module/components/post-excerpt/check.js.map +1 -1
  370. package/build-module/components/post-excerpt/index.js.map +1 -1
  371. package/build-module/components/post-excerpt/panel.js.map +1 -1
  372. package/build-module/components/post-excerpt/plugin.js.map +1 -1
  373. package/build-module/components/post-featured-image/check.js.map +1 -1
  374. package/build-module/components/post-featured-image/index.js.map +1 -1
  375. package/build-module/components/post-featured-image/panel.js.map +1 -1
  376. package/build-module/components/post-format/check.js.map +1 -1
  377. package/build-module/components/post-format/index.js.map +1 -1
  378. package/build-module/components/post-last-revision/check.js.map +1 -1
  379. package/build-module/components/post-last-revision/index.js.map +1 -1
  380. package/build-module/components/post-last-revision/panel.js.map +1 -1
  381. package/build-module/components/post-locked-modal/index.js.map +1 -1
  382. package/build-module/components/post-panel-row/index.js.map +1 -1
  383. package/build-module/components/post-pending-status/check.js.map +1 -1
  384. package/build-module/components/post-pending-status/index.js.map +1 -1
  385. package/build-module/components/post-pingbacks/index.js.map +1 -1
  386. package/build-module/components/post-preview-button/index.js.map +1 -1
  387. package/build-module/components/post-publish-button/index.js +31 -31
  388. package/build-module/components/post-publish-button/index.js.map +1 -1
  389. package/build-module/components/post-publish-button/label.js +51 -42
  390. package/build-module/components/post-publish-button/label.js.map +1 -1
  391. package/build-module/components/post-publish-panel/index.js.map +1 -1
  392. package/build-module/components/post-publish-panel/maybe-category-panel.js.map +1 -1
  393. package/build-module/components/post-publish-panel/maybe-post-format-panel.js.map +1 -1
  394. package/build-module/components/post-publish-panel/maybe-tags-panel.js.map +1 -1
  395. package/build-module/components/post-publish-panel/maybe-upload-media.js.map +1 -1
  396. package/build-module/components/post-publish-panel/postpublish.js.map +1 -1
  397. package/build-module/components/post-publish-panel/prepublish.js.map +1 -1
  398. package/build-module/components/post-saved-state/index.js +10 -6
  399. package/build-module/components/post-saved-state/index.js.map +1 -1
  400. package/build-module/components/post-schedule/check.js.map +1 -1
  401. package/build-module/components/post-schedule/index.js.map +1 -1
  402. package/build-module/components/post-schedule/label.js.map +1 -1
  403. package/build-module/components/post-schedule/panel.js +8 -0
  404. package/build-module/components/post-schedule/panel.js.map +1 -1
  405. package/build-module/components/post-slug/check.js.map +1 -1
  406. package/build-module/components/post-slug/index.js +44 -68
  407. package/build-module/components/post-slug/index.js.map +1 -1
  408. package/build-module/components/post-status/index.js +231 -0
  409. package/build-module/components/post-status/index.js.map +1 -0
  410. package/build-module/components/post-sticky/check.js.map +1 -1
  411. package/build-module/components/post-sticky/index.js.map +1 -1
  412. package/build-module/components/post-switch-to-draft-button/index.js +7 -1
  413. package/build-module/components/post-switch-to-draft-button/index.js.map +1 -1
  414. package/build-module/components/post-sync-status/index.js.map +1 -1
  415. package/build-module/components/post-taxonomies/check.js.map +1 -1
  416. package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
  417. package/build-module/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
  418. package/build-module/components/post-taxonomies/index.js.map +1 -1
  419. package/build-module/components/post-taxonomies/most-used-terms.js.map +1 -1
  420. package/build-module/components/post-taxonomies/panel.js.map +1 -1
  421. package/build-module/components/post-template/block-theme.js +7 -3
  422. package/build-module/components/post-template/block-theme.js.map +1 -1
  423. package/build-module/components/post-template/classic-theme.js.map +1 -1
  424. package/build-module/components/post-template/create-new-template-modal.js.map +1 -1
  425. package/build-module/components/post-template/create-new-template.js.map +1 -1
  426. package/build-module/components/post-template/hooks.js.map +1 -1
  427. package/build-module/components/post-template/panel.js.map +1 -1
  428. package/build-module/components/post-template/reset-default-template.js.map +1 -1
  429. package/build-module/components/post-template/swap-template-button.js.map +1 -1
  430. package/build-module/components/post-text-editor/index.js.map +1 -1
  431. package/build-module/components/post-title/constants.js.map +1 -1
  432. package/build-module/components/post-title/index.js.map +1 -1
  433. package/build-module/components/post-title/index.native.js.map +1 -1
  434. package/build-module/components/post-title/post-title-raw.js.map +1 -1
  435. package/build-module/components/post-title/use-post-title-focus.js.map +1 -1
  436. package/build-module/components/post-title/use-post-title.js.map +1 -1
  437. package/build-module/components/post-trash/check.js +24 -26
  438. package/build-module/components/post-trash/check.js.map +1 -1
  439. package/build-module/components/post-trash/index.js +2 -1
  440. package/build-module/components/post-trash/index.js.map +1 -1
  441. package/build-module/components/post-type-support-check/index.js.map +1 -1
  442. package/build-module/components/post-url/check.js.map +1 -1
  443. package/build-module/components/post-url/index.js +46 -21
  444. package/build-module/components/post-url/index.js.map +1 -1
  445. package/build-module/components/post-url/label.js.map +1 -1
  446. package/build-module/components/post-url/panel.js +14 -7
  447. package/build-module/components/post-url/panel.js.map +1 -1
  448. package/build-module/components/post-view-link/index.js.map +1 -1
  449. package/build-module/components/post-visibility/check.js.map +1 -1
  450. package/build-module/components/post-visibility/index.js +2 -1
  451. package/build-module/components/post-visibility/index.js.map +1 -1
  452. package/build-module/components/post-visibility/label.js.map +1 -1
  453. package/build-module/components/post-visibility/utils.js.map +1 -1
  454. package/build-module/components/preferences-modal/enable-panel.js.map +1 -1
  455. package/build-module/components/preferences-modal/enable-plugin-document-setting-panel.js.map +1 -1
  456. package/build-module/components/preferences-modal/index.js +19 -17
  457. package/build-module/components/preferences-modal/index.js.map +1 -1
  458. package/build-module/components/preview-dropdown/index.js.map +1 -1
  459. package/build-module/components/provider/disable-non-page-content-blocks.js.map +1 -1
  460. package/build-module/components/provider/index.js +5 -3
  461. package/build-module/components/provider/index.js.map +1 -1
  462. package/build-module/components/provider/index.native.js.map +1 -1
  463. package/build-module/components/provider/navigation-block-editing-mode.js.map +1 -1
  464. package/build-module/components/provider/use-auto-switch-editor-sidebars.js +46 -0
  465. package/build-module/components/provider/use-auto-switch-editor-sidebars.js.map +1 -0
  466. package/build-module/components/provider/use-block-editor-settings.js +66 -45
  467. package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
  468. package/build-module/components/provider/use-block-editor-settings.native.js.map +1 -1
  469. package/build-module/components/provider/use-hide-blocks-from-inserter.js.map +1 -1
  470. package/build-module/components/provider/with-registry-provider.js +1 -0
  471. package/build-module/components/provider/with-registry-provider.js.map +1 -1
  472. package/build-module/components/start-page-options/index.js +132 -0
  473. package/build-module/components/start-page-options/index.js.map +1 -0
  474. package/build-module/components/table-of-contents/index.js.map +1 -1
  475. package/build-module/components/table-of-contents/panel.js.map +1 -1
  476. package/build-module/components/template-areas/index.js.map +1 -1
  477. package/build-module/components/template-validation-notice/index.js +25 -31
  478. package/build-module/components/template-validation-notice/index.js.map +1 -1
  479. package/build-module/components/theme-support-check/index.js +11 -16
  480. package/build-module/components/theme-support-check/index.js.map +1 -1
  481. package/build-module/components/time-to-read/index.js.map +1 -1
  482. package/build-module/components/unsaved-changes-warning/index.js.map +1 -1
  483. package/build-module/components/word-count/index.js.map +1 -1
  484. package/build-module/hooks/custom-sources-backwards-compatibility.js.map +1 -1
  485. package/build-module/hooks/default-autocompleters.js.map +1 -1
  486. package/build-module/hooks/index.js.map +1 -1
  487. package/build-module/hooks/index.native.js.map +1 -1
  488. package/build-module/hooks/pattern-overrides.js +22 -10
  489. package/build-module/hooks/pattern-overrides.js.map +1 -1
  490. package/build-module/hooks/use-select-nearest-editable-block.js.map +1 -1
  491. package/build-module/index.js.map +1 -1
  492. package/build-module/index.native.js.map +1 -1
  493. package/build-module/lock-unlock.js.map +1 -1
  494. package/build-module/private-apis.js +18 -1
  495. package/build-module/private-apis.js.map +1 -1
  496. package/build-module/store/actions.js.map +1 -1
  497. package/build-module/store/actions.native.js.map +1 -1
  498. package/build-module/store/constants.js +7 -0
  499. package/build-module/store/constants.js.map +1 -1
  500. package/build-module/store/defaults.js.map +1 -1
  501. package/build-module/store/index.js.map +1 -1
  502. package/build-module/store/local-autosave.js.map +1 -1
  503. package/build-module/store/private-actions.js +174 -4
  504. package/build-module/store/private-actions.js.map +1 -1
  505. package/build-module/store/private-selectors.js +1 -6
  506. package/build-module/store/private-selectors.js.map +1 -1
  507. package/build-module/store/reducer.js.map +1 -1
  508. package/build-module/store/reducer.native.js.map +1 -1
  509. package/build-module/store/selectors.js +1 -6
  510. package/build-module/store/selectors.js.map +1 -1
  511. package/build-module/store/selectors.native.js.map +1 -1
  512. package/build-module/store/utils/get-filtered-template-parts.js.map +1 -1
  513. package/build-module/store/utils/is-template-revertable.js +22 -0
  514. package/build-module/store/utils/is-template-revertable.js.map +1 -0
  515. package/build-module/store/utils/notice-builder.js.map +1 -1
  516. package/build-module/utils/get-template-part-icon.js.map +1 -1
  517. package/build-module/utils/index.js.map +1 -1
  518. package/build-module/utils/index.native.js.map +1 -1
  519. package/build-module/utils/media-upload/index.js.map +1 -1
  520. package/build-module/utils/media-upload/index.native.js.map +1 -1
  521. package/build-module/utils/terms.js.map +1 -1
  522. package/build-module/utils/url.js.map +1 -1
  523. package/build-style/style-rtl.css +498 -25
  524. package/build-style/style.css +498 -25
  525. package/package.json +35 -35
  526. package/src/bindings/post-meta.js +11 -27
  527. package/src/components/autosave-monitor/index.js +9 -0
  528. package/src/components/commands/index.js +20 -1
  529. package/src/components/document-tools/index.js +16 -14
  530. package/src/components/editor-canvas/edit-template-blocks-notification.js +16 -2
  531. package/src/components/editor-canvas/index.js +4 -4
  532. package/src/components/error-boundary/style.native.scss +1 -1
  533. package/src/components/global-keyboard-shortcuts/index.js +25 -0
  534. package/src/components/global-keyboard-shortcuts/register-shortcuts.js +20 -0
  535. package/src/components/index.js +4 -0
  536. package/src/components/keyboard-shortcut-help-modal/config.js +53 -0
  537. package/src/components/keyboard-shortcut-help-modal/dynamic-shortcut.js +43 -0
  538. package/src/components/keyboard-shortcut-help-modal/index.js +160 -0
  539. package/src/components/keyboard-shortcut-help-modal/shortcut.js +67 -0
  540. package/src/components/keyboard-shortcut-help-modal/style.scss +61 -0
  541. package/src/components/plugin-more-menu-item/index.js +73 -0
  542. package/src/components/plugin-post-status-info/index.js +63 -0
  543. package/src/components/plugin-sidebar/index.js +98 -0
  544. package/src/components/plugin-sidebar-more-menu-item/index.js +64 -0
  545. package/src/components/post-actions/actions.js +294 -14
  546. package/src/components/post-actions/index.js +156 -0
  547. package/src/components/post-actions/style.scss +3 -0
  548. package/src/components/post-card-panel/index.js +69 -9
  549. package/src/components/post-excerpt/check.js +8 -0
  550. package/src/components/post-publish-button/index.js +23 -36
  551. package/src/components/post-publish-button/label.js +54 -39
  552. package/src/components/post-publish-button/test/index.js +15 -26
  553. package/src/components/post-publish-button/test/label.js +44 -21
  554. package/src/components/post-saved-state/index.js +13 -6
  555. package/src/components/post-saved-state/test/index.js +4 -0
  556. package/src/components/post-schedule/panel.js +22 -0
  557. package/src/components/post-slug/index.js +50 -68
  558. package/src/components/post-slug/test/index.js +29 -6
  559. package/src/components/post-status/index.js +310 -0
  560. package/src/components/post-status/style.scss +75 -0
  561. package/src/components/post-switch-to-draft-button/index.js +5 -0
  562. package/src/components/post-template/block-theme.js +31 -22
  563. package/src/components/post-trash/check.js +19 -19
  564. package/src/components/post-trash/index.js +1 -0
  565. package/src/components/post-url/index.js +131 -101
  566. package/src/components/post-url/panel.js +20 -7
  567. package/src/components/post-url/style.scss +8 -6
  568. package/src/components/post-visibility/index.js +1 -0
  569. package/src/components/preferences-modal/index.js +26 -22
  570. package/src/components/provider/index.js +17 -8
  571. package/src/components/provider/use-auto-switch-editor-sidebars.js +49 -0
  572. package/src/components/provider/use-block-editor-settings.js +59 -33
  573. package/src/components/provider/with-registry-provider.js +1 -0
  574. package/src/components/start-page-options/index.js +135 -0
  575. package/src/components/start-page-options/style.scss +26 -0
  576. package/src/components/template-validation-notice/index.js +48 -50
  577. package/src/components/theme-support-check/index.js +9 -16
  578. package/src/components/theme-support-check/test/index.js +44 -43
  579. package/src/hooks/pattern-overrides.js +25 -14
  580. package/src/private-apis.js +15 -0
  581. package/src/store/constants.js +7 -0
  582. package/src/store/private-actions.js +269 -4
  583. package/src/store/private-selectors.js +1 -6
  584. package/src/store/selectors.js +1 -6
  585. package/src/store/utils/is-template-revertable.js +23 -0
  586. package/src/style.scss +6 -2
  587. package/src/components/post-publish-button/style.scss +0 -8
  588. package/src/components/provider/test/disable-non-page-content-blocks.js +0 -111
  589. package/src/components/template-validation-notice/style.scss +0 -9
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import classnames from 'classnames';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -10,7 +5,6 @@ import { Button } from '@wordpress/components';
10
5
  import { Component, createRef } from '@wordpress/element';
11
6
  import { withSelect, withDispatch } from '@wordpress/data';
12
7
  import { compose } from '@wordpress/compose';
13
- import { __ } from '@wordpress/i18n';
14
8
 
15
9
  /**
16
10
  * Internal dependencies
@@ -112,13 +106,14 @@ export class PostPublishButton extends Component {
112
106
  isSaving,
113
107
  isAutoSaving,
114
108
  isToggle,
115
- onSave,
116
- onStatusChange,
109
+ savePostStatus,
117
110
  onSubmit = noop,
118
111
  onToggle,
119
112
  visibility,
120
113
  hasNonPostEntityChanges,
121
114
  isSavingNonPostEntityChanges,
115
+ postStatus,
116
+ postStatusHasChanged,
122
117
  } = this.props;
123
118
 
124
119
  const isButtonDisabled =
@@ -135,15 +130,19 @@ export class PostPublishButton extends Component {
135
130
  ( ! isPublishable && ! forceIsDirty ) ) &&
136
131
  ( ! hasNonPostEntityChanges || isSavingNonPostEntityChanges );
137
132
 
138
- let publishStatus;
139
- if ( ! hasPublishAction ) {
133
+ // If the new status has not changed explicitely, we derive it from
134
+ // other factors, like having a publish action, etc.. We need to preserve
135
+ // this because it affects when to show the pre and post publish panels.
136
+ // If it has changed though explicitely, we need to respect that.
137
+ let publishStatus = 'publish';
138
+ if ( postStatusHasChanged ) {
139
+ publishStatus = postStatus;
140
+ } else if ( ! hasPublishAction ) {
140
141
  publishStatus = 'pending';
141
142
  } else if ( visibility === 'private' ) {
142
143
  publishStatus = 'private';
143
144
  } else if ( isBeingScheduled ) {
144
145
  publishStatus = 'future';
145
- } else {
146
- publishStatus = 'publish';
147
146
  }
148
147
 
149
148
  const onClickButton = () => {
@@ -151,10 +150,10 @@ export class PostPublishButton extends Component {
151
150
  return;
152
151
  }
153
152
  onSubmit();
154
- onStatusChange( publishStatus );
155
- onSave();
153
+ savePostStatus( publishStatus );
156
154
  };
157
155
 
156
+ // Callback to open the publish panel.
158
157
  const onClickToggle = () => {
159
158
  if ( isToggleDisabled ) {
160
159
  return;
@@ -179,33 +178,16 @@ export class PostPublishButton extends Component {
179
178
  size: 'compact',
180
179
  onClick: this.createOnClick( onClickToggle ),
181
180
  };
182
-
183
- const toggleChildren = isBeingScheduled
184
- ? __( 'Schedule…' )
185
- : __( 'Publish' );
186
- const buttonChildren = (
187
- <PublishButtonLabel
188
- hasNonPostEntityChanges={ hasNonPostEntityChanges }
189
- />
190
- );
191
-
192
181
  const componentProps = isToggle ? toggleProps : buttonProps;
193
- const componentChildren = isToggle ? toggleChildren : buttonChildren;
194
182
  return (
195
183
  <>
196
184
  <Button
197
185
  ref={ this.buttonNode }
198
186
  { ...componentProps }
199
- className={ classnames(
200
- componentProps.className,
201
- 'editor-post-publish-button__button',
202
- {
203
- 'has-changes-dot': hasNonPostEntityChanges,
204
- }
205
- ) }
187
+ className={ `${ componentProps.className } editor-post-publish-button__button` }
206
188
  size="compact"
207
189
  >
208
- { componentChildren }
190
+ <PublishButtonLabel />
209
191
  </Button>
210
192
  </>
211
193
  );
@@ -228,6 +210,8 @@ export default compose( [
228
210
  getCurrentPostId,
229
211
  hasNonPostEntityChanges,
230
212
  isSavingNonPostEntityChanges,
213
+ getEditedPostAttribute,
214
+ getPostEdits,
231
215
  } = select( editorStore );
232
216
  return {
233
217
  isSaving: isSavingPost(),
@@ -242,6 +226,8 @@ export default compose( [
242
226
  getCurrentPost()._links?.[ 'wp:action-publish' ] ?? false,
243
227
  postType: getCurrentPostType(),
244
228
  postId: getCurrentPostId(),
229
+ postStatus: getEditedPostAttribute( 'status' ),
230
+ postStatusHasChanged: getPostEdits()?.status,
245
231
  hasNonPostEntityChanges: hasNonPostEntityChanges(),
246
232
  isSavingNonPostEntityChanges: isSavingNonPostEntityChanges(),
247
233
  };
@@ -249,9 +235,10 @@ export default compose( [
249
235
  withDispatch( ( dispatch ) => {
250
236
  const { editPost, savePost } = dispatch( editorStore );
251
237
  return {
252
- onStatusChange: ( status ) =>
253
- editPost( { status }, { undoIgnore: true } ),
254
- onSave: savePost,
238
+ savePostStatus: ( status ) => {
239
+ editPost( { status }, { undoIgnore: true } );
240
+ savePost();
241
+ },
255
242
  };
256
243
  } ),
257
244
  ] )( PostPublishButton );
@@ -2,49 +2,27 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
- import { compose } from '@wordpress/compose';
6
- import { withSelect } from '@wordpress/data';
5
+ import { useSelect } from '@wordpress/data';
6
+ import { useViewportMatch } from '@wordpress/compose';
7
7
 
8
8
  /**
9
9
  * Internal dependencies
10
10
  */
11
11
  import { store as editorStore } from '../../store';
12
12
 
13
- export function PublishButtonLabel( {
14
- isPublished,
15
- isBeingScheduled,
16
- isSaving,
17
- isPublishing,
18
- hasPublishAction,
19
- isAutosaving,
20
- hasNonPostEntityChanges,
21
- } ) {
22
- if ( isPublishing ) {
23
- /* translators: button label text should, if possible, be under 16 characters. */
24
- return __( 'Publishing…' );
25
- } else if ( isPublished && isSaving && ! isAutosaving ) {
26
- /* translators: button label text should, if possible, be under 16 characters. */
27
- return __( 'Updating…' );
28
- } else if ( isBeingScheduled && isSaving && ! isAutosaving ) {
29
- /* translators: button label text should, if possible, be under 16 characters. */
30
- return __( 'Scheduling…' );
31
- }
32
-
33
- if ( ! hasPublishAction ) {
34
- return hasNonPostEntityChanges
35
- ? __( 'Submit for Review…' )
36
- : __( 'Submit for Review' );
37
- } else if ( isPublished ) {
38
- return hasNonPostEntityChanges ? __( 'Update…' ) : __( 'Update' );
39
- } else if ( isBeingScheduled ) {
40
- return hasNonPostEntityChanges ? __( 'Schedule…' ) : __( 'Schedule' );
41
- }
42
-
43
- return __( 'Publish' );
44
- }
45
-
46
- export default compose( [
47
- withSelect( ( select ) => {
13
+ export default function PublishButtonLabel() {
14
+ const isSmallerThanMediumViewport = useViewportMatch( 'medium', '<' );
15
+ const {
16
+ isPublished,
17
+ isBeingScheduled,
18
+ isSaving,
19
+ isPublishing,
20
+ hasPublishAction,
21
+ isAutosaving,
22
+ hasNonPostEntityChanges,
23
+ postStatusHasChanged,
24
+ postStatus,
25
+ } = useSelect( ( select ) => {
48
26
  const {
49
27
  isCurrentPostPublished,
50
28
  isEditedPostBeingScheduled,
@@ -53,6 +31,8 @@ export default compose( [
53
31
  getCurrentPost,
54
32
  getCurrentPostType,
55
33
  isAutosavingPost,
34
+ getPostEdits,
35
+ getEditedPostAttribute,
56
36
  } = select( editorStore );
57
37
  return {
58
38
  isPublished: isCurrentPostPublished(),
@@ -63,6 +43,41 @@ export default compose( [
63
43
  getCurrentPost()._links?.[ 'wp:action-publish' ] ?? false,
64
44
  postType: getCurrentPostType(),
65
45
  isAutosaving: isAutosavingPost(),
46
+ hasNonPostEntityChanges:
47
+ select( editorStore ).hasNonPostEntityChanges(),
48
+ postStatusHasChanged: !! getPostEdits()?.status,
49
+ postStatus: getEditedPostAttribute( 'status' ),
66
50
  };
67
- } ),
68
- ] )( PublishButtonLabel );
51
+ }, [] );
52
+ if ( isPublishing ) {
53
+ /* translators: button label text should, if possible, be under 16 characters. */
54
+ return __( 'Publishing…' );
55
+ } else if (
56
+ ( isPublished || isBeingScheduled ) &&
57
+ isSaving &&
58
+ ! isAutosaving
59
+ ) {
60
+ /* translators: button label text should, if possible, be under 16 characters. */
61
+ return __( 'Saving…' );
62
+ }
63
+ if ( ! hasPublishAction ) {
64
+ // TODO: this is because "Submit for review" string is too long in some languages.
65
+ // @see https://github.com/WordPress/gutenberg/issues/10475
66
+ return isSmallerThanMediumViewport
67
+ ? __( 'Publish' )
68
+ : __( 'Submit for Review' );
69
+ }
70
+ if (
71
+ hasNonPostEntityChanges ||
72
+ isPublished ||
73
+ ( postStatusHasChanged &&
74
+ ! [ 'future', 'publish' ].includes( postStatus ) ) ||
75
+ ( ! postStatusHasChanged && postStatus === 'future' )
76
+ ) {
77
+ return __( 'Save' );
78
+ }
79
+ if ( isBeingScheduled ) {
80
+ return __( 'Schedule' );
81
+ }
82
+ return __( 'Publish' );
83
+ }
@@ -81,13 +81,11 @@ describe( 'PostPublishButton', () => {
81
81
  describe( 'publish status', () => {
82
82
  it( 'should be pending for contributor', async () => {
83
83
  const user = userEvent.setup();
84
- const onStatusChange = jest.fn();
85
- const onSave = jest.fn();
84
+ const savePostStatus = jest.fn();
86
85
  render(
87
86
  <PostPublishButton
88
87
  hasPublishAction={ false }
89
- onStatusChange={ onStatusChange }
90
- onSave={ onSave }
88
+ savePostStatus={ savePostStatus }
91
89
  isSaveable
92
90
  isPublishable
93
91
  />
@@ -97,18 +95,16 @@ describe( 'PostPublishButton', () => {
97
95
  screen.getByRole( 'button', { name: 'Submit for Review' } )
98
96
  );
99
97
 
100
- expect( onStatusChange ).toHaveBeenCalledWith( 'pending' );
98
+ expect( savePostStatus ).toHaveBeenCalledWith( 'pending' );
101
99
  } );
102
100
 
103
101
  it( 'should be future for scheduled post', async () => {
104
102
  const user = userEvent.setup();
105
- const onStatusChange = jest.fn();
106
- const onSave = jest.fn();
103
+ const savePostStatus = jest.fn();
107
104
  render(
108
105
  <PostPublishButton
109
106
  hasPublishAction
110
- onStatusChange={ onStatusChange }
111
- onSave={ onSave }
107
+ savePostStatus={ savePostStatus }
112
108
  isBeingScheduled
113
109
  isSaveable
114
110
  isPublishable
@@ -119,18 +115,16 @@ describe( 'PostPublishButton', () => {
119
115
  screen.getByRole( 'button', { name: 'Submit for Review' } )
120
116
  );
121
117
 
122
- expect( onStatusChange ).toHaveBeenCalledWith( 'future' );
118
+ expect( savePostStatus ).toHaveBeenCalledWith( 'future' );
123
119
  } );
124
120
 
125
121
  it( 'should be private for private visibility', async () => {
126
122
  const user = userEvent.setup();
127
- const onStatusChange = jest.fn();
128
- const onSave = jest.fn();
123
+ const savePostStatus = jest.fn();
129
124
  render(
130
125
  <PostPublishButton
131
126
  hasPublishAction
132
- onStatusChange={ onStatusChange }
133
- onSave={ onSave }
127
+ savePostStatus={ savePostStatus }
134
128
  visibility="private"
135
129
  isSaveable
136
130
  isPublishable
@@ -141,18 +135,16 @@ describe( 'PostPublishButton', () => {
141
135
  screen.getByRole( 'button', { name: 'Submit for Review' } )
142
136
  );
143
137
 
144
- expect( onStatusChange ).toHaveBeenCalledWith( 'private' );
138
+ expect( savePostStatus ).toHaveBeenCalledWith( 'private' );
145
139
  } );
146
140
 
147
141
  it( 'should be publish otherwise', async () => {
148
142
  const user = userEvent.setup();
149
- const onStatusChange = jest.fn();
150
- const onSave = jest.fn();
143
+ const savePostStatus = jest.fn();
151
144
  render(
152
145
  <PostPublishButton
153
146
  hasPublishAction
154
- onStatusChange={ onStatusChange }
155
- onSave={ onSave }
147
+ savePostStatus={ savePostStatus }
156
148
  isSaveable
157
149
  isPublishable
158
150
  />
@@ -162,20 +154,18 @@ describe( 'PostPublishButton', () => {
162
154
  screen.getByRole( 'button', { name: 'Submit for Review' } )
163
155
  );
164
156
 
165
- expect( onStatusChange ).toHaveBeenCalledWith( 'publish' );
157
+ expect( savePostStatus ).toHaveBeenCalledWith( 'publish' );
166
158
  } );
167
159
  } );
168
160
 
169
161
  describe( 'click', () => {
170
162
  it( 'should save with status', async () => {
171
163
  const user = userEvent.setup();
172
- const onStatusChange = jest.fn();
173
- const onSave = jest.fn();
164
+ const savePostStatus = jest.fn();
174
165
  render(
175
166
  <PostPublishButton
176
167
  hasPublishAction
177
- onStatusChange={ onStatusChange }
178
- onSave={ onSave }
168
+ savePostStatus={ savePostStatus }
179
169
  isSaveable
180
170
  isPublishable
181
171
  />
@@ -185,8 +175,7 @@ describe( 'PostPublishButton', () => {
185
175
  screen.getByRole( 'button', { name: 'Submit for Review' } )
186
176
  );
187
177
 
188
- expect( onStatusChange ).toHaveBeenCalledWith( 'publish' );
189
- expect( onSave ).toHaveBeenCalled();
178
+ expect( savePostStatus ).toHaveBeenCalledWith( 'publish' );
190
179
  } );
191
180
  } );
192
181
 
@@ -1,67 +1,90 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useSelect } from '@wordpress/data';
5
+
1
6
  /**
2
7
  * Internal dependencies
3
8
  */
4
- import { PublishButtonLabel } from '../label';
9
+ import PublishButtonLabel from '../label';
10
+
11
+ jest.mock( '@wordpress/data/src/components/use-select', () => {
12
+ // This allows us to tweak the returned value on each test.
13
+ const mock = jest.fn();
14
+ return mock;
15
+ } );
5
16
 
6
17
  describe( 'PublishButtonLabel', () => {
7
18
  it( 'should show publishing if publishing in progress', () => {
8
- const label = PublishButtonLabel( {
19
+ useSelect.mockImplementation( () => ( {
9
20
  hasPublishAction: true,
10
21
  isPublishing: true,
11
- } );
22
+ } ) );
23
+ const label = PublishButtonLabel();
12
24
  expect( label ).toBe( 'Publishing…' );
13
25
  } );
14
26
 
15
- it( 'should show updating if published and saving in progress', () => {
16
- const label = PublishButtonLabel( {
27
+ it( 'should show saving if published and saving in progress', () => {
28
+ useSelect.mockImplementation( () => ( {
17
29
  hasPublishAction: true,
18
30
  isPublished: true,
19
31
  isSaving: true,
20
- } );
21
- expect( label ).toBe( 'Updating…' );
32
+ } ) );
33
+ const label = PublishButtonLabel();
34
+ expect( label ).toBe( 'Saving…' );
22
35
  } );
23
36
 
24
- it( 'should show scheduling if scheduled and saving in progress', () => {
25
- const label = PublishButtonLabel( {
37
+ it( 'should show saving if scheduled and saving in progress', () => {
38
+ useSelect.mockImplementation( () => ( {
26
39
  hasPublishAction: true,
27
40
  isBeingScheduled: true,
28
41
  isSaving: true,
29
- } );
30
- expect( label ).toBe( 'Scheduling…' );
42
+ } ) );
43
+ const label = PublishButtonLabel();
44
+ expect( label ).toBe( 'Saving…' );
31
45
  } );
32
46
 
33
47
  it( 'should show publish if not published and saving in progress', () => {
34
- const label = PublishButtonLabel( {
48
+ useSelect.mockImplementation( () => ( {
35
49
  hasPublishAction: true,
36
50
  isPublished: false,
37
51
  isSaving: true,
38
- } );
52
+ } ) );
53
+ const label = PublishButtonLabel();
39
54
  expect( label ).toBe( 'Publish' );
40
55
  } );
41
56
 
42
57
  it( 'should show submit for review for contributor', () => {
43
- const label = PublishButtonLabel( { hasPublishAction: false } );
58
+ useSelect.mockImplementation( () => ( {
59
+ hasPublishAction: false,
60
+ } ) );
61
+ const label = PublishButtonLabel();
44
62
  expect( label ).toBe( 'Submit for Review' );
45
63
  } );
46
64
 
47
- it( 'should show update for already published', () => {
48
- const label = PublishButtonLabel( {
65
+ it( 'should show save for already published', () => {
66
+ useSelect.mockImplementation( () => ( {
49
67
  hasPublishAction: true,
50
68
  isPublished: true,
51
- } );
52
- expect( label ).toBe( 'Update' );
69
+ } ) );
70
+ const label = PublishButtonLabel();
71
+ expect( label ).toBe( 'Save' );
53
72
  } );
54
73
 
55
74
  it( 'should show schedule for scheduled', () => {
56
- const label = PublishButtonLabel( {
75
+ useSelect.mockImplementation( () => ( {
57
76
  hasPublishAction: true,
58
77
  isBeingScheduled: true,
59
- } );
78
+ } ) );
79
+ const label = PublishButtonLabel();
60
80
  expect( label ).toBe( 'Schedule' );
61
81
  } );
62
82
 
63
83
  it( 'should show publish otherwise', () => {
64
- const label = PublishButtonLabel( { hasPublishAction: true } );
84
+ useSelect.mockImplementation( () => ( {
85
+ hasPublishAction: true,
86
+ } ) );
87
+ const label = PublishButtonLabel();
65
88
  expect( label ).toBe( 'Publish' );
66
89
  } );
67
90
  } );
@@ -40,13 +40,14 @@ export default function PostSavedState( { forceIsDirty } ) {
40
40
  isAutosaving,
41
41
  isDirty,
42
42
  isNew,
43
- isPending,
44
43
  isPublished,
45
44
  isSaveable,
46
45
  isSaving,
47
46
  isScheduled,
48
47
  hasPublishAction,
49
48
  showIconLabels,
49
+ postStatus,
50
+ postStatusHasChanged,
50
51
  } = useSelect(
51
52
  ( select ) => {
52
53
  const {
@@ -59,14 +60,13 @@ export default function PostSavedState( { forceIsDirty } ) {
59
60
  getCurrentPost,
60
61
  isAutosavingPost,
61
62
  getEditedPostAttribute,
63
+ getPostEdits,
62
64
  } = select( editorStore );
63
65
  const { get } = select( preferencesStore );
64
-
65
66
  return {
66
67
  isAutosaving: isAutosavingPost(),
67
68
  isDirty: forceIsDirty || isEditedPostDirty(),
68
69
  isNew: isEditedPostNew(),
69
- isPending: 'pending' === getEditedPostAttribute( 'status' ),
70
70
  isPublished: isCurrentPostPublished(),
71
71
  isSaving: isSavingPost(),
72
72
  isSaveable: isEditedPostSaveable(),
@@ -74,11 +74,13 @@ export default function PostSavedState( { forceIsDirty } ) {
74
74
  hasPublishAction:
75
75
  getCurrentPost()?._links?.[ 'wp:action-publish' ] ?? false,
76
76
  showIconLabels: get( 'core', 'showIconLabels' ),
77
+ postStatus: getEditedPostAttribute( 'status' ),
78
+ postStatusHasChanged: !! getPostEdits()?.status,
77
79
  };
78
80
  },
79
81
  [ forceIsDirty ]
80
82
  );
81
-
83
+ const isPending = postStatus === 'pending';
82
84
  const { savePost } = useDispatch( editorStore );
83
85
 
84
86
  const wasSaving = usePrevious( isSaving );
@@ -102,7 +104,13 @@ export default function PostSavedState( { forceIsDirty } ) {
102
104
  return null;
103
105
  }
104
106
 
105
- if ( isPublished || isScheduled ) {
107
+ if (
108
+ isPublished ||
109
+ isScheduled ||
110
+ ! [ 'pending', 'draft', 'auto-draft' ].includes( postStatus ) ||
111
+ ( postStatusHasChanged &&
112
+ [ 'pending', 'draft' ].includes( postStatus ) )
113
+ ) {
106
114
  return null;
107
115
  }
108
116
 
@@ -115,7 +123,6 @@ export default function PostSavedState( { forceIsDirty } ) {
115
123
  const isSaved = forceSavedMessage || ( ! isNew && ! isDirty );
116
124
  const isSavedState = isSaving || isSaved;
117
125
  const isDisabled = isSaving || isSaved || ! isSaveable;
118
-
119
126
  let text;
120
127
 
121
128
  if ( isSaving ) {
@@ -47,6 +47,7 @@ describe( 'PostSavedState', () => {
47
47
  isNew: true,
48
48
  isSaveable: false,
49
49
  isSaving: true,
50
+ postStatus: 'draft',
50
51
  } ) );
51
52
 
52
53
  render( <PostSavedState /> );
@@ -62,6 +63,7 @@ describe( 'PostSavedState', () => {
62
63
  isNew: true,
63
64
  isSaveable: false,
64
65
  isSaving: false,
66
+ postStatus: 'draft',
65
67
  } ) );
66
68
 
67
69
  render( <PostSavedState /> );
@@ -75,6 +77,7 @@ describe( 'PostSavedState', () => {
75
77
  isNew: false,
76
78
  isSaveable: true,
77
79
  isSaving: false,
80
+ postStatus: 'draft',
78
81
  } ) );
79
82
 
80
83
  render( <PostSavedState /> );
@@ -93,6 +96,7 @@ describe( 'PostSavedState', () => {
93
96
  isNew: false,
94
97
  isSaveable: true,
95
98
  isSaving: false,
99
+ postStatus: 'draft',
96
100
  } ) );
97
101
 
98
102
  // Simulate the viewport being considered large.
@@ -4,6 +4,7 @@
4
4
  import { Button, Dropdown } from '@wordpress/components';
5
5
  import { __, sprintf } from '@wordpress/i18n';
6
6
  import { useState, useMemo } from '@wordpress/element';
7
+ import { useSelect } from '@wordpress/data';
7
8
 
8
9
  /**
9
10
  * Internal dependencies
@@ -12,9 +13,27 @@ import PostScheduleCheck from './check';
12
13
  import PostScheduleForm from './index';
13
14
  import { usePostScheduleLabel } from './label';
14
15
  import PostPanelRow from '../post-panel-row';
16
+ import { store as editorStore } from '../../store';
17
+ import {
18
+ TEMPLATE_POST_TYPE,
19
+ TEMPLATE_PART_POST_TYPE,
20
+ PATTERN_POST_TYPE,
21
+ NAVIGATION_POST_TYPE,
22
+ } from '../../store/constants';
23
+
24
+ const DESIGN_POST_TYPES = [
25
+ TEMPLATE_POST_TYPE,
26
+ TEMPLATE_PART_POST_TYPE,
27
+ PATTERN_POST_TYPE,
28
+ NAVIGATION_POST_TYPE,
29
+ ];
15
30
 
16
31
  export default function PostSchedulePanel() {
17
32
  const [ popoverAnchor, setPopoverAnchor ] = useState( null );
33
+ const postType = useSelect(
34
+ ( select ) => select( editorStore ).getCurrentPostType(),
35
+ []
36
+ );
18
37
  // Memoize popoverProps to avoid returning a new object every time.
19
38
  const popoverProps = useMemo(
20
39
  () => ( {
@@ -29,6 +48,9 @@ export default function PostSchedulePanel() {
29
48
 
30
49
  const label = usePostScheduleLabel();
31
50
  const fullLabel = usePostScheduleLabel( { full: true } );
51
+ if ( DESIGN_POST_TYPES.includes( postType ) ) {
52
+ return null;
53
+ }
32
54
 
33
55
  return (
34
56
  <PostScheduleCheck>