@wordpress/edit-site 5.14.0 → 5.15.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 (341) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-page/index.js +1 -6
  3. package/build/components/add-new-page/index.js.map +1 -1
  4. package/build/components/add-new-pattern/index.js +21 -7
  5. package/build/components/add-new-pattern/index.js.map +1 -1
  6. package/build/components/add-new-template/utils.js +10 -8
  7. package/build/components/add-new-template/utils.js.map +1 -1
  8. package/build/components/block-editor/constants.js +1 -1
  9. package/build/components/block-editor/constants.js.map +1 -1
  10. package/build/components/block-editor/editor-canvas.js +1 -1
  11. package/build/components/block-editor/editor-canvas.js.map +1 -1
  12. package/build/components/block-editor/index.js +0 -4
  13. package/build/components/block-editor/index.js.map +1 -1
  14. package/build/components/block-editor/use-site-editor-settings.js +87 -13
  15. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  16. package/build/components/code-editor/index.js +60 -28
  17. package/build/components/code-editor/index.js.map +1 -1
  18. package/build/components/create-pattern-modal/index.js +7 -3
  19. package/build/components/create-pattern-modal/index.js.map +1 -1
  20. package/build/components/editor/index.js +1 -1
  21. package/build/components/editor/index.js.map +1 -1
  22. package/build/components/header-edit-mode/index.js +13 -9
  23. package/build/components/header-edit-mode/index.js.map +1 -1
  24. package/build/components/layout/index.js +8 -3
  25. package/build/components/layout/index.js.map +1 -1
  26. package/build/components/page-actions/index.js +2 -2
  27. package/build/components/page-actions/index.js.map +1 -1
  28. package/build/components/page-actions/{delete-page-menu-item.js → trash-page-menu-item.js} +8 -16
  29. package/build/components/page-actions/trash-page-menu-item.js.map +1 -0
  30. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js +5 -5
  31. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +1 -1
  32. package/build/components/page-patterns/duplicate-menu-item.js +163 -0
  33. package/build/components/page-patterns/duplicate-menu-item.js.map +1 -0
  34. package/build/components/page-patterns/grid-item.js +83 -58
  35. package/build/components/page-patterns/grid-item.js.map +1 -1
  36. package/build/components/page-patterns/grid.js +5 -18
  37. package/build/components/page-patterns/grid.js.map +1 -1
  38. package/build/components/page-patterns/header.js +69 -0
  39. package/build/components/page-patterns/header.js.map +1 -0
  40. package/build/components/page-patterns/index.js +3 -1
  41. package/build/components/page-patterns/index.js.map +1 -1
  42. package/build/components/page-patterns/pagination.js +63 -0
  43. package/build/components/page-patterns/pagination.js.map +1 -0
  44. package/build/components/page-patterns/patterns-list.js +95 -30
  45. package/build/components/page-patterns/patterns-list.js.map +1 -1
  46. package/build/components/page-patterns/rename-menu-item.js +109 -0
  47. package/build/components/page-patterns/rename-menu-item.js.map +1 -0
  48. package/build/components/page-patterns/use-patterns.js +102 -121
  49. package/build/components/page-patterns/use-patterns.js.map +1 -1
  50. package/build/components/page-template-parts/add-new-template-part.js +74 -0
  51. package/build/components/page-template-parts/add-new-template-part.js.map +1 -0
  52. package/build/components/page-template-parts/index.js +2 -23
  53. package/build/components/page-template-parts/index.js.map +1 -1
  54. package/build/components/resizable-frame/index.js +78 -36
  55. package/build/components/resizable-frame/index.js.map +1 -1
  56. package/build/components/save-panel/index.js +5 -5
  57. package/build/components/save-panel/index.js.map +1 -1
  58. package/build/components/sidebar-edit-mode/page-panels/page-content.js +4 -3
  59. package/build/components/sidebar-edit-mode/page-panels/page-content.js.map +1 -1
  60. package/build/components/sidebar-edit-mode/page-panels/page-status.js +3 -8
  61. package/build/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  62. package/build/components/sidebar-navigation-screen/index.js +14 -8
  63. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  64. package/build/components/sidebar-navigation-screen-main/index.js +4 -2
  65. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  66. package/build/components/sidebar-navigation-screen-main/template-part-hint.js +45 -0
  67. package/build/components/sidebar-navigation-screen-main/template-part-hint.js.map +1 -0
  68. package/build/components/sidebar-navigation-screen-navigation-menu/index.js +4 -4
  69. package/build/components/sidebar-navigation-screen-navigation-menu/index.js.map +1 -1
  70. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js +1 -0
  71. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  72. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +3 -3
  73. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  74. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +4 -3
  75. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  76. package/build/components/sidebar-navigation-screen-navigation-menus/constants.js +2 -0
  77. package/build/components/sidebar-navigation-screen-navigation-menus/constants.js.map +1 -1
  78. package/build/components/sidebar-navigation-screen-page/index.js +2 -3
  79. package/build/components/sidebar-navigation-screen-page/index.js.map +1 -1
  80. package/build/components/sidebar-navigation-screen-page/status-label.js +1 -34
  81. package/build/components/sidebar-navigation-screen-page/status-label.js.map +1 -1
  82. package/build/components/sidebar-navigation-screen-pages/index.js +33 -25
  83. package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  84. package/build/components/sidebar-navigation-screen-pattern/index.js +9 -7
  85. package/build/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
  86. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +3 -2
  87. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  88. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +3 -2
  89. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  90. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +11 -3
  91. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js.map +1 -1
  92. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +5 -2
  93. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  94. package/build/components/sidebar-navigation-screen-patterns/index.js +72 -51
  95. package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  96. package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js +9 -5
  97. package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +1 -1
  98. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +11 -1
  99. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  100. package/build/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +20 -9
  101. package/build/components/sidebar-navigation-screen-patterns/use-template-part-areas.js.map +1 -1
  102. package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +1 -1
  103. package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
  104. package/build/components/site-hub/index.js +24 -11
  105. package/build/components/site-hub/index.js.map +1 -1
  106. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +10 -5
  107. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  108. package/build/components/sync-state-with-url/use-sync-path-with-url.js +15 -12
  109. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  110. package/build/components/template-actions/index.js +3 -1
  111. package/build/components/template-actions/index.js.map +1 -1
  112. package/build/components/template-actions/rename-menu-item.js +12 -8
  113. package/build/components/template-actions/rename-menu-item.js.map +1 -1
  114. package/build/components/use-edited-entity-record/index.js +6 -1
  115. package/build/components/use-edited-entity-record/index.js.map +1 -1
  116. package/build/hooks/commands/use-common-commands.js +78 -20
  117. package/build/hooks/commands/use-common-commands.js.map +1 -1
  118. package/build/hooks/push-changes-to-global-styles/index.js +56 -10
  119. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  120. package/build/store/private-actions.js +7 -1
  121. package/build/store/private-actions.js.map +1 -1
  122. package/build/utils/normalize-record-key.js +19 -0
  123. package/build/utils/normalize-record-key.js.map +1 -0
  124. package/build/utils/use-activate-theme.js +1 -1
  125. package/build/utils/use-activate-theme.js.map +1 -1
  126. package/build-module/components/add-new-page/index.js +1 -6
  127. package/build-module/components/add-new-page/index.js.map +1 -1
  128. package/build-module/components/add-new-pattern/index.js +19 -7
  129. package/build-module/components/add-new-pattern/index.js.map +1 -1
  130. package/build-module/components/add-new-template/utils.js +9 -6
  131. package/build-module/components/add-new-template/utils.js.map +1 -1
  132. package/build-module/components/block-editor/constants.js +1 -1
  133. package/build-module/components/block-editor/constants.js.map +1 -1
  134. package/build-module/components/block-editor/editor-canvas.js +1 -1
  135. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  136. package/build-module/components/block-editor/index.js +0 -4
  137. package/build-module/components/block-editor/index.js.map +1 -1
  138. package/build-module/components/block-editor/use-site-editor-settings.js +89 -14
  139. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  140. package/build-module/components/code-editor/index.js +62 -30
  141. package/build-module/components/code-editor/index.js.map +1 -1
  142. package/build-module/components/create-pattern-modal/index.js +6 -3
  143. package/build-module/components/create-pattern-modal/index.js.map +1 -1
  144. package/build-module/components/editor/index.js +1 -1
  145. package/build-module/components/editor/index.js.map +1 -1
  146. package/build-module/components/header-edit-mode/index.js +13 -9
  147. package/build-module/components/header-edit-mode/index.js.map +1 -1
  148. package/build-module/components/layout/index.js +8 -3
  149. package/build-module/components/layout/index.js.map +1 -1
  150. package/build-module/components/page-actions/index.js +2 -2
  151. package/build-module/components/page-actions/index.js.map +1 -1
  152. package/build-module/components/page-actions/{delete-page-menu-item.js → trash-page-menu-item.js} +8 -17
  153. package/build-module/components/page-actions/trash-page-menu-item.js.map +1 -0
  154. package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js +5 -3
  155. package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +1 -1
  156. package/build-module/components/page-patterns/duplicate-menu-item.js +147 -0
  157. package/build-module/components/page-patterns/duplicate-menu-item.js.map +1 -0
  158. package/build-module/components/page-patterns/grid-item.js +84 -64
  159. package/build-module/components/page-patterns/grid-item.js.map +1 -1
  160. package/build-module/components/page-patterns/grid.js +5 -17
  161. package/build-module/components/page-patterns/grid.js.map +1 -1
  162. package/build-module/components/page-patterns/header.js +54 -0
  163. package/build-module/components/page-patterns/header.js.map +1 -0
  164. package/build-module/components/page-patterns/index.js +3 -1
  165. package/build-module/components/page-patterns/index.js.map +1 -1
  166. package/build-module/components/page-patterns/pagination.js +54 -0
  167. package/build-module/components/page-patterns/pagination.js.map +1 -0
  168. package/build-module/components/page-patterns/patterns-list.js +96 -33
  169. package/build-module/components/page-patterns/patterns-list.js.map +1 -1
  170. package/build-module/components/page-patterns/rename-menu-item.js +97 -0
  171. package/build-module/components/page-patterns/rename-menu-item.js.map +1 -0
  172. package/build-module/components/page-patterns/use-patterns.js +103 -122
  173. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  174. package/build-module/components/page-template-parts/add-new-template-part.js +58 -0
  175. package/build-module/components/page-template-parts/add-new-template-part.js.map +1 -0
  176. package/build-module/components/page-template-parts/index.js +3 -22
  177. package/build-module/components/page-template-parts/index.js.map +1 -1
  178. package/build-module/components/resizable-frame/index.js +79 -39
  179. package/build-module/components/resizable-frame/index.js.map +1 -1
  180. package/build-module/components/save-panel/index.js +5 -5
  181. package/build-module/components/save-panel/index.js.map +1 -1
  182. package/build-module/components/sidebar-edit-mode/page-panels/page-content.js +5 -2
  183. package/build-module/components/sidebar-edit-mode/page-panels/page-content.js.map +1 -1
  184. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js +3 -8
  185. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  186. package/build-module/components/sidebar-navigation-screen/index.js +15 -9
  187. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  188. package/build-module/components/sidebar-navigation-screen-main/index.js +4 -3
  189. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  190. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js +33 -0
  191. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js.map +1 -0
  192. package/build-module/components/sidebar-navigation-screen-navigation-menu/index.js +4 -4
  193. package/build-module/components/sidebar-navigation-screen-navigation-menu/index.js.map +1 -1
  194. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js +1 -0
  195. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  196. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +3 -3
  197. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  198. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +4 -3
  199. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  200. package/build-module/components/sidebar-navigation-screen-navigation-menus/constants.js +2 -0
  201. package/build-module/components/sidebar-navigation-screen-navigation-menus/constants.js.map +1 -1
  202. package/build-module/components/sidebar-navigation-screen-page/index.js +2 -3
  203. package/build-module/components/sidebar-navigation-screen-page/index.js.map +1 -1
  204. package/build-module/components/sidebar-navigation-screen-page/status-label.js +1 -32
  205. package/build-module/components/sidebar-navigation-screen-page/status-label.js.map +1 -1
  206. package/build-module/components/sidebar-navigation-screen-pages/index.js +33 -25
  207. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  208. package/build-module/components/sidebar-navigation-screen-pattern/index.js +8 -7
  209. package/build-module/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
  210. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +3 -2
  211. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  212. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +3 -2
  213. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  214. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +11 -3
  215. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js.map +1 -1
  216. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +4 -2
  217. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  218. package/build-module/components/sidebar-navigation-screen-patterns/index.js +76 -53
  219. package/build-module/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  220. package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js +9 -5
  221. package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +1 -1
  222. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +10 -1
  223. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  224. package/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +18 -9
  225. package/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.js.map +1 -1
  226. package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +1 -1
  227. package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
  228. package/build-module/components/site-hub/index.js +24 -11
  229. package/build-module/components/site-hub/index.js.map +1 -1
  230. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +7 -5
  231. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  232. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +16 -12
  233. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  234. package/build-module/components/template-actions/index.js +2 -1
  235. package/build-module/components/template-actions/index.js.map +1 -1
  236. package/build-module/components/template-actions/rename-menu-item.js +11 -8
  237. package/build-module/components/template-actions/rename-menu-item.js.map +1 -1
  238. package/build-module/components/use-edited-entity-record/index.js +3 -1
  239. package/build-module/components/use-edited-entity-record/index.js.map +1 -1
  240. package/build-module/hooks/commands/use-common-commands.js +74 -20
  241. package/build-module/hooks/commands/use-common-commands.js.map +1 -1
  242. package/build-module/hooks/push-changes-to-global-styles/index.js +57 -10
  243. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  244. package/build-module/store/private-actions.js +7 -1
  245. package/build-module/store/private-actions.js.map +1 -1
  246. package/build-module/utils/normalize-record-key.js +12 -0
  247. package/build-module/utils/normalize-record-key.js.map +1 -0
  248. package/build-module/utils/use-activate-theme.js +1 -1
  249. package/build-module/utils/use-activate-theme.js.map +1 -1
  250. package/build-style/style-rtl.css +221 -63
  251. package/build-style/style.css +221 -63
  252. package/package.json +39 -40
  253. package/src/components/add-new-page/index.js +0 -3
  254. package/src/components/add-new-pattern/index.js +23 -12
  255. package/src/components/add-new-template/utils.js +9 -6
  256. package/src/components/block-editor/constants.js +5 -1
  257. package/src/components/block-editor/editor-canvas.js +1 -1
  258. package/src/components/block-editor/index.js +0 -4
  259. package/src/components/block-editor/use-site-editor-settings.js +99 -20
  260. package/src/components/canvas-spinner/style.scss +14 -0
  261. package/src/components/code-editor/index.js +51 -33
  262. package/src/components/create-pattern-modal/index.js +5 -2
  263. package/src/components/editor/index.js +2 -2
  264. package/src/components/header-edit-mode/document-actions/style.scss +4 -0
  265. package/src/components/header-edit-mode/index.js +29 -22
  266. package/src/components/layout/index.js +16 -2
  267. package/src/components/layout/style.scss +2 -1
  268. package/src/components/page-actions/index.js +2 -2
  269. package/src/components/page-actions/{delete-page-menu-item.js → trash-page-menu-item.js} +9 -22
  270. package/src/components/page-content-focus-manager/disable-non-page-content-blocks.js +12 -3
  271. package/src/components/page-patterns/duplicate-menu-item.js +196 -0
  272. package/src/components/page-patterns/grid-item.js +189 -133
  273. package/src/components/page-patterns/grid.js +3 -20
  274. package/src/components/page-patterns/header.js +69 -0
  275. package/src/components/page-patterns/index.js +6 -1
  276. package/src/components/page-patterns/pagination.js +80 -0
  277. package/src/components/page-patterns/patterns-list.js +160 -72
  278. package/src/components/page-patterns/rename-menu-item.js +115 -0
  279. package/src/components/page-patterns/style.scss +140 -30
  280. package/src/components/page-patterns/use-patterns.js +102 -172
  281. package/src/components/page-template-parts/add-new-template-part.js +57 -0
  282. package/src/components/page-template-parts/index.js +3 -22
  283. package/src/components/resizable-frame/index.js +102 -34
  284. package/src/components/resizable-frame/style.scss +9 -9
  285. package/src/components/save-panel/index.js +10 -4
  286. package/src/components/sidebar-edit-mode/page-panels/page-content.js +7 -5
  287. package/src/components/sidebar-edit-mode/page-panels/page-status.js +2 -5
  288. package/src/components/sidebar-navigation-item/style.scss +5 -12
  289. package/src/components/sidebar-navigation-screen/index.js +14 -7
  290. package/src/components/sidebar-navigation-screen/style.scss +14 -0
  291. package/src/components/sidebar-navigation-screen-main/index.js +44 -40
  292. package/src/components/sidebar-navigation-screen-main/template-part-hint.js +34 -0
  293. package/src/components/sidebar-navigation-screen-navigation-menu/index.js +4 -3
  294. package/src/components/sidebar-navigation-screen-navigation-menu/more-menu.js +1 -0
  295. package/src/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +1 -1
  296. package/src/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +15 -5
  297. package/src/components/sidebar-navigation-screen-navigation-menus/constants.js +2 -0
  298. package/src/components/sidebar-navigation-screen-page/index.js +3 -3
  299. package/src/components/sidebar-navigation-screen-page/status-label.js +1 -35
  300. package/src/components/sidebar-navigation-screen-pages/index.js +39 -29
  301. package/src/components/sidebar-navigation-screen-pattern/index.js +5 -2
  302. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -1
  303. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +2 -1
  304. package/src/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +12 -2
  305. package/src/components/sidebar-navigation-screen-pattern/use-pattern-details.js +5 -2
  306. package/src/components/sidebar-navigation-screen-patterns/index.js +103 -98
  307. package/src/components/sidebar-navigation-screen-patterns/style.scss +20 -0
  308. package/src/components/sidebar-navigation-screen-patterns/use-my-patterns.js +7 -6
  309. package/src/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +9 -0
  310. package/src/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +31 -9
  311. package/src/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +2 -1
  312. package/src/components/site-hub/index.js +45 -28
  313. package/src/components/site-hub/style.scss +13 -0
  314. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +8 -2
  315. package/src/components/sync-state-with-url/use-sync-path-with-url.js +73 -66
  316. package/src/components/template-actions/index.js +2 -1
  317. package/src/components/template-actions/rename-menu-item.js +17 -10
  318. package/src/components/use-edited-entity-record/index.js +6 -1
  319. package/src/hooks/commands/use-common-commands.js +56 -23
  320. package/src/hooks/push-changes-to-global-styles/index.js +63 -9
  321. package/src/store/private-actions.js +5 -1
  322. package/src/style.scss +10 -12
  323. package/src/utils/normalize-record-key.js +11 -0
  324. package/src/utils/use-activate-theme.js +1 -1
  325. package/build/components/code-editor/code-editor-text-area.js +0 -96
  326. package/build/components/code-editor/code-editor-text-area.js.map +0 -1
  327. package/build/components/keyboard-shortcuts/index.js +0 -148
  328. package/build/components/keyboard-shortcuts/index.js.map +0 -1
  329. package/build/components/page-actions/delete-page-menu-item.js.map +0 -1
  330. package/build/components/page-content-focus-manager/constants.js +0 -9
  331. package/build/components/page-content-focus-manager/constants.js.map +0 -1
  332. package/build-module/components/code-editor/code-editor-text-area.js +0 -84
  333. package/build-module/components/code-editor/code-editor-text-area.js.map +0 -1
  334. package/build-module/components/keyboard-shortcuts/index.js +0 -132
  335. package/build-module/components/keyboard-shortcuts/index.js.map +0 -1
  336. package/build-module/components/page-actions/delete-page-menu-item.js.map +0 -1
  337. package/build-module/components/page-content-focus-manager/constants.js +0 -2
  338. package/build-module/components/page-content-focus-manager/constants.js.map +0 -1
  339. package/src/components/code-editor/code-editor-text-area.js +0 -84
  340. package/src/components/keyboard-shortcuts/index.js +0 -137
  341. package/src/components/page-content-focus-manager/constants.js +0 -5
