Skip to content

chore(deps): Bump @radix-ui/react-dialog and react-dropdown-menu together - #712

Merged
inur93 merged 1 commit into
mainfrom
claude/missing-dependency-updates-x09to5
Aug 1, 2026
Merged

chore(deps): Bump @radix-ui/react-dialog and react-dropdown-menu together#712
inur93 merged 1 commit into
mainfrom
claude/missing-dependency-updates-x09to5

Conversation

@inur93

@inur93 inur93 commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Dependabot opened these as two separate PRs (#708, #709) and each was red on
the same three Jest tests — the ones that open a dropdown menu, pick a
destructive item and confirm in a dialog:

Unable to perform pointer interaction as the element has
`pointer-events: none`

That is not a test artifact. Radix pins its internal dependencies to exact
versions, so bumping one component alone makes npm nest a private second copy
of the primitives it shares with the others — here
@radix-ui/react-dismissable-layer (and react-focus-guards,
react-focus-scope). Those keep module-level singleton state:
dismissable-layer stores originalBodyPointerEvents plus a module-scoped
context tracking the open layers. With two copies the bookkeeping splits:

  1. menu opens → copy A saves "" and sets body pointer-events to "none"
  2. dialog opens → copy B's layer set is empty, so it saves "none"
  3. menu closes → copy A restores ""
  4. dialog closes → copy B restores its saved "none"

...leaving the page unclickable until reload, after any menu-driven delete or
rename. Merging either PR on its own would have shipped that.

Bumping both together resolves them to the same internal versions, so the tree
dedupes to one dismissable-layer (1.1.19) and the state is coherent again. The
three tests pass unmodified; they are the only automated signal for this, since
E2E and visual checks never close a dialog opened from a menu.

Also:

  • Group @radix-ui/* in dependabot.yml so future Radix updates arrive as one
    PR and cannot re-split the shared primitives.
  • Ignore typescript 7.x. It is blocked upstream twice over: no released
    typescript-eslint accepts it (peer ">=4.8.4 <6.1.0", so ESLint dies in
    typescript-estree), and Next.js 16.2.x does not recognise the TS 7 package
    layout. TS 6 updates keep flowing.
  • Record both in CLAUDE.md.

Co-Authored-By: Claude Opus 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01UdGrX2TRsXgy6cYZmeFovC

…ther

Dependabot opened these as two separate PRs (#708, #709) and each was red on
the same three Jest tests — the ones that open a dropdown menu, pick a
destructive item and confirm in a dialog:

    Unable to perform pointer interaction as the element has
    `pointer-events: none`

That is not a test artifact. Radix pins its internal dependencies to exact
versions, so bumping one component alone makes npm nest a private second copy
of the primitives it shares with the others — here
`@radix-ui/react-dismissable-layer` (and `react-focus-guards`,
`react-focus-scope`). Those keep module-level singleton state:
dismissable-layer stores `originalBodyPointerEvents` plus a module-scoped
context tracking the open layers. With two copies the bookkeeping splits:

  1. menu opens   → copy A saves "" and sets body pointer-events to "none"
  2. dialog opens → copy B's layer set is empty, so it saves "none"
  3. menu closes  → copy A restores ""
  4. dialog closes → copy B restores its saved "none"

...leaving the page unclickable until reload, after any menu-driven delete or
rename. Merging either PR on its own would have shipped that.

Bumping both together resolves them to the same internal versions, so the tree
dedupes to one dismissable-layer (1.1.19) and the state is coherent again. The
three tests pass unmodified; they are the only automated signal for this, since
E2E and visual checks never close a dialog opened from a menu.

Also:

- Group `@radix-ui/*` in dependabot.yml so future Radix updates arrive as one
  PR and cannot re-split the shared primitives.
- Ignore typescript 7.x. It is blocked upstream twice over: no released
  typescript-eslint accepts it (peer ">=4.8.4 <6.1.0", so ESLint dies in
  typescript-estree), and Next.js 16.2.x does not recognise the TS 7 package
  layout. TS 6 updates keep flowing.
- Record both in CLAUDE.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UdGrX2TRsXgy6cYZmeFovC
@sonarqubecloud

sonarqubecloud Bot commented Aug 1, 2026

Copy link
Copy Markdown

@inur93
inur93 merged commit c46d75e into main Aug 1, 2026
7 checks passed
@inur93
inur93 deleted the claude/missing-dependency-updates-x09to5 branch August 1, 2026 22:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants