@wordpress/editor 14.11.0 → 14.12.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 +2 -0
- package/README.md +0 -8
- package/build/components/collab-sidebar/add-comment.js +5 -6
- package/build/components/collab-sidebar/add-comment.js.map +1 -1
- package/build/components/collab-sidebar/index.js +75 -73
- package/build/components/collab-sidebar/index.js.map +1 -1
- package/build/components/commands/index.js +142 -34
- package/build/components/commands/index.js.map +1 -1
- package/build/components/create-template-part-modal/index.js +1 -0
- package/build/components/create-template-part-modal/index.js.map +1 -1
- package/build/components/document-bar/index.js +9 -3
- package/build/components/document-bar/index.js.map +1 -1
- package/build/components/document-tools/index.js +8 -4
- package/build/components/document-tools/index.js.map +1 -1
- package/build/components/editor-interface/index.js +1 -2
- package/build/components/editor-interface/index.js.map +1 -1
- package/build/components/global-styles-provider/index.js +20 -8
- package/build/components/global-styles-provider/index.js.map +1 -1
- package/build/components/header/index.js +10 -12
- package/build/components/header/index.js.map +1 -1
- package/build/components/more-menu/index.js +9 -7
- package/build/components/more-menu/index.js.map +1 -1
- package/build/components/post-taxonomies/flat-term-selector.js +10 -8
- package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build/components/post-template/swap-template-button.js +0 -3
- package/build/components/post-template/swap-template-button.js.map +1 -1
- package/build/components/post-transform-panel/index.js +0 -3
- package/build/components/post-transform-panel/index.js.map +1 -1
- package/build/components/preferences-modal/index.js +26 -22
- package/build/components/preferences-modal/index.js.map +1 -1
- package/build/components/preview-dropdown/index.js +23 -4
- package/build/components/preview-dropdown/index.js.map +1 -1
- package/build/components/provider/use-block-editor-settings.js +10 -9
- package/build/components/provider/use-block-editor-settings.js.map +1 -1
- package/build/components/sidebar/post-summary.js +2 -2
- package/build/components/sidebar/post-summary.js.map +1 -1
- package/build/components/start-page-options/index.js +0 -3
- package/build/components/start-page-options/index.js.map +1 -1
- package/build/components/start-template-options/index.js +0 -3
- package/build/components/start-template-options/index.js.map +1 -1
- package/build/components/visual-editor/index.js +5 -2
- package/build/components/visual-editor/index.js.map +1 -1
- package/build/store/actions.js +65 -16
- package/build/store/actions.js.map +1 -1
- package/build/store/constants.js +0 -2
- package/build/store/constants.js.map +1 -1
- package/build/store/index.js +0 -4
- package/build/store/index.js.map +1 -1
- package/build/store/selectors.js +2 -2
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/collab-sidebar/add-comment.js +5 -6
- package/build-module/components/collab-sidebar/add-comment.js.map +1 -1
- package/build-module/components/collab-sidebar/index.js +76 -74
- package/build-module/components/collab-sidebar/index.js.map +1 -1
- package/build-module/components/commands/index.js +145 -38
- package/build-module/components/commands/index.js.map +1 -1
- package/build-module/components/create-template-part-modal/index.js +1 -0
- package/build-module/components/create-template-part-modal/index.js.map +1 -1
- package/build-module/components/document-bar/index.js +10 -4
- package/build-module/components/document-bar/index.js.map +1 -1
- package/build-module/components/document-tools/index.js +8 -4
- package/build-module/components/document-tools/index.js.map +1 -1
- package/build-module/components/editor-interface/index.js +1 -2
- package/build-module/components/editor-interface/index.js.map +1 -1
- package/build-module/components/global-styles-provider/index.js +20 -8
- package/build-module/components/global-styles-provider/index.js.map +1 -1
- package/build-module/components/header/index.js +10 -12
- package/build-module/components/header/index.js.map +1 -1
- package/build-module/components/more-menu/index.js +9 -7
- package/build-module/components/more-menu/index.js.map +1 -1
- package/build-module/components/post-taxonomies/flat-term-selector.js +10 -8
- package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build-module/components/post-template/swap-template-button.js +0 -3
- package/build-module/components/post-template/swap-template-button.js.map +1 -1
- package/build-module/components/post-transform-panel/index.js +0 -3
- package/build-module/components/post-transform-panel/index.js.map +1 -1
- package/build-module/components/preferences-modal/index.js +26 -22
- package/build-module/components/preferences-modal/index.js.map +1 -1
- package/build-module/components/preview-dropdown/index.js +24 -5
- package/build-module/components/preview-dropdown/index.js.map +1 -1
- package/build-module/components/provider/use-block-editor-settings.js +11 -10
- package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
- package/build-module/components/sidebar/post-summary.js +2 -2
- package/build-module/components/sidebar/post-summary.js.map +1 -1
- package/build-module/components/start-page-options/index.js +0 -3
- package/build-module/components/start-page-options/index.js.map +1 -1
- package/build-module/components/start-template-options/index.js +0 -3
- package/build-module/components/start-template-options/index.js.map +1 -1
- package/build-module/components/visual-editor/index.js +5 -2
- package/build-module/components/visual-editor/index.js.map +1 -1
- package/build-module/store/actions.js +61 -14
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/constants.js +0 -2
- package/build-module/store/constants.js.map +1 -1
- package/build-module/store/index.js +0 -4
- package/build-module/store/index.js.map +1 -1
- package/build-module/store/selectors.js +2 -2
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +22 -6
- package/build-style/style.css +22 -6
- package/build-types/components/collab-sidebar/add-comment.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/index.d.ts.map +1 -1
- package/build-types/components/commands/index.d.ts.map +1 -1
- package/build-types/components/create-template-part-modal/index.d.ts.map +1 -1
- package/build-types/components/document-bar/index.d.ts.map +1 -1
- package/build-types/components/document-tools/index.d.ts.map +1 -1
- package/build-types/components/editor-interface/index.d.ts.map +1 -1
- package/build-types/components/global-styles-provider/index.d.ts.map +1 -1
- package/build-types/components/header/index.d.ts +1 -2
- package/build-types/components/header/index.d.ts.map +1 -1
- package/build-types/components/more-menu/index.d.ts.map +1 -1
- package/build-types/components/post-taxonomies/flat-term-selector.d.ts.map +1 -1
- package/build-types/components/post-template/hooks.d.ts +2 -2
- package/build-types/components/post-template/swap-template-button.d.ts.map +1 -1
- package/build-types/components/post-transform-panel/index.d.ts.map +1 -1
- package/build-types/components/preferences-modal/index.d.ts.map +1 -1
- package/build-types/components/preview-dropdown/index.d.ts.map +1 -1
- package/build-types/components/provider/use-block-editor-settings.d.ts.map +1 -1
- package/build-types/components/start-page-options/index.d.ts.map +1 -1
- package/build-types/components/start-template-options/index.d.ts.map +1 -1
- package/build-types/components/visual-editor/index.d.ts.map +1 -1
- package/build-types/dataviews/store/reducer.d.ts +5 -2
- package/build-types/dataviews/store/reducer.d.ts.map +1 -1
- package/build-types/lock-unlock.d.ts +2 -2
- package/build-types/store/actions.d.ts +9 -1
- package/build-types/store/actions.d.ts.map +1 -1
- package/build-types/store/constants.d.ts +0 -2
- package/build-types/store/constants.d.ts.map +1 -1
- package/build-types/store/index.d.ts +9 -11
- package/build-types/store/index.d.ts.map +1 -1
- package/build-types/store/reducer.d.ts +24 -4
- package/build-types/store/reducer.d.ts.map +1 -1
- package/build-types/store/selectors.d.ts +3 -3
- package/build-types/store/selectors.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/components/collab-sidebar/add-comment.js +17 -20
- package/src/components/collab-sidebar/index.js +79 -88
- package/src/components/commands/index.js +390 -270
- package/src/components/create-template-part-modal/index.js +1 -0
- package/src/components/document-bar/index.js +10 -1
- package/src/components/document-bar/style.scss +13 -0
- package/src/components/document-tools/index.js +7 -1
- package/src/components/editor-interface/index.js +0 -1
- package/src/components/global-styles-provider/index.js +20 -8
- package/src/components/header/index.js +18 -10
- package/src/components/more-menu/index.js +12 -7
- package/src/components/plugin-post-publish-panel/test/__snapshots__/index.js.snap +1 -1
- package/src/components/post-taxonomies/flat-term-selector.js +8 -8
- package/src/components/post-template/swap-template-button.js +0 -3
- package/src/components/post-transform-panel/index.js +0 -3
- package/src/components/preferences-modal/index.js +26 -19
- package/src/components/preferences-modal/test/index.js +1 -1
- package/src/components/preview-dropdown/index.js +45 -16
- package/src/components/provider/use-block-editor-settings.js +10 -9
- package/src/components/sidebar/post-summary.js +1 -1
- package/src/components/sidebar/style.scss +1 -3
- package/src/components/start-page-options/index.js +0 -3
- package/src/components/start-template-options/index.js +0 -3
- package/src/components/visual-editor/index.js +7 -1
- package/src/components/visual-editor/style.scss +11 -0
- package/src/store/actions.js +110 -33
- package/src/store/constants.ts +0 -2
- package/src/store/index.js +0 -4
- package/src/store/selectors.js +2 -2
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -158,6 +158,7 @@ export function CreateTemplatePartModalContents( {
|
|
|
158
158
|
{ templatePartAreas.map(
|
|
159
159
|
( { icon, label, area: value, description } ) => (
|
|
160
160
|
<Radio
|
|
161
|
+
__next40pxDefaultSize
|
|
161
162
|
key={ label }
|
|
162
163
|
value={ value }
|
|
163
164
|
className="editor-create-template-part-modal__area-radio"
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
__unstableAnimatePresence as AnimatePresence,
|
|
16
16
|
} from '@wordpress/components';
|
|
17
17
|
import { BlockIcon } from '@wordpress/block-editor';
|
|
18
|
-
import { chevronLeftSmall, chevronRightSmall } from '@wordpress/icons';
|
|
18
|
+
import { chevronLeftSmall, chevronRightSmall, layout } from '@wordpress/icons';
|
|
19
19
|
import { displayShortcut } from '@wordpress/keycodes';
|
|
20
20
|
import { store as coreStore } from '@wordpress/core-data';
|
|
21
21
|
import { store as commandsStore } from '@wordpress/commands';
|
|
@@ -59,12 +59,14 @@ export default function DocumentBar( props ) {
|
|
|
59
59
|
isNotFound,
|
|
60
60
|
templateTitle,
|
|
61
61
|
onNavigateToPreviousEntityRecord,
|
|
62
|
+
isTemplatePreview,
|
|
62
63
|
} = useSelect( ( select ) => {
|
|
63
64
|
const {
|
|
64
65
|
getCurrentPostType,
|
|
65
66
|
getCurrentPostId,
|
|
66
67
|
getEditorSettings,
|
|
67
68
|
__experimentalGetTemplateInfo: getTemplateInfo,
|
|
69
|
+
getRenderingMode,
|
|
68
70
|
} = select( editorStore );
|
|
69
71
|
const {
|
|
70
72
|
getEditedEntityRecord,
|
|
@@ -96,6 +98,7 @@ export default function DocumentBar( props ) {
|
|
|
96
98
|
templateTitle: _templateInfo.title,
|
|
97
99
|
onNavigateToPreviousEntityRecord:
|
|
98
100
|
getEditorSettings().onNavigateToPreviousEntityRecord,
|
|
101
|
+
isTemplatePreview: getRenderingMode() === 'template-locked',
|
|
99
102
|
};
|
|
100
103
|
}, [] );
|
|
101
104
|
|
|
@@ -146,6 +149,12 @@ export default function DocumentBar( props ) {
|
|
|
146
149
|
</MotionButton>
|
|
147
150
|
) }
|
|
148
151
|
</AnimatePresence>
|
|
152
|
+
{ ! isTemplate && isTemplatePreview && (
|
|
153
|
+
<BlockIcon
|
|
154
|
+
icon={ layout }
|
|
155
|
+
className="editor-document-bar__icon-layout"
|
|
156
|
+
/>
|
|
157
|
+
) }
|
|
149
158
|
{ isNotFound ? (
|
|
150
159
|
<Text>{ __( 'Document not found' ) }</Text>
|
|
151
160
|
) : (
|
|
@@ -102,3 +102,16 @@
|
|
|
102
102
|
background-color: transparent;
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
|
+
|
|
106
|
+
.editor-document-bar__icon-layout.editor-document-bar__icon-layout {
|
|
107
|
+
position: absolute;
|
|
108
|
+
margin-left: $grid-unit-15;
|
|
109
|
+
display: none;
|
|
110
|
+
pointer-events: none;
|
|
111
|
+
svg {
|
|
112
|
+
fill: $gray-600;
|
|
113
|
+
}
|
|
114
|
+
@include break-small {
|
|
115
|
+
display: flex;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
@@ -35,6 +35,7 @@ function DocumentTools( { className, disableBlockTools = false } ) {
|
|
|
35
35
|
inserterSidebarToggleRef,
|
|
36
36
|
listViewToggleRef,
|
|
37
37
|
showIconLabels,
|
|
38
|
+
showTools,
|
|
38
39
|
} = useSelect( ( select ) => {
|
|
39
40
|
const { get } = select( preferencesStore );
|
|
40
41
|
const {
|
|
@@ -42,6 +43,8 @@ function DocumentTools( { className, disableBlockTools = false } ) {
|
|
|
42
43
|
getEditorMode,
|
|
43
44
|
getInserterSidebarToggleRef,
|
|
44
45
|
getListViewToggleRef,
|
|
46
|
+
getRenderingMode,
|
|
47
|
+
getCurrentPostType,
|
|
45
48
|
} = unlock( select( editorStore ) );
|
|
46
49
|
const { getShortcutRepresentation } = select( keyboardShortcutsStore );
|
|
47
50
|
|
|
@@ -56,6 +59,9 @@ function DocumentTools( { className, disableBlockTools = false } ) {
|
|
|
56
59
|
showIconLabels: get( 'core', 'showIconLabels' ),
|
|
57
60
|
isDistractionFree: get( 'core', 'distractionFree' ),
|
|
58
61
|
isVisualMode: getEditorMode() === 'visual',
|
|
62
|
+
showTools:
|
|
63
|
+
getRenderingMode() !== 'post-only' ||
|
|
64
|
+
getCurrentPostType() === 'wp_template',
|
|
59
65
|
};
|
|
60
66
|
}, [] );
|
|
61
67
|
|
|
@@ -128,7 +134,7 @@ function DocumentTools( { className, disableBlockTools = false } ) {
|
|
|
128
134
|
) }
|
|
129
135
|
{ ( isWideViewport || ! showIconLabels ) && (
|
|
130
136
|
<>
|
|
131
|
-
{ isLargeViewport && (
|
|
137
|
+
{ showTools && isLargeViewport && (
|
|
132
138
|
<ToolbarItem
|
|
133
139
|
as={ ToolSelector }
|
|
134
140
|
showTooltip={ ! showIconLabels }
|
|
@@ -57,11 +57,13 @@ function useGlobalStylesUserConfig() {
|
|
|
57
57
|
|
|
58
58
|
let record;
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
60
|
+
/*
|
|
61
|
+
* Ensure that the global styles ID request is complete by testing `_globalStylesId`,
|
|
62
|
+
* before firing off the `canUser` OPTIONS request for user capabilities, otherwise it will
|
|
63
|
+
* fetch `/wp/v2/global-styles` instead of `/wp/v2/global-styles/{id}`.
|
|
64
|
+
* NOTE: Please keep in sync any preload paths sent to `block_editor_rest_api_preload()`,
|
|
65
|
+
* or set using the `block_editor_rest_api_preload_paths` filter, if this changes.
|
|
66
|
+
*/
|
|
65
67
|
const userCanEditGlobalStyles = _globalStylesId
|
|
66
68
|
? canUser( 'update', {
|
|
67
69
|
kind: 'root',
|
|
@@ -72,11 +74,21 @@ function useGlobalStylesUserConfig() {
|
|
|
72
74
|
|
|
73
75
|
if (
|
|
74
76
|
_globalStylesId &&
|
|
75
|
-
|
|
76
|
-
|
|
77
|
+
/*
|
|
78
|
+
* Test that the OPTIONS request for user capabilities is complete
|
|
79
|
+
* before fetching the global styles entity record.
|
|
80
|
+
* This is to avoid fetching the global styles entity unnecessarily.
|
|
81
|
+
*/
|
|
77
82
|
typeof userCanEditGlobalStyles === 'boolean'
|
|
78
83
|
) {
|
|
79
|
-
|
|
84
|
+
/*
|
|
85
|
+
* Fetch the global styles entity record based on the user's capabilities.
|
|
86
|
+
* The default context is `edit` for users who can edit global styles.
|
|
87
|
+
* Otherwise, the context is `view`.
|
|
88
|
+
* NOTE: There is an equivalent conditional check using `current_user_can()` in the backend
|
|
89
|
+
* to preload the global styles entity. Please keep in sync any preload paths sent to `block_editor_rest_api_preload()`,
|
|
90
|
+
* or set using `block_editor_rest_api_preload_paths` filter, if this changes.
|
|
91
|
+
*/
|
|
80
92
|
if ( userCanEditGlobalStyles ) {
|
|
81
93
|
record = getEditedEntityRecord(
|
|
82
94
|
'root',
|
|
@@ -25,6 +25,11 @@ import PostViewLink from '../post-view-link';
|
|
|
25
25
|
import PreviewDropdown from '../preview-dropdown';
|
|
26
26
|
import ZoomOutToggle from '../zoom-out-toggle';
|
|
27
27
|
import { store as editorStore } from '../../store';
|
|
28
|
+
import {
|
|
29
|
+
TEMPLATE_PART_POST_TYPE,
|
|
30
|
+
PATTERN_POST_TYPE,
|
|
31
|
+
NAVIGATION_POST_TYPE,
|
|
32
|
+
} from '../../store/constants';
|
|
28
33
|
|
|
29
34
|
const toolbarVariations = {
|
|
30
35
|
distractionFreeDisabled: { y: '-50px' },
|
|
@@ -48,7 +53,6 @@ function Header( {
|
|
|
48
53
|
forceDisableBlockTools,
|
|
49
54
|
setEntitiesSavedStatesCallback,
|
|
50
55
|
title,
|
|
51
|
-
isEditorIframed,
|
|
52
56
|
} ) {
|
|
53
57
|
const isWideViewport = useViewportMatch( 'large' );
|
|
54
58
|
const isLargeViewport = useViewportMatch( 'medium' );
|
|
@@ -60,12 +64,10 @@ function Header( {
|
|
|
60
64
|
showIconLabels,
|
|
61
65
|
hasFixedToolbar,
|
|
62
66
|
hasBlockSelection,
|
|
63
|
-
isNestedEntity,
|
|
64
67
|
} = useSelect( ( select ) => {
|
|
65
68
|
const { get: getPreference } = select( preferencesStore );
|
|
66
69
|
const {
|
|
67
70
|
getEditorMode,
|
|
68
|
-
getEditorSettings,
|
|
69
71
|
getCurrentPostType,
|
|
70
72
|
isPublishSidebarOpened: _isPublishSidebarOpened,
|
|
71
73
|
} = select( editorStore );
|
|
@@ -78,8 +80,6 @@ function Header( {
|
|
|
78
80
|
hasFixedToolbar: getPreference( 'core', 'fixedToolbar' ),
|
|
79
81
|
hasBlockSelection:
|
|
80
82
|
!! select( blockEditorStore ).getBlockSelectionStart(),
|
|
81
|
-
isNestedEntity:
|
|
82
|
-
!! getEditorSettings().onNavigateToPreviousEntityRecord,
|
|
83
83
|
};
|
|
84
84
|
}, [] );
|
|
85
85
|
|
|
@@ -87,6 +87,12 @@ function Header( {
|
|
|
87
87
|
postType
|
|
88
88
|
);
|
|
89
89
|
|
|
90
|
+
const disablePreviewOption = [
|
|
91
|
+
NAVIGATION_POST_TYPE,
|
|
92
|
+
TEMPLATE_PART_POST_TYPE,
|
|
93
|
+
PATTERN_POST_TYPE,
|
|
94
|
+
].includes( postType );
|
|
95
|
+
|
|
90
96
|
const [ isBlockToolsCollapsed, setIsBlockToolsCollapsed ] =
|
|
91
97
|
useState( true );
|
|
92
98
|
|
|
@@ -149,19 +155,21 @@ function Header( {
|
|
|
149
155
|
<PostSavedState forceIsDirty={ forceIsDirty } />
|
|
150
156
|
) }
|
|
151
157
|
|
|
152
|
-
|
|
153
|
-
<ZoomOutToggle disabled={ forceDisableBlockTools } />
|
|
154
|
-
) }
|
|
158
|
+
<PostViewLink />
|
|
155
159
|
|
|
156
160
|
<PreviewDropdown
|
|
157
161
|
forceIsAutosaveable={ forceIsDirty }
|
|
158
|
-
disabled={
|
|
162
|
+
disabled={ disablePreviewOption }
|
|
159
163
|
/>
|
|
164
|
+
|
|
160
165
|
<PostPreviewButton
|
|
161
166
|
className="editor-header__post-preview-button"
|
|
162
167
|
forceIsAutosaveable={ forceIsDirty }
|
|
163
168
|
/>
|
|
164
|
-
|
|
169
|
+
|
|
170
|
+
{ canBeZoomedOut && isWideViewport && (
|
|
171
|
+
<ZoomOutToggle disabled={ forceDisableBlockTools } />
|
|
172
|
+
) }
|
|
165
173
|
|
|
166
174
|
{ ( isWideViewport || ! showIconLabels ) && (
|
|
167
175
|
<PinnedItems.Slot scope="core" />
|
|
@@ -35,6 +35,7 @@ export default function MoreMenu() {
|
|
|
35
35
|
select( preferencesStore ).get( 'core', 'showIconLabels' ),
|
|
36
36
|
[]
|
|
37
37
|
);
|
|
38
|
+
|
|
38
39
|
const turnOffDistractionFree = () => {
|
|
39
40
|
setPreference( 'core', 'distractionFree', false );
|
|
40
41
|
};
|
|
@@ -67,10 +68,10 @@ export default function MoreMenu() {
|
|
|
67
68
|
'Access all block and document tools in a single place'
|
|
68
69
|
) }
|
|
69
70
|
messageActivated={ __(
|
|
70
|
-
'Top toolbar activated'
|
|
71
|
+
'Top toolbar activated.'
|
|
71
72
|
) }
|
|
72
73
|
messageDeactivated={ __(
|
|
73
|
-
'Top toolbar deactivated'
|
|
74
|
+
'Top toolbar deactivated.'
|
|
74
75
|
) }
|
|
75
76
|
/>
|
|
76
77
|
<PreferenceToggleMenuItem
|
|
@@ -79,12 +80,16 @@ export default function MoreMenu() {
|
|
|
79
80
|
label={ __( 'Distraction free' ) }
|
|
80
81
|
info={ __( 'Write with calmness' ) }
|
|
81
82
|
handleToggling={ false }
|
|
82
|
-
onToggle={
|
|
83
|
+
onToggle={ () =>
|
|
84
|
+
toggleDistractionFree( {
|
|
85
|
+
createNotice: false,
|
|
86
|
+
} )
|
|
87
|
+
}
|
|
83
88
|
messageActivated={ __(
|
|
84
|
-
'Distraction free mode activated'
|
|
89
|
+
'Distraction free mode activated.'
|
|
85
90
|
) }
|
|
86
91
|
messageDeactivated={ __(
|
|
87
|
-
'Distraction free mode deactivated'
|
|
92
|
+
'Distraction free mode deactivated.'
|
|
88
93
|
) }
|
|
89
94
|
shortcut={ displayShortcut.primaryShift(
|
|
90
95
|
'\\'
|
|
@@ -96,10 +101,10 @@ export default function MoreMenu() {
|
|
|
96
101
|
label={ __( 'Spotlight mode' ) }
|
|
97
102
|
info={ __( 'Focus on one block at a time' ) }
|
|
98
103
|
messageActivated={ __(
|
|
99
|
-
'Spotlight mode activated'
|
|
104
|
+
'Spotlight mode activated.'
|
|
100
105
|
) }
|
|
101
106
|
messageDeactivated={ __(
|
|
102
|
-
'Spotlight mode deactivated'
|
|
107
|
+
'Spotlight mode deactivated.'
|
|
103
108
|
) }
|
|
104
109
|
/>
|
|
105
110
|
<ViewMoreMenuGroup.Slot fillProps={ { onClose } } />
|
|
@@ -10,7 +10,7 @@ exports[`PluginPostPublishPanel renders fill properly 1`] = `
|
|
|
10
10
|
>
|
|
11
11
|
<button
|
|
12
12
|
aria-expanded="true"
|
|
13
|
-
class="components-button components-panel__body-toggle"
|
|
13
|
+
class="components-button components-panel__body-toggle is-next-40px-default-size"
|
|
14
14
|
type="button"
|
|
15
15
|
>
|
|
16
16
|
<span
|
|
@@ -57,6 +57,13 @@ const termNamesToIds = ( names, terms ) => {
|
|
|
57
57
|
.filter( ( id ) => id !== undefined );
|
|
58
58
|
};
|
|
59
59
|
|
|
60
|
+
const Wrapper = ( { children, __nextHasNoMarginBottom } ) =>
|
|
61
|
+
__nextHasNoMarginBottom ? (
|
|
62
|
+
<VStack spacing={ 4 }>{ children }</VStack>
|
|
63
|
+
) : (
|
|
64
|
+
<Fragment>{ children }</Fragment>
|
|
65
|
+
);
|
|
66
|
+
|
|
60
67
|
/**
|
|
61
68
|
* Renders a flat term selector component.
|
|
62
69
|
*
|
|
@@ -292,15 +299,8 @@ export function FlatTermSelector( { slug, __nextHasNoMarginBottom } ) {
|
|
|
292
299
|
singularName
|
|
293
300
|
);
|
|
294
301
|
|
|
295
|
-
const Wrapper = ( { children } ) =>
|
|
296
|
-
__nextHasNoMarginBottom ? (
|
|
297
|
-
<VStack spacing={ 4 }>{ children }</VStack>
|
|
298
|
-
) : (
|
|
299
|
-
<Fragment>{ children }</Fragment>
|
|
300
|
-
);
|
|
301
|
-
|
|
302
302
|
return (
|
|
303
|
-
<Wrapper>
|
|
303
|
+
<Wrapper __nextHasNoMarginBottom={ __nextHasNoMarginBottom }>
|
|
304
304
|
<FormTokenField
|
|
305
305
|
__next40pxDefaultSize
|
|
306
306
|
value={ values }
|
|
@@ -9,7 +9,6 @@ import { __ } from '@wordpress/i18n';
|
|
|
9
9
|
import { useDispatch } from '@wordpress/data';
|
|
10
10
|
import { store as coreStore } from '@wordpress/core-data';
|
|
11
11
|
import { parse } from '@wordpress/blocks';
|
|
12
|
-
import { useAsyncList } from '@wordpress/compose';
|
|
13
12
|
|
|
14
13
|
/**
|
|
15
14
|
* Internal dependencies
|
|
@@ -71,12 +70,10 @@ function TemplatesList( { postType, onSelect } ) {
|
|
|
71
70
|
} ) ),
|
|
72
71
|
[ availableTemplates ]
|
|
73
72
|
);
|
|
74
|
-
const shownTemplates = useAsyncList( templatesAsPatterns );
|
|
75
73
|
return (
|
|
76
74
|
<BlockPatternsList
|
|
77
75
|
label={ __( 'Templates' ) }
|
|
78
76
|
blockPatterns={ templatesAsPatterns }
|
|
79
|
-
shownPatterns={ shownTemplates }
|
|
80
77
|
onClickPattern={ onSelect }
|
|
81
78
|
/>
|
|
82
79
|
);
|
|
@@ -5,7 +5,6 @@ import { useSelect, useDispatch } from '@wordpress/data';
|
|
|
5
5
|
import { store as coreStore } from '@wordpress/core-data';
|
|
6
6
|
import { PanelBody } from '@wordpress/components';
|
|
7
7
|
import { __ } from '@wordpress/i18n';
|
|
8
|
-
import { useAsyncList } from '@wordpress/compose';
|
|
9
8
|
import { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';
|
|
10
9
|
import { serialize } from '@wordpress/blocks';
|
|
11
10
|
|
|
@@ -20,7 +19,6 @@ import {
|
|
|
20
19
|
} from '../../store/constants';
|
|
21
20
|
|
|
22
21
|
function TemplatesList( { availableTemplates, onSelect } ) {
|
|
23
|
-
const shownTemplates = useAsyncList( availableTemplates );
|
|
24
22
|
if ( ! availableTemplates || availableTemplates?.length === 0 ) {
|
|
25
23
|
return null;
|
|
26
24
|
}
|
|
@@ -29,7 +27,6 @@ function TemplatesList( { availableTemplates, onSelect } ) {
|
|
|
29
27
|
<BlockPatternsList
|
|
30
28
|
label={ __( 'Templates' ) }
|
|
31
29
|
blockPatterns={ availableTemplates }
|
|
32
|
-
shownPatterns={ shownTemplates }
|
|
33
30
|
onClickPattern={ onSelect }
|
|
34
31
|
showTitlesAsTooltip
|
|
35
32
|
/>
|
|
@@ -36,25 +36,40 @@ const {
|
|
|
36
36
|
} = unlock( preferencesPrivateApis );
|
|
37
37
|
|
|
38
38
|
export default function EditorPreferencesModal( { extraSections = {} } ) {
|
|
39
|
+
const isActive = useSelect( ( select ) => {
|
|
40
|
+
return select( interfaceStore ).isModalActive( 'editor/preferences' );
|
|
41
|
+
}, [] );
|
|
42
|
+
const { closeModal } = useDispatch( interfaceStore );
|
|
43
|
+
|
|
44
|
+
if ( ! isActive ) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Please wrap all contents inside PreferencesModalContents to prevent all
|
|
49
|
+
// hooks from executing when the modal is not open.
|
|
50
|
+
return (
|
|
51
|
+
<PreferencesModal closeModal={ closeModal }>
|
|
52
|
+
<PreferencesModalContents extraSections={ extraSections } />
|
|
53
|
+
</PreferencesModal>
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function PreferencesModalContents( { extraSections = {} } ) {
|
|
39
58
|
const isLargeViewport = useViewportMatch( 'medium' );
|
|
40
|
-
const
|
|
59
|
+
const showBlockBreadcrumbsOption = useSelect(
|
|
41
60
|
( select ) => {
|
|
42
61
|
const { getEditorSettings } = select( editorStore );
|
|
43
62
|
const { get } = select( preferencesStore );
|
|
44
|
-
const { isModalActive } = select( interfaceStore );
|
|
45
63
|
const isRichEditingEnabled = getEditorSettings().richEditingEnabled;
|
|
46
64
|
const isDistractionFreeEnabled = get( 'core', 'distractionFree' );
|
|
47
|
-
return
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
isActive: isModalActive( 'editor/preferences' ),
|
|
53
|
-
};
|
|
65
|
+
return (
|
|
66
|
+
! isDistractionFreeEnabled &&
|
|
67
|
+
isLargeViewport &&
|
|
68
|
+
isRichEditingEnabled
|
|
69
|
+
);
|
|
54
70
|
},
|
|
55
71
|
[ isLargeViewport ]
|
|
56
72
|
);
|
|
57
|
-
const { closeModal } = useDispatch( interfaceStore );
|
|
58
73
|
const { setIsListViewOpened, setIsInserterOpened } =
|
|
59
74
|
useDispatch( editorStore );
|
|
60
75
|
const { set: setPreference } = useDispatch( preferencesStore );
|
|
@@ -330,13 +345,5 @@ export default function EditorPreferencesModal( { extraSections = {} } ) {
|
|
|
330
345
|
]
|
|
331
346
|
);
|
|
332
347
|
|
|
333
|
-
|
|
334
|
-
return null;
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
return (
|
|
338
|
-
<PreferencesModal closeModal={ closeModal }>
|
|
339
|
-
<PreferencesModalTabs sections={ sections } />
|
|
340
|
-
</PreferencesModal>
|
|
341
|
-
);
|
|
348
|
+
return <PreferencesModalTabs sections={ sections } />;
|
|
342
349
|
}
|
|
@@ -19,7 +19,7 @@ jest.mock( '@wordpress/compose/src/hooks/use-viewport-match', () => jest.fn() );
|
|
|
19
19
|
|
|
20
20
|
describe( 'EditPostPreferencesModal', () => {
|
|
21
21
|
it( 'should not render when the modal is not active', () => {
|
|
22
|
-
useSelect.mockImplementation( () =>
|
|
22
|
+
useSelect.mockImplementation( () => false );
|
|
23
23
|
render( <EditPostPreferencesModal /> );
|
|
24
24
|
expect(
|
|
25
25
|
screen.queryByRole( 'dialog', { name: 'Preferences' } )
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
Icon,
|
|
17
17
|
} from '@wordpress/components';
|
|
18
18
|
import { __ } from '@wordpress/i18n';
|
|
19
|
-
import { desktop, mobile, tablet, external } from '@wordpress/icons';
|
|
19
|
+
import { desktop, mobile, tablet, external, check } from '@wordpress/icons';
|
|
20
20
|
import { useSelect, useDispatch } from '@wordpress/data';
|
|
21
21
|
import { store as coreStore } from '@wordpress/core-data';
|
|
22
22
|
import { store as preferencesStore } from '@wordpress/preferences';
|
|
@@ -31,21 +31,32 @@ import PostPreviewButton from '../post-preview-button';
|
|
|
31
31
|
import { unlock } from '../../lock-unlock';
|
|
32
32
|
|
|
33
33
|
export default function PreviewDropdown( { forceIsAutosaveable, disabled } ) {
|
|
34
|
-
const {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
|
|
34
|
+
const {
|
|
35
|
+
deviceType,
|
|
36
|
+
homeUrl,
|
|
37
|
+
isTemplate,
|
|
38
|
+
isViewable,
|
|
39
|
+
showIconLabels,
|
|
40
|
+
isTemplateHidden,
|
|
41
|
+
templateId,
|
|
42
|
+
} = useSelect( ( select ) => {
|
|
43
|
+
const { getDeviceType, getCurrentPostType, getCurrentTemplateId } =
|
|
44
|
+
select( editorStore );
|
|
45
|
+
const { getRenderingMode } = unlock( select( editorStore ) );
|
|
46
|
+
const { getEntityRecord, getPostType } = select( coreStore );
|
|
47
|
+
const { get } = select( preferencesStore );
|
|
48
|
+
const _currentPostType = getCurrentPostType();
|
|
49
|
+
return {
|
|
50
|
+
deviceType: getDeviceType(),
|
|
51
|
+
homeUrl: getEntityRecord( 'root', '__unstableBase' )?.home,
|
|
52
|
+
isTemplate: _currentPostType === 'wp_template',
|
|
53
|
+
isViewable: getPostType( _currentPostType )?.viewable ?? false,
|
|
54
|
+
showIconLabels: get( 'core', 'showIconLabels' ),
|
|
55
|
+
isTemplateHidden: getRenderingMode() === 'post-only',
|
|
56
|
+
templateId: getCurrentTemplateId(),
|
|
57
|
+
};
|
|
58
|
+
}, [] );
|
|
59
|
+
const { setDeviceType, setRenderingMode } = useDispatch( editorStore );
|
|
49
60
|
const { resetZoomLevel } = unlock( useDispatch( blockEditorStore ) );
|
|
50
61
|
|
|
51
62
|
const handleDevicePreviewChange = ( newDeviceType ) => {
|
|
@@ -142,6 +153,24 @@ export default function PreviewDropdown( { forceIsAutosaveable, disabled } ) {
|
|
|
142
153
|
</MenuItem>
|
|
143
154
|
</MenuGroup>
|
|
144
155
|
) }
|
|
156
|
+
{ ! isTemplate && !! templateId && (
|
|
157
|
+
<MenuGroup>
|
|
158
|
+
<MenuItem
|
|
159
|
+
icon={ ! isTemplateHidden ? check : undefined }
|
|
160
|
+
isSelected={ ! isTemplateHidden }
|
|
161
|
+
role="menuitemcheckbox"
|
|
162
|
+
onClick={ () => {
|
|
163
|
+
setRenderingMode(
|
|
164
|
+
isTemplateHidden
|
|
165
|
+
? 'template-locked'
|
|
166
|
+
: 'post-only'
|
|
167
|
+
);
|
|
168
|
+
} }
|
|
169
|
+
>
|
|
170
|
+
{ __( 'Show template' ) }
|
|
171
|
+
</MenuItem>
|
|
172
|
+
</MenuGroup>
|
|
173
|
+
) }
|
|
145
174
|
{ isViewable && (
|
|
146
175
|
<MenuGroup>
|
|
147
176
|
<PostPreviewButton
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
store as coreStore,
|
|
8
8
|
__experimentalFetchLinkSuggestions as fetchLinkSuggestions,
|
|
9
9
|
__experimentalFetchUrlData as fetchUrlData,
|
|
10
|
+
privateApis as coreDataPrivateApis,
|
|
10
11
|
} from '@wordpress/core-data';
|
|
11
12
|
import { __ } from '@wordpress/i18n';
|
|
12
13
|
import { store as preferencesStore } from '@wordpress/preferences';
|
|
@@ -29,17 +30,12 @@ import { useGlobalStylesContext } from '../global-styles-provider';
|
|
|
29
30
|
const EMPTY_OBJECT = {};
|
|
30
31
|
|
|
31
32
|
function __experimentalReusableBlocksSelect( select ) {
|
|
32
|
-
const {
|
|
33
|
-
const
|
|
33
|
+
const { RECEIVE_INTERMEDIATE_RESULTS } = unlock( coreDataPrivateApis );
|
|
34
|
+
const { getEntityRecords } = select( coreStore );
|
|
35
|
+
return getEntityRecords( 'postType', 'wp_block', {
|
|
34
36
|
per_page: -1,
|
|
37
|
+
[ RECEIVE_INTERMEDIATE_RESULTS ]: true,
|
|
35
38
|
} );
|
|
36
|
-
return hasFinishedResolution( 'getEntityRecords', [
|
|
37
|
-
'postType',
|
|
38
|
-
'wp_block',
|
|
39
|
-
{ per_page: -1 },
|
|
40
|
-
] )
|
|
41
|
-
? reusableBlocks
|
|
42
|
-
: undefined;
|
|
43
39
|
}
|
|
44
40
|
|
|
45
41
|
const BLOCK_EDITOR_SETTINGS = [
|
|
@@ -332,6 +328,10 @@ function useBlockEditorSettings( settings, postType, postId, renderingMode ) {
|
|
|
332
328
|
: settings.template,
|
|
333
329
|
__experimentalSetIsInserterOpened: setIsInserterOpened,
|
|
334
330
|
[ sectionRootClientIdKey ]: sectionRootClientId,
|
|
331
|
+
editorTool:
|
|
332
|
+
renderingMode === 'post-only' && postType !== 'wp_template'
|
|
333
|
+
? 'edit'
|
|
334
|
+
: undefined,
|
|
335
335
|
};
|
|
336
336
|
|
|
337
337
|
return blockEditorSettings;
|
|
@@ -359,6 +359,7 @@ function useBlockEditorSettings( settings, postType, postId, renderingMode ) {
|
|
|
359
359
|
sectionRootClientId,
|
|
360
360
|
globalStylesData,
|
|
361
361
|
globalStylesLinksData,
|
|
362
|
+
renderingMode,
|
|
362
363
|
] );
|
|
363
364
|
}
|
|
364
365
|
|
|
@@ -87,11 +87,11 @@ export default function PostSummary( { onActionPerformed } ) {
|
|
|
87
87
|
<PostsPerPage />
|
|
88
88
|
<SiteDiscussion />
|
|
89
89
|
<PostFormatPanel />
|
|
90
|
+
{ fills }
|
|
90
91
|
</VStack>
|
|
91
92
|
<PostTrash
|
|
92
93
|
onActionPerformed={ onActionPerformed }
|
|
93
94
|
/>
|
|
94
|
-
{ fills }
|
|
95
95
|
</VStack>
|
|
96
96
|
) }
|
|
97
97
|
</VStack>
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
.components-panel__header.editor-sidebar__panel-tabs {
|
|
2
2
|
padding-left: 0;
|
|
3
|
-
padding-right: $grid-unit-
|
|
3
|
+
padding-right: $grid-unit-10;
|
|
4
4
|
|
|
5
5
|
.components-button.has-icon {
|
|
6
6
|
padding: 0;
|
|
7
|
-
min-width: $icon-size;
|
|
8
|
-
height: $icon-size;
|
|
9
7
|
|
|
10
8
|
@include break-medium() {
|
|
11
9
|
display: flex;
|
|
@@ -9,7 +9,6 @@ import {
|
|
|
9
9
|
__experimentalBlockPatternsList as BlockPatternsList,
|
|
10
10
|
} from '@wordpress/block-editor';
|
|
11
11
|
import { useSelect, useDispatch } from '@wordpress/data';
|
|
12
|
-
import { useAsyncList } from '@wordpress/compose';
|
|
13
12
|
import { store as coreStore } from '@wordpress/core-data';
|
|
14
13
|
import { __unstableSerializeAndClean } from '@wordpress/blocks';
|
|
15
14
|
import { store as preferencesStore } from '@wordpress/preferences';
|
|
@@ -66,7 +65,6 @@ export function useStartPatterns() {
|
|
|
66
65
|
}
|
|
67
66
|
|
|
68
67
|
function PatternSelection( { blockPatterns, onChoosePattern } ) {
|
|
69
|
-
const shownBlockPatterns = useAsyncList( blockPatterns );
|
|
70
68
|
const { editEntityRecord } = useDispatch( coreStore );
|
|
71
69
|
const { postType, postId } = useSelect( ( select ) => {
|
|
72
70
|
const { getCurrentPostType, getCurrentPostId } = select( editorStore );
|
|
@@ -79,7 +77,6 @@ function PatternSelection( { blockPatterns, onChoosePattern } ) {
|
|
|
79
77
|
return (
|
|
80
78
|
<BlockPatternsList
|
|
81
79
|
blockPatterns={ blockPatterns }
|
|
82
|
-
shownPatterns={ shownBlockPatterns }
|
|
83
80
|
onClickPattern={ ( _pattern, blocks ) => {
|
|
84
81
|
editEntityRecord( 'postType', postType, postId, {
|
|
85
82
|
blocks,
|
|
@@ -6,7 +6,6 @@ import { __ } from '@wordpress/i18n';
|
|
|
6
6
|
import { useState, useMemo, useEffect } from '@wordpress/element';
|
|
7
7
|
import { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';
|
|
8
8
|
import { useSelect } from '@wordpress/data';
|
|
9
|
-
import { useAsyncList } from '@wordpress/compose';
|
|
10
9
|
import { parse } from '@wordpress/blocks';
|
|
11
10
|
import { store as coreStore, useEntityBlockEditor } from '@wordpress/core-data';
|
|
12
11
|
|
|
@@ -111,11 +110,9 @@ function useStartPatterns( fallbackContent ) {
|
|
|
111
110
|
function PatternSelection( { fallbackContent, onChoosePattern, postType } ) {
|
|
112
111
|
const [ , , onChange ] = useEntityBlockEditor( 'postType', postType );
|
|
113
112
|
const blockPatterns = useStartPatterns( fallbackContent );
|
|
114
|
-
const shownBlockPatterns = useAsyncList( blockPatterns );
|
|
115
113
|
return (
|
|
116
114
|
<BlockPatternsList
|
|
117
115
|
blockPatterns={ blockPatterns }
|
|
118
|
-
shownPatterns={ shownBlockPatterns }
|
|
119
116
|
onClickPattern={ ( pattern, blocks ) => {
|
|
120
117
|
onChange( blocks, { selection: undefined } );
|
|
121
118
|
onChoosePattern();
|