@wordpress/edit-site 6.3.0 → 6.4.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 (221) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-pattern/index.js +8 -2
  3. package/build/components/add-new-pattern/index.js.map +1 -1
  4. package/build/components/add-new-template/index.js +3 -1
  5. package/build/components/add-new-template/index.js.map +1 -1
  6. package/build/components/block-editor/use-site-editor-settings.js +1 -82
  7. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  8. package/build/components/global-styles/block-preview-panel.js +14 -5
  9. package/build/components/global-styles/block-preview-panel.js.map +1 -1
  10. package/build/components/global-styles/font-families.js +42 -23
  11. package/build/components/global-styles/font-families.js.map +1 -1
  12. package/build/components/global-styles/font-library-modal/index.js +4 -4
  13. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  14. package/build/components/global-styles/font-library-modal/installed-fonts.js +58 -10
  15. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  16. package/build/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js +39 -0
  17. package/build/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js.map +1 -0
  18. package/build/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js +39 -0
  19. package/build/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js.map +1 -0
  20. package/build/components/global-styles/font-sizes/font-size-preview.js +44 -0
  21. package/build/components/global-styles/font-sizes/font-size-preview.js.map +1 -0
  22. package/build/components/global-styles/font-sizes/font-size.js +213 -0
  23. package/build/components/global-styles/font-sizes/font-size.js.map +1 -0
  24. package/build/components/global-styles/font-sizes/font-sizes-count.js +50 -0
  25. package/build/components/global-styles/font-sizes/font-sizes-count.js.map +1 -0
  26. package/build/components/global-styles/font-sizes/font-sizes.js +163 -0
  27. package/build/components/global-styles/font-sizes/font-sizes.js.map +1 -0
  28. package/build/components/global-styles/font-sizes/rename-font-size-dialog.js +67 -0
  29. package/build/components/global-styles/font-sizes/rename-font-size-dialog.js.map +1 -0
  30. package/build/components/global-styles/screen-block.js +10 -8
  31. package/build/components/global-styles/screen-block.js.map +1 -1
  32. package/build/components/global-styles/screen-style-variations.js +2 -2
  33. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  34. package/build/components/global-styles/screen-typography.js +3 -2
  35. package/build/components/global-styles/screen-typography.js.map +1 -1
  36. package/build/components/global-styles/size-control/index.js +85 -0
  37. package/build/components/global-styles/size-control/index.js.map +1 -0
  38. package/build/components/global-styles/style-variations-container.js +3 -0
  39. package/build/components/global-styles/style-variations-container.js.map +1 -1
  40. package/build/components/global-styles/ui.js +8 -0
  41. package/build/components/global-styles/ui.js.map +1 -1
  42. package/build/components/global-styles/variations/variations-color.js.map +1 -1
  43. package/build/components/global-styles/variations/variations-typography.js +1 -1
  44. package/build/components/global-styles/variations/variations-typography.js.map +1 -1
  45. package/build/components/layout/index.js +6 -0
  46. package/build/components/layout/index.js.map +1 -1
  47. package/build/components/layout/router.js +14 -6
  48. package/build/components/layout/router.js.map +1 -1
  49. package/build/components/page-patterns/header.js +1 -1
  50. package/build/components/page-patterns/header.js.map +1 -1
  51. package/build/components/page-patterns/index.js +23 -11
  52. package/build/components/page-patterns/index.js.map +1 -1
  53. package/build/components/page-templates/index.js +41 -34
  54. package/build/components/page-templates/index.js.map +1 -1
  55. package/build/components/post-edit/index.js +105 -0
  56. package/build/components/post-edit/index.js.map +1 -0
  57. package/build/components/post-fields/index.js +314 -0
  58. package/build/components/post-fields/index.js.map +1 -0
  59. package/build/components/post-list/index.js +281 -0
  60. package/build/components/post-list/index.js.map +1 -0
  61. package/build/components/posts-app/router.js +3 -3
  62. package/build/components/posts-app/router.js.map +1 -1
  63. package/build/components/sidebar-dataviews/default-views.js +22 -10
  64. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  65. package/build/components/sidebar-dataviews/index.js +40 -1
  66. package/build/components/sidebar-dataviews/index.js.map +1 -1
  67. package/build/components/sidebar-navigation-screen-global-styles/content.js +64 -0
  68. package/build/components/sidebar-navigation-screen-global-styles/content.js.map +1 -0
  69. package/build/components/sidebar-navigation-screen-global-styles/index.js +2 -47
  70. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  71. package/build/hooks/push-changes-to-global-styles/index.js +1 -1
  72. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  73. package/build/index.js +5 -1
  74. package/build/index.js.map +1 -1
  75. package/build/store/selectors.js +34 -6
  76. package/build/store/selectors.js.map +1 -1
  77. package/build/utils/get-filtered-template-parts.js +64 -0
  78. package/build/utils/get-filtered-template-parts.js.map +1 -0
  79. package/build-module/components/add-new-pattern/index.js +8 -2
  80. package/build-module/components/add-new-pattern/index.js.map +1 -1
  81. package/build-module/components/add-new-template/index.js +3 -1
  82. package/build-module/components/add-new-template/index.js.map +1 -1
  83. package/build-module/components/block-editor/use-site-editor-settings.js +1 -82
  84. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  85. package/build-module/components/global-styles/block-preview-panel.js +14 -5
  86. package/build-module/components/global-styles/block-preview-panel.js.map +1 -1
  87. package/build-module/components/global-styles/font-families.js +44 -25
  88. package/build-module/components/global-styles/font-families.js.map +1 -1
  89. package/build-module/components/global-styles/font-library-modal/index.js +4 -4
  90. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  91. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +61 -13
  92. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  93. package/build-module/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js +32 -0
  94. package/build-module/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js.map +1 -0
  95. package/build-module/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js +32 -0
  96. package/build-module/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js.map +1 -0
  97. package/build-module/components/global-styles/font-sizes/font-size-preview.js +37 -0
  98. package/build-module/components/global-styles/font-sizes/font-size-preview.js.map +1 -0
  99. package/build-module/components/global-styles/font-sizes/font-size.js +207 -0
  100. package/build-module/components/global-styles/font-sizes/font-size.js.map +1 -0
  101. package/build-module/components/global-styles/font-sizes/font-sizes-count.js +43 -0
  102. package/build-module/components/global-styles/font-sizes/font-sizes-count.js.map +1 -0
  103. package/build-module/components/global-styles/font-sizes/font-sizes.js +157 -0
  104. package/build-module/components/global-styles/font-sizes/font-sizes.js.map +1 -0
  105. package/build-module/components/global-styles/font-sizes/rename-font-size-dialog.js +61 -0
  106. package/build-module/components/global-styles/font-sizes/rename-font-size-dialog.js.map +1 -0
  107. package/build-module/components/global-styles/screen-block.js +10 -8
  108. package/build-module/components/global-styles/screen-block.js.map +1 -1
  109. package/build-module/components/global-styles/screen-style-variations.js +2 -2
  110. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  111. package/build-module/components/global-styles/screen-typography.js +3 -2
  112. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  113. package/build-module/components/global-styles/size-control/index.js +79 -0
  114. package/build-module/components/global-styles/size-control/index.js.map +1 -0
  115. package/build-module/components/global-styles/style-variations-container.js +3 -0
  116. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  117. package/build-module/components/global-styles/ui.js +8 -0
  118. package/build-module/components/global-styles/ui.js.map +1 -1
  119. package/build-module/components/global-styles/variations/variations-color.js +1 -1
  120. package/build-module/components/global-styles/variations/variations-color.js.map +1 -1
  121. package/build-module/components/global-styles/variations/variations-typography.js +1 -2
  122. package/build-module/components/global-styles/variations/variations-typography.js.map +1 -1
  123. package/build-module/components/layout/index.js +6 -0
  124. package/build-module/components/layout/index.js.map +1 -1
  125. package/build-module/components/layout/router.js +14 -6
  126. package/build-module/components/layout/router.js.map +1 -1
  127. package/build-module/components/page-patterns/header.js +1 -1
  128. package/build-module/components/page-patterns/header.js.map +1 -1
  129. package/build-module/components/page-patterns/index.js +23 -11
  130. package/build-module/components/page-patterns/index.js.map +1 -1
  131. package/build-module/components/page-templates/index.js +43 -37
  132. package/build-module/components/page-templates/index.js.map +1 -1
  133. package/build-module/components/post-edit/index.js +98 -0
  134. package/build-module/components/post-edit/index.js.map +1 -0
  135. package/build-module/components/post-fields/index.js +306 -0
  136. package/build-module/components/post-fields/index.js.map +1 -0
  137. package/build-module/components/post-list/index.js +275 -0
  138. package/build-module/components/post-list/index.js.map +1 -0
  139. package/build-module/components/posts-app/router.js +3 -3
  140. package/build-module/components/posts-app/router.js.map +1 -1
  141. package/build-module/components/sidebar-dataviews/default-views.js +21 -9
  142. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  143. package/build-module/components/sidebar-dataviews/index.js +42 -3
  144. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  145. package/build-module/components/sidebar-navigation-screen-global-styles/content.js +57 -0
  146. package/build-module/components/sidebar-navigation-screen-global-styles/content.js.map +1 -0
  147. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +2 -47
  148. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  149. package/build-module/hooks/push-changes-to-global-styles/index.js +1 -1
  150. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  151. package/build-module/index.js +5 -1
  152. package/build-module/index.js.map +1 -1
  153. package/build-module/store/selectors.js +35 -7
  154. package/build-module/store/selectors.js.map +1 -1
  155. package/build-module/utils/get-filtered-template-parts.js +57 -0
  156. package/build-module/utils/get-filtered-template-parts.js.map +1 -0
  157. package/build-style/posts-rtl.css +581 -503
  158. package/build-style/posts.css +581 -503
  159. package/build-style/style-rtl.css +621 -519
  160. package/build-style/style.css +621 -519
  161. package/package.json +41 -41
  162. package/src/components/add-new-pattern/index.js +8 -2
  163. package/src/components/add-new-template/index.js +4 -1
  164. package/src/components/add-new-template/style.scss +4 -6
  165. package/src/components/block-editor/use-site-editor-settings.js +15 -111
  166. package/src/components/global-styles/block-preview-panel.js +22 -9
  167. package/src/components/global-styles/font-families.js +66 -31
  168. package/src/components/global-styles/font-library-modal/index.js +4 -2
  169. package/src/components/global-styles/font-library-modal/installed-fonts.js +92 -11
  170. package/src/components/global-styles/font-library-modal/style.scss +9 -0
  171. package/src/components/global-styles/font-sizes/confirm-delete-font-size-dialog.js +43 -0
  172. package/src/components/global-styles/font-sizes/confirm-reset-font-sizes-dialog.js +37 -0
  173. package/src/components/global-styles/font-sizes/font-size-preview.js +43 -0
  174. package/src/components/global-styles/font-sizes/font-size.js +250 -0
  175. package/src/components/global-styles/font-sizes/font-sizes-count.js +40 -0
  176. package/src/components/global-styles/font-sizes/font-sizes.js +263 -0
  177. package/src/components/global-styles/font-sizes/rename-font-size-dialog.js +70 -0
  178. package/src/components/global-styles/screen-block.js +12 -14
  179. package/src/components/global-styles/screen-style-variations.js +2 -2
  180. package/src/components/global-styles/screen-typography.js +3 -2
  181. package/src/components/global-styles/size-control/index.js +86 -0
  182. package/src/components/global-styles/style-variations-container.js +4 -0
  183. package/src/components/global-styles/style.scss +13 -3
  184. package/src/components/global-styles/ui.js +10 -0
  185. package/src/components/global-styles/variations/variations-color.js +1 -1
  186. package/src/components/global-styles/variations/variations-typography.js +1 -2
  187. package/src/components/layout/index.js +11 -0
  188. package/src/components/layout/router.js +13 -5
  189. package/src/components/layout/style.scss +26 -8
  190. package/src/components/page-patterns/header.js +1 -1
  191. package/src/components/page-patterns/index.js +15 -8
  192. package/src/components/page-templates/index.js +51 -46
  193. package/src/components/page-templates/style.scss +5 -3
  194. package/src/components/post-edit/index.js +96 -0
  195. package/src/components/post-edit/style.scss +9 -0
  196. package/src/components/post-fields/index.js +345 -0
  197. package/src/components/post-list/index.js +326 -0
  198. package/src/components/{posts-app → post-list}/style.scss +12 -9
  199. package/src/components/posts-app/router.js +3 -3
  200. package/src/components/sidebar-dataviews/default-views.js +21 -9
  201. package/src/components/sidebar-dataviews/index.js +36 -1
  202. package/src/components/sidebar-navigation-screen-global-styles/content.js +55 -0
  203. package/src/components/sidebar-navigation-screen-global-styles/index.js +1 -55
  204. package/src/hooks/push-changes-to-global-styles/index.js +1 -1
  205. package/src/index.js +7 -1
  206. package/src/posts.scss +1 -1
  207. package/src/store/selectors.js +53 -14
  208. package/src/store/test/selectors.js +1 -26
  209. package/src/style.scss +2 -1
  210. package/src/utils/get-filtered-template-parts.js +61 -0
  211. package/src/utils/test/get-filtered-template-parts.js +127 -0
  212. package/build/components/global-styles/screen-background.js +0 -36
  213. package/build/components/global-styles/screen-background.js.map +0 -1
  214. package/build/components/posts-app/posts-list.js +0 -568
  215. package/build/components/posts-app/posts-list.js.map +0 -1
  216. package/build-module/components/global-styles/screen-background.js +0 -30
  217. package/build-module/components/global-styles/screen-background.js.map +0 -1
  218. package/build-module/components/posts-app/posts-list.js +0 -560
  219. package/build-module/components/posts-app/posts-list.js.map +0 -1
  220. package/src/components/global-styles/screen-background.js +0 -29
  221. package/src/components/posts-app/posts-list.js +0 -651
