@react-md/core 1.0.0-next.16 → 1.0.0-next.18
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 +45 -22
- 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} +11 -176
- package/dist/{form/fileUtils.js → files/validation.js} +10 -135
- 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/SelectedOption.js +2 -1
- package/dist/form/SelectedOption.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 +193 -124
- 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/FontIcon.d.ts +4 -2
- package/dist/icon/FontIcon.js.map +1 -1
- package/dist/icon/TextIconSpacing.d.ts +3 -1
- package/dist/icon/TextIconSpacing.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/ResizeObserver.d.ts +11 -12
- package/dist/test-utils/ResizeObserver.js +11 -12
- package/dist/test-utils/ResizeObserver.js.map +1 -1
- package/dist/test-utils/matchMedia.d.ts +3 -3
- package/dist/test-utils/matchMedia.js +6 -6
- 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 +86 -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/useResizeObserver.d.ts +19 -0
- package/dist/useResizeObserver.js +19 -0
- package/dist/useResizeObserver.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 +2 -2
- package/dist/utils/RenderRecursively.js.map +1 -1
- package/dist/utils/alphaNumericSort.d.ts +5 -5
- package/dist/utils/alphaNumericSort.js.map +1 -1
- package/dist/utils/bem.d.ts +1 -1
- package/dist/utils/bem.js +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 +25 -24
- 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} +15 -244
- 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/SelectedOption.tsx +2 -0
- 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/FontIcon.tsx +4 -2
- package/src/icon/TextIconSpacing.tsx +1 -1
- 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/ResizeObserver.ts +11 -12
- package/src/test-utils/matchMedia.ts +7 -7
- 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/useResizeObserver.ts +19 -0
- package/src/useThrottledFunction.ts +6 -9
- package/src/useToggle.ts +3 -3
- package/src/utils/RenderRecursively.tsx +2 -2
- package/src/utils/alphaNumericSort.ts +5 -5
- package/src/utils/bem.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
package/src/form/useCombobox.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
|
+
useCallback,
|
|
3
4
|
useRef,
|
|
4
5
|
type FocusEventHandler,
|
|
5
6
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -38,7 +39,7 @@ import {
|
|
|
38
39
|
} from "../types.js";
|
|
39
40
|
import { useEnsuredId } from "../useEnsuredId.js";
|
|
40
41
|
import { useEnsuredRef } from "../useEnsuredRef.js";
|
|
41
|
-
import {
|
|
42
|
+
import { useEnsuredState } from "../useEnsuredState.js";
|
|
42
43
|
import { tryToSubmitRelatedForm } from "./utils.js";
|
|
43
44
|
|
|
44
45
|
const noop = (): void => {
|
|
@@ -67,8 +68,8 @@ export type SupportedComboboxPopup = "listbox" | "grid" | "dialog";
|
|
|
67
68
|
export interface ComboboxKeyboardMovementData<
|
|
68
69
|
E extends HTMLElement = HTMLInputElement,
|
|
69
70
|
> extends KeyboardMovementExtensionData<E> {
|
|
70
|
-
show()
|
|
71
|
-
hide()
|
|
71
|
+
show: () => void;
|
|
72
|
+
hide: () => void;
|
|
72
73
|
visible: boolean;
|
|
73
74
|
focusLast: NonNullMutableRef<boolean>;
|
|
74
75
|
}
|
|
@@ -100,10 +101,45 @@ export type ComboboxKeyboardMovementOptions<
|
|
|
100
101
|
/**
|
|
101
102
|
* @since 6.0.0
|
|
102
103
|
*/
|
|
103
|
-
export interface
|
|
104
|
+
export interface ComboboxVisibilityOptions {
|
|
105
|
+
/**
|
|
106
|
+
* This can be used to control the popup's visibility and **must** be used
|
|
107
|
+
* along with {@link setVisible}.
|
|
108
|
+
*/
|
|
109
|
+
visible?: boolean;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Used to control the popup's visibility and should generally be a `useState`
|
|
113
|
+
* setter.
|
|
114
|
+
*
|
|
115
|
+
* @example Controlling the Visibility
|
|
116
|
+
* ```tsx
|
|
117
|
+
* const [visible, setVisible] = useState(false);
|
|
118
|
+
*
|
|
119
|
+
* useCombobox({
|
|
120
|
+
* visible,
|
|
121
|
+
* setVisible,
|
|
122
|
+
* });
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
setVisible?: UseStateSetter<boolean>;
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Set this to `true` to have the combobox's popup visible by default.
|
|
129
|
+
*
|
|
130
|
+
* @defaultValue `false`
|
|
131
|
+
*/
|
|
132
|
+
defaultVisible?: UseStateInitializer<boolean>;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* @since 6.0.0
|
|
137
|
+
*/
|
|
138
|
+
export interface ConfigurableComboboxOptions<
|
|
104
139
|
ComboboxEl extends HTMLElement = HTMLInputElement,
|
|
105
140
|
PopupEl extends HTMLElement = HTMLElement,
|
|
106
|
-
> extends ComboboxKeyboardMovementOptions<ComboboxEl
|
|
141
|
+
> extends ComboboxKeyboardMovementOptions<ComboboxEl>,
|
|
142
|
+
ComboboxVisibilityOptions {
|
|
107
143
|
/**
|
|
108
144
|
* This is the {@link InputHTMLAttributes.form} attribute and is used to
|
|
109
145
|
* attempt submitting a form when the enter key is pressed.
|
|
@@ -130,7 +166,7 @@ export interface BaseComboboxOptions<
|
|
|
130
166
|
/**
|
|
131
167
|
* @defaultValue `false`
|
|
132
168
|
*/
|
|
133
|
-
|
|
169
|
+
multiselect?: boolean;
|
|
134
170
|
|
|
135
171
|
extendKeyDown?: ExtendComboboxKeyDown<ComboboxEl>;
|
|
136
172
|
|
|
@@ -142,18 +178,25 @@ export interface BaseComboboxOptions<
|
|
|
142
178
|
getDefaultFocusedIndex?: GetDefaultFocusedIndex;
|
|
143
179
|
}
|
|
144
180
|
|
|
181
|
+
/**
|
|
182
|
+
* @since 6.0.0
|
|
183
|
+
*/
|
|
184
|
+
export interface ComboboxGetEnterDefaultFocusedIndexOptions {
|
|
185
|
+
focusLast: boolean;
|
|
186
|
+
focusables: readonly HTMLElement[];
|
|
187
|
+
currentFocusIndex: number;
|
|
188
|
+
}
|
|
189
|
+
|
|
145
190
|
/**
|
|
146
191
|
* @since 6.0.0
|
|
147
192
|
*/
|
|
148
193
|
export interface ComboboxOptions<
|
|
149
194
|
ComboboxEl extends HTMLElement = HTMLInputElement,
|
|
150
195
|
PopupEl extends HTMLElement = HTMLElement,
|
|
151
|
-
> extends
|
|
152
|
-
getEnterDefaultFocusedIndex
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
currentFocusIndex: number;
|
|
156
|
-
}): number;
|
|
196
|
+
> extends ConfigurableComboboxOptions<ComboboxEl, PopupEl> {
|
|
197
|
+
getEnterDefaultFocusedIndex: (
|
|
198
|
+
options: ComboboxGetEnterDefaultFocusedIndexOptions
|
|
199
|
+
) => number;
|
|
157
200
|
}
|
|
158
201
|
|
|
159
202
|
/**
|
|
@@ -180,6 +223,7 @@ export interface ComboboxWidgetProps<
|
|
|
180
223
|
export interface ComboboxWidgetPopupProps<
|
|
181
224
|
PopupEl extends HTMLElement = HTMLElement,
|
|
182
225
|
> {
|
|
226
|
+
"aria-multiselectable": true | undefined;
|
|
183
227
|
id: string;
|
|
184
228
|
ref: RefCallback<PopupEl>;
|
|
185
229
|
role: "listbox" | "dialog" | "grid";
|
|
@@ -215,16 +259,12 @@ export interface ProvidedComboboxMenuProps<
|
|
|
215
259
|
> extends Required<ComboboxTransitionCallbacks>,
|
|
216
260
|
ComboboxWidgetPopupProps<PopupEl> {
|
|
217
261
|
visible: boolean;
|
|
218
|
-
onRequestClose()
|
|
219
|
-
|
|
262
|
+
onRequestClose: () => void;
|
|
220
263
|
/** @defaultValue `"min"` */
|
|
221
264
|
width: PositionWidth;
|
|
222
|
-
|
|
223
265
|
/** @defaultValue `BELOW_CENTER_ANCHOR` */
|
|
224
266
|
anchor: PositionAnchor;
|
|
225
|
-
|
|
226
267
|
fixedTo: RefObject<HTMLElement>;
|
|
227
|
-
|
|
228
268
|
sheetProps: MenuSheetConfigurableProps &
|
|
229
269
|
Required<ComboboxTransitionCallbacks>;
|
|
230
270
|
}
|
|
@@ -236,14 +276,6 @@ export interface ComboboxMenuProps<PopupEl extends HTMLElement = HTMLDivElement>
|
|
|
236
276
|
extends Omit<ConfigurableComboboxMenuProps, keyof ProvidedComboboxMenuProps>,
|
|
237
277
|
ProvidedComboboxMenuProps<PopupEl> {}
|
|
238
278
|
|
|
239
|
-
/**
|
|
240
|
-
* Since the combobox usually uses the `Menu` as a popup element, this is a
|
|
241
|
-
* helper util to create the required props and merge any additional props
|
|
242
|
-
* with reasonable defaults.
|
|
243
|
-
*/
|
|
244
|
-
export type ComboboxGetMenuProps<PopupEl extends HTMLElement = HTMLDivElement> =
|
|
245
|
-
(props?: ConfigurableComboboxMenuProps) => ComboboxMenuProps<PopupEl>;
|
|
246
|
-
|
|
247
279
|
/**
|
|
248
280
|
* @since 6.0.0
|
|
249
281
|
*/
|
|
@@ -251,8 +283,8 @@ export interface ComboboxImplementation<
|
|
|
251
283
|
ComboboxEl extends HTMLElement = HTMLInputElement,
|
|
252
284
|
PopupEl extends HTMLElement = HTMLElement,
|
|
253
285
|
> extends KeyboardMovementProviderImplementation<ComboboxEl> {
|
|
254
|
-
show()
|
|
255
|
-
hide()
|
|
286
|
+
show: () => void;
|
|
287
|
+
hide: () => void;
|
|
256
288
|
visible: boolean;
|
|
257
289
|
setVisible: UseStateSetter<boolean>;
|
|
258
290
|
focusLast: NonNullMutableRef<boolean>;
|
|
@@ -260,11 +292,17 @@ export interface ComboboxImplementation<
|
|
|
260
292
|
popupProps: ComboboxWidgetPopupProps<PopupEl>;
|
|
261
293
|
comboboxRef: RefObject<ComboboxEl>;
|
|
262
294
|
comboboxProps: ComboboxWidgetProps<ComboboxEl>;
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
295
|
+
/**
|
|
296
|
+
* Since the combobox usually uses the `Menu` as a popup element, this is a
|
|
297
|
+
* helper util to create the required props and merge any additional props
|
|
298
|
+
* with reasonable defaults.
|
|
299
|
+
*/
|
|
300
|
+
getMenuProps: (
|
|
301
|
+
overrides?: ConfigurableComboboxMenuProps
|
|
302
|
+
) => ComboboxMenuProps<PopupEl>;
|
|
303
|
+
getTransitionCallbacks: (
|
|
266
304
|
options: ComboboxTransitionOptions
|
|
267
|
-
)
|
|
305
|
+
) => Required<ComboboxTransitionCallbacks>;
|
|
268
306
|
}
|
|
269
307
|
|
|
270
308
|
/**
|
|
@@ -283,14 +321,17 @@ export function useCombobox<
|
|
|
283
321
|
onFocus,
|
|
284
322
|
onKeyDown,
|
|
285
323
|
searchable,
|
|
324
|
+
multiselect,
|
|
286
325
|
isNegativeOneAllowed,
|
|
287
326
|
loopable,
|
|
288
327
|
disabled,
|
|
328
|
+
visible: propVisible,
|
|
329
|
+
setVisible: propSetVisible,
|
|
330
|
+
defaultVisible = false,
|
|
289
331
|
comboboxId: propComboboxId,
|
|
290
332
|
comboboxRef: propComboboxRef,
|
|
291
333
|
popupId: propPopupId,
|
|
292
334
|
popupRef: propPopupRef,
|
|
293
|
-
defaultVisible = false,
|
|
294
335
|
onFocusChange = noop,
|
|
295
336
|
extendKeyDown = noop,
|
|
296
337
|
getFocusableElements = getNonDisabledOptions,
|
|
@@ -298,12 +339,18 @@ export function useCombobox<
|
|
|
298
339
|
getDefaultFocusedIndex,
|
|
299
340
|
} = options;
|
|
300
341
|
|
|
301
|
-
const {
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
342
|
+
const [visible, setVisible] = useEnsuredState({
|
|
343
|
+
value: propVisible,
|
|
344
|
+
setValue: propSetVisible,
|
|
345
|
+
defaultValue: defaultVisible,
|
|
346
|
+
});
|
|
347
|
+
const show = useCallback(() => {
|
|
348
|
+
setVisible(true);
|
|
349
|
+
}, [setVisible]);
|
|
350
|
+
const hide = useCallback(() => {
|
|
351
|
+
setVisible(false);
|
|
352
|
+
}, [setVisible]);
|
|
353
|
+
|
|
307
354
|
const popupId = useEnsuredId(propPopupId, "combobox-popup");
|
|
308
355
|
const comboboxId = useEnsuredId(propComboboxId, "combobox");
|
|
309
356
|
const [comboboxRef, comboboxRefCallback] = useEnsuredRef(propComboboxRef);
|
|
@@ -460,6 +507,7 @@ export function useCombobox<
|
|
|
460
507
|
};
|
|
461
508
|
|
|
462
509
|
const popupProps: ComboboxWidgetPopupProps<PopupEl> = {
|
|
510
|
+
"aria-multiselectable": multiselect || undefined,
|
|
463
511
|
id: popupId,
|
|
464
512
|
ref: popupRefCallback,
|
|
465
513
|
role: popup,
|
|
@@ -2,33 +2,63 @@
|
|
|
2
2
|
import { useRef } from "react";
|
|
3
3
|
import { isTypeEvent } from "../movement/utils.js";
|
|
4
4
|
import {
|
|
5
|
-
useCombobox,
|
|
6
|
-
type BaseComboboxOptions,
|
|
7
5
|
type ComboboxImplementation,
|
|
6
|
+
type ComboboxWidgetProps,
|
|
7
|
+
type ConfigurableComboboxOptions,
|
|
8
|
+
useCombobox,
|
|
8
9
|
} from "./useCombobox.js";
|
|
9
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
type EditableHTMLElement,
|
|
12
|
+
isChangeableHTMLElement,
|
|
13
|
+
triggerManualChangeEvent,
|
|
14
|
+
} from "./utils.js";
|
|
10
15
|
|
|
11
16
|
/**
|
|
12
17
|
* @since 6.0.0
|
|
13
18
|
*/
|
|
14
|
-
export
|
|
19
|
+
export type EditableComboboxOptions<
|
|
15
20
|
ComboboxEl extends HTMLElement = HTMLInputElement,
|
|
16
21
|
PopupEl extends HTMLElement = HTMLElement,
|
|
17
|
-
>
|
|
22
|
+
> = ConfigurableComboboxOptions<ComboboxEl, PopupEl>;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @since 6.0.0
|
|
26
|
+
*/
|
|
27
|
+
export interface EditableComboboxWidgetProps<
|
|
28
|
+
ComboboxEl extends EditableHTMLElement = HTMLInputElement,
|
|
29
|
+
> extends ComboboxWidgetProps<ComboboxEl> {
|
|
30
|
+
/**
|
|
31
|
+
* This is set to `off` to prevent browser from providing their own
|
|
32
|
+
* suggestions.
|
|
33
|
+
*
|
|
34
|
+
* @defaultValue `"off"`
|
|
35
|
+
*/
|
|
36
|
+
autoComplete: string;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* This is set to `"none"` to prevent browsers from automatically capitalizing
|
|
40
|
+
* the first letter.
|
|
41
|
+
*
|
|
42
|
+
* @defaultValue `"none"`
|
|
43
|
+
*/
|
|
44
|
+
autoCapitalize: string;
|
|
45
|
+
}
|
|
18
46
|
|
|
19
47
|
/**
|
|
20
48
|
* @since 6.0.0
|
|
21
49
|
*/
|
|
22
50
|
export interface EditableComboboxImplementation<
|
|
23
|
-
ComboboxEl extends
|
|
51
|
+
ComboboxEl extends EditableHTMLElement = HTMLInputElement,
|
|
24
52
|
PopupEl extends HTMLElement = HTMLElement,
|
|
25
|
-
> extends ComboboxImplementation<ComboboxEl, PopupEl> {
|
|
53
|
+
> extends ComboboxImplementation<ComboboxEl, PopupEl> {
|
|
54
|
+
comboboxProps: EditableComboboxWidgetProps<ComboboxEl>;
|
|
55
|
+
}
|
|
26
56
|
|
|
27
57
|
/**
|
|
28
58
|
* @since 6.0.0
|
|
29
59
|
*/
|
|
30
60
|
export function useEditableCombobox<
|
|
31
|
-
ComboboxEl extends
|
|
61
|
+
ComboboxEl extends EditableHTMLElement = HTMLInputElement,
|
|
32
62
|
PopupEl extends HTMLElement = HTMLElement,
|
|
33
63
|
>(
|
|
34
64
|
options: EditableComboboxOptions<ComboboxEl, PopupEl> = {}
|
|
@@ -129,6 +159,11 @@ export function useEditableCombobox<
|
|
|
129
159
|
|
|
130
160
|
return {
|
|
131
161
|
...combobox,
|
|
162
|
+
comboboxProps: {
|
|
163
|
+
...combobox.comboboxProps,
|
|
164
|
+
autoCapitalize: "none",
|
|
165
|
+
autoComplete: "off",
|
|
166
|
+
},
|
|
132
167
|
getMenuProps(props) {
|
|
133
168
|
return {
|
|
134
169
|
// override the inherited renderAsSheet context since the sheet makes it
|
|
@@ -91,7 +91,7 @@ export type GetRadioGroupProps<V extends string | number> = (
|
|
|
91
91
|
|
|
92
92
|
/** @since 6.0.0 */
|
|
93
93
|
export interface RadioGroupImplementation<V extends string | number> {
|
|
94
|
-
reset()
|
|
94
|
+
reset: () => void;
|
|
95
95
|
value: V;
|
|
96
96
|
setValue: UseStateSetter<V>;
|
|
97
97
|
getRadioProps: GetRadioGroupProps<V>;
|
|
@@ -99,11 +99,11 @@ export interface RadioGroupImplementation<V extends string | number> {
|
|
|
99
99
|
|
|
100
100
|
export type GetMenuItemRadioGroupProps<V extends string | number> = (
|
|
101
101
|
value: V
|
|
102
|
-
) => Readonly<{ checked: boolean; onCheckedChange()
|
|
102
|
+
) => Readonly<{ checked: boolean; onCheckedChange: () => void }>;
|
|
103
103
|
|
|
104
104
|
/** @since 6.0.0 */
|
|
105
105
|
export interface MenuItemRadioGroupImplementation<V extends string | number> {
|
|
106
|
-
reset()
|
|
106
|
+
reset: () => void;
|
|
107
107
|
value: V;
|
|
108
108
|
setValue: UseStateSetter<V>;
|
|
109
109
|
getRadioProps: GetMenuItemRadioGroupProps<V>;
|
|
@@ -111,17 +111,17 @@ export interface MenuItemRadioGroupImplementation<V extends string | number> {
|
|
|
111
111
|
|
|
112
112
|
/** @since 6.0.0 */
|
|
113
113
|
export interface CombinedRadioGroupReturnValue<V extends string | number> {
|
|
114
|
-
reset()
|
|
114
|
+
reset: () => void;
|
|
115
115
|
value: V;
|
|
116
116
|
setValue: UseStateSetter<V>;
|
|
117
|
-
getRadioProps
|
|
117
|
+
getRadioProps?: (value: V) => {
|
|
118
118
|
name?: string;
|
|
119
119
|
value?: V;
|
|
120
120
|
checked: boolean;
|
|
121
121
|
error?: boolean;
|
|
122
122
|
required?: boolean;
|
|
123
123
|
onChange?: ChangeEventHandler<HTMLInputElement>;
|
|
124
|
-
onCheckedChange
|
|
124
|
+
onCheckedChange?: () => void;
|
|
125
125
|
onInvalid?: FormEventHandler<HTMLInputElement>;
|
|
126
126
|
};
|
|
127
127
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
useCombobox,
|
|
4
|
-
type BaseComboboxOptions,
|
|
5
4
|
type ComboboxImplementation,
|
|
5
|
+
type ConfigurableComboboxOptions,
|
|
6
6
|
} from "./useCombobox.js";
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
export interface SelectComboboxOptions<
|
|
12
12
|
ComboboxEl extends HTMLElement = HTMLInputElement,
|
|
13
13
|
PopupEl extends HTMLElement = HTMLElement,
|
|
14
|
-
> extends
|
|
14
|
+
> extends ConfigurableComboboxOptions<ComboboxEl, PopupEl> {
|
|
15
15
|
value: string;
|
|
16
16
|
values: readonly string[];
|
|
17
17
|
}
|
|
@@ -19,10 +19,10 @@ export interface SelectComboboxOptions<
|
|
|
19
19
|
/**
|
|
20
20
|
* @since 6.0.0
|
|
21
21
|
*/
|
|
22
|
-
export
|
|
22
|
+
export type SelectComboboxImplementation<
|
|
23
23
|
ComboboxEl extends HTMLElement = HTMLInputElement,
|
|
24
24
|
PopupEl extends HTMLElement = HTMLElement,
|
|
25
|
-
>
|
|
25
|
+
> = ComboboxImplementation<ComboboxEl, PopupEl>;
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* @since 6.0.0
|
package/src/form/useTextField.ts
CHANGED
|
@@ -317,7 +317,7 @@ export interface TextFieldImplementation<
|
|
|
317
317
|
E extends HTMLInputElement | HTMLTextAreaElement,
|
|
318
318
|
> extends TextFieldHookState {
|
|
319
319
|
fieldRef: RefObject<E>;
|
|
320
|
-
reset()
|
|
320
|
+
reset: () => void;
|
|
321
321
|
setState: UseStateSetter<Readonly<TextFieldHookState>>;
|
|
322
322
|
fieldProps: ProvidedTextFieldProps<E>;
|
|
323
323
|
}
|
|
@@ -34,9 +34,9 @@ export interface ControlledHoverModeOptions
|
|
|
34
34
|
* @since 6.0.0
|
|
35
35
|
*/
|
|
36
36
|
export interface ControlledHoverModeImplementation {
|
|
37
|
-
startShowFlow(id?: string | MouseEvent)
|
|
38
|
-
startHideFlow()
|
|
39
|
-
clearVisibilityTimeout()
|
|
37
|
+
startShowFlow: (id?: string | MouseEvent) => void;
|
|
38
|
+
startHideFlow: () => void;
|
|
39
|
+
clearVisibilityTimeout: () => void;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
/**
|
|
@@ -53,23 +53,23 @@ export interface SimpleHoverModeContext {
|
|
|
53
53
|
*
|
|
54
54
|
* @see {@link hoverTimeoutRef} for an example.
|
|
55
55
|
*/
|
|
56
|
-
enableHoverMode(activeId: string)
|
|
56
|
+
enableHoverMode: (activeId: string) => void;
|
|
57
57
|
|
|
58
58
|
/**
|
|
59
59
|
* Disables all hover mode behavior by clearing all timeouts and resetting
|
|
60
60
|
* internal state.
|
|
61
61
|
*/
|
|
62
|
-
disableHoverMode()
|
|
62
|
+
disableHoverMode: () => void;
|
|
63
63
|
|
|
64
64
|
/**
|
|
65
65
|
* @see {@link leaveTimeoutRef} for an example.
|
|
66
66
|
*/
|
|
67
|
-
startDisableTimer()
|
|
67
|
+
startDisableTimer: () => void;
|
|
68
68
|
|
|
69
69
|
/**
|
|
70
70
|
* @see {@link hoverTimeoutRef} for an example.
|
|
71
71
|
*/
|
|
72
|
-
clearDisableTimer()
|
|
72
|
+
clearDisableTimer: () => void;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
/**
|
package/src/icon/FontIcon.tsx
CHANGED
|
@@ -18,9 +18,11 @@ export interface FontIconProps
|
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* Any children to render to create the font icon. This is required for
|
|
21
|
-
* material-icons.
|
|
21
|
+
* material-icons. For example:
|
|
22
22
|
*
|
|
23
|
-
*
|
|
23
|
+
* ```tsx
|
|
24
|
+
* <FontIcon>clear</FontIcon>
|
|
25
|
+
* ```
|
|
24
26
|
*/
|
|
25
27
|
children?: ReactNode;
|
|
26
28
|
}
|
|
@@ -26,7 +26,7 @@ export interface TextIconSpacingProps {
|
|
|
26
26
|
* If this is not a valid react element, the icon will be wrapped in a
|
|
27
27
|
* `<span>` instead with the class names applied.
|
|
28
28
|
*/
|
|
29
|
-
icon?: ReactElement | ReactNode;
|
|
29
|
+
icon?: ReactElement<{ className?: string }> | ReactNode;
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* Boolean if the icon should appear after the text instead of before.
|
package/src/icon/iconConfig.tsx
CHANGED
|
@@ -122,6 +122,13 @@ export interface ConfigurableIcons {
|
|
|
122
122
|
*/
|
|
123
123
|
radioChecked?: ReactNode;
|
|
124
124
|
|
|
125
|
+
/**
|
|
126
|
+
* The icon to use when removing elements.
|
|
127
|
+
*
|
|
128
|
+
* @defaultValue `<FontIcon>cancel</FontIcon>`
|
|
129
|
+
*/
|
|
130
|
+
remove?: ReactNode;
|
|
131
|
+
|
|
125
132
|
/**
|
|
126
133
|
* The icon to use for showing that something has been selected that is not a
|
|
127
134
|
* radio or checkbox. This is used internally for the `Chip` in the
|
|
@@ -168,6 +175,7 @@ export type ConfigurableIconName = keyof ConfigurableIcons;
|
|
|
168
175
|
* import { ICON_CONFIG } from "@react-md/core";
|
|
169
176
|
* import ArrowDropDownIcon from "@react-md/material-icons/ArrowDropDownIcon";
|
|
170
177
|
* import ArrowUpwardIcon from "@react-md/material-icons/ArrowUpwardIcon";
|
|
178
|
+
* import CancelIcon from "@react-md/material-icons/CancelIcon";
|
|
171
179
|
* import CheckBoxIcon from "@react-md/material-icons/CheckBoxIcon";
|
|
172
180
|
* import CheckBoxOutlineBlankIcon from "@react-md/material-icons/CheckBoxOutlineBlankIcon";
|
|
173
181
|
* import CheckIcon from "@react-md/material-icons/CheckIcon";
|
|
@@ -198,6 +206,7 @@ export type ConfigurableIconName = keyof ConfigurableIcons;
|
|
|
198
206
|
* ICON_CONFIG.password = <RemoveRedEyeIcon />;
|
|
199
207
|
* ICON_CONFIG.radio = <RadioButtonUncheckedIcon />;
|
|
200
208
|
* ICON_CONFIG.radioChecked = <RadioButtonCheckedIcon />;
|
|
209
|
+
* ICON_CONFIG.remove = <CancelIcon />;
|
|
201
210
|
* ICON_CONFIG.selected = <CheckIcon />;
|
|
202
211
|
* ICON_CONFIG.sort = <ArrowUpwardIcon />;
|
|
203
212
|
* ICON_CONFIG.upload = <FileUploadIcon />;
|
|
@@ -222,6 +231,7 @@ export const ICON_CONFIG: ConfiguredIcons = {
|
|
|
222
231
|
password: <FontIcon>remove_red_eye</FontIcon>,
|
|
223
232
|
radio: <FontIcon>radio_button_unchecked</FontIcon>,
|
|
224
233
|
radioChecked: <FontIcon>radio_button_checked</FontIcon>,
|
|
234
|
+
remove: <FontIcon>cancel</FontIcon>,
|
|
225
235
|
selected: <FontIcon>check</FontIcon>,
|
|
226
236
|
sort: <FontIcon>arrow_upward</FontIcon>,
|
|
227
237
|
upload: <FontIcon>file_upload</FontIcon>,
|
|
@@ -236,6 +246,7 @@ export const ICON_CONFIG: ConfiguredIcons = {
|
|
|
236
246
|
* import { configureIcons } from "@react-md/core";
|
|
237
247
|
* import ArrowDropDownIcon from "@react-md/material-icons/ArrowDropDownIcon";
|
|
238
248
|
* import ArrowUpwardIcon from "@react-md/material-icons/ArrowUpwardIcon";
|
|
249
|
+
* import CancelIcon from "@react-md/material-icons/CancelIcon";
|
|
239
250
|
* import CheckBoxIcon from "@react-md/material-icons/CheckBoxIcon";
|
|
240
251
|
* import CheckBoxOutlineBlankIcon from "@react-md/material-icons/CheckBoxOutlineBlankIcon";
|
|
241
252
|
* import CheckIcon from "@react-md/material-icons/CheckIcon";
|
|
@@ -267,6 +278,7 @@ export const ICON_CONFIG: ConfiguredIcons = {
|
|
|
267
278
|
* password: <RemoveRedEyeIcon />,
|
|
268
279
|
* radio: <RadioButtonUncheckedIcon />,
|
|
269
280
|
* radioChecked: <RadioButtonCheckedIcon />,
|
|
281
|
+
* remove: <CancelIcon />,
|
|
270
282
|
* selected: <CheckIcon />,
|
|
271
283
|
* sort: <ArrowUpwardIcon />,
|
|
272
284
|
* upload: <FileUploadIcon />,
|
|
@@ -53,13 +53,13 @@ export interface UserInteractionModeProviderProps {
|
|
|
53
53
|
* to update component functionality and applying the following class names to
|
|
54
54
|
* the `document.body`:
|
|
55
55
|
*
|
|
56
|
-
* - `"mouse-mode"`
|
|
57
|
-
* - `"keyboard-mode"`
|
|
58
|
-
* - `"touch-mode"`
|
|
56
|
+
* - `"rmd-mouse-mode"`
|
|
57
|
+
* - `"rmd-keyboard-mode"`
|
|
58
|
+
* - `"rmd-touch-mode"`
|
|
59
59
|
*
|
|
60
60
|
* Within `react-md`, these classes are used for the following behavior:
|
|
61
|
-
* - only display `:focus` outlines while in `"keyboard-mode"`
|
|
62
|
-
* - do not display `:hover` effects while in `"touch-mode"`
|
|
61
|
+
* - only display `:focus` outlines while in `"rmd-keyboard-mode"`
|
|
62
|
+
* - do not display `:hover` effects while in `"rmd-touch-mode"`
|
|
63
63
|
*
|
|
64
64
|
* @example Mount at the root of your app
|
|
65
65
|
* ```tsx
|
|
@@ -136,8 +136,12 @@ export function UserInteractionModeProvider(
|
|
|
136
136
|
* and I have no experience using them.
|
|
137
137
|
*/
|
|
138
138
|
useEffect(() => {
|
|
139
|
-
const enableMouseMode = (): void =>
|
|
140
|
-
|
|
139
|
+
const enableMouseMode = (): void => {
|
|
140
|
+
setMode("mouse");
|
|
141
|
+
};
|
|
142
|
+
const enableKeyboardMode = (): void => {
|
|
143
|
+
setMode("keyboard");
|
|
144
|
+
};
|
|
141
145
|
|
|
142
146
|
const handleTouchStart = (): void => {
|
|
143
147
|
lastTouchTime.current = Date.now();
|
|
@@ -160,7 +164,7 @@ export function UserInteractionModeProvider(
|
|
|
160
164
|
isTouchContextMenu.current = true;
|
|
161
165
|
};
|
|
162
166
|
|
|
163
|
-
const className =
|
|
167
|
+
const className = `rmd-${mode}-mode`;
|
|
164
168
|
document.body.classList.add(className);
|
|
165
169
|
window.addEventListener("touchstart", handleTouchStart, true);
|
|
166
170
|
if (mode === "mouse") {
|
package/src/interaction/types.ts
CHANGED
|
@@ -19,6 +19,25 @@ declare module "react" {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
* @since 6.0.0
|
|
24
|
+
*/
|
|
25
|
+
export interface ComponentWithRippleProps {
|
|
26
|
+
/**
|
|
27
|
+
* Set this to `true` to disable the ripple behavior for this single component
|
|
28
|
+
* only. If all components should have the ripple disabled:
|
|
29
|
+
*
|
|
30
|
+
* ```ts
|
|
31
|
+
* INTERACTION_CONFIG.mode = "none";
|
|
32
|
+
* // or
|
|
33
|
+
* INTERACTION_CONFIG.mode = "press";
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @defaultValue `false`
|
|
37
|
+
*/
|
|
38
|
+
disableRipple?: boolean;
|
|
39
|
+
}
|
|
40
|
+
|
|
22
41
|
/**
|
|
23
42
|
* This is used to provide feedback to the user that they are interacting with
|
|
24
43
|
* elements on the page. It is recommended to not set this to `"none"` unless
|
|
@@ -156,8 +175,8 @@ export type RippleStateList = readonly RippleState[];
|
|
|
156
175
|
* @internal
|
|
157
176
|
*/
|
|
158
177
|
export interface RippleTransitionCallbacks {
|
|
159
|
-
onEntered(ripple: RippleState)
|
|
160
|
-
onExited(ripple: RippleState)
|
|
178
|
+
onEntered: (ripple: RippleState) => void;
|
|
179
|
+
onExited: (ripple: RippleState) => void;
|
|
161
180
|
}
|
|
162
181
|
|
|
163
182
|
/**
|
|
@@ -12,6 +12,7 @@ import { useUserInteractionMode } from "./UserInteractionModeProvider.js";
|
|
|
12
12
|
import { INTERACTION_CONFIG } from "./config.js";
|
|
13
13
|
import type {
|
|
14
14
|
ElementInteractionHandlers,
|
|
15
|
+
ElementInteractionMode,
|
|
15
16
|
ElementInteractionState,
|
|
16
17
|
RippleState,
|
|
17
18
|
RippleStyle,
|
|
@@ -31,6 +32,13 @@ export const PRESSED_CLASS_NAME = "rmd-pressed";
|
|
|
31
32
|
/** @since 6.0.0 */
|
|
32
33
|
export interface ElementInteractionOptions<E extends HTMLElement>
|
|
33
34
|
extends Partial<ElementInteractionHandlers<E>> {
|
|
35
|
+
/**
|
|
36
|
+
* This can be used to override the {@link INTERACTION_CONFIG.mode}
|
|
37
|
+
*
|
|
38
|
+
* @defaultValue `INTERACTION_CONFIG.mode`
|
|
39
|
+
*/
|
|
40
|
+
mode?: ElementInteractionMode;
|
|
41
|
+
|
|
34
42
|
/**
|
|
35
43
|
* Boolean if the element is currently disabled which will prevent any of the
|
|
36
44
|
* element interaction states from happening.
|
|
@@ -165,11 +173,10 @@ export function useElementInteraction<E extends HTMLElement>(
|
|
|
165
173
|
onTouchEnd = noop,
|
|
166
174
|
onTouchMove = noop,
|
|
167
175
|
onDragStart = noop,
|
|
176
|
+
mode = INTERACTION_CONFIG.mode,
|
|
168
177
|
disabled = false,
|
|
169
178
|
} = options;
|
|
170
179
|
|
|
171
|
-
const { mode } = INTERACTION_CONFIG;
|
|
172
|
-
|
|
173
180
|
const holding = useRef(false);
|
|
174
181
|
const disableClick = useRef(false);
|
|
175
182
|
const userMode = useUserInteractionMode();
|
package/src/interaction/utils.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type KeyboardEvent, type MouseEvent, type TouchEvent } from "react";
|
|
2
2
|
import { findSizingContainer } from "../positioning/utils.js";
|
|
3
|
-
import
|
|
4
|
-
ElementInteractionState,
|
|
5
|
-
RippleState,
|
|
6
|
-
RippleStyle,
|
|
3
|
+
import {
|
|
4
|
+
type ElementInteractionState,
|
|
5
|
+
type RippleState,
|
|
6
|
+
type RippleStyle,
|
|
7
7
|
} from "./types.js";
|
|
8
8
|
|
|
9
9
|
/** @internal */
|
|
@@ -61,8 +61,8 @@ export function getRippleStyle(
|
|
|
61
61
|
({ pageX, pageY } = event);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
x = pageX - (left + window.
|
|
65
|
-
y = pageY - (top + window.
|
|
64
|
+
x = pageX - (left + window.scrollX);
|
|
65
|
+
y = pageY - (top + window.scrollY);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
const radius = getRadius(x, y, width, height);
|
|
@@ -94,9 +94,9 @@ export interface ExpandableLayoutImplementation
|
|
|
94
94
|
temporary: boolean;
|
|
95
95
|
persistent: boolean;
|
|
96
96
|
expanded: boolean;
|
|
97
|
-
expandNavigation()
|
|
98
|
-
collapseNavigation()
|
|
99
|
-
toggleNavigation()
|
|
97
|
+
expandNavigation: () => void;
|
|
98
|
+
collapseNavigation: () => void;
|
|
99
|
+
toggleNavigation: () => void;
|
|
100
100
|
appBarProps: ProvidedLayoutAppBarProps;
|
|
101
101
|
mainProps: ProvidedLayoutMainProps;
|
|
102
102
|
navToggleProps: ProvidedExpandableLayoutNavToggleProps;
|