@wordpress/edit-site 5.11.0 → 5.12.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 (587) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-page/index.js +105 -0
  3. package/build/components/add-new-page/index.js.map +1 -0
  4. package/build/components/add-new-template/add-custom-generic-template-modal-content.js +4 -5
  5. package/build/components/add-new-template/add-custom-generic-template-modal-content.js.map +1 -1
  6. package/build/components/add-new-template/add-custom-template-modal-content.js +19 -22
  7. package/build/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
  8. package/build/components/add-new-template/index.js +4 -5
  9. package/build/components/add-new-template/index.js.map +1 -1
  10. package/build/components/add-new-template/new-template-part.js +9 -12
  11. package/build/components/add-new-template/new-template-part.js.map +1 -1
  12. package/build/components/add-new-template/new-template.js +19 -26
  13. package/build/components/add-new-template/new-template.js.map +1 -1
  14. package/build/components/add-new-template/utils.js +71 -120
  15. package/build/components/add-new-template/utils.js.map +1 -1
  16. package/build/components/block-editor/back-button.js +1 -3
  17. package/build/components/block-editor/back-button.js.map +1 -1
  18. package/build/components/block-editor/block-inspector-button.js +3 -4
  19. package/build/components/block-editor/block-inspector-button.js.map +1 -1
  20. package/build/components/block-editor/editor-canvas.js +6 -7
  21. package/build/components/block-editor/editor-canvas.js.map +1 -1
  22. package/build/components/block-editor/index.js +13 -10
  23. package/build/components/block-editor/index.js.map +1 -1
  24. package/build/components/block-editor/inserter-media-categories.js +25 -42
  25. package/build/components/block-editor/inserter-media-categories.js.map +1 -1
  26. package/build/components/block-editor/resizable-editor.js +6 -7
  27. package/build/components/block-editor/resizable-editor.js.map +1 -1
  28. package/build/components/block-editor/resize-handle.js +5 -7
  29. package/build/components/block-editor/resize-handle.js.map +1 -1
  30. package/build/components/code-editor/code-editor-text-area.js +5 -6
  31. package/build/components/code-editor/code-editor-text-area.js.map +1 -1
  32. package/build/components/create-template-part-modal/index.js +25 -29
  33. package/build/components/create-template-part-modal/index.js.map +1 -1
  34. package/build/components/editor/index.js +26 -17
  35. package/build/components/editor/index.js.map +1 -1
  36. package/build/components/editor-canvas-container/index.js +7 -8
  37. package/build/components/editor-canvas-container/index.js.map +1 -1
  38. package/build/components/error-boundary/warning.js +8 -10
  39. package/build/components/error-boundary/warning.js.map +1 -1
  40. package/build/components/global-styles/block-preview-panel.js +7 -10
  41. package/build/components/global-styles/block-preview-panel.js.map +1 -1
  42. package/build/components/global-styles/color-indicator-wrapper.js +4 -5
  43. package/build/components/global-styles/color-indicator-wrapper.js.map +1 -1
  44. package/build/components/global-styles/color-palette-panel.js +3 -4
  45. package/build/components/global-styles/color-palette-panel.js.map +1 -1
  46. package/build/components/global-styles/dimensions-panel.js +1 -3
  47. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  48. package/build/components/global-styles/global-styles-provider.js +8 -10
  49. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  50. package/build/components/global-styles/gradients-palette-panel.js +3 -4
  51. package/build/components/global-styles/gradients-palette-panel.js.map +1 -1
  52. package/build/components/global-styles/header.js +4 -5
  53. package/build/components/global-styles/header.js.map +1 -1
  54. package/build/components/global-styles/icon-with-current-color.js +4 -5
  55. package/build/components/global-styles/icon-with-current-color.js.map +1 -1
  56. package/build/components/global-styles/navigation-button.js +5 -6
  57. package/build/components/global-styles/navigation-button.js.map +1 -1
  58. package/build/components/global-styles/palette.js +10 -14
  59. package/build/components/global-styles/palette.js.map +1 -1
  60. package/build/components/global-styles/preview.js +41 -51
  61. package/build/components/global-styles/preview.js.map +1 -1
  62. package/build/components/global-styles/screen-block-list.js +4 -7
  63. package/build/components/global-styles/screen-block-list.js.map +1 -1
  64. package/build/components/global-styles/screen-block.js +9 -10
  65. package/build/components/global-styles/screen-block.js.map +1 -1
  66. package/build/components/global-styles/screen-color-palette.js +3 -4
  67. package/build/components/global-styles/screen-color-palette.js.map +1 -1
  68. package/build/components/global-styles/screen-revisions/index.js +8 -8
  69. package/build/components/global-styles/screen-revisions/index.js.map +1 -1
  70. package/build/components/global-styles/screen-revisions/revisions-buttons.js +14 -19
  71. package/build/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  72. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js +5 -11
  73. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  74. package/build/components/global-styles/screen-root.js +3 -3
  75. package/build/components/global-styles/screen-root.js.map +1 -1
  76. package/build/components/global-styles/screen-typography-element.js +3 -4
  77. package/build/components/global-styles/screen-typography-element.js.map +1 -1
  78. package/build/components/global-styles/screen-typography.js +5 -6
  79. package/build/components/global-styles/screen-typography.js.map +1 -1
  80. package/build/components/global-styles/style-variations-container.js +5 -6
  81. package/build/components/global-styles/style-variations-container.js.map +1 -1
  82. package/build/components/global-styles/subtitle.js +4 -5
  83. package/build/components/global-styles/subtitle.js.map +1 -1
  84. package/build/components/global-styles/typography-panel.js +4 -5
  85. package/build/components/global-styles/typography-panel.js.map +1 -1
  86. package/build/components/global-styles/typography-preview.js +5 -6
  87. package/build/components/global-styles/typography-preview.js.map +1 -1
  88. package/build/components/global-styles/ui.js +40 -21
  89. package/build/components/global-styles/ui.js.map +1 -1
  90. package/build/components/global-styles/variations-panel.js +5 -6
  91. package/build/components/global-styles/variations-panel.js.map +1 -1
  92. package/build/components/header-edit-mode/document-actions/index.js +102 -23
  93. package/build/components/header-edit-mode/document-actions/index.js.map +1 -1
  94. package/build/components/header-edit-mode/index.js +2 -6
  95. package/build/components/header-edit-mode/index.js.map +1 -1
  96. package/build/components/header-edit-mode/more-menu/index.js +49 -53
  97. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  98. package/build/components/header-edit-mode/tools-more-menu-group/index.js +5 -14
  99. package/build/components/header-edit-mode/tools-more-menu-group/index.js.map +1 -1
  100. package/build/components/keyboard-shortcut-help-modal/dynamic-shortcut.js +3 -4
  101. package/build/components/keyboard-shortcut-help-modal/dynamic-shortcut.js.map +1 -1
  102. package/build/components/keyboard-shortcut-help-modal/index.js +41 -51
  103. package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  104. package/build/components/keyboard-shortcut-help-modal/shortcut.js +10 -12
  105. package/build/components/keyboard-shortcut-help-modal/shortcut.js.map +1 -1
  106. package/build/components/layout/index.js +4 -12
  107. package/build/components/layout/index.js.map +1 -1
  108. package/build/components/list/added-by.js +13 -23
  109. package/build/components/list/added-by.js.map +1 -1
  110. package/build/components/list/header.js +4 -7
  111. package/build/components/list/header.js.map +1 -1
  112. package/build/components/list/index.js +2 -4
  113. package/build/components/list/index.js.map +1 -1
  114. package/build/components/list/table.js +35 -40
  115. package/build/components/list/table.js.map +1 -1
  116. package/build/components/page-actions/delete-page-menu-item.js +70 -0
  117. package/build/components/page-actions/delete-page-menu-item.js.map +1 -0
  118. package/build/components/page-actions/index.js +43 -0
  119. package/build/components/page-actions/index.js.map +1 -0
  120. package/build/components/page-content-lock/constants.js +9 -0
  121. package/build/components/page-content-lock/constants.js.map +1 -0
  122. package/build/components/page-content-lock/index.js +29 -0
  123. package/build/components/page-content-lock/index.js.map +1 -0
  124. package/build/components/page-content-lock/use-disable-non-content-blocks.js +49 -0
  125. package/build/components/page-content-lock/use-disable-non-content-blocks.js.map +1 -0
  126. package/build/components/page-content-lock/use-page-content-lock-notifications.js +112 -0
  127. package/build/components/page-content-lock/use-page-content-lock-notifications.js.map +1 -0
  128. package/build/components/preferences-modal/index.js +4 -5
  129. package/build/components/preferences-modal/index.js.map +1 -1
  130. package/build/components/resizable-frame/index.js +20 -12
  131. package/build/components/resizable-frame/index.js.map +1 -1
  132. package/build/components/revisions/index.js +11 -14
  133. package/build/components/revisions/index.js.map +1 -1
  134. package/build/components/routes/link.js +8 -12
  135. package/build/components/routes/link.js.map +1 -1
  136. package/build/components/routes/use-title.js +1 -5
  137. package/build/components/routes/use-title.js.map +1 -1
  138. package/build/components/save-button/index.js +13 -7
  139. package/build/components/save-button/index.js.map +1 -1
  140. package/build/components/save-hub/index.js +97 -5
  141. package/build/components/save-hub/index.js.map +1 -1
  142. package/build/components/save-panel/index.js +63 -17
  143. package/build/components/save-panel/index.js.map +1 -1
  144. package/build/components/secondary-sidebar/list-view-sidebar.js +8 -3
  145. package/build/components/secondary-sidebar/list-view-sidebar.js.map +1 -1
  146. package/build/components/sidebar/index.js +7 -5
  147. package/build/components/sidebar/index.js.map +1 -1
  148. package/build/components/sidebar-edit-mode/default-sidebar.js +11 -12
  149. package/build/components/sidebar-edit-mode/default-sidebar.js.map +1 -1
  150. package/build/components/sidebar-edit-mode/index.js +13 -10
  151. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  152. package/build/components/sidebar-edit-mode/page-panels/content-blocks-list.js +79 -0
  153. package/build/components/sidebar-edit-mode/page-panels/content-blocks-list.js.map +1 -0
  154. package/build/components/sidebar-edit-mode/page-panels/index.js +86 -0
  155. package/build/components/sidebar-edit-mode/page-panels/index.js.map +1 -0
  156. package/build/components/sidebar-edit-mode/plugin-sidebar/index.js +4 -5
  157. package/build/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -1
  158. package/build/components/sidebar-edit-mode/settings-header/index.js +39 -21
  159. package/build/components/sidebar-edit-mode/settings-header/index.js.map +1 -1
  160. package/build/components/sidebar-edit-mode/sidebar-card/index.js +46 -0
  161. package/build/components/sidebar-edit-mode/sidebar-card/index.js.map +1 -0
  162. package/build/components/sidebar-edit-mode/sidebar-fixed-bottom.js +3 -4
  163. package/build/components/sidebar-edit-mode/sidebar-fixed-bottom.js.map +1 -1
  164. package/build/components/sidebar-edit-mode/{template-card → template-panel}/index.js +22 -18
  165. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -0
  166. package/build/components/sidebar-edit-mode/{template-revisions/index.js → template-panel/last-revision.js} +7 -8
  167. package/{build-module/components/sidebar-edit-mode/template-revisions/index.js.map → build/components/sidebar-edit-mode/template-panel/last-revision.js.map} +1 -1
  168. package/build/components/sidebar-edit-mode/{template-card → template-panel}/template-actions.js +12 -16
  169. package/build/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -0
  170. package/build/components/sidebar-edit-mode/{template-card → template-panel}/template-areas.js +15 -19
  171. package/build/components/sidebar-edit-mode/template-panel/template-areas.js.map +1 -0
  172. package/build/components/sidebar-navigation-item/index.js +7 -8
  173. package/build/components/sidebar-navigation-item/index.js.map +1 -1
  174. package/build/components/sidebar-navigation-screen/index.js +21 -14
  175. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  176. package/build/components/sidebar-navigation-screen-global-styles/index.js +103 -13
  177. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  178. package/build/components/sidebar-navigation-screen-navigation-item/index.js +3 -5
  179. package/build/components/sidebar-navigation-screen-navigation-item/index.js.map +1 -1
  180. package/build/components/sidebar-navigation-screen-navigation-menu/index.js +7 -10
  181. package/build/components/sidebar-navigation-screen-navigation-menu/index.js.map +1 -1
  182. package/build/components/sidebar-navigation-screen-navigation-menus/index.js +17 -23
  183. package/build/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  184. package/build/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js +20 -23
  185. package/build/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js.map +1 -1
  186. package/build/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +4 -5
  187. package/build/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js.map +1 -1
  188. package/build/components/sidebar-navigation-screen-navigation-menus/navigator-button.js +8 -9
  189. package/build/components/sidebar-navigation-screen-navigation-menus/navigator-button.js.map +1 -1
  190. package/build/components/sidebar-navigation-screen-page/index.js +81 -10
  191. package/build/components/sidebar-navigation-screen-page/index.js.map +1 -1
  192. package/build/components/sidebar-navigation-screen-page/page-details.js +148 -0
  193. package/build/components/sidebar-navigation-screen-page/page-details.js.map +1 -0
  194. package/build/components/sidebar-navigation-screen-page/status-label.js +110 -0
  195. package/build/components/sidebar-navigation-screen-page/status-label.js.map +1 -0
  196. package/build/components/sidebar-navigation-screen-pages/index.js +128 -17
  197. package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  198. package/build/components/sidebar-navigation-screen-template/index.js +22 -16
  199. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  200. package/build/components/sidebar-navigation-screen-template-part/index.js +105 -0
  201. package/build/components/sidebar-navigation-screen-template-part/index.js.map +1 -0
  202. package/build/components/sidebar-navigation-screen-templates/index.js +13 -18
  203. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  204. package/build/components/sidebar-navigation-subtitle/index.js +3 -4
  205. package/build/components/sidebar-navigation-subtitle/index.js.map +1 -1
  206. package/build/components/site-hub/index.js +20 -13
  207. package/build/components/site-hub/index.js.map +1 -1
  208. package/build/components/site-icon/index.js +4 -5
  209. package/build/components/site-icon/index.js.map +1 -1
  210. package/build/components/start-template-options/index.js +15 -21
  211. package/build/components/start-template-options/index.js.map +1 -1
  212. package/build/components/style-book/index.js +35 -39
  213. package/build/components/style-book/index.js.map +1 -1
  214. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +2 -2
  215. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  216. package/build/components/sync-state-with-url/use-sync-path-with-url.js +9 -10
  217. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  218. package/build/components/{list/actions → template-actions}/index.js +34 -31
  219. package/build/components/template-actions/index.js.map +1 -0
  220. package/build/components/{list/actions → template-actions}/rename-menu-item.js +4 -5
  221. package/build/components/template-actions/rename-menu-item.js.map +1 -0
  222. package/build/components/template-part-converter/convert-to-regular.js +4 -5
  223. package/build/components/template-part-converter/convert-to-regular.js.map +1 -1
  224. package/build/components/template-part-converter/convert-to-template-part.js +8 -10
  225. package/build/components/template-part-converter/convert-to-template-part.js.map +1 -1
  226. package/build/components/template-part-converter/index.js +12 -18
  227. package/build/components/template-part-converter/index.js.map +1 -1
  228. package/build/components/welcome-guide/image.js +4 -5
  229. package/build/components/welcome-guide/image.js.map +1 -1
  230. package/build/hooks/commands/use-edit-mode-commands.js +6 -8
  231. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  232. package/build/hooks/push-changes-to-global-styles/index.js +11 -8
  233. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  234. package/build/hooks/template-part-edit.js +5 -6
  235. package/build/hooks/template-part-edit.js.map +1 -1
  236. package/build/index.js +3 -6
  237. package/build/index.js.map +1 -1
  238. package/build/store/actions.js +129 -125
  239. package/build/store/actions.js.map +1 -1
  240. package/build/store/private-actions.js +7 -10
  241. package/build/store/private-actions.js.map +1 -1
  242. package/build/store/reducer.js +32 -33
  243. package/build/store/reducer.js.map +1 -1
  244. package/build/store/selectors.js +35 -11
  245. package/build/store/selectors.js.map +1 -1
  246. package/build/store/utils.js +1 -3
  247. package/build/store/utils.js.map +1 -1
  248. package/build/utils/get-is-list-page.js +3 -4
  249. package/build/utils/get-is-list-page.js.map +1 -1
  250. package/build/utils/is-previewing-theme.js +1 -3
  251. package/build/utils/is-previewing-theme.js.map +1 -1
  252. package/build/utils/is-template-revertable.js +1 -1
  253. package/build/utils/is-template-revertable.js.map +1 -1
  254. package/build-module/components/add-new-page/index.js +93 -0
  255. package/build-module/components/add-new-page/index.js.map +1 -0
  256. package/build-module/components/add-new-template/add-custom-generic-template-modal-content.js +4 -5
  257. package/build-module/components/add-new-template/add-custom-generic-template-modal-content.js.map +1 -1
  258. package/build-module/components/add-new-template/add-custom-template-modal-content.js +19 -22
  259. package/build-module/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
  260. package/build-module/components/add-new-template/index.js +4 -5
  261. package/build-module/components/add-new-template/index.js.map +1 -1
  262. package/build-module/components/add-new-template/new-template-part.js +9 -12
  263. package/build-module/components/add-new-template/new-template-part.js.map +1 -1
  264. package/build-module/components/add-new-template/new-template.js +18 -26
  265. package/build-module/components/add-new-template/new-template.js.map +1 -1
  266. package/build-module/components/add-new-template/utils.js +71 -120
  267. package/build-module/components/add-new-template/utils.js.map +1 -1
  268. package/build-module/components/block-editor/back-button.js +1 -3
  269. package/build-module/components/block-editor/back-button.js.map +1 -1
  270. package/build-module/components/block-editor/block-inspector-button.js +3 -4
  271. package/build-module/components/block-editor/block-inspector-button.js.map +1 -1
  272. package/build-module/components/block-editor/editor-canvas.js +6 -7
  273. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  274. package/build-module/components/block-editor/index.js +12 -10
  275. package/build-module/components/block-editor/index.js.map +1 -1
  276. package/build-module/components/block-editor/inserter-media-categories.js +25 -42
  277. package/build-module/components/block-editor/inserter-media-categories.js.map +1 -1
  278. package/build-module/components/block-editor/resizable-editor.js +6 -7
  279. package/build-module/components/block-editor/resizable-editor.js.map +1 -1
  280. package/build-module/components/block-editor/resize-handle.js +5 -7
  281. package/build-module/components/block-editor/resize-handle.js.map +1 -1
  282. package/build-module/components/code-editor/code-editor-text-area.js +5 -6
  283. package/build-module/components/code-editor/code-editor-text-area.js.map +1 -1
  284. package/build-module/components/create-template-part-modal/index.js +25 -29
  285. package/build-module/components/create-template-part-modal/index.js.map +1 -1
  286. package/build-module/components/editor/index.js +26 -17
  287. package/build-module/components/editor/index.js.map +1 -1
  288. package/build-module/components/editor-canvas-container/index.js +7 -8
  289. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  290. package/build-module/components/error-boundary/warning.js +8 -10
  291. package/build-module/components/error-boundary/warning.js.map +1 -1
  292. package/build-module/components/global-styles/block-preview-panel.js +7 -10
  293. package/build-module/components/global-styles/block-preview-panel.js.map +1 -1
  294. package/build-module/components/global-styles/color-indicator-wrapper.js +4 -5
  295. package/build-module/components/global-styles/color-indicator-wrapper.js.map +1 -1
  296. package/build-module/components/global-styles/color-palette-panel.js +3 -4
  297. package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
  298. package/build-module/components/global-styles/dimensions-panel.js +1 -3
  299. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  300. package/build-module/components/global-styles/global-styles-provider.js +8 -10
  301. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  302. package/build-module/components/global-styles/gradients-palette-panel.js +3 -4
  303. package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -1
  304. package/build-module/components/global-styles/header.js +4 -5
  305. package/build-module/components/global-styles/header.js.map +1 -1
  306. package/build-module/components/global-styles/icon-with-current-color.js +4 -5
  307. package/build-module/components/global-styles/icon-with-current-color.js.map +1 -1
  308. package/build-module/components/global-styles/navigation-button.js +5 -6
  309. package/build-module/components/global-styles/navigation-button.js.map +1 -1
  310. package/build-module/components/global-styles/palette.js +10 -14
  311. package/build-module/components/global-styles/palette.js.map +1 -1
  312. package/build-module/components/global-styles/preview.js +41 -51
  313. package/build-module/components/global-styles/preview.js.map +1 -1
  314. package/build-module/components/global-styles/screen-block-list.js +4 -7
  315. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  316. package/build-module/components/global-styles/screen-block.js +9 -10
  317. package/build-module/components/global-styles/screen-block.js.map +1 -1
  318. package/build-module/components/global-styles/screen-color-palette.js +3 -4
  319. package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
  320. package/build-module/components/global-styles/screen-revisions/index.js +8 -8
  321. package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
  322. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js +14 -19
  323. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  324. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js +5 -10
  325. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  326. package/build-module/components/global-styles/screen-root.js +3 -3
  327. package/build-module/components/global-styles/screen-root.js.map +1 -1
  328. package/build-module/components/global-styles/screen-typography-element.js +3 -4
  329. package/build-module/components/global-styles/screen-typography-element.js.map +1 -1
  330. package/build-module/components/global-styles/screen-typography.js +5 -6
  331. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  332. package/build-module/components/global-styles/style-variations-container.js +5 -6
  333. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  334. package/build-module/components/global-styles/subtitle.js +4 -5
  335. package/build-module/components/global-styles/subtitle.js.map +1 -1
  336. package/build-module/components/global-styles/typography-panel.js +4 -5
  337. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  338. package/build-module/components/global-styles/typography-preview.js +5 -6
  339. package/build-module/components/global-styles/typography-preview.js.map +1 -1
  340. package/build-module/components/global-styles/ui.js +40 -21
  341. package/build-module/components/global-styles/ui.js.map +1 -1
  342. package/build-module/components/global-styles/variations-panel.js +5 -6
  343. package/build-module/components/global-styles/variations-panel.js.map +1 -1
  344. package/build-module/components/header-edit-mode/document-actions/index.js +102 -24
  345. package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -1
  346. package/build-module/components/header-edit-mode/index.js +2 -6
  347. package/build-module/components/header-edit-mode/index.js.map +1 -1
  348. package/build-module/components/header-edit-mode/more-menu/index.js +49 -53
  349. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  350. package/build-module/components/header-edit-mode/tools-more-menu-group/index.js +5 -13
  351. package/build-module/components/header-edit-mode/tools-more-menu-group/index.js.map +1 -1
  352. package/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.js +3 -4
  353. package/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.js.map +1 -1
  354. package/build-module/components/keyboard-shortcut-help-modal/index.js +39 -49
  355. package/build-module/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  356. package/build-module/components/keyboard-shortcut-help-modal/shortcut.js +10 -12
  357. package/build-module/components/keyboard-shortcut-help-modal/shortcut.js.map +1 -1
  358. package/build-module/components/layout/index.js +4 -12
  359. package/build-module/components/layout/index.js.map +1 -1
  360. package/build-module/components/list/added-by.js +13 -23
  361. package/build-module/components/list/added-by.js.map +1 -1
  362. package/build-module/components/list/header.js +4 -7
  363. package/build-module/components/list/header.js.map +1 -1
  364. package/build-module/components/list/index.js +2 -4
  365. package/build-module/components/list/index.js.map +1 -1
  366. package/build-module/components/list/table.js +34 -39
  367. package/build-module/components/list/table.js.map +1 -1
  368. package/build-module/components/page-actions/delete-page-menu-item.js +58 -0
  369. package/build-module/components/page-actions/delete-page-menu-item.js.map +1 -0
  370. package/build-module/components/page-actions/index.js +30 -0
  371. package/build-module/components/page-actions/index.js.map +1 -0
  372. package/build-module/components/page-content-lock/constants.js +2 -0
  373. package/build-module/components/page-content-lock/constants.js.map +1 -0
  374. package/build-module/components/page-content-lock/index.js +14 -0
  375. package/build-module/components/page-content-lock/index.js.map +1 -0
  376. package/build-module/components/page-content-lock/use-disable-non-content-blocks.js +36 -0
  377. package/build-module/components/page-content-lock/use-disable-non-content-blocks.js.map +1 -0
  378. package/build-module/components/page-content-lock/use-page-content-lock-notifications.js +98 -0
  379. package/build-module/components/page-content-lock/use-page-content-lock-notifications.js.map +1 -0
  380. package/build-module/components/preferences-modal/index.js +4 -5
  381. package/build-module/components/preferences-modal/index.js.map +1 -1
  382. package/build-module/components/resizable-frame/index.js +20 -12
  383. package/build-module/components/resizable-frame/index.js.map +1 -1
  384. package/build-module/components/revisions/index.js +11 -13
  385. package/build-module/components/revisions/index.js.map +1 -1
  386. package/build-module/components/routes/link.js +8 -12
  387. package/build-module/components/routes/link.js.map +1 -1
  388. package/build-module/components/routes/use-title.js +1 -5
  389. package/build-module/components/routes/use-title.js.map +1 -1
  390. package/build-module/components/save-button/index.js +13 -7
  391. package/build-module/components/save-button/index.js.map +1 -1
  392. package/build-module/components/save-hub/index.js +95 -8
  393. package/build-module/components/save-hub/index.js.map +1 -1
  394. package/build-module/components/save-panel/index.js +62 -19
  395. package/build-module/components/save-panel/index.js.map +1 -1
  396. package/build-module/components/secondary-sidebar/list-view-sidebar.js +9 -3
  397. package/build-module/components/secondary-sidebar/list-view-sidebar.js.map +1 -1
  398. package/build-module/components/sidebar/index.js +6 -5
  399. package/build-module/components/sidebar/index.js.map +1 -1
  400. package/build-module/components/sidebar-edit-mode/default-sidebar.js +11 -12
  401. package/build-module/components/sidebar-edit-mode/default-sidebar.js.map +1 -1
  402. package/build-module/components/sidebar-edit-mode/index.js +14 -11
  403. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  404. package/build-module/components/sidebar-edit-mode/page-panels/content-blocks-list.js +67 -0
  405. package/build-module/components/sidebar-edit-mode/page-panels/content-blocks-list.js.map +1 -0
  406. package/build-module/components/sidebar-edit-mode/page-panels/index.js +67 -0
  407. package/build-module/components/sidebar-edit-mode/page-panels/index.js.map +1 -0
  408. package/build-module/components/sidebar-edit-mode/plugin-sidebar/index.js +4 -5
  409. package/build-module/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -1
  410. package/build-module/components/sidebar-edit-mode/settings-header/index.js +36 -22
  411. package/build-module/components/sidebar-edit-mode/settings-header/index.js.map +1 -1
  412. package/build-module/components/sidebar-edit-mode/sidebar-card/index.js +35 -0
  413. package/build-module/components/sidebar-edit-mode/sidebar-card/index.js.map +1 -0
  414. package/build-module/components/sidebar-edit-mode/sidebar-fixed-bottom.js +3 -4
  415. package/build-module/components/sidebar-edit-mode/sidebar-fixed-bottom.js.map +1 -1
  416. package/build-module/components/sidebar-edit-mode/{template-card → template-panel}/index.js +20 -19
  417. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -0
  418. package/build-module/components/sidebar-edit-mode/{template-revisions/index.js → template-panel/last-revision.js} +7 -8
  419. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -0
  420. package/build-module/components/sidebar-edit-mode/{template-card → template-panel}/template-actions.js +12 -16
  421. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -0
  422. package/build-module/components/sidebar-edit-mode/{template-card → template-panel}/template-areas.js +15 -19
  423. package/build-module/components/sidebar-edit-mode/template-panel/template-areas.js.map +1 -0
  424. package/build-module/components/sidebar-navigation-item/index.js +7 -8
  425. package/build-module/components/sidebar-navigation-item/index.js.map +1 -1
  426. package/build-module/components/sidebar-navigation-screen/index.js +22 -15
  427. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  428. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +104 -14
  429. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  430. package/build-module/components/sidebar-navigation-screen-navigation-item/index.js +3 -5
  431. package/build-module/components/sidebar-navigation-screen-navigation-item/index.js.map +1 -1
  432. package/build-module/components/sidebar-navigation-screen-navigation-menu/index.js +7 -10
  433. package/build-module/components/sidebar-navigation-screen-navigation-menu/index.js.map +1 -1
  434. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js +17 -23
  435. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  436. package/build-module/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js +20 -23
  437. package/build-module/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js.map +1 -1
  438. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +4 -5
  439. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js.map +1 -1
  440. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigator-button.js +8 -9
  441. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigator-button.js.map +1 -1
  442. package/build-module/components/sidebar-navigation-screen-page/index.js +79 -14
  443. package/build-module/components/sidebar-navigation-screen-page/index.js.map +1 -1
  444. package/build-module/components/sidebar-navigation-screen-page/page-details.js +131 -0
  445. package/build-module/components/sidebar-navigation-screen-page/page-details.js.map +1 -0
  446. package/build-module/components/sidebar-navigation-screen-page/status-label.js +97 -0
  447. package/build-module/components/sidebar-navigation-screen-page/status-label.js.map +1 -0
  448. package/build-module/components/sidebar-navigation-screen-pages/index.js +125 -19
  449. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  450. package/build-module/components/sidebar-navigation-screen-template/index.js +22 -17
  451. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  452. package/build-module/components/sidebar-navigation-screen-template-part/index.js +86 -0
  453. package/build-module/components/sidebar-navigation-screen-template-part/index.js.map +1 -0
  454. package/build-module/components/sidebar-navigation-screen-templates/index.js +13 -18
  455. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  456. package/build-module/components/sidebar-navigation-subtitle/index.js +3 -4
  457. package/build-module/components/sidebar-navigation-subtitle/index.js.map +1 -1
  458. package/build-module/components/site-hub/index.js +21 -14
  459. package/build-module/components/site-hub/index.js.map +1 -1
  460. package/build-module/components/site-icon/index.js +4 -5
  461. package/build-module/components/site-icon/index.js.map +1 -1
  462. package/build-module/components/start-template-options/index.js +15 -21
  463. package/build-module/components/start-template-options/index.js.map +1 -1
  464. package/build-module/components/style-book/index.js +35 -39
  465. package/build-module/components/style-book/index.js.map +1 -1
  466. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +2 -2
  467. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  468. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +9 -10
  469. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  470. package/build-module/components/{list/actions → template-actions}/index.js +34 -31
  471. package/build-module/components/template-actions/index.js.map +1 -0
  472. package/build-module/components/{list/actions → template-actions}/rename-menu-item.js +4 -5
  473. package/build-module/components/template-actions/rename-menu-item.js.map +1 -0
  474. package/build-module/components/template-part-converter/convert-to-regular.js +4 -5
  475. package/build-module/components/template-part-converter/convert-to-regular.js.map +1 -1
  476. package/build-module/components/template-part-converter/convert-to-template-part.js +8 -10
  477. package/build-module/components/template-part-converter/convert-to-template-part.js.map +1 -1
  478. package/build-module/components/template-part-converter/index.js +12 -18
  479. package/build-module/components/template-part-converter/index.js.map +1 -1
  480. package/build-module/components/welcome-guide/image.js +4 -5
  481. package/build-module/components/welcome-guide/image.js.map +1 -1
  482. package/build-module/hooks/commands/use-edit-mode-commands.js +6 -8
  483. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  484. package/build-module/hooks/push-changes-to-global-styles/index.js +11 -8
  485. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  486. package/build-module/hooks/template-part-edit.js +5 -6
  487. package/build-module/hooks/template-part-edit.js.map +1 -1
  488. package/build-module/index.js +3 -6
  489. package/build-module/index.js.map +1 -1
  490. package/build-module/store/actions.js +125 -126
  491. package/build-module/store/actions.js.map +1 -1
  492. package/build-module/store/private-actions.js +7 -10
  493. package/build-module/store/private-actions.js.map +1 -1
  494. package/build-module/store/reducer.js +30 -33
  495. package/build-module/store/reducer.js.map +1 -1
  496. package/build-module/store/selectors.js +31 -11
  497. package/build-module/store/selectors.js.map +1 -1
  498. package/build-module/store/utils.js +1 -3
  499. package/build-module/store/utils.js.map +1 -1
  500. package/build-module/utils/get-is-list-page.js +3 -4
  501. package/build-module/utils/get-is-list-page.js.map +1 -1
  502. package/build-module/utils/is-previewing-theme.js +1 -3
  503. package/build-module/utils/is-previewing-theme.js.map +1 -1
  504. package/build-module/utils/is-template-revertable.js +1 -1
  505. package/build-module/utils/is-template-revertable.js.map +1 -1
  506. package/build-style/style-rtl.css +281 -59
  507. package/build-style/style.css +281 -59
  508. package/package.json +39 -36
  509. package/src/components/add-new-page/index.js +105 -0
  510. package/src/components/add-new-template/new-template.js +2 -1
  511. package/src/components/block-editor/index.js +25 -14
  512. package/src/components/editor/index.js +14 -8
  513. package/src/components/editor/style.scss +6 -11
  514. package/src/components/global-styles/screen-revisions/use-global-styles-revisions.js +7 -5
  515. package/src/components/global-styles/ui.js +28 -0
  516. package/src/components/header-edit-mode/document-actions/index.js +126 -32
  517. package/src/components/header-edit-mode/document-actions/style.scss +64 -9
  518. package/src/components/header-edit-mode/tools-more-menu-group/index.js +1 -6
  519. package/src/components/layout/index.js +3 -9
  520. package/src/components/list/table.js +6 -2
  521. package/src/components/page-actions/delete-page-menu-item.js +71 -0
  522. package/src/components/page-actions/index.js +36 -0
  523. package/src/components/page-content-lock/constants.js +5 -0
  524. package/src/components/page-content-lock/index.js +14 -0
  525. package/src/components/page-content-lock/use-disable-non-content-blocks.js +44 -0
  526. package/src/components/page-content-lock/use-page-content-lock-notifications.js +128 -0
  527. package/src/components/resizable-frame/index.js +15 -5
  528. package/src/components/resizable-frame/style.scss +20 -18
  529. package/src/components/revisions/index.js +6 -7
  530. package/src/components/save-button/index.js +6 -0
  531. package/src/components/save-hub/index.js +143 -38
  532. package/src/components/save-hub/style.scss +6 -0
  533. package/src/components/save-panel/index.js +62 -15
  534. package/src/components/secondary-sidebar/list-view-sidebar.js +8 -1
  535. package/src/components/sidebar/index.js +6 -4
  536. package/src/components/sidebar/style.scss +3 -4
  537. package/src/components/sidebar-edit-mode/index.js +16 -14
  538. package/src/components/sidebar-edit-mode/page-panels/content-blocks-list.js +77 -0
  539. package/src/components/sidebar-edit-mode/page-panels/index.js +89 -0
  540. package/src/components/sidebar-edit-mode/page-panels/style.scss +10 -0
  541. package/src/components/sidebar-edit-mode/settings-header/index.js +51 -28
  542. package/src/components/sidebar-edit-mode/sidebar-card/index.js +34 -0
  543. package/src/components/sidebar-edit-mode/sidebar-card/style.scss +34 -0
  544. package/src/components/sidebar-edit-mode/{template-card → template-panel}/index.js +22 -19
  545. package/src/components/sidebar-edit-mode/{template-card → template-panel}/style.scss +2 -32
  546. package/src/components/sidebar-navigation-screen/index.js +74 -50
  547. package/src/components/sidebar-navigation-screen/style.scss +45 -4
  548. package/src/components/sidebar-navigation-screen-global-styles/index.js +118 -12
  549. package/src/components/sidebar-navigation-screen-global-styles/style.scss +15 -0
  550. package/src/components/sidebar-navigation-screen-navigation-menus/style.scss +1 -1
  551. package/src/components/sidebar-navigation-screen-page/index.js +137 -24
  552. package/src/components/sidebar-navigation-screen-page/page-details.js +163 -0
  553. package/src/components/sidebar-navigation-screen-page/status-label.js +101 -0
  554. package/src/components/sidebar-navigation-screen-page/style.scss +80 -0
  555. package/src/components/sidebar-navigation-screen-pages/index.js +180 -44
  556. package/src/components/sidebar-navigation-screen-template/index.js +25 -22
  557. package/src/components/sidebar-navigation-screen-template-part/index.js +103 -0
  558. package/src/components/sidebar-navigation-screen-templates/index.js +1 -1
  559. package/src/components/sidebar-navigation-subtitle/style.scss +2 -2
  560. package/src/components/site-hub/index.js +21 -6
  561. package/src/components/site-hub/style.scss +26 -0
  562. package/src/components/{list/actions → template-actions}/index.js +19 -6
  563. package/src/hooks/push-changes-to-global-styles/index.js +13 -7
  564. package/src/store/actions.js +20 -1
  565. package/src/store/reducer.js +20 -0
  566. package/src/store/selectors.js +24 -0
  567. package/src/store/test/actions.js +31 -0
  568. package/src/store/test/reducer.js +44 -0
  569. package/src/store/test/selectors.js +57 -0
  570. package/src/style.scss +5 -2
  571. package/src/utils/is-previewing-theme.js +1 -4
  572. package/build/components/list/actions/index.js.map +0 -1
  573. package/build/components/list/actions/rename-menu-item.js.map +0 -1
  574. package/build/components/sidebar-edit-mode/template-card/index.js.map +0 -1
  575. package/build/components/sidebar-edit-mode/template-card/template-actions.js.map +0 -1
  576. package/build/components/sidebar-edit-mode/template-card/template-areas.js.map +0 -1
  577. package/build/components/sidebar-edit-mode/template-revisions/index.js.map +0 -1
  578. package/build-module/components/list/actions/index.js.map +0 -1
  579. package/build-module/components/list/actions/rename-menu-item.js.map +0 -1
  580. package/build-module/components/sidebar-edit-mode/template-card/index.js.map +0 -1
  581. package/build-module/components/sidebar-edit-mode/template-card/template-actions.js.map +0 -1
  582. package/build-module/components/sidebar-edit-mode/template-card/template-areas.js.map +0 -1
  583. package/src/components/sidebar-navigation-screen-pages/style.scss +0 -4
  584. /package/src/components/sidebar-edit-mode/{template-revisions/index.js → template-panel/last-revision.js} +0 -0
  585. /package/src/components/sidebar-edit-mode/{template-card → template-panel}/template-actions.js +0 -0
  586. /package/src/components/sidebar-edit-mode/{template-card → template-panel}/template-areas.js +0 -0
  587. /package/src/components/{list/actions → template-actions}/rename-menu-item.js +0 -0