@@ -9,9 +9,12 @@ import classnames from 'classnames';
9
9
  import { useState, useRef, useEffect } from '@wordpress/element';
10
10
  import {
11
11
  ResizableBox,
12
+ Tooltip,
12
13
  __unstableMotion as motion,
13
14
  } from '@wordpress/components';
14
- import { useDispatch } from '@wordpress/data';
15
+ import { useInstanceId } from '@wordpress/compose';
16
+ import { useDispatch, useSelect } from '@wordpress/data';
17
+ import { __ } from '@wordpress/i18n';
15
18
 
16
19
  /**
17
20
  * Internal dependencies
@@ -33,7 +36,7 @@ const HANDLE_STYLES_OVERRIDE = {
33
36
  };
34
37
 
35
38
  // The minimum width of the frame (in px) while resizing.
36
- const FRAME_MIN_WIDTH = 340;
39
+ const FRAME_MIN_WIDTH = 320;
37
40
  // The reference width of the frame (in px) used to calculate the aspect ratio.
38
41
  const FRAME_REFERENCE_WIDTH = 1300;
39
42
  // 9 : 19.5 is the target aspect ratio enforced (when possible) while resizing.
@@ -42,6 +45,8 @@ const FRAME_TARGET_ASPECT_RATIO = 9 / 19.5;
42
45
  // viewport's edge. If the frame is resized to be closer to the viewport's edge
43
46
  // than this distance, then "canvas mode" will be enabled.
44
47
  const SNAP_TO_EDIT_CANVAS_MODE_THRESHOLD = 200;
48
+ // Default size for the `frameSize` state.
49
+ const INITIAL_FRAME_SIZE = { width: '100%', height: '100%' };
45
50
 
46
51
  function calculateNewHeight( width, initialAspectRatio ) {
47
52
  const lerp = ( a, b, amount ) => {
@@ -73,27 +78,32 @@ function calculateNewHeight( width, initialAspectRatio ) {
73
78
 
74
79
  function ResizableFrame( {
75
80
  isFullWidth,
81
+ isOversized,
82
+ setIsOversized,
76
83
  isReady,
77
84
  children,
78
- oversizedClassName,
79
85
  innerContentStyle,
80
86
  } ) {
81
- const [ frameSize, setFrameSize ] = useState( {
82
- width: '100%',
83
- height: '100%',
84
- } );
87
+ const [ frameSize, setFrameSize ] = useState( INITIAL_FRAME_SIZE );
85
88
  // The width of the resizable frame when a new resize gesture starts.
86
89
  const [ startingWidth, setStartingWidth ] = useState();
87
90
  const [ isResizing, setIsResizing ] = useState( false );
88
- const [ isHovering, setIsHovering ] = useState( false );
89
- const [ isOversized, setIsOversized ] = useState( false );
91
+ const [ shouldShowHandle, setShouldShowHandle ] = useState( false );
90
92
  const [ resizeRatio, setResizeRatio ] = useState( 1 );
93
+ const canvasMode = useSelect(
94
+ ( select ) => unlock( select( editSiteStore ) ).getCanvasMode(),
95
+ []
96
+ );
91
97
  const { setCanvasMode } = unlock( useDispatch( editSiteStore ) );
92
98
  const initialAspectRatioRef = useRef( null );
93
99
  // The width of the resizable frame on initial render.
94
100
  const initialComputedWidthRef = useRef( null );
95
101
  const FRAME_TRANSITION = { type: 'tween', duration: isResizing ? 0 : 0.5 };
96
102
  const frameRef = useRef( null );
103
+ const resizableHandleHelpId = useInstanceId(
104
+ ResizableFrame,
105
+ 'edit-site-resizable-frame-handle-help'
106
+ );
97
107
 
98
108
  // Remember frame dimensions on initial render.
99
109
  useEffect( () => {
@@ -154,13 +164,40 @@ function ResizableFrame( {
154
164
  if ( remainingWidth > SNAP_TO_EDIT_CANVAS_MODE_THRESHOLD ) {
155
165
  // Reset the initial aspect ratio if the frame is resized slightly
156
166
  // above the sidebar but not far enough to trigger full screen.
157
- setFrameSize( { width: '100%', height: '100%' } );
167
+ setFrameSize( INITIAL_FRAME_SIZE );
158
168
  } else {
159
169
  // Trigger full screen if the frame is resized far enough to the left.
160
170
  setCanvasMode( 'edit' );
161
171
  }
162
172
  };
163
173
 
174
+ // Handle resize by arrow keys
175
+ const handleResizableHandleKeyDown = ( event ) => {
176
+ if ( ! [ 'ArrowLeft', 'ArrowRight' ].includes( event.key ) ) {
177
+ return;
178
+ }
179
+
180
+ event.preventDefault();
181
+
182
+ const step = 20 * ( event.shiftKey ? 5 : 1 );
183
+ const delta = step * ( event.key === 'ArrowLeft' ? 1 : -1 );
184
+ const newWidth = Math.min(
185
+ Math.max(
186
+ FRAME_MIN_WIDTH,
187
+ frameRef.current.resizable.offsetWidth + delta
188
+ ),
189
+ initialComputedWidthRef.current
190
+ );
191
+
192
+ setFrameSize( {
193
+ width: newWidth,
194
+ height: calculateNewHeight(
195
+ newWidth,
196
+ initialAspectRatioRef.current
197
+ ),
198
+ } );
199
+ };
200
+
164
201
  const frameAnimationVariants = {
165
202
  default: {
166
203
  flexGrow: 0,
@@ -173,16 +210,26 @@ function ResizableFrame( {
173
210
  };
174
211
 
175
212
  const resizeHandleVariants = {
176
- default: {
213
+ hidden: {
214
+ opacity: 0,
215
+ left: 0,
216
+ },
217
+ visible: {
177
218
  opacity: 1,
178
219
  left: -16,
179
220
  },
180
- resizing: {
221
+ active: {
181
222
  opacity: 1,
182
223
  left: -16,
183
224
  scaleY: 1.3,
184
225
  },
185
226
  };
227
+ const currentResizeHandleVariant = ( () => {
228
+ if ( isResizing ) {
229
+ return 'active';
230
+ }
231
+ return shouldShowHandle ? 'visible' : 'hidden';
232
+ } )();
186
233
 
187
234
  return (
188
235
  <ResizableBox
@@ -217,35 +264,56 @@ function ResizableFrame( {
217
264
  minWidth={ FRAME_MIN_WIDTH }
218
265
  maxWidth={ isFullWidth ? '100%' : '150%' }
219
266
  maxHeight={ '100%' }
220
- onMouseOver={ () => setIsHovering( true ) }
221
- onMouseOut={ () => setIsHovering( false ) }
267
+ onFocus={ () => setShouldShowHandle( true ) }
268
+ onBlur={ () => setShouldShowHandle( false ) }
269
+ onMouseOver={ () => setShouldShowHandle( true ) }
270
+ onMouseOut={ () => setShouldShowHandle( false ) }
222
271
  handleComponent={ {
223
- left:
224
- isHovering || isResizing ? (
225
- <motion.div
226
- key="handle"
227
- className="edit-site-resizable-frame__handle"
228
- variants={ resizeHandleVariants }
229
- animate={ isResizing ? 'resizing' : 'default' }
230
- title="Drag to resize"
231
- initial={ {
232
- opacity: 0,
233
- left: 0,
234
- } }
235
- exit={ {
236
- opacity: 0,
237
- left: 0,
238
- } }
239
- whileHover={ { scaleY: 1.3 } }
240
- />
241
- ) : null,
272
+ left: canvasMode === 'view' && (
273
+ <>
274
+ <Tooltip text={ __( 'Drag to resize' ) }>
275
+ { /* Disable reason: role="separator" does in fact support aria-valuenow */ }
276
+ { /* eslint-disable-next-line jsx-a11y/role-supports-aria-props */ }
277
+ <motion.button
278
+ key="handle"
279
+ role="separator"
280
+ aria-orientation="vertical"
281
+ className={ classnames(
282
+ 'edit-site-resizable-frame__handle',
283
+ { 'is-resizing': isResizing }
284
+ ) }
285
+ variants={ resizeHandleVariants }
286
+ animate={ currentResizeHandleVariant }
287
+ aria-label={ __( 'Drag to resize' ) }
288
+ aria-describedby={ resizableHandleHelpId }
289
+ aria-valuenow={
290
+ frameRef.current?.resizable?.offsetWidth ||
291
+ undefined
292
+ }
293
+ aria-valuemin={ FRAME_MIN_WIDTH }
294
+ aria-valuemax={
295
+ initialComputedWidthRef.current
296
+ }
297
+ onKeyDown={ handleResizableHandleKeyDown }
298
+ initial="hidden"
299
+ exit="hidden"
300
+ whileFocus="active"
301
+ whileHover="active"
302
+ />
303
+ </Tooltip>
304
+ <div hidden id={ resizableHandleHelpId }>
305
+ { __(
306
+ 'Use left and right arrow keys to resize the canvas. Hold shift to resize in larger increments.'
307
+ ) }
308
+ </div>
309
+ </>
310
+ ),
242
311
  } }
