@wordpress/edit-site 6.5.0 → 6.6.1
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/build/components/global-styles/background-panel.js +1 -4
- package/build/components/global-styles/background-panel.js.map +1 -1
- package/build/components/global-styles/font-library-modal/installed-fonts.js +3 -2
- package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
- package/build/components/global-styles/screen-block.js +5 -7
- package/build/components/global-styles/screen-block.js.map +1 -1
- package/build/components/global-styles/screen-css.js +1 -1
- package/build/components/global-styles/screen-css.js.map +1 -1
- package/build/components/global-styles/shadows-edit-panel.js +1 -0
- package/build/components/global-styles/shadows-edit-panel.js.map +1 -1
- package/build/components/global-styles/size-control/index.js +10 -5
- package/build/components/global-styles/size-control/index.js.map +1 -1
- package/build/components/page-patterns/index.js +5 -2
- package/build/components/page-patterns/index.js.map +1 -1
- package/build/components/page-patterns/use-patterns.js +29 -26
- package/build/components/page-patterns/use-patterns.js.map +1 -1
- package/build/components/post-edit/index.js +43 -43
- package/build/components/post-edit/index.js.map +1 -1
- package/build/components/post-fields/index.js +31 -13
- package/build/components/post-fields/index.js.map +1 -1
- package/build/components/post-list/index.js +1 -1
- package/build/components/post-list/index.js.map +1 -1
- package/build/components/sidebar-dataviews/add-new-view.js +1 -0
- package/build/components/sidebar-dataviews/add-new-view.js.map +1 -1
- package/build/components/sidebar-dataviews/custom-dataviews-list.js +1 -0
- package/build/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
- package/build/hooks/push-changes-to-global-styles/index.js +1 -0
- package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
- package/build/utils/is-template-removable.js +2 -2
- package/build/utils/is-template-removable.js.map +1 -1
- package/build/utils/is-template-revertable.js +1 -1
- package/build/utils/is-template-revertable.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +1 -4
- package/build-module/components/global-styles/background-panel.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/installed-fonts.js +3 -2
- package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
- package/build-module/components/global-styles/screen-block.js +5 -7
- package/build-module/components/global-styles/screen-block.js.map +1 -1
- package/build-module/components/global-styles/screen-css.js +1 -1
- package/build-module/components/global-styles/screen-css.js.map +1 -1
- package/build-module/components/global-styles/shadows-edit-panel.js +1 -0
- package/build-module/components/global-styles/shadows-edit-panel.js.map +1 -1
- package/build-module/components/global-styles/size-control/index.js +10 -5
- package/build-module/components/global-styles/size-control/index.js.map +1 -1
- package/build-module/components/page-patterns/index.js +3 -2
- package/build-module/components/page-patterns/index.js.map +1 -1
- package/build-module/components/page-patterns/use-patterns.js +26 -25
- package/build-module/components/page-patterns/use-patterns.js.map +1 -1
- package/build-module/components/post-edit/index.js +47 -47
- package/build-module/components/post-edit/index.js.map +1 -1
- package/build-module/components/post-fields/index.js +31 -13
- package/build-module/components/post-fields/index.js.map +1 -1
- package/build-module/components/post-list/index.js +1 -1
- package/build-module/components/post-list/index.js.map +1 -1
- package/build-module/components/sidebar-dataviews/add-new-view.js +1 -0
- package/build-module/components/sidebar-dataviews/add-new-view.js.map +1 -1
- package/build-module/components/sidebar-dataviews/custom-dataviews-list.js +1 -0
- package/build-module/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
- package/build-module/hooks/push-changes-to-global-styles/index.js +1 -0
- package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
- package/build-module/utils/is-template-removable.js +2 -2
- package/build-module/utils/is-template-removable.js.map +1 -1
- package/build-module/utils/is-template-revertable.js +1 -1
- package/build-module/utils/is-template-revertable.js.map +1 -1
- package/build-style/posts-rtl.css +19 -22
- package/build-style/posts.css +19 -22
- package/build-style/style-rtl.css +19 -22
- package/build-style/style.css +19 -22
- package/package.json +41 -41
- package/src/components/add-new-template/style.scss +1 -1
- package/src/components/editor/style.scss +1 -1
- package/src/components/global-styles/background-panel.js +0 -3
- package/src/components/global-styles/font-library-modal/installed-fonts.js +6 -4
- package/src/components/global-styles/font-library-modal/style.scss +1 -1
- package/src/components/global-styles/screen-block.js +2 -4
- package/src/components/global-styles/screen-css.js +3 -1
- package/src/components/global-styles/shadows-edit-panel.js +1 -0
- package/src/components/global-styles/size-control/index.js +9 -6
- package/src/components/page-patterns/index.js +4 -2
- package/src/components/page-patterns/use-patterns.js +33 -30
- package/src/components/post-edit/index.js +57 -53
- package/src/components/post-fields/index.js +59 -8
- package/src/components/post-list/index.js +1 -5
- package/src/components/sidebar-dataviews/add-new-view.js +1 -0
- package/src/components/sidebar-dataviews/custom-dataviews-list.js +1 -0
- package/src/hooks/push-changes-to-global-styles/index.js +1 -0
- package/src/utils/is-template-removable.js +4 -2
- package/src/utils/is-template-revertable.js +2 -1
|
@@ -7,32 +7,30 @@ import clsx from 'clsx';
|
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
9
|
import { __ } from '@wordpress/i18n';
|
|
10
|
-
import { DataForm
|
|
11
|
-
import { useDispatch, useSelect
|
|
10
|
+
import { DataForm } from '@wordpress/dataviews';
|
|
11
|
+
import { useDispatch, useSelect } from '@wordpress/data';
|
|
12
12
|
import { store as coreDataStore } from '@wordpress/core-data';
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
__experimentalVStack as VStack,
|
|
17
|
-
} from '@wordpress/components';
|
|
18
|
-
import { useState, useMemo } from '@wordpress/element';
|
|
13
|
+
import { __experimentalVStack as VStack } from '@wordpress/components';
|
|
14
|
+
import { useState, useMemo, useEffect } from '@wordpress/element';
|
|
15
|
+
import { privateApis as editorPrivateApis } from '@wordpress/editor';
|
|
19
16
|
|
|
20
17
|
/**
|
|
21
18
|
* Internal dependencies
|
|
22
19
|
*/
|
|
23
20
|
import Page from '../page';
|
|
24
21
|
import usePostFields from '../post-fields';
|
|
22
|
+
import { unlock } from '../../lock-unlock';
|
|
23
|
+
|
|
24
|
+
const { PostCardPanel } = unlock( editorPrivateApis );
|
|
25
25
|
|
|
26
26
|
function PostEditForm( { postType, postId } ) {
|
|
27
27
|
const ids = useMemo( () => postId.split( ',' ), [ postId ] );
|
|
28
|
-
const {
|
|
28
|
+
const { record } = useSelect(
|
|
29
29
|
( select ) => {
|
|
30
|
-
if ( ids.length !== 1 ) {
|
|
31
|
-
}
|
|
32
30
|
return {
|
|
33
|
-
|
|
31
|
+
record:
|
|
34
32
|
ids.length === 1
|
|
35
|
-
? select( coreDataStore ).
|
|
33
|
+
? select( coreDataStore ).getEditedEntityRecord(
|
|
36
34
|
'postType',
|
|
37
35
|
postType,
|
|
38
36
|
ids[ 0 ]
|
|
@@ -42,58 +40,64 @@ function PostEditForm( { postType, postId } ) {
|
|
|
42
40
|
},
|
|
43
41
|
[ postType, ids ]
|
|
44
42
|
);
|
|
45
|
-
const
|
|
46
|
-
const {
|
|
47
|
-
const { fields } = usePostFields();
|
|
43
|
+
const [ multiEdits, setMultiEdits ] = useState( {} );
|
|
44
|
+
const { editEntityRecord } = useDispatch( coreDataStore );
|
|
45
|
+
const { fields: _fields } = usePostFields();
|
|
46
|
+
const fields = useMemo(
|
|
47
|
+
() =>
|
|
48
|
+
_fields?.map( ( field ) => {
|
|
49
|
+
if ( field.id === 'status' ) {
|
|
50
|
+
return {
|
|
51
|
+
...field,
|
|
52
|
+
elements: field.elements.filter(
|
|
53
|
+
( element ) => element.value !== 'trash'
|
|
54
|
+
),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
return field;
|
|
58
|
+
} ),
|
|
59
|
+
[ _fields ]
|
|
60
|
+
);
|
|
48
61
|
const form = {
|
|
49
62
|
type: 'panel',
|
|
50
|
-
fields: [ 'title', 'author' ],
|
|
63
|
+
fields: [ 'title', 'status', 'date', 'author', 'comment_status' ],
|
|
51
64
|
};
|
|
52
|
-
const
|
|
53
|
-
const itemWithEdits = useMemo( () => {
|
|
54
|
-
return {
|
|
55
|
-
...initialEdits,
|
|
56
|
-
...edits,
|
|
57
|
-
};
|
|
58
|
-
}, [ initialEdits, edits ] );
|
|
59
|
-
const onSubmit = async ( event ) => {
|
|
60
|
-
event.preventDefault();
|
|
61
|
-
|
|
62
|
-
if ( ! isItemValid( itemWithEdits, fields, form ) ) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
const { getEntityRecord } = registry.resolveSelect( coreDataStore );
|
|
65
|
+
const onChange = ( edits ) => {
|
|
67
66
|
for ( const id of ids ) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
if (
|
|
68
|
+
edits.status !== 'future' &&
|
|
69
|
+
record.status === 'future' &&
|
|
70
|
+
new Date( record.date ) > new Date()
|
|
71
|
+
) {
|
|
72
|
+
edits.date = null;
|
|
73
|
+
}
|
|
74
|
+
if ( edits.status === 'private' && record.password ) {
|
|
75
|
+
edits.password = '';
|
|
76
|
+
}
|
|
77
|
+
editEntityRecord( 'postType', postType, id, edits );
|
|
78
|
+
if ( ids.length > 1 ) {
|
|
79
|
+
setMultiEdits( ( prev ) => ( {
|
|
80
|
+
...prev,
|
|
81
|
+
...edits,
|
|
82
|
+
} ) );
|
|
83
|
+
}
|
|
73
84
|
}
|
|
74
|
-
setEdits( {} );
|
|
75
85
|
};
|
|
86
|
+
useEffect( () => {
|
|
87
|
+
setMultiEdits( {} );
|
|
88
|
+
}, [ ids ] );
|
|
76
89
|
|
|
77
|
-
const isUpdateDisabled = ! isItemValid( itemWithEdits, fields, form );
|
|
78
90
|
return (
|
|
79
|
-
<VStack
|
|
91
|
+
<VStack spacing={ 4 }>
|
|
92
|
+
{ ids.length === 1 && (
|
|
93
|
+
<PostCardPanel postType={ postType } postId={ ids[ 0 ] } />
|
|
94
|
+
) }
|
|
80
95
|
<DataForm
|
|
81
|
-
data={
|
|
96
|
+
data={ ids.length === 1 ? record : multiEdits }
|
|
82
97
|
fields={ fields }
|
|
83
98
|
form={ form }
|
|
84
|
-
onChange={
|
|
99
|
+
onChange={ onChange }
|
|
85
100
|
/>
|
|
86
|
-
<FlexItem>
|
|
87
|
-
<Button
|
|
88
|
-
variant="primary"
|
|
89
|
-
type="submit"
|
|
90
|
-
accessibleWhenDisabled
|
|
91
|
-
disabled={ isUpdateDisabled }
|
|
92
|
-
__next40pxDefaultSize
|
|
93
|
-
>
|
|
94
|
-
{ __( 'Update' ) }
|
|
95
|
-
</Button>
|
|
96
|
-
</FlexItem>
|
|
97
101
|
</VStack>
|
|
98
102
|
);
|
|
99
103
|
}
|
|
@@ -42,11 +42,36 @@ import Media from '../media';
|
|
|
42
42
|
// See https://github.com/WordPress/gutenberg/issues/55886
|
|
43
43
|
// We do not support custom statutes at the moment.
|
|
44
44
|
const STATUSES = [
|
|
45
|
-
{
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
{
|
|
46
|
+
value: 'draft',
|
|
47
|
+
label: __( 'Draft' ),
|
|
48
|
+
icon: drafts,
|
|
49
|
+
description: __( 'Not ready to publish.' ),
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
value: 'future',
|
|
53
|
+
label: __( 'Scheduled' ),
|
|
54
|
+
icon: scheduled,
|
|
55
|
+
description: __( 'Publish automatically on a chosen date.' ),
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
value: 'pending',
|
|
59
|
+
label: __( 'Pending Review' ),
|
|
60
|
+
icon: pending,
|
|
61
|
+
description: __( 'Waiting for review before publishing.' ),
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
value: 'private',
|
|
65
|
+
label: __( 'Private' ),
|
|
66
|
+
icon: notAllowed,
|
|
67
|
+
description: __( 'Only visible to site admins and editors.' ),
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
value: 'publish',
|
|
71
|
+
label: __( 'Published' ),
|
|
72
|
+
icon: published,
|
|
73
|
+
description: __( 'Visible to everyone.' ),
|
|
74
|
+
},
|
|
50
75
|
{ value: 'trash', label: __( 'Trash' ), icon: trash },
|
|
51
76
|
];
|
|
52
77
|
|
|
@@ -258,11 +283,10 @@ function usePostFields( viewType ) {
|
|
|
258
283
|
{
|
|
259
284
|
label: __( 'Status' ),
|
|
260
285
|
id: 'status',
|
|
261
|
-
|
|
262
|
-
STATUSES.find( ( { value } ) => value === item.status )
|
|
263
|
-
?.label ?? item.status,
|
|
286
|
+
type: 'text',
|
|
264
287
|
elements: STATUSES,
|
|
265
288
|
render: PostStatusField,
|
|
289
|
+
Edit: 'radio',
|
|
266
290
|
enableSorting: false,
|
|
267
291
|
filterBy: {
|
|
268
292
|
operators: [ OPERATOR_IS_ANY ],
|
|
@@ -271,6 +295,7 @@ function usePostFields( viewType ) {
|
|
|
271
295
|
{
|
|
272
296
|
label: __( 'Date' ),
|
|
273
297
|
id: 'date',
|
|
298
|
+
type: 'datetime',
|
|
274
299
|
render: ( { item } ) => {
|
|
275
300
|
const isDraftOrPrivate = [ 'draft', 'private' ].includes(
|
|
276
301
|
item.status
|
|
@@ -344,6 +369,32 @@ function usePostFields( viewType ) {
|
|
|
344
369
|
return <time>{ getFormattedDate( item.date ) }</time>;
|
|
345
370
|
},
|
|
346
371
|
},
|
|
372
|
+
{
|
|
373
|
+
id: 'comment_status',
|
|
374
|
+
label: __( 'Discussion' ),
|
|
375
|
+
type: 'text',
|
|
376
|
+
Edit: 'radio',
|
|
377
|
+
enableSorting: false,
|
|
378
|
+
filterBy: {
|
|
379
|
+
operators: [],
|
|
380
|
+
},
|
|
381
|
+
elements: [
|
|
382
|
+
{
|
|
383
|
+
value: 'open',
|
|
384
|
+
label: __( 'Open' ),
|
|
385
|
+
description: __(
|
|
386
|
+
'Visitors can add new comments and replies.'
|
|
387
|
+
),
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
value: 'closed',
|
|
391
|
+
label: __( 'Closed' ),
|
|
392
|
+
description: __(
|
|
393
|
+
'Visitors cannot add new comments or replies. Existing comments remain visible.'
|
|
394
|
+
),
|
|
395
|
+
},
|
|
396
|
+
],
|
|
397
|
+
},
|
|
347
398
|
],
|
|
348
399
|
[ authors, viewType, frontPageId, postsPageId ]
|
|
349
400
|
);
|
|
@@ -366,11 +366,7 @@ export default function PostList( { postType } ) {
|
|
|
366
366
|
size="compact"
|
|
367
367
|
isPressed={ quickEdit }
|
|
368
368
|
icon={ drawerRight }
|
|
369
|
-
label={
|
|
370
|
-
! quickEdit
|
|
371
|
-
? __( 'Show quick edit sidebar' )
|
|
372
|
-
: __( 'Close quick edit sidebar' )
|
|
373
|
-
}
|
|
369
|
+
label={ __( 'Toggle details panel' ) }
|
|
374
370
|
onClick={ () => {
|
|
375
371
|
history.push( {
|
|
376
372
|
...location.params,
|
|
@@ -7,7 +7,7 @@ import { TEMPLATE_ORIGINS } from './constants';
|
|
|
7
7
|
* Check if a template is removable.
|
|
8
8
|
*
|
|
9
9
|
* @param {Object} template The template entity to check.
|
|
10
|
-
* @return {boolean} Whether the template is
|
|
10
|
+
* @return {boolean} Whether the template is removable.
|
|
11
11
|
*/
|
|
12
12
|
export default function isTemplateRemovable( template ) {
|
|
13
13
|
if ( ! template ) {
|
|
@@ -15,6 +15,8 @@ export default function isTemplateRemovable( template ) {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
return (
|
|
18
|
-
template.source === TEMPLATE_ORIGINS.custom &&
|
|
18
|
+
template.source === TEMPLATE_ORIGINS.custom &&
|
|
19
|
+
! Boolean( template.plugin ) &&
|
|
20
|
+
! template.has_theme_file
|
|
19
21
|
);
|
|
20
22
|
}
|
|
@@ -15,7 +15,8 @@ export default function isTemplateRevertable( template ) {
|
|
|
15
15
|
}
|
|
16
16
|
/* eslint-disable camelcase */
|
|
17
17
|
return (
|
|
18
|
-
template?.source === TEMPLATE_ORIGINS.custom &&
|
|
18
|
+
template?.source === TEMPLATE_ORIGINS.custom &&
|
|
19
|
+
( Boolean( template?.plugin ) || template?.has_theme_file )
|
|
19
20
|
);
|
|
20
21
|
/* eslint-enable camelcase */
|
|
21
22
|
}
|