@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.
Files changed (89) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/global-styles/background-panel.js +1 -4
  3. package/build/components/global-styles/background-panel.js.map +1 -1
  4. package/build/components/global-styles/font-library-modal/installed-fonts.js +3 -2
  5. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  6. package/build/components/global-styles/screen-block.js +5 -7
  7. package/build/components/global-styles/screen-block.js.map +1 -1
  8. package/build/components/global-styles/screen-css.js +1 -1
  9. package/build/components/global-styles/screen-css.js.map +1 -1
  10. package/build/components/global-styles/shadows-edit-panel.js +1 -0
  11. package/build/components/global-styles/shadows-edit-panel.js.map +1 -1
  12. package/build/components/global-styles/size-control/index.js +10 -5
  13. package/build/components/global-styles/size-control/index.js.map +1 -1
  14. package/build/components/page-patterns/index.js +5 -2
  15. package/build/components/page-patterns/index.js.map +1 -1
  16. package/build/components/page-patterns/use-patterns.js +29 -26
  17. package/build/components/page-patterns/use-patterns.js.map +1 -1
  18. package/build/components/post-edit/index.js +43 -43
  19. package/build/components/post-edit/index.js.map +1 -1
  20. package/build/components/post-fields/index.js +31 -13
  21. package/build/components/post-fields/index.js.map +1 -1
  22. package/build/components/post-list/index.js +1 -1
  23. package/build/components/post-list/index.js.map +1 -1
  24. package/build/components/sidebar-dataviews/add-new-view.js +1 -0
  25. package/build/components/sidebar-dataviews/add-new-view.js.map +1 -1
  26. package/build/components/sidebar-dataviews/custom-dataviews-list.js +1 -0
  27. package/build/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  28. package/build/hooks/push-changes-to-global-styles/index.js +1 -0
  29. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  30. package/build/utils/is-template-removable.js +2 -2
  31. package/build/utils/is-template-removable.js.map +1 -1
  32. package/build/utils/is-template-revertable.js +1 -1
  33. package/build/utils/is-template-revertable.js.map +1 -1
  34. package/build-module/components/global-styles/background-panel.js +1 -4
  35. package/build-module/components/global-styles/background-panel.js.map +1 -1
  36. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +3 -2
  37. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  38. package/build-module/components/global-styles/screen-block.js +5 -7
  39. package/build-module/components/global-styles/screen-block.js.map +1 -1
  40. package/build-module/components/global-styles/screen-css.js +1 -1
  41. package/build-module/components/global-styles/screen-css.js.map +1 -1
  42. package/build-module/components/global-styles/shadows-edit-panel.js +1 -0
  43. package/build-module/components/global-styles/shadows-edit-panel.js.map +1 -1
  44. package/build-module/components/global-styles/size-control/index.js +10 -5
  45. package/build-module/components/global-styles/size-control/index.js.map +1 -1
  46. package/build-module/components/page-patterns/index.js +3 -2
  47. package/build-module/components/page-patterns/index.js.map +1 -1
  48. package/build-module/components/page-patterns/use-patterns.js +26 -25
  49. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  50. package/build-module/components/post-edit/index.js +47 -47
  51. package/build-module/components/post-edit/index.js.map +1 -1
  52. package/build-module/components/post-fields/index.js +31 -13
  53. package/build-module/components/post-fields/index.js.map +1 -1
  54. package/build-module/components/post-list/index.js +1 -1
  55. package/build-module/components/post-list/index.js.map +1 -1
  56. package/build-module/components/sidebar-dataviews/add-new-view.js +1 -0
  57. package/build-module/components/sidebar-dataviews/add-new-view.js.map +1 -1
  58. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js +1 -0
  59. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  60. package/build-module/hooks/push-changes-to-global-styles/index.js +1 -0
  61. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  62. package/build-module/utils/is-template-removable.js +2 -2
  63. package/build-module/utils/is-template-removable.js.map +1 -1
  64. package/build-module/utils/is-template-revertable.js +1 -1
  65. package/build-module/utils/is-template-revertable.js.map +1 -1
  66. package/build-style/posts-rtl.css +19 -22
  67. package/build-style/posts.css +19 -22
  68. package/build-style/style-rtl.css +19 -22
  69. package/build-style/style.css +19 -22
  70. package/package.json +41 -41
  71. package/src/components/add-new-template/style.scss +1 -1
  72. package/src/components/editor/style.scss +1 -1
  73. package/src/components/global-styles/background-panel.js +0 -3
  74. package/src/components/global-styles/font-library-modal/installed-fonts.js +6 -4
  75. package/src/components/global-styles/font-library-modal/style.scss +1 -1
  76. package/src/components/global-styles/screen-block.js +2 -4
  77. package/src/components/global-styles/screen-css.js +3 -1
  78. package/src/components/global-styles/shadows-edit-panel.js +1 -0
  79. package/src/components/global-styles/size-control/index.js +9 -6
  80. package/src/components/page-patterns/index.js +4 -2
  81. package/src/components/page-patterns/use-patterns.js +33 -30
  82. package/src/components/post-edit/index.js +57 -53
  83. package/src/components/post-fields/index.js +59 -8
  84. package/src/components/post-list/index.js +1 -5
  85. package/src/components/sidebar-dataviews/add-new-view.js +1 -0
  86. package/src/components/sidebar-dataviews/custom-dataviews-list.js +1 -0
  87. package/src/hooks/push-changes-to-global-styles/index.js +1 -0
  88. package/src/utils/is-template-removable.js +4 -2
  89. 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, isItemValid } from '@wordpress/dataviews';
11
- import { useDispatch, useSelect, useRegistry } from '@wordpress/data';
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
- Button,
15
- FlexItem,
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 { initialEdits } = useSelect(
28
+ const { record } = useSelect(
29
29
  ( select ) => {
30
- if ( ids.length !== 1 ) {
31
- }
32
30
  return {
33
- initialEdits:
31
+ record:
34
32
  ids.length === 1
35
- ? select( coreDataStore ).getEntityRecord(
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 registry = useRegistry();
46
- const { saveEntityRecord } = useDispatch( coreDataStore );
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 [ edits, setEdits ] = useState( {} );
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
- const item = await getEntityRecord( 'postType', postType, id );
69
- saveEntityRecord( 'postType', postType, {
70
- ...item,
71
- ...edits,
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 as="form" onSubmit={ onSubmit } spacing={ 4 }>
91
+ <VStack spacing={ 4 }>
92
+ { ids.length === 1 && (
93
+ <PostCardPanel postType={ postType } postId={ ids[ 0 ] } />
94
+ ) }
80
95
  <DataForm
81
- data={ itemWithEdits }
96
+ data={ ids.length === 1 ? record : multiEdits }
82
97
  fields={ fields }
83
98
  form={ form }
84
- onChange={ setEdits }
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
- { value: 'draft', label: __( 'Draft' ), icon: drafts },
46
- { value: 'future', label: __( 'Scheduled' ), icon: scheduled },
47
- { value: 'pending', label: __( 'Pending Review' ), icon: pending },
48
- { value: 'private', label: __( 'Private' ), icon: notAllowed },
49
- { value: 'publish', label: __( 'Published' ), icon: published },
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
- getValue: ( { item } ) =>
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,
@@ -78,6 +78,7 @@ function AddNewItemModalContent( { type, setIsAdding } ) {
78
78
  >
79
79
  <VStack spacing="5">
80
80
  <TextControl
81
+ __next40pxDefaultSize
81
82
  __nextHasNoMarginBottom
82
83
  label={ __( 'Name' ) }
83
84
  value={ title }
@@ -51,6 +51,7 @@ function RenameItemModalContent( { dataviewId, currentTitle, setIsRenaming } ) {
51
51
  >
52
52
  <VStack spacing="5">
53
53
  <TextControl
54
+ __next40pxDefaultSize
54
55
  __nextHasNoMarginBottom
55
56
  label={ __( 'Name' ) }
56
57
  value={ title }
@@ -323,6 +323,7 @@ function PushChangesToGlobalStylesControl( {
323
323
 
324
324
  return (
325
325
  <BaseControl
326
+ __nextHasNoMarginBottom
326
327
  className="edit-site-push-changes-to-global-styles-control"
327
328
  help={ sprintf(
328
329
  // translators: %s: Title of the block e.g. 'Heading'.
@@ -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 revertable.
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 && ! template.has_theme_file
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 && template?.has_theme_file
18
+ template?.source === TEMPLATE_ORIGINS.custom &&
19
+ ( Boolean( template?.plugin ) || template?.has_theme_file )
19
20
  );
20
21
  /* eslint-enable camelcase */
21
22
  }