@cube-dev/ui-kit 0.194.1 → 0.196.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CHANGELOG.md +190 -0
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.d.ts +6 -0
- package/dist/components/Root.js +125 -102
- package/dist/components/Root.js.map +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +11 -5
- package/dist/components/actions/Button/Button.js.map +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.d.ts +9 -4
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +27 -25
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/MenuCollectionItem.js +7 -4
- package/dist/components/actions/Menu/MenuCollectionItem.js.map +1 -1
- package/dist/components/actions/Menu/MenuItem.js +69 -60
- package/dist/components/actions/Menu/MenuItem.js.map +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +1 -4
- package/dist/components/actions/Menu/styled.js.map +1 -1
- package/dist/components/actions/actions-run.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +15 -14
- package/dist/components/actions/use-action.js.map +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.d.ts +14 -14
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +1 -1
- package/dist/components/content/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +1 -1
- package/dist/components/content/Item/Item.js +16 -4
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/Item/ItemWithNativeLinks.js +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +7 -3
- package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +29 -15
- package/dist/components/content/Layout/Layout.js.map +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +20 -10
- package/dist/components/content/Layout/LayoutContext.js.map +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +12 -9
- package/dist/components/content/Layout/LayoutFooter.js.map +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.d.ts +5 -1
- package/dist/components/content/Layout/LayoutPane.js +323 -149
- package/dist/components/content/Layout/LayoutPane.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanel.d.ts +4 -2
- package/dist/components/content/Layout/LayoutPanel.js +73 -2
- package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/TreeNode.js +2 -1
- package/dist/components/content/Tree/TreeNode.js.map +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +3 -3
- package/dist/components/content/use-auto-tooltip.js.map +1 -1
- package/dist/components/data/DataTable/DataTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +2 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
- package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js +1 -1
- package/dist/components/data/TableBase/RowCollection.js +1 -1
- package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
- package/dist/components/data/TableBase/TableRow.js +1 -1
- package/dist/components/data/TableBase/TableView.js +3 -1
- package/dist/components/data/TableBase/TableView.js.map +1 -1
- package/dist/components/data/TableBase/TreeGridTable.js +1 -1
- package/dist/components/data/TableBase/column-header.js +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-styles.js +1 -1
- package/dist/components/data/TableBase/column-tint.js +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/styled.js +1 -1
- package/dist/components/data/TableBase/table-tree.js +1 -1
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-column-menu.js +1 -1
- package/dist/components/data/TableBase/use-column-order.js +1 -1
- package/dist/components/data/TableBase/use-column-window.js +1 -1
- package/dist/components/data/TableBase/use-container-width.js +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +1 -1
- package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +28 -17
- package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +6 -6
- package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ColorInput/ColorInput.js +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.js +3 -1
- package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +2 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
- package/dist/components/fields/ComboBox/ComboBox.d.ts +27 -7
- package/dist/components/fields/ComboBox/ComboBox.js +1095 -619
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/ComboBox/comboBoxOptions.js +84 -0
- package/dist/components/fields/ComboBox/comboBoxOptions.js.map +1 -0
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
- package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
- package/dist/components/fields/DatePicker/YearPicker.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.d.ts +7 -0
- package/dist/components/fields/DatePicker/parseDate.js +17 -3
- package/dist/components/fields/DatePicker/parseDate.js.map +1 -1
- package/dist/components/fields/DatePicker/period.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.js +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +2 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +15 -6
- package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
- package/dist/components/fields/Input/Input.d.ts +2 -2
- package/dist/components/fields/Input/Input.js +2 -2
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.d.ts +10 -4
- package/dist/components/fields/ListBox/ListBox.js +298 -146
- package/dist/components/fields/ListBox/ListBox.js.map +1 -1
- package/dist/components/fields/ListBox/optionId.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +150 -139
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.d.ts +6 -1
- package/dist/components/fields/NumberInput/NumberInput.js +136 -128
- package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +38 -48
- package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.d.ts +1 -2
- package/dist/components/fields/PasswordInput/PasswordInput.js +77 -111
- package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/fields/Picker/Picker.d.ts +1 -1
- package/dist/components/fields/Picker/Picker.js +22 -8
- package/dist/components/fields/Picker/Picker.js.map +1 -1
- package/dist/components/fields/RadioGroup/Radio.d.ts +12 -8
- package/dist/components/fields/RadioGroup/Radio.js +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +2 -2
- package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
- package/dist/components/fields/SearchInput/SearchInput.d.ts +8 -3
- package/dist/components/fields/SearchInput/SearchInput.js +22 -29
- package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/fields/Select/Select.d.ts +12 -1
- package/dist/components/fields/Select/Select.js +365 -207
- package/dist/components/fields/Select/Select.js.map +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +3 -4
- package/dist/components/fields/Slider/RangeSlider.js.map +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +101 -101
- package/dist/components/fields/Switch/Switch.js.map +1 -1
- package/dist/components/fields/TagInput/TagInput.js +336 -330
- package/dist/components/fields/TagInput/TagInput.js.map +1 -1
- package/dist/components/fields/TagInput/TagList.js +1 -1
- package/dist/components/fields/TagInput/useActiveOption.js +1 -1
- package/dist/components/fields/TagInput/useTagError.js +1 -1
- package/dist/components/fields/TextArea/TextArea.d.ts +0 -1
- package/dist/components/fields/TextArea/TextArea.js +49 -63
- package/dist/components/fields/TextArea/TextArea.js.map +1 -1
- package/dist/components/fields/TextInput/TextInput.d.ts +1 -1
- package/dist/components/fields/TextInput/TextInput.js +42 -46
- package/dist/components/fields/TextInput/TextInput.js.map +1 -1
- package/dist/components/fields/TextInput/TextInputBase.d.ts +6 -2
- package/dist/components/fields/TextInput/TextInputBase.js +32 -10
- package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
- package/dist/components/fields/TextInput/displayed-validation.js +50 -0
- package/dist/components/fields/TextInput/displayed-validation.js.map +1 -0
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +20 -17
- package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
- package/dist/components/fields/TriggerActions.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +3 -1
- package/dist/components/fields/color/ColorPanel.js.map +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/fields/index.d.ts +2 -2
- package/dist/components/fields/option-origin-press.js +78 -0
- package/dist/components/fields/option-origin-press.js.map +1 -0
- package/dist/components/form/FieldWrapper/FieldWrapper.d.ts +10 -8
- package/dist/components/form/FieldWrapper/FieldWrapper.js +214 -158
- package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
- package/dist/components/form/FieldWrapper/field-description.js +3 -3
- package/dist/components/form/FieldWrapper/field-description.js.map +1 -1
- package/dist/components/form/FieldWrapper/types.d.ts +4 -3
- package/dist/components/form/Form/Field.js +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ModernFormRoot.js +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/backend.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/modern/actions.js +1 -1
- package/dist/components/form/Form/modern/context.js +1 -1
- package/dist/components/form/Form/modern/controller.js +1 -1
- package/dist/components/form/Form/modern/field-binding.js +1 -1
- package/dist/components/form/Form/modern/field.js +1 -1
- package/dist/components/form/Form/modern/react.js +1 -1
- package/dist/components/form/Form/modern/store.js +1 -1
- package/dist/components/form/Form/modern/validation.js +1 -1
- package/dist/components/form/Form/modern/values.js +1 -1
- package/dist/components/form/Form/reset-unbound-controls.js +1 -1
- package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +34 -22
- package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
- package/dist/components/form/Form/use-field/use-field.js +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/field-chrome.js +15 -0
- package/dist/components/form/field-chrome.js.map +1 -0
- package/dist/components/form/index.d.ts +1 -1
- package/dist/components/form/legacy-tooltip.js +1 -1
- package/dist/components/form/validation/ValidationIndicator.js +1 -1
- package/dist/components/form/validation/resolve-validation-props.js +1 -1
- package/dist/components/form/validation/use-validation-props.js +1 -1
- package/dist/components/form/wrapper.d.ts +6 -5
- package/dist/components/form/wrapper.js +11 -8
- package/dist/components/form/wrapper.js.map +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/ResizablePanel.js +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +3 -1
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +1 -1
- package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +2 -1
- package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/CalendarHeader.js +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/Calendar/styled.js +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.d.ts +6 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +3 -2
- package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.d.ts +15 -4
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +85 -15
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js.map +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/AlertDialog/types.d.ts +2 -1
- package/dist/components/overlays/Dialog/Dialog.js +28 -14
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.d.ts +7 -3
- package/dist/components/overlays/Dialog/DialogTrigger.js +149 -132
- package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
- package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/default-button-text.js +1 -1
- package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-open-sync.js +83 -0
- package/dist/components/overlays/Dialog/use-dialog-open-sync.js.map +1 -0
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js +9 -3
- package/dist/components/overlays/Modal/Overlay.js.map +1 -1
- package/dist/components/overlays/Modal/Popover.js +31 -29
- package/dist/components/overlays/Modal/Popover.js.map +1 -1
- package/dist/components/overlays/Modal/Tray.js +2 -1
- package/dist/components/overlays/Modal/Tray.js.map +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Modal/modal-containment.js +1 -1
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +18 -32
- package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useToast.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.d.ts +8 -0
- package/dist/components/overlays/Tooltip/Tooltip.js +16 -22
- package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.d.ts +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +163 -113
- package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/overlays/Tooltip/context.js.map +1 -1
- package/dist/components/overlays/Tooltip/split-trigger-props.js +6 -5
- package/dist/components/overlays/Tooltip/split-trigger-props.js.map +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/DraggableCollection.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/eslint-plugin/defaults.generated.js +11 -17
- package/dist/eslint-plugin/defaults.generated.js.map +1 -1
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
- package/dist/i18n/I18nProvider.js +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/instance.js +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +6 -4
- package/dist/i18n/locales/en-US/uikit.js +6 -4
- package/dist/i18n/locales/en-US/uikit.json.d.ts +3 -1
- package/dist/i18n/locales/es-ES/uikit.js +6 -4
- package/dist/i18n/locales/es-MX/uikit.js +6 -4
- package/dist/i18n/locales/fr-FR/uikit.js +6 -4
- package/dist/i18n/locales/it-IT/uikit.js +6 -4
- package/dist/i18n/locales/ja-JP/uikit.js +6 -4
- package/dist/i18n/locales/nb-NO/uikit.js +6 -4
- package/dist/i18n/locales/pt-BR/uikit.js +6 -4
- package/dist/i18n/locales/pt-PT/uikit.js +6 -4
- package/dist/i18n/locales/sv-SE/uikit.js +6 -4
- package/dist/i18n/locales/vi-VN/uikit.js +6 -4
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/namespace.js +1 -1
- package/dist/i18n/useFormatter.js +1 -1
- package/dist/i18n/useI18n.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/ArrowNarrowDownIcon.js +1 -1
- package/dist/icons/ArrowNarrowUpIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PipetteIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +4 -4
- package/dist/probe/canonicalize.js +1 -1
- package/dist/probe/css.js +1 -1
- package/dist/probe/index.js +1 -1
- package/dist/provider.js +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigation-url.js +15 -3
- package/dist/providers/navigation-url.js.map +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/providers/use-navigation.js +1 -1
- package/dist/shared/form.d.ts +17 -4
- package/dist/tokens/all-tokens.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/color-seed.js +1 -1
- package/dist/tokens/color-theme.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/lazy-styles.js +1 -1
- package/dist/tokens/legacy-color.js +1 -1
- package/dist/tokens/palette-config.js +1 -1
- package/dist/tokens/palette.js +1 -1
- package/dist/tokens/resolve.js +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/colors.js +1 -1
- package/dist/utils/dotize.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/disabledProps.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +18 -9
- package/dist/utils/react/nullableValue.js.map +1 -1
- package/dist/utils/react/overlayKeyPropagation.js +1 -1
- package/dist/utils/react/programmaticFocus.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useBufferedValue.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useScheme.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +2 -2
- package/docs/ComplexLayout.md +1 -1
- package/docs/CreateComponent.md +2 -0
- package/docs/FieldProperties.md +32 -5
- package/docs/Theming.md +2 -1
- package/docs/Usage.md +2 -0
- package/docs/components/Root.md +1 -1
- package/docs/components/actions/Button.md +8 -2
- package/docs/components/actions/ButtonSplit.md +27 -1
- package/docs/components/actions/Link.md +1 -1
- package/docs/components/actions/Menu.md +4 -2
- package/docs/components/content/InfoBadge.md +2 -0
- package/docs/components/content/ItemBadge.md +4 -0
- package/docs/components/content/Layout.md +41 -6
- package/docs/components/fields/Checkbox.md +4 -3
- package/docs/components/fields/ComboBox.md +30 -19
- package/docs/components/fields/FilterListBox.md +2 -2
- package/docs/components/fields/FilterPicker.md +2 -2
- package/docs/components/fields/ListBox.md +14 -10
- package/docs/components/fields/NumberInput.md +20 -11
- package/docs/components/fields/PasswordInput.md +6 -7
- package/docs/components/fields/Picker.md +6 -5
- package/docs/components/fields/RadioGroup.md +1 -1
- package/docs/components/fields/SearchInput.md +7 -6
- package/docs/components/fields/Select.md +14 -8
- package/docs/components/fields/Switch.md +4 -3
- package/docs/components/fields/TagInput.md +8 -1
- package/docs/components/fields/TextArea.md +4 -3
- package/docs/components/fields/TextInput.md +13 -6
- package/docs/components/overlays/AlertDialog.md +45 -5
- package/docs/components/overlays/Dialog.md +5 -5
- package/docs/components/overlays/DialogTrigger.md +6 -6
- package/docs/components/overlays/Tooltip.md +17 -6
- package/docs/components/overlays/TooltipTrigger.md +2 -0
- package/package.json +1 -1
|
@@ -141,12 +141,12 @@ A disabled checkbox still shows its tooltip, which makes it a good place to say
|
|
|
141
141
|
|
|
142
142
|
- `Tab` - Moves focus to the checkbox
|
|
143
143
|
- `Space` - Toggles the checkbox state
|
|
144
|
-
- `Enter`
|
|
144
|
+
- `Enter` does not toggle the checkbox. Inside a form with a submit button, the browser submits the form instead.
|
|
145
145
|
|
|
146
146
|
### Screen Reader Support
|
|
147
147
|
|
|
148
148
|
- Component announces as "checkbox" to screen readers
|
|
149
|
-
- State changes are announced (
|
|
149
|
+
- State changes are announced (checked, not checked, or mixed for `isIndeterminate`)
|
|
150
150
|
- Required state is communicated when `isRequired` is true
|
|
151
151
|
- Validation errors are announced when present
|
|
152
152
|
|
|
@@ -155,10 +155,11 @@ A disabled checkbox still shows its tooltip, which makes it a good place to say
|
|
|
155
155
|
- `aria-label` - Provides accessible label when no visible label exists
|
|
156
156
|
- `aria-labelledby` - References external label elements
|
|
157
157
|
- `aria-describedby` - References additional descriptive text
|
|
158
|
-
- `aria-checked` - Indicates checkbox state (true, false, or mixed for indeterminate)
|
|
159
158
|
- `aria-required` - Indicates if selection is required
|
|
160
159
|
- `aria-invalid` - Indicates validation state
|
|
161
160
|
|
|
161
|
+
The control is a native `<input type="checkbox">`, so its state is the input's `checked` property, plus `indeterminate` for the mixed state. No `aria-checked` is written.
|
|
162
|
+
|
|
162
163
|
## Best Practices
|
|
163
164
|
|
|
164
165
|
1. **Do**: Provide clear, descriptive labels
|
|
@@ -27,19 +27,19 @@ A combobox component that combines a text input with a dropdown list, allowing u
|
|
|
27
27
|
- **`selectedKey`** `string` — The currently selected key (controlled)
|
|
28
28
|
- **`defaultSelectedKey`** `string` — The key of the initially selected item (uncontrolled)
|
|
29
29
|
- **`allowsCustomValue`** `boolean` (default: `false`) — Whether the combo box allows custom values to be entered
|
|
30
|
-
- **`shouldCommitOnBlur`** `boolean` (default: `true`) — Whether to commit custom value on blur in allowsCustomValue mode
|
|
31
|
-
- **`clearOnBlur`** `boolean` (default: `false`) — Whether to clear selection and input on blur (only applies to non-custom-value mode)
|
|
30
|
+
- **`shouldCommitOnBlur`** `boolean` (default: `true`) — Whether to commit custom value on blur in allowsCustomValue mode. When `false`, blur discards the uncommitted text
|
|
31
|
+
- **`clearOnBlur`** `boolean` (default: `false`) — Whether to clear selection and input on blur when the text names no selectable item (only applies to non-custom-value mode)
|
|
32
32
|
- **`isClearable`** `boolean` (default: `false`) — Whether the combo box is clearable using ESC keyboard button or clear button inside the input
|
|
33
33
|
- **`sortSelectedToTop`** `boolean` (default: `true when items provided, false otherwise`) — Whether to sort selected item to the top when popover opens (only works with items prop)
|
|
34
|
-
- **`popoverTrigger`** `'focus' | 'input' | 'manual'` (default: `input`) —
|
|
34
|
+
- **`popoverTrigger`** `'focus' | 'input' | 'manual'` (default: `input`) — When the list opens on its own, see **popoverTrigger** below
|
|
35
35
|
- **`filter`** `((textValue: string, inputValue: string) => boolean) | false` — Custom filter function or false to disable filtering. If not provided, uses default contains filter
|
|
36
36
|
- **`hideTrigger`** `boolean` (default: `false`) — Whether to hide the trigger button
|
|
37
|
-
- **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — ComboBox size
|
|
37
|
+
- **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — ComboBox size, which the options in the list share
|
|
38
38
|
- **`listGap`** `number` — Space between options, in pixels. Defaults to a hairline (`1bw`)
|
|
39
39
|
- **`necessityIndicator`** `'label' | 'icon'` — How the required state should be indicated
|
|
40
40
|
- **`onSelectionChange`** `(key: Key | null) => void` — Callback fired when the selected option changes
|
|
41
41
|
- **`onInputChange`** `(value: string) => void` — Callback fired when the input text changes
|
|
42
|
-
- **`onOpenChange`** `(isOpen: boolean) => void` — Callback fired when the
|
|
42
|
+
- **`onOpenChange`** `(isOpen: boolean) => void` — Callback fired when the list shows or hides. Not called on mount, nor while typed text that matches nothing keeps the list hidden
|
|
43
43
|
- **`prefix`** `ReactNode` — Content rendered before the input
|
|
44
44
|
- **`suffix`** `ReactNode` — Content rendered after the input
|
|
45
45
|
- **`suffixPosition`** `'before' | 'after'` (default: `before`) — Position of suffix relative to validation/loading icons
|
|
@@ -56,7 +56,7 @@ A combobox component that combines a text input with a dropdown list, allowing u
|
|
|
56
56
|
|
|
57
57
|
#### Notable Properties
|
|
58
58
|
|
|
59
|
-
**onKeyDown** - Runs before ComboBox's own key handling, listed under [Keyboard Navigation](#keyboard-navigation). Calling `e.preventDefault()` takes the key over: ComboBox skips its handling for that event, so a prevented `ArrowDown` does not open the popover or move focus, and a prevented `Enter` does not select the focused option or commit a custom value. Without `preventDefault()` the built-in handling runs as usual after your handler. The event is React Aria's keyboard event (`KeyboardEvent` from `@react-types/shared`),
|
|
59
|
+
**onKeyDown** - Runs before ComboBox's own key handling, listed under [Keyboard Navigation](#keyboard-navigation). Calling `e.preventDefault()` takes the key over: ComboBox skips its handling for that event, so a prevented `ArrowDown` does not open the popover or move focus, and a prevented `Enter` does not select the focused option or commit a custom value. Without `preventDefault()` the built-in handling runs as usual after your handler. The event is React Aria's keyboard event (`KeyboardEvent` from `@react-types/shared`). `Escape` and `Tab` go on to ancestors, so a surrounding `Dialog` still closes on `Escape` and keeps `Tab` inside, unless ComboBox acts on them: `Escape` that closes the list or clears the value stops at the input. Other keys stop at the input unless you call `e.continuePropagation()`.
|
|
60
60
|
|
|
61
61
|
```jsx
|
|
62
62
|
<ComboBox
|
|
@@ -76,7 +76,7 @@ A combobox component that combines a text input with a dropdown list, allowing u
|
|
|
76
76
|
</ComboBox>
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
**Enter inside a form.** `preventDefault()` stops the browser's form submission and ComboBox's own handling together; it cannot stop just one. With `allowsCustomValue
|
|
79
|
+
**Enter inside a form.** `preventDefault()` stops the browser's form submission and ComboBox's own handling together; it cannot stop just one. With `allowsCustomValue` and the popover closed, the built-in `Enter` commits the typed value and lets the event through, so the surrounding form submits. A handler that prevents that `Enter` stops both: the form does not submit, and the value is not committed until the input loses focus (when `shouldCommitOnBlur` is on, the default). In earlier versions such a handler stopped only the submit, and the value was still committed on `Enter`. To keep that behavior, commit the value in your handler:
|
|
80
80
|
|
|
81
81
|
```jsx
|
|
82
82
|
const [selectedKey, setSelectedKey] = useState(null);
|
|
@@ -106,17 +106,25 @@ const [selectedKey, setSelectedKey] = useState(null);
|
|
|
106
106
|
|
|
107
107
|
**sortSelectedToTop** - When using the `items` prop (data-driven mode), the selected item will automatically appear at the top of the list when the popover opens. This is enabled by default when using `items`, but disabled when using JSX children. Set to `false` to maintain the original order.
|
|
108
108
|
|
|
109
|
-
**allowsCustomValue** - Enables users to enter values that aren't in the predefined options list. Custom values can be committed by pressing Enter or on blur (controlled by `shouldCommitOnBlur`). **Important**: When enabled, typing in the input will clear the current selection. When disabled (default), typing only filters the options without clearing the selection.
|
|
109
|
+
**allowsCustomValue** - Enables users to enter values that aren't in the predefined options list. Custom values can be committed by pressing Enter or on blur (controlled by `shouldCommitOnBlur`). With the list open, Enter picks the highlighted option; with it closed (press `Escape` first), Enter commits the typed text, even when it is part of an option's label. The text is committed trimmed, and empty or whitespace-only text clears the selection (`null`). **Important**: When enabled, typing in the input will clear the current selection. When disabled (default), typing only filters the options without clearing the selection.
|
|
110
110
|
|
|
111
|
-
**shouldCommitOnBlur** - When `true` (default), custom values are committed when the input loses focus. When `false`,
|
|
111
|
+
**shouldCommitOnBlur** - When `true` (default), custom values are committed when the input loses focus. When `false`, only Enter or picking an option commits, and leaving the input discards the uncommitted text: the input shows the selected option's label again, so the text always agrees with the value. As typing clears the selection, that usually leaves the input empty. Only applies when `allowsCustomValue` is enabled.
|
|
112
112
|
|
|
113
|
-
**
|
|
113
|
+
**isReadOnly** - The list doesn't open, from the chevron, the arrow keys, a press in the input or focus, and neither keys nor blur change the value or the text. The clear button is hidden.
|
|
114
|
+
|
|
115
|
+
**clearOnBlur** - When `true`, text that names no selectable item clears both the selection and the input when the input loses focus. When `false` (default), the input reverts to showing the current selection, and empty text still clears it. Only applies to non-custom-value mode. Useful for search-like scenarios where you want to reset after each interaction.
|
|
116
|
+
|
|
117
|
+
**Blur** - Without `allowsCustomValue`, leaving the input selects the item the text names exactly, or else the only item it still matches, unless that item is in `disabledKeys`. The exact match follows the filter's rules for case, accents and locale. Among items sharing the label, the selected one wins, then the first enabled one. Empty text clears the selection. Other text reverts to the selection, or clears with `clearOnBlur`; a disabled item that is already selected stays selected. Blur reports only what it changes: leaving a field without editing it calls neither `onSelectionChange` nor `onInputChange`.
|
|
118
|
+
|
|
119
|
+
**Presses in the input** - A press in the input opens a closed list, whether the input already had focus or not, unless `popoverTrigger` is `manual`. The list shows the options the typed text leaves, and text that matches nothing keeps it hidden, so a press that moves the caret does not change what `Enter` commits; the chevron and the arrow keys show every option instead. A press in the input while the list is open only moves the caret; the chevron still toggles the list. A click on the field label only focuses the input.
|
|
120
|
+
|
|
121
|
+
**Outside presses** - While the list is open, a press on an enabled control outside it reaches the control on the first click, after the typed text settles as it does on `Tab`. The control has to be in the dialog, popover or menu the field sits in, or anywhere on the page when the field is in none; an enabled UI Kit `Button` or `ItemButton` is reached from anywhere. A press anywhere else, such as blank space, a dialog's backdrop or a control outside the field's dialog or popover, only closes the list and keeps the input focused with its text. A press on a disabled control keeps the focus and text too; the list stays open unless the control is only `aria-disabled`.
|
|
114
122
|
|
|
115
123
|
**popoverTrigger** - Controls how the popover opens:
|
|
116
124
|
|
|
117
125
|
- `manual` - Only opens via trigger button or arrow keys
|
|
118
|
-
- `input` (default) - Opens when user types + manual triggers
|
|
119
|
-
- `focus` - Opens on input focus + typing + manual triggers
|
|
126
|
+
- `input` (default) - Opens when the user types or presses the input + manual triggers
|
|
127
|
+
- `focus` - Opens on input focus + typing + presses + manual triggers
|
|
120
128
|
|
|
121
129
|
**filter** - Custom filter function or `false` to disable filtering. By default, uses a contains-based filter. Provide a custom function `(textValue, inputValue) => boolean` to customize filtering logic.
|
|
122
130
|
|
|
@@ -204,8 +212,8 @@ The `mods` property accepts the following modifiers you can override:
|
|
|
204
212
|
### Popover Trigger Modes
|
|
205
213
|
|
|
206
214
|
- `manual` - Only opens via trigger button or arrow keys
|
|
207
|
-
- `input` - Opens when user types + manual triggers (default)
|
|
208
|
-
- `focus` - Opens on input focus + typing + manual triggers
|
|
215
|
+
- `input` - Opens when the user types or presses the input + manual triggers (default)
|
|
216
|
+
- `focus` - Opens on input focus + typing + presses + manual triggers
|
|
209
217
|
|
|
210
218
|
### Validation States
|
|
211
219
|
|
|
@@ -362,6 +370,8 @@ const categories = [
|
|
|
362
370
|
|
|
363
371
|
### Loading State
|
|
364
372
|
|
|
373
|
+
The input shows the selected option's label. A `selectedKey` whose option has not loaded yet shows the key until the option arrives. Once the input has shown a label for the selected key, it keeps that label while the options leave the item out, for example during a refetch or a server-side search.
|
|
374
|
+
|
|
365
375
|
```jsx
|
|
366
376
|
<ComboBox isLoading label="Fruit" placeholder="Select a fruit...">
|
|
367
377
|
<ComboBox.Item key="apple">Apple</ComboBox.Item>
|
|
@@ -561,11 +571,11 @@ const [selectedKey, setSelectedKey] = useState(null);
|
|
|
561
571
|
|
|
562
572
|
### Keyboard Navigation
|
|
563
573
|
|
|
564
|
-
- `Tab` - Moves focus to/from the combobox input
|
|
574
|
+
- `Tab` - Moves focus to/from the combobox input and closes the popover. The chevron and clear buttons are not Tab stops
|
|
565
575
|
- `ArrowDown` - Opens popover (if closed) or moves focus to next option
|
|
566
576
|
- `ArrowUp` - Opens popover (if closed) or moves focus to previous option
|
|
567
|
-
- `Enter` - Selects the focused option and closes popover
|
|
568
|
-
- `Escape` - Closes popover (if open) or clears input (if clearable and popover closed)
|
|
577
|
+
- `Enter` - Selects the focused option and closes popover. Pressed right after typing, it picks the first match. With `allowsCustomValue` and the popover closed, commits the typed text. Ignored while an input method (IME) is composing text
|
|
578
|
+
- `Escape` - Closes popover (if open) or clears input (if clearable and popover closed); otherwise it goes on, so a surrounding dialog closes
|
|
569
579
|
- `Home` - Moves focus to the first option (when popover is open)
|
|
570
580
|
- `End` - Moves focus to the last option (when popover is open)
|
|
571
581
|
- Typing - Filters options based on input value
|
|
@@ -584,10 +594,11 @@ An `onKeyDown` handler runs before all of these and can skip any of them for a k
|
|
|
584
594
|
### ARIA Properties
|
|
585
595
|
|
|
586
596
|
- `role="combobox"` - Identifies the input as a combobox
|
|
587
|
-
- `aria-expanded` - Indicates whether the
|
|
597
|
+
- `aria-expanded` - Indicates whether the list is shown
|
|
588
598
|
- `aria-haspopup="listbox"` - Indicates the combobox has a listbox popup
|
|
599
|
+
- `aria-autocomplete="list"` - Indicates that typing filters the options
|
|
589
600
|
- `aria-controls` - References the listbox ID when popover is open
|
|
590
|
-
- `aria-activedescendant` - References the currently focused option
|
|
601
|
+
- `aria-activedescendant` - References the currently focused option, while it is shown
|
|
591
602
|
- `aria-label` - Provides accessible label when no visible label exists
|
|
592
603
|
- `aria-required` - Indicates required fields
|
|
593
604
|
- `aria-invalid` - Indicates validation errors
|
|
@@ -36,8 +36,8 @@ A searchable list selection component that combines a ListBox with an integrated
|
|
|
36
36
|
- **`description`** `string` — Field description
|
|
37
37
|
- **`header`** `ReactNode` — Custom header content
|
|
38
38
|
- **`footer`** `ReactNode` — Custom footer content
|
|
39
|
-
- **`showSelectAll`** `boolean` (default: `false`) — Whether to show "Select All"
|
|
40
|
-
- **`selectAllLabel`** `string` (default: `All`) — Label for the "Select All"
|
|
39
|
+
- **`showSelectAll`** `boolean` (default: `false`) — Whether to show "Select All" checkbox in multiple mode. Under a search it selects or deselects only the options shown, and selected options the search hides stay selected
|
|
40
|
+
- **`selectAllLabel`** `string` (default: `Select All`) — Label for the "Select All" checkbox
|
|
41
41
|
- **`searchValue`** `string` — Controlled search input value
|
|
42
42
|
- **`onSearchChange`** `(value: string) => void` — Callback when search input changes
|
|
43
43
|
- **`onSelectionChange`** `(keys: Key | Key[] | 'all' | null) => void` — Callback when selection changes
|
|
@@ -50,8 +50,8 @@ Choose a different component when the interaction has another shape:
|
|
|
50
50
|
- **`renderSummary`** `((args: { selectedLabels, selectedKeys, selectionMode }) => ReactNode) | false` — Custom renderer for the summary shown inside the trigger when there is a selection
|
|
51
51
|
- **`isCheckable`** `boolean` (default: `false`) — Whether to show checkboxes for multiple selection mode
|
|
52
52
|
- **`shouldFocusWrap`** `boolean` (default: `false`) — Whether keyboard navigation should wrap around
|
|
53
|
-
- **`showSelectAll`** `boolean` (default: `false`) — Whether to show the "Select All"
|
|
54
|
-
- **`selectAllLabel`** `string` (default: `All`) — Label for the "Select All"
|
|
53
|
+
- **`showSelectAll`** `boolean` (default: `false`) — Whether to show the "Select All" checkbox in multiple selection mode. Under a search it selects or deselects only the options shown, and selected options the search hides stay selected
|
|
54
|
+
- **`selectAllLabel`** `string` (default: `All`) — Label for the "Select All" checkbox
|
|
55
55
|
- **`description`** `string` — Field description
|
|
56
56
|
- **`message`** `string` — Help or error message
|
|
57
57
|
- **`listBoxStyles`** `Styles` — Custom styles for the dropdown list container within the popover
|
|
@@ -31,7 +31,7 @@ A versatile list selection component that allows users to select one or more ite
|
|
|
31
31
|
- **`shape`** `'card' | 'plain' | 'popover'` (default: `card`) — Visual shape of the ListBox
|
|
32
32
|
- **`listGap`** `number` — Space between options, in pixels. Defaults to a hairline (`1bw`)
|
|
33
33
|
- **`filter`** `(nodes: Iterable<Node>) => Iterable<Node>` — Filter function for the list items
|
|
34
|
-
- **`emptyLabel`** `ReactNode` (default: `No items`) — Label shown when no items are available
|
|
34
|
+
- **`emptyLabel`** `ReactNode` (default: `No items`) — Label shown when no items are available. The empty listbox stays in the document, described by this label
|
|
35
35
|
- **`header`** `ReactNode` — Custom header content
|
|
36
36
|
- **`footer`** `ReactNode` — Custom footer content
|
|
37
37
|
- **`focusOnHover`** `boolean` (default: `true`) — Whether moving the pointer over an option will move DOM focus to that option
|
|
@@ -41,13 +41,13 @@ A versatile list selection component that allows users to select one or more ite
|
|
|
41
41
|
- **`shouldFocusWrap`** `boolean` (default: `false`) — Whether keyboard navigation should wrap around
|
|
42
42
|
- **`description`** `string` — Field description
|
|
43
43
|
- **`message`** `string` — Help or error message
|
|
44
|
-
- **`showSelectAll`** `boolean` (default: `false`) — Whether to show the "Select All"
|
|
45
|
-
- **`selectAllLabel`** `string` (default: `Select All`) — Label for the "Select All"
|
|
44
|
+
- **`showSelectAll`** `boolean` (default: `false`) — Whether to show the "Select All" checkbox in multiple selection mode
|
|
45
|
+
- **`selectAllLabel`** `string` (default: `Select All`) — Label for the "Select All" checkbox
|
|
46
46
|
- **`onSelectionChange`** `(keys: Key | Key[] | 'all' | null) => void` — Callback when selection changes
|
|
47
47
|
- **`onEscape`** `() => void` — Callback when Escape key is pressed
|
|
48
48
|
- **`onOptionClick`** `(key: Key) => void` — Callback when an option is clicked (non-checkbox area)
|
|
49
49
|
- **`items`** `Iterable<T>` — Array of items for dynamic content with render function pattern
|
|
50
|
-
- **`disableSelectionToggle`** `boolean` (default: `false`) — When true, clicking an already-selected item keeps it selected instead of toggling it off
|
|
50
|
+
- **`disableSelectionToggle`** `boolean` (default: `false`) — When true, clicking an already-selected item keeps it selected instead of toggling it off (single selection mode)
|
|
51
51
|
- **`isReorderable`** `boolean` (default: `false`) — Enable drag-and-drop item reordering. Disables virtualization when active
|
|
52
52
|
- **`onReorder`** `(newOrder: string[]) => void` — Callback when items are reordered via drag-and-drop or keyboard (Alt+Arrow)
|
|
53
53
|
|
|
@@ -137,18 +137,21 @@ The `mods` property accepts the following modifiers you can override:
|
|
|
137
137
|
|
|
138
138
|
**showSelectAll** (`boolean`, default: `false`)
|
|
139
139
|
|
|
140
|
-
- When `true` in multiple selection mode, displays a "Select All"
|
|
141
|
-
- The checkbox shows three states: unchecked (none selected), indeterminate (some selected), checked (
|
|
140
|
+
- When `true` in multiple selection mode, displays a "Select All" checkbox above the list
|
|
141
|
+
- The checkbox shows three states: unchecked (none selected), indeterminate (some selected), checked (every selectable item the list shows is selected, however it got there). Disabled items don't count
|
|
142
|
+
- A press while it is not checked selects every item, reported as `'all'`. A press while it is checked takes the items the list shows out of the selection, so selected keys that are not among its items stay selected
|
|
143
|
+
- Under a `filter` that hides items, it acts on the items shown: a press adds them to the selection or, once all of them are selected, removes them. Selected items the filter hides stay selected
|
|
144
|
+
- It sits outside the listbox as its own Tab stop: `Tab` / `Shift+Tab` reach it and `Space` toggles it
|
|
142
145
|
- Only works with `selectionMode="multiple"`
|
|
143
146
|
|
|
144
147
|
**selectAllLabel** (`ReactNode`, default: `'Select All'`)
|
|
145
148
|
|
|
146
|
-
- Custom label for the "Select All"
|
|
149
|
+
- Custom label for the "Select All" checkbox
|
|
147
150
|
- Only used when `showSelectAll={true}`
|
|
148
151
|
|
|
149
152
|
**allValueProps** (`Partial<CubeItemProps>`)
|
|
150
153
|
|
|
151
|
-
- Props to customize the styling and behavior of the "Select All"
|
|
154
|
+
- Props to customize the styling and behavior of the "Select All" checkbox
|
|
152
155
|
- Accepts any Item props like `styles`, `icon`, etc.
|
|
153
156
|
|
|
154
157
|
**disallowEmptySelection** (`boolean`, default: `false`)
|
|
@@ -163,7 +166,7 @@ The `mods` property accepts the following modifiers you can override:
|
|
|
163
166
|
|
|
164
167
|
**disableSelectionToggle** (`boolean`, default: `false`)
|
|
165
168
|
|
|
166
|
-
- When `true`, clicking an already-selected item keeps it selected instead of toggling it off
|
|
169
|
+
- When `true`, clicking an already-selected item keeps it selected instead of toggling it off, and `onSelectionChange` reports that item again. Applies in single selection mode, set or by default
|
|
167
170
|
- Useful when embedding ListBox inside components like ComboBox
|
|
168
171
|
|
|
169
172
|
**disabledKeys** (`Key[]`)
|
|
@@ -700,6 +703,7 @@ const [keyOrder, setKeyOrder] = useState([
|
|
|
700
703
|
### Keyboard Navigation
|
|
701
704
|
|
|
702
705
|
- `Tab` - Moves focus to/from the ListBox. A disabled ListBox is not in the Tab order
|
|
706
|
+
- `Tab` / `Shift+Tab` - Reach the "Select All" checkbox (with `showSelectAll`), which `Space` toggles
|
|
703
707
|
- `Arrow Keys` - Navigate between options
|
|
704
708
|
- `Space/Enter` - Select/deselect the focused option
|
|
705
709
|
- `Home/End` - Move to first/last option
|
|
@@ -823,7 +827,7 @@ function Example() {
|
|
|
823
827
|
|
|
824
828
|
### Virtualization
|
|
825
829
|
|
|
826
|
-
For large datasets, use the `items` prop with a render function. This enables automatic virtualization — only visible items are rendered in the DOM, providing smooth scrolling even with thousands of items.
|
|
830
|
+
For large datasets, use the `items` prop with a render function. This enables automatic virtualization — only visible items are rendered in the DOM, providing smooth scrolling even with thousands of items. Moving focus to an option that isn't rendered (`End`, `Home`, `Page Down`, typeahead, or the selected option when the list takes focus) scrolls the list to it.
|
|
827
831
|
|
|
828
832
|
```jsx
|
|
829
833
|
const items = Array.from({ length: 1000 }, (_, i) => ({
|
|
@@ -16,13 +16,14 @@ A number input component that allows users to enter numeric values and increment
|
|
|
16
16
|
|
|
17
17
|
### Properties
|
|
18
18
|
|
|
19
|
-
- **`value`** `number` — The numeric value in controlled mode
|
|
19
|
+
- **`value`** `number | null` — The numeric value in controlled mode. `null` clears the field and keeps it controlled
|
|
20
20
|
- **`defaultValue`** `number` — The default numeric value in uncontrolled mode
|
|
21
21
|
- **`placeholder`** `string` — Placeholder text when input is empty
|
|
22
22
|
- **`icon`** `ReactElement` — Icon element rendered before the input
|
|
23
23
|
- **`prefix`** — Input decoration before the main input
|
|
24
24
|
- **`suffix`** — Input decoration after the main input
|
|
25
|
-
- **`suffixPosition`** `'before' | 'after'` (default: `before`) — Position of suffix relative to validation/loading
|
|
25
|
+
- **`suffixPosition`** `'before' | 'after'` (default: `before`) — Position of `suffix` relative to the stepper buttons. `before` keeps a unit next to the number (`40 px ⌃⌄`); `after` places the suffix after the steppers. The validation/loading icon always comes before both
|
|
26
|
+
- **`actions`** `ReactNode` — Controls placed last, after the steppers and `suffix` whatever `suffixPosition` is
|
|
26
27
|
- **`hideStepper`** `boolean` (default: `false`) — Whether to hide the stepper buttons
|
|
27
28
|
- **`minValue`** `number` — Minimum allowed value
|
|
28
29
|
- **`maxValue`** `number` — Maximum allowed value
|
|
@@ -31,10 +32,11 @@ A number input component that allows users to enter numeric values and increment
|
|
|
31
32
|
- **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — Input size
|
|
32
33
|
- **`autoComplete`** `string` (default: `off`) — HTML [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) token that tells the browser what to autofill (`cc-number`, `one-time-code`, …). A number field opts out of autofill by default.
|
|
33
34
|
- **`isWheelDisabled`** `boolean` — Whether scrolling the mouse wheel changes the value
|
|
34
|
-
- **`decrementAriaLabel`** `string` — Custom aria-label for the decrement button
|
|
35
|
-
- **`incrementAriaLabel`** `string` — Custom aria-label for the increment button
|
|
35
|
+
- **`decrementAriaLabel`** `string` — Custom aria-label for the decrement button, in place of the translated "Decrease {label}"
|
|
36
|
+
- **`incrementAriaLabel`** `string` — Custom aria-label for the increment button, in place of the translated "Increase {label}"
|
|
36
37
|
- **`inputProps`** `Props` — Direct props passed to the native input element, merged over the props React Aria generates: a key you set wins, and event handlers are chained rather than replaced
|
|
37
|
-
- **`wrapperProps`** `Props` — Direct props passed to the input wrapper element
|
|
38
|
+
- **`wrapperProps`** `Props` — Direct props passed to the input wrapper element, merged with the `group` props React Aria puts there: event handlers are chained
|
|
39
|
+
- **`validate`** `(value: number) => ValidationError | true | null | undefined` — Client-side validation. React Aria sets `aria-invalid` from the returned errors at once; the invalid style and the message follow after the user edits or leaves the field, so an empty field does not open in red. A typed number is checked once it commits, on blur or `Enter`. An explicit `errorMessage` replaces the returned message, and an explicit `isInvalid` (or a form's validation) takes over from `validate` entirely
|
|
38
40
|
- **`onChange`** `function` — Callback fired when the input value changes
|
|
39
41
|
- **`onBlur`** `function` — Callback fired when the input loses focus
|
|
40
42
|
- **`onFocus`** `function` — Callback fired when the input receives focus
|
|
@@ -109,7 +111,7 @@ The `mods` prop accepts the following modifiers you can override:
|
|
|
109
111
|
- **`disabled`** `boolean` — Forces disabled appearance.
|
|
110
112
|
- **`invalid`** `boolean` — Forces invalid state styling.
|
|
111
113
|
- **`valid`** `boolean` — Forces valid state styling.
|
|
112
|
-
- **`
|
|
114
|
+
- **`hovered`** `boolean` — Forces hover appearance.
|
|
113
115
|
- **`prefix`** `boolean` — Indicates presence of prefix content.
|
|
114
116
|
- **`suffix`** `boolean` — Indicates presence of suffix content.
|
|
115
117
|
|
|
@@ -139,6 +141,14 @@ The `mods` prop accepts the following modifiers you can override:
|
|
|
139
141
|
<NumberInput label="Amount" hideStepper />
|
|
140
142
|
```
|
|
141
143
|
|
|
144
|
+
### With a Unit Suffix
|
|
145
|
+
|
|
146
|
+
A unit sits between the number and the steppers. Pass `suffixPosition="after"` to put the suffix after the steppers instead.
|
|
147
|
+
|
|
148
|
+
```jsx
|
|
149
|
+
<NumberInput label="Width" defaultValue={40} suffix={<Text>px</Text>} />
|
|
150
|
+
```
|
|
151
|
+
|
|
142
152
|
### With Min/Max/Step
|
|
143
153
|
|
|
144
154
|
```jsx
|
|
@@ -169,17 +179,16 @@ The `mods` prop accepts the following modifiers you can override:
|
|
|
169
179
|
|
|
170
180
|
### Screen Reader Support
|
|
171
181
|
|
|
172
|
-
- Announces
|
|
173
|
-
-
|
|
174
|
-
- Announces min/max/step constraints
|
|
182
|
+
- Announces a text field described as "Number field", with its label, description and validation messages
|
|
183
|
+
- The stepper buttons are named after the field ("Increase Quantity", "Decrease Quantity"), translated with the UI Kit locale. With a label that is not text, the name is "Increase" or "Decrease" and the label is read after it. They are not in the `Tab` order, and pressing one does not close a popover the field sits in
|
|
175
184
|
- State changes like "invalid" or "required" are announced
|
|
176
|
-
-
|
|
185
|
+
- The loading indicator is visual only: `isLoading` is not announced
|
|
177
186
|
|
|
178
187
|
### ARIA Properties
|
|
179
188
|
|
|
180
189
|
- `aria-label`, `aria-labelledby` – Accessible name for the input
|
|
181
190
|
- `aria-describedby` – Links to description and error messages
|
|
182
|
-
- `aria-invalid` – Managed automatically based on `isInvalid`
|
|
191
|
+
- `aria-invalid` – Managed automatically based on `isInvalid` and `validate`
|
|
183
192
|
- `aria-required` – Set when `isRequired` is true
|
|
184
193
|
- Additional ARIA attributes supported by React Aria's `useNumberField`
|
|
185
194
|
|
|
@@ -16,7 +16,7 @@ A password input is a specialized text field that masks user input to protect se
|
|
|
16
16
|
|
|
17
17
|
### Properties
|
|
18
18
|
|
|
19
|
-
- **`value`** `string` — The password value in controlled mode
|
|
19
|
+
- **`value`** `string | null` — The password value in controlled mode. `null` clears the field and keeps it controlled
|
|
20
20
|
- **`defaultValue`** `string` — The default password value in uncontrolled mode
|
|
21
21
|
- **`isBuffered`** `boolean` (default: `true`) — Whether typed text is held locally until the controlled `value` catches up. This is what keeps the caret in place when the value round-trips through a store that re-renders a pass late; `onChange` still fires on every keystroke. Set to `false` for a caller that must see the field snap back to its own `value` the moment it declines a keystroke.
|
|
22
22
|
- **`placeholder`** `string` — Placeholder text when input is empty
|
|
@@ -26,7 +26,7 @@ A password input is a specialized text field that masks user input to protect se
|
|
|
26
26
|
- **`suffixPosition`** `'before' | 'after'` (default: `after`) — Position of suffix relative to validation/loading icons
|
|
27
27
|
- **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — Input size
|
|
28
28
|
- **`autoComplete`** `string` — HTML [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) token that tells the browser what to autofill (`current-password`, `new-password`, `off`, …). The lowercase `autocomplete` alias is deprecated.
|
|
29
|
-
- **`inputProps`** `Props` — Direct props passed to the native input element, merged over the props React Aria generates: a key you set wins, and event handlers are chained rather than replaced
|
|
29
|
+
- **`inputProps`** `Props` — Direct props passed to the native input element, merged over the props React Aria generates: a key you set wins, and event handlers are chained rather than replaced. The explicit `isDisabled`, `maxLength`, `minLength`, `autoFocus` and `autoComplete` props win over the same attributes in `inputProps` when they are set; one left unset keeps the `inputProps` value
|
|
30
30
|
- **`wrapperProps`** `Props` — Direct props passed to the input wrapper element
|
|
31
31
|
- **`onChange`** `function` — Callback fired when the input value changes
|
|
32
32
|
- **`onBlur`** `function` — Callback fired when the input loses focus
|
|
@@ -186,8 +186,8 @@ The `mods` property accepts the following modifiers you can override:
|
|
|
186
186
|
|
|
187
187
|
### Keyboard Navigation
|
|
188
188
|
|
|
189
|
-
- `Tab` - Moves focus to the password input
|
|
190
|
-
- `Shift + Tab` - Moves focus
|
|
189
|
+
- `Tab` - Moves focus to the password input, then to the toggle button, which comes after it
|
|
190
|
+
- `Shift + Tab` - Moves focus from the toggle button back to the input
|
|
191
191
|
- `Enter` - Toggles password visibility when toggle button is focused
|
|
192
192
|
- `Space` - Toggles password visibility when toggle button is focused
|
|
193
193
|
- All standard text input keyboard shortcuts work for text entry
|
|
@@ -195,8 +195,7 @@ The `mods` property accepts the following modifiers you can override:
|
|
|
195
195
|
### Screen Reader Support
|
|
196
196
|
|
|
197
197
|
- Component announces as "password" input type to screen readers
|
|
198
|
-
-
|
|
199
|
-
- Current visibility state is communicated when changed
|
|
198
|
+
- The toggle is a toggle button named "Show password" (translated with the UI Kit locale). Its name stays the same, and `aria-pressed` reports whether the password is shown: "Show password, pressed" while it is visible, "Show password, not pressed" while it is masked
|
|
200
199
|
- Validation errors and requirements are announced
|
|
201
200
|
|
|
202
201
|
### ARIA Properties
|
|
@@ -206,7 +205,7 @@ The `mods` property accepts the following modifiers you can override:
|
|
|
206
205
|
- `aria-describedby` - References additional descriptive text
|
|
207
206
|
- `aria-invalid` - Indicates validation state
|
|
208
207
|
- `aria-required` - Indicates if password entry is required
|
|
209
|
-
-
|
|
208
|
+
- The toggle button has `aria-label="Show password"` and `aria-pressed`, `true` while the password is shown
|
|
210
209
|
|
|
211
210
|
## Best Practices
|
|
212
211
|
|
|
@@ -629,9 +629,9 @@ The Picker component is built with React Aria hooks and provides comprehensive a
|
|
|
629
629
|
|
|
630
630
|
### Screen Reader Support
|
|
631
631
|
|
|
632
|
-
-
|
|
633
|
-
-
|
|
634
|
-
-
|
|
632
|
+
- The trigger is a button named by the field `label` (or `aria-label`), so its name does not change with the selection
|
|
633
|
+
- The value the trigger shows is its description, announced after the name: the selected item(s), the `renderSummary` output, or the placeholder while empty (for example "Status, button, Open")
|
|
634
|
+
- With `renderSummary={false}` the trigger shows no value, so it has no value description
|
|
635
635
|
- Popover opening/closing is announced to screen readers
|
|
636
636
|
- Item selection changes are announced immediately
|
|
637
637
|
- Loading state announces "loading" to users
|
|
@@ -644,9 +644,10 @@ The component automatically manages ARIA attributes:
|
|
|
644
644
|
|
|
645
645
|
- **`aria-label`** — Labels the trigger when no visible label exists
|
|
646
646
|
- **`aria-labelledby`** — Associates the label with the trigger
|
|
647
|
-
- **`aria-describedby`** — Associates help text and error messages
|
|
647
|
+
- **`aria-describedby`** — Associates the displayed value, then help text and error messages
|
|
648
|
+
- **`aria-haspopup="dialog"`** — The trigger opens a popover dialog that holds the list
|
|
648
649
|
|
|
649
|
-
The
|
|
650
|
+
The trigger also sets `aria-expanded`, and `aria-controls` while the popover is open; none of these need to be set manually. A disabled Picker disables the trigger button.
|
|
650
651
|
|
|
651
652
|
### Best Practices for Accessibility
|
|
652
653
|
|
|
@@ -29,7 +29,7 @@ If the control is not a field — a toolbar that swaps which view is on screen,
|
|
|
29
29
|
### Properties
|
|
30
30
|
|
|
31
31
|
- **`children`** — Radio elements that define the available options
|
|
32
|
-
- **`value`** `string` — The currently selected value (controlled)
|
|
32
|
+
- **`value`** `string | null` — The currently selected value (controlled). `null` selects nothing and keeps the group controlled
|
|
33
33
|
- **`defaultValue`** `string` — The default selected value (uncontrolled)
|
|
34
34
|
- **`type`** `'radio' | 'button' | 'tabs'` (default: `radio`) — Visual type for all radios in the group (button/tabs default to horizontal)
|
|
35
35
|
- **`orientation`** `undefined | 'vertical' | 'horizontal'` (default: `undefined`) — Orientation of the radio group. When unset it is derived from `type`: `horizontal` for `button` and `tabs`, `vertical` otherwise
|
|
@@ -16,7 +16,7 @@ A search input provides a specialized text field for search functionality, featu
|
|
|
16
16
|
|
|
17
17
|
### Properties
|
|
18
18
|
|
|
19
|
-
- **`value`** `string` — The search value in controlled mode
|
|
19
|
+
- **`value`** `string | null` — The search value in controlled mode. `null` clears the field and keeps it controlled
|
|
20
20
|
- **`defaultValue`** `string` — The default search value in uncontrolled mode
|
|
21
21
|
- **`isBuffered`** `boolean` (default: `true`) — Whether typed text is held locally until the controlled `value` catches up. This is what keeps the caret in place when the value round-trips through a store that re-renders a pass late; `onChange` still fires on every keystroke. Set to `false` for a caller that must see the field snap back to its own `value` the moment it declines a keystroke.
|
|
22
22
|
- **`placeholder`** `string` — Placeholder text when input is empty
|
|
@@ -24,14 +24,15 @@ A search input provides a specialized text field for search functionality, featu
|
|
|
24
24
|
- **`prefix`** `ReactNode` — Content rendered before the input
|
|
25
25
|
- **`suffix`** — Input decoration after the main input (before clear button)
|
|
26
26
|
- **`suffixPosition`** `'before' | 'after'` (default: `after`) — Position of suffix relative to validation/loading state icons
|
|
27
|
-
- **`isClearable`** `boolean` (default: `false`) — Whether the search input shows a clear button
|
|
27
|
+
- **`isClearable`** `boolean` (default: `false`) — Whether the search input shows a clear button while it has text. `Escape` clears the input either way
|
|
28
28
|
- **`size`** `'small' | 'medium' | 'large'` (default: `medium`) — Input size
|
|
29
29
|
- **`autoComplete`** `string` — HTML [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) token that tells the browser what to autofill (`off` to suppress autofill on a filter field). The lowercase `autocomplete` alias is deprecated.
|
|
30
30
|
- **`inputProps`** `Props` — Direct props passed to the native input element, merged over the props React Aria generates: a key you set wins, and event handlers are chained rather than replaced
|
|
31
31
|
- **`wrapperProps`** `Props` — Direct props passed to the input wrapper element
|
|
32
|
+
- **`inputRef`** `RefObject<HTMLInputElement>` — Ref to the native input element. It is the same element the clear button returns focus to
|
|
32
33
|
- **`onChange`** `function` — Callback fired when the search value changes
|
|
33
34
|
- **`onSubmit`** `function` — Callback fired when search is submitted
|
|
34
|
-
- **`onClear`** `function` — Callback fired
|
|
35
|
+
- **`onClear`** `function` — Callback fired after the text is cleared, by the clear button or by `Escape`. Not called when there was no text to clear
|
|
35
36
|
- **`onBlur`** `function` — Callback fired when the input loses focus
|
|
36
37
|
- **`onFocus`** `function` — Callback fired when the input receives focus
|
|
37
38
|
|
|
@@ -179,8 +180,8 @@ const [searchValue, setSearchValue] = useState('');
|
|
|
179
180
|
|
|
180
181
|
### Keyboard Navigation
|
|
181
182
|
|
|
182
|
-
- `Tab` - Moves focus to the search input
|
|
183
|
-
- `Escape` - Clears the search input
|
|
183
|
+
- `Tab` - Moves focus to the search input. The clear button is skipped: it is not in the `Tab` order
|
|
184
|
+
- `Escape` - Clears the search input and calls `onClear`, whether or not `isClearable` is set, as in a native search field. With the input already empty, `Escape` is left to the surrounding UI, so a `Dialog` closes on the next press
|
|
184
185
|
- `Enter` - Submits search or triggers onSubmit callback
|
|
185
186
|
- All standard text input keyboard shortcuts work for text entry
|
|
186
187
|
|
|
@@ -189,7 +190,7 @@ const [searchValue, setSearchValue] = useState('');
|
|
|
189
190
|
- Component announces as "search" input type to screen readers
|
|
190
191
|
- Search icon and clear button have appropriate labels
|
|
191
192
|
- Current search value and results count are announced when available
|
|
192
|
-
-
|
|
193
|
+
- `isInvalid` sets `aria-invalid` on the input. The loading indicator is visual only: `isLoading` is not announced
|
|
193
194
|
|
|
194
195
|
### ARIA Properties
|
|
195
196
|
|
|
@@ -35,7 +35,7 @@ Choose a different component when the interaction has another shape:
|
|
|
35
35
|
- **`suffixPosition`** `string` (default: `before`) — Position of suffix relative to validation icons
|
|
36
36
|
- **`type`** `string` (default: `outline`) — Visual style variant of the select
|
|
37
37
|
- **`theme`** `string` (default: `default`) — Theme variant affecting overall styling
|
|
38
|
-
- **`size`** `string` (default: `medium`) — Size of the
|
|
38
|
+
- **`size`** `string` (default: `medium`) — Size of the trigger and of the options in its list (a `small` trigger opens `medium` options)
|
|
39
39
|
- **`direction`** `string` (default: `bottom`) — Preferred direction for the dropdown menu
|
|
40
40
|
- **`isClearable`** `boolean` (default: `false`) — Whether the select is clearable using a clear button in the rightIcon slot
|
|
41
41
|
- **`clearLabel`** `string` — Accessible name for the built-in clear button. Defaults to a localized "Clear value".
|
|
@@ -48,10 +48,10 @@ Choose a different component when the interaction has another shape:
|
|
|
48
48
|
- **`disabledKeys`** `Iterable<Key>` — Keys of items that are disabled
|
|
49
49
|
- **`children`** `ReactNode | (item: T) => ReactElement` — Static child items or render function for dynamic items
|
|
50
50
|
- **`triggerRef`** `RefObject<HTMLButtonElement>` — Ref for the trigger button element
|
|
51
|
-
- **`popoverRef`** `RefObject<
|
|
51
|
+
- **`popoverRef`** `RefObject<HTMLElement | null>` — Ref for the popover overlay element
|
|
52
52
|
- **`listBoxRef`** `RefObject<HTMLElement>` — Ref for the list box element
|
|
53
|
-
- **`
|
|
54
|
-
- **`
|
|
53
|
+
- **`isLoading`** `boolean` — Shows a loading indicator in the trigger and fixes the value until loading ends
|
|
54
|
+
- **`loadingIndicator`** `ReactNode` — Replaces the default loading icon shown while `isLoading` is set
|
|
55
55
|
- **`styles`** `Styles` — Styles for the root wrapper element
|
|
56
56
|
- **`inputStyles`** `Styles` — Styles for the input trigger element
|
|
57
57
|
- **`listBoxStyles`** `Styles` — Styles for the dropdown list container
|
|
@@ -59,7 +59,8 @@ Choose a different component when the interaction has another shape:
|
|
|
59
59
|
- **`listGap`** `number` — Space between options, in pixels. Defaults to a hairline (`1bw`)
|
|
60
60
|
- **`overlayStyles`** `Styles` — Styles for the dropdown overlay wrapper
|
|
61
61
|
- **`triggerStyles`** `Styles` — Styles for the trigger button element
|
|
62
|
-
- **`inputProps`** `Props` — Additional props for the
|
|
62
|
+
- **`inputProps`** `Props` — Additional props for the trigger button element
|
|
63
|
+
- **`autoFocus`** `boolean` — Focuses the trigger when it mounts
|
|
63
64
|
- **`triggerDescription`** `ReactNode` — Description text displayed within the trigger button (different from field-level description)
|
|
64
65
|
- **`descriptionPlacement`** `'inline' | 'block'` — Controls how the trigger description is positioned
|
|
65
66
|
- **`hotkeys`** `string` — Keyboard shortcut that triggers the select when pressed
|
|
@@ -83,6 +84,8 @@ Choose a different component when the interaction has another shape:
|
|
|
83
84
|
|
|
84
85
|
**onClear** - Callback fired when the clear button is pressed, allowing you to perform custom actions when the selection is cleared.
|
|
85
86
|
|
|
87
|
+
**isReadOnly** and **isLoading** - The trigger stays focusable and keeps its accessible name, but the value can't change: the list doesn't open, typeahead and the arrow keys don't pick another option, and the clear button is hidden. If either one, or `isDisabled`, turns on while the list is open, the list closes.
|
|
88
|
+
|
|
86
89
|
**actions** - Your own controls inside the trigger, rendered to the left of the built-in clear button and dropdown caret. Pressing one runs its handler without opening or closing the popover — including while the popover is open — so an action can do something the clear button cannot, such as restoring a default selection instead of emptying it. Use `Select.Action` so they match the trigger's size and theme. Actions follow the trigger's disabled state but not `isReadOnly`; pass `isDisabled` yourself for an action that changes the value.
|
|
87
90
|
|
|
88
91
|
**tooltip** - Enables tooltip display on the trigger button. Can be:
|
|
@@ -524,15 +527,18 @@ const groups = [
|
|
|
524
527
|
### Keyboard Navigation
|
|
525
528
|
|
|
526
529
|
- `Tab` - Moves focus to the select
|
|
527
|
-
- `Space/Enter` - Opens the dropdown
|
|
528
|
-
- `Arrow Down` - Opens dropdown
|
|
529
|
-
- `Arrow Up` -
|
|
530
|
+
- `Space/Enter` - Opens the dropdown on the selected option, or the first one
|
|
531
|
+
- `Arrow Down` - Opens the dropdown on the selected option, or the first one; moves to the next option when open
|
|
532
|
+
- `Arrow Up` - Opens the dropdown on the last option; moves to the previous option when open
|
|
533
|
+
- `Page Down/Page Up` - Moves about one visible page of options
|
|
530
534
|
- `Home` - Moves to first option
|
|
531
535
|
- `End` - Moves to last option
|
|
532
536
|
- `Escape` - Closes dropdown without selecting
|
|
533
537
|
- `Enter` - Selects focused option and closes dropdown
|
|
534
538
|
- Typing - Navigates to options starting with typed character
|
|
535
539
|
|
|
540
|
+
Opened with a pointer, the list focuses the selected option, or the list itself when nothing is selected. The focused option is scrolled into view as the list opens.
|
|
541
|
+
|
|
536
542
|
### Screen Reader Support
|
|
537
543
|
|
|
538
544
|
- Component announces as "combobox" or "listbox" to screen readers
|
|
@@ -120,24 +120,25 @@ const [isEnabled, setIsEnabled] = useState(false);
|
|
|
120
120
|
|
|
121
121
|
- `Tab` - Moves focus to the switch
|
|
122
122
|
- `Space` - Toggles the switch state
|
|
123
|
-
- `Enter`
|
|
123
|
+
- `Enter` does not toggle the switch. Inside a form with a submit button, the browser submits the form instead.
|
|
124
124
|
|
|
125
125
|
### Screen Reader Support
|
|
126
126
|
|
|
127
127
|
- Component announces as "switch" to screen readers
|
|
128
128
|
- Current state is announced (e.g., "on", "off")
|
|
129
129
|
- State changes are immediately announced
|
|
130
|
-
-
|
|
130
|
+
- `isLoading` only shows a spinner. The spinner is hidden from screen readers, and the switch stays enabled, so pass `isDisabled` as well if it should not change while loading.
|
|
131
131
|
|
|
132
132
|
### ARIA Properties
|
|
133
133
|
|
|
134
134
|
- `aria-label` - Provides accessible label when no visible label exists
|
|
135
135
|
- `aria-labelledby` - References external label elements
|
|
136
136
|
- `aria-describedby` - References additional descriptive text
|
|
137
|
-
- `aria-checked` - Indicates switch state (true/false)
|
|
138
137
|
- `aria-required` - Indicates if toggling is required
|
|
139
138
|
- `aria-invalid` - Indicates validation state
|
|
140
139
|
|
|
140
|
+
The control is a native `<input type="checkbox" role="switch">`, so its state is the input's `checked` property. No `aria-checked` is written.
|
|
141
|
+
|
|
141
142
|
## Best Practices
|
|
142
143
|
|
|
143
144
|
1. **Do**: Use clear, descriptive labels that indicate what the switch controls
|
|
@@ -69,7 +69,7 @@ A multi-value field. The user types a value into a single-line input and commits
|
|
|
69
69
|
|
|
70
70
|
**tagProps** - Called per value. Return a theme, an icon or `qa` for the chip. A string `children` replaces the chip's text and also names the value in the input's description and in the "Added"/"Removed" announcements, for values whose label does not come from the options. `isDisabled: true` locks the chip: it has no remove button, the keyboard skips it, and its option cannot be unpicked. An invalid chip stays in the danger theme whatever theme it asks for.
|
|
71
71
|
|
|
72
|
-
**children / items** - Options turn the input into a combobox. Typing filters them and focuses the option the typed text names, or else the first match. Enter or a click toggles the focused option, and the popover stays open so the user can pick several in a row. A picked option is added as its own key, whatever other options its text resembles. Typed text means "add": pressing Enter on an option that is already a chip refuses it as a duplicate, and unpicking it takes the arrow keys, a click, or an empty input. A picked option shows a checked box. Typed text names an option by its exact label, then by its key, anywhere in the list, before any looser match counts, so `active` finds `active` even when `Active` comes first. Enter, a delimiter, a paste and blur all go by the same rule, and the option the text names stays listed and focused even when the filter would hide it, as when a key is typed, so they always add the same option. Without `allowsCustomValue`, typed text must name an option, and a label in another case or without its accents counts too: `production` adds `Production`. On blur a query that names nothing is dropped. With `allowsCustomValue`, only an exact match counts: `paris` next to an option `Paris` is a value of its own, offered and focused as its own row and added as typed, since a case-sensitive filter treats the two apart. A press on a control outside while the popover shows (a button, a link, another field) is not taken by it: it reaches the control, so a Save button saves on the first click, with the typed text already committed. A press anywhere else, such as the backdrop of a dialog the field sits in, only closes the popover, and the dialog
|
|
72
|
+
**children / items** - Options turn the input into a combobox. Typing filters them and focuses the option the typed text names, or else the first match. Enter or a click toggles the focused option, and the popover stays open so the user can pick several in a row. A picked option is added as its own key, whatever other options its text resembles. Typed text means "add": pressing Enter on an option that is already a chip refuses it as a duplicate, and unpicking it takes the arrow keys, a click, or an empty input. A picked option shows a checked box. Typed text names an option by its exact label, then by its key, anywhere in the list, before any looser match counts, so `active` finds `active` even when `Active` comes first. Enter, a delimiter, a paste and blur all go by the same rule, and the option the text names stays listed and focused even when the filter would hide it, as when a key is typed, so they always add the same option. Without `allowsCustomValue`, typed text must name an option, and a label in another case or without its accents counts too: `production` adds `Production`. On blur a query that names nothing is dropped. With `allowsCustomValue`, only an exact match counts: `paris` next to an option `Paris` is a value of its own, offered and focused as its own row and added as typed, since a case-sensitive filter treats the two apart. A press on a control outside while the popover shows (a button, a link, another field) is not taken by it: it reaches the control, so a Save button saves on the first click, with the typed text already committed. A press anywhere else, such as blank space in or the backdrop of a dialog the field sits in, or a control outside the dialog or popover it sits in, only closes the popover, keeps the typed text in the input, and leaves the dialog open. An enabled UI Kit `Button` or `ItemButton` is the exception: it is reached from anywhere. A press on a disabled control never commits the typed text. The typed text is offered as its own option after the matches, the same way [FilterListBox](./FilterListBox.md) does, and custom values already added are listed there too, checked and sorted, so they can be unpicked from the list as well as from their chips. One unpicked in the list stays there, unchecked, until focus leaves the field, so it can be picked back. An option in `disabledKeys` is refused however it is entered. A chip for an option shows the option's label, while the value holds its key. The label is remembered, so it survives server-side filtering (`filter={false}` with changing `items`).
|
|
73
73
|
|
|
74
74
|
### Base Properties
|
|
75
75
|
|
|
@@ -79,6 +79,13 @@ Supports [Base properties](../../BaseProperties.md)
|
|
|
79
79
|
|
|
80
80
|
Supports all [Field properties](../../FieldProperties.md)
|
|
81
81
|
|
|
82
|
+
A standalone TagInput renders field chrome by default, so refused values show their reason below the control and the input references that reason through `aria-describedby`, even without a visible `label`. No empty `message` prop is needed. A local rejection takes precedence over the ordinary field error until the draft is edited. With `isBare`, there is no visible message slot; rejection feedback is announced through the live region instead.
|
|
83
|
+
|
|
84
|
+
```jsx
|
|
85
|
+
<TagInput aria-label="Recipients" defaultValue={['ana@acme.com']} />
|
|
86
|
+
<TagInput isBare aria-label="Inline recipients" defaultValue={['ana@acme.com']} />
|
|
87
|
+
```
|
|
88
|
+
|
|
82
89
|
### Styling Properties
|
|
83
90
|
|
|
84
91
|
#### styles
|