@wordpress/edit-site 3.0.8 → 3.0.12

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 (258) hide show
  1. package/build/components/add-new-template/index.js +49 -0
  2. package/build/components/add-new-template/index.js.map +1 -0
  3. package/build/components/add-new-template/new-template-part.js +95 -0
  4. package/build/components/add-new-template/new-template-part.js.map +1 -0
  5. package/build/components/add-new-template/new-template.js +133 -0
  6. package/build/components/add-new-template/new-template.js.map +1 -0
  7. package/build/components/block-editor/index.js +3 -1
  8. package/build/components/block-editor/index.js.map +1 -1
  9. package/build/components/create-template-part-modal/index.js +115 -0
  10. package/build/components/create-template-part-modal/index.js.map +1 -0
  11. package/build/components/editor/index.js +20 -16
  12. package/build/components/editor/index.js.map +1 -1
  13. package/build/components/global-styles/color-palette-panel.js +29 -6
  14. package/build/components/global-styles/color-palette-panel.js.map +1 -1
  15. package/build/components/global-styles/global-styles-provider.js +9 -47
  16. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  17. package/build/components/global-styles/gradients-palette-panel.js +56 -0
  18. package/build/components/global-styles/gradients-palette-panel.js.map +1 -0
  19. package/build/components/global-styles/hooks.js +29 -27
  20. package/build/components/global-styles/hooks.js.map +1 -1
  21. package/build/components/global-styles/palette.js +11 -5
  22. package/build/components/global-styles/palette.js.map +1 -1
  23. package/build/components/global-styles/screen-background-color.js +2 -1
  24. package/build/components/global-styles/screen-background-color.js.map +1 -1
  25. package/build/components/global-styles/screen-block-list.js +9 -1
  26. package/build/components/global-styles/screen-block-list.js.map +1 -1
  27. package/build/components/global-styles/screen-color-palette.js +23 -3
  28. package/build/components/global-styles/screen-color-palette.js.map +1 -1
  29. package/build/components/global-styles/screen-link-color.js +2 -1
  30. package/build/components/global-styles/screen-link-color.js.map +1 -1
  31. package/build/components/global-styles/screen-text-color.js +2 -1
  32. package/build/components/global-styles/screen-text-color.js.map +1 -1
  33. package/build/components/global-styles/screen-typography-element.js +54 -0
  34. package/build/components/global-styles/screen-typography-element.js.map +1 -0
  35. package/build/components/global-styles/screen-typography.js +74 -6
  36. package/build/components/global-styles/screen-typography.js.map +1 -1
  37. package/build/components/global-styles/typography-panel.js +28 -8
  38. package/build/components/global-styles/typography-panel.js.map +1 -1
  39. package/build/components/global-styles/ui.js +12 -0
  40. package/build/components/global-styles/ui.js.map +1 -1
  41. package/build/components/global-styles/use-global-styles-output.js +2 -2
  42. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  43. package/build/components/global-styles/utils.js +1 -1
  44. package/build/components/global-styles/utils.js.map +1 -1
  45. package/build/components/header/index.js +1 -5
  46. package/build/components/header/index.js.map +1 -1
  47. package/build/components/keyboard-shortcuts/index.js +26 -0
  48. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  49. package/build/components/list/actions/index.js +104 -0
  50. package/build/components/list/actions/index.js.map +1 -0
  51. package/build/components/list/actions/rename-menu-item.js +112 -0
  52. package/build/components/list/actions/rename-menu-item.js.map +1 -0
  53. package/build/components/list/added-by.js +180 -0
  54. package/build/components/list/added-by.js.map +1 -0
  55. package/build/components/list/header.js +50 -0
  56. package/build/components/list/header.js.map +1 -0
  57. package/build/components/list/index.js +102 -0
  58. package/build/components/list/index.js.map +1 -0
  59. package/build/components/list/table.js +114 -0
  60. package/build/components/list/table.js.map +1 -0
  61. package/build/components/list/use-register-shortcuts.js +52 -0
  62. package/build/components/list/use-register-shortcuts.js.map +1 -0
  63. package/build/components/navigation-sidebar/index.js +26 -10
  64. package/build/components/navigation-sidebar/index.js.map +1 -1
  65. package/build/components/navigation-sidebar/navigation-panel/index.js +42 -44
  66. package/build/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
  67. package/build/components/navigation-sidebar/navigation-toggle/index.js +5 -17
  68. package/build/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
  69. package/build/components/template-details/index.js +3 -2
  70. package/build/components/template-details/index.js.map +1 -1
  71. package/build/components/template-part-converter/convert-to-template-part.js +20 -84
  72. package/build/components/template-part-converter/convert-to-template-part.js.map +1 -1
  73. package/build/components/welcome-guide/editor.js +58 -0
  74. package/build/components/welcome-guide/editor.js.map +1 -0
  75. package/build/components/welcome-guide/image.js +27 -0
  76. package/build/components/welcome-guide/image.js.map +1 -0
  77. package/build/components/welcome-guide/index.js +49 -0
  78. package/build/components/welcome-guide/index.js.map +1 -0
  79. package/build/components/welcome-guide/styles.js +83 -0
  80. package/build/components/welcome-guide/styles.js.map +1 -0
  81. package/build/index.js +36 -6
  82. package/build/index.js.map +1 -1
  83. package/build/plugins/index.js +4 -2
  84. package/build/plugins/index.js.map +1 -1
  85. package/build/plugins/welcome-guide-menu-item.js +39 -0
  86. package/build/plugins/welcome-guide-menu-item.js.map +1 -0
  87. package/build/store/actions.js +50 -24
  88. package/build/store/actions.js.map +1 -1
  89. package/build/store/defaults.js +4 -1
  90. package/build/store/defaults.js.map +1 -1
  91. package/build/store/selectors.js +25 -5
  92. package/build/store/selectors.js.map +1 -1
  93. package/build/utils/is-template-removable.js +21 -0
  94. package/build/utils/is-template-removable.js.map +1 -0
  95. package/build-module/components/add-new-template/index.js +36 -0
  96. package/build-module/components/add-new-template/index.js.map +1 -0
  97. package/build-module/components/add-new-template/new-template-part.js +79 -0
  98. package/build-module/components/add-new-template/new-template-part.js.map +1 -0
  99. package/build-module/components/add-new-template/new-template.js +114 -0
  100. package/build-module/components/add-new-template/new-template.js.map +1 -0
  101. package/build-module/components/block-editor/index.js +2 -1
  102. package/build-module/components/block-editor/index.js.map +1 -1
  103. package/build-module/components/create-template-part-modal/index.js +102 -0
  104. package/build-module/components/create-template-part-modal/index.js.map +1 -0
  105. package/build-module/components/editor/index.js +19 -17
  106. package/build-module/components/editor/index.js.map +1 -1
  107. package/build-module/components/global-styles/color-palette-panel.js +29 -7
  108. package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
  109. package/build-module/components/global-styles/global-styles-provider.js +10 -43
  110. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  111. package/build-module/components/global-styles/gradients-palette-panel.js +46 -0
  112. package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -0
  113. package/build-module/components/global-styles/hooks.js +30 -28
  114. package/build-module/components/global-styles/hooks.js.map +1 -1
  115. package/build-module/components/global-styles/palette.js +12 -5
  116. package/build-module/components/global-styles/palette.js.map +1 -1
  117. package/build-module/components/global-styles/screen-background-color.js +2 -1
  118. package/build-module/components/global-styles/screen-background-color.js.map +1 -1
  119. package/build-module/components/global-styles/screen-block-list.js +7 -1
  120. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  121. package/build-module/components/global-styles/screen-color-palette.js +22 -3
  122. package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
  123. package/build-module/components/global-styles/screen-link-color.js +2 -1
  124. package/build-module/components/global-styles/screen-link-color.js.map +1 -1
  125. package/build-module/components/global-styles/screen-text-color.js +2 -1
  126. package/build-module/components/global-styles/screen-text-color.js.map +1 -1
  127. package/build-module/components/global-styles/screen-typography-element.js +41 -0
  128. package/build-module/components/global-styles/screen-typography-element.js.map +1 -0
  129. package/build-module/components/global-styles/screen-typography.js +70 -6
  130. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  131. package/build-module/components/global-styles/typography-panel.js +28 -8
  132. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  133. package/build-module/components/global-styles/ui.js +11 -0
  134. package/build-module/components/global-styles/ui.js.map +1 -1
  135. package/build-module/components/global-styles/use-global-styles-output.js +2 -2
  136. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  137. package/build-module/components/global-styles/utils.js +1 -1
  138. package/build-module/components/global-styles/utils.js.map +1 -1
  139. package/build-module/components/header/index.js +1 -3
  140. package/build-module/components/header/index.js.map +1 -1
  141. package/build-module/components/keyboard-shortcuts/index.js +26 -0
  142. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  143. package/build-module/components/list/actions/index.js +85 -0
  144. package/build-module/components/list/actions/index.js.map +1 -0
  145. package/build-module/components/list/actions/rename-menu-item.js +101 -0
  146. package/build-module/components/list/actions/rename-menu-item.js.map +1 -0
  147. package/build-module/components/list/added-by.js +166 -0
  148. package/build-module/components/list/added-by.js.map +1 -0
  149. package/build-module/components/list/header.js +37 -0
  150. package/build-module/components/list/header.js.map +1 -0
  151. package/build-module/components/list/index.js +81 -0
  152. package/build-module/components/list/index.js.map +1 -0
  153. package/build-module/components/list/table.js +98 -0
  154. package/build-module/components/list/table.js.map +1 -0
  155. package/build-module/components/list/use-register-shortcuts.js +41 -0
  156. package/build-module/components/list/use-register-shortcuts.js.map +1 -0
  157. package/build-module/components/navigation-sidebar/index.js +26 -10
  158. package/build-module/components/navigation-sidebar/index.js.map +1 -1
  159. package/build-module/components/navigation-sidebar/navigation-panel/index.js +41 -44
  160. package/build-module/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
  161. package/build-module/components/navigation-sidebar/navigation-toggle/index.js +6 -18
  162. package/build-module/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
  163. package/build-module/components/template-details/index.js +3 -2
  164. package/build-module/components/template-details/index.js.map +1 -1
  165. package/build-module/components/template-part-converter/convert-to-template-part.js +20 -84
  166. package/build-module/components/template-part-converter/convert-to-template-part.js.map +1 -1
  167. package/build-module/components/welcome-guide/editor.js +45 -0
  168. package/build-module/components/welcome-guide/editor.js.map +1 -0
  169. package/build-module/components/welcome-guide/image.js +19 -0
  170. package/build-module/components/welcome-guide/image.js.map +1 -0
  171. package/build-module/components/welcome-guide/index.js +35 -0
  172. package/build-module/components/welcome-guide/index.js.map +1 -0
  173. package/build-module/components/welcome-guide/styles.js +69 -0
  174. package/build-module/components/welcome-guide/styles.js.map +1 -0
  175. package/build-module/index.js +28 -3
  176. package/build-module/index.js.map +1 -1
  177. package/build-module/plugins/index.js +3 -2
  178. package/build-module/plugins/index.js.map +1 -1
  179. package/build-module/plugins/welcome-guide-menu-item.js +27 -0
  180. package/build-module/plugins/welcome-guide-menu-item.js.map +1 -0
  181. package/build-module/store/actions.js +51 -25
  182. package/build-module/store/actions.js.map +1 -1
  183. package/build-module/store/defaults.js +4 -1
  184. package/build-module/store/defaults.js.map +1 -1
  185. package/build-module/store/selectors.js +21 -3
  186. package/build-module/store/selectors.js.map +1 -1
  187. package/build-module/utils/is-template-removable.js +14 -0
  188. package/build-module/utils/is-template-removable.js.map +1 -0
  189. package/build-style/style-rtl.css +468 -33
  190. package/build-style/style.css +468 -33
  191. package/package.json +10 -8
  192. package/src/components/add-new-template/index.js +30 -0
  193. package/src/components/add-new-template/new-template-part.js +81 -0
  194. package/src/components/add-new-template/new-template.js +136 -0
  195. package/src/components/add-new-template/style.scss +11 -0
  196. package/src/components/block-editor/index.js +2 -0
  197. package/src/components/create-template-part-modal/index.js +132 -0
  198. package/src/components/{template-part-converter → create-template-part-modal}/style.scss +9 -9
  199. package/src/components/editor/index.js +22 -15
  200. package/src/components/editor/style.scss +8 -0
  201. package/src/components/global-styles/color-palette-panel.js +64 -7
  202. package/src/components/global-styles/global-styles-provider.js +7 -36
  203. package/src/components/global-styles/gradients-palette-panel.js +79 -0
  204. package/src/components/global-styles/hooks.js +59 -27
  205. package/src/components/global-styles/palette.js +30 -10
  206. package/src/components/global-styles/screen-background-color.js +1 -0
  207. package/src/components/global-styles/screen-block-list.js +11 -1
  208. package/src/components/global-styles/screen-color-palette.js +30 -3
  209. package/src/components/global-styles/screen-link-color.js +1 -0
  210. package/src/components/global-styles/screen-text-color.js +1 -0
  211. package/src/components/global-styles/screen-typography-element.js +39 -0
  212. package/src/components/global-styles/screen-typography.js +84 -3
  213. package/src/components/global-styles/style.scss +33 -0
  214. package/src/components/global-styles/test/use-global-styles-output.js +3 -3
  215. package/src/components/global-styles/test/utils.js +1 -1
  216. package/src/components/global-styles/typography-panel.js +37 -7
  217. package/src/components/global-styles/ui.js +9 -0
  218. package/src/components/global-styles/use-global-styles-output.js +2 -2
  219. package/src/components/global-styles/utils.js +1 -1
  220. package/src/components/header/index.js +0 -6
  221. package/src/components/keyboard-shortcuts/index.js +32 -0
  222. package/src/components/list/actions/index.js +95 -0
  223. package/src/components/list/actions/rename-menu-item.js +134 -0
  224. package/src/components/list/added-by.js +179 -0
  225. package/src/components/list/header.js +34 -0
  226. package/src/components/list/index.js +96 -0
  227. package/src/components/list/style.scss +208 -0
  228. package/src/components/list/table.js +121 -0
  229. package/src/components/list/use-register-shortcuts.js +45 -0
  230. package/src/components/navigation-sidebar/index.js +24 -8
  231. package/src/components/navigation-sidebar/navigation-panel/index.js +57 -51
  232. package/src/components/navigation-sidebar/navigation-panel/style.scss +4 -2
  233. package/src/components/navigation-sidebar/navigation-toggle/index.js +24 -36
  234. package/src/components/navigation-sidebar/navigation-toggle/test/index.js +2 -0
  235. package/src/components/sidebar/style.scss +2 -1
  236. package/src/components/template-details/index.js +3 -2
  237. package/src/components/template-part-converter/convert-to-template-part.js +20 -140
  238. package/src/components/welcome-guide/editor.js +63 -0
  239. package/src/components/welcome-guide/image.js +11 -0
  240. package/src/components/welcome-guide/index.js +33 -0
  241. package/src/components/welcome-guide/style.scss +37 -0
  242. package/src/components/welcome-guide/styles.js +116 -0
  243. package/src/index.js +31 -3
  244. package/src/plugins/index.js +3 -1
  245. package/src/plugins/welcome-guide-menu-item.js +35 -0
  246. package/src/store/actions.js +85 -35
  247. package/src/store/defaults.js +4 -1
  248. package/src/store/selectors.js +22 -4
  249. package/src/store/test/actions.js +0 -30
  250. package/src/store/test/selectors.js +24 -0
  251. package/src/style.scss +9 -6
  252. package/src/utils/is-template-removable.js +13 -0
  253. package/build/components/header/navigation-link/index.js +0 -87
  254. package/build/components/header/navigation-link/index.js.map +0 -1
  255. package/build-module/components/header/navigation-link/index.js +0 -74
  256. package/build-module/components/header/navigation-link/index.js.map +0 -1
  257. package/src/components/header/navigation-link/index.js +0 -71
  258. package/src/components/header/navigation-link/style.scss +0 -69
