close
Skip to content

UI: Show keyboard focus on disabled menu items - #85488

Merged
ciampo merged 3 commits into
trunkfrom
codex/ui-disabled-menu-focus
Oct 27, 2026
Merged

ciampo merged 3 commits into
trunkfrom
codex/ui-disabled-menu-focus

Conversation

@ciampo

@ciampo ciampo commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Follow-up to #84087 and #84583. This PR targets trunk independently.

What?

Show a focus ring when a disabled menu item receives keyboard focus.

Why?

Disabled menu items remain reachable with arrow keys, but the new popup styling leaves their current focus position invisible.

How?

Use the WPDS focus border width and stroke color through the existing outline bridges. The cue follows actual focus, while disabled items keep their neutral colors and behavior. No interaction code, public API, or global defense rule is added.

Testing Instructions

  1. Open Menu Default in Storybook with the keyboard and press End. Unavailable action should have a visible ring.
  2. In Rich Items, open the menu and press ArrowDown from Save. The disabled Download row should have the same ring, with its label and shortcut still using disabled colors.
  3. Check disabled checkbox, radio, and submenu items. Focus should remain visible and the actions should remain unavailable.
  4. Repeat with WordPress global CSS, light, dark, and custom themes, and forced colors.

Testing Instructions for Keyboard

  1. Use ArrowDown to open a menu and arrow keys to move to a disabled item. Its position should remain visible.
  2. Press Enter or Space on a disabled action. It should remain unavailable. Move to an enabled item and check its existing solid brand treatment.
  3. Dismiss with Escape and check that focus returns to the trigger.
Verification and limits

All 60 existing Menu tests passed, along with the production build and CSS/changelog lint. CLI browser checks cover disabled focus, unavailable actions, shared item variants, WordPress global CSS, themes, and forced colors. The focus ring has at least 4.8:1 contrast against the popup background across the tested light, dark, and custom themes. No test files or test bodies were added. Actual screen readers and native Windows high-contrast mode were not tested locally.

Screenshots or screencast

Keyboard focus on disabled items in standalone Menu Default and Rich Items. Basic global CSS, light theme, 520 × 440 viewports. Captures wait for the opening animation and are cropped without changing the rendered UI.

Before After
Disabled action without a visible focus cue Disabled action with a visible focus ring
Disabled Download row without a visible focus cue Disabled Download row with a visible focus ring

Use of AI Tools

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

@github-actions github-actions Bot added the [Package] UI /packages/ui label Oct 23, 2026
@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>
Co-authored-by: mirka <0mirka00@git.wordpress.org>

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


Props Bot commands

You can trigger Props Bot actions by commenting on this PR:

  • @propsbot add <username> to give props to a GitHub user. Requires write access.
  • @propsbot remove <username> to leave a user out of the props. Requires write access.
  • @propsbot refresh to refresh this list. Adding the props-bot label works too.

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

📦 Bundle size

Size Change: +257 B (0%)

Total Size: 8.56 MB

📦 View Changed
Filename Size Change
build/scripts/block-editor/index.min.js 542 kB +96 B (+0.02%)
build/scripts/components/index.min.js 329 kB +59 B (+0.02%)
build/scripts/edit-site/index.min.js 376 kB +26 B (+0.01%)
build/scripts/editor/index.min.js 556 kB +36 B (+0.01%)
build/scripts/media-utils/index.min.js 231 kB +40 B (+0.02%)

3b0ab26 Run

⚡ Performance

Show the results

Client side metrics exclude the server response time.

front-end-block-theme

Metric 297c61e trunk % Change
timeToFirstByte 53.75 ms +13.3% -2.51% 52.9 ms +4.54% -2.17% 1.61%
largestContentfulPaint 92 ms +4.35% -2.17% 86 ms +6.98% -2.33% 6.98%
lcpMinusTtfb 35.7 ms +15.97% -7.42% 32.95 ms +2.73% -2.73% 8.35%
wpBeforeTemplate 28.85 ms +19.76% -1.49% 28.73 ms +5.4% -2.71% 0.42%
wpTemplate 21.23 ms +2.12% -6.45% 20.35 ms +5.45% -2.65% 4.32%
wpTotal 50.31 ms +12.1% -3.12% 49.28 ms +4.83% -2.03% 2.09%
wpMemoryUsage 7.70 MB +0% -0% 7.67 MB +0% -0% 0.43%
wpDbQueries 16 +0% -0% 16 +0% -0% 0%

