Skip to content

v0.194.0

Choose a tag to compare

@tenphi tenphi released this 14 Oct 14:37
· 87 commits to main since this release
59bd84a

Minor Changes

  • #1505 e972167f Thanks @tenphi! - Render Menu navigation items as native links, supporting to, path objects, navigation options and native href attributes. Ordinary activation uses the application router once; browser link gestures remain native and disabled destinations stay inert. Preserve the navigation adapter through nested providers and overlays. Submenu triggers open their submenu without invoking item or Menu command callbacks, including pointer and hotkey activation.

    Support the same destinations and composed item/Menu callbacks in CommandMenu. Cover complete navigation rows with native link targets, including whitespace and padding. Give mixed command/link menus semantic focus targets and separately accessible inline actions while preserving item layout. Correct CommandMenu's searchbox-to-menu active descendant relationship. Use the focused modifier and data-menuitem for layout-row selectors that previously relied on LI focus or role adjacency. Selection controls reject and ignore destination props so listbox and combobox options cannot navigate.

  • #1509 5acedc3e Thanks @tenphi! - A modal, fullscreen or tray Dialog now hides the page behind it from screen readers while it is open, so their reading cursor stays in the dialog. Lists, menus, popovers, tooltips and dialogs opened from inside it stay readable, and so do toasts; popover and panel dialogs leave the page readable. Content you portal out of a dialog yourself, with Portal or createPortal, is hidden with the page, so render it inside the dialog. In tests, the page behind an open modal is now aria-hidden: role queries skip it, and with { hidden: true } they find its elements but not by name, so query them by text or qa instead.

Patch Changes

  • #1509 5acedc3e Thanks @tenphi! - A Title inside a Dialog is now the h2 the dialog asks for rather than an h1, unless it sets its own level; it looks the same. Menu keeps its id and accessible name on the menu list only, so a trigger's aria-controls no longer finds a wrapper with the same id. CommandMenu names its search input with its aria-label, and its aria-activedescendant now points at the highlighted command rather than at an id no element has; item ids are unique to each menu.

  • #1509 5acedc3e Thanks @tenphi! - Link every form input's description and error message to its control with aria-describedby, so a screen reader reads them with the field instead of announcing it invalid without saying why. aria-label alone now names the inputs of ComboBox and FilterListBox, and FileInput, TextInputMapper and CheckboxGroup; CheckboxGroup's group role, name and description move from the field wrapper to the element around its checkboxes, so fieldProps reach the wrapper again; ComboBox, FilterListBox, ListBox and ColorSwatchGroup mark an invalid field aria-invalid, which a screen reader announces; and Picker, FilterPicker and ColorPicker accept aria-describedby. The required asterisk and the check marks of Checkbox and ListBox are hidden from screen readers rather than read as unnamed graphics; with includeNecessityIndicatorInAccessibilityName, the asterisk is read as "(required)". The two calendar buttons of DateRangeSeparatedPicker are named for the start and end date, where both were "Calendar".

  • #1509 5acedc3e Thanks @tenphi! - Make a Skeleton one "Content is loading" region rather than one per bar, and hide the placeholders inside it, and in a table's loading rows, from screen readers. A standalone Placeholder is still that region, and is no longer an empty aria-live region. Result and Banner hide their status icons from screen readers rather than letting them be read as unnamed graphics.

  • #1508 d91cd10d Thanks @tenphi! - Reduce wide ItemTable and DataTable horizontal scrolling work by reusing the mounted column buffer between refills. Keep the existing ahead coverage, tooltips, headers and custom-cell behavior, release extra buffer cells when scrolling settles or vertical movement starts, and skip range tracking when every column is already retained.

  • #1509 5acedc3e Thanks @tenphi! - Translate the accessible names components set themselves, which were English in every language: ButtonSplit's menu button, CommandMenu's list and loading indicator, the dialog, value input, palette and color-space tabs of ColorPicker and ColorInput, ColorSwatchGroup's default and custom-color names, HotKeys (and the "or" between combinations), the resize handles of Layout.Panel and Layout.Pane, Tree's default name and TextInputMapper's add button. English text is unchanged.