Skip to content

DropdownMenu: Match initial focus to the opening interaction - #85486

Open
ciampo wants to merge 3 commits into
trunkfrom
codex/dropdown-menu-opening-focus
Open

ciampo wants to merge 3 commits into
trunkfrom
codex/dropdown-menu-opening-focus

Conversation

@ciampo

@ciampo ciampo commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Split from #84583. This PR targets trunk independently.

What?

Focus the DropdownMenu container when opening with a pointer. Keyboard and virtual activation keep first-item focus, and arrow keys can enter a pointer-opened menu.

Why?

Pointer opening should not highlight the first item before the pointer reaches an item.

How?

Choose the default Popover focus mode from the opening event and move pointer focus to the semantic menu. Reset that choice on close. Explicit focusOnMount values and consumer focus handlers retain precedence. Container entry is limited to menu arrow keys, preserving native Tab and Shift+Tab navigation.

The two existing editor E2E flows now enter the pointer-opened menu with ArrowDown before checking first-item focus. No test files or test bodies were added.

Testing Instructions

  1. Open DropdownMenu Default with a pointer. The menu should have focus without focusing its first item.
  2. Press ArrowDown to enter the first item, or reopen and press ArrowUp to enter the last. Escape should close the menu and restore trigger focus.
  3. Repeat in the editor's List View block settings menu and the classic Site Editor's Add Pattern menu.
  4. Check explicit popoverProps.focusOnMount settings and consumer focus handlers. A later controlled opening should use the default first-item focus.

Testing Instructions for Keyboard

  1. Tab to a DropdownMenu trigger. Enter, Space, and ArrowDown should open and focus the first item.
  2. Navigate and select an item, then reopen and dismiss with Escape. Focus should return to the trigger.
  3. Focus the root of a TabbableContainer cycle={false}. Shift+Tab should leave it; Tab should enter its first tab stop.
Verification and limits

Existing dropdown, Popover, and navigation tests passed, along with typecheck, lint, and the production build. CLI browser checks cover pointer and keyboard opening, arrow entry, focus return, explicit focus settings, custom focus targets, controlled reopening, and Tab navigation. A synthetic empty-pointer-type click with nonzero detail checks virtual activation handling; actual screen readers and real touch hardware remain untested.

The two edited editor E2E flows could not run locally because Docker exhausted its default address pools while creating the test environment. Their pointer-opened menus now explicitly receive ArrowDown before first-item assertions, including the locked-block case. CI still needs to verify the final E2E update.

Screenshots or screencast

Standalone DropdownMenu Default, basic global CSS, 520 × 330.

Pointer opening Keyboard opening
Pointer opening focuses the menu container Keyboard opening focuses the first item

Use of AI Tools

Implemented, reviewed, and verified with Codex. I reviewed the changes and remain responsible for them.

@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

🤖 PR meta 🤖

Preview in WordPress Playground

🎉 Props

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: ciampo <mciampini@git.wordpress.org>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

Updated as activity occurs, without notifying anyone named here. Add the props-bot label to refresh.

📦 Bundle size

Size Change: +287 B (0%)

Total Size: 9.07 MB

📦 View Changed
Filename Size Change
build/scripts/components/index.min.js 373 kB +287 B (+0.08%)

dd857a7 Run

⚡ Performance

Show the results

Client side metrics exclude the server response time.

front-end-block-theme

Metric fa5993f trunk % Change
timeToFirstByte 37.35 ms +6.83% -3.08% 34.35 ms +13.1% -2.33% 8.73%
largestContentfulPaint 72 ms +0% -5.56% 60 ms +6.67% -0% 20%
lcpMinusTtfb 31.85 ms +11.62% -13.5% 25.4 ms +6.3% -6.1% 25.39%
wpBeforeTemplate 19.68 ms +12.5% -3.2% 18.06 ms +20.49% -1.22% 8.97%
wpTemplate 14.29 ms +8.33% -1.54% 12.88 ms +4.43% -2.41% 10.95%
wpTotal 34.1 ms +7.8% -2.64% 31.35 ms +13.88% -2.68% 8.77%
wpMemoryUsage 7.68 MB +0% -0% 7.65 MB +0% -0% 0.42%
wpDbQueries 16 +0% -0% 16 +0% -0% 0%

front-end-classic-theme

Metric fa5993f trunk % Change
timeToFirstByte 29.2 ms +17.98% -5.99% 30.35 ms +8.4% -5.93% -3.79%
largestContentfulPaint 66 ms +6.06% -3.03% 68 ms +5.88% -0% -2.94%
lcpMinusTtfb 36.2 ms +10.5% -3.73% 37.65 ms +6.37% -1.33% -3.85%
wpBeforeTemplate 17.84 ms +13.9% -5.77% 16.97 ms +9.49% -5.48% 5.13%
wpTemplate 8.81 ms +4.77% -9.19% 10.09 ms +12.88% -2.28% -12.69%
wpTotal 26.73 ms +17.21% -6.29% 27.82 ms +8.2% -6.72% -3.92%
wpMemoryUsage 6.26 MB +0% -0% 6.34 MB +0% -0% -1.24%
wpDbQueries 9 +0% -0% 13 +0% -0% -30.77%

media-processing

Metric fa5993f trunk % Change
mediaProcessingJpeg 228.63 ms +2.2% -1.39% 230.4 ms +5.76% -0.91% -0.77%
mediaProcessingAvif 3725.68 ms +0.69% -0.26% 3684.38 ms +2.09% -1.31% 1.12%
mediaProcessingJpegToAvif 2586.95 ms +0.55% -0.69% 2578.72 ms +3.22% -1.93% 0.32%

media-upload

Metric fa5993f trunk % Change
jpegUploadProcessing 1399.79 ms +1.98% -0.17% 1375.15 ms +1.74% -32.55% 1.79%
pngUploadProcessing 181.5 ms +2.93% -4.31% 191.06 ms +4.3% -3.87% -5%
largeJpegUploadProcessing 1404.5 ms +0.72% -33.6% 1425.26 ms +0.75% -1.76% -1.46%
multipleImageUploadProcessing 1456.61 ms +2.25% -0.77% 1509.98 ms +2.65% -1.89% -3.53%

post-editor

Metric fa5993f trunk % Change
serverResponse 351.89 ms +5.19% -5.11% 371.13 ms +3.19% -8.1% -5.18%
firstPaint 396.46 ms +4.73% -41.87% 224.5 ms +87.8% -19.72% 76.6%
domContentLoaded 954.28 ms +2.05% -1.5% 956.66 ms +1.99% -1.76% -0.25%
loaded 955.12 ms +2.07% -1.51% 957.65 ms +1.99% -1.78% -0.26%
firstContentfulPaint 419.55 ms +2.71% -1.85% 417.52 ms +3.08% -13.72% 0.49%
firstBlock 2603.86 ms +2.88% -3.22% 2657.44 ms +2.66% -2.1% -2.02%
type 15.83 ms +5.56% -6.89% 15.44 ms +2.78% -3.63% 2.53%
typeWithoutInspector 15.08 ms +9.15% -4.58% 15.53 ms +7.34% -6.5% -2.9%
typeWithTopToolbar 19.98 ms +4.85% -1.05% 21.47 ms +2.19% -4.01% -6.94%
typeContainer 7.35 ms +8.57% -3.13% 7.66 ms +11.23% -6.01% -4.05%
focus 98.01 ms +3.38% -4.7% 100.46 ms +5.68% -3.43% -2.44%
firstFocus 176.02 ms +0% -0% 191.8 ms +0% -0% -8.23%
selectAll 354.61 ms +7.03% -0.07% 358.51 ms +3.26% -1.94% -1.09%
listViewOpen 61.82 ms +8.65% -2.14% 60.48 ms +5.61% -3.26% 2.22%
inserterOpen 36.66 ms +4.45% -4.15% 36.64 ms +7.81% -4.97% 0.05%
inserterHover 9.5 ms +8.11% -8.63% 10.14 ms +3.85% -9.57% -6.31%
inserterSearch 7.43 ms +4.98% -4.31% 8.16 ms +12.75% -7.72% -8.95%
loadPatterns 546.5 ms +2.11% -2.13% 553.35 ms +2.24% -1.38% -1.24%
wpTotal 343.81 ms +5.19% -5.21% 361.93 ms +3.54% -8.06% -5.01%
wpMemoryUsage 14.71 MB +0% -0% 14.68 MB +0% -0% 0.24%
wpDbQueries 55 +0% -0% 55 +0% -0% 0%

site-editor

Metric fa5993f trunk % Change
serverResponse 496.8 ms +5.36% -6.86% 491.21 ms +4.78% -6.22% 1.14%
firstPaint 246.33 ms +8.41% -10.27% 275.66 ms +20.59% -13.02% -10.64%
domContentLoaded 1254.36 ms +1% -1.29% 1261.57 ms +1.08% -0.54% -0.57%
loaded 1255.63 ms +0.98% -1.32% 1262.65 ms +1.09% -0.53% -0.56%
firstContentfulPaint 501.63 ms +2.83% -8.14% 509.73 ms +1.79% -3.68% -1.59%
firstBlock 4528.52 ms +0.2% -0.83% 4523.22 ms +0.66% -1.07% 0.12%
type 17.88 ms +2.4% -1.68% 17.12 ms +5.08% -4.96% 4.44%
navigate 110.28 ms +8.85% -3.52% 112.87 ms +7.22% -2.33% -2.29%
loadPatterns 1179.53 ms +7.86% -4.29% 1184.57 ms +8.91% -7.14% -0.43%
loadPages 970.21 ms +2.08% -4.19% 951.25 ms +1.57% -0.55% 1.99%
wpTotal 487.33 ms +5.46% -6.86% 481.76 ms +4.99% -6.41% 1.16%
wpMemoryUsage 12.73 MB +0% -0% 12.70 MB +0% -0% 0.2%
wpDbQueries 44 +2.27% -0% 44 +2.27% -0% 0%

dd857a7 Run

🏁 Flaky tests

Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

Custom Completer: should allow newlines after multiple option completions in /test/e2e/specs/editor/various/autocomplete-and-mentions.spec.js, passed after 1 failed attempt.
Error: expect(received).toBe(expected) // Object.is equality

- Expected  - 2
+ Received  + 2

  <!-- wp:paragraph -->
  <p>🫐 test</p>
  <!-- /wp:paragraph -->

  <!-- wp:paragraph -->
- <p>🫐 test</p>
+ <p>🍎 test</p>
  <!-- /wp:paragraph -->

  <!-- wp:paragraph -->
  <p>🫐 test</p>
  <!-- /wp:paragraph -->

  <!-- wp:paragraph -->
- <p>🫐 test</p>
+ <p>🍎 test</p>
  <!-- /wp:paragraph -->

  <!-- wp:paragraph -->
  <p></p>
  <!-- /wp:paragraph -->

Call Log:
- Timeout 5000ms exceeded while waiting on the predicate
    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/various/autocomplete-and-mentions.spec.js:466:6
Custom Completer: should not insert disabled options in /test/e2e/specs/editor/various/autocomplete-and-mentions.spec.js, passed after 1 failed attempt.
Error: expect(received).toBe(expected) // Object.is equality

- Expected  - 1
+ Received  + 1

  <!-- wp:paragraph -->
- <p>Sorry, we are all out of ~g grapes.</p>
+ <p>Sorry, we are all out of 🍎 grapes.</p>
  <!-- /wp:paragraph -->

Call Log:
- Timeout 5000ms exceeded while waiting on the predicate
    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/various/autocomplete-and-mentions.spec.js:391:7
Delete (forward) in /test/e2e/specs/editor/blocks/list.spec.js, passed after 1 failed attempt.
Error: expect(received).toMatchObject(expected)

- Expected  -  5
+ Received  + 11

