@wordpress/edit-site 4.7.0 → 4.10.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 (248) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/components/add-new-template/add-custom-generic-template-modal.js +84 -0
  3. package/build/components/add-new-template/add-custom-generic-template-modal.js.map +1 -0
  4. package/build/components/add-new-template/add-custom-template-modal.js +224 -0
  5. package/build/components/add-new-template/add-custom-template-modal.js.map +1 -0
  6. package/build/components/add-new-template/new-template.js +94 -33
  7. package/build/components/add-new-template/new-template.js.map +1 -1
  8. package/build/components/add-new-template/utils.js +405 -0
  9. package/build/components/add-new-template/utils.js.map +1 -0
  10. package/build/components/block-editor/block-inspector-button.js.map +1 -1
  11. package/build/components/block-editor/index.js.map +1 -1
  12. package/build/components/code-editor/index.js +17 -4
  13. package/build/components/code-editor/index.js.map +1 -1
  14. package/build/components/edit-template-part-menu-button/index.js.map +1 -1
  15. package/build/components/editor/index.js +16 -0
  16. package/build/components/editor/index.js.map +1 -1
  17. package/build/components/error-boundary/index.js +6 -0
  18. package/build/components/error-boundary/index.js.map +1 -1
  19. package/build/components/global-styles/context-menu.js +6 -3
  20. package/build/components/global-styles/context-menu.js.map +1 -1
  21. package/build/components/global-styles/dimensions-panel.js +2 -6
  22. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  23. package/build/components/global-styles/global-styles-provider.js +4 -2
  24. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  25. package/build/components/global-styles/gradients-palette-panel.js +3 -7
  26. package/build/components/global-styles/gradients-palette-panel.js.map +1 -1
  27. package/build/components/global-styles/hooks.js +11 -2
  28. package/build/components/global-styles/hooks.js.map +1 -1
  29. package/build/components/global-styles/palette.js +2 -1
  30. package/build/components/global-styles/palette.js.map +1 -1
  31. package/build/components/global-styles/screen-block-list.js +4 -1
  32. package/build/components/global-styles/screen-block-list.js.map +1 -1
  33. package/build/components/global-styles/screen-button-color.js +80 -0
  34. package/build/components/global-styles/screen-button-color.js.map +1 -0
  35. package/build/components/global-styles/screen-color-palette.js +13 -17
  36. package/build/components/global-styles/screen-color-palette.js.map +1 -1
  37. package/build/components/global-styles/screen-colors.js +56 -8
  38. package/build/components/global-styles/screen-colors.js.map +1 -1
  39. package/build/components/global-styles/screen-link-color.js +48 -14
  40. package/build/components/global-styles/screen-link-color.js.map +1 -1
  41. package/build/components/global-styles/screen-root.js +4 -2
  42. package/build/components/global-styles/screen-root.js.map +1 -1
  43. package/build/components/global-styles/screen-style-variations.js +9 -1
  44. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  45. package/build/components/global-styles/screen-typography-element.js +4 -0
  46. package/build/components/global-styles/screen-typography-element.js.map +1 -1
  47. package/build/components/global-styles/screen-typography.js +9 -1
  48. package/build/components/global-styles/screen-typography.js.map +1 -1
  49. package/build/components/global-styles/ui.js +11 -0
  50. package/build/components/global-styles/ui.js.map +1 -1
  51. package/build/components/global-styles/use-global-styles-output.js +199 -30
  52. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  53. package/build/components/global-styles/utils.js +4 -2
  54. package/build/components/global-styles/utils.js.map +1 -1
  55. package/build/components/header/index.js +28 -10
  56. package/build/components/header/index.js.map +1 -1
  57. package/build/components/header/mode-switcher/index.js.map +1 -1
  58. package/build/components/header/more-menu/copy-content-menu-item.js +1 -1
  59. package/build/components/header/more-menu/copy-content-menu-item.js.map +1 -1
  60. package/build/components/header/more-menu/site-export.js +4 -1
  61. package/build/components/header/more-menu/site-export.js.map +1 -1
  62. package/build/components/header/undo-redo/redo.js +13 -4
  63. package/build/components/header/undo-redo/redo.js.map +1 -1
  64. package/build/components/header/undo-redo/undo.js +13 -4
  65. package/build/components/header/undo-redo/undo.js.map +1 -1
  66. package/build/components/keyboard-shortcut-help-modal/config.js +17 -0
  67. package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  68. package/build/components/keyboard-shortcut-help-modal/index.js +1 -3
  69. package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  70. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  71. package/build/components/list/actions/index.js.map +1 -1
  72. package/build/components/list/actions/rename-menu-item.js.map +1 -1
  73. package/build/components/list/added-by.js.map +1 -1
  74. package/build/components/navigation-sidebar/index.js.map +1 -1
  75. package/build/components/save-button/index.js.map +1 -1
  76. package/build/components/sidebar/index.js.map +1 -1
  77. package/build/components/sidebar/navigation-menu-sidebar/navigation-inspector.js.map +1 -1
  78. package/build/components/sidebar/template-card/index.js +19 -7
  79. package/build/components/sidebar/template-card/index.js.map +1 -1
  80. package/build/components/sidebar/template-card/template-actions.js +64 -0
  81. package/build/components/sidebar/template-card/template-actions.js.map +1 -0
  82. package/build/components/sidebar/template-card/template-areas.js.map +1 -1
  83. package/build/components/template-details/edit-template-title.js +11 -3
  84. package/build/components/template-details/edit-template-title.js.map +1 -1
  85. package/build/components/template-details/index.js +1 -20
  86. package/build/components/template-details/index.js.map +1 -1
  87. package/build/components/template-details/template-areas.js.map +1 -1
  88. package/build/components/template-part-converter/index.js.map +1 -1
  89. package/build/components/url-query-controller/index.js.map +1 -1
  90. package/build/store/actions.js.map +1 -1
  91. package/build/store/selectors.js +4 -1
  92. package/build/store/selectors.js.map +1 -1
  93. package/build-module/components/add-new-template/add-custom-generic-template-modal.js +77 -0
  94. package/build-module/components/add-new-template/add-custom-generic-template-modal.js.map +1 -0
  95. package/build-module/components/add-new-template/add-custom-template-modal.js +209 -0
  96. package/build-module/components/add-new-template/add-custom-template-modal.js.map +1 -0
  97. package/build-module/components/add-new-template/new-template.js +93 -34
  98. package/build-module/components/add-new-template/new-template.js.map +1 -1
  99. package/build-module/components/add-new-template/utils.js +365 -0
  100. package/build-module/components/add-new-template/utils.js.map +1 -0
  101. package/build-module/components/block-editor/block-inspector-button.js.map +1 -1
  102. package/build-module/components/block-editor/index.js.map +1 -1
  103. package/build-module/components/code-editor/index.js +18 -5
  104. package/build-module/components/code-editor/index.js.map +1 -1
  105. package/build-module/components/edit-template-part-menu-button/index.js.map +1 -1
  106. package/build-module/components/editor/index.js +16 -0
  107. package/build-module/components/editor/index.js.map +1 -1
  108. package/build-module/components/error-boundary/index.js +5 -0
  109. package/build-module/components/error-boundary/index.js.map +1 -1
  110. package/build-module/components/global-styles/context-menu.js +6 -3
  111. package/build-module/components/global-styles/context-menu.js.map +1 -1
  112. package/build-module/components/global-styles/dimensions-panel.js +2 -6
  113. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  114. package/build-module/components/global-styles/global-styles-provider.js +4 -2
  115. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  116. package/build-module/components/global-styles/gradients-palette-panel.js +3 -5
  117. package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -1
  118. package/build-module/components/global-styles/hooks.js +11 -2
  119. package/build-module/components/global-styles/hooks.js.map +1 -1
  120. package/build-module/components/global-styles/palette.js +2 -1
  121. package/build-module/components/global-styles/palette.js.map +1 -1
  122. package/build-module/components/global-styles/screen-block-list.js +4 -1
  123. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  124. package/build-module/components/global-styles/screen-button-color.js +67 -0
  125. package/build-module/components/global-styles/screen-button-color.js.map +1 -0
  126. package/build-module/components/global-styles/screen-color-palette.js +14 -19
  127. package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
  128. package/build-module/components/global-styles/screen-colors.js +57 -9
  129. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  130. package/build-module/components/global-styles/screen-link-color.js +47 -14
  131. package/build-module/components/global-styles/screen-link-color.js.map +1 -1
  132. package/build-module/components/global-styles/screen-root.js +4 -2
  133. package/build-module/components/global-styles/screen-root.js.map +1 -1
  134. package/build-module/components/global-styles/screen-style-variations.js +9 -1
  135. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  136. package/build-module/components/global-styles/screen-typography-element.js +4 -0
  137. package/build-module/components/global-styles/screen-typography-element.js.map +1 -1
  138. package/build-module/components/global-styles/screen-typography.js +10 -2
  139. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  140. package/build-module/components/global-styles/ui.js +10 -0
  141. package/build-module/components/global-styles/ui.js.map +1 -1
  142. package/build-module/components/global-styles/use-global-styles-output.js +198 -32
  143. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  144. package/build-module/components/global-styles/utils.js +5 -3
  145. package/build-module/components/global-styles/utils.js.map +1 -1
  146. package/build-module/components/header/index.js +29 -11
  147. package/build-module/components/header/index.js.map +1 -1
  148. package/build-module/components/header/mode-switcher/index.js.map +1 -1
  149. package/build-module/components/header/more-menu/copy-content-menu-item.js +1 -1
  150. package/build-module/components/header/more-menu/copy-content-menu-item.js.map +1 -1
  151. package/build-module/components/header/more-menu/site-export.js +4 -1
  152. package/build-module/components/header/more-menu/site-export.js.map +1 -1
  153. package/build-module/components/header/undo-redo/redo.js +9 -3
  154. package/build-module/components/header/undo-redo/redo.js.map +1 -1
  155. package/build-module/components/header/undo-redo/undo.js +9 -3
  156. package/build-module/components/header/undo-redo/undo.js.map +1 -1
  157. package/build-module/components/keyboard-shortcut-help-modal/config.js +17 -0
  158. package/build-module/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  159. package/build-module/components/keyboard-shortcut-help-modal/index.js +1 -2
  160. package/build-module/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  161. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  162. package/build-module/components/list/actions/index.js.map +1 -1
  163. package/build-module/components/list/actions/rename-menu-item.js.map +1 -1
  164. package/build-module/components/list/added-by.js.map +1 -1
  165. package/build-module/components/navigation-sidebar/index.js.map +1 -1
  166. package/build-module/components/save-button/index.js.map +1 -1
  167. package/build-module/components/sidebar/index.js.map +1 -1
  168. package/build-module/components/sidebar/navigation-menu-sidebar/navigation-inspector.js.map +1 -1
  169. package/build-module/components/sidebar/template-card/index.js +18 -7
  170. package/build-module/components/sidebar/template-card/index.js.map +1 -1
  171. package/build-module/components/sidebar/template-card/template-actions.js +49 -0
  172. package/build-module/components/sidebar/template-card/template-actions.js.map +1 -0
  173. package/build-module/components/sidebar/template-card/template-areas.js.map +1 -1
  174. package/build-module/components/template-details/edit-template-title.js +12 -3
  175. package/build-module/components/template-details/edit-template-title.js.map +1 -1
  176. package/build-module/components/template-details/index.js +2 -21
  177. package/build-module/components/template-details/index.js.map +1 -1
  178. package/build-module/components/template-details/template-areas.js.map +1 -1
  179. package/build-module/components/template-part-converter/index.js.map +1 -1
  180. package/build-module/components/url-query-controller/index.js.map +1 -1
  181. package/build-module/store/actions.js.map +1 -1
  182. package/build-module/store/selectors.js +5 -2
  183. package/build-module/store/selectors.js.map +1 -1
  184. package/build-style/style-rtl.css +188 -42
  185. package/build-style/style.css +188 -42
  186. package/package.json +29 -29
  187. package/src/components/add-new-template/add-custom-generic-template-modal.js +97 -0
  188. package/src/components/add-new-template/add-custom-template-modal.js +265 -0
  189. package/src/components/add-new-template/new-template.js +194 -70
  190. package/src/components/add-new-template/style.scss +137 -0
  191. package/src/components/add-new-template/utils.js +369 -0
  192. package/src/components/block-editor/block-inspector-button.js +2 -3
  193. package/src/components/block-editor/index.js +4 -9
  194. package/src/components/code-editor/index.js +15 -5
  195. package/src/components/edit-template-part-menu-button/index.js +2 -3
  196. package/src/components/editor/index.js +15 -5
  197. package/src/components/error-boundary/index.js +5 -0
  198. package/src/components/global-styles/context-menu.js +3 -0
  199. package/src/components/global-styles/dimensions-panel.js +2 -7
  200. package/src/components/global-styles/global-styles-provider.js +12 -17
  201. package/src/components/global-styles/gradients-palette-panel.js +2 -5
  202. package/src/components/global-styles/hooks.js +20 -3
  203. package/src/components/global-styles/palette.js +4 -1
  204. package/src/components/global-styles/screen-block-list.js +14 -5
  205. package/src/components/global-styles/screen-button-color.js +102 -0
  206. package/src/components/global-styles/screen-color-palette.js +25 -27
  207. package/src/components/global-styles/screen-colors.js +58 -7
  208. package/src/components/global-styles/screen-link-color.js +65 -23
  209. package/src/components/global-styles/screen-root.js +12 -5
  210. package/src/components/global-styles/screen-style-variations.js +10 -4
  211. package/src/components/global-styles/screen-typography-element.js +4 -0
  212. package/src/components/global-styles/screen-typography.js +17 -2
  213. package/src/components/global-styles/style.scss +14 -8
  214. package/src/components/global-styles/test/use-global-styles-output.js +250 -16
  215. package/src/components/global-styles/ui.js +13 -0
  216. package/src/components/global-styles/use-global-styles-output.js +246 -32
  217. package/src/components/global-styles/utils.js +5 -2
  218. package/src/components/header/index.js +38 -13
  219. package/src/components/header/mode-switcher/index.js +4 -4
  220. package/src/components/header/more-menu/copy-content-menu-item.js +3 -4
  221. package/src/components/header/more-menu/site-export.js +5 -3
  222. package/src/components/header/style.scss +53 -5
  223. package/src/components/header/undo-redo/redo.js +6 -1
  224. package/src/components/header/undo-redo/undo.js +6 -1
  225. package/src/components/keyboard-shortcut-help-modal/config.js +12 -0
  226. package/src/components/keyboard-shortcut-help-modal/index.js +1 -2
  227. package/src/components/keyboard-shortcut-help-modal/style.scss +0 -5
  228. package/src/components/keyboard-shortcuts/index.js +6 -10
  229. package/src/components/list/actions/index.js +2 -3
  230. package/src/components/list/actions/rename-menu-item.js +4 -6
  231. package/src/components/list/added-by.js +4 -3
  232. package/src/components/list/style.scss +0 -8
  233. package/src/components/navigation-sidebar/index.js +2 -4
  234. package/src/components/save-button/index.js +2 -4
  235. package/src/components/sidebar/index.js +6 -6
  236. package/src/components/sidebar/navigation-menu-sidebar/navigation-inspector.js +6 -9
  237. package/src/components/sidebar/template-card/index.js +17 -9
  238. package/src/components/sidebar/template-card/style.scss +49 -35
  239. package/src/components/sidebar/template-card/template-actions.js +43 -0
  240. package/src/components/sidebar/template-card/template-areas.js +6 -6
  241. package/src/components/template-details/edit-template-title.js +10 -2
  242. package/src/components/template-details/index.js +4 -21
  243. package/src/components/template-details/template-areas.js +6 -6
  244. package/src/components/template-part-converter/index.js +2 -3
  245. package/src/components/test/error-boundary.js +38 -0
  246. package/src/components/url-query-controller/index.js +2 -3
  247. package/src/store/actions.js +257 -233
  248. package/src/store/selectors.js +19 -14
