@wordpress/edit-site 6.4.0 → 6.6.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 (234) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/add-new-pattern/index.js +6 -1
  3. package/build/components/add-new-pattern/index.js.map +1 -1
  4. package/build/components/add-new-post/index.js +2 -1
  5. package/build/components/add-new-post/index.js.map +1 -1
  6. package/build/components/add-new-template/utils.js +2 -2
  7. package/build/components/add-new-template/utils.js.map +1 -1
  8. package/build/components/editor/index.js +71 -20
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/global-styles/background-panel.js +1 -4
  11. package/build/components/global-styles/background-panel.js.map +1 -1
  12. package/build/components/global-styles/font-families.js +3 -4
  13. package/build/components/global-styles/font-families.js.map +1 -1
  14. package/build/components/global-styles/font-library-modal/context.js +0 -5
  15. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  16. package/build/components/global-styles/font-library-modal/font-collection.js +25 -5
  17. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/index.js +1 -8
  19. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  20. package/build/components/global-styles/font-library-modal/installed-fonts.js +23 -7
  21. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  22. package/build/components/global-styles/font-library-modal/upload-fonts.js +2 -3
  23. package/build/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  24. package/build/components/global-styles/screen-block.js +5 -7
  25. package/build/components/global-styles/screen-block.js.map +1 -1
  26. package/build/components/global-styles/screen-css.js +1 -1
  27. package/build/components/global-styles/screen-css.js.map +1 -1
  28. package/build/components/global-styles/screen-typeset.js +40 -0
  29. package/build/components/global-styles/screen-typeset.js.map +1 -0
  30. package/build/components/global-styles/screen-typography-element.js +14 -0
  31. package/build/components/global-styles/screen-typography-element.js.map +1 -1
  32. package/build/components/global-styles/screen-typography.js +4 -6
  33. package/build/components/global-styles/screen-typography.js.map +1 -1
  34. package/build/components/global-styles/shadows-edit-panel.js +51 -59
  35. package/build/components/global-styles/shadows-edit-panel.js.map +1 -1
  36. package/build/components/global-styles/size-control/index.js +10 -5
  37. package/build/components/global-styles/size-control/index.js.map +1 -1
  38. package/build/components/global-styles/typeset-button.js +97 -0
  39. package/build/components/global-styles/typeset-button.js.map +1 -0
  40. package/build/components/global-styles/typeset.js +80 -0
  41. package/build/components/global-styles/typeset.js.map +1 -0
  42. package/build/components/global-styles/ui.js +4 -0
  43. package/build/components/global-styles/ui.js.map +1 -1
  44. package/build/components/global-styles/utils.js +10 -1
  45. package/build/components/global-styles/utils.js.map +1 -1
  46. package/build/components/page-patterns/fields.js +230 -0
  47. package/build/components/page-patterns/fields.js.map +1 -0
  48. package/build/components/page-patterns/index.js +13 -228
  49. package/build/components/page-patterns/index.js.map +1 -1
  50. package/build/components/page-patterns/use-patterns.js +29 -1
  51. package/build/components/page-patterns/use-patterns.js.map +1 -1
  52. package/build/components/page-templates/fields.js +169 -0
  53. package/build/components/page-templates/fields.js.map +1 -0
  54. package/build/components/page-templates/index.js +10 -177
  55. package/build/components/page-templates/index.js.map +1 -1
  56. package/build/components/post-edit/index.js +46 -34
  57. package/build/components/post-edit/index.js.map +1 -1
  58. package/build/components/post-fields/index.js +50 -28
  59. package/build/components/post-fields/index.js.map +1 -1
  60. package/build/components/post-list/index.js +126 -68
  61. package/build/components/post-list/index.js.map +1 -1
  62. package/build/components/sidebar-dataviews/add-new-view.js +3 -2
  63. package/build/components/sidebar-dataviews/add-new-view.js.map +1 -1
  64. package/build/components/sidebar-dataviews/custom-dataviews-list.js +1 -0
  65. package/build/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  66. package/build/components/sidebar-dataviews/dataview-item.js +2 -3
  67. package/build/components/sidebar-dataviews/dataview-item.js.map +1 -1
  68. package/build/components/sidebar-dataviews/default-views.js +81 -81
  69. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  70. package/build/components/sidebar-dataviews/index.js +3 -42
  71. package/build/components/sidebar-dataviews/index.js.map +1 -1
  72. package/build/components/site-hub/index.js +6 -3
  73. package/build/components/site-hub/index.js.map +1 -1
  74. package/build/components/style-book/index.js +22 -25
  75. package/build/components/style-book/index.js.map +1 -1
  76. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +5 -0
  77. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  78. package/build/hooks/push-changes-to-global-styles/index.js +3 -3
  79. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  80. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +2 -4
  81. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  82. package/build/index.js +0 -2
  83. package/build/index.js.map +1 -1
  84. package/build/utils/is-template-removable.js +2 -2
  85. package/build/utils/is-template-removable.js.map +1 -1
  86. package/build/utils/is-template-revertable.js +1 -1
  87. package/build/utils/is-template-revertable.js.map +1 -1
  88. package/build-module/components/add-new-pattern/index.js +6 -1
  89. package/build-module/components/add-new-pattern/index.js.map +1 -1
  90. package/build-module/components/add-new-post/index.js +2 -1
  91. package/build-module/components/add-new-post/index.js.map +1 -1
  92. package/build-module/components/add-new-template/utils.js +2 -2
  93. package/build-module/components/add-new-template/utils.js.map +1 -1
  94. package/build-module/components/editor/index.js +73 -22
  95. package/build-module/components/editor/index.js.map +1 -1
  96. package/build-module/components/global-styles/background-panel.js +1 -4
  97. package/build-module/components/global-styles/background-panel.js.map +1 -1
  98. package/build-module/components/global-styles/font-families.js +3 -4
  99. package/build-module/components/global-styles/font-families.js.map +1 -1
  100. package/build-module/components/global-styles/font-library-modal/context.js +0 -5
  101. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  102. package/build-module/components/global-styles/font-library-modal/font-collection.js +26 -6
  103. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  104. package/build-module/components/global-styles/font-library-modal/index.js +1 -8
  105. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  106. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +23 -7
  107. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  108. package/build-module/components/global-styles/font-library-modal/upload-fonts.js +2 -3
  109. package/build-module/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  110. package/build-module/components/global-styles/screen-block.js +5 -7
  111. package/build-module/components/global-styles/screen-block.js.map +1 -1
  112. package/build-module/components/global-styles/screen-css.js +1 -1
  113. package/build-module/components/global-styles/screen-css.js.map +1 -1
  114. package/build-module/components/global-styles/screen-typeset.js +34 -0
  115. package/build-module/components/global-styles/screen-typeset.js.map +1 -0
  116. package/build-module/components/global-styles/screen-typography-element.js +14 -0
  117. package/build-module/components/global-styles/screen-typography-element.js.map +1 -1
  118. package/build-module/components/global-styles/screen-typography.js +4 -6
  119. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  120. package/build-module/components/global-styles/shadows-edit-panel.js +52 -60
  121. package/build-module/components/global-styles/shadows-edit-panel.js.map +1 -1
  122. package/build-module/components/global-styles/size-control/index.js +10 -5
  123. package/build-module/components/global-styles/size-control/index.js.map +1 -1
  124. package/build-module/components/global-styles/typeset-button.js +89 -0
  125. package/build-module/components/global-styles/typeset-button.js.map +1 -0
  126. package/build-module/components/global-styles/typeset.js +71 -0
  127. package/build-module/components/global-styles/typeset.js.map +1 -0
  128. package/build-module/components/global-styles/ui.js +4 -0
  129. package/build-module/components/global-styles/ui.js.map +1 -1
  130. package/build-module/components/global-styles/utils.js +10 -1
  131. package/build-module/components/global-styles/utils.js.map +1 -1
  132. package/build-module/components/page-patterns/fields.js +223 -0
  133. package/build-module/components/page-patterns/fields.js.map +1 -0
  134. package/build-module/components/page-patterns/index.js +14 -231
  135. package/build-module/components/page-patterns/index.js.map +1 -1
  136. package/build-module/components/page-patterns/use-patterns.js +26 -0
  137. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  138. package/build-module/components/page-templates/fields.js +160 -0
  139. package/build-module/components/page-templates/fields.js.map +1 -0
  140. package/build-module/components/page-templates/index.js +12 -178
  141. package/build-module/components/page-templates/index.js.map +1 -1
  142. package/build-module/components/post-edit/index.js +49 -37
  143. package/build-module/components/post-edit/index.js.map +1 -1
  144. package/build-module/components/post-fields/index.js +50 -28
  145. package/build-module/components/post-fields/index.js.map +1 -1
  146. package/build-module/components/post-list/index.js +128 -70
  147. package/build-module/components/post-list/index.js.map +1 -1
  148. package/build-module/components/sidebar-dataviews/add-new-view.js +3 -2
  149. package/build-module/components/sidebar-dataviews/add-new-view.js.map +1 -1
  150. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js +1 -0
  151. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  152. package/build-module/components/sidebar-dataviews/dataview-item.js +2 -3
  153. package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -1
  154. package/build-module/components/sidebar-dataviews/default-views.js +81 -81
  155. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  156. package/build-module/components/sidebar-dataviews/index.js +3 -42
  157. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  158. package/build-module/components/site-hub/index.js +7 -4
  159. package/build-module/components/site-hub/index.js.map +1 -1
  160. package/build-module/components/style-book/index.js +23 -26
  161. package/build-module/components/style-book/index.js.map +1 -1
  162. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +5 -0
  163. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  164. package/build-module/hooks/push-changes-to-global-styles/index.js +3 -3
  165. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  166. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +2 -3
  167. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  168. package/build-module/index.js +0 -2
  169. package/build-module/index.js.map +1 -1
  170. package/build-module/utils/is-template-removable.js +2 -2
  171. package/build-module/utils/is-template-removable.js.map +1 -1
  172. package/build-module/utils/is-template-revertable.js +1 -1
  173. package/build-module/utils/is-template-revertable.js.map +1 -1
  174. package/build-style/posts-rtl.css +201 -25
  175. package/build-style/posts.css +201 -25
  176. package/build-style/style-rtl.css +307 -69
  177. package/build-style/style.css +307 -69
  178. package/package.json +41 -41
  179. package/src/components/add-new-pattern/index.js +8 -3
  180. package/src/components/add-new-post/index.js +2 -1
  181. package/src/components/add-new-template/style.scss +1 -1
  182. package/src/components/add-new-template/utils.js +10 -6
  183. package/src/components/editor/index.js +80 -22
  184. package/src/components/editor/style.scss +60 -2
  185. package/src/components/global-styles/background-panel.js +0 -3
  186. package/src/components/global-styles/font-families.js +3 -5
  187. package/src/components/global-styles/font-library-modal/context.js +0 -5
  188. package/src/components/global-styles/font-library-modal/font-collection.js +34 -10
  189. package/src/components/global-styles/font-library-modal/index.js +2 -7
  190. package/src/components/global-styles/font-library-modal/installed-fonts.js +26 -6
  191. package/src/components/global-styles/font-library-modal/style.scss +2 -2
  192. package/src/components/global-styles/font-library-modal/upload-fonts.js +2 -2
  193. package/src/components/global-styles/screen-block.js +2 -4
  194. package/src/components/global-styles/screen-css.js +3 -1
  195. package/src/components/global-styles/screen-typeset.js +42 -0
  196. package/src/components/global-styles/screen-typography-element.js +14 -0
  197. package/src/components/global-styles/screen-typography.js +4 -4
  198. package/src/components/global-styles/shadows-edit-panel.js +67 -73
  199. package/src/components/global-styles/size-control/index.js +9 -6
  200. package/src/components/global-styles/style.scss +4 -7
  201. package/src/components/global-styles/typeset-button.js +93 -0
  202. package/src/components/global-styles/typeset.js +73 -0
  203. package/src/components/global-styles/ui.js +5 -0
  204. package/src/components/global-styles/utils.js +13 -1
  205. package/src/components/layout/style.scss +8 -0
  206. package/src/components/page-patterns/fields.js +251 -0
  207. package/src/components/page-patterns/index.js +19 -246
  208. package/src/components/page-patterns/style.scss +82 -85
  209. package/src/components/page-patterns/use-patterns.js +33 -0
  210. package/src/components/page-templates/fields.js +157 -0
  211. package/src/components/page-templates/index.js +19 -170
  212. package/src/components/page-templates/style.scss +14 -5
  213. package/src/components/post-edit/index.js +58 -35
  214. package/src/components/post-fields/index.js +88 -25
  215. package/src/components/post-list/index.js +135 -79
  216. package/src/components/sidebar-dataviews/add-new-view.js +3 -4
  217. package/src/components/sidebar-dataviews/custom-dataviews-list.js +1 -0
  218. package/src/components/sidebar-dataviews/dataview-item.js +2 -2
  219. package/src/components/sidebar-dataviews/default-views.js +95 -95
  220. package/src/components/sidebar-dataviews/index.js +3 -37
  221. package/src/components/site-hub/index.js +11 -2
  222. package/src/components/site-icon/style.scss +4 -1
  223. package/src/components/style-book/index.js +27 -32
  224. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +5 -0
  225. package/src/hooks/push-changes-to-global-styles/index.js +3 -3
  226. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +2 -3
  227. package/src/index.js +0 -2
  228. package/src/utils/is-template-removable.js +4 -2
  229. package/src/utils/is-template-revertable.js +2 -1
  230. package/build/utils/clone-deep.js +0 -15
  231. package/build/utils/clone-deep.js.map +0 -1
  232. package/build-module/utils/clone-deep.js +0 -9
  233. package/build-module/utils/clone-deep.js.map +0 -1
  234. package/src/utils/clone-deep.js +0 -8
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/edit-site",
3
- "version": "6.4.0",
3
+ "version": "6.6.0",
4
4
  "description": "Edit Site Page module for WordPress.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -29,45 +29,45 @@
