@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
@@ -1,176 +1,33 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { map, sortBy } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
9
- import { Button, PanelBody, TabPanel } from '@wordpress/components';
4
+ import { Button } from '@wordpress/components';
10
5
  import { __ } from '@wordpress/i18n';
11
- import { getBlockType } from '@wordpress/blocks';
12
- import { useMemo } from '@wordpress/element';
6
+ import { styles } from '@wordpress/icons';
13
7
 
14
8
  /**
15
9
  * Internal dependencies
16
10
  */
17
- import {
18
- useGlobalStylesContext,
19
- useGlobalStylesReset,
20
- } from '../editor/global-styles-provider';
11
+ import { useGlobalStylesReset } from '../editor/global-styles-provider';
21
12
  import DefaultSidebar from './default-sidebar';
22
- import {
23
- default as TypographyPanel,
24
- useHasTypographyPanel,
25
- } from './typography-panel';
26
- import { default as BorderPanel, useHasBorderPanel } from './border-panel';
27
- import { default as ColorPanel, useHasColorPanel } from './color-panel';
28
- import {
29
- default as DimensionsPanel,
30
- useHasDimensionsPanel,
31
- } from './dimensions-panel';
32
-
33
- function GlobalStylesPanel( {
34
- wrapperPanelTitle,
35
- context,
36
- getStyle,
37
- setStyle,
38
- getSetting,
39
- setSetting,
40
- } ) {
41
- const hasBorderPanel = useHasBorderPanel( context );
42
- const hasColorPanel = useHasColorPanel( context );
43
- const hasTypographyPanel = useHasTypographyPanel( context );
44
- const hasDimensionsPanel = useHasDimensionsPanel( context );
45
-
46
- if ( ! hasColorPanel && ! hasTypographyPanel && ! hasDimensionsPanel ) {
47
- return null;
48
- }
49
-
50
- const content = (
51
- <>
52
- { hasTypographyPanel && (
53
- <TypographyPanel
54
- context={ context }
55
- getStyle={ getStyle }
56
- setStyle={ setStyle }
57
- />
58
- ) }
59
- { hasColorPanel && (
60
- <ColorPanel
61
- context={ context }
62
- getStyle={ getStyle }
63
- setStyle={ setStyle }
64
- getSetting={ getSetting }
65
- setSetting={ setSetting }
66
- />
67
- ) }
68
- { hasDimensionsPanel && (
69
- <DimensionsPanel
70
- context={ context }
71
- getStyle={ getStyle }
72
- setStyle={ setStyle }
73
- />
74
- ) }
75
- { hasBorderPanel && (
76
- <BorderPanel
77
- context={ context }
78
- getStyle={ getStyle }
79
- setStyle={ setStyle }
80
- />
81
- ) }
82
- </>
83
- );
84
- if ( ! wrapperPanelTitle ) {
85
- return content;
86
- }
87
- return (
88
- <PanelBody title={ wrapperPanelTitle } initialOpen={ false }>
89
- { content }
90
- </PanelBody>
91
- );
92
- }
13
+ import GlobalStyles from '../global-styles';
93
14
 
