@wordpress/edit-site 4.10.0 → 4.12.1-next.d6164808d3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/add-new-template/add-custom-template-modal.js +26 -44
  3. package/build/components/add-new-template/add-custom-template-modal.js.map +1 -1
  4. package/build/components/add-new-template/new-template.js +45 -23
  5. package/build/components/add-new-template/new-template.js.map +1 -1
  6. package/build/components/add-new-template/utils.js +493 -242
  7. package/build/components/add-new-template/utils.js.map +1 -1
  8. package/build/components/block-editor/index.js +1 -3
  9. package/build/components/block-editor/index.js.map +1 -1
  10. package/build/components/block-editor/resizable-editor.js +26 -12
  11. package/build/components/block-editor/resizable-editor.js.map +1 -1
  12. package/build/components/global-styles/border-panel.js +3 -3
  13. package/build/components/global-styles/border-panel.js.map +1 -1
  14. package/build/components/global-styles/dimensions-panel.js +280 -20
  15. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  16. package/build/components/global-styles/hooks.js +4 -4
  17. package/build/components/global-styles/hooks.js.map +1 -1
  18. package/build/components/global-styles/screen-color-palette.js +1 -1
  19. package/build/components/global-styles/screen-color-palette.js.map +1 -1
  20. package/build/components/global-styles/screen-colors.js +51 -7
  21. package/build/components/global-styles/screen-colors.js.map +1 -1
  22. package/build/components/global-styles/screen-heading-color.js +157 -0
  23. package/build/components/global-styles/screen-heading-color.js.map +1 -0
  24. package/build/components/global-styles/screen-typography-element.js +4 -0
  25. package/build/components/global-styles/screen-typography-element.js.map +1 -1
  26. package/build/components/global-styles/screen-typography.js +5 -0
  27. package/build/components/global-styles/screen-typography.js.map +1 -1
  28. package/build/components/global-styles/typography-panel.js +82 -14
  29. package/build/components/global-styles/typography-panel.js.map +1 -1
  30. package/build/components/global-styles/typography-utils.js +217 -0
  31. package/build/components/global-styles/typography-utils.js.map +1 -0
  32. package/build/components/global-styles/ui.js +11 -0
  33. package/build/components/global-styles/ui.js.map +1 -1
  34. package/build/components/global-styles/use-global-styles-output.js +183 -52
  35. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  36. package/build/components/global-styles/utils.js +85 -5
  37. package/build/components/global-styles/utils.js.map +1 -1
  38. package/build/components/header/document-actions/index.js +1 -0
  39. package/build/components/header/document-actions/index.js.map +1 -1
  40. package/build/components/header/index.js +27 -12
  41. package/build/components/header/index.js.map +1 -1
  42. package/build/components/header/mode-switcher/index.js +0 -4
  43. package/build/components/header/mode-switcher/index.js.map +1 -1
  44. package/build/components/header/more-menu/index.js +13 -3
  45. package/build/components/header/more-menu/index.js.map +1 -1
  46. package/build/components/header/undo-redo/redo.js +2 -1
  47. package/build/components/header/undo-redo/redo.js.map +1 -1
  48. package/build/components/list/actions/index.js +1 -1
  49. package/build/components/list/actions/index.js.map +1 -1
  50. package/build/components/save-button/index.js +2 -3
  51. package/build/components/save-button/index.js.map +1 -1
  52. package/build/components/sidebar/default-sidebar.js +11 -1
  53. package/build/components/sidebar/default-sidebar.js.map +1 -1
  54. package/build/components/sidebar/navigation-menu-sidebar/navigation-menu.js +2 -2
  55. package/build/components/sidebar/navigation-menu-sidebar/navigation-menu.js.map +1 -1
  56. package/build/components/sidebar/plugin-sidebar/index.js +11 -1
  57. package/build/components/sidebar/plugin-sidebar/index.js.map +1 -1
  58. package/build/components/sidebar/template-card/template-actions.js +1 -1
  59. package/build/components/sidebar/template-card/template-actions.js.map +1 -1
  60. package/build/components/template-details/edit-template-title.js +1 -1
  61. package/build/components/template-details/edit-template-title.js.map +1 -1
  62. package/build/components/template-details/index.js +19 -9
  63. package/build/components/template-details/index.js.map +1 -1
  64. package/build/components/template-details/template-areas.js +1 -1
  65. package/build/components/template-details/template-areas.js.map +1 -1
  66. package/build/components/template-details/template-part-area-selector.js +47 -0
  67. package/build/components/template-details/template-part-area-selector.js.map +1 -0
  68. package/build/components/template-part-converter/convert-to-template-part.js +4 -1
  69. package/build/components/template-part-converter/convert-to-template-part.js.map +1 -1
  70. package/build/hooks/index.js +2 -0
  71. package/build/hooks/index.js.map +1 -1
  72. package/build/hooks/template-part-edit.js +86 -0
  73. package/build/hooks/template-part-edit.js.map +1 -0
  74. package/build/index.js +1 -1
  75. package/build/index.js.map +1 -1
  76. package/build-module/components/add-new-template/add-custom-template-modal.js +27 -45
  77. package/build-module/components/add-new-template/add-custom-template-modal.js.map +1 -1
  78. package/build-module/components/add-new-template/new-template.js +45 -25
  79. package/build-module/components/add-new-template/new-template.js.map +1 -1
  80. package/build-module/components/add-new-template/utils.js +489 -230
  81. package/build-module/components/add-new-template/utils.js.map +1 -1
  82. package/build-module/components/block-editor/index.js +1 -2
  83. package/build-module/components/block-editor/index.js.map +1 -1
  84. package/build-module/components/block-editor/resizable-editor.js +26 -12
  85. package/build-module/components/block-editor/resizable-editor.js.map +1 -1
  86. package/build-module/components/global-styles/border-panel.js +3 -3
  87. package/build-module/components/global-styles/border-panel.js.map +1 -1
  88. package/build-module/components/global-styles/dimensions-panel.js +278 -22
  89. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  90. package/build-module/components/global-styles/hooks.js +4 -4
  91. package/build-module/components/global-styles/hooks.js.map +1 -1
  92. package/build-module/components/global-styles/screen-color-palette.js +1 -1
  93. package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
  94. package/build-module/components/global-styles/screen-colors.js +51 -7
  95. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  96. package/build-module/components/global-styles/screen-heading-color.js +143 -0
  97. package/build-module/components/global-styles/screen-heading-color.js.map +1 -0
  98. package/build-module/components/global-styles/screen-typography-element.js +4 -0
  99. package/build-module/components/global-styles/screen-typography-element.js.map +1 -1
  100. package/build-module/components/global-styles/screen-typography.js +5 -0
  101. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  102. package/build-module/components/global-styles/typography-panel.js +83 -15
  103. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  104. package/build-module/components/global-styles/typography-utils.js +204 -0
  105. package/build-module/components/global-styles/typography-utils.js.map +1 -0
  106. package/build-module/components/global-styles/ui.js +10 -0
  107. package/build-module/components/global-styles/ui.js.map +1 -1
  108. package/build-module/components/global-styles/use-global-styles-output.js +182 -61
  109. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  110. package/build-module/components/global-styles/utils.js +82 -5
  111. package/build-module/components/global-styles/utils.js.map +1 -1
  112. package/build-module/components/header/document-actions/index.js +1 -0
  113. package/build-module/components/header/document-actions/index.js.map +1 -1
  114. package/build-module/components/header/index.js +30 -14
  115. package/build-module/components/header/index.js.map +1 -1
  116. package/build-module/components/header/mode-switcher/index.js +0 -4
  117. package/build-module/components/header/mode-switcher/index.js.map +1 -1
  118. package/build-module/components/header/more-menu/index.js +13 -3
  119. package/build-module/components/header/more-menu/index.js.map +1 -1
  120. package/build-module/components/header/undo-redo/redo.js +3 -2
  121. package/build-module/components/header/undo-redo/redo.js.map +1 -1
  122. package/build-module/components/list/actions/index.js +1 -1
  123. package/build-module/components/list/actions/index.js.map +1 -1
  124. package/build-module/components/save-button/index.js +3 -4
  125. package/build-module/components/save-button/index.js.map +1 -1
  126. package/build-module/components/sidebar/default-sidebar.js +9 -1
  127. package/build-module/components/sidebar/default-sidebar.js.map +1 -1
  128. package/build-module/components/sidebar/navigation-menu-sidebar/navigation-menu.js +3 -3
  129. package/build-module/components/sidebar/navigation-menu-sidebar/navigation-menu.js.map +1 -1
  130. package/build-module/components/sidebar/plugin-sidebar/index.js +9 -1
  131. package/build-module/components/sidebar/plugin-sidebar/index.js.map +1 -1
  132. package/build-module/components/sidebar/template-card/template-actions.js +1 -1
  133. package/build-module/components/sidebar/template-card/template-actions.js.map +1 -1
  134. package/build-module/components/template-details/edit-template-title.js +1 -1
  135. package/build-module/components/template-details/edit-template-title.js.map +1 -1
  136. package/build-module/components/template-details/index.js +19 -10
  137. package/build-module/components/template-details/index.js.map +1 -1
  138. package/build-module/components/template-details/template-areas.js +1 -1
  139. package/build-module/components/template-details/template-areas.js.map +1 -1
  140. package/build-module/components/template-details/template-part-area-selector.js +35 -0
  141. package/build-module/components/template-details/template-part-area-selector.js.map +1 -0
  142. package/build-module/components/template-part-converter/convert-to-template-part.js +3 -1
  143. package/build-module/components/template-part-converter/convert-to-template-part.js.map +1 -1
  144. package/build-module/hooks/index.js +1 -0
  145. package/build-module/hooks/index.js.map +1 -1
  146. package/build-module/hooks/template-part-edit.js +67 -0
  147. package/build-module/hooks/template-part-edit.js.map +1 -0
  148. package/build-module/index.js +1 -1
  149. package/build-module/index.js.map +1 -1
  150. package/build-style/style-rtl.css +40 -33
  151. package/build-style/style.css +40 -33
  152. package/package.json +29 -29
  153. package/src/components/add-new-template/add-custom-template-modal.js +39 -48
  154. package/src/components/add-new-template/new-template.js +50 -58
  155. package/src/components/add-new-template/style.scss +20 -8
  156. package/src/components/add-new-template/utils.js +529 -231
  157. package/src/components/block-editor/index.js +0 -2
  158. package/src/components/block-editor/resizable-editor.js +28 -18
  159. package/src/components/editor/style.scss +1 -0
  160. package/src/components/global-styles/border-panel.js +3 -3
  161. package/src/components/global-styles/dimensions-panel.js +344 -45
  162. package/src/components/global-styles/hooks.js +6 -3
  163. package/src/components/global-styles/screen-color-palette.js +1 -1
  164. package/src/components/global-styles/screen-colors.js +46 -4
  165. package/src/components/global-styles/screen-heading-color.js +201 -0
  166. package/src/components/global-styles/screen-typography-element.js +4 -0
  167. package/src/components/global-styles/screen-typography.js +6 -0
  168. package/src/components/global-styles/style.scss +14 -6
  169. package/src/components/global-styles/test/typography-utils.js +130 -0
  170. package/src/components/global-styles/test/use-global-styles-output.js +143 -4
  171. package/src/components/global-styles/test/utils.js +68 -8
  172. package/src/components/global-styles/typography-panel.js +119 -48
  173. package/src/components/global-styles/typography-utils.js +228 -0
  174. package/src/components/global-styles/ui.js +13 -0
  175. package/src/components/global-styles/use-global-styles-output.js +203 -53
  176. package/src/components/global-styles/utils.js +70 -4
  177. package/src/components/header/document-actions/index.js +3 -0
  178. package/src/components/header/index.js +41 -14
  179. package/src/components/header/mode-switcher/index.js +0 -3
  180. package/src/components/header/more-menu/index.js +7 -2
  181. package/src/components/header/style.scss +5 -3
  182. package/src/components/header/undo-redo/redo.js +6 -2
  183. package/src/components/list/actions/index.js +3 -1
  184. package/src/components/save-button/index.js +10 -13
  185. package/src/components/sidebar/default-sidebar.js +12 -0
  186. package/src/components/sidebar/navigation-menu-sidebar/navigation-menu.js +1 -5
  187. package/src/components/sidebar/plugin-sidebar/index.js +12 -0
  188. package/src/components/sidebar/style.scss +4 -0
  189. package/src/components/sidebar/template-card/template-actions.js +3 -1
  190. package/src/components/template-details/edit-template-title.js +7 -3
  191. package/src/components/template-details/index.js +23 -8
  192. package/src/components/template-details/style.scss +0 -5
  193. package/src/components/template-details/template-areas.js +3 -1
  194. package/src/components/template-details/template-part-area-selector.js +38 -0
  195. package/src/components/template-part-converter/convert-to-template-part.js +3 -1
  196. package/src/hooks/index.js +1 -0
  197. package/src/hooks/template-part-edit.js +82 -0
  198. package/src/index.js +1 -1
  199. package/src/style.scss +0 -1
  200. package/build/components/edit-template-part-menu-button/index.js +0 -90
  201. package/build/components/edit-template-part-menu-button/index.js.map +0 -1
  202. package/build-module/components/edit-template-part-menu-button/index.js +0 -72
  203. package/build-module/components/edit-template-part-menu-button/index.js.map +0 -1
  204. package/src/components/edit-template-part-menu-button/index.js +0 -82