front-end-classic-theme

Metric 297c61e trunk % Change
timeToFirstByte 46.25 ms +7.35% -1.51% 45.15 ms +6.53% -0.78% 2.44%
largestContentfulPaint 102 ms +5.88% -1.96% 100 ms +2% -4% 2%
lcpMinusTtfb 55.35 ms +4.7% -1.81% 54.85 ms +1.19% -5.01% 0.91%
wpBeforeTemplate 26.68 ms +9.11% -0.71% 26.32 ms +1.1% -1.29% 1.37%
wpTemplate 16.11 ms +1.49% -2.05% 15.85 ms +3.79% -1.32% 1.64%
wpTotal 43.3 ms +6.81% -1.87% 42.23 ms +5.14% -0.81% 2.53%
wpMemoryUsage 6.39 MB +0% -0% 6.36 MB +0% -0% 0.53%
wpDbQueries 13 +0% -0% 13 +0% -0% 0%

media-processing

Metric 297c61e trunk % Change
mediaProcessingJpeg 394.58 ms +1.19% -0.39% 402.17 ms +1.09% -0.17% -1.89%
mediaProcessingAvif 6112.49 ms +0.12% -0.6% 6094.63 ms +0.39% -0.08% 0.29%
mediaProcessingJpegToAvif 4187.09 ms +0.44% -0.24% 4212.1 ms +0.74% -0.2% -0.59%

media-upload

Metric 297c61e trunk % Change
jpegUploadProcessing 1444.62 ms +1.44% -1.83% 1432.05 ms +0.23% -0.55% 0.88%
pngUploadProcessing 216.14 ms +24.88% -17.63% 234.08 ms +8.54% -21.03% -7.66%
largeJpegUploadProcessing 1419.37 ms +1.38% -0.31% 1430.82 ms +0.87% -0.55% -0.8%
multipleImageUploadProcessing 1483.46 ms +1.11% -0.66% 1507.06 ms +1.44% -1.97% -1.57%

post-editor

Metric 297c61e trunk % Change
serverResponse 488.32 ms +10.12% -1.48% 500.08 ms +6.37% -2.51% -2.35%
firstPaint 495.74 ms +5.45% -37.07% 372.82 ms +37.99% -39.35% 32.97%
domContentLoaded 905.8 ms +13.18% -1.16% 861.85 ms +2.43% -1.37% 5.1%
loaded 907.04 ms +13.16% -1.19% 863.05 ms +2.42% -1.36% 5.1%
firstContentfulPaint 519.7 ms +8.18% -1.39% 503.29 ms +2.22% -7.62% 3.26%
firstBlock 3104.71 ms +11.1% -1.96% 2984.48 ms +2.35% -1.01% 4.03%
type 17.2 ms +5.52% -4.88% 17.61 ms +3.69% -3.63% -2.33%
typeWithoutInspector 18.35 ms +2.62% -3.49% 16.25 ms +13.85% -0.74% 12.92%
typeWithTopToolbar 23.25 ms +6.54% -6.45% 22.15 ms +3.25% -6.28% 4.97%
typeContainer 8.18 ms +6.11% -4.03% 7.6 ms +12.11% -4.61% 7.63%
focus 127.53 ms +7.98% -7.15% 121.61 ms +3.72% -8.63% 4.87%
firstFocus 231.34 ms +0% -0% 239.99 ms +0% -0% -3.6%
selectAll 469.57 ms +1.51% -2.31% 526.9 ms +2.77% -6.68% -10.88%
listViewOpen 80.94 ms +5.04% -6.57% 83.38 ms +5.07% -5.17% -2.93%
inserterOpen 40.3 ms +8.73% -5.83% 40.22 ms +18.35% -8.65% 0.2%
inserterHover 11.62 ms +9.72% -10.15% 12.57 ms +12.25% -7.88% -7.56%
inserterSearch 7.87 ms +17.79% -8.64% 8.96 ms +1.67% -14.84% -12.17%
loadPatterns 667.21 ms +3.42% -4.76% 698.08 ms +0.71% -8.21% -4.42%
wpTotal 478.56 ms +9.92% -1.43% 490.29 ms +6.35% -2.6% -2.39%
wpMemoryUsage 14.75 MB +0% -0% 14.72 MB +0% -0% 0.24%
wpDbQueries 55 +0% -1.82% 55 +0% -1.82% 0%

site-editor

