@wordpress/edit-site 4.5.0 → 4.8.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.
- package/CHANGELOG.md +6 -0
- package/build/components/add-new-template/new-template.js +24 -22
- package/build/components/add-new-template/new-template.js.map +1 -1
- package/build/components/block-editor/block-inspector-button.js.map +1 -1
- package/build/components/block-editor/index.js +28 -22
- package/build/components/block-editor/index.js.map +1 -1
- package/build/components/code-editor/code-editor-text-area.js +11 -9
- package/build/components/code-editor/code-editor-text-area.js.map +1 -1
- package/build/components/edit-template-part-menu-button/index.js.map +1 -1
- package/build/components/editor/index.js.map +1 -1
- package/build/components/global-styles/border-panel.js +2 -7
- package/build/components/global-styles/border-panel.js.map +1 -1
- package/build/components/global-styles/global-styles-provider.js.map +1 -1
- package/build/components/global-styles/gradients-palette-panel.js +3 -7
- package/build/components/global-styles/gradients-palette-panel.js.map +1 -1
- package/build/components/global-styles/hooks.js +2 -2
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/preview.js +13 -2
- package/build/components/global-styles/preview.js.map +1 -1
- package/build/components/global-styles/screen-block-list.js.map +1 -1
- package/build/components/global-styles/screen-root.js.map +1 -1
- package/build/components/global-styles/screen-style-variations.js +9 -1
- package/build/components/global-styles/screen-style-variations.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +1 -7
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/header/index.js.map +1 -1
- package/build/components/header/mode-switcher/index.js.map +1 -1
- package/build/components/header/more-menu/copy-content-menu-item.js +1 -1
- package/build/components/header/more-menu/copy-content-menu-item.js.map +1 -1
- package/build/components/header/more-menu/site-export.js.map +1 -1
- package/build/components/keyboard-shortcuts/index.js.map +1 -1
- package/build/components/list/actions/index.js.map +1 -1
- package/build/components/list/actions/rename-menu-item.js.map +1 -1
- package/build/components/list/added-by.js.map +1 -1
- package/build/components/list/table.js +1 -1
- package/build/components/list/table.js.map +1 -1
- package/build/components/navigation-sidebar/index.js.map +1 -1
- package/build/components/navigation-sidebar/navigation-panel/constants.js +2 -2
- package/build/components/navigation-sidebar/navigation-panel/constants.js.map +1 -1
- package/build/components/preferences-modal/index.js +5 -1
- package/build/components/preferences-modal/index.js.map +1 -1
- package/build/components/routes/use-title.js +3 -1
- package/build/components/routes/use-title.js.map +1 -1
- package/build/components/save-button/index.js.map +1 -1
- package/build/components/sidebar/global-styles-sidebar.js +2 -4
- package/build/components/sidebar/global-styles-sidebar.js.map +1 -1
- package/build/components/sidebar/index.js.map +1 -1
- package/build/components/sidebar/navigation-menu-sidebar/navigation-inspector.js.map +1 -1
- package/build/components/sidebar/template-card/index.js.map +1 -1
- package/build/components/sidebar/template-card/template-areas.js.map +1 -1
- package/build/components/template-details/index.js +4 -2
- package/build/components/template-details/index.js.map +1 -1
- package/build/components/template-details/template-areas.js.map +1 -1
- package/build/components/template-part-converter/index.js.map +1 -1
- package/build/components/url-query-controller/index.js.map +1 -1
- package/build/index.js +11 -2
- package/build/index.js.map +1 -1
- package/build/store/actions.js.map +1 -1
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/add-new-template/new-template.js +24 -23
- package/build-module/components/add-new-template/new-template.js.map +1 -1
- package/build-module/components/block-editor/block-inspector-button.js.map +1 -1
- package/build-module/components/block-editor/index.js +28 -23
- package/build-module/components/block-editor/index.js.map +1 -1
- package/build-module/components/code-editor/code-editor-text-area.js +12 -10
- package/build-module/components/code-editor/code-editor-text-area.js.map +1 -1
- package/build-module/components/edit-template-part-menu-button/index.js.map +1 -1
- package/build-module/components/editor/index.js.map +1 -1
- package/build-module/components/global-styles/border-panel.js +2 -7
- package/build-module/components/global-styles/border-panel.js.map +1 -1
- package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
- package/build-module/components/global-styles/gradients-palette-panel.js +3 -5
- package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +2 -2
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/preview.js +14 -3
- package/build-module/components/global-styles/preview.js.map +1 -1
- package/build-module/components/global-styles/screen-block-list.js.map +1 -1
- package/build-module/components/global-styles/screen-root.js.map +1 -1
- package/build-module/components/global-styles/screen-style-variations.js +9 -1
- package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +1 -7
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/header/index.js.map +1 -1
- package/build-module/components/header/mode-switcher/index.js.map +1 -1
- package/build-module/components/header/more-menu/copy-content-menu-item.js +1 -1
- package/build-module/components/header/more-menu/copy-content-menu-item.js.map +1 -1
- package/build-module/components/header/more-menu/site-export.js.map +1 -1
- package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
- package/build-module/components/list/actions/index.js.map +1 -1
- package/build-module/components/list/actions/rename-menu-item.js.map +1 -1
- package/build-module/components/list/added-by.js.map +1 -1
- package/build-module/components/list/table.js +1 -1
- package/build-module/components/list/table.js.map +1 -1
- package/build-module/components/navigation-sidebar/index.js.map +1 -1
- package/build-module/components/navigation-sidebar/navigation-panel/constants.js +2 -2
- package/build-module/components/navigation-sidebar/navigation-panel/constants.js.map +1 -1
- package/build-module/components/preferences-modal/index.js +5 -1
- package/build-module/components/preferences-modal/index.js.map +1 -1
- package/build-module/components/routes/use-title.js +2 -1
- package/build-module/components/routes/use-title.js.map +1 -1
- package/build-module/components/save-button/index.js.map +1 -1
- package/build-module/components/sidebar/global-styles-sidebar.js +2 -4
- package/build-module/components/sidebar/global-styles-sidebar.js.map +1 -1
- package/build-module/components/sidebar/index.js.map +1 -1
- package/build-module/components/sidebar/navigation-menu-sidebar/navigation-inspector.js.map +1 -1
- package/build-module/components/sidebar/template-card/index.js.map +1 -1
- package/build-module/components/sidebar/template-card/template-areas.js.map +1 -1
- package/build-module/components/template-details/index.js +4 -2
- package/build-module/components/template-details/index.js.map +1 -1
- package/build-module/components/template-details/template-areas.js.map +1 -1
- package/build-module/components/template-part-converter/index.js.map +1 -1
- package/build-module/components/url-query-controller/index.js.map +1 -1
- package/build-module/index.js +10 -2
- package/build-module/index.js.map +1 -1
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +8 -50
- package/build-style/style.css +8 -50
- package/package.json +30 -30
- package/src/components/add-new-template/new-template.js +24 -20
- package/src/components/block-editor/block-inspector-button.js +2 -3
- package/src/components/block-editor/index.js +53 -37
- package/src/components/code-editor/code-editor-text-area.js +12 -7
- package/src/components/edit-template-part-menu-button/index.js +2 -3
- package/src/components/editor/index.js +4 -5
- package/src/components/global-styles/border-panel.js +2 -12
- package/src/components/global-styles/global-styles-provider.js +4 -8
- package/src/components/global-styles/gradients-palette-panel.js +2 -5
- package/src/components/global-styles/hooks.js +5 -4
- package/src/components/global-styles/preview.js +17 -2
- package/src/components/global-styles/screen-block-list.js +4 -4
- package/src/components/global-styles/screen-root.js +4 -3
- package/src/components/global-styles/screen-style-variations.js +10 -4
- package/src/components/global-styles/use-global-styles-output.js +1 -4
- package/src/components/header/document-actions/style.scss +1 -1
- package/src/components/header/index.js +2 -3
- package/src/components/header/mode-switcher/index.js +4 -4
- package/src/components/header/more-menu/copy-content-menu-item.js +3 -4
- package/src/components/header/more-menu/site-export.js +2 -3
- package/src/components/keyboard-shortcuts/index.js +6 -10
- package/src/components/list/actions/index.js +2 -3
- package/src/components/list/actions/rename-menu-item.js +4 -6
- package/src/components/list/added-by.js +4 -3
- package/src/components/list/style.scss +1 -0
- package/src/components/list/table.js +1 -4
- package/src/components/navigation-sidebar/index.js +2 -4
- package/src/components/navigation-sidebar/navigation-panel/constants.js +2 -2
- package/src/components/preferences-modal/index.js +8 -1
- package/src/components/routes/use-title.js +3 -2
- package/src/components/save-button/index.js +2 -4
- package/src/components/sidebar/global-styles-sidebar.js +1 -1
- package/src/components/sidebar/index.js +8 -6
- package/src/components/sidebar/navigation-menu-sidebar/navigation-inspector.js +6 -9
- package/src/components/sidebar/navigation-menu-sidebar/style.scss +0 -1
- package/src/components/sidebar/style.scss +0 -49
- package/src/components/sidebar/template-card/index.js +2 -3
- package/src/components/sidebar/template-card/template-areas.js +6 -6
- package/src/components/template-details/index.js +4 -1
- package/src/components/template-details/template-areas.js +6 -6
- package/src/components/template-part-converter/index.js +2 -3
- package/src/components/url-query-controller/index.js +2 -3
- package/src/index.js +17 -0
- package/src/store/actions.js +257 -233
- package/src/store/selectors.js +9 -10
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { filter,
|
|
4
|
+
import { filter, includes, map } from 'lodash';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
@@ -37,10 +37,11 @@ import { store as noticesStore } from '@wordpress/notices';
|
|
|
37
37
|
* Internal dependencies
|
|
38
38
|
*/
|
|
39
39
|
import { useHistory } from '../routes';
|
|
40
|
+
import { store as editSiteStore } from '../../store';
|
|
40
41
|
|
|
41
42
|
const DEFAULT_TEMPLATE_SLUGS = [
|
|
42
43
|
'front-page',
|
|
43
|
-
'single
|
|
44
|
+
'single',
|
|
44
45
|
'page',
|
|
45
46
|
'index',
|
|
46
47
|
'archive',
|
|
@@ -55,7 +56,7 @@ const DEFAULT_TEMPLATE_SLUGS = [
|
|
|
55
56
|
|
|
56
57
|
const TEMPLATE_ICONS = {
|
|
57
58
|
'front-page': home,
|
|
58
|
-
|
|
59
|
+
single: post,
|
|
59
60
|
page,
|
|
60
61
|
archive,
|
|
61
62
|
search,
|
|
@@ -78,38 +79,41 @@ export default function NewTemplate( { postType } ) {
|
|
|
78
79
|
'wp_template',
|
|
79
80
|
{ per_page: -1 }
|
|
80
81
|
),
|
|
81
|
-
defaultTemplateTypes:
|
|
82
|
-
editorStore
|
|
83
|
-
).__experimentalGetDefaultTemplateTypes(),
|
|
82
|
+
defaultTemplateTypes:
|
|
83
|
+
select( editorStore ).__experimentalGetDefaultTemplateTypes(),
|
|
84
84
|
} ),
|
|
85
85
|
[]
|
|
86
86
|
);
|
|
87
87
|
const { saveEntityRecord } = useDispatch( coreStore );
|
|
88
88
|
const { createErrorNotice } = useDispatch( noticesStore );
|
|
89
|
+
const { setTemplate } = useDispatch( editSiteStore );
|
|
89
90
|
|
|
90
|
-
async function createTemplate(
|
|
91
|
+
async function createTemplate( template ) {
|
|
91
92
|
try {
|
|
92
|
-
const { title, description } =
|
|
93
|
-
slug,
|
|
94
|
-
} );
|
|
93
|
+
const { title, description, slug } = template;
|
|
95
94
|
|
|
96
|
-
const
|
|
95
|
+
const newTemplate = await saveEntityRecord(
|
|
97
96
|
'postType',
|
|
98
97
|
'wp_template',
|
|
99
98
|
{
|
|
100
|
-
|
|
99
|
+
description,
|
|
101
100
|
// Slugs need to be strings, so this is for template `404`
|
|
102
101
|
slug: slug.toString(),
|
|
103
102
|
status: 'publish',
|
|
104
103
|
title,
|
|
104
|
+
// This adds a post meta field in template that is part of `is_custom` value calculation.
|
|
105
|
+
is_wp_suggestion: true,
|
|
105
106
|
},
|
|
106
107
|
{ throwOnError: true }
|
|
107
108
|
);
|
|
108
109
|
|
|
110
|
+
// Set template before navigating away to avoid initial stale value.
|
|
111
|
+
setTemplate( newTemplate.id, newTemplate.slug );
|
|
112
|
+
|
|
109
113
|
// Navigate to the created template editor.
|
|
110
114
|
history.push( {
|
|
111
|
-
postId:
|
|
112
|
-
postType:
|
|
115
|
+
postId: newTemplate.id,
|
|
116
|
+
postType: newTemplate.type,
|
|
113
117
|
} );
|
|
114
118
|
|
|
115
119
|
// TODO: Add a success notice?
|
|
@@ -162,23 +166,23 @@ export default function NewTemplate( { postType } ) {
|
|
|
162
166
|
{ () => (
|
|
163
167
|
<NavigableMenu className="edit-site-new-template-dropdown__popover">
|
|
164
168
|
<MenuGroup label={ postType.labels.add_new_item }>
|
|
165
|
-
{ map(
|
|
166
|
-
|
|
167
|
-
|
|
169
|
+
{ map( missingTemplates, ( template ) => {
|
|
170
|
+
const { title, description, slug } = template;
|
|
171
|
+
return (
|
|
168
172
|
<MenuItem
|
|
169
173
|
icon={ TEMPLATE_ICONS[ slug ] }
|
|
170
174
|
iconPosition="left"
|
|
171
175
|
info={ description }
|
|
172
176
|
key={ slug }
|
|
173
177
|
onClick={ () => {
|
|
174
|
-
createTemplate(
|
|
178
|
+
createTemplate( template );
|
|
175
179
|
// We will be navigated way so no need to close the dropdown.
|
|
176
180
|
} }
|
|
177
181
|
>
|
|
178
182
|
{ title }
|
|
179
183
|
</MenuItem>
|
|
180
|
-
)
|
|
181
|
-
) }
|
|
184
|
+
);
|
|
185
|
+
} ) }
|
|
182
186
|
</MenuGroup>
|
|
183
187
|
</NavigableMenu>
|
|
184
188
|
) }
|
|
@@ -30,9 +30,8 @@ export default function BlockInspectorButton( { onClick = () => {} } ) {
|
|
|
30
30
|
} ),
|
|
31
31
|
[]
|
|
32
32
|
);
|
|
33
|
-
const { enableComplementaryArea, disableComplementaryArea } =
|
|
34
|
-
interfaceStore
|
|
35
|
-
);
|
|
33
|
+
const { enableComplementaryArea, disableComplementaryArea } =
|
|
34
|
+
useDispatch( interfaceStore );
|
|
36
35
|
|
|
37
36
|
const label = isBlockInspectorOpen
|
|
38
37
|
? __( 'Hide more settings' )
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
4
|
import classnames from 'classnames';
|
|
5
|
+
import { omit, unionBy } from 'lodash';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* WordPress dependencies
|
|
8
9
|
*/
|
|
9
10
|
import { useSelect, useDispatch } from '@wordpress/data';
|
|
10
|
-
import { useCallback, useRef, Fragment } from '@wordpress/element';
|
|
11
|
+
import { useCallback, useMemo, useRef, Fragment } from '@wordpress/element';
|
|
11
12
|
import { useEntityBlockEditor, store as coreStore } from '@wordpress/core-data';
|
|
12
13
|
import {
|
|
13
14
|
BlockList,
|
|
@@ -48,44 +49,13 @@ const LAYOUT = {
|
|
|
48
49
|
};
|
|
49
50
|
|
|
50
51
|
export default function BlockEditor( { setIsInserterOpen } ) {
|
|
51
|
-
const {
|
|
52
|
+
const { storedSettings, templateType, templateId, page } = useSelect(
|
|
52
53
|
( select ) => {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
);
|
|
56
|
-
|
|
57
|
-
if ( ! storedSettings.__experimentalBlockPatterns ) {
|
|
58
|
-
storedSettings = {
|
|
59
|
-
...storedSettings,
|
|
60
|
-
__experimentalBlockPatterns: select(
|
|
61
|
-
coreStore
|
|
62
|
-
).getBlockPatterns(),
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
if ( ! storedSettings.__experimentalBlockPatternCategories ) {
|
|
67
|
-
storedSettings = {
|
|
68
|
-
...storedSettings,
|
|
69
|
-
__experimentalBlockPatternCategories: select(
|
|
70
|
-
coreStore
|
|
71
|
-
).getBlockPatternCategories(),
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return {
|
|
76
|
-
settings: storedSettings,
|
|
77
|
-
};
|
|
78
|
-
},
|
|
79
|
-
[ setIsInserterOpen ]
|
|
80
|
-
);
|
|
81
|
-
|
|
82
|
-
const { templateType, templateId, page } = useSelect(
|
|
83
|
-
( select ) => {
|
|
84
|
-
const { getEditedPostType, getEditedPostId, getPage } = select(
|
|
85
|
-
editSiteStore
|
|
86
|
-
);
|
|
54
|
+
const { getSettings, getEditedPostType, getEditedPostId, getPage } =
|
|
55
|
+
select( editSiteStore );
|
|
87
56
|
|
|
88
57
|
return {
|
|
58
|
+
storedSettings: getSettings( setIsInserterOpen ),
|
|
89
59
|
templateType: getEditedPostType(),
|
|
90
60
|
templateId: getEditedPostId(),
|
|
91
61
|
page: getPage(),
|
|
@@ -94,6 +64,49 @@ export default function BlockEditor( { setIsInserterOpen } ) {
|
|
|
94
64
|
[ setIsInserterOpen ]
|
|
95
65
|
);
|
|
96
66
|
|
|
67
|
+
const settingsBlockPatterns =
|
|
68
|
+
storedSettings.__experimentalAdditionalBlockPatterns ?? // WP 6.0
|
|
69
|
+
storedSettings.__experimentalBlockPatterns; // WP 5.9
|
|
70
|
+
const settingsBlockPatternCategories =
|
|
71
|
+
storedSettings.__experimentalAdditionalBlockPatternCategories ?? // WP 6.0
|
|
72
|
+
storedSettings.__experimentalBlockPatternCategories; // WP 5.9
|
|
73
|
+
|
|
74
|
+
const { restBlockPatterns, restBlockPatternCategories } = useSelect(
|
|
75
|
+
( select ) => ( {
|
|
76
|
+
restBlockPatterns: select( coreStore ).getBlockPatterns(),
|
|
77
|
+
restBlockPatternCategories:
|
|
78
|
+
select( coreStore ).getBlockPatternCategories(),
|
|
79
|
+
} ),
|
|
80
|
+
[]
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
const blockPatterns = useMemo(
|
|
84
|
+
() => unionBy( settingsBlockPatterns, restBlockPatterns, 'name' ),
|
|
85
|
+
[ settingsBlockPatterns, restBlockPatterns ]
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
const blockPatternCategories = useMemo(
|
|
89
|
+
() =>
|
|
90
|
+
unionBy(
|
|
91
|
+
settingsBlockPatternCategories,
|
|
92
|
+
restBlockPatternCategories,
|
|
93
|
+
'name'
|
|
94
|
+
),
|
|
95
|
+
[ settingsBlockPatternCategories, restBlockPatternCategories ]
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
const settings = useMemo(
|
|
99
|
+
() => ( {
|
|
100
|
+
...omit( storedSettings, [
|
|
101
|
+
'__experimentalAdditionalBlockPatterns',
|
|
102
|
+
'__experimentalAdditionalBlockPatternCategories',
|
|
103
|
+
] ),
|
|
104
|
+
__experimentalBlockPatterns: blockPatterns,
|
|
105
|
+
__experimentalBlockPatternCategories: blockPatternCategories,
|
|
106
|
+
} ),
|
|
107
|
+
[ storedSettings, blockPatterns, blockPatternCategories ]
|
|
108
|
+
);
|
|
109
|
+
|
|
97
110
|
const [ blocks, onInput, onChange ] = useEntityBlockEditor(
|
|
98
111
|
'postType',
|
|
99
112
|
templateType
|
|
@@ -112,6 +125,7 @@ export default function BlockEditor( { setIsInserterOpen } ) {
|
|
|
112
125
|
const { clearSelectedBlock } = useDispatch( blockEditorStore );
|
|
113
126
|
|
|
114
127
|
const isTemplatePart = templateType === 'wp_template_part';
|
|
128
|
+
const hasBlocks = blocks.length !== 0;
|
|
115
129
|
|
|
116
130
|
const NavMenuSidebarToggle = () => (
|
|
117
131
|
<ToolbarGroup>
|
|
@@ -186,7 +200,9 @@ export default function BlockEditor( { setIsInserterOpen } ) {
|
|
|
186
200
|
<BlockList
|
|
187
201
|
className="edit-site-block-editor__block-list wp-site-blocks"
|
|
188
202
|
__experimentalLayout={ LAYOUT }
|
|
189
|
-
renderAppender={
|
|
203
|
+
renderAppender={
|
|
204
|
+
isTemplatePart && hasBlocks ? false : undefined
|
|
205
|
+
}
|
|
190
206
|
/>
|
|
191
207
|
</ResizableEditor>
|
|
192
208
|
<__unstableBlockSettingsMenuFirstItem>
|
|
@@ -3,17 +3,11 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import Textarea from 'react-autosize-textarea';
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* WordPress dependencies
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* WordPress dependencies
|
|
11
|
-
*/
|
|
12
6
|
/**
|
|
13
7
|
* WordPress dependencies
|
|
14
8
|
*/
|
|
15
9
|
import { __ } from '@wordpress/i18n';
|
|
16
|
-
import { useState } from '@wordpress/element';
|
|
10
|
+
import { useEffect, useState, useRef } from '@wordpress/element';
|
|
17
11
|
import { useInstanceId } from '@wordpress/compose';
|
|
18
12
|
import { VisuallyHidden } from '@wordpress/components';
|
|
19
13
|
|
|
@@ -21,6 +15,7 @@ export default function CodeEditorTextArea( { value, onChange, onInput } ) {
|
|
|
21
15
|
const [ stateValue, setStateValue ] = useState( value );
|
|
22
16
|
const [ isDirty, setIsDirty ] = useState( false );
|
|
23
17
|
const instanceId = useInstanceId( CodeEditorTextArea );
|
|
18
|
+
const valueRef = useRef();
|
|
24
19
|
|
|
25
20
|
if ( ! isDirty && stateValue !== value ) {
|
|
26
21
|
setStateValue( value );
|
|
@@ -42,6 +37,7 @@ export default function CodeEditorTextArea( { value, onChange, onInput } ) {
|
|
|
42
37
|
onInput( newValue );
|
|
43
38
|
setStateValue( newValue );
|
|
44
39
|
setIsDirty( true );
|
|
40
|
+
valueRef.current = newValue;
|
|
45
41
|
};
|
|
46
42
|
|
|
47
43
|
/**
|
|
@@ -56,6 +52,15 @@ export default function CodeEditorTextArea( { value, onChange, onInput } ) {
|
|
|
56
52
|
}
|
|
57
53
|
};
|
|
58
54
|
|
|
55
|
+
// Ensure changes aren't lost when component unmounts.
|
|
56
|
+
useEffect( () => {
|
|
57
|
+
return () => {
|
|
58
|
+
if ( valueRef.current ) {
|
|
59
|
+
onChange( valueRef.current );
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}, [] );
|
|
63
|
+
|
|
59
64
|
return (
|
|
60
65
|
<>
|
|
61
66
|
<VisuallyHidden
|
|
@@ -34,9 +34,8 @@ function EditTemplatePartMenuItem( { selectedClientId, onClose } ) {
|
|
|
34
34
|
const { params } = useLocation();
|
|
35
35
|
const selectedTemplatePart = useSelect(
|
|
36
36
|
( select ) => {
|
|
37
|
-
const block =
|
|
38
|
-
selectedClientId
|
|
39
|
-
);
|
|
37
|
+
const block =
|
|
38
|
+
select( blockEditorStore ).getBlock( selectedClientId );
|
|
40
39
|
|
|
41
40
|
if ( block && isTemplatePart( block ) ) {
|
|
42
41
|
const { theme, slug } = block.attributes;
|
|
@@ -119,10 +119,8 @@ function Editor( { onError } ) {
|
|
|
119
119
|
const { setPage, setIsInserterOpened } = useDispatch( editSiteStore );
|
|
120
120
|
const { enableComplementaryArea } = useDispatch( interfaceStore );
|
|
121
121
|
|
|
122
|
-
const [
|
|
123
|
-
|
|
124
|
-
setIsEntitiesSavedStatesOpen,
|
|
125
|
-
] = useState( false );
|
|
122
|
+
const [ isEntitiesSavedStatesOpen, setIsEntitiesSavedStatesOpen ] =
|
|
123
|
+
useState( false );
|
|
126
124
|
const openEntitiesSavedStates = useCallback(
|
|
127
125
|
() => setIsEntitiesSavedStatesOpen( true ),
|
|
128
126
|
[]
|
|
@@ -217,7 +215,8 @@ function Editor( { onError } ) {
|
|
|
217
215
|
<InterfaceSkeleton
|
|
218
216
|
labels={ {
|
|
219
217
|
...interfaceLabels,
|
|
220
|
-
secondarySidebar:
|
|
218
|
+
secondarySidebar:
|
|
219
|
+
secondarySidebarLabel,
|
|
221
220
|
} }
|
|
222
221
|
className={
|
|
223
222
|
showIconLabels &&
|
|
@@ -182,18 +182,8 @@ export default function BorderPanel( { name } ) {
|
|
|
182
182
|
onChange={ onBorderChange }
|
|
183
183
|
showStyle={ showBorderStyle }
|
|
184
184
|
value={ border }
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
'edit-site-global-styles-sidebar__border-box-control__popover',
|
|
188
|
-
top:
|
|
189
|
-
'edit-site-global-styles-sidebar__border-box-control__popover-top',
|
|
190
|
-
right:
|
|
191
|
-
'edit-site-global-styles-sidebar__border-box-control__popover-right',
|
|
192
|
-
bottom:
|
|
193
|
-
'edit-site-global-styles-sidebar__border-box-control__popover-bottom',
|
|
194
|
-
left:
|
|
195
|
-
'edit-site-global-styles-sidebar__border-box-control__popover-left',
|
|
196
|
-
} }
|
|
185
|
+
popoverPlacement="left-start"
|
|
186
|
+
popoverOffset={ 40 }
|
|
197
187
|
__experimentalHasMultipleOrigins={ true }
|
|
198
188
|
__experimentalIsRenderedInSidebar={ true }
|
|
199
189
|
/>
|
|
@@ -48,9 +48,8 @@ const cleanEmptyObject = ( object ) => {
|
|
|
48
48
|
|
|
49
49
|
function useGlobalStylesUserConfig() {
|
|
50
50
|
const { globalStylesId, settings, styles } = useSelect( ( select ) => {
|
|
51
|
-
const _globalStylesId =
|
|
52
|
-
coreStore
|
|
53
|
-
).__experimentalGetCurrentGlobalStylesId();
|
|
51
|
+
const _globalStylesId =
|
|
52
|
+
select( coreStore ).__experimentalGetCurrentGlobalStylesId();
|
|
54
53
|
const record = _globalStylesId
|
|
55
54
|
? select( coreStore ).getEditedEntityRecord(
|
|
56
55
|
'root',
|
|
@@ -108,11 +107,8 @@ function useGlobalStylesBaseConfig() {
|
|
|
108
107
|
}
|
|
109
108
|
|
|
110
109
|
function useGlobalStylesContext() {
|
|
111
|
-
const [
|
|
112
|
-
|
|
113
|
-
userConfig,
|
|
114
|
-
setUserConfig,
|
|
115
|
-
] = useGlobalStylesUserConfig();
|
|
110
|
+
const [ isUserConfigReady, userConfig, setUserConfig ] =
|
|
111
|
+
useGlobalStylesUserConfig();
|
|
116
112
|
const [ isBaseConfigReady, baseConfig ] = useGlobalStylesBaseConfig();
|
|
117
113
|
const mergedConfig = useMemo( () => {
|
|
118
114
|
if ( ! baseConfig || ! userConfig ) {
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { noop } from 'lodash';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* WordPress dependencies
|
|
8
3
|
*/
|
|
@@ -20,6 +15,8 @@ import { __ } from '@wordpress/i18n';
|
|
|
20
15
|
import { useSetting } from './hooks';
|
|
21
16
|
import Subtitle from './subtitle';
|
|
22
17
|
|
|
18
|
+
const noop = () => {};
|
|
19
|
+
|
|
23
20
|
export default function GradientPalettePanel( { name } ) {
|
|
24
21
|
const [ themeGradients, setThemeGradients ] = useSetting(
|
|
25
22
|
'color.gradients.theme',
|
|
@@ -20,16 +20,17 @@ import {
|
|
|
20
20
|
import { getValueFromVariable, getPresetVariableFromValue } from './utils';
|
|
21
21
|
import { GlobalStylesContext } from './context';
|
|
22
22
|
|
|
23
|
-
const EMPTY_CONFIG = {
|
|
23
|
+
const EMPTY_CONFIG = { settings: {}, styles: {} };
|
|
24
24
|
|
|
25
25
|
export const useGlobalStylesReset = () => {
|
|
26
26
|
const { user: config, setUserConfig } = useContext( GlobalStylesContext );
|
|
27
27
|
const canReset = !! config && ! isEqual( config, EMPTY_CONFIG );
|
|
28
28
|
return [
|
|
29
29
|
canReset,
|
|
30
|
-
useCallback(
|
|
31
|
-
setUserConfig,
|
|
32
|
-
|
|
30
|
+
useCallback(
|
|
31
|
+
() => setUserConfig( () => EMPTY_CONFIG ),
|
|
32
|
+
[ setUserConfig ]
|
|
33
|
+
),
|
|
33
34
|
];
|
|
34
35
|
};
|
|
35
36
|
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
__experimentalVStack as VStack,
|
|
12
12
|
} from '@wordpress/components';
|
|
13
13
|
import { useReducedMotion, useResizeObserver } from '@wordpress/compose';
|
|
14
|
-
import { useState } from '@wordpress/element';
|
|
14
|
+
import { useState, useMemo } from '@wordpress/element';
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Internal dependencies
|
|
@@ -79,10 +79,25 @@ const StylesPreview = ( { label, isFocused } ) => {
|
|
|
79
79
|
)
|
|
80
80
|
.slice( 0, 2 );
|
|
81
81
|
|
|
82
|
+
// Reset leaked styles from WP common.css.
|
|
83
|
+
const editorStyles = useMemo( () => {
|
|
84
|
+
if ( styles ) {
|
|
85
|
+
return [
|
|
86
|
+
...styles,
|
|
87
|
+
{
|
|
88
|
+
css: 'body{min-width: 0;}',
|
|
89
|
+
isGlobalStyles: true,
|
|
90
|
+
},
|
|
91
|
+
];
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return styles;
|
|
95
|
+
}, [ styles ] );
|
|
96
|
+
|
|
82
97
|
return (
|
|
83
98
|
<Iframe
|
|
84
99
|
className="edit-site-global-styles-preview__iframe"
|
|
85
|
-
head={ <EditorStyles styles={
|
|
100
|
+
head={ <EditorStyles styles={ editorStyles } /> }
|
|
86
101
|
style={ {
|
|
87
102
|
height: normalizedHeight * ratio,
|
|
88
103
|
visibility: ! width ? 'hidden' : 'visible',
|
|
@@ -40,10 +40,10 @@ function useSortedBlockTypes() {
|
|
|
40
40
|
type.push( block );
|
|
41
41
|
return blocks;
|
|
42
42
|
};
|
|
43
|
-
const {
|
|
44
|
-
|
|
45
|
-
noncore:
|
|
46
|
-
|
|
43
|
+
const { core: coreItems, noncore: nonCoreItems } = blockItems.reduce(
|
|
44
|
+
groupByType,
|
|
45
|
+
{ core: [], noncore: [] }
|
|
46
|
+
);
|
|
47
47
|
return [ ...coreItems, ...nonCoreItems ];
|
|
48
48
|
}
|
|
49
49
|
|
|
@@ -28,9 +28,10 @@ import StylesPreview from './preview';
|
|
|
28
28
|
function ScreenRoot() {
|
|
29
29
|
const { variations } = useSelect( ( select ) => {
|
|
30
30
|
return {
|
|
31
|
-
variations:
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
variations:
|
|
32
|
+
select(
|
|
33
|
+
coreStore
|
|
34
|
+
).__experimentalGetCurrentThemeGlobalStylesVariations(),
|
|
34
35
|
};
|
|
35
36
|
}, [] );
|
|
36
37
|
|
|
@@ -79,6 +79,7 @@ function Variation( { variation } ) {
|
|
|
79
79
|
onKeyDown={ selectOnEnter }
|
|
80
80
|
tabIndex="0"
|
|
81
81
|
aria-label={ variation?.title }
|
|
82
|
+
aria-current={ isActive }
|
|
82
83
|
onFocus={ () => setIsFocused( true ) }
|
|
83
84
|
onBlur={ () => setIsFocused( false ) }
|
|
84
85
|
>
|
|
@@ -96,9 +97,10 @@ function Variation( { variation } ) {
|
|
|
96
97
|
function ScreenStyleVariations() {
|
|
97
98
|
const { variations } = useSelect( ( select ) => {
|
|
98
99
|
return {
|
|
99
|
-
variations:
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
variations:
|
|
101
|
+
select(
|
|
102
|
+
coreStore
|
|
103
|
+
).__experimentalGetCurrentThemeGlobalStylesVariations(),
|
|
102
104
|
};
|
|
103
105
|
}, [] );
|
|
104
106
|
|
|
@@ -109,7 +111,11 @@ function ScreenStyleVariations() {
|
|
|
109
111
|
settings: {},
|
|
110
112
|
styles: {},
|
|
111
113
|
},
|
|
112
|
-
...variations
|
|
114
|
+
...variations.map( ( variation ) => ( {
|
|
115
|
+
...variation,
|
|
116
|
+
settings: variation.settings ?? {},
|
|
117
|
+
styles: variation.styles ?? {},
|
|
118
|
+
} ) ),
|
|
113
119
|
];
|
|
114
120
|
}, [ variations ] );
|
|
115
121
|
|
|
@@ -220,11 +220,8 @@ function getStylesDeclarations( blockStyles = {} ) {
|
|
|
220
220
|
|
|
221
221
|
// The goal is to move everything to server side generated engine styles
|
|
222
222
|
// This is temporary as we absorb more and more styles into the engine.
|
|
223
|
-
const extraRules = getCSSRules( blockStyles
|
|
223
|
+
const extraRules = getCSSRules( blockStyles );
|
|
224
224
|
extraRules.forEach( ( rule ) => {
|
|
225
|
-
if ( rule.selector !== 'self' ) {
|
|
226
|
-
throw "This style can't be added as inline style";
|
|
227
|
-
}
|
|
228
225
|
const cssProperty = rule.key.startsWith( '--' )
|
|
229
226
|
? rule.key
|
|
230
227
|
: kebabCase( rule.key );
|
|
@@ -57,9 +57,8 @@ export default function Header( {
|
|
|
57
57
|
getEditorMode,
|
|
58
58
|
} = select( editSiteStore );
|
|
59
59
|
const { getEditedEntityRecord } = select( coreStore );
|
|
60
|
-
const { __experimentalGetTemplateInfo: getTemplateInfo } =
|
|
61
|
-
editorStore
|
|
62
|
-
);
|
|
60
|
+
const { __experimentalGetTemplateInfo: getTemplateInfo } =
|
|
61
|
+
select( editorStore );
|
|
63
62
|
const { getShortcutRepresentation } = select( keyboardShortcutsStore );
|
|
64
63
|
|
|
65
64
|
const postType = getEditedPostType();
|
|
@@ -36,10 +36,10 @@ function ModeSwitcher() {
|
|
|
36
36
|
shortcut: select(
|
|
37
37
|
keyboardShortcutsStore
|
|
38
38
|
).getShortcutRepresentation( 'core/edit-site/toggle-mode' ),
|
|
39
|
-
isRichEditingEnabled:
|
|
40
|
-
.richEditingEnabled,
|
|
41
|
-
isCodeEditingEnabled:
|
|
42
|
-
.codeEditingEnabled,
|
|
39
|
+
isRichEditingEnabled:
|
|
40
|
+
select( editSiteStore ).getSettings().richEditingEnabled,
|
|
41
|
+
isCodeEditingEnabled:
|
|
42
|
+
select( editSiteStore ).getSettings().codeEditingEnabled,
|
|
43
43
|
mode: select( editSiteStore ).getEditorMode(),
|
|
44
44
|
} ),
|
|
45
45
|
[]
|
|
@@ -18,9 +18,8 @@ export default function CopyContentMenuItem() {
|
|
|
18
18
|
const { createNotice } = useDispatch( noticesStore );
|
|
19
19
|
const getText = useSelect( ( select ) => {
|
|
20
20
|
return () => {
|
|
21
|
-
const { getEditedPostId, getEditedPostType } =
|
|
22
|
-
editSiteStore
|
|
23
|
-
);
|
|
21
|
+
const { getEditedPostId, getEditedPostType } =
|
|
22
|
+
select( editSiteStore );
|
|
24
23
|
const { getEditedEntityRecord } = select( coreStore );
|
|
25
24
|
const record = getEditedEntityRecord(
|
|
26
25
|
'postType',
|
|
@@ -49,5 +48,5 @@ export default function CopyContentMenuItem() {
|
|
|
49
48
|
|
|
50
49
|
const ref = useCopyToClipboard( getText, onSuccess );
|
|
51
50
|
|
|
52
|
-
return <MenuItem ref={ ref }>{ __( 'Copy all
|
|
51
|
+
return <MenuItem ref={ ref }>{ __( 'Copy all blocks' ) }</MenuItem>;
|
|
53
52
|
}
|
|
@@ -26,9 +26,8 @@ export default function SiteExport() {
|
|
|
26
26
|
const contentDisposition = response.headers.get(
|
|
27
27
|
'content-disposition'
|
|
28
28
|
);
|
|
29
|
-
const contentDispositionMatches =
|
|
30
|
-
/=(.+)\.zip/
|
|
31
|
-
);
|
|
29
|
+
const contentDispositionMatches =
|
|
30
|
+
contentDisposition.match( /=(.+)\.zip/ );
|
|
32
31
|
const fileName = contentDispositionMatches[ 1 ]
|
|
33
32
|
? contentDispositionMatches[ 1 ]
|
|
34
33
|
: 'edit-site-export';
|
|
@@ -19,10 +19,8 @@ import { SIDEBAR_BLOCK } from '../sidebar/constants';
|
|
|
19
19
|
import { STORE_NAME } from '../../store/constants';
|
|
20
20
|
|
|
21
21
|
function KeyboardShortcuts( { openEntitiesSavedStates } ) {
|
|
22
|
-
const {
|
|
23
|
-
|
|
24
|
-
isSavingEntityRecord,
|
|
25
|
-
} = useSelect( coreStore );
|
|
22
|
+
const { __experimentalGetDirtyEntityRecords, isSavingEntityRecord } =
|
|
23
|
+
useSelect( coreStore );
|
|
26
24
|
const { getEditorMode } = useSelect( editSiteStore );
|
|
27
25
|
const isListViewOpen = useSelect(
|
|
28
26
|
( select ) => select( editSiteStore ).isListViewOpened(),
|
|
@@ -36,12 +34,10 @@ function KeyboardShortcuts( { openEntitiesSavedStates } ) {
|
|
|
36
34
|
[]
|
|
37
35
|
);
|
|
38
36
|
const { redo, undo } = useDispatch( coreStore );
|
|
39
|
-
const { setIsListViewOpened, switchEditorMode } =
|
|
40
|
-
editSiteStore
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
interfaceStore
|
|
44
|
-
);
|
|
37
|
+
const { setIsListViewOpened, switchEditorMode } =
|
|
38
|
+
useDispatch( editSiteStore );
|
|
39
|
+
const { enableComplementaryArea, disableComplementaryArea } =
|
|
40
|
+
useDispatch( interfaceStore );
|
|
45
41
|
|
|
46
42
|
useShortcut( 'core/edit-site/save', ( event ) => {
|
|
47
43
|
event.preventDefault();
|
|
@@ -19,9 +19,8 @@ import RenameMenuItem from './rename-menu-item';
|
|
|
19
19
|
export default function Actions( { template } ) {
|
|
20
20
|
const { removeTemplate, revertTemplate } = useDispatch( editSiteStore );
|
|
21
21
|
const { saveEditedEntityRecord } = useDispatch( coreStore );
|
|
22
|
-
const { createSuccessNotice, createErrorNotice } =
|
|
23
|
-
noticesStore
|
|
24
|
-
);
|
|
22
|
+
const { createSuccessNotice, createErrorNotice } =
|
|
23
|
+
useDispatch( noticesStore );
|
|
25
24
|
|
|
26
25
|
const isRemovable = isTemplateRemovable( template );
|
|
27
26
|
const isRevertable = isTemplateRevertable( template );
|