diff --git a/package-lock.json b/package-lock.json index 5e837ca5d61b36..12fd4d2c44d286 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53180,7 +53180,7 @@ }, "packages/a11y": { "name": "@wordpress/a11y", - "version": "4.2.0", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -53194,7 +53194,7 @@ }, "packages/annotations": { "name": "@wordpress/annotations", - "version": "3.2.0", + "version": "3.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -53222,7 +53222,7 @@ }, "packages/api-fetch": { "name": "@wordpress/api-fetch", - "version": "7.2.0", + "version": "7.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -53236,7 +53236,7 @@ }, "packages/autop": { "name": "@wordpress/autop", - "version": "4.2.0", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -53248,7 +53248,7 @@ }, "packages/babel-plugin-import-jsx-pragma": { "name": "@wordpress/babel-plugin-import-jsx-pragma", - "version": "5.2.0", + "version": "5.3.0", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -53261,7 +53261,7 @@ }, "packages/babel-plugin-makepot": { "name": "@wordpress/babel-plugin-makepot", - "version": "6.2.0", + "version": "6.3.0", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -53279,7 +53279,7 @@ }, "packages/babel-preset-default": { "name": "@wordpress/babel-preset-default", - "version": "8.2.0", + "version": "8.3.0", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -53302,7 +53302,7 @@ }, "packages/base-styles": { "name": "@wordpress/base-styles", - "version": "5.2.0", + "version": "5.3.0", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -53312,7 +53312,7 @@ }, "packages/blob": { "name": "@wordpress/blob", - "version": "4.2.0", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -53324,7 +53324,7 @@ }, "packages/block-directory": { "name": "@wordpress/block-directory", - "version": "5.2.0", + "version": "5.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -53336,7 +53336,6 @@ "@wordpress/compose": "file:../compose", "@wordpress/core-data": "file:../core-data", "@wordpress/data": "file:../data", - "@wordpress/edit-post": "file:../edit-post", "@wordpress/editor": "file:../editor", "@wordpress/element": "file:../element", "@wordpress/hooks": "file:../hooks", @@ -53360,7 +53359,7 @@ }, "packages/block-editor": { "name": "@wordpress/block-editor", - "version": "13.2.0", + "version": "13.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -53457,7 +53456,7 @@ }, "packages/block-library": { "name": "@wordpress/block-library", - "version": "9.2.0", + "version": "9.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -53523,7 +53522,7 @@ }, "packages/block-serialization-default-parser": { "name": "@wordpress/block-serialization-default-parser", - "version": "5.2.0", + "version": "5.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -53535,7 +53534,7 @@ }, "packages/block-serialization-spec-parser": { "name": "@wordpress/block-serialization-spec-parser", - "version": "5.2.0", + "version": "5.3.0", "license": "GPL-2.0-or-later", "dependencies": { "pegjs": "^0.10.0", @@ -53548,7 +53547,7 @@ }, "packages/blocks": { "name": "@wordpress/blocks", - "version": "13.2.0", + "version": "13.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -53601,7 +53600,7 @@ }, "packages/browserslist-config": { "name": "@wordpress/browserslist-config", - "version": "6.2.0", + "version": "6.3.0", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -53611,7 +53610,7 @@ }, "packages/commands": { "name": "@wordpress/commands", - "version": "1.2.0", + "version": "1.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -53636,7 +53635,7 @@ }, "packages/components": { "name": "@wordpress/components", - "version": "28.2.0", + "version": "28.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@ariakit/react": "^0.3.12", @@ -53728,7 +53727,7 @@ }, "packages/compose": { "name": "@wordpress/compose", - "version": "7.2.0", + "version": "7.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -53765,7 +53764,7 @@ }, "packages/core-commands": { "name": "@wordpress/core-commands", - "version": "1.2.0", + "version": "1.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -53793,7 +53792,7 @@ }, "packages/core-data": { "name": "@wordpress/core-data", - "version": "7.2.0", + "version": "7.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -53837,7 +53836,7 @@ }, "packages/create-block": { "name": "@wordpress/create-block", - "version": "4.45.0", + "version": "4.46.0", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -53865,7 +53864,7 @@ }, "packages/create-block-tutorial-template": { "name": "@wordpress/create-block-tutorial-template", - "version": "4.2.0", + "version": "4.3.0", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -53875,7 +53874,7 @@ }, "packages/customize-widgets": { "name": "@wordpress/customize-widgets", - "version": "5.2.0", + "version": "5.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -53913,7 +53912,7 @@ }, "packages/data": { "name": "@wordpress/data", - "version": "10.2.0", + "version": "10.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -53942,7 +53941,7 @@ }, "packages/data-controls": { "name": "@wordpress/data-controls", - "version": "4.2.0", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -53960,7 +53959,7 @@ }, "packages/dataviews": { "name": "@wordpress/dataviews", - "version": "2.2.0", + "version": "3.0.0", "license": "GPL-2.0-or-later", "dependencies": { "@ariakit/react": "^0.3.12", @@ -54021,7 +54020,7 @@ }, "packages/date": { "name": "@wordpress/date", - "version": "5.2.0", + "version": "5.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -54036,7 +54035,7 @@ }, "packages/dependency-extraction-webpack-plugin": { "name": "@wordpress/dependency-extraction-webpack-plugin", - "version": "6.2.0", + "version": "6.3.0", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -54052,7 +54051,7 @@ }, "packages/deprecated": { "name": "@wordpress/deprecated", - "version": "4.2.0", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -54065,7 +54064,7 @@ }, "packages/docgen": { "name": "@wordpress/docgen", - "version": "2.2.0", + "version": "2.3.0", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -54087,7 +54086,7 @@ }, "packages/dom": { "name": "@wordpress/dom", - "version": "4.2.0", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -54100,7 +54099,7 @@ }, "packages/dom-ready": { "name": "@wordpress/dom-ready", - "version": "4.2.0", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -54112,7 +54111,7 @@ }, "packages/e2e-test-utils": { "name": "@wordpress/e2e-test-utils", - "version": "11.2.0", + "version": "11.3.0", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -54135,7 +54134,7 @@ }, "packages/e2e-test-utils-playwright": { "name": "@wordpress/e2e-test-utils-playwright", - "version": "1.2.0", + "version": "1.3.0", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -54163,7 +54162,7 @@ }, "packages/e2e-tests": { "name": "@wordpress/e2e-tests", - "version": "8.2.0", + "version": "8.3.0", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -54203,7 +54202,7 @@ }, "packages/edit-post": { "name": "@wordpress/edit-post", - "version": "8.2.0", + "version": "8.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -54250,7 +54249,7 @@ }, "packages/edit-site": { "name": "@wordpress/edit-site", - "version": "6.2.0", + "version": "6.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -54312,7 +54311,7 @@ }, "packages/edit-widgets": { "name": "@wordpress/edit-widgets", - "version": "6.2.0", + "version": "6.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -54355,7 +54354,7 @@ }, "packages/editor": { "name": "@wordpress/editor", - "version": "14.2.0", + "version": "14.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -54415,7 +54414,7 @@ }, "packages/element": { "name": "@wordpress/element", - "version": "6.2.0", + "version": "6.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -54434,7 +54433,7 @@ }, "packages/env": { "name": "@wordpress/env", - "version": "10.2.0", + "version": "10.3.0", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -54576,7 +54575,7 @@ }, "packages/escape-html": { "name": "@wordpress/escape-html", - "version": "3.2.0", + "version": "3.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -54588,7 +54587,7 @@ }, "packages/eslint-plugin": { "name": "@wordpress/eslint-plugin", - "version": "19.2.0", + "version": "20.0.0", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -54631,7 +54630,7 @@ }, "packages/format-library": { "name": "@wordpress/format-library", - "version": "5.2.0", + "version": "5.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -54659,7 +54658,7 @@ }, "packages/hooks": { "name": "@wordpress/hooks", - "version": "4.2.0", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -54671,7 +54670,7 @@ }, "packages/html-entities": { "name": "@wordpress/html-entities", - "version": "4.2.0", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -54683,7 +54682,7 @@ }, "packages/i18n": { "name": "@wordpress/i18n", - "version": "5.2.0", + "version": "5.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -54703,7 +54702,7 @@ }, "packages/icons": { "name": "@wordpress/icons", - "version": "10.2.0", + "version": "10.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -54717,7 +54716,7 @@ }, "packages/interactivity": { "name": "@wordpress/interactivity", - "version": "6.2.0", + "version": "6.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@preact/signals": "^1.2.2", @@ -54731,7 +54730,7 @@ }, "packages/interactivity-router": { "name": "@wordpress/interactivity-router", - "version": "2.2.0", + "version": "2.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@wordpress/interactivity": "file:../interactivity" @@ -54792,7 +54791,7 @@ }, "packages/interface": { "name": "@wordpress/interface", - "version": "6.2.0", + "version": "6.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -54821,7 +54820,7 @@ }, "packages/is-shallow-equal": { "name": "@wordpress/is-shallow-equal", - "version": "5.2.0", + "version": "5.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -54833,7 +54832,7 @@ }, "packages/jest-console": { "name": "@wordpress/jest-console", - "version": "8.2.0", + "version": "8.3.0", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -54850,7 +54849,7 @@ }, "packages/jest-preset-default": { "name": "@wordpress/jest-preset-default", - "version": "12.2.0", + "version": "12.3.0", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -54868,7 +54867,7 @@ }, "packages/jest-puppeteer-axe": { "name": "@wordpress/jest-puppeteer-axe", - "version": "7.2.0", + "version": "7.3.0", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -54891,7 +54890,7 @@ }, "packages/keyboard-shortcuts": { "name": "@wordpress/keyboard-shortcuts", - "version": "5.2.0", + "version": "5.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -54909,7 +54908,7 @@ }, "packages/keycodes": { "name": "@wordpress/keycodes", - "version": "4.2.0", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -54922,7 +54921,7 @@ }, "packages/lazy-import": { "name": "@wordpress/lazy-import", - "version": "2.2.0", + "version": "2.3.0", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -54937,7 +54936,7 @@ }, "packages/list-reusable-blocks": { "name": "@wordpress/list-reusable-blocks", - "version": "5.2.0", + "version": "5.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -54960,7 +54959,7 @@ }, "packages/media-utils": { "name": "@wordpress/media-utils", - "version": "5.2.0", + "version": "5.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -54976,7 +54975,7 @@ }, "packages/notices": { "name": "@wordpress/notices", - "version": "5.2.0", + "version": "5.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -54993,7 +54992,7 @@ }, "packages/npm-package-json-lint-config": { "name": "@wordpress/npm-package-json-lint-config", - "version": "5.2.0", + "version": "5.3.0", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -55006,7 +55005,7 @@ }, "packages/nux": { "name": "@wordpress/nux", - "version": "9.2.0", + "version": "9.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -55029,7 +55028,7 @@ }, "packages/patterns": { "name": "@wordpress/patterns", - "version": "2.2.0", + "version": "2.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -55059,7 +55058,7 @@ }, "packages/plugins": { "name": "@wordpress/plugins", - "version": "7.2.0", + "version": "7.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -55082,7 +55081,7 @@ }, "packages/postcss-plugins-preset": { "name": "@wordpress/postcss-plugins-preset", - "version": "5.2.0", + "version": "5.3.0", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -55099,7 +55098,7 @@ }, "packages/postcss-themes": { "name": "@wordpress/postcss-themes", - "version": "6.2.0", + "version": "6.3.0", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -55112,7 +55111,7 @@ }, "packages/preferences": { "name": "@wordpress/preferences", - "version": "4.2.0", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -55138,7 +55137,7 @@ }, "packages/preferences-persistence": { "name": "@wordpress/preferences-persistence", - "version": "2.2.0", + "version": "2.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -55151,7 +55150,7 @@ }, "packages/prettier-config": { "name": "@wordpress/prettier-config", - "version": "4.2.0", + "version": "4.3.0", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -55164,7 +55163,7 @@ }, "packages/primitives": { "name": "@wordpress/primitives", - "version": "4.2.0", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -55178,7 +55177,7 @@ }, "packages/priority-queue": { "name": "@wordpress/priority-queue", - "version": "3.2.0", + "version": "3.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -55191,7 +55190,7 @@ }, "packages/private-apis": { "name": "@wordpress/private-apis", - "version": "1.2.0", + "version": "1.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -55203,7 +55202,7 @@ }, "packages/project-management-automation": { "name": "@wordpress/project-management-automation", - "version": "2.2.0", + "version": "2.3.0", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -55233,7 +55232,7 @@ }, "packages/react-i18n": { "name": "@wordpress/react-i18n", - "version": "4.2.0", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -55389,7 +55388,7 @@ }, "packages/readable-js-assets-webpack-plugin": { "name": "@wordpress/readable-js-assets-webpack-plugin", - "version": "3.2.0", + "version": "3.3.0", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -55402,7 +55401,7 @@ }, "packages/redux-routine": { "name": "@wordpress/redux-routine", - "version": "5.2.0", + "version": "5.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -55447,7 +55446,7 @@ }, "packages/reusable-blocks": { "name": "@wordpress/reusable-blocks", - "version": "5.2.0", + "version": "5.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -55474,7 +55473,7 @@ }, "packages/rich-text": { "name": "@wordpress/rich-text", - "version": "7.2.0", + "version": "7.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -55498,7 +55497,7 @@ }, "packages/router": { "name": "@wordpress/router", - "version": "1.2.0", + "version": "1.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -55517,7 +55516,7 @@ }, "packages/scripts": { "name": "@wordpress/scripts", - "version": "28.2.0", + "version": "28.3.0", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -55904,7 +55903,7 @@ }, "packages/server-side-render": { "name": "@wordpress/server-side-render", - "version": "5.2.0", + "version": "5.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -55930,7 +55929,7 @@ }, "packages/shortcode": { "name": "@wordpress/shortcode", - "version": "4.2.0", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -55943,7 +55942,7 @@ }, "packages/style-engine": { "name": "@wordpress/style-engine", - "version": "2.2.0", + "version": "2.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -55956,7 +55955,7 @@ }, "packages/stylelint-config": { "name": "@wordpress/stylelint-config", - "version": "22.2.0", + "version": "22.3.0", "dev": true, "license": "MIT", "dependencies": { @@ -55973,7 +55972,7 @@ }, "packages/sync": { "name": "@wordpress/sync", - "version": "1.2.0", + "version": "1.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -55994,7 +55993,7 @@ }, "packages/token-list": { "name": "@wordpress/token-list", - "version": "3.2.0", + "version": "3.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -56006,7 +56005,7 @@ }, "packages/undo-manager": { "name": "@wordpress/undo-manager", - "version": "1.2.0", + "version": "1.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -56019,7 +56018,7 @@ }, "packages/url": { "name": "@wordpress/url", - "version": "4.2.0", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -56032,7 +56031,7 @@ }, "packages/viewport": { "name": "@wordpress/viewport", - "version": "6.2.0", + "version": "6.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -56050,7 +56049,7 @@ }, "packages/warning": { "name": "@wordpress/warning", - "version": "3.2.0", + "version": "3.3.0", "license": "GPL-2.0-or-later", "engines": { "node": ">=18.12.0", @@ -56059,7 +56058,7 @@ }, "packages/widgets": { "name": "@wordpress/widgets", - "version": "4.2.0", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0", @@ -56087,7 +56086,7 @@ }, "packages/wordcount": { "name": "@wordpress/wordcount", - "version": "4.2.0", + "version": "4.3.0", "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "^7.16.0" @@ -68759,7 +68758,6 @@ "@wordpress/compose": "file:../compose", "@wordpress/core-data": "file:../core-data", "@wordpress/data": "file:../data", - "@wordpress/edit-post": "file:../edit-post", "@wordpress/editor": "file:../editor", "@wordpress/element": "file:../element", "@wordpress/hooks": "file:../hooks", diff --git a/packages/a11y/CHANGELOG.md b/packages/a11y/CHANGELOG.md index d7098f67238bda..21b652007a5054 100644 --- a/packages/a11y/CHANGELOG.md +++ b/packages/a11y/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 4.3.0 (2024-07-10) + ## 4.2.0 (2024-06-26) ## 4.1.0 (2024-06-15) diff --git a/packages/a11y/package.json b/packages/a11y/package.json index 0e9590381a290a..8490040f7cc038 100644 --- a/packages/a11y/package.json +++ b/packages/a11y/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/a11y", - "version": "4.2.0", + "version": "4.3.0", "description": "Accessibility (a11y) utilities for WordPress.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/annotations/CHANGELOG.md b/packages/annotations/CHANGELOG.md index b92426072f1351..cf66e51c07fd38 100644 --- a/packages/annotations/CHANGELOG.md +++ b/packages/annotations/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 3.3.0 (2024-07-10) + ## 3.2.0 (2024-06-26) ## 3.1.0 (2024-06-15) diff --git a/packages/annotations/package.json b/packages/annotations/package.json index 2f030df0e6cb96..dc02bda978dcf2 100644 --- a/packages/annotations/package.json +++ b/packages/annotations/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/annotations", - "version": "3.2.0", + "version": "3.3.0", "description": "Annotate content in the Gutenberg editor.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/api-fetch/CHANGELOG.md b/packages/api-fetch/CHANGELOG.md index 6abbab65d6a821..cee6a82f04f24c 100644 --- a/packages/api-fetch/CHANGELOG.md +++ b/packages/api-fetch/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 7.3.0 (2024-07-10) + ## 7.2.0 (2024-06-26) ## 7.1.0 (2024-06-15) diff --git a/packages/api-fetch/package.json b/packages/api-fetch/package.json index 112d5d8fb501d4..81c479cca7a02e 100644 --- a/packages/api-fetch/package.json +++ b/packages/api-fetch/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/api-fetch", - "version": "7.2.0", + "version": "7.3.0", "description": "Utility to make WordPress REST API requests.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/autop/CHANGELOG.md b/packages/autop/CHANGELOG.md index cfff0201fc277e..7c2d08b9121cc4 100644 --- a/packages/autop/CHANGELOG.md +++ b/packages/autop/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 4.3.0 (2024-07-10) + ## 4.2.0 (2024-06-26) ## 4.1.0 (2024-06-15) diff --git a/packages/autop/package.json b/packages/autop/package.json index a232e196e3c241..3a0e732001760a 100644 --- a/packages/autop/package.json +++ b/packages/autop/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/autop", - "version": "4.2.0", + "version": "4.3.0", "description": "WordPress's automatic paragraph functions `autop` and `removep`.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/babel-plugin-import-jsx-pragma/CHANGELOG.md b/packages/babel-plugin-import-jsx-pragma/CHANGELOG.md index 7bb25199ff8471..8503a9df98cb7b 100644 --- a/packages/babel-plugin-import-jsx-pragma/CHANGELOG.md +++ b/packages/babel-plugin-import-jsx-pragma/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 5.3.0 (2024-07-10) + ## 5.2.0 (2024-06-26) ## 5.1.0 (2024-06-15) diff --git a/packages/babel-plugin-import-jsx-pragma/package.json b/packages/babel-plugin-import-jsx-pragma/package.json index 88d09cecebf374..98612895b03d6f 100644 --- a/packages/babel-plugin-import-jsx-pragma/package.json +++ b/packages/babel-plugin-import-jsx-pragma/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/babel-plugin-import-jsx-pragma", - "version": "5.2.0", + "version": "5.3.0", "description": "Babel transform plugin for automatically injecting an import to be used as the pragma for the React JSX Transform plugin.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/babel-plugin-makepot/CHANGELOG.md b/packages/babel-plugin-makepot/CHANGELOG.md index 19214e1c791779..9411389ef00995 100644 --- a/packages/babel-plugin-makepot/CHANGELOG.md +++ b/packages/babel-plugin-makepot/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 6.3.0 (2024-07-10) + ## 6.2.0 (2024-06-26) ## 6.1.0 (2024-06-15) diff --git a/packages/babel-plugin-makepot/package.json b/packages/babel-plugin-makepot/package.json index 1ff539297bddb2..aac782362c2226 100644 --- a/packages/babel-plugin-makepot/package.json +++ b/packages/babel-plugin-makepot/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/babel-plugin-makepot", - "version": "6.2.0", + "version": "6.3.0", "description": "WordPress Babel internationalization (i18n) plugin.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/babel-preset-default/CHANGELOG.md b/packages/babel-preset-default/CHANGELOG.md index 56b58422f47f35..d6ec60b7fd3d9a 100644 --- a/packages/babel-preset-default/CHANGELOG.md +++ b/packages/babel-preset-default/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 8.3.0 (2024-07-10) + ## 8.2.0 (2024-06-26) ## 8.1.0 (2024-06-15) diff --git a/packages/babel-preset-default/package.json b/packages/babel-preset-default/package.json index 6a44e479bd02bd..a6beb303d0bc59 100644 --- a/packages/babel-preset-default/package.json +++ b/packages/babel-preset-default/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/babel-preset-default", - "version": "8.2.0", + "version": "8.3.0", "description": "Default Babel preset for WordPress development.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/base-styles/CHANGELOG.md b/packages/base-styles/CHANGELOG.md index 89149ee5044f7a..6bcaabfa640cef 100644 --- a/packages/base-styles/CHANGELOG.md +++ b/packages/base-styles/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 5.3.0 (2024-07-10) + ## 5.2.0 (2024-06-26) ## 5.1.0 (2024-06-15) diff --git a/packages/base-styles/_mixins.scss b/packages/base-styles/_mixins.scss index 8c056905e64d88..1930948052aae7 100644 --- a/packages/base-styles/_mixins.scss +++ b/packages/base-styles/_mixins.scss @@ -597,3 +597,21 @@ } } } + +@mixin selected-block-outline($widthRatio: 1) { + outline-color: var(--wp-admin-theme-color); + outline-style: solid; + outline-width: calc(#{$widthRatio} * (var(--wp-admin-border-width-focus) / var(--wp-block-editor-iframe-zoom-out-scale, 1))); + outline-offset: calc(#{$widthRatio} * ((-1 * var(--wp-admin-border-width-focus) ) / var(--wp-block-editor-iframe-zoom-out-scale, 1))); +} + +@mixin selected-block-focus($widthRatio: 1) { + content: ""; + position: absolute; + pointer-events: none; + top: 0; + right: 0; + bottom: 0; + left: 0; + @include selected-block-outline($widthRatio); +} diff --git a/packages/base-styles/package.json b/packages/base-styles/package.json index b573693574d828..0e347ecbc8ad10 100644 --- a/packages/base-styles/package.json +++ b/packages/base-styles/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/base-styles", - "version": "5.2.0", + "version": "5.3.0", "description": "Base SCSS utilities and variables for WordPress.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/blob/CHANGELOG.md b/packages/blob/CHANGELOG.md index c689b26bc5c8dc..a103ab71a5cd87 100644 --- a/packages/blob/CHANGELOG.md +++ b/packages/blob/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 4.3.0 (2024-07-10) + ## 4.2.0 (2024-06-26) ## 4.1.0 (2024-06-15) diff --git a/packages/blob/package.json b/packages/blob/package.json index 42b65ae434b21f..7e9965514570f5 100644 --- a/packages/blob/package.json +++ b/packages/blob/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/blob", - "version": "4.2.0", + "version": "4.3.0", "description": "Blob utilities for WordPress.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/block-directory/CHANGELOG.md b/packages/block-directory/CHANGELOG.md index 1aca119d864bea..1f1f3104764e61 100644 --- a/packages/block-directory/CHANGELOG.md +++ b/packages/block-directory/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 5.3.0 (2024-07-10) + ## 5.2.0 (2024-06-26) ## 5.1.0 (2024-06-15) diff --git a/packages/block-directory/package.json b/packages/block-directory/package.json index d62b4adb9c0dcb..09d409d3f94ce4 100644 --- a/packages/block-directory/package.json +++ b/packages/block-directory/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/block-directory", - "version": "5.2.0", + "version": "5.3.0", "description": "Extend editor with block directory features to search, download and install blocks.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", @@ -35,7 +35,6 @@ "@wordpress/compose": "file:../compose", "@wordpress/core-data": "file:../core-data", "@wordpress/data": "file:../data", - "@wordpress/edit-post": "file:../edit-post", "@wordpress/editor": "file:../editor", "@wordpress/element": "file:../element", "@wordpress/hooks": "file:../hooks", diff --git a/packages/block-directory/src/components/downloadable-block-list-item/style.scss b/packages/block-directory/src/components/downloadable-block-list-item/style.scss index beee32bc90db91..8f95297bd9ef0d 100644 --- a/packages/block-directory/src/components/downloadable-block-list-item/style.scss +++ b/packages/block-directory/src/components/downloadable-block-list-item/style.scss @@ -6,6 +6,12 @@ display: grid; grid-template-columns: auto 1fr; + // The item contains absolutely positioned items. + // Set `position: relative` on the parent to prevent overflow issues + // in scroll containers. + // See: https://github.com/WordPress/gutenberg/issues/63384 + position: relative; + &:hover { @include button-style__focus(); } diff --git a/packages/block-directory/src/plugins/installed-blocks-pre-publish-panel/index.js b/packages/block-directory/src/plugins/installed-blocks-pre-publish-panel/index.js index 75328db7c554d8..17630c9904e8bd 100644 --- a/packages/block-directory/src/plugins/installed-blocks-pre-publish-panel/index.js +++ b/packages/block-directory/src/plugins/installed-blocks-pre-publish-panel/index.js @@ -4,6 +4,7 @@ import { _n, sprintf } from '@wordpress/i18n'; import { useSelect } from '@wordpress/data'; import { blockDefault } from '@wordpress/icons'; +import { PluginPrePublishPanel } from '@wordpress/editor'; /** * Internal dependencies @@ -11,10 +12,6 @@ import { blockDefault } from '@wordpress/icons'; import CompactList from '../../components/compact-list'; import { store as blockDirectoryStore } from '../../store'; -// We shouldn't import the editor package directly -// because it would include the wp-editor in all pages loading the block-directory script. -const { PluginPrePublishPanel } = window?.wp?.editor ?? {}; - export default function InstalledBlocksPrePublishPanel() { const newBlockTypes = useSelect( ( select ) => select( blockDirectoryStore ).getNewBlockTypes(), diff --git a/packages/block-directory/src/store/selectors.js b/packages/block-directory/src/store/selectors.js index e9b73b51f4544d..f7e541dd14ed82 100644 --- a/packages/block-directory/src/store/selectors.js +++ b/packages/block-directory/src/store/selectors.js @@ -1,7 +1,7 @@ /** * WordPress dependencies */ -import { createRegistrySelector } from '@wordpress/data'; +import { createSelector, createRegistrySelector } from '@wordpress/data'; import { store as blockEditorStore } from '@wordpress/block-editor'; /** @@ -53,15 +53,21 @@ export function getInstalledBlockTypes( state ) { * * @return {Array} Block type items. */ -export const getNewBlockTypes = createRegistrySelector( - ( select ) => ( state ) => { - const usedBlockTree = select( blockEditorStore ).getBlocks(); - const installedBlockTypes = getInstalledBlockTypes( state ); +export const getNewBlockTypes = createRegistrySelector( ( select ) => + createSelector( + ( state ) => { + const usedBlockTree = select( blockEditorStore ).getBlocks(); + const installedBlockTypes = getInstalledBlockTypes( state ); - return installedBlockTypes.filter( ( blockType ) => - hasBlockType( blockType, usedBlockTree ) - ); - } + return installedBlockTypes.filter( ( blockType ) => + hasBlockType( blockType, usedBlockTree ) + ); + }, + ( state ) => [ + getInstalledBlockTypes( state ), + select( blockEditorStore ).getBlocks(), + ] + ) ); /** @@ -72,15 +78,21 @@ export const getNewBlockTypes = createRegistrySelector( * * @return {Array} Block type items. */ -export const getUnusedBlockTypes = createRegistrySelector( - ( select ) => ( state ) => { - const usedBlockTree = select( blockEditorStore ).getBlocks(); - const installedBlockTypes = getInstalledBlockTypes( state ); +export const getUnusedBlockTypes = createRegistrySelector( ( select ) => + createSelector( + ( state ) => { + const usedBlockTree = select( blockEditorStore ).getBlocks(); + const installedBlockTypes = getInstalledBlockTypes( state ); - return installedBlockTypes.filter( - ( blockType ) => ! hasBlockType( blockType, usedBlockTree ) - ); - } + return installedBlockTypes.filter( + ( blockType ) => ! hasBlockType( blockType, usedBlockTree ) + ); + }, + ( state ) => [ + getInstalledBlockTypes( state ), + select( blockEditorStore ).getBlocks(), + ] + ) ); /** diff --git a/packages/block-editor/CHANGELOG.md b/packages/block-editor/CHANGELOG.md index 969e057850f74a..02512ed4288abb 100644 --- a/packages/block-editor/CHANGELOG.md +++ b/packages/block-editor/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 13.3.0 (2024-07-10) + ## 13.2.0 (2024-06-26) ## 13.1.0 (2024-06-15) diff --git a/packages/block-editor/package.json b/packages/block-editor/package.json index 4ee20e892d4d47..e8c1f2cf063654 100644 --- a/packages/block-editor/package.json +++ b/packages/block-editor/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/block-editor", - "version": "13.2.0", + "version": "13.3.0", "description": "Generic block editor.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/block-editor/src/components/block-list/content.scss b/packages/block-editor/src/components/block-list/content.scss index 8d55617bea2f99..17ebad06c4d78e 100644 --- a/packages/block-editor/src/components/block-list/content.scss +++ b/packages/block-editor/src/components/block-list/content.scss @@ -17,20 +17,6 @@ } } -@mixin selectedOutline() { - content: ""; - position: absolute; - pointer-events: none; - top: 0; - right: 0; - bottom: 0; - left: 0; - outline-color: var(--wp-admin-theme-color); - outline-style: solid; - outline-width: calc(var(--wp-admin-border-width-focus) / var(--wp-block-editor-iframe-zoom-out-scale, 1)); - outline-offset: calc((-1 * var(--wp-admin-border-width-focus)) / var(--wp-block-editor-iframe-zoom-out-scale, 1)); -} - // Hide selections on this element, otherwise Safari will include it stacked // under your actual selection. // This uses a CSS hack to show the rules to Safari only. Failing here is okay, @@ -101,7 +87,7 @@ _::-webkit-full-page-media, _:future, :root .has-multi-selection .block-editor-b // We're using a pseudo element to overflow placeholder borders // and any border inside the block itself. &::after { - @include selectedOutline(); + @include selected-block-focus(); z-index: 1; // Show a light color for dark themes. @@ -281,7 +267,7 @@ _::-webkit-full-page-media, _:future, :root .has-multi-selection .block-editor-b &:not(.rich-text):not([contenteditable="true"]).is-selected { &::after { - @include selectedOutline(); + @include selected-block-focus(); } } } diff --git a/packages/block-editor/src/components/block-list/use-in-between-inserter.js b/packages/block-editor/src/components/block-list/use-in-between-inserter.js index 68fa8628c54c72..74151fb3b070ba 100644 --- a/packages/block-editor/src/components/block-list/use-in-between-inserter.js +++ b/packages/block-editor/src/components/block-list/use-in-between-inserter.js @@ -29,6 +29,7 @@ export function useInBetweenInserter() { __unstableIsWithinBlockOverlay, getBlockEditingMode, getBlockName, + getBlockAttributes, } = useSelect( blockEditorStore ); const { showInsertionPoint, hideInsertionPoint } = useDispatch( blockEditorStore ); @@ -79,7 +80,10 @@ export function useInBetweenInserter() { if ( getTemplateLock( rootClientId ) || getBlockEditingMode( rootClientId ) === 'disabled' || - getBlockName( rootClientId ) === 'core/block' + getBlockName( rootClientId ) === 'core/block' || + ( rootClientId && + getBlockAttributes( rootClientId ).layout + ?.isManualPlacement ) ) { return; } diff --git a/packages/block-editor/src/components/block-removal-warning-modal/index.js b/packages/block-editor/src/components/block-removal-warning-modal/index.js index fca8098c4cd398..2f716e875fb604 100644 --- a/packages/block-editor/src/components/block-removal-warning-modal/index.js +++ b/packages/block-editor/src/components/block-removal-warning-modal/index.js @@ -53,10 +53,18 @@ export function BlockRemovalWarningModal( { rules } ) { >

{ message }

- - diff --git a/packages/block-editor/src/components/date-format-picker/index.js b/packages/block-editor/src/components/date-format-picker/index.js index 72e6d4831efa93..cf9af5eb33f122 100644 --- a/packages/block-editor/src/components/date-format-picker/index.js +++ b/packages/block-editor/src/components/date-format-picker/index.js @@ -126,7 +126,7 @@ function NonDefaultControls( { format, onChange } ) { name: __( 'Custom' ), className: 'block-editor-date-format-picker__custom-format-select-control__custom-option', - __experimentalHint: __( 'Enter your own date format' ), + hint: __( 'Enter your own date format' ), }; const [ isCustom, setIsCustom ] = useState( diff --git a/packages/block-editor/src/components/default-block-appender/index.js b/packages/block-editor/src/components/default-block-appender/index.js index 411455c13df43b..fbc2c7c08821d4 100644 --- a/packages/block-editor/src/components/default-block-appender/index.js +++ b/packages/block-editor/src/components/default-block-appender/index.js @@ -24,10 +24,14 @@ import { store as blockEditorStore } from '../../store'; export const ZWNBSP = '\ufeff'; export default function DefaultBlockAppender( { rootClientId } ) { - const { showPrompt, isLocked, placeholder } = useSelect( + const { showPrompt, isLocked, placeholder, isManualGrid } = useSelect( ( select ) => { - const { getBlockCount, getSettings, getTemplateLock } = - select( blockEditorStore ); + const { + getBlockCount, + getSettings, + getTemplateLock, + getBlockAttributes, + } = select( blockEditorStore ); const isEmpty = ! getBlockCount( rootClientId ); const { bodyPlaceholder } = getSettings(); @@ -36,6 +40,9 @@ export default function DefaultBlockAppender( { rootClientId } ) { showPrompt: isEmpty, isLocked: !! getTemplateLock( rootClientId ), placeholder: bodyPlaceholder, + isManualGrid: + getBlockAttributes( rootClientId )?.layout + ?.isManualPlacement, }; }, [ rootClientId ] @@ -43,7 +50,7 @@ export default function DefaultBlockAppender( { rootClientId } ) { const { insertDefaultBlock, startTyping } = useDispatch( blockEditorStore ); - if ( isLocked ) { + if ( isLocked || isManualGrid ) { return null; } diff --git a/packages/block-editor/src/components/grid/grid-item-movers.js b/packages/block-editor/src/components/grid/grid-item-movers.js index ddfb7dcb2c2dd5..adda11b7a45a62 100644 --- a/packages/block-editor/src/components/grid/grid-item-movers.js +++ b/packages/block-editor/src/components/grid/grid-item-movers.js @@ -1,10 +1,25 @@ +/** + * External dependencies + */ +import clsx from 'clsx'; + /** * WordPress dependencies */ import { __ } from '@wordpress/i18n'; -import { ToolbarButton } from '@wordpress/components'; -import { arrowLeft, arrowUp, arrowDown, arrowRight } from '@wordpress/icons'; +import { + VisuallyHidden, + ToolbarButton, + ToolbarGroup, +} from '@wordpress/components'; +import { + chevronLeft, + chevronUp, + chevronDown, + chevronRight, +} from '@wordpress/icons'; import { useDispatch } from '@wordpress/data'; +import { useInstanceId } from '@wordpress/compose'; /** * Internal dependencies @@ -39,74 +54,129 @@ export function GridItemMovers( { return ( + + { + onChange( { + columnStart: columnStart - 1, + } ); + __unstableMarkNextChangeAsNotPersistent(); + moveBlocksToPosition( + [ blockClientId ], + gridClientId, + gridClientId, + getNumberOfBlocksBeforeCell( + columnStart - 1, + rowStart + ) + ); + } } + /> +
+ { + onChange( { + rowStart: rowStart - 1, + } ); + __unstableMarkNextChangeAsNotPersistent(); + moveBlocksToPosition( + [ blockClientId ], + gridClientId, + gridClientId, + getNumberOfBlocksBeforeCell( + columnStart, + rowStart - 1 + ) + ); + } } + /> + = rowCount } + onClick={ () => { + onChange( { + rowStart: rowStart + 1, + } ); + __unstableMarkNextChangeAsNotPersistent(); + moveBlocksToPosition( + [ blockClientId ], + gridClientId, + gridClientId, + getNumberOfBlocksBeforeCell( + columnStart, + rowStart + 1 + ) + ); + } } + /> +
+ = columnCount } + onClick={ () => { + onChange( { + columnStart: columnStart + 1, + } ); + __unstableMarkNextChangeAsNotPersistent(); + moveBlocksToPosition( + [ blockClientId ], + gridClientId, + gridClientId, + getNumberOfBlocksBeforeCell( + columnStart + 1, + rowStart + ) + ); + } } + /> +
+
+ ); +} + +function GridItemMover( { + className, + icon, + label, + isDisabled, + onClick, + description, +} ) { + const instanceId = useInstanceId( GridItemMover ); + const descriptionId = `block-editor-grid-item-mover-button__description-${ instanceId }`; + return ( + <> { - onChange( { - rowStart: rowStart - 1, - } ); - __unstableMarkNextChangeAsNotPersistent(); - moveBlocksToPosition( - [ blockClientId ], - gridClientId, - gridClientId, - getNumberOfBlocksBeforeCell( columnStart, rowStart - 1 ) - ); - } } - /> - = rowCount } - onClick={ () => { - onChange( { - rowStart: rowStart + 1, - } ); - __unstableMarkNextChangeAsNotPersistent(); - moveBlocksToPosition( - [ blockClientId ], - gridClientId, - gridClientId, - getNumberOfBlocksBeforeCell( columnStart, rowStart + 1 ) - ); - } } - /> - { - onChange( { - columnStart: columnStart - 1, - } ); - __unstableMarkNextChangeAsNotPersistent(); - moveBlocksToPosition( - [ blockClientId ], - gridClientId, - gridClientId, - getNumberOfBlocksBeforeCell( columnStart - 1, rowStart ) - ); - } } - /> - = columnCount } - onClick={ () => { - onChange( { - columnStart: columnStart + 1, - } ); - __unstableMarkNextChangeAsNotPersistent(); - moveBlocksToPosition( - [ blockClientId ], - gridClientId, - gridClientId, - getNumberOfBlocksBeforeCell( columnStart + 1, rowStart ) - ); - } } + className={ clsx( + 'block-editor-grid-item-mover-button', + className + ) } + icon={ icon } + label={ label } + aria-describedby={ descriptionId } + onClick={ isDisabled ? null : onClick } + disabled={ isDisabled } + accessibleWhenDisabled /> - + + { description } + + ); } diff --git a/packages/block-editor/src/components/grid/grid-visualizer.js b/packages/block-editor/src/components/grid/grid-visualizer.js index 0717ce21fe2d84..5e5e1e3bfa2f77 100644 --- a/packages/block-editor/src/components/grid/grid-visualizer.js +++ b/packages/block-editor/src/components/grid/grid-visualizer.js @@ -89,7 +89,7 @@ const GridVisualizerGrid = forwardRef( 'is-dropping-allowed': isDroppingAllowed, } ) } clientId={ gridClientId } - __unstablePopoverSlot="block-toolbar" + __unstablePopoverSlot="__unstable-block-tools-after" >
.block-editor-grid-item-mover-button.block-editor-grid-item-mover-button { + height: $block-toolbar-height * 0.5 - $grid-unit-05; + width: 100%; + min-width: 0 !important; // overrides default button width. + + // Focus style. + &::before { + height: calc(100% - 4px); + } + } + + .block-editor-grid-item-mover-button.is-up-button svg, + .block-editor-grid-item-mover-button.is-down-button svg { + flex-shrink: 0; + height: $block-toolbar-height * 0.5 - $grid-unit-05; + } + } +} + +.show-icon-labels { + + .block-editor-grid-item-mover-button.block-editor-grid-item-mover-button.is-left-button { + border-right: 1px solid $gray-700; + padding-right: 12px; + } + + .block-editor-grid-item-mover-button.block-editor-grid-item-mover-button.is-right-button { + border-left: 1px solid $gray-700; + padding-left: 12px; + } + + + .block-editor-grid-item-mover__move-vertical-button-container { + &::before { + @include break-small() { + content: ""; + height: $border-width; + width: 100%; + background: $gray-200; + position: absolute; + top: 50%; + left: 50%; + // With Top toolbar enabled, this separator has a smaller width. Translating the + // X axis allows to make the separator always centered regardless of its width. + transform: translate(-50%, 0); + margin-top: -$border-width * 0.5; + } + + @include break-medium { + background: $gray-900; + } + } + } + +} + diff --git a/packages/block-editor/src/components/grid/use-grid-layout-sync.js b/packages/block-editor/src/components/grid/use-grid-layout-sync.js index a5d6aa4d3fbdd7..ed368714d63d34 100644 --- a/packages/block-editor/src/components/grid/use-grid-layout-sync.js +++ b/packages/block-editor/src/components/grid/use-grid-layout-sync.js @@ -2,7 +2,8 @@ * WordPress dependencies */ import { useDispatch, useSelect } from '@wordpress/data'; -import { useEffect } from '@wordpress/element'; +import { useEffect, useMemo } from '@wordpress/element'; +import { usePrevious } from '@wordpress/compose'; /** * Internal dependencies @@ -11,13 +12,15 @@ import { store as blockEditorStore } from '../../store'; import { GridRect } from './utils'; export function useGridLayoutSync( { clientId: gridClientId } ) { - const { gridLayout, blockOrder } = useSelect( + const { gridLayout, blockOrder, selectedBlockLayout } = useSelect( ( select ) => { const { getBlockAttributes, getBlockOrder } = select( blockEditorStore ); + const selectedBlock = select( blockEditorStore ).getSelectedBlock(); return { gridLayout: getBlockAttributes( gridClientId ).layout ?? {}, blockOrder: getBlockOrder( gridClientId ), + selectedBlockLayout: selectedBlock?.attributes.style?.layout, }; }, [ gridClientId ] @@ -27,27 +30,32 @@ export function useGridLayoutSync( { clientId: gridClientId } ) { const { updateBlockAttributes, __unstableMarkNextChangeAsNotPersistent } = useDispatch( blockEditorStore ); + const selectedBlockRect = useMemo( + () => + selectedBlockLayout ? new GridRect( selectedBlockLayout ) : null, + [ selectedBlockLayout ] + ); + + const previouslySelectedBlockRect = usePrevious( selectedBlockRect ); + useEffect( () => { const updates = {}; - const { columnCount, rowCount, isManualPlacement } = gridLayout; - - if ( isManualPlacement ) { - const rects = []; + if ( gridLayout.isManualPlacement ) { + const occupiedRects = []; // Respect the position of blocks that already have a columnStart and rowStart value. for ( const clientId of blockOrder ) { - const attributes = getBlockAttributes( clientId ); const { columnStart, rowStart, columnSpan = 1, rowSpan = 1, - } = attributes.style?.layout || {}; + } = getBlockAttributes( clientId ).style?.layout ?? {}; if ( ! columnStart || ! rowStart ) { continue; } - rects.push( + occupiedRects.push( new GridRect( { columnStart, rowStart, @@ -65,17 +73,19 @@ export function useGridLayoutSync( { clientId: gridClientId } ) { rowStart, columnSpan = 1, rowSpan = 1, - } = attributes.style?.layout || {}; + } = attributes.style?.layout ?? {}; if ( columnStart && rowStart ) { continue; } - const [ newColumnStart, newRowStart ] = getFirstEmptyCell( - rects, - columnCount, + const [ newColumnStart, newRowStart ] = placeBlock( + occupiedRects, + gridLayout.columnCount, columnSpan, - rowSpan + rowSpan, + previouslySelectedBlockRect?.columnEnd, + previouslySelectedBlockRect?.rowEnd ); - rects.push( + occupiedRects.push( new GridRect( { columnStart: newColumnStart, rowStart: newRowStart, @@ -96,8 +106,13 @@ export function useGridLayoutSync( { clientId: gridClientId } ) { } // Ensure there's enough rows to fit all blocks. - const bottomMostRow = Math.max( ...rects.map( ( r ) => r.rowEnd ) ); - if ( ! rowCount || rowCount < bottomMostRow ) { + const bottomMostRow = Math.max( + ...occupiedRects.map( ( r ) => r.rowEnd ) + ); + if ( + ! gridLayout.rowCount || + gridLayout.rowCount < bottomMostRow + ) { updates[ gridClientId ] = { layout: { ...gridLayout, @@ -110,7 +125,7 @@ export function useGridLayoutSync( { clientId: gridClientId } ) { for ( const clientId of blockOrder ) { const attributes = getBlockAttributes( clientId ); const { columnStart, rowStart, ...layout } = - attributes.style?.layout || {}; + attributes.style?.layout ?? {}; // Only update attributes if columnStart or rowStart are set. if ( columnStart || rowStart ) { updates[ clientId ] = { @@ -123,7 +138,7 @@ export function useGridLayoutSync( { clientId: gridClientId } ) { } // Remove row styles in auto mode - if ( rowCount ) { + if ( gridLayout.rowCount ) { updates[ gridClientId ] = { layout: { ...gridLayout, @@ -146,23 +161,47 @@ export function useGridLayoutSync( { clientId: gridClientId } ) { gridClientId, gridLayout, blockOrder, - // Needed for linter: + previouslySelectedBlockRect, + // These won't change, but the linter thinks they might: __unstableMarkNextChangeAsNotPersistent, getBlockAttributes, updateBlockAttributes, ] ); } -function getFirstEmptyCell( rects, columnCount, columnSpan = 1, rowSpan = 1 ) { - for ( let row = 1; ; row++ ) { - for ( let column = 1; column <= columnCount; column++ ) { - const rect = new GridRect( { +/** + * @param {GridRect[]} occupiedRects + * @param {number} gridColumnCount + * @param {number} blockColumnSpan + * @param {number} blockRowSpan + * @param {number?} startColumn + * @param {number?} startRow + */ +function placeBlock( + occupiedRects, + gridColumnCount, + blockColumnSpan, + blockRowSpan, + startColumn = 1, + startRow = 1 +) { + for ( let row = startRow; ; row++ ) { + for ( + let column = row === startRow ? startColumn : 1; + column <= gridColumnCount; + column++ + ) { + const candidateRect = new GridRect( { columnStart: column, rowStart: row, - columnSpan, - rowSpan, + columnSpan: blockColumnSpan, + rowSpan: blockRowSpan, } ); - if ( ! rects.some( ( r ) => r.intersectsRect( rect ) ) ) { + if ( + ! occupiedRects.some( ( r ) => + r.intersectsRect( candidateRect ) + ) + ) { return [ column, row ]; } } diff --git a/packages/block-editor/src/components/inner-blocks/index.js b/packages/block-editor/src/components/inner-blocks/index.js index db947a01a91dc4..27e5064eeb6328 100644 --- a/packages/block-editor/src/components/inner-blocks/index.js +++ b/packages/block-editor/src/components/inner-blocks/index.js @@ -132,7 +132,10 @@ function UncontrolledInnerBlocks( props ) { /> ); - if ( Object.keys( blockType.providesContext ).length === 0 ) { + if ( + ! blockType?.providesContext || + Object.keys( blockType.providesContext ).length === 0 + ) { return items; } diff --git a/packages/block-editor/src/components/inserter/style.scss b/packages/block-editor/src/components/inserter/style.scss index 631c7f727ddc41..f6b5d9fe84c1d1 100644 --- a/packages/block-editor/src/components/inserter/style.scss +++ b/packages/block-editor/src/components/inserter/style.scss @@ -228,6 +228,13 @@ $block-inserter-tabs-height: 44px; margin-top: auto; } + // Temporarily disable the component's indicator animation. + // TODO: remove in favor of using the native component's styles and behavior, + // see https://github.com/WordPress/gutenberg/pull/62879#issuecomment-2219720582 + &[aria-orientation="vertical"]::after { + content: none; + } + .block-editor-inserter__category-tab { // Account for the icon on the right so that it's visually balanced. padding: $grid-unit-10 $grid-unit-05 $grid-unit-10 $grid-unit-15; diff --git a/packages/block-editor/src/components/url-popover/style.scss b/packages/block-editor/src/components/url-popover/style.scss index 324d82d4183aab..8c9d867071017d 100644 --- a/packages/block-editor/src/components/url-popover/style.scss +++ b/packages/block-editor/src/components/url-popover/style.scss @@ -10,6 +10,7 @@ .block-editor-url-popover__row { display: flex; gap: $grid-unit-05; + align-items: center; } // Any children of the popover-row that are not the settings-toggle diff --git a/packages/block-editor/src/hooks/grid-visualizer.js b/packages/block-editor/src/hooks/grid-visualizer.js index 42b45952d45d15..ffad5edd9842c4 100644 --- a/packages/block-editor/src/hooks/grid-visualizer.js +++ b/packages/block-editor/src/hooks/grid-visualizer.js @@ -26,14 +26,12 @@ function GridTools( { clientId, layout } ) { }; } ); - if ( ! isSelected && ! isDragging ) { - return null; - } - return ( <> - + { ( isSelected || isDragging ) && ( + + ) } ); } diff --git a/packages/block-editor/src/hooks/position.js b/packages/block-editor/src/hooks/position.js index 11fddf72896925..a5fae3d8d3a7c2 100644 --- a/packages/block-editor/src/hooks/position.js +++ b/packages/block-editor/src/hooks/position.js @@ -42,7 +42,7 @@ const STICKY_OPTION = { key: 'sticky', value: 'sticky', name: _x( 'Sticky', 'Name for the value of the CSS position property' ), - __experimentalHint: __( + hint: __( 'The block will stick to the top of the window instead of scrolling.' ), }; @@ -51,9 +51,7 @@ const FIXED_OPTION = { key: 'fixed', value: 'fixed', name: _x( 'Fixed', 'Name for the value of the CSS position property' ), - __experimentalHint: __( - 'The block will not move when the page is scrolled.' - ), + hint: __( 'The block will not move when the page is scrolled.' ), }; const POSITION_SIDES = [ 'top', 'right', 'bottom', 'left' ]; diff --git a/packages/block-library/CHANGELOG.md b/packages/block-library/CHANGELOG.md index 8c5e3320c99b28..8200d6005fe9a6 100644 --- a/packages/block-library/CHANGELOG.md +++ b/packages/block-library/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 9.3.0 (2024-07-10) + ## 9.2.0 (2024-06-26) ## 9.1.0 (2024-06-15) diff --git a/packages/block-library/package.json b/packages/block-library/package.json index 7a940fca79ba11..9102e822e59d1c 100644 --- a/packages/block-library/package.json +++ b/packages/block-library/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/block-library", - "version": "9.2.0", + "version": "9.3.0", "description": "Block library for the WordPress editor.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/block-library/src/navigation/edit/navigation-menu-delete-control.js b/packages/block-library/src/navigation/edit/navigation-menu-delete-control.js index 567e2a79abf4e5..dcef345581a765 100644 --- a/packages/block-library/src/navigation/edit/navigation-menu-delete-control.js +++ b/packages/block-library/src/navigation/edit/navigation-menu-delete-control.js @@ -41,6 +41,7 @@ export default function NavigationMenuDeleteControl( { onDelete } ) { setIsConfirmDialogVisible( false ); } } confirmButtonText={ __( 'Delete' ) } + size="medium" > { __( 'Are you sure you want to delete this Navigation Menu?' diff --git a/packages/block-library/src/query/utils.js b/packages/block-library/src/query/utils.js index 5dac08b81c3536..73af87f684e2a4 100644 --- a/packages/block-library/src/query/utils.js +++ b/packages/block-library/src/query/utils.js @@ -213,6 +213,7 @@ export const getTransformedBlocksFromPattern = ( ) => { const { query: { postType, inherit }, + namespace, } = queryBlockAttributes; const clonedBlocks = blocks.map( ( block ) => cloneBlock( block ) ); const queryClientIds = []; @@ -225,6 +226,9 @@ export const getTransformedBlocksFromPattern = ( postType, inherit, }; + if ( namespace ) { + block.attributes.namespace = namespace; + } queryClientIds.push( block.clientId ); } block.innerBlocks?.forEach( ( innerBlock ) => { diff --git a/packages/block-serialization-default-parser/CHANGELOG.md b/packages/block-serialization-default-parser/CHANGELOG.md index 368b0b5c91fe2c..e03be10bf1ef88 100644 --- a/packages/block-serialization-default-parser/CHANGELOG.md +++ b/packages/block-serialization-default-parser/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 5.3.0 (2024-07-10) + ## 5.2.0 (2024-06-26) ## 5.1.0 (2024-06-15) diff --git a/packages/block-serialization-default-parser/package.json b/packages/block-serialization-default-parser/package.json index ce1a6f738c0763..cecbecde177718 100644 --- a/packages/block-serialization-default-parser/package.json +++ b/packages/block-serialization-default-parser/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/block-serialization-default-parser", - "version": "5.2.0", + "version": "5.3.0", "description": "Block serialization specification parser for WordPress posts.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/block-serialization-spec-parser/CHANGELOG.md b/packages/block-serialization-spec-parser/CHANGELOG.md index 4e2f19c426c853..d150b6a0333dfd 100644 --- a/packages/block-serialization-spec-parser/CHANGELOG.md +++ b/packages/block-serialization-spec-parser/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 5.3.0 (2024-07-10) + ## 5.2.0 (2024-06-26) ## 5.1.0 (2024-06-15) diff --git a/packages/block-serialization-spec-parser/package.json b/packages/block-serialization-spec-parser/package.json index 560cbe7a288b23..6a9ca868a938fb 100644 --- a/packages/block-serialization-spec-parser/package.json +++ b/packages/block-serialization-spec-parser/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/block-serialization-spec-parser", - "version": "5.2.0", + "version": "5.3.0", "description": "Block serialization specification parser for WordPress posts.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/blocks/CHANGELOG.md b/packages/blocks/CHANGELOG.md index d09d203e56ef40..618a6015ce00e2 100644 --- a/packages/blocks/CHANGELOG.md +++ b/packages/blocks/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 13.3.0 (2024-07-10) + ## 13.2.0 (2024-06-26) ## 13.1.0 (2024-06-15) diff --git a/packages/blocks/package.json b/packages/blocks/package.json index dbd3471c74d170..f7f23cdd671b9f 100644 --- a/packages/blocks/package.json +++ b/packages/blocks/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/blocks", - "version": "13.2.0", + "version": "13.3.0", "description": "Block API for WordPress.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/browserslist-config/CHANGELOG.md b/packages/browserslist-config/CHANGELOG.md index 55367687bd8843..39283b8e3aa38e 100644 --- a/packages/browserslist-config/CHANGELOG.md +++ b/packages/browserslist-config/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 6.3.0 (2024-07-10) + ## 6.2.0 (2024-06-26) ## 6.1.0 (2024-06-15) diff --git a/packages/browserslist-config/package.json b/packages/browserslist-config/package.json index 62c4d589878d8a..d5365f24c58b4f 100644 --- a/packages/browserslist-config/package.json +++ b/packages/browserslist-config/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/browserslist-config", - "version": "6.2.0", + "version": "6.3.0", "description": "WordPress Browserslist shared configuration.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/commands/CHANGELOG.md b/packages/commands/CHANGELOG.md index 51c44022cdd37c..0225c5b3697497 100644 --- a/packages/commands/CHANGELOG.md +++ b/packages/commands/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 1.3.0 (2024-07-10) + ## 1.2.0 (2024-06-26) ## 1.1.0 (2024-06-15) diff --git a/packages/commands/package.json b/packages/commands/package.json index 9293229379a9e3..cca943aaafe0d0 100644 --- a/packages/commands/package.json +++ b/packages/commands/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/commands", - "version": "1.2.0", + "version": "1.3.0", "description": "Handles the commands menu.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md index 604a709d290f9e..3699162feb5109 100644 --- a/packages/components/CHANGELOG.md +++ b/packages/components/CHANGELOG.md @@ -2,8 +2,19 @@ ## Unreleased +### Internal + +- `CustomSelectControlV2`: animate select popover appearance. ([#63343](https://github.com/WordPress/gutenberg/pull/63343)) + +### Enhancements + +- `CustomSelectControl`: Stabilize `__experimentalShowSelectedHint` and `options[]. __experimentalHint` props ([#63248](https://github.com/WordPress/gutenberg/pull/63248)). + +## 28.3.0 (2024-07-10) + ### Enhancements +- `Tabs`: hyphenate tab labels ([#63337](https://github.com/WordPress/gutenberg/pull/63337)). - `Tooltip`: Add support for `className` prop ([#63157](https://github.com/WordPress/gutenberg/pull/63157)). - `Toolbar`: Add support for `vertical` orientation ([#60123](https://github.com/WordPress/gutenberg/pull/60123)). - `BaseControl`: forward ref on `VisualLabel` ([#63169](https://github.com/WordPress/gutenberg/pull/63169)). diff --git a/packages/components/package.json b/packages/components/package.json index cf2db01951948c..e14bf953bdb66a 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/components", - "version": "28.2.0", + "version": "28.3.0", "description": "UI components for WordPress.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/components/src/custom-select-control-v2/legacy-component/index.tsx b/packages/components/src/custom-select-control-v2/legacy-component/index.tsx index a4c437be97e405..7dcdec9b7bdc60 100644 --- a/packages/components/src/custom-select-control-v2/legacy-component/index.tsx +++ b/packages/components/src/custom-select-control-v2/legacy-component/index.tsx @@ -12,9 +12,31 @@ import CustomSelectItem from '../item'; import type { LegacyCustomSelectProps } from '../types'; import * as Styled from '../styles'; +function useDeprecatedProps( { + __experimentalShowSelectedHint, + ...otherProps +}: LegacyCustomSelectProps ) { + return { + showSelectedHint: __experimentalShowSelectedHint, + ...otherProps, + }; +} + +// The removal of `__experimentalHint` in favour of `hint` doesn't happen in +// the `useDeprecatedProps` hook in order not to break consumers that rely +// on object identity (see https://github.com/WordPress/gutenberg/pull/63248#discussion_r1672213131) +function applyOptionDeprecations( { + __experimentalHint, + ...rest +}: LegacyCustomSelectProps[ 'options' ][ number ] ) { + return { + hint: __experimentalHint, + ...rest, + }; +} + function CustomSelectControl( props: LegacyCustomSelectProps ) { const { - __experimentalShowSelectedHint = false, __next40pxDefaultSize = false, describedBy, options, @@ -22,8 +44,9 @@ function CustomSelectControl( props: LegacyCustomSelectProps ) { size = 'default', value, className: classNameProp, + showSelectedHint = false, ...restProps - } = props; + } = useDeprecatedProps( props ); // Forward props + store from v2 implementation const store = Ariakit.useSelectStore( { @@ -60,8 +83,9 @@ function CustomSelectControl( props: LegacyCustomSelectProps ) { defaultValue: options[ 0 ]?.name, } ); - const children = options.map( - ( { name, key, __experimentalHint, style, className } ) => { + const children = options + .map( applyOptionDeprecations ) + .map( ( { name, key, hint, style, className } ) => { const withHint = ( { name } @@ -69,7 +93,7 @@ function CustomSelectControl( props: LegacyCustomSelectProps ) { // TODO: Legacy classname. Add V1 styles are removed from the codebase // className="components-custom-select-control__item-hint" > - { __experimentalHint } + { hint } ); @@ -78,7 +102,7 @@ function CustomSelectControl( props: LegacyCustomSelectProps ) { ); - } - ); + } ); const renderSelectedValueHint = () => { const { value: currentValue } = store.getState(); - const currentHint = options?.find( - ( { name } ) => currentValue === name - ); + const selectedOptionHint = options + ?.map( applyOptionDeprecations ) + ?.find( ( { name } ) => currentValue === name )?.hint; return ( { currentValue } - - { currentHint?.__experimentalHint } - + { selectedOptionHint && ( + + { selectedOptionHint } + + ) } ); }; @@ -131,9 +156,7 @@ function CustomSelectControl( props: LegacyCustomSelectProps ) { <_CustomSelect aria-describedby={ describedBy } renderSelectedValue={ - __experimentalShowSelectedHint - ? renderSelectedValueHint - : undefined + showSelectedHint ? renderSelectedValueHint : undefined } size={ translatedSize } store={ store } diff --git a/packages/components/src/custom-select-control-v2/legacy-component/test/index.tsx b/packages/components/src/custom-select-control-v2/legacy-component/test/index.tsx index 1e361236aafd9a..496b42572d82f6 100644 --- a/packages/components/src/custom-select-control-v2/legacy-component/test/index.tsx +++ b/packages/components/src/custom-select-control-v2/legacy-component/test/index.tsx @@ -297,7 +297,7 @@ describe.each( [ { key: 'one', name: 'One', - __experimentalHint: 'Hint', + hint: 'Hint', }, ] } /> @@ -309,7 +309,7 @@ describe.each( [ ); } ); - it( 'shows selected hint when __experimentalShowSelectedHint is set', async () => { + it( 'shows selected hint when showSelectedHint is set', async () => { render( ); @@ -334,7 +334,7 @@ describe.each( [ ); } ); - it( 'shows selected hint in list of options when added, regardless of __experimentalShowSelectedHint prop', async () => { + it( 'shows selected hint in list of options when added, regardless of showSelectedHint prop', async () => { render( diff --git a/packages/components/src/custom-select-control-v2/styles.ts b/packages/components/src/custom-select-control-v2/styles.ts index 7296d5bc6359a7..701f69aa5757bd 100644 --- a/packages/components/src/custom-select-control-v2/styles.ts +++ b/packages/components/src/custom-select-control-v2/styles.ts @@ -2,7 +2,7 @@ * External dependencies */ import * as Ariakit from '@ariakit/react'; -import { css } from '@emotion/react'; +import { css, keyframes } from '@emotion/react'; import styled from '@emotion/styled'; /** * Internal dependencies @@ -13,6 +13,13 @@ import { chevronIconSize } from '../select-control/styles/select-control-styles' import { fontSizeStyles } from '../input-control/styles/input-control-styles'; import type { CustomSelectButtonSize } from './types'; +// TODO: extract to common utils and apply to relevant components +const ANIMATION_PARAMS = { + SLIDE_AMOUNT: '2px', + DURATION: '400ms', + EASING: 'cubic-bezier( 0.16, 1, 0.3, 1 )', +}; + const INLINE_PADDING = { compact: 8, // space(2) small: 8, // space(2) @@ -98,6 +105,14 @@ export const Select = styled( Ariakit.Select, { ` ); +const slideDownAndFade = keyframes( { + '0%': { + opacity: 0, + transform: `translateY(-${ ANIMATION_PARAMS.SLIDE_AMOUNT })`, + }, + '100%': { opacity: 1, transform: 'translateY(0)' }, +} ); + export const SelectPopover = styled( Ariakit.SelectPopover )` display: flex; flex-direction: column; @@ -113,11 +128,21 @@ export const SelectPopover = styled( Ariakit.SelectPopover )` overflow: auto; overscroll-behavior: contain; - // The smallest size without overflowing the container. + /* The smallest size without overflowing the container. */ min-width: min-content; + /* Animation */ + animation-duration: ${ ANIMATION_PARAMS.DURATION }; + animation-timing-function: ${ ANIMATION_PARAMS.EASING }; + animation-name: ${ slideDownAndFade }; + will-change: transform, opacity; + @media ( prefers-reduced-motion ) { + animation-duration: 0s; + } + &[data-focus-visible] { - outline: none; // outline will be on the trigger, rather than the popover + /* The outline will be on the trigger, rather than the popover. */ + outline: none; } `; diff --git a/packages/components/src/custom-select-control-v2/types.ts b/packages/components/src/custom-select-control-v2/types.ts index b663f1892ceebc..95a78c501839d6 100644 --- a/packages/components/src/custom-select-control-v2/types.ts +++ b/packages/components/src/custom-select-control-v2/types.ts @@ -90,6 +90,12 @@ type LegacyOption = { name: string; style?: React.CSSProperties; className?: string; + hint?: string; + /** + * Use the `hint` property instead + * @deprecated + * @ignore + */ __experimentalHint?: string; [ key: string ]: any; }; @@ -169,11 +175,17 @@ export type LegacyCustomSelectProps = { */ value?: LegacyOption; /** - * Legacy way to add additional text to the right of each option. + * Use the `showSelectedHint` property instead. + * @deprecated + * @ignore + */ + __experimentalShowSelectedHint?: boolean; + /** + * Show the hint of the selected item in the trigger button. * * @default false */ - __experimentalShowSelectedHint?: boolean; + showSelectedHint?: boolean; /** * Opt-in prop for an unconstrained width style which became the default in * WordPress 6.5. The prop is no longer needed and can be safely removed. diff --git a/packages/components/src/font-size-picker/font-size-picker-select.tsx b/packages/components/src/font-size-picker/font-size-picker-select.tsx index 3f0b7a0e54074a..4dd80b45b0ac70 100644 --- a/packages/components/src/font-size-picker/font-size-picker-select.tsx +++ b/packages/components/src/font-size-picker/font-size-picker-select.tsx @@ -56,7 +56,7 @@ const FontSizePickerSelect = ( props: FontSizePickerSelectProps ) => { key: fontSize.slug, name: fontSize.name || fontSize.slug, value: fontSize.size, - __experimentalHint: hint, + hint, }; } ), ...( disableCustomFontSizes ? [] : [ CUSTOM_OPTION ] ), @@ -79,7 +79,7 @@ const FontSizePickerSelect = ( props: FontSizePickerSelectProps ) => { ) } options={ options } value={ selectedOption } - __experimentalShowSelectedHint + showSelectedHint onChange={ ( { selectedItem, }: { diff --git a/packages/components/src/font-size-picker/types.ts b/packages/components/src/font-size-picker/types.ts index 6b4ed4b7ee75a5..0072c47df6f052 100644 --- a/packages/components/src/font-size-picker/types.ts +++ b/packages/components/src/font-size-picker/types.ts @@ -110,7 +110,7 @@ export type FontSizePickerSelectOption = { key: string; name: string; value?: FontSize[ 'size' ]; - __experimentalHint?: string; + hint?: string; }; export type FontSizePickerToggleGroupProps = Pick< diff --git a/packages/components/src/higher-order/navigate-regions/style.scss b/packages/components/src/higher-order/navigate-regions/style.scss index 5c3767e310b8f4..5fc1e210dea871 100644 --- a/packages/components/src/higher-order/navigate-regions/style.scss +++ b/packages/components/src/higher-order/navigate-regions/style.scss @@ -1,19 +1,7 @@ -// Allow the position to be easily overridden to e.g. fixed. - -@mixin region-selection-outline { - outline: 4px solid $components-color-accent; - outline-offset: -4px; -} +$regionOutlineRatio: 2; @mixin region-selection-focus { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - content: ""; - pointer-events: none; - @include region-selection-outline; + @include selected-block-focus( $regionOutlineRatio ); z-index: z-index(".is-focusing-regions {region} :focus::after"); } @@ -46,6 +34,6 @@ .interface-interface-skeleton__actions .editor-layout__toggle-publish-panel, .interface-interface-skeleton__actions .editor-layout__toggle-entities-saved-states-panel, .editor-post-publish-panel { - @include region-selection-outline; + @include selected-block-outline( $regionOutlineRatio ); } } diff --git a/packages/components/src/tabs/styles.ts b/packages/components/src/tabs/styles.ts index d6fb117a3032a0..88e54285d619b1 100644 --- a/packages/components/src/tabs/styles.ts +++ b/packages/components/src/tabs/styles.ts @@ -75,6 +75,7 @@ export const Tab = styled( Ariakit.Tab )` margin-left: 0; font-weight: 500; text-align: inherit; + hyphens: auto; &[aria-disabled='true'] { cursor: default; diff --git a/packages/compose/CHANGELOG.md b/packages/compose/CHANGELOG.md index 6e620f05d57575..f508fa376cbe8c 100644 --- a/packages/compose/CHANGELOG.md +++ b/packages/compose/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 7.3.0 (2024-07-10) + ### Internal - Method style type signatures have been changed to function style ([#62718](https://github.com/WordPress/gutenberg/pull/62718)). diff --git a/packages/compose/package.json b/packages/compose/package.json index 2f4ddbf49666a6..8a813ad58193d4 100644 --- a/packages/compose/package.json +++ b/packages/compose/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/compose", - "version": "7.2.0", + "version": "7.3.0", "description": "WordPress higher-order components (HOCs).", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/core-commands/CHANGELOG.md b/packages/core-commands/CHANGELOG.md index 77cf1361356a15..a8b6881e1e4b1e 100644 --- a/packages/core-commands/CHANGELOG.md +++ b/packages/core-commands/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 1.3.0 (2024-07-10) + ## 1.2.0 (2024-06-26) ## 1.1.0 (2024-06-15) diff --git a/packages/core-commands/package.json b/packages/core-commands/package.json index 4180b6c356aaf7..50b31ca327b282 100644 --- a/packages/core-commands/package.json +++ b/packages/core-commands/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/core-commands", - "version": "1.2.0", + "version": "1.3.0", "description": "WordPress core reusable commands.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/core-data/CHANGELOG.md b/packages/core-data/CHANGELOG.md index c9157fba03a8b7..5e5af54f0751e2 100644 --- a/packages/core-data/CHANGELOG.md +++ b/packages/core-data/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 7.3.0 (2024-07-10) + ## 7.2.0 (2024-06-26) ## 7.1.0 (2024-06-15) diff --git a/packages/core-data/package.json b/packages/core-data/package.json index cb8376461c0678..d94eb375287250 100644 --- a/packages/core-data/package.json +++ b/packages/core-data/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/core-data", - "version": "7.2.0", + "version": "7.3.0", "description": "Access to and manipulation of core WordPress entities.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/create-block-interactive-template/CHANGELOG.md b/packages/create-block-interactive-template/CHANGELOG.md index 49a507443e6ce8..e4e54865beb6be 100644 --- a/packages/create-block-interactive-template/CHANGELOG.md +++ b/packages/create-block-interactive-template/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 2.3.0 (2024-07-10) + ## 2.2.0 (2024-06-26) ## 2.1.0 (2024-06-15) diff --git a/packages/create-block-interactive-template/package.json b/packages/create-block-interactive-template/package.json index ebdd119306ee2a..c1b10109ed226a 100644 --- a/packages/create-block-interactive-template/package.json +++ b/packages/create-block-interactive-template/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/create-block-interactive-template", - "version": "2.2.0", + "version": "2.3.0", "description": "Template for @wordpress/create-block to create interactive blocks with the Interactivity API.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/create-block-tutorial-template/CHANGELOG.md b/packages/create-block-tutorial-template/CHANGELOG.md index b5ea985dd15d14..1181037e73f392 100644 --- a/packages/create-block-tutorial-template/CHANGELOG.md +++ b/packages/create-block-tutorial-template/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 4.3.0 (2024-07-10) + ## 4.2.0 (2024-06-26) ## 4.1.0 (2024-06-15) diff --git a/packages/create-block-tutorial-template/package.json b/packages/create-block-tutorial-template/package.json index 25baa61ca23944..095be8e8ca851f 100644 --- a/packages/create-block-tutorial-template/package.json +++ b/packages/create-block-tutorial-template/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/create-block-tutorial-template", - "version": "4.2.0", + "version": "4.3.0", "description": "This is a template for @wordpress/create-block that creates an example 'Copyright Date' block. This block is used in the official WordPress block development Quick Start Guide.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/create-block/CHANGELOG.md b/packages/create-block/CHANGELOG.md index 1c3e863de790e9..bcb86a1a377621 100644 --- a/packages/create-block/CHANGELOG.md +++ b/packages/create-block/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 4.46.0 (2024-07-10) + ## 4.45.0 (2024-06-26) ## 4.44.0 (2024-06-15) diff --git a/packages/create-block/package.json b/packages/create-block/package.json index 44d2a598f4181c..51f43884c54976 100644 --- a/packages/create-block/package.json +++ b/packages/create-block/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/create-block", - "version": "4.45.0", + "version": "4.46.0", "description": "Generates PHP, JS and CSS code for registering a block for a WordPress plugin.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/customize-widgets/CHANGELOG.md b/packages/customize-widgets/CHANGELOG.md index 946dfe3e7dde6a..362f67c48ae39f 100644 --- a/packages/customize-widgets/CHANGELOG.md +++ b/packages/customize-widgets/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 5.3.0 (2024-07-10) + ## 5.2.0 (2024-06-26) ## 5.1.0 (2024-06-15) diff --git a/packages/customize-widgets/package.json b/packages/customize-widgets/package.json index ec53f1efeaebcc..b68a9cf232a17a 100644 --- a/packages/customize-widgets/package.json +++ b/packages/customize-widgets/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/customize-widgets", - "version": "5.2.0", + "version": "5.3.0", "description": "Widgets blocks in Customizer Module for WordPress.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/data-controls/CHANGELOG.md b/packages/data-controls/CHANGELOG.md index 10a4d4dd758bbe..5ea9633e90217d 100644 --- a/packages/data-controls/CHANGELOG.md +++ b/packages/data-controls/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 4.3.0 (2024-07-10) + ## 4.2.0 (2024-06-26) ## 4.1.0 (2024-06-15) diff --git a/packages/data-controls/package.json b/packages/data-controls/package.json index de6cc8a8908c44..6a6dfc2fc09395 100644 --- a/packages/data-controls/package.json +++ b/packages/data-controls/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/data-controls", - "version": "4.2.0", + "version": "4.3.0", "description": "A set of common controls for the @wordpress/data api.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/data/CHANGELOG.md b/packages/data/CHANGELOG.md index 7f9b439774cecf..2de51f1f81539a 100644 --- a/packages/data/CHANGELOG.md +++ b/packages/data/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 10.3.0 (2024-07-10) + ## 10.2.0 (2024-06-26) ## 10.1.0 (2024-06-15) diff --git a/packages/data/package.json b/packages/data/package.json index 250e075a7972d6..a99cee1cc469e6 100644 --- a/packages/data/package.json +++ b/packages/data/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/data", - "version": "10.2.0", + "version": "10.3.0", "description": "Data module for WordPress.", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/dataviews/CHANGELOG.md b/packages/dataviews/CHANGELOG.md index 9d84283b802003..4ceccf3621ac29 100644 --- a/packages/dataviews/CHANGELOG.md +++ b/packages/dataviews/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 3.0.0 (2024-07-10) + ### Breaking Changes diff --git a/packages/dataviews/package.json b/packages/dataviews/package.json index c6213c42973eb0..f74bb3a8b06781 100644 --- a/packages/dataviews/package.json +++ b/packages/dataviews/package.json @@ -1,6 +1,6 @@ { "name": "@wordpress/dataviews", - "version": "2.2.0", + "version": "3.0.0", "description": "DataViews is a component that provides an API to render datasets using different types of layouts (table, grid, list, etc.).", "author": "The WordPress Contributors", "license": "GPL-2.0-or-later", diff --git a/packages/dataviews/src/layouts.ts b/packages/dataviews/src/layouts.ts index 0d00263b6fbc55..f8339c0a6b83f7 100644 --- a/packages/dataviews/src/layouts.ts +++ b/packages/dataviews/src/layouts.ts @@ -16,6 +16,7 @@ import ViewTable from './view-table'; import ViewGrid from './view-grid'; import ViewList from './view-list'; import { LAYOUT_GRID, LAYOUT_LIST, LAYOUT_TABLE } from './constants'; +import type { View } from './types'; export const VIEW_LAYOUTS = [ { @@ -37,3 +38,29 @@ export const VIEW_LAYOUTS = [ icon: isRTL() ? formatListBulletsRTL : formatListBullets, }, ]; + +export function getMandatoryFields( view: View ): string[] { + if ( view.type === 'table' ) { + return [ view.layout?.primaryField ] + .concat( + view.layout?.combinedFields?.flatMap( + ( field ) => field.children + ) ?? [] + ) + .filter( ( item ): item is string => !! item ); + } + + if ( view.type === 'grid' ) { + return [ view.layout?.primaryField, view.layout?.mediaField ].filter( + ( item ): item is string => !! item + ); + } + + if ( view.type === 'list' ) { + return [ view.layout?.primaryField, view.layout?.mediaField ].filter( + ( item ): item is string => !! item + ); + } + + return []; +} diff --git a/packages/dataviews/src/stories/fixtures.js b/packages/dataviews/src/stories/fixtures.js index 133f8d3fea573c..cb107e56969d17 100644 --- a/packages/dataviews/src/stories/fixtures.js +++ b/packages/dataviews/src/stories/fixtures.js @@ -167,20 +167,17 @@ export const fields = [ ); }, - width: 50, enableSorting: false, }, { header: 'Title', id: 'title', - maxWidth: 400, enableHiding: false, enableGlobalSearch: true, }, { header: 'Type', id: 'type', - maxWidth: 400, enableHiding: false, elements: [ { value: 'Not a planet', label: 'Not a planet' }, @@ -197,7 +194,6 @@ export const fields = [ { header: 'Description', id: 'description', - maxWidth: 200, enableSorting: false, enableGlobalSearch: true, }, diff --git a/packages/dataviews/src/stories/index.story.js b/packages/dataviews/src/stories/index.story.js index c04e89a92baa85..8a5ccd83450237 100644 --- a/packages/dataviews/src/stories/index.story.js +++ b/packages/dataviews/src/stories/index.story.js @@ -39,6 +39,20 @@ Default.args = { [ LAYOUT_TABLE ]: { layout: { primaryField: 'title', + styles: { + image: { + width: 50, + }, + title: { + maxWidth: 400, + }, + type: { + maxWidth: 400, + }, + description: { + maxWidth: 200, + }, + }, }, }, [ LAYOUT_GRID ]: { diff --git a/packages/dataviews/src/style.scss b/packages/dataviews/src/style.scss index 35e7baa92d378e..de2dcf027c2060 100644 --- a/packages/dataviews/src/style.scss +++ b/packages/dataviews/src/style.scss @@ -91,7 +91,7 @@ padding: $grid-unit-15; white-space: nowrap; - &[data-field-id="actions"] { + &.dataviews-view-table__actions-column { text-align: right; } @@ -100,7 +100,7 @@ } } tr { - border-bottom: 1px solid $gray-100; + border-top: 1px solid $gray-100; .dataviews-view-table-header-button { gap: $grid-unit-05; @@ -164,6 +164,11 @@ background-color: rgba(var(--wp-admin-theme-color--rgb), 0.04); color: $gray-700; + &, + & + tr { + border-top: 1px solid rgba(var(--wp-admin-theme-color--rgb), 0.12); + } + &:hover { background-color: rgba(var(--wp-admin-theme-color--rgb), 0.08); } @@ -179,7 +184,6 @@ } th { background-color: $white; - box-shadow: inset 0 -#{$border-width} 0 $gray-100; padding-top: $grid-unit-10; padding-bottom: $grid-unit-10; padding-left: $grid-unit-15; @@ -211,6 +215,10 @@ } } } + + .components-v-stack > .dataviews-view-table__cell-content-wrapper:not(:first-child) { + min-height: 0; + } } .dataviews-view-table-header-button { padding: $grid-unit-05 $grid-unit-10; @@ -421,10 +429,24 @@ } .dataviews-view-list__item-actions { + position: absolute; + top: $grid-unit-20; + right: 0; + + + > div { + height: $button-size-small; + } + .components-button { opacity: 0; - position: fixed; - right: 0; + } + } + + &:has(.dataviews-view-list__fields:empty) { + .dataviews-view-list__item-actions { + top: 50%; + transform: translateY(-50%); } } @@ -432,16 +454,30 @@ &.is-hovered, &:focus-within { .dataviews-view-list__item-actions { - padding-right: $grid-unit-30; + background: #f8f8f8; + padding-left: $grid-unit-10; + margin-right: $grid-unit-30; + box-shadow: -12px 0 8px 0 #f8f8f8; .components-button { opacity: 1; position: static; } } + } + + &.is-selected { + .dataviews-view-list__item-actions { + background-color: rgb(247 248 255); + box-shadow: -12px 0 8px 0 rgb(247 248 255); + } + } + + &.is-selected.is-selected { + border-top: 1px solid rgba(var(--wp-admin-theme-color--rgb), 0.12); - .dataviews-view-list__item { - padding-right: 0; + & + li { + border-top: 1px solid rgba(var(--wp-admin-theme-color--rgb), 0.12); } } @@ -477,7 +513,7 @@ } .dataviews-view-list__item { - padding: $grid-unit-20 0 $grid-unit-20 $grid-unit-30; + padding: $grid-unit-20 $grid-unit-30; width: 100%; scroll-margin: $grid-unit-10 0; @@ -494,15 +530,15 @@ } } .dataviews-view-list__primary-field { - min-height: $grid-unit-05 * 5; - line-height: $grid-unit-05 * 5; + min-height: $grid-unit-30; + line-height: $grid-unit-30; overflow: hidden; } } .dataviews-view-list__media-wrapper { - width: $grid-unit-50; - height: $grid-unit-50; + width: $grid-unit-05 * 13; + height: $grid-unit-05 * 13; overflow: hidden; position: relative; flex-shrink: 0; @@ -533,13 +569,22 @@ background-color: $gray-200; } + .dataviews-view-list__field-wrapper { + min-height: $grid-unit-05 * 13; // Ensures title is centrally aligned when all fields are hidden + } + .dataviews-view-list__fields { color: $gray-700; display: flex; gap: $grid-unit-10; + row-gap: $grid-unit-05; flex-wrap: wrap; font-size: 12px; + &:empty { + display: none; + } + .dataviews-view-list__field { &:has(.dataviews-view-list__field-value:empty) { display: none; @@ -548,12 +593,8 @@ .dataviews-view-list__field-value { line-height: $grid-unit-05 * 6; - display: inline-flex; } } - .dataviews-view-list__item-actions { - padding-right: $grid-unit-30; - } & + .dataviews-pagination { justify-content: space-between; diff --git a/packages/dataviews/src/types.ts b/packages/dataviews/src/types.ts index 9cc9ffb0f76c0c..8e2626245682e6 100644 --- a/packages/dataviews/src/types.ts +++ b/packages/dataviews/src/types.ts @@ -75,21 +75,6 @@ export type Field< Item > = { */ render?: ( args: { item: Item } ) => ReactNode; - /** - * The width of the field column. - */ - width?: string | number; - - /** - * The minimum width of the field column. - */ - maxWidth?: string | number; - - /** - * The maximum width of the field column. - */ - minWidth?: string | number; - /** * Whether the field is sortable. */ @@ -249,11 +234,44 @@ interface ViewBase { perPage?: number; /** - * The hidden fields. + * The fields to render */ fields?: string[]; } +export interface CombinedField { + id: string; + + header: string; + + /** + * The fields to use as columns. + */ + children: string[]; + + /** + * The direction of the stack. + */ + direction: 'horizontal' | 'vertical'; +} + +export interface ColumnStyle { + /** + * The width of the field column. + */ + width?: string | number; + + /** + * The minimum width of the field column. + */ + maxWidth?: string | number; + + /** + * The maximum width of the field column. + */ + minWidth?: string | number; +} + export interface ViewTable extends ViewBase { type: 'table'; @@ -264,9 +282,14 @@ export interface ViewTable extends ViewBase { primaryField?: string; /** - * The field to use as the media field. + * The fields to use as columns. */ - mediaField?: string; + combinedFields?: CombinedField[]; + + /** + * The styles for the columns. + */ + styles?: Record< string, ColumnStyle >; }; } diff --git a/packages/dataviews/src/view-actions.tsx b/packages/dataviews/src/view-actions.tsx index fd9aff28b6479b..0493cfb5efea1f 100644 --- a/packages/dataviews/src/view-actions.tsx +++ b/packages/dataviews/src/view-actions.tsx @@ -20,7 +20,7 @@ import { cog } from '@wordpress/icons'; */ import { unlock } from './lock-unlock'; import { SORTING_DIRECTIONS, sortLabels } from './constants'; -import { VIEW_LAYOUTS } from './layouts'; +import { VIEW_LAYOUTS, getMandatoryFields } from './layouts'; import type { NormalizedField, View, SupportedLayouts } from './types'; const { @@ -147,10 +147,11 @@ function FieldsVisibilityMenu< Item >( { onChangeView, fields, }: FieldsVisibilityMenuProps< Item > ) { + const mandatoryFields = getMandatoryFields( view ); const hidableFields = fields.filter( ( field ) => field.enableHiding !== false && - field.id !== view?.layout?.mediaField + ! mandatoryFields.includes( field.id ) ); const viewFields = view.fields || fields.map( ( field ) => field.id ); if ( ! hidableFields?.length ) { diff --git a/packages/dataviews/src/view-list.tsx b/packages/dataviews/src/view-list.tsx index 7e8491f5c7780f..b094e9a74c0834 100644 --- a/packages/dataviews/src/view-list.tsx +++ b/packages/dataviews/src/view-list.tsx @@ -152,7 +152,10 @@ function ListItem< Item >( {
) }
- + ( { { eligibleActions?.length > 0 && ( ( { isDestructive={ primaryAction.isDestructive } - size="compact" + size="small" onClick={ () => setIsModalOpen( true ) } @@ -236,7 +239,7 @@ function ListItem< Item >( { isDestructive={ primaryAction.isDestructive } - size="compact" + size="small" onClick={ () => { primaryAction.callback( [ item ], @@ -255,7 +258,7 @@ function ListItem< Item >( { store={ store } render={