@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,100 +1,140 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
3
|
+
import { Listbox } from "../form/Listbox.js";
|
|
4
4
|
import { TextField } from "../form/TextField.js";
|
|
5
|
-
import {
|
|
6
|
-
import { Menu } from "../menu/Menu.js";
|
|
5
|
+
import { ListSubheader } from "../list/ListSubheader.js";
|
|
7
6
|
import { KeyboardMovementProvider } from "../movement/useKeyboardMovementProvider.js";
|
|
8
7
|
import { useEnsuredId } from "../useEnsuredId.js";
|
|
9
8
|
import { useEnsuredRef } from "../useEnsuredRef.js";
|
|
10
|
-
import {
|
|
9
|
+
import { AutocompleteChip } from "./AutocompleteChip.js";
|
|
11
10
|
import { AutocompleteCircularProgress } from "./AutocompleteCircularProgress.js";
|
|
11
|
+
import { AutocompleteClearButton } from "./AutocompleteClearButton.js";
|
|
12
12
|
import { AutocompleteDropdownButton } from "./AutocompleteDropdownButton.js";
|
|
13
|
-
import {
|
|
13
|
+
import { AutocompleteListboxChildren } from "./AutocompleteListboxChildren.js";
|
|
14
14
|
import { autocomplete, autocompleteRightAddon } from "./autocompleteStyles.js";
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
import { defaultAutocompleteFilter, noopAutocompleteFilter } from "./defaults.js";
|
|
16
|
+
import { useAutocomplete } from "./useAutocomplete.js";
|
|
17
|
+
const noop = ()=>undefined;
|
|
18
|
+
/**
|
|
19
|
+
* @since 6.0.0
|
|
20
|
+
* @internal
|
|
21
|
+
*/ export function Autocomplete(props) {
|
|
22
|
+
const { id: propId, onBlur, onFocus, onClick, onChange, onKeyDown, onOpen, type, className, inputRef, children, filter = type === "search" ? noopAutocompleteFilter : defaultAutocompleteFilter, filterSelected, value, setValue, defaultValue, onValueChange, query, setQuery, defaultQuery, options, getOptionLabel: propGetOptionLabel, getOptionProps: propGetOptionProps, allowAnyValue, listboxProps, listboxLabel, listboxLabelledBy, selectedIcon, unselectedIcon, selectedIconAfter, checkboxes, disableSelectedIcon, loading, loadingProps, dropdownButtonProps, disableDropdownButton, clearButtonProps, disableClearButton, noOptionsChildren = /*#__PURE__*/ _jsx(ListSubheader, {
|
|
23
|
+
children: "No Options"
|
|
24
|
+
}), leftAddon: propLeftAddon, disableLeftAddonStyles: propDisableLeftAddonStyles, labelProps, rightAddon, rightAddonProps, containerProps, getChipProps = noop, updateQueryOnSelect, visible, setVisible, defaultVisible, disableInlineChips, disableCloseOnSelect, ...remaining } = props;
|
|
25
|
+
const { form, disabled } = props;
|
|
21
26
|
const id = useEnsuredId(propId, "autocomplete");
|
|
22
|
-
const menuId = useEnsuredId(
|
|
23
|
-
const
|
|
24
|
-
value: propValue,
|
|
25
|
-
setValue: typeof propValue === "string" ? noop : undefined,
|
|
26
|
-
defaultValue
|
|
27
|
-
});
|
|
28
|
-
const { visible, setVisible, getMenuProps, comboboxRef, comboboxProps, movementContext } = useEditableCombobox({
|
|
27
|
+
const menuId = useEnsuredId(listboxProps?.id, "autocomplete-listbox");
|
|
28
|
+
const { query: currentQuery, value: currentValue, setValue: currentSetValue, multiselect, comboboxRef: inputNodeRef, comboboxProps, movementContext, availableOptions, getOptionLabel, getOptionProps, getListboxProps, getClearButtonProps, getDropdownButtonProps } = useAutocomplete({
|
|
29
29
|
form,
|
|
30
|
-
|
|
30
|
+
onBlur,
|
|
31
31
|
onFocus,
|
|
32
|
+
onClick,
|
|
33
|
+
onChange,
|
|
32
34
|
onKeyDown,
|
|
33
|
-
|
|
35
|
+
onOpen,
|
|
36
|
+
disabled,
|
|
37
|
+
filter,
|
|
38
|
+
filterSelected,
|
|
34
39
|
popupId: menuId,
|
|
35
|
-
popupRef:
|
|
40
|
+
popupRef: listboxProps?.ref,
|
|
36
41
|
comboboxId: id,
|
|
37
|
-
comboboxRef: inputRef
|
|
42
|
+
comboboxRef: inputRef,
|
|
43
|
+
options,
|
|
44
|
+
getOptionLabel: propGetOptionLabel,
|
|
45
|
+
getOptionProps: propGetOptionProps,
|
|
46
|
+
allowAnyValue,
|
|
47
|
+
updateQueryOnSelect,
|
|
48
|
+
value,
|
|
49
|
+
setValue,
|
|
50
|
+
defaultValue,
|
|
51
|
+
onValueChange,
|
|
52
|
+
query,
|
|
53
|
+
setQuery,
|
|
54
|
+
defaultQuery,
|
|
55
|
+
defaultVisible,
|
|
56
|
+
visible,
|
|
57
|
+
setVisible,
|
|
58
|
+
checkboxes,
|
|
59
|
+
selectedIcon,
|
|
60
|
+
unselectedIcon,
|
|
61
|
+
selectedIconAfter,
|
|
62
|
+
disableSelectedIcon,
|
|
63
|
+
disableCloseOnSelect
|
|
38
64
|
});
|
|
39
|
-
const [
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
65
|
+
const [containerRef, containerRefCallback] = useEnsuredRef(containerProps?.ref);
|
|
66
|
+
let leftAddon = propLeftAddon;
|
|
67
|
+
let disableLeftAddonStyles = propDisableLeftAddonStyles;
|
|
68
|
+
let inlineChips = false;
|
|
69
|
+
let floatingActive = labelProps?.floatingActive;
|
|
70
|
+
if (multiselect && !disableInlineChips) {
|
|
71
|
+
inlineChips = true;
|
|
72
|
+
// TODO: Maybe one day fix the typing? Might not be possible with
|
|
73
|
+
// destructuring though
|
|
74
|
+
const value = currentValue;
|
|
75
|
+
disableLeftAddonStyles ??= true;
|
|
76
|
+
floatingActive ||= value.length > 0;
|
|
77
|
+
leftAddon = /*#__PURE__*/ _jsx(_Fragment, {
|
|
78
|
+
children: value.map((option, index)=>{
|
|
79
|
+
const label = getOptionLabel(option);
|
|
80
|
+
const overrides = getChipProps({
|
|
81
|
+
index,
|
|
82
|
+
query: currentQuery,
|
|
83
|
+
option,
|
|
84
|
+
extractor: getOptionLabel
|
|
85
|
+
});
|
|
86
|
+
return /*#__PURE__*/ _jsx(AutocompleteChip, {
|
|
87
|
+
...overrides,
|
|
88
|
+
onClick: (event)=>{
|
|
89
|
+
overrides?.onClick?.(event);
|
|
90
|
+
currentSetValue(value.filter((v)=>v !== option));
|
|
91
|
+
},
|
|
92
|
+
children: overrides?.children ?? label
|
|
93
|
+
}, label);
|
|
94
|
+
})
|
|
95
|
+
});
|
|
96
|
+
}
|
|
51
97
|
return /*#__PURE__*/ _jsxs(KeyboardMovementProvider, {
|
|
52
98
|
value: movementContext,
|
|
53
99
|
children: [
|
|
54
100
|
/*#__PURE__*/ _jsx(TextField, {
|
|
55
|
-
"aria-autocomplete": "list",
|
|
56
101
|
...remaining,
|
|
57
|
-
value: query,
|
|
58
102
|
...comboboxProps,
|
|
59
103
|
containerProps: {
|
|
60
104
|
...containerProps,
|
|
61
|
-
ref:
|
|
105
|
+
ref: containerRefCallback,
|
|
106
|
+
onClick: (event)=>{
|
|
107
|
+
containerProps?.onClick?.(event);
|
|
108
|
+
inputNodeRef.current?.focus();
|
|
109
|
+
}
|
|
62
110
|
},
|
|
63
111
|
className: autocomplete({
|
|
64
112
|
className,
|
|
65
113
|
loading,
|
|
114
|
+
inlineChips,
|
|
115
|
+
disableClearButton,
|
|
66
116
|
disableDropdownButton
|
|
67
117
|
}),
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
},
|
|
72
|
-
onKeyDown: (event)=>{
|
|
73
|
-
comboboxProps.onKeyDown(event);
|
|
74
|
-
if (!visible && event.key === "Escape") {
|
|
75
|
-
onAutocomplete(null);
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
onFocus: (event)=>{
|
|
79
|
-
comboboxProps.onFocus(event);
|
|
80
|
-
event.currentTarget.setSelectionRange(0, event.currentTarget.value.length);
|
|
118
|
+
labelProps: {
|
|
119
|
+
...labelProps,
|
|
120
|
+
floatingActive
|
|
81
121
|
},
|
|
122
|
+
leftAddon: leftAddon,
|
|
123
|
+
disableLeftAddonStyles: disableLeftAddonStyles,
|
|
82
124
|
rightAddon: /*#__PURE__*/ _jsxs(_Fragment, {
|
|
83
125
|
children: [
|
|
84
126
|
rightAddon,
|
|
85
127
|
loading && /*#__PURE__*/ _jsx(AutocompleteCircularProgress, {
|
|
86
128
|
...loadingProps
|
|
87
129
|
}),
|
|
130
|
+
!disableClearButton && !!currentQuery && /*#__PURE__*/ _jsx(AutocompleteClearButton, {
|
|
131
|
+
...clearButtonProps,
|
|
132
|
+
...getClearButtonProps(clearButtonProps)
|
|
133
|
+
}),
|
|
88
134
|
!disableDropdownButton && /*#__PURE__*/ _jsx(AutocompleteDropdownButton, {
|
|
89
|
-
"aria-label":
|
|
90
|
-
"aria-labelledby":
|
|
91
|
-
|
|
92
|
-
...dropdownButtonProps,
|
|
93
|
-
visible: visible,
|
|
94
|
-
onClick: ()=>{
|
|
95
|
-
comboboxRef.current?.focus();
|
|
96
|
-
setVisible((prev)=>!prev);
|
|
97
|
-
}
|
|
135
|
+
"aria-label": listboxLabel,
|
|
136
|
+
"aria-labelledby": listboxLabelledBy,
|
|
137
|
+
...getDropdownButtonProps(dropdownButtonProps)
|
|
98
138
|
})
|
|
99
139
|
]
|
|
100
140
|
}),
|
|
@@ -106,30 +146,19 @@ export function Autocomplete(props) {
|
|
|
106
146
|
})
|
|
107
147
|
}
|
|
108
148
|
}),
|
|
109
|
-
/*#__PURE__*/
|
|
110
|
-
"aria-label":
|
|
111
|
-
"aria-labelledby":
|
|
112
|
-
...
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
options: options,
|
|
123
|
-
noOptionsChildren: noOptionsChildren,
|
|
124
|
-
extractor: extractor,
|
|
125
|
-
whitespace: whitespace,
|
|
126
|
-
comboboxRef: comboboxRef,
|
|
127
|
-
disableFilter: disableFilter || props["aria-autocomplete"] === "none",
|
|
128
|
-
getOptionProps: getOptionProps,
|
|
129
|
-
onAutocomplete: onAutocomplete,
|
|
130
|
-
clearOnAutocomplete: clearOnAutocomplete
|
|
131
|
-
})
|
|
132
|
-
]
|
|
149
|
+
/*#__PURE__*/ _jsx(Listbox, {
|
|
150
|
+
"aria-label": listboxLabel,
|
|
151
|
+
"aria-labelledby": listboxLabelledBy,
|
|
152
|
+
...getListboxProps(listboxProps),
|
|
153
|
+
fixedTo: containerRef,
|
|
154
|
+
children: /*#__PURE__*/ _jsx(AutocompleteListboxChildren, {
|
|
155
|
+
query: currentQuery,
|
|
156
|
+
options: availableOptions,
|
|
157
|
+
getOptionLabel: getOptionLabel,
|
|
158
|
+
getOptionProps: getOptionProps,
|
|
159
|
+
noOptionsChildren: noOptionsChildren,
|
|
160
|
+
children: children
|
|
161
|
+
})
|
|
133
162
|
})
|
|
134
163
|
]
|
|
135
164
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/autocomplete/Autocomplete.tsx"],"sourcesContent":["\"use client\";\nimport {\n useEffect,\n type AriaAttributes,\n type ReactElement,\n type Ref,\n} from \"react\";\nimport { TextField, type TextFieldProps } from \"../form/TextField.js\";\nimport { type ConfigurableComboboxMenuProps } from \"../form/useCombobox.js\";\nimport { useEditableCombobox } from \"../form/useEditableCombobox.js\";\nimport { Menu } from \"../menu/Menu.js\";\nimport { type KeyboardMovementFocusChangeEventHandler } from \"../movement/types.js\";\nimport { KeyboardMovementProvider } from \"../movement/useKeyboardMovementProvider.js\";\nimport {\n type PropsWithRef,\n type TextExtractor,\n type UseStateSetter,\n} from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { useEnsuredState } from \"../useEnsuredState.js\";\nimport {\n AutocompleteCircularProgress,\n type AutocompleteCircularProgressProps,\n} from \"./AutocompleteCircularProgress.js\";\nimport {\n AutocompleteDropdownButton,\n type ConfigurableAutocompleteDropdownButtonProps,\n} from \"./AutocompleteDropdownButton.js\";\nimport { FilterAutocompleteOptions } from \"./FilterAutocompleteOptions.js\";\nimport { autocomplete, autocompleteRightAddon } from \"./autocompleteStyles.js\";\nimport {\n type AutocompleteMenuLabel,\n type AutocompleteOptionsProps,\n} from \"./types.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * @since 6.0.0\n */\nexport interface AutocompleteProps<T>\n extends Omit<TextFieldProps, \"value\" | \"defaultValue\">,\n AutocompleteOptionsProps<T> {\n /** @defaultValue `\"list\"` */\n \"aria-autocomplete\"?: AriaAttributes[\"aria-autocomplete\"];\n inputRef?: Ref<HTMLInputElement>;\n value?: string;\n defaultValue?: string;\n\n /**\n * An `aria-label` to pass to the `Menu` component that describes the list of\n * {@link options}. Either this or the {@link menuLabelledBy} are required for\n * accessibility.\n */\n menuLabel?: string;\n\n /**\n * An `aria-labelledby` to pass to the `Menu` component that describes the\n * list of {@link options}. Either this or the {@link menuLabel} are required\n * for accessibility.\n */\n menuLabelledBy?: string;\n\n /**\n * Any additional props that should be passed to the `Menu` component.\n */\n menuProps?: PropsWithRef<\n ConfigurableComboboxMenuProps & { id?: string },\n HTMLDivElement\n >;\n\n /**\n * This prop should only be used when `aria-autocomplete` is set to\n * `\"inline\"` or `\"both\"`.\n */\n onFocusChange?: KeyboardMovementFocusChangeEventHandler;\n\n /**\n * This can be used to add any custom styling, change the icon, change the\n * label, etc for the dropdown button.\n *\n * @example Simple Example\n * ```tsx\n * dropdownButtonProps={{\n * \"aria-label\": \"Open\",\n * className: styles.dropdownButton,\n * icon: <MyCustomDropdownIcon />,\n * }}\n * ```\n */\n dropdownButtonProps?: ConfigurableAutocompleteDropdownButtonProps;\n\n /**\n * Set this to `true` to remove the {@link DropdownButton} from being rendered\n * after the input element.\n *\n * @defaultValue `false`\n */\n disableDropdownButton?: boolean;\n\n /**\n * Set this to `true` to disable a `<CircularProgress />` after the input and\n * before the `<DropdownButton />`.\n *\n * @defaultValue `false`\n */\n loading?: boolean;\n\n /**\n * @defaultValue `{ \"aria-label\": \"Loading\", ...loadingProps }`\n */\n loadingProps?: AutocompleteCircularProgressProps;\n}\n\n/**\n * @since 6.0.0\n */\nexport function Autocomplete<T extends string | { label: string }>(\n props: AutocompleteMenuLabel<Omit<AutocompleteProps<T>, \"extractor\">>\n): ReactElement;\n/**\n * @since 6.0.0\n */\nexport function Autocomplete<T>(\n props: AutocompleteMenuLabel<\n AutocompleteProps<T> & { extractor: TextExtractor<T> }\n >\n): ReactElement;\nexport function Autocomplete<T>(\n props: AutocompleteMenuLabel<AutocompleteProps<T>>\n): ReactElement {\n const {\n id: propId,\n value: propValue,\n defaultValue = \"\",\n onClick,\n onFocus,\n onKeyDown,\n onChange = noop,\n onFocusChange,\n className,\n options,\n children,\n inputRef,\n extractor,\n onAutocomplete = noop,\n getOptionProps,\n clearOnAutocomplete,\n menuProps,\n menuLabel,\n menuLabelledBy,\n containerProps,\n filter,\n whitespace,\n disableFilter,\n noOptionsChildren,\n dropdownButtonProps,\n disableDropdownButton,\n loading,\n loadingProps,\n rightAddon,\n rightAddonProps,\n ...remaining\n } = props;\n\n const { form } = props;\n const id = useEnsuredId(propId, \"autocomplete\");\n const menuId = useEnsuredId(menuProps?.id, \"autocomplete-listbox\");\n\n const [query, setQuery] = useEnsuredState<string, UseStateSetter<string>>({\n value: propValue,\n setValue: typeof propValue === \"string\" ? noop : undefined,\n defaultValue,\n });\n\n const {\n visible,\n setVisible,\n getMenuProps,\n comboboxRef,\n comboboxProps,\n movementContext,\n } = useEditableCombobox({\n form,\n onClick,\n onFocus,\n onKeyDown,\n onFocusChange,\n popupId: menuId,\n popupRef: menuProps?.ref,\n comboboxId: id,\n comboboxRef: inputRef,\n });\n const [containerNodeRef, containerRef] = useEnsuredRef(containerProps?.ref);\n useEffect(() => {\n const input = comboboxRef.current;\n if (!input || document.activeElement !== input) {\n return;\n }\n\n const target = input.value.length;\n input.setSelectionRange(target, target);\n }, [comboboxRef, loading]);\n\n return (\n <KeyboardMovementProvider value={movementContext}>\n <TextField\n aria-autocomplete=\"list\"\n {...remaining}\n value={query}\n {...comboboxProps}\n containerProps={{\n ...containerProps,\n ref: containerRef,\n }}\n className={autocomplete({\n className,\n loading,\n disableDropdownButton,\n })}\n onChange={(event) => {\n onChange(event);\n setQuery(event.currentTarget.value);\n }}\n onKeyDown={(event) => {\n comboboxProps.onKeyDown(event);\n if (!visible && event.key === \"Escape\") {\n onAutocomplete(null);\n }\n }}\n onFocus={(event) => {\n comboboxProps.onFocus(event);\n event.currentTarget.setSelectionRange(\n 0,\n event.currentTarget.value.length\n );\n }}\n rightAddon={\n <>\n {rightAddon}\n {loading && <AutocompleteCircularProgress {...loadingProps} />}\n {!disableDropdownButton && (\n <AutocompleteDropdownButton\n aria-label={menuLabel}\n aria-labelledby={menuLabelledBy}\n aria-controls={comboboxProps.id}\n {...dropdownButtonProps}\n visible={visible}\n onClick={() => {\n comboboxRef.current?.focus();\n setVisible((prev) => !prev);\n }}\n />\n )}\n </>\n }\n rightAddonProps={{\n ...rightAddonProps,\n pointerEvents: true,\n className: autocompleteRightAddon({\n className: rightAddonProps?.className,\n }),\n }}\n />\n <Menu\n aria-label={menuLabel as string}\n aria-labelledby={menuLabelledBy}\n {...getMenuProps(menuProps)}\n // since the `afterInputChildren` is not included in the `comboboxRef`'s\n // width, the menu will no longer be equal width without changing the\n // fixedTo node to the container\n fixedTo={containerNodeRef}\n >\n {children}\n <FilterAutocompleteOptions\n query={query}\n filter={filter}\n options={options}\n noOptionsChildren={noOptionsChildren}\n extractor={extractor}\n whitespace={whitespace}\n comboboxRef={comboboxRef}\n disableFilter={disableFilter || props[\"aria-autocomplete\"] === \"none\"}\n getOptionProps={getOptionProps}\n onAutocomplete={onAutocomplete}\n clearOnAutocomplete={clearOnAutocomplete}\n />\n </Menu>\n </KeyboardMovementProvider>\n );\n}\n"],"names":["useEffect","TextField","useEditableCombobox","Menu","KeyboardMovementProvider","useEnsuredId","useEnsuredRef","useEnsuredState","AutocompleteCircularProgress","AutocompleteDropdownButton","FilterAutocompleteOptions","autocomplete","autocompleteRightAddon","noop","Autocomplete","props","id","propId","value","propValue","defaultValue","onClick","onFocus","onKeyDown","onChange","onFocusChange","className","options","children","inputRef","extractor","onAutocomplete","getOptionProps","clearOnAutocomplete","menuProps","menuLabel","menuLabelledBy","containerProps","filter","whitespace","disableFilter","noOptionsChildren","dropdownButtonProps","disableDropdownButton","loading","loadingProps","rightAddon","rightAddonProps","remaining","form","menuId","query","setQuery","setValue","undefined","visible","setVisible","getMenuProps","comboboxRef","comboboxProps","movementContext","popupId","popupRef","ref","comboboxId","containerNodeRef","containerRef","input","current","document","activeElement","target","length","setSelectionRange","aria-autocomplete","event","currentTarget","key","aria-label","aria-labelledby","aria-controls","focus","prev","pointerEvents","fixedTo"],"mappings":"AAAA;;AACA,SACEA,SAAS,QAIJ,QAAQ;AACf,SAASC,SAAS,QAA6B,uBAAuB;AAEtE,SAASC,mBAAmB,QAAQ,iCAAiC;AACrE,SAASC,IAAI,QAAQ,kBAAkB;AAEvC,SAASC,wBAAwB,QAAQ,6CAA6C;AAMtF,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,aAAa,QAAQ,sBAAsB;AACpD,SAASC,eAAe,QAAQ,wBAAwB;AACxD,SACEC,4BAA4B,QAEvB,oCAAoC;AAC3C,SACEC,0BAA0B,QAErB,kCAAkC;AACzC,SAASC,yBAAyB,QAAQ,iCAAiC;AAC3E,SAASC,YAAY,EAAEC,sBAAsB,QAAQ,0BAA0B;AAM/E,MAAMC,OAAO;AACX,aAAa;AACf;AA6FA,OAAO,SAASC,aACdC,KAAkD;IAElD,MAAM,EACJC,IAAIC,MAAM,EACVC,OAAOC,SAAS,EAChBC,eAAe,EAAE,EACjBC,OAAO,EACPC,OAAO,EACPC,SAAS,EACTC,WAAWX,IAAI,EACfY,aAAa,EACbC,SAAS,EACTC,OAAO,EACPC,QAAQ,EACRC,QAAQ,EACRC,SAAS,EACTC,iBAAiBlB,IAAI,EACrBmB,cAAc,EACdC,mBAAmB,EACnBC,SAAS,EACTC,SAAS,EACTC,cAAc,EACdC,cAAc,EACdC,MAAM,EACNC,UAAU,EACVC,aAAa,EACbC,iBAAiB,EACjBC,mBAAmB,EACnBC,qBAAqB,EACrBC,OAAO,EACPC,YAAY,EACZC,UAAU,EACVC,eAAe,EACf,GAAGC,WACJ,GAAGjC;IAEJ,MAAM,EAAEkC,IAAI,EAAE,GAAGlC;IACjB,MAAMC,KAAKX,aAAaY,QAAQ;IAChC,MAAMiC,SAAS7C,aAAa6B,WAAWlB,IAAI;IAE3C,MAAM,CAACmC,OAAOC,SAAS,GAAG7C,gBAAgD;QACxEW,OAAOC;QACPkC,UAAU,OAAOlC,cAAc,WAAWN,OAAOyC;QACjDlC;IACF;IAEA,MAAM,EACJmC,OAAO,EACPC,UAAU,EACVC,YAAY,EACZC,WAAW,EACXC,aAAa,EACbC,eAAe,EAChB,GAAG1D,oBAAoB;QACtB+C;QACA5B;QACAC;QACAC;QACAE;QACAoC,SAASX;QACTY,UAAU5B,WAAW6B;QACrBC,YAAYhD;QACZ0C,aAAa7B;IACf;IACA,MAAM,CAACoC,kBAAkBC,aAAa,GAAG5D,cAAc+B,gBAAgB0B;IACvE/D,UAAU;QACR,MAAMmE,QAAQT,YAAYU,OAAO;QACjC,IAAI,CAACD,SAASE,SAASC,aAAa,KAAKH,OAAO;YAC9C;QACF;QAEA,MAAMI,SAASJ,MAAMjD,KAAK,CAACsD,MAAM;QACjCL,MAAMM,iBAAiB,CAACF,QAAQA;IAClC,GAAG;QAACb;QAAad;KAAQ;IAEzB,qBACE,MAACxC;QAAyBc,OAAO0C;;0BAC/B,KAAC3D;gBACCyE,qBAAkB;gBACjB,GAAG1B,SAAS;gBACb9B,OAAOiC;gBACN,GAAGQ,aAAa;gBACjBtB,gBAAgB;oBACd,GAAGA,cAAc;oBACjB0B,KAAKG;gBACP;gBACAxC,WAAWf,aAAa;oBACtBe;oBACAkB;oBACAD;gBACF;gBACAnB,UAAU,CAACmD;oBACTnD,SAASmD;oBACTvB,SAASuB,MAAMC,aAAa,CAAC1D,KAAK;gBACpC;gBACAK,WAAW,CAACoD;oBACVhB,cAAcpC,SAAS,CAACoD;oBACxB,IAAI,CAACpB,WAAWoB,MAAME,GAAG,KAAK,UAAU;wBACtC9C,eAAe;oBACjB;gBACF;gBACAT,SAAS,CAACqD;oBACRhB,cAAcrC,OAAO,CAACqD;oBACtBA,MAAMC,aAAa,CAACH,iBAAiB,CACnC,GACAE,MAAMC,aAAa,CAAC1D,KAAK,CAACsD,MAAM;gBAEpC;gBACA1B,0BACE;;wBACGA;wBACAF,yBAAW,KAACpC;4BAA8B,GAAGqC,YAAY;;wBACzD,CAACF,uCACA,KAAClC;4BACCqE,cAAY3C;4BACZ4C,mBAAiB3C;4BACjB4C,iBAAerB,cAAc3C,EAAE;4BAC9B,GAAG0B,mBAAmB;4BACvBa,SAASA;4BACTlC,SAAS;gCACPqC,YAAYU,OAAO,EAAEa;gCACrBzB,WAAW,CAAC0B,OAAS,CAACA;4BACxB;;;;gBAKRnC,iBAAiB;oBACf,GAAGA,eAAe;oBAClBoC,eAAe;oBACfzD,WAAWd,uBAAuB;wBAChCc,WAAWqB,iBAAiBrB;oBAC9B;gBACF;;0BAEF,MAACvB;gBACC2E,cAAY3C;gBACZ4C,mBAAiB3C;gBAChB,GAAGqB,aAAavB,UAAU;gBAC3B,wEAAwE;gBACxE,qEAAqE;gBACrE,gCAAgC;gBAChCkD,SAASnB;;oBAERrC;kCACD,KAAClB;wBACCyC,OAAOA;wBACPb,QAAQA;wBACRX,SAASA;wBACTc,mBAAmBA;wBACnBX,WAAWA;wBACXS,YAAYA;wBACZmB,aAAaA;wBACblB,eAAeA,iBAAiBzB,KAAK,CAAC,oBAAoB,KAAK;wBAC/DiB,gBAAgBA;wBAChBD,gBAAgBA;wBAChBE,qBAAqBA;;;;;;AAK/B"}
|
|
1
|
+
{"version":3,"sources":["../../src/autocomplete/Autocomplete.tsx"],"sourcesContent":["\"use client\";\nimport { type ReactElement } from \"react\";\nimport { Listbox } from \"../form/Listbox.js\";\nimport { TextField } from \"../form/TextField.js\";\nimport { ListSubheader } from \"../list/ListSubheader.js\";\nimport { KeyboardMovementProvider } from \"../movement/useKeyboardMovementProvider.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { AutocompleteChip } from \"./AutocompleteChip.js\";\nimport { AutocompleteCircularProgress } from \"./AutocompleteCircularProgress.js\";\nimport { AutocompleteClearButton } from \"./AutocompleteClearButton.js\";\nimport { AutocompleteDropdownButton } from \"./AutocompleteDropdownButton.js\";\nimport { AutocompleteListboxChildren } from \"./AutocompleteListboxChildren.js\";\nimport { autocomplete, autocompleteRightAddon } from \"./autocompleteStyles.js\";\nimport {\n defaultAutocompleteFilter,\n noopAutocompleteFilter,\n} from \"./defaults.js\";\nimport {\n type AutocompleteMultiSelectProps,\n type AutocompleteOption,\n type AutocompleteProps,\n type AutocompleteSingleSelectProps,\n} from \"./types.js\";\nimport { useAutocomplete } from \"./useAutocomplete.js\";\n\nconst noop = (): undefined => undefined;\n\n/**\n * This is the single select autocomplete implementation.\n *\n * @since 6.0.0\n */\nexport function Autocomplete<Option extends AutocompleteOption>(\n props: AutocompleteSingleSelectProps<Option>\n): ReactElement;\n/**\n * This is the multiselect autocomplete implementation.\n *\n * @since 6.0.0\n */\nexport function Autocomplete<Option extends AutocompleteOption>(\n props: AutocompleteMultiSelectProps<Option>\n): ReactElement;\n/**\n * @since 6.0.0\n * @internal\n */\nexport function Autocomplete<Option extends AutocompleteOption>(\n props: AutocompleteProps<Option>\n): ReactElement {\n const {\n id: propId,\n onBlur,\n onFocus,\n onClick,\n onChange,\n onKeyDown,\n onOpen,\n type,\n className,\n inputRef,\n children,\n filter = type === \"search\"\n ? noopAutocompleteFilter\n : defaultAutocompleteFilter,\n filterSelected,\n value,\n setValue,\n defaultValue,\n onValueChange,\n query,\n setQuery,\n defaultQuery,\n options,\n getOptionLabel: propGetOptionLabel,\n getOptionProps: propGetOptionProps,\n allowAnyValue,\n listboxProps,\n listboxLabel,\n listboxLabelledBy,\n selectedIcon,\n unselectedIcon,\n selectedIconAfter,\n checkboxes,\n disableSelectedIcon,\n loading,\n loadingProps,\n dropdownButtonProps,\n disableDropdownButton,\n clearButtonProps,\n disableClearButton,\n noOptionsChildren = <ListSubheader>No Options</ListSubheader>,\n leftAddon: propLeftAddon,\n disableLeftAddonStyles: propDisableLeftAddonStyles,\n labelProps,\n rightAddon,\n rightAddonProps,\n containerProps,\n getChipProps = noop,\n updateQueryOnSelect,\n visible,\n setVisible,\n defaultVisible,\n disableInlineChips,\n disableCloseOnSelect,\n ...remaining\n } = props;\n const { form, disabled } = props;\n\n const id = useEnsuredId(propId, \"autocomplete\");\n const menuId = useEnsuredId(listboxProps?.id, \"autocomplete-listbox\");\n const {\n query: currentQuery,\n value: currentValue,\n setValue: currentSetValue,\n multiselect,\n comboboxRef: inputNodeRef,\n comboboxProps,\n movementContext,\n availableOptions,\n getOptionLabel,\n getOptionProps,\n getListboxProps,\n getClearButtonProps,\n getDropdownButtonProps,\n } = useAutocomplete({\n form,\n onBlur,\n onFocus,\n onClick,\n onChange,\n onKeyDown,\n onOpen,\n disabled,\n filter,\n filterSelected,\n popupId: menuId,\n popupRef: listboxProps?.ref,\n comboboxId: id,\n comboboxRef: inputRef,\n options,\n getOptionLabel: propGetOptionLabel,\n getOptionProps: propGetOptionProps,\n allowAnyValue,\n updateQueryOnSelect,\n value,\n setValue,\n defaultValue,\n onValueChange,\n query,\n setQuery,\n defaultQuery,\n defaultVisible,\n visible,\n setVisible,\n checkboxes,\n selectedIcon,\n unselectedIcon,\n selectedIconAfter,\n disableSelectedIcon,\n disableCloseOnSelect,\n });\n const [containerRef, containerRefCallback] = useEnsuredRef(\n containerProps?.ref\n );\n\n let leftAddon = propLeftAddon;\n let disableLeftAddonStyles = propDisableLeftAddonStyles;\n let inlineChips = false;\n let floatingActive = labelProps?.floatingActive;\n if (multiselect && !disableInlineChips) {\n inlineChips = true;\n // TODO: Maybe one day fix the typing? Might not be possible with\n // destructuring though\n const value = currentValue as readonly Option[];\n disableLeftAddonStyles ??= true;\n floatingActive ||= value.length > 0;\n leftAddon = (\n <>\n {value.map((option, index) => {\n const label = getOptionLabel(option);\n const overrides = getChipProps({\n index,\n query: currentQuery,\n option,\n extractor: getOptionLabel,\n });\n return (\n <AutocompleteChip\n key={label}\n {...overrides}\n onClick={(event) => {\n overrides?.onClick?.(event);\n currentSetValue(value.filter((v) => v !== option));\n }}\n >\n {overrides?.children ?? label}\n </AutocompleteChip>\n );\n })}\n </>\n );\n }\n\n return (\n <KeyboardMovementProvider value={movementContext}>\n <TextField\n {...remaining}\n {...comboboxProps}\n containerProps={{\n ...containerProps,\n ref: containerRefCallback,\n onClick: (event) => {\n containerProps?.onClick?.(event);\n inputNodeRef.current?.focus();\n },\n }}\n className={autocomplete({\n className,\n loading,\n inlineChips,\n disableClearButton,\n disableDropdownButton,\n })}\n labelProps={{\n ...labelProps,\n floatingActive,\n }}\n leftAddon={leftAddon}\n disableLeftAddonStyles={disableLeftAddonStyles}\n rightAddon={\n <>\n {rightAddon}\n {loading && <AutocompleteCircularProgress {...loadingProps} />}\n {!disableClearButton && !!currentQuery && (\n <AutocompleteClearButton\n {...clearButtonProps}\n {...getClearButtonProps(clearButtonProps)}\n />\n )}\n {!disableDropdownButton && (\n <AutocompleteDropdownButton\n aria-label={listboxLabel as string}\n aria-labelledby={listboxLabelledBy}\n {...getDropdownButtonProps(dropdownButtonProps)}\n />\n )}\n </>\n }\n rightAddonProps={{\n ...rightAddonProps,\n pointerEvents: true,\n className: autocompleteRightAddon({\n className: rightAddonProps?.className,\n }),\n }}\n />\n <Listbox\n aria-label={listboxLabel as string}\n aria-labelledby={listboxLabelledBy}\n {...getListboxProps(listboxProps)}\n fixedTo={containerRef}\n >\n <AutocompleteListboxChildren\n query={currentQuery}\n options={availableOptions}\n getOptionLabel={getOptionLabel}\n getOptionProps={getOptionProps}\n noOptionsChildren={noOptionsChildren}\n >\n {children}\n </AutocompleteListboxChildren>\n </Listbox>\n </KeyboardMovementProvider>\n );\n}\n"],"names":["Listbox","TextField","ListSubheader","KeyboardMovementProvider","useEnsuredId","useEnsuredRef","AutocompleteChip","AutocompleteCircularProgress","AutocompleteClearButton","AutocompleteDropdownButton","AutocompleteListboxChildren","autocomplete","autocompleteRightAddon","defaultAutocompleteFilter","noopAutocompleteFilter","useAutocomplete","noop","undefined","Autocomplete","props","id","propId","onBlur","onFocus","onClick","onChange","onKeyDown","onOpen","type","className","inputRef","children","filter","filterSelected","value","setValue","defaultValue","onValueChange","query","setQuery","defaultQuery","options","getOptionLabel","propGetOptionLabel","getOptionProps","propGetOptionProps","allowAnyValue","listboxProps","listboxLabel","listboxLabelledBy","selectedIcon","unselectedIcon","selectedIconAfter","checkboxes","disableSelectedIcon","loading","loadingProps","dropdownButtonProps","disableDropdownButton","clearButtonProps","disableClearButton","noOptionsChildren","leftAddon","propLeftAddon","disableLeftAddonStyles","propDisableLeftAddonStyles","labelProps","rightAddon","rightAddonProps","containerProps","getChipProps","updateQueryOnSelect","visible","setVisible","defaultVisible","disableInlineChips","disableCloseOnSelect","remaining","form","disabled","menuId","currentQuery","currentValue","currentSetValue","multiselect","comboboxRef","inputNodeRef","comboboxProps","movementContext","availableOptions","getListboxProps","getClearButtonProps","getDropdownButtonProps","popupId","popupRef","ref","comboboxId","containerRef","containerRefCallback","inlineChips","floatingActive","length","map","option","index","label","overrides","extractor","event","v","current","focus","aria-label","aria-labelledby","pointerEvents","fixedTo"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type AutocompleteChipProps } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* A small wrapper around the `Chip` that defaults the `rightAddon` to the
|
|
4
|
+
* remove icon and adds a default `aria-description`.
|
|
5
|
+
*
|
|
6
|
+
* @since 6.0.0
|
|
7
|
+
*/
|
|
8
|
+
export declare const AutocompleteChip: import("react").ForwardRefExoticComponent<AutocompleteChipProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from "react";
|
|
3
|
+
import { Chip } from "../chip/Chip.js";
|
|
4
|
+
import { getIcon } from "../icon/iconConfig.js";
|
|
5
|
+
import { autocompleteChip } from "./autocompleteStyles.js";
|
|
6
|
+
/**
|
|
7
|
+
* A small wrapper around the `Chip` that defaults the `rightAddon` to the
|
|
8
|
+
* remove icon and adds a default `aria-description`.
|
|
9
|
+
*
|
|
10
|
+
* @since 6.0.0
|
|
11
|
+
*/ export const AutocompleteChip = /*#__PURE__*/ forwardRef(function AutocompleteChip(props, ref) {
|
|
12
|
+
const { "aria-description": propAriaDescription, children, className, removeIcon: propRemoveIcon, rightAddon: propRightAddon, ...remaining } = props;
|
|
13
|
+
let rightAddon = propRightAddon;
|
|
14
|
+
let ariaDescription = propAriaDescription;
|
|
15
|
+
const removeIcon = getIcon("remove", propRemoveIcon);
|
|
16
|
+
if (typeof rightAddon === "undefined") {
|
|
17
|
+
rightAddon = removeIcon;
|
|
18
|
+
}
|
|
19
|
+
if (typeof ariaDescription === "undefined" && typeof children === "string") {
|
|
20
|
+
ariaDescription = `Remove "${children}"`;
|
|
21
|
+
}
|
|
22
|
+
return /*#__PURE__*/ _jsx(Chip, {
|
|
23
|
+
...remaining,
|
|
24
|
+
"aria-description": ariaDescription,
|
|
25
|
+
ref: ref,
|
|
26
|
+
rightAddon: rightAddon,
|
|
27
|
+
className: autocompleteChip({
|
|
28
|
+
className
|
|
29
|
+
}),
|
|
30
|
+
children: children
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=AutocompleteChip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/autocomplete/AutocompleteChip.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { Chip } from \"../chip/Chip.js\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { autocompleteChip } from \"./autocompleteStyles.js\";\nimport { type AutocompleteChipProps } from \"./types.js\";\n\n/**\n * A small wrapper around the `Chip` that defaults the `rightAddon` to the\n * remove icon and adds a default `aria-description`.\n *\n * @since 6.0.0\n */\nexport const AutocompleteChip = forwardRef<\n HTMLButtonElement,\n AutocompleteChipProps\n>(function AutocompleteChip(props, ref) {\n const {\n \"aria-description\": propAriaDescription,\n children,\n className,\n removeIcon: propRemoveIcon,\n rightAddon: propRightAddon,\n ...remaining\n } = props;\n\n let rightAddon = propRightAddon;\n let ariaDescription = propAriaDescription;\n const removeIcon = getIcon(\"remove\", propRemoveIcon);\n if (typeof rightAddon === \"undefined\") {\n rightAddon = removeIcon;\n }\n\n if (typeof ariaDescription === \"undefined\" && typeof children === \"string\") {\n ariaDescription = `Remove \"${children}\"`;\n }\n\n return (\n <Chip\n {...remaining}\n aria-description={ariaDescription}\n ref={ref}\n rightAddon={rightAddon}\n className={autocompleteChip({ className })}\n >\n {children}\n </Chip>\n );\n});\n"],"names":["forwardRef","Chip","getIcon","autocompleteChip","AutocompleteChip","props","ref","propAriaDescription","children","className","removeIcon","propRemoveIcon","rightAddon","propRightAddon","remaining","ariaDescription","aria-description"],"mappings":";AAAA,SAASA,UAAU,QAAQ,QAAQ;AACnC,SAASC,IAAI,QAAQ,kBAAkB;AACvC,SAASC,OAAO,QAAQ,wBAAwB;AAChD,SAASC,gBAAgB,QAAQ,0BAA0B;AAG3D;;;;;CAKC,GACD,OAAO,MAAMC,iCAAmBJ,WAG9B,SAASI,iBAAiBC,KAAK,EAAEC,GAAG;IACpC,MAAM,EACJ,oBAAoBC,mBAAmB,EACvCC,QAAQ,EACRC,SAAS,EACTC,YAAYC,cAAc,EAC1BC,YAAYC,cAAc,EAC1B,GAAGC,WACJ,GAAGT;IAEJ,IAAIO,aAAaC;IACjB,IAAIE,kBAAkBR;IACtB,MAAMG,aAAaR,QAAQ,UAAUS;IACrC,IAAI,OAAOC,eAAe,aAAa;QACrCA,aAAaF;IACf;IAEA,IAAI,OAAOK,oBAAoB,eAAe,OAAOP,aAAa,UAAU;QAC1EO,kBAAkB,CAAC,QAAQ,EAAEP,SAAS,CAAC,CAAC;IAC1C;IAEA,qBACE,KAACP;QACE,GAAGa,SAAS;QACbE,oBAAkBD;QAClBT,KAAKA;QACLM,YAAYA;QACZH,WAAWN,iBAAiB;YAAEM;QAAU;kBAEvCD;;AAGP,GAAG"}
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
import { type ReactElement } from "react";
|
|
2
|
-
import { type
|
|
3
|
-
import { type ProgressTheme } from "../progress/types.js";
|
|
4
|
-
/**
|
|
5
|
-
* @since 6.0.0
|
|
6
|
-
*/
|
|
7
|
-
export interface AutocompleteCircularProgressProps extends CircularProgressProps {
|
|
8
|
-
/** @defaultValue `"Loading"` */
|
|
9
|
-
"aria-label"?: string;
|
|
10
|
-
/** @defaultValue `"current-color"` */
|
|
11
|
-
theme?: ProgressTheme;
|
|
12
|
-
}
|
|
2
|
+
import { type AutocompleteCircularProgressProps } from "./types.js";
|
|
13
3
|
/**
|
|
4
|
+
* An internal component used to handle the styling and minimal accessibility
|
|
5
|
+
* for the `CircularProgress` within the `Autocomplete`
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
14
8
|
* @since 6.0.0
|
|
15
9
|
*/
|
|
16
10
|
export declare function AutocompleteCircularProgress(props: AutocompleteCircularProgressProps): ReactElement;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { CircularProgress } from "../progress/CircularProgress.js";
|
|
3
3
|
/**
|
|
4
|
+
* An internal component used to handle the styling and minimal accessibility
|
|
5
|
+
* for the `CircularProgress` within the `Autocomplete`
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
4
8
|
* @since 6.0.0
|
|
5
9
|
*/ export function AutocompleteCircularProgress(props) {
|
|
6
10
|
const { "aria-labelledby": ariaLabelledby, "aria-label": ariaLabel = ariaLabelledby ? undefined : "Loading", theme = "current-color", ...remaining } = props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/autocomplete/AutocompleteCircularProgress.tsx"],"sourcesContent":["import { type ReactElement } from \"react\";\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/autocomplete/AutocompleteCircularProgress.tsx"],"sourcesContent":["import { type ReactElement } from \"react\";\nimport { CircularProgress } from \"../progress/CircularProgress.js\";\nimport { type AutocompleteCircularProgressProps } from \"./types.js\";\n\n/**\n * An internal component used to handle the styling and minimal accessibility\n * for the `CircularProgress` within the `Autocomplete`\n *\n * @internal\n * @since 6.0.0\n */\nexport function AutocompleteCircularProgress(\n props: AutocompleteCircularProgressProps\n): ReactElement {\n const {\n \"aria-labelledby\": ariaLabelledby,\n \"aria-label\": ariaLabel = ariaLabelledby ? undefined : \"Loading\",\n theme = \"current-color\",\n ...remaining\n } = props;\n\n return (\n <CircularProgress\n {...remaining}\n aria-label={ariaLabel as string}\n aria-labelledby={ariaLabelledby}\n theme={theme}\n />\n );\n}\n"],"names":["CircularProgress","AutocompleteCircularProgress","props","ariaLabelledby","ariaLabel","undefined","theme","remaining","aria-label","aria-labelledby"],"mappings":";AACA,SAASA,gBAAgB,QAAQ,kCAAkC;AAGnE;;;;;;CAMC,GACD,OAAO,SAASC,6BACdC,KAAwC;IAExC,MAAM,EACJ,mBAAmBC,cAAc,EACjC,cAAcC,YAAYD,iBAAiBE,YAAY,SAAS,EAChEC,QAAQ,eAAe,EACvB,GAAGC,WACJ,GAAGL;IAEJ,qBACE,KAACF;QACE,GAAGO,SAAS;QACbC,cAAYJ;QACZK,mBAAiBN;QACjBG,OAAOA;;AAGb"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ReactElement } from "react";
|
|
2
|
+
import { type AutocompleteClearButtonProps } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* An internal component used for to clear the value from the `Autocomplete`.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
* @since 6.0.0
|
|
8
|
+
*/
|
|
9
|
+
export declare function AutocompleteClearButton(props: AutocompleteClearButtonProps): ReactElement;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Button } from "../button/Button.js";
|
|
4
|
+
import { getIcon } from "../icon/iconConfig.js";
|
|
5
|
+
import { useEnsuredId } from "../useEnsuredId.js";
|
|
6
|
+
import { autocompleteClearButton } from "./autocompleteStyles.js";
|
|
7
|
+
/**
|
|
8
|
+
* An internal component used for to clear the value from the `Autocomplete`.
|
|
9
|
+
*
|
|
10
|
+
* @internal
|
|
11
|
+
* @since 6.0.0
|
|
12
|
+
*/ export function AutocompleteClearButton(props) {
|
|
13
|
+
const { id: propId, className, children, buttonType = "icon", "aria-labelledby": ariaLabelledBy, "aria-label": ariaLabel = buttonType === "text" || ariaLabelledBy ? undefined : "Clear", ...remaining } = props;
|
|
14
|
+
const id = useEnsuredId(propId, "autocomplete-clear");
|
|
15
|
+
return /*#__PURE__*/ _jsx(Button, {
|
|
16
|
+
...remaining,
|
|
17
|
+
"aria-label": ariaLabel,
|
|
18
|
+
"aria-labelledby": ariaLabelledBy,
|
|
19
|
+
id: id,
|
|
20
|
+
className: autocompleteClearButton({
|
|
21
|
+
className
|
|
22
|
+
}),
|
|
23
|
+
tabIndex: -1,
|
|
24
|
+
buttonType: buttonType,
|
|
25
|
+
children: getIcon("clear", children)
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=AutocompleteClearButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/autocomplete/AutocompleteClearButton.tsx"],"sourcesContent":["\"use client\";\nimport { type ReactElement } from \"react\";\nimport { Button } from \"../button/Button.js\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { autocompleteClearButton } from \"./autocompleteStyles.js\";\nimport { type AutocompleteClearButtonProps } from \"./types.js\";\n\n/**\n * An internal component used for to clear the value from the `Autocomplete`.\n *\n * @internal\n * @since 6.0.0\n */\nexport function AutocompleteClearButton(\n props: AutocompleteClearButtonProps\n): ReactElement {\n const {\n id: propId,\n className,\n children,\n buttonType = \"icon\",\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-label\": ariaLabel = buttonType === \"text\" || ariaLabelledBy\n ? undefined\n : \"Clear\",\n ...remaining\n } = props;\n const id = useEnsuredId(propId, \"autocomplete-clear\");\n\n return (\n <Button\n {...remaining}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n id={id}\n className={autocompleteClearButton({ className })}\n tabIndex={-1}\n buttonType={buttonType}\n >\n {getIcon(\"clear\", children)}\n </Button>\n );\n}\n"],"names":["Button","getIcon","useEnsuredId","autocompleteClearButton","AutocompleteClearButton","props","id","propId","className","children","buttonType","ariaLabelledBy","ariaLabel","undefined","remaining","aria-label","aria-labelledby","tabIndex"],"mappings":"AAAA;;AAEA,SAASA,MAAM,QAAQ,sBAAsB;AAC7C,SAASC,OAAO,QAAQ,wBAAwB;AAChD,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,uBAAuB,QAAQ,0BAA0B;AAGlE;;;;;CAKC,GACD,OAAO,SAASC,wBACdC,KAAmC;IAEnC,MAAM,EACJC,IAAIC,MAAM,EACVC,SAAS,EACTC,QAAQ,EACRC,aAAa,MAAM,EACnB,mBAAmBC,cAAc,EACjC,cAAcC,YAAYF,eAAe,UAAUC,iBAC/CE,YACA,OAAO,EACX,GAAGC,WACJ,GAAGT;IACJ,MAAMC,KAAKJ,aAAaK,QAAQ;IAEhC,qBACE,KAACP;QACE,GAAGc,SAAS;QACbC,cAAYH;QACZI,mBAAiBL;QACjBL,IAAIA;QACJE,WAAWL,wBAAwB;YAAEK;QAAU;QAC/CS,UAAU,CAAC;QACXP,YAAYA;kBAEXT,QAAQ,SAASQ;;AAGxB"}
|
|
@@ -1,32 +1,10 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import { type
|
|
3
|
-
import { type
|
|
4
|
-
/**
|
|
5
|
-
* @since 6.0.0
|
|
6
|
-
*/
|
|
7
|
-
export interface ConfigurableAutocompleteDropdownButtonProps extends ButtonProps {
|
|
8
|
-
/** @defaultValue `AutocompleteProps.menuLabel` */
|
|
9
|
-
"aria-label"?: string;
|
|
10
|
-
/** @defaultValue `AutocompleteProps.menuLabelledby` */
|
|
11
|
-
"aria-labelledby"?: string;
|
|
12
|
-
/** @defaultValue `"autocomplete-dropdown-" + useId()` */
|
|
13
|
-
id?: string;
|
|
14
|
-
/** @defaultValue `getIcon("dropdown")` */
|
|
15
|
-
icon?: ReactNode;
|
|
16
|
-
iconRotatorProps?: Omit<IconRotatorProps, "rotated">;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* @since 6.0.0
|
|
20
|
-
*/
|
|
21
|
-
export interface AutocompleteDropdownButtonProps extends ConfigurableAutocompleteDropdownButtonProps {
|
|
22
|
-
"aria-controls": string;
|
|
23
|
-
onClick: MouseEventHandler<HTMLButtonElement>;
|
|
24
|
-
visible: boolean;
|
|
25
|
-
}
|
|
1
|
+
import { type ReactElement } from "react";
|
|
2
|
+
import { type LabelRequiredForA11y } from "../types.js";
|
|
3
|
+
import { type AutocompleteDropdownButtonProps } from "./types.js";
|
|
26
4
|
/**
|
|
27
5
|
* This is a simple `Button` wrapper to be used as a dropdown button within the
|
|
28
6
|
* `Autocomplete`.
|
|
29
7
|
*
|
|
30
8
|
* @since 6.0.0
|
|
31
9
|
*/
|
|
32
|
-
export declare function AutocompleteDropdownButton(props: AutocompleteDropdownButtonProps): ReactElement;
|
|
10
|
+
export declare function AutocompleteDropdownButton(props: LabelRequiredForA11y<AutocompleteDropdownButtonProps>): ReactElement;
|
|
@@ -4,13 +4,14 @@ import { Button } from "../button/Button.js";
|
|
|
4
4
|
import { IconRotator } from "../icon/IconRotator.js";
|
|
5
5
|
import { getIcon } from "../icon/iconConfig.js";
|
|
6
6
|
import { useEnsuredId } from "../useEnsuredId.js";
|
|
7
|
+
import { autocompleteDropdownButton } from "./autocompleteStyles.js";
|
|
7
8
|
/**
|
|
8
9
|
* This is a simple `Button` wrapper to be used as a dropdown button within the
|
|
9
10
|
* `Autocomplete`.
|
|
10
11
|
*
|
|
11
12
|
* @since 6.0.0
|
|
12
13
|
*/ export function AutocompleteDropdownButton(props) {
|
|
13
|
-
const { id: propId, icon, visible, iconRotatorProps, ...remaining } = props;
|
|
14
|
+
const { id: propId, icon, visible, iconRotatorProps, className, ...remaining } = props;
|
|
14
15
|
const id = useEnsuredId(propId, "autocomplete-dropdown");
|
|
15
16
|
return /*#__PURE__*/ _jsx(Button, {
|
|
16
17
|
...remaining,
|
|
@@ -18,6 +19,9 @@ import { useEnsuredId } from "../useEnsuredId.js";
|
|
|
18
19
|
"aria-expanded": visible,
|
|
19
20
|
tabIndex: -1,
|
|
20
21
|
buttonType: "icon",
|
|
22
|
+
className: autocompleteDropdownButton({
|
|
23
|
+
className
|
|
24
|
+
}),
|
|
21
25
|
children: /*#__PURE__*/ _jsx(IconRotator, {
|
|
22
26
|
...iconRotatorProps,
|
|
23
27
|
rotated: visible,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/autocomplete/AutocompleteDropdownButton.tsx"],"sourcesContent":["\"use client\";\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/autocomplete/AutocompleteDropdownButton.tsx"],"sourcesContent":["\"use client\";\nimport { type ReactElement } from \"react\";\nimport { Button } from \"../button/Button.js\";\nimport { IconRotator } from \"../icon/IconRotator.js\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { type LabelRequiredForA11y } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { autocompleteDropdownButton } from \"./autocompleteStyles.js\";\nimport { type AutocompleteDropdownButtonProps } from \"./types.js\";\n\n/**\n * This is a simple `Button` wrapper to be used as a dropdown button within the\n * `Autocomplete`.\n *\n * @since 6.0.0\n */\nexport function AutocompleteDropdownButton(\n props: LabelRequiredForA11y<AutocompleteDropdownButtonProps>\n): ReactElement {\n const {\n id: propId,\n icon,\n visible,\n iconRotatorProps,\n className,\n ...remaining\n } = props;\n\n const id = useEnsuredId(propId, \"autocomplete-dropdown\");\n\n return (\n <Button\n {...remaining}\n id={id}\n aria-expanded={visible}\n tabIndex={-1}\n buttonType=\"icon\"\n className={autocompleteDropdownButton({ className })}\n >\n <IconRotator {...iconRotatorProps} rotated={visible}>\n {getIcon(\"dropdown\", icon)}\n </IconRotator>\n </Button>\n );\n}\n"],"names":["Button","IconRotator","getIcon","useEnsuredId","autocompleteDropdownButton","AutocompleteDropdownButton","props","id","propId","icon","visible","iconRotatorProps","className","remaining","aria-expanded","tabIndex","buttonType","rotated"],"mappings":"AAAA;;AAEA,SAASA,MAAM,QAAQ,sBAAsB;AAC7C,SAASC,WAAW,QAAQ,yBAAyB;AACrD,SAASC,OAAO,QAAQ,wBAAwB;AAEhD,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,0BAA0B,QAAQ,0BAA0B;AAGrE;;;;;CAKC,GACD,OAAO,SAASC,2BACdC,KAA4D;IAE5D,MAAM,EACJC,IAAIC,MAAM,EACVC,IAAI,EACJC,OAAO,EACPC,gBAAgB,EAChBC,SAAS,EACT,GAAGC,WACJ,GAAGP;IAEJ,MAAMC,KAAKJ,aAAaK,QAAQ;IAEhC,qBACE,KAACR;QACE,GAAGa,SAAS;QACbN,IAAIA;QACJO,iBAAeJ;QACfK,UAAU,CAAC;QACXC,YAAW;QACXJ,WAAWR,2BAA2B;YAAEQ;QAAU;kBAElD,cAAA,KAACX;YAAa,GAAGU,gBAAgB;YAAEM,SAASP;sBACzCR,QAAQ,YAAYO;;;AAI7B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type ReactElement, type ReactNode } from "react";
|
|
2
|
+
import { type AutocompleteGetOptionLabel, type AutocompleteGetOptionProps, type AutocompleteOption } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* @since 6.0.0
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export interface AutocompleteListboxChildrenProps<Option extends AutocompleteOption> {
|
|
8
|
+
query: string;
|
|
9
|
+
options: readonly Option[];
|
|
10
|
+
getOptionLabel: AutocompleteGetOptionLabel<Option>;
|
|
11
|
+
getOptionProps: AutocompleteGetOptionProps<Option>;
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
noOptionsChildren: ReactNode;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* NOTE: This was moved to a second component to improve performance so
|
|
17
|
+
* that the availableOptions aren't looped until the listbox is visible
|
|
18
|
+
*
|
|
19
|
+
* @since 6.0.0
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
export declare function AutocompleteListboxChildren<Option extends AutocompleteOption>(props: AutocompleteListboxChildrenProps<Option>): ReactElement;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useListboxContext } from "../form/ListboxProvider.js";
|
|
4
|
+
import { Option } from "../form/Option.js";
|
|
5
|
+
/**
|
|
6
|
+
* NOTE: This was moved to a second component to improve performance so
|
|
7
|
+
* that the availableOptions aren't looped until the listbox is visible
|
|
8
|
+
*
|
|
9
|
+
* @since 6.0.0
|
|
10
|
+
* @internal
|
|
11
|
+
*/ export function AutocompleteListboxChildren(props) {
|
|
12
|
+
const { children, query, options: availableOptions, noOptionsChildren, getOptionLabel, getOptionProps } = props;
|
|
13
|
+
const { isOptionSelected } = useListboxContext();
|
|
14
|
+
return /*#__PURE__*/ _jsxs(_Fragment, {
|
|
15
|
+
children: [
|
|
16
|
+
children,
|
|
17
|
+
!availableOptions.length && noOptionsChildren,
|
|
18
|
+
availableOptions.map((option, index)=>{
|
|
19
|
+
const label = getOptionLabel(option);
|
|
20
|
+
const optionProps = getOptionProps({
|
|
21
|
+
index,
|
|
22
|
+
query,
|
|
23
|
+
option,
|
|
24
|
+
selected: isOptionSelected(option),
|
|
25
|
+
extractor: getOptionLabel
|
|
26
|
+
});
|
|
27
|
+
return /*#__PURE__*/ _jsx(Option, {
|
|
28
|
+
value: option,
|
|
29
|
+
...optionProps,
|
|
30
|
+
children: optionProps?.children ?? label
|
|
31
|
+
}, label);
|
|
32
|
+
})
|
|
33
|
+
]
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=AutocompleteListboxChildren.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/autocomplete/AutocompleteListboxChildren.tsx"],"sourcesContent":["\"use client\";\nimport { type ReactElement, type ReactNode } from \"react\";\nimport { useListboxContext } from \"../form/ListboxProvider.js\";\nimport { Option } from \"../form/Option.js\";\nimport {\n type AutocompleteGetOptionLabel,\n type AutocompleteGetOptionProps,\n type AutocompleteOption,\n} from \"./types.js\";\n\n/**\n * @since 6.0.0\n * @internal\n */\nexport interface AutocompleteListboxChildrenProps<\n Option extends AutocompleteOption,\n> {\n query: string;\n options: readonly Option[];\n getOptionLabel: AutocompleteGetOptionLabel<Option>;\n getOptionProps: AutocompleteGetOptionProps<Option>;\n children: ReactNode;\n noOptionsChildren: ReactNode;\n}\n\n/**\n * NOTE: This was moved to a second component to improve performance so\n * that the availableOptions aren't looped until the listbox is visible\n *\n * @since 6.0.0\n * @internal\n */\nexport function AutocompleteListboxChildren<Option extends AutocompleteOption>(\n props: AutocompleteListboxChildrenProps<Option>\n): ReactElement {\n const {\n children,\n query,\n options: availableOptions,\n noOptionsChildren,\n getOptionLabel,\n getOptionProps,\n } = props;\n const { isOptionSelected } = useListboxContext();\n\n return (\n <>\n {children}\n {!availableOptions.length && noOptionsChildren}\n {availableOptions.map((option, index) => {\n const label = getOptionLabel(option);\n const optionProps = getOptionProps({\n index,\n query,\n option,\n selected: isOptionSelected(option),\n extractor: getOptionLabel,\n });\n\n return (\n <Option key={label} value={option} {...optionProps}>\n {optionProps?.children ?? label}\n </Option>\n );\n })}\n </>\n );\n}\n"],"names":["useListboxContext","Option","AutocompleteListboxChildren","props","children","query","options","availableOptions","noOptionsChildren","getOptionLabel","getOptionProps","isOptionSelected","length","map","option","index","label","optionProps","selected","extractor","value"],"mappings":"AAAA;;AAEA,SAASA,iBAAiB,QAAQ,6BAA6B;AAC/D,SAASC,MAAM,QAAQ,oBAAoB;AAsB3C;;;;;;CAMC,GACD,OAAO,SAASC,4BACdC,KAA+C;IAE/C,MAAM,EACJC,QAAQ,EACRC,KAAK,EACLC,SAASC,gBAAgB,EACzBC,iBAAiB,EACjBC,cAAc,EACdC,cAAc,EACf,GAAGP;IACJ,MAAM,EAAEQ,gBAAgB,EAAE,GAAGX;IAE7B,qBACE;;YACGI;YACA,CAACG,iBAAiBK,MAAM,IAAIJ;YAC5BD,iBAAiBM,GAAG,CAAC,CAACC,QAAQC;gBAC7B,MAAMC,QAAQP,eAAeK;gBAC7B,MAAMG,cAAcP,eAAe;oBACjCK;oBACAV;oBACAS;oBACAI,UAAUP,iBAAiBG;oBAC3BK,WAAWV;gBACb;gBAEA,qBACE,KAACR;oBAAmBmB,OAAON;oBAAS,GAAGG,WAAW;8BAC/CA,aAAab,YAAYY;mBADfA;YAIjB;;;AAGN"}
|