@wordpress/edit-site 3.0.10 → 3.0.14
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.
- package/build/components/add-new-template/new-template-part.js +34 -18
- package/build/components/add-new-template/new-template-part.js.map +1 -1
- package/build/components/add-new-template/new-template.js +41 -23
- package/build/components/add-new-template/new-template.js.map +1 -1
- package/build/components/block-editor/index.js +3 -1
- package/build/components/block-editor/index.js.map +1 -1
- package/build/components/editor/index.js +12 -6
- package/build/components/editor/index.js.map +1 -1
- package/build/components/global-styles/color-palette-panel.js +29 -6
- package/build/components/global-styles/color-palette-panel.js.map +1 -1
- package/build/components/global-styles/global-styles-provider.js +5 -43
- package/build/components/global-styles/global-styles-provider.js.map +1 -1
- package/build/components/global-styles/gradients-palette-panel.js +71 -0
- package/build/components/global-styles/gradients-palette-panel.js.map +1 -0
- package/build/components/global-styles/hooks.js +5 -5
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/palette.js +11 -5
- package/build/components/global-styles/palette.js.map +1 -1
- package/build/components/global-styles/screen-background-color.js +3 -1
- package/build/components/global-styles/screen-background-color.js.map +1 -1
- package/build/components/global-styles/screen-color-palette.js +23 -3
- package/build/components/global-styles/screen-color-palette.js.map +1 -1
- package/build/components/global-styles/screen-link-color.js +3 -1
- package/build/components/global-styles/screen-link-color.js.map +1 -1
- package/build/components/global-styles/screen-text-color.js +3 -1
- package/build/components/global-styles/screen-text-color.js.map +1 -1
- package/build/components/global-styles/screen-typography-element.js +54 -0
- package/build/components/global-styles/screen-typography-element.js.map +1 -0
- package/build/components/global-styles/screen-typography.js +74 -6
- package/build/components/global-styles/screen-typography.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +28 -8
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/ui.js +12 -0
- package/build/components/global-styles/ui.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +2 -2
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +1 -1
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/keyboard-shortcuts/index.js +26 -0
- package/build/components/keyboard-shortcuts/index.js.map +1 -1
- package/build/components/list/actions/index.js +104 -0
- package/build/components/list/actions/index.js.map +1 -0
- package/build/components/list/actions/rename-menu-item.js +112 -0
- package/build/components/list/actions/rename-menu-item.js.map +1 -0
- package/build/components/list/added-by.js +180 -0
- package/build/components/list/added-by.js.map +1 -0
- package/build/components/list/index.js +54 -7
- package/build/components/list/index.js.map +1 -1
- package/build/components/list/table.js +58 -68
- package/build/components/list/table.js.map +1 -1
- package/build/components/list/use-register-shortcuts.js +52 -0
- package/build/components/list/use-register-shortcuts.js.map +1 -0
- package/build/components/navigation-sidebar/index.js +24 -9
- package/build/components/navigation-sidebar/index.js.map +1 -1
- package/build/components/navigation-sidebar/navigation-panel/index.js +35 -17
- package/build/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
- package/build/components/navigation-sidebar/navigation-toggle/index.js +14 -5
- package/build/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
- package/build/components/template-details/edit-template-title.js +33 -0
- package/build/components/template-details/edit-template-title.js.map +1 -0
- package/build/components/template-details/index.js +8 -4
- package/build/components/template-details/index.js.map +1 -1
- package/build/components/template-details/template-areas.js +1 -1
- package/build/components/template-details/template-areas.js.map +1 -1
- package/build/index.js +8 -2
- package/build/index.js.map +1 -1
- package/build/store/actions.js +47 -18
- package/build/store/actions.js.map +1 -1
- package/build/store/selectors.js +25 -5
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/add-new-template/new-template-part.js +30 -17
- package/build-module/components/add-new-template/new-template-part.js.map +1 -1
- package/build-module/components/add-new-template/new-template.js +40 -24
- package/build-module/components/add-new-template/new-template.js.map +1 -1
- package/build-module/components/block-editor/index.js +2 -1
- package/build-module/components/block-editor/index.js.map +1 -1
- package/build-module/components/editor/index.js +13 -7
- package/build-module/components/editor/index.js.map +1 -1
- package/build-module/components/global-styles/color-palette-panel.js +29 -7
- package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
- package/build-module/components/global-styles/global-styles-provider.js +6 -39
- package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
- package/build-module/components/global-styles/gradients-palette-panel.js +60 -0
- package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -0
- package/build-module/components/global-styles/hooks.js +5 -5
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/palette.js +12 -5
- package/build-module/components/global-styles/palette.js.map +1 -1
- package/build-module/components/global-styles/screen-background-color.js +3 -1
- package/build-module/components/global-styles/screen-background-color.js.map +1 -1
- package/build-module/components/global-styles/screen-color-palette.js +22 -3
- package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
- package/build-module/components/global-styles/screen-link-color.js +3 -1
- package/build-module/components/global-styles/screen-link-color.js.map +1 -1
- package/build-module/components/global-styles/screen-text-color.js +3 -1
- package/build-module/components/global-styles/screen-text-color.js.map +1 -1
- package/build-module/components/global-styles/screen-typography-element.js +41 -0
- package/build-module/components/global-styles/screen-typography-element.js.map +1 -0
- package/build-module/components/global-styles/screen-typography.js +70 -6
- package/build-module/components/global-styles/screen-typography.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +28 -8
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/ui.js +11 -0
- package/build-module/components/global-styles/ui.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +2 -2
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +1 -1
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/keyboard-shortcuts/index.js +26 -0
- package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
- package/build-module/components/list/actions/index.js +85 -0
- package/build-module/components/list/actions/index.js.map +1 -0
- package/build-module/components/list/actions/rename-menu-item.js +101 -0
- package/build-module/components/list/actions/rename-menu-item.js.map +1 -0
- package/build-module/components/list/added-by.js +166 -0
- package/build-module/components/list/added-by.js.map +1 -0
- package/build-module/components/list/index.js +49 -8
- package/build-module/components/list/index.js.map +1 -1
- package/build-module/components/list/table.js +60 -70
- package/build-module/components/list/table.js.map +1 -1
- package/build-module/components/list/use-register-shortcuts.js +41 -0
- package/build-module/components/list/use-register-shortcuts.js.map +1 -0
- package/build-module/components/navigation-sidebar/index.js +22 -10
- package/build-module/components/navigation-sidebar/index.js.map +1 -1
- package/build-module/components/navigation-sidebar/navigation-panel/index.js +33 -18
- package/build-module/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
- package/build-module/components/navigation-sidebar/navigation-toggle/index.js +14 -6
- package/build-module/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
- package/build-module/components/template-details/edit-template-title.js +23 -0
- package/build-module/components/template-details/edit-template-title.js.map +1 -0
- package/build-module/components/template-details/index.js +7 -4
- package/build-module/components/template-details/index.js.map +1 -1
- package/build-module/components/template-details/template-areas.js +1 -1
- package/build-module/components/template-details/template-areas.js.map +1 -1
- package/build-module/index.js +8 -3
- package/build-module/index.js.map +1 -1
- package/build-module/store/actions.js +48 -19
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/selectors.js +21 -3
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +146 -21
- package/build-style/style.css +146 -21
- package/package.json +10 -8
- package/src/components/add-new-template/new-template-part.js +32 -18
- package/src/components/add-new-template/new-template.js +39 -20
- package/src/components/block-editor/index.js +2 -0
- package/src/components/editor/index.js +17 -6
- package/src/components/global-styles/color-palette-panel.js +64 -7
- package/src/components/global-styles/global-styles-provider.js +3 -33
- package/src/components/global-styles/gradients-palette-panel.js +99 -0
- package/src/components/global-styles/hooks.js +4 -4
- package/src/components/global-styles/palette.js +30 -10
- package/src/components/global-styles/screen-background-color.js +2 -0
- package/src/components/global-styles/screen-color-palette.js +30 -3
- package/src/components/global-styles/screen-link-color.js +2 -0
- package/src/components/global-styles/screen-text-color.js +2 -0
- package/src/components/global-styles/screen-typography-element.js +39 -0
- package/src/components/global-styles/screen-typography.js +84 -3
- package/src/components/global-styles/style.scss +45 -6
- package/src/components/global-styles/test/use-global-styles-output.js +1 -1
- package/src/components/global-styles/test/utils.js +1 -1
- package/src/components/global-styles/typography-panel.js +37 -7
- package/src/components/global-styles/ui.js +9 -0
- package/src/components/global-styles/use-global-styles-output.js +2 -2
- package/src/components/global-styles/utils.js +1 -1
- package/src/components/keyboard-shortcuts/index.js +32 -0
- package/src/components/list/actions/index.js +95 -0
- package/src/components/list/actions/rename-menu-item.js +134 -0
- package/src/components/list/added-by.js +179 -0
- package/src/components/list/index.js +63 -5
- package/src/components/list/style.scss +106 -11
- package/src/components/list/table.js +65 -76
- package/src/components/list/use-register-shortcuts.js +45 -0
- package/src/components/navigation-sidebar/index.js +21 -12
- package/src/components/navigation-sidebar/navigation-panel/index.js +32 -15
- package/src/components/navigation-sidebar/navigation-toggle/index.js +29 -17
- package/src/components/navigation-sidebar/navigation-toggle/test/index.js +2 -0
- package/src/components/sidebar/style.scss +2 -1
- package/src/components/template-details/edit-template-title.js +28 -0
- package/src/components/template-details/index.js +15 -10
- package/src/components/template-details/template-areas.js +1 -1
- package/src/index.js +10 -2
- package/src/store/actions.js +82 -34
- package/src/store/selectors.js +22 -4
- package/src/store/test/actions.js +0 -24
- package/src/store/test/selectors.js +24 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { noop } from 'lodash';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* WordPress dependencies
|
|
8
|
+
*/
|
|
9
|
+
import {
|
|
10
|
+
__experimentalVStack as VStack,
|
|
11
|
+
__experimentalPaletteEdit as PaletteEdit,
|
|
12
|
+
DuotonePicker,
|
|
13
|
+
__experimentalHeading as Heading,
|
|
14
|
+
} from '@wordpress/components';
|
|
15
|
+
import { __ } from '@wordpress/i18n';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Internal dependencies
|
|
19
|
+
*/
|
|
20
|
+
import { useSetting } from './hooks';
|
|
21
|
+
|
|
22
|
+
export default function GradientPalettePanel( { name } ) {
|
|
23
|
+
const [ themeGradients, setThemeGradients ] = useSetting(
|
|
24
|
+
'color.gradients.theme',
|
|
25
|
+
name
|
|
26
|
+
);
|
|
27
|
+
const [ baseThemeGradients ] = useSetting(
|
|
28
|
+
'color.gradients.theme',
|
|
29
|
+
name,
|
|
30
|
+
'base'
|
|
31
|
+
);
|
|
32
|
+
const [ defaultGradients, setDefaultGradients ] = useSetting(
|
|
33
|
+
'color.gradients.default',
|
|
34
|
+
name
|
|
35
|
+
);
|
|
36
|
+
const [ baseDefaultGradients ] = useSetting(
|
|
37
|
+
'color.gradients.default',
|
|
38
|
+
name,
|
|
39
|
+
'base'
|
|
40
|
+
);
|
|
41
|
+
const [ customGradients, setCustomGradients ] = useSetting(
|
|
42
|
+
'color.gradients.custom',
|
|
43
|
+
name
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
const [ defaultPaletteEnabled ] = useSetting(
|
|
47
|
+
'color.defaultGradients',
|
|
48
|
+
name
|
|
49
|
+
);
|
|
50
|
+
const [ duotonePalette ] = useSetting( 'color.duotone' ) || [];
|
|
51
|
+
return (
|
|
52
|
+
<VStack
|
|
53
|
+
className="edit-site-global-styles-gradient-palette-panel"
|
|
54
|
+
spacing={ 10 }
|
|
55
|
+
>
|
|
56
|
+
<div>
|
|
57
|
+
<Heading className="edit-site-global-styles-gradient-palette-panel__duotone-heading">
|
|
58
|
+
{ __( 'Duotone' ) }
|
|
59
|
+
</Heading>
|
|
60
|
+
<DuotonePicker
|
|
61
|
+
duotonePalette={ duotonePalette }
|
|
62
|
+
disableCustomDuotone={ true }
|
|
63
|
+
disableCustomColors={ true }
|
|
64
|
+
clearable={ false }
|
|
65
|
+
onChange={ noop }
|
|
66
|
+
/>
|
|
67
|
+
</div>
|
|
68
|
+
{ !! themeGradients && !! themeGradients.length && (
|
|
69
|
+
<PaletteEdit
|
|
70
|
+
canReset={ themeGradients !== baseThemeGradients }
|
|
71
|
+
canOnlyChangeValues
|
|
72
|
+
gradients={ themeGradients }
|
|
73
|
+
onChange={ setThemeGradients }
|
|
74
|
+
paletteLabel={ __( 'Theme' ) }
|
|
75
|
+
/>
|
|
76
|
+
) }
|
|
77
|
+
{ !! defaultGradients &&
|
|
78
|
+
!! defaultGradients.length &&
|
|
79
|
+
!! defaultPaletteEnabled && (
|
|
80
|
+
<PaletteEdit
|
|
81
|
+
canReset={ defaultGradients !== baseDefaultGradients }
|
|
82
|
+
canOnlyChangeValues
|
|
83
|
+
gradients={ defaultGradients }
|
|
84
|
+
onChange={ setDefaultGradients }
|
|
85
|
+
paletteLabel={ __( 'Default' ) }
|
|
86
|
+
/>
|
|
87
|
+
) }
|
|
88
|
+
<PaletteEdit
|
|
89
|
+
gradients={ customGradients }
|
|
90
|
+
onChange={ setCustomGradients }
|
|
91
|
+
paletteLabel={ __( 'Custom' ) }
|
|
92
|
+
emptyMessage={ __(
|
|
93
|
+
'Custom gradients are empty! Add some gradients to create your own palette.'
|
|
94
|
+
) }
|
|
95
|
+
slugPrefix="custom-"
|
|
96
|
+
/>
|
|
97
|
+
</VStack>
|
|
98
|
+
);
|
|
99
|
+
}
|
|
@@ -49,7 +49,7 @@ export function useSetting( path, blockName, source = 'all' ) {
|
|
|
49
49
|
setUserConfig( ( currentConfig ) => {
|
|
50
50
|
const newUserConfig = cloneDeep( currentConfig );
|
|
51
51
|
const pathToSet = PATHS_WITH_MERGE[ path ]
|
|
52
|
-
? fullPath + '.
|
|
52
|
+
? fullPath + '.custom'
|
|
53
53
|
: fullPath;
|
|
54
54
|
set( newUserConfig, pathToSet, newValue );
|
|
55
55
|
|
|
@@ -65,7 +65,7 @@ export function useSetting( path, blockName, source = 'all' ) {
|
|
|
65
65
|
const getSettingValue = ( configToUse ) => {
|
|
66
66
|
const result = get( configToUse, currentPath );
|
|
67
67
|
if ( PATHS_WITH_MERGE[ path ] ) {
|
|
68
|
-
return result?.
|
|
68
|
+
return result?.custom ?? result?.theme ?? result?.default;
|
|
69
69
|
}
|
|
70
70
|
return result;
|
|
71
71
|
};
|
|
@@ -218,7 +218,7 @@ export function getSupportedGlobalStylesPanels( name ) {
|
|
|
218
218
|
}
|
|
219
219
|
|
|
220
220
|
export function useColorsPerOrigin( name ) {
|
|
221
|
-
const [ customColors ] = useSetting( 'color.palette.
|
|
221
|
+
const [ customColors ] = useSetting( 'color.palette.custom', name );
|
|
222
222
|
const [ themeColors ] = useSetting( 'color.palette.theme', name );
|
|
223
223
|
const [ defaultColors ] = useSetting( 'color.palette.default', name );
|
|
224
224
|
const [ shouldDisplayDefaultColors ] = useSetting( 'color.defaultPalette' );
|
|
@@ -261,7 +261,7 @@ export function useColorsPerOrigin( name ) {
|
|
|
261
261
|
}
|
|
262
262
|
|
|
263
263
|
export function useGradientsPerOrigin( name ) {
|
|
264
|
-
const [ customGradients ] = useSetting( 'color.gradients.
|
|
264
|
+
const [ customGradients ] = useSetting( 'color.gradients.custom', name );
|
|
265
265
|
const [ themeGradients ] = useSetting( 'color.gradients.theme', name );
|
|
266
266
|
const [ defaultGradients ] = useSetting( 'color.gradients.default', name );
|
|
267
267
|
const [ shouldDisplayDefaultGradients ] = useSetting(
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
ColorIndicator,
|
|
12
12
|
} from '@wordpress/components';
|
|
13
13
|
import { __, _n, sprintf } from '@wordpress/i18n';
|
|
14
|
+
import { useMemo } from '@wordpress/element';
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* Internal dependencies
|
|
@@ -22,18 +23,43 @@ import { useSetting } from './hooks';
|
|
|
22
23
|
const EMPTY_COLORS = [];
|
|
23
24
|
|
|
24
25
|
function Palette( { name } ) {
|
|
25
|
-
const [
|
|
26
|
-
const
|
|
26
|
+
const [ customColors ] = useSetting( 'color.palette.custom' );
|
|
27
|
+
const [ themeColors ] = useSetting( 'color.palette.theme' );
|
|
28
|
+
const [ defaultColors ] = useSetting( 'color.palette.default' );
|
|
29
|
+
|
|
30
|
+
const [ defaultPaletteEnabled ] = useSetting(
|
|
31
|
+
'color.defaultPalette',
|
|
32
|
+
name
|
|
33
|
+
);
|
|
34
|
+
const colors = useMemo(
|
|
35
|
+
() => [
|
|
36
|
+
...( customColors || EMPTY_COLORS ),
|
|
37
|
+
...( themeColors || EMPTY_COLORS ),
|
|
38
|
+
...( defaultColors && defaultPaletteEnabled
|
|
39
|
+
? defaultColors
|
|
40
|
+
: EMPTY_COLORS ),
|
|
41
|
+
],
|
|
42
|
+
[ customColors, themeColors, defaultColors, defaultPaletteEnabled ]
|
|
43
|
+
);
|
|
44
|
+
|
|
27
45
|
const screenPath = ! name
|
|
28
46
|
? '/colors/palette'
|
|
29
47
|
: '/blocks/' + name + '/colors/palette';
|
|
48
|
+
const paletteButtonText =
|
|
49
|
+
colors.length > 0
|
|
50
|
+
? sprintf(
|
|
51
|
+
// Translators: %d: Number of palette colors.
|
|
52
|
+
_n( '%d color', '%d colors', colors.length ),
|
|
53
|
+
colors.length
|
|
54
|
+
)
|
|
55
|
+
: __( 'Add custom colors' );
|
|
30
56
|
|
|
31
57
|
return (
|
|
32
58
|
<VStack spacing={ 3 }>
|
|
33
59
|
<Subtitle>{ __( 'Palette' ) }</Subtitle>
|
|
34
60
|
<ItemGroup isBordered isSeparated>
|
|
35
61
|
<NavigationButton path={ screenPath }>
|
|
36
|
-
<HStack>
|
|
62
|
+
<HStack isReversed={ colors.length === 0 }>
|
|
37
63
|
<FlexBlock>
|
|
38
64
|
<ZStack isLayered={ false } offset={ -8 }>
|
|
39
65
|
{ colors.slice( 0, 5 ).map( ( { color } ) => (
|
|
@@ -44,13 +70,7 @@ function Palette( { name } ) {
|
|
|
44
70
|
) ) }
|
|
45
71
|
</ZStack>
|
|
46
72
|
</FlexBlock>
|
|
47
|
-
<FlexItem>
|
|
48
|
-
{ sprintf(
|
|
49
|
-
// Translators: %d: Number of palette colors.
|
|
50
|
-
_n( '%d color', '%d colors', colors.length ),
|
|
51
|
-
colors.length
|
|
52
|
-
) }
|
|
53
|
-
</FlexItem>
|
|
73
|
+
<FlexItem>{ paletteButtonText }</FlexItem>
|
|
54
74
|
</HStack>
|
|
55
75
|
</NavigationButton>
|
|
56
76
|
</ItemGroup>
|
|
@@ -2,26 +2,53 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { __ } from '@wordpress/i18n';
|
|
5
|
+
import {
|
|
6
|
+
__experimentalToggleGroupControl as ToggleGroupControl,
|
|
7
|
+
__experimentalToggleGroupControlOption as ToggleGroupControlOption,
|
|
8
|
+
} from '@wordpress/components';
|
|
9
|
+
import { useState } from '@wordpress/element';
|
|
5
10
|
|
|
6
11
|
/**
|
|
7
12
|
* Internal dependencies
|
|
8
13
|
*/
|
|
9
14
|
import ColorPalettePanel from './color-palette-panel';
|
|
15
|
+
import GradientPalettePanel from './gradients-palette-panel';
|
|
10
16
|
import ScreenHeader from './header';
|
|
11
17
|
|
|
12
18
|
function ScreenColorPalette( { name } ) {
|
|
19
|
+
const [ currentTab, setCurrentTab ] = useState( 'solid' );
|
|
13
20
|
const parentMenu = name === undefined ? '' : '/blocks/' + name;
|
|
14
21
|
|
|
15
22
|
return (
|
|
16
23
|
<>
|
|
17
24
|
<ScreenHeader
|
|
18
25
|
back={ parentMenu + '/colors' }
|
|
19
|
-
title={ __( '
|
|
26
|
+
title={ __( 'Palette' ) }
|
|
20
27
|
description={ __(
|
|
21
|
-
'
|
|
28
|
+
'Palettes are used to provide default color options for blocks and various design tools. Here you can edit the colors with their labels.'
|
|
22
29
|
) }
|
|
23
30
|
/>
|
|
24
|
-
<
|
|
31
|
+
<ToggleGroupControl
|
|
32
|
+
className="edit-site-screen-color-palette-toggle"
|
|
33
|
+
value={ currentTab }
|
|
34
|
+
onChange={ setCurrentTab }
|
|
35
|
+
label={ __( 'Select palette type' ) }
|
|
36
|
+
hideLabelFromVision
|
|
37
|
+
isBlock
|
|
38
|
+
>
|
|
39
|
+
<ToggleGroupControlOption
|
|
40
|
+
value="solid"
|
|
41
|
+
label={ __( 'Solid' ) }
|
|
42
|
+
/>
|
|
43
|
+
<ToggleGroupControlOption
|
|
44
|
+
value="gradient"
|
|
45
|
+
label={ __( 'Gradient' ) }
|
|
46
|
+
/>
|
|
47
|
+
</ToggleGroupControl>
|
|
48
|
+
{ currentTab === 'solid' && <ColorPalettePanel name={ name } /> }
|
|
49
|
+
{ currentTab === 'gradient' && (
|
|
50
|
+
<GradientPalettePanel name={ name } />
|
|
51
|
+
) }
|
|
25
52
|
</>
|
|
26
53
|
);
|
|
27
54
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { __ } from '@wordpress/i18n';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import TypographyPanel from './typography-panel';
|
|
10
|
+
import ScreenHeader from './header';
|
|
11
|
+
|
|
12
|
+
const elements = {
|
|
13
|
+
text: {
|
|
14
|
+
description: __( 'Manage the fonts used on the site.' ),
|
|
15
|
+
title: __( 'Text' ),
|
|
16
|
+
},
|
|
17
|
+
link: {
|
|
18
|
+
description: __( 'Manage the fonts and typography used on the links.' ),
|
|
19
|
+
title: __( 'Links' ),
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
function ScreenTypographyElement( { name, element } ) {
|
|
24
|
+
const parentMenu =
|
|
25
|
+
name === undefined ? '/typography' : '/blocks/' + name + '/typography';
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<>
|
|
29
|
+
<ScreenHeader
|
|
30
|
+
back={ parentMenu }
|
|
31
|
+
title={ elements[ element ].title }
|
|
32
|
+
description={ elements[ element ].description }
|
|
33
|
+
/>
|
|
34
|
+
<TypographyPanel name={ name } element={ element } />
|
|
35
|
+
</>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export default ScreenTypographyElement;
|
|
@@ -2,12 +2,69 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { __ } from '@wordpress/i18n';
|
|
5
|
+
import {
|
|
6
|
+
__experimentalItemGroup as ItemGroup,
|
|
7
|
+
__experimentalVStack as VStack,
|
|
8
|
+
__experimentalHStack as HStack,
|
|
9
|
+
FlexItem,
|
|
10
|
+
} from '@wordpress/components';
|
|
5
11
|
|
|
6
12
|
/**
|
|
7
13
|
* Internal dependencies
|
|
8
14
|
*/
|
|
9
|
-
import TypographyPanel from './typography-panel';
|
|
10
15
|
import ScreenHeader from './header';
|
|
16
|
+
import NavigationButton from './navigation-button';
|
|
17
|
+
import { useStyle } from './hooks';
|
|
18
|
+
import Subtitle from './subtitle';
|
|
19
|
+
import TypographyPanel from './typography-panel';
|
|
20
|
+
|
|
21
|
+
function Item( { name, parentMenu, element, label } ) {
|
|
22
|
+
const hasSupport = ! name;
|
|
23
|
+
const prefix =
|
|
24
|
+
element === 'text' || ! element ? '' : `elements.${ element }.`;
|
|
25
|
+
const extraStyles =
|
|
26
|
+
element === 'link'
|
|
27
|
+
? {
|
|
28
|
+
textDecoration: 'underline',
|
|
29
|
+
}
|
|
30
|
+
: {};
|
|
31
|
+
const [ fontFamily ] = useStyle( prefix + 'typography.fontFamily', name );
|
|
32
|
+
const [ fontStyle ] = useStyle( prefix + 'typography.fontStyle', name );
|
|
33
|
+
const [ fontWeight ] = useStyle( prefix + 'typography.fontWeight', name );
|
|
34
|
+
const [ letterSpacing ] = useStyle(
|
|
35
|
+
prefix + 'typography.letterSpacing',
|
|
36
|
+
name
|
|
37
|
+
);
|
|
38
|
+
const [ backgroundColor ] = useStyle( prefix + 'color.background', name );
|
|
39
|
+
const [ gradientValue ] = useStyle( prefix + 'color.gradient', name );
|
|
40
|
+
const [ color ] = useStyle( prefix + 'color.text', name );
|
|
41
|
+
|
|
42
|
+
if ( ! hasSupport ) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return (
|
|
47
|
+
<NavigationButton path={ parentMenu + '/typography/' + element }>
|
|
48
|
+
<HStack justify="flex-start">
|
|
49
|
+
<FlexItem
|
|
50
|
+
className="edit-site-global-styles-screen-typography__indicator"
|
|
51
|
+
style={ {
|
|
52
|
+
fontFamily: fontFamily ?? 'serif',
|
|
53
|
+
background: gradientValue ?? backgroundColor,
|
|
54
|
+
color,
|
|
55
|
+
fontStyle,
|
|
56
|
+
fontWeight,
|
|
57
|
+
letterSpacing,
|
|
58
|
+
...extraStyles,
|
|
59
|
+
} }
|
|
60
|
+
>
|
|
61
|
+
{ __( 'Aa' ) }
|
|
62
|
+
</FlexItem>
|
|
63
|
+
<FlexItem>{ label }</FlexItem>
|
|
64
|
+
</HStack>
|
|
65
|
+
</NavigationButton>
|
|
66
|
+
);
|
|
67
|
+
}
|
|
11
68
|
|
|
12
69
|
function ScreenTypography( { name } ) {
|
|
13
70
|
const parentMenu = name === undefined ? '' : '/blocks/' + name;
|
|
@@ -18,10 +75,34 @@ function ScreenTypography( { name } ) {
|
|
|
18
75
|
back={ parentMenu ? parentMenu : '/' }
|
|
19
76
|
title={ __( 'Typography' ) }
|
|
20
77
|
description={ __(
|
|
21
|
-
'Manage the
|
|
78
|
+
'Manage the typography settings for different elements.'
|
|
22
79
|
) }
|
|
23
80
|
/>
|
|
24
|
-
|
|
81
|
+
|
|
82
|
+
{ ! name && (
|
|
83
|
+
<div className="edit-site-global-styles-screen-typography">
|
|
84
|
+
<VStack spacing={ 3 }>
|
|
85
|
+
<Subtitle>{ __( 'Elements' ) }</Subtitle>
|
|
86
|
+
<ItemGroup isBordered isSeparated>
|
|
87
|
+
<Item
|
|
88
|
+
name={ name }
|
|
89
|
+
parentMenu={ parentMenu }
|
|
90
|
+
element="text"
|
|
91
|
+
label={ __( 'Text' ) }
|
|
92
|
+
/>
|
|
93
|
+
<Item
|
|
94
|
+
name={ name }
|
|
95
|
+
parentMenu={ parentMenu }
|
|
96
|
+
element="link"
|
|
97
|
+
label={ __( 'Links' ) }
|
|
98
|
+
/>
|
|
99
|
+
</ItemGroup>
|
|
100
|
+
</VStack>
|
|
101
|
+
</div>
|
|
102
|
+
) }
|
|
103
|
+
|
|
104
|
+
{ /* no typogrpahy elements support yet for blocks */ }
|
|
105
|
+
{ !! name && <TypographyPanel name={ name } element="text" /> }
|
|
25
106
|
</>
|
|
26
107
|
);
|
|
27
108
|
}
|
|
@@ -15,6 +15,30 @@
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
.edit-site-typography-panel__preview {
|
|
19
|
+
display: flex;
|
|
20
|
+
align-items: center;
|
|
21
|
+
justify-content: center;
|
|
22
|
+
min-height: 100px;
|
|
23
|
+
margin-bottom: $grid-unit-20;
|
|
24
|
+
background: $gray-100;
|
|
25
|
+
border-radius: $radius-block-ui;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.edit-site-global-styles-screen-typography {
|
|
29
|
+
margin: $grid-unit-20;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.edit-site-global-styles-screen-typography__indicator {
|
|
33
|
+
height: 24px;
|
|
34
|
+
width: 24px;
|
|
35
|
+
font-size: 14px;
|
|
36
|
+
display: flex !important;
|
|
37
|
+
align-items: center;
|
|
38
|
+
justify-content: center;
|
|
39
|
+
border-radius: $radius-block-ui;
|
|
40
|
+
}
|
|
41
|
+
|
|
18
42
|
.edit-site-global-styles-screen-colors {
|
|
19
43
|
margin: $grid-unit-20;
|
|
20
44
|
|
|
@@ -22,15 +46,13 @@
|
|
|
22
46
|
margin-left: 0;
|
|
23
47
|
display: block;
|
|
24
48
|
border-radius: 50%;
|
|
25
|
-
border: 0;
|
|
26
49
|
height: 24px;
|
|
27
50
|
width: 24px;
|
|
28
51
|
padding: 0;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
background
|
|
33
|
-
background-size: calc(2 * 5px) calc(2 * 5px);
|
|
52
|
+
border: $border-width solid $gray-300;
|
|
53
|
+
|
|
54
|
+
// Show a diagonal line (crossed out) for empty swatches.
|
|
55
|
+
background: linear-gradient(-45deg, transparent 48%, $gray-300 48%, $gray-300 52%, transparent 52%);
|
|
34
56
|
}
|
|
35
57
|
}
|
|
36
58
|
|
|
@@ -44,3 +66,20 @@
|
|
|
44
66
|
text-transform: uppercase;
|
|
45
67
|
font-weight: 500;
|
|
46
68
|
}
|
|
69
|
+
|
|
70
|
+
.edit-site-screen-color-palette-toggle.edit-site-screen-color-palette-toggle {
|
|
71
|
+
margin-right: $grid-unit-20;
|
|
72
|
+
margin-left: $grid-unit-20;
|
|
73
|
+
width: unset;
|
|
74
|
+
.components-toggle-group-control {
|
|
75
|
+
min-height: $grid-unit-40;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
h2.edit-site-global-styles-gradient-palette-panel__duotone-heading.components-heading {
|
|
80
|
+
text-transform: uppercase;
|
|
81
|
+
line-height: $grid-unit-30;
|
|
82
|
+
font-weight: 500;
|
|
83
|
+
font-size: 11px;
|
|
84
|
+
margin-bottom: $grid-unit-10;
|
|
85
|
+
}
|
|
@@ -54,8 +54,10 @@ function useHasLetterSpacingControl( name ) {
|
|
|
54
54
|
);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
export default function TypographyPanel( { name } ) {
|
|
57
|
+
export default function TypographyPanel( { name, element } ) {
|
|
58
58
|
const supports = getSupportedGlobalStylesPanels( name );
|
|
59
|
+
const prefix =
|
|
60
|
+
element === 'text' || ! element ? '' : `elements.${ element }.`;
|
|
59
61
|
const [ fontSizes ] = useSetting( 'typography.fontSizes', name );
|
|
60
62
|
const disableCustomFontSizes = ! useSetting(
|
|
61
63
|
'typography.customFontSize',
|
|
@@ -73,30 +75,58 @@ export default function TypographyPanel( { name } ) {
|
|
|
73
75
|
const hasLetterSpacingControl = useHasLetterSpacingControl( name );
|
|
74
76
|
|
|
75
77
|
const [ fontFamily, setFontFamily ] = useStyle(
|
|
76
|
-
'typography.fontFamily',
|
|
78
|
+
prefix + 'typography.fontFamily',
|
|
79
|
+
name
|
|
80
|
+
);
|
|
81
|
+
const [ fontSize, setFontSize ] = useStyle(
|
|
82
|
+
prefix + 'typography.fontSize',
|
|
77
83
|
name
|
|
78
84
|
);
|
|
79
|
-
const [ fontSize, setFontSize ] = useStyle( 'typography.fontSize', name );
|
|
80
85
|
|
|
81
86
|
const [ fontStyle, setFontStyle ] = useStyle(
|
|
82
|
-
'typography.fontStyle',
|
|
87
|
+
prefix + 'typography.fontStyle',
|
|
83
88
|
name
|
|
84
89
|
);
|
|
85
90
|
const [ fontWeight, setFontWeight ] = useStyle(
|
|
86
|
-
'typography.fontWeight',
|
|
91
|
+
prefix + 'typography.fontWeight',
|
|
87
92
|
name
|
|
88
93
|
);
|
|
89
94
|
const [ lineHeight, setLineHeight ] = useStyle(
|
|
90
|
-
'typography.lineHeight',
|
|
95
|
+
prefix + 'typography.lineHeight',
|
|
91
96
|
name
|
|
92
97
|
);
|
|
93
98
|
const [ letterSpacing, setLetterSpacing ] = useStyle(
|
|
94
|
-
'typography.letterSpacing',
|
|
99
|
+
prefix + 'typography.letterSpacing',
|
|
95
100
|
name
|
|
96
101
|
);
|
|
102
|
+
const [ backgroundColor ] = useStyle( prefix + 'color.background', name );
|
|
103
|
+
const [ gradientValue ] = useStyle( prefix + 'color.gradient', name );
|
|
104
|
+
const [ color ] = useStyle( prefix + 'color.text', name );
|
|
105
|
+
const extraStyles =
|
|
106
|
+
element === 'link'
|
|
107
|
+
? {
|
|
108
|
+
textDecoration: 'underline',
|
|
109
|
+
}
|
|
110
|
+
: {};
|
|
97
111
|
|
|
98
112
|
return (
|
|
99
113
|
<PanelBody className="edit-site-typography-panel" initialOpen={ true }>
|
|
114
|
+
<div
|
|
115
|
+
className="edit-site-typography-panel__preview"
|
|
116
|
+
style={ {
|
|
117
|
+
fontFamily: fontFamily ?? 'serif',
|
|
118
|
+
background: gradientValue ?? backgroundColor,
|
|
119
|
+
color,
|
|
120
|
+
fontSize,
|
|
121
|
+
fontStyle,
|
|
122
|
+
fontWeight,
|
|
123
|
+
letterSpacing,
|
|
124
|
+
...extraStyles,
|
|
125
|
+
} }
|
|
126
|
+
>
|
|
127
|
+
Aa
|
|
128
|
+
</div>
|
|
129
|
+
|
|
100
130
|
{ supports.includes( 'fontFamily' ) && (
|
|
101
131
|
<FontFamilyControl
|
|
102
132
|
fontFamilies={ fontFamilies }
|
|
@@ -14,6 +14,7 @@ import ScreenRoot from './screen-root';
|
|
|
14
14
|
import ScreenBlockList from './screen-block-list';
|
|
15
15
|
import ScreenBlock from './screen-block';
|
|
16
16
|
import ScreenTypography from './screen-typography';
|
|
17
|
+
import ScreenTypographyElement from './screen-typography-element';
|
|
17
18
|
import ScreenColors from './screen-colors';
|
|
18
19
|
import ScreenColorPalette from './screen-color-palette';
|
|
19
20
|
import ScreenBackgroundColor from './screen-background-color';
|
|
@@ -30,6 +31,14 @@ function ContextScreens( { name } ) {
|
|
|
30
31
|
<ScreenTypography name={ name } />
|
|
31
32
|
</NavigatorScreen>
|
|
32
33
|
|
|
34
|
+
<NavigatorScreen path={ parentMenu + '/typography/text' }>
|
|
35
|
+
<ScreenTypographyElement name={ name } element="text" />
|
|
36
|
+
</NavigatorScreen>
|
|
37
|
+
|
|
38
|
+
<NavigatorScreen path={ parentMenu + '/typography/link' }>
|
|
39
|
+
<ScreenTypographyElement name={ name } element="link" />
|
|
40
|
+
</NavigatorScreen>
|
|
41
|
+
|
|
33
42
|
<NavigatorScreen path={ parentMenu + '/colors' }>
|
|
34
43
|
<ScreenColors name={ name } />
|
|
35
44
|
</NavigatorScreen>
|
|
@@ -60,7 +60,7 @@ function getPresetsDeclarations( blockPresets = {} ) {
|
|
|
60
60
|
PRESET_METADATA,
|
|
61
61
|
( declarations, { path, valueKey, cssVarInfix } ) => {
|
|
62
62
|
const presetByOrigin = get( blockPresets, path, [] );
|
|
63
|
-
[ 'default', 'theme', '
|
|
63
|
+
[ 'default', 'theme', 'custom' ].forEach( ( origin ) => {
|
|
64
64
|
if ( presetByOrigin[ origin ] ) {
|
|
65
65
|
presetByOrigin[ origin ].forEach( ( value ) => {
|
|
66
66
|
declarations.push(
|
|
@@ -94,7 +94,7 @@ function getPresetsClasses( blockSelector, blockPresets = {} ) {
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
const presetByOrigin = get( blockPresets, path, [] );
|
|
97
|
-
[ 'default', 'theme', '
|
|
97
|
+
[ 'default', 'theme', 'custom' ].forEach( ( origin ) => {
|
|
98
98
|
if ( presetByOrigin[ origin ] ) {
|
|
99
99
|
presetByOrigin[ origin ].forEach( ( { slug } ) => {
|
|
100
100
|
classes.forEach( ( { classSuffix, propertyName } ) => {
|
|
@@ -90,7 +90,7 @@ function findInPresetsBy(
|
|
|
90
90
|
for ( const presetByOrigin of orderedPresetsByOrigin ) {
|
|
91
91
|
if ( presetByOrigin ) {
|
|
92
92
|
// Preset origins ordered by priority.
|
|
93
|
-
const origins = [ '
|
|
93
|
+
const origins = [ 'custom', 'theme', 'default' ];
|
|
94
94
|
for ( const origin of origins ) {
|
|
95
95
|
const presets = presetByOrigin[ origin ];
|
|
96
96
|
if ( presets ) {
|