@@ -7,6 +7,7 @@ import { __EXPERIMENTAL_ELEMENTS as ELEMENTS } from '@wordpress/blocks';
7
7
  * Internal dependencies
8
8
  */
9
9
  import {
10
+ getLayoutStyles,
10
11
  getNodesWithSettings,
11
12
  getNodesWithStyles,
12
13
  toCustomProperties,
@@ -40,6 +41,20 @@ describe( 'global styles renderer', () => {
40
41
  fontSize: '23px',
41
42
  },
42
43
  },
44
+ link: {
45
+ ':hover': {
46
+ color: {
47
+ background: 'green',
48
+ text: 'yellow',
49
+ },
50
+ },
51
+ ':focus': {
52
+ color: {
53
+ background: 'green',
54
+ text: 'yellow',
55
+ },
56
+ },
57
+ },
43
58
  },
44
59
  },
45
60
  },
@@ -49,6 +64,18 @@ describe( 'global styles renderer', () => {
49
64
  background: 'yellow',
50
65
  text: 'yellow',
51
66
  },
67
+ ':hover': {
68
+ color: {
69
+ background: 'hotpink',
70
+ text: 'black',
71
+ },
72
+ },
73
+ ':focus': {
74
+ color: {
75
+ background: 'hotpink',
76
+ text: 'black',
77
+ },
78
+ },
52
79
  },
