@wordpress/edit-site 5.5.0 → 5.7.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 (310) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/add-new-template/new-template-part.js +3 -11
  3. package/build/components/add-new-template/new-template-part.js.map +1 -1
  4. package/build/components/add-new-template/new-template.js +23 -17
  5. package/build/components/add-new-template/new-template.js.map +1 -1
  6. package/build/components/add-new-template/utils.js +1 -1
  7. package/build/components/add-new-template/utils.js.map +1 -1
  8. package/build/components/app/index.js +4 -2
  9. package/build/components/app/index.js.map +1 -1
  10. package/build/components/block-editor/editor-canvas.js +7 -9
  11. package/build/components/block-editor/editor-canvas.js.map +1 -1
  12. package/build/components/editor/index.js +2 -4
  13. package/build/components/editor/index.js.map +1 -1
  14. package/build/components/global-styles/border-panel.js +20 -159
  15. package/build/components/global-styles/border-panel.js.map +1 -1
  16. package/build/components/global-styles/context-menu.js +4 -6
  17. package/build/components/global-styles/context-menu.js.map +1 -1
  18. package/build/components/global-styles/hooks.js +0 -72
  19. package/build/components/global-styles/hooks.js.map +1 -1
  20. package/build/components/global-styles/preview.js +3 -4
  21. package/build/components/global-styles/preview.js.map +1 -1
  22. package/build/components/global-styles/screen-block-list.js +5 -7
  23. package/build/components/global-styles/screen-block-list.js.map +1 -1
  24. package/build/components/global-styles/screen-border.js +13 -5
  25. package/build/components/global-styles/screen-border.js.map +1 -1
  26. package/build/components/global-styles/screen-colors.js +22 -211
  27. package/build/components/global-styles/screen-colors.js.map +1 -1
  28. package/build/components/global-styles/screen-root.js +2 -1
  29. package/build/components/global-styles/screen-root.js.map +1 -1
  30. package/build/components/global-styles/screen-style-variations.js +2 -1
  31. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  32. package/build/components/global-styles/screen-typography-element.js +4 -0
  33. package/build/components/global-styles/screen-typography-element.js.map +1 -1
  34. package/build/components/global-styles/screen-typography.js +5 -0
  35. package/build/components/global-styles/screen-typography.js.map +1 -1
  36. package/build/components/global-styles/ui.js +5 -35
  37. package/build/components/global-styles/ui.js.map +1 -1
  38. package/build/components/global-styles-renderer/index.js +1 -2
  39. package/build/components/global-styles-renderer/index.js.map +1 -1
  40. package/build/components/layout/index.js +7 -0
  41. package/build/components/layout/index.js.map +1 -1
  42. package/build/components/list/added-by.js +128 -136
  43. package/build/components/list/added-by.js.map +1 -1
  44. package/build/components/list/index.js +2 -1
  45. package/build/components/list/index.js.map +1 -1
  46. package/build/components/list/table.js +6 -5
  47. package/build/components/list/table.js.map +1 -1
  48. package/build/components/routes/link.js +4 -1
  49. package/build/components/routes/link.js.map +1 -1
  50. package/build/components/save-button/index.js +2 -5
  51. package/build/components/save-button/index.js.map +1 -1
  52. package/build/components/save-hub/index.js +82 -0
  53. package/build/components/save-hub/index.js.map +1 -0
  54. package/build/components/secondary-sidebar/list-view-sidebar.js +6 -1
  55. package/build/components/secondary-sidebar/list-view-sidebar.js.map +1 -1
  56. package/build/components/sidebar/index.js +2 -4
  57. package/build/components/sidebar/index.js.map +1 -1
  58. package/build/components/sidebar-navigation-screen/index.js +5 -2
  59. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  60. package/build/components/sidebar-navigation-screen-main/index.js +13 -13
  61. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  62. package/build/components/sidebar-navigation-screen-navigation-item/index.js +9 -14
  63. package/build/components/sidebar-navigation-screen-navigation-item/index.js.map +1 -1
  64. package/build/components/sidebar-navigation-screen-navigation-menus/index.js +87 -10
  65. package/build/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  66. package/build/components/sidebar-navigation-screen-navigation-menus/loader.js +19 -0
  67. package/build/components/sidebar-navigation-screen-navigation-menus/loader.js.map +1 -0
  68. package/build/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +77 -0
  69. package/build/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js.map +1 -0
  70. package/build/components/sidebar-navigation-screen-template/index.js +59 -10
  71. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  72. package/build/components/sidebar-navigation-screen-templates/index.js +5 -2
  73. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  74. package/build/components/sidebar-navigation-screen-templates-browse/index.js +6 -3
  75. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  76. package/build/components/site-hub/index.js +3 -1
  77. package/build/components/site-hub/index.js.map +1 -1
  78. package/build/components/start-template-options/index.js +44 -9
  79. package/build/components/start-template-options/index.js.map +1 -1
  80. package/build/components/style-book/index.js +133 -19
  81. package/build/components/style-book/index.js.map +1 -1
  82. package/build/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +24 -8
  83. package/build/components/sync-state-with-url/use-sync-canvas-mode-with-url.js.map +1 -1
  84. package/build/components/sync-state-with-url/use-sync-path-with-url.js +9 -7
  85. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  86. package/build/components/template-details/index.js +0 -3
  87. package/build/components/template-details/index.js.map +1 -1
  88. package/build/components/template-part-converter/convert-to-regular.js +8 -12
  89. package/build/components/template-part-converter/convert-to-regular.js.map +1 -1
  90. package/build/components/template-part-converter/convert-to-template-part.js +2 -2
  91. package/build/components/template-part-converter/convert-to-template-part.js.map +1 -1
  92. package/build/components/template-part-converter/index.js +19 -14
  93. package/build/components/template-part-converter/index.js.map +1 -1
  94. package/build/components/use-edited-entity-record/index.js +6 -6
  95. package/build/components/use-edited-entity-record/index.js.map +1 -1
  96. package/build/hooks/push-changes-to-global-styles/index.js +1 -0
  97. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  98. package/build/index.js +3 -0
  99. package/build/index.js.map +1 -1
  100. package/build/utils/history.js +8 -2
  101. package/build/utils/history.js.map +1 -1
  102. package/build-module/components/add-new-template/new-template-part.js +3 -9
  103. package/build-module/components/add-new-template/new-template-part.js.map +1 -1
  104. package/build-module/components/add-new-template/new-template.js +25 -18
  105. package/build-module/components/add-new-template/new-template.js.map +1 -1
  106. package/build-module/components/add-new-template/utils.js +1 -1
  107. package/build-module/components/add-new-template/utils.js.map +1 -1
  108. package/build-module/components/app/index.js +3 -2
  109. package/build-module/components/app/index.js.map +1 -1
  110. package/build-module/components/block-editor/editor-canvas.js +8 -10
  111. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  112. package/build-module/components/editor/index.js +2 -3
  113. package/build-module/components/editor/index.js.map +1 -1
  114. package/build-module/components/global-styles/border-panel.js +21 -157
  115. package/build-module/components/global-styles/border-panel.js.map +1 -1
  116. package/build-module/components/global-styles/context-menu.js +4 -4
  117. package/build-module/components/global-styles/context-menu.js.map +1 -1
  118. package/build-module/components/global-styles/hooks.js +0 -66
  119. package/build-module/components/global-styles/hooks.js.map +1 -1
  120. package/build-module/components/global-styles/preview.js +3 -4
  121. package/build-module/components/global-styles/preview.js.map +1 -1
  122. package/build-module/components/global-styles/screen-block-list.js +5 -5
  123. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  124. package/build-module/components/global-styles/screen-border.js +11 -2
  125. package/build-module/components/global-styles/screen-border.js.map +1 -1
  126. package/build-module/components/global-styles/screen-colors.js +23 -208
  127. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  128. package/build-module/components/global-styles/screen-root.js +2 -1
  129. package/build-module/components/global-styles/screen-root.js.map +1 -1
  130. package/build-module/components/global-styles/screen-style-variations.js +2 -1
  131. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  132. package/build-module/components/global-styles/screen-typography-element.js +4 -0
  133. package/build-module/components/global-styles/screen-typography-element.js.map +1 -1
  134. package/build-module/components/global-styles/screen-typography.js +5 -0
  135. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  136. package/build-module/components/global-styles/ui.js +5 -30
  137. package/build-module/components/global-styles/ui.js.map +1 -1
  138. package/build-module/components/global-styles-renderer/index.js +1 -2
  139. package/build-module/components/global-styles-renderer/index.js.map +1 -1
  140. package/build-module/components/layout/index.js +7 -0
  141. package/build-module/components/layout/index.js.map +1 -1
  142. package/build-module/components/list/added-by.js +126 -137
  143. package/build-module/components/list/added-by.js.map +1 -1
  144. package/build-module/components/list/index.js +2 -1
  145. package/build-module/components/list/index.js.map +1 -1
  146. package/build-module/components/list/table.js +6 -5
  147. package/build-module/components/list/table.js.map +1 -1
  148. package/build-module/components/routes/link.js +5 -2
  149. package/build-module/components/routes/link.js.map +1 -1
  150. package/build-module/components/save-button/index.js +2 -5
  151. package/build-module/components/save-button/index.js.map +1 -1
  152. package/build-module/components/save-hub/index.js +68 -0
  153. package/build-module/components/save-hub/index.js.map +1 -0
  154. package/build-module/components/secondary-sidebar/list-view-sidebar.js +6 -2
  155. package/build-module/components/secondary-sidebar/list-view-sidebar.js.map +1 -1
  156. package/build-module/components/sidebar/index.js +2 -4
  157. package/build-module/components/sidebar/index.js.map +1 -1
  158. package/build-module/components/sidebar-navigation-screen/index.js +5 -2
  159. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  160. package/build-module/components/sidebar-navigation-screen-main/index.js +13 -13
  161. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  162. package/build-module/components/sidebar-navigation-screen-navigation-item/index.js +13 -18
  163. package/build-module/components/sidebar-navigation-screen-navigation-item/index.js.map +1 -1
  164. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js +81 -10
  165. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  166. package/build-module/components/sidebar-navigation-screen-navigation-menus/loader.js +11 -0
  167. package/build-module/components/sidebar-navigation-screen-navigation-menus/loader.js.map +1 -0
  168. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +66 -0
  169. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js.map +1 -0
  170. package/build-module/components/sidebar-navigation-screen-template/index.js +60 -13
  171. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  172. package/build-module/components/sidebar-navigation-screen-templates/index.js +5 -2
  173. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  174. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +6 -3
  175. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  176. package/build-module/components/site-hub/index.js +3 -1
  177. package/build-module/components/site-hub/index.js.map +1 -1
  178. package/build-module/components/start-template-options/index.js +45 -10
  179. package/build-module/components/start-template-options/index.js.map +1 -1
  180. package/build-module/components/style-book/index.js +133 -21
  181. package/build-module/components/style-book/index.js.map +1 -1
  182. package/build-module/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +24 -8
  183. package/build-module/components/sync-state-with-url/use-sync-canvas-mode-with-url.js.map +1 -1
  184. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +9 -7
  185. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  186. package/build-module/components/template-details/index.js +0 -3
  187. package/build-module/components/template-details/index.js.map +1 -1
  188. package/build-module/components/template-part-converter/convert-to-regular.js +9 -13
  189. package/build-module/components/template-part-converter/convert-to-regular.js.map +1 -1
  190. package/build-module/components/template-part-converter/convert-to-template-part.js +3 -3
  191. package/build-module/components/template-part-converter/convert-to-template-part.js.map +1 -1
  192. package/build-module/components/template-part-converter/index.js +20 -15
  193. package/build-module/components/template-part-converter/index.js.map +1 -1
  194. package/build-module/components/use-edited-entity-record/index.js +6 -6
  195. package/build-module/components/use-edited-entity-record/index.js.map +1 -1
  196. package/build-module/hooks/push-changes-to-global-styles/index.js +1 -0
  197. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  198. package/build-module/index.js +4 -1
  199. package/build-module/index.js.map +1 -1
  200. package/build-module/utils/history.js +9 -3
  201. package/build-module/utils/history.js.map +1 -1
  202. package/build-style/style-rtl.css +172 -128
  203. package/build-style/style.css +172 -128
  204. package/package.json +31 -31
  205. package/src/components/add-new-template/new-template-part.js +1 -6
  206. package/src/components/add-new-template/new-template.js +60 -38
  207. package/src/components/add-new-template/style.scss +12 -1
  208. package/src/components/add-new-template/utils.js +1 -1
  209. package/src/components/app/index.js +9 -6
  210. package/src/components/block-editor/editor-canvas.js +13 -22
  211. package/src/components/editor/index.js +61 -65
  212. package/src/components/global-styles/border-panel.js +24 -199
  213. package/src/components/global-styles/context-menu.js +4 -4
  214. package/src/components/global-styles/hooks.js +0 -101
  215. package/src/components/global-styles/preview.js +1 -1
  216. package/src/components/global-styles/screen-block-list.js +4 -4
  217. package/src/components/global-styles/screen-border.js +9 -2
  218. package/src/components/global-styles/screen-colors.js +25 -229
  219. package/src/components/global-styles/screen-root.js +1 -1
  220. package/src/components/global-styles/screen-style-variations.js +5 -1
  221. package/src/components/global-styles/screen-typography-element.js +4 -0
  222. package/src/components/global-styles/screen-typography.js +6 -0
  223. package/src/components/global-styles/stories/index.js +425 -0
  224. package/src/components/global-styles/style.scss +14 -18
  225. package/src/components/global-styles/ui.js +6 -31
  226. package/src/components/global-styles-renderer/index.js +1 -2
  227. package/src/components/layout/index.js +15 -0
  228. package/src/components/layout/style.scss +1 -3
  229. package/src/components/list/added-by.js +144 -140
  230. package/src/components/list/index.js +3 -1
  231. package/src/components/list/table.js +7 -4
  232. package/src/components/routes/link.js +9 -2
  233. package/src/components/save-button/index.js +2 -2
  234. package/src/components/save-hub/index.js +78 -0
  235. package/src/components/save-hub/style.scss +15 -0
  236. package/src/components/secondary-sidebar/list-view-sidebar.js +4 -3
  237. package/src/components/sidebar/index.js +2 -3
  238. package/src/components/sidebar/style.scss +4 -3
  239. package/src/components/sidebar-button/style.scss +2 -1
  240. package/src/components/sidebar-navigation-item/style.scss +1 -23
  241. package/src/components/sidebar-navigation-screen/index.js +6 -0
  242. package/src/components/sidebar-navigation-screen/style.scss +15 -0
  243. package/src/components/sidebar-navigation-screen-main/index.js +21 -8
  244. package/src/components/sidebar-navigation-screen-navigation-item/index.js +30 -21
  245. package/src/components/sidebar-navigation-screen-navigation-menus/index.js +92 -9
  246. package/src/components/sidebar-navigation-screen-navigation-menus/loader.js +9 -0
  247. package/src/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +78 -0
  248. package/src/components/sidebar-navigation-screen-navigation-menus/style.scss +108 -1
  249. package/src/components/sidebar-navigation-screen-template/index.js +82 -11
  250. package/src/components/sidebar-navigation-screen-template/style.scss +25 -0
  251. package/src/components/sidebar-navigation-screen-templates/index.js +7 -0
  252. package/src/components/sidebar-navigation-screen-templates-browse/index.js +12 -1
  253. package/src/components/site-hub/index.js +5 -1
  254. package/src/components/site-hub/style.scss +5 -1
  255. package/src/components/start-template-options/index.js +40 -8
  256. package/src/components/style-book/index.js +203 -54
  257. package/src/components/style-book/style.scss +2 -46
  258. package/src/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +38 -8
  259. package/src/components/sync-state-with-url/use-sync-path-with-url.js +12 -7
  260. package/src/components/template-details/index.js +0 -3
  261. package/src/components/template-part-converter/convert-to-regular.js +10 -17
  262. package/src/components/template-part-converter/convert-to-template-part.js +9 -16
  263. package/src/components/template-part-converter/index.js +28 -12
  264. package/src/components/use-edited-entity-record/index.js +26 -18
  265. package/src/hooks/push-changes-to-global-styles/index.js +1 -0
  266. package/src/index.js +5 -1
  267. package/src/store/test/actions.js +0 -2
  268. package/src/style.scss +2 -1
  269. package/src/utils/history.js +13 -9
  270. package/build/components/global-styles/color-utils.js +0 -17
  271. package/build/components/global-styles/color-utils.js.map +0 -1
  272. package/build/components/global-styles/screen-background-color.js +0 -114
  273. package/build/components/global-styles/screen-background-color.js.map +0 -1
  274. package/build/components/global-styles/screen-button-color.js +0 -88
  275. package/build/components/global-styles/screen-button-color.js.map +0 -1
  276. package/build/components/global-styles/screen-heading-color.js +0 -165
  277. package/build/components/global-styles/screen-heading-color.js.map +0 -1
  278. package/build/components/global-styles/screen-link-color.js +0 -105
  279. package/build/components/global-styles/screen-link-color.js.map +0 -1
  280. package/build/components/global-styles/screen-text-color.js +0 -71
  281. package/build/components/global-styles/screen-text-color.js.map +0 -1
  282. package/build/components/navigation-inspector/index.js +0 -161
  283. package/build/components/navigation-inspector/index.js.map +0 -1
  284. package/build/components/navigation-inspector/navigation-menu.js +0 -79
  285. package/build/components/navigation-inspector/navigation-menu.js.map +0 -1
  286. package/build-module/components/global-styles/color-utils.js +0 -9
  287. package/build-module/components/global-styles/color-utils.js.map +0 -1
  288. package/build-module/components/global-styles/screen-background-color.js +0 -97
  289. package/build-module/components/global-styles/screen-background-color.js.map +0 -1
  290. package/build-module/components/global-styles/screen-button-color.js +0 -73
  291. package/build-module/components/global-styles/screen-button-color.js.map +0 -1
  292. package/build-module/components/global-styles/screen-heading-color.js +0 -149
  293. package/build-module/components/global-styles/screen-heading-color.js.map +0 -1
  294. package/build-module/components/global-styles/screen-link-color.js +0 -89
  295. package/build-module/components/global-styles/screen-link-color.js.map +0 -1
  296. package/build-module/components/global-styles/screen-text-color.js +0 -56
  297. package/build-module/components/global-styles/screen-text-color.js.map +0 -1
  298. package/build-module/components/navigation-inspector/index.js +0 -146
  299. package/build-module/components/navigation-inspector/index.js.map +0 -1
  300. package/build-module/components/navigation-inspector/navigation-menu.js +0 -69
  301. package/build-module/components/navigation-inspector/navigation-menu.js.map +0 -1
  302. package/src/components/global-styles/color-utils.js +0 -14
  303. package/src/components/global-styles/screen-background-color.js +0 -132
  304. package/src/components/global-styles/screen-button-color.js +0 -104
  305. package/src/components/global-styles/screen-heading-color.js +0 -206
  306. package/src/components/global-styles/screen-link-color.js +0 -124
  307. package/src/components/global-styles/screen-text-color.js +0 -62
  308. package/src/components/navigation-inspector/index.js +0 -191
  309. package/src/components/navigation-inspector/navigation-menu.js +0 -84
  310. package/src/components/navigation-inspector/style.scss +0 -46