29
29
  "dependencies": {
30
30
  "@babel/runtime": "^7.16.0",
31
31
  "@react-spring/web": "^9.4.5",
32
- "@wordpress/a11y": "^4.4.0",
33
- "@wordpress/api-fetch": "^7.4.0",
34
- "@wordpress/blob": "^4.4.0",
35
- "@wordpress/block-editor": "^13.4.0",
36
- "@wordpress/block-library": "^9.4.0",
37
- "@wordpress/blocks": "^13.4.0",
38
- "@wordpress/commands": "^1.4.0",
39
- "@wordpress/components": "^28.4.0",
40
- "@wordpress/compose": "^7.4.0",
41
- "@wordpress/core-commands": "^1.4.0",
42
- "@wordpress/core-data": "^7.4.0",
43
- "@wordpress/data": "^10.4.0",
44
- "@wordpress/dataviews": "^4.0.0",
45
- "@wordpress/date": "^5.4.0",
46
- "@wordpress/deprecated": "^4.4.0",
47
- "@wordpress/dom": "^4.4.0",
48
- "@wordpress/editor": "^14.4.0",
49
- "@wordpress/element": "^6.4.0",
50
- "@wordpress/escape-html": "^3.4.0",
51
- "@wordpress/hooks": "^4.4.0",
52
- "@wordpress/html-entities": "^4.4.0",
53
- "@wordpress/i18n": "^5.4.0",
54
- "@wordpress/icons": "^10.4.0",
55
- "@wordpress/keyboard-shortcuts": "^5.4.0",
56
- "@wordpress/keycodes": "^4.4.0",
57
- "@wordpress/notices": "^5.4.0",
58
- "@wordpress/patterns": "^2.4.0",
59
- "@wordpress/plugins": "^7.4.0",
60
- "@wordpress/preferences": "^4.4.0",
61
- "@wordpress/primitives": "^4.4.0",
62
- "@wordpress/priority-queue": "^3.4.0",
63
- "@wordpress/private-apis": "^1.4.0",
64
- "@wordpress/reusable-blocks": "^5.4.0",
65
- "@wordpress/router": "^1.4.0",
66
- "@wordpress/style-engine": "^2.4.0",
67
- "@wordpress/url": "^4.4.0",
68
- "@wordpress/viewport": "^6.4.0",
69
- "@wordpress/widgets": "^4.4.0",
70
- "@wordpress/wordcount": "^4.4.0",
32
+ "@wordpress/a11y": "^4.6.0",
33
+ "@wordpress/api-fetch": "^7.6.0",
34
+ "@wordpress/blob": "^4.6.0",
35
+ "@wordpress/block-editor": "^14.1.0",
36
+ "@wordpress/block-library": "^9.6.0",
37
+ "@wordpress/blocks": "^13.6.0",
38
+ "@wordpress/commands": "^1.6.0",
39
+ "@wordpress/components": "^28.6.0",
40
+ "@wordpress/compose": "^7.6.0",
41
+ "@wordpress/core-commands": "^1.6.0",
42
+ "@wordpress/core-data": "^7.6.0",
43
+ "@wordpress/data": "^10.6.0",
44
+ "@wordpress/dataviews": "^4.2.0",
45
+ "@wordpress/date": "^5.6.0",
46
+ "@wordpress/deprecated": "^4.6.0",
47
+ "@wordpress/dom": "^4.6.0",
48
+ "@wordpress/editor": "^14.6.0",
49
+ "@wordpress/element": "^6.6.0",
50
+ "@wordpress/escape-html": "^3.6.0",
51
+ "@wordpress/hooks": "^4.6.0",
52
+ "@wordpress/html-entities": "^4.6.0",
53
+ "@wordpress/i18n": "^5.6.0",
54
+ "@wordpress/icons": "^10.6.0",
55
+ "@wordpress/keyboard-shortcuts": "^5.6.0",
56
+ "@wordpress/keycodes": "^4.6.0",
57
+ "@wordpress/notices": "^5.6.0",
58
+ "@wordpress/patterns": "^2.6.0",
59
+ "@wordpress/plugins": "^7.6.0",
60
+ "@wordpress/preferences": "^4.6.0",
61
+ "@wordpress/primitives": "^4.6.0",
62
+ "@wordpress/priority-queue": "^3.6.0",
63
+ "@wordpress/private-apis": "^1.6.0",
64
+ "@wordpress/reusable-blocks": "^5.6.0",
65
+ "@wordpress/router": "^1.6.0",
66
+ "@wordpress/style-engine": "^2.6.0",
67
+ "@wordpress/url": "^4.6.0",
68
+ "@wordpress/viewport": "^6.6.0",
69
+ "@wordpress/widgets": "^4.6.0",
70
+ "@wordpress/wordcount": "^4.6.0",
71
71
  "change-case": "^4.1.2",
72
72
  "clsx": "^2.1.1",
73
73
  "colord": "^2.9.2",
@@ -82,5 +82,5 @@
82
82
  "publishConfig": {
83
83
  "access": "public"
84
84
  },
85
- "gitHead": "363edb39b8dda8727f652e42cbb8497732693ed2"
85
+ "gitHead": "ab9564947967bb3f00343130954b9efacba6cdd7"
86
86
  }