@@ -0,0 +1,263 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
5
+ import { __, sprintf, isRTL } from '@wordpress/i18n';
6
+ import {
7
+ privateApis as componentsPrivateApis,
8
+ __experimentalSpacer as Spacer,
9
+ __experimentalView as View,
10
+ __experimentalItemGroup as ItemGroup,
11
+ __experimentalVStack as VStack,
12
+ __experimentalHStack as HStack,
13
+ FlexItem,
14
+ FlexBlock,
15
+ Button,
16
+ } from '@wordpress/components';
17
+ import {
18
+ Icon,
19
+ plus,
20
+ moreVertical,
21
+ chevronLeft,
22
+ chevronRight,
23
+ } from '@wordpress/icons';
24
+ import { useState } from '@wordpress/element';
25
+
26
+ /**
27
+ * Internal dependencies
28
+ */
29
+ import { unlock } from '../../../lock-unlock';
30
+ const {
31
+ DropdownMenuV2: DropdownMenu,
32
+ DropdownMenuItemV2: DropdownMenuItem,
33
+ DropdownMenuItemLabelV2: DropdownMenuItemLabel,
34
+ } = unlock( componentsPrivateApis );
35
+ const { useGlobalSetting } = unlock( blockEditorPrivateApis );
36
+ import Subtitle from '../subtitle';
37
+ import { NavigationButtonAsItem } from '../navigation-button';
38
+ import { getNewIndexFromPresets } from '../utils';
39
+ import ScreenHeader from '../header';
40
+ import ConfirmResetFontSizesDialog from './confirm-reset-font-sizes-dialog';
41
+
42
+ function FontSizeGroup( {
43
+ label,
44
+ origin,
45
+ sizes,
46
+ handleAddFontSize,
47
+ handleResetFontSizes,
48
+ } ) {
49
+ const [ isResetDialogOpen, setIsResetDialogOpen ] = useState( false );
50
+
51
+ const toggleResetDialog = () => setIsResetDialogOpen( ! isResetDialogOpen );
52
+
53
+ const resetDialogText =
54
+ origin === 'custom'
55
+ ? __(
56
+ 'Are you sure you want to remove all custom font size presets?'
57
+ )
58
+ : __(
59
+ 'Are you sure you want to reset all font size presets to their default values?'
60
+ );
61
+
62
+ return (
63
+ <>
64
+ { isResetDialogOpen && (
65
+ <ConfirmResetFontSizesDialog
66
+ text={ resetDialogText }
67
+ confirmButtonText={
68
+ origin === 'custom' ? __( 'Remove' ) : __( 'Reset' )
69
+ }
70
+ isOpen={ isResetDialogOpen }
71
+ toggleOpen={ toggleResetDialog }
72
+ onConfirm={ handleResetFontSizes }
73
+ />
74
+ ) }
75
+ <VStack spacing={ 4 }>
76
+ <HStack justify="space-between" align="center">
77
+ <Subtitle level={ 3 }>{ label }</Subtitle>
78
+ <FlexItem>
79
+ { origin === 'custom' && (
80
+ <Button
81
+ label={ __( 'Add font size' ) }
82
+ icon={ plus }
83
+ size="small"
84
+ onClick={ handleAddFontSize }
85
+ />
86
+ ) }
87
+ { !! handleResetFontSizes && (
88
+ <DropdownMenu
89
+ trigger={
90
+ <Button
91
+ size="small"
92
+ icon={ moreVertical }
93
+ label={ __(
94
+ 'Font size presets options'
95
+ ) }
96
+ />
97
+ }
98
+ >
99
+ <DropdownMenuItem onClick={ toggleResetDialog }>
100
+ <DropdownMenuItemLabel>
101
+ { origin === 'custom'
102
+ ? __( 'Remove font size presets' )
103
+ : __( 'Reset font size presets' ) }
104
+ </DropdownMenuItemLabel>
105
+ </DropdownMenuItem>
106
+ </DropdownMenu>
107
+ ) }
108
+ </FlexItem>
109
+ </HStack>
110
+
111
+ { !! sizes.length && (
112
+ <ItemGroup isBordered isSeparated>
113
+ { sizes.map( ( size ) => (
114
+ <NavigationButtonAsItem
115
+ key={ size.slug }
116
+ path={ `/typography/font-sizes/${ origin }/${ size.slug }` }
117
+ >
118
+ <HStack direction="row">
119
+ <FlexItem className="edit-site-font-size__item">
120
+ { size.name }
121
+ </FlexItem>
122
+ <FlexItem>
123
+ <HStack justify="flex-end">
124
+ <FlexBlock className="edit-site-font-size__item edit-site-font-size__item-value">
125
+ { size.size }
126
+ </FlexBlock>
127
+ <Icon
128
+ icon={
129
+ isRTL()
130
+ ? chevronLeft
131
+ : chevronRight
132
+ }
133
+ />
134
+ </HStack>
135
+ </FlexItem>
136
+ </HStack>
137
+ </NavigationButtonAsItem>
138
+ ) ) }
139
+ </ItemGroup>
140
+ ) }
141
+ </VStack>
142
+ </>
143
+ );
144
+ }
145
+
146
+ function FontSizes() {
147
+ const [ themeFontSizes, setThemeFontSizes ] = useGlobalSetting(
148
+ 'typography.fontSizes.theme'
149
+ );
150
+
151
+ const [ baseThemeFontSizes ] = useGlobalSetting(
152
+ 'typography.fontSizes.theme',
153
+ null,
154
+ 'base'
155
+ );
156
+ const [ defaultFontSizes, setDefaultFontSizes ] = useGlobalSetting(
157
+ 'typography.fontSizes.default'
158
+ );
159
+
160
+ const [ baseDefaultFontSizes ] = useGlobalSetting(
161
+ 'typography.fontSizes.default',
162
+ null,
163
+ 'base'
164
+ );
165
+
166
+ const [ customFontSizes = [], setCustomFontSizes ] = useGlobalSetting(
167
+ 'typography.fontSizes.custom'
168
+ );
169
+
170
+ const [ defaultFontSizesEnabled ] = useGlobalSetting(
171
+ 'typography.defaultFontSizes'
172
+ );
173
+
174
+ const handleAddFontSize = () => {
175
+ const index = getNewIndexFromPresets( customFontSizes, 'custom-' );
176
+ const newFontSize = {
177
+ /* translators: %d: font size index */
178
+ name: sprintf( __( 'New Font Size %d' ), index ),
179
+ size: '16px',
180
+ slug: `custom-${ index }`,
181
+ };
182
+
183
+ setCustomFontSizes( [ ...customFontSizes, newFontSize ] );
184
+ };
185
+
186
+ const hasSameSizeValues = ( arr1, arr2 ) =>
187
+ arr1.map( ( item ) => item.size ).join( '' ) ===
188
+ arr2.map( ( item ) => item.size ).join( '' );
189
+
190
+ return (
191
+ <VStack spacing={ 2 }>
192
+ <ScreenHeader
193
+ title={ __( 'Font size presets' ) }
194
+ description={ __(
195
+ 'Create and edit the presets used for font sizes across the site.'
196
+ ) }
197
+ />
198
+
199
+ <View>
200
+ <Spacer paddingX={ 4 }>
201
+ <VStack spacing={ 8 }>
202
+ { !! themeFontSizes?.length && (
203
+ <FontSizeGroup
204
+ label={ __( 'Theme' ) }
205
+ origin="theme"
206
+ sizes={ themeFontSizes }
207
+ baseSizes={ baseThemeFontSizes }
208
+ handleAddFontSize={ handleAddFontSize }
209
+ handleResetFontSizes={
210
+ hasSameSizeValues(
211
+ themeFontSizes,
212
+ baseThemeFontSizes
213
+ )
214
+ ? null
215
+ : () =>
216
+ setThemeFontSizes(
217
+ baseThemeFontSizes
218
+ )
219
+ }
220
+ />
221
+ ) }
222
+
223
+ { defaultFontSizesEnabled &&
224
+ !! defaultFontSizes?.length && (
225
+ <FontSizeGroup
226
+ label={ __( 'Default' ) }
227
+ origin="default"
228
+ sizes={ defaultFontSizes }
229
+ baseSizes={ baseDefaultFontSizes }
230
+ handleAddFontSize={ handleAddFontSize }
231
+ handleResetFontSizes={
232
+ hasSameSizeValues(
233
+ defaultFontSizes,
234
+ baseDefaultFontSizes
235
+ )
236
+ ? null
237
+ : () =>
238
+ setDefaultFontSizes(
239
+ baseDefaultFontSizes
240
+ )
241
+ }
242
+ />
243
+ ) }
244
+
245
+ <FontSizeGroup
246
+ label={ __( 'Custom' ) }
247
+ origin="custom"
248
+ sizes={ customFontSizes }
249
+ handleAddFontSize={ handleAddFontSize }
250
+ handleResetFontSizes={
251
+ customFontSizes.length > 0
252
+ ? () => setCustomFontSizes( [] )
253
+ : null
254
+ }
255
+ />
256
+ </VStack>
257
+ </Spacer>
258
+ </View>
259
+ </VStack>
260
+ );
261
+ }
262
+
263
+ export default FontSizes;
@@ -0,0 +1,70 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ __experimentalInputControl as InputControl,
6
+ __experimentalVStack as VStack,
7
+ __experimentalHStack as HStack,
8
+ Button,
9
+ Modal,
10
+ } from '@wordpress/components';
11
+ import { __ } from '@wordpress/i18n';
12
+ import { useState } from '@wordpress/element';
13
+
14
+ function RenameFontSizeDialog( { fontSize, toggleOpen, handleRename } ) {
15
+ const [ newName, setNewName ] = useState( fontSize.name );
16
+
17
+ const handleConfirm = () => {
18
+ // If the new name is not empty, call the handleRename function
19
+ if ( newName.trim() ) {
20
+ handleRename( newName );
21
+ }
22
+ toggleOpen();
23
+ };
24
+
25
+ return (
26
+ <Modal
27
+ onRequestClose={ toggleOpen }
28
+ focusOnMount="firstContentElement"
29
+ title={ __( 'Rename' ) }
30
+ size="small"
31
+ >
32
+ <form
33
+ onSubmit={ ( event ) => {
34
+ event.preventDefault();
35
+ handleConfirm();
36
+ toggleOpen();
37
+ } }
38
+ >
39
+ <VStack spacing="3">
40
+ <InputControl
41
+ __next40pxDefaultSize
42
+ autoComplete="off"
43
+ value={ newName }
44
+ onChange={ setNewName }
45
+ label={ __( 'Name' ) }
46
+ placeholder={ __( 'Font size preset name' ) }
47
+ />
48
+ <HStack justify="right">
49
+ <Button
50
+ __next40pxDefaultSize
51
+ variant="tertiary"
52
+ onClick={ toggleOpen }
53
+ >
54
+ { __( 'Cancel' ) }
55
+ </Button>
56
+ <Button
57
+ __next40pxDefaultSize
58
+ variant="primary"
59
+ type="submit"
60
+ >
61
+ { __( 'Save' ) }
62
+ </Button>
63
+ </HStack>
64
+ </VStack>
65
+ </form>
66
+ </Modal>
67
+ );
68
+ }
69
+
70
+ export default RenameFontSizeDialog;
@@ -84,6 +84,7 @@ const {
84
84
  FiltersPanel: StylesFiltersPanel,
85
85
  ImageSettingsPanel,
86
86
  AdvancedPanel: StylesAdvancedPanel,
87
+ useGlobalStyleLinks,
87
88
  } = unlock( blockEditorPrivateApis );
