@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,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useCallback, useState } from "react";
|
|
3
2
|
import { type UseStateSetter } from "../types.js";
|
|
3
|
+
import { useReadonlySet } from "../useReadonlySet.js";
|
|
4
4
|
import { type TreeDefaultIds, type TreeItemIdSet } from "./types.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -11,7 +11,7 @@ import { type TreeDefaultIds, type TreeItemIdSet } from "./types.js";
|
|
|
11
11
|
*/
|
|
12
12
|
export interface TreeExpansion {
|
|
13
13
|
expandedIds: TreeItemIdSet;
|
|
14
|
-
toggleTreeItemExpansion(itemId: string)
|
|
14
|
+
toggleTreeItemExpansion: (itemId: string) => void;
|
|
15
15
|
expandMultipleTreeItems: UseStateSetter<TreeItemIdSet>;
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -22,31 +22,13 @@ export interface TreeExpansion {
|
|
|
22
22
|
export function useTreeExpansion(
|
|
23
23
|
defaultExpandedIds?: TreeDefaultIds
|
|
24
24
|
): TreeExpansion {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
typeof defaultExpandedIds === "function"
|
|
28
|
-
? defaultExpandedIds()
|
|
29
|
-
: defaultExpandedIds;
|
|
30
|
-
|
|
31
|
-
return new Set(defaultIds);
|
|
25
|
+
const { value, setValue, toggleValue } = useReadonlySet({
|
|
26
|
+
defaultValue: defaultExpandedIds,
|
|
32
27
|
});
|
|
33
28
|
|
|
34
|
-
const toggleTreeItemExpansion = useCallback((itemId: string) => {
|
|
35
|
-
setExpandedIds((prevExpandedIds) => {
|
|
36
|
-
const expandedIds = new Set(prevExpandedIds);
|
|
37
|
-
if (expandedIds.has(itemId)) {
|
|
38
|
-
expandedIds.delete(itemId);
|
|
39
|
-
} else {
|
|
40
|
-
expandedIds.add(itemId);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return expandedIds;
|
|
44
|
-
});
|
|
45
|
-
}, []);
|
|
46
|
-
|
|
47
29
|
return {
|
|
48
|
-
expandedIds,
|
|
49
|
-
toggleTreeItemExpansion,
|
|
50
|
-
expandMultipleTreeItems:
|
|
30
|
+
expandedIds: value,
|
|
31
|
+
toggleTreeItemExpansion: toggleValue,
|
|
32
|
+
expandMultipleTreeItems: setValue,
|
|
51
33
|
};
|
|
52
34
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useCallback, useState } from "react";
|
|
3
2
|
import { type UseStateSetter } from "../types.js";
|
|
3
|
+
import { useReadonlySet } from "../useReadonlySet.js";
|
|
4
4
|
import { type TreeDefaultIds, type TreeItemIdSet } from "./types.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -13,7 +13,7 @@ export interface TreeSelection {
|
|
|
13
13
|
/** @defaultValue `false` */
|
|
14
14
|
multiSelect?: boolean;
|
|
15
15
|
selectedIds: ReadonlySet<string>;
|
|
16
|
-
toggleTreeItemSelection(itemId: string)
|
|
16
|
+
toggleTreeItemSelection: (itemId: string) => void;
|
|
17
17
|
selectMultipleTreeItems: UseStateSetter<TreeItemIdSet>;
|
|
18
18
|
}
|
|
19
19
|
|
|
@@ -25,39 +25,15 @@ export function useTreeSelection(
|
|
|
25
25
|
defaultSelectedIds?: TreeDefaultIds,
|
|
26
26
|
multiSelect = false
|
|
27
27
|
): Required<TreeSelection> {
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
? defaultSelectedIds()
|
|
32
|
-
: defaultSelectedIds;
|
|
33
|
-
|
|
34
|
-
return new Set(defaultIds);
|
|
28
|
+
const { value, setValue, toggleValue } = useReadonlySet({
|
|
29
|
+
toggleType: multiSelect ? "multiple" : "single-select",
|
|
30
|
+
defaultValue: defaultSelectedIds,
|
|
35
31
|
});
|
|
36
32
|
|
|
37
|
-
const toggleTreeItemSelection = useCallback(
|
|
38
|
-
(itemId: string) => {
|
|
39
|
-
setSelectedIds((selectedIds) => {
|
|
40
|
-
if (!multiSelect) {
|
|
41
|
-
return selectedIds.has(itemId) ? selectedIds : new Set([itemId]);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const nextSelectedIds = new Set(selectedIds);
|
|
45
|
-
if (selectedIds.has(itemId)) {
|
|
46
|
-
nextSelectedIds.delete(itemId);
|
|
47
|
-
} else {
|
|
48
|
-
nextSelectedIds.add(itemId);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return nextSelectedIds;
|
|
52
|
-
});
|
|
53
|
-
},
|
|
54
|
-
[multiSelect]
|
|
55
|
-
);
|
|
56
|
-
|
|
57
33
|
return {
|
|
58
|
-
selectedIds,
|
|
59
34
|
multiSelect,
|
|
60
|
-
|
|
61
|
-
|
|
35
|
+
selectedIds: value,
|
|
36
|
+
toggleTreeItemSelection: toggleValue,
|
|
37
|
+
selectMultipleTreeItems: setValue,
|
|
62
38
|
};
|
|
63
39
|
}
|
package/src/tree/utils.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import {
|
|
2
|
+
type DefaultTreeItemNode,
|
|
3
|
+
type TreeData,
|
|
4
|
+
type TreeItemNode,
|
|
5
|
+
} from "./types.js";
|
|
2
6
|
|
|
3
7
|
/**
|
|
4
8
|
* This will get all the items from the provided itemId up to the root of the
|
|
@@ -48,7 +52,7 @@ export function getChildTreeItems<T extends TreeItemNode = DefaultTreeItemNode>(
|
|
|
48
52
|
parentId: string | null,
|
|
49
53
|
recursive = false
|
|
50
54
|
): readonly T[] {
|
|
51
|
-
const items = Array.isArray(data) ? data : Object.values(data);
|
|
55
|
+
const items: readonly T[] = Array.isArray(data) ? data : Object.values(data);
|
|
52
56
|
|
|
53
57
|
return items.reduce<T[]>((list, item) => {
|
|
54
58
|
if (parentId !== item.parentId) {
|
package/src/types.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type { Dispatch, ReactElement, Ref, SetStateAction } from "react";
|
|
|
5
5
|
* object even though a `ref` isn't a real prop.
|
|
6
6
|
*/
|
|
7
7
|
export type PropsWithRef<
|
|
8
|
-
Props extends
|
|
8
|
+
Props extends object,
|
|
9
9
|
Element extends HTMLElement,
|
|
10
10
|
> = Props & {
|
|
11
11
|
/**
|
|
@@ -18,7 +18,7 @@ export type PropsWithRef<
|
|
|
18
18
|
* A simple type that can be used for different components that clone a
|
|
19
19
|
* `className` into a child component.
|
|
20
20
|
*/
|
|
21
|
-
export type ClassNameCloneableChild<T =
|
|
21
|
+
export type ClassNameCloneableChild<T = object> = ReactElement<
|
|
22
22
|
T & { className?: string }
|
|
23
23
|
>;
|
|
24
24
|
|
|
@@ -171,12 +171,28 @@ export type CssPosition = "fixed" | "sticky" | "static";
|
|
|
171
171
|
* @since 6.0.0
|
|
172
172
|
*/
|
|
173
173
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
174
|
-
export type AnyFunction = (...args: any[]) => any
|
|
174
|
+
export type AnyFunction = (...args: any[]) => any;
|
|
175
175
|
|
|
176
176
|
/**
|
|
177
177
|
* @since 6.0.0
|
|
178
178
|
*/
|
|
179
|
-
export type CancelableFunction<F extends AnyFunction> = F & {
|
|
179
|
+
export type CancelableFunction<F extends AnyFunction> = F & {
|
|
180
|
+
cancel: () => void;
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* @since 6.0.0
|
|
185
|
+
*/
|
|
186
|
+
export type DebouncedFunction<F extends AnyFunction> = CancelableFunction<
|
|
187
|
+
(...args: Parameters<F>) => void
|
|
188
|
+
>;
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* @since 6.0.0
|
|
192
|
+
*/
|
|
193
|
+
export type ThrottledFunction<F extends AnyFunction> = CancelableFunction<
|
|
194
|
+
(...args: Parameters<F>) => ReturnType<F>
|
|
195
|
+
>;
|
|
180
196
|
|
|
181
197
|
/**
|
|
182
198
|
* @since 6.0.0
|
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useEffect, useMemo, useRef } from "react";
|
|
3
|
-
import { type
|
|
3
|
+
import { type AnyFunction, type DebouncedFunction } from "./types.js";
|
|
4
4
|
import { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect.js";
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* @since 6.0.0
|
|
8
|
-
*/
|
|
9
|
-
export type DebouncedFunction<F extends AnyFunction> = CancelableFunction<
|
|
10
|
-
(...args: Parameters<F>) => void
|
|
11
|
-
>;
|
|
12
|
-
|
|
13
6
|
/**
|
|
14
7
|
* Creates a function that will only be called if it has not been called again
|
|
15
8
|
* for X milliseconds.
|
|
@@ -109,7 +102,9 @@ export function useDebouncedFunction<F extends AnyFunction>(
|
|
|
109
102
|
funcRef.current(...args);
|
|
110
103
|
}, wait);
|
|
111
104
|
};
|
|
112
|
-
debounced.cancel = () =>
|
|
105
|
+
debounced.cancel = () => {
|
|
106
|
+
window.clearTimeout(timeout.current);
|
|
107
|
+
};
|
|
113
108
|
|
|
114
109
|
return debounced;
|
|
115
110
|
}, [wait]);
|
package/src/useDropzone.ts
CHANGED
|
@@ -12,10 +12,10 @@ const noop = (): void => {
|
|
|
12
12
|
* instead of the `DropzoneHandlers` type.
|
|
13
13
|
*/
|
|
14
14
|
export interface DropzoneHandlers {
|
|
15
|
-
onDrop<E extends HTMLElement>(event: DragEvent<E>)
|
|
16
|
-
onDragEnter
|
|
17
|
-
onDragOver
|
|
18
|
-
onDragLeave
|
|
15
|
+
onDrop: <E extends HTMLElement>(event: DragEvent<E>) => void;
|
|
16
|
+
onDragEnter?: <E extends HTMLElement>(event: DragEvent<E>) => void;
|
|
17
|
+
onDragOver?: <E extends HTMLElement>(event: DragEvent<E>) => void;
|
|
18
|
+
onDragLeave?: <E extends HTMLElement>(event: DragEvent<E>) => void;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
/**
|
|
@@ -89,7 +89,7 @@ export interface BaseIntersectionObserverHookOptions {
|
|
|
89
89
|
* // pretend some expensive computation
|
|
90
90
|
* return [0, 0.25, 0.5, 0.75, 1];
|
|
91
91
|
* }, []),
|
|
92
|
-
*
|
|
92
|
+
* onUpdate: useCallback(() => {
|
|
93
93
|
* // do something
|
|
94
94
|
* }, []),
|
|
95
95
|
* });
|
|
@@ -97,7 +97,7 @@ export interface BaseIntersectionObserverHookOptions {
|
|
|
97
97
|
*
|
|
98
98
|
* If this option is provided, {@link threshold}'s value will be ignored.
|
|
99
99
|
*/
|
|
100
|
-
getThreshold
|
|
100
|
+
getThreshold?: () => IntersectionObserverThreshold;
|
|
101
101
|
|
|
102
102
|
/**
|
|
103
103
|
* **Must be wrapped in `useCallback` to prevent re-creating the
|
|
@@ -121,7 +121,7 @@ export interface BaseIntersectionObserverHookOptions {
|
|
|
121
121
|
*
|
|
122
122
|
* Note: If this option is provided, {@link rootMargin} will be ignored.
|
|
123
123
|
*/
|
|
124
|
-
getRootMargin
|
|
124
|
+
getRootMargin?: () => IntersectionObserverRootMargin;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
/**
|
|
@@ -156,7 +156,7 @@ export interface IntersectionObserverHookOptions<E extends HTMLElement>
|
|
|
156
156
|
* }
|
|
157
157
|
* ```
|
|
158
158
|
*/
|
|
159
|
-
onUpdate(entries: readonly IntersectionObserverEntry[])
|
|
159
|
+
onUpdate: (entries: readonly IntersectionObserverEntry[]) => void;
|
|
160
160
|
|
|
161
161
|
/**
|
|
162
162
|
* **Must be wrapped in `useCallback` to prevent re-creating the
|
|
@@ -185,7 +185,7 @@ export interface IntersectionObserverHookOptions<E extends HTMLElement>
|
|
|
185
185
|
* }
|
|
186
186
|
* ```
|
|
187
187
|
*/
|
|
188
|
-
getTargets
|
|
188
|
+
getTargets?: () => readonly Element[];
|
|
189
189
|
}
|
|
190
190
|
|
|
191
191
|
/**
|
package/src/useLocalStorage.ts
CHANGED
|
@@ -69,7 +69,7 @@ export interface LocalStorageHookOptions<T> {
|
|
|
69
69
|
/**
|
|
70
70
|
* @since 6.0.0
|
|
71
71
|
*/
|
|
72
|
-
export const defaultLocalStorageSerializer =
|
|
72
|
+
export const defaultLocalStorageSerializer = (value: unknown): string =>
|
|
73
73
|
typeof value === "string" ? value : `${value}`;
|
|
74
74
|
|
|
75
75
|
/** @since 6.0.0 */
|
|
@@ -135,7 +135,7 @@ export const getItemFromStorage = <T>(
|
|
|
135
135
|
key,
|
|
136
136
|
fallback,
|
|
137
137
|
storage = localStorage,
|
|
138
|
-
deserializer = JSON.parse
|
|
138
|
+
deserializer = JSON.parse as LocalStorageDeserializer<T>,
|
|
139
139
|
} = options;
|
|
140
140
|
if (!key) {
|
|
141
141
|
return fallback;
|
|
@@ -144,7 +144,7 @@ export const getItemFromStorage = <T>(
|
|
|
144
144
|
try {
|
|
145
145
|
const value = storage.getItem(key);
|
|
146
146
|
return !value ? fallback : deserializer(value);
|
|
147
|
-
} catch
|
|
147
|
+
} catch {
|
|
148
148
|
return fallback;
|
|
149
149
|
}
|
|
150
150
|
};
|
|
@@ -255,7 +255,7 @@ export interface LocalStorageHookReturnValue<T> {
|
|
|
255
255
|
/**
|
|
256
256
|
* Remove the item from local storage.
|
|
257
257
|
*/
|
|
258
|
-
remove()
|
|
258
|
+
remove: () => void;
|
|
259
259
|
|
|
260
260
|
/**
|
|
261
261
|
* Manually persist the current {@link value} into local storage. This is only
|
|
@@ -291,7 +291,7 @@ export interface LocalStorageHookReturnValue<T> {
|
|
|
291
291
|
* }
|
|
292
292
|
* ```
|
|
293
293
|
*/
|
|
294
|
-
persist()
|
|
294
|
+
persist: () => void;
|
|
295
295
|
}
|
|
296
296
|
|
|
297
297
|
/**
|
|
@@ -456,7 +456,7 @@ export function useLocalStorage<T>(
|
|
|
456
456
|
const serializer =
|
|
457
457
|
options.serializer ??
|
|
458
458
|
(raw ? defaultLocalStorageSerializer : JSON.stringify);
|
|
459
|
-
const deserializer =
|
|
459
|
+
const deserializer: LocalStorageDeserializer<T> =
|
|
460
460
|
options.deserializer ??
|
|
461
461
|
(raw && typeof initialValue === "string" ? identity : JSON.parse);
|
|
462
462
|
|
package/src/useOrientation.ts
CHANGED
|
@@ -40,7 +40,9 @@ export const getOrientationType = (): OrientationType => {
|
|
|
40
40
|
export function useOrientation(): OrientationType {
|
|
41
41
|
const [orientation, setOrientation] = useState(getOrientationType);
|
|
42
42
|
useEffect(() => {
|
|
43
|
-
const handler = (): void =>
|
|
43
|
+
const handler = (): void => {
|
|
44
|
+
setOrientation(getOrientationType());
|
|
45
|
+
};
|
|
44
46
|
|
|
45
47
|
const { orientation } = window.screen;
|
|
46
48
|
if (orientation) {
|
package/src/usePageInactive.ts
CHANGED
|
@@ -36,7 +36,7 @@ export interface PageInactiveOptions {
|
|
|
36
36
|
* This will be called whenever the page activity changes based on the
|
|
37
37
|
* {@link PageInactiveType}.
|
|
38
38
|
*/
|
|
39
|
-
onChange(active: boolean)
|
|
39
|
+
onChange: (active: boolean) => void;
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
42
|
* This will be fired whenever the {@link disabled} state is `true` which can
|
|
@@ -47,7 +47,7 @@ export interface PageInactiveOptions {
|
|
|
47
47
|
*
|
|
48
48
|
* @defaultValue `() => {}`
|
|
49
49
|
*/
|
|
50
|
-
onDisabledCleanup
|
|
50
|
+
onDisabledCleanup?: () => void;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
/**
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback, useState } from "react";
|
|
3
|
+
import { type UseStateSetter, type UseStateInitializer } from "./types.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @since 6.0.0
|
|
7
|
+
*/
|
|
8
|
+
export interface ReadonlySetOptions<T> {
|
|
9
|
+
/**
|
|
10
|
+
* Sets the behavior for when the
|
|
11
|
+
* {@link ReadonlySetImplementation.toggleValue} is triggered and mostly for
|
|
12
|
+
* internal usage. The default behavior (`"multiple"`) is to work how most
|
|
13
|
+
* would expect:
|
|
14
|
+
* - If the item does not exist in the set, add it.
|
|
15
|
+
* - If the item exists in the set, remove it.
|
|
16
|
+
*
|
|
17
|
+
* Setting this to `"single"` makes it so that only a single item can be in
|
|
18
|
+
* the set at once and will toggle like normal:
|
|
19
|
+
* - If the item does not exist in the set, return a new set only including
|
|
20
|
+
* the item.
|
|
21
|
+
* - If the item exists in the set, return an empty set.
|
|
22
|
+
* An example usage is the `useExpansionPanels` to allow only a single panel
|
|
23
|
+
* to be expanded at a time.
|
|
24
|
+
*
|
|
25
|
+
* Setting this to `"single-select"` makes it so that only a single item can
|
|
26
|
+
* be in the set at once but will not toggle:
|
|
27
|
+
* - If the item does not exist in the set, return a new set only including
|
|
28
|
+
* the item.
|
|
29
|
+
* - If the item exists in the set, do nothing
|
|
30
|
+
* An example usage is the `useTreeSelection` to always require at least one
|
|
31
|
+
* tree item to be selected. It is impossible to deselect an item.
|
|
32
|
+
*
|
|
33
|
+
* @defaultValue `"multiple"`
|
|
34
|
+
*/
|
|
35
|
+
toggleType?: "single" | "multiple" | "single-select";
|
|
36
|
+
defaultValue?: UseStateInitializer<ReadonlySet<T> | readonly T[]>;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @since 6.0.0
|
|
41
|
+
*/
|
|
42
|
+
export interface ReadonlySetImplementation<T> {
|
|
43
|
+
value: ReadonlySet<T>;
|
|
44
|
+
setValue: UseStateSetter<ReadonlySet<T>>;
|
|
45
|
+
toggleValue: (item: T) => void;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* This is most likely an internal only hook to manage state for a
|
|
50
|
+
* `ReadonlySet`. You most likely want to use one of the other hooks that
|
|
51
|
+
* leverage this instead:
|
|
52
|
+
*
|
|
53
|
+
* - `useCheckboxGroup`
|
|
54
|
+
* - `useExpansionPanels`
|
|
55
|
+
* - `useTreeSelection`
|
|
56
|
+
* - `useTreeExpansion`
|
|
57
|
+
* - etc
|
|
58
|
+
*
|
|
59
|
+
* @example Simple Example
|
|
60
|
+
* ```tsx
|
|
61
|
+
* import { cnb } from "cnbuilder";
|
|
62
|
+
* import { useReadonlySet } from "@react-md/core/useReadonlySet";
|
|
63
|
+
*
|
|
64
|
+
* function Example() {
|
|
65
|
+
* const { value, toggleValue } = useReadonlySet();
|
|
66
|
+
*
|
|
67
|
+
* return (
|
|
68
|
+
* <>
|
|
69
|
+
* {someList.map((item) => (
|
|
70
|
+
* <div key={item.id} className={cnb(value.has(item.id) && styles.selected)}>
|
|
71
|
+
* {item.name}
|
|
72
|
+
* <Button onClick={() => toggleValue(item.id)}>Button</Button>
|
|
73
|
+
* </div>
|
|
74
|
+
* ))}
|
|
75
|
+
* </>
|
|
76
|
+
* );
|
|
77
|
+
* }
|
|
78
|
+
* ```
|
|
79
|
+
* @since 6.0.0
|
|
80
|
+
*/
|
|
81
|
+
export function useReadonlySet<T>(
|
|
82
|
+
options: ReadonlySetOptions<T> = {}
|
|
83
|
+
): ReadonlySetImplementation<T> {
|
|
84
|
+
const { defaultValue, toggleType = "multiple" } = options;
|
|
85
|
+
const [value, setValue] = useState<ReadonlySet<T>>(() => {
|
|
86
|
+
const initial =
|
|
87
|
+
defaultValue instanceof Function ? defaultValue() : (defaultValue ?? []);
|
|
88
|
+
|
|
89
|
+
return new Set(initial);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
const toggleValue = useCallback(
|
|
93
|
+
(item: T) => {
|
|
94
|
+
setValue((prevValue) => {
|
|
95
|
+
const exists = prevValue.has(item);
|
|
96
|
+
if (toggleType === "single") {
|
|
97
|
+
return new Set(exists ? [] : [item]);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (toggleType === "single-select") {
|
|
101
|
+
return exists ? prevValue : new Set([item]);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const nextValue = new Set(prevValue);
|
|
105
|
+
if (exists) {
|
|
106
|
+
nextValue.delete(item);
|
|
107
|
+
} else {
|
|
108
|
+
nextValue.add(item);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return nextValue;
|
|
112
|
+
});
|
|
113
|
+
},
|
|
114
|
+
[toggleType]
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
return {
|
|
118
|
+
value,
|
|
119
|
+
setValue,
|
|
120
|
+
toggleValue,
|
|
121
|
+
};
|
|
122
|
+
}
|
package/src/useResizeListener.ts
CHANGED
|
@@ -33,7 +33,7 @@ export interface ResizeListenerOptions extends AddEventListenerOptions {
|
|
|
33
33
|
* This function will be called whenever the resize event is fired on the
|
|
34
34
|
* `window`. This should be wrapped in `useCallback`.
|
|
35
35
|
*/
|
|
36
|
-
onUpdate(event: Event)
|
|
36
|
+
onUpdate: (event: Event) => void;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
/**
|
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useEffect, useMemo, useRef } from "react";
|
|
3
|
-
import { type AnyFunction, type
|
|
3
|
+
import { type AnyFunction, type ThrottledFunction } from "./types.js";
|
|
4
4
|
import { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect.js";
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* @since 6.0.0
|
|
8
|
-
*/
|
|
9
|
-
export type ThrottledFunction<F extends AnyFunction> = CancelableFunction<
|
|
10
|
-
(...args: Parameters<F>) => ReturnType<F>
|
|
11
|
-
>;
|
|
12
|
-
|
|
13
6
|
/**
|
|
14
7
|
* Creates a function that will only be called once every X milliseconds.
|
|
15
8
|
*
|
|
@@ -113,19 +106,23 @@ export function useThrottledFunction<F extends AnyFunction>(
|
|
|
113
106
|
const remaining = wait - (now - lastCalledTime.current);
|
|
114
107
|
if (remaining <= 0 || remaining > wait) {
|
|
115
108
|
lastCalledTime.current = now;
|
|
109
|
+
|
|
116
110
|
result.current = funcRef.current(...args.current);
|
|
117
111
|
} else if (!timeout.current) {
|
|
118
112
|
timeout.current = window.setTimeout(() => {
|
|
119
113
|
lastCalledTime.current = Date.now();
|
|
120
114
|
timeout.current = undefined;
|
|
121
115
|
// should exist by this time
|
|
116
|
+
|
|
122
117
|
result.current = funcRef.current(...(args.current as Parameters<F>));
|
|
123
118
|
}, remaining);
|
|
124
119
|
}
|
|
125
120
|
|
|
126
121
|
return result.current as ReturnType<F>;
|
|
127
122
|
};
|
|
128
|
-
throttled.cancel = () =>
|
|
123
|
+
throttled.cancel = () => {
|
|
124
|
+
window.clearTimeout(timeout.current);
|
|
125
|
+
};
|
|
129
126
|
|
|
130
127
|
return throttled;
|
|
131
128
|
}, [wait]);
|
package/src/useToggle.ts
CHANGED
|
@@ -8,9 +8,9 @@ import { type UseStateInitializer, type UseStateSetter } from "./types.js";
|
|
|
8
8
|
export interface ToggleImplementation {
|
|
9
9
|
toggled: boolean;
|
|
10
10
|
setToggled: UseStateSetter<boolean>;
|
|
11
|
-
toggle()
|
|
12
|
-
enable()
|
|
13
|
-
disable()
|
|
11
|
+
toggle: () => void;
|
|
12
|
+
enable: () => void;
|
|
13
|
+
disable: () => void;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -97,7 +97,7 @@ export interface RenderRecursivelyProps<
|
|
|
97
97
|
* @see {@link getRecursiveItemKey}
|
|
98
98
|
* @defaultValue `({ index, depth }) => ${depth}-${index}`.
|
|
99
99
|
*/
|
|
100
|
-
getItemKey
|
|
100
|
+
getItemKey?: (options: RecursiveItemKeyOptions<Item>) => string;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
/**
|
|
@@ -58,7 +58,7 @@ export interface AlphaNumericSortOptions<T> {
|
|
|
58
58
|
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator/Collator
|
|
59
59
|
* @defaultValue `new Intl.Collator("en-US", { numeric: true, caseFirst: "upper" }).compare`
|
|
60
60
|
*/
|
|
61
|
-
compare
|
|
61
|
+
compare?: (a: string, b: string) => number;
|
|
62
62
|
|
|
63
63
|
/**
|
|
64
64
|
* Setting this to `true` will return the list in descending order instead of
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type AnyFunction, type DebouncedFunction } from "../types.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @since 6.0.0
|
|
5
|
+
*/
|
|
6
|
+
export function debounce<F extends AnyFunction>(
|
|
7
|
+
fn: F,
|
|
8
|
+
duration: number
|
|
9
|
+
): DebouncedFunction<F> {
|
|
10
|
+
let timeout: NodeJS.Timeout | undefined;
|
|
11
|
+
const debounced: DebouncedFunction<F> = (...args) => {
|
|
12
|
+
clearTimeout(timeout);
|
|
13
|
+
timeout = setTimeout(() => {
|
|
14
|
+
fn(...args);
|
|
15
|
+
}, duration);
|
|
16
|
+
};
|
|
17
|
+
debounced.cancel = () => {
|
|
18
|
+
clearTimeout(timeout);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
return debounced;
|
|
22
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type AnyFunction, type ThrottledFunction } from "../types.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @since 6.0.0
|
|
5
|
+
*/
|
|
6
|
+
export function throttle<F extends AnyFunction>(
|
|
7
|
+
fn: F,
|
|
8
|
+
wait: number
|
|
9
|
+
): ThrottledFunction<F> {
|
|
10
|
+
let args: Parameters<F>;
|
|
11
|
+
let result: ReturnType<F>;
|
|
12
|
+
let timeout: NodeJS.Timeout | undefined;
|
|
13
|
+
let lastCalledTime = 0;
|
|
14
|
+
|
|
15
|
+
const throttled: ThrottledFunction<F> = (...nextArgs) => {
|
|
16
|
+
args = nextArgs;
|
|
17
|
+
|
|
18
|
+
const now = Date.now();
|
|
19
|
+
const remaining = wait - (now - lastCalledTime);
|
|
20
|
+
if (remaining <= 0 || remaining > wait) {
|
|
21
|
+
lastCalledTime = now;
|
|
22
|
+
result = fn(...args);
|
|
23
|
+
} else if (!timeout) {
|
|
24
|
+
timeout = setTimeout(() => {
|
|
25
|
+
lastCalledTime = Date.now();
|
|
26
|
+
timeout = undefined;
|
|
27
|
+
result = fn(...args);
|
|
28
|
+
}, remaining);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return result;
|
|
32
|
+
};
|
|
33
|
+
throttled.cancel = () => {
|
|
34
|
+
clearTimeout(timeout);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
return throttled;
|
|
38
|
+
}
|