@wordpress/block-library 9.19.5 → 9.19.6

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 (47) hide show
  1. package/build/details/edit.js +28 -8
  2. package/build/details/edit.js.map +1 -1
  3. package/build/embed/variations.js +0 -10
  4. package/build/embed/variations.js.map +1 -1
  5. package/build/image/edit.js +0 -6
  6. package/build/image/edit.js.map +1 -1
  7. package/build/navigation-link/edit.js +27 -8
  8. package/build/navigation-link/edit.js.map +1 -1
  9. package/build/post-template/edit.js +5 -3
  10. package/build/post-template/edit.js.map +1 -1
  11. package/build/query/edit/inspector-controls/index.js +30 -19
  12. package/build/query/edit/inspector-controls/index.js.map +1 -1
  13. package/build/query/edit/query-content.js +1 -6
  14. package/build/query/edit/query-content.js.map +1 -1
  15. package/build-module/details/edit.js +30 -10
  16. package/build-module/details/edit.js.map +1 -1
  17. package/build-module/embed/variations.js +0 -10
  18. package/build-module/embed/variations.js.map +1 -1
  19. package/build-module/image/edit.js +0 -6
  20. package/build-module/image/edit.js.map +1 -1
  21. package/build-module/navigation-link/edit.js +28 -9
  22. package/build-module/navigation-link/edit.js.map +1 -1
  23. package/build-module/post-template/edit.js +5 -3
  24. package/build-module/post-template/edit.js.map +1 -1
  25. package/build-module/query/edit/inspector-controls/index.js +31 -20
  26. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  27. package/build-module/query/edit/query-content.js +1 -6
  28. package/build-module/query/edit/query-content.js.map +1 -1
  29. package/build-style/button/style-rtl.css +0 -1
  30. package/build-style/button/style.css +0 -1
  31. package/build-style/buttons/style-rtl.css +3 -0
  32. package/build-style/buttons/style.css +3 -0
  33. package/build-style/post-comments-form/style-rtl.css +0 -3
  34. package/build-style/post-comments-form/style.css +0 -3
  35. package/build-style/style-rtl.css +3 -4
  36. package/build-style/style.css +3 -4
  37. package/package.json +18 -18
  38. package/src/button/style.scss +0 -1
  39. package/src/buttons/style.scss +5 -0
  40. package/src/details/edit.js +38 -8
  41. package/src/embed/variations.js +0 -8
  42. package/src/image/edit.js +0 -4
  43. package/src/navigation-link/edit.js +45 -11
  44. package/src/post-comments-form/style.scss +0 -5
  45. package/src/post-template/edit.js +4 -3
  46. package/src/query/edit/inspector-controls/index.js +50 -34
  47. package/src/query/edit/query-content.js +2 -8
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","useDispatch","useInstanceId","useEffect","useCallback","BlockControls","InspectorControls","useBlockProps","store","blockEditorStore","useInnerBlocksProps","SelectControl","__","coreStore","EnhancedPaginationControl","QueryInspectorControls","EnhancedPaginationModal","getQueryContextFromTemplate","QueryToolbar","htmlElementMessages","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DEFAULTS_POSTS_PER_PAGE","TEMPLATE","QueryContent","attributes","setAttributes","clientId","context","name","queryId","query","displayLayout","enhancedPagination","tagName","TagName","inherit","templateSlug","isSingular","__unstableMarkNextChangeAsNotPersistent","instanceId","blockProps","innerBlocksProps","template","postsPerPage","select","getSettings","getEntityRecord","getEntityRecordEdits","canUser","settingPerPage","kind","posts_per_page","editedSettingPerPage","updateQuery","newQuery","perPage","Object","keys","length","Number","isFinite","updateDisplayLayout","newDisplayLayout","children","setQuery","setDisplayLayout","group","__nextHasNoMarginBottom","__next40pxDefaultSize","label","options","value","onChange","help"],"sources":["@wordpress/block-library/src/query/edit/query-content.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useEffect, useCallback } from '@wordpress/element';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tuseInnerBlocksProps,\n} from '@wordpress/block-editor';\nimport { SelectControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport EnhancedPaginationControl from './inspector-controls/enhanced-pagination-control';\nimport QueryInspectorControls from './inspector-controls';\nimport EnhancedPaginationModal from './enhanced-pagination-modal';\nimport { getQueryContextFromTemplate } from '../utils';\nimport QueryToolbar from './query-toolbar';\nimport { htmlElementMessages } from '../../utils/messages';\n\nconst DEFAULTS_POSTS_PER_PAGE = 3;\n\nconst TEMPLATE = [ [ 'core/post-template' ] ];\nexport default function QueryContent( {\n\tattributes,\n\tsetAttributes,\n\tclientId,\n\tcontext,\n\tname,\n} ) {\n\tconst {\n\t\tqueryId,\n\t\tquery,\n\t\tdisplayLayout,\n\t\tenhancedPagination,\n\t\ttagName: TagName = 'div',\n\t\tquery: { inherit } = {},\n\t} = attributes;\n\tconst { templateSlug } = context;\n\tconst { isSingular } = getQueryContextFromTemplate( templateSlug );\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\tconst instanceId = useInstanceId( QueryContent );\n\tconst blockProps = useBlockProps();\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: TEMPLATE,\n\t} );\n\tconst { postsPerPage } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst { getEntityRecord, getEntityRecordEdits, canUser } =\n\t\t\tselect( coreStore );\n\t\tconst settingPerPage = canUser( 'read', {\n\t\t\tkind: 'root',\n\t\t\tname: 'site',\n\t\t} )\n\t\t\t? +getEntityRecord( 'root', 'site' )?.posts_per_page\n\t\t\t: +getSettings().postsPerPage;\n\n\t\t// Gets changes made via the template area posts per page setting. These won't be saved\n\t\t// until the page is saved, but we should reflect this setting within the query loops\n\t\t// that inherit it.\n\t\tconst editedSettingPerPage = +getEntityRecordEdits( 'root', 'site' )\n\t\t\t?.posts_per_page;\n\n\t\treturn {\n\t\t\tpostsPerPage:\n\t\t\t\teditedSettingPerPage ||\n\t\t\t\tsettingPerPage ||\n\t\t\t\tDEFAULTS_POSTS_PER_PAGE,\n\t\t};\n\t}, [] );\n\t// There are some effects running where some initialization logic is\n\t// happening and setting some values to some attributes (ex. queryId).\n\t// These updates can cause an `undo trap` where undoing will result in\n\t// resetting again, so we need to mark these changes as not persistent\n\t// with `__unstableMarkNextChangeAsNotPersistent`.\n\n\t// Changes in query property (which is an object) need to be in the same callback,\n\t// because updates are batched after the render and changes in different query properties\n\t// would cause to override previous wanted changes.\n\tconst updateQuery = useCallback(\n\t\t( newQuery ) => setAttributes( { query: { ...query, ...newQuery } } ),\n\t\t[ query, setAttributes ]\n\t);\n\tuseEffect( () => {\n\t\tconst newQuery = {};\n\t\t// When we inherit from global query always need to set the `perPage`\n\t\t// based on the reading settings.\n\t\tif ( inherit && query.perPage !== postsPerPage ) {\n\t\t\tnewQuery.perPage = postsPerPage;\n\t\t} else if ( ! query.perPage && postsPerPage ) {\n\t\t\tnewQuery.perPage = postsPerPage;\n\t\t}\n\t\t// We need to reset the `inherit` value if in a singular template, as queries\n\t\t// are not inherited when in singular content (e.g. post, page, 404, blank).\n\t\tif ( isSingular && query.inherit ) {\n\t\t\tnewQuery.inherit = false;\n\t\t}\n\t\tif ( !! Object.keys( newQuery ).length ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tupdateQuery( newQuery );\n\t\t}\n\t}, [\n\t\tquery.perPage,\n\t\tquery.inherit,\n\t\tpostsPerPage,\n\t\tinherit,\n\t\tisSingular,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tupdateQuery,\n\t] );\n\t// We need this for multi-query block pagination.\n\t// Query parameters for each block are scoped to their ID.\n\tuseEffect( () => {\n\t\tif ( ! Number.isFinite( queryId ) ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( { queryId: instanceId } );\n\t\t}\n\t}, [\n\t\tqueryId,\n\t\tinstanceId,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tsetAttributes,\n\t] );\n\tconst updateDisplayLayout = ( newDisplayLayout ) =>\n\t\tsetAttributes( {\n\t\t\tdisplayLayout: { ...displayLayout, ...newDisplayLayout },\n\t\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<EnhancedPaginationModal\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tclientId={ clientId }\n\t\t\t/>\n\t\t\t<InspectorControls>\n\t\t\t\t<QueryInspectorControls\n\t\t\t\t\tname={ name }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetQuery={ updateQuery }\n\t\t\t\t\tsetDisplayLayout={ updateDisplayLayout }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tisSingular={ isSingular }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls>\n\t\t\t\t<QueryToolbar attributes={ attributes } clientId={ clientId } />\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<SelectControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ __( 'HTML element' ) }\n\t\t\t\t\toptions={ [\n\t\t\t\t\t\t{ label: __( 'Default (<div>)' ), value: 'div' },\n\t\t\t\t\t\t{ label: '<main>', value: 'main' },\n\t\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t\t{ label: '<aside>', value: 'aside' },\n\t\t\t\t\t] }\n\t\t\t\t\tvalue={ TagName }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { tagName: value } )\n\t\t\t\t\t}\n\t\t\t\t\thelp={ htmlElementMessages[ TagName ] }\n\t\t\t\t/>\n\t\t\t\t<EnhancedPaginationControl\n\t\t\t\t\tenhancedPagination={ enhancedPagination }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<TagName { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useSelect","useDispatch","useInstanceId","useEffect","useCallback","BlockControls","InspectorControls","useBlockProps","store","blockEditorStore","useInnerBlocksProps","SelectControl","__","coreStore","EnhancedPaginationControl","QueryInspectorControls","EnhancedPaginationModal","getQueryContextFromTemplate","QueryToolbar","htmlElementMessages","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DEFAULTS_POSTS_PER_PAGE","TEMPLATE","QueryContent","attributes","setAttributes","clientId","context","name","queryId","query","displayLayout","enhancedPagination","tagName","TagName","inherit","templateSlug","isSingular","__unstableMarkNextChangeAsNotPersistent","instanceId","blockProps","innerBlocksProps","template","postsPerPage","select","getSettings","getEntityRecord","getEntityRecordEdits","canUser","settingPerPage","kind","posts_per_page","editedSettingPerPage","updateQuery","newQuery","perPage","Object","keys","length","Number","isFinite","updateDisplayLayout","newDisplayLayout","children","setQuery","setDisplayLayout","group","__nextHasNoMarginBottom","__next40pxDefaultSize","label","options","value","onChange","help"],"sources":["@wordpress/block-library/src/query/edit/query-content.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useEffect, useCallback } from '@wordpress/element';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tuseInnerBlocksProps,\n} from '@wordpress/block-editor';\nimport { SelectControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport EnhancedPaginationControl from './inspector-controls/enhanced-pagination-control';\nimport QueryInspectorControls from './inspector-controls';\nimport EnhancedPaginationModal from './enhanced-pagination-modal';\nimport { getQueryContextFromTemplate } from '../utils';\nimport QueryToolbar from './query-toolbar';\nimport { htmlElementMessages } from '../../utils/messages';\n\nconst DEFAULTS_POSTS_PER_PAGE = 3;\n\nconst TEMPLATE = [ [ 'core/post-template' ] ];\nexport default function QueryContent( {\n\tattributes,\n\tsetAttributes,\n\tclientId,\n\tcontext,\n\tname,\n} ) {\n\tconst {\n\t\tqueryId,\n\t\tquery,\n\t\tdisplayLayout,\n\t\tenhancedPagination,\n\t\ttagName: TagName = 'div',\n\t\tquery: { inherit } = {},\n\t} = attributes;\n\tconst { templateSlug } = context;\n\tconst { isSingular } = getQueryContextFromTemplate( templateSlug );\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\tconst instanceId = useInstanceId( QueryContent );\n\tconst blockProps = useBlockProps();\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: TEMPLATE,\n\t} );\n\tconst { postsPerPage } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst { getEntityRecord, getEntityRecordEdits, canUser } =\n\t\t\tselect( coreStore );\n\t\tconst settingPerPage = canUser( 'read', {\n\t\t\tkind: 'root',\n\t\t\tname: 'site',\n\t\t} )\n\t\t\t? +getEntityRecord( 'root', 'site' )?.posts_per_page\n\t\t\t: +getSettings().postsPerPage;\n\n\t\t// Gets changes made via the template area posts per page setting. These won't be saved\n\t\t// until the page is saved, but we should reflect this setting within the query loops\n\t\t// that inherit it.\n\t\tconst editedSettingPerPage = +getEntityRecordEdits( 'root', 'site' )\n\t\t\t?.posts_per_page;\n\n\t\treturn {\n\t\t\tpostsPerPage:\n\t\t\t\teditedSettingPerPage ||\n\t\t\t\tsettingPerPage ||\n\t\t\t\tDEFAULTS_POSTS_PER_PAGE,\n\t\t};\n\t}, [] );\n\t// There are some effects running where some initialization logic is\n\t// happening and setting some values to some attributes (ex. queryId).\n\t// These updates can cause an `undo trap` where undoing will result in\n\t// resetting again, so we need to mark these changes as not persistent\n\t// with `__unstableMarkNextChangeAsNotPersistent`.\n\n\t// Changes in query property (which is an object) need to be in the same callback,\n\t// because updates are batched after the render and changes in different query properties\n\t// would cause to override previous wanted changes.\n\tconst updateQuery = useCallback(\n\t\t( newQuery ) => setAttributes( { query: { ...query, ...newQuery } } ),\n\t\t[ query, setAttributes ]\n\t);\n\tuseEffect( () => {\n\t\tconst newQuery = {};\n\t\t// When we inherit from global query always need to set the `perPage`\n\t\t// based on the reading settings.\n\t\tif ( inherit && query.perPage !== postsPerPage ) {\n\t\t\tnewQuery.perPage = postsPerPage;\n\t\t} else if ( ! query.perPage && postsPerPage ) {\n\t\t\tnewQuery.perPage = postsPerPage;\n\t\t}\n\n\t\tif ( !! Object.keys( newQuery ).length ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tupdateQuery( newQuery );\n\t\t}\n\t}, [\n\t\tquery.perPage,\n\t\tinherit,\n\t\tpostsPerPage,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tupdateQuery,\n\t] );\n\t// We need this for multi-query block pagination.\n\t// Query parameters for each block are scoped to their ID.\n\tuseEffect( () => {\n\t\tif ( ! Number.isFinite( queryId ) ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( { queryId: instanceId } );\n\t\t}\n\t}, [\n\t\tqueryId,\n\t\tinstanceId,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tsetAttributes,\n\t] );\n\tconst updateDisplayLayout = ( newDisplayLayout ) =>\n\t\tsetAttributes( {\n\t\t\tdisplayLayout: { ...displayLayout, ...newDisplayLayout },\n\t\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<EnhancedPaginationModal\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tclientId={ clientId }\n\t\t\t/>\n\t\t\t<InspectorControls>\n\t\t\t\t<QueryInspectorControls\n\t\t\t\t\tname={ name }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetQuery={ updateQuery }\n\t\t\t\t\tsetDisplayLayout={ updateDisplayLayout }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tisSingular={ isSingular }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls>\n\t\t\t\t<QueryToolbar attributes={ attributes } clientId={ clientId } />\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<SelectControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ __( 'HTML element' ) }\n\t\t\t\t\toptions={ [\n\t\t\t\t\t\t{ label: __( 'Default (<div>)' ), value: 'div' },\n\t\t\t\t\t\t{ label: '<main>', value: 'main' },\n\t\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t\t{ label: '<aside>', value: 'aside' },\n\t\t\t\t\t] }\n\t\t\t\t\tvalue={ TagName }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { tagName: value } )\n\t\t\t\t\t}\n\t\t\t\t\thelp={ htmlElementMessages[ TagName ] }\n\t\t\t\t/>\n\t\t\t\t<EnhancedPaginationControl\n\t\t\t\t\tenhancedPagination={ enhancedPagination }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<TagName { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -105,7 +105,6 @@
105
105
  word-break: break-word;
