|
4 | 4 |
|
5 | 5 | ### Added |
6 | 6 |
|
7 | | -- ### Added |
8 | | - - **Floating Components**: Add `data-side` to placement-aware parts so you can style them based on the current |
9 | | - placement (`top`, `bottom`, `left`, `right`). |
10 | | - > Affects Color Picker, Combobox, Date Picker, Hover Card, Menu, Popover, Select, Tooltip, and Tour. |
11 | | - - **Date Input**: Add `hideTimeZone` prop. When the value is a `ZonedDateTime`, the `timeZoneName` segment now renders |
12 | | - automatically — set `hideTimeZone` to hide it. Arrow navigation and auto-advance after typing now reach read-only |
13 | | - focusable segments too. |
14 | | - - **Splitter** |
15 | | - - Accept CSS units (`px`, `em`, `rem`, `vh`, `vw`) for `defaultSize`, `minSize`, and `maxSize` in addition to |
16 | | - percentages. |
17 | | - ```jsx |
18 | | - <Splitter.Root |
19 | | - panels={[ |
20 | | - { id: 'nav', minSize: '240px', maxSize: '480px' }, |
21 | | - { id: 'main', minSize: 30 }, |
22 | | - ]} |
23 | | - defaultSize={['240px', '60vw']} |
24 | | - /> |
25 | | - ``` |
26 | | - - Add `resizeBehavior` per panel. Set to `"preserve-pixel-size"` to keep a panel's pixel size constant when the |
27 | | - parent splitter group resizes. |
28 | | - - Allow non-panel children (toolbars, rails, status bars) inside the splitter root. Use partial trigger ids |
29 | | - (`"left:"`, `":right"`) to bind handles around the fixed element. |
30 | | - ### Fixed |
31 | | - - **Accordion**: Remove redundant `aria-disabled` from item triggers. |
32 | | - - **Color Picker**: Fire `onValueChangeEnd` when you pick a color with the EyeDropper API — matches the behavior when |
33 | | - ending a drag on the area or channel sliders. |
34 | | - - **Combobox**: Stop `Enter` from submitting the form when an item is highlighted, or when the typed value will be |
35 | | - rejected by `allowCustomValue: false`. |
36 | | - - **Date Input** |
37 | | - - Preserve entered segments when applying min/max. Values clamp segment-by-segment on blur, so `06/15/1999` with min |
38 | | - `2000-01-01` becomes `06/15/2000` instead of snapping to `01/01/2000`. |
39 | | - - Fix range mode keyboard navigation so `ArrowRight` moves from the last segment of the start date to the first |
40 | | - segment of the end date. |
41 | | - - Fix time-only formatters (no `year` segment) never firing `onValueChange`. |
42 | | - - Fix `setSegmentValue` reading stale display values. |
43 | | - - Fix `dayPeriod` (AM/PM) arrow up/down not updating the visible segment when `hourCycle` changes at runtime. |
44 | | - - Fix typing "A" / "P" on the `dayPeriod` segment not updating the visible AM/PM. |
45 | | - - **Date Picker** |
46 | | - - Fix clearing the value not resetting `activeIndex` and `hoveredValue` in range mode when input parts are not |
47 | | - rendered. |
48 | | - - Fix date input not being writable in locales with multi-character separators (e.g. `cs-CZ`, `sk-SK`, `hu-HU`, |
49 | | - `ko-KR`). |
50 | | - - Fix Firefox issue where the native month/year `<select>` was not interactive when the picker is inside a modal |
51 | | - dialog. |
52 | | - - Fix range selection with `outsideDaySelectable`: hovering outside-month days no longer changes the visible month; |
53 | | - hover preview for the end date still updates. |
54 | | - - **Dialog, Drawer, Hover Card, Menu, Popover, Tooltip**: Fix custom trigger elements (via `ids.trigger`) being |
55 | | - ignored when shared across components — e.g. wrapping a `Popover.Trigger` in a `Tooltip` with the same id no longer |
56 | | - breaks positioning. Also fix trigger lookups in shadow root. |
57 | | - - **Dialog, Drawer, Popover**: Fix dismissable layers losing their `pointer-events` in Svelte and Vue, where a spread |
58 | | - update could rewrite the whole `style` attribute and wipe the value. |
59 | | - - **Drawer** |
60 | | - - Fix controlled drawers snapping back open before the close animation when dismissed by swipe. |
61 | | - - Fix the indent and indent background snapping into place after the close animation instead of transitioning in |
62 | | - sync. |
63 | | - - Fix `--drawer-swipe-progress` jumping straight to `1` at the start of a dismiss swipe — it now moves smoothly from |
64 | | - `0` (at rest) to `1` (fully dismissed). |
65 | | - - Fix the drawer freezing mid-drag on release when its content mounts lazily, which left snap points unmeasured. |
66 | | - - **React 19 Strict Mode**: Fix dialog, drawer, and popover leaving `<body>` uninteractive (`data-scroll-lock`, |
67 | | - `data-inert`, `overflow: hidden`, `pointer-events: none`) after closing. |
68 | | - - **Number Input**: Fix inconsistent blur behavior when the input is cleared and `min` is greater than `0`. |
69 | | - - **Splitter** |
70 | | - - Fix clicking a resize trigger not moving focus to it, which prevented arrow keys from resizing the splitter until |
71 | | - it was tab-focused (notably on Safari). |
72 | | - - Fix `data-focus` being applied on hover — it now only sets when the trigger is actually focused. |
73 | | - - **Tabs**: Observe the tab list with `ResizeObserver` so the indicator updates when the list resizes without |
74 | | - individual tab triggers changing size (e.g. responsive grid reflow). |
| 7 | +- **Floating Components**: Add `data-side` to placement-aware parts so you can style them based on the current placement |
| 8 | + (`top`, `bottom`, `left`, `right`). |
| 9 | + |
| 10 | + > Affects Color Picker, Combobox, Date Picker, Hover Card, Menu, Popover, Select, Tooltip, and Tour. |
| 11 | +
|
| 12 | +- **Date Input**: Add `hideTimeZone` prop. When the value is a `ZonedDateTime`, the `timeZoneName` segment now renders |
| 13 | + automatically — set `hideTimeZone` to hide it. Arrow navigation and auto-advance after typing now reach read-only |
| 14 | + focusable segments too. |
| 15 | + |
| 16 | +- **Splitter** |
| 17 | + - Accept CSS units (`px`, `em`, `rem`, `vh`, `vw`) for `defaultSize`, `minSize`, and `maxSize` in addition to |
| 18 | + percentages. |
| 19 | + |
| 20 | + ```jsx |
| 21 | + <Splitter.Root |
| 22 | + panels={[ |
| 23 | + { id: 'nav', minSize: '240px', maxSize: '480px' }, |
| 24 | + { id: 'main', minSize: 30 }, |
| 25 | + ]} |
| 26 | + defaultSize={['240px', '60vw']} |
| 27 | + /> |
| 28 | + ``` |
| 29 | + |
| 30 | + - Add `resizeBehavior` per panel. Set to `"preserve-pixel-size"` to keep a panel's pixel size constant when the parent |
| 31 | + splitter group resizes. |
| 32 | +
|
| 33 | + - Allow non-panel children (toolbars, rails, status bars) inside the splitter root. Use partial trigger ids |
| 34 | + (`"left:"`, `":right"`) to bind handles around the fixed element. |
75 | 35 |
|
76 | 36 | ### Fixed |
77 | 37 |
|
| 38 | +- **Accordion**: Remove redundant `aria-disabled` from item triggers. |
| 39 | +
|
| 40 | +- **Color Picker**: Fire `onValueChangeEnd` when you pick a color with the EyeDropper API — matches the behavior when |
| 41 | + ending a drag on the area or channel sliders. |
| 42 | +
|
| 43 | +- **Combobox**: Stop `Enter` from submitting the form when an item is highlighted, or when the typed value will be |
| 44 | + rejected by `allowCustomValue: false`. |
| 45 | +
|
| 46 | +- **Date Input** |
| 47 | + - Preserve entered segments when applying min/max. Values clamp segment-by-segment on blur, so `06/15/1999` with min |
| 48 | + `2000-01-01` becomes `06/15/2000` instead of snapping to `01/01/2000`. |
| 49 | +
|
| 50 | + - Fix range mode keyboard navigation so `ArrowRight` moves from the last segment of the start date to the first |
| 51 | + segment of the end date. |
| 52 | +
|
| 53 | + - Fix time-only formatters (no `year` segment) never firing `onValueChange`. |
| 54 | +
|
| 55 | + - Fix `setSegmentValue` reading stale display values. |
| 56 | +
|
| 57 | + - Fix `dayPeriod` (AM/PM) arrow up/down not updating the visible segment when `hourCycle` changes at runtime. |
| 58 | +
|
| 59 | + - Fix typing "A" / "P" on the `dayPeriod` segment not updating the visible AM/PM. |
| 60 | +
|
| 61 | +- **Date Picker** |
| 62 | + - Fix clearing the value not resetting `activeIndex` and `hoveredValue` in range mode when input parts are not |
| 63 | + rendered. |
| 64 | +
|
| 65 | + - Fix date input not being writable in locales with multi-character separators (e.g. `cs-CZ`, `sk-SK`, `hu-HU`, |
| 66 | + `ko-KR`). |
| 67 | +
|
| 68 | + - Fix Firefox issue where the native month/year `<select>` was not interactive when the picker is inside a modal |
| 69 | + dialog. |
| 70 | +
|
| 71 | + - Fix range selection with `outsideDaySelectable`: hovering outside-month days no longer changes the visible month; |
| 72 | + hover preview for the end date still updates. |
| 73 | +
|
| 74 | +- **Dialog, Drawer, Hover Card, Menu, Popover, Tooltip**: Fix custom trigger elements (via `ids.trigger`) being ignored |
| 75 | + when shared across components — e.g. wrapping a `Popover.Trigger` in a `Tooltip` with the same id no longer breaks |
| 76 | + positioning. Also fix trigger lookups in shadow root. |
| 77 | +
|
| 78 | +- **Dialog, Drawer, Popover**: Fix dismissable layers losing their `pointer-events` in Svelte and Vue, where a spread |
| 79 | + update could rewrite the whole `style` attribute and wipe the value. |
| 80 | +
|
| 81 | +- **Drawer** |
| 82 | + - Fix controlled drawers snapping back open before the close animation when dismissed by swipe. |
| 83 | +
|
| 84 | + - Fix the indent and indent background snapping into place after the close animation instead of transitioning in sync. |
| 85 | +
|
| 86 | + - Fix `--drawer-swipe-progress` jumping straight to `1` at the start of a dismiss swipe — it now moves smoothly from |
| 87 | + `0` (at rest) to `1` (fully dismissed). |
| 88 | +
|
| 89 | + - Fix the drawer freezing mid-drag on release when its content mounts lazily, which left snap points unmeasured. |
| 90 | +
|
| 91 | +- **React 19 Strict Mode**: Fix dialog, drawer, and popover leaving `<body>` uninteractive (`data-scroll-lock`, |
| 92 | + `data-inert`, `overflow: hidden`, `pointer-events: none`) after closing. |
| 93 | +
|
| 94 | +- **Number Input**: Fix inconsistent blur behavior when the input is cleared and `min` is greater than `0`. |
| 95 | +
|
| 96 | +- **Splitter** |
| 97 | + - Fix clicking a resize trigger not moving focus to it, which prevented arrow keys from resizing the splitter until it |
| 98 | + was tab-focused (notably on Safari). |
| 99 | +
|
| 100 | + - Fix `data-focus` being applied on hover — it now only sets when the trigger is actually focused. |
| 101 | +
|
| 102 | +- **Tabs**: Observe the tab list with `ResizeObserver` so the indicator updates when the list resizes without individual |
| 103 | + tab triggers changing size (e.g. responsive grid reflow). |
| 104 | +
|
78 | 105 | - **Floating Panel**: Re-export additional types (`ResizeTriggerAxis`, `Stage`, `ElementIds`, `IntlTranslations`, |
79 | 106 | `AnchorPositionDetails`, `Point`, `Size`) and the `resizeTriggerAxes` constant from `@zag-js/floating-panel`. |
80 | 107 |
|
|
0 commit comments