@wordpress/edit-post 6.11.0 → 6.13.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.
Files changed (34) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/block-settings-menu/plugin-block-settings-menu-item.js +1 -7
  3. package/build/components/block-settings-menu/plugin-block-settings-menu-item.js.map +1 -1
  4. package/build/components/header/header-toolbar/index.js +2 -1
  5. package/build/components/header/header-toolbar/index.js.map +1 -1
  6. package/build/components/header/template-title/delete-template.js +1 -1
  7. package/build/components/header/template-title/delete-template.js.map +1 -1
  8. package/build/components/sidebar/post-template/form.js +9 -4
  9. package/build/components/sidebar/post-template/form.js.map +1 -1
  10. package/build/components/sidebar/post-template/index.js +11 -13
  11. package/build/components/sidebar/post-template/index.js.map +1 -1
  12. package/build/components/visual-editor/index.js +19 -8
  13. package/build/components/visual-editor/index.js.map +1 -1
  14. package/build-module/components/block-settings-menu/plugin-block-settings-menu-item.js +1 -6
  15. package/build-module/components/block-settings-menu/plugin-block-settings-menu-item.js.map +1 -1
  16. package/build-module/components/header/header-toolbar/index.js +2 -1
  17. package/build-module/components/header/header-toolbar/index.js.map +1 -1
  18. package/build-module/components/header/template-title/delete-template.js +1 -1
  19. package/build-module/components/header/template-title/delete-template.js.map +1 -1
  20. package/build-module/components/sidebar/post-template/form.js +9 -4
  21. package/build-module/components/sidebar/post-template/form.js.map +1 -1
  22. package/build-module/components/sidebar/post-template/index.js +10 -13
  23. package/build-module/components/sidebar/post-template/index.js.map +1 -1
  24. package/build-module/components/visual-editor/index.js +20 -9
  25. package/build-module/components/visual-editor/index.js.map +1 -1
  26. package/package.json +27 -27
  27. package/src/components/block-settings-menu/plugin-block-settings-menu-item.js +1 -6
  28. package/src/components/header/header-toolbar/index.js +1 -0
  29. package/src/components/header/template-title/delete-template.js +1 -1
  30. package/src/components/preferences-modal/options/test/__snapshots__/enable-custom-fields.js.snap +28 -0
  31. package/src/components/sidebar/post-template/form.js +13 -16
  32. package/src/components/sidebar/post-template/index.js +7 -8
  33. package/src/components/visual-editor/index.js +31 -25
  34. package/src/test/editor.native.js +3 -1