106
106
  box-sizing: border-box;
107
107
  height: 100%;
108
- width: 100%;
109
108
  align-content: center;
110
109
  }
111
110
  .wp-block-button__link.aligncenter {
@@ -105,7 +105,6 @@
105
105
  word-break: break-word;
106
106
  box-sizing: border-box;
107
107
  height: 100%;
108
- width: 100%;
109
108
  align-content: center;
110
109
  }
111
110
  .wp-block-button__link.aligncenter {
@@ -152,6 +152,9 @@
152
152
  .wp-block-buttons.has-custom-font-size .wp-block-button__link {
153
153
  font-size: inherit;
154
154
  }
155
+ .wp-block-buttons .wp-block-button__link {
156
+ width: 100%;
157
+ }
155
158
 
156
159
  .wp-block-button.aligncenter {
157
160
  text-align: center;
@@ -152,6 +152,9 @@
152
152
  .wp-block-buttons.has-custom-font-size .wp-block-button__link {
153
153
  font-size: inherit;
154
154
  }
155
+ .wp-block-buttons .wp-block-button__link {
156
+ width: 100%;
157
+ }
155
158
 
156
159
  .wp-block-button.aligncenter {
157
160
  text-align: center;
@@ -162,7 +162,4 @@
162
162
  .wp-block-post-comments-form .comment-reply-title :where(small) {
163
163
  font-size: var(--wp--preset--font-size--medium, smaller);
164
164
  margin-right: 0.5em;
165
- }
166
- .wp-block-post-comments-form input[type=submit] {
167
- width: auto;
168
165
  }
@@ -162,7 +162,4 @@
162
162
  .wp-block-post-comments-form .comment-reply-title :where(small) {
163
163
  font-size: var(--wp--preset--font-size--medium, smaller);
164
164
  margin-left: 0.5em;
165
- }
166
- .wp-block-post-comments-form input[type=submit] {
167
- width: auto;
168
165
  }
@@ -137,7 +137,6 @@
137
137
  word-break: break-word;
138
138
  box-sizing: border-box;
139
139
  height: 100%;
140
- width: 100%;
141
140
  align-content: center;
142
141
  }
143
142
  .wp-block-button__link.aligncenter {
@@ -270,6 +269,9 @@
270
269
  .wp-block-buttons.has-custom-font-size .wp-block-button__link {
271
270
  font-size: inherit;
272
271
  }
272
+ .wp-block-buttons .wp-block-button__link {
273
+ width: 100%;
274
+ }
273
275
 
274
276
  .wp-block-button.aligncenter {
275
277
  text-align: center;
@@ -2930,9 +2932,6 @@ p.has-text-align-left[style*="writing-mode:vertical-lr"] {
2930
2932
  font-size: var(--wp--preset--font-size--medium, smaller);
2931
2933
  margin-right: 0.5em;
2932
2934
  }
2933
- .wp-block-post-comments-form input[type=submit] {
2934
- width: auto;
2935
- }
2936
2935
 
2937
2936
  .wp-block-post-comments-count {
2938
2937
  box-sizing: border-box;
@@ -137,7 +137,6 @@
137
137
  word-break: break-word;
138
138
  box-sizing: border-box;
139
139
  height: 100%;
140
- width: 100%;
141
140
  align-content: center;
142
141
  }
143
142
  .wp-block-button__link.aligncenter {
@@ -271,6 +270,9 @@
271
270
  .wp-block-buttons.has-custom-font-size .wp-block-button__link {
272
271
  font-size: inherit;
273
272
  }
273
+ .wp-block-buttons .wp-block-button__link {
274
+ width: 100%;
275
+ }
274
276
 
275
277
  .wp-block-button.aligncenter {
276
278
  text-align: center;
@@ -2962,9 +2964,6 @@ p.has-text-align-left[style*="writing-mode:vertical-lr"] {
2962
2964
  font-size: var(--wp--preset--font-size--medium, smaller);
2963
2965
  margin-left: 0.5em;
2964
2966
  }
2965
- .wp-block-post-comments-form input[type=submit] {
2966
- width: auto;
2967
- }
2968
2967
 
2969
2968
  .wp-block-post-comments-count {
2970
2969
  box-sizing: border-box;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/block-library",
3
- "version": "9.19.5",
3
+ "version": "9.19.6",
4
4
  "description": "Block library for the WordPress editor.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -42,18 +42,18 @@
42
42
  "dependencies": {
43
43
  "@babel/runtime": "7.25.7",
44
44
  "@wordpress/a11y": "^4.19.1",
45
- "@wordpress/api-fetch": "^7.19.1",
45
+ "@wordpress/api-fetch": "^7.19.2",
46
46
  "@wordpress/autop": "^4.19.1",
47
47
  "@wordpress/blob": "^4.19.1",
48
- "@wordpress/block-editor": "^14.14.5",
49
- "@wordpress/blocks": "^14.8.1",
50
- "@wordpress/components": "^29.5.3",
51
- "@wordpress/compose": "^7.19.1",
52
- "@wordpress/core-data": "^7.19.5",
53
- "@wordpress/data": "^10.19.1",
48
+ "@wordpress/block-editor": "^14.14.6",
49
+ "@wordpress/blocks": "^14.8.2",
50
+ "@wordpress/components": "^29.5.4",
51
+ "@wordpress/compose": "^7.19.2",
52
+ "@wordpress/core-data": "^7.19.6",
53
+ "@wordpress/data": "^10.19.2",
54
54
  "@wordpress/date": "^5.19.1",
55
55
  "@wordpress/deprecated": "^4.19.1",
56
- "@wordpress/dom": "^4.19.1",
56
+ "@wordpress/dom": "^4.19.2",
57
57
  "@wordpress/element": "^6.19.1",
58
58
  "@wordpress/escape-html": "^3.19.1",
59
59
  "@wordpress/hooks": "^4.19.1",
@@ -62,17 +62,17 @@
62
62
  "@wordpress/icons": "^10.19.1",
63
63
  "@wordpress/interactivity": "^6.19.1",
64
64
  "@wordpress/interactivity-router": "^2.19.1",
65
- "@wordpress/keyboard-shortcuts": "^5.19.1",
65
+ "@wordpress/keyboard-shortcuts": "^5.19.2",
66
66
  "@wordpress/keycodes": "^4.19.1",
67
- "@wordpress/notices": "^5.19.1",
68
- "@wordpress/patterns": "^2.19.5",
67
+ "@wordpress/notices": "^5.19.2",
68
+ "@wordpress/patterns": "^2.19.6",
69
69
  "@wordpress/primitives": "^4.19.1",
70
70
  "@wordpress/private-apis": "^1.19.1",
71
- "@wordpress/reusable-blocks": "^5.19.5",
72
- "@wordpress/rich-text": "^7.19.1",
73
- "@wordpress/server-side-render": "^5.19.3",
74
- "@wordpress/url": "^4.19.1",
75
- "@wordpress/viewport": "^6.19.1",
71
+ "@wordpress/reusable-blocks": "^5.19.6",
72
+ "@wordpress/rich-text": "^7.19.2",
73
+ "@wordpress/server-side-render": "^5.19.4",
74
+ "@wordpress/url": "^4.19.2",
75
+ "@wordpress/viewport": "^6.19.2",
76
76
  "@wordpress/wordcount": "^4.19.1",
77
77
  "change-case": "^4.1.2",
78
78
  "clsx": "^2.1.1",
@@ -91,5 +91,5 @@
91
91
  "publishConfig": {
92
92
  "access": "public"
93
93
  },
94
- "gitHead": "5bd48f228266e2f6557b29eae70b32e17f8c5f01"
94
+ "gitHead": "018f5b628fb5006dd45a1b7cd63463c73bd9d641"
95
95
  }
@@ -10,7 +10,6 @@ $blocks-block__margin: 0.5em;
10
10
  word-break: break-word; // overflow-wrap doesn't work well if a link is wrapped in the div, so use word-break here.
11
11
  box-sizing: border-box;
12
12
  height: 100%;
13
- width: 100%;
14
13
  align-content: center;
15
14
 
16
15
  &.aligncenter {
@@ -82,6 +82,11 @@ $blocks-block__margin: 0.5em;
82
82
  font-size: inherit;
83
83
  }
84
84
  }
85
+
86
+ // Needed to make the buttons stretch correctly in a vertical layout.
87
+ .wp-block-button__link {
88
+ width: 100%;
89
+ }
85
90
  }
86
91
 
87
92
  // Legacy buttons that did not come in a wrapping container.
@@ -6,20 +6,26 @@ import {
6
6
  useBlockProps,
7
7
  useInnerBlocksProps,
8
8
  InspectorControls,
9
+ store as blockEditorStore,
9
10
  } from '@wordpress/block-editor';
10
11
  import {
11
12
  TextControl,
12
13
  ToggleControl,
13
14
  __experimentalToolsPanel as ToolsPanel,
14
15
  __experimentalToolsPanelItem as ToolsPanelItem,
16
+ privateApis as componentsPrivateApis,
15
17
  } from '@wordpress/components';
16
18
  import { __ } from '@wordpress/i18n';
17
19
  import { useState } from '@wordpress/element';
20
+ import { useSelect } from '@wordpress/data';
18
21
 
19
22
  /**
20
23
  * Internal dependencies
21
24
  */
22
25
  import { useToolsPanelDropdownMenuProps } from '../utils/hooks';
26
+ import { unlock } from '../lock-unlock';
27
+
28
+ const { withIgnoreIMEEvents } = unlock( componentsPrivateApis );
23
29
 
24
30
  const TEMPLATE = [
25
31
  [
@@ -30,7 +36,7 @@ const TEMPLATE = [
30
36
  ],
31
37
  ];
32
38
 
33
- function DetailsEdit( { attributes, setAttributes } ) {
39
+ function DetailsEdit( { attributes, setAttributes, clientId } ) {
34
40
  const { name, showContent, summary, allowedBlocks, placeholder } =
35
41
  attributes;
36
42
  const blockProps = useBlockProps();
@@ -42,6 +48,27 @@ function DetailsEdit( { attributes, setAttributes } ) {
42
48
  const [ isOpen, setIsOpen ] = useState( showContent );
43
49
  const dropdownMenuProps = useToolsPanelDropdownMenuProps();
44
50
 
51
+ // Check if the inner blocks are selected.
52
+ const hasSelectedInnerBlock = useSelect(
53
+ ( select ) =>
54
+ select( blockEditorStore ).hasSelectedInnerBlock( clientId, true ),
55
+ [ clientId ]
56
+ );
57
+
58
+ const handleSummaryKeyDown = ( event ) => {
59
+ if ( event.key === 'Enter' && ! event.shiftKey ) {
60
+ setIsOpen( ( prevIsOpen ) => ! prevIsOpen );
61
+ event.preventDefault();
62
+ }
63
+ };
64
+
65
+ // Prevent spacebar from toggling <details> while typing.
66
+ const handleSummaryKeyUp = ( event ) => {
67
+ if ( event.key === ' ' ) {
68
+ event.preventDefault();
69
+ }
70
+ };
71
+
45
72
  return (
46
73
  <>
47
74
  <InspectorControls>
@@ -91,18 +118,21 @@ function DetailsEdit( { attributes, setAttributes } ) {
91
118
  ) }
92
119
  />
93
120
  </InspectorControls>
94
- <details { ...innerBlocksProps } open={ isOpen }>
121
+ <details
122
+ { ...innerBlocksProps }
123
+ open={ isOpen || hasSelectedInnerBlock }
124
+ onToggle={ ( event ) => setIsOpen( event.target.open ) }
125
+ >
95
126
  <summary
96
- onClick={ ( event ) => {
97
- event.preventDefault();
98
- setIsOpen( ! isOpen );
99
- } }
127
+ onKeyDown={ withIgnoreIMEEvents( handleSummaryKeyDown ) }
128
+ onKeyUp={ handleSummaryKeyUp }
100
129
  >
101
130
  <RichText
102
131
  identifier="summary"
103
- aria-label={ __( 'Write summary' ) }
132
+ aria-label={ __(
133
+ 'Write summary. Press Enter to expand or collapse the details.'
134
+ ) }
104
135
  placeholder={ placeholder || __( 'Write summary…' ) }
105
- allowedFormats={ [] }
106
136
  withoutInteractiveFormatting
107
137
  value={ summary }
108
138
  onChange={ ( newSummary ) =>
@@ -251,14 +251,6 @@ const variations = [
251
251
  patterns: [ /^https?:\/\/(www\.)?reverbnation\.com\/.+/i ],
252
252
  attributes: { providerNameSlug: 'reverbnation', responsive: true },
253
253
  },
254
- {
255
- name: 'screencast',
256
- title: getTitle( 'Screencast' ),
257
- icon: embedVideoIcon,
258
- description: __( 'Embed Screencast content.' ),
259
- patterns: [ /^https?:\/\/(www\.)?screencast\.com\/.+/i ],
260
- attributes: { providerNameSlug: 'screencast', responsive: true },
261
- },
262
254
  {
263
255
  name: 'scribd',
264
256
  title: getTitle( 'Scribd' ),
package/src/image/edit.js CHANGED
@@ -262,10 +262,6 @@ export function ImageEdit( {
262
262
  additionalAttributes = {
263
263
  sizeSlug: newSize,
264
264
  };
265
- } else {
266
- // Keep the same url when selecting the same file, so "Resolution"
267
- // option is not changed.
268
- additionalAttributes = { url };
269
265
  }
270
266
 
271
267
  // Check if default link setting should be used.
@@ -26,6 +26,7 @@ import {
26
26
  store as blockEditorStore,
27
27
  getColorClassName,
28
28
  useInnerBlocksProps,
29
+ useBlockEditingMode,
29
30
  } from '@wordpress/block-editor';
30
31
  import { isURL, prependHTTP, safeDecodeURI } from '@wordpress/url';
31
32
  import { useState, useEffect, useRef } from '@wordpress/element';
@@ -43,6 +44,10 @@ import { updateAttributes } from './update-attributes';
43
44
  import { getColors } from '../navigation/edit/utils';
44
45
 
45
46
  const DEFAULT_BLOCK = { name: 'core/navigation-link' };
47
+ const NESTING_BLOCK_NAMES = [
48
+ 'core/navigation-link',
49
+ 'core/navigation-submenu',
50
+ ];
46
51
 
47
52
  /**
48
53
  * A React hook to determine if it's dragging within the target element.
@@ -95,19 +100,29 @@ const useIsDraggingWithin = ( elementRef ) => {
95
100
  return isDraggingWithin;
96
101
  };
97
102
 
98
- const useIsInvalidLink = ( kind, type, id ) => {
103
+ const useIsInvalidLink = ( kind, type, id, enabled ) => {
99
104
  const isPostType =
100
105
  kind === 'post-type' || type === 'post' || type === 'page';
101
106
  const hasId = Number.isInteger( id );
107
+ const blockEditingMode = useBlockEditingMode();
108
+
102
109
  const postStatus = useSelect(
103
110
  ( select ) => {
104
111
  if ( ! isPostType ) {
105
112
  return null;
106
113
  }
114
+
115
+ // Fetching the posts status is an "expensive" operation. Especially for sites with large navigations.
116
+ // When the block is rendered in a template or other disabled contexts we can skip this check in order
117
+ // to avoid all these additional requests that don't really add any value in that mode.
118
+ if ( blockEditingMode === 'disabled' || ! enabled ) {
119
+ return null;
120
+ }
121
+
107
122
  const { getEntityRecord } = select( coreStore );
108
123
  return getEntityRecord( 'postType', type, id )?.status;
109
124
  },
110
- [ isPostType, type, id ]
125
+ [ isPostType, blockEditingMode, enabled, type, id ]
111
126
  );
112
127
 
113
128
  // Check Navigation Link validity if:
@@ -280,8 +295,6 @@ export default function NavigationLinkEdit( {
280
295
  clientId,
281
296
  } ) {
282
297
  const { id, label, type, url, description, kind } = attributes;
283
-
284
- const [ isInvalid, isDraft ] = useIsInvalidLink( kind, type, id );
285
298
  const { maxNestingLevel } = context;
286
299
 
287
300
  const {
@@ -313,6 +326,7 @@ export default function NavigationLinkEdit( {
313
326
  isTopLevelLink,
314
327
  isParentOfSelectedBlock,
315
328
  hasChildren,
329
+ validateLinkStatus,
316
330
  } = useSelect(
317
331
  ( select ) => {
318
332
  const {
@@ -321,28 +335,48 @@ export default function NavigationLinkEdit( {
321
335
  getBlockRootClientId,
322
336
  hasSelectedInnerBlock,
323
337
  getBlockParentsByBlockName,
338
+ getSelectedBlockClientId,
324
339
  } = select( blockEditorStore );
340
+ const rootClientId = getBlockRootClientId( clientId );
341
+ const isTopLevel =
342
+ getBlockName( rootClientId ) === 'core/navigation';
343
+ const selectedBlockClientId = getSelectedBlockClientId();
344
+ const rootNavigationClientId = isTopLevel
345
+ ? rootClientId
346
+ : getBlockParentsByBlockName(
347
+ clientId,
348
+ 'core/navigation'
349
+ )[ 0 ];
350
+
351
+ // Enable when the root Navigation block is selected or any of its inner blocks.
352
+ const enableLinkStatusValidation =
353
+ selectedBlockClientId === rootNavigationClientId ||
354
+ hasSelectedInnerBlock( rootNavigationClientId, true );
325
355
 
326
356
  return {
327
357
  isAtMaxNesting:
328
- getBlockParentsByBlockName( clientId, [
329
- 'core/navigation-link',
330
- 'core/navigation-submenu',
331
- ] ).length >= maxNestingLevel,
332
- isTopLevelLink:
333
- getBlockName( getBlockRootClientId( clientId ) ) ===
334
- 'core/navigation',
358
+ getBlockParentsByBlockName( clientId, NESTING_BLOCK_NAMES )
359
+ .length >= maxNestingLevel,
360
+ isTopLevelLink: isTopLevel,
335
361
  isParentOfSelectedBlock: hasSelectedInnerBlock(
336
362
  clientId,
337
363
  true
338
364
  ),
339
365
  hasChildren: !! getBlockCount( clientId ),
366
+ validateLinkStatus: enableLinkStatusValidation,
340
367
  };
341
368
  },
342
369
  [ clientId, maxNestingLevel ]
343
370
  );
344
371
  const { getBlocks } = useSelect( blockEditorStore );
345
372
 
373
+ const [ isInvalid, isDraft ] = useIsInvalidLink(
374
+ kind,
375
+ type,
376
+ id,
377
+ validateLinkStatus
378
+ );
379
+
346
380
  /**
347
381
  * Transform to submenu block.
348
382
  */
@@ -82,9 +82,4 @@
82
82
  margin-left: 0.5em;
83
83
  }
84
84
  }
85
-
86
- // Override the 100% width derived from the Button block
87
- input[type="submit"] {
88
- width: auto;
89
- }
90
85
  }
@@ -181,14 +181,15 @@ export default function PostTemplateEdit( {
181
181
  * Handle cases where sticky is set to `exclude` or `only`.
182
182
  * Which works as a `post__in/post__not_in` query for sticky posts.
183
183
  */
184
- if ( sticky && sticky !== 'ignore' ) {
184
+ if ( [ 'exclude', 'only' ].includes( sticky ) ) {
185
185
  query.sticky = sticky === 'only';
186
186
  }
187
187
 
188
- if ( sticky === 'ignore' ) {
188
+ // Empty string represents the default behavior of including sticky posts.
189
+ if ( [ '', 'ignore' ].includes( sticky ) ) {
189
190
  // Remove any leftover sticky query parameter.
190
191
  delete query.sticky;
191
- query.ignore_sticky = true;
192
+ query.ignore_sticky = sticky === 'ignore';
192
193
  }
193
194
 
194
195
  // If `inherit` is truthy, adjust conditionally the query to create a better preview.
@@ -5,11 +5,12 @@ import {
5
5
  TextControl,
6
6
  SelectControl,
7
7
  RangeControl,
8
- __experimentalToggleGroupControl as ToggleGroupControl,
9
- __experimentalToggleGroupControlOption as ToggleGroupControlOption,
10
8
  Notice,
9
+ __experimentalVStack as VStack,
11
10
  __experimentalToolsPanel as ToolsPanel,
12
11
  __experimentalToolsPanelItem as ToolsPanelItem,
12
+ __experimentalToggleGroupControl as ToggleGroupControl,
13
+ __experimentalToggleGroupControlOption as ToggleGroupControlOption,
13
14
  } from '@wordpress/components';
14
15
  import { useSelect } from '@wordpress/data';
15
16
  import { store as coreStore } from '@wordpress/core-data';
@@ -113,8 +114,7 @@ export default function QueryInspectorControls( props ) {
113
114
  }, [ querySearch, onChangeDebounced ] );
114
115
 
115
116
  const orderByOptions = useOrderByOptions( postType );
116
- const showInheritControl =
117
- ! isSingular && isControlAllowed( allowedControls, 'inherit' );
117
+ const showInheritControl = isControlAllowed( allowedControls, 'inherit' );
118
118
  const showPostTypeControl =
119
119
  ! inherit && isControlAllowed( allowedControls, 'postType' );
120
120
  const postTypeControlLabel = __( 'Post type' );
@@ -185,6 +185,10 @@ export default function QueryInspectorControls( props ) {
185
185
  const showDisplayPanel =
186
186
  showPostCountControl || showOffSetControl || showPagesControl;
187
187
 
188
+ // The block cannot inherit a default WordPress query in singular content (e.g., post, page, 404, blank).
189
+ // Warn users but still permit this type of query for exceptional cases in Classic and Hybrid themes.
190
+ const hasInheritanceWarning = isSingular && inherit;
191
+
188
192
  return (
189
193
  <>
190
194
  { showSettingsPanel && (
@@ -208,36 +212,48 @@ export default function QueryInspectorControls( props ) {
208
212
  onDeselect={ () => setQuery( { inherit: true } ) }
209
213
  isShownByDefault
210
214
  >
211
- <ToggleGroupControl
212
- __next40pxDefaultSize
213
- __nextHasNoMarginBottom
214
- label={ __( 'Query type' ) }
215
- isBlock
216
- onChange={ ( value ) => {
217
- setQuery( {
218
- inherit: value === 'default',
219
- } );
220
- } }
221
- help={
222
- inherit
223
- ? __(
224
- 'Display a list of posts or custom post types based on the current template.'
225
- )
226
- : __(
227
- 'Display a list of posts or custom post types based on specific criteria.'
228
- )
229
- }
230
- value={ !! inherit ? 'default' : 'custom' }
231
- >
232
- <ToggleGroupControlOption
233
- value="default"
234
- label={ __( 'Default' ) }
235
- />
236
- <ToggleGroupControlOption
237
- value="custom"
238
- label={ __( 'Custom' ) }
239
- />
240
- </ToggleGroupControl>
215
+ <VStack spacing={ 4 }>
216
+ <ToggleGroupControl
217
+ __next40pxDefaultSize
218
+ __nextHasNoMarginBottom
219
+ label={ __( 'Query type' ) }
220
+ isBlock
221
+ onChange={ ( value ) => {
222
+ setQuery( {
223
+ inherit: value === 'default',
224
+ } );
225
+ } }
226
+ help={
227
+ inherit
228
+ ? __(
229
+ 'Display a list of posts or custom post types based on the current template.'
230
+ )
231
+ : __(
232
+ 'Display a list of posts or custom post types based on specific criteria.'
233
+ )
234
+ }
235
+ value={ !! inherit ? 'default' : 'custom' }
236
+ >
237
+ <ToggleGroupControlOption
238
+ value="default"
239
+ label={ __( 'Default' ) }
240
+ />
241
+ <ToggleGroupControlOption
242
+ value="custom"
243
+ label={ __( 'Custom' ) }
244
+ />
245
+ </ToggleGroupControl>
246
+ { hasInheritanceWarning && (
247
+ <Notice
248
+ status="warning"
249
+ isDismissible={ false }
250
+ >
251
+ { __(
252
+ 'Cannot inherit the current template query when placed inside the singular content (e.g., post, page, 404, blank).'
253
+ ) }
254
+ </Notice>
255
+ ) }
256
+ </VStack>
241
257
  </ToolsPanelItem>
242
258
  ) }
243
259