94
- function getPanelTitle( blockName ) {
95
- const blockType = getBlockType( blockName );
96
-
97
- // Protect against blocks that aren't registered
98
- // eg: widget-area
99
- if ( blockType === undefined ) {
100
- return blockName;
101
- }
102
-
103
- return blockType.title;
104
- }
105
-
106
- function GlobalStylesBlockPanels( {
107
- blocks,
108
- getStyle,
109
- setStyle,
110
- getSetting,
111
- setSetting,
112
- } ) {
113
- const panels = useMemo(
114
- () =>
115
- sortBy(
116
- map( blocks, ( block, name ) => {
117
- return {
118
- block,
119
- name,
120
- wrapperPanelTitle: getPanelTitle( name ),
121
- };
122
- } ),
123
- ( { wrapperPanelTitle } ) => wrapperPanelTitle
124
- ),
125
- [ blocks ]
126
- );
127
-
128
- return map( panels, ( { block, name, wrapperPanelTitle } ) => {
129
- return (
130
- <GlobalStylesPanel
131
- key={ 'panel-' + name }
132
- wrapperPanelTitle={ wrapperPanelTitle }
133
- context={ block }
134
- getStyle={ getStyle }
135
- setStyle={ setStyle }
136
- getSetting={ getSetting }
137
- setSetting={ setSetting }
138
- />
139
- );
140
- } );
141
- }
142
-
143
- export default function GlobalStylesSidebar( {
144
- identifier,
145
- title,
146
- icon,
147
- closeLabel,
148
- } ) {
149
- const {
150
- root,
151
- blocks,
152
- getStyle,
153
- setStyle,
154
- getSetting,
155
- setSetting,
156
- } = useGlobalStylesContext();
15
+ export default function GlobalStylesSidebar() {
157
16
  const [ canRestart, onReset ] = useGlobalStylesReset();
158
17
 
159
- if ( typeof blocks !== 'object' || ! root ) {
160
- // No sidebar is shown.
161
- return null;
162
- }
163
-
164
18
  return (
165
19
  <DefaultSidebar
166
20
  className="edit-site-global-styles-sidebar"
167
- identifier={ identifier }
168
- title={ title }
169
- icon={ icon }
170
- closeLabel={ closeLabel }
21
+ identifier="edit-site/global-styles"
22
+ title={ __( 'Styles' ) }
23
+ icon={ styles }
24
+ closeLabel={ __( 'Close global styles sidebar' ) }
171
25
  header={
172
26
  <>
173
- <strong>{ title }</strong>
27
+ <strong>{ __( 'Styles' ) }</strong>
28
+ <span className="edit-site-global-styles-sidebar__beta">
29
+ { __( 'Beta' ) }
30
+ </span>
174
31
  <Button
175
32
  className="edit-site-global-styles-sidebar__reset-button"
176
33
  isSmall
@@ -183,37 +40,7 @@ export default function GlobalStylesSidebar( {
183
40
  </>
184
41
  }
185
42
  >
186
- <TabPanel
187
- tabs={ [
188
- { name: 'root', title: __( 'Root' ) },
189
- { name: 'block', title: __( 'By Block Type' ) },
190
- ] }
191
- >
192
- { ( tab ) => {
193
- /* Per Block Context */
194
- if ( 'block' === tab.name ) {
195
- return (
196
- <GlobalStylesBlockPanels
197
- blocks={ blocks }
198
- getStyle={ getStyle }
199
- setStyle={ setStyle }
200
- getSetting={ getSetting }
201
- setSetting={ setSetting }
202
- />
203
- );
204
- }
205
- return (
206
- <GlobalStylesPanel
207
- hasWrapper={ false }
208
- context={ root }
209
- getStyle={ getStyle }
210
- setStyle={ setStyle }
211
- getSetting={ getSetting }
212
- setSetting={ setSetting }
213
- />
214
- );
215
- } }
216
- </TabPanel>
43
+ <GlobalStyles />
217
44
  </DefaultSidebar>
218
45
  );
219
46
  }
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { createSlotFill, PanelBody } from '@wordpress/components';
5
5
  import { __ } from '@wordpress/i18n';
6
- import { cog, typography } from '@wordpress/icons';
6
+ import { cog } from '@wordpress/icons';
7
7
  import { useEffect } from '@wordpress/element';
8
8
  import { useSelect, useDispatch } from '@wordpress/data';
9
9
  import { store as interfaceStore } from '@wordpress/interface';
@@ -76,12 +76,7 @@ export function SidebarComplementaryAreaFills() {
76
76
  <InspectorSlot bubblesVirtually />
77
77
  ) }
78
78
  </DefaultSidebar>
79
- <GlobalStylesSidebar
80
- identifier="edit-site/global-styles"
81
- title={ __( 'Global Styles' ) }
82
- closeLabel={ __( 'Close global styles sidebar' ) }
83
- icon={ typography }
84
- />
79
+ <GlobalStylesSidebar />
85
80
  </>
86
81
  );
87
82
  }