243
312
  onResizeStart={ handleResizeStart }
244
313
  onResize={ handleResize }
245
314
  onResizeStop={ handleResizeStop }
246
315
  className={ classnames( 'edit-site-resizable-frame__inner', {
247
316
  'is-resizing': isResizing,
248
- [ oversizedClassName ]: isOversized,
249
317
  } ) }
250
318
  >
251
319
  <motion.div
@@ -30,11 +30,13 @@
30
30
  .edit-site-resizable-frame__handle {
31
31
  align-items: center;
32
32
  background-color: rgba($gray-700, 0.4);
33
+ border: 0;
33
34
  border-radius: $grid-unit-05;
34
35
  cursor: col-resize;
35
36
  display: flex;
36
37
  height: $grid-unit-80;
37
38
  justify-content: flex-end;
39
+ padding: 0;
38
40
  position: absolute;
39
41
  top: calc(50% - #{$grid-unit-40});
40
42
  width: $grid-unit-05;
@@ -56,16 +58,14 @@
56
58
  width: $grid-unit-40;
57
59
  }
58
60
 
59
- &:hover,
60
- .is-resizing & {
61
- background-color: var(--wp-admin-theme-color);
61
+ &:focus-visible {
62
+ // Works with Windows high contrast mode while also hiding weird outline in Safari.
63
+ outline: 2px solid transparent;
62
64
  }
63
65
 
64
- .edit-site-resizable-frame__handle-label {
65
- background: var(--wp-admin-theme-color);
66
- border-radius: 2px;
67
- color: #fff;
68
- margin-right: $grid-unit-10;
69
- padding: 4px 8px;
66
+ &:hover,
67
+ &:focus,
68
+ &.is-resizing {
69
+ background-color: var(--wp-admin-theme-color);
70
70
  }
71
71
  }
@@ -39,13 +39,19 @@ const EntitiesSavedStatesForPreview = ( { onClose } ) => {
39
39
  activateSaveLabel = __( 'Activate' );
40
40
  }
41
41
 
42
- const { getTheme } = useSelect( coreStore );
43
- const theme = getTheme( currentlyPreviewingTheme() );
42
+ const themeName = useSelect( ( select ) => {
43
+ const theme = select( coreStore ).getTheme(
44
+ currentlyPreviewingTheme()
45
+ );
46
+
47
+ return theme?.name?.rendered;
48
+ }, [] );
49
+
44
50
  const additionalPrompt = (
45
51
  <p>
46
52
  { sprintf(
47
- 'Saving your changes will change your active theme to %1$s.',
48
- theme?.name?.rendered
53
+ 'Saving your changes will change your active theme to %s.',
54
+ themeName
49
55
  ) }
50
56
  </p>
51
57
  );
@@ -6,22 +6,24 @@ import {
6
6
  store as blockEditorStore,
7
7
  privateApis as blockEditorPrivateApis,
8
8
  } from '@wordpress/block-editor';
9
+ import { useMemo } from '@wordpress/element';
9
10
 
10
11
  /**
11
12
  * Internal dependencies
12
13
  */
13
- import { PAGE_CONTENT_BLOCK_TYPES } from '../../page-content-focus-manager/constants';
14
14
  import { unlock } from '../../../lock-unlock';
15
15
 
16
16
  const { BlockQuickNavigation } = unlock( blockEditorPrivateApis );
17
17
 
18
18
  export default function PageContent() {
19
- const clientIds = useSelect(
19
+ const clientIdsTree = useSelect(
20
20
  ( select ) =>
21
- select( blockEditorStore ).__experimentalGetGlobalBlocksByName(
22
- PAGE_CONTENT_BLOCK_TYPES
23
- ),
21
+ unlock( select( blockEditorStore ) ).getEnabledClientIdsTree(),
24
22
  []
25
23
  );
24
+ const clientIds = useMemo(
25
+ () => clientIdsTree.map( ( { clientId } ) => clientId ),
26
+ [ clientIdsTree ]
27
+ );
26
28
  return <BlockQuickNavigation clientIds={ clientIds } />;
27
29
  }
@@ -212,13 +212,10 @@ export default function PageStatus( {
212
212
  } )
213
213
  }
214
214
  value={ password }
215
- /* eslint-disable jsx-a11y/no-autofocus */
216
- autoFocus={ ! password }
217
- /* eslint-enable jsx-a11y/no-autofocus */
218
215
  placeholder={ __(
219
- 'Enter a secure password'
216
+ 'Use a secure password'
220
217
  ) }
221
- type="password"
218
+ type="text"
222
219
  />
223
220
  ) }