53
80
  },
54
81
  },
@@ -58,6 +85,7 @@ describe( 'global styles renderer', () => {
58
85
  selector: '.my-heading1, .my-heading2',
59
86
  },
60
87
  };
88
+
61
89
  expect( getNodesWithStyles( tree, blockSelectors ) ).toEqual( [
62
90
  {
63
91
  styles: {
@@ -74,6 +102,18 @@ describe( 'global styles renderer', () => {
74
102
  background: 'yellow',
75
103
  text: 'yellow',
76
104
  },
105
+ ':hover': {
106
+ color: {
107
+ background: 'hotpink',
108
+ text: 'black',
109
+ },
110
+ },
111
+ ':focus': {
112
+ color: {
113
+ background: 'hotpink',
114
+ text: 'black',
115
+ },
116
+ },
77
117
  },
78
118
  selector: ELEMENTS.link,
79
119
  },
@@ -102,6 +142,23 @@ describe( 'global styles renderer', () => {
102
142
  },
103
143
  selector: '.my-heading1 h2, .my-heading2 h2',
104
144
  },
145
+ {
146
+ styles: {
147
+ ':hover': {
148
+ color: {
149
+ background: 'green',
150
+ text: 'yellow',
151
+ },
152
+ },
153
+ ':focus': {
154
+ color: {
155
+ background: 'green',
156
+ text: 'yellow',
157
+ },
158
+ },
159
+ },
160
+ selector: '.my-heading1 a, .my-heading2 a',
161
+ },
105
162
  ] );
106
163
  } );
107
164
  } );
@@ -318,6 +375,21 @@ describe( 'global styles renderer', () => {
318
375
  fontSize: '42px',
319
376
  },
320
377
  },
378
+ link: {
379
+ color: {
380
+ text: 'blue',
381
+ },
382
+ ':hover': {
383
+ color: {
384
+ text: 'orange',
385
+ },
386
+ },
387
+ ':focus': {
388
+ color: {
389
+ text: 'orange',
390
+ },
391
+ },
392
+ },
321
393
  },
322
394
  blocks: {
323
395
  'core/group': {
@@ -345,6 +417,16 @@ describe( 'global styles renderer', () => {
345
417
  color: {
346
418
  text: 'hotpink',
347
419
  },
420
+ ':hover': {
421
+ color: {
422
+ text: 'red',
423
+ },
424
+ },
425
+ ':focus': {
426
+ color: {
427
+ text: 'red',
428
+ },
429
+ },
348
430
  },
349
431
  },
350
432
  },
@@ -358,30 +440,182 @@ describe( 'global styles renderer', () => {
358
440
  },
359
441
  'core/heading': {
360
442
  selector: 'h1,h2,h3,h4,h5,h6',
361
- elements: {
362
- link:
363
- 'h1 ' +
364
- ELEMENTS.link +
365
- ',h2 ' +
366
- ELEMENTS.link +
367
- ',h3 ' +
368
- ELEMENTS.link +
369
- ',h4 ' +
370
- ELEMENTS.link +
371
- ',h5 ' +
372
- ELEMENTS.link +
373
- ',h6 ' +
374
- ELEMENTS.link,
375
- },
376
443
  },
377
444
  };
378
445
 
379
446
  expect( toStyles( tree, blockSelectors ) ).toEqual(
380
447
  'body {margin: 0;}' +
381
- 'body{background-color: red;margin: 10px;padding: 10px;}h1{font-size: 42px;}.wp-block-group{margin-top: 10px;margin-right: 20px;margin-bottom: 30px;margin-left: 40px;padding-top: 11px;padding-right: 22px;padding-bottom: 33px;padding-left: 44px;}h1,h2,h3,h4,h5,h6{color: orange;}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color: hotpink;}' +
448
+ 'body{background-color: red;margin: 10px;padding: 10px;}h1{font-size: 42px;}a{color: blue;}a:hover{color: orange;}a:focus{color: orange;}.wp-block-group{margin-top: 10px;margin-right: 20px;margin-bottom: 30px;margin-left: 40px;padding-top: 11px;padding-right: 22px;padding-bottom: 33px;padding-left: 44px;}h1,h2,h3,h4,h5,h6{color: orange;}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color: hotpink;}h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{color: red;}h1 a:focus,h2 a:focus,h3 a:focus,h4 a:focus,h5 a:focus,h6 a:focus{color: red;}' +
382
449
  '.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }' +
383
450
  '.has-white-color{color: var(--wp--preset--color--white) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}h1.has-blue-color,h2.has-blue-color,h3.has-blue-color,h4.has-blue-color,h5.has-blue-color,h6.has-blue-color{color: var(--wp--preset--color--blue) !important;}h1.has-blue-background-color,h2.has-blue-background-color,h3.has-blue-background-color,h4.has-blue-background-color,h5.has-blue-background-color,h6.has-blue-background-color{background-color: var(--wp--preset--color--blue) !important;}h1.has-blue-border-color,h2.has-blue-border-color,h3.has-blue-border-color,h4.has-blue-border-color,h5.has-blue-border-color,h6.has-blue-border-color{border-color: var(--wp--preset--color--blue) !important;}'
384
451
  );
385
452
  } );
386
453
  } );
454
+
455
+ describe( 'getLayoutStyles', () => {
456
+ const layoutDefinitionsTree = {
457
+ settings: {
458
+ layout: {
459
+ definitions: {
460
+ default: {
461
+ name: 'default',
462
+ slug: 'flow',
463
+ className: 'is-layout-flow',
464
+ baseStyles: [
465
+ {
466
+ selector: ' > .alignleft',
467
+ rules: {
468
+ float: 'left',
469
+ 'margin-inline-start': '0',
470
+ 'margin-inline-end': '2em',
471
+ },
472
+ },
473
+ {
474
+ selector: ' > .alignright',
475
+ rules: {
476
+ float: 'right',
477
+ 'margin-inline-start': '2em',
478
+ 'margin-inline-end': '0',
479
+ },
480
+ },
481
+ {
482
+ selector: ' > .aligncenter',
483
+ rules: {
484
+ 'margin-left': 'auto !important',
485
+ 'margin-right': 'auto !important',
486
+ },
487
+ },
488
+ ],
489
+ spacingStyles: [
490
+ {
491
+ selector: ' > *',
492
+ rules: {
493
+ 'margin-block-start': '0',
494
+ 'margin-block-end': '0',
495
+ },
496
+ },
497
+ {
498
+ selector: ' > * + *',
499
+ rules: {
500
+ 'margin-block-start': null,
501
+ 'margin-block-end': '0',
502
+ },
503
+ },
504
+ ],
505
+ },
506
+ flex: {
507
+ name: 'flex',
508
+ slug: 'flex',
509
+ className: 'is-layout-flex',
510
+ displayMode: 'flex',
511
+ baseStyles: [
512
+ {
513
+ selector: '',
514
+ rules: {
515
+ 'flex-wrap': 'wrap',
516
+ 'align-items': 'center',
517
+ },
518
+ },
519
+ {
520
+ selector: ' > *',
521
+ rules: {
522
+ margin: '0',
523
+ },
524
+ },
525
+ ],
526
+ spacingStyles: [
527
+ {
528
+ selector: '',
529
+ rules: {
530
+ gap: null,
531
+ },
532
+ },
533
+ ],
534
+ },
535
+ },
536
+ },
537
+ },
538
+ };
539
+
540
+ it( 'should return fallback gap flex layout style, and all base styles, if block styles are enabled and blockGap is disabled', () => {
541
+ const style = { spacing: { blockGap: '12px' } };
542
+
543
+ const layoutStyles = getLayoutStyles( {
544
+ tree: layoutDefinitionsTree,
545
+ style,
546
+ selector: 'body',
547
+ hasBlockGapSupport: false,
548
+ hasFallbackGapSupport: true,
549
+ } );
550
+
551
+ expect( layoutStyles ).toEqual(
552
+ 'body .is-layout-flex { gap: 0.5em; }body .is-layout-flow > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-flow > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-flow > .aligncenter { margin-left: auto !important; margin-right: auto !important; }body .is-layout-flex { display:flex; }body .is-layout-flex { flex-wrap: wrap; align-items: center; }body .is-layout-flex > * { margin: 0; }'
553
+ );
554
+ } );
555
+
556
+ it( 'should return fallback gap layout styles, and base styles, if blockGap is enabled, but there is no blockGap value', () => {
557
+ const style = {};
558
+
559
+ const layoutStyles = getLayoutStyles( {
560
+ tree: layoutDefinitionsTree,
561
+ style,
562
+ selector: 'body',
563
+ hasBlockGapSupport: true,
564
+ hasFallbackGapSupport: true,
565
+ } );
566
+
567
+ expect( layoutStyles ).toEqual(
568
+ 'body .is-layout-flow > * { margin-block-start: 0; margin-block-end: 0; }body .is-layout-flow > * + * { margin-block-start: 0.5em; margin-block-end: 0; }body .is-layout-flex { gap: 0.5em; }body { --wp--style--block-gap: 0.5em; }body .is-layout-flow > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-flow > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-flow > .aligncenter { margin-left: auto !important; margin-right: auto !important; }body .is-layout-flex { display:flex; }body .is-layout-flex { flex-wrap: wrap; align-items: center; }body .is-layout-flex > * { margin: 0; }'
569
+ );
570
+ } );
571
+
572
+ it( 'should return real gap layout style if blockGap is enabled, and base styles', () => {
573
+ const style = { spacing: { blockGap: '12px' } };
574
+
575
+ const layoutStyles = getLayoutStyles( {
576
+ tree: layoutDefinitionsTree,
577
+ style,
578
+ selector: 'body',
579
+ hasBlockGapSupport: true,
580
+ hasFallbackGapSupport: true,
581
+ } );
582
+
583
+ expect( layoutStyles ).toEqual(
584
+ 'body .is-layout-flow > * { margin-block-start: 0; margin-block-end: 0; }body .is-layout-flow > * + * { margin-block-start: 12px; margin-block-end: 0; }body .is-layout-flex { gap: 12px; }body { --wp--style--block-gap: 12px; }body .is-layout-flow > .alignleft { float: left; margin-inline-start: 0; margin-inline-end: 2em; }body .is-layout-flow > .alignright { float: right; margin-inline-start: 2em; margin-inline-end: 0; }body .is-layout-flow > .aligncenter { margin-left: auto !important; margin-right: auto !important; }body .is-layout-flex { display:flex; }body .is-layout-flex { flex-wrap: wrap; align-items: center; }body .is-layout-flex > * { margin: 0; }'
585
+ );
586
+ } );
587
+
588
+ it( 'should return real gap layout style if blockGap is enabled', () => {
589
+ const style = { spacing: { blockGap: '12px' } };
590
+
591
+ const layoutStyles = getLayoutStyles( {
592
+ tree: layoutDefinitionsTree,
593
+ style,
594
+ selector: '.wp-block-group',
595
+ hasBlockGapSupport: true,
596
+ hasFallbackGapSupport: true,
597
+ } );
598
+
599
+ expect( layoutStyles ).toEqual(
600
+ '.wp-block-group.is-layout-flow > * { margin-block-start: 0; margin-block-end: 0; }.wp-block-group.is-layout-flow > * + * { margin-block-start: 12px; margin-block-end: 0; }.wp-block-group.is-layout-flex { gap: 12px; }'
601
+ );
602
+ } );
603
+
604
+ it( 'should return fallback gap flex layout style for a block if blockGap is disabled, and a fallback value is provided', () => {
605
+ const style = { spacing: { blockGap: '12px' } };
606
+
607
+ const layoutStyles = getLayoutStyles( {
608
+ tree: layoutDefinitionsTree,
609
+ style,
610
+ selector: '.wp-block-group',
611
+ hasBlockGapSupport: false, // This means that the fallback value will be used instead of the "real" one.
612
+ hasFallbackGapSupport: true,
613
+ fallbackGapValue: '2em',
614
+ } );
615
+
616
+ expect( layoutStyles ).toEqual(
617
+ '.wp-block-group.is-layout-flex { gap: 2em; }'
618
+ );
619
+ } );
620
+ } );
387
621
  } );
@@ -20,6 +20,7 @@ import ScreenColorPalette from './screen-color-palette';
20
20
  import ScreenBackgroundColor from './screen-background-color';
21
21
  import ScreenTextColor from './screen-text-color';
22
22
  import ScreenLinkColor from './screen-link-color';
23
+ import ScreenButtonColor from './screen-button-color';
23
24
  import ScreenLayout from './screen-layout';
24
25
  import ScreenStyleVariations from './screen-style-variations';
25
26
 
@@ -58,6 +59,12 @@ function ContextScreens( { name } ) {
58
59
  <ScreenTypographyElement name={ name } element="link" />
59
60
  </GlobalStylesNavigationScreen>
60
61
 
62
+ <GlobalStylesNavigationScreen
63
+ path={ parentMenu + '/typography/button' }
64
+ >
65
+ <ScreenTypographyElement name={ name } element="button" />
66
+ </GlobalStylesNavigationScreen>
67
+
61
68
  <GlobalStylesNavigationScreen path={ parentMenu + '/colors' }>
62
69
  <ScreenColors name={ name } />
63
70
  </GlobalStylesNavigationScreen>
@@ -82,6 +89,12 @@ function ContextScreens( { name } ) {
82
89
  <ScreenLinkColor name={ name } />
83
90
  </GlobalStylesNavigationScreen>
84
91
 
92
+ <GlobalStylesNavigationScreen
93
+ path={ parentMenu + '/colors/button' }
94
+ >
95
+ <ScreenButtonColor name={ name } />
96
+ </GlobalStylesNavigationScreen>
97
+
85
98
  <GlobalStylesNavigationScreen path={ parentMenu + '/layout' }>
86
99
  <ScreenLayout name={ name } />
87
100
  </GlobalStylesNavigationScreen>