@@ -0,0 +1,80 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { ComplementaryArea } from '@wordpress/interface';
5
+
6
+ /**
7
+ * Renders a sidebar when activated. The contents within the `PluginSidebar` will appear as content within the sidebar.
8
+ * It also automatically renders a corresponding `PluginSidebarMenuItem` component when `isPinnable` flag is set to `true`.
9
+ * If you wish to display the sidebar, you can with use the `PluginSidebarMoreMenuItem` component or the `wp.data.dispatch` API:
10
+ *
11
+ * ```js
12
+ * wp.data.dispatch( 'core/edit-site' ).openGeneralSidebar( 'plugin-name/sidebar-name' );
13
+ * ```
14
+ *
15
+ * @see PluginSidebarMoreMenuItem
16
+ *
17
+ * @param {Object} props Element props.
18
+ * @param {string} props.name A string identifying the sidebar. Must be unique for every sidebar registered within the scope of your plugin.
19
+ * @param {string} [props.className] An optional class name added to the sidebar body.
20
+ * @param {string} props.title Title displayed at the top of the sidebar.
21
+ * @param {boolean} [props.isPinnable=true] Whether to allow to pin sidebar to the toolbar. When set to `true` it also automatically renders a corresponding menu item.
22
+ * @param {WPBlockTypeIconRender} [props.icon=inherits from the plugin] The [Dashicon](https://developer.wordpress.org/resource/dashicons/) icon slug string, or an SVG WP element, to be rendered when the sidebar is pinned to toolbar.
23
+ *
24
+ * @example
25
+ * ```js
26
+ * // Using ES5 syntax
27
+ * var __ = wp.i18n.__;
28
+ * var el = wp.element.createElement;
29
+ * var PanelBody = wp.components.PanelBody;
30
+ * var PluginSidebar = wp.editSite.PluginSidebar;
31
+ * var moreIcon = wp.element.createElement( 'svg' ); //... svg element.
32
+ *
33
+ * function MyPluginSidebar() {
34
+ * return el(
35
+ * PluginSidebar,
36
+ * {
37
+ * name: 'my-sidebar',
38
+ * title: 'My sidebar title',
39
+ * icon: moreIcon,
40
+ * },
41
+ * el(
42
+ * PanelBody,
43
+ * {},
44
+ * __( 'My sidebar content' )
45
+ * )
46
+ * );
47
+ * }
48
+ * ```
49
+ *
50
+ * @example
51
+ * ```jsx
52
+ * // Using ESNext syntax
53
+ * import { __ } from '@wordpress/i18n';
54
+ * import { PanelBody } from '@wordpress/components';
55
+ * import { PluginSidebar } from '@wordpress/edit-site';
56
+ * import { more } from '@wordpress/icons';
57
+ *
58
+ * const MyPluginSidebar = () => (
59
+ * <PluginSidebar
60
+ * name="my-sidebar"
61
+ * title="My sidebar title"
62
+ * icon={ more }
63
+ * >
64
+ * <PanelBody>
65
+ * { __( 'My sidebar content' ) }
66
+ * </PanelBody>
67
+ * </PluginSidebar>
68
+ * );
69
+ * ```
70
+ */
71
+ export default function PluginSidebarEditSite( { className, ...props } ) {
72
+ return (
73
+ <ComplementaryArea
74
+ panelClassName={ className }
75
+ className="edit-site-sidebar"
76
+ scope="core/edit-site"
77
+ { ...props }
78
+ />
79
+ );
80
+ }
@@ -38,3 +38,43 @@
38
38
  margin-bottom: 0;
39
39
  }
40
40
  }