@@ -25,29 +25,26 @@ export default function PostTemplateForm( { onClose } ) {
25
25
  canCreate,
26
26
  canEdit,
27
27
  } = useSelect( ( select ) => {
28
+ const { canUser, getEntityRecord, getEntityRecords } =
29
+ select( coreStore );
28
30
  const editorSettings = select( editorStore ).getEditorSettings();
29
- const siteSettings = select( coreStore ).getEntityRecord(
30
- 'root',
31
- 'site'
32
- );
31
+ const siteSettings = canUser( 'read', 'settings' )
32
+ ? getEntityRecord( 'root', 'site' )
33
+ : undefined;
33
34
  const _isPostsPage =
34
35
  select( editorStore ).getCurrentPostId() ===
35
36
  siteSettings?.page_for_posts;
36
- const canCreateTemplates = select( coreStore ).canUser(
37
- 'create',
38
- 'templates'
39
- );
37
+ const canCreateTemplates = canUser( 'create', 'templates' );
38
+
40
39
  return {
41
40
  isPostsPage: _isPostsPage,
42
41
  availableTemplates: editorSettings.availableTemplates,
43
- fetchedTemplates: select( coreStore ).getEntityRecords(
44
- 'postType',
45
- 'wp_template',
46
- {
47
- post_type: select( editorStore ).getCurrentPostType(),
48
- per_page: -1,
49
- }
50
- ),
42
+ fetchedTemplates: canCreateTemplates
43
+ ? getEntityRecords( 'postType', 'wp_template', {
44
+ post_type: select( editorStore ).getCurrentPostType(),
45
+ per_page: -1,
46
+ } )
47
+ : undefined,
51
48
  selectedTemplateSlug:
52
49
  select( editorStore ).getEditedPostAttribute( 'template' ),
53
50
  canCreate:
@@ -12,6 +12,7 @@ import { store as coreStore } from '@wordpress/core-data';
12
12
  * Internal dependencies
13
13
  */
14
14
  import PostTemplateForm from './form';
15
+ import { store as editPostStore } from '../../../store';
15
16
 
16
17
  export default function PostTemplate() {
17
18
  const anchorRef = useRef();
@@ -72,16 +73,14 @@ function PostTemplateToggle( { isOpen, onClick } ) {
72
73
  const templateSlug =
73
74
  select( editorStore ).getEditedPostAttribute( 'template' );
74
75
 
75
- const settings = select( editorStore ).getEditorSettings();
76
- if ( settings.availableTemplates[ templateSlug ] ) {
77
- return settings.availableTemplates[ templateSlug ];
76
+ const { supportsTemplateMode, availableTemplates } =
77
+ select( editorStore ).getEditorSettings();
78
+ if ( ! supportsTemplateMode && availableTemplates[ templateSlug ] ) {
79
+ return availableTemplates[ templateSlug ];
78
80
  }
79
81
 
80
- const template = select( coreStore )
81
- .getEntityRecords( 'postType', 'wp_template', { per_page: -1 } )
82
- ?.find( ( { slug } ) => slug === templateSlug );
83
-
84
- return template?.title.rendered;
82
+ const template = select( editPostStore ).getEditedPostTemplate();
83
+ return template?.title ?? template?.slug;
85
84
  }, [] );
86
85
 
87
86
  return (
@@ -27,7 +27,7 @@ import {
27
27
  __experimentalLayoutStyle as LayoutStyle,
28
28
  __unstableUseMouseMoveTypingReset as useMouseMoveTypingReset,
29
29
  __unstableIframe as Iframe,
30
- __experimentalUseNoRecursiveRenders as useNoRecursiveRenders,
30
+ __experimentalRecursionProvider as RecursionProvider,
31
31
  } from '@wordpress/block-editor';
32
32
  import { useEffect, useRef, useMemo } from '@wordpress/element';
33
33
  import { Button, __unstableMotion as motion } from '@wordpress/components';
@@ -118,13 +118,15 @@ export default function VisualEditor( { styles } ) {
118
118
  ( select ) => select( editPostStore ).hasMetaBoxes(),
119
119
  []
120
120
  );
121
- const { themeSupportsLayout, assets } = useSelect( ( select ) => {
122
- const _settings = select( blockEditorStore ).getSettings();
123
- return {
124
- themeSupportsLayout: _settings.supportsLayout,
125
- assets: _settings.__unstableResolvedAssets,
126
- };
127
- }, [] );
121
+ const { themeHasDisabledLayoutStyles, themeSupportsLayout, assets } =
122
+ useSelect( ( select ) => {
123
+ const _settings = select( blockEditorStore ).getSettings();
124
+ return {
125
+ themeHasDisabledLayoutStyles: _settings.disableLayoutStyles,
126
+ themeSupportsLayout: _settings.supportsLayout,
127
+ assets: _settings.__unstableResolvedAssets,
128
+ };
129
+ }, [] );
128
130
  const { clearSelectedBlock } = useDispatch( blockEditorStore );
129
131
  const { setIsEditingTemplate } = useDispatch( editPostStore );
130
132
  const desktopCanvasStyles = {
@@ -173,21 +175,18 @@ export default function VisualEditor( { styles } ) {
173
175
 
174
176
  const blockSelectionClearerRef = useBlockSelectionClearer();
175
177
 
176
- const [ , RecursionProvider ] = useNoRecursiveRenders(
177
- wrapperUniqueId,
178
- wrapperBlockName
179
- );
180
-
181
178
  const layout = useMemo( () => {
182
179
  if ( isTemplateMode ) {
183
180
  return { type: 'default' };
184
181
  }
185
182
 
186
183
  if ( themeSupportsLayout ) {
187
- return defaultLayout;
184
+ // We need to ensure support for wide and full alignments,
185
+ // so we add the constrained type.
186
+ return { ...defaultLayout, type: 'constrained' };
188
187
  }
189
-
190
- return undefined;
188
+ // Set constrained layout for classic themes so all alignments are supported.
189
+ return { type: 'constrained' };
191
190
  }, [ isTemplateMode, themeSupportsLayout, defaultLayout ] );
192
191
 
193
192
  const titleRef = useRef();
@@ -241,13 +240,17 @@ export default function VisualEditor( { styles } ) {
241
240
  assets={ assets }
242
241
  style={ { paddingBottom } }
243
242
  >
244
- { themeSupportsLayout && ! isTemplateMode && (
245
- <LayoutStyle
246
- selector=".edit-post-visual-editor__post-title-wrapper, .block-editor-block-list__layout.is-root-container"
247
- layout={ defaultLayout }
248
- layoutDefinitions={ defaultLayout?.definitions }
249
- />
250
- ) }
243
+ { themeSupportsLayout &&
244
+ ! themeHasDisabledLayoutStyles &&
245
+ ! isTemplateMode && (
246
+ <LayoutStyle
247
+ selector=".edit-post-visual-editor__post-title-wrapper, .block-editor-block-list__layout.is-root-container"
248
+ layout={ layout }
249
+ layoutDefinitions={
250
+ defaultLayout?.definitions
251
+ }
252
+ />
253
+ ) }
251
254
  { ! isTemplateMode && (
252
255
  <div
253
256
  className="edit-post-visual-editor__post-title-wrapper"
@@ -256,12 +259,15 @@ export default function VisualEditor( { styles } ) {
256
259
  <PostTitle ref={ titleRef } />
257
260
  </div>
258
261
  ) }
259
- <RecursionProvider>
262
+ <RecursionProvider
263
+ blockName={ wrapperBlockName }
264
+ uniqueId={ wrapperUniqueId }
265
+ >
260
266
  <BlockList
261
267
  className={
262
268
  isTemplateMode
263
269
  ? 'wp-site-blocks'
264
- : 'is-layout-flow' // Ensure root level blocks receive default/flow blockGap styling rules.
270
+ : 'is-layout-constrained' // Ensure root level blocks receive default/flow blockGap styling rules.
265
271
  }
266
272
  __experimentalLayout={ layout }
267
273
  />
@@ -35,7 +35,9 @@ afterAll( () => {
35
35
  } );
36
36
 
37
37
  describe( 'Editor', () => {
38
- beforeAll( registerCoreBlocks );
38
+ beforeAll( () => {
39
+ registerCoreBlocks();
40
+ } );
39
41
 
40
42
  it( 'detects unsupported block and sends hasUnsupportedBlocks true to native', () => {
41
43
  RNReactNativeGutenbergBridge.editorDidMount = jest.fn();