@wordpress/edit-site 5.3.2 → 5.4.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 (339) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/build/components/add-new-template/new-template-part.js +8 -5
  3. package/build/components/add-new-template/new-template-part.js.map +1 -1
  4. package/build/components/add-new-template/new-template.js +9 -25
  5. package/build/components/add-new-template/new-template.js.map +1 -1
  6. package/build/components/app/index.js.map +1 -1
  7. package/build/components/block-editor/editor-canvas.js +4 -3
  8. package/build/components/block-editor/editor-canvas.js.map +1 -1
  9. package/build/components/block-editor/index.js +3 -3
  10. package/build/components/block-editor/index.js.map +1 -1
  11. package/build/components/editor/index.js +28 -24
  12. package/build/components/editor/index.js.map +1 -1
  13. package/build/components/global-styles/border-panel.js +6 -6
  14. package/build/components/global-styles/border-panel.js.map +1 -1
  15. package/build/components/global-styles/color-palette-panel.js +7 -4
  16. package/build/components/global-styles/color-palette-panel.js.map +1 -1
  17. package/build/components/global-styles/color-utils.js +1 -1
  18. package/build/components/global-styles/color-utils.js.map +1 -1
  19. package/build/components/global-styles/context-menu.js +16 -3
  20. package/build/components/global-styles/context-menu.js.map +1 -1
  21. package/build/components/global-styles/custom-css.js +3 -3
  22. package/build/components/global-styles/custom-css.js.map +1 -1
  23. package/build/components/global-styles/dimensions-panel.js +10 -9
  24. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  25. package/build/components/global-styles/global-styles-provider.js +2 -2
  26. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  27. package/build/components/global-styles/gradients-palette-panel.js +10 -5
  28. package/build/components/global-styles/gradients-palette-panel.js.map +1 -1
  29. package/build/components/global-styles/header.js +4 -2
  30. package/build/components/global-styles/header.js.map +1 -1
  31. package/build/components/global-styles/hooks.js +16 -53
  32. package/build/components/global-styles/hooks.js.map +1 -1
  33. package/build/components/global-styles/navigation-button.js +1 -1
  34. package/build/components/global-styles/navigation-button.js.map +1 -1
  35. package/build/components/global-styles/palette.js +5 -3
  36. package/build/components/global-styles/palette.js.map +1 -1
  37. package/build/components/global-styles/preview.js +2 -2
  38. package/build/components/global-styles/preview.js.map +1 -1
  39. package/build/components/global-styles/screen-background-color.js +5 -4
  40. package/build/components/global-styles/screen-background-color.js.map +1 -1
  41. package/build/components/global-styles/screen-block-list.js +14 -3
  42. package/build/components/global-styles/screen-block-list.js.map +1 -1
  43. package/build/components/global-styles/screen-button-color.js +9 -7
  44. package/build/components/global-styles/screen-button-color.js.map +1 -1
  45. package/build/components/global-styles/screen-colors.js +10 -8
  46. package/build/components/global-styles/screen-colors.js.map +1 -1
  47. package/build/components/global-styles/screen-css.js +5 -5
  48. package/build/components/global-styles/screen-css.js.map +1 -1
  49. package/build/components/global-styles/screen-heading-color.js +10 -8
  50. package/build/components/global-styles/screen-heading-color.js.map +1 -1
  51. package/build/components/global-styles/screen-link-color.js +5 -4
  52. package/build/components/global-styles/screen-link-color.js.map +1 -1
  53. package/build/components/global-styles/screen-root.js +2 -2
  54. package/build/components/global-styles/screen-root.js.map +1 -1
  55. package/build/components/global-styles/screen-style-variations.js +2 -2
  56. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  57. package/build/components/global-styles/screen-text-color.js +5 -4
  58. package/build/components/global-styles/screen-text-color.js.map +1 -1
  59. package/build/components/global-styles/screen-typography.js +5 -3
  60. package/build/components/global-styles/screen-typography.js.map +1 -1
  61. package/build/components/global-styles/shadow-panel.js +4 -5
  62. package/build/components/global-styles/shadow-panel.js.map +1 -1
  63. package/build/components/global-styles/subtitle.js +3 -2
  64. package/build/components/global-styles/subtitle.js.map +1 -1
  65. package/build/components/global-styles/typography-panel.js +24 -301
  66. package/build/components/global-styles/typography-panel.js.map +1 -1
  67. package/build/components/global-styles/typography-preview.js +2 -2
  68. package/build/components/global-styles/typography-preview.js.map +1 -1
  69. package/build/components/global-styles/ui.js +3 -10
  70. package/build/components/global-styles/ui.js.map +1 -1
  71. package/build/components/global-styles-renderer/index.js +2 -2
  72. package/build/components/global-styles-renderer/index.js.map +1 -1
  73. package/build/components/header-edit-mode/index.js +6 -3
  74. package/build/components/header-edit-mode/index.js.map +1 -1
  75. package/build/components/keyboard-shortcut-help-modal/config.js +1 -1
  76. package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  77. package/build/components/layout/index.js +10 -23
  78. package/build/components/layout/index.js.map +1 -1
  79. package/build/components/list/actions/rename-menu-item.js +1 -1
  80. package/build/components/list/actions/rename-menu-item.js.map +1 -1
  81. package/build/components/list/table.js +1 -0
  82. package/build/components/list/table.js.map +1 -1
  83. package/build/components/navigation-inspector/index.js +0 -29
  84. package/build/components/navigation-inspector/index.js.map +1 -1
  85. package/build/components/navigation-inspector/navigation-menu.js +6 -4
  86. package/build/components/navigation-inspector/navigation-menu.js.map +1 -1
  87. package/build/components/save-panel/index.js +4 -3
  88. package/build/components/save-panel/index.js.map +1 -1
  89. package/build/components/sidebar/index.js +18 -23
  90. package/build/components/sidebar/index.js.map +1 -1
  91. package/build/components/sidebar-edit-mode/index.js +1 -1
  92. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  93. package/build/components/sidebar-edit-mode/template-card/index.js +9 -2
  94. package/build/components/sidebar-edit-mode/template-card/index.js.map +1 -1
  95. package/build/components/sidebar-edit-mode/template-card/last-revision.js +84 -0
  96. package/build/components/sidebar-edit-mode/template-card/last-revision.js.map +1 -0
  97. package/build/components/sidebar-navigation-screen/index.js +28 -7
  98. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  99. package/build/components/sidebar-navigation-screen-navigation-item/index.js +72 -0
  100. package/build/components/sidebar-navigation-screen-navigation-item/index.js.map +1 -0
  101. package/build/components/sidebar-navigation-screen-navigation-menus/index.js +2 -2
  102. package/build/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  103. package/build/components/sidebar-navigation-screen-template/index.js +70 -0
  104. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -0
  105. package/build/components/sidebar-navigation-screen-templates/index.js +32 -82
  106. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  107. package/build/components/sidebar-navigation-screen-templates-browse/index.js +43 -0
  108. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -0
  109. package/build/components/site-hub/index.js +14 -49
  110. package/build/components/site-hub/index.js.map +1 -1
  111. package/build/components/start-template-options/index.js +175 -0
  112. package/build/components/start-template-options/index.js.map +1 -0
  113. package/build/components/style-book/index.js +10 -3
  114. package/build/components/style-book/index.js.map +1 -1
  115. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +55 -20
  116. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  117. package/build/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +3 -3
  118. package/build/components/sync-state-with-url/use-sync-canvas-mode-with-url.js.map +1 -1
  119. package/build/components/sync-state-with-url/{use-sync-sidebar-path-with-url.js → use-sync-path-with-url.js} +12 -12
  120. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -0
  121. package/build/components/use-edited-entity-record/index.js +6 -2
  122. package/build/components/use-edited-entity-record/index.js.map +1 -1
  123. package/build/hooks/push-changes-to-global-styles/index.js +7 -6
  124. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  125. package/build/{experiments.js → private-apis.js} +3 -3
  126. package/build/private-apis.js.map +1 -0
  127. package/build/store/index.js +3 -3
  128. package/build/store/index.js.map +1 -1
  129. package/build/utils/get-is-list-page.js +5 -6
  130. package/build/utils/get-is-list-page.js.map +1 -1
  131. package/build-module/components/add-new-template/new-template-part.js +7 -4
  132. package/build-module/components/add-new-template/new-template-part.js.map +1 -1
  133. package/build-module/components/add-new-template/new-template.js +8 -22
  134. package/build-module/components/add-new-template/new-template.js.map +1 -1
  135. package/build-module/components/app/index.js.map +1 -1
  136. package/build-module/components/block-editor/editor-canvas.js +2 -1
  137. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  138. package/build-module/components/block-editor/index.js +3 -3
  139. package/build-module/components/block-editor/index.js.map +1 -1
  140. package/build-module/components/editor/index.js +27 -25
  141. package/build-module/components/editor/index.js.map +1 -1
  142. package/build-module/components/global-styles/border-panel.js +8 -8
  143. package/build-module/components/global-styles/border-panel.js.map +1 -1
  144. package/build-module/components/global-styles/color-palette-panel.js +8 -5
  145. package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
  146. package/build-module/components/global-styles/color-utils.js +2 -2
  147. package/build-module/components/global-styles/color-utils.js.map +1 -1
  148. package/build-module/components/global-styles/context-menu.js +13 -2
  149. package/build-module/components/global-styles/context-menu.js.map +1 -1
  150. package/build-module/components/global-styles/custom-css.js +4 -4
  151. package/build-module/components/global-styles/custom-css.js.map +1 -1
  152. package/build-module/components/global-styles/dimensions-panel.js +12 -11
  153. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  154. package/build-module/components/global-styles/global-styles-provider.js +3 -3
  155. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  156. package/build-module/components/global-styles/gradients-palette-panel.js +11 -6
  157. package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -1
  158. package/build-module/components/global-styles/header.js +5 -3
  159. package/build-module/components/global-styles/header.js.map +1 -1
  160. package/build-module/components/global-styles/hooks.js +15 -52
  161. package/build-module/components/global-styles/hooks.js.map +1 -1
  162. package/build-module/components/global-styles/navigation-button.js +2 -2
  163. package/build-module/components/global-styles/navigation-button.js.map +1 -1
  164. package/build-module/components/global-styles/palette.js +6 -4
  165. package/build-module/components/global-styles/palette.js.map +1 -1
  166. package/build-module/components/global-styles/preview.js +3 -3
  167. package/build-module/components/global-styles/preview.js.map +1 -1
  168. package/build-module/components/global-styles/screen-background-color.js +7 -6
  169. package/build-module/components/global-styles/screen-background-color.js.map +1 -1
  170. package/build-module/components/global-styles/screen-block-list.js +12 -3
  171. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  172. package/build-module/components/global-styles/screen-button-color.js +11 -9
  173. package/build-module/components/global-styles/screen-button-color.js.map +1 -1
  174. package/build-module/components/global-styles/screen-colors.js +12 -10
  175. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  176. package/build-module/components/global-styles/screen-css.js +5 -5
  177. package/build-module/components/global-styles/screen-css.js.map +1 -1
  178. package/build-module/components/global-styles/screen-heading-color.js +12 -10
  179. package/build-module/components/global-styles/screen-heading-color.js.map +1 -1
  180. package/build-module/components/global-styles/screen-link-color.js +7 -6
  181. package/build-module/components/global-styles/screen-link-color.js.map +1 -1
  182. package/build-module/components/global-styles/screen-root.js +3 -3
  183. package/build-module/components/global-styles/screen-root.js.map +1 -1
  184. package/build-module/components/global-styles/screen-style-variations.js +3 -3
  185. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  186. package/build-module/components/global-styles/screen-text-color.js +7 -6
  187. package/build-module/components/global-styles/screen-text-color.js.map +1 -1
  188. package/build-module/components/global-styles/screen-typography.js +6 -4
  189. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  190. package/build-module/components/global-styles/shadow-panel.js +6 -7
  191. package/build-module/components/global-styles/shadow-panel.js.map +1 -1
  192. package/build-module/components/global-styles/subtitle.js +3 -2
  193. package/build-module/components/global-styles/subtitle.js.map +1 -1
  194. package/build-module/components/global-styles/typography-panel.js +29 -302
  195. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  196. package/build-module/components/global-styles/typography-preview.js +3 -3
  197. package/build-module/components/global-styles/typography-preview.js.map +1 -1
  198. package/build-module/components/global-styles/ui.js +4 -11
  199. package/build-module/components/global-styles/ui.js.map +1 -1
  200. package/build-module/components/global-styles-renderer/index.js +3 -3
  201. package/build-module/components/global-styles-renderer/index.js.map +1 -1
  202. package/build-module/components/header-edit-mode/index.js +6 -3
  203. package/build-module/components/header-edit-mode/index.js.map +1 -1
  204. package/build-module/components/keyboard-shortcut-help-modal/config.js +1 -1
  205. package/build-module/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  206. package/build-module/components/layout/index.js +10 -23
  207. package/build-module/components/layout/index.js.map +1 -1
  208. package/build-module/components/list/actions/rename-menu-item.js +1 -1
  209. package/build-module/components/list/actions/rename-menu-item.js.map +1 -1
  210. package/build-module/components/list/table.js +1 -0
  211. package/build-module/components/list/table.js.map +1 -1
  212. package/build-module/components/navigation-inspector/index.js +0 -27
  213. package/build-module/components/navigation-inspector/index.js.map +1 -1
  214. package/build-module/components/navigation-inspector/navigation-menu.js +7 -5
  215. package/build-module/components/navigation-inspector/navigation-menu.js.map +1 -1
  216. package/build-module/components/save-panel/index.js +3 -2
  217. package/build-module/components/save-panel/index.js.map +1 -1
  218. package/build-module/components/sidebar/index.js +15 -21
  219. package/build-module/components/sidebar/index.js.map +1 -1
  220. package/build-module/components/sidebar-edit-mode/index.js +1 -1
  221. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  222. package/build-module/components/sidebar-edit-mode/template-card/index.js +9 -4
  223. package/build-module/components/sidebar-edit-mode/template-card/index.js.map +1 -1
  224. package/build-module/components/sidebar-edit-mode/template-card/last-revision.js +70 -0
  225. package/build-module/components/sidebar-edit-mode/template-card/last-revision.js.map +1 -0
  226. package/build-module/components/sidebar-navigation-screen/index.js +27 -9
  227. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  228. package/build-module/components/sidebar-navigation-screen-navigation-item/index.js +55 -0
  229. package/build-module/components/sidebar-navigation-screen-navigation-item/index.js.map +1 -0
  230. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js +2 -2
  231. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  232. package/build-module/components/sidebar-navigation-screen-template/index.js +53 -0
  233. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -0
  234. package/build-module/components/sidebar-navigation-screen-templates/index.js +34 -81
  235. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  236. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +31 -0
  237. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -0
  238. package/build-module/components/site-hub/index.js +14 -46
  239. package/build-module/components/site-hub/index.js.map +1 -1
  240. package/build-module/components/start-template-options/index.js +156 -0
  241. package/build-module/components/start-template-options/index.js.map +1 -0
  242. package/build-module/components/style-book/index.js +11 -4
  243. package/build-module/components/style-book/index.js.map +1 -1
  244. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +55 -21
  245. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  246. package/build-module/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +1 -1
  247. package/build-module/components/sync-state-with-url/use-sync-canvas-mode-with-url.js.map +1 -1
  248. package/build-module/components/sync-state-with-url/{use-sync-sidebar-path-with-url.js → use-sync-path-with-url.js} +11 -11
  249. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -0
  250. package/build-module/components/use-edited-entity-record/index.js +6 -2
  251. package/build-module/components/use-edited-entity-record/index.js.map +1 -1
  252. package/build-module/hooks/push-changes-to-global-styles/index.js +9 -8
  253. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  254. package/build-module/{experiments.js → private-apis.js} +2 -2
  255. package/build-module/private-apis.js.map +1 -0
  256. package/build-module/store/index.js +1 -1
  257. package/build-module/store/index.js.map +1 -1
  258. package/build-module/utils/get-is-list-page.js +5 -6
  259. package/build-module/utils/get-is-list-page.js.map +1 -1
  260. package/build-style/style-rtl.css +91 -41
  261. package/build-style/style.css +91 -41
  262. package/package.json +31 -31
  263. package/src/components/add-new-template/new-template-part.js +7 -4
  264. package/src/components/add-new-template/new-template.js +9 -22
  265. package/src/components/app/index.js +0 -1
  266. package/src/components/block-editor/editor-canvas.js +2 -1
  267. package/src/components/block-editor/index.js +3 -3
  268. package/src/components/editor/index.js +31 -28
  269. package/src/components/global-styles/border-panel.js +8 -8
  270. package/src/components/global-styles/color-palette-panel.js +6 -3
  271. package/src/components/global-styles/color-utils.js +2 -3
  272. package/src/components/global-styles/context-menu.js +17 -2
  273. package/src/components/global-styles/custom-css.js +4 -4
  274. package/src/components/global-styles/dimensions-panel.js +15 -11
  275. package/src/components/global-styles/global-styles-provider.js +3 -3
  276. package/src/components/global-styles/gradients-palette-panel.js +7 -4
  277. package/src/components/global-styles/header.js +9 -3
  278. package/src/components/global-styles/hooks.js +20 -93
  279. package/src/components/global-styles/navigation-button.js +4 -2
  280. package/src/components/global-styles/palette.js +4 -4
  281. package/src/components/global-styles/preview.js +3 -3
  282. package/src/components/global-styles/screen-background-color.js +6 -5
  283. package/src/components/global-styles/screen-block-list.js +19 -3
  284. package/src/components/global-styles/screen-button-color.js +11 -9
  285. package/src/components/global-styles/screen-colors.js +10 -10
  286. package/src/components/global-styles/screen-css.js +14 -7
  287. package/src/components/global-styles/screen-heading-color.js +12 -10
  288. package/src/components/global-styles/screen-link-color.js +6 -5
  289. package/src/components/global-styles/screen-root.js +3 -3
  290. package/src/components/global-styles/screen-style-variations.js +3 -3
  291. package/src/components/global-styles/screen-text-color.js +6 -5
  292. package/src/components/global-styles/screen-typography.js +4 -4
  293. package/src/components/global-styles/shadow-panel.js +9 -6
  294. package/src/components/global-styles/style.scss +7 -1
  295. package/src/components/global-styles/subtitle.js +5 -2
  296. package/src/components/global-styles/typography-panel.js +31 -395
  297. package/src/components/global-styles/typography-preview.js +3 -3
  298. package/src/components/global-styles/ui.js +3 -8
  299. package/src/components/global-styles-renderer/index.js +3 -3
  300. package/src/components/header-edit-mode/index.js +6 -3
  301. package/src/components/keyboard-shortcut-help-modal/config.js +1 -1
  302. package/src/components/layout/index.js +35 -48
  303. package/src/components/layout/style.scss +11 -23
  304. package/src/components/list/actions/rename-menu-item.js +1 -1
  305. package/src/components/list/table.js +4 -0
  306. package/src/components/navigation-inspector/index.js +0 -32
  307. package/src/components/navigation-inspector/navigation-menu.js +10 -4
  308. package/src/components/save-panel/index.js +4 -1
  309. package/src/components/sidebar/index.js +14 -19
  310. package/src/components/sidebar-edit-mode/index.js +1 -1
  311. package/src/components/sidebar-edit-mode/template-card/index.js +24 -14
  312. package/src/components/sidebar-edit-mode/template-card/last-revision.js +75 -0
  313. package/src/components/sidebar-edit-mode/template-card/style.scss +4 -0
  314. package/src/components/sidebar-navigation-screen/index.js +27 -11
  315. package/src/components/sidebar-navigation-screen/style.scss +4 -6
  316. package/src/components/sidebar-navigation-screen-navigation-item/index.js +52 -0
  317. package/src/components/sidebar-navigation-screen-navigation-menus/index.js +1 -1
  318. package/src/components/sidebar-navigation-screen-navigation-menus/style.scss +0 -4
  319. package/src/components/sidebar-navigation-screen-template/index.js +52 -0
  320. package/src/components/sidebar-navigation-screen-templates/index.js +49 -83
  321. package/src/components/sidebar-navigation-screen-templates-browse/index.js +31 -0
  322. package/src/components/site-hub/index.js +67 -122
  323. package/src/components/site-hub/style.scss +1 -11
  324. package/src/components/start-template-options/index.js +171 -0
  325. package/src/components/start-template-options/style.scss +76 -0
  326. package/src/components/style-book/index.js +11 -7
  327. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +48 -14
  328. package/src/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +1 -1
  329. package/src/components/sync-state-with-url/{use-sync-sidebar-path-with-url.js → use-sync-path-with-url.js} +10 -10
  330. package/src/components/use-edited-entity-record/index.js +6 -2
  331. package/src/hooks/push-changes-to-global-styles/index.js +29 -24
  332. package/src/{experiments.js → private-apis.js} +1 -1
  333. package/src/store/index.js +1 -1
  334. package/src/style.scss +1 -0
  335. package/src/utils/get-is-list-page.js +5 -5
  336. package/build/components/sync-state-with-url/use-sync-sidebar-path-with-url.js.map +0 -1
  337. package/build/experiments.js.map +0 -1
  338. package/build-module/components/sync-state-with-url/use-sync-sidebar-path-with-url.js.map +0 -1
  339. package/build-module/experiments.js.map +0 -1
