@wordpress/edit-site 4.7.0 → 4.10.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/add-custom-generic-template-modal.js +84 -0
- package/build/components/add-new-template/add-custom-generic-template-modal.js.map +1 -0
- package/build/components/add-new-template/add-custom-template-modal.js +224 -0
- package/build/components/add-new-template/add-custom-template-modal.js.map +1 -0
- package/build/components/add-new-template/new-template.js +94 -33
- package/build/components/add-new-template/new-template.js.map +1 -1
- package/build/components/add-new-template/utils.js +405 -0
- package/build/components/add-new-template/utils.js.map +1 -0
- package/build/components/block-editor/block-inspector-button.js.map +1 -1
- package/build/components/block-editor/index.js.map +1 -1
- package/build/components/code-editor/index.js +17 -4
- package/build/components/code-editor/index.js.map +1 -1
- package/build/components/edit-template-part-menu-button/index.js.map +1 -1
- package/build/components/editor/index.js +16 -0
- package/build/components/editor/index.js.map +1 -1
- package/build/components/error-boundary/index.js +6 -0
- package/build/components/error-boundary/index.js.map +1 -1
- package/build/components/global-styles/context-menu.js +6 -3
- package/build/components/global-styles/context-menu.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +2 -6
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/global-styles-provider.js +4 -2
- 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 +11 -2
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/palette.js +2 -1
- package/build/components/global-styles/palette.js.map +1 -1
- package/build/components/global-styles/screen-block-list.js +4 -1
- package/build/components/global-styles/screen-block-list.js.map +1 -1
- package/build/components/global-styles/screen-button-color.js +80 -0
- package/build/components/global-styles/screen-button-color.js.map +1 -0
- package/build/components/global-styles/screen-color-palette.js +13 -17
- package/build/components/global-styles/screen-color-palette.js.map +1 -1
- package/build/components/global-styles/screen-colors.js +56 -8
- package/build/components/global-styles/screen-colors.js.map +1 -1
- package/build/components/global-styles/screen-link-color.js +48 -14
- package/build/components/global-styles/screen-link-color.js.map +1 -1
- package/build/components/global-styles/screen-root.js +4 -2
- 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/screen-typography-element.js +4 -0
- package/build/components/global-styles/screen-typography-element.js.map +1 -1
- package/build/components/global-styles/screen-typography.js +9 -1
- package/build/components/global-styles/screen-typography.js.map +1 -1
- package/build/components/global-styles/ui.js +11 -0
- package/build/components/global-styles/ui.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +199 -30
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +4 -2
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/header/index.js +28 -10
- 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 +4 -1
- package/build/components/header/more-menu/site-export.js.map +1 -1
- package/build/components/header/undo-redo/redo.js +13 -4
- package/build/components/header/undo-redo/redo.js.map +1 -1
- package/build/components/header/undo-redo/undo.js +13 -4
- package/build/components/header/undo-redo/undo.js.map +1 -1
- package/build/components/keyboard-shortcut-help-modal/config.js +17 -0
- package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -1
- package/build/components/keyboard-shortcut-help-modal/index.js +1 -3
- package/build/components/keyboard-shortcut-help-modal/index.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/navigation-sidebar/index.js.map +1 -1
- package/build/components/save-button/index.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 +19 -7
- package/build/components/sidebar/template-card/index.js.map +1 -1
- package/build/components/sidebar/template-card/template-actions.js +64 -0
- package/build/components/sidebar/template-card/template-actions.js.map +1 -0
- package/build/components/sidebar/template-card/template-areas.js.map +1 -1
- package/build/components/template-details/edit-template-title.js +11 -3
- package/build/components/template-details/edit-template-title.js.map +1 -1
- package/build/components/template-details/index.js +1 -20
- 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/store/actions.js.map +1 -1
- package/build/store/selectors.js +4 -1
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/add-new-template/add-custom-generic-template-modal.js +77 -0
- package/build-module/components/add-new-template/add-custom-generic-template-modal.js.map +1 -0
- package/build-module/components/add-new-template/add-custom-template-modal.js +209 -0
- package/build-module/components/add-new-template/add-custom-template-modal.js.map +1 -0
- package/build-module/components/add-new-template/new-template.js +93 -34
- package/build-module/components/add-new-template/new-template.js.map +1 -1
- package/build-module/components/add-new-template/utils.js +365 -0
- package/build-module/components/add-new-template/utils.js.map +1 -0
- package/build-module/components/block-editor/block-inspector-button.js.map +1 -1
- package/build-module/components/block-editor/index.js.map +1 -1
- package/build-module/components/code-editor/index.js +18 -5
- package/build-module/components/code-editor/index.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 +16 -0
- package/build-module/components/editor/index.js.map +1 -1
- package/build-module/components/error-boundary/index.js +5 -0
- package/build-module/components/error-boundary/index.js.map +1 -1
- package/build-module/components/global-styles/context-menu.js +6 -3
- package/build-module/components/global-styles/context-menu.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +2 -6
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/global-styles-provider.js +4 -2
- 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 +11 -2
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/palette.js +2 -1
- package/build-module/components/global-styles/palette.js.map +1 -1
- package/build-module/components/global-styles/screen-block-list.js +4 -1
- package/build-module/components/global-styles/screen-block-list.js.map +1 -1
- package/build-module/components/global-styles/screen-button-color.js +67 -0
- package/build-module/components/global-styles/screen-button-color.js.map +1 -0
- package/build-module/components/global-styles/screen-color-palette.js +14 -19
- package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
- package/build-module/components/global-styles/screen-colors.js +57 -9
- package/build-module/components/global-styles/screen-colors.js.map +1 -1
- package/build-module/components/global-styles/screen-link-color.js +47 -14
- package/build-module/components/global-styles/screen-link-color.js.map +1 -1
- package/build-module/components/global-styles/screen-root.js +4 -2
- 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/screen-typography-element.js +4 -0
- package/build-module/components/global-styles/screen-typography-element.js.map +1 -1
- package/build-module/components/global-styles/screen-typography.js +10 -2
- package/build-module/components/global-styles/screen-typography.js.map +1 -1
- package/build-module/components/global-styles/ui.js +10 -0
- package/build-module/components/global-styles/ui.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +198 -32
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +5 -3
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/header/index.js +29 -11
- 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 +4 -1
- package/build-module/components/header/more-menu/site-export.js.map +1 -1
- package/build-module/components/header/undo-redo/redo.js +9 -3
- package/build-module/components/header/undo-redo/redo.js.map +1 -1
- package/build-module/components/header/undo-redo/undo.js +9 -3
- package/build-module/components/header/undo-redo/undo.js.map +1 -1
- package/build-module/components/keyboard-shortcut-help-modal/config.js +17 -0
- package/build-module/components/keyboard-shortcut-help-modal/config.js.map +1 -1
- package/build-module/components/keyboard-shortcut-help-modal/index.js +1 -2
- package/build-module/components/keyboard-shortcut-help-modal/index.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/navigation-sidebar/index.js.map +1 -1
- package/build-module/components/save-button/index.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 +18 -7
- package/build-module/components/sidebar/template-card/index.js.map +1 -1
- package/build-module/components/sidebar/template-card/template-actions.js +49 -0
- package/build-module/components/sidebar/template-card/template-actions.js.map +1 -0
- package/build-module/components/sidebar/template-card/template-areas.js.map +1 -1
- package/build-module/components/template-details/edit-template-title.js +12 -3
- package/build-module/components/template-details/edit-template-title.js.map +1 -1
- package/build-module/components/template-details/index.js +2 -21
- 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/store/actions.js.map +1 -1
- package/build-module/store/selectors.js +5 -2
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +188 -42
- package/build-style/style.css +188 -42
- package/package.json +29 -29
- package/src/components/add-new-template/add-custom-generic-template-modal.js +97 -0
- package/src/components/add-new-template/add-custom-template-modal.js +265 -0
- package/src/components/add-new-template/new-template.js +194 -70
- package/src/components/add-new-template/style.scss +137 -0
- package/src/components/add-new-template/utils.js +369 -0
- package/src/components/block-editor/block-inspector-button.js +2 -3
- package/src/components/block-editor/index.js +4 -9
- package/src/components/code-editor/index.js +15 -5
- package/src/components/edit-template-part-menu-button/index.js +2 -3
- package/src/components/editor/index.js +15 -5
- package/src/components/error-boundary/index.js +5 -0
- package/src/components/global-styles/context-menu.js +3 -0
- package/src/components/global-styles/dimensions-panel.js +2 -7
- package/src/components/global-styles/global-styles-provider.js +12 -17
- package/src/components/global-styles/gradients-palette-panel.js +2 -5
- package/src/components/global-styles/hooks.js +20 -3
- package/src/components/global-styles/palette.js +4 -1
- package/src/components/global-styles/screen-block-list.js +14 -5
- package/src/components/global-styles/screen-button-color.js +102 -0
- package/src/components/global-styles/screen-color-palette.js +25 -27
- package/src/components/global-styles/screen-colors.js +58 -7
- package/src/components/global-styles/screen-link-color.js +65 -23
- package/src/components/global-styles/screen-root.js +12 -5
- package/src/components/global-styles/screen-style-variations.js +10 -4
- package/src/components/global-styles/screen-typography-element.js +4 -0
- package/src/components/global-styles/screen-typography.js +17 -2
- package/src/components/global-styles/style.scss +14 -8
- package/src/components/global-styles/test/use-global-styles-output.js +250 -16
- package/src/components/global-styles/ui.js +13 -0
- package/src/components/global-styles/use-global-styles-output.js +246 -32
- package/src/components/global-styles/utils.js +5 -2
- package/src/components/header/index.js +38 -13
- 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 +5 -3
- package/src/components/header/style.scss +53 -5
- package/src/components/header/undo-redo/redo.js +6 -1
- package/src/components/header/undo-redo/undo.js +6 -1
- package/src/components/keyboard-shortcut-help-modal/config.js +12 -0
- package/src/components/keyboard-shortcut-help-modal/index.js +1 -2
- package/src/components/keyboard-shortcut-help-modal/style.scss +0 -5
- 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 +0 -8
- package/src/components/navigation-sidebar/index.js +2 -4
- package/src/components/save-button/index.js +2 -4
- package/src/components/sidebar/index.js +6 -6
- package/src/components/sidebar/navigation-menu-sidebar/navigation-inspector.js +6 -9
- package/src/components/sidebar/template-card/index.js +17 -9
- package/src/components/sidebar/template-card/style.scss +49 -35
- package/src/components/sidebar/template-card/template-actions.js +43 -0
- package/src/components/sidebar/template-card/template-areas.js +6 -6
- package/src/components/template-details/edit-template-title.js +10 -2
- package/src/components/template-details/index.js +4 -21
- package/src/components/template-details/template-areas.js +6 -6
- package/src/components/template-part-converter/index.js +2 -3
- package/src/components/test/error-boundary.js +38 -0
- package/src/components/url-query-controller/index.js +2 -3
- package/src/store/actions.js +257 -233
- package/src/store/selectors.js +19 -14
|
@@ -7,8 +7,9 @@ import { useSelect, useDispatch } from '@wordpress/data';
|
|
|
7
7
|
import { undo as undoIcon, redo as redoIcon } from '@wordpress/icons';
|
|
8
8
|
import { displayShortcut } from '@wordpress/keycodes';
|
|
9
9
|
import { store as coreStore } from '@wordpress/core-data';
|
|
10
|
+
import { forwardRef } from '@wordpress/element';
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
function UndoButton( props, ref ) {
|
|
12
13
|
const hasUndo = useSelect(
|
|
13
14
|
( select ) => select( coreStore ).hasUndo(),
|
|
14
15
|
[]
|
|
@@ -16,6 +17,8 @@ export default function UndoButton() {
|
|
|
16
17
|
const { undo } = useDispatch( coreStore );
|
|
17
18
|
return (
|
|
18
19
|
<Button
|
|
20
|
+
{ ...props }
|
|
21
|
+
ref={ ref }
|
|
19
22
|
icon={ ! isRTL() ? undoIcon : redoIcon }
|
|
20
23
|
label={ __( 'Undo' ) }
|
|
21
24
|
shortcut={ displayShortcut.primary( 'z' ) }
|
|
@@ -27,3 +30,5 @@ export default function UndoButton() {
|
|
|
27
30
|
/>
|
|
28
31
|
);
|
|
29
32
|
}
|
|
33
|
+
|
|
34
|
+
export default forwardRef( UndoButton );
|
|
@@ -20,8 +20,20 @@ export const textFormattingShortcuts = [
|
|
|
20
20
|
keyCombination: { modifier: 'primaryShift', character: 'k' },
|
|
21
21
|
description: __( 'Remove a link.' ),
|
|
22
22
|
},
|
|
23
|
+
{
|
|
24
|
+
keyCombination: { character: '[[' },
|
|
25
|
+
description: __( 'Insert a link to a post or page' ),
|
|
26
|
+
},
|
|
23
27
|
{
|
|
24
28
|
keyCombination: { modifier: 'primary', character: 'u' },
|
|
25
29
|
description: __( 'Underline the selected text.' ),
|
|
26
30
|
},
|
|
31
|
+
{
|
|
32
|
+
keyCombination: { modifier: 'access', character: 'd' },
|
|
33
|
+
description: __( 'Strikethrough the selected text.' ),
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
keyCombination: { modifier: 'access', character: 'x' },
|
|
37
|
+
description: __( 'Make the selected text inline code.' ),
|
|
38
|
+
},
|
|
27
39
|
];
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
4
|
import classnames from 'classnames';
|
|
5
|
-
import { isString } from 'lodash';
|
|
6
5
|
|
|
7
6
|
/**
|
|
8
7
|
* WordPress dependencies
|
|
@@ -34,7 +33,7 @@ const ShortcutList = ( { shortcuts } ) => (
|
|
|
34
33
|
className="edit-site-keyboard-shortcut-help-modal__shortcut"
|
|
35
34
|
key={ index }
|
|
36
35
|
>
|
|
37
|
-
{
|
|
36
|
+
{ typeof shortcut === 'string' ? (
|
|
38
37
|
<DynamicShortcut name={ shortcut } />
|
|
39
38
|
) : (
|
|
40
39
|
<Shortcut { ...shortcut } />
|
|
@@ -3,11 +3,6 @@
|
|
|
3
3
|
margin: 0 0 2rem 0;
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
&__main-shortcuts .edit-site-keyboard-shortcut-help-modal__shortcut-list {
|
|
7
|
-
// Push the shortcut to be flush with top modal header.
|
|
8
|
-
margin-top: -$grid-unit-30 -$border-width;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
6
|
&__section-title {
|
|
12
7
|
font-size: 0.9rem;
|
|
13
8
|
font-weight: 600;
|
|
@@ -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 );
|
|
@@ -19,12 +19,10 @@ export default function RenameMenuItem( { template, onClose } ) {
|
|
|
19
19
|
const [ title, setTitle ] = useState( () => template.title.rendered );
|
|
20
20
|
const [ isModalOpen, setIsModalOpen ] = useState( false );
|
|
21
21
|
|
|
22
|
-
const { editEntityRecord, saveEditedEntityRecord } =
|
|
23
|
-
coreStore
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
noticesStore
|
|
27
|
-
);
|
|
22
|
+
const { editEntityRecord, saveEditedEntityRecord } =
|
|
23
|
+
useDispatch( coreStore );
|
|
24
|
+
const { createSuccessNotice, createErrorNotice } =
|
|
25
|
+
useDispatch( noticesStore );
|
|
28
26
|
|
|
29
27
|
if ( ! template.is_custom ) {
|
|
30
28
|
return null;
|
|
@@ -106,9 +106,10 @@ function AddedByPlugin( { slug, isCustomized } ) {
|
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
function AddedByAuthor( { id } ) {
|
|
109
|
-
const user = useSelect(
|
|
110
|
-
id,
|
|
111
|
-
|
|
109
|
+
const user = useSelect(
|
|
110
|
+
( select ) => select( coreStore ).getUser( id ),
|
|
111
|
+
[ id ]
|
|
112
|
+
);
|
|
112
113
|
|
|
113
114
|
return (
|
|
114
115
|
<BaseAddedBy
|
|
@@ -131,14 +131,6 @@
|
|
|
131
131
|
width: $grid-unit * 40;
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
|
-
|
|
135
|
-
.components-modal__header {
|
|
136
|
-
border-bottom: none;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
.components-modal__content::before {
|
|
140
|
-
margin-bottom: $grid-unit-05;
|
|
141
|
-
}
|
|
142
134
|
}
|
|
143
135
|
|
|
144
136
|
.edit-site-list__rename-modal-actions {
|
|
@@ -18,10 +18,8 @@ export const {
|
|
|
18
18
|
Slot: NavigationPanelPreviewSlot,
|
|
19
19
|
} = createSlotFill( 'EditSiteNavigationPanelPreview' );
|
|
20
20
|
|
|
21
|
-
const {
|
|
22
|
-
|
|
23
|
-
Slot: NavigationSidebarSlot,
|
|
24
|
-
} = createSlotFill( 'EditSiteNavigationSidebar' );
|
|
21
|
+
const { Fill: NavigationSidebarFill, Slot: NavigationSidebarSlot } =
|
|
22
|
+
createSlotFill( 'EditSiteNavigationSidebar' );
|
|
25
23
|
|
|
26
24
|
function NavigationSidebar( { isDefaultOpen = false, activeTemplateType } ) {
|
|
27
25
|
const isDesktopViewport = useViewportMatch( 'medium' );
|
|
@@ -16,10 +16,8 @@ export default function SaveButton( {
|
|
|
16
16
|
isEntitiesSavedStatesOpen,
|
|
17
17
|
} ) {
|
|
18
18
|
const { isDirty, isSaving } = useSelect( ( select ) => {
|
|
19
|
-
const {
|
|
20
|
-
|
|
21
|
-
isSavingEntityRecord,
|
|
22
|
-
} = select( coreStore );
|
|
19
|
+
const { __experimentalGetDirtyEntityRecords, isSavingEntityRecord } =
|
|
20
|
+
select( coreStore );
|
|
23
21
|
const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
|
|
24
22
|
return {
|
|
25
23
|
isDirty: dirtyEntityRecords.length > 0,
|
|
@@ -28,9 +28,10 @@ export const SidebarInspectorFill = InspectorFill;
|
|
|
28
28
|
export function SidebarComplementaryAreaFills() {
|
|
29
29
|
const { sidebar, isEditorSidebarOpened, hasBlockSelection } = useSelect(
|
|
30
30
|
( select ) => {
|
|
31
|
-
const _sidebar =
|
|
32
|
-
interfaceStore
|
|
33
|
-
|
|
31
|
+
const _sidebar =
|
|
32
|
+
select( interfaceStore ).getActiveComplementaryArea(
|
|
33
|
+
STORE_NAME
|
|
34
|
+
);
|
|
34
35
|
const _isEditorSidebarOpened = [
|
|
35
36
|
SIDEBAR_BLOCK,
|
|
36
37
|
SIDEBAR_TEMPLATE,
|
|
@@ -38,9 +39,8 @@ export function SidebarComplementaryAreaFills() {
|
|
|
38
39
|
return {
|
|
39
40
|
sidebar: _sidebar,
|
|
40
41
|
isEditorSidebarOpened: _isEditorSidebarOpened,
|
|
41
|
-
hasBlockSelection:
|
|
42
|
-
blockEditorStore
|
|
43
|
-
).getBlockSelectionStart(),
|
|
42
|
+
hasBlockSelection:
|
|
43
|
+
!! select( blockEditorStore ).getBlockSelectionStart(),
|
|
44
44
|
};
|
|
45
45
|
},
|
|
46
46
|
[]
|
|
@@ -35,9 +35,8 @@ export default function NavigationInspector() {
|
|
|
35
35
|
getBlock,
|
|
36
36
|
} = select( blockEditorStore );
|
|
37
37
|
|
|
38
|
-
const { getEntityRecords, hasFinishedResolution, isResolving } =
|
|
39
|
-
coreStore
|
|
40
|
-
);
|
|
38
|
+
const { getEntityRecords, hasFinishedResolution, isResolving } =
|
|
39
|
+
select( coreStore );
|
|
41
40
|
|
|
42
41
|
const navigationMenusQuery = [
|
|
43
42
|
'postType',
|
|
@@ -46,14 +45,12 @@ export default function NavigationInspector() {
|
|
|
46
45
|
];
|
|
47
46
|
|
|
48
47
|
// Get the active Navigation block (if present).
|
|
49
|
-
const selectedNavId =
|
|
50
|
-
'core/navigation'
|
|
51
|
-
);
|
|
48
|
+
const selectedNavId =
|
|
49
|
+
__experimentalGetActiveBlockIdByBlockNames( 'core/navigation' );
|
|
52
50
|
|
|
53
51
|
// Get all Navigation blocks currently within the editor canvas.
|
|
54
|
-
const navBlockIds =
|
|
55
|
-
'core/navigation'
|
|
56
|
-
);
|
|
52
|
+
const navBlockIds =
|
|
53
|
+
__experimentalGetGlobalBlocksByName( 'core/navigation' );
|
|
57
54
|
const idToRef = {};
|
|
58
55
|
navBlockIds.forEach( ( id ) => {
|
|
59
56
|
idToRef[ id ] = getBlock( id )?.attributes?.ref;
|
|
@@ -10,22 +10,26 @@ import { store as coreStore } from '@wordpress/core-data';
|
|
|
10
10
|
* Internal dependencies
|
|
11
11
|
*/
|
|
12
12
|
import { store as editSiteStore } from '../../../store';
|
|
13
|
+
import TemplateActions from './template-actions';
|
|
13
14
|
import TemplateAreas from './template-areas';
|
|
14
15
|
|
|
15
16
|
export default function TemplateCard() {
|
|
16
|
-
const {
|
|
17
|
+
const {
|
|
18
|
+
info: { title, description, icon },
|
|
19
|
+
template,
|
|
20
|
+
} = useSelect( ( select ) => {
|
|
17
21
|
const { getEditedPostType, getEditedPostId } = select( editSiteStore );
|
|
18
|
-
const {
|
|
19
|
-
const { __experimentalGetTemplateInfo: getTemplateInfo } =
|
|
20
|
-
editorStore
|
|
21
|
-
);
|
|
22
|
+
const { getEditedEntityRecord } = select( coreStore );
|
|
23
|
+
const { __experimentalGetTemplateInfo: getTemplateInfo } =
|
|
24
|
+
select( editorStore );
|
|
22
25
|
|
|
23
26
|
const postType = getEditedPostType();
|
|
24
27
|
const postId = getEditedPostId();
|
|
25
|
-
const record =
|
|
28
|
+
const record = getEditedEntityRecord( 'postType', postType, postId );
|
|
29
|
+
|
|
26
30
|
const info = record ? getTemplateInfo( record ) : {};
|
|
27
31
|
|
|
28
|
-
return info;
|
|
32
|
+
return { info, template: record };
|
|
29
33
|
}, [] );
|
|
30
34
|
|
|
31
35
|
if ( ! title && ! description ) {
|
|
@@ -36,11 +40,15 @@ export default function TemplateCard() {
|
|
|
36
40
|
<div className="edit-site-template-card">
|
|
37
41
|
<Icon className="edit-site-template-card__icon" icon={ icon } />
|
|
38
42
|
<div className="edit-site-template-card__content">
|
|
39
|
-
<
|
|
43
|
+
<div className="edit-site-template-card__header">
|
|
44
|
+
<h2 className="edit-site-template-card__title">
|
|
45
|
+
{ title }
|
|
46
|
+
</h2>
|
|
47
|
+
<TemplateActions template={ template } />
|
|
48
|
+
</div>
|
|
40
49
|
<div className="edit-site-template-card__description">
|
|
41
50
|
{ description }
|
|
42
51
|
</div>
|
|
43
|
-
|
|
44
52
|
<TemplateAreas />
|
|
45
53
|
</div>
|
|
46
54
|
</div>
|
|
@@ -1,51 +1,65 @@
|
|
|
1
1
|
.edit-site-template-card {
|
|
2
2
|
display: flex;
|
|
3
3
|
align-items: flex-start;
|
|
4
|
-
}
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
5
|
+
&__content {
|
|
6
|
+
flex-grow: 1;
|
|
7
|
+
margin-bottom: $grid-unit-05;
|
|
8
|
+
}
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
&__title {
|
|
11
|
+
font-weight: 500;
|
|
12
|
+
line-height: $icon-size;
|
|
13
|
+
&.edit-site-template-card__title {
|
|
14
|
+
margin: 0;
|
|
15
|
+
}
|
|
16
16
|
}
|
|
17
|
-
}
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
18
|
+
&__description {
|
|
19
|
+
font-size: $default-font-size;
|
|
20
|
+
margin: 0 0 $grid-unit-20;
|
|
21
|
+
}
|
|
23
22
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
23
|
+
&__icon {
|
|
24
|
+
flex: 0 0 $icon-size;
|
|
25
|
+
margin-right: $grid-unit-15;
|
|
26
|
+
width: $icon-size;
|
|
27
|
+
height: $icon-size;
|
|
28
|
+
}
|
|
30
29
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
margin: 0 0 $grid-unit-10;
|
|
34
|
-
}
|
|
30
|
+
&__template-areas-list {
|
|
31
|
+
margin: 0;
|
|
35
32
|
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
> li {
|
|
34
|
+
margin: 0;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
38
37
|
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
&__template-areas-item {
|
|
39
|
+
width: 100%;
|
|
40
|
+
|
|
41
|
+
// Override the default padding.
|
|
42
|
+
&.components-button.has-icon {
|
|
43
|
+
padding: 0;
|
|
44
|
+
}
|
|
41
45
|
}
|
|
42
|
-
}
|
|
43
46
|
|
|
44
|
-
|
|
45
|
-
|
|
47
|
+
&__header {
|
|
48
|
+
display: flex;
|
|
49
|
+
justify-content: space-between;
|
|
50
|
+
margin: 0 0 $grid-unit-05;
|
|
51
|
+
}
|
|
46
52
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
53
|
+
&__actions {
|
|
54
|
+
line-height: 0;
|
|
55
|
+
> .components-button.is-small.has-icon {
|
|
56
|
+
padding: 0;
|
|
57
|
+
min-width: auto;
|
|
58
|
+
}
|
|
50
59
|
}
|
|
51
60
|
}
|
|
61
|
+
|
|
62
|
+
h3.edit-site-template-card__template-areas-title {
|
|
63
|
+
font-weight: 500;
|
|
64
|
+
margin: 0 0 $grid-unit-10;
|
|
65
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useDispatch } from '@wordpress/data';
|
|
5
|
+
import { __ } from '@wordpress/i18n';
|
|
6
|
+
import { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';
|
|
7
|
+
import { moreVertical } from '@wordpress/icons';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Internal dependencies
|
|
11
|
+
*/
|
|
12
|
+
import { store as editSiteStore } from '../../../store';
|
|
13
|
+
import isTemplateRevertable from '../../../utils/is-template-revertable';
|
|
14
|
+
|
|
15
|
+
export default function Actions( { template } ) {
|
|
16
|
+
const { revertTemplate } = useDispatch( editSiteStore );
|
|
17
|
+
const isRevertable = isTemplateRevertable( template );
|
|
18
|
+
if ( ! isRevertable ) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
return (
|
|
22
|
+
<DropdownMenu
|
|
23
|
+
icon={ moreVertical }
|
|
24
|
+
label={ __( 'Actions' ) }
|
|
25
|
+
className="edit-site-template-card__actions"
|
|
26
|
+
toggleProps={ { isSmall: true } }
|
|
27
|
+
>
|
|
28
|
+
{ ( { onClose } ) => (
|
|
29
|
+
<MenuGroup>
|
|
30
|
+
<MenuItem
|
|
31
|
+
info={ __( 'Restore to default state' ) }
|
|
32
|
+
onClick={ () => {
|
|
33
|
+
revertTemplate( template );
|
|
34
|
+
onClose();
|
|
35
|
+
} }
|
|
36
|
+
>
|
|
37
|
+
{ __( 'Clear customizations' ) }
|
|
38
|
+
</MenuItem>
|
|
39
|
+
</MenuGroup>
|
|
40
|
+
) }
|
|
41
|
+
</DropdownMenu>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
@@ -16,14 +16,14 @@ import { __ } from '@wordpress/i18n';
|
|
|
16
16
|
import { store as editSiteStore } from '../../../store';
|
|
17
17
|
|
|
18
18
|
function TemplateAreaItem( { area, clientId } ) {
|
|
19
|
-
const { selectBlock, toggleBlockHighlight } =
|
|
20
|
-
blockEditorStore
|
|
21
|
-
);
|
|
19
|
+
const { selectBlock, toggleBlockHighlight } =
|
|
20
|
+
useDispatch( blockEditorStore );
|
|
22
21
|
const templatePartArea = useSelect(
|
|
23
22
|
( select ) => {
|
|
24
|
-
const defaultAreas =
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
const defaultAreas =
|
|
24
|
+
select(
|
|
25
|
+
editorStore
|
|
26
|
+
).__experimentalGetDefaultTemplatePartAreas();
|
|
27
27
|
|
|
28
28
|
return defaultAreas.find(
|
|
29
29
|
( defaultArea ) => defaultArea.area === area
|
|
@@ -4,8 +4,10 @@
|
|
|
4
4
|
import { __ } from '@wordpress/i18n';
|
|
5
5
|
import { TextControl } from '@wordpress/components';
|
|
6
6
|
import { useEntityProp } from '@wordpress/core-data';
|
|
7
|
+
import { useState } from '@wordpress/element';
|
|
7
8
|
|
|
8
9
|
export default function EditTemplateTitle( { template } ) {
|
|
10
|
+
const [ forceEmpty, setForceEmpty ] = useState( false );
|
|
9
11
|
const [ title, setTitle ] = useEntityProp(
|
|
10
12
|
'postType',
|
|
11
13
|
template.type,
|
|
@@ -16,13 +18,19 @@ export default function EditTemplateTitle( { template } ) {
|
|
|
16
18
|
return (
|
|
17
19
|
<TextControl
|
|
18
20
|
label={ __( 'Title' ) }
|
|
19
|
-
value={ title }
|
|
21
|
+
value={ forceEmpty ? '' : title }
|
|
20
22
|
help={ __(
|
|
21
23
|
'Give the template a title that indicates its purpose, e.g. "Full Width".'
|
|
22
24
|
) }
|
|
23
25
|
onChange={ ( newTitle ) => {
|
|
24
|
-
|
|
26
|
+
if ( ! newTitle && ! forceEmpty ) {
|
|
27
|
+
setForceEmpty( true );
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
setForceEmpty( false );
|
|
31
|
+
setTitle( newTitle );
|
|
25
32
|
} }
|
|
33
|
+
onBlur={ () => setForceEmpty( false ) }
|
|
26
34
|
/>
|
|
27
35
|
);
|
|
28
36
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import { sprintf, __ } from '@wordpress/i18n';
|
|
4
|
+
import { __ } from '@wordpress/i18n';
|
|
6
5
|
import {
|
|
7
6
|
Button,
|
|
8
7
|
MenuGroup,
|
|
@@ -17,10 +16,6 @@ import { store as editorStore } from '@wordpress/editor';
|
|
|
17
16
|
* Internal dependencies
|
|
18
17
|
*/
|
|
19
18
|
import isTemplateRevertable from '../../utils/is-template-revertable';
|
|
20
|
-
import {
|
|
21
|
-
MENU_TEMPLATES,
|
|
22
|
-
TEMPLATE_PARTS_SUB_MENUS,
|
|
23
|
-
} from '../navigation-sidebar/navigation-panel/constants';
|
|
24
19
|
import { store as editSiteStore } from '../../store';
|
|
25
20
|
import TemplateAreas from './template-areas';
|
|
26
21
|
import EditTemplateTitle from './edit-template-title';
|
|
@@ -34,16 +29,6 @@ export default function TemplateDetails( { template, onClose } ) {
|
|
|
34
29
|
);
|
|
35
30
|
const { revertTemplate } = useDispatch( editSiteStore );
|
|
36
31
|
|
|
37
|
-
const templateSubMenu = useMemo( () => {
|
|
38
|
-
if ( template?.type === 'wp_template' ) {
|
|
39
|
-
return { title: __( 'templates' ), menu: MENU_TEMPLATES };
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return TEMPLATE_PARTS_SUB_MENUS.find(
|
|
43
|
-
( { area } ) => area === template?.area
|
|
44
|
-
);
|
|
45
|
-
}, [ template ] );
|
|
46
|
-
|
|
47
32
|
const browseAllLinkProps = useLink( {
|
|
48
33
|
// TODO: We should update this to filter by template part's areas as well.
|
|
49
34
|
postType: template.type,
|
|
@@ -106,11 +91,9 @@ export default function TemplateDetails( { template, onClose } ) {
|
|
|
106
91
|
className="edit-site-template-details__show-all-button"
|
|
107
92
|
{ ...browseAllLinkProps }
|
|
108
93
|
>
|
|
109
|
-
{
|
|
110
|
-
|
|
111
|
-
__( 'Browse all
|
|
112
|
-
templateSubMenu.title
|
|
113
|
-
) }
|
|
94
|
+
{ template?.type === 'wp_template'
|
|
95
|
+
? __( 'Browse all templates' )
|
|
96
|
+
: __( 'Browse all template parts' ) }
|
|
114
97
|
</Button>
|
|
115
98
|
</div>
|
|
116
99
|
);
|
|
@@ -75,14 +75,14 @@ function TemplatePartItem( {
|
|
|
75
75
|
clientId,
|
|
76
76
|
closeTemplateDetailsDropdown,
|
|
77
77
|
} ) {
|
|
78
|
-
const { selectBlock, toggleBlockHighlight } =
|
|
79
|
-
blockEditorStore
|
|
80
|
-
);
|
|
78
|
+
const { selectBlock, toggleBlockHighlight } =
|
|
79
|
+
useDispatch( blockEditorStore );
|
|
81
80
|
const templatePartArea = useSelect(
|
|
82
81
|
( select ) => {
|
|
83
|
-
const defaultAreas =
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
const defaultAreas =
|
|
83
|
+
select(
|
|
84
|
+
editorStore
|
|
85
|
+
).__experimentalGetDefaultTemplatePartAreas();
|
|
86
86
|
|
|
87
87
|
return defaultAreas.find(
|
|
88
88
|
( defaultArea ) => defaultArea.area === templatePart.area
|
|
@@ -12,9 +12,8 @@ import ConvertToTemplatePart from './convert-to-template-part';
|
|
|
12
12
|
|
|
13
13
|
export default function TemplatePartConverter() {
|
|
14
14
|
const { clientIds, blocks } = useSelect( ( select ) => {
|
|
15
|
-
const { getSelectedBlockClientIds, getBlocksByClientId } =
|
|
16
|
-
blockEditorStore
|
|
17
|
-
);
|
|
15
|
+
const { getSelectedBlockClientIds, getBlocksByClientId } =
|
|
16
|
+
select( blockEditorStore );
|
|
18
17
|
const selectedBlockClientIds = getSelectedBlockClientIds();
|
|
19
18
|
return {
|
|
20
19
|
clientIds: selectedBlockClientIds,
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import * as wpHooks from '@wordpress/hooks';
|
|
5
|
+
/**
|
|
6
|
+
* Internal dependencies
|
|
7
|
+
*/
|
|
8
|
+
import ErrorBoundary from '../error-boundary';
|
|
9
|
+
/**
|
|
10
|
+
* External dependencies
|
|
11
|
+
*/
|
|
12
|
+
import { render } from '@testing-library/react';
|
|
13
|
+
|
|
14
|
+
const theError = new Error( 'Kaboom' );
|
|
15
|
+
|
|
16
|
+
const ChildComponent = () => {
|
|
17
|
+
throw theError;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
describe( 'Error Boundary', () => {
|
|
21
|
+
describe( 'when error is thrown from a Child component', () => {
|
|
22
|
+
it( 'calls the `editor.ErrorBoundary.errorLogged` hook action with the error object', () => {
|
|
23
|
+
const doAction = jest.spyOn( wpHooks, 'doAction' );
|
|
24
|
+
|
|
25
|
+
render(
|
|
26
|
+
<ErrorBoundary>
|
|
27
|
+
<ChildComponent />
|
|
28
|
+
</ErrorBoundary>
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
expect( doAction ).toHaveBeenCalledWith(
|
|
32
|
+
'editor.ErrorBoundary.errorLogged',
|
|
33
|
+
theError
|
|
34
|
+
);
|
|
35
|
+
expect( console ).toHaveErrored();
|
|
36
|
+
} );
|
|
37
|
+
} );
|
|
38
|
+
} );
|
|
@@ -11,9 +11,8 @@ import { useLocation } from '../routes';
|
|
|
11
11
|
import { store as editSiteStore } from '../../store';
|
|
12
12
|
|
|
13
13
|
export default function URLQueryController() {
|
|
14
|
-
const { setTemplate, setTemplatePart, setPage } =
|
|
15
|
-
editSiteStore
|
|
16
|
-
);
|
|
14
|
+
const { setTemplate, setTemplatePart, setPage } =
|
|
15
|
+
useDispatch( editSiteStore );
|
|
17
16
|
const {
|
|
18
17
|
params: { postId, postType },
|
|
19
18
|
} = useLocation();
|