Metric 297c61e trunk % Change
serverResponse 499.58 ms +2.25% -2.56% 536.38 ms +4.56% -7.09% -6.86%
firstPaint 281.42 ms +12.17% -9.21% 302.44 ms +9.54% -9.5% -6.95%
domContentLoaded 897.57 ms +1.44% -1.88% 917.78 ms +2.49% -1.31% -2.2%
loaded 898.67 ms +1.47% -1.84% 919.13 ms +2.46% -1.34% -2.23%
firstContentfulPaint 507.39 ms +1.13% -1.65% 506.2 ms +3.04% -7.24% 0.24%
firstBlock 3999.2 ms +1.64% -3.49% 4069.84 ms +1.59% -0.9% -1.74%
type 17.71 ms +3.73% -2.6% 19.34 ms +11.27% -2.53% -8.43%
navigate 117.45 ms +5.36% -2.59% 124.51 ms +5.7% -1.97% -5.67%
loadPatterns 1189.8 ms +3.84% -3.55% 1257.64 ms +10.87% -4.7% -5.39%
loadPages 1006.72 ms +0.96% -3.22% 1014.72 ms +3.31% -0.76% -0.79%
wpTotal 490.31 ms +2.32% -2.64% 526.76 ms +4.61% -7.12% -6.92%
wpMemoryUsage 12.77 MB +0% -0% 12.74 MB +0% -0% 0.24%
wpDbQueries 44 +2.27% -0% 44 +2.27% -0% 0%

3b0ab26 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.

Backspace in /test/e2e/specs/editor/blocks/list.spec.js, passed after 1 failed attempt.
Error: expect(received).toMatchObject(expected)

- Expected  -  4
+ Received  + 31