@@ -1,25 +1,31 @@
  Array [
    Object {
      "innerBlocks": Array [
        Object {
          "attributes": Object {
-           "content": "1",
+           "content": "1‸a",
          },
-         "innerBlocks": Array [
+         "innerBlocks": Array [],
+         "name": "core/list-item",
+       },
        Object {
+         "attributes": Object {
+           "content": "2",
+         },
          "innerBlocks": Array [
            Object {
              "attributes": Object {
-                   "content": "a‸2",
+               "ordered": false,
+               "values": "",
              },
-                 "name": "core/list-item",
-               },
+             "innerBlocks": Array [
                Object {
                  "attributes": Object {
                    "content": "b",
                  },
+                 "innerBlocks": Array [],
                  "name": "core/list-item",
                },
              ],
              "name": "core/list",
            },

Call Log:
- Timeout 5000ms exceeded while waiting on the predicate
    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/blocks/list.spec.js:2056:42
Regression: updating a specific option will only change its value and will not corrupt others in /test/e2e/specs/editor/various/core-settings.spec.js, passed after 1 failed attempt.
Error: expect(received).toStrictEqual(expected) // deep equality

- Expected  - 1
+ Received  + 1

  Array [
    "rewrite_rules",
-   "SERIALIZED DATA",
+   "",
  ]
    at forEach (/home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/various/core-settings.spec.js:46:26)
    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/various/core-settings.spec.js:43:35
Undo restores the post selection when another synced entity is loaded in /test/e2e/specs/editor/collaboration/collaboration-undo-redo.spec.ts, passed after 1 failed attempt.
Error: expect(received).toMatchObject(expected)

- Expected  - 2
+ Received  + 2

  Object {
    "attributeKey": "content",
    "blockIndex": 0,
    "content": "abcdef",
-   "endOffset": 3,
-   "offset": 3,
+   "endOffset": 6,
+   "offset": 6,
  }

Call Log:
- Timeout 5000ms exceeded while waiting on the predicate
    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/collaboration/collaboration-undo-redo.spec.ts:363:5
can be created by selecting text and using keyboard shortcuts in /test/e2e/specs/editor/blocks/links.spec.js, passed after 1 failed attempt.
Error: expect(received).toMatchObject(expected)

- Expected  - 1
+ Received  + 1

  Array [
    Object {
      "attributes": Object {
-       "content": "This is Gutenberg",
+       "content": "This is https://wordpress",
      },
      "name": "core/paragraph",
    },
  ]

Call Log:
- Timeout 5000ms exceeded while waiting on the predicate
    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/blocks/links.spec.js:563:41
default to a list of pages if there are no menus in /test/e2e/specs/editor/blocks/navigation.spec.js, passed after 1 failed attempt.
Error: expect(locator).toBeVisible() failed

Locator: locator('[name="editor-canvas"]').contentFrame().getByRole('document', { name: 'Block: Page List' })
Expected: visible
Timeout: 10000ms
Error: element(s) not found

Call log:
  - Expect "toBeVisible" locator('[name="editor-canvas"]').contentFrame().getByRole('document', { name: 'Block: Page List' }) with timeout 10000ms
  - waiting for locator('[name="editor-canvas"]').contentFrame().getByRole('document', { name: 'Block: Page List' })

    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/blocks/navigation.spec.js:34:34
refuses the drop and uploads nothing in /test/e2e/specs/editor/various/single-file-placeholder-drop.spec.js, passed after 1 failed attempt.
Error: expect(received).toHaveLength(expected)

Expected length: 0
Received length: 1
Received array:  [{"_links": {"about": [{"href": "http://localhost:8889/wp-json/wp/v2/types/attachment"}], "author": [{"embeddable": true, "href": "http://localhost:8889/wp-json/wp/v2/users/1"}], "collection": [{"href": "http://localhost:8889/wp-json/wp/v2/media"}], "curies": [{"href": "https://api.w.org/{rel}", "name": "wp", "templated": true}], "replies": [{"embeddable": true, "href": "http://localhost:8889/wp-json/wp/v2/comments?post=166"}], "self": [{"href": "http://localhost:8889/wp-json/wp/v2/media/166", "targetHints": {"allow": ["GET", "POST", "PUT", "PATCH", "DELETE"]}}], "wp:attached-to": [{"embeddable": true, "href": "http://localhost:8889/wp-json/wp/v2/posts/165", "id": 165, "post_type": "post"}]}, "alt_text": "", "author": 1, "caption": {"rendered": ""}, "class_list": ["post-166", "attachment", "type-attachment", "status-inherit", "hentry", "entry"], "comment_status": "open", "date": "2026-10-23T22:33:11", "date_gmt": "2026-10-23T22:33:11", "description": {"rendered": "<p class=\"attachment\"><a href='http://localhost:8889/wp-content/uploads/2026/10/22b25456-394e-456b-86b5-4b80a3c65619.png'><img loading=\"lazy\" decoding=\"async\" width=\"10\" height=\"10\" src=\"http://localhost:8889/wp-content/uploads/2026/10/22b25456-394e-456b-86b5-4b80a3c65619.png\" class=\"attachment-medium size-medium\" alt=\"\" style=\"width:100%;height:100%;max-width:10px;\" /></a></p>
"}, "featured_media": 0, "filename": "22b25456-394e-456b-86b5-4b80a3c65619.png", "filesize": 80, "guid": {"rendered": "http://localhost:8889/wp-content/uploads/2026/10/22b25456-394e-456b-86b5-4b80a3c65619.png"}, "id": 166, "link": "http://localhost:8889/?attachment_id=166", "media_details": {"file": "2026/10/22b25456-394e-456b-86b5-4b80a3c65619.png", "filesize": 80, "height": 10, "image_meta": {"alt": "", "aperture": "0", "camera": "", "caption": "", "copyright": "", "created_timestamp": "0", "credit": "", "focal_length": "0", "iso": "0", "keywords": [], "orientation": "0", "shutter_speed": "0", "title": ""}, "sizes": {}, "width": 10}, "media_type": "image", "meta": [], "mime_type": "image/png", "modified": "2026-10-23T22:33:11", "modified_gmt": "2026-10-23T22:33:11", "ping_status": "closed", "post": 165, "slug": "22b25456-394e-456b-86b5-4b80a3c65619", "source_url": "http://localhost:8889/wp-content/uploads/2026/10/22b25456-394e-456b-86b5-4b80a3c65619.png", "status": "inherit", "template": "", "title": {"rendered": "22b25456-394e-456b-86b5-4b80a3c65619"}, "type": "attachment"}]
    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/various/single-file-placeholder-drop.spec.js:71:45
should be immediately saved on indentation in /test/e2e/specs/editor/blocks/list.spec.js, passed after 1 failed attempt.
Error: expect(received).toBe(expected) // Object.is equality

- Expected  - 1
+ Received  + 1

@@ -1,8 +1,8 @@
  <!-- wp:list -->
  <ul class="wp-block-list"><!-- wp:list-item -->
- <li>one<!-- wp:list -->
+ <li>ne<!-- wp:list -->
  <ul class="wp-block-list"><!-- wp:list-item -->
  <li></li>
  <!-- /wp:list-item --></ul>
  <!-- /wp:list --></li>
  <!-- /wp:list-item --></ul>

Call Log:
- Timeout 5000ms exceeded while waiting on the predicate
    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/blocks/list.spec.js:694:52
should change the indented list type in /test/e2e/specs/editor/blocks/list.spec.js, passed after 1 failed attempt.
TimeoutError: locator.click: Timeout 10000ms exceeded.
Call log:
  - waiting for locator('role=toolbar[name="Block tools"i]').locator('role=button[name="Indent"]')
    - locator resolved to <button id="_r_1l_" type="button" tabindex="-1" aria-label="Indent" aria-disabled="true" data-toolbar-item="true" data-truly-disabled="false" aria-describedby="components-button__description-26" class="components-button components-toolbar-button is-compact has-icon">…</button>
  - attempting click action
    2 × waiting for element to be visible, enabled and stable
      - element is not enabled
    - retrying click action
    - waiting 20ms
    2 × waiting for element to be visible, enabled and stable
      - element is not enabled
    - retrying click action
      - waiting 100ms
    18 × waiting for element to be visible, enabled and stable
       - element is not enabled
     - retrying click action
       - waiting 500ms

    at Editor.clickBlockToolbarButton (/home/runner/work/gutenberg/gutenberg/packages/e2e-test-utils-playwright/src/editor/click-block-toolbar-button.ts:17:15)
    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/blocks/list.spec.js:727:3
should cut and paste individual blocks with collapsed selection in /test/e2e/specs/editor/various/copy-cut-paste.spec.js, passed after 1 failed attempt.
Error: expect(string).toMatchSnapshot(expected) failed

  @@ -1,3 +1,3 @@
   <!-- wp:paragraph -->
  -<p>2Cut - collapsed selection</p>
  +<p>2</p>
   <!-- /wp:paragraph -->


    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/various/copy-cut-paste.spec.js:45:49
should gradually multi-select in /test/e2e/specs/editor/various/multi-block-selection.spec.js, passed after 1 failed attempt.
Error: expect(received).toMatchObject(expected)

- Expected  - 3
+ Received  + 7

  Array [
    Object {
-     "name": "core/column",
+     "attributes": Object {
+       "content": "1",
+       "dropCap": false,
      },
-   Object {
-     "name": "core/column",
+     "clientId": "3ae42acb-58ea-4126-a74c-6a9939fb5bec",
+     "innerBlocks": Array [],
+     "isValid": true,
+     "name": "core/paragraph",
    },
  ]

Call Log:
- Timeout 5000ms exceeded while waiting on the predicate
    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/various/multi-block-selection.spec.js:1151:5
should indent and outdent a list item when its content is fully selected in /test/e2e/specs/editor/blocks/list.spec.js, passed after 1 failed attempt.
Error: expect(received).toBe(expected) // Object.is equality

- Expected  - 5
+ Received  + 1

  <!-- wp:list -->
  <ul class="wp-block-list"><!-- wp:list-item -->
- <li>a<!-- wp:list -->
- <ul class="wp-block-list"><!-- wp:list-item -->
- <li>b</li>
- <!-- /wp:list-item --></ul>
- <!-- /wp:list --></li>
+ <li></li>
  <!-- /wp:list-item --></ul>
  <!-- /wp:list -->

Call Log:
- Timeout 5000ms exceeded while waiting on the predicate
    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/blocks/list.spec.js:819:52
should indent and outdent level 2 in /test/e2e/specs/editor/blocks/list.spec.js, passed after 1 failed attempt.
TimeoutError: locator.click: Timeout 10000ms exceeded.
Call log:
  - waiting for locator('role=toolbar[name="Block tools"i]').locator('role=button[name="Indent"]')

    at Editor.clickBlockToolbarButton (/home/runner/work/gutenberg/gutenberg/packages/e2e-test-utils-playwright/src/editor/click-block-toolbar-button.ts:17:15)
    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/blocks/list.spec.js:933:3
should indent and outdent multi-selected items with Tab in /test/e2e/specs/editor/blocks/list.spec.js, passed after 1 failed attempt.
Error: expect(received).toBe(expected) // Object.is equality

- Expected  - 1
+ Received  + 1

Truncated. See the full report.

dd857a7 Run

@github-actions github-actions Bot added the [Package] Components /packages/components label Oct 23, 2026
@ciampo ciampo self-assigned this Oct 23, 2026
@ciampo
ciampo marked this pull request as ready for review October 23, 2026 21:41
@ciampo
ciampo requested a review from a team as a code owner October 23, 2026 21:41
@ciampo ciampo added [Type] Enhancement A suggestion for improvement. [Type] Bug An existing feature does not function as intended Backport to Gutenberg RC Pull request that needs to be backported to a Gutenberg release candidate (RC) Backport to WP 7.2 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta and removed [Type] Enhancement A suggestion for improvement. labels Oct 23, 2026
@ciampo
ciampo requested a review from Mamaduka October 23, 2026 22:15

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backport to Gutenberg RC Pull request that needs to be backported to a Gutenberg release candidate (RC) Backport to WP 7.2 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta [Package] Components /packages/components [Type] Bug An existing feature does not function as intended

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant