@wordpress/edit-site 4.19.0 → 5.0.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 (319) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/components/add-new-template/add-custom-template-modal.js +1 -0
  3. package/build/components/add-new-template/add-custom-template-modal.js.map +1 -1
  4. package/build/components/add-new-template/index.js +8 -5
  5. package/build/components/add-new-template/index.js.map +1 -1
  6. package/build/components/add-new-template/new-template-part.js +21 -6
  7. package/build/components/add-new-template/new-template-part.js.map +1 -1
  8. package/build/components/add-new-template/new-template.js +12 -8
  9. package/build/components/add-new-template/new-template.js.map +1 -1
  10. package/build/components/app/index.js +15 -30
  11. package/build/components/app/index.js.map +1 -1
  12. package/build/components/block-editor/editor-canvas.js +64 -0
  13. package/build/components/block-editor/editor-canvas.js.map +1 -0
  14. package/build/components/block-editor/index.js +61 -59
  15. package/build/components/block-editor/index.js.map +1 -1
  16. package/build/components/block-editor/resizable-editor.js +10 -44
  17. package/build/components/block-editor/resizable-editor.js.map +1 -1
  18. package/build/components/editor/index.js +80 -127
  19. package/build/components/editor/index.js.map +1 -1
  20. package/build/components/global-styles/block-preview-panel.js +42 -0
  21. package/build/components/global-styles/block-preview-panel.js.map +1 -0
  22. package/build/components/global-styles/context-menu.js +6 -2
  23. package/build/components/global-styles/context-menu.js.map +1 -1
  24. package/build/components/global-styles/custom-css.js +61 -0
  25. package/build/components/global-styles/custom-css.js.map +1 -0
  26. package/build/components/global-styles/dimensions-panel.js +2 -6
  27. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  28. package/build/components/global-styles/global-styles-provider.js +15 -2
  29. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  30. package/build/components/global-styles/hooks.js +5 -2
  31. package/build/components/global-styles/hooks.js.map +1 -1
  32. package/build/components/global-styles/palette.js +1 -1
  33. package/build/components/global-styles/palette.js.map +1 -1
  34. package/build/components/global-styles/screen-block-list.js +2 -1
  35. package/build/components/global-styles/screen-block-list.js.map +1 -1
  36. package/build/components/global-styles/screen-block.js +10 -2
  37. package/build/components/global-styles/screen-block.js.map +1 -1
  38. package/build/components/global-styles/screen-border.js +43 -0
  39. package/build/components/global-styles/screen-border.js.map +1 -0
  40. package/build/components/global-styles/screen-colors.js +1 -1
  41. package/build/components/global-styles/screen-colors.js.map +1 -1
  42. package/build/components/global-styles/screen-css.js +42 -0
  43. package/build/components/global-styles/screen-css.js.map +1 -0
  44. package/build/components/global-styles/screen-layout.js +0 -5
  45. package/build/components/global-styles/screen-layout.js.map +1 -1
  46. package/build/components/global-styles/screen-root.js +14 -1
  47. package/build/components/global-styles/screen-root.js.map +1 -1
  48. package/build/components/global-styles/screen-style-variations.js +3 -3
  49. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  50. package/build/components/global-styles/ui.js +50 -4
  51. package/build/components/global-styles/ui.js.map +1 -1
  52. package/build/components/global-styles/use-global-styles-output.js +5 -1
  53. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  54. package/build/components/global-styles/utils.js +3 -3
  55. package/build/components/global-styles/utils.js.map +1 -1
  56. package/build/components/{editor/global-styles-renderer.js → global-styles-renderer/index.js} +4 -8
  57. package/build/components/global-styles-renderer/index.js.map +1 -0
  58. package/build/components/header-edit-mode/document-actions/index.js +12 -5
  59. package/build/components/header-edit-mode/document-actions/index.js.map +1 -1
  60. package/build/components/header-edit-mode/index.js +19 -12
  61. package/build/components/header-edit-mode/index.js.map +1 -1
  62. package/build/components/keyboard-shortcuts/index.js +11 -1
  63. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  64. package/build/components/layout/index.js +231 -0
  65. package/build/components/layout/index.js.map +1 -0
  66. package/build/components/list/header.js +5 -1
  67. package/build/components/list/header.js.map +1 -1
  68. package/build/components/list/index.js +4 -22
  69. package/build/components/list/index.js.map +1 -1
  70. package/build/components/navigate-to-link/index.js +1 -3
  71. package/build/components/navigate-to-link/index.js.map +1 -1
  72. package/build/components/routes/index.js +1 -1
  73. package/build/components/routes/index.js.map +1 -1
  74. package/build/components/sidebar/index.js +42 -0
  75. package/build/components/sidebar/index.js.map +1 -0
  76. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +24 -4
  77. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  78. package/build/components/sidebar-edit-mode/index.js +1 -1
  79. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  80. package/build/components/sidebar-navigation-item/index.js +53 -0
  81. package/build/components/sidebar-navigation-item/index.js.map +1 -0
  82. package/build/components/sidebar-navigation-screen/index.js +49 -0
  83. package/build/components/sidebar-navigation-screen/index.js.map +1 -0
  84. package/build/components/sidebar-navigation-screen-main/index.js +76 -0
  85. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -0
  86. package/build/components/sidebar-navigation-screen-templates/index.js +188 -0
  87. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -0
  88. package/build/components/site-icon/index.js +70 -0
  89. package/build/components/site-icon/index.js.map +1 -0
  90. package/build/components/site-title/index.js +55 -0
  91. package/build/components/site-title/index.js.map +1 -0
  92. package/build/components/style-book/index.js +173 -0
  93. package/build/components/style-book/index.js.map +1 -0
  94. package/build/components/{url-query-controller/index.js → sync-state-with-url/use-init-edited-entity-from-url.js} +5 -4
  95. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -0
  96. package/build/components/sync-state-with-url/use-sync-sidebar-path-with-url.js +53 -0
  97. package/build/components/sync-state-with-url/use-sync-sidebar-path-with-url.js.map +1 -0
  98. package/build/index.js +2 -45
  99. package/build/index.js.map +1 -1
  100. package/build/store/actions.js +93 -43
  101. package/build/store/actions.js.map +1 -1
  102. package/build/store/reducer.js +35 -107
  103. package/build/store/reducer.js.map +1 -1
  104. package/build/store/selectors.js +69 -78
  105. package/build/store/selectors.js.map +1 -1
  106. package/build-module/components/add-new-template/add-custom-template-modal.js +1 -0
  107. package/build-module/components/add-new-template/add-custom-template-modal.js.map +1 -1
  108. package/build-module/components/add-new-template/index.js +7 -5
  109. package/build-module/components/add-new-template/index.js.map +1 -1
  110. package/build-module/components/add-new-template/new-template-part.js +18 -6
  111. package/build-module/components/add-new-template/new-template-part.js.map +1 -1
  112. package/build-module/components/add-new-template/new-template.js +13 -9
  113. package/build-module/components/add-new-template/new-template.js.map +1 -1
  114. package/build-module/components/app/index.js +15 -28
  115. package/build-module/components/app/index.js.map +1 -1
  116. package/build-module/components/block-editor/editor-canvas.js +51 -0
  117. package/build-module/components/block-editor/editor-canvas.js.map +1 -0
  118. package/build-module/components/block-editor/index.js +61 -60
  119. package/build-module/components/block-editor/index.js.map +1 -1
  120. package/build-module/components/block-editor/resizable-editor.js +11 -40
  121. package/build-module/components/block-editor/resizable-editor.js.map +1 -1
  122. package/build-module/components/editor/index.js +81 -124
  123. package/build-module/components/editor/index.js.map +1 -1
  124. package/build-module/components/global-styles/block-preview-panel.js +32 -0
  125. package/build-module/components/global-styles/block-preview-panel.js.map +1 -0
  126. package/build-module/components/global-styles/context-menu.js +7 -3
  127. package/build-module/components/global-styles/context-menu.js.map +1 -1
  128. package/build-module/components/global-styles/custom-css.js +51 -0
  129. package/build-module/components/global-styles/custom-css.js.map +1 -0
  130. package/build-module/components/global-styles/dimensions-panel.js +3 -7
  131. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  132. package/build-module/components/global-styles/global-styles-provider.js +15 -2
  133. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  134. package/build-module/components/global-styles/hooks.js +5 -3
  135. package/build-module/components/global-styles/hooks.js.map +1 -1
  136. package/build-module/components/global-styles/palette.js +1 -1
  137. package/build-module/components/global-styles/palette.js.map +1 -1
  138. package/build-module/components/global-styles/screen-block-list.js +2 -1
  139. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  140. package/build-module/components/global-styles/screen-block.js +8 -2
  141. package/build-module/components/global-styles/screen-block.js.map +1 -1
  142. package/build-module/components/global-styles/screen-border.js +27 -0
  143. package/build-module/components/global-styles/screen-border.js.map +1 -0
  144. package/build-module/components/global-styles/screen-colors.js +1 -1
  145. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  146. package/build-module/components/global-styles/screen-css.js +28 -0
  147. package/build-module/components/global-styles/screen-css.js.map +1 -0
  148. package/build-module/components/global-styles/screen-layout.js +0 -4
  149. package/build-module/components/global-styles/screen-layout.js.map +1 -1
  150. package/build-module/components/global-styles/screen-root.js +14 -1
  151. package/build-module/components/global-styles/screen-root.js.map +1 -1
  152. package/build-module/components/global-styles/screen-style-variations.js +2 -2
  153. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  154. package/build-module/components/global-styles/ui.js +48 -5
  155. package/build-module/components/global-styles/ui.js.map +1 -1
  156. package/build-module/components/global-styles/use-global-styles-output.js +5 -1
  157. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  158. package/build-module/components/global-styles/utils.js +4 -4
  159. package/build-module/components/global-styles/utils.js.map +1 -1
  160. package/build-module/components/{editor/global-styles-renderer.js → global-styles-renderer/index.js} +4 -7
  161. package/build-module/components/global-styles-renderer/index.js.map +1 -0
  162. package/build-module/components/header-edit-mode/document-actions/index.js +13 -6
  163. package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -1
  164. package/build-module/components/header-edit-mode/index.js +16 -11
  165. package/build-module/components/header-edit-mode/index.js.map +1 -1
  166. package/build-module/components/keyboard-shortcuts/index.js +10 -1
  167. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  168. package/build-module/components/layout/index.js +203 -0
  169. package/build-module/components/layout/index.js.map +1 -0
  170. package/build-module/components/list/header.js +5 -1
  171. package/build-module/components/list/header.js.map +1 -1
  172. package/build-module/components/list/index.js +4 -19
  173. package/build-module/components/list/index.js.map +1 -1
  174. package/build-module/components/navigate-to-link/index.js +1 -3
  175. package/build-module/components/navigate-to-link/index.js.map +1 -1
  176. package/build-module/components/routes/index.js +1 -1
  177. package/build-module/components/routes/index.js.map +1 -1
  178. package/build-module/components/sidebar/index.js +30 -0
  179. package/build-module/components/sidebar/index.js.map +1 -0
  180. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +27 -7
  181. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  182. package/build-module/components/sidebar-edit-mode/index.js +3 -3
  183. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  184. package/build-module/components/sidebar-navigation-item/index.js +40 -0
  185. package/build-module/components/sidebar-navigation-item/index.js.map +1 -0
  186. package/build-module/components/sidebar-navigation-screen/index.js +39 -0
  187. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -0
  188. package/build-module/components/sidebar-navigation-screen-main/index.js +57 -0
  189. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -0
  190. package/build-module/components/sidebar-navigation-screen-templates/index.js +165 -0
  191. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -0
  192. package/build-module/components/site-icon/index.js +55 -0
  193. package/build-module/components/site-icon/index.js.map +1 -0
  194. package/build-module/components/site-title/index.js +43 -0
  195. package/build-module/components/site-title/index.js.map +1 -0
  196. package/build-module/components/style-book/index.js +156 -0
  197. package/build-module/components/style-book/index.js.map +1 -0
  198. package/build-module/components/{url-query-controller/index.js → sync-state-with-url/use-init-edited-entity-from-url.js} +4 -3
  199. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -0
  200. package/build-module/components/sync-state-with-url/use-sync-sidebar-path-with-url.js +43 -0
  201. package/build-module/components/sync-state-with-url/use-sync-sidebar-path-with-url.js.map +1 -0
  202. package/build-module/index.js +5 -36
  203. package/build-module/index.js.map +1 -1
  204. package/build-module/store/actions.js +87 -42
  205. package/build-module/store/actions.js.map +1 -1
  206. package/build-module/store/reducer.js +35 -102
  207. package/build-module/store/reducer.js.map +1 -1
  208. package/build-module/store/selectors.js +60 -72
  209. package/build-module/store/selectors.js.map +1 -1
  210. package/build-style/style-rtl.css +550 -346
  211. package/build-style/style.css +550 -346
  212. package/package.json +32 -31
  213. package/src/components/add-new-template/add-custom-template-modal.js +1 -0
  214. package/src/components/add-new-template/index.js +6 -3
  215. package/src/components/add-new-template/new-template-part.js +15 -3
  216. package/src/components/add-new-template/new-template.js +14 -7
  217. package/src/components/add-new-template/style.scss +0 -4
  218. package/src/components/app/index.js +14 -43
  219. package/src/components/block-editor/editor-canvas.js +69 -0
  220. package/src/components/block-editor/index.js +102 -87
  221. package/src/components/block-editor/resizable-editor.js +9 -64
  222. package/src/components/block-editor/style.scss +25 -1
  223. package/src/components/code-editor/style.scss +1 -1
  224. package/src/components/editor/index.js +170 -236
  225. package/src/components/editor/style.scss +0 -22
  226. package/src/components/global-styles/block-preview-panel.js +29 -0
  227. package/src/components/global-styles/context-menu.js +11 -2
  228. package/src/components/global-styles/custom-css.js +73 -0
  229. package/src/components/global-styles/dimensions-panel.js +2 -5
  230. package/src/components/global-styles/global-styles-provider.js +39 -17
  231. package/src/components/global-styles/hooks.js +8 -3
  232. package/src/components/global-styles/palette.js +1 -1
  233. package/src/components/global-styles/screen-block-list.js +2 -1
  234. package/src/components/global-styles/screen-block.js +9 -1
  235. package/src/components/global-styles/screen-border.js +23 -0
  236. package/src/components/global-styles/screen-colors.js +2 -1
  237. package/src/components/global-styles/screen-css.js +33 -0
  238. package/src/components/global-styles/screen-layout.js +0 -3
  239. package/src/components/global-styles/screen-root.js +30 -1
  240. package/src/components/global-styles/screen-style-variations.js +5 -2
  241. package/src/components/global-styles/style.scss +31 -2
  242. package/src/components/global-styles/ui.js +47 -4
  243. package/src/components/global-styles/use-global-styles-output.js +5 -0
  244. package/src/components/global-styles/utils.js +8 -5
  245. package/src/components/{editor/global-styles-renderer.js → global-styles-renderer/index.js} +3 -9
  246. package/src/components/header-edit-mode/document-actions/index.js +14 -9
  247. package/src/components/header-edit-mode/document-actions/style.scss +8 -1
  248. package/src/components/header-edit-mode/index.js +96 -78
  249. package/src/components/header-edit-mode/style.scss +5 -33
  250. package/src/components/keyboard-shortcuts/index.js +13 -0
  251. package/src/components/layout/index.js +278 -0
  252. package/src/components/layout/style.scss +176 -0
  253. package/src/components/list/header.js +5 -1
  254. package/src/components/list/index.js +12 -31
  255. package/src/components/list/style.scss +10 -4
  256. package/src/components/navigate-to-link/index.js +2 -8
  257. package/src/components/routes/index.js +1 -1
  258. package/src/components/sidebar/index.js +34 -0
  259. package/src/components/sidebar/style.scss +8 -0
  260. package/src/components/sidebar-edit-mode/global-styles-sidebar.js +42 -7
  261. package/src/components/sidebar-edit-mode/index.js +3 -3
  262. package/src/components/sidebar-edit-mode/navigation-menu-sidebar/style.scss +21 -3
  263. package/src/components/sidebar-edit-mode/settings-header/style.scss +47 -34
  264. package/src/components/sidebar-edit-mode/style.scss +0 -13
  265. package/src/components/sidebar-navigation-item/index.js +51 -0
  266. package/src/components/sidebar-navigation-item/style.scss +17 -0
  267. package/src/components/sidebar-navigation-screen/index.js +55 -0
  268. package/src/components/sidebar-navigation-screen/style.scss +41 -0
  269. package/src/components/sidebar-navigation-screen-main/index.js +72 -0
  270. package/src/components/sidebar-navigation-screen-templates/index.js +181 -0
  271. package/src/components/sidebar-navigation-screen-templates/style.scss +9 -0
  272. package/src/components/site-icon/index.js +56 -0
  273. package/src/components/site-icon/style.scss +10 -0
  274. package/src/components/site-title/index.js +39 -0
  275. package/src/components/style-book/index.js +193 -0
  276. package/src/components/style-book/style.scss +78 -0
  277. package/src/components/{url-query-controller/index.js → sync-state-with-url/use-init-edited-entity-from-url.js} +3 -3
  278. package/src/components/sync-state-with-url/use-sync-sidebar-path-with-url.js +36 -0
  279. package/src/components/template-details/style.scss +4 -0
  280. package/src/index.js +3 -53
  281. package/src/store/actions.js +93 -48
  282. package/src/store/reducer.js +29 -91
  283. package/src/store/selectors.js +61 -101
  284. package/src/store/test/actions.js +3 -15
  285. package/src/store/test/reducer.js +8 -192
  286. package/src/store/test/selectors.js +3 -42
  287. package/src/style.scss +19 -3
  288. package/build/components/editor/global-styles-renderer.js.map +0 -1
  289. package/build/components/navigation-sidebar/index.js +0 -62
  290. package/build/components/navigation-sidebar/index.js.map +0 -1
  291. package/build/components/navigation-sidebar/navigation-panel/constants.js +0 -77
  292. package/build/components/navigation-sidebar/navigation-panel/constants.js.map +0 -1
  293. package/build/components/navigation-sidebar/navigation-panel/index.js +0 -152
  294. package/build/components/navigation-sidebar/navigation-panel/index.js.map +0 -1
  295. package/build/components/navigation-sidebar/navigation-panel/template-hierarchy.js +0 -81
  296. package/build/components/navigation-sidebar/navigation-panel/template-hierarchy.js.map +0 -1
  297. package/build/components/navigation-sidebar/navigation-toggle/index.js +0 -124
  298. package/build/components/navigation-sidebar/navigation-toggle/index.js.map +0 -1
  299. package/build/components/url-query-controller/index.js.map +0 -1
  300. package/build-module/components/editor/global-styles-renderer.js.map +0 -1
  301. package/build-module/components/navigation-sidebar/index.js +0 -45
  302. package/build-module/components/navigation-sidebar/index.js.map +0 -1
  303. package/build-module/components/navigation-sidebar/navigation-panel/constants.js +0 -49
  304. package/build-module/components/navigation-sidebar/navigation-panel/constants.js.map +0 -1
  305. package/build-module/components/navigation-sidebar/navigation-panel/index.js +0 -131
  306. package/build-module/components/navigation-sidebar/navigation-panel/index.js.map +0 -1
  307. package/build-module/components/navigation-sidebar/navigation-panel/template-hierarchy.js +0 -66
  308. package/build-module/components/navigation-sidebar/navigation-panel/template-hierarchy.js.map +0 -1
  309. package/build-module/components/navigation-sidebar/navigation-toggle/index.js +0 -108
  310. package/build-module/components/navigation-sidebar/navigation-toggle/index.js.map +0 -1
  311. package/build-module/components/url-query-controller/index.js.map +0 -1
  312. package/src/components/navigation-sidebar/index.js +0 -46
  313. package/src/components/navigation-sidebar/navigation-panel/constants.js +0 -94
  314. package/src/components/navigation-sidebar/navigation-panel/index.js +0 -142
  315. package/src/components/navigation-sidebar/navigation-panel/style.scss +0 -152
  316. package/src/components/navigation-sidebar/navigation-panel/template-hierarchy.js +0 -81
  317. package/src/components/navigation-sidebar/navigation-toggle/index.js +0 -114
  318. package/src/components/navigation-sidebar/navigation-toggle/style.scss +0 -71
  319. package/src/components/navigation-sidebar/navigation-toggle/test/index.js +0 -65
@@ -0,0 +1,9 @@
1
+ .edit-site-sidebar-navigation-screen-templates__see-all {
2
+ /* Overrides the margin that comes from the Item component */
3
+ margin-top: $grid-unit-20 !important;
4
+ }
5
+
6
+ .edit-site-sidebar-navigation-screen-templates__add-button {
7
+ /* Overrides the color for all states of the button */
8
+ color: inherit !important;
9
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { useSelect } from '@wordpress/data';
10
+ import { Icon } from '@wordpress/components';
11
+ import { __ } from '@wordpress/i18n';
12
+ import { wordpress } from '@wordpress/icons';
13
+ import { store as coreDataStore } from '@wordpress/core-data';
14
+
15
+ function SiteIcon( { className } ) {
16
+ const { isRequestingSite, siteIconUrl } = useSelect( ( select ) => {
17
+ const { getEntityRecord, isResolving } = select( coreDataStore );
18
+ const siteData =
19
+ getEntityRecord( 'root', '__unstableBase', undefined ) || {};
20
+
21
+ return {
22
+ isRequestingSite: isResolving( 'core', 'getEntityRecord', [
23
+ 'root',
24
+ '__unstableBase',
25
+ undefined,
26
+ ] ),
27
+ siteIconUrl: siteData.site_icon_url,
28
+ };
29
+ }, [] );
30
+
31
+ if ( isRequestingSite && ! siteIconUrl ) {
32
+ return null;
33
+ }
34
+
35
+ const icon = siteIconUrl ? (
36
+ <img
37
+ className="edit-site-site-icon__image"
38
+ alt={ __( 'Site Icon' ) }
39
+ src={ siteIconUrl }
40
+ />
41
+ ) : (
42
+ <Icon
43
+ className="edit-site-site-icon__icon"
44
+ size="36px"
45
+ icon={ wordpress }
46
+ />
47
+ );
48
+
49
+ return (
50
+ <div className={ classnames( className, 'edit-site-site-icon' ) }>
51
+ { icon }
52
+ </div>
53
+ );
54
+ }
55
+
56
+ export default SiteIcon;
@@ -0,0 +1,10 @@
1
+ .edit-site-site-icon__icon {
2
+ fill: currentColor;
3
+ }
4
+
5
+ .edit-site-site-icon__image {
6
+ width: $button-size;
7
+ height: $button-size;
8
+ border-radius: $radius-block-ui;
9
+ object-fit: cover;
10
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { useSelect } from '@wordpress/data';
10
+ import { store as coreDataStore } from '@wordpress/core-data';
11
+
12
+ function SiteTitle( { className } ) {
13
+ const { isRequestingSite, siteTitle } = useSelect( ( select ) => {
14
+ const { getEntityRecord, isResolving } = select( coreDataStore );
15
+ const siteData =
16
+ getEntityRecord( 'root', '__unstableBase', undefined ) || {};
17
+
18
+ return {
19
+ isRequestingSite: isResolving( 'core', 'getEntityRecord', [
20
+ 'root',
21
+ '__unstableBase',
22
+ undefined,
23
+ ] ),
24
+ siteTitle: siteData.name,
25
+ };
26
+ }, [] );
27
+
28
+ if ( isRequestingSite && ! siteTitle ) {
29
+ return null;
30
+ }
31
+
32
+ return (
33
+ <div className={ classnames( className, 'edit-site-site-title' ) }>
34
+ { siteTitle }
35
+ </div>
36
+ );
37
+ }
38
+
39
+ export default SiteTitle;
@@ -0,0 +1,193 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import {
10
+ Button,
11
+ TabPanel,
12
+ createSlotFill,
13
+ __experimentalUseSlotFills as useSlotFills,
14
+ } from '@wordpress/components';
15
+ import { __, sprintf } from '@wordpress/i18n';
16
+ import {
17
+ getCategories,
18
+ getBlockTypes,
19
+ getBlockFromExample,
20
+ createBlock,
21
+ } from '@wordpress/blocks';
22
+ import { BlockPreview } from '@wordpress/block-editor';
23
+ import { closeSmall } from '@wordpress/icons';
24
+ import { useResizeObserver } from '@wordpress/compose';
25
+ import { useMemo, memo } from '@wordpress/element';
26
+
27
+ /**
28
+ * Internal dependencies
29
+ */
30
+ import { useStyle } from '../global-styles';
31
+
32
+ const SLOT_FILL_NAME = 'EditSiteStyleBook';
33
+ const { Slot: StyleBookSlot, Fill: StyleBookFill } =
34
+ createSlotFill( SLOT_FILL_NAME );
35
+
36
+ function getExamples() {
37
+ // Use our own example for the Heading block so that we can show multiple
38
+ // heading levels.
39
+ const headingsExample = {
40
+ name: 'core/heading',
41
+ title: __( 'Headings' ),
42
+ category: 'text',
43
+ blocks: [
44
+ createBlock( 'core/heading', {
45
+ content: __( 'Code Is Poetry' ),
46
+ level: 1,
47
+ } ),
48
+ createBlock( 'core/heading', {
49
+ content: __( 'Code Is Poetry' ),
50
+ level: 2,
51
+ } ),
52
+ createBlock( 'core/heading', {
53
+ content: __( 'Code Is Poetry' ),
54
+ level: 3,
55
+ } ),
56
+ createBlock( 'core/heading', {
57
+ content: __( 'Code Is Poetry' ),
58
+ level: 4,
59
+ } ),
60
+ createBlock( 'core/heading', {
61
+ content: __( 'Code Is Poetry' ),
62
+ level: 5,
63
+ } ),
64
+ ],
65
+ };
66
+
67
+ const otherExamples = getBlockTypes()
68
+ .filter(
69
+ ( blockType ) =>
70
+ blockType.name !== 'core/heading' && !! blockType.example
71
+ )
72
+ .map( ( blockType ) => ( {
73
+ name: blockType.name,
74
+ title: blockType.title,
75
+ category: blockType.category,
76
+ blocks: getBlockFromExample( blockType.name, blockType.example ),
77
+ } ) );
78
+
79
+ return [ headingsExample, ...otherExamples ];
80
+ }
81
+
82
+ function StyleBook( { isSelected, onSelect, onClose } ) {
83
+ const [ resizeObserver, sizes ] = useResizeObserver();
84
+ const [ textColor ] = useStyle( 'color.text' );
85
+ const [ backgroundColor ] = useStyle( 'color.background' );
86
+ const examples = useMemo( getExamples, [] );
87
+ const tabs = useMemo(
88
+ () =>
89
+ getCategories()
90
+ .filter( ( category ) =>
91
+ examples.some(
92
+ ( example ) => example.category === category.slug
93
+ )
94
+ )
95
+ .map( ( category ) => ( {
96
+ name: category.slug,
97
+ title: category.title,
98
+ icon: category.icon,
99
+ } ) ),
100
+ [ examples ]
101
+ );
102
+ return (
103
+ <StyleBookFill>
104
+ <section
105
+ className={ classnames( 'edit-site-style-book', {
106
+ 'is-wide': sizes.width > 600,
107
+ } ) }
108
+ style={ {
109
+ color: textColor,
110
+ background: backgroundColor,
111
+ } }
112
+ aria-label={ __( 'Style Book' ) }
113
+ >
114
+ { resizeObserver }
115
+ <Button
116
+ className="edit-site-style-book__close-button"
117
+ icon={ closeSmall }
118
+ label={ __( 'Close Style Book' ) }
119
+ onClick={ onClose }
120
+ />
121
+ <TabPanel
122
+ className="edit-site-style-book__tab-panel"
123
+ tabs={ tabs }
124
+ >
125
+ { ( tab ) => (
126
+ <Examples
127
+ examples={ examples }
128
+ category={ tab.name }
129
+ isSelected={ isSelected }
130
+ onSelect={ onSelect }
131
+ />
132
+ ) }
133
+ </TabPanel>
134
+ </section>
135
+ </StyleBookFill>
136
+ );
137
+ }
138
+
139
+ const Examples = memo( ( { examples, category, isSelected, onSelect } ) => (
140
+ <div className="edit-site-style-book__examples">
141
+ { examples
142
+ .filter( ( example ) => example.category === category )
143
+ .map( ( example ) => (
144
+ <Example
145
+ key={ example.name }
146
+ title={ example.title }
147
+ blocks={ example.blocks }
148
+ isSelected={ isSelected( example.name ) }
149
+ onClick={ () => {
150
+ onSelect( example.name );
151
+ } }
152
+ />
153
+ ) ) }
154
+ </div>
155
+ ) );
156
+
157
+ const Example = memo( ( { title, blocks, isSelected, onClick } ) => (
158
+ <button
159
+ className={ classnames( 'edit-site-style-book__example', {
160
+ 'is-selected': isSelected,
161
+ } ) }
162
+ aria-label={ sprintf(
163
+ // translators: %s: Title of a block, e.g. Heading.
164
+ __( 'Open %s styles in Styles panel' ),
165
+ title
166
+ ) }
167
+ onClick={ onClick }
168
+ >
169
+ <span className="edit-site-style-book__example-title">{ title }</span>
170
+ <div className="edit-site-style-book__example-preview">
171
+ <BlockPreview
172
+ blocks={ blocks }
173
+ viewportWidth={ 0 }
174
+ __experimentalStyles={ [
175
+ {
176
+ css:
177
+ '.wp-block:first-child { margin-top: 0; }' +
178
+ '.wp-block:last-child { margin-bottom: 0; }',
179
+ },
180
+ ] }
181
+ />
182
+ </div>
183
+ </button>
184
+ ) );
185
+
186
+ function useHasStyleBook() {
187
+ const fills = useSlotFills( SLOT_FILL_NAME );
188
+ return !! fills?.length;
189
+ }
190
+
191
+ StyleBook.Slot = StyleBookSlot;
192
+ export default StyleBook;
193
+ export { useHasStyleBook };
@@ -0,0 +1,78 @@
1
+ .edit-site-style-book {
2
+ background: $white; // Fallback color, overriden by JavaScript.
3
+ border-radius: $radius-block-ui;
4
+ bottom: 0;
5
+ left: 0;
6
+ overflow: hidden;
7
+ position: absolute;
8
+ right: 0;
9
+ top: 0;
10
+ transition: all 0.3s; // Match .block-editor-iframe__body transition.
11
+ }
12
+
13
+ .edit-site-style-book__close-button {
14
+ position: absolute;
15
+ right: $grid-unit-10;
16
+ top: math.div($grid-unit-60 - $button-size, 2); // ( tab height - button size ) / 2
17
+ }
18
+
19
+ .edit-site-style-book__tab-panel {
20
+ .components-tab-panel__tabs {
21
+ background: $white;
22
+ color: $gray-900;
23
+ }
24
+
25
+ .components-tab-panel__tab-content {
26
+ bottom: 0;
27
+ left: 0;
28
+ overflow: auto;
29
+ padding: $grid-unit-40;
30
+ position: absolute;
31
+ right: 0;
32
+ top: $grid-unit-60; // Height of tabs.
33
+ }
34
+ }
35
+
36
+ .edit-site-style-book__examples {
37
+ max-width: 900px;
38
+ margin: 0 auto;
39
+ }
40
+
41
+ .edit-site-style-book__example {
42
+ background: none;
43
+ border-radius: $radius-block-ui;
44
+ border: none;
45
+ color: inherit;
46
+ cursor: pointer;
47
+ display: flex;
48
+ flex-direction: column;
49
+ gap: $grid-unit-50;
50
+ margin-bottom: $grid-unit-50;
51
+ padding: $grid-unit-20;
52
+ width: 100%;
53
+
54
+ &.is-selected {
55
+ box-shadow: 0 0 0 1px var(--wp-admin-theme-color);
56
+ }
57
+
58
+ .edit-site-style-book.is-wide & {
59
+ flex-direction: row;
60
+ }
61
+ }
62
+
63
+ .edit-site-style-book__example-title {
64
+ font-size: 11px;
65
+ font-weight: 500;
66
+ margin: 0;
67
+ text-align: left;
68
+ text-transform: uppercase;
69
+
70
+ .edit-site-style-book.is-wide & {
71
+ text-align: right;
72
+ width: 120px;
73
+ }
74
+ }
75
+
76
+ .edit-site-style-book__example-preview {
77
+ width: 100%;
78
+ }
@@ -10,7 +10,7 @@ import { useDispatch } from '@wordpress/data';
10
10
  import { useLocation } from '../routes';
11
11
  import { store as editSiteStore } from '../../store';
12
12
 
13
- export default function URLQueryController() {
13
+ export default function useInitEditedEntityFromURL() {
14
14
  const { setTemplate, setTemplatePart, setPage } =
15
15
  useDispatch( editSiteStore );
16
16
  const {
@@ -19,6 +19,8 @@ export default function URLQueryController() {
19
19
 
20
20
  // Set correct entity on page navigation.
21
21
  useEffect( () => {
22
+ // This URL scheme mean we can't open a template part with the context of a given post.
23
+ // Potentially posts and pages could be moved to a "context" query string instead.
22
24
  if ( 'page' === postType || 'post' === postType ) {
23
25
  setPage( { context: { postType, postId } } ); // Resolves correct template based on ID.
24
26
  } else if ( 'wp_template' === postType ) {
@@ -27,6 +29,4 @@ export default function URLQueryController() {
27
29
  setTemplatePart( postId );
28
30
  }
29
31
  }, [ postId, postType ] );
30
-
31
- return null;
32
32
  }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __experimentalUseNavigator as useNavigator } from '@wordpress/components';
5
+ import { useEffect, useRef } from '@wordpress/element';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import { useLocation, useHistory } from '../routes';
11
+
12
+ export default function useSyncSidebarPathWithURL() {
13
+ const history = useHistory();
14
+ const { params } = useLocation();
15
+ const { sidebar = '/' } = params;
16
+ const { location, goTo } = useNavigator();
17
+ const currentSidebar = useRef( sidebar );
18
+ const currentNavigatorLocation = useRef( location.path );
19
+ useEffect( () => {
20
+ currentSidebar.current = sidebar;
21
+ if ( sidebar !== currentNavigatorLocation.current ) {
22
+ goTo( sidebar );
23
+ }
24
+ }, [ sidebar ] );
25
+ useEffect( () => {
26
+ currentNavigatorLocation.current = location.path;
27
+ if ( location.path !== currentSidebar.current ) {
28
+ history.push( {
29
+ ...params,
30
+ sidebar: location.path,
31
+ } );
32
+ }
33
+ }, [ location.path, history ] );
34
+
35
+ return sidebar;
36
+ }
@@ -20,6 +20,10 @@
20
20
  .edit-site-template-details__template-areas-item {
21
21
  position: relative;
22
22
 
23
+ .components-menu-items__item-icon {
24
+ color: var(--wp-block-synced-color);
25
+ }
26
+
23
27
  .edit-site-template-details__template-areas-item-more {
24
28
  position: absolute;
25
29
  right: 0;
package/src/index.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  registerCoreBlocks,
7
7
  __experimentalRegisterExperimentalCoreBlocks,
8
8
  } from '@wordpress/block-library';
9
- import { dispatch, select } from '@wordpress/data';
9
+ import { dispatch } from '@wordpress/data';
10
10
  import { render, unmountComponentAtNode } from '@wordpress/element';
11
11
  import {
12
12
  __experimentalFetchLinkSuggestions as fetchLinkSuggestions,
@@ -15,9 +15,6 @@ import {
15
15
  import { store as editorStore } from '@wordpress/editor';
16
16
  import { store as interfaceStore } from '@wordpress/interface';
17
17
  import { store as preferencesStore } from '@wordpress/preferences';
18
- import { __ } from '@wordpress/i18n';
19
- import { store as viewportStore } from '@wordpress/viewport';
20
- import { getQueryArgs } from '@wordpress/url';
21
18
  import { addFilter } from '@wordpress/hooks';
22
19
 
23
20
  /**
@@ -25,9 +22,7 @@ import { addFilter } from '@wordpress/hooks';
25
22
  */
26
23
  import './hooks';
27
24
  import { store as editSiteStore } from './store';
28
- import EditSiteApp from './components/app';
29
- import getIsListPage from './utils/get-is-list-page';
30
- import ErrorBoundaryWarning from './components/error-boundary/warning';
25
+ import App from './components/app';
31
26
 
32
27
  /**
33
28
  * Reinitializes the editor after the user chooses to reboot the editor after
@@ -38,22 +33,6 @@ import ErrorBoundaryWarning from './components/error-boundary/warning';
38
33
  * @param {?Object} settings Editor settings object.
39
34
  */
40
35
  export function reinitializeEditor( target, settings ) {
41
- // Display warning if editor wasn't able to resolve homepage template.
42
- if ( ! settings.__unstableHomeTemplate ) {
43
- render(
44
- <ErrorBoundaryWarning
45
- message={ __(
46
- 'The editor is unable to find a block template for the homepage.'
47
- ) }
48
- dashboardLink={
49
- settings.__experimentalDashboardLink ?? 'index.php'
50
- }
51
- />,
52
- target
53
- );
54
- return;
55
- }
56
-
57
36
  /*
58
37
  * Prevent adding the Clasic block in the site editor.
59
38
  * Only add the filter when the site editor is initialized, not imported.
@@ -91,16 +70,6 @@ export function reinitializeEditor( target, settings ) {
91
70
  showListViewByDefault: false,
92
71
  } );
93
72
 
94
- // Check if the block list view should be open by default.
95
- if (
96
- select( preferencesStore ).get(
97
- 'core/edit-site',
98
- 'showListViewByDefault'
99
- )
100
- ) {
101
- dispatch( editSiteStore ).setIsListViewOpened( true );
102
- }
103
-
104
73
  dispatch( interfaceStore ).setDefaultComplementaryArea(
105
74
  'core/edit-site',
106
75
  'edit-site/template'
@@ -116,31 +85,13 @@ export function reinitializeEditor( target, settings ) {
116
85
  defaultTemplateTypes: settings.defaultTemplateTypes,
117
86
  defaultTemplatePartAreas: settings.defaultTemplatePartAreas,
118
87
  } );
119
-
120
- const isLandingOnListPage = getIsListPage(
121
- getQueryArgs( window.location.href )
122
- );
123
-
124
- if ( isLandingOnListPage ) {
125
- // Default the navigation panel to be opened when we're in a bigger
126
- // screen and land in the list screen.
127
- dispatch( editSiteStore ).setIsNavigationPanelOpened(
128
- select( viewportStore ).isViewportMatch( 'medium' )
129
- );
130
- }
131
88
  }
132
89
 
133
90
  // Prevent the default browser action for files dropped outside of dropzones.
134
91
  window.addEventListener( 'dragover', ( e ) => e.preventDefault(), false );
135
92
  window.addEventListener( 'drop', ( e ) => e.preventDefault(), false );
136
93
 
137
- render(
138
- <EditSiteApp
139
- reboot={ reboot }
140
- homeTemplate={ settings.__unstableHomeTemplate }
141
- />,
142
- target
143
- );
94
+ render( <App reboot={ reboot } />, target );
144
95
  }
145
96
 
146
97
  /**
@@ -167,7 +118,6 @@ export function initializeEditor( id, settings ) {
167
118
  reinitializeEditor( target, settings );
168
119
  }
169
120
 
170
- export { default as __experimentalNavigationToggle } from './components/navigation-sidebar/navigation-toggle';
171
121
  export { default as PluginSidebar } from './components/sidebar-edit-mode/plugin-sidebar';
172
122
  export { default as PluginSidebarMoreMenuItem } from './components/header-edit-mode/plugin-sidebar-more-menu-item';
173
123
  export { default as PluginMoreMenuItem } from './components/header-edit-mode/plugin-more-menu-item';