224
221
  </BaseControl>
@@ -11,6 +11,10 @@
11
11
  &[aria-current] {
12
12
  color: $gray-200;
13
13
  background: $gray-800;
14
+
15
+ .edit-site-sidebar-navigation-item__drilldown-indicator {
16
+ fill: $gray-200;
17
+ }
14
18
  }
15
19
 
16
20
  &[aria-current] {
@@ -19,18 +23,7 @@
19
23
  }
20
24
 
21
25
  .edit-site-sidebar-navigation-item__drilldown-indicator {
22
- fill: $gray-700;
23
- }
24
-
25
- &:is(a) {
26
- text-decoration: none;
27
- display: flex;
28
- align-items: center;
29
-
30
- &:focus {
31
- box-shadow: none;
32
- outline: none;
33
- }
26
+ fill: $gray-600;
34
27
  }
35
28
 
36
29
  &.with-suffix {
@@ -4,7 +4,6 @@
4
4
  import {
5
5
  __experimentalHStack as HStack,
6
6
  __experimentalHeading as Heading,
7
- __experimentalNavigatorToParentButton as NavigatorToParentButton,
8
7
  __experimentalUseNavigator as useNavigator,
9
8
  __experimentalVStack as VStack,
10
9
  } from '@wordpress/components';
@@ -41,7 +40,7 @@ export default function SidebarNavigationScreen( {
41
40
  };
42
41
  }, [] );