@@ -1,60 +1,165 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useSelect } from '@wordpress/data';
5
- import { __experimentalHStack as HStack } from '@wordpress/components';
6
- import { sprintf, _n } from '@wordpress/i18n';
4
+ import { useSelect, useDispatch } from '@wordpress/data';
5
+ import { Button, __experimentalHStack as HStack } from '@wordpress/components';
6
+ import { __, sprintf, _n } from '@wordpress/i18n';
7
7
  import { store as coreStore } from '@wordpress/core-data';
8
+ import { store as blockEditorStore } from '@wordpress/block-editor';
8
9
  import { check } from '@wordpress/icons';
10
+ import { privateApis as routerPrivateApis } from '@wordpress/router';
11
+ import { store as noticesStore } from '@wordpress/notices';
9
12
 
10
13
  /**
11
14
  * Internal dependencies
12
15
  */
13
16
  import SaveButton from '../save-button';
14
17
  import { isPreviewingTheme } from '../../utils/is-previewing-theme';
18
+ import { unlock } from '../../private-apis';
19
+
20
+ const { useLocation } = unlock( routerPrivateApis );
21
+
22
+ const PUBLISH_ON_SAVE_ENTITIES = [
23
+ {
24
+ kind: 'postType',
25
+ name: 'wp_navigation',
26
+ },
27
+ ];
15
28
 
