@react-md/core 1.0.0-next.16 → 1.0.0-next.17
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/_box-shadows.scss +76 -0
- package/dist/_colors.scss +279 -277
- package/dist/_core.scss +107 -16
- package/dist/_object-fit.scss +86 -0
- package/dist/_utils.scss +246 -72
- package/dist/app-bar/AppBar.d.ts +1 -90
- package/dist/app-bar/AppBar.js +1 -40
- package/dist/app-bar/AppBar.js.map +1 -1
- package/dist/app-bar/AppBarTitle.d.ts +1 -27
- package/dist/app-bar/AppBarTitle.js +1 -15
- package/dist/app-bar/AppBarTitle.js.map +1 -1
- package/dist/app-bar/_app-bar.scss +156 -25
- package/dist/app-bar/styles.d.ts +117 -0
- package/dist/app-bar/styles.js +55 -0
- package/dist/app-bar/styles.js.map +1 -0
- package/dist/autocomplete/Autocomplete.d.ts +8 -79
- package/dist/autocomplete/Autocomplete.js +112 -83
- package/dist/autocomplete/Autocomplete.js.map +1 -1
- package/dist/autocomplete/AutocompleteChip.d.ts +8 -0
- package/dist/autocomplete/AutocompleteChip.js +34 -0
- package/dist/autocomplete/AutocompleteChip.js.map +1 -0
- package/dist/autocomplete/AutocompleteCircularProgress.d.ts +5 -11
- package/dist/autocomplete/AutocompleteCircularProgress.js +4 -0
- package/dist/autocomplete/AutocompleteCircularProgress.js.map +1 -1
- package/dist/autocomplete/AutocompleteClearButton.d.ts +9 -0
- package/dist/autocomplete/AutocompleteClearButton.js +29 -0
- package/dist/autocomplete/AutocompleteClearButton.js.map +1 -0
- package/dist/autocomplete/AutocompleteDropdownButton.d.ts +4 -26
- package/dist/autocomplete/AutocompleteDropdownButton.js +5 -1
- package/dist/autocomplete/AutocompleteDropdownButton.js.map +1 -1
- package/dist/autocomplete/AutocompleteListboxChildren.d.ts +22 -0
- package/dist/autocomplete/AutocompleteListboxChildren.js +37 -0
- package/dist/autocomplete/AutocompleteListboxChildren.js.map +1 -0
- package/dist/autocomplete/_autocomplete.scss +362 -34
- package/dist/autocomplete/autocompleteStyles.d.ts +22 -0
- package/dist/autocomplete/autocompleteStyles.js +17 -8
- package/dist/autocomplete/autocompleteStyles.js.map +1 -1
- package/dist/autocomplete/defaults.d.ts +9 -9
- package/dist/autocomplete/defaults.js +13 -13
- package/dist/autocomplete/defaults.js.map +1 -1
- package/dist/autocomplete/types.d.ts +554 -56
- package/dist/autocomplete/types.js.map +1 -1
- package/dist/autocomplete/useAutocomplete.d.ts +22 -0
- package/dist/autocomplete/useAutocomplete.js +281 -0
- package/dist/autocomplete/useAutocomplete.js.map +1 -0
- package/dist/autocomplete/utils.d.ts +81 -0
- package/dist/autocomplete/utils.js +108 -0
- package/dist/autocomplete/utils.js.map +1 -0
- package/dist/avatar/_avatar.scss +93 -2
- package/dist/badge/Badge.d.ts +1 -20
- package/dist/badge/Badge.js +1 -14
- package/dist/badge/Badge.js.map +1 -1
- package/dist/badge/_badge.scss +90 -3
- package/dist/badge/styles.d.ts +26 -0
- package/dist/badge/styles.js +18 -0
- package/dist/badge/styles.js.map +1 -0
- package/dist/box/Box.js +2 -1
- package/dist/box/Box.js.map +1 -1
- package/dist/box/_box.scss +130 -17
- package/dist/box/styles.d.ts +6 -0
- package/dist/box/styles.js +2 -1
- package/dist/box/styles.js.map +1 -1
- package/dist/button/AsyncButton.d.ts +1 -1
- package/dist/button/AsyncButton.js.map +1 -1
- package/dist/button/Button.d.ts +2 -1
- package/dist/button/Button.js +2 -1
- package/dist/button/Button.js.map +1 -1
- package/dist/button/_button.scss +157 -25
- package/dist/card/Card.d.ts +16 -0
- package/dist/card/Card.js +11 -3
- package/dist/card/Card.js.map +1 -1
- package/dist/card/ClickableCard.d.ts +2 -1
- package/dist/card/ClickableCard.js +5 -2
- package/dist/card/ClickableCard.js.map +1 -1
- package/dist/card/_card.scss +90 -19
- package/dist/card/styles.d.ts +0 -7
- package/dist/card/styles.js +2 -3
- package/dist/card/styles.js.map +1 -1
- package/dist/chip/Chip.d.ts +2 -1
- package/dist/chip/Chip.js +2 -1
- package/dist/chip/Chip.js.map +1 -1
- package/dist/chip/_chip.scss +42 -20
- package/dist/chip/styles.d.ts +12 -10
- package/dist/chip/styles.js.map +1 -1
- package/dist/cssUtils.js.map +1 -1
- package/dist/delegateEvent.d.ts +2 -2
- package/dist/delegateEvent.js.map +1 -1
- package/dist/dialog/Dialog.d.ts +8 -21
- package/dist/dialog/Dialog.js +27 -27
- package/dist/dialog/Dialog.js.map +1 -1
- package/dist/dialog/FixedDialog.d.ts +1 -3
- package/dist/dialog/FixedDialog.js +0 -8
- package/dist/dialog/FixedDialog.js.map +1 -1
- package/dist/dialog/_dialog.scss +67 -13
- package/dist/dialog/styles.d.ts +56 -0
- package/dist/dialog/styles.js +29 -2
- package/dist/dialog/styles.js.map +1 -1
- package/dist/divider/Divider.d.ts +0 -11
- package/dist/divider/Divider.js.map +1 -1
- package/dist/divider/_divider.scss +7 -1
- package/dist/divider/styles.d.ts +11 -0
- package/dist/divider/styles.js.map +1 -1
- package/dist/draggable/useDraggable.d.ts +6 -6
- package/dist/draggable/useDraggable.js.map +1 -1
- package/dist/draggable/utils.d.ts +3 -3
- package/dist/draggable/utils.js.map +1 -1
- package/dist/expansion-panel/ExpansionPanel.d.ts +1 -1
- package/dist/expansion-panel/ExpansionPanel.js.map +1 -1
- package/dist/expansion-panel/_expansion-panel.scss +5 -1
- package/dist/expansion-panel/useExpansionPanels.js +12 -24
- package/dist/expansion-panel/useExpansionPanels.js.map +1 -1
- package/dist/{form → files}/FileInput.d.ts +3 -6
- package/dist/{form → files}/FileInput.js +3 -6
- package/dist/files/FileInput.js.map +1 -0
- package/dist/files/_files.scss +22 -0
- package/dist/files/styles.d.ts +5 -0
- package/dist/files/styles.js +7 -0
- package/dist/files/styles.js.map +1 -0
- package/dist/{form → files}/useFileUpload.d.ts +7 -9
- package/dist/{form → files}/useFileUpload.js +5 -7
- package/dist/files/useFileUpload.js.map +1 -0
- package/dist/files/utils.d.ts +169 -0
- package/dist/files/utils.js +114 -0
- package/dist/files/utils.js.map +1 -0
- package/dist/{form/fileUtils.d.ts → files/validation.d.ts} +9 -174
- package/dist/{form/fileUtils.js → files/validation.js} +9 -134
- package/dist/files/validation.js.map +1 -0
- package/dist/focus/useFocusContainer.d.ts +2 -2
- package/dist/focus/useFocusContainer.js.map +1 -1
- package/dist/focus/utils.js.map +1 -1
- package/dist/form/FormMessage.js.map +1 -1
- package/dist/form/FormMessageContainer.js +4 -2
- package/dist/form/FormMessageContainer.js.map +1 -1
- package/dist/form/InputToggle.d.ts +2 -1
- package/dist/form/InputToggle.js +2 -1
- package/dist/form/InputToggle.js.map +1 -1
- package/dist/form/InputToggleIcon.js.map +1 -1
- package/dist/form/Label.js +2 -2
- package/dist/form/Label.js.map +1 -1
- package/dist/form/Listbox.d.ts +24 -0
- package/dist/form/Listbox.js +46 -0
- package/dist/form/Listbox.js.map +1 -0
- package/dist/form/ListboxProvider.d.ts +21 -0
- package/dist/form/{useListboxProvider.js → ListboxProvider.js} +1 -1
- package/dist/form/ListboxProvider.js.map +1 -0
- package/dist/form/MenuItemTextField.js +1 -2
- package/dist/form/MenuItemTextField.js.map +1 -1
- package/dist/form/NativeSelect.js +7 -4
- package/dist/form/NativeSelect.js.map +1 -1
- package/dist/form/Option.d.ts +49 -10
- package/dist/form/Option.js +11 -9
- package/dist/form/Option.js.map +1 -1
- package/dist/form/Password.js.map +1 -1
- package/dist/form/Select.d.ts +2 -2
- package/dist/form/Select.js +81 -85
- package/dist/form/Select.js.map +1 -1
- package/dist/form/Slider.d.ts +4 -4
- package/dist/form/Slider.js +6 -2
- package/dist/form/Slider.js.map +1 -1
- package/dist/form/SliderThumb.d.ts +3 -3
- package/dist/form/SliderThumb.js.map +1 -1
- package/dist/form/SliderValueMarks.d.ts +2 -2
- package/dist/form/SliderValueMarks.js.map +1 -1
- package/dist/form/SliderValueTooltip.js.map +1 -1
- package/dist/form/TextArea.js +1 -2
- package/dist/form/TextArea.js.map +1 -1
- package/dist/form/TextField.js +1 -2
- package/dist/form/TextField.js.map +1 -1
- package/dist/form/TextFieldContainer.js +1 -2
- package/dist/form/TextFieldContainer.js.map +1 -1
- package/dist/form/_form.scss +186 -121
- package/dist/form/formMessageContainerStyles.d.ts +10 -0
- package/dist/form/formMessageContainerStyles.js +11 -0
- package/dist/form/formMessageContainerStyles.js.map +1 -0
- package/dist/form/inputToggleStyles.js.map +1 -1
- package/dist/form/optionStyles.d.ts +1 -0
- package/dist/form/optionStyles.js +2 -2
- package/dist/form/optionStyles.js.map +1 -1
- package/dist/form/selectUtils.js.map +1 -1
- package/dist/form/sliderUtils.d.ts +1 -1
- package/dist/form/sliderUtils.js.map +1 -1
- package/dist/form/textFieldContainerStyles.d.ts +0 -2
- package/dist/form/textFieldContainerStyles.js +1 -2
- package/dist/form/textFieldContainerStyles.js.map +1 -1
- package/dist/form/types.d.ts +3 -10
- package/dist/form/types.js.map +1 -1
- package/dist/form/useCheckboxGroup.d.ts +17 -17
- package/dist/form/useCheckboxGroup.js +9 -17
- package/dist/form/useCheckboxGroup.js.map +1 -1
- package/dist/form/useCombobox.d.ts +56 -21
- package/dist/form/useCombobox.js +19 -4
- package/dist/form/useCombobox.js.map +1 -1
- package/dist/form/useEditableCombobox.d.ts +24 -4
- package/dist/form/useEditableCombobox.js +5 -0
- package/dist/form/useEditableCombobox.js.map +1 -1
- package/dist/form/useNumberField.js.map +1 -1
- package/dist/form/useRadioGroup.d.ts +6 -6
- package/dist/form/useRadioGroup.js.map +1 -1
- package/dist/form/useResizingTextArea.js.map +1 -1
- package/dist/form/useSelectCombobox.d.ts +3 -4
- package/dist/form/useSelectCombobox.js.map +1 -1
- package/dist/form/useTextField.d.ts +1 -1
- package/dist/form/useTextField.js.map +1 -1
- package/dist/form/useTextFieldContainerAddons.js.map +1 -1
- package/dist/hoverMode/useHoverMode.d.ts +3 -3
- package/dist/hoverMode/useHoverMode.js.map +1 -1
- package/dist/hoverMode/useHoverModeProvider.d.ts +4 -4
- package/dist/hoverMode/useHoverModeProvider.js.map +1 -1
- package/dist/icon/_icon.scss +151 -2
- package/dist/icon/iconConfig.d.ts +10 -0
- package/dist/icon/iconConfig.js +7 -0
- package/dist/icon/iconConfig.js.map +1 -1
- package/dist/icon/materialConfig.js.map +1 -1
- package/dist/icon/styles.js.map +1 -1
- package/dist/interaction/UserInteractionModeProvider.d.ts +5 -5
- package/dist/interaction/UserInteractionModeProvider.js +12 -8
- package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
- package/dist/interaction/types.d.ts +20 -2
- package/dist/interaction/types.js.map +1 -1
- package/dist/interaction/useElementInteraction.d.ts +7 -1
- package/dist/interaction/useElementInteraction.js +1 -2
- package/dist/interaction/useElementInteraction.js.map +1 -1
- package/dist/interaction/utils.d.ts +2 -2
- package/dist/interaction/utils.js +2 -2
- package/dist/interaction/utils.js.map +1 -1
- package/dist/layout/LayoutWindowSplitter.js.map +1 -1
- package/dist/layout/_layout.scss +23 -10
- package/dist/layout/useExpandableLayout.d.ts +3 -3
- package/dist/layout/useExpandableLayout.js.map +1 -1
- package/dist/layout/useLayoutAppBarHeight.d.ts +2 -3
- package/dist/layout/useLayoutAppBarHeight.js.map +1 -1
- package/dist/layout/useTemporaryLayout.d.ts +2 -2
- package/dist/layout/useTemporaryLayout.js.map +1 -1
- package/dist/link/SkipToMainContent.js.map +1 -1
- package/dist/list/ListItem.d.ts +2 -1
- package/dist/list/ListItem.js +2 -1
- package/dist/list/ListItem.js.map +1 -1
- package/dist/list/ListItemChildren.js.map +1 -1
- package/dist/list/ListItemLink.d.ts +2 -1
- package/dist/list/ListItemLink.js +2 -1
- package/dist/list/ListItemLink.js.map +1 -1
- package/dist/list/_list.scss +6 -5
- package/dist/media-queries/_media-queries.scss +12 -0
- package/dist/media-queries/appSize.js.map +1 -1
- package/dist/media-queries/useMediaQuery.js +3 -1
- package/dist/media-queries/useMediaQuery.js.map +1 -1
- package/dist/menu/DropdownMenu.js.map +1 -1
- package/dist/menu/Menu.d.ts +8 -3
- package/dist/menu/Menu.js +2 -1
- package/dist/menu/Menu.js.map +1 -1
- package/dist/menu/MenuItemButton.js +6 -2
- package/dist/menu/MenuItemButton.js.map +1 -1
- package/dist/menu/useContextMenu.d.ts +3 -3
- package/dist/menu/useContextMenu.js.map +1 -1
- package/dist/movement/types.d.ts +5 -5
- package/dist/movement/types.js.map +1 -1
- package/dist/navigation/CollapsibleNavGroup.d.ts +5 -3
- package/dist/navigation/CollapsibleNavGroup.js +3 -4
- package/dist/navigation/CollapsibleNavGroup.js.map +1 -1
- package/dist/navigation/DefaultNavigationRenderer.d.ts +1 -2
- package/dist/navigation/DefaultNavigationRenderer.js +6 -2
- package/dist/navigation/DefaultNavigationRenderer.js.map +1 -1
- package/dist/navigation/NavItemButton.d.ts +1 -1
- package/dist/navigation/NavItemButton.js +1 -0
- package/dist/navigation/NavItemButton.js.map +1 -1
- package/dist/navigation/NavItemLink.d.ts +3 -2
- package/dist/navigation/NavItemLink.js +6 -2
- package/dist/navigation/NavItemLink.js.map +1 -1
- package/dist/navigation/NavSubheader.d.ts +2 -3
- package/dist/navigation/NavSubheader.js.map +1 -1
- package/dist/navigation/Navigation.d.ts +1 -1
- package/dist/navigation/Navigation.js.map +1 -1
- package/dist/navigation/_navigation.scss +6 -5
- package/dist/navigation/types.d.ts +54 -6
- package/dist/navigation/types.js.map +1 -1
- package/dist/navigation/useActiveHeadingId.d.ts +1 -1
- package/dist/navigation/useActiveHeadingId.js.map +1 -1
- package/dist/navigation/useNavigationExpansion.d.ts +104 -0
- package/dist/navigation/useNavigationExpansion.js +77 -0
- package/dist/navigation/useNavigationExpansion.js.map +1 -0
- package/dist/navigation/utils.d.ts +13 -0
- package/dist/navigation/utils.js +36 -0
- package/dist/navigation/utils.js.map +1 -0
- package/dist/objectFit.d.ts +69 -0
- package/dist/objectFit.js +52 -0
- package/dist/objectFit.js.map +1 -0
- package/dist/overlay/_overlay.scss +2 -1
- package/dist/positioning/useFixedPositioning.d.ts +17 -4
- package/dist/positioning/useFixedPositioning.js +10 -5
- package/dist/positioning/useFixedPositioning.js.map +1 -1
- package/dist/positioning/utils.js.map +1 -1
- package/dist/progress/LinearProgress.js.map +1 -1
- package/dist/progress/_progress.scss +20 -14
- package/dist/responsive-item/ResponsiveItem.d.ts +64 -0
- package/dist/responsive-item/ResponsiveItem.js +68 -0
- package/dist/responsive-item/ResponsiveItem.js.map +1 -0
- package/dist/responsive-item/ResponsiveItemOverlay.d.ts +1 -19
- package/dist/responsive-item/ResponsiveItemOverlay.js +1 -12
- package/dist/responsive-item/ResponsiveItemOverlay.js.map +1 -1
- package/dist/responsive-item/_responsive-item.scss +110 -133
- package/dist/responsive-item/responsiveItemOverlayStyles.d.ts +19 -0
- package/dist/responsive-item/responsiveItemOverlayStyles.js +14 -0
- package/dist/responsive-item/responsiveItemOverlayStyles.js.map +1 -0
- package/dist/responsive-item/responsiveItemStyles.d.ts +52 -0
- package/dist/responsive-item/responsiveItemStyles.js +15 -0
- package/dist/responsive-item/responsiveItemStyles.js.map +1 -0
- package/dist/scroll/useScrollLock.d.ts +5 -0
- package/dist/scroll/useScrollLock.js.map +1 -1
- package/dist/searching/utils.d.ts +2 -2
- package/dist/searching/utils.js.map +1 -1
- package/dist/segmented-button/SegmentedButton.d.ts +2 -1
- package/dist/segmented-button/SegmentedButton.js +2 -1
- package/dist/segmented-button/SegmentedButton.js.map +1 -1
- package/dist/segmented-button/_segmented-button.scss +6 -6
- package/dist/sheet/_sheet.scss +18 -6
- package/dist/snackbar/ToastManager.js +15 -5
- package/dist/snackbar/ToastManager.js.map +1 -1
- package/dist/snackbar/_snackbar.scss +30 -17
- package/dist/snackbar/useCurrentToastActions.d.ts +5 -5
- package/dist/snackbar/useCurrentToastActions.js.map +1 -1
- package/dist/table/_table.scss +15 -3
- package/dist/table/tableCellStyles.d.ts +7 -3
- package/dist/table/tableCellStyles.js +2 -2
- package/dist/table/tableCellStyles.js.map +1 -1
- package/dist/tabs/Tab.d.ts +2 -1
- package/dist/tabs/Tab.js +2 -1
- package/dist/tabs/Tab.js.map +1 -1
- package/dist/tabs/TabList.d.ts +2 -2
- package/dist/tabs/TabList.js.map +1 -1
- package/dist/tabs/TabListScrollButton.d.ts +1 -1
- package/dist/tabs/TabListScrollButton.js +1 -1
- package/dist/tabs/TabListScrollButton.js.map +1 -1
- package/dist/tabs/_tabs.scss +30 -9
- package/dist/tabs/getTabListScrollToOptions.d.ts +18 -0
- package/dist/tabs/getTabListScrollToOptions.js +19 -0
- package/dist/tabs/getTabListScrollToOptions.js.map +1 -0
- package/dist/tabs/tabStyles.d.ts +3 -0
- package/dist/tabs/tabStyles.js.map +1 -1
- package/dist/tabs/useTabList.d.ts +1 -8
- package/dist/tabs/useTabList.js +1 -0
- package/dist/tabs/useTabList.js.map +1 -1
- package/dist/tabs/useTabs.d.ts +6 -6
- package/dist/tabs/useTabs.js.map +1 -1
- package/dist/tabs/utils.d.ts +0 -18
- package/dist/tabs/utils.js +0 -15
- package/dist/tabs/utils.js.map +1 -1
- package/dist/test-utils/matchMedia.d.ts +1 -1
- package/dist/test-utils/matchMedia.js +4 -4
- package/dist/test-utils/matchMedia.js.map +1 -1
- package/dist/test-utils/polyfills/TextDecoder.js +0 -1
- package/dist/test-utils/polyfills/TextDecoder.js.map +1 -1
- package/dist/test-utils/timers.d.ts +9 -5
- package/dist/test-utils/timers.js +5 -5
- package/dist/test-utils/timers.js.map +1 -1
- package/dist/theme/LocalStorageColorSchemeProvider.d.ts +1 -1
- package/dist/theme/LocalStorageColorSchemeProvider.js +2 -1
- package/dist/theme/LocalStorageColorSchemeProvider.js.map +1 -1
- package/dist/theme/ThemeProvider.js +3 -1
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/_a11y.scss +77 -13
- package/dist/theme/_colors.scss +279 -277
- package/dist/theme/_theme.scss +308 -37
- package/dist/theme/isColorScheme.d.ts +16 -0
- package/dist/theme/isColorScheme.js +19 -0
- package/dist/theme/isColorScheme.js.map +1 -0
- package/dist/theme/types.d.ts +53 -1
- package/dist/theme/types.js +1 -23
- package/dist/theme/types.js.map +1 -1
- package/dist/theme/useCSSVariables.d.ts +2 -19
- package/dist/theme/useCSSVariables.js.map +1 -1
- package/dist/theme/useColorScheme.d.ts +1 -35
- package/dist/theme/useColorScheme.js.map +1 -1
- package/dist/theme/useColorSchemeMetaTag.d.ts +1 -1
- package/dist/theme/useColorSchemeMetaTag.js.map +1 -1
- package/dist/theme/useColorSchemeProvider.d.ts +1 -1
- package/dist/theme/useColorSchemeProvider.js +1 -1
- package/dist/theme/useColorSchemeProvider.js.map +1 -1
- package/dist/theme/{usePrefersColorScheme.js → usePrefersDarkScheme.js} +1 -1
- package/dist/theme/usePrefersDarkScheme.js.map +1 -0
- package/dist/theme/utils.js.map +1 -1
- package/dist/tooltip/useTooltip.d.ts +14 -9
- package/dist/tooltip/useTooltip.js +2 -1
- package/dist/tooltip/useTooltip.js.map +1 -1
- package/dist/transition/_transition.scss +16 -9
- package/dist/transition/skeletonPlaceholderUtils.js.map +1 -1
- package/dist/transition/types.d.ts +1 -1
- package/dist/transition/types.js.map +1 -1
- package/dist/transition/useCarousel.d.ts +3 -3
- package/dist/transition/useCarousel.js.map +1 -1
- package/dist/transition/useCollapseTransition.js.map +1 -1
- package/dist/transition/useTransition.js +1 -0
- package/dist/transition/useTransition.js.map +1 -1
- package/dist/transition/utils.js.map +1 -1
- package/dist/tree/TreeItem.d.ts +2 -1
- package/dist/tree/TreeItem.js +4 -3
- package/dist/tree/TreeItem.js.map +1 -1
- package/dist/tree/TreeItemExpander.js.map +1 -1
- package/dist/tree/_tree.scss +8 -6
- package/dist/tree/useTreeExpansion.d.ts +1 -1
- package/dist/tree/useTreeExpansion.js +6 -18
- package/dist/tree/useTreeExpansion.js.map +1 -1
- package/dist/tree/useTreeSelection.d.ts +1 -1
- package/dist/tree/useTreeSelection.js +7 -25
- package/dist/tree/useTreeSelection.js.map +1 -1
- package/dist/tree/utils.d.ts +1 -1
- package/dist/tree/utils.js.map +1 -1
- package/dist/types.d.ts +12 -4
- package/dist/types.js.map +1 -1
- package/dist/typography/WritingDirectionProvider.d.ts +1 -1
- package/dist/typography/WritingDirectionProvider.js.map +1 -1
- package/dist/typography/_typography.scss +94 -37
- package/dist/typography/typographyStyles.js.map +1 -1
- package/dist/useDebouncedFunction.d.ts +1 -5
- package/dist/useDebouncedFunction.js +3 -1
- package/dist/useDebouncedFunction.js.map +1 -1
- package/dist/useDropzone.d.ts +4 -4
- package/dist/useDropzone.js.map +1 -1
- package/dist/useEnsuredId.js.map +1 -1
- package/dist/useIntersectionObserver.d.ts +5 -5
- package/dist/useIntersectionObserver.js.map +1 -1
- package/dist/useLocalStorage.d.ts +3 -3
- package/dist/useLocalStorage.js +1 -1
- package/dist/useLocalStorage.js.map +1 -1
- package/dist/useMutationObserver.d.ts +1 -1
- package/dist/useMutationObserver.js.map +1 -1
- package/dist/useOrientation.js +3 -1
- package/dist/useOrientation.js.map +1 -1
- package/dist/usePageInactive.d.ts +2 -2
- package/dist/usePageInactive.js.map +1 -1
- package/dist/useReadonlySet.d.ts +76 -0
- package/dist/useReadonlySet.js +72 -0
- package/dist/useReadonlySet.js.map +1 -0
- package/dist/useResizeListener.d.ts +1 -1
- package/dist/useResizeListener.js.map +1 -1
- package/dist/useThrottledFunction.d.ts +1 -5
- package/dist/useThrottledFunction.js +3 -1
- package/dist/useThrottledFunction.js.map +1 -1
- package/dist/useToggle.d.ts +3 -3
- package/dist/useToggle.js.map +1 -1
- package/dist/utils/RenderRecursively.d.ts +1 -1
- package/dist/utils/RenderRecursively.js.map +1 -1
- package/dist/utils/alphaNumericSort.d.ts +1 -1
- package/dist/utils/alphaNumericSort.js.map +1 -1
- package/dist/utils/bem.js.map +1 -1
- package/dist/utils/debounce.d.ts +5 -0
- package/dist/utils/debounce.js +17 -0
- package/dist/utils/debounce.js.map +1 -0
- package/dist/utils/nearest.js.map +1 -1
- package/dist/utils/parseCssLengthUnit.js.map +1 -1
- package/dist/utils/throttle.d.ts +5 -0
- package/dist/utils/throttle.js +30 -0
- package/dist/utils/throttle.js.map +1 -0
- package/dist/utils/wait.js +3 -1
- package/dist/utils/wait.js.map +1 -1
- package/dist/window-splitter/WindowSplitter.d.ts +37 -15
- package/dist/window-splitter/WindowSplitter.js +38 -17
- package/dist/window-splitter/WindowSplitter.js.map +1 -1
- package/dist/window-splitter/_window-splitter.scss +32 -14
- package/dist/window-splitter/styles.d.ts +14 -0
- package/dist/window-splitter/styles.js +18 -0
- package/dist/window-splitter/styles.js.map +1 -0
- package/package.json +24 -23
- package/src/app-bar/AppBar.tsx +1 -170
- package/src/app-bar/AppBarTitle.tsx +1 -44
- package/src/app-bar/styles.ts +206 -0
- package/src/autocomplete/Autocomplete.tsx +194 -211
- package/src/autocomplete/AutocompleteChip.tsx +48 -0
- package/src/autocomplete/AutocompleteCircularProgress.tsx +6 -17
- package/src/autocomplete/AutocompleteClearButton.tsx +44 -0
- package/src/autocomplete/AutocompleteDropdownButton.tsx +16 -37
- package/src/autocomplete/AutocompleteListboxChildren.tsx +68 -0
- package/src/autocomplete/autocompleteStyles.ts +48 -9
- package/src/autocomplete/defaults.ts +26 -17
- package/src/autocomplete/types.ts +744 -61
- package/src/autocomplete/useAutocomplete.ts +428 -0
- package/src/autocomplete/utils.ts +211 -0
- package/src/badge/Badge.tsx +1 -39
- package/src/badge/styles.ts +45 -0
- package/src/box/Box.tsx +11 -9
- package/src/box/styles.ts +14 -5
- package/src/button/AsyncButton.tsx +1 -1
- package/src/button/Button.tsx +5 -1
- package/src/card/Card.tsx +35 -4
- package/src/card/ClickableCard.tsx +9 -2
- package/src/card/styles.ts +1 -10
- package/src/chip/Chip.tsx +6 -1
- package/src/chip/styles.ts +12 -10
- package/src/delegateEvent.ts +5 -5
- package/src/dialog/Dialog.tsx +48 -61
- package/src/dialog/FixedDialog.tsx +1 -11
- package/src/dialog/styles.ts +97 -0
- package/src/divider/Divider.tsx +0 -12
- package/src/divider/styles.ts +12 -0
- package/src/draggable/useDraggable.ts +17 -10
- package/src/draggable/utils.ts +3 -3
- package/src/expansion-panel/ExpansionPanel.tsx +1 -1
- package/src/expansion-panel/useExpansionPanels.ts +18 -27
- package/src/{form → files}/FileInput.tsx +7 -15
- package/src/files/styles.ts +10 -0
- package/src/{form → files}/useFileUpload.ts +30 -34
- package/src/files/utils.ts +234 -0
- package/src/{form/fileUtils.ts → files/validation.ts} +13 -242
- package/src/focus/useFocusContainer.ts +16 -8
- package/src/form/FormMessageContainer.tsx +2 -2
- package/src/form/InputToggle.tsx +5 -1
- package/src/form/Label.tsx +18 -18
- package/src/form/Listbox.tsx +87 -0
- package/src/form/ListboxProvider.ts +37 -0
- package/src/form/MenuItemTextField.tsx +1 -2
- package/src/form/NativeSelect.tsx +14 -10
- package/src/form/Option.tsx +74 -22
- package/src/form/Select.tsx +89 -85
- package/src/form/Slider.tsx +14 -11
- package/src/form/SliderThumb.tsx +4 -4
- package/src/form/SliderValueMarks.tsx +4 -4
- package/src/form/TextArea.tsx +6 -8
- package/src/form/TextField.tsx +0 -2
- package/src/form/TextFieldContainer.tsx +9 -11
- package/src/form/formMessageContainerStyles.ts +22 -0
- package/src/form/optionStyles.ts +7 -2
- package/src/form/sliderUtils.ts +1 -1
- package/src/form/textFieldContainerStyles.ts +9 -14
- package/src/form/types.ts +3 -11
- package/src/form/useCheckboxGroup.ts +28 -36
- package/src/form/useCombobox.ts +86 -38
- package/src/form/useEditableCombobox.ts +43 -8
- package/src/form/useRadioGroup.ts +6 -6
- package/src/form/useSelectCombobox.ts +4 -4
- package/src/form/useTextField.ts +1 -1
- package/src/hoverMode/useHoverMode.ts +3 -3
- package/src/hoverMode/useHoverModeProvider.ts +4 -4
- package/src/icon/iconConfig.tsx +12 -0
- package/src/interaction/UserInteractionModeProvider.tsx +12 -8
- package/src/interaction/types.ts +21 -2
- package/src/interaction/useElementInteraction.tsx +9 -2
- package/src/interaction/utils.ts +7 -7
- package/src/layout/useExpandableLayout.ts +3 -3
- package/src/layout/useLayoutAppBarHeight.ts +3 -4
- package/src/layout/useTemporaryLayout.ts +2 -2
- package/src/list/ListItem.tsx +5 -1
- package/src/list/ListItemLink.tsx +5 -1
- package/src/media-queries/useMediaQuery.ts +2 -1
- package/src/menu/Menu.tsx +11 -3
- package/src/menu/MenuItemButton.tsx +7 -1
- package/src/menu/useContextMenu.ts +3 -3
- package/src/movement/types.ts +5 -5
- package/src/navigation/CollapsibleNavGroup.tsx +16 -8
- package/src/navigation/DefaultNavigationRenderer.tsx +8 -6
- package/src/navigation/NavItemButton.tsx +2 -1
- package/src/navigation/NavItemLink.tsx +11 -3
- package/src/navigation/NavSubheader.tsx +1 -1
- package/src/navigation/Navigation.tsx +1 -1
- package/src/navigation/types.ts +60 -10
- package/src/navigation/useActiveHeadingId.ts +1 -1
- package/src/navigation/useNavigationExpansion.ts +170 -0
- package/src/navigation/utils.ts +47 -0
- package/src/objectFit.ts +88 -0
- package/src/positioning/useFixedPositioning.ts +34 -11
- package/src/responsive-item/ResponsiveItem.tsx +96 -0
- package/src/responsive-item/ResponsiveItemOverlay.tsx +6 -46
- package/src/responsive-item/responsiveItemOverlayStyles.ts +46 -0
- package/src/responsive-item/responsiveItemStyles.ts +81 -0
- package/src/scroll/useScrollLock.ts +6 -0
- package/src/searching/utils.ts +3 -3
- package/src/segmented-button/SegmentedButton.tsx +5 -1
- package/src/snackbar/ToastManager.tsx +16 -5
- package/src/snackbar/useCurrentToastActions.ts +5 -5
- package/src/table/tableCellStyles.ts +10 -6
- package/src/tabs/Tab.tsx +4 -1
- package/src/tabs/TabList.tsx +2 -2
- package/src/tabs/TabListScrollButton.tsx +4 -4
- package/src/tabs/getTabListScrollToOptions.ts +37 -0
- package/src/tabs/tabStyles.ts +4 -0
- package/src/tabs/useTabList.ts +2 -9
- package/src/tabs/useTabs.ts +6 -6
- package/src/tabs/utils.ts +0 -38
- package/src/test-utils/matchMedia.ts +5 -5
- package/src/test-utils/polyfills/TextDecoder.ts +0 -1
- package/src/test-utils/timers.ts +10 -7
- package/src/theme/LocalStorageColorSchemeProvider.tsx +4 -4
- package/src/theme/ThemeProvider.tsx +3 -3
- package/src/theme/isColorScheme.ts +22 -0
- package/src/theme/types.ts +67 -1
- package/src/theme/useCSSVariables.ts +7 -30
- package/src/theme/useColorScheme.ts +1 -40
- package/src/theme/useColorSchemeMetaTag.ts +1 -1
- package/src/theme/useColorSchemeProvider.ts +2 -2
- package/src/tooltip/useTooltip.ts +17 -9
- package/src/transition/types.ts +1 -1
- package/src/transition/useCarousel.ts +3 -3
- package/src/transition/useTransition.ts +1 -0
- package/src/tree/TreeItem.tsx +7 -1
- package/src/tree/TreeItemExpander.tsx +1 -1
- package/src/tree/useTreeExpansion.ts +7 -25
- package/src/tree/useTreeSelection.ts +8 -32
- package/src/tree/utils.ts +6 -2
- package/src/types.ts +20 -4
- package/src/typography/WritingDirectionProvider.tsx +1 -1
- package/src/useDebouncedFunction.ts +4 -9
- package/src/useDropzone.ts +4 -4
- package/src/useIntersectionObserver.ts +5 -5
- package/src/useLocalStorage.ts +6 -6
- package/src/useMutationObserver.ts +1 -1
- package/src/useOrientation.ts +3 -1
- package/src/usePageInactive.ts +2 -2
- package/src/useReadonlySet.ts +122 -0
- package/src/useResizeListener.ts +1 -1
- package/src/useThrottledFunction.ts +6 -9
- package/src/useToggle.ts +3 -3
- package/src/utils/RenderRecursively.tsx +1 -1
- package/src/utils/alphaNumericSort.ts +1 -1
- package/src/utils/debounce.ts +22 -0
- package/src/utils/throttle.ts +38 -0
- package/src/utils/wait.ts +5 -1
- package/src/window-splitter/WindowSplitter.tsx +38 -43
- package/src/window-splitter/styles.ts +42 -0
- package/dist/autocomplete/FilterAutocompleteOptions.d.ts +0 -8
- package/dist/autocomplete/FilterAutocompleteOptions.js +0 -57
- package/dist/autocomplete/FilterAutocompleteOptions.js.map +0 -1
- package/dist/dialog/DialogContainer.d.ts +0 -14
- package/dist/dialog/DialogContainer.js +0 -20
- package/dist/dialog/DialogContainer.js.map +0 -1
- package/dist/form/FileInput.js.map +0 -1
- package/dist/form/fileUtils.js.map +0 -1
- package/dist/form/useFileUpload.js.map +0 -1
- package/dist/form/useListboxProvider.d.ts +0 -31
- package/dist/form/useListboxProvider.js.map +0 -1
- package/dist/navigation/getHrefFromParents.d.ts +0 -5
- package/dist/navigation/getHrefFromParents.js +0 -13
- package/dist/navigation/getHrefFromParents.js.map +0 -1
- package/dist/responsive-item/ResponsiveItemContainer.d.ts +0 -115
- package/dist/responsive-item/ResponsiveItemContainer.js +0 -80
- package/dist/responsive-item/ResponsiveItemContainer.js.map +0 -1
- package/dist/responsive-item/styles.d.ts +0 -34
- package/dist/responsive-item/styles.js +0 -17
- package/dist/responsive-item/styles.js.map +0 -1
- package/dist/theme/usePrefersColorScheme.js.map +0 -1
- package/src/autocomplete/FilterAutocompleteOptions.tsx +0 -86
- package/src/dialog/DialogContainer.tsx +0 -28
- package/src/form/useListboxProvider.ts +0 -45
- package/src/navigation/getHrefFromParents.ts +0 -15
- package/src/responsive-item/ResponsiveItemContainer.tsx +0 -174
- package/src/responsive-item/styles.ts +0 -58
- /package/dist/theme/{usePrefersColorScheme.d.ts → usePrefersDarkScheme.d.ts} +0 -0
- /package/src/theme/{usePrefersColorScheme.ts → usePrefersDarkScheme.ts} +0 -0
|
@@ -1,122 +1,805 @@
|
|
|
1
|
-
import { type ReactNode } from "react";
|
|
2
|
-
import { type MenuItemProps } from "../menu/MenuItem.jsx";
|
|
3
1
|
import {
|
|
4
|
-
type
|
|
5
|
-
type
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
type AriaAttributes,
|
|
3
|
+
type ChangeEventHandler,
|
|
4
|
+
type Dispatch,
|
|
5
|
+
type FocusEventHandler,
|
|
6
|
+
type MouseEventHandler,
|
|
7
|
+
type ReactNode,
|
|
8
|
+
type Ref,
|
|
9
|
+
} from "react";
|
|
10
|
+
import { type ButtonProps } from "../button/Button.js";
|
|
11
|
+
import { type ChipProps } from "../chip/Chip.js";
|
|
12
|
+
import {
|
|
13
|
+
type OptionProps,
|
|
14
|
+
type OptionSelectedIconProps,
|
|
15
|
+
} from "../form/Option.js";
|
|
16
|
+
import { type TextFieldProps } from "../form/TextField.js";
|
|
17
|
+
import {
|
|
18
|
+
type ComboboxMenuProps,
|
|
19
|
+
type ComboboxVisibilityOptions,
|
|
20
|
+
type ConfigurableComboboxMenuProps,
|
|
21
|
+
} from "../form/useCombobox.js";
|
|
22
|
+
import {
|
|
23
|
+
type EditableComboboxImplementation,
|
|
24
|
+
type EditableComboboxOptions,
|
|
25
|
+
type EditableComboboxWidgetProps,
|
|
26
|
+
} from "../form/useEditableCombobox.js";
|
|
27
|
+
import { type EditableHTMLElement } from "../form/utils.js";
|
|
28
|
+
import { type IconRotatorProps } from "../icon/IconRotator.js";
|
|
29
|
+
import { type CircularProgressProps } from "../progress/CircularProgress.js";
|
|
30
|
+
import { type ProgressTheme } from "../progress/types.js";
|
|
31
|
+
import { type BaseSearchOptions } from "../searching/types.js";
|
|
32
|
+
import {
|
|
33
|
+
type PropsWithRef,
|
|
34
|
+
type TextExtractor,
|
|
35
|
+
type UseStateInitializer,
|
|
36
|
+
} from "../types.js";
|
|
8
37
|
|
|
9
38
|
/**
|
|
39
|
+
* If a autocomplete value is one of these types, no additional code is required
|
|
40
|
+
* to display a label in the input/chip for the autocomplete once the value has
|
|
41
|
+
* been selected.
|
|
42
|
+
*
|
|
43
|
+
* - `"some value"` -> `"some value"`
|
|
44
|
+
* - `{ label: "Hello, world", value: 300 }` -> `"Hello, world!"`
|
|
45
|
+
*
|
|
10
46
|
* @since 6.0.0
|
|
11
47
|
*/
|
|
12
|
-
export type
|
|
13
|
-
T extends { menuLabel?: string; menuLabelledBy?: string },
|
|
14
|
-
> = RequireAtLeastOne<T, "menuLabel" | "menuLabelledBy">;
|
|
48
|
+
export type AutocompleteLabeledOption = string | { label: string };
|
|
15
49
|
|
|
16
50
|
/**
|
|
17
51
|
* @since 6.0.0
|
|
18
52
|
*/
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
53
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
54
|
+
export type AutocompleteOption = AutocompleteLabeledOption | {};
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @since 6.0.0
|
|
58
|
+
*/
|
|
59
|
+
export type AutocompleteFilterOptions<Option extends AutocompleteOption> = Pick<
|
|
60
|
+
Required<BaseSearchOptions<Option>>,
|
|
61
|
+
"list" | "query" | "extractor"
|
|
22
62
|
>;
|
|
23
63
|
|
|
24
64
|
/**
|
|
25
65
|
* @since 6.0.0
|
|
26
66
|
*/
|
|
27
|
-
export
|
|
67
|
+
export type AutocompleteFilterFunction<Option extends AutocompleteOption> = (
|
|
68
|
+
options: AutocompleteFilterOptions<Option>
|
|
69
|
+
) => readonly Option[];
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @since 6.0.0
|
|
73
|
+
*/
|
|
74
|
+
export interface AutocompleteGetOptionPropsOptions<
|
|
75
|
+
Option extends AutocompleteOption,
|
|
76
|
+
> {
|
|
28
77
|
index: number;
|
|
29
|
-
|
|
78
|
+
query: string;
|
|
79
|
+
option: Option;
|
|
80
|
+
selected: boolean;
|
|
81
|
+
extractor: TextExtractor<Option>;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* This can be used to add additional props to each option.
|
|
86
|
+
*
|
|
87
|
+
* @example Simple Example
|
|
88
|
+
* ```tsx
|
|
89
|
+
* getOptionProps={({ option }) => {
|
|
90
|
+
* return {
|
|
91
|
+
* disabled: option === "",
|
|
92
|
+
* className: cnb(option === "a" && styles.blue),
|
|
93
|
+
* leftAddon: option === value && <CheckIcon />,
|
|
94
|
+
* };
|
|
95
|
+
* }}
|
|
96
|
+
* ```
|
|
97
|
+
* @since 6.0.0
|
|
98
|
+
*/
|
|
99
|
+
export type AutocompleteGetOptionProps<Option extends AutocompleteOption> = (
|
|
100
|
+
options: AutocompleteGetOptionPropsOptions<Option>
|
|
101
|
+
) => ConfigurableAutocompleteOptionProps | undefined;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* This can be used to add additional props to each inline chip for multiselect
|
|
105
|
+
* autocompletes.
|
|
106
|
+
*
|
|
107
|
+
* @example Simple Example
|
|
108
|
+
* ```tsx
|
|
109
|
+
* getChipProps={({ option, index }) => {
|
|
110
|
+
* return {
|
|
111
|
+
* disabled: index < 3,
|
|
112
|
+
* className: cnb(option === "a" && styles.blue)<
|
|
113
|
+
* };
|
|
114
|
+
* }}
|
|
115
|
+
* ```
|
|
116
|
+
* @since 6.0.0
|
|
117
|
+
*/
|
|
118
|
+
export type AutocompleteGetChipProps<Option extends AutocompleteOption> = (
|
|
119
|
+
options: Omit<AutocompleteGetOptionPropsOptions<Option>, "selected">
|
|
120
|
+
) => Partial<AutocompleteChipProps> | undefined;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* If the list of options contain an object that doesn't have a
|
|
124
|
+
* `label: string`, this prop must be provided to extract a string to display
|
|
125
|
+
* in the text field once selected.
|
|
126
|
+
*
|
|
127
|
+
* @example No Getter Required
|
|
128
|
+
* ```tsx
|
|
129
|
+
* const options1 = ['a', 'b', 'c', 'd'];
|
|
130
|
+
* const options2 = [{ label: 'a' }, { label: 'b' }, { label: 'c' }, { label: 'd' }];
|
|
131
|
+
*
|
|
132
|
+
* <Autocomplete options={options1} />
|
|
133
|
+
* <Autocomplete options={options2} />
|
|
134
|
+
* ```
|
|
135
|
+
*
|
|
136
|
+
* @example Getter Required
|
|
137
|
+
* ```tsx
|
|
138
|
+
* const options = [
|
|
139
|
+
* {
|
|
140
|
+
* name: "Alaska",
|
|
141
|
+
* abbr: "AK",
|
|
142
|
+
* },
|
|
143
|
+
* {
|
|
144
|
+
* name: "Arizona",
|
|
145
|
+
* abbr: "AZ",
|
|
146
|
+
* }
|
|
147
|
+
* ];
|
|
148
|
+
*
|
|
149
|
+
* <Autocomplete options={options} getOptionLabel={(state) => state.name} />
|
|
150
|
+
* ```
|
|
151
|
+
*
|
|
152
|
+
* @defaultValue `defaultAutocompleteExtractor`
|
|
153
|
+
* @since 6.0.0
|
|
154
|
+
*/
|
|
155
|
+
export type AutocompleteGetOptionLabel<Option extends AutocompleteOption> = (
|
|
156
|
+
option: Option
|
|
157
|
+
) => string;
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* @since 6.0.0
|
|
161
|
+
*/
|
|
162
|
+
export type ConfigurableAutocompleteOptionProps = Partial<
|
|
163
|
+
Omit<OptionProps, "role" | "value">
|
|
164
|
+
>;
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* @since 6.0.0
|
|
168
|
+
*/
|
|
169
|
+
export interface AutocompleteControlledValue<T> {
|
|
170
|
+
value: T;
|
|
171
|
+
setValue: Dispatch<T>;
|
|
172
|
+
defaultValue?: never;
|
|
173
|
+
onValueChange?: never;
|
|
30
174
|
}
|
|
31
175
|
|
|
32
176
|
/**
|
|
33
177
|
* @since 6.0.0
|
|
34
178
|
*/
|
|
35
|
-
export interface
|
|
179
|
+
export interface AutocompleteUncontrolledValue<T> {
|
|
180
|
+
value?: never;
|
|
181
|
+
setValue?: never;
|
|
182
|
+
defaultValue?: UseStateInitializer<T>;
|
|
183
|
+
|
|
36
184
|
/**
|
|
37
|
-
* This
|
|
38
|
-
*
|
|
185
|
+
* This prop should be used when some action should occur whenever the value
|
|
186
|
+
* changes, but is not required to be stored in state. For all other cases, it
|
|
187
|
+
* is recommended to control the `value` instead of using this prop.
|
|
39
188
|
*
|
|
40
|
-
*
|
|
41
|
-
|
|
42
|
-
|
|
189
|
+
* @defaultValue `() => {}`
|
|
190
|
+
*/
|
|
191
|
+
onValueChange?: (value: T) => void;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* @since 6.0.0
|
|
196
|
+
*/
|
|
197
|
+
export type AutocompleteValue<T> =
|
|
198
|
+
| AutocompleteControlledValue<T>
|
|
199
|
+
| AutocompleteUncontrolledValue<T>;
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* @since 6.0.0
|
|
203
|
+
*/
|
|
204
|
+
export interface AutocompleteControlledQuery {
|
|
205
|
+
query: string;
|
|
206
|
+
setQuery: Dispatch<string>;
|
|
207
|
+
defaultQuery?: never;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* @since 6.0.0
|
|
212
|
+
*/
|
|
213
|
+
export interface AutocompleteUncontrolledQuery {
|
|
214
|
+
query?: never;
|
|
215
|
+
setQuery?: never;
|
|
216
|
+
defaultQuery?: UseStateInitializer<string>;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* @since 6.0.0
|
|
221
|
+
*/
|
|
222
|
+
export type AutocompleteQuery =
|
|
223
|
+
| AutocompleteControlledQuery
|
|
224
|
+
| AutocompleteUncontrolledQuery;
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* This allows the `query` to be updated whenever a new value has been selected.
|
|
228
|
+
*
|
|
229
|
+
* - `"clear"` - clears the `query`
|
|
230
|
+
* - `"selected"` - sets the query to the selected value's label
|
|
231
|
+
* - `"as-is"` - doesn't change the `query`
|
|
232
|
+
*
|
|
233
|
+
* @defaultValue `(multiselect || Array.isArray(value ?? defaultValue)) ? "clear" : "as-is"`
|
|
234
|
+
* @since 6.0.0
|
|
235
|
+
*/
|
|
236
|
+
export type AutocompleteUpdateQueryOnSelect = "clear" | "selected" | "as-is";
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* @since 6.0.0
|
|
240
|
+
*/
|
|
241
|
+
export interface AutocompleteUnknownQueryAndValueOptions<
|
|
242
|
+
Option extends AutocompleteOption,
|
|
243
|
+
> {
|
|
244
|
+
query?: string;
|
|
245
|
+
setQuery?: Dispatch<string>;
|
|
246
|
+
defaultQuery?: UseStateInitializer<string>;
|
|
247
|
+
value?: Option | null | readonly Option[];
|
|
248
|
+
setValue?: Dispatch<Option | null | readonly Option[]>;
|
|
249
|
+
defaultValue?: UseStateInitializer<Option | null | readonly Option[]>;
|
|
250
|
+
onValueChange?: (value: Option | null | readonly Option[]) => void;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* A utility type that makes the `getOptionLabel` required when an option is not
|
|
255
|
+
* a {@link AutocompleteLabeledOption}.
|
|
256
|
+
*
|
|
257
|
+
* @since 6.0.0
|
|
258
|
+
*/
|
|
259
|
+
export type AutocompleteOptionLabelExtractor<
|
|
260
|
+
Option extends AutocompleteOption,
|
|
261
|
+
> = Option extends AutocompleteLabeledOption
|
|
262
|
+
? { getOptionLabel?: AutocompleteGetOptionLabel<Option> }
|
|
263
|
+
: { getOptionLabel: AutocompleteGetOptionLabel<Option> };
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* @since 6.0.0
|
|
267
|
+
*/
|
|
268
|
+
export interface AutocompleteFilteringOptions<
|
|
269
|
+
Option extends AutocompleteOption,
|
|
270
|
+
> {
|
|
271
|
+
/**
|
|
272
|
+
* The list of options that can be shown within the autocomplete and filtered
|
|
273
|
+
* based on the current query.
|
|
43
274
|
*/
|
|
44
|
-
options: readonly
|
|
275
|
+
options: readonly Option[];
|
|
276
|
+
|
|
277
|
+
/** @see {@link AutocompleteGetOptionLabel} */
|
|
278
|
+
getOptionLabel?: AutocompleteGetOptionLabel<Option>;
|
|
45
279
|
|
|
46
280
|
/**
|
|
47
|
-
*
|
|
48
|
-
*
|
|
281
|
+
* The function that filters the {@link options} based on the current query
|
|
282
|
+
* and defaults to a case insensitive search that starts with the query.
|
|
49
283
|
*
|
|
50
|
-
* @example
|
|
284
|
+
* @example Case Insensitive Anywhere
|
|
285
|
+
* ```tsx
|
|
286
|
+
* import { caseInsensitiveSearch } from "@react-md/core/searching/caseInsensitive";
|
|
287
|
+
*
|
|
288
|
+
* <Autocomplete {...props} filter={caseInsensitiveSearch} />
|
|
289
|
+
* ```
|
|
290
|
+
*
|
|
291
|
+
* @example Fuzzy Filtering
|
|
51
292
|
* ```tsx
|
|
52
293
|
* import { fuzzySearch } from "@react-md/core/searching/fuzzy";
|
|
53
294
|
*
|
|
54
|
-
* <Autocomplete
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
295
|
+
* <Autocomplete {...props} filter={fuzzySearch} />
|
|
296
|
+
* ```
|
|
297
|
+
*
|
|
298
|
+
* @example Async Searching
|
|
299
|
+
* ```tsx
|
|
300
|
+
* import { useDebouncedFunction } from "@react-md/core/useDebouncedFunction";
|
|
301
|
+
* import { useState } from "react";
|
|
302
|
+
*
|
|
303
|
+
* interface State {
|
|
304
|
+
* loading: boolean;
|
|
305
|
+
* options: readonly string[];
|
|
306
|
+
* }
|
|
307
|
+
*
|
|
308
|
+
* function Example() {
|
|
309
|
+
* const [state, setState] = useState<State>({
|
|
310
|
+
* loading: false,
|
|
311
|
+
* options: [],
|
|
312
|
+
* });
|
|
313
|
+
*
|
|
314
|
+
* const search = useDebouncedFunction(async (query: string) => {
|
|
315
|
+
* setState(prev => ({ ...prev, loading: true }));
|
|
316
|
+
*
|
|
317
|
+
* const options = await someAsyncTask(query);
|
|
318
|
+
* setState({ loading: false, options })
|
|
319
|
+
* });
|
|
320
|
+
*
|
|
321
|
+
* return (
|
|
322
|
+
* <Autocomplete
|
|
323
|
+
* {...props}
|
|
324
|
+
* // Setting `type="search"` automatically updates the `filter` prop to
|
|
325
|
+
* // be `noopAutocompleteFilter`
|
|
326
|
+
* type="search"
|
|
327
|
+
* options={options}
|
|
328
|
+
* onChange={(event) => search(event.currentTarget.value)}
|
|
329
|
+
* />
|
|
330
|
+
* );
|
|
331
|
+
* }
|
|
58
332
|
* ```
|
|
59
333
|
*
|
|
60
|
-
* @defaultValue `
|
|
334
|
+
* @defaultValue `defaultAutocompleteFilter`
|
|
61
335
|
*/
|
|
62
|
-
filter
|
|
336
|
+
filter?: AutocompleteFilterFunction<Option>;
|
|
63
337
|
|
|
64
338
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
* {...props}
|
|
71
|
-
* />
|
|
72
|
-
* ```
|
|
339
|
+
* Set this to `true` to update the filtering behavior to also remove the
|
|
340
|
+
* selected value from the available options. This is mostly for the
|
|
341
|
+
* multiselect behavior.
|
|
342
|
+
*
|
|
343
|
+
* @defaultValue `false`
|
|
73
344
|
*/
|
|
74
|
-
|
|
345
|
+
filterSelected?: boolean;
|
|
75
346
|
|
|
76
347
|
/**
|
|
77
|
-
*
|
|
348
|
+
* Set this to `true` to allow any value to be typed into the autocomplete
|
|
349
|
+
* instead of enforcing an empty string or one of the option labels.
|
|
350
|
+
*
|
|
351
|
+
* @defaultValue `filter === noopAutocompleteFilter`
|
|
352
|
+
*/
|
|
353
|
+
allowAnyValue?: boolean;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* @since 6.0.0
|
|
358
|
+
*/
|
|
359
|
+
export interface AutocompleteFilterAndListboxOptions<
|
|
360
|
+
Option extends AutocompleteOption,
|
|
361
|
+
> extends AutocompleteFilteringOptions<Option>,
|
|
362
|
+
OptionSelectedIconProps {
|
|
363
|
+
/**
|
|
364
|
+
* Set this to `true` when using a multiselect autocomplete to update each
|
|
365
|
+
* option to use checkboxes to show the selection state.
|
|
366
|
+
*
|
|
367
|
+
* @defaultValue `false`
|
|
368
|
+
*/
|
|
369
|
+
checkboxes?: boolean;
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* @see {@link OptionSelectedIconProps.disableSelectedIcon}
|
|
373
|
+
* @defaultValue `!checkboxes`
|
|
374
|
+
*/
|
|
375
|
+
disableSelectedIcon?: boolean;
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* @see {@link AutocompleteUpdateQueryOnSelect}
|
|
379
|
+
* @defaultValue `multiselect ? "clear" : "as-is"`
|
|
380
|
+
*/
|
|
381
|
+
updateQueryOnSelect?: AutocompleteUpdateQueryOnSelect;
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* Set this to `true` to prevent the listbox from closing when an option is
|
|
385
|
+
* selected.
|
|
386
|
+
*
|
|
387
|
+
* @defaultValue `checkboxes`
|
|
388
|
+
*/
|
|
389
|
+
disableCloseOnSelect?: boolean;
|
|
390
|
+
|
|
391
|
+
/** @see {@link AutocompleteGetOptionProps} */
|
|
392
|
+
getOptionProps?: AutocompleteGetOptionProps<Option>;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* @since 6.0.0
|
|
397
|
+
*/
|
|
398
|
+
export interface AutocompleteEditableComboboxOptions<
|
|
399
|
+
Option extends AutocompleteOption,
|
|
400
|
+
ComboboxEl extends EditableHTMLElement = HTMLInputElement,
|
|
401
|
+
PopupEl extends HTMLElement = HTMLElement,
|
|
402
|
+
> extends EditableComboboxOptions<ComboboxEl, PopupEl>,
|
|
403
|
+
AutocompleteFilterAndListboxOptions<Option> {
|
|
404
|
+
onBlur?: FocusEventHandler<ComboboxEl>;
|
|
405
|
+
onChange?: ChangeEventHandler<ComboboxEl>;
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* This is a convenience prop for the `onEntering`/`onEntered` transition
|
|
409
|
+
* callbacks that will ensure it is only called once even if the transitions
|
|
410
|
+
* are disabled. A great use-case for this function is to fetch data once the
|
|
411
|
+
* menu is opened.
|
|
412
|
+
*/
|
|
413
|
+
onOpen?: () => void;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/**
|
|
417
|
+
* @since 6.0.0
|
|
418
|
+
*/
|
|
419
|
+
export type AutocompleteQueryAndExtractorOptions<
|
|
420
|
+
Option extends AutocompleteOption,
|
|
421
|
+
ComboboxEl extends EditableHTMLElement = HTMLInputElement,
|
|
422
|
+
PopupEl extends HTMLElement = HTMLElement,
|
|
423
|
+
> = AutocompleteEditableComboboxOptions<Option, ComboboxEl, PopupEl> &
|
|
424
|
+
AutocompleteOptionLabelExtractor<Option> &
|
|
425
|
+
AutocompleteQuery;
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* @since 6.0.0
|
|
429
|
+
*/
|
|
430
|
+
export type AutocompleteSingleSelectOptions<
|
|
431
|
+
Option extends AutocompleteOption,
|
|
432
|
+
ComboboxEl extends EditableHTMLElement = HTMLInputElement,
|
|
433
|
+
PopupEl extends HTMLElement = HTMLElement,
|
|
434
|
+
> = AutocompleteQueryAndExtractorOptions<Option, ComboboxEl, PopupEl> &
|
|
435
|
+
AutocompleteValue<Option | null>;
|
|
436
|
+
|
|
437
|
+
/**
|
|
438
|
+
* @since 6.0.0
|
|
439
|
+
*/
|
|
440
|
+
export type AutocompleteMultiSelectOptions<
|
|
441
|
+
Option extends AutocompleteOption,
|
|
442
|
+
ComboboxEl extends EditableHTMLElement = HTMLInputElement,
|
|
443
|
+
PopupEl extends HTMLElement = HTMLElement,
|
|
444
|
+
> = AutocompleteQueryAndExtractorOptions<Option, ComboboxEl, PopupEl> &
|
|
445
|
+
AutocompleteValue<readonly Option[]>;
|
|
446
|
+
|
|
447
|
+
/**
|
|
448
|
+
* @since 6.0.0
|
|
449
|
+
*/
|
|
450
|
+
export interface AutocompleteOptions<
|
|
451
|
+
Option extends AutocompleteOption,
|
|
452
|
+
ComboboxEl extends EditableHTMLElement = HTMLInputElement,
|
|
453
|
+
PopupEl extends HTMLElement = HTMLElement,
|
|
454
|
+
> extends AutocompleteEditableComboboxOptions<Option, ComboboxEl, PopupEl>,
|
|
455
|
+
AutocompleteUnknownQueryAndValueOptions<Option> {}
|
|
456
|
+
|
|
457
|
+
/**
|
|
458
|
+
* @since 6.0.0
|
|
459
|
+
*/
|
|
460
|
+
export interface AutocompleteComboboxProps<
|
|
461
|
+
ComboboxEl extends EditableHTMLElement = HTMLInputElement,
|
|
462
|
+
> extends EditableComboboxWidgetProps<ComboboxEl> {
|
|
463
|
+
"aria-autocomplete": NonNullable<AriaAttributes["aria-autocomplete"]>;
|
|
464
|
+
value: string;
|
|
465
|
+
onBlur: FocusEventHandler<ComboboxEl>;
|
|
466
|
+
onChange: ChangeEventHandler<ComboboxEl>;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
/**
|
|
470
|
+
* @since 6.0.0
|
|
471
|
+
*/
|
|
472
|
+
export interface AutocompleteListboxProps<
|
|
473
|
+
T extends AutocompleteOption = AutocompleteOption,
|
|
474
|
+
PopupEl extends HTMLElement = HTMLElement,
|
|
475
|
+
> extends Omit<ComboboxMenuProps<PopupEl>, "ref">,
|
|
476
|
+
OptionSelectedIconProps {
|
|
477
|
+
value: T | null | readonly T[];
|
|
478
|
+
setValue: Dispatch<T>;
|
|
479
|
+
onEnter: (appearing: boolean) => void;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
/**
|
|
483
|
+
* @since 6.0.0
|
|
484
|
+
*/
|
|
485
|
+
export interface ConfigurableAutocompleteListboxProps
|
|
486
|
+
extends ConfigurableComboboxMenuProps,
|
|
487
|
+
OptionSelectedIconProps {
|
|
488
|
+
id?: string;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
/**
|
|
492
|
+
* @since 6.0.0
|
|
493
|
+
*/
|
|
494
|
+
export interface ConfigurableAutocompleteClearButtonProps extends ButtonProps {
|
|
495
|
+
/** @defaultValue `"Clear"` */
|
|
496
|
+
"aria-label"?: string;
|
|
497
|
+
|
|
498
|
+
/** @defaultValue `"autocomplete-clear-" + useId()` */
|
|
499
|
+
id?: string;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
/**
|
|
503
|
+
* @internal
|
|
504
|
+
* @since 6.0.0
|
|
505
|
+
*/
|
|
506
|
+
export interface AutocompleteClearButtonProps
|
|
507
|
+
extends ConfigurableAutocompleteClearButtonProps {
|
|
508
|
+
onClick: MouseEventHandler<HTMLButtonElement>;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
/**
|
|
512
|
+
* @since 6.0.0
|
|
513
|
+
*/
|
|
514
|
+
export interface ConfigurableAutocompleteDropdownButtonProps
|
|
515
|
+
extends ButtonProps {
|
|
516
|
+
/** @defaultValue `AutocompleteProps.listboxLabel` */
|
|
517
|
+
"aria-label"?: string;
|
|
518
|
+
/** @defaultValue `AutocompleteProps.listboxLabelledby` */
|
|
519
|
+
"aria-labelledby"?: string;
|
|
520
|
+
|
|
521
|
+
/** @defaultValue `"autocomplete-dropdown-" + useId()` */
|
|
522
|
+
id?: string;
|
|
523
|
+
|
|
524
|
+
/** @defaultValue `getIcon("dropdown")` */
|
|
525
|
+
icon?: ReactNode;
|
|
526
|
+
iconRotatorProps?: Omit<IconRotatorProps, "rotated">;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
/**
|
|
530
|
+
* @since 6.0.0
|
|
531
|
+
*/
|
|
532
|
+
export interface AutocompleteDropdownButtonProps
|
|
533
|
+
extends ConfigurableAutocompleteDropdownButtonProps {
|
|
534
|
+
"aria-controls": string;
|
|
535
|
+
onClick: MouseEventHandler<HTMLButtonElement>;
|
|
536
|
+
visible: boolean;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
/**
|
|
540
|
+
* @since 6.0.0
|
|
541
|
+
*/
|
|
542
|
+
export interface AutocompleteCircularProgressProps
|
|
543
|
+
extends CircularProgressProps {
|
|
544
|
+
/** @defaultValue `"Loading"` */
|
|
545
|
+
"aria-label"?: string;
|
|
546
|
+
|
|
547
|
+
/** @defaultValue `"current-color"` */
|
|
548
|
+
theme?: ProgressTheme;
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
/**
|
|
552
|
+
* @since 6.0.0
|
|
553
|
+
*/
|
|
554
|
+
export interface AutocompleteChipProps extends ChipProps {
|
|
555
|
+
/**
|
|
556
|
+
* @defaultValue `typeof children === "string" && \`Remove "${children}"\`
|
|
557
|
+
*/
|
|
558
|
+
"aria-description"?: string;
|
|
559
|
+
|
|
560
|
+
/** @defaultValue `getIcon("remove")` */
|
|
561
|
+
removeIcon?: ReactNode;
|
|
562
|
+
children: ReactNode;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
/**
|
|
566
|
+
* @since 6.0.0
|
|
567
|
+
*/
|
|
568
|
+
export interface AutocompleteWithQueryImplementation<
|
|
569
|
+
Option extends AutocompleteOption,
|
|
570
|
+
ComboboxEl extends EditableHTMLElement = HTMLInputElement,
|
|
571
|
+
PopupEl extends HTMLElement = HTMLElement,
|
|
572
|
+
> extends EditableComboboxImplementation<ComboboxEl, PopupEl> {
|
|
573
|
+
query: string;
|
|
574
|
+
setQuery: Dispatch<string>;
|
|
575
|
+
comboboxProps: AutocompleteComboboxProps<ComboboxEl>;
|
|
576
|
+
|
|
577
|
+
/**
|
|
578
|
+
* This is a convenience prop to determine if the autocomplete supports
|
|
579
|
+
* multiselect.
|
|
580
|
+
*/
|
|
581
|
+
multiselect: boolean;
|
|
582
|
+
|
|
583
|
+
/**
|
|
584
|
+
* This is the current list of options that will be filtered based on the
|
|
585
|
+
* current `query`. This should normally be rendered in the
|
|
586
|
+
* `AutocompleteListboxChildren` component
|
|
587
|
+
*/
|
|
588
|
+
availableOptions: readonly Option[];
|
|
589
|
+
|
|
590
|
+
/**
|
|
591
|
+
* Generates the props required for the `Listbox` component and should
|
|
592
|
+
* normally be provided any menu props that might override the default display
|
|
593
|
+
* settings.
|
|
594
|
+
*/
|
|
595
|
+
getListboxProps: (
|
|
596
|
+
overrides?: ConfigurableAutocompleteListboxProps
|
|
597
|
+
) => AutocompleteListboxProps<Option, PopupEl>;
|
|
598
|
+
|
|
599
|
+
/**
|
|
600
|
+
* Generates the props required for the `AutocompleteClearButton`.
|
|
601
|
+
*/
|
|
602
|
+
getClearButtonProps: (
|
|
603
|
+
overrides?: ConfigurableAutocompleteClearButtonProps
|
|
604
|
+
) => AutocompleteClearButtonProps;
|
|
605
|
+
|
|
606
|
+
/**
|
|
607
|
+
* Generates the props required for the `AutocompleteDropdownButton`.
|
|
608
|
+
*/
|
|
609
|
+
getDropdownButtonProps: (
|
|
610
|
+
overrides?: ConfigurableAutocompleteDropdownButtonProps
|
|
611
|
+
) => AutocompleteDropdownButtonProps;
|
|
612
|
+
|
|
613
|
+
/** @see {@link AutocompleteGetOptionLabel} */
|
|
614
|
+
getOptionLabel: AutocompleteGetOptionLabel<Option>;
|
|
615
|
+
/** @see {@link AutocompleteGetOptionProps} */
|
|
616
|
+
getOptionProps: AutocompleteGetOptionProps<Option>;
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
/**
|
|
620
|
+
* @since 6.0.0
|
|
621
|
+
*/
|
|
622
|
+
export interface AutocompleteSingleSelectImplementation<
|
|
623
|
+
Option extends AutocompleteOption,
|
|
624
|
+
ComboboxEl extends EditableHTMLElement = HTMLInputElement,
|
|
625
|
+
PopupEl extends HTMLElement = HTMLElement,
|
|
626
|
+
> extends AutocompleteWithQueryImplementation<Option, ComboboxEl, PopupEl> {
|
|
627
|
+
value: Option | null;
|
|
628
|
+
setValue: Dispatch<Option | null>;
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
/**
|
|
632
|
+
* @since 6.0.0
|
|
633
|
+
*/
|
|
634
|
+
export interface AutocompleteMultiSelectImplementation<
|
|
635
|
+
Option extends AutocompleteOption,
|
|
636
|
+
ComboboxEl extends EditableHTMLElement = HTMLInputElement,
|
|
637
|
+
PopupEl extends HTMLElement = HTMLElement,
|
|
638
|
+
> extends AutocompleteWithQueryImplementation<Option, ComboboxEl, PopupEl> {
|
|
639
|
+
value: readonly Option[];
|
|
640
|
+
setValue: Dispatch<readonly Option[]>;
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
/**
|
|
644
|
+
* @since 6.0.0
|
|
645
|
+
*/
|
|
646
|
+
export interface AutocompleteImplementation<
|
|
647
|
+
Option extends AutocompleteOption,
|
|
648
|
+
ComboboxEl extends EditableHTMLElement = HTMLInputElement,
|
|
649
|
+
PopupEl extends HTMLElement = HTMLElement,
|
|
650
|
+
> extends AutocompleteWithQueryImplementation<Option, ComboboxEl, PopupEl> {
|
|
651
|
+
value: Option | null | readonly Option[];
|
|
652
|
+
setValue: Dispatch<Option | null | readonly Option[]>;
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
/**
|
|
656
|
+
* @since 6.0.0
|
|
657
|
+
*/
|
|
658
|
+
export interface AutocompleteBaseProps<Option extends AutocompleteOption>
|
|
659
|
+
extends Omit<TextFieldProps, "value" | "defaultValue">,
|
|
660
|
+
AutocompleteFilterAndListboxOptions<Option>,
|
|
661
|
+
ComboboxVisibilityOptions {
|
|
662
|
+
inputRef?: Ref<HTMLInputElement>;
|
|
663
|
+
|
|
664
|
+
/**
|
|
665
|
+
* An `aria-label` to pass to the `Listbox` component that describes the list
|
|
666
|
+
* of {@link options}. Either this or the {@link listboxLabelledBy} are
|
|
667
|
+
* required for accessibility.
|
|
668
|
+
*/
|
|
669
|
+
listboxLabel?: string;
|
|
670
|
+
|
|
671
|
+
/**
|
|
672
|
+
* An `aria-labelledby` to pass to the `Listbox` component that describes the
|
|
673
|
+
* list of {@link options}. Either this or the {@link listboxLabel} are
|
|
674
|
+
* required for accessibility.
|
|
675
|
+
*/
|
|
676
|
+
listboxLabelledBy?: string;
|
|
677
|
+
|
|
678
|
+
/**
|
|
679
|
+
* Any additional props that should be passed to the `Listbox` component.
|
|
680
|
+
*/
|
|
681
|
+
listboxProps?: PropsWithRef<
|
|
682
|
+
ConfigurableAutocompleteListboxProps,
|
|
683
|
+
HTMLDivElement
|
|
684
|
+
>;
|
|
685
|
+
|
|
686
|
+
/** @see {@link AutocompleteGetOptionProps} */
|
|
687
|
+
getOptionProps?: AutocompleteGetOptionProps<Option>;
|
|
688
|
+
|
|
689
|
+
/**
|
|
690
|
+
* This can be used to add any custom styling, change the icon, change the
|
|
691
|
+
* label, etc for the dropdown button.
|
|
78
692
|
*
|
|
79
693
|
* @example Simple Example
|
|
80
694
|
* ```tsx
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
* leftAddon: option === value && <CheckIcon />,
|
|
86
|
-
* };
|
|
695
|
+
* dropdownButtonProps={{
|
|
696
|
+
* "aria-label": "Open",
|
|
697
|
+
* className: styles.dropdownButton,
|
|
698
|
+
* icon: <MyCustomDropdownIcon />,
|
|
87
699
|
* }}
|
|
88
700
|
* ```
|
|
89
701
|
*/
|
|
90
|
-
|
|
91
|
-
options: AutocompleteGetOptionPropsOptions<T>
|
|
92
|
-
): Partial<MenuItemProps> | undefined;
|
|
702
|
+
dropdownButtonProps?: ConfigurableAutocompleteDropdownButtonProps;
|
|
93
703
|
|
|
94
704
|
/**
|
|
95
|
-
*
|
|
96
|
-
*
|
|
705
|
+
* Set this to `true` to remove the {@link DropdownButton} from being rendered
|
|
706
|
+
* after the input element.
|
|
97
707
|
*
|
|
98
|
-
* @defaultValue
|
|
708
|
+
* @defaultValue `false`
|
|
99
709
|
*/
|
|
100
|
-
|
|
710
|
+
disableDropdownButton?: boolean;
|
|
711
|
+
|
|
712
|
+
/**
|
|
713
|
+
* Set this to `true` to disable a `<CircularProgress />` after the input and
|
|
714
|
+
* before the `<DropdownButton />`.
|
|
715
|
+
*
|
|
716
|
+
* @defaultValue `false`
|
|
717
|
+
*/
|
|
718
|
+
loading?: boolean;
|
|
101
719
|
|
|
102
720
|
/**
|
|
103
|
-
*
|
|
721
|
+
* @defaultValue `{ "aria-label": "Loading", ...loadingProps }`
|
|
104
722
|
*/
|
|
105
|
-
|
|
723
|
+
loadingProps?: AutocompleteCircularProgressProps;
|
|
724
|
+
|
|
725
|
+
clearButtonProps?: PropsWithRef<
|
|
726
|
+
ConfigurableAutocompleteClearButtonProps,
|
|
727
|
+
HTMLButtonElement
|
|
728
|
+
>;
|
|
106
729
|
|
|
107
730
|
/**
|
|
108
731
|
* @defaultValue `false`
|
|
109
732
|
*/
|
|
110
|
-
|
|
733
|
+
disableClearButton?: boolean;
|
|
734
|
+
|
|
735
|
+
/**
|
|
736
|
+
* This is a convenience prop for the `onEntering`/`onEntered` transition
|
|
737
|
+
* callbacks that will ensure it is only called once even if the transitions
|
|
738
|
+
* are disabled. A great use-case for this function is to fetch data once the
|
|
739
|
+
* menu is opened.
|
|
740
|
+
*/
|
|
741
|
+
onOpen?: () => void;
|
|
742
|
+
|
|
743
|
+
/**
|
|
744
|
+
* The children to display when there are no {@link options} due to the
|
|
745
|
+
* current text box value.
|
|
746
|
+
*
|
|
747
|
+
* @defaultValue `<ListSubheader>No options</ListSubheader`
|
|
748
|
+
*/
|
|
749
|
+
noOptionsChildren?: ReactNode;
|
|
111
750
|
|
|
112
751
|
/**
|
|
113
|
-
* Set this to `true`
|
|
114
|
-
*
|
|
752
|
+
* Set this to `true` when using a multiselect autocomplete to prevent the
|
|
753
|
+
* selected values from being rendered inline with the input. This is useful
|
|
754
|
+
* when the selected values should be shown in a different part of the UI
|
|
755
|
+
* instead.
|
|
115
756
|
*
|
|
116
757
|
* @defaultValue `false`
|
|
117
758
|
*/
|
|
118
|
-
|
|
759
|
+
disableInlineChips?: boolean;
|
|
119
760
|
|
|
120
|
-
/** @
|
|
121
|
-
|
|
761
|
+
/** @see {@link AutocompleteGetChipProps} */
|
|
762
|
+
getChipProps?: AutocompleteGetChipProps<Option>;
|
|
122
763
|
}
|
|
764
|
+
|
|
765
|
+
/**
|
|
766
|
+
* @since 6.0.0
|
|
767
|
+
*/
|
|
768
|
+
export type AutocompleteListboxLabelProps =
|
|
769
|
+
| { listboxLabel: string }
|
|
770
|
+
| { listboxLabelledBy: string };
|
|
771
|
+
|
|
772
|
+
/**
|
|
773
|
+
* @since 6.0.0
|
|
774
|
+
*/
|
|
775
|
+
export type AutocompleteQueryAndExtractorProps<
|
|
776
|
+
Option extends AutocompleteOption,
|
|
777
|
+
> = AutocompleteBaseProps<Option> &
|
|
778
|
+
AutocompleteOptionLabelExtractor<Option> &
|
|
779
|
+
AutocompleteQuery &
|
|
780
|
+
AutocompleteListboxLabelProps;
|
|
781
|
+
|
|
782
|
+
/**
|
|
783
|
+
* @since 6.0.0
|
|
784
|
+
*/
|
|
785
|
+
export type AutocompleteSingleSelectProps<Option extends AutocompleteOption> =
|
|
786
|
+
AutocompleteQueryAndExtractorProps<Option> &
|
|
787
|
+
AutocompleteValue<Option | null> & {
|
|
788
|
+
checkboxes?: never;
|
|
789
|
+
getChipProps?: never;
|
|
790
|
+
disableInlineChips?: never;
|
|
791
|
+
};
|
|
792
|
+
|
|
793
|
+
/**
|
|
794
|
+
* @since 6.0.0
|
|
795
|
+
*/
|
|
796
|
+
export type AutocompleteMultiSelectProps<Option extends AutocompleteOption> =
|
|
797
|
+
AutocompleteQueryAndExtractorProps<Option> &
|
|
798
|
+
AutocompleteValue<readonly Option[]>;
|
|
799
|
+
|
|
800
|
+
/**
|
|
801
|
+
* @since 6.0.0
|
|
802
|
+
*/
|
|
803
|
+
export type AutocompleteProps<Option extends AutocompleteOption> =
|
|
804
|
+
AutocompleteBaseProps<Option> &
|
|
805
|
+
AutocompleteUnknownQueryAndValueOptions<Option>;
|