@@ -173,9 +173,14 @@ export default function AddNewPattern() {
173
173
  // When we're not handling template parts, we should
174
174
  // add or create the proper pattern category.
175
175
  if ( postType !== TEMPLATE_PART_POST_TYPE ) {
176
- const currentCategory = categoryMap
177
- .values()
178
- .find( ( term ) => term.name === categoryId );
176
+ /*
177
+ * categoryMap.values() returns an iterator.
178
+ * Iterator.prototype.find() is not yet widely supported.
179
+ * Convert to array to use the Array.prototype.find method.
180
+ */
181
+ const currentCategory = Array.from(
182
+ categoryMap.values()
183
+ ).find( ( term ) => term.name === categoryId );
179
184
  if ( currentCategory ) {
180
185
  currentCategoryId =
181
186
  currentCategory.id ||
@@ -95,9 +95,10 @@ export default function AddNewPostModal( { postType, onSave, onClose } ) {
95
95
  size="small"
96
96
  >
97
97
  <form onSubmit={ createPost }>
98
- <VStack spacing={ 3 }>
98
+ <VStack spacing={ 4 }>
99
99
  <TextControl
100
100
  __next40pxDefaultSize
101
+ __nextHasNoMarginBottom
101
102
  label={ __( 'Title' ) }
102
103
  onChange={ setTitle }
103
104
  placeholder={ __( 'No title' ) }
@@ -81,7 +81,7 @@
81
81
  }
82
82
 
83
83
  .edit-site-custom-template-modal__no-results {
84
- border: 1px solid $gray-400;
84
+ border: $border-width solid $gray-400;
85
85
  border-radius: $radius-block-ui;
86
86
  padding: $grid-unit-20;
87
87
  }
@@ -166,9 +166,11 @@ export function usePostTypeArchiveMenuItems() {
166
166
  // `icon` is the `menu_icon` property of a post type. We
167
167
  // only handle `dashicons` for now, even if the `menu_icon`
168
168
  // also supports urls and svg as values.
169
- icon: postType.icon?.startsWith( 'dashicons-' )
170
- ? postType.icon.slice( 10 )
171
- : archive,
169
+ icon:
170
+ typeof postType.icon === 'string' &&
171
+ postType.icon.startsWith( 'dashicons-' )
172
+ ? postType.icon.slice( 10 )
173
+ : archive,
172
174
  templatePrefix: 'archive',
173
175
  };
174
176
  } ) || [],
@@ -272,9 +274,11 @@ export const usePostTypeMenuItems = ( onClickMenuItem ) => {
272
274
  // `icon` is the `menu_icon` property of a post type. We
273
275
  // only handle `dashicons` for now, even if the `menu_icon`
274
276
  // also supports urls and svg as values.
275
- icon: icon?.startsWith( 'dashicons-' )
276
- ? icon.slice( 10 )
277
- : post,
277
+ icon:
278
+ typeof icon === 'string' &&
279
+ icon.startsWith( 'dashicons-' )
280
+ ? icon.slice( 10 )
281
+ : post,
278
282
  templatePrefix: templatePrefixes[ slug ],
279
283
  };
280
284
  const hasEntities = postTypesInfo?.[ slug ]?.hasEntities;
@@ -7,8 +7,8 @@ import clsx from 'clsx';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { useDispatch, useSelect } from '@wordpress/data';
10
- import { Button } from '@wordpress/components';
11
- import { useInstanceId } from '@wordpress/compose';
10
+ import { Button, __unstableMotion as motion } from '@wordpress/components';
11
+ import { useInstanceId, useReducedMotion } from '@wordpress/compose';
12
12
  import {
13
13
  EditorKeyboardShortcutsRegister,
14
14
  privateApis as editorPrivateApis,
@@ -22,6 +22,7 @@ import { store as noticesStore } from '@wordpress/notices';
22
22
  import { privateApis as routerPrivateApis } from '@wordpress/router';
23
23
  import { store as preferencesStore } from '@wordpress/preferences';
24
24
  import { decodeEntities } from '@wordpress/html-entities';
25
+ import { Icon, homeButton } from '@wordpress/icons';
25
26
 
26
27
  /**
27
28
  * Internal dependencies
@@ -51,7 +52,32 @@ const { Editor, BackButton } = unlock( editorPrivateApis );
51
52
  const { useHistory, useLocation } = unlock( routerPrivateApis );
52
53
  const { BlockKeyboardShortcuts } = unlock( blockLibraryPrivateApis );
53
54
 
55
+ const toggleHomeIconVariants = {
56
+ edit: {
57
+ opacity: 0,
58
+ scale: 0.2,
59
+ },
60
+ hover: {
61
+ opacity: 1,
62
+ scale: 1,
63
+ clipPath: 'inset( 22% round 2px )',
64
+ },
65
+ };
66
+
67
+ const siteIconVariants = {
68
+ edit: {
69
+ clipPath: 'inset(0% round 0)',
70
+ },
71
+ hover: {
72
+ clipPath: 'inset( 22% round 2px )',
73
+ },
74
+ tap: {
75
+ clipPath: 'inset(0% round 0)',
76
+ },
77
+ };
78
+
54
79
  export default function EditSiteEditor( { isPostsList = false } ) {
80
+ const disableMotion = useReducedMotion();
55
81
  const { params } = useLocation();
56
82
  const isLoading = useIsSiteEditorLoading();
57
83
  const {
@@ -65,6 +91,7 @@ export default function EditSiteEditor( { isPostsList = false } ) {
65
91
  showIconLabels,
66
92
  editorCanvasView,
67
93
  currentPostIsTrashed,
94
+ hasSiteIcon,
68
95
  } = useSelect( ( select ) => {
69
96
  const {
70
97
  getEditorCanvasContainerView,
@@ -75,8 +102,9 @@ export default function EditSiteEditor( { isPostsList = false } ) {
75
102
  getEditedPostId,
76
103
  } = unlock( select( editSiteStore ) );
77
104
  const { get } = select( preferencesStore );
78
- const { getCurrentTheme } = select( coreDataStore );
105
+ const { getCurrentTheme, getEntityRecord } = select( coreDataStore );
79
106
  const _context = getEditedPostContext();
107
+ const siteData = getEntityRecord( 'root', '__unstableBase', undefined );
80
108
 
81
109
  // The currently selected entity to display.
82
110
  // Typically template or template part in the site editor.
@@ -93,6 +121,7 @@ export default function EditSiteEditor( { isPostsList = false } ) {
93
121
  currentPostIsTrashed:
94
122
  select( editorStore ).getCurrentPostAttribute( 'status' ) ===
95
123
  'trash',
124
+ hasSiteIcon: !! siteData?.site_icon_url,
96
125
  };
97
126
  }, [] );
98
127
  useEditorTitle();
@@ -179,6 +208,9 @@ export default function EditSiteEditor( { isPostsList = false } ) {
179
208
  getEditorCanvasContainerTitleAndIcon( editorCanvasView );
180
209
 
181
210
  const isReady = ! isLoading;
211
+ const transition = {
212
+ duration: disableMotion ? 0 : 0.2,
213
+ };
182
214
 
183
215
  return (
184
216
  <>
@@ -217,26 +249,52 @@ export default function EditSiteEditor( { isPostsList = false } ) {
217
249
  <BackButton>
218
250
  { ( { length } ) =>
219
251
  length <= 1 && (
220
- <Button
221
- label={ __( 'Open Navigation' ) }
222
- className="edit-site-layout__view-mode-toggle"
223
- onClick={ () => {
224
- setCanvasMode( 'view' );
225
- // TODO: this is a temporary solution to navigate to the posts list if we are
226
- // come here through `posts list` and are in focus mode editing a template, template part etc..
227
- if (
228
- isPostsList &&
229
- params?.focusMode
230
- ) {
231
- history.push( {
232
- page: 'gutenberg-posts-dashboard',
233
- postType: 'post',
234
- } );
235
- }
236
- } }
252
+ <motion.div
253
+ className="edit-site-editor__view-mode-toggle"
254
+ transition={ transition }
255
+ animate="edit"
256
+ initial="edit"
257
+ whileHover="hover"
258
+ whileTap="tap"
237
259
  >
238
- <SiteIcon className="edit-site-layout__view-mode-toggle-icon" />
239
- </Button>
260
+ <Button
261
+ label={ __( 'Open Navigation' ) }
262
+ showTooltip
263
+ tooltipPosition="middle right"
264
+ onClick={ () => {
265
+ setCanvasMode( 'view' );
266
+ // TODO: this is a temporary solution to navigate to the posts list if we are
267
+ // come here through `posts list` and are in focus mode editing a template, template part etc..
268
+ if (
269
+ isPostsList &&
270
+ params?.focusMode
271
+ ) {
272
+ history.push( {
273
+ page: 'gutenberg-posts-dashboard',
274
+ postType: 'post',
275
+ } );
276
+ }
277
+ } }
278
+ >
279
+ <motion.div
280
+ variants={ siteIconVariants }
281
+ >
282
+ <SiteIcon className="edit-site-editor__view-mode-toggle-icon" />
283
+ </motion.div>
284
+ </Button>
285
+ <motion.div
286
+ className={ clsx(
287
+ 'edit-site-editor__back-icon',
288
+ {
289
+ 'has-site-icon':
290
+ hasSiteIcon,
291
+ }
292
+ ) }
293
+ variants={ toggleHomeIconVariants }
294
+ >
295
+ <Icon icon={ homeButton } />
296
+ </motion.div>
297
+ </motion.div>
240
298
  )
241
299
  }
242
300
  </BackButton>
@@ -1,7 +1,7 @@
1
1
  .edit-site-editor__editor-interface {
2
2
  opacity: 1;
3
3
  transition: opacity 0.1s ease-out;
4
- @include reduce-motion("transition");
4
+ @include reduce-motion( "transition" );
5
5
 
6
6
  &.is-loading {
7
7
  opacity: 0;
@@ -12,8 +12,66 @@
12
12
  box-sizing: border-box;
13
13
  width: $sidebar-width;
14
14
  background-color: $white;
15
- border: 1px dotted $gray-300;
15
+ border: $border-width dotted $gray-300;
16
16
  padding: $grid-unit-30;
17
17
  display: flex;
18
18
  justify-content: center;
19
19
  }
20
+
21
+ .edit-site-editor__view-mode-toggle {
22
+ /* stylelint-disable -- Disable reason: View Transitions not supported properly by stylelint. */
23
+ view-transition-name: toggle;
24
+ /* stylelint-enable */
25
+ top: 0;
26
+ left: 0;
27
+ height: $header-height;
28
+ width: $header-height;
29
+ z-index: 100;
30
+
31
+ .components-button {
32
+ color: $white;
33
+ height: 100%;
34
+ width: 100%;
35
+ border-radius: 0;
36
+ overflow: hidden;
37
+ padding: 0;
38
+ display: flex;
39
+ align-items: center;
40
+ justify-content: center;
41
+ &:hover,
42
+ &:active {
43
+ color: $white;
44
+ }
45
+
46
+ &:focus {
47
+ box-shadow: none;
48
+ }
49
+ }
50
+
51
+ .edit-site-editor__view-mode-toggle-icon {
52
+ svg,
53
+ img {
54
+ background: $gray-900;
55
+ display: block;
56
+ }
57
+ }
58
+ }
59
+
60
+ .edit-site-editor__back-icon {
61
+ position: absolute;
62
+ top: 0;
63
+ left: 0;
64
+ width: 60px;
65
+ height: 60px;
66
+ display: flex;
67
+ align-items: center;
68
+ justify-content: center;
69
+ background-color: hsla(0, 0%, 80%);
70
+ pointer-events: none;
71
+
72
+ &.has-site-icon {
73
+ background-color: hsla(0, 0%, 100%, 0.6);
74
+ -webkit-backdrop-filter: saturate(180%) blur(15px);
75
+ backdrop-filter: saturate(180%) blur(15px);
76
+ }
77
+ }
@@ -16,7 +16,6 @@ const BACKGROUND_DEFAULT_VALUES = {
16
16
  const {
17
17
  useGlobalStyle,
18
18
  useGlobalSetting,
19
- useGlobalStyleLinks,
20
19
  BackgroundPanel: StylesBackgroundPanel,
21
20
  } = unlock( blockEditorPrivateApis );
22
21
 
@@ -42,7 +41,6 @@ export default function BackgroundPanel() {
42
41
  const [ inheritedStyle, setStyle ] = useGlobalStyle( '', undefined, 'all', {
43
42
  shouldDecodeEncode: false,
44
43
  } );
45
- const _links = useGlobalStyleLinks();
46
44
  const [ settings ] = useGlobalSetting( '' );
47
45
 
48
46
  return (
@@ -52,7 +50,6 @@ export default function BackgroundPanel() {
52
50
  onChange={ setStyle }
53
51
  settings={ settings }
54
52
  defaultValues={ BACKGROUND_DEFAULT_VALUES }
55
- themeFileURIs={ _links?.[ 'wp:theme-file' ] }
56
53
  />
57
54
  );
58
55
  }
@@ -26,7 +26,7 @@ import { unlock } from '../../lock-unlock';
26
26
  const { useGlobalSetting } = unlock( blockEditorPrivateApis );
27
27
 
28
28
  function FontFamilies() {
29
- const { baseCustomFonts, modalTabOpen, setModalTabOpen, setNotice } =
29
+ const { baseCustomFonts, modalTabOpen, setModalTabOpen } =
30
30
  useContext( FontLibraryContext );
31
31
  const [ fontFamilies ] = useGlobalSetting( 'typography.fontFamilies' );
32
32
  const [ baseFontFamilies ] = useGlobalSetting(
@@ -69,7 +69,7 @@ function FontFamilies() {
69
69
  _x( 'Theme', 'font source' )
70
70
  }
71
71
  </Subtitle>
72
- <ItemGroup isBordered isSeparated>
72
+ <ItemGroup size="large" isBordered isSeparated>
73
73
  { themeFonts.map( ( font ) => (
74
74
  <FontFamilyItem
75
75
  key={ font.slug }
@@ -87,7 +87,7 @@ function FontFamilies() {
87
87
  _x( 'Custom', 'font source' )
88
88
  }
89
89
  </Subtitle>
90
- <ItemGroup isBordered isSeparated>
90
+ <ItemGroup size="large" isBordered isSeparated>
91
91
  { customFonts.map( ( font ) => (
92
92
  <FontFamilyItem
93
93
  key={ font.slug }
@@ -112,8 +112,6 @@ function FontFamilies() {
112
112
  variant="secondary"
113
113
  __next40pxDefaultSize
114
114
  onClick={ () => {
115
- // Reset notice when opening the modal.
116
- setNotice( null );
117
115
  setModalTabOpen(
118
116
  hasInstalledFonts
119
117
  ? 'installed-fonts'
@@ -54,7 +54,6 @@ function FontLibraryProvider( { children } ) {
54
54
 
55
55
  const [ isInstalling, setIsInstalling ] = useState( false );
56
56
  const [ refreshKey, setRefreshKey ] = useState( 0 );
57
- const [ notice, setNotice ] = useState( null );
58
57
 
59
58
  const refreshLibrary = () => {
60
59
  setRefreshKey( Date.now() );
@@ -139,8 +138,6 @@ function FontLibraryProvider( { children } ) {
139
138
  }, [ modalTabOpen ] );
140
139
 
141
140
  const handleSetLibraryFontSelected = ( font ) => {
142
- setNotice( null );
143
-
144
141
  // If font is null, reset the selected font
145
142
  if ( ! font ) {
146
143
  setLibraryFontSelected( null );
@@ -527,8 +524,6 @@ function FontLibraryProvider( { children } ) {
527
524
  modalTabOpen,
528
525
  setModalTabOpen,
529
526
  refreshLibrary,
530
- notice,
531
- setNotice,
532
527
  saveFontFamilies,
533
528
  isResolvingLibrary,
534
529
  isInstalling,
@@ -25,6 +25,7 @@ import {
25
25
  DropdownMenu,
26
26
  SearchControl,
27
27
  ProgressBar,
28
+ CheckboxControl,
28
29
  } from '@wordpress/components';
29
30
  import { debounce } from '@wordpress/compose';
30
31
  import { sprintf, __, _x } from '@wordpress/i18n';
@@ -62,20 +63,15 @@ function FontCollection( { slug } ) {
62
63
  };
63
64
 
64
65
  const [ selectedFont, setSelectedFont ] = useState( null );
66
+ const [ notice, setNotice ] = useState( false );
65
67
  const [ fontsToInstall, setFontsToInstall ] = useState( [] );
66
68
  const [ page, setPage ] = useState( 1 );
67
69
  const [ filters, setFilters ] = useState( {} );
68
70
  const [ renderConfirmDialog, setRenderConfirmDialog ] = useState(
69
71
  requiresPermission && ! getGoogleFontsPermissionFromStorage()
70
72
  );
71
- const {
72
- collections,
73
- getFontCollection,
74
- installFonts,
75
- isInstalling,
76
- notice,
77
- setNotice,
78
- } = useContext( FontLibraryContext );
73
+ const { collections, getFontCollection, installFonts, isInstalling } =
74
+ useContext( FontLibraryContext );
79
75
  const selectedCollection = collections.find(
80
76
  ( collection ) => collection.slug === slug
81
77
  );
@@ -115,8 +111,7 @@ function FontCollection( { slug } ) {
115
111
 
116
112
  useEffect( () => {
117
113
  setSelectedFont( null );
118
- setNotice( null );
119
- }, [ slug, setNotice ] );
114
+ }, [ slug ] );
120
115
 
121
116
  useEffect( () => {
122
117
  // If the selected fonts change, reset the selected fonts to install
@@ -175,6 +170,25 @@ function FontCollection( { slug } ) {
175
170
  setFontsToInstall( [] );
176
171
  };
177
172
 
173
+ const selectFontCount =
174
+ fontsToInstall.length > 0 ? fontsToInstall[ 0 ]?.fontFace?.length : 0;
175
+
176
+ // Check if any fonts are selected.
177
+ const isIndeterminate =
178
+ selectFontCount > 0 &&
179
+ selectFontCount !== selectedFont?.fontFace?.length;
180
+
181
+ // Check if all fonts are selected.
182
+ const isSelectAllChecked =
183
+ selectFontCount === selectedFont?.fontFace?.length;
184
+
185
+ // Toggle select all fonts.
186
+ const toggleSelectAll = () => {
187
+ const newFonts = isSelectAllChecked ? [] : [ selectedFont ];
188
+
189
+ setFontsToInstall( newFonts );
190
+ };
191
+
178
192
  const handleInstall = async () => {
179
193
  setNotice( null );
180
194
 
@@ -301,6 +315,8 @@ function FontCollection( { slug } ) {
301
315
  </FlexItem>
302
316
  <FlexItem>
303
317
  <SelectControl
318
+ __nextHasNoMarginBottom
319
+ __next40pxDefaultSize
304
320
  label={ __( 'Category' ) }
305
321
  value={ filters.category }
306
322
  onChange={ handleCategoryFilter }
@@ -400,6 +416,14 @@ function FontCollection( { slug } ) {
400
416
  { __( 'Select font variants to install.' ) }
401
417
  </Text>
402
418
  <Spacer margin={ 4 } />
419
+ <CheckboxControl
420
+ className="font-library-modal__select-all"
421
+ label={ __( 'Select all' ) }
422
+ checked={ isSelectAllChecked }
423
+ onChange={ toggleSelectAll }
424
+ indeterminate={ isIndeterminate }
425
+ __nextHasNoMarginBottom
426
+ />
403
427
  <VStack spacing={ 0 }>
404
428
  <Spacer margin={ 8 } />
405
429
  { getSortedFontFaces( selectedFont ).map(
@@ -44,7 +44,7 @@ function FontLibraryModal( {
44
44
  onRequestClose,
45
45
  defaultTabId = 'installed-fonts',
46
46
  } ) {
47
- const { collections, setNotice } = useContext( FontLibraryContext );
47
+ const { collections } = useContext( FontLibraryContext );
48
48
  const canUserCreate = useSelect( ( select ) => {
49
49
  return select( coreStore ).canUser( 'create', {
50
50
  kind: 'postType',
@@ -59,11 +59,6 @@ function FontLibraryModal( {
59
59
  tabs.push( ...tabsFromCollections( collections || [] ) );
60
60
  }
61
61
 
62
- // Reset notice when new tab is selected.
63
- const onSelect = () => {
64
- setNotice( null );
65
- };
66
-
67
62
  return (
68
63
  <Modal
69
64
  title={ __( 'Fonts' ) }
@@ -72,7 +67,7 @@ function FontLibraryModal( {
72
67
  className="font-library-modal"
73
68
  >
74
69
  <div className="font-library-modal__tabs">
75
- <Tabs defaultTabId={ defaultTabId } onSelect={ onSelect }>
70
+ <Tabs defaultTabId={ defaultTabId }>
76
71
  <Tabs.TabList>
77
72
  { tabs.map( ( { id, title } ) => (
78
73
  <Tabs.Tab key={ id } tabId={ id }>