@@ -11,8 +11,14 @@ import {
11
11
  import { useSelect, useDispatch } from '@wordpress/data';
12
12
  import { PinnedItems } from '@wordpress/interface';
13
13
  import { _x, __ } from '@wordpress/i18n';
14
- import { listView, plus } from '@wordpress/icons';
15
- import { Button, ToolbarItem } from '@wordpress/components';
14
+ import { listView, plus, external } from '@wordpress/icons';
15
+ import {
16
+ Button,
17
+ ToolbarItem,
18
+ MenuGroup,
19
+ MenuItem,
20
+ VisuallyHidden,
21
+ } from '@wordpress/components';
16
22
  import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
17
23
  import { store as editorStore } from '@wordpress/editor';
18
24
  import { store as coreStore } from '@wordpress/core-data';
@@ -48,6 +54,7 @@ export default function Header( {
48
54
  listViewShortcut,
49
55
  isLoaded,
50
56
  isVisualMode,
57
+ settings,
51
58
  } = useSelect( ( select ) => {
52
59
  const {
53
60
  __experimentalGetPreviewDeviceType,
@@ -56,6 +63,7 @@ export default function Header( {
56
63
  isInserterOpened,
57
64
  isListViewOpened,
58
65
  getEditorMode,
66
+ getSettings,
59
67
  } = select( editSiteStore );
60
68
  const { getEditedEntityRecord } = select( coreStore );
61
69
  const { __experimentalGetTemplateInfo: getTemplateInfo } =
@@ -79,6 +87,7 @@ export default function Header( {
79
87
  'core/edit-site/toggle-list-view'
80
88
  ),
81
89
  isVisualMode: getEditorMode() === 'visual',
90
+ settings: getSettings(),
82
91
  };
83
92
  }, [] );
84
93
 
@@ -106,6 +115,13 @@ export default function Header( {
106
115
 
107
116
  const isFocusMode = templateType === 'wp_template_part';
108
117
 
118
+ /* translators: button label text should, if possible, be under 16 characters. */
119
+ const longLabel = _x(
120
+ 'Toggle block inserter',
121
+ 'Generic label for block inserter button'
122
+ );
123
+ const shortLabel = ! isInserterOpen ? __( 'Add' ) : __( 'Close' );
124
+
109
125
  return (
110
126
  <div className="edit-site-header">
111
127
  <NavigableToolbar
@@ -123,17 +139,9 @@ export default function Header( {
123
139
  onClick={ openInserter }
124
140
  disabled={ ! isVisualMode }
125
141
  icon={ plus }
126
- /* translators: button label text should, if possible, be under 16
127
- characters. */
128
- label={ _x(
129
- 'Toggle block inserter',
130
- 'Generic label for block inserter button'
131
- ) }
142
+ label={ showIconLabels ? shortLabel : longLabel }
132
143
  showTooltip={ ! showIconLabels }
133
- >
134
- { showIconLabels &&
135
- ( ! isInserterOpen ? __( 'Add' ) : __( 'Close' ) ) }
136
- </ToolbarItem>
144
+ />
137
145
  { isLargeViewport && (
138
146
  <>
139
147
  <ToolbarItem
@@ -169,6 +177,9 @@ export default function Header( {
169
177
  onClick={ toggleListView }
170
178
  shortcut={ listViewShortcut }
171
179
  showTooltip={ ! showIconLabels }
180
+ variant={
181
+ showIconLabels ? 'tertiary' : undefined
182
+ }
172
183
  />
173
184
  </>
174
185
  ) }
@@ -201,14 +212,30 @@ export default function Header( {
201
212
  <PreviewOptions
202
213
  deviceType={ deviceType }
203
214
  setDeviceType={ setPreviewDeviceType }
204
- />
215
+ >
216
+ <MenuGroup>
217
+ <MenuItem
218
+ href={ settings?.siteUrl }
219
+ target="_blank"
220
+ icon={ external }
221
+ >
222
+ { __( 'View site' ) }
223
+ <VisuallyHidden as="span">
224
+ {
225
+ /* translators: accessibility text */
226
+ __( '(opens in a new tab)' )
227
+ }
228
+ </VisuallyHidden>
229
+ </MenuItem>
230
+ </MenuGroup>
231
+ </PreviewOptions>
205
232
  ) }
206
233
  <SaveButton
207
234
  openEntitiesSavedStates={ openEntitiesSavedStates }
208
235
  isEntitiesSavedStatesOpen={ isEntitiesSavedStatesOpen }
209
236
  />
210
237
  <PinnedItems.Slot scope="core/edit-site" />
211
- <MoreMenu />
238
+ <MoreMenu showIconLabels={ showIconLabels } />
212
239
  </div>
213
240
  </div>
214
241
  </div>
@@ -6,9 +6,6 @@ import { MenuItemsChoice, MenuGroup } from '@wordpress/components';
6
6
  import { useSelect, useDispatch } from '@wordpress/data';
7
7
  import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
8
8
 
9
- /**
10
- * Internal dependencies
11
- */
12
9
  /**
13
10
  * Internal dependencies
14
11
  */
@@ -21,7 +21,7 @@ import WelcomeGuideMenuItem from './welcome-guide-menu-item';
21
21
  import CopyContentMenuItem from './copy-content-menu-item';
22
22
  import ModeSwitcher from '../mode-switcher';
23
23
 
24
- export default function MoreMenu() {
24
+ export default function MoreMenu( { showIconLabels } ) {
25
25
  const [ isModalActive, toggleModal ] = useReducer(
26
26
  ( isActive ) => ! isActive,
27
27
  false
@@ -36,7 +36,12 @@ export default function MoreMenu() {
36
36
 
37
37
  return (
38
38
  <>
39
- <MoreMenuDropdown>
39
+ <MoreMenuDropdown
40
+ toggleProps={ {
41
+ showTooltip: ! showIconLabels,
42
+ ...( showIconLabels && { variant: 'tertiary' } ),
43
+ } }
44
+ >
40
45
  { ( { onClose } ) => (
41
46
  <>
42
47
  <MenuGroup label={ _x( 'View', 'noun' ) }>
@@ -226,15 +226,17 @@ body.is-navigation-sidebar-open {
226
226
  padding-right: 6px;
227
227
  }
228
228
 
229
- // The inserter and the template details toggle have custom labels, different from their aria-label, so we don't want to display both.
230
- .edit-site-header-toolbar__inserter-toggle.edit-site-header-toolbar__inserter-toggle,
229
+ // The template details toggle has a custom label, different from its aria-label, so we don't want to display both.
231
230
  .edit-site-document-actions__get-info.edit-site-document-actions__get-info.edit-site-document-actions__get-info {
232
231
  &::after {
233
232
  content: none;
234
233
  }
234
+ }
235
235
 
236
+ .edit-site-header-toolbar__inserter-toggle.edit-site-header-toolbar__inserter-toggle,
237
+ .edit-site-document-actions__get-info.edit-site-document-actions__get-info.edit-site-document-actions__get-info {
236
238
  height: 36px;
237
- padding: 0 6px;
239
+ padding: 0 $grid-unit-10;
238
240
  }
239
241
 
240
242
  .edit-site-header_start .edit-site-header__toolbar > * + * {
@@ -5,11 +5,15 @@ import { __, isRTL } from '@wordpress/i18n';
5
5
  import { Button } from '@wordpress/components';
6
6
  import { useSelect, useDispatch } from '@wordpress/data';
7
7
  import { redo as redoIcon, undo as undoIcon } from '@wordpress/icons';
8
- import { displayShortcut } from '@wordpress/keycodes';
8
+ import { displayShortcut, isAppleOS } from '@wordpress/keycodes';
9
9
  import { store as coreStore } from '@wordpress/core-data';
10
10
  import { forwardRef } from '@wordpress/element';
11
11
 
12
12
  function RedoButton( props, ref ) {
13
+ const shortcut = isAppleOS()
14
+ ? displayShortcut.primaryShift( 'z' )
15
+ : displayShortcut.primary( 'y' );
16
+
13
17
  const hasRedo = useSelect(
14
18
  ( select ) => select( coreStore ).hasRedo(),
15
19
  []
@@ -21,7 +25,7 @@ function RedoButton( props, ref ) {
21
25
  ref={ ref }
22
26
  icon={ ! isRTL() ? redoIcon : undoIcon }
23
27
  label={ __( 'Redo' ) }
24
- shortcut={ displayShortcut.primaryShift( 'z' ) }
28
+ shortcut={ shortcut }
25
29
  // If there are no undo levels we don't want to actually disable this
26
30
  // button, because it will remove focus for keyboard users.
27
31
  // See: https://github.com/WordPress/gutenberg/issues/3486
@@ -79,7 +79,9 @@ export default function Actions( { template } ) {
79
79
  ) }
80
80
  { isRevertable && (
81
81
  <MenuItem
82
- info={ __( 'Restore to default state' ) }
82
+ info={ __(
83
+ 'Use the template as supplied by the theme.'
84
+ ) }
83
85
  onClick={ () => {
84
86
  revertAndSaveTemplate();
85
87
  onClose();
@@ -30,18 +30,15 @@ export default function SaveButton( {
30
30
  const disabled = ! isDirty || isSaving;
31
31
 
32
32
  return (
33
- <>
34
- <Button
35
- variant="primary"
36
- className="edit-site-save-button__button"
37
- aria-disabled={ disabled }
38
- aria-expanded={ isEntitiesSavedStatesOpen }
39
- disabled={ disabled }
40
- isBusy={ isSaving }
41
- onClick={ disabled ? undefined : openEntitiesSavedStates }
42
- >
43
- { __( 'Save' ) }
44
- </Button>
45
- </>
33
+ <Button
34
+ variant="primary"
35
+ className="edit-site-save-button__button"
36
+ aria-disabled={ disabled }
37
+ aria-expanded={ isEntitiesSavedStatesOpen }
38
+ isBusy={ isSaving }
39
+ onClick={ disabled ? undefined : openEntitiesSavedStates }
40
+ >
41
+ { __( 'Save' ) }
42
+ </Button>
46
43
  );
47
44
  }
@@ -5,6 +5,12 @@ import {
5
5
  ComplementaryArea,
6
6
  ComplementaryAreaMoreMenuItem,
7
7
  } from '@wordpress/interface';
8
+ import { useSelect } from '@wordpress/data';
9
+
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ import { store as editSiteStore } from '../../store';
8
14
 
9
15
  export default function DefaultSidebar( {
10
16
  className,
@@ -17,6 +23,11 @@ export default function DefaultSidebar( {
17
23
  headerClassName,
18
24
  panelClassName,
19
25
  } ) {
26
+ const showIconLabels = useSelect(
27
+ ( select ) => select( editSiteStore ).getSettings().showIconLabels,
28
+ []
29
+ );
30
+
20
31
  return (
21
32
  <>
22
33
  <ComplementaryArea
@@ -29,6 +40,7 @@ export default function DefaultSidebar( {
29
40
  header={ header }
30
41
  headerClassName={ headerClassName }
31
42
  panelClassName={ panelClassName }
43
+ showIconLabels={ showIconLabels }
32
44
  >
33
45
  { children }
34
46
  </ComplementaryArea>
@@ -48,9 +48,5 @@ export default function NavigationMenu( { innerBlocks, id } ) {
48
48
  }
49
49
  } );
50
50
  }, [ updateBlockListSettings, innerBlocks ] );
51
- return (
52
- <>
53
- <ListView id={ id } />
54
- </>
55
- );
51
+ return <ListView id={ id } />;
56
52
  }
@@ -2,6 +2,12 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { ComplementaryArea } from '@wordpress/interface';
5
+ import { useSelect } from '@wordpress/data';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import { store as editSiteStore } from '../../../store';
5
11
 
6
12
  /**
7
13
  * Renders a sidebar when activated. The contents within the `PluginSidebar` will appear as content within the sidebar.
@@ -69,11 +75,17 @@ import { ComplementaryArea } from '@wordpress/interface';
69
75
  * ```
70
76
  */
71
77
  export default function PluginSidebarEditSite( { className, ...props } ) {
78
+ const showIconLabels = useSelect(
79
+ ( select ) => select( editSiteStore ).getSettings().showIconLabels,
80
+ []
81
+ );
82
+
72
83
  return (
73
84
  <ComplementaryArea
74
85
  panelClassName={ className }
75
86
  className="edit-site-sidebar"
76
87
  scope="core/edit-site"
88
+ showIconLabels={ showIconLabels }
77
89
  { ...props }
78
90
  />
79
91
  );
@@ -60,6 +60,10 @@
60
60
  grid-column: span 1;
61
61
  }
62
62
 
63
+ .edit-site-global-styles-sidebar .components-tools-panel .span-columns {
64
+ grid-column: 1 / -1;
65
+ }
66
+
63
67
  .edit-site-global-styles-sidebar__blocks-group {
64
68
  padding-top: $grid-unit-30;
65
69
  border-top: $border-width solid $gray-200;
@@ -28,7 +28,9 @@ export default function Actions( { template } ) {
28
28
  { ( { onClose } ) => (
29
29
  <MenuGroup>
30
30
  <MenuItem
31
- info={ __( 'Restore to default state' ) }
31
+ info={ __(
32
+ 'Use the template as supplied by the theme.'
33
+ ) }
32
34
  onClick={ () => {
33
35
  revertTemplate( template );
34
36
  onClose();
@@ -19,9 +19,13 @@ export default function EditTemplateTitle( { template } ) {
19
19
  <TextControl
20
20
  label={ __( 'Title' ) }
21
21
  value={ forceEmpty ? '' : title }
22
- help={ __(
23
- 'Give the template a title that indicates its purpose, e.g. "Full Width".'
24
- ) }
22
+ help={
23
+ template.type !== 'wp_template_part'
24
+ ? __(
25
+ 'Give the template a title that indicates its purpose, e.g. "Full Width".'
26
+ )
27
+ : null
28
+ }
25
29
  onChange={ ( newTitle ) => {
26
30
  if ( ! newTitle && ! forceEmpty ) {
27
31
  setForceEmpty( true );
@@ -6,7 +6,7 @@ import {
6
6
  Button,
7
7
  MenuGroup,
8
8
  MenuItem,
9
- __experimentalHeading as Heading,
9
+ __experimentalVStack as VStack,
10
10
  __experimentalText as Text,
11
11
  } from '@wordpress/components';
12
12
  import { useDispatch, useSelect } from '@wordpress/data';
@@ -20,6 +20,7 @@ import { store as editSiteStore } from '../../store';
20
20
  import TemplateAreas from './template-areas';
21
21
  import EditTemplateTitle from './edit-template-title';
22
22
  import { useLink } from '../routes/link';
23
+ import TemplatePartAreaSelector from './template-part-area-selector';
23
24
 
24
25
  export default function TemplateDetails( { template, onClose } ) {
25
26
  const { title, description } = useSelect(
@@ -35,8 +36,13 @@ export default function TemplateDetails( { template, onClose } ) {
35
36
  postId: undefined,
36
37
  } );
37
38
 
39
+ const isTemplatePart = template.type === 'wp_template_part';
40
+
38
41
  // Only user-created and non-default templates can change the name.
39
- const canEditTitle = template.is_custom && ! template.has_theme_file;
42
+ // But any user-created template part can be renamed.
43
+ const canEditTitle = isTemplatePart
44
+ ? ! template.has_theme_file
45
+ : template.is_custom && ! template.has_theme_file;
40
46
 
41
47
  if ( ! template ) {
42
48
  return null;
@@ -49,17 +55,18 @@ export default function TemplateDetails( { template, onClose } ) {
49
55
 
50
56
  return (
51
57
  <div className="edit-site-template-details">
52
- <div className="edit-site-template-details__group">
58
+ <VStack className="edit-site-template-details__group" spacing={ 3 }>
53
59
  { canEditTitle ? (
54
60
  <EditTemplateTitle template={ template } />
55
61
  ) : (
56
- <Heading
57
- level={ 4 }
62
+ <Text
63
+ size={ 16 }
58
64
  weight={ 600 }
59
65
  className="edit-site-template-details__title"
66
+ as="p"
60
67
  >
61
68
  { title }
62
- </Heading>
69
+ </Text>
63
70
  ) }
64
71
 
65
72
  { description && (
@@ -71,7 +78,13 @@ export default function TemplateDetails( { template, onClose } ) {
71
78
  { description }
72
79
  </Text>
73
80
  ) }
74
- </div>
81
+ </VStack>
82
+
83
+ { isTemplatePart && (
84
+ <div className="edit-site-template-details__group">
85
+ <TemplatePartAreaSelector id={ template.id } />
86
+ </div>
87
+ ) }
75
88
 
76
89
  <TemplateAreas closeTemplateDetailsDropdown={ onClose } />
77
90
 
@@ -79,7 +92,9 @@ export default function TemplateDetails( { template, onClose } ) {
79
92
  <MenuGroup className="edit-site-template-details__group edit-site-template-details__revert">
80
93
  <MenuItem
81
94
  className="edit-site-template-details__revert-button"
82
- info={ __( 'Restore template to default state' ) }
95
+ info={ __(
96
+ 'Use the template as supplied by the theme.'
97
+ ) }
83
98
  onClick={ revert }
84
99
  >
85
100
  { __( 'Clear customizations' ) }
@@ -8,12 +8,7 @@
8
8
  border-top: $border-width solid $gray-400;
9
9
  }
10
10
 
11
- .edit-site-template-details__title {
12
- margin: 0;
13
- }
14
-
15
11
  .edit-site-template-details__description {
16
- margin: $grid-unit-15 0 0;
17
12
  color: $gray-700;
18
13
  }
19
14
 
@@ -59,7 +59,9 @@ function TemplatePartItemMore( {
59
59
  { isTemplateRevertable( templatePart ) && (
60
60
  <MenuGroup>
61
61
  <MenuItem
62
- info={ __( 'Restore template to default state' ) }
62
+ info={ __(
63
+ 'Use the template part as supplied by the theme.'
64
+ ) }
63
65
  onClick={ clearCustomizations }
64
66
  >
65
67
  { __( 'Clear customizations' ) }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+ import { SelectControl } from '@wordpress/components';
6
+ import { useEntityProp } from '@wordpress/core-data';
7
+ import { useSelect } from '@wordpress/data';
8
+ import { store as editorStore } from '@wordpress/editor';
9
+
10
+ export default function TemplatePartAreaSelector( { id } ) {
11
+ const [ area, setArea ] = useEntityProp(
12
+ 'postType',
13
+ 'wp_template_part',
14
+ 'area',
15
+ id
16
+ );
17
+
18
+ const definedAreas = useSelect(
19
+ ( select ) =>
20
+ select( editorStore ).__experimentalGetDefaultTemplatePartAreas(),
21
+ []
22
+ );
23
+
24
+ const areaOptions = definedAreas.map( ( { label, area: _area } ) => ( {
25
+ label,
26
+ value: _area,
27
+ } ) );
28
+
29
+ return (
30
+ <SelectControl
31
+ label={ __( 'Area' ) }
32
+ labelPosition="top"
33
+ options={ areaOptions }
34
+ value={ area }
35
+ onChange={ setArea }
36
+ />
37
+ );
38
+ }
@@ -17,6 +17,7 @@ import { __ } from '@wordpress/i18n';
17
17
  import { useState } from '@wordpress/element';
18
18
  import { store as coreStore } from '@wordpress/core-data';
19
19
  import { store as noticesStore } from '@wordpress/notices';
20
+ import { symbolFilled } from '@wordpress/icons';
20
21
 
21
22
  /**
22
23
  * Internal dependencies
@@ -65,11 +66,12 @@ export default function ConvertToTemplatePart( { clientIds, blocks } ) {
65
66
  <BlockSettingsMenuControls>
66
67
  { () => (
67
68
  <MenuItem
69
+ icon={ symbolFilled }
68
70
  onClick={ () => {
69
71
  setIsModalOpen( true );
70
72
  } }
71
73
  >
72
- { __( 'Make template part' ) }
74
+ { __( 'Create Template part' ) }
73
75
  </MenuItem>
74
76
  ) }
75
77
  </BlockSettingsMenuControls>
@@ -2,3 +2,4 @@
2
2
  * Internal dependencies
3
3
  */
4
4
  import './components';
5
+ import './template-part-edit';
@@ -0,0 +1,82 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+ import { useSelect } from '@wordpress/data';
6
+ import { BlockControls } from '@wordpress/block-editor';
7
+ import { store as coreStore } from '@wordpress/core-data';
8
+ import { ToolbarButton } from '@wordpress/components';
9
+ import { addFilter } from '@wordpress/hooks';
10
+ import { createHigherOrderComponent } from '@wordpress/compose';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import { useLocation } from '../components/routes';
16
+ import { useLink } from '../components/routes/link';
17
+
18
+ function EditTemplatePartMenuItem( { attributes } ) {
19
+ const { theme, slug } = attributes;
20
+ const { params } = useLocation();
21
+ const templatePart = useSelect(
22
+ ( select ) => {
23
+ return select( coreStore ).getEntityRecord(
24
+ 'postType',
25
+ 'wp_template_part',
26
+ // Ideally this should be an official public API.
27
+ `${ theme }//${ slug }`
28
+ );
29
+ },
30
+ [ theme, slug ]
31
+ );
32
+
33
+ const linkProps = useLink(
34
+ {
35
+ postId: templatePart?.id,
36
+ postType: templatePart?.type,
37
+ },
38
+ {
39
+ fromTemplateId: params.postId,
40
+ }
41
+ );
42
+
43
+ if ( ! templatePart ) {
44
+ return null;
45
+ }
46
+
47
+ return (
48
+ <BlockControls group="other">
49
+ <ToolbarButton
50
+ { ...linkProps }
51
+ onClick={ ( event ) => {
52
+ linkProps.onClick( event );
53
+ } }
54
+ >
55
+ { __( 'Edit' ) }
56
+ </ToolbarButton>
57
+ </BlockControls>
58
+ );
59
+ }
60
+
61
+ export const withEditBlockControls = createHigherOrderComponent(
62
+ ( BlockEdit ) => ( props ) => {
63
+ const { attributes, name } = props;
64
+ const isDisplayed = name === 'core/template-part' && attributes.slug;
65
+
66
+ return (
67
+ <>
68
+ <BlockEdit { ...props } />
69
+ { isDisplayed && (
70
+ <EditTemplatePartMenuItem attributes={ attributes } />
71
+ ) }
72
+ </>
73
+ );
74
+ },
75
+ 'withEditBlockControls'
76
+ );
77
+
78
+ addFilter(
79
+ 'editor.BlockEdit',
80
+ 'core/edit-site/template-part-edit-button',
81
+ withEditBlockControls
82
+ );
package/src/index.js CHANGED
@@ -65,7 +65,7 @@ export function reinitializeEditor( target, settings ) {
65
65
  keepCaretInsideBlock: false,
66
66
  welcomeGuide: true,
67
67
  welcomeGuideStyles: true,
68
- shouldListViewOpenByDefault: false,
68
+ showListViewByDefault: false,
69
69
  } );
70
70
 
71
71
  // Check if the block list view should be open by default.
package/src/style.scss CHANGED
@@ -26,7 +26,6 @@ html.wp-toolbar {
26
26
  background: $white;
27
27
  }
28
28
 
29
- body.appearance_page_gutenberg-edit-site,
30
29
  body.site-editor-php {
31
30
  @include wp-admin-reset(".edit-site");
32
31
  }