@@ -0,0 +1,30 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useSelect } from '@wordpress/data';
5
+ import { store as coreStore } from '@wordpress/core-data';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import NewTemplate from './new-template';
11
+ import NewTemplatePart from './new-template-part';
12
+
13
+ export default function AddNewTemplate( { templateType = 'wp_template' } ) {
14
+ const postType = useSelect(
15
+ ( select ) => select( coreStore ).getPostType( templateType ),
16
+ [ templateType ]
17
+ );
18
+
19
+ if ( ! postType ) {
20
+ return null;
21
+ }
22
+
23
+ if ( templateType === 'wp_template' ) {
24
+ return <NewTemplate postType={ postType } />;
25
+ } else if ( templateType === 'wp_template_part' ) {
26
+ return <NewTemplatePart postType={ postType } />;
27
+ }
28
+
29
+ return null;
30
+ }
@@ -0,0 +1,81 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { kebabCase } from 'lodash';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { useState } from '@wordpress/element';
10
+ import { useDispatch } from '@wordpress/data';
11
+ import { Button } from '@wordpress/components';
12
+ import { addQueryArgs } from '@wordpress/url';
13
+ import apiFetch from '@wordpress/api-fetch';
14
+ import { __ } from '@wordpress/i18n';
15
+ import { store as noticesStore } from '@wordpress/notices';
16
+
17
+ /**
18
+ * Internal dependencies
19
+ */
20
+ import CreateTemplatePartModal from '../create-template-part-modal';
21
+
22
+ export default function NewTemplatePart( { postType } ) {
23
+ const [ isModalOpen, setIsModalOpen ] = useState( false );
24
+ const { createErrorNotice } = useDispatch( noticesStore );
25
+
26
+ async function createTemplatePart( { title, area } ) {
27
+ if ( ! title ) {
28
+ createErrorNotice( __( 'Title is not defined.' ), {
29
+ type: 'snackbar',
30
+ } );
31
+ return;
32
+ }
33
+
34
+ try {
35
+ const templatePart = await apiFetch( {
36
+ path: '/wp/v2/template-parts',
37
+ method: 'POST',
38
+ data: {
39
+ slug: kebabCase( title ),
40
+ title,
41
+ content: '',
42
+ area,
43
+ },
44
+ } );
45
+
46
+ // Navigate to the created template part editor.
47
+ window.location.href = addQueryArgs( window.location.href, {
48
+ postId: templatePart.id,
49
+ postType: 'wp_template_part',
50
+ } );
51
+ } catch ( error ) {
52
+ const errorMessage =
53
+ error.message && error.code !== 'unknown_error'
54
+ ? error.message
55
+ : __(
56
+ 'An error occurred while creating the template part.'
57
+ );
58
+
59
+ createErrorNotice( errorMessage, { type: 'snackbar' } );
60
+ }
61
+ }
62
+
63
+ return (
64
+ <>
65
+ <Button
66
+ variant="primary"
67
+ onClick={ () => {
68
+ setIsModalOpen( true );
69
+ } }
70
+ >
71
+ { postType.labels.add_new }
72
+ </Button>
73
+ { isModalOpen && (
74
+ <CreateTemplatePartModal
75
+ closeModal={ () => setIsModalOpen( false ) }
76
+ onCreate={ createTemplatePart }
77
+ />
78
+ ) }
79
+ </>
80
+ );
81
+ }
@@ -0,0 +1,136 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { filter, find, includes, map } from 'lodash';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import {
10
+ DropdownMenu,
11
+ MenuGroup,
12
+ MenuItem,
13
+ NavigableMenu,
14
+ } from '@wordpress/components';
15
+ import { useSelect, useDispatch } from '@wordpress/data';
16
+ import { store as coreStore } from '@wordpress/core-data';
17
+ import { store as editorStore } from '@wordpress/editor';
18
+ import { addQueryArgs } from '@wordpress/url';
19
+ import apiFetch from '@wordpress/api-fetch';
20
+ import { __ } from '@wordpress/i18n';
21
+ import { store as noticesStore } from '@wordpress/notices';
22
+
23
+ const DEFAULT_TEMPLATE_SLUGS = [
24
+ 'front-page',
25
+ 'single-post',
26
+ 'page',
27
+ 'archive',
28
+ 'search',
29
+ '404',
30
+ 'index',
31
+ ];
32
+
33
+ export default function NewTemplate( { postType } ) {
34
+ const { templates, defaultTemplateTypes } = useSelect(
35
+ ( select ) => ( {
36
+ templates: select( coreStore ).getEntityRecords(
37
+ 'postType',
38
+ 'wp_template',
39
+ { per_page: -1 }
40
+ ),
41
+ defaultTemplateTypes: select(
42
+ editorStore
43
+ ).__experimentalGetDefaultTemplateTypes(),
44
+ } ),
45
+ []
46
+ );
47
+ const { createErrorNotice } = useDispatch( noticesStore );
48
+
49
+ async function createTemplate( { slug } ) {
50
+ try {
51
+ const { title, description } = find( defaultTemplateTypes, {
52
+ slug,
53
+ } );
54
+
55
+ const template = await apiFetch( {
56
+ path: '/wp/v2/templates',
57
+ method: 'POST',
58
+ data: {
59
+ excerpt: description,
60
+ // Slugs need to be strings, so this is for template `404`
61
+ slug: slug.toString(),
62
+ status: 'publish',
63
+ title,
64
+ },
65
+ } );
66
+
67
+ // Navigate to the created template editor.
68
+ window.location.href = addQueryArgs( window.location.href, {
69
+ postId: template.id,
70
+ postType: 'wp_template',
71
+ } );
72
+
73
+ // Wait for async navigation to happen before closing the modal.
74
+ await new Promise( () => {} );
75
+ } catch ( error ) {
76
+ const errorMessage =
77
+ error.message && error.code !== 'unknown_error'
78
+ ? error.message
79
+ : __( 'An error occurred while creating the template.' );
80
+
81
+ createErrorNotice( errorMessage, {
82
+ type: 'snackbar',
83
+ } );
84
+ }
85
+ }
86
+
87
+ const existingTemplateSlugs = map( templates, 'slug' );
88
+
89
+ const missingTemplates = filter(
90
+ defaultTemplateTypes,
91
+ ( template ) =>
92
+ includes( DEFAULT_TEMPLATE_SLUGS, template.slug ) &&
93
+ ! includes( existingTemplateSlugs, template.slug )
94
+ );
95
+
96
+ if ( ! missingTemplates.length ) {
97
+ return null;
98
+ }
99
+
100
+ return (
101
+ <DropdownMenu
102
+ className="edit-site-new-template-dropdown"
103
+ icon={ null }
104
+ text={ postType.labels.add_new }
105
+ label={ postType.labels.add_new_item }
106
+ popoverProps={ {
107
+ noArrow: false,
108
+ } }
109
+ toggleProps={ {
110
+ variant: 'primary',
111
+ } }
112
+ >
113
+ { () => (
114
+ <NavigableMenu className="edit-site-new-template-dropdown__popover">
115
+ <MenuGroup label={ postType.labels.add_new_item }>
116
+ { map(
117
+ missingTemplates,
118
+ ( { title, description, slug } ) => (
119
+ <MenuItem
120
+ info={ description }
121
+ key={ slug }
122
+ onClick={ () => {
123
+ createTemplate( { slug } );
124
+ // We will be navigated way so no need to close the dropdown.
125
+ } }
126
+ >
127
+ { title }
128
+ </MenuItem>
129
+ )
130
+ ) }
131
+ </MenuGroup>
132
+ </NavigableMenu>
133
+ ) }
134
+ </DropdownMenu>
135
+ );
136
+ }
@@ -0,0 +1,11 @@
1
+ .edit-site-new-template-dropdown {
2
+ .components-dropdown-menu__toggle {
3
+ padding: 6px 12px;
4
+ }
5
+
6
+ .edit-site-new-template-dropdown__popover {
7
+ @include break-small() {
8
+ min-width: 300px;
9
+ }
10
+ }
11
+ }
@@ -20,6 +20,7 @@ import {
20
20
  store as blockEditorStore,
21
21
  } from '@wordpress/block-editor';