41
+
42
+ .edit-site-global-styles-sidebar .components-navigation__menu-title-heading {
43
+ font-size: $default-font-size * 1.2;
44
+ font-weight: 500;
45
+ }
46
+
47
+ .edit-site-global-styles-sidebar .components-navigation__item > button span {
48
+ font-weight: 500;
49
+ }
50
+
51
+ .edit-site-typography-panel,
52
+ .edit-site-global-styles-sidebar .block-editor-panel-color-gradient-settings {
53
+ border: 0;
54
+ }
55
+
56
+ .edit-site-global-styles-sidebar__blocks-group {
57
+ padding-top: $grid-unit-30;
58
+ border-top: $border-width solid $gray-200;
59
+ }
60
+
61
+ .edit-site-global-styles-sidebar__blocks-group-help {
62
+ padding: 0 $grid-unit-20;
63
+ }
64
+
65
+ .edit-site-global-styles-color-palette-panel {
66
+ padding: $grid-unit-20;
67
+ }
68
+
69
+ .edit-site-global-styles-sidebar__beta {
70
+ display: inline-flex;
71
+ margin-left: $grid-unit-10;
72
+ padding: 0 $grid-unit-10;
73
+ height: $grid-unit-30;
74
+ border-radius: $radius-block-ui;
75
+ background-color: $black;
76
+ color: $white;
77
+ align-items: center;
78
+ font-size: $helptext-font-size;
79
+ line-height: 1;
80
+ }
@@ -4,7 +4,9 @@
4
4
  import { __ } from '@wordpress/i18n';
5
5
  import {
6
6
  Button,
7
+ MenuGroup,
7
8
  MenuItem,
9
+ __experimentalHeading as Heading,
8
10
  __experimentalText as Text,
9
11
  } from '@wordpress/components';
10
12
  import { useDispatch, useSelect } from '@wordpress/data';
@@ -16,6 +18,7 @@ import { store as editorStore } from '@wordpress/editor';
16
18
  import isTemplateRevertable from '../../utils/is-template-revertable';
17
19
  import { MENU_TEMPLATES } from '../navigation-sidebar/navigation-panel/constants';
18
20
  import { store as editSiteStore } from '../../store';
21
+ import TemplateAreas from './template-areas';
19
22
 
