@wordpress/edit-site 3.0.11 → 3.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/components/add-new-template/new-template-part.js +34 -17
- package/build/components/add-new-template/new-template-part.js.map +1 -1
- package/build/components/add-new-template/new-template.js +41 -22
- package/build/components/add-new-template/new-template.js.map +1 -1
- package/build/components/block-editor/index.js +3 -1
- package/build/components/block-editor/index.js.map +1 -1
- package/build/components/global-styles/color-palette-panel.js +4 -4
- package/build/components/global-styles/color-palette-panel.js.map +1 -1
- package/build/components/global-styles/gradients-palette-panel.js +56 -0
- package/build/components/global-styles/gradients-palette-panel.js.map +1 -0
- package/build/components/global-styles/hooks.js +5 -5
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/palette.js +11 -5
- package/build/components/global-styles/palette.js.map +1 -1
- package/build/components/global-styles/screen-background-color.js +2 -1
- package/build/components/global-styles/screen-background-color.js.map +1 -1
- package/build/components/global-styles/screen-color-palette.js +23 -3
- package/build/components/global-styles/screen-color-palette.js.map +1 -1
- package/build/components/global-styles/screen-link-color.js +2 -1
- package/build/components/global-styles/screen-link-color.js.map +1 -1
- package/build/components/global-styles/screen-text-color.js +2 -1
- package/build/components/global-styles/screen-text-color.js.map +1 -1
- package/build/components/global-styles/screen-typography-element.js +54 -0
- package/build/components/global-styles/screen-typography-element.js.map +1 -0
- package/build/components/global-styles/screen-typography.js +74 -6
- package/build/components/global-styles/screen-typography.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +28 -8
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/ui.js +12 -0
- package/build/components/global-styles/ui.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +2 -2
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +1 -1
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/list/actions/index.js +104 -0
- package/build/components/list/actions/index.js.map +1 -0
- package/build/components/list/actions/rename-menu-item.js +112 -0
- package/build/components/list/actions/rename-menu-item.js.map +1 -0
- package/build/components/list/added-by.js +180 -0
- package/build/components/list/added-by.js.map +1 -0
- package/build/components/list/index.js +18 -3
- package/build/components/list/index.js.map +1 -1
- package/build/components/list/table.js +54 -67
- package/build/components/list/table.js.map +1 -1
- package/build/components/navigation-sidebar/index.js +12 -11
- package/build/components/navigation-sidebar/index.js.map +1 -1
- package/build/components/navigation-sidebar/navigation-panel/index.js +28 -11
- package/build/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
- package/build/components/navigation-sidebar/navigation-toggle/index.js +14 -5
- package/build/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
- package/build/index.js +8 -2
- package/build/index.js.map +1 -1
- package/build/store/actions.js +47 -18
- package/build/store/actions.js.map +1 -1
- package/build/store/selectors.js +25 -5
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/add-new-template/new-template-part.js +30 -16
- package/build-module/components/add-new-template/new-template-part.js.map +1 -1
- package/build-module/components/add-new-template/new-template.js +40 -23
- package/build-module/components/add-new-template/new-template.js.map +1 -1
- package/build-module/components/block-editor/index.js +2 -1
- package/build-module/components/block-editor/index.js.map +1 -1
- package/build-module/components/global-styles/color-palette-panel.js +5 -5
- package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
- package/build-module/components/global-styles/gradients-palette-panel.js +46 -0
- package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -0
- package/build-module/components/global-styles/hooks.js +5 -5
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/palette.js +12 -5
- package/build-module/components/global-styles/palette.js.map +1 -1
- package/build-module/components/global-styles/screen-background-color.js +2 -1
- package/build-module/components/global-styles/screen-background-color.js.map +1 -1
- package/build-module/components/global-styles/screen-color-palette.js +22 -3
- package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
- package/build-module/components/global-styles/screen-link-color.js +2 -1
- package/build-module/components/global-styles/screen-link-color.js.map +1 -1
- package/build-module/components/global-styles/screen-text-color.js +2 -1
- package/build-module/components/global-styles/screen-text-color.js.map +1 -1
- package/build-module/components/global-styles/screen-typography-element.js +41 -0
- package/build-module/components/global-styles/screen-typography-element.js.map +1 -0
- package/build-module/components/global-styles/screen-typography.js +70 -6
- package/build-module/components/global-styles/screen-typography.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +28 -8
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/ui.js +11 -0
- package/build-module/components/global-styles/ui.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +2 -2
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +1 -1
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/list/actions/index.js +85 -0
- package/build-module/components/list/actions/index.js.map +1 -0
- package/build-module/components/list/actions/rename-menu-item.js +101 -0
- package/build-module/components/list/actions/rename-menu-item.js.map +1 -0
- package/build-module/components/list/added-by.js +166 -0
- package/build-module/components/list/added-by.js.map +1 -0
- package/build-module/components/list/index.js +15 -3
- package/build-module/components/list/index.js.map +1 -1
- package/build-module/components/list/table.js +56 -69
- package/build-module/components/list/table.js.map +1 -1
- package/build-module/components/navigation-sidebar/index.js +11 -12
- package/build-module/components/navigation-sidebar/index.js.map +1 -1
- package/build-module/components/navigation-sidebar/navigation-panel/index.js +26 -12
- package/build-module/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
- package/build-module/components/navigation-sidebar/navigation-toggle/index.js +14 -6
- package/build-module/components/navigation-sidebar/navigation-toggle/index.js.map +1 -1
- package/build-module/index.js +8 -3
- package/build-module/index.js.map +1 -1
- package/build-module/store/actions.js +48 -19
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/selectors.js +21 -3
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +136 -17
- package/build-style/style.css +136 -17
- package/package.json +10 -8
- package/src/components/add-new-template/new-template-part.js +32 -17
- package/src/components/add-new-template/new-template.js +39 -19
- package/src/components/block-editor/index.js +2 -0
- package/src/components/global-styles/color-palette-panel.js +5 -5
- package/src/components/global-styles/gradients-palette-panel.js +79 -0
- package/src/components/global-styles/hooks.js +4 -4
- package/src/components/global-styles/palette.js +30 -10
- package/src/components/global-styles/screen-background-color.js +1 -0
- package/src/components/global-styles/screen-color-palette.js +30 -3
- package/src/components/global-styles/screen-link-color.js +1 -0
- package/src/components/global-styles/screen-text-color.js +1 -0
- package/src/components/global-styles/screen-typography-element.js +39 -0
- package/src/components/global-styles/screen-typography.js +84 -3
- package/src/components/global-styles/style.scss +33 -0
- package/src/components/global-styles/test/use-global-styles-output.js +1 -1
- package/src/components/global-styles/test/utils.js +1 -1
- package/src/components/global-styles/typography-panel.js +37 -7
- package/src/components/global-styles/ui.js +9 -0
- package/src/components/global-styles/use-global-styles-output.js +2 -2
- package/src/components/global-styles/utils.js +1 -1
- package/src/components/list/actions/index.js +95 -0
- package/src/components/list/actions/rename-menu-item.js +134 -0
- package/src/components/list/added-by.js +179 -0
- package/src/components/list/index.js +27 -11
- package/src/components/list/style.scss +106 -11
- package/src/components/list/table.js +64 -75
- package/src/components/navigation-sidebar/index.js +9 -16
- package/src/components/navigation-sidebar/navigation-panel/index.js +25 -9
- package/src/components/navigation-sidebar/navigation-toggle/index.js +29 -17
- package/src/components/navigation-sidebar/navigation-toggle/test/index.js +2 -0
- package/src/components/sidebar/style.scss +2 -1
- package/src/index.js +10 -2
- package/src/store/actions.js +82 -34
- package/src/store/selectors.js +22 -4
- package/src/store/test/actions.js +0 -24
- package/src/store/test/selectors.js +24 -0
package/src/store/actions.js
CHANGED
|
@@ -5,7 +5,7 @@ import { parse, __unstableSerializeAndClean } from '@wordpress/blocks';
|
|
|
5
5
|
import { controls, dispatch } from '@wordpress/data';
|
|
6
6
|
import { apiFetch } from '@wordpress/data-controls';
|
|
7
7
|
import { addQueryArgs, getPathAndQueryString } from '@wordpress/url';
|
|
8
|
-
import { __ } from '@wordpress/i18n';
|
|
8
|
+
import { __, sprintf } from '@wordpress/i18n';
|
|
9
9
|
import { store as noticesStore } from '@wordpress/notices';
|
|
10
10
|
import { store as coreStore } from '@wordpress/core-data';
|
|
11
11
|
import { store as interfaceStore } from '@wordpress/interface';
|
|
@@ -111,14 +111,51 @@ export function* addTemplate( template ) {
|
|
|
111
111
|
* @param {Object} template The template object.
|
|
112
112
|
*/
|
|
113
113
|
export function* removeTemplate( template ) {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
114
|
+
try {
|
|
115
|
+
yield controls.dispatch(
|
|
116
|
+
coreStore,
|
|
117
|
+
'deleteEntityRecord',
|
|
118
|
+
'postType',
|
|
119
|
+
template.type,
|
|
120
|
+
template.id,
|
|
121
|
+
{ force: true }
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
const lastError = yield controls.select(
|
|
125
|
+
coreStore,
|
|
126
|
+
'getLastEntityDeleteError',
|
|
127
|
+
'postType',
|
|
128
|
+
template.type,
|
|
129
|
+
template.id
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
if ( lastError ) {
|
|
133
|
+
throw lastError;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
yield controls.dispatch(
|
|
137
|
+
noticesStore,
|
|
138
|
+
'createSuccessNotice',
|
|
139
|
+
sprintf(
|
|
140
|
+
/* translators: The template/part's name. */
|
|
141
|
+
__( '"%s" removed.' ),
|
|
142
|
+
template.title.rendered
|
|
143
|
+
),
|
|
144
|
+
{ type: 'snackbar' }
|
|
145
|
+
);
|
|
146
|
+
} catch ( error ) {
|
|
147
|
+
const errorMessage =
|
|
148
|
+
error.message && error.code !== 'unknown_error'
|
|
149
|
+
? error.message
|
|
150
|
+
: __( 'An error occurred while deleting the template.' );
|
|
151
|
+
|
|
152
|
+
yield controls.dispatch(
|
|
153
|
+
noticesStore,
|
|
154
|
+
'createErrorNotice',
|
|
155
|
+
errorMessage,
|
|
156
|
+
{ type: 'snackbar' }
|
|
157
|
+
);
|
|
158
|
+
}
|
|
122
159
|
}
|
|
123
160
|
|
|
124
161
|
/**
|
|
@@ -338,9 +375,12 @@ export function setIsListViewOpened( isOpen ) {
|
|
|
338
375
|
/**
|
|
339
376
|
* Reverts a template to its original theme-provided file.
|
|
340
377
|
*
|
|
341
|
-
* @param {Object}
|
|
378
|
+
* @param {Object} template The template to revert.
|
|
379
|
+
* @param {Object} [options]
|
|
380
|
+
* @param {boolean} [options.allowUndo] Whether to allow the user to undo
|
|
381
|
+
* reverting the template. Default true.
|
|
342
382
|
*/
|
|
343
|
-
export function* revertTemplate( template ) {
|
|
383
|
+
export function* revertTemplate( template, { allowUndo = true } = {} ) {
|
|
344
384
|
if ( ! isTemplateRevertable( template ) ) {
|
|
345
385
|
yield controls.dispatch(
|
|
346
386
|
noticesStore,
|
|
@@ -428,32 +468,40 @@ export function* revertTemplate( template ) {
|
|
|
428
468
|
}
|
|
429
469
|
);
|
|
430
470
|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
471
|
+
if ( allowUndo ) {
|
|
472
|
+
const undoRevert = async () => {
|
|
473
|
+
await dispatch( coreStore ).editEntityRecord(
|
|
474
|
+
'postType',
|
|
475
|
+
template.type,
|
|
476
|
+
edited.id,
|
|
477
|
+
{
|
|
478
|
+
content: serializeBlocks,
|
|
479
|
+
blocks: edited.blocks,
|
|
480
|
+
source: 'custom',
|
|
481
|
+
}
|
|
482
|
+
);
|
|
483
|
+
};
|
|
484
|
+
yield controls.dispatch(
|
|
485
|
+
noticesStore,
|
|
486
|
+
'createSuccessNotice',
|
|
487
|
+
__( 'Template reverted.' ),
|
|
436
488
|
{
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
489
|
+
type: 'snackbar',
|
|
490
|
+
actions: [
|
|
491
|
+
{
|
|
492
|
+
label: __( 'Undo' ),
|
|
493
|
+
onClick: undoRevert,
|
|
494
|
+
},
|
|
495
|
+
],
|
|
440
496
|
}
|
|
441
497
|
);
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
actions: [
|
|
450
|
-
{
|
|
451
|
-
label: __( 'Undo' ),
|
|
452
|
-
onClick: undoRevert,
|
|
453
|
-
},
|
|
454
|
-
],
|
|
455
|
-
}
|
|
456
|
-
);
|
|
498
|
+
} else {
|
|
499
|
+
yield controls.dispatch(
|
|
500
|
+
noticesStore,
|
|
501
|
+
'createSuccessNotice',
|
|
502
|
+
__( 'Template reverted.' )
|
|
503
|
+
);
|
|
504
|
+
}
|
|
457
505
|
} catch ( error ) {
|
|
458
506
|
const errorMessage =
|
|
459
507
|
error.message && error.code !== 'unknown_error'
|
package/src/store/selectors.js
CHANGED
|
@@ -11,6 +11,7 @@ import { store as coreDataStore } from '@wordpress/core-data';
|
|
|
11
11
|
import { createRegistrySelector } from '@wordpress/data';
|
|
12
12
|
import { uploadMedia } from '@wordpress/media-utils';
|
|
13
13
|
import { isTemplatePart } from '@wordpress/blocks';
|
|
14
|
+
import { Platform } from '@wordpress/element';
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* Internal dependencies
|
|
@@ -64,6 +65,22 @@ export const getCanUserCreateMedia = createRegistrySelector( ( select ) => () =>
|
|
|
64
65
|
select( coreDataStore ).canUser( 'create', 'media' )
|
|
65
66
|
);
|
|
66
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Returns any available Reusable blocks.
|
|
70
|
+
*
|
|
71
|
+
* @param {Object} state Global application state.
|
|
72
|
+
*
|
|
73
|
+
* @return {Array} The available reusable blocks.
|
|
74
|
+
*/
|
|
75
|
+
export const getReusableBlocks = createRegistrySelector( ( select ) => () => {
|
|
76
|
+
const isWeb = Platform.OS === 'web';
|
|
77
|
+
return isWeb
|
|
78
|
+
? select( coreDataStore ).getEntityRecords( 'postType', 'wp_block', {
|
|
79
|
+
per_page: -1,
|
|
80
|
+
} )
|
|
81
|
+
: [];
|
|
82
|
+
} );
|
|
83
|
+
|
|
67
84
|
/**
|
|
68
85
|
* Returns the settings, taking into account active features and permissions.
|
|
69
86
|
*
|
|
@@ -80,6 +97,7 @@ export const getSettings = createSelector(
|
|
|
80
97
|
focusMode: isFeatureActive( state, 'focusMode' ),
|
|
81
98
|
hasFixedToolbar: isFeatureActive( state, 'fixedToolbar' ),
|
|
82
99
|
__experimentalSetIsInserterOpened: setIsInserterOpen,
|
|
100
|
+
__experimentalReusableBlocks: getReusableBlocks( state ),
|
|
83
101
|
};
|
|
84
102
|
|
|
85
103
|
const canUserCreateMedia = getCanUserCreateMedia( state );
|
|
@@ -101,6 +119,7 @@ export const getSettings = createSelector(
|
|
|
101
119
|
state.settings,
|
|
102
120
|
isFeatureActive( state, 'focusMode' ),
|
|
103
121
|
isFeatureActive( state, 'fixedToolbar' ),
|
|
122
|
+
getReusableBlocks( state ),
|
|
104
123
|
]
|
|
105
124
|
);
|
|
106
125
|
|
|
@@ -309,10 +328,9 @@ export const getCurrentTemplateTemplateParts = createRegistrySelector(
|
|
|
309
328
|
templateId
|
|
310
329
|
);
|
|
311
330
|
|
|
312
|
-
const templateParts = select(
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
);
|
|
331
|
+
const templateParts = select(
|
|
332
|
+
coreDataStore
|
|
333
|
+
).getEntityRecords( 'postType', 'wp_template_part', { per_page: -1 } );
|
|
316
334
|
const templatePartsById = keyBy(
|
|
317
335
|
templateParts,
|
|
318
336
|
( templatePart ) => templatePart.id
|
|
@@ -5,7 +5,6 @@ import {
|
|
|
5
5
|
toggleFeature,
|
|
6
6
|
setTemplate,
|
|
7
7
|
addTemplate,
|
|
8
|
-
removeTemplate,
|
|
9
8
|
setTemplatePart,
|
|
10
9
|
setPage,
|
|
11
10
|
showHomepage,
|
|
@@ -76,29 +75,6 @@ describe( 'actions', () => {
|
|
|
76
75
|
} );
|
|
77
76
|
} );
|
|
78
77
|
|
|
79
|
-
describe( 'removeTemplate', () => {
|
|
80
|
-
it( 'should issue a deleteEntityRecord request', () => {
|
|
81
|
-
const template = {
|
|
82
|
-
id: 'tt1-blocks//general',
|
|
83
|
-
type: 'wp_template_part',
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
const it = removeTemplate( template );
|
|
87
|
-
expect( it.next().value ).toEqual( {
|
|
88
|
-
actionName: 'deleteEntityRecord',
|
|
89
|
-
args: [
|
|
90
|
-
'postType',
|
|
91
|
-
'wp_template_part',
|
|
92
|
-
'tt1-blocks//general',
|
|
93
|
-
{ force: true },
|
|
94
|
-
],
|
|
95
|
-
storeKey: 'core',
|
|
96
|
-
type: '@@data/DISPATCH',
|
|
97
|
-
} );
|
|
98
|
-
expect( it.next().done ).toBe( true );
|
|
99
|
-
} );
|
|
100
|
-
} );
|
|
101
|
-
|
|
102
78
|
describe( 'setTemplatePart', () => {
|
|
103
79
|
it( 'should return the SET_TEMPLATE_PART action', () => {
|
|
104
80
|
const templatePartId = 1;
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
getPreviousEditedPostId,
|
|
18
18
|
getPage,
|
|
19
19
|
getNavigationPanelActiveMenu,
|
|
20
|
+
getReusableBlocks,
|
|
20
21
|
isNavigationOpened,
|
|
21
22
|
isInserterOpened,
|
|
22
23
|
isListViewOpened,
|
|
@@ -24,9 +25,13 @@ import {
|
|
|
24
25
|
|
|
25
26
|
describe( 'selectors', () => {
|
|
26
27
|
const canUser = jest.fn( () => true );
|
|
28
|
+
const getEntityRecords = jest.fn( () => [] );
|
|
27
29
|
getCanUserCreateMedia.registry = {
|
|
28
30
|
select: jest.fn( () => ( { canUser } ) ),
|
|
29
31
|
};
|
|
32
|
+
getReusableBlocks.registry = {
|
|
33
|
+
select: jest.fn( () => ( { getEntityRecords } ) ),
|
|
34
|
+
};
|
|
30
35
|
|
|
31
36
|
describe( 'isFeatureActive', () => {
|
|
32
37
|
it( 'is tolerant to an undefined features preference', () => {
|
|
@@ -83,6 +88,22 @@ describe( 'selectors', () => {
|
|
|
83
88
|
} );
|
|
84
89
|
} );
|
|
85
90
|
|
|
91
|
+
describe( 'getReusableBlocks', () => {
|
|
92
|
+
it( "selects `getEntityRecords( 'postType', 'wp_block' )` from the core store", () => {
|
|
93
|
+
expect( getReusableBlocks() ).toEqual( [] );
|
|
94
|
+
expect( getReusableBlocks.registry.select ).toHaveBeenCalledWith(
|
|
95
|
+
coreDataStore
|
|
96
|
+
);
|
|
97
|
+
expect( getEntityRecords ).toHaveBeenCalledWith(
|
|
98
|
+
'postType',
|
|
99
|
+
'wp_block',
|
|
100
|
+
{
|
|
101
|
+
per_page: -1,
|
|
102
|
+
}
|
|
103
|
+
);
|
|
104
|
+
} );
|
|
105
|
+
} );
|
|
106
|
+
|
|
86
107
|
describe( 'getSettings', () => {
|
|
87
108
|
it( "returns the settings when the user can't create media", () => {
|
|
88
109
|
canUser.mockReturnValueOnce( false );
|
|
@@ -94,6 +115,7 @@ describe( 'selectors', () => {
|
|
|
94
115
|
focusMode: false,
|
|
95
116
|
hasFixedToolbar: false,
|
|
96
117
|
__experimentalSetIsInserterOpened: setInserterOpened,
|
|
118
|
+
__experimentalReusableBlocks: [],
|
|
97
119
|
} );
|
|
98
120
|
} );
|
|
99
121
|
|
|
@@ -108,12 +130,14 @@ describe( 'selectors', () => {
|
|
|
108
130
|
},
|
|
109
131
|
};
|
|
110
132
|
const setInserterOpened = () => {};
|
|
133
|
+
|
|
111
134
|
expect( getSettings( state, setInserterOpened ) ).toEqual( {
|
|
112
135
|
outlineMode: true,
|
|
113
136
|
key: 'value',
|
|
114
137
|
focusMode: true,
|
|
115
138
|
hasFixedToolbar: true,
|
|
116
139
|
__experimentalSetIsInserterOpened: setInserterOpened,
|
|
140
|
+
__experimentalReusableBlocks: [],
|
|
117
141
|
mediaUpload: expect.any( Function ),
|
|
118
142
|
} );
|
|
119
143
|
} );
|