22
22
  import { useMergeRefs, useViewportMatch } from '@wordpress/compose';
23
+ import { ReusableBlocksMenuItems } from '@wordpress/reusable-blocks';
23
24
 
24
25
  /**
25
26
  * Internal dependencies
@@ -132,6 +133,7 @@ export default function BlockEditor( { setIsInserterOpen } ) {
132
133
  ) }
133
134
  </__unstableBlockSettingsMenuFirstItem>
134
135
  </BlockTools>
136
+ <ReusableBlocksMenuItems />
135
137
  </BlockEditorProvider>
136
138
  );
137
139
  }
@@ -0,0 +1,132 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useSelect } from '@wordpress/data';
5
+ import {
6
+ Icon,
7
+ BaseControl,
8
+ TextControl,
9
+ Flex,
10
+ FlexItem,
11
+ FlexBlock,
12
+ Button,
13
+ Modal,
14
+ __experimentalRadioGroup as RadioGroup,
15
+ __experimentalRadio as Radio,
16
+ } from '@wordpress/components';
17
+ import { __ } from '@wordpress/i18n';
18
+ import { useState } from '@wordpress/element';
19
+ import { useInstanceId } from '@wordpress/compose';
20
+ import { store as editorStore } from '@wordpress/editor';
21
+ import { check } from '@wordpress/icons';
22
+
23
+ /**
24
+ * Internal dependencies
25
+ */
26
+ import { TEMPLATE_PART_AREA_GENERAL } from '../../store/constants';
27
+
28
+ export default function CreateTemplatePartModal( { closeModal, onCreate } ) {
29
+ const [ title, setTitle ] = useState( '' );
30
+ const [ area, setArea ] = useState( TEMPLATE_PART_AREA_GENERAL );
31
+ const [ isSubmitting, setIsSubmitting ] = useState( false );
32
+ const instanceId = useInstanceId( CreateTemplatePartModal );
33
+
34
+ const templatePartAreas = useSelect(
35
+ ( select ) =>
36
+ select( editorStore ).__experimentalGetDefaultTemplatePartAreas(),
37
+ []
38
+ );
39
+
40
+ return (
41
+ <Modal
42
+ title={ __( 'Create a template part' ) }
43
+ closeLabel={ __( 'Close' ) }
44
+ onRequestClose={ closeModal }
45
+ overlayClassName="edit-site-create-template-part-modal"
46
+ >
47
+ <form
48
+ onSubmit={ async ( event ) => {
49
+ event.preventDefault();
50
+ if ( ! title ) {
51
+ return;
52
+ }
53
+ setIsSubmitting( true );
54
+ await onCreate( { title, area } );
55
+ setIsSubmitting( false );
56
+ closeModal();
57
+ } }
58
+ >
59
+ <TextControl
60
+ label={ __( 'Name' ) }
61
+ value={ title }
62
+ onChange={ setTitle }
63
+ required
64
+ />
65
+ <BaseControl
66
+ label={ __( 'Area' ) }
67
+ id={ `edit-site-create-template-part-modal__area-selection-${ instanceId }` }
68
+ className="edit-site-create-template-part-modal__area-base-control"
69
+ >
70
+ <RadioGroup
71
+ label={ __( 'Area' ) }
72
+ className="edit-site-create-template-part-modal__area-radio-group"
73
+ id={ `edit-site-create-template-part-modal__area-selection-${ instanceId }` }
74
+ onChange={ setArea }
75
+ checked={ area }
76
+ >
77
+ { templatePartAreas.map(
78
+ ( { icon, label, area: value, description } ) => (
79
+ <Radio
80
+ key={ label }
81
+ value={ value }
82
+ className="edit-site-create-template-part-modal__area-radio"
83
+ >
84
+ <Flex align="start" justify="start">
85
+ <FlexItem>
86
+ <Icon icon={ icon } />
87
+ </FlexItem>
88
+ <FlexBlock className="edit-site-create-template-part-modal__option-label">
89
+ { label }
90
+ <div>{ description }</div>
91
+ </FlexBlock>
92
+
93
+ <FlexItem className="edit-site-create-template-part-modal__checkbox">
94
+ { area === value && (
95
+ <Icon icon={ check } />
96
+ ) }
97
+ </FlexItem>
98
+ </Flex>
99
+ </Radio>
100
+ )
101
+ ) }
102
+ </RadioGroup>
103
+ </BaseControl>
104
+ <Flex
105
+ className="edit-site-create-template-part-modal__modal-actions"
106
+ justify="flex-end"
107
+ >
108
+ <FlexItem>
109
+ <Button
110
+ variant="secondary"
111
+ onClick={ () => {
112
+ closeModal();
113
+ } }
114
+ >
115
+ { __( 'Cancel' ) }
116
+ </Button>
117
+ </FlexItem>
118
+ <FlexItem>
119
+ <Button
120
+ variant="primary"
121
+ type="submit"
122
+ disabled={ ! title }
123
+ isBusy={ isSubmitting }
124
+ >
125
+ { __( 'Create' ) }
126
+ </Button>
127
+ </FlexItem>
128
+ </Flex>
129
+ </form>
130
+ </Modal>
131
+ );
132
+ }
@@ -1,5 +1,5 @@
1
- .edit-site-template-part-converter__modal {
2
- z-index: z-index(".edit-site-template-part-converter__modal");
1
+ .edit-site-create-template-part-modal {
2
+ z-index: z-index(".edit-site-create-template-part-modal");
3
3
 
4
4
  .components-modal__frame {
5
5
  @include break-small {
@@ -9,21 +9,21 @@
9
9
  }
10
10
 
11
11
 
12
- .edit-site-template-part-converter__convert-modal-actions {
12
+ .edit-site-create-template-part-modal__modal-actions {
13
13
  padding-top: $grid-unit-15;
14
14
  }
15
15
 
16
- .edit-site-template-part-converter__area-base-control .components-base-control__label {
16
+ .edit-site-create-template-part-modal__area-base-control .components-base-control__label {
17
17
  margin: $grid-unit-20 0 $grid-unit-10;
18
18
  cursor: auto;
19
19
  }
20
20
 
21
- .edit-site-template-part-converter__area-radio-group {
21
+ .edit-site-create-template-part-modal__area-radio-group {
22
22
  width: 100%;
23
23
  border: $border-width solid $gray-700;
24
24
  border-radius: 2px;
25
25
 
26
- .components-button.edit-site-template-part-converter__area-radio {
26
+ .components-button.edit-site-create-template-part-modal__area-radio {
27
27
  display: block;
28
28
  width: 100%;
29
29
  height: 100%;
@@ -56,12 +56,12 @@
56
56
  color: $gray-900;
57
57
  cursor: auto;
58
58
 
59
- .edit-site-template-part-converter__option-label div {
59
+ .edit-site-create-template-part-modal__option-label div {
60
60
  color: $gray-600;
61
61
  }
62
62
  }
63
63
 
64
- .edit-site-template-part-converter__option-label {
64
+ .edit-site-create-template-part-modal__option-label {
65
65
  padding-top: $grid-unit-05;
66
66
  white-space: normal;
67
67
 
@@ -71,7 +71,7 @@
71
71
  }
72
72
  }
73
73
 
74
- .edit-site-template-part-converter__checkbox {
74
+ .edit-site-create-template-part-modal__checkbox {
75
75
  margin-left: auto;
76
76
  min-width: $grid-unit-30;
77
77
  }
@@ -26,25 +26,31 @@ 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
+ import {
30
+ ShortcutProvider,
31
+ store as keyboardShortcutsStore,
32
+ } from '@wordpress/keyboard-shortcuts';
30
33
 
31
34
  /**
32
35
  * Internal dependencies
33
36
  */
34
37
  import Header from '../header';
35
38
  import { SidebarComplementaryAreaFills } from '../sidebar';
39
+ import NavigationSidebar from '../navigation-sidebar';
36
40
  import BlockEditor from '../block-editor';
37
41
  import KeyboardShortcuts from '../keyboard-shortcuts';
38
42
  import URLQueryController from '../url-query-controller';
39
43
  import InserterSidebar from '../secondary-sidebar/inserter-sidebar';
40
44
  import ListViewSidebar from '../secondary-sidebar/list-view-sidebar';
41
45
  import ErrorBoundary from '../error-boundary';
46
+ import WelcomeGuide from '../welcome-guide';
42
47
  import { store as editSiteStore } from '../../store';
43
48
  import { GlobalStylesRenderer } from './global-styles-renderer';
44
49
  import { GlobalStylesProvider } from '../global-styles/global-styles-provider';
45
50
 
46
51
  const interfaceLabels = {
47
52
  secondarySidebar: __( 'Block Library' ),
53
+ drawer: __( 'Navigation Sidebar' ),
48
54
  };
49
55
 
50
56
  function Editor( { initialSettings, onError } ) {
@@ -59,6 +65,8 @@ function Editor( { initialSettings, onError } ) {
59
65
  template,
60
66
  templateResolved,
61
67
  isNavigationOpen,
68
+ previousShortcut,
69
+ nextShortcut,
62
70
  } = useSelect( ( select ) => {
63
71
  const {
64
72
  isInserterOpened,
@@ -95,13 +103,19 @@ function Editor( { initialSettings, onError } ) {
95
103
  : false,
96
104
  entityId: postId,
97
105
  isNavigationOpen: isNavigationOpened(),
106
+ previousShortcut: select(
107
+ keyboardShortcutsStore
108
+ ).getAllShortcutKeyCombinations( 'core/edit-site/previous-region' ),
109
+ nextShortcut: select(
110
+ keyboardShortcutsStore
111
+ ).getAllShortcutKeyCombinations( 'core/edit-site/next-region' ),
98
112
  };
99
113
  }, [] );
100
114
  const { updateEditorSettings } = useDispatch( editorStore );
101
115
  const { setPage, setIsInserterOpened, updateSettings } = useDispatch(
102
116
  editSiteStore
103
117
  );
104
- const { enableComplementaryArea } = useDispatch( interfaceStore );
118
+
105
119
  useEffect( () => {
106
120
  updateSettings( initialSettings );
107
121
  }, [] );
@@ -159,19 +173,6 @@ function Editor( { initialSettings, onError } ) {
159
173
  }
160
174
  }, [ isNavigationOpen ] );
161
175
 
162
- useEffect(
163
- function openGlobalStylesOnLoad() {
164
- const searchParams = new URLSearchParams( window.location.search );
165
- if ( searchParams.get( 'styles' ) === 'open' ) {
166
- enableComplementaryArea(
167
- 'core/edit-site',
168
- 'edit-site/global-styles'
169
- );
170
- }
171
- },
172
- [ enableComplementaryArea ]
173
- );
174
-
175
176
  // Don't render the Editor until the settings are set and loaded
176
177
  const isReady =
177
178
  settings?.siteUrl &&
@@ -218,6 +219,7 @@ function Editor( { initialSettings, onError } ) {
218
219
  <ComplementaryArea.Slot scope="core/edit-site" />
219
220
  )
220
221
  }
222
+ drawer={ <NavigationSidebar /> }
221
223
  header={
222
224
  <Header
223
225
  openEntitiesSavedStates={
@@ -287,7 +289,12 @@ function Editor( { initialSettings, onError } ) {
287
289
  </>
288
290
  }
289
291
  footer={ <BlockBreadcrumb /> }
292
+ shortcuts={ {
293
+ previous: previousShortcut,
294
+ next: nextShortcut,
295
+ } }
290
296
  />
297
+ <WelcomeGuide />
291
298
  <Popover.Slot />
292
299
  <PluginArea />
293
300
  </ErrorBoundary>
@@ -1,3 +1,11 @@
1
+ html #wpadminbar {
2
+ display: none;
3
+ }
4
+
5
+ html.wp-toolbar {
6
+ padding-top: 0;
7
+ }
8
+
1
9
  .edit-site-editor__toggle-save-panel {
2
10
  z-index: z-index(".edit-site-editor__toggle-save-panel");
3
11
  position: fixed !important; // Need to override the default relative positioning
@@ -1,7 +1,11 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { __experimentalColorEdit as ColorEdit } from '@wordpress/components';
4
+ import {
5
+ __experimentalPaletteEdit as PaletteEdit,
6
+ __experimentalVStack as VStack,
7
+ } from '@wordpress/components';
8
+ import { __ } from '@wordpress/i18n';
5
9
 
6
10
  /**
7
11
  * Internal dependencies
@@ -9,14 +13,67 @@ import { __experimentalColorEdit as ColorEdit } from '@wordpress/components';
9
13
  import { useSetting } from './hooks';
10
14
 
11
15
  export default function ColorPalettePanel( { name } ) {
12
- const [ userColors, setColors ] = useSetting(
13
- 'color.palette',
16
+ const [ themeColors, setThemeColors ] = useSetting(
17
+ 'color.palette.theme',
18
+ name
19
+ );
20
+ const [ baseThemeColors ] = useSetting(
21
+ 'color.palette.theme',
22
+ name,
23
+ 'base'
24
+ );
25
+ const [ defaultColors, setDefaultColors ] = useSetting(
26
+ 'color.palette.default',
27
+ name
28
+ );
29
+ const [ baseDefaultColors ] = useSetting(
30
+ 'color.palette.default',
14
31
  name,
15
- 'user'
32
+ 'base'
33
+ );
34
+ const [ customColors, setCustomColors ] = useSetting(
35
+ 'color.palette.custom',
36
+ name
37
+ );
38
+
39
+ const [ defaultPaletteEnabled ] = useSetting(
40
+ 'color.defaultPalette',
41
+ name
16
42
  );
17
43
  return (
18
- <div className="edit-site-global-styles-color-palette-panel">
19
- <ColorEdit colors={ userColors } onChange={ setColors } />
20
- </div>
44
+ <VStack
45
+ className="edit-site-global-styles-color-palette-panel"
46
+ spacing={ 10 }
47
+ >
48
+ { !! themeColors && !! themeColors.length && (
49
+ <PaletteEdit
50
+ canReset={ themeColors !== baseThemeColors }
51
+ canOnlyChangeValues
52
+ colors={ themeColors }
53
+ onChange={ setThemeColors }
54
+ paletteLabel={ __( 'Theme' ) }
55
+ />
56
+ ) }
57
+ { !! defaultColors &&
58
+ !! defaultColors.length &&
59
+ !! defaultPaletteEnabled && (
60
+ <PaletteEdit
61
+ canReset={ defaultColors !== baseDefaultColors }
62
+ canOnlyChangeValues
63
+ colors={ defaultColors }
64
+ onChange={ setDefaultColors }
65
+ paletteLabel={ __( 'Default' ) }
66
+ />
67
+ ) }
68
+ <PaletteEdit
69
+ colors={ customColors }
70
+ onChange={ setCustomColors }
71
+ paletteLabel={ __( 'Custom' ) }
72
+ emptyMessage={ __(
73
+ 'Custom colors are empty! Add some colors to create your own color palette.'
74
+ ) }
75
+ slugPrefix="custom-"
76
+ />
77
+ </VStack>
21
78
  );
22
79
  }