@@ -1,25 +1,52 @@
  Array [
    Object {
+     "attributes": Object {
+       "content": "‸1",
+       "dropCap": false,
+     },
+     "innerBlocks": Array [],
+     "name": "core/paragraph",
+   },
+   Object {
+     "attributes": Object {
+       "ordered": false,
+       "values": "",
+     },
      "innerBlocks": Array [
        Object {
          "attributes": Object {
-           "content": "1",
+           "content": "a",
+         },
+         "innerBlocks": Array [],
+         "name": "core/list-item",
+       },
+     ],
+     "name": "core/list",
+   },
+   Object {
+     "attributes": Object {
+       "ordered": false,
+       "values": "",
      },
      "innerBlocks": Array [
        Object {
+         "attributes": Object {
+           "content": "2",
+         },
          "innerBlocks": Array [
            Object {
              "attributes": Object {
-                   "content": "a‸2",
-                 },
-                 "name": "core/list-item",
+               "ordered": false,
+               "values": "",
              },
+             "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:2041:42
can be converted to a quote 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,9 +1,9 @@
  <!-- wp:quote -->
  <blockquote class="wp-block-quote"><!-- wp:list -->
  <ul class="wp-block-list"><!-- wp:list-item -->
- <li>one</li>
+ <li>ne</li>
  <!-- /wp:list-item -->

  <!-- wp:list-item -->
  <li>two</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:436:52
should create paragraph on Enter in quote block in /test/e2e/specs/editor/blocks/list.spec.js, passed after 1 failed attempt.
TimeoutError: locator.click: Timeout 10000ms exceeded.
Call log:
  - waiting for getByRole('option', { name: 'List', exact: true })

    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/blocks/list.spec.js:751:67
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 format text across blocks in /test/e2e/specs/editor/various/multi-block-selection.spec.js, passed after 1 failed attempt.
Error: expect(received).toMatchObject(expected)

- Expected  - 6
+ Received  + 2

  Array [
    Object {
      "attributes": Object {
        "content": "ab",
+       "dropCap": false,
      },
-     "name": "core/paragraph",
-   },
-   Object {
-     "attributes": Object {
-       "content": "ab",
-     },
+     "innerBlocks": Array [],
      "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:2219:41
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  - 1
+ Received  + 1

  Array [
    Object {
-     "name": "core/column",
+     "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:1194:5
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"]')
    - 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:933:3
should keep the list type when indenting an ordered list item 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 {"ordered":true} -->
  <ol class="wp-block-list"><!-- wp:list-item -->
- <li>one<!-- wp:list {"ordered":true} -->
+ <li>ne<!-- wp:list {"ordered":true} -->
  <ol class="wp-block-list"><!-- wp:list-item -->
  <li>two</li>
  <!-- /wp:list-item --></ol>
  <!-- /wp:list --></li>
  <!-- /wp:list-item --></ol>

Call Log:
- Timeout 5000ms exceeded while waiting on the predicate
    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/blocks/list.spec.js:916:52
should merge a following sibling list into the outermost list with Delete from a nested item (#77245) in /test/e2e/specs/editor/blocks/list.spec.js, passed after 1 failed attempt.
Error: expect(received).toMatchObject(expected)

- Expected  - 2
+ Received  + 2

@@ -8,11 +8,11 @@
          "innerBlocks": Array [
            Object {
              "innerBlocks": Array [
                Object {
                  "attributes": Object {
-                   "content": "b‸",
+                   "content": "b",
                  },
                  "name": "core/list-item",
                },
              ],
              "name": "core/list",
@@ -25,11 +25,11 @@
    },
    Object {
      "innerBlocks": Array [
        Object {
          "attributes": Object {
-           "content": "1",
+           "content": "‸1",
          },
          "innerBlocks": Array [
            Object {
              "innerBlocks": Array [
                Object {

Call Log:
- Timeout 5000ms exceeded while waiting on the predicate
    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/blocks/list.spec.js:2854:41
should mirror the suggestions list reference onto the editing host in /test/e2e/specs/editor/various/autocomplete-and-mentions.spec.js, passed after 2 failed attempts.
Error: apiRequestContext.fetch: socket hang up
Call log:
  - → DELETE http://localhost:8889/wp-json/wp/v2/users/15?force=true&reassign=1
    - user-agent: Playwright/1.63.0 (x64; ubuntu 24.04) node/24.20 CI/1
    - accept: */*
    - accept-encoding: gzip,deflate,br
    - X-WP-Nonce: ccf58d9bf4
    - cookie: wordpress_test_cookie=WP%20Cookie%20check; wordpress_logged_in_23778236db82f19306f247e20a353a99=admin%7C1793275880%7CHJsiOaV21mCgqcW3BqqqhasdRSqyIOYHwI6gXwM2LDn%7C0f51962e560198c90a802a2a7fffdabf2a82baeda91319b5500af97f096b4d1e; wp-settings-time-1=1793103429

    at RequestUtils.rest (/home/runner/work/gutenberg/gutenberg/packages/e2e-test-utils-playwright/src/request-utils/rest.ts:111:39)
    at RequestUtils.deleteUser (/home/runner/work/gutenberg/gutenberg/packages/e2e-test-utils-playwright/src/request-utils/users.ts:91:30)
    at map (/home/runner/work/gutenberg/gutenberg/packages/e2e-test-utils-playwright/src/request-utils/users.ts:116:51)
    at RequestUtils.deleteAllUsers (/home/runner/work/gutenberg/gutenberg/packages/e2e-test-utils-playwright/src/request-utils/users.ts:116:5)
    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/various/autocomplete-and-mentions.spec.js:73:3

should select by dragging into nested block in /test/e2e/specs/editor/various/multi-block-selection.spec.js, passed after 2 failed attempts.
Error: expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 0

  Array [
    1,
-   2,
  ]

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:568:5
Error: expect(received).toEqual(expected) // deep equality

- Expected  - 2
+ Received  + 1

  Array [
-   1,
-   2,
+   3,
  ]

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:568:5
three users concurrently edit a large post with diverse blocks in /test/e2e/specs/editor/collaboration/collaboration-stress.spec.ts, passed after 1 failed attempt.
TimeoutError: locator.waitFor: Timeout 17500ms exceeded.
Call log:
  - waiting for getByRole('button', { name: /Collaborators list/ }) to be visible

    at map (/home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/collaboration/fixtures/collaboration-utils.ts:193:7)
    at CollaborationUtils.waitForMutualDiscovery (/home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/collaboration/fixtures/collaboration-utils.ts:188:10)
    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/collaboration/collaboration-stress.spec.ts:416:28

3b0ab26 Run

@ciampo ciampo self-assigned this Oct 23, 2026
@ciampo ciampo added the [Type] Bug An existing feature does not function as intended label Oct 23, 2026
@ciampo
ciampo marked this pull request as ready for review October 23, 2026 22:24
@ciampo
ciampo requested a review from a team as a code owner October 23, 2026 22:24
@ciampo ciampo added 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 labels Oct 23, 2026
Comment thread packages/ui/src/menu/style.module.css Outdated
background-color: var(--wpds-color-background-interactive-neutral-weak-disabled);
color: var(--wpds-color-foreground-interactive-neutral-disabled);

&:focus {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Base UI focuses a disabled item on hover as well (focusItemOnHover plus empty disabledIndices), so this matches whenever the item is highlighted, not only on keyboard focus. Can we key it off [data-highlighted] like the rest of this file? It behaves the same here and would carry over to the virtual-focus popups.

Suggested change
&:focus {
&[data-highlighted] {

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True, switched this to [data-highlighted]

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mirka food for thought: I'm not sure I like that we show the focus ring when hovering over a disabled menu item.

Although I'm not sure we have an easy way of showing it only for keyboard focus (that was the whole point of adopting the simpler solution that applies same active styles to hover and focus, I know 😅 )

What are your thoughts?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe :focus-visible? Base UI moves focus with a plain .focus() on both hover and arrow keys, so the browser heuristic applies: pointer-only hover doesn't match, and keyboard navigation does. Once the user presses a key, hover keeps matching too, which seems fine. I checked this pattern in Chromium, Firefox, and WebKit. Since highlight and focus move together in Menu, &:focus-visible on its own should be enough here.

We can't do this in Combobox/Autocomplete, but maybe that's fine for now since this probably mostly affects Menu patterns.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, we can do this on Menu because it uses DOM focus (as opposed to Virtual Focus).

Maybe that's a better compromise, even if it introduces inconsistencies.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment thread packages/ui/src/menu/style.module.css Resolved
Comment thread packages/ui/CHANGELOG.md Resolved
@ciampo
ciampo force-pushed the codex/ui-disabled-menu-focus branch from e1b6895 to 3b0ab26 Compare October 27, 2026 12:05
@ciampo
ciampo enabled auto-merge (squash) October 27, 2026 12:13
@ciampo
ciampo merged commit 21d4f36 into trunk Oct 27, 2026
89 checks passed
@ciampo
ciampo deleted the codex/ui-disabled-menu-focus branch October 27, 2026 12:25
@github-actions github-actions Bot added this to the Gutenberg 24.4 milestone Oct 27, 2026
@github-actions

Copy link
Copy Markdown

There was a conflict while trying to cherry-pick the commit to the wp/7.2 branch. Please resolve the conflict manually and create a PR to the wp/7.2 branch.

PRs to wp/7.2 are similar to PRs to trunk, but you should base your PR on the wp/7.2 branch instead of trunk.

# Checkout the wp/7.2 branch instead of trunk.
git checkout wp/7.2

# Create a new branch for your PR.
git checkout -b my-branch

# Cherry-pick the commit.
git cherry-pick 21d4f363fded2df864ec520449b7c65e3fcbc21f

# Check which files have conflicts.
git status

# Resolve the conflict...
# Add the resolved files to the staging area.
git status
git add .
git cherry-pick --continue

# Push the branch to the repository
git push origin my-branch

# Create a PR and set the base to the wp/7.2 branch.
# See https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request.

ciampo added a commit that referenced this pull request Oct 28, 2026
* Menu: Show focus on disabled UI items

* Fix UI disabled menu focus changelog reference

* Menu: Use highlighted state for disabled item focus rings

---

Co-authored-by: mirka <0mirka00@git.wordpress.org>
Co-authored-by: ciampo <mciampini@git.wordpress.org>
Co-authored-by: Mamaduka <mamaduka@git.wordpress.org>
@ciampo

ciampo commented Oct 28, 2026

Copy link
Copy Markdown
Contributor Author

Backported via #85765 , commit

@ciampo ciampo added Backported to WP Core Pull request that has been successfully merged into WP Core Backport to Gutenberg RC Pull request that needs to be backported to a Gutenberg release candidate (RC) and removed 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 labels Oct 28, 2026
Mamaduka pushed a commit that referenced this pull request Oct 28, 2026
* Menu: Show focus on disabled UI items

* Fix UI disabled menu focus changelog reference

* Menu: Use highlighted state for disabled item focus rings

---

Co-authored-by: ciampo <mciampini@git.wordpress.org>
Co-authored-by: mirka <0mirka00@git.wordpress.org>
@Mamaduka Mamaduka removed the Backport to Gutenberg RC Pull request that needs to be backported to a Gutenberg release candidate (RC) label Oct 28, 2026
@Mamaduka Mamaduka removed this from the Gutenberg 24.4 milestone Oct 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backported to WP Core Pull request that has been successfully merged into WP Core [Package] UI /packages/ui [Type] Bug An existing feature does not function as intended

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants