Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: unovue/reka-ui
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v2.9.9
Choose a base ref
...
head repository: unovue/reka-ui
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v2.9.10
Choose a head ref
  • 8 commits
  • 21 files changed
  • 6 contributors

Commits on Jun 8, 2026

  1. chore(deps): update test (#2681)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    renovate[bot] authored Jun 8, 2026
    Configuration menu
    Copy the full SHA
    bb0c552 View commit details
    Browse the repository at this point in the history

Commits on Jun 10, 2026

  1. fix(Dialog): honor disableOutsidePointerEvents on modal content (#2677)…

    … (#2679)
    
    `DialogContentModal` hardcoded `:disable-outside-pointer-events="true"`, so a
    `disableOutsidePointerEvents` value passed to `DialogContent` was silently
    ignored even though the docs list it as a prop.
    
    Pass the prop through with `withDefaults(..., { disableOutsidePointerEvents:
    true })` so modal dialogs stay locked by default but can be overridden. Because
    `DialogContent` declares the prop as `Boolean`, Vue coerces an absent value to
    `false`, which would override the child default; declare an explicit `undefined`
    default on `DialogContent` so the absent case propagates as `undefined` and the
    child's default applies, while an explicit `false` is still honored.
    
    Note: when a `DialogOverlay` is rendered, its `useBodyScrollLock` locks the
    body's `pointer-events` through a separate mechanism; this change only affects
    the `DismissableLayer` lock.
    
    Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    zernonia and claude authored Jun 10, 2026
    Configuration menu
    Copy the full SHA
    5496cce View commit details
    Browse the repository at this point in the history
  2. fix(DismissableLayer): keep body pointer-events locked when nested la…

    …yer closes (#2674) (#2678)
    
    * fix(DismissableLayer): keep body pointer-events locked when nested layer closes (#2674)
    
    The body `pointer-events: none` lock was managed with a `watchEffect` that
    read `context.layersWithOutsidePointerEventsDisabled.size`. Because `context`
    is `reactive()`, that read made the effect re-run whenever any layer was added
    or removed from the set. When a nested layer (e.g. a DropdownMenu inside a
    Dialog) closed, the still-open ancestor layer's effect re-ran and its cleanup
    prematurely restored the body's original `pointer-events`, stripping the lock
    while the Dialog remained open.
    
    Switch to `watch` with explicit sources (`layerElement`,
    `disableOutsidePointerEvents`) so the effect only re-runs on those changes,
    mirroring Radix's `useEffect` dependency list. Reads of the set size inside the
    callback no longer create reactive dependencies.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    
    * fix(DismissableLayer): remove layer from set on cleanup to handle prop toggle (#2674)
    
    Addresses CodeRabbit review: the watch cleanup restored body pointer-events but
    never removed the layer from `layersWithOutsidePointerEventsDisabled`, leaving a
    stale entry when `disableOutsidePointerEvents` toggled `true -> false` while the
    layer stayed mounted (e.g. a modal Menu closing, which binds the prop to
    `menuContext.open`). A stale entry makes a later `size === 0` check false, so the
    body would fail to re-lock.
    
    Move the deletion into the watch cleanup and restore the body when the set is
    empty *after* deletion, making the restore independent of cleanup ordering. Add
    regression tests for the toggle-while-mounted and restore/re-lock paths.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    
    ---------
    
    Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    zernonia and claude authored Jun 10, 2026
    Configuration menu
    Copy the full SHA
    034d20e View commit details
    Browse the repository at this point in the history
  3. fix(useId): honor configured id source before vue useId (#2683)

    * fix: honor configured id source before vue useId
    
    * chore(deps): pin @vue/server-renderer dependency
    
    * chore(deps): update lockfile
    Mat4m0 authored Jun 10, 2026
    Configuration menu
    Copy the full SHA
    b2e781d View commit details
    Browse the repository at this point in the history
  4. fix(Combobox): keep content open when interacting with associated lab…

    …el (#2686)
    
    * fix(Combobox): keep content open when interacting with associated label
    
    A `<label>` tied (via `for`) to a control inside the combobox forwards its
    click/focus to that control. Without accounting for this, clicking such a
    label while open dismissed the content on `pointerdown`, then the forwarded
    click/focus immediately re-opened it.
    
    * test(Combobox): wait for async dismiss in associated-label test
    
    The 'stays open' assertion ran after a single nextTick, but a real dismiss
    is emitted after an internal nextTick too — so the test could pass even if
    the fix failed to prevent dismiss. Match the wait used in the dismiss test
    to actually guard against that regression.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    
    ---------
    
    Co-authored-by: zernonia <zernonia@gmail.com>
    Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    3 people authored Jun 10, 2026
    Configuration menu
    Copy the full SHA
    ed7531b View commit details
    Browse the repository at this point in the history
  5. fix(Listbox): prevent virtualized list from scrolling page on mount (#…

    …2675)
    
    Follow-up to #2666, which fixed the non-virtual path only. A virtualized
    Listbox still pulled the whole page to itself on mount: `highlightSelected`
    dropped the `scroll` flag whenever `isVirtual` was true, so a list with no
    checked item fell through to `highlightFirstItem` (synthetic PageUp →
    `changeHighlight` with focus + `scrollIntoView`), yanking a below-the-fold
    listbox into view on load.
    
    Thread the mount intent through the `virtualFocusHook` payload
    (`{ event, scroll }`) so the virtualizer can set its roving-tabindex target
    without focusing/scrolling on mount, mirroring the non-virtual path. The
    checked-item branch keeps `scrollToIndex`, which only scrolls the internal
    listbox container, never the page.
    
    Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    benjamincanac and claude authored Jun 10, 2026
    Configuration menu
    Copy the full SHA
    c5dc846 View commit details
    Browse the repository at this point in the history
  6. chore(deps): update build to ^8.0.16 (#2680)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    renovate[bot] authored Jun 10, 2026
    Configuration menu
    Copy the full SHA
    d34041d View commit details
    Browse the repository at this point in the history
  7. chore: release v2.9.10

    zernonia committed Jun 10, 2026
    Configuration menu
    Copy the full SHA
    b90a438 View commit details
    Browse the repository at this point in the history
Loading