@wordpress/edit-site 3.0.2 → 3.0.3

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 (252) hide show
  1. package/README.md +1 -1
  2. package/build/components/block-editor/back-button.js +60 -0
  3. package/build/components/block-editor/back-button.js.map +1 -0
  4. package/build/components/block-editor/index.js +18 -4
  5. package/build/components/block-editor/index.js.map +1 -1
  6. package/build/components/edit-template-part-menu-button/index.js +63 -0
  7. package/build/components/edit-template-part-menu-button/index.js.map +1 -0
  8. package/build/components/editor/global-styles-provider.js +1 -1
  9. package/build/components/editor/global-styles-provider.js.map +1 -1
  10. package/build/components/editor/index.js +7 -7
  11. package/build/components/editor/index.js.map +1 -1
  12. package/build/components/editor/utils.js +1 -1
  13. package/build/components/editor/utils.js.map +1 -1
  14. package/build/components/{sidebar → global-styles}/border-panel.js +0 -0
  15. package/build/components/global-styles/border-panel.js.map +1 -0
  16. package/build/components/{sidebar → global-styles}/color-palette-panel.js +4 -2
  17. package/build/components/global-styles/color-palette-panel.js.map +1 -0
  18. package/build/components/{sidebar → global-styles}/color-panel.js +7 -11
  19. package/build/components/global-styles/color-panel.js.map +1 -0
  20. package/build/components/global-styles/context-menu.js +58 -0
  21. package/build/components/global-styles/context-menu.js.map +1 -0
  22. package/build/components/{sidebar → global-styles}/dimensions-panel.js +6 -7
  23. package/build/components/global-styles/dimensions-panel.js.map +1 -0
  24. package/build/components/global-styles/header.js +54 -0
  25. package/build/components/global-styles/header.js.map +1 -0
  26. package/build/components/global-styles/index.js +89 -0
  27. package/build/components/global-styles/index.js.map +1 -0
  28. package/build/components/global-styles/navigation-button.js +43 -0
  29. package/build/components/global-styles/navigation-button.js.map +1 -0
  30. package/build/components/global-styles/palette.js +57 -0
  31. package/build/components/global-styles/palette.js.map +1 -0
  32. package/build/components/global-styles/preview.js +59 -0
  33. package/build/components/global-styles/preview.js.map +1 -0
  34. package/build/components/global-styles/screen-block-list.js +76 -0
  35. package/build/components/global-styles/screen-block-list.js.map +1 -0
  36. package/build/components/global-styles/screen-block.js +45 -0
  37. package/build/components/global-styles/screen-block.js.map +1 -0
  38. package/build/components/global-styles/screen-color-palette.js +48 -0
  39. package/build/components/global-styles/screen-color-palette.js.map +1 -0
  40. package/build/components/global-styles/screen-colors.js +51 -0
  41. package/build/components/global-styles/screen-colors.js.map +1 -0
  42. package/build/components/global-styles/screen-layout.js +60 -0
  43. package/build/components/global-styles/screen-layout.js.map +1 -0
  44. package/build/components/global-styles/screen-root.js +44 -0
  45. package/build/components/global-styles/screen-root.js.map +1 -0
  46. package/build/components/global-styles/screen-typography.js +50 -0
  47. package/build/components/global-styles/screen-typography.js.map +1 -0
  48. package/build/components/global-styles/subtitle.js +25 -0
  49. package/build/components/global-styles/subtitle.js.map +1 -0
  50. package/build/components/{sidebar → global-styles}/typography-panel.js +1 -3
  51. package/build/components/global-styles/typography-panel.js.map +1 -0
  52. package/build/components/header/plugin-more-menu-item/index.js +82 -0
  53. package/build/components/header/plugin-more-menu-item/index.js.map +1 -0
  54. package/build/components/header/plugin-sidebar-more-menu-item/index.js +75 -0
  55. package/build/components/header/plugin-sidebar-more-menu-item/index.js.map +1 -0
  56. package/build/components/header/undo-redo/redo.js +1 -1
  57. package/build/components/header/undo-redo/redo.js.map +1 -1
  58. package/build/components/header/undo-redo/undo.js +1 -1
  59. package/build/components/header/undo-redo/undo.js.map +1 -1
  60. package/build/components/keyboard-shortcuts/index.js +2 -10
  61. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  62. package/build/components/navigation-sidebar/index.js +1 -1
  63. package/build/components/navigation-sidebar/index.js.map +1 -1
  64. package/build/components/navigation-sidebar/navigation-panel/constants.js +10 -10
  65. package/build/components/navigation-sidebar/navigation-panel/constants.js.map +1 -1
  66. package/build/components/save-button/index.js +1 -1
  67. package/build/components/save-button/index.js.map +1 -1
  68. package/build/components/secondary-sidebar/inserter-sidebar.js +2 -1
  69. package/build/components/secondary-sidebar/inserter-sidebar.js.map +1 -1
  70. package/build/components/sidebar/global-styles-sidebar.js +11 -161
  71. package/build/components/sidebar/global-styles-sidebar.js.map +1 -1
  72. package/build/components/sidebar/index.js +1 -6
  73. package/build/components/sidebar/index.js.map +1 -1
  74. package/build/components/sidebar/plugin-sidebar/index.js +95 -0
  75. package/build/components/sidebar/plugin-sidebar/index.js.map +1 -0
  76. package/build/components/template-details/index.js +12 -6
  77. package/build/components/template-details/index.js.map +1 -1
  78. package/build/components/template-details/template-areas.js +73 -0
  79. package/build/components/template-details/template-areas.js.map +1 -0
  80. package/build/components/template-part-converter/index.js +1 -1
  81. package/build/components/template-part-converter/index.js.map +1 -1
  82. package/build/components/url-query-controller/index.js +1 -1
  83. package/build/components/url-query-controller/index.js.map +1 -1
  84. package/build/index.js +24 -0
  85. package/build/index.js.map +1 -1
  86. package/build/store/actions.js +54 -1
  87. package/build/store/actions.js.map +1 -1
  88. package/build/store/constants.js +19 -1
  89. package/build/store/constants.js.map +1 -1
  90. package/build/store/reducer.js +16 -7
  91. package/build/store/reducer.js.map +1 -1
  92. package/build/store/selectors.js +91 -9
  93. package/build/store/selectors.js.map +1 -1
  94. package/build-module/components/block-editor/back-button.js +48 -0
  95. package/build-module/components/block-editor/back-button.js.map +1 -0
  96. package/build-module/components/block-editor/index.js +15 -4
  97. package/build-module/components/block-editor/index.js.map +1 -1
  98. package/build-module/components/edit-template-part-menu-button/index.js +49 -0
  99. package/build-module/components/edit-template-part-menu-button/index.js.map +1 -0
  100. package/build-module/components/editor/global-styles-provider.js +1 -1
  101. package/build-module/components/editor/global-styles-provider.js.map +1 -1
  102. package/build-module/components/editor/index.js +4 -5
  103. package/build-module/components/editor/index.js.map +1 -1
  104. package/build-module/components/editor/utils.js +1 -1
  105. package/build-module/components/editor/utils.js.map +1 -1
  106. package/build-module/components/{sidebar → global-styles}/border-panel.js +0 -0
  107. package/build-module/components/global-styles/border-panel.js.map +1 -0
  108. package/build-module/components/{sidebar → global-styles}/color-palette-panel.js +4 -2
  109. package/build-module/components/global-styles/color-palette-panel.js.map +1 -0
  110. package/build-module/components/{sidebar → global-styles}/color-panel.js +8 -12
  111. package/build-module/components/global-styles/color-panel.js.map +1 -0
  112. package/build-module/components/global-styles/context-menu.js +41 -0
  113. package/build-module/components/global-styles/context-menu.js.map +1 -0
  114. package/build-module/components/{sidebar → global-styles}/dimensions-panel.js +6 -7
  115. package/build-module/components/global-styles/dimensions-panel.js.map +1 -0
  116. package/build-module/components/global-styles/header.js +41 -0
  117. package/build-module/components/global-styles/header.js.map +1 -0
  118. package/build-module/components/global-styles/index.js +70 -0
  119. package/build-module/components/global-styles/index.js.map +1 -0
  120. package/build-module/components/global-styles/navigation-button.js +31 -0
  121. package/build-module/components/global-styles/navigation-button.js.map +1 -0
  122. package/build-module/components/global-styles/palette.js +43 -0
  123. package/build-module/components/global-styles/palette.js.map +1 -0
  124. package/build-module/components/global-styles/preview.js +50 -0
  125. package/build-module/components/global-styles/preview.js.map +1 -0
  126. package/build-module/components/global-styles/screen-block-list.js +58 -0
  127. package/build-module/components/global-styles/screen-block-list.js.map +1 -0
  128. package/build-module/components/global-styles/screen-block.js +32 -0
  129. package/build-module/components/global-styles/screen-block.js.map +1 -0
  130. package/build-module/components/global-styles/screen-color-palette.js +35 -0
  131. package/build-module/components/global-styles/screen-color-palette.js.map +1 -0
  132. package/build-module/components/global-styles/screen-colors.js +38 -0
  133. package/build-module/components/global-styles/screen-colors.js.map +1 -0
  134. package/build-module/components/global-styles/screen-layout.js +44 -0
  135. package/build-module/components/global-styles/screen-layout.js.map +1 -0
  136. package/build-module/components/global-styles/screen-root.js +29 -0
  137. package/build-module/components/global-styles/screen-root.js.map +1 -0
  138. package/build-module/components/global-styles/screen-typography.js +37 -0
  139. package/build-module/components/global-styles/screen-typography.js.map +1 -0
  140. package/build-module/components/global-styles/subtitle.js +17 -0
  141. package/build-module/components/global-styles/subtitle.js.map +1 -0
  142. package/build-module/components/{sidebar → global-styles}/typography-panel.js +1 -2
  143. package/build-module/components/global-styles/typography-panel.js.map +1 -0
  144. package/build-module/components/header/plugin-more-menu-item/index.js +70 -0
  145. package/build-module/components/header/plugin-more-menu-item/index.js.map +1 -0
  146. package/build-module/components/header/plugin-sidebar-more-menu-item/index.js +64 -0
  147. package/build-module/components/header/plugin-sidebar-more-menu-item/index.js.map +1 -0
  148. package/build-module/components/header/undo-redo/redo.js +1 -1
  149. package/build-module/components/header/undo-redo/redo.js.map +1 -1
  150. package/build-module/components/header/undo-redo/undo.js +1 -1
  151. package/build-module/components/header/undo-redo/undo.js.map +1 -1
  152. package/build-module/components/keyboard-shortcuts/index.js +3 -11
  153. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  154. package/build-module/components/navigation-sidebar/index.js +1 -1
  155. package/build-module/components/navigation-sidebar/index.js.map +1 -1
  156. package/build-module/components/navigation-sidebar/navigation-panel/constants.js +5 -3
  157. package/build-module/components/navigation-sidebar/navigation-panel/constants.js.map +1 -1
  158. package/build-module/components/save-button/index.js +1 -1
  159. package/build-module/components/save-button/index.js.map +1 -1
  160. package/build-module/components/secondary-sidebar/inserter-sidebar.js +2 -1
  161. package/build-module/components/secondary-sidebar/inserter-sidebar.js.map +1 -1
  162. package/build-module/components/sidebar/global-styles-sidebar.js +13 -159
  163. package/build-module/components/sidebar/global-styles-sidebar.js.map +1 -1
  164. package/build-module/components/sidebar/index.js +2 -7
  165. package/build-module/components/sidebar/index.js.map +1 -1
  166. package/build-module/components/sidebar/plugin-sidebar/index.js +84 -0
  167. package/build-module/components/sidebar/plugin-sidebar/index.js.map +1 -0
  168. package/build-module/components/template-details/index.js +13 -8
  169. package/build-module/components/template-details/index.js.map +1 -1
  170. package/build-module/components/template-details/template-areas.js +60 -0
  171. package/build-module/components/template-details/template-areas.js.map +1 -0
  172. package/build-module/components/template-part-converter/index.js +1 -1
  173. package/build-module/components/template-part-converter/index.js.map +1 -1
  174. package/build-module/components/url-query-controller/index.js +1 -1
  175. package/build-module/components/url-query-controller/index.js.map +1 -1
  176. package/build-module/index.js +3 -0
  177. package/build-module/index.js.map +1 -1
  178. package/build-module/store/actions.js +45 -1
  179. package/build-module/store/actions.js.map +1 -1
  180. package/build-module/store/constants.js +13 -0
  181. package/build-module/store/constants.js.map +1 -1
  182. package/build-module/store/reducer.js +16 -7
  183. package/build-module/store/reducer.js.map +1 -1
  184. package/build-module/store/selectors.js +85 -9
  185. package/build-module/store/selectors.js.map +1 -1
  186. package/build-style/style-rtl.css +122 -17
  187. package/build-style/style.css +122 -17
  188. package/package.json +26 -26
  189. package/src/components/block-editor/back-button.js +44 -0
  190. package/src/components/block-editor/index.js +16 -1
  191. package/src/components/block-editor/style.scss +26 -0
  192. package/src/components/edit-template-part-menu-button/index.js +57 -0
  193. package/src/components/editor/global-styles-provider.js +1 -1
  194. package/src/components/editor/index.js +5 -8
  195. package/src/components/editor/utils.js +1 -0
  196. package/src/components/{sidebar → global-styles}/border-panel.js +0 -0
  197. package/src/components/{sidebar → global-styles}/color-palette-panel.js +13 -11
  198. package/src/components/{sidebar → global-styles}/color-panel.js +12 -17
  199. package/src/components/global-styles/context-menu.js +54 -0
  200. package/src/components/{sidebar → global-styles}/dimensions-panel.js +6 -10
  201. package/src/components/global-styles/header.js +50 -0
  202. package/src/components/global-styles/index.js +81 -0
  203. package/src/components/global-styles/navigation-button.js +35 -0
  204. package/src/components/global-styles/palette.js +67 -0
  205. package/src/components/global-styles/preview.js +41 -0
  206. package/src/components/global-styles/screen-block-list.js +59 -0
  207. package/src/components/global-styles/screen-block.js +28 -0
  208. package/src/components/global-styles/screen-color-palette.js +33 -0
  209. package/src/components/global-styles/screen-colors.js +36 -0
  210. package/src/components/global-styles/screen-layout.js +45 -0
  211. package/src/components/global-styles/screen-root.js +43 -0
  212. package/src/components/global-styles/screen-typography.js +33 -0
  213. package/src/components/global-styles/style.scss +35 -0
  214. package/src/components/global-styles/subtitle.js +10 -0
  215. package/src/components/{sidebar → global-styles}/typography-panel.js +1 -2
  216. package/src/components/header/plugin-more-menu-item/index.js +71 -0
  217. package/src/components/header/plugin-sidebar-more-menu-item/index.js +64 -0
  218. package/src/components/header/undo-redo/redo.js +4 -1
  219. package/src/components/header/undo-redo/undo.js +4 -1
  220. package/src/components/keyboard-shortcuts/index.js +25 -40
  221. package/src/components/navigation-sidebar/index.js +1 -1
  222. package/src/components/navigation-sidebar/navigation-panel/constants.js +9 -4
  223. package/src/components/navigation-sidebar/navigation-panel/style.scss +1 -0
  224. package/src/components/save-button/index.js +1 -1
  225. package/src/components/secondary-sidebar/inserter-sidebar.js +1 -0
  226. package/src/components/sidebar/global-styles-sidebar.js +14 -187
  227. package/src/components/sidebar/index.js +2 -7
  228. package/src/components/sidebar/plugin-sidebar/index.js +80 -0
  229. package/src/components/sidebar/style.scss +40 -0
  230. package/src/components/template-details/index.js +17 -7
  231. package/src/components/template-details/style.scss +36 -27
  232. package/src/components/template-details/template-areas.js +66 -0
  233. package/src/components/template-part-converter/index.js +1 -1
  234. package/src/components/url-query-controller/index.js +1 -1
  235. package/src/index.js +3 -0
  236. package/src/store/actions.js +53 -1
  237. package/src/store/constants.js +15 -0
  238. package/src/store/reducer.js +26 -12
  239. package/src/store/selectors.js +96 -9
  240. package/src/store/test/reducer.js +40 -23
  241. package/src/store/test/selectors.js +34 -3
  242. package/src/style.scss +1 -0
  243. package/build/components/sidebar/border-panel.js.map +0 -1
  244. package/build/components/sidebar/color-palette-panel.js.map +0 -1
  245. package/build/components/sidebar/color-panel.js.map +0 -1
  246. package/build/components/sidebar/dimensions-panel.js.map +0 -1
  247. package/build/components/sidebar/typography-panel.js.map +0 -1
  248. package/build-module/components/sidebar/border-panel.js.map +0 -1
  249. package/build-module/components/sidebar/color-palette-panel.js.map +0 -1
  250. package/build-module/components/sidebar/color-panel.js.map +0 -1
  251. package/build-module/components/sidebar/dimensions-panel.js.map +0 -1
  252. package/build-module/components/sidebar/typography-panel.js.map +0 -1
@@ -2,7 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { useEffect, useState, useMemo, useCallback } from '@wordpress/element';
5
- import { AsyncModeProvider, useSelect, useDispatch } from '@wordpress/data';
5
+ import { useSelect, useDispatch } from '@wordpress/data';
6
6
  import {
7
7
  SlotFillProvider,
8
8
  Popover,
@@ -26,6 +26,7 @@ import {
26
26
  } from '@wordpress/editor';
27
27
  import { __ } from '@wordpress/i18n';
28
28
  import { PluginArea } from '@wordpress/plugins';
29
+ import { ShortcutProvider } from '@wordpress/keyboard-shortcuts';
29
30
 
30
31
  /**
31
32
  * Internal dependencies
@@ -168,17 +169,13 @@ function Editor( { initialSettings, onError } ) {
168
169
  return <InserterSidebar />;
169
170
  }
170
171
  if ( isListViewOpen ) {
171
- return (
172
- <AsyncModeProvider value="true">
173
- <ListViewSidebar />
174
- </AsyncModeProvider>
175
- );
172
+ return <ListViewSidebar />;
176
173
  }
177
174
  return null;
178
175
  };
179
176
 
180
177
  return (
181
- <>
178
+ <ShortcutProvider>
182
179
  <URLQueryController />
183
180
  <SlotFillProvider>
184
181
  <EntityProvider kind="root" type="site">
@@ -289,7 +286,7 @@ function Editor( { initialSettings, onError } ) {
289
286
  </EntityProvider>
290
287
  </EntityProvider>
291
288
  </SlotFillProvider>
292
- </>
289
+ </ShortcutProvider>
293
290
  );
294
291
  }
295
292
  export default Editor;
@@ -27,6 +27,7 @@ export const ROOT_BLOCK_SUPPORTS = [
27
27
  'lineHeight',
28
28
  'textDecoration',
29
29
  'textTransform',
30
+ 'padding',
30
31
  ];
31
32
 
32
33
  export const PRESET_METADATA = [
@@ -63,16 +63,18 @@ export default function ColorPalettePanel( {
63
63
  [ contextName ]
64
64
  );
65
65
  return (
66
- <ColorEdit
67
- immutableColorSlugs={ immutableColorSlugs }
68
- colors={ colors }
69
- onChange={ ( newColors ) => {
70
- setSetting( contextName, 'color.palette', newColors );
71
- } }
72
- emptyUI={ __(
73
- 'Colors are empty! Add some colors to create your own color palette.'
74
- ) }
75
- canReset={ colors === userColors }
76
- />
66
+ <div className="edit-site-global-styles-color-palette-panel">
67
+ <ColorEdit
68
+ immutableColorSlugs={ immutableColorSlugs }
69
+ colors={ colors }
70
+ onChange={ ( newColors ) => {
71
+ setSetting( contextName, 'color.palette', newColors );
72
+ } }
73
+ emptyUI={ __(
74
+ 'Colors are empty! Add some colors to create your own color palette.'
75
+ ) }
76
+ canReset={ colors === userColors }
77
+ />
78
+ </div>
77
79
  );
78
80
  }
@@ -9,7 +9,7 @@ import { __ } from '@wordpress/i18n';
9
9
  */
10
10
 
11
11
  import { useSetting } from '../editor/utils';
12
- import ColorPalettePanel from './color-palette-panel';
12
+ import Palette from './palette';
13
13
 
14
14
  export function useHasColorPanel( { supports } ) {
15
15
  return (
@@ -24,8 +24,6 @@ export default function ColorPanel( {
24
24
  context: { supports, name },
25
25
  getStyle,
26
26
  setStyle,
27
- getSetting,
28
- setSetting,
29
27
  } ) {
30
28
  const solids = useSetting( 'color.palette', name );
31
29
  const gradients = useSetting( 'color.gradients', name );
@@ -116,20 +114,17 @@ export default function ColorPanel( {
116
114
  }
117
115
 
118
116
  return (
119
- <PanelColorGradientSettings
120
- title={ __( 'Color' ) }
121
- settings={ settings }
122
- colors={ solids }
123
- gradients={ gradients }
124
- disableCustomColors={ ! areCustomSolidsEnabled }
125
- disableCustomGradients={ ! areCustomGradientsEnabled }
126
- >
127
- <ColorPalettePanel
128
- key={ 'color-palette-panel-' + name }
129
- contextName={ name }
130
- getSetting={ getSetting }
131
- setSetting={ setSetting }
117
+ <>
118
+ <Palette contextName={ name } />
119
+ <PanelColorGradientSettings
120
+ title={ __( 'Color' ) }
121
+ settings={ settings }
122
+ colors={ solids }
123
+ gradients={ gradients }
124
+ disableCustomColors={ ! areCustomSolidsEnabled }
125
+ disableCustomGradients={ ! areCustomGradientsEnabled }
126
+ showTitle={ false }
132
127
  />
133
- </PanelColorGradientSettings>
128
+ </>
134
129
  );
135
130
  }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __experimentalItemGroup as ItemGroup } from '@wordpress/components';
5
+ import { typography, color, layout } from '@wordpress/icons';
6
+ import { __ } from '@wordpress/i18n';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import { useHasBorderPanel } from './border-panel';
12
+ import { useHasColorPanel } from './color-panel';
13
+ import { useHasDimensionsPanel } from './dimensions-panel';
14
+ import { useHasTypographyPanel } from './typography-panel';
15
+ import NavigationButton from './navigation-button';
16
+
17
+ function ContextMenu( { context, parentMenu = '' } ) {
18
+ const hasTypographyPanel = useHasTypographyPanel( context );
19
+ const hasColorPanel = useHasColorPanel( context );
20
+ const hasBorderPanel = useHasBorderPanel( context );
21
+ const hasDimensionsPanel = useHasDimensionsPanel( context );
22
+ const hasLayoutPanel = hasBorderPanel || hasDimensionsPanel;
23
+
24
+ return (
25
+ <ItemGroup>
26
+ { hasTypographyPanel && (
27
+ <NavigationButton
28
+ icon={ typography }
29
+ path={ parentMenu + '/typography' }
30
+ >
31
+ { __( 'Typography' ) }
32
+ </NavigationButton>
33
+ ) }
34
+ { hasColorPanel && (
35
+ <NavigationButton
36
+ icon={ color }
37
+ path={ parentMenu + '/colors' }
38
+ >
39
+ { __( 'Colors' ) }
40
+ </NavigationButton>
41
+ ) }
42
+ { hasLayoutPanel && (
43
+ <NavigationButton
44
+ icon={ layout }
45
+ path={ parentMenu + '/layout' }
46
+ >
47
+ { __( 'Layout' ) }
48
+ </NavigationButton>
49
+ ) }
50
+ </ItemGroup>
51
+ );
52
+ }
53
+
54
+ export default ContextMenu;
@@ -109,7 +109,7 @@ export default function DimensionsPanel( { context, getStyle, setStyle } ) {
109
109
  };
110
110
  const resetPaddingValue = () => setPaddingValues( {} );
111
111
  const hasPaddingValue = () =>
112
- paddingValues && Object.keys( paddingValues ).length;
112
+ !! paddingValues && Object.keys( paddingValues ).length;
113
113
 
114
114
  const marginValues = splitStyleValue( getStyle( name, 'margin' ) );
115
115
  const marginSides = useCustomSides( name, 'margin' );
@@ -123,7 +123,7 @@ export default function DimensionsPanel( { context, getStyle, setStyle } ) {
123
123
  };
124
124
  const resetMarginValue = () => setMarginValues( {} );
125
125
  const hasMarginValue = () =>
126
- marginValues && Object.keys( marginValues ).length;
126
+ !! marginValues && Object.keys( marginValues ).length;
127
127
 
128
128
  const gapValue = getStyle( name, '--wp--style--block-gap' );
129
129
 
@@ -140,11 +140,7 @@ export default function DimensionsPanel( { context, getStyle, setStyle } ) {
140
140
  };
141
141
 
142
142
  return (
143
- <ToolsPanel
144
- label={ __( 'Dimensions options' ) }
145
- header={ __( 'Dimensions' ) }
146
- resetAll={ resetAll }
147
- >
143
+ <ToolsPanel label={ __( 'Dimensions' ) } resetAll={ resetAll }>
148
144
  { showPaddingControl && (
149
145
  <ToolsPanelItem
150
146
  hasValue={ hasPaddingValue }
@@ -183,14 +179,14 @@ export default function DimensionsPanel( { context, getStyle, setStyle } ) {
183
179
  ) }
184
180
  { showGapControl && (
185
181
  <ToolsPanelItem
186
- className="single-column"
187
182
  hasValue={ hasGapValue }
188
- label={ __( 'Block gap' ) }
183
+ label={ __( 'Block spacing' ) }
189
184
  onDeselect={ resetGapValue }
190
185
  isShownByDefault={ true }
191
186
  >
192
187
  <UnitControl
193
- label={ __( 'Block gap' ) }
188
+ label={ __( 'Block spacing' ) }
189
+ __unstableInputWidth="80px"
194
190
  min={ 0 }
195
191
  onChange={ setGapValue }
196
192
  units={ units }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ __experimentalHStack as HStack,
6
+ __experimentalVStack as VStack,
7
+ __experimentalSpacer as Spacer,
8
+ __experimentalHeading as Heading,
9
+ __experimentalView as View,
10
+ } from '@wordpress/components';
11
+ import { isRTL, __ } from '@wordpress/i18n';
12
+ import { chevronRight, chevronLeft, Icon } from '@wordpress/icons';
13
+
14
+ /**
15
+ * Internal dependencies
16
+ */
17
+ import NavigationButton from './navigation-button';
18
+
19
+ function ScreenHeader( { back, title, description } ) {
20
+ return (
21
+ <VStack spacing={ 2 }>
22
+ <HStack spacing={ 2 }>
23
+ <View>
24
+ <NavigationButton
25
+ path={ back }
26
+ icon={
27
+ <Icon
28
+ icon={ isRTL() ? chevronRight : chevronLeft }
29
+ variant="muted"
30
+ />
31
+ }
32
+ size="small"
33
+ isBack
34
+ aria-label={ __( 'Navigate to the previous view' ) }
35
+ />
36
+ </View>
37
+ <Spacer>
38
+ <Heading level={ 5 }>{ title }</Heading>
39
+ </Spacer>
40
+ </HStack>
41
+ { description && (
42
+ <p className="edit-site-global-styles-header__description">
43
+ { description }
44
+ </p>
45
+ ) }
46
+ </VStack>
47
+ );
48
+ }
49
+
50
+ export default ScreenHeader;
@@ -0,0 +1,81 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { map } from 'lodash';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import {
10
+ __experimentalNavigatorProvider as NavigatorProvider,
11
+ __experimentalNavigatorScreen as NavigatorScreen,
12
+ } from '@wordpress/components';
13
+
14
+ /**
15
+ * Internal dependencies
16
+ */
17
+ import { useGlobalStylesContext } from '../editor/global-styles-provider';
18
+ import ScreenRoot from './screen-root';
19
+ import ScreenBlockList from './screen-block-list';
20
+ import ScreenBlock from './screen-block';
21
+ import ScreenTypography from './screen-typography';
22
+ import ScreenColors from './screen-colors';
23
+ import ScreenColorPalette from './screen-color-palette';
24
+ import ScreenLayout from './screen-layout';
25
+
26
+ function ContextScreens( { name } ) {
27
+ const parentMenu = name === undefined ? '' : '/blocks/' + name;
28
+
29
+ return (
30
+ <>
31
+ <NavigatorScreen path={ parentMenu + '/typography' }>
32
+ <ScreenTypography name={ name } />
33
+ </NavigatorScreen>
34
+
35
+ <NavigatorScreen path={ parentMenu + '/colors' }>
36
+ <ScreenColors name={ name } />
37
+ </NavigatorScreen>
38
+
39
+ <NavigatorScreen path={ parentMenu + '/colors/palette' }>
40
+ <ScreenColorPalette name={ name } />
41
+ </NavigatorScreen>
42
+
43
+ <NavigatorScreen path={ parentMenu + '/layout' }>
44
+ <ScreenLayout name={ name } />
45
+ </NavigatorScreen>
46
+ </>
47
+ );
48
+ }
49
+
50
+ function GlobalStyles() {
51
+ const { blocks } = useGlobalStylesContext();
52
+
53
+ return (
54
+ <NavigatorProvider initialPath="/">
55
+ <NavigatorScreen path="/">
56
+ <ScreenRoot />
57
+ </NavigatorScreen>
58
+
59
+ <NavigatorScreen path="/blocks">
60
+ <ScreenBlockList />
61
+ </NavigatorScreen>
62
+
63
+ { map( blocks, ( block, name ) => (
64
+ <NavigatorScreen
65
+ key={ 'menu-block-' + name }
66
+ path={ '/blocks/' + name }
67
+ >
68
+ <ScreenBlock name={ name } />
69
+ </NavigatorScreen>
70
+ ) ) }
71
+
72
+ <ContextScreens />
73
+
74
+ { map( blocks, ( _, name ) => (
75
+ <ContextScreens key={ 'screens-block-' + name } name={ name } />
76
+ ) ) }
77
+ </NavigatorProvider>
78
+ );
79
+ }
80
+
81
+ export default GlobalStyles;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ __experimentalUseNavigator as useNavigator,
6
+ __experimentalItem as Item,
7
+ FlexItem,
8
+ __experimentalHStack as HStack,
9
+ } from '@wordpress/components';
10
+ import { Icon } from '@wordpress/icons';
11
+
12
+ function NavigationButton( {
13
+ path,
14
+ icon,
15
+ children,
16
+ isBack = false,
17
+ ...props
18
+ } ) {
19
+ const navigator = useNavigator();
20
+ return (
21
+ <Item onClick={ () => navigator.push( path, { isBack } ) } { ...props }>
22
+ { icon && (
23
+ <HStack justify="flex-start">
24
+ <FlexItem>
25
+ <Icon icon={ icon } size={ 24 } />
26
+ </FlexItem>
27
+ <FlexItem>{ children }</FlexItem>
28
+ </HStack>
29
+ ) }
30
+ { ! icon && children }
31
+ </Item>
32
+ );
33
+ }
34
+
35
+ export default NavigationButton;
@@ -0,0 +1,67 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ __experimentalItemGroup as ItemGroup,
6
+ FlexItem,
7
+ __experimentalHStack as HStack,
8
+ __experimentalZStack as ZStack,
9
+ __experimentalVStack as VStack,
10
+ FlexBlock,
11
+ ColorIndicator,
12
+ } from '@wordpress/components';
13
+ import { __, _n, sprintf } from '@wordpress/i18n';
14
+
15
+ /**
16
+ * Internal dependencies
17
+ */
18
+ import Subtitle from './subtitle';
19
+ import { useSetting } from '../editor/utils';
20
+ import NavigationButton from './navigation-button';
21
+
22
+ function Palette( { contextName } ) {
23
+ const colors = useSetting( 'color.palette', contextName );
24
+ const screenPath =
25
+ contextName === 'root'
26
+ ? '/colors/palette'
27
+ : '/blocks/' + contextName + '/colors/palette';
28
+
29
+ return (
30
+ <div className="edit-site-global-style-palette">
31
+ <VStack spacing={ 1 }>
32
+ <Subtitle>{ __( 'Palette' ) }</Subtitle>
33
+ <ItemGroup isBordered isSeparated>
34
+ <NavigationButton path={ screenPath }>
35
+ <HStack>
36
+ <FlexBlock>
37
+ <ZStack isLayered={ false } offset={ -8 }>
38
+ { colors
39
+ .slice( 0, 5 )
40
+ .map( ( { color } ) => (
41
+ <ColorIndicator
42
+ key={ color }
43
+ colorValue={ color }
44
+ />
45
+ ) ) }
46
+ </ZStack>
47
+ </FlexBlock>
48
+ <FlexItem>
49
+ { sprintf(
50
+ // Translators: %d: Number of palette colors.
51
+ _n(
52
+ '%d color',
53
+ '%d colors',
54
+ colors.length
55
+ ),
56
+ colors.length
57
+ ) }
58
+ </FlexItem>
59
+ </HStack>
60
+ </NavigationButton>
61
+ </ItemGroup>
62
+ </VStack>
63
+ </div>
64
+ );
65
+ }
66
+
67
+ export default Palette;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ __experimentalHStack as HStack,
6
+ __experimentalVStack as VStack,
7
+ Card,
8
+ ColorIndicator,
9
+ } from '@wordpress/components';
10
+
11
+ /**
12
+ * Internal dependencies
13
+ */ import { useGlobalStylesContext } from '../editor/global-styles-provider';
14
+
15
+ const StylesPreview = () => {
16
+ const { getStyle } = useGlobalStylesContext();
17
+ const fontFamily = getStyle( 'root', 'fontFamily' ) ?? 'serif';
18
+ const textColor = getStyle( 'root', 'color' ) ?? 'black';
19
+ const linkColor = getStyle( 'root', 'linkColor' ) ?? 'blue';
20
+ const backgroundColor = getStyle( 'root', 'backgroundColor' ) ?? 'white';
21
+
22
+ return (
23
+ <Card
24
+ className="edit-site-global-styles-preview"
25
+ style={ { background: backgroundColor } }
26
+ >
27
+ <HStack spacing={ 5 }>
28
+ <div>
29
+ <span style={ { fontFamily, fontSize: '80px' } }>A</span>
30
+ <span style={ { fontFamily, fontSize: '80px' } }>a</span>
31
+ </div>
32
+ <VStack spacing={ 2 }>
33
+ <ColorIndicator colorValue={ textColor } />
34
+ <ColorIndicator colorValue={ linkColor } />
35
+ </VStack>
36
+ </HStack>
37
+ </Card>
38
+ );
39
+ };
40
+
41
+ export default StylesPreview;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { getBlockType } from '@wordpress/blocks';
5
+ import { __ } from '@wordpress/i18n';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import { useGlobalStylesContext } from '../editor/global-styles-provider';
11
+ import { useHasBorderPanel } from './border-panel';
12
+ import { useHasColorPanel } from './color-panel';
13
+ import { useHasDimensionsPanel } from './dimensions-panel';
14
+ import { useHasTypographyPanel } from './typography-panel';
15
+ import ScreenHeader from './header';
16
+ import NavigationButton from './navigation-button';
17
+
18
+ function BlockMenuItem( { block } ) {
19
+ const { blocks } = useGlobalStylesContext();
20
+ const context = blocks[ block.name ];
21
+ const hasTypographyPanel = useHasTypographyPanel( context );
22
+ const hasColorPanel = useHasColorPanel( context );
23
+ const hasBorderPanel = useHasBorderPanel( context );
24
+ const hasDimensionsPanel = useHasDimensionsPanel( context );
25
+ const hasLayoutPanel = hasBorderPanel || hasDimensionsPanel;
26
+ const hasBlockMenuItem =
27
+ hasTypographyPanel || hasColorPanel || hasLayoutPanel;
28
+
29
+ if ( ! hasBlockMenuItem ) {
30
+ return null;
31
+ }
32
+
33
+ return (
34
+ <NavigationButton path={ '/blocks/' + block.name }>
35
+ { block.title }
36
+ </NavigationButton>
37
+ );
38
+ }
39
+
40
+ function ScreenBlockList() {
41
+ const { blocks } = useGlobalStylesContext();
42
+ const visibleBlocks = Object.keys( blocks )
43
+ .map( ( name ) => getBlockType( name ) )
44
+ .filter( ( blockType ) => !! blockType );
45
+
46
+ return (
47
+ <>
48
+ <ScreenHeader back="/" title={ __( 'Blocks' ) } />
49
+ { visibleBlocks.map( ( block ) => (
50
+ <BlockMenuItem
51
+ block={ block }
52
+ key={ 'menu-itemblock-' + block.name }
53
+ />
54
+ ) ) }
55
+ </>
56
+ );
57
+ }
58
+
59
+ export default ScreenBlockList;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { getBlockType } from '@wordpress/blocks';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { useGlobalStylesContext } from '../editor/global-styles-provider';
10
+ import ContextMenu from './context-menu';
11
+ import ScreenHeader from './header';
12
+
13
+ function ScreenBlock( { name } ) {
14
+ const blockType = getBlockType( name );
15
+ const { blocks } = useGlobalStylesContext();
16
+
17
+ return (
18
+ <>
19
+ <ScreenHeader back="/blocks" title={ blockType.title } />
20
+ <ContextMenu
21
+ parentMenu={ '/blocks/' + name }
22
+ context={ blocks[ name ] }
23
+ />
24
+ </>
25
+ );
26
+ }
27
+
28
+ export default ScreenBlock;
@@ -0,0 +1,33 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { useGlobalStylesContext } from '../editor/global-styles-provider';
10
+ import ColorPalettePanel from './color-palette-panel';
11
+ import ScreenHeader from './header';
12
+
13
+ function ScreenColorPalette( { name } ) {
14
+ const { getSetting, setSetting } = useGlobalStylesContext();
15
+ const parentMenu = name === undefined ? '' : '/blocks/' + name;
16
+
17
+ return (
18
+ <>
19
+ <ScreenHeader
20
+ back={ parentMenu + '/colors' }
21
+ title={ __( 'Color Palette' ) }
22
+ description={ __( 'Edit the color palette.' ) }
23
+ />
24
+ <ColorPalettePanel
25
+ contextName={ name }
26
+ getSetting={ getSetting }
27
+ setSetting={ setSetting }
28
+ />
29
+ </>
30
+ );
31
+ }
32
+
33
+ export default ScreenColorPalette;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { useGlobalStylesContext } from '../editor/global-styles-provider';
10
+ import ColorPanel from './color-panel';
11
+ import ScreenHeader from './header';
12
+
13
+ function ScreenColors( { name } ) {
14
+ const { root, blocks, getStyle, setStyle } = useGlobalStylesContext();
15
+ const context = name === undefined ? root : blocks[ name ];
16
+ const parentMenu = name === undefined ? '' : '/blocks/' + name;
17
+
18
+ return (
19
+ <>
20
+ <ScreenHeader
21
+ back={ parentMenu ? parentMenu : '/' }
22
+ title={ __( 'Colors' ) }
23
+ description={ __(
24
+ 'Manage color palettes and how they affect the different elements of the site.'
25
+ ) }
26
+ />
27
+ <ColorPanel
28
+ context={ context }
29
+ getStyle={ getStyle }
30
+ setStyle={ setStyle }
31
+ />
32
+ </>
33
+ );
34
+ }
35
+
36
+ export default ScreenColors;