16
29
  export default function SaveHub() {
17
- const { countUnsavedChanges, isDirty, isSaving } = useSelect(
18
- ( select ) => {
19
- const {
20
- __experimentalGetDirtyEntityRecords,
21
- isSavingEntityRecord,
22
- } = select( coreStore );
23
- const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
24
- return {
25
- isDirty: dirtyEntityRecords.length > 0,
26
- isSaving: dirtyEntityRecords.some( ( record ) =>
27
- isSavingEntityRecord( record.kind, record.name, record.key )
28
- ),
29
- countUnsavedChanges: dirtyEntityRecords.length,
30
- };
31
- },
32
- []
33
- );
30
+ const { params } = useLocation();
31
+
32
+ const { __unstableMarkLastChangeAsPersistent } =
33
+ useDispatch( blockEditorStore );
34
+
35
+ const { createSuccessNotice, createErrorNotice } =
36
+ useDispatch( noticesStore );
37
+
38
+ const { dirtyCurrentEntity, countUnsavedChanges, isDirty, isSaving } =
39
+ useSelect(
40
+ ( select ) => {
41
+ const {
42
+ __experimentalGetDirtyEntityRecords,
43
+ isSavingEntityRecord,
44
+ } = select( coreStore );
45
+ const dirtyEntityRecords =
46
+ __experimentalGetDirtyEntityRecords();
47
+ let calcDirtyCurrentEntity = null;
48
+
49
+ if ( dirtyEntityRecords.length === 1 ) {
50
+ // if we are on global styles
51
+ if ( params.path?.includes( 'wp_global_styles' ) ) {
52
+ calcDirtyCurrentEntity = dirtyEntityRecords.find(
53
+ ( record ) => record.name === 'globalStyles'
54
+ );
55
+ }
56
+ // if we are on pages
57
+ else if ( params.postId ) {
58
+ calcDirtyCurrentEntity = dirtyEntityRecords.find(
59
+ ( record ) =>
60
+ record.name === params.postType &&
61
+ String( record.key ) === params.postId
62
+ );
63
+ }
64
+ }
65
+
66
+ return {
67
+ dirtyCurrentEntity: calcDirtyCurrentEntity,
68
+ isDirty: dirtyEntityRecords.length > 0,
69
+ isSaving: dirtyEntityRecords.some( ( record ) =>
70
+ isSavingEntityRecord(
71
+ record.kind,
72
+ record.name,
73
+ record.key
74
+ )
75
+ ),
76
+ countUnsavedChanges: dirtyEntityRecords.length,
77
+ };
78
+ },
79
+ [ params.path, params.postType, params.postId ]
80
+ );
81
+
82
+ const {
83
+ editEntityRecord,
84
+ saveEditedEntityRecord,
85
+ __experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits,
86
+ } = useDispatch( coreStore );
34
87
 
35
88
  const disabled = isSaving || ( ! isDirty && ! isPreviewingTheme() );
36
89
 
90
+ // if we have only one unsaved change and it matches current context, we can show a more specific label
91
+ let label = dirtyCurrentEntity
92
+ ? __( 'Save' )
93
+ : sprintf(
94
+ // translators: %d: number of unsaved changes (number).
95
+ _n(
96
+ 'Review %d change…',
97
+ 'Review %d changes…',
98
+ countUnsavedChanges
99
+ ),
100
+ countUnsavedChanges
101
+ );
102
+
103
+ if ( isSaving ) {
104
+ label = __( 'Saving' );
105
+ }
106
+
107
+ const saveCurrentEntity = async () => {
108
+ if ( ! dirtyCurrentEntity ) return;
109
+
110
+ const { kind, name, key, property } = dirtyCurrentEntity;
111
+
112
+ try {
113
+ if ( 'root' === dirtyCurrentEntity.kind && 'site' === name ) {
114
+ await saveSpecifiedEntityEdits( 'root', 'site', undefined, [
115
+ property,
116
+ ] );
117
+ } else {
118
+ if (
119
+ PUBLISH_ON_SAVE_ENTITIES.some(
120
+ ( typeToPublish ) =>
121
+ typeToPublish.kind === kind &&
122
+ typeToPublish.name === name
123
+ )
124
+ ) {
125
+ editEntityRecord( kind, name, key, { status: 'publish' } );
126
+ }
127
+
128
+ await saveEditedEntityRecord( kind, name, key );
129
+ }
130
+
131
+ __unstableMarkLastChangeAsPersistent();
132
+
133
+ createSuccessNotice( __( 'Site updated.' ), {
134
+ type: 'snackbar',
135
+ } );
136
+ } catch ( error ) {
137
+ createErrorNotice( `${ __( 'Saving failed.' ) } ${ error }` );
138
+ }
139
+ };
140
+
37
141
  return (
38
142
  <HStack className="edit-site-save-hub" alignment="right" spacing={ 4 }>
39
- { isDirty && (
40
- <span>
41
- { sprintf(
42
- // translators: %d: number of unsaved changes (number).
43
- _n(
44
- '%d unsaved change',
45
- '%d unsaved changes',
46
- countUnsavedChanges
47
- ),
48
- countUnsavedChanges
49
- ) }
50
- </span>
143
+ { dirtyCurrentEntity ? (
144
+ <Button
145
+ variant="primary"
146
+ onClick={ saveCurrentEntity }
147
+ isBusy={ isSaving }
148
+ disabled={ isSaving }
149
+ aria-disabled={ isSaving }
150
+ className="edit-site-save-hub__button"
151
+ >
152
+ { label }
153
+ </Button>
154
+ ) : (
155
+ <SaveButton
156
+ className="edit-site-save-hub__button"
157
+ variant={ disabled ? null : 'primary' }
158
+ showTooltip={ false }
159
+ icon={ disabled && ! isSaving ? check : null }
160
+ defaultLabel={ label }
161
+ />
51
162
  ) }
52
- <SaveButton
53
- className="edit-site-save-hub__button"
54
- variant={ disabled ? null : 'primary' }
55
- showTooltip={ false }
56
- icon={ disabled ? check : null }
57
- />
58
163
  </HStack>
59
164
  );
60
165
  }
@@ -1,9 +1,15 @@
1
1
  .edit-site-save-hub {
2
2
  color: $gray-600;
3
+ border-top: 1px solid $gray-800;
4
+ flex-shrink: 0;
5
+ margin: 0;
6
+ padding: $canvas-padding;
3
7
  }
4
8
 
5
9
  .edit-site-save-hub__button {
6
10
  color: inherit;
11
+ width: 100%;
12
+ justify-content: center;
7
13
 
8
14
  &[aria-disabled="true"] {
9
15
  opacity: 1;
@@ -7,10 +7,15 @@ import classnames from 'classnames';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { Button, Modal } from '@wordpress/components';
10
- import { EntitiesSavedStates } from '@wordpress/editor';
10
+ import {
11
+ EntitiesSavedStates,
12
+ useEntitiesSavedStatesIsDirty,
13
+ privateApis,
14
+ } from '@wordpress/editor';
11
15
  import { useDispatch, useSelect } from '@wordpress/data';
12
- import { __ } from '@wordpress/i18n';
16
+ import { __, sprintf } from '@wordpress/i18n';
13
17
  import { NavigableRegion } from '@wordpress/interface';
18
+ import { store as coreStore } from '@wordpress/core-data';
14
19
 
15
20
  /**
16
21
  * Internal dependencies
@@ -18,6 +23,59 @@ import { NavigableRegion } from '@wordpress/interface';
18
23
  import { store as editSiteStore } from '../../store';
19
24
  import { unlock } from '../../private-apis';
20
25
  import { useActivateTheme } from '../../utils/use-activate-theme';
26
+ import {
27
+ currentlyPreviewingTheme,
28
+ isPreviewingTheme,
29
+ } from '../../utils/is-previewing-theme';
30
+
31
+ const { EntitiesSavedStatesExtensible } = unlock( privateApis );
32
+
33
+ const EntitiesSavedStatesForPreview = ( { onClose } ) => {
34
+ const isDirtyProps = useEntitiesSavedStatesIsDirty();
35
+ let activateSaveLabel;
36
+ if ( isDirtyProps.isDirty ) {
37
+ activateSaveLabel = __( 'Activate & Save' );
38
+ } else {
39
+ activateSaveLabel = __( 'Activate' );
40
+ }
41
+
42
+ const { getTheme } = useSelect( coreStore );
43
+ const theme = getTheme( currentlyPreviewingTheme() );
44
+ const additionalPrompt = (
45
+ <p>
46
+ { sprintf(
47
+ 'Saving your changes will change your active theme to %1$s.',
48
+ theme?.name?.rendered
49
+ ) }
50
+ </p>
51
+ );
52
+
53
+ const activateTheme = useActivateTheme();
54
+ const onSave = async ( values ) => {
55
+ await activateTheme();
56
+ return values;
57
+ };
58
+
59
+ return (
60
+ <EntitiesSavedStatesExtensible
61
+ { ...{
62
+ ...isDirtyProps,
63
+ additionalPrompt,
64
+ close: onClose,
65
+ onSave,
66
+ saveEnabled: true,
67
+ saveLabel: activateSaveLabel,
68
+ } }
69
+ />
70
+ );
71
+ };
72
+
73
+ const _EntitiesSavedStates = ( { onClose } ) => {
74
+ if ( isPreviewingTheme() ) {
75
+ return <EntitiesSavedStatesForPreview onClose={ onClose } />;
76
+ }
77
+ return <EntitiesSavedStates close={ onClose } />;
78
+ };
21
79
 
22
80
  export default function SavePanel() {
23
81
  const { isSaveViewOpen, canvasMode } = useSelect( ( select ) => {
@@ -33,18 +91,7 @@ export default function SavePanel() {
33
91
  };
34
92
  }, [] );
35
93
  const { setIsSaveViewOpened } = useDispatch( editSiteStore );
36
- const activateTheme = useActivateTheme();
37
94
  const onClose = () => setIsSaveViewOpened( false );
38
- const onSave = async ( values ) => {
39
- await activateTheme();
40
- return values;
41
- };
42
-
43
- const entitySavedStates = window?.__experimentalEnableThemePreviews ? (
44
- <EntitiesSavedStates close={ onClose } onSave={ onSave } />
45
- ) : (
46
- <EntitiesSavedStates close={ onClose } />
47
- );
48
95
 
49
96
  if ( canvasMode === 'view' ) {
50
97
  return isSaveViewOpen ? (
@@ -56,7 +103,7 @@ export default function SavePanel() {
56
103
  'Save site, content, and template changes'
57
104
  ) }
58
105
  >
59
- { entitySavedStates }
106
+ <_EntitiesSavedStates onClose={ onClose } />
60
107
  </Modal>
61
108
  ) : null;
62
109
  }
@@ -69,7 +116,7 @@ export default function SavePanel() {
69
116
  ariaLabel={ __( 'Save panel' ) }
70
117
  >
71
118
  { isSaveViewOpen ? (
72
- entitySavedStates
119
+ <_EntitiesSavedStates onClose={ onClose } />
73
120
  ) : (
74
121
  <div className="edit-site-editor__toggle-save-panel">
75
122
  <Button
@@ -9,6 +9,7 @@ import {
9
9
  useMergeRefs,
10
10
  } from '@wordpress/compose';
11
11
  import { useDispatch } from '@wordpress/data';
12
+ import { useState } from '@wordpress/element';
12
13
  import { __ } from '@wordpress/i18n';
13
14
  import { closeSmall } from '@wordpress/icons';
14
15
  import { ESCAPE } from '@wordpress/keycodes';
@@ -24,9 +25,14 @@ const { PrivateListView } = unlock( blockEditorPrivateApis );
24
25
  export default function ListViewSidebar() {
25
26
  const { setIsListViewOpened } = useDispatch( editSiteStore );
26
27
 
28
+ // Use internal state instead of a ref to make sure that the component
29
+ // re-renders when the dropZoneElement updates.
30
+ const [ dropZoneElement, setDropZoneElement ] = useState( null );
31
+
27
32
  const focusOnMountRef = useFocusOnMount( 'firstElement' );
28
33
  const headerFocusReturnRef = useFocusReturn();
29
34
  const contentFocusReturnRef = useFocusReturn();
35
+
30
36
  function closeOnEscape( event ) {
31
37
  if ( event.keyCode === ESCAPE && ! event.defaultPrevented ) {
32
38
  setIsListViewOpened( false );
@@ -55,9 +61,10 @@ export default function ListViewSidebar() {
55
61
  ref={ useMergeRefs( [
56
62
  contentFocusReturnRef,
57
63
  focusOnMountRef,
64
+ setDropZoneElement,
58
65
  ] ) }
59
66
  >
60
- <PrivateListView />
67
+ <PrivateListView dropZoneElement={ dropZoneElement } />
61
68
  </div>
62
69
  </div>
63
70
  );
@@ -14,6 +14,7 @@ import { privateApis as routerPrivateApis } from '@wordpress/router';
14
14
  import SidebarNavigationScreenMain from '../sidebar-navigation-screen-main';
15
15
  import SidebarNavigationScreenTemplates from '../sidebar-navigation-screen-templates';
16
16
  import SidebarNavigationScreenTemplate from '../sidebar-navigation-screen-template';
17
+ import SidebarNavigationScreenTemplatePart from '../sidebar-navigation-screen-template-part';
17
18
  import useSyncPathWithURL, {
18
19
  getPathFromURL,
19
20
  } from '../sync-state-with-url/use-sync-path-with-url';
@@ -57,9 +58,12 @@ function SidebarScreens() {
57
58
  <NavigatorScreen path="/:postType(wp_template|wp_template_part)/all">
58
59
  <SidebarNavigationScreenTemplatesBrowse />
59
60
  </NavigatorScreen>
60
- <NavigatorScreen path="/:postType(wp_template|wp_template_part)/:postId">
61
+ <NavigatorScreen path="/:postType(wp_template)/:postId">
61
62
  <SidebarNavigationScreenTemplate />
62
63
  </NavigatorScreen>
64
+ <NavigatorScreen path="/:postType(wp_template_part)/:postId">
65
+ <SidebarNavigationScreenTemplatePart />
66
+ </NavigatorScreen>
63
67
  </>
64
68
  );
65
69
  }
@@ -76,9 +80,7 @@ function Sidebar() {
76
80
  >
77
81
  <SidebarScreens />
78
82
  </NavigatorProvider>
79
- <div className="edit-site-sidebar__footer">
80
- <SaveHub />
81
- </div>
83
+ <SaveHub />
82
84
  </>
83
85
  );
84
86
  }
@@ -5,6 +5,9 @@
5
5
  .components-navigator-screen {
6
6
  @include custom-scrollbars-on-hover(transparent, $gray-700);
7
7
  scrollbar-gutter: stable;
8
+ display: flex;
9
+ flex-direction: column;
10
+ height: 100%;
8
11
  }
9
12
  }
10
13
 
@@ -15,10 +18,6 @@
15
18
  padding: $canvas-padding 0;
16
19
  }
17
20
 
18
- .edit-site-sidebar__content.edit-site-sidebar__content {
19
- overflow-x: unset;
20
- }
21
-
22
21
  .edit-site-sidebar__content > div {
23
22
  // This matches the logo padding
24
23
  padding: 0 $grid-unit-15;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { createSlotFill, PanelBody, PanelRow } from '@wordpress/components';
4
+ import { createSlotFill } from '@wordpress/components';
5
5
  import { isRTL, __ } from '@wordpress/i18n';
6
6
  import { drawerLeft, drawerRight } from '@wordpress/icons';
7
7
  import { useEffect } from '@wordpress/element';
@@ -16,8 +16,8 @@ import DefaultSidebar from './default-sidebar';
16
16
  import GlobalStylesSidebar from './global-styles-sidebar';
17
17
  import { STORE_NAME } from '../../store/constants';
18
18
  import SettingsHeader from './settings-header';
19
- import LastRevision from './template-revisions';
20
- import TemplateCard from './template-card';
19
+ import PagePanels from './page-panels';
20
+ import TemplatePanel from './template-panel';
21
21
  import PluginTemplateSettingPanel from '../plugin-template-setting-panel';
22
22
  import { SIDEBAR_BLOCK, SIDEBAR_TEMPLATE } from './constants';
23
23
  import { store as editSiteStore } from '../../store';
@@ -33,6 +33,7 @@ export function SidebarComplementaryAreaFills() {
33
33
  isEditorSidebarOpened,
34
34
  hasBlockSelection,
35
35
  supportsGlobalStyles,
36
+ hasPageContentLock,
36
37
  } = useSelect( ( select ) => {
37
38
  const _sidebar =
38
39
  select( interfaceStore ).getActiveComplementaryArea( STORE_NAME );
@@ -47,18 +48,23 @@ export function SidebarComplementaryAreaFills() {
47
48
  hasBlockSelection:
48
49
  !! select( blockEditorStore ).getBlockSelectionStart(),
49
50
  supportsGlobalStyles: ! settings?.supportsTemplatePartsMode,
51
+ hasPageContentLock: select( editSiteStore ).hasPageContentLock(),
50
52
  };
51
53
  }, [] );
52
54
  const { enableComplementaryArea } = useDispatch( interfaceStore );
53
55
 
54
56
  useEffect( () => {
55
- if ( ! isEditorSidebarOpened ) return;
57
+ // Don't automatically switch tab when the sidebar is closed or when we
58
+ // are focused on page content.
59
+ if ( ! isEditorSidebarOpened || hasPageContentLock ) {
60
+ return;
61
+ }
56
62
  if ( hasBlockSelection ) {
57
63
  enableComplementaryArea( STORE_NAME, SIDEBAR_BLOCK );
58
64
  } else {
59
65
  enableComplementaryArea( STORE_NAME, SIDEBAR_TEMPLATE );
60
66
  }
61
- }, [ hasBlockSelection, isEditorSidebarOpened ] );
67
+ }, [ hasBlockSelection, isEditorSidebarOpened, hasPageContentLock ] );
62
68
 
63
69
  let sidebarName = sidebar;
64
70
  if ( ! isEditorSidebarOpened ) {
@@ -77,15 +83,11 @@ export function SidebarComplementaryAreaFills() {
77
83
  >
78
84
  { sidebarName === SIDEBAR_TEMPLATE && (
79
85
  <>
80
- <PanelBody>
81
- <TemplateCard />
82
- <PanelRow
83
- header={ __( 'Editing history' ) }
84
- className="edit-site-template-revisions"
85
- >
86
- <LastRevision />
87
- </PanelRow>
88
- </PanelBody>
86
+ { hasPageContentLock ? (
87
+ <PagePanels />
88
+ ) : (
89
+ <TemplatePanel />
90
+ ) }
89
91
  <PluginTemplateSettingPanel.Slot />
90
92
  </>
91
93
  ) }
@@ -0,0 +1,77 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useSelect, useDispatch } from '@wordpress/data';
5
+ import {
6
+ Button,
7
+ __experimentalVStack as VStack,
8
+ __experimentalHStack as HStack,
9
+ FlexItem,
10
+ } from '@wordpress/components';
11
+ import { getBlockType, __experimentalGetBlockLabel } from '@wordpress/blocks';
12
+ import { store as blockEditorStore, BlockIcon } from '@wordpress/block-editor';
13
+
14
+ /**
15
+ * Internal dependencies
16
+ */
17
+ import { CONTENT_BLOCK_TYPES } from '../../page-content-lock/constants';
18
+
19
+ // TODO: This overlaps a lot with BlockInspectorLockedBlocks in
20
+ // @wordpress/block-editor. DRY them into a single component.
21
+ export default function ContentBlocksList() {
22
+ const contentBlocks = useSelect( ( select ) => {
23
+ const {
24
+ getClientIdsWithDescendants,
25
+ getBlockName,
26
+ getBlock,
27
+ isBlockSelected,
28
+ hasSelectedInnerBlock,
29
+ } = select( blockEditorStore );
30
+ return getClientIdsWithDescendants().flatMap( ( clientId ) => {
31
+ const blockName = getBlockName( clientId );
32
+ if ( ! CONTENT_BLOCK_TYPES.includes( blockName ) ) {
33
+ return [];
34
+ }
35
+ return [
36
+ {
37
+ block: getBlock( clientId ),
38
+ isSelected:
39
+ isBlockSelected( clientId ) ||
40
+ hasSelectedInnerBlock( clientId, /* deep: */ true ),
41
+ },
42
+ ];
43
+ } );
44
+ }, [] );
45
+
46
+ const { selectBlock } = useDispatch( blockEditorStore );
47
+
48
+ if ( ! contentBlocks.length ) {
49
+ return null;
50
+ }
51
+
52
+ return (
53
+ <VStack spacing={ 1 }>
54
+ { contentBlocks.map( ( { block, isSelected } ) => {
55
+ const blockType = getBlockType( block.name );
56
+ return (
57
+ <Button
58
+ key={ block.clientId }
59
+ isPressed={ isSelected }
60
+ onClick={ () => selectBlock( block.clientId ) }
61
+ >
62
+ <HStack justify="flex-start">
63
+ <BlockIcon icon={ blockType.icon } />
64
+ <FlexItem>
65
+ { __experimentalGetBlockLabel(
66
+ blockType,
67
+ block.attributes,
68
+ 'list-view'
69
+ ) }
70
+ </FlexItem>
71
+ </HStack>
72
+ </Button>
73
+ );
74
+ } ) }
75
+ </VStack>
76
+ );
77
+ }
@@ -0,0 +1,89 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ PanelBody,
6
+ __experimentalVStack as VStack,
7
+ Button,
8
+ } from '@wordpress/components';
9
+ import { page as pageIcon } from '@wordpress/icons';
10
+ import { __, sprintf } from '@wordpress/i18n';
11
+ import { humanTimeDiff } from '@wordpress/date';
12
+ import { useSelect, useDispatch } from '@wordpress/data';
13
+ import { useEntityRecord } from '@wordpress/core-data';
14
+ import { BlockContextProvider, BlockPreview } from '@wordpress/block-editor';
15
+ import { useMemo } from '@wordpress/element';
16
+
17
+ /**
18
+ * Internal dependencies
19
+ */
20
+ import { store as editSiteStore } from '../../../store';
21
+ import useEditedEntityRecord from '../../use-edited-entity-record';
22
+ import SidebarCard from '../sidebar-card';
23
+ import ContentBlocksList from './content-blocks-list';
24
+
25
+ export default function PagePanels() {
26
+ const context = useSelect(
27
+ ( select ) => select( editSiteStore ).getEditedPostContext(),
28
+ []
29
+ );
30
+
31
+ const { hasResolved: hasPageResolved, editedRecord: page } =
32
+ useEntityRecord( 'postType', context.postType, context.postId );
33
+
34
+ const {
35
+ isLoaded: isTemplateLoaded,
36
+ getTitle: getTemplateTitle,
37
+ record: template,
38
+ } = useEditedEntityRecord();
39
+
40
+ const { setHasPageContentLock } = useDispatch( editSiteStore );
41
+
42
+ const blockContext = useMemo(
43
+ () => ( { ...context, postType: null, postId: null } ),
44
+ [ context ]
45
+ );
46
+
47
+ if ( ! hasPageResolved || ! isTemplateLoaded ) {
48
+ return null;
49
+ }
50
+
51
+ return (
52
+ <>
53
+ <PanelBody>
54
+ <SidebarCard
55
+ title={ page.title }
56
+ icon={ pageIcon }
57
+ description={ sprintf(
58
+ // translators: %s: Human-readable time difference, e.g. "2 days ago".
59
+ __( 'Last edited %s' ),
60
+ humanTimeDiff( page.modified )
61
+ ) }
62
+ />
63
+ </PanelBody>
64
+ <PanelBody title={ __( 'Content' ) }>
65
+ <ContentBlocksList />
66
+ </PanelBody>
67
+ <PanelBody title={ __( 'Template' ) }>
68
+ <VStack>
69
+ <div>{ getTemplateTitle() }</div>
70
+ <div className="edit-site-page-panels__edit-template-preview">
71
+ <BlockContextProvider value={ blockContext }>
72
+ <BlockPreview
73
+ viewportWidth={ 1024 }
74
+ blocks={ template.blocks }
75
+ />
76
+ </BlockContextProvider>
77
+ </div>
78
+ <Button
79
+ className="edit-site-page-panels__edit-template-button"
80
+ variant="secondary"
81
+ onClick={ () => setHasPageContentLock( false ) }
82
+ >
83
+ { __( 'Edit template' ) }
84
+ </Button>
85
+ </VStack>
86
+ </PanelBody>
87
+ </>
88
+ );
89
+ }
@@ -0,0 +1,10 @@
1
+ .edit-site-page-panels__edit-template-preview {
2
+ border: 1px solid $gray-200;
3
+ height: 200px;
4
+ max-height: 200px;
5
+ overflow: hidden;
6
+ }
7
+
8
+ .edit-site-page-panels__edit-template-button {
9
+ justify-content: center;
10
+ }