43
42
  const { getTheme } = useSelect( coreStore );
44
- const { goTo } = useNavigator();
43
+ const navigator = useNavigator();
45
44
  const theme = getTheme( currentlyPreviewingTheme() );
46
45
  const icon = isRTL() ? chevronRight : chevronLeft;
47
46
 
@@ -58,16 +57,24 @@ export default function SidebarNavigationScreen( {
58
57
  className="edit-site-sidebar-navigation-screen__title-icon"
59
58
  >
60
59
  { ! isRoot && ! backPath && (
61
- <NavigatorToParentButton
62
- as={ SidebarButton }
63
- icon={ isRTL() ? chevronRight : chevronLeft }
60
+ <SidebarButton
61
+ onClick={ () => {
62
+ if ( navigator.location.isInitial ) {
63
+ navigator.goToParent( { replace: true } );
64
+ } else {
65
+ navigator.goBack();
66
+ }
67
+ } }
68
+ icon={ icon }
64
69
  label={ __( 'Back' ) }
65
70
  showTooltip={ false }
66
71
  />
67
72
  ) }
68
73
  { ! isRoot && backPath && (
69
74
  <SidebarButton
70
- onClick={ () => goTo( backPath, { isBack: true } ) }
75
+ onClick={ () =>
76
+ navigator.goTo( backPath, { isBack: true } )
77
+ }
71
78
  icon={ icon }
72
79
  label={ __( 'Back' ) }
73
80
  showTooltip={ false }
@@ -78,7 +85,7 @@ export default function SidebarNavigationScreen( {
78
85
  icon={ icon }
79
86
  label={
80
87
  ! isPreviewingTheme()
81
- ? __( 'Go back to the Dashboard' )
88
+ ? __( 'Go to the Dashboard' )
82
89
  : __( 'Go back to the theme showcase' )
83
90
  }
84
91
  href={
@@ -98,6 +98,20 @@
98
98
  border-top: 1px solid $gray-800;
99
99
  }
100
100
 
101
+ .edit-site-sidebar__notice {
102
+ background: $gray-800;
103
+ color: $gray-300;
104
+ margin: $grid-unit-30 0;
105
+ &.is-dismissible {
106
+ padding-right: $grid-unit-10;
107
+ }
108
+ .components-notice__dismiss:not(:disabled):not([aria-disabled="true"]):focus,
109
+ .components-notice__dismiss:not(:disabled):not([aria-disabled="true"]):not(.is-secondary):active,
110
+ .components-notice__dismiss:not(:disabled):not([aria-disabled="true"]):not(.is-secondary):hover {
111
+ color: $gray-100;
112
+ }
113
+ }
114
+
101
115
  /* In general style overrides are discouraged.
102
116
  * This is a temporary solution to override the InputControl component's styles.
103
117
  * The `Theme` component will potentially be the more appropriate approach
@@ -20,6 +20,7 @@ import SidebarNavigationItem from '../sidebar-navigation-item';
20
20
  import { SidebarNavigationItemGlobalStyles } from '../sidebar-navigation-screen-global-styles';
21
21
  import { unlock } from '../../lock-unlock';
22
22
  import { store as editSiteStore } from '../../store';
23
+ import TemplatePartHint from './template-part-hint';
23
24
 
24
25
  export default function SidebarNavigationScreenMain() {
25
26
  const { location } = useNavigator();
@@ -42,46 +43,49 @@ export default function SidebarNavigationScreenMain() {
42
43
  'Customize the appearance of your website using the block editor.'
43
44
  ) }
44
45
  content={
45
- <ItemGroup>
46
- <NavigatorButton
47
- as={ SidebarNavigationItem }
48
- path="/navigation"
49
- withChevron
50
- icon={ navigation }
51
- >
52
- { __( 'Navigation' ) }
53
- </NavigatorButton>
54
- <SidebarNavigationItemGlobalStyles
55
- withChevron
56
- icon={ styles }
57
- >
58
- { __( 'Styles' ) }
59
- </SidebarNavigationItemGlobalStyles>
60
- <NavigatorButton
61
- as={ SidebarNavigationItem }
62
- path="/page"
63
- withChevron
64
- icon={ page }
65
- >
66
- { __( 'Pages' ) }
67
- </NavigatorButton>
68
- <NavigatorButton
69
- as={ SidebarNavigationItem }
70
- path="/wp_template"
71
- withChevron
72
- icon={ layout }
73
- >
74
- { __( 'Templates' ) }
75
- </NavigatorButton>
76
- <NavigatorButton
77
- as={ SidebarNavigationItem }
78
- path="/patterns"
79
- withChevron
80
- icon={ symbol }
81
- >
82
- { __( 'Patterns' ) }
83
- </NavigatorButton>
84
- </ItemGroup>
46
+ <>
47
+ <ItemGroup>
48
+ <NavigatorButton
49
+ as={ SidebarNavigationItem }
50
+ path="/navigation"
51
+ withChevron
52
+ icon={ navigation }
53
+ >
54
+ { __( 'Navigation' ) }
55
+ </NavigatorButton>
56
+ <SidebarNavigationItemGlobalStyles
57
+ withChevron
58
+ icon={ styles }
59
+ >
60
+ { __( 'Styles' ) }
61
+ </SidebarNavigationItemGlobalStyles>
62
+ <NavigatorButton
63
+ as={ SidebarNavigationItem }
64
+ path="/page"
65
+ withChevron
66
+ icon={ page }
67
+ >
68
+ { __( 'Pages' ) }
69
+ </NavigatorButton>
70
+ <NavigatorButton
71
+ as={ SidebarNavigationItem }
72
+ path="/wp_template"
73
+ withChevron
74
+ icon={ layout }
75
+ >
76
+ { __( 'Templates' ) }
77
+ </NavigatorButton>
78
+ <NavigatorButton
79
+ as={ SidebarNavigationItem }
80
+ path="/patterns"
81
+ withChevron
82
+ icon={ symbol }
83
+ >
84
+ { __( 'Patterns' ) }
85
+ </NavigatorButton>
86
+ </ItemGroup>
87
+ <TemplatePartHint />
88
+ </>
85
89
  }
86
90
  />
87
91
  );
@@ -0,0 +1,34 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { Notice } from '@wordpress/components';
5
+ import { useDispatch, useSelect } from '@wordpress/data';
6
+ import { __ } from '@wordpress/i18n';
7
+ import { store as preferencesStore } from '@wordpress/preferences';
8
+
9
+ const PREFERENCE_NAME = 'isTemplatePartMoveHintVisible';
10
+
11
+ export default function TemplatePartHint() {
12
+ const showTemplatePartHint = useSelect(
13
+ ( select ) =>
14
+ select( preferencesStore ).get( 'core', PREFERENCE_NAME ) ?? true,
15
+ []
16
+ );
17
+
18
+ const { set: setPreference } = useDispatch( preferencesStore );
19
+ if ( ! showTemplatePartHint ) {
20
+ return null;
21
+ }
22
+
23
+ return (
24
+ <Notice
25
+ politeness="polite"
26
+ className="edit-site-sidebar__notice"
27
+ onRemove={ () => {
28
+ setPreference( 'core', PREFERENCE_NAME, false );
29
+ } }
30
+ >
31
+ { __( 'Looking for template parts? Find them in "Patterns".' ) }
32
+ </Notice>
33
+ );
34
+ }
@@ -22,9 +22,10 @@ import buildNavigationLabel from '../sidebar-navigation-screen-navigation-menus/
22
22
  export const postType = `wp_navigation`;
23
23
 
24
24
  export default function SidebarNavigationScreenNavigationMenu() {
25
- const {
26
- params: { postId },
27
- } = useNavigator();
25
+ const { params } = useNavigator();
26
+
27
+ // See https://github.com/WordPress/gutenberg/pull/52120.
28
+ const postId = Number( params?.postId );
28
29
 
29
30
  const { record: navigationMenu, isResolving } = useEntityRecord(
30
31
  'postType',
@@ -33,6 +33,7 @@ export default function ScreenNavigationMoreMenu( props ) {
33
33
  <>
34
34
  <DropdownMenu
35
35
  className="sidebar-navigation__more-menu"
36
+ label={ __( 'Actions' ) }
36
37
  icon={ moreVertical }
37
38
  popoverProps={ POPOVER_PROPS }
38
39
  >
@@ -24,13 +24,13 @@ export default function SingleNavigationMenu( {
24
24
  <SidebarNavigationScreenWrapper
25
25
  actions={
26
26
  <>
27
- <EditButton postId={ navigationMenu?.id } />
28
27
  <ScreenNavigationMoreMenu
29
28
  menuTitle={ decodeEntities( menuTitle ) }
30
29
  onDelete={ handleDelete }
31
30
  onSave={ handleSave }
32
31
  onDuplicate={ handleDuplicate }
33
32
  />
33
+ <EditButton postId={ navigationMenu?.id } />
34
34
  </>
35
35
  }
36
36
  title={ buildNavigationLabel(
@@ -65,8 +65,10 @@ function useSaveNavigationMenu() {
65
65
  };
66
66
  }, [] );
67
67
 
68
- const { editEntityRecord, saveEditedEntityRecord } =
69
- useDispatch( coreStore );
68
+ const {
69
+ editEntityRecord,
70
+ __experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits,
71
+ } = useDispatch( coreStore );
70
72
 
71
73
  const { createSuccessNotice, createErrorNotice } =
72
74
  useDispatch( noticesStore );
@@ -87,11 +89,19 @@ function useSaveNavigationMenu() {
87
89
  // Apply the edits.
88
90
  editEntityRecord( 'postType', postType, postId, edits );
89
91
 
92
+ const recordPropertiesToSave = Object.keys( edits );
93
+
90
94
  // Attempt to persist.
91
95
  try {
92
- await saveEditedEntityRecord( 'postType', postType, postId, {
93
- throwOnError: true,
94
- } );
96
+ await saveSpecifiedEntityEdits(
97
+ 'postType',
98
+ postType,
99
+ postId,
100
+ recordPropertiesToSave,
101
+ {
102
+ throwOnError: true,
103
+ }
104
+ );
95
105
  createSuccessNotice( __( 'Renamed Navigation menu' ), {
96
106
  type: 'snackbar',
97
107
  } );
@@ -3,6 +3,8 @@
3
3
  // on apiFetch this query is limited to 100.
4
4
  // These parameters must be kept aligned with those in
5
5
  // lib/compat/wordpress-6.3/navigation-block-preloading.php
6
+ // and
7
+ // block-library/src/navigation/constants.js
6
8
  export const PRELOADED_NAVIGATION_MENUS_QUERY = {
7
9
  per_page: 100,
8
10
  status: [ 'publish', 'draft' ],
@@ -30,9 +30,9 @@ import SidebarNavigationScreenDetailsFooter from '../sidebar-navigation-screen-d
30
30
  export default function SidebarNavigationScreenPage() {
31
31
  const navigator = useNavigator();
32
32
  const { setCanvasMode } = unlock( useDispatch( editSiteStore ) );
33
- const {
34
- params: { postId },
35
- } = useNavigator();
33
+ const { params } = useNavigator();
34
+
35
+ const postId = Number( params?.postId );
36
36
  const { record } = useEntityRecord( 'postType', 'page', postId );
37
37
 
38
38
  const { featuredMediaAltText, featuredMediaSourceUrl } = useSelect(