20
23
  export default function TemplateDetails( { template, onClose } ) {
21
24
  const { title, description } = useSelect(
@@ -42,11 +45,15 @@ export default function TemplateDetails( { template, onClose } ) {
42
45
  };
43
46
 
44
47
  return (
45
- <>
46
- <div className="edit-site-template-details">
47
- <Text size="body" weight={ 600 }>
48
+ <div className="edit-site-template-details">
49
+ <div className="edit-site-template-details__group">
50
+ <Heading
51
+ level={ 4 }
52
+ weight={ 600 }
53
+ className="edit-site-template-details__title"
54
+ >
48
55
  { title }
49
- </Text>
56
+ </Heading>
50
57
 
51
58
  { description && (
52
59
  <Text
@@ -58,15 +65,18 @@ export default function TemplateDetails( { template, onClose } ) {
58
65
  ) }
59
66
  </div>
60
67
 
68
+ <TemplateAreas />
69
+
61
70
  { isTemplateRevertable( template ) && (
62
- <div className="edit-site-template-details__revert">
71
+ <MenuGroup className="edit-site-template-details__group">
63
72
  <MenuItem
73
+ className="edit-site-template-details__revert-button"
64
74
  info={ __( 'Restore template to theme default' ) }
65
75
  onClick={ revert }
66
76
  >
67
77
  { __( 'Clear customizations' ) }
68
78
  </MenuItem>
69
- </div>
79
+ </MenuGroup>
70
80
  ) }
71
81
 
72
82
  <Button
@@ -78,6 +88,6 @@ export default function TemplateDetails( { template, onClose } ) {
78
88
  >
79
89
  { __( 'Browse all templates' ) }
80
90
  </Button>
81
- </>
91
+ </div>
82
92
  );
83
93
  }
@@ -1,46 +1,55 @@
1
1
  .edit-site-template-details {
2
- margin: $grid-unit-10 $grid-unit-20;
2
+ .edit-site-template-details__group {
3
+ margin: 0;
4
+ padding: $grid-unit-20;
5
+ }
3
6
 
4
- p {
5
- padding: $grid-unit-10 0;
7
+ .edit-site-template-details__group + .edit-site-template-details__group {
8
+ border-top: $border-width solid $gray-400;
6
9
  }
7
- }
8
10
 
9
- .edit-site-template-details__description {
10
- color: $gray-700;
11
- }
11
+ .edit-site-template-details__title {
12
+ margin: 0 0 $grid-unit-15;
13
+ }
12
14
 
13
- .edit-site-template-details__revert {
14
- border-top: $border-width solid $gray-400;
15
+ .edit-site-template-details__description {
16
+ margin: 0 0 $grid-unit-15;
17
+ color: $gray-700;
18
+ }
19
+
20
+ // The group already has a 8px padding inside, so overriding the parent padding.
21
+ .edit-site-template-details__group.edit-site-template-details__template-areas {
22
+ padding: $grid-unit-10;
23
+ }
15
24
 
16
- .components-menu-item__button {
25
+ .edit-site-template-details__revert-button {
17
26
  height: auto;
18
- padding: $grid-unit-20;
27
+ padding: 0;
19
28
  text-align: left;
20
29
 
21
30
  &:focus:not(:disabled) {
22
31
  box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color), inset 0 0 0 3px $white;
23
32
  }
24
33
  }
25
- }
26
34
 
27
- .edit-site-template-details__show-all-button.components-button {
28
- display: block;
29
- background: $gray-900;
30
- color: $white;
31
- width: 100%;
32
- height: ($button-size + $grid-unit-10);
33
- border-radius: 0;
34
-
35
- &:hover {
35
+ .edit-site-template-details__show-all-button.components-button {
36
+ display: block;
37
+ background: $gray-900;
36
38
  color: $white;
37
- }
39
+ width: 100%;
40
+ height: ($button-size + $grid-unit-10);
41
+ border-radius: 0;
38
42
 
39
- &:active {
40
- color: $gray-400;
41
- }
43
+ &:hover {
44
+ color: $white;
45
+ }
42
46
 
43
- &:focus:not(:disabled) {
44
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color), inset 0 0 0 3px $white;
47
+ &:active {
48
+ color: $gray-400;
49
+ }
50
+
51
+ &:focus:not(:disabled) {
52
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color), inset 0 0 0 3px $white;
53
+ }
45
54
  }
46
55
  }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+ import { MenuGroup, MenuItem } from '@wordpress/components';
6
+ import { useSelect, useDispatch } from '@wordpress/data';
7
+ import { getTemplatePartIcon } from '@wordpress/editor';
8
+ import { store as blockEditorStore } from '@wordpress/block-editor';
9
+
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ import { store as editSiteStore } from '../../store';
14
+ import { TEMPLATE_PART_AREA_TO_NAME } from '../../store/constants';
15
+
16
+ function TemplatePartItem( { area, clientId } ) {
17
+ const { selectBlock, toggleBlockHighlight } = useDispatch(
18
+ blockEditorStore
19
+ );
20
+ const highlightBlock = () => toggleBlockHighlight( clientId, true );
21
+ const cancelHighlightBlock = () => toggleBlockHighlight( clientId, false );
22
+
23
+ return (
24
+ <MenuItem
25
+ icon={ getTemplatePartIcon( area ) }
26
+ iconPosition="left"
27
+ onClick={ () => {
28
+ selectBlock( clientId );
29
+ } }
30
+ onMouseOver={ highlightBlock }
31
+ onMouseLeave={ cancelHighlightBlock }
32
+ onFocus={ highlightBlock }
33
+ onBlur={ cancelHighlightBlock }
34
+ >
35
+ { TEMPLATE_PART_AREA_TO_NAME[ area ] }
36
+ </MenuItem>
37
+ );
38
+ }
39
+
40
+ export default function TemplateAreas() {
41
+ const templateAreaBlocks = useSelect(
42
+ ( select ) => select( editSiteStore ).getTemplateAreaBlocks(),
43
+ []
44
+ );
45
+
46
+ if ( ! Object.keys( templateAreaBlocks ).length ) {
47
+ return null;
48
+ }
49
+
50
+ return (
51
+ <MenuGroup
52
+ label={ __( 'Template areas' ) }
53
+ className="edit-site-template-details__group edit-site-template-details__template-areas"
54
+ >
55
+ { Object.entries( templateAreaBlocks ).map(
56
+ ( [ area, templateAreaBlock ] ) => (
57
+ <TemplatePartItem
58
+ key={ area }
59
+ area={ area }
60
+ clientId={ templateAreaBlock.clientId }
61
+ />
62
+ )
63
+ ) }
64
+ </MenuGroup>
65
+ );
66
+ }
@@ -20,7 +20,7 @@ export default function TemplatePartConverter() {
20
20
  clientIds: selectedBlockClientIds,
21
21
  blocks: getBlocksByClientId( selectedBlockClientIds ),
22
22
  };
23
- } );
23
+ }, [] );
24
24
 