@@ -1,9 +1,11 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { __experimentalItemGroup as ItemGroup } from '@wordpress/components';
4
+ import {
5
+ __experimentalItemGroup as ItemGroup,
6
+ __experimentalItem as Item,
7
+ } from '@wordpress/components';
5
8
  import { __ } from '@wordpress/i18n';
6
- import { useSelect } from '@wordpress/data';
7
9
  import { useEntityRecords } from '@wordpress/core-data';
8
10
  import { decodeEntities } from '@wordpress/html-entities';
9
11
  import { useViewportMatch } from '@wordpress/compose';
@@ -14,24 +16,8 @@ import { useViewportMatch } from '@wordpress/compose';
14
16
  import SidebarNavigationScreen from '../sidebar-navigation-screen';
15
17
  import { useLink } from '../routes/link';
16
18
  import SidebarNavigationItem from '../sidebar-navigation-item';
17
- import { useLocation } from '../routes';
18
- import { store as editSiteStore } from '../../store';
19
19
  import AddNewTemplate from '../add-new-template';
20
20
 
21
- function omit( object, keys ) {
22
- return Object.fromEntries(
23
- Object.entries( object ).filter( ( [ key ] ) => ! keys.includes( key ) )
24
- );
25
- }
26
-
27
- const Item = ( { item } ) => {
28
- const linkInfo = useLink( item.params );
29
- const props = item.params
30
- ? { ...omit( item, 'params' ), ...linkInfo }
31
- : item;
32
- return <SidebarNavigationItem { ...props } />;
33
- };
34
-
35
21
  const config = {
36
22
  wp_template: {
37
23
  path: '/templates',
@@ -53,23 +39,20 @@ const config = {
53
39
  },
54
40
  };
55
41
 
42
+ const TemplateItem = ( { postType, postId, ...props } ) => {
43
+ const linkInfo = useLink( {
44
+ postType,
45
+ postId,
46
+ path: config[ postType ].path + '/single',
47
+ } );
48
+ return <SidebarNavigationItem { ...linkInfo } { ...props } />;
49
+ };
50
+
56
51
  export default function SidebarNavigationScreenTemplates( {
57
52
  postType = 'wp_template',
58
53
  } ) {
59
- const { params } = useLocation();
60
54
  const isMobileViewport = useViewportMatch( 'medium', '<' );
61
55
 
62
- // Ideally the URL params would be enough.
63
- // Loading the editor should ideally redirect to the home page
64
- // instead of fetching the edited entity here.
65
- const { editedPostId, editedPostType } = useSelect( ( select ) => {
66
- const { getEditedPostType, getEditedPostId } = select( editSiteStore );
67
- return {
68
- editedPostId: getEditedPostId(),
69
- editedPostType: getEditedPostType(),
70
- };
71
- }, [] );
72
-
73
56
  const { records: templates, isResolving: isLoading } = useEntityRecords(
74
57
  'postType',
75
58
  postType,
@@ -78,44 +61,15 @@ export default function SidebarNavigationScreenTemplates( {
78
61
  }
79
62
  );
80
63
 
81
- let items = [];
82
- if ( isLoading ) {
83
- items = [
84
- {
85
- children: config[ postType ].labels.loading,
86
- },
87
- ];
88
- } else if ( ! templates && ! isLoading ) {
89
- items = [
90
- {
91
- children: config[ postType ].labels.notFound,
92
- },
93
- ];
94
- } else {
95
- items = templates?.map( ( template ) => ( {
96
- params: {
97
- postType,
98
- postId: template.id,
99
- },
100
- children: decodeEntities(
101
- template.title?.rendered || template.slug
102
- ),
103
- 'aria-current':
104
- ( params.postType === postType &&
105
- params.postId === template.id ) ||
106
- // This is a special case for the home page.
107
- ( editedPostId === template.id &&
108
- editedPostType === postType &&
109
- !! params.postId )
110
- ? 'page'
111
- : undefined,
112
- } ) );
113
- }
64
+ const browseAllLink = useLink( {
65
+ postType,
66
+ postId: undefined,
67
+ path: config[ postType ].path + '/all',
68
+ } );
114
69
 
115
70
  return (
116
71
  <SidebarNavigationScreen
117
72
  path={ config[ postType ].path }
118
- parentTitle={ __( 'Design' ) }
119
73
  title={ config[ postType ].labels.title }
120
74
  actions={
121
75
  ! isMobileViewport && (
@@ -130,25 +84,37 @@ export default function SidebarNavigationScreenTemplates( {
130
84
  }
131
85
  content={
132
86
  <>
133
- <ItemGroup>
134
- { items.map( ( item, index ) => (
135
- <Item item={ item } key={ index } />
136
- ) ) }
137
-
138
- <SidebarNavigationItem
139
- className="edit-site-sidebar-navigation-screen-templates__see-all"
140
- { ...useLink( {
141
- postType,
142
- postId: undefined,
143
- } ) }
144
- aria-current={
145
- params.postType === postType && ! params.postId
146
- ? 'page'
147
- : undefined
148
- }
149
- children={ config[ postType ].labels.manage }
150
- />
151
- </ItemGroup>
87
+ { isLoading && config[ postType ].labels.loading }
88
+ { ! isLoading && (
89
+ <ItemGroup>
90
+ { ! templates?.length && (
91
+ <Item>
92
+ { config[ postType ].labels.notFound }
93
+ </Item>
94
+ ) }
95
+ { ( templates ?? [] ).map( ( template ) => (
96
+ <TemplateItem
97
+ postType={ postType }
98
+ postId={ template.id }
99
+ key={ template.id }
100
+ >
101
+ { decodeEntities(
102
+ template.title?.rendered ||
103
+ template.slug
104
+ ) }
105
+ </TemplateItem>
106
+ ) ) }
107
+ { ! isMobileViewport && (
108
+ <SidebarNavigationItem
109
+ className="edit-site-sidebar-navigation-screen-templates__see-all"
110
+ { ...browseAllLink }
111
+ children={
112
+ config[ postType ].labels.manage
113
+ }
114
+ />
115
+ ) }
116
+ </ItemGroup>
117
+ ) }
152
118
  </>
153
119
  }
154
120
  />
@@ -0,0 +1,31 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import SidebarNavigationScreen from '../sidebar-navigation-screen';
10
+
11
+ const config = {
12
+ wp_template: {
13
+ path: '/templates/all',
14
+ title: __( 'All templates' ),
15
+ },
16
+ wp_template_part: {
17
+ path: '/template-parts/all',
18
+ title: __( 'All template parts' ),
19
+ },
20
+ };
21
+
22
+ export default function SidebarNavigationScreenTemplatesBrowse( {
23
+ postType = 'wp_template',
24
+ } ) {
25
+ return (
26
+ <SidebarNavigationScreen
27
+ path={ config[ postType ].path }
28
+ title={ config[ postType ].title }
29
+ />
30
+ );
31
+ }
@@ -11,9 +11,8 @@ import {
11
11
  Button,
12
12
  __unstableMotion as motion,
13
13
  __experimentalHStack as HStack,
14
- __experimentalVStack as VStack,
15
14
  } from '@wordpress/components';
16
- import { useReducedMotion, useViewportMatch } from '@wordpress/compose';
15
+ import { useReducedMotion } from '@wordpress/compose';
17
16
  import { __ } from '@wordpress/i18n';
18
17
  import { store as blockEditorStore } from '@wordpress/block-editor';
19
18
  import { store as coreStore } from '@wordpress/core-data';
@@ -23,137 +22,83 @@ import { forwardRef } from '@wordpress/element';
23
22
  * Internal dependencies
24
23
  */
25
24
  import { store as editSiteStore } from '../../store';
26
- import { useLocation } from '../routes';
27
- import getIsListPage from '../../utils/get-is-list-page';
28
25
  import SiteIcon from '../site-icon';
29
- import useEditedEntityRecord from '../use-edited-entity-record';
30
- import { unlock } from '../../experiments';
26
+ import { unlock } from '../../private-apis';
31
27
 
32
28
  const HUB_ANIMATION_DURATION = 0.3;
33
29
 
34
- const SiteHub = forwardRef(
35
- ( { isMobileCanvasVisible, setIsMobileCanvasVisible, ...props }, ref ) => {
36
- const { params } = useLocation();
37
- const isListPage = getIsListPage( params );
38
- const isEditorPage = ! isListPage;
39
- const { canvasMode, dashboardLink, entityConfig } = useSelect(
40
- ( select ) => {
41
- select( editSiteStore ).getEditedPostType();
42
- const { getCanvasMode, getSettings, getEditedPostType } =
43
- unlock( select( editSiteStore ) );
44
- return {
45
- canvasMode: getCanvasMode(),
46
- dashboardLink: getSettings().__experimentalDashboardLink,
47
- entityConfig: select( coreStore ).getEntityConfig(
48
- 'postType',
49
- getEditedPostType()
50
- ),
51
- };
52
- },
53
- []
30
+ const SiteHub = forwardRef( ( props, ref ) => {
31
+ const { canvasMode, dashboardLink } = useSelect( ( select ) => {
32
+ select( editSiteStore ).getEditedPostType();
33
+ const { getCanvasMode, getSettings } = unlock(
34
+ select( editSiteStore )
54
35
  );
55
- const disableMotion = useReducedMotion();
56
- const isMobileViewport = useViewportMatch( 'medium', '<' );
57
- const { setCanvasMode } = unlock( useDispatch( editSiteStore ) );
58
- const { clearSelectedBlock } = useDispatch( blockEditorStore );
59
- const showEditButton =
60
- ( isEditorPage && canvasMode === 'view' && ! isMobileViewport ) ||
61
- ( isMobileViewport &&
62
- canvasMode === 'view' &&
63
- isMobileCanvasVisible );
64
- const isBackToDashboardButton =
65
- ( ! isMobileViewport && canvasMode === 'view' ) ||
66
- ( isMobileViewport && ! isMobileCanvasVisible );
67
- const showLabels = canvasMode !== 'edit';
68
- const siteIconButtonProps = isBackToDashboardButton
69
- ? {
70
- href: dashboardLink || 'index.php',
71
- 'aria-label': __( 'Go back to the dashboard' ),
72
- }
73
- : {
74
- label: __( 'Open Navigation Sidebar' ),
75
- onClick: () => {
76
- clearSelectedBlock();
77
- setIsMobileCanvasVisible( false );
78
- setCanvasMode( 'view' );
79
- },
80
- };
81
- const { getTitle } = useEditedEntityRecord();
36
+ return {
37
+ canvasMode: getCanvasMode(),
38
+ dashboardLink: getSettings().__experimentalDashboardLink,
39
+ };
40
+ }, [] );
41
+ const disableMotion = useReducedMotion();
42
+ const { setCanvasMode } = unlock( useDispatch( editSiteStore ) );
43
+ const { clearSelectedBlock } = useDispatch( blockEditorStore );
44
+ const isBackToDashboardButton = canvasMode === 'view';
45
+ const showLabels = canvasMode !== 'edit';
46
+ const siteIconButtonProps = isBackToDashboardButton
47
+ ? {
48
+ href: dashboardLink || 'index.php',
49
+ 'aria-label': __( 'Go back to the dashboard' ),
50
+ }
51
+ : {
52
+ label: __( 'Open Navigation Sidebar' ),
53
+ onClick: () => {
54
+ clearSelectedBlock();
55
+ setCanvasMode( 'view' );
56
+ },
57
+ };
58
+ const siteTitle = useSelect(
59
+ ( select ) =>
60
+ select( coreStore ).getEntityRecord( 'root', 'site' )?.title,
61
+ []
62
+ );
82
63
 
83
- return (
84
- <motion.div
85
- ref={ ref }
86
- { ...props }
87
- className={ classnames(
88
- 'edit-site-site-hub',
89
- props.className
90
- ) }
91
- layout
92
- transition={ {
93
- type: 'tween',
94
- duration: disableMotion ? 0 : HUB_ANIMATION_DURATION,
95
- ease: 'easeOut',
96
- } }
64
+ return (
65
+ <motion.div
66
+ ref={ ref }
67
+ { ...props }
68
+ className={ classnames( 'edit-site-site-hub', props.className ) }
69
+ layout
70
+ transition={ {
71
+ type: 'tween',
72
+ duration: disableMotion ? 0 : HUB_ANIMATION_DURATION,
73
+ ease: 'easeOut',
74
+ } }
75
+ >
76
+ <HStack
77
+ justify="flex-start"
78
+ className="edit-site-site-hub__text-content"
79
+ spacing="0"
97
80
  >
98
- <HStack
99
- justify="flex-start"
100
- className="edit-site-site-hub__text-content"
101
- spacing="0"
81
+ <motion.div
82
+ className="edit-site-site-hub__view-mode-toggle-container"
83
+ layout
84
+ transition={ {
85
+ type: 'tween',
86
+ duration: disableMotion ? 0 : HUB_ANIMATION_DURATION,
87
+ ease: 'easeOut',
88
+ } }
102
89
  >
103
- <motion.div
104
- className="edit-site-site-hub__view-mode-toggle-container"
105
- layout
106
- transition={ {
107
- type: 'tween',
108
- duration: disableMotion
109
- ? 0
110
- : HUB_ANIMATION_DURATION,
111
- ease: 'easeOut',
112
- } }
113
- >
114
- <Button
115
- { ...siteIconButtonProps }
116
- className="edit-site-layout__view-mode-toggle"
117
- >
118
- <SiteIcon className="edit-site-layout__view-mode-toggle-icon" />
119
- </Button>
120
- </motion.div>
121
-
122
- { showLabels && (
123
- <VStack spacing={ 0 }>
124
- <div className="edit-site-site-hub__title">
125
- { getTitle() }
126
- </div>
127
- <div className="edit-site-site-hub__post-type">
128
- { entityConfig?.label }
129
- </div>
130
- </VStack>
131
- ) }
132
- </HStack>
133
-
134
- { showEditButton && (
135
90
  <Button
136
- className="edit-site-site-hub__edit-button"
137
- onClick={ () => {
138
- setCanvasMode( 'edit' );
139
- } }
140
- variant="primary"
91
+ { ...siteIconButtonProps }
92
+ className="edit-site-layout__view-mode-toggle"
141
93
  >
142
- { __( 'Edit' ) }
94
+ <SiteIcon className="edit-site-layout__view-mode-toggle-icon" />
143
95
  </Button>
144
- ) }
96
+ </motion.div>
145
97
 
146
- { isMobileViewport && ! isMobileCanvasVisible && (
147
- <Button
148
- onClick={ () => setIsMobileCanvasVisible( true ) }
149
- variant="primary"
150
- >
151
- { __( 'View Editor' ) }
152
- </Button>
153
- ) }
154
- </motion.div>
155
- );
156
- }
157
- );
98
+ { showLabels && <div>{ siteTitle }</div> }
99
+ </HStack>
100
+ </motion.div>
101
+ );
102
+ } );
158
103
 
159
104
  export default SiteHub;
@@ -5,11 +5,6 @@
5
5
  gap: $grid-unit-10;
6
6
  }
7
7
 
8
- .edit-site-site-hub__edit-button {
9
- height: $grid-unit-40;
10
- color: $white;
11
- }
12
-
13
8
  .edit-site-site-hub__post-type {
14
9
  opacity: 0.6;
15
10
  }
@@ -18,12 +13,7 @@
18
13
  height: $header-height;
19
14
  width: $header-height + 4px;
20
15
  flex-shrink: 0;
21
- }
22
-
23
- .edit-site-layout.is-edit-mode {
24
- .edit-site-site-hub__view-mode-toggle-container {
25
- width: $header-height;
26
- }
16
+ background: $gray-900;
27
17
  }
28
18
 
29
19
  .edit-site-site-hub__text-content {
@@ -0,0 +1,171 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { Modal } from '@wordpress/components';
5
+ import { __ } from '@wordpress/i18n';
6
+ import { useState, useEffect, useMemo } from '@wordpress/element';
7
+ import { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';
8
+ import { useSelect } from '@wordpress/data';
9
+ import { useAsyncList } from '@wordpress/compose';
10
+ import { store as preferencesStore } from '@wordpress/preferences';
11
+ import { parse } from '@wordpress/blocks';
12
+
13
+ /**
14
+ * Internal dependencies
15
+ */
16
+ import { store as editSiteStore } from '../../store';
17
+ import { store as coreStore, useEntityBlockEditor } from '@wordpress/core-data';
18
+ import apiFetch from '@wordpress/api-fetch';
19
+ import { addQueryArgs } from '@wordpress/url';
20
+
21
+ function useFallbackTemplateContent( slug, isCustom = false ) {
22
+ const [ templateContent, setTemplateContent ] = useState( '' );
23
+
24
+ useEffect( () => {
25
+ apiFetch( {
26
+ path: addQueryArgs( '/wp/v2/templates/lookup', {
27
+ slug,
28
+ is_custom: isCustom,
29
+ ignore_empty: true,
30
+ } ),
31
+ } ).then( ( { content } ) => setTemplateContent( content.raw ) );
32
+ }, [ slug ] );
33
+ return templateContent;
34
+ }
35
+
36
+ const START_BLANK_TITLE = __( 'Start blank' );
37
+
38
+ function PatternSelection( { fallbackContent, onChoosePattern, postType } ) {
39
+ const [ , , onChange ] = useEntityBlockEditor( 'postType', postType );
40
+ const blockPatterns = useMemo(
41
+ () => [
42
+ {
43
+ name: 'fallback',
44
+ blocks: parse( fallbackContent ),
45
+ title: __( 'Fallback content' ),
46
+ },
47
+ {
48
+ name: 'start-blank',
49
+ blocks: parse(
50
+ '<!-- wp:paragraph --><p></p><!-- /wp:paragraph -->'
51
+ ),
52
+ title: START_BLANK_TITLE,
53
+ },
54
+ ],
55
+ [ fallbackContent ]
56
+ );
57
+ const shownBlockPatterns = useAsyncList( blockPatterns );
58
+
59
+ return (
60
+ <div
61
+ className="edit-site-start-template-options__pattern-container"
62
+ style={ {
63
+ '--wp-edit-site-start-template-options-start-blank': `"${ START_BLANK_TITLE }"`,
64
+ } }
65
+ >
66
+ <BlockPatternsList
67
+ blockPatterns={ blockPatterns }
68
+ shownPatterns={ shownBlockPatterns }
69
+ onClickPattern={ ( pattern, blocks ) => {
70
+ onChange( 'start-blank' === pattern.name ? [] : blocks, {
71
+ selection: undefined,
72
+ } );
73
+ onChoosePattern();
74
+ } }
75
+ />
76
+ </div>
77
+ );
78
+ }
79
+
80
+ function StartModal( { slug, isCustom, onClose, postType } ) {
81
+ const fallbackContent = useFallbackTemplateContent( slug, isCustom );
82
+ if ( ! fallbackContent ) {
83
+ return null;
84
+ }
85
+ return (
86
+ <Modal
87
+ className="edit-site-start-template-options__modal"
88
+ title={ __( 'Choose a pattern' ) }
89
+ closeLabel={ __( 'Cancel' ) }
90
+ focusOnMount="firstElement"
91
+ onRequestClose={ onClose }
92
+ >
93
+ <div className="edit-site-start-template-options__modal-content">
94
+ <PatternSelection
95
+ fallbackContent={ fallbackContent }
96
+ slug={ slug }
97
+ isCustom={ isCustom }
98
+ postType={ postType }
99
+ onChoosePattern={ () => {
100
+ onClose();
101
+ } }
102
+ />
103
+ </div>
104
+ </Modal>
105
+ );
106
+ }
107
+
108
+ const START_TEMPLATE_MODAL_STATES = {
109
+ INITIAL: 'INITIAL',
110
+ CLOSED: 'CLOSED',
111
+ };
112
+
113
+ export default function StartTemplateOptions() {
114
+ const [ modalState, setModalState ] = useState(
115
+ START_TEMPLATE_MODAL_STATES.INITIAL
116
+ );
117
+ const { shouldOpenModel, slug, isCustom, postType } = useSelect(
118
+ ( select ) => {
119
+ const { getEditedPostType, getEditedPostId } =
120
+ select( editSiteStore );
121
+ const _postType = getEditedPostType();
122
+ const postId = getEditedPostId();
123
+ const {
124
+ __experimentalGetDirtyEntityRecords,
125
+ getEditedEntityRecord,
126
+ } = select( coreStore );
127
+ const templateRecord = getEditedEntityRecord(
128
+ 'postType',
129
+ _postType,
130
+ postId
131
+ );
132
+
133
+ const hasDirtyEntityRecords =
134
+ __experimentalGetDirtyEntityRecords().length > 0;
135
+
136
+ return {
137
+ shouldOpenModel:
138
+ ! hasDirtyEntityRecords &&
139
+ '' === templateRecord.content &&
140
+ 'wp_template' === _postType &&
141
+ ! select( preferencesStore ).get(
142
+ 'core/edit-site',
143
+ 'welcomeGuide'
144
+ ),
145
+ slug: templateRecord.slug,
146
+ isCustom: templateRecord.is_custom,
147
+ postType: _postType,
148
+ };
149
+ },
150
+ []
151
+ );
152
+
153
+ if (
154
+ ( modalState === START_TEMPLATE_MODAL_STATES.INITIAL &&
155
+ ! shouldOpenModel ) ||
156
+ modalState === START_TEMPLATE_MODAL_STATES.CLOSED
157
+ ) {
158
+ return null;
159
+ }
160
+
161
+ return (
162
+ <StartModal
163
+ slug={ slug }
164
+ isCustom={ isCustom }
165
+ postType={ postType }
166
+ onClose={ () =>
167
+ setModalState( START_TEMPLATE_MODAL_STATES.CLOSED )
168
+ }
169
+ />
170
+ );
171
+ }
@@ -0,0 +1,76 @@
1
+ .edit-site-start-template-options__modal.components-modal__frame {
2
+ // To keep modal dimensions consistent as subsections are navigated, width
3
+ // and height are used instead of max-(width/height).
4
+ @include break-small() {
5
+ width: calc(100% - #{ $grid-unit-20 * 2 });
6
+ height: calc(100% - #{ $header-height * 2 });
7
+ }
8
+ @include break-medium() {
9
+ width: 50%;
10
+ }
11
+ @include break-large() {
12
+ height: fit-content;
13
+ }
14
+ }
15
+
16
+ .edit-site-start-template-options__modal-content .block-editor-block-patterns-list {
17
+ display: grid;
18
+ width: 100%;
19
+ margin-top: $grid-unit-05;
20
+ gap: $grid-unit-30;
21
+ grid-template-columns: repeat(auto-fit, minmax(min(100%/2, max(240px, 100%/10)), 1fr));
22
+ .block-editor-block-patterns-list__list-item {
23
+ break-inside: avoid-column;
24
+ margin-bottom: 0;
25
+ width: 100%;
26
+ aspect-ratio: 3/4;
27
+
28
+ .block-editor-block-preview__container {
29
+ height: 100%;
30
+ box-shadow: 0 0 0 1px $gray-300;
31
+ }
32
+
33
+ .block-editor-block-preview__content {
34
+ width: 100%;
35
+ position: absolute;
36
+ }
37
+
38
+ .block-editor-block-patterns-list__item-title {
39
+ display: none;
40
+ }
41
+
42
+ &:hover {
43
+ .block-editor-block-preview__container {
44
+ box-shadow: 0 0 0 2px var(--wp-admin-theme-color);
45
+ }
46
+ }
47
+
48
+ &:focus {
49
+ .block-editor-block-preview__container {
50
+ box-shadow: inset 0 0 0 1px $white, 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
51
+
52
+ // Windows High Contrast mode will show this outline, but not the box-shadow.
53
+ outline: 2px solid transparent;
54
+ }
55
+ }
56
+ }
57
+
58
+ // The start blank pattern is the last and we are selecting it.
59
+ .block-editor-block-patterns-list__list-item:nth-last-child(2) {
60
+ .block-editor-block-preview__container {
61
+ position: absolute;
62
+ padding: 0;
63
+ background: #f0f0f0;
64
+ &::after {
65
+ width: 100%;
66
+ top: 50%;
67
+ margin-top: -1em;
68
+ content: var(--wp-edit-site-start-template-options-start-blank);
69
+ text-align: center;
70
+ }
71
+ }
72
+ iframe {
73
+ display: none;
74
+ }
75
+ }
76
+ }