@@ -5,7 +5,8 @@ import {
5
5
  DropdownMenu,
6
6
  MenuGroup,
7
7
  MenuItem,
8
- NavigableMenu,
8
+ Tooltip,
9
+ VisuallyHidden,
9
10
  } from '@wordpress/components';
10
11
  import { useState } from '@wordpress/element';
11
12
  import { useDispatch } from '@wordpress/data';
@@ -97,9 +98,7 @@ export default function NewTemplate( {
97
98
  const { saveEntityRecord } = useDispatch( coreStore );
98
99
  const { createErrorNotice, createSuccessNotice } =
99
100
  useDispatch( noticesStore );
100
- const { setTemplate, setCanvasMode } = unlock(
101
- useDispatch( editSiteStore )
102
- );
101
+ const { setTemplate } = unlock( useDispatch( editSiteStore ) );
103
102
  async function createTemplate( template, isWPSuggestion = true ) {
104
103
  if ( isCreatingTemplate ) {
105
104
  return;
@@ -124,20 +123,19 @@ export default function NewTemplate( {
124
123
 
125
124
  // Set template before navigating away to avoid initial stale value.
126
125
  setTemplate( newTemplate.id, newTemplate.slug );
127
- // Switch to edit mode.
128
- setCanvasMode( 'edit' );
129
126
 
130
127
  // Navigate to the created template editor.
131
128
  history.push( {
132
129
  postId: newTemplate.id,
133
130
  postType: newTemplate.type,
131
+ canvas: 'edit',
134
132
  } );
135
133
 
136
134
  createSuccessNotice(
137
135
  sprintf(
138
136
  // translators: %s: Title of the created template e.g: "Category".
139
137
  __( '"%s" successfully created.' ),
140
- title
138
+ newTemplate.title?.rendered || title
141
139
  ),
142
140
  {
143
141
  type: 'snackbar',
@@ -164,6 +162,11 @@ export default function NewTemplate( {
164
162
  if ( ! missingTemplates.length ) {
165
163
  return null;
166
164
  }
165
+
166
+ const customTemplateDescription = __(
167
+ 'A custom template can be manually applied to any post or page.'
168
+ );
169
+
167
170
  return (
168
171
  <>
169
172
  <DropdownMenu
@@ -181,7 +184,7 @@ export default function NewTemplate( {
181
184
  { isCreatingTemplate && (
182
185
  <TemplateActionsLoadingScreen />
183
186
  ) }
184
- <NavigableMenu className="edit-site-new-template-dropdown__popover">
187
+ <div className="edit-site-new-template-dropdown__menu-groups">
185
188
  <MenuGroup label={ postType.labels.add_new_item }>
186
189
  { missingTemplates.map( ( template ) => {
187
190
  const {
@@ -192,44 +195,63 @@ export default function NewTemplate( {
192
195
  icon,
193
196
  } = template;
194
197
  return (
195
- <MenuItem
196
- icon={
197
- icon ||
198
- TEMPLATE_ICONS[ slug ] ||
199
- post
200
- }
201
- iconPosition="left"
202
- info={ description }
198
+ <Tooltip
203
199
  key={ slug }
204
- onClick={ () =>
205
- onClick
206
- ? onClick( template )
207
- : createTemplate( template )
208
- }
200
+ position="top right"
201
+ text={ description }
202
+ className="edit-site-new-template-dropdown__menu-item-tooltip"
209
203
  >
210
- { title }
211
- </MenuItem>
204
+ <MenuItem
205
+ icon={
206
+ icon ||
207
+ TEMPLATE_ICONS[ slug ] ||
208
+ post
209
+ }
210
+ iconPosition="left"
211
+ onClick={ () =>
212
+ onClick
213
+ ? onClick( template )
214
+ : createTemplate(
215
+ template
216
+ )
217
+ }
218
+ >
219
+ { title }
220
+ { /* TODO: This probably won't be needed if the <Tooltip> component is accessible.
221
+ * @see https://github.com/WordPress/gutenberg/issues/48222 */ }
222
+ <VisuallyHidden>
223
+ { description }
224
+ </VisuallyHidden>
225
+ </MenuItem>
226
+ </Tooltip>
212
227
  );
213
228
  } ) }
214
229
  </MenuGroup>
215
230
  <MenuGroup>
216
- <MenuItem
217
- icon={ customGenericTemplateIcon }
218
- iconPosition="left"
219
- info={ __(
220
- 'Custom templates can be applied to any post or page.'
221
- ) }
222
- key="custom-template"
223
- onClick={ () =>
224
- setShowCustomGenericTemplateModal(
225
- true
226
- )
227
- }
231
+ <Tooltip
232
+ position="top right"
233
+ text={ customTemplateDescription }
234
+ className="edit-site-new-template-dropdown__menu-item-tooltip"
228
235
  >
229
- { __( 'Custom template' ) }
230
- </MenuItem>
236
+ <MenuItem
237
+ icon={ customGenericTemplateIcon }
238
+ iconPosition="left"
239
+ onClick={ () =>
240
+ setShowCustomGenericTemplateModal(
241
+ true
242
+ )
243
+ }
244
+ >
245
+ { __( 'Custom template' ) }
246
+ { /* TODO: This probably won't be needed if the <Tooltip> component is accessible.
247
+ * @see https://github.com/WordPress/gutenberg/issues/48222 */ }
248
+ <VisuallyHidden>
249
+ { customTemplateDescription }
250
+ </VisuallyHidden>
251
+ </MenuItem>
252
+ </Tooltip>
231
253
  </MenuGroup>
232
- </NavigableMenu>
254
+ </div>
233
255
  </>
234
256
  ) }
235
257
  </DropdownMenu>
@@ -1,9 +1,20 @@
1
1
  .edit-site-new-template-dropdown {
2
- .edit-site-new-template-dropdown__popover {
2
+ .edit-site-new-template-dropdown__menu-groups {
3
3
  @include break-small() {
4
4
  min-width: 300px;
5
5
  }
6
6
  }
7
+
8
+ // The specificity is needed to override the default tooltip styles.
9
+ &__menu-item-tooltip.components-tooltip .components-popover__content {
10
+ max-width: 320px;
11
+ padding: $grid-unit-10 $grid-unit-15;
12
+ border-radius: 2px;
13
+ white-space: pre-wrap;
14
+ min-width: 0;
15
+ width: auto;
16
+ text-align: left;
17
+ }
7
18
  }
8
19
 
9
20
  .edit-site-custom-template-modal {
@@ -146,7 +146,7 @@ export function usePostTypeArchiveMenuItems() {
146
146
  description: sprintf(
147
147
  // translators: %s: Name of the post type e.g: "Post".
148
148
  __(
149
- 'Displays an archive with the latests posts of type: %s.'
149
+ 'Displays an archive with the latest posts of type: %s.'
150
150
  ),
151
151
  postType.labels.singular_name
152
152
  ),
@@ -14,6 +14,7 @@ import { PluginArea } from '@wordpress/plugins';
14
14
  */
15
15
  import { Routes } from '../routes';
16
16
  import Layout from '../layout';
17
+ import { GlobalStylesProvider } from '../global-styles/global-styles-provider';
17
18
 
18
19
  export default function App() {
19
20
  const { createErrorNotice } = useDispatch( noticesStore );
@@ -33,12 +34,14 @@ export default function App() {
33
34
  return (
34
35
  <ShortcutProvider style={ { height: '100%' } }>
35
36
  <SlotFillProvider>
36
- <Popover.Slot />
37
- <UnsavedChangesWarning />
38
- <Routes>
39
- <Layout />
40
- <PluginArea onError={ onPluginAreaError } />
41
- </Routes>
37
+ <GlobalStylesProvider>
38
+ <Popover.Slot />
39
+ <UnsavedChangesWarning />
40
+ <Routes>
41
+ <Layout />
42
+ <PluginArea onError={ onPluginAreaError } />
43
+ </Routes>
44
+ </GlobalStylesProvider>
42
45
  </SlotFillProvider>
43
46
  </ShortcutProvider>
44
47
  );
@@ -31,32 +31,13 @@ function EditorCanvas( { enableResizing, settings, children, ...props } ) {
31
31
  const { setCanvasMode } = unlock( useDispatch( editSiteStore ) );
32
32
  const deviceStyles = useResizeCanvas( deviceType );
33
33
  const mouseMoveTypingRef = useMouseMoveTypingReset();
34
+
34
35
  return (
35
36
  <Iframe
36
37
  expand={ isZoomOutMode }
37
38
  scale={ ( isZoomOutMode && 0.45 ) || undefined }
38
39
  frameSize={ isZoomOutMode ? 100 : undefined }
39
40
  style={ enableResizing ? {} : deviceStyles }
40
- head={
41
- <>
42
- <EditorStyles styles={ settings.styles } />
43
- <style>{
44
- // Forming a "block formatting context" to prevent margin collapsing.
45
- // @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context
46
- `.is-root-container { display: flow-root; }
47
- body { position: relative; }`
48
- }</style>
49
- { enableResizing && (
50
- <style>
51
- {
52
- // Some themes will have `min-height: 100vh` for the root container,
53
- // which isn't a requirement in auto resize mode.
54
- `.is-root-container { min-height: 0 !important; }`
55
- }
56
- </style>
57
- ) }
58
- </>
59
- }
60
41
  ref={ mouseMoveTypingRef }
61
42
  name="editor-canvas"
62
43
  className="edit-site-visual-editor__editor-canvas"
@@ -69,8 +50,18 @@ function EditorCanvas( { enableResizing, settings, children, ...props } ) {
69
50
  }
70
51
  readonly={ canvasMode === 'view' }
71
52
  >
72
- { /* Filters need to be rendered before children to avoid Safari rendering issues. */ }
73
- { settings.svgFilters }
53
+ <EditorStyles styles={ settings.styles } />
54
+ <style>{
55
+ // Forming a "block formatting context" to prevent margin collapsing.
56
+ // @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context
57
+ `.is-root-container{display:flow-root;${
58
+ // Some themes will have `min-height: 100vh` for the root container,
59
+ // which isn't a requirement in auto resize mode.
60
+ enableResizing ? 'min-height:0!important;' : ''
61
+ }}body{position:relative; ${
62
+ canvasMode === 'view' ? 'cursor: pointer;' : ''
63
+ }}}`
64
+ }</style>
74
65
  { children }
75
66
  </Iframe>
76
67
  );
@@ -32,7 +32,7 @@ import WelcomeGuide from '../welcome-guide';
32
32
  import StartTemplateOptions from '../start-template-options';
33
33
  import { store as editSiteStore } from '../../store';
34
34
  import { GlobalStylesRenderer } from '../global-styles-renderer';
35
- import { GlobalStylesProvider } from '../global-styles/global-styles-provider';
35
+
36
36
  import useTitle from '../routes/use-title';
37
37
  import CanvasSpinner from '../canvas-spinner';
38
38
  import { unlock } from '../../private-apis';
@@ -157,70 +157,66 @@ export default function Editor() {
157
157
  type={ editedPostType }
158
158
  id={ editedPostId }
159
159
  >
160
- <GlobalStylesProvider>
161
- <BlockContextProvider value={ blockContext }>
162
- <SidebarComplementaryAreaFills />
163
- { isEditMode && <StartTemplateOptions /> }
164
- <InterfaceSkeleton
165
- enableRegionNavigation={ false }
166
- className={
167
- showIconLabels && 'show-icon-labels'
168
- }
169
- notices={ isEditMode && <EditorSnackbars /> }
170
- content={
171
- <>
172
- <GlobalStylesRenderer />
173
- { isEditMode && <EditorNotices /> }
174
- { showVisualEditor && editedPost && (
175
- <BlockEditor />
176
- ) }
177
- { editorMode === 'text' &&
178
- editedPost &&
179
- isEditMode && <CodeEditor /> }
180
- { hasLoadedPost && ! editedPost && (
181
- <Notice
182
- status="warning"
183
- isDismissible={ false }
184
- >
185
- { __(
186
- "You attempted to edit an item that doesn't exist. Perhaps it was deleted?"
187
- ) }
188
- </Notice>
189
- ) }
190
- { isEditMode && (
191
- <KeyboardShortcutsEditMode />
192
- ) }
193
- </>
194
- }
195
- secondarySidebar={
196
- isEditMode &&
197
- ( ( shouldShowInserter && (
198
- <InserterSidebar />
199
- ) ) ||
200
- ( shouldShowListView && (
201
- <ListViewSidebar />
202
- ) ) )
203
- }
204
- sidebar={
205
- isEditMode &&
206
- isRightSidebarOpen && (
207
- <ComplementaryArea.Slot scope="core/edit-site" />
208
- )
209
- }
210
- footer={
211
- showBlockBreakcrumb && (
212
- <BlockBreadcrumb
213
- rootLabelText={ __( 'Template' ) }
214
- />
215
- )
216
- }
217
- labels={ {
218
- ...interfaceLabels,
219
- secondarySidebar: secondarySidebarLabel,
220
- } }
221
- />
222
- </BlockContextProvider>
223
- </GlobalStylesProvider>
160
+ <BlockContextProvider value={ blockContext }>
161
+ <SidebarComplementaryAreaFills />
162
+ { isEditMode && <StartTemplateOptions /> }
163
+ <InterfaceSkeleton
164
+ enableRegionNavigation={ false }
165
+ className={ showIconLabels && 'show-icon-labels' }
166
+ notices={ isEditMode && <EditorSnackbars /> }
167
+ content={
168
+ <>
169
+ <GlobalStylesRenderer />
170
+ { isEditMode && <EditorNotices /> }
171
+ { showVisualEditor && editedPost && (
172
+ <BlockEditor />
173
+ ) }
174
+ { editorMode === 'text' &&
175
+ editedPost &&
176
+ isEditMode && <CodeEditor /> }
177
+ { hasLoadedPost && ! editedPost && (
178
+ <Notice
179
+ status="warning"
180
+ isDismissible={ false }
181
+ >
182
+ { __(
183
+ "You attempted to edit an item that doesn't exist. Perhaps it was deleted?"
184
+ ) }
185
+ </Notice>
186
+ ) }
187
+ { isEditMode && (
188
+ <KeyboardShortcutsEditMode />
189
+ ) }
190
+ </>
191
+ }
192
+ secondarySidebar={
193
+ isEditMode &&
194
+ ( ( shouldShowInserter && (
195
+ <InserterSidebar />
196
+ ) ) ||
197
+ ( shouldShowListView && (
198
+ <ListViewSidebar />
199
+ ) ) )
200
+ }
201
+ sidebar={
202
+ isEditMode &&
203
+ isRightSidebarOpen && (
204
+ <ComplementaryArea.Slot scope="core/edit-site" />
205
+ )
206
+ }
207
+ footer={
208
+ showBlockBreakcrumb && (
209
+ <BlockBreadcrumb
210
+ rootLabelText={ __( 'Template' ) }
211
+ />
212
+ )
213
+ }
214
+ labels={ {
215
+ ...interfaceLabels,
216
+ secondarySidebar: secondarySidebarLabel,
217
+ } }
218
+ />
219
+ </BlockContextProvider>
224
220
  </EntityProvider>
225
221
  </EntityProvider>
226
222
  </>
@@ -1,215 +1,40 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import {
5
- __experimentalBorderRadiusControl as BorderRadiusControl,
6
- privateApis as blockEditorPrivateApis,
7
- } from '@wordpress/block-editor';
8
- import {
9
- __experimentalBorderBoxControl as BorderBoxControl,
10
- __experimentalHasSplitBorders as hasSplitBorders,
11
- __experimentalIsDefinedBorder as isDefinedBorder,
12
- __experimentalToolsPanel as ToolsPanel,
13
- __experimentalToolsPanelItem as ToolsPanelItem,
14
- } from '@wordpress/components';
15
- import { useCallback } from '@wordpress/element';
16
- import { __ } from '@wordpress/i18n';
4
+ import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
17
5
 
18
6
  /**
19
7
  * Internal dependencies
20
8
  */
21
- import { useSupportedStyles, useColorsPerOrigin } from './hooks';
22
9
  import { unlock } from '../../private-apis';
23
10
 
24
- const { useGlobalSetting, useGlobalStyle } = unlock( blockEditorPrivateApis );
25
-
26
- export function useHasBorderPanel( name ) {
27
- const controls = [
28
- useHasBorderColorControl( name ),
29
- useHasBorderRadiusControl( name ),
30
- useHasBorderStyleControl( name ),
31
- useHasBorderWidthControl( name ),
32
- ];
33
-
34
- return controls.some( Boolean );
35
- }
36
-
37
- function useHasBorderColorControl( name ) {
38
- const supports = useSupportedStyles( name );
39
- return (
40
- useGlobalSetting( 'border.color', name )[ 0 ] &&
41
- supports.includes( 'borderColor' )
42
- );
43
- }
44
-
45
- function useHasBorderRadiusControl( name ) {
46
- const supports = useSupportedStyles( name );
47
- return (
48
- useGlobalSetting( 'border.radius', name )[ 0 ] &&
49
- supports.includes( 'borderRadius' )
50
- );
51
- }
52
-
53
- function useHasBorderStyleControl( name ) {
54
- const supports = useSupportedStyles( name );
55
- return (
56
- useGlobalSetting( 'border.style', name )[ 0 ] &&
57
- supports.includes( 'borderStyle' )
58
- );
59
- }
60
-
61
- function useHasBorderWidthControl( name ) {
62
- const supports = useSupportedStyles( name );
63
- return (
64
- useGlobalSetting( 'border.width', name )[ 0 ] &&
65
- supports.includes( 'borderWidth' )
66
- );
67
- }
68
-
69
- function applyFallbackStyle( border ) {
70
- if ( ! border ) {
71
- return border;
72
- }
73
-
74
- if ( ! border.style && ( border.color || border.width ) ) {
75
- return { ...border, style: 'solid' };
76
- }
77
-
78
- return border;
79
- }
80
-
81
- function applyAllFallbackStyles( border ) {
82
- if ( ! border ) {
83
- return border;
84
- }
85
-
86
- if ( hasSplitBorders( border ) ) {
87
- return {
88
- top: applyFallbackStyle( border.top ),
89
- right: applyFallbackStyle( border.right ),
90
- bottom: applyFallbackStyle( border.bottom ),
91
- left: applyFallbackStyle( border.left ),
92
- };
93
- }
94
-
95
- return applyFallbackStyle( border );
96
- }
11
+ const {
12
+ useGlobalStyle,
13
+ useGlobalSetting,
14
+ useSettingsForBlockElement,
15
+ BorderPanel: StylesBorderPanel,
16
+ } = unlock( blockEditorPrivateApis );
97
17
 
98
18
  export default function BorderPanel( { name, variation = '' } ) {
99
- const prefix = variation ? `variations.${ variation }.` : '';
100
- // To better reflect if the user has customized a value we need to
101
- // ensure the style value being checked is from the `user` origin.
102
- const [ userBorderStyles ] = useGlobalStyle(
103
- `${ prefix }border`,
104
- name,
105
- 'user'
106
- );
107
- const [ border, setBorder ] = useGlobalStyle( `${ prefix }border`, name );
108
- const colors = useColorsPerOrigin( name );
109
-
110
- const showBorderColor = useHasBorderColorControl( name );
111
- const showBorderStyle = useHasBorderStyleControl( name );
112
- const showBorderWidth = useHasBorderWidthControl( name );
113
-
114
- // Border radius.
115
- const showBorderRadius = useHasBorderRadiusControl( name );
116
- const [ borderRadiusValues, setBorderRadius ] = useGlobalStyle(
117
- `${ prefix }border.radius`,
118
- name
119
- );
120
- const hasBorderRadius = () => {
121
- const borderValues = userBorderStyles?.radius;
122
- if ( typeof borderValues === 'object' ) {
123
- return Object.entries( borderValues ).some( Boolean );
124
- }
125
- return !! borderValues;
126
- };
127
-
128
- const resetBorder = () => {
129
- if ( hasBorderRadius() ) {
130
- return setBorder( { radius: userBorderStyles.radius } );
131
- }
132
-
133
- setBorder( undefined );
134
- };
135
-
136
- const resetAll = useCallback( () => setBorder( undefined ), [ setBorder ] );
137
- const onBorderChange = useCallback(
138
- ( newBorder ) => {
139
- // Ensure we have a visible border style when a border width or
140
- // color is being selected.
141
- const newBorderWithStyle = applyAllFallbackStyles( newBorder );
142
-
143
- // As we can't conditionally generate styles based on if other
144
- // style properties have been set we need to force split border
145
- // definitions for user set border styles. Border radius is derived
146
- // from the same property i.e. `border.radius` if it is a string
147
- // that is used. The longhand border radii styles are only generated
148
- // if that property is an object.
149
- //
150
- // For borders (color, style, and width) those are all properties on
151
- // the `border` style property. This means if the theme.json defined
152
- // split borders and the user condenses them into a flat border or
153
- // vice-versa we'd get both sets of styles which would conflict.
154
- const updatedBorder = ! hasSplitBorders( newBorderWithStyle )
155
- ? {
156
- top: newBorderWithStyle,
157
- right: newBorderWithStyle,
158
- bottom: newBorderWithStyle,
159
- left: newBorderWithStyle,
160
- }
161
- : {
162
- color: null,
163
- style: null,
164
- width: null,
165
- ...newBorderWithStyle,
166
- };
19
+ let prefixParts = [];
20
+ if ( variation ) {
21
+ prefixParts = [ 'variations', variation ].concat( prefixParts );
22
+ }
23
+ const prefix = prefixParts.join( '.' );
167
24
 
168
- // As radius is maintained separately to color, style, and width
169
- // maintain its value. Undefined values here will be cleaned when
170
- // global styles are saved.
171
- setBorder( { radius: border?.radius, ...updatedBorder } );
172
- },
173
- [ setBorder, border?.radius ]
174
- );
25
+ const [ style ] = useGlobalStyle( prefix, name, 'user', false );
26
+ const [ inheritedStyle, setStyle ] = useGlobalStyle( prefix, name, 'all', {
27
+ shouldDecodeEncode: false,
28
+ } );
29
+ const [ rawSettings ] = useGlobalSetting( '', name );
30
+ const settings = useSettingsForBlockElement( rawSettings, name );
175
31
 
176
32
  return (
177
- <ToolsPanel label={ __( 'Border' ) } resetAll={ resetAll }>
178
- { ( showBorderWidth || showBorderColor ) && (
179
- <ToolsPanelItem
180
- hasValue={ () => isDefinedBorder( userBorderStyles ) }
181
- label={ __( 'Border' ) }
182
- onDeselect={ () => resetBorder() }
183
- isShownByDefault={ true }
184
- >
185
- <BorderBoxControl
186
- colors={ colors }
187
- enableAlpha={ true }
188
- enableStyle={ showBorderStyle }
189
- onChange={ onBorderChange }
190
- popoverOffset={ 40 }
191
- popoverPlacement="left-start"
192
- value={ border }
193
- __experimentalIsRenderedInSidebar={ true }
194
- size={ '__unstable-large' }
195
- />
196
- </ToolsPanelItem>
197
- ) }
198
- { showBorderRadius && (
199
- <ToolsPanelItem
200
- hasValue={ hasBorderRadius }
201
- label={ __( 'Radius' ) }
202
- onDeselect={ () => setBorderRadius( undefined ) }
203
- isShownByDefault={ true }
204
- >
205
- <BorderRadiusControl
206
- values={ borderRadiusValues }
207
- onChange={ ( value ) => {
208
- setBorderRadius( value || undefined );
209
- } }
210
- />
211
- </ToolsPanelItem>
212
- ) }
213
- </ToolsPanel>
33
+ <StylesBorderPanel
34
+ inheritedValue={ inheritedStyle }
35
+ value={ style }
36
+ onChange={ setStyle }
37
+ settings={ settings }
38
+ />
214
39
  );
215
40
  }