25
25
  // Allow converting a single template part to standard blocks.
26
26
  if ( blocks.length === 1 && blocks[ 0 ]?.name === 'core/template-part' ) {
@@ -72,5 +72,5 @@ function useCurrentPageContext() {
72
72
  }
73
73
 
74
74
  return null;
75
- } );
75
+ }, [] );
76
76
  }
package/src/index.js CHANGED
@@ -62,3 +62,6 @@ export function initialize( id, settings ) {
62
62
 
63
63
  export { default as __experimentalMainDashboardButton } from './components/main-dashboard-button';
64
64
  export { default as __experimentalNavigationToggle } from './components/navigation-sidebar/navigation-toggle';
65
+ export { default as PluginSidebar } from './components/sidebar/plugin-sidebar';
66
+ export { default as PluginSidebarMoreMenuItem } from './components/header/plugin-sidebar-more-menu-item';
67
+ export { default as PluginMoreMenuItem } from './components/header/plugin-more-menu-item';
@@ -8,6 +8,7 @@ import { addQueryArgs, getPathAndQueryString } from '@wordpress/url';
8
8
  import { __ } from '@wordpress/i18n';
9
9
  import { store as noticesStore } from '@wordpress/notices';
10
10
  import { store as coreStore } from '@wordpress/core-data';
11
+ import { store as interfaceStore } from '@wordpress/interface';
11
12
 
12
13
  /**
13
14
  * Internal dependencies
@@ -121,7 +122,7 @@ export function* removeTemplate( templateId ) {
121
122
  /**
122
123
  * Returns an action object used to set a template part.
123
124
  *
124
- * @param {number} templatePartId The template part ID.
125
+ * @param {string} templatePartId The template part ID.
125
126
  *
126
127
  * @return {Object} Action object.
127
128
  */
@@ -132,6 +133,20 @@ export function setTemplatePart( templatePartId ) {
132
133
  };
133
134
  }
134
135
 
136
+ /**
137
+ * Returns an action object used to push a template part to navigation history.
138
+ *
139
+ * @param {string} templatePartId The template part ID.
140
+ *
141
+ * @return {Object} Action object.
142
+ */
143
+ export function pushTemplatePart( templatePartId ) {
144
+ return {
145
+ type: 'PUSH_TEMPLATE_PART',
146
+ templatePartId,
147
+ };
148
+ }
149
+
135
150
  /**
136
151
  * Updates the homeTemplateId state with the templateId of the page resolved
137
152
  * from the given path.
@@ -190,6 +205,15 @@ export function* setPage( page ) {
190
205
  return templateId;
191
206
  }
192
207
 
208
+ /**
209
+ * Go back to the current editing page.
210
+ */
211
+ export function goBack() {
212
+ return {
213
+ type: 'GO_BACK',
214
+ };
215
+ }
216
+
193
217
  /**
194
218
  * Displays the site homepage for editing in the editor.
195
219
  */
@@ -441,3 +465,31 @@ export function* revertTemplate( template ) {
441
465
  );
442
466
  }
443
467
  }
468
+ /**
469
+ * Returns an action object used in signalling that the user opened an editor sidebar.
470
+ *
471
+ * @param {?string} name Sidebar name to be opened.
472
+ *
473
+ * @yield {Object} Action object.
474
+ */
475
+ export function* openGeneralSidebar( name ) {
476
+ yield controls.dispatch(
477
+ interfaceStore,
478
+ 'enableComplementaryArea',
479
+ editSiteStoreName,
480
+ name
481
+ );
482
+ }
483
+
484
+ /**
485
+ * Returns an action object signalling that the user closed the sidebar.
486
+ *
487
+ * @yield {Object} Action object.
488
+ */
489
+ export function* closeGeneralSidebar() {
490
+ yield controls.dispatch(
491
+ interfaceStore,
492
+ 'disableComplementaryArea',
493
+ editSiteStoreName
494
+ );
495
+ }