88
89
 
89
90
  function ScreenBlock( { name, variation } ) {
@@ -103,6 +104,7 @@ function ScreenBlock( { name, variation } ) {
103
104
  const [ rawSettings, setSettings ] = useGlobalSetting( '', name );
104
105
  const settings = useSettingsForBlockElement( rawSettings, name );
105
106
  const blockType = getBlockType( name );
107
+ const _links = useGlobalStyleLinks();
106
108
 
107
109
  // Only allow `blockGap` support if serialization has not been skipped, to be sure global spacing can be applied.
108
110
  if (
@@ -262,6 +264,16 @@ function ScreenBlock( { name, variation } ) {
262
264
  settings={ settings }
263
265
  />
264
266
  ) }
267
+ { hasBackgroundPanel && (
268
+ <StylesBackgroundPanel
269
+ inheritedValue={ inheritedStyle }
270
+ value={ style }
271
+ onChange={ setStyle }
272
+ settings={ settings }
273
+ defaultValues={ BACKGROUND_BLOCK_DEFAULT_VALUES }
274
+ themeFileURIs={ _links?.[ 'wp:theme-file' ] }
275
+ />
276
+ ) }
265
277
  { hasTypographyPanel && (
266
278
  <StylesTypographyPanel
267
279
  inheritedValue={ inheritedStyle }
@@ -304,20 +316,6 @@ function ScreenBlock( { name, variation } ) {
304
316
  />
305
317
  ) }
306
318
 
307
- { hasBackgroundPanel && (
308
- <StylesBackgroundPanel
309
- inheritedValue={ inheritedStyle }
310
- value={ style }
311
- onChange={ setStyle }
312
- settings={ settings }
313
- defaultValues={ BACKGROUND_BLOCK_DEFAULT_VALUES }
314
- defaultControls={
315
- blockType?.supports?.background
316
- ?.__experimentalDefaultControls
317
- }
318
- />
319
- ) }
320
-
321
319
  { canEditCSS && (
322
320
  <PanelBody title={ __( 'Advanced' ) } initialOpen={ false }>
323
321
  <p>
@@ -9,7 +9,7 @@ import { useZoomOut } from '@wordpress/block-editor';
9
9
  * Internal dependencies
10
10
  */
11
11
  import ScreenHeader from './header';
12
- import StyleVariationsContainer from './style-variations-container';
12
+ import SidebarNavigationScreenGlobalStylesContent from '../sidebar-navigation-screen-global-styles/content';
13
13
 
14
14
  function ScreenStyleVariations() {
15
15
  // Move to zoom out mode when this component is mounted
@@ -31,7 +31,7 @@ function ScreenStyleVariations() {
31
31
  className="edit-site-global-styles-screen-style-variations"
32
32
  >
33
33
  <CardBody>
34
- <StyleVariationsContainer />
34
+ <SidebarNavigationScreenGlobalStylesContent />
35
35
  </CardBody>
36
36
  </Card>
37
37
  </>
@@ -13,6 +13,7 @@ import TypographyElements from './typography-elements';
13
13
  import TypographyVariations from './variations/variations-typography';
14
14
  import FontFamilies from './font-families';
15
15
  import ScreenHeader from './header';
16
+ import FontSizesCount from './font-sizes/font-sizes-count';
16
17
 
17
18
  function ScreenTypography() {
18
19
  const fontLibraryEnabled = useSelect(
@@ -31,10 +32,10 @@ function ScreenTypography() {
31
32
  />
32
33
  <div className="edit-site-global-styles-screen">
33
34
  <VStack spacing={ 7 }>
34
- { ! window.__experimentalDisableFontLibrary &&
35
- fontLibraryEnabled && <FontFamilies /> }
35
+ { fontLibraryEnabled && <FontFamilies /> }
36
36
  <TypographyElements />
37
37
  <TypographyVariations title={ __( 'Presets' ) } />
38
+ <FontSizesCount />
38
39
  </VStack>
39
40
  </div>
40
41
  </>
@@ -0,0 +1,86 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import {
10
+ BaseControl,
11
+ RangeControl,
12
+ Flex,
13
+ FlexItem,
14
+ useBaseControlProps,
15
+ __experimentalUseCustomUnits as useCustomUnits,
16
+ __experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,
17
+ __experimentalUnitControl as UnitControl,
18
+ __experimentalSpacer as Spacer,
19
+ } from '@wordpress/components';
20
+
21
+ const DEFAULT_UNITS = [ 'px', 'em', 'rem', 'vw', 'vh' ];
22
+
23
+ function SizeControl( props ) {
24
+ const { baseControlProps } = useBaseControlProps( props );
25
+ const { value, onChange, fallbackValue, disabled } = props;
26
+
27
+ const units = useCustomUnits( {
28
+ availableUnits: DEFAULT_UNITS,
29
+ } );
30
+
31
+ const [ valueQuantity, valueUnit = 'px' ] =
32
+ parseQuantityAndUnitFromRawValue( value, units );
33
+
34
+ const isValueUnitRelative =
35
+ !! valueUnit && [ 'em', 'rem', 'vw', 'vh' ].includes( valueUnit );
36
+
37
+ // Receives the new value from the UnitControl component as a string containing the value and unit.
38
+ const handleUnitControlChange = ( newValue ) => {
39
+ onChange( newValue );
40
+ };
41
+
42
+ // Receives the new value from the RangeControl component as a number.
43
+ const handleRangeControlChange = ( newValue ) => {
44
+ onChange?.( newValue + valueUnit );
45
+ };
46
+
47
+ return (
48
+ <BaseControl { ...baseControlProps }>
49
+ <Flex>
50
+ <FlexItem isBlock>
51
+ <UnitControl
52
+ __next40pxDefaultSize
53
+ __nextHasNoMarginBottom
54
+ label={ __( 'Custom' ) }
55
+ hideLabelFromVision
56
+ value={ value }
57
+ onChange={ handleUnitControlChange }
58
+ units={ units }
59
+ min={ 0 }
60
+ disabled={ disabled }
61
+ />
62
+ </FlexItem>
63
+ <FlexItem isBlock>
64
+ <Spacer marginX={ 2 } marginBottom={ 0 }>
65
+ <RangeControl
66
+ __next40pxDefaultSize
67
+ __nextHasNoMarginBottom
68
+ label={ __( 'Custom Size' ) }
69
+ hideLabelFromVision
70
+ value={ valueQuantity }
71
+ initialPosition={ fallbackValue }
72
+ withInputField={ false }
73
+ onChange={ handleRangeControlChange }
74
+ min={ 0 }
75
+ max={ isValueUnitRelative ? 10 : 100 }
76
+ step={ isValueUnitRelative ? 0.1 : 1 }
77
+ disabled={ disabled }
78
+ />
79
+ </Spacer>
80
+ </FlexItem>
81
+ </Flex>
82
+ </BaseControl>
83
+ );
84
+ }
85
+
86
+ export default SizeControl;
@@ -110,6 +110,10 @@ export default function StyleVariationsContainer( { gap = 2 } ) {
110
110
  ];
111
111
  }, [ fullStyleVariations, userStyles?.blocks, userStyles?.css ] );
112
112
 
113
+ if ( ! fullStyleVariations || fullStyleVariations?.length < 1 ) {
114
+ return null;
115
+ }
116
+
113
117
  return (
114
118
  <Grid
115
119
  columns={ 2 }
@@ -23,6 +23,17 @@
23
23
  overflow: hidden;
24
24
  }
25
25
 
26
+ .edit-site-font-size__item {
27
+ white-space: nowrap;
28
+ text-overflow: ellipsis;
29
+ overflow: hidden;
30
+ line-break: anywhere;
31
+ }
32
+
33
+ .edit-site-font-size__item-value {
34
+ color: $gray-700;
35
+ }
36
+
26
37
  .edit-site-global-styles-screen {
27
38
  margin: $grid-unit-15 $grid-unit-20 $grid-unit-20;
28
39
  }
@@ -41,7 +52,6 @@
41
52
  color: $gray-700;
42
53
  }
43
54
 
44
- .edit-site-global-styles-font-families__add-fonts,
45
55
  .edit-site-global-styles-font-families__manage-fonts {
46
56
  justify-content: center;
47
57
  }
@@ -102,13 +112,13 @@
102
112
  .edit-site-global-styles__block-preview-panel {
103
113
  position: relative;
104
114
  width: 100%;
105
- overflow: auto;
106
115
  border: $gray-200 $border-width solid;
107
116
  border-radius: $radius-block-ui;
117
+ overflow: hidden;
108
118
  }
109
119
 
110
120
  .edit-site-global-styles__shadow-preview-panel {
111
- height: 150px;
121
+ height: $grid-unit-60 * 3;
112
122
  border: $gray-200 $border-width solid;
113
123
  border-radius: $radius-block-ui;
114
124
  overflow: auto;
@@ -33,6 +33,8 @@ import {
33
33
  import ScreenBlock from './screen-block';
34
34
  import ScreenTypography from './screen-typography';
35
35
  import ScreenTypographyElement from './screen-typography-element';
36
+ import FontSize from './font-sizes/font-size';
37
+ import FontSizes from './font-sizes/font-sizes';
36
38
  import ScreenColors from './screen-colors';
37
39
  import ScreenColorPalette from './screen-color-palette';
38
40
  import { ScreenShadows, ScreenShadowsEdit } from './screen-shadows';
@@ -313,6 +315,14 @@ function GlobalStylesUI() {
313
315
  <ScreenTypography />
314
316
  </GlobalStylesNavigationScreen>
315
317
 
318
+ <GlobalStylesNavigationScreen path="/typography/font-sizes/">
319
+ <FontSizes />
320
+ </GlobalStylesNavigationScreen>
321
+
322
+ <GlobalStylesNavigationScreen path="/typography/font-sizes/:origin/:slug">
323
+ <FontSize />
324
+ </GlobalStylesNavigationScreen>
325
+
316
326
  <GlobalStylesNavigationScreen path="/typography/text">
317
327
  <ScreenTypographyElement element="text" />
318
328
  </GlobalStylesNavigationScreen>
@@ -2,8 +2,8 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import {
5
- __experimentalVStack as VStack,
6
5
  __experimentalGrid as Grid,
6
+ __experimentalVStack as VStack,
7
7
  } from '@wordpress/components';
8
8
 
9
9
  /**
@@ -9,11 +9,10 @@ import {
9
9
  /**
10
10
  * Internal dependencies
11
11
  */
12
-
13
12
  import StylesPreviewTypography from '../preview-typography';
14
13
  import { useCurrentMergeThemeStyleVariationsWithUserConfig } from '../../../hooks/use-theme-style-variations/use-theme-style-variations-by-property';
15
- import Variation from './variation';
16
14
  import Subtitle from '../subtitle';
15
+ import Variation from './variation';
17
16
 
18
17
  export default function TypographyVariations( { title, gap = 2 } ) {
19
18
  const propertiesToFilter = [ 'typography' ];
@@ -201,6 +201,17 @@ export default function Layout( { route } ) {
201
201
  </div>
202
202
  ) }
203
203
 
204
+ { ! isMobileViewport && areas.edit && (
205
+ <div
206
+ className="edit-site-layout__area"
207
+ style={ {
208
+ maxWidth: widths?.edit,
209
+ } }
210
+ >
211
+ { areas.edit }
212
+ </div>
213
+ ) }
214
+
204
215
  { ! isMobileViewport && areas.preview && (
205
216
  <div className="edit-site-layout__canvas-container">
206
217
  { canvasResizer }
@@ -9,7 +9,7 @@ import { useEffect } from '@wordpress/element';
9
9
  */
10
10
  import { unlock } from '../../lock-unlock';
11
11
  import Editor from '../editor';
12
- import PostsList from '../posts-app/posts-list';
12
+ import PostList from '../post-list';
13
13
  import PagePatterns from '../page-patterns';
14
14
  import PageTemplates from '../page-templates';
15
15
  import SidebarNavigationScreen from '../sidebar-navigation-screen';
@@ -26,6 +26,7 @@ import {
26
26
  TEMPLATE_PART_POST_TYPE,
27
27
  TEMPLATE_POST_TYPE,
28
28
  } from '../../utils/constants';
29
+ import { PostEdit } from '../post-edit';
29
30
 
30
31
  const { useLocation, useHistory } = unlock( routerPrivateApis );
31
32
 
@@ -74,13 +75,15 @@ function useRedirectOldPaths() {
74
75
 
75
76
  export default function useLayoutAreas() {
76
77
  const { params } = useLocation();
77
- const { postType, postId, path, layout, isCustom, canvas } = params;
78
+ const { postType, postId, path, layout, isCustom, canvas, quickEdit } =
79
+ params;
78
80
  const hasEditCanvasMode = canvas === 'edit';
79
81
  useRedirectOldPaths();
80
82
 
81
83
  // Page list
82
84
  if ( postType === 'page' ) {
83
85
  const isListLayout = layout === 'list' || ! layout;
86
+ const showQuickEdit = quickEdit && ! isListLayout;
84
87
  return {
85
88
  key: 'pages',
86
89
  areas: {
@@ -91,16 +94,21 @@ export default function useLayoutAreas() {
91
94
  content={ <DataViewsSidebarContent /> }
92
95
  />
93
96
  ),
94
- content: <PostsList postType={ postType } />,
95
- preview: ( isListLayout || hasEditCanvasMode ) && <Editor />,
97
+ content: <PostList postType={ postType } />,
98
+ preview: ! showQuickEdit &&
99
+ ( isListLayout || hasEditCanvasMode ) && <Editor />,
96
100
  mobile: hasEditCanvasMode ? (
97
101
  <Editor />
98
102
  ) : (
99
- <PostsList postType={ postType } />
103
+ <PostList postType={ postType } />
104
+ ),
105
+ edit: showQuickEdit && (
106
+ <PostEdit postType={ postType } postId={ postId } />
100
107
  ),
101
108
  },
102
109
  widths: {
103
110
  content: isListLayout ? 380 : undefined,
111
+ edit: showQuickEdit ? 380 : undefined,
104
112
  },
105
113
  };
106
114
  }