@react-md/core 6.5.0 → 6.5.2
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/_utils.scss +5 -1
- package/dist/autocomplete/AutocompleteChip.js +2 -2
- package/dist/autocomplete/AutocompleteChip.js.map +1 -1
- package/dist/autocomplete/AutocompleteListboxChildren.js +1 -1
- package/dist/autocomplete/AutocompleteListboxChildren.js.map +1 -1
- package/dist/autocomplete/useAutocomplete.js +4 -4
- package/dist/autocomplete/useAutocomplete.js.map +1 -1
- package/dist/autocomplete/utils.js +3 -3
- package/dist/autocomplete/utils.js.map +1 -1
- package/dist/box/styles.js +2 -2
- package/dist/box/styles.js.map +1 -1
- package/dist/button/AsyncButton.js +1 -1
- package/dist/button/AsyncButton.js.map +1 -1
- package/dist/chip/Chip.js +1 -1
- package/dist/chip/Chip.js.map +1 -1
- package/dist/cssUtils.d.ts +11 -6
- package/dist/cssUtils.js.map +1 -1
- package/dist/datetime/useTimeField.js +1 -1
- package/dist/datetime/useTimeField.js.map +1 -1
- package/dist/delegateEvent.js +9 -9
- package/dist/delegateEvent.js.map +1 -1
- package/dist/draggable/useDraggable.js +4 -4
- package/dist/draggable/useDraggable.js.map +1 -1
- package/dist/draggable/utils.js +1 -1
- package/dist/draggable/utils.js.map +1 -1
- package/dist/expansion-panel/ExpansionPanel.js +1 -1
- package/dist/expansion-panel/ExpansionPanel.js.map +1 -1
- package/dist/expansion-panel/useExpansionPanels.js +1 -1
- package/dist/expansion-panel/useExpansionPanels.js.map +1 -1
- package/dist/files/FileInput.js +1 -1
- package/dist/files/FileInput.js.map +1 -1
- package/dist/files/createAcceptFromExtensions.d.ts +5 -0
- package/dist/files/createAcceptFromExtensions.js +15 -0
- package/dist/files/createAcceptFromExtensions.js.map +1 -0
- package/dist/files/useFileUpload.js +45 -41
- package/dist/files/useFileUpload.js.map +1 -1
- package/dist/files/utils.js +14 -10
- package/dist/files/utils.js.map +1 -1
- package/dist/files/validation.js +7 -8
- package/dist/files/validation.js.map +1 -1
- package/dist/focus/useFocusContainer.js +1 -1
- package/dist/focus/useFocusContainer.js.map +1 -1
- package/dist/focus/utils.js +12 -7
- package/dist/focus/utils.js.map +1 -1
- package/dist/form/InputToggleIcon.js +5 -1
- package/dist/form/InputToggleIcon.js.map +1 -1
- package/dist/form/NativeSelect.js +1 -1
- package/dist/form/NativeSelect.js.map +1 -1
- package/dist/form/Select.js +5 -5
- package/dist/form/Select.js.map +1 -1
- package/dist/form/formConfig.js +1 -1
- package/dist/form/formConfig.js.map +1 -1
- package/dist/form/inputToggleStyles.js +7 -1
- package/dist/form/inputToggleStyles.js.map +1 -1
- package/dist/form/selectUtils.js +2 -2
- package/dist/form/selectUtils.js.map +1 -1
- package/dist/form/useCombobox.js +1 -0
- package/dist/form/useCombobox.js.map +1 -1
- package/dist/form/useFormReset.js +2 -2
- package/dist/form/useFormReset.js.map +1 -1
- package/dist/form/useNumberField.js +1 -1
- package/dist/form/useNumberField.js.map +1 -1
- package/dist/form/useResizingTextArea.js +4 -4
- package/dist/form/useResizingTextArea.js.map +1 -1
- package/dist/form/useSelectCombobox.js +1 -1
- package/dist/form/useSelectCombobox.js.map +1 -1
- package/dist/form/validation.js +1 -1
- package/dist/form/validation.js.map +1 -1
- package/dist/hoverMode/useHoverMode.js +8 -8
- package/dist/hoverMode/useHoverMode.js.map +1 -1
- package/dist/hoverMode/useHoverModeProvider.js +3 -3
- package/dist/hoverMode/useHoverModeProvider.js.map +1 -1
- package/dist/icon/config.js +3 -3
- package/dist/icon/config.js.map +1 -1
- package/dist/icon/materialConfig.js +1 -1
- package/dist/icon/materialConfig.js.map +1 -1
- package/dist/interaction/UserInteractionModeProvider.js +11 -10
- package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
- package/dist/interaction/utils.js +7 -3
- package/dist/interaction/utils.js.map +1 -1
- package/dist/layout/useExpandableLayout.js +3 -4
- package/dist/layout/useExpandableLayout.js.map +1 -1
- package/dist/layout/useMainTabIndex.js +1 -1
- package/dist/layout/useMainTabIndex.js.map +1 -1
- package/dist/list/ListItem.js +1 -1
- package/dist/list/ListItem.js.map +1 -1
- package/dist/media-queries/AppSizeProvider.js +1 -1
- package/dist/media-queries/AppSizeProvider.js.map +1 -1
- package/dist/media-queries/config.js +2 -2
- package/dist/media-queries/config.js.map +1 -1
- package/dist/media-queries/useMediaQuery.js +3 -3
- package/dist/media-queries/useMediaQuery.js.map +1 -1
- package/dist/menu/Menu.js +4 -4
- package/dist/menu/Menu.js.map +1 -1
- package/dist/menu/MenuItemButton.js +1 -1
- package/dist/menu/MenuItemButton.js.map +1 -1
- package/dist/menu/MenuItemFileInput.js +1 -1
- package/dist/menu/MenuItemFileInput.js.map +1 -1
- package/dist/menu/MenuWidget.js +2 -2
- package/dist/menu/MenuWidget.js.map +1 -1
- package/dist/movement/findMatchIndex.js +2 -2
- package/dist/movement/findMatchIndex.js.map +1 -1
- package/dist/movement/useKeyboardMovementProvider.js +2 -2
- package/dist/movement/useKeyboardMovementProvider.js.map +1 -1
- package/dist/movement/utils.js +12 -10
- package/dist/movement/utils.js.map +1 -1
- package/dist/navigation/getTableOfContentsHeadings.js +4 -3
- package/dist/navigation/getTableOfContentsHeadings.js.map +1 -1
- package/dist/navigation/useActiveHeadingId.js +9 -9
- package/dist/navigation/useActiveHeadingId.js.map +1 -1
- package/dist/navigation/useTableOfContentsHeadings.js +1 -1
- package/dist/navigation/useTableOfContentsHeadings.js.map +1 -1
- package/dist/navigation/utils.js +6 -5
- package/dist/navigation/utils.js.map +1 -1
- package/dist/portal/PortalContainerProvider.js +5 -3
- package/dist/portal/PortalContainerProvider.js.map +1 -1
- package/dist/positioning/getFixedPosition.js +2 -4
- package/dist/positioning/getFixedPosition.js.map +1 -1
- package/dist/positioning/useFixedPositioning.js +2 -2
- package/dist/positioning/useFixedPositioning.js.map +1 -1
- package/dist/positioning/utils.js +3 -3
- package/dist/positioning/utils.js.map +1 -1
- package/dist/scroll/getScrollbarWidth.js +4 -4
- package/dist/scroll/getScrollbarWidth.js.map +1 -1
- package/dist/searching/fuzzy.js +3 -2
- package/dist/searching/fuzzy.js.map +1 -1
- package/dist/searching/toSearchQuery.js +1 -1
- package/dist/searching/toSearchQuery.js.map +1 -1
- package/dist/searching/utils.js +1 -1
- package/dist/searching/utils.js.map +1 -1
- package/dist/snackbar/Toast.js +1 -1
- package/dist/snackbar/Toast.js.map +1 -1
- package/dist/snackbar/ToastContent.js +2 -2
- package/dist/snackbar/ToastContent.js.map +1 -1
- package/dist/snackbar/ToastManager.d.ts +1 -1
- package/dist/snackbar/ToastManager.js +11 -11
- package/dist/snackbar/ToastManager.js.map +1 -1
- package/dist/spinbutton/useSpinButton.js +1 -1
- package/dist/spinbutton/useSpinButton.js.map +1 -1
- package/dist/spinbutton/utils/deselectNode.js +1 -1
- package/dist/spinbutton/utils/deselectNode.js.map +1 -1
- package/dist/spinbutton/utils/resolveInputEvent.js +1 -1
- package/dist/spinbutton/utils/resolveInputEvent.js.map +1 -1
- package/dist/spinbutton/utils/selectNode.js +1 -1
- package/dist/spinbutton/utils/selectNode.js.map +1 -1
- package/dist/storage/useStorage.js +8 -3
- package/dist/storage/useStorage.js.map +1 -1
- package/dist/table/useStickyTableSection.js +1 -1
- package/dist/table/useStickyTableSection.js.map +1 -1
- package/dist/tabs/TabList.js +2 -2
- package/dist/tabs/TabList.js.map +1 -1
- package/dist/tabs/useMaxTabPanelHeight.js +4 -3
- package/dist/tabs/useMaxTabPanelHeight.js.map +1 -1
- package/dist/tabs/useTabList.js +1 -1
- package/dist/tabs/useTabList.js.map +1 -1
- package/dist/test-utils/jest-globals/match-media.d.ts +1 -1
- package/dist/test-utils/jest-globals/match-media.js +1 -1
- package/dist/test-utils/jest-globals/match-media.js.map +1 -1
- package/dist/test-utils/jest-globals/timers.js +1 -1
- package/dist/test-utils/jest-globals/timers.js.map +1 -1
- package/dist/test-utils/jest-globals/uploadMenuItemFileInput.js +1 -1
- package/dist/test-utils/jest-globals/uploadMenuItemFileInput.js.map +1 -1
- package/dist/test-utils/mocks/ResizeObserver.js +2 -2
- package/dist/test-utils/mocks/ResizeObserver.js.map +1 -1
- package/dist/test-utils/polyfills/IntersectionObserver.js +2 -2
- package/dist/test-utils/polyfills/IntersectionObserver.js.map +1 -1
- package/dist/test-utils/polyfills/ResizeObserver.js +2 -2
- package/dist/test-utils/polyfills/ResizeObserver.js.map +1 -1
- package/dist/test-utils/polyfills/TextDecoder.js +2 -2
- package/dist/test-utils/polyfills/TextDecoder.js.map +1 -1
- package/dist/test-utils/polyfills/TextEncoder.js +2 -2
- package/dist/test-utils/polyfills/TextEncoder.js.map +1 -1
- package/dist/test-utils/polyfills/matchMedia.js +2 -2
- package/dist/test-utils/polyfills/matchMedia.js.map +1 -1
- package/dist/test-utils/polyfills/offsetParent.js +2 -2
- package/dist/test-utils/polyfills/offsetParent.js.map +1 -1
- package/dist/test-utils/polyfills/scrollIntoView.js +1 -1
- package/dist/test-utils/polyfills/scrollIntoView.js.map +1 -1
- package/dist/test-utils/queries/select.js +2 -2
- package/dist/test-utils/queries/select.js.map +1 -1
- package/dist/test-utils/queries/slider.js +1 -1
- package/dist/test-utils/queries/slider.js.map +1 -1
- package/dist/test-utils/utils/createFileList.js +2 -0
- package/dist/test-utils/utils/createFileList.js.map +1 -1
- package/dist/test-utils/utils/createMatchMediaSpy.d.ts +1 -1
- package/dist/test-utils/utils/createMatchMediaSpy.js +3 -3
- package/dist/test-utils/utils/createMatchMediaSpy.js.map +1 -1
- package/dist/test-utils/vitest/match-media.d.ts +1 -1
- package/dist/test-utils/vitest/match-media.js +1 -1
- package/dist/test-utils/vitest/match-media.js.map +1 -1
- package/dist/test-utils/vitest/timers.js +1 -1
- package/dist/test-utils/vitest/timers.js.map +1 -1
- package/dist/test-utils/vitest/uploadMenuItemFileInput.js +1 -1
- package/dist/test-utils/vitest/uploadMenuItemFileInput.js.map +1 -1
- package/dist/theme/ThemeProvider.js +2 -2
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/getDerivedTheme.js +1 -1
- package/dist/theme/getDerivedTheme.js.map +1 -1
- package/dist/theme/useCSSVariables.js +5 -5
- package/dist/theme/useCSSVariables.js.map +1 -1
- package/dist/theme/useColorSchemeMetaTag.js +2 -2
- package/dist/theme/useColorSchemeMetaTag.js.map +1 -1
- package/dist/theme/useInlineCSSVariables.js +4 -3
- package/dist/theme/useInlineCSSVariables.js.map +1 -1
- package/dist/theme/utils.js +8 -8
- package/dist/theme/utils.js.map +1 -1
- package/dist/tooltip/useTooltip.js +7 -7
- package/dist/tooltip/useTooltip.js.map +1 -1
- package/dist/tooltip/useTooltipPosition.js +1 -1
- package/dist/tooltip/useTooltipPosition.js.map +1 -1
- package/dist/transition/useCarousel.js +2 -2
- package/dist/transition/useCarousel.js.map +1 -1
- package/dist/transition/useCollapseTransition.js +1 -1
- package/dist/transition/useCollapseTransition.js.map +1 -1
- package/dist/transition/useSkeletonPlaceholder.js +4 -4
- package/dist/transition/useSkeletonPlaceholder.js.map +1 -1
- package/dist/transition/useTransition.js +2 -2
- package/dist/transition/useTransition.js.map +1 -1
- package/dist/transition/utils.js +5 -5
- package/dist/transition/utils.js.map +1 -1
- package/dist/tree/TreeItem.js +1 -1
- package/dist/tree/TreeItem.js.map +1 -1
- package/dist/tree/useTreeItems.js +7 -5
- package/dist/tree/useTreeItems.js.map +1 -1
- package/dist/tree/useTreeMovement.js +1 -1
- package/dist/tree/useTreeMovement.js.map +1 -1
- package/dist/tree/utils.js +6 -9
- package/dist/tree/utils.js.map +1 -1
- package/dist/typography/HighlightText.js +2 -1
- package/dist/typography/HighlightText.js.map +1 -1
- package/dist/typography/SrOnly.js +7 -1
- package/dist/typography/SrOnly.js.map +1 -1
- package/dist/useDebouncedFunction.js +4 -4
- package/dist/useDebouncedFunction.js.map +1 -1
- package/dist/useDropzone.js +9 -9
- package/dist/useDropzone.js.map +1 -1
- package/dist/useEnsuredState.js +5 -5
- package/dist/useEnsuredState.js.map +1 -1
- package/dist/useIntersectionObserver.js +3 -3
- package/dist/useIntersectionObserver.js.map +1 -1
- package/dist/useIsomorphicLayoutEffect.js +1 -1
- package/dist/useIsomorphicLayoutEffect.js.map +1 -1
- package/dist/useOrientation.js +1 -1
- package/dist/useOrientation.js.map +1 -1
- package/dist/useReadonlySet.js +1 -1
- package/dist/useReadonlySet.js.map +1 -1
- package/dist/useResizeListener.js +2 -2
- package/dist/useResizeListener.js.map +1 -1
- package/dist/useResizeObserver.js +3 -4
- package/dist/useResizeObserver.js.map +1 -1
- package/dist/useThrottledFunction.js +3 -3
- package/dist/useThrottledFunction.js.map +1 -1
- package/dist/useWindowSize.js +1 -1
- package/dist/useWindowSize.js.map +1 -1
- package/dist/utils/alphaNumericSort.js +3 -1
- package/dist/utils/alphaNumericSort.js.map +1 -1
- package/dist/utils/bem.js +9 -12
- package/dist/utils/bem.js.map +1 -1
- package/dist/utils/getNumberOfDigits.js +1 -0
- package/dist/utils/getNumberOfDigits.js.map +1 -1
- package/dist/utils/getRangeDefaultValue.js +1 -1
- package/dist/utils/getRangeDefaultValue.js.map +1 -1
- package/dist/utils/nearest.js +2 -2
- package/dist/utils/nearest.js.map +1 -1
- package/dist/utils/parseCssLengthUnit.js +3 -3
- package/dist/utils/parseCssLengthUnit.js.map +1 -1
- package/dist/utils/trigonometry.js +1 -1
- package/dist/utils/trigonometry.js.map +1 -1
- package/package.json +3 -1
- package/src/autocomplete/AutocompleteChip.tsx +2 -2
- package/src/autocomplete/AutocompleteListboxChildren.tsx +1 -1
- package/src/autocomplete/useAutocomplete.ts +4 -4
- package/src/autocomplete/utils.ts +3 -3
- package/src/box/styles.ts +2 -2
- package/src/button/AsyncButton.tsx +1 -3
- package/src/chip/Chip.tsx +1 -2
- package/src/cssUtils.ts +12 -6
- package/src/datetime/useTimeField.ts +1 -1
- package/src/delegateEvent.ts +9 -9
- package/src/draggable/useDraggable.ts +4 -4
- package/src/draggable/utils.ts +1 -1
- package/src/expansion-panel/ExpansionPanel.tsx +1 -1
- package/src/expansion-panel/useExpansionPanels.ts +1 -1
- package/src/files/FileInput.tsx +1 -1
- package/src/files/createAcceptFromExtensions.ts +18 -0
- package/src/files/useFileUpload.ts +36 -37
- package/src/files/utils.ts +15 -11
- package/src/files/validation.ts +7 -9
- package/src/focus/useFocusContainer.ts +1 -1
- package/src/focus/utils.ts +11 -6
- package/src/form/InputToggleIcon.tsx +5 -5
- package/src/form/NativeSelect.tsx +1 -1
- package/src/form/Select.tsx +5 -5
- package/src/form/formConfig.ts +1 -1
- package/src/form/inputToggleStyles.ts +9 -4
- package/src/form/selectUtils.ts +2 -2
- package/src/form/useCombobox.ts +1 -0
- package/src/form/useFormReset.ts +2 -2
- package/src/form/useNumberField.ts +1 -1
- package/src/form/useResizingTextArea.ts +5 -5
- package/src/form/useSelectCombobox.ts +1 -4
- package/src/form/validation.ts +1 -1
- package/src/hoverMode/useHoverMode.ts +9 -9
- package/src/hoverMode/useHoverModeProvider.ts +4 -4
- package/src/icon/config.tsx +3 -3
- package/src/icon/materialConfig.ts +1 -1
- package/src/interaction/UserInteractionModeProvider.tsx +11 -10
- package/src/interaction/utils.ts +3 -3
- package/src/layout/useExpandableLayout.ts +3 -4
- package/src/layout/useMainTabIndex.ts +1 -1
- package/src/list/ListItem.tsx +1 -1
- package/src/media-queries/AppSizeProvider.tsx +1 -1
- package/src/media-queries/config.ts +2 -2
- package/src/media-queries/useMediaQuery.ts +3 -3
- package/src/menu/Menu.tsx +4 -4
- package/src/menu/MenuItemButton.tsx +1 -1
- package/src/menu/MenuItemFileInput.tsx +1 -1
- package/src/menu/MenuWidget.tsx +6 -4
- package/src/movement/findMatchIndex.ts +2 -2
- package/src/movement/useKeyboardMovementProvider.ts +2 -2
- package/src/movement/utils.ts +15 -14
- package/src/navigation/getTableOfContentsHeadings.ts +4 -3
- package/src/navigation/useActiveHeadingId.ts +8 -8
- package/src/navigation/useTableOfContentsHeadings.ts +1 -1
- package/src/navigation/utils.ts +6 -5
- package/src/portal/PortalContainerProvider.tsx +5 -3
- package/src/positioning/getFixedPosition.ts +9 -6
- package/src/positioning/useFixedPositioning.ts +2 -2
- package/src/positioning/utils.ts +3 -3
- package/src/scroll/getScrollbarWidth.ts +4 -4
- package/src/searching/fuzzy.ts +7 -3
- package/src/searching/toSearchQuery.ts +1 -1
- package/src/searching/utils.ts +1 -1
- package/src/snackbar/Toast.tsx +1 -1
- package/src/snackbar/ToastContent.tsx +2 -2
- package/src/snackbar/ToastManager.ts +11 -12
- package/src/spinbutton/useSpinButton.ts +1 -1
- package/src/spinbutton/utils/deselectNode.ts +1 -1
- package/src/spinbutton/utils/resolveInputEvent.ts +1 -1
- package/src/spinbutton/utils/selectNode.ts +1 -1
- package/src/storage/useStorage.ts +7 -2
- package/src/table/useStickyTableSection.tsx +1 -1
- package/src/tabs/TabList.tsx +2 -2
- package/src/tabs/useMaxTabPanelHeight.ts +6 -3
- package/src/tabs/useTabList.ts +2 -2
- package/src/test-utils/jest-globals/match-media.ts +5 -2
- package/src/test-utils/jest-globals/timers.ts +1 -1
- package/src/test-utils/jest-globals/uploadMenuItemFileInput.ts +1 -1
- package/src/test-utils/mocks/ResizeObserver.ts +2 -2
- package/src/test-utils/polyfills/IntersectionObserver.ts +2 -2
- package/src/test-utils/polyfills/ResizeObserver.ts +2 -2
- package/src/test-utils/polyfills/TextDecoder.ts +2 -2
- package/src/test-utils/polyfills/TextEncoder.ts +2 -2
- package/src/test-utils/polyfills/matchMedia.ts +5 -2
- package/src/test-utils/polyfills/offsetParent.ts +2 -2
- package/src/test-utils/polyfills/scrollIntoView.ts +1 -1
- package/src/test-utils/queries/select.ts +2 -2
- package/src/test-utils/queries/slider.ts +1 -1
- package/src/test-utils/utils/createFileList.ts +2 -0
- package/src/test-utils/utils/createMatchMediaSpy.ts +4 -4
- package/src/test-utils/vitest/match-media.ts +2 -2
- package/src/test-utils/vitest/timers.ts +1 -1
- package/src/test-utils/vitest/uploadMenuItemFileInput.ts +1 -1
- package/src/theme/ThemeProvider.tsx +2 -2
- package/src/theme/getDerivedTheme.ts +1 -1
- package/src/theme/useCSSVariables.ts +5 -5
- package/src/theme/useColorSchemeMetaTag.ts +2 -2
- package/src/theme/useInlineCSSVariables.ts +6 -7
- package/src/theme/utils.ts +8 -8
- package/src/tooltip/useTooltip.ts +7 -7
- package/src/tooltip/useTooltipPosition.ts +1 -1
- package/src/transition/useCarousel.ts +2 -2
- package/src/transition/useCollapseTransition.ts +1 -1
- package/src/transition/useSkeletonPlaceholder.ts +4 -4
- package/src/transition/useTransition.ts +2 -2
- package/src/transition/utils.ts +5 -5
- package/src/tree/TreeItem.tsx +1 -1
- package/src/tree/useTreeItems.ts +5 -5
- package/src/tree/useTreeMovement.ts +1 -1
- package/src/tree/utils.ts +9 -9
- package/src/typography/HighlightText.tsx +4 -3
- package/src/typography/SrOnly.tsx +9 -2
- package/src/useDebouncedFunction.ts +5 -5
- package/src/useDropzone.ts +10 -10
- package/src/useEnsuredState.ts +5 -5
- package/src/useIntersectionObserver.ts +3 -3
- package/src/useIsomorphicLayoutEffect.ts +3 -3
- package/src/useOrientation.ts +1 -1
- package/src/useReadonlySet.ts +3 -1
- package/src/useResizeListener.ts +2 -2
- package/src/useResizeObserver.ts +3 -4
- package/src/useThrottledFunction.ts +4 -4
- package/src/useWindowSize.ts +1 -1
- package/src/utils/alphaNumericSort.ts +1 -1
- package/src/utils/bem.ts +15 -16
- package/src/utils/getNumberOfDigits.ts +1 -0
- package/src/utils/getRangeDefaultValue.ts +1 -1
- package/src/utils/nearest.ts +5 -2
- package/src/utils/parseCssLengthUnit.ts +5 -4
- package/src/utils/trigonometry.ts +1 -1
- package/dist/form/defaultGetSelectedOptionChildren.d.ts +0 -1
- package/dist/form/getSelectedOptionChildren.d.ts +0 -1
|
@@ -86,6 +86,7 @@ export interface UserInteractionModeProviderProps {
|
|
|
86
86
|
export function UserInteractionModeProvider(
|
|
87
87
|
props: UserInteractionModeProviderProps
|
|
88
88
|
): ReactElement {
|
|
89
|
+
// eslint-disable-next-line react/prop-types
|
|
89
90
|
const { children, now = DATE_NOW } =
|
|
90
91
|
props as UserInteractionModeProviderProps & {
|
|
91
92
|
now?: () => number;
|
|
@@ -172,26 +173,26 @@ export function UserInteractionModeProvider(
|
|
|
172
173
|
|
|
173
174
|
const className = `rmd-${mode}-mode`;
|
|
174
175
|
document.body.classList.add(className);
|
|
175
|
-
|
|
176
|
+
globalThis.addEventListener("touchstart", handleTouchStart, true);
|
|
176
177
|
if (mode === "mouse") {
|
|
177
|
-
|
|
178
|
+
globalThis.addEventListener("keydown", enableKeyboardMode, true);
|
|
178
179
|
} else if (mode === "keyboard") {
|
|
179
|
-
|
|
180
|
+
globalThis.addEventListener("mousedown", enableMouseMode, true);
|
|
180
181
|
} else {
|
|
181
|
-
|
|
182
|
-
|
|
182
|
+
globalThis.addEventListener("mousemove", handleMouseMove, true);
|
|
183
|
+
globalThis.addEventListener("contextmenu", handleContextMenu, true);
|
|
183
184
|
}
|
|
184
185
|
|
|
185
186
|
return () => {
|
|
186
187
|
document.body.classList.remove(className);
|
|
187
|
-
|
|
188
|
+
globalThis.removeEventListener("touchstart", handleTouchStart, true);
|
|
188
189
|
if (mode === "mouse") {
|
|
189
|
-
|
|
190
|
+
globalThis.removeEventListener("keydown", enableKeyboardMode, true);
|
|
190
191
|
} else if (mode === "keyboard") {
|
|
191
|
-
|
|
192
|
+
globalThis.removeEventListener("mousedown", enableMouseMode, true);
|
|
192
193
|
} else {
|
|
193
|
-
|
|
194
|
-
|
|
194
|
+
globalThis.removeEventListener("mousemove", handleMouseMove, true);
|
|
195
|
+
globalThis.removeEventListener("contextmenu", handleContextMenu, true);
|
|
195
196
|
}
|
|
196
197
|
};
|
|
197
198
|
}, [mode, now]);
|
package/src/interaction/utils.ts
CHANGED
|
@@ -92,7 +92,7 @@ export function releaseRipple(
|
|
|
92
92
|
return state;
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
const ripples = state.ripples
|
|
95
|
+
const ripples = [...state.ripples];
|
|
96
96
|
const ripple = ripples[i];
|
|
97
97
|
ripples[i] = {
|
|
98
98
|
...ripple,
|
|
@@ -115,12 +115,12 @@ export function updateRipplesState(
|
|
|
115
115
|
): ElementInteractionState {
|
|
116
116
|
const { type, ripple, state, holding } = options;
|
|
117
117
|
|
|
118
|
-
const rippleIndex = state.ripples.
|
|
118
|
+
const rippleIndex = state.ripples.indexOf(ripple);
|
|
119
119
|
if (rippleIndex === -1) {
|
|
120
120
|
return state;
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
const ripples = state.ripples
|
|
123
|
+
const ripples = [...state.ripples];
|
|
124
124
|
if (type === "exited") {
|
|
125
125
|
ripples.splice(rippleIndex, 1);
|
|
126
126
|
} else {
|
|
@@ -283,15 +283,14 @@ export function useExpandableLayout(
|
|
|
283
283
|
query = temporaryUntil;
|
|
284
284
|
}
|
|
285
285
|
|
|
286
|
-
const timeout =
|
|
286
|
+
const timeout = globalThis.setTimeout(() => {
|
|
287
287
|
let found = false;
|
|
288
288
|
for (let i = 0; i < document.styleSheets.length; i++) {
|
|
289
289
|
const sheet = document.styleSheets[i];
|
|
290
290
|
|
|
291
291
|
try {
|
|
292
292
|
const rules = sheet.cssRules;
|
|
293
|
-
for (
|
|
294
|
-
const rule = rules[j];
|
|
293
|
+
for (const rule of rules) {
|
|
295
294
|
if (
|
|
296
295
|
rule.cssText.includes(".rmd-layout") &&
|
|
297
296
|
rule.cssText.includes(`@media ${query}`)
|
|
@@ -318,7 +317,7 @@ export function useExpandableLayout(
|
|
|
318
317
|
}, 3000);
|
|
319
318
|
|
|
320
319
|
return () => {
|
|
321
|
-
|
|
320
|
+
globalThis.clearTimeout(timeout);
|
|
322
321
|
};
|
|
323
322
|
}, [temporaryUntil]);
|
|
324
323
|
|
|
@@ -10,7 +10,7 @@ import { useUserInteractionMode } from "../interaction/UserInteractionModeProvid
|
|
|
10
10
|
*/
|
|
11
11
|
export function useMainTabIndex(tabIndex?: number): number | undefined {
|
|
12
12
|
const keyboard = useUserInteractionMode() === "keyboard";
|
|
13
|
-
if (keyboard &&
|
|
13
|
+
if (keyboard && tabIndex === undefined) {
|
|
14
14
|
// eslint-disable-next-line no-param-reassign
|
|
15
15
|
tabIndex = -1;
|
|
16
16
|
}
|
package/src/list/ListItem.tsx
CHANGED
|
@@ -159,7 +159,7 @@ export const ListItem = forwardRef<HTMLLIElement, ListItemProps>(
|
|
|
159
159
|
} = props;
|
|
160
160
|
|
|
161
161
|
let tabIndex = propTabIndex;
|
|
162
|
-
if (!presentational &&
|
|
162
|
+
if (!presentational && tabIndex === undefined) {
|
|
163
163
|
tabIndex = disabled ? -1 : 0;
|
|
164
164
|
}
|
|
165
165
|
|
|
@@ -137,7 +137,7 @@ export function AppSizeProvider(props: AppSizeProviderProps): ReactElement {
|
|
|
137
137
|
);
|
|
138
138
|
|
|
139
139
|
let value = appSize;
|
|
140
|
-
if (ssr ||
|
|
140
|
+
if (ssr || globalThis.window === undefined) {
|
|
141
141
|
value = {
|
|
142
142
|
__root: true,
|
|
143
143
|
...ssrSize,
|
|
@@ -28,13 +28,13 @@ export function configureMediaQueries(
|
|
|
28
28
|
queries: Readonly<Partial<MediaQueryConfig>>
|
|
29
29
|
): void {
|
|
30
30
|
if (process.env.NODE_ENV !== "production") {
|
|
31
|
-
|
|
31
|
+
for (const [name, value] of Object.entries(queries)) {
|
|
32
32
|
if (!(name in MEDIA_QUERY_CONFIG)) {
|
|
33
33
|
throw new Error(`${name} is an invalid react-md media query.`);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
MEDIA_QUERY_CONFIG[name as keyof MediaQueryConfig] = value;
|
|
37
|
-
}
|
|
37
|
+
}
|
|
38
38
|
} else {
|
|
39
39
|
Object.assign(MEDIA_QUERY_CONFIG, queries);
|
|
40
40
|
}
|
|
@@ -28,11 +28,11 @@ import { useSsr } from "../SsrProvider.js";
|
|
|
28
28
|
export function useMediaQuery(query: string, disabled = false): boolean {
|
|
29
29
|
const ssr = useSsr();
|
|
30
30
|
const [matches, setMatches] = useState(() => {
|
|
31
|
-
if (
|
|
31
|
+
if (globalThis.window === undefined || disabled || ssr) {
|
|
32
32
|
return false;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
return
|
|
35
|
+
return globalThis.matchMedia(query).matches;
|
|
36
36
|
});
|
|
37
37
|
|
|
38
38
|
useEffect(() => {
|
|
@@ -40,7 +40,7 @@ export function useMediaQuery(query: string, disabled = false): boolean {
|
|
|
40
40
|
return;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
const result =
|
|
43
|
+
const result = globalThis.matchMedia(query);
|
|
44
44
|
setMatches(result.matches);
|
|
45
45
|
|
|
46
46
|
const updater = ({ matches }: MediaQueryListEvent): void => {
|
package/src/menu/Menu.tsx
CHANGED
|
@@ -543,13 +543,13 @@ export const Menu = forwardRef<HTMLDivElement, LabelRequiredForA11y<MenuProps>>(
|
|
|
543
543
|
|
|
544
544
|
// wait an animation frame so the initial click event that caused the menu
|
|
545
545
|
// to become visible does not immediately close the menu
|
|
546
|
-
const frame =
|
|
547
|
-
|
|
546
|
+
const frame = globalThis.requestAnimationFrame(() => {
|
|
547
|
+
globalThis.addEventListener("click", callback);
|
|
548
548
|
});
|
|
549
549
|
|
|
550
550
|
return () => {
|
|
551
|
-
|
|
552
|
-
|
|
551
|
+
globalThis.cancelAnimationFrame(frame);
|
|
552
|
+
globalThis.removeEventListener("click", callback);
|
|
553
553
|
};
|
|
554
554
|
}, [disableHoverMode, role, visible]);
|
|
555
555
|
useIsomorphicLayoutEffect(() => {
|
|
@@ -46,7 +46,7 @@ export const MenuItemButton = forwardRef<HTMLLIElement, MenuItemButtonProps>(
|
|
|
46
46
|
onMouseLeave = noop,
|
|
47
47
|
rightAddon: propRightAddon,
|
|
48
48
|
iconRotatorProps,
|
|
49
|
-
disableDropdownIcon =
|
|
49
|
+
disableDropdownIcon = propRightAddon !== undefined,
|
|
50
50
|
...remaining
|
|
51
51
|
} = props;
|
|
52
52
|
const { disabled } = props;
|
|
@@ -114,7 +114,7 @@ export const MenuItemFileInput = forwardRef<
|
|
|
114
114
|
|
|
115
115
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
116
116
|
// @ts-expect-error
|
|
117
|
-
input.
|
|
117
|
+
input.addEventListener("change", onChange);
|
|
118
118
|
input.click();
|
|
119
119
|
input = null;
|
|
120
120
|
}}
|
package/src/menu/MenuWidget.tsx
CHANGED
|
@@ -92,7 +92,7 @@ export const MenuWidget = forwardRef<HTMLDivElement, MenuWidgetProps>(
|
|
|
92
92
|
return;
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
globalThis.cancelAnimationFrame(sheetBlurredFame.current);
|
|
96
96
|
setSheetMenuFocused(true);
|
|
97
97
|
},
|
|
98
98
|
onKeyDown,
|
|
@@ -127,9 +127,11 @@ export const MenuWidget = forwardRef<HTMLDivElement, MenuWidgetProps>(
|
|
|
127
127
|
return;
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
sheetBlurredFame.current =
|
|
131
|
-
|
|
132
|
-
|
|
130
|
+
sheetBlurredFame.current = globalThis.requestAnimationFrame(
|
|
131
|
+
() => {
|
|
132
|
+
setSheetMenuFocused(false);
|
|
133
|
+
}
|
|
134
|
+
);
|
|
133
135
|
}}
|
|
134
136
|
>
|
|
135
137
|
<List
|
|
@@ -36,7 +36,7 @@ export interface MatchInRangeOptions extends BaseOptions {
|
|
|
36
36
|
*/
|
|
37
37
|
export function findMatchInRange(options: MatchInRangeOptions): number {
|
|
38
38
|
const { values, startIndex, endIndex } = options;
|
|
39
|
-
if (
|
|
39
|
+
if (values.length === 0) {
|
|
40
40
|
return -1;
|
|
41
41
|
}
|
|
42
42
|
|
|
@@ -76,7 +76,7 @@ export interface MatchIndexOptions extends BaseOptions {
|
|
|
76
76
|
export function findMatchIndex(options: MatchIndexOptions): number {
|
|
77
77
|
const { value, values, startIndex, isSelfMatchable = true } = options;
|
|
78
78
|
// this was added to support comboboxes when there are no options available
|
|
79
|
-
if (
|
|
79
|
+
if (values.length === 0) {
|
|
80
80
|
return -1;
|
|
81
81
|
}
|
|
82
82
|
|
|
@@ -490,7 +490,7 @@ export function useKeyboardMovementProvider<E extends HTMLElement>(
|
|
|
490
490
|
const focusedIndex = focusables.findIndex(
|
|
491
491
|
(element) => element === target || element.contains(target)
|
|
492
492
|
);
|
|
493
|
-
if (focusedIndex === -1 ||
|
|
493
|
+
if (focusedIndex === -1 || focusables.length === 0) {
|
|
494
494
|
return;
|
|
495
495
|
}
|
|
496
496
|
|
|
@@ -530,7 +530,7 @@ export function useKeyboardMovementProvider<E extends HTMLElement>(
|
|
|
530
530
|
event.currentTarget,
|
|
531
531
|
programmatic
|
|
532
532
|
);
|
|
533
|
-
if (
|
|
533
|
+
if (focusables.length === 0) {
|
|
534
534
|
return;
|
|
535
535
|
}
|
|
536
536
|
|
package/src/movement/utils.ts
CHANGED
|
@@ -48,7 +48,7 @@ export const getVirtualFocusDefaultIndex = (
|
|
|
48
48
|
options: VirtualFocusableIndexOptions
|
|
49
49
|
): number => {
|
|
50
50
|
const { focusables, includeDisabled, activeDescendantId } = options;
|
|
51
|
-
if (
|
|
51
|
+
if (focusables.length === 0 || (!activeDescendantId && includeDisabled)) {
|
|
52
52
|
return 0;
|
|
53
53
|
}
|
|
54
54
|
|
|
@@ -71,7 +71,7 @@ export const getFirstFocusableIndex = (
|
|
|
71
71
|
): number => {
|
|
72
72
|
const { focusables, includeDisabled } = options;
|
|
73
73
|
|
|
74
|
-
if (
|
|
74
|
+
if (focusables.length === 0) {
|
|
75
75
|
return -1;
|
|
76
76
|
}
|
|
77
77
|
|
|
@@ -99,7 +99,7 @@ export const getLastFocusableIndex = (
|
|
|
99
99
|
): number => {
|
|
100
100
|
const { focusables, includeDisabled } = options;
|
|
101
101
|
|
|
102
|
-
if (
|
|
102
|
+
if (focusables.length === 0) {
|
|
103
103
|
return -1;
|
|
104
104
|
}
|
|
105
105
|
|
|
@@ -142,7 +142,7 @@ export const getNextFocusableIndex = (
|
|
|
142
142
|
includeDisabled,
|
|
143
143
|
currentFocusIndex,
|
|
144
144
|
} = options;
|
|
145
|
-
if (
|
|
145
|
+
if (focusables.length === 0) {
|
|
146
146
|
return currentFocusIndex;
|
|
147
147
|
}
|
|
148
148
|
|
|
@@ -186,14 +186,14 @@ export function getSearchText(
|
|
|
186
186
|
}
|
|
187
187
|
|
|
188
188
|
const cloned = element.cloneNode(true) as HTMLElement;
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
189
|
+
|
|
190
|
+
const invisibleElements = cloned.querySelectorAll(
|
|
191
|
+
// Note: do not include DISPLAY_NONE_CLASS since it is presentational only
|
|
192
|
+
".rmd-icon--font,[aria-hidden=true],[hidden],[role=presentation]"
|
|
193
|
+
);
|
|
194
|
+
for (const element of invisibleElements) {
|
|
195
|
+
element.remove();
|
|
196
|
+
}
|
|
197
197
|
|
|
198
198
|
// Note: It would be good to use `cloned.innerText` (maybe?) at some point,
|
|
199
199
|
// but it returns `undefined` in jsdom. It also does cause a reflow, so maybe
|
|
@@ -232,8 +232,9 @@ export function recalculateFocusIndex(options: RecalculateOptions): number {
|
|
|
232
232
|
});
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
-
|
|
236
|
-
|
|
235
|
+
// do type-casting since the types don't matter much here
|
|
236
|
+
const activeElement = document.activeElement as HTMLElement;
|
|
237
|
+
return focusables.indexOf(activeElement);
|
|
237
238
|
}
|
|
238
239
|
|
|
239
240
|
/**
|
|
@@ -28,7 +28,7 @@ export function getTableOfContentsHeadings(
|
|
|
28
28
|
): TableOfContentsHeadings {
|
|
29
29
|
const { ssr, selector, getDepth, getHeadingText } = options;
|
|
30
30
|
|
|
31
|
-
if (ssr ||
|
|
31
|
+
if (ssr || globalThis.window === undefined) {
|
|
32
32
|
return [];
|
|
33
33
|
}
|
|
34
34
|
|
|
@@ -41,7 +41,7 @@ export function getTableOfContentsHeadings(
|
|
|
41
41
|
let previous: TableOfContentsHeadingItem = root;
|
|
42
42
|
const parents: TableOfContentsHeadingItem[] = [];
|
|
43
43
|
const headings = document.querySelectorAll(selector);
|
|
44
|
-
|
|
44
|
+
for (const heading of headings) {
|
|
45
45
|
const depth = getDepth(heading);
|
|
46
46
|
const item: TableOfContentsHeadingItem = {
|
|
47
47
|
id: heading.id,
|
|
@@ -56,6 +56,7 @@ export function getTableOfContentsHeadings(
|
|
|
56
56
|
|
|
57
57
|
parents.push(previous);
|
|
58
58
|
} else if (depth < previous.depth) {
|
|
59
|
+
// eslint-disable-next-line unicorn/prefer-at
|
|
59
60
|
while (parents[parents.length - 1].depth >= depth) {
|
|
60
61
|
parents.pop();
|
|
61
62
|
}
|
|
@@ -63,7 +64,7 @@ export function getTableOfContentsHeadings(
|
|
|
63
64
|
const i = parents.length - 1;
|
|
64
65
|
parents[i].items = [...(parents[i].items ?? []), item];
|
|
65
66
|
previous = item;
|
|
66
|
-
}
|
|
67
|
+
}
|
|
67
68
|
|
|
68
69
|
return root.items;
|
|
69
70
|
}
|
|
@@ -16,7 +16,7 @@ import { type HeadingReferenceWithChildren } from "./types.js";
|
|
|
16
16
|
* @since 6.0.0
|
|
17
17
|
*/
|
|
18
18
|
export const DEFAULT_ACTIVE_HEADING_THRESHOLD: IntersectionObserverThreshold = [
|
|
19
|
-
0
|
|
19
|
+
0, 1,
|
|
20
20
|
];
|
|
21
21
|
|
|
22
22
|
/**
|
|
@@ -33,7 +33,7 @@ export const DEFAULT_ACTIVE_HEADING_THRESHOLD: IntersectionObserverThreshold = [
|
|
|
33
33
|
* @since 6.0.0
|
|
34
34
|
*/
|
|
35
35
|
export const DEFAULT_ACTIVE_HEADING_GET_ROOT_MARGIN = (): string => {
|
|
36
|
-
const headerHeightVar =
|
|
36
|
+
const headerHeightVar = globalThis
|
|
37
37
|
.getComputedStyle(document.documentElement)
|
|
38
38
|
.getPropertyValue("--rmd-layout-header-height");
|
|
39
39
|
const headerHeight = parseCssLengthUnit({
|
|
@@ -51,7 +51,7 @@ function getHeadingElements(
|
|
|
51
51
|
items: readonly HeadingReferenceWithChildren[]
|
|
52
52
|
): readonly HTMLElement[] {
|
|
53
53
|
const headings: HTMLElement[] = [];
|
|
54
|
-
|
|
54
|
+
for (const item of items) {
|
|
55
55
|
const heading = document.getElementById(item.id);
|
|
56
56
|
if (heading) {
|
|
57
57
|
headings.push(heading);
|
|
@@ -60,7 +60,7 @@ function getHeadingElements(
|
|
|
60
60
|
if (item.items) {
|
|
61
61
|
headings.push(...getHeadingElements(item.items));
|
|
62
62
|
}
|
|
63
|
-
}
|
|
63
|
+
}
|
|
64
64
|
|
|
65
65
|
return headings;
|
|
66
66
|
}
|
|
@@ -134,9 +134,9 @@ export function useActiveHeadingId(options: ActiveHeadingIdOptions): string {
|
|
|
134
134
|
getTargets: useCallback(() => {
|
|
135
135
|
const headingElements = getHeadingElements(headings);
|
|
136
136
|
const lookup = new Map<string, boolean>();
|
|
137
|
-
|
|
137
|
+
for (const heading of headingElements) {
|
|
138
138
|
lookup.set(heading.id, false);
|
|
139
|
-
}
|
|
139
|
+
}
|
|
140
140
|
elements.current = lookup;
|
|
141
141
|
|
|
142
142
|
return headingElements;
|
|
@@ -148,9 +148,9 @@ export function useActiveHeadingId(options: ActiveHeadingIdOptions): string {
|
|
|
148
148
|
return;
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
|
|
151
|
+
for (const entry of entries) {
|
|
152
152
|
lookup.set(entry.target.id, entry.isIntersecting);
|
|
153
|
-
}
|
|
153
|
+
}
|
|
154
154
|
|
|
155
155
|
// get the first visible/intersecting item and set it
|
|
156
156
|
let foundId = [...lookup.entries()].find(
|
|
@@ -25,7 +25,7 @@ export const DEFAULT_HEADING_SELECTOR =
|
|
|
25
25
|
* @since 6.0.0
|
|
26
26
|
*/
|
|
27
27
|
export const DEFAULT_GET_HEADING_DEPTH = (element: Element): number => {
|
|
28
|
-
const depth = parseInt(element.tagName.
|
|
28
|
+
const depth = Number.parseInt(element.tagName.slice(1));
|
|
29
29
|
return Number.isNaN(depth) ? 0 : depth;
|
|
30
30
|
};
|
|
31
31
|
|
package/src/navigation/utils.ts
CHANGED
|
@@ -4,14 +4,15 @@ import { type NavigationItem } from "./types.js";
|
|
|
4
4
|
* @since 6.0.0
|
|
5
5
|
*/
|
|
6
6
|
export function getHrefFromParents(parents: readonly NavigationItem[]): string {
|
|
7
|
-
|
|
7
|
+
let result = "";
|
|
8
|
+
for (const parent of parents) {
|
|
8
9
|
if ("href" in parent && parent.href) {
|
|
9
10
|
const { href } = parent;
|
|
10
|
-
|
|
11
|
+
result += href;
|
|
11
12
|
}
|
|
13
|
+
}
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
}, "");
|
|
15
|
+
return result;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
/**
|
|
@@ -33,7 +34,7 @@ export function getNavigationGroupId(
|
|
|
33
34
|
*/
|
|
34
35
|
export function getPartsFromPathname(pathname: string): ReadonlySet<string> {
|
|
35
36
|
// remove trailing slashes just in case there aren't rewrites in place
|
|
36
|
-
const href = pathname.
|
|
37
|
+
const href = pathname.replaceAll(/\/{2,}/g, "/").replace(/\/+$/, "");
|
|
37
38
|
const parts = href.split("/");
|
|
38
39
|
const set = new Set<string>();
|
|
39
40
|
let prefix = "";
|
|
@@ -29,7 +29,7 @@ export const PORTAL_CONTAINER_ID = "rmd-portal-container";
|
|
|
29
29
|
let portalContainer: PortalContainerNode = null;
|
|
30
30
|
|
|
31
31
|
const getPortalContainer = (): PortalContainerNode =>
|
|
32
|
-
|
|
32
|
+
globalThis.window === undefined ? null : document.body;
|
|
33
33
|
|
|
34
34
|
const context = createContext<PortalContainerNode>(getPortalContainer());
|
|
35
35
|
context.displayName = "PortalContainer";
|
|
@@ -77,7 +77,7 @@ export function PortalContainerProvider(
|
|
|
77
77
|
return;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
if (
|
|
80
|
+
if (container !== undefined) {
|
|
81
81
|
setValue(container);
|
|
82
82
|
return;
|
|
83
83
|
}
|
|
@@ -87,13 +87,15 @@ export function PortalContainerProvider(
|
|
|
87
87
|
portalContainer.id = PORTAL_CONTAINER_ID;
|
|
88
88
|
}
|
|
89
89
|
if (!document.body.contains(portalContainer)) {
|
|
90
|
-
document.body.
|
|
90
|
+
document.body.append(portalContainer);
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
setValue(portalContainer);
|
|
94
94
|
|
|
95
95
|
return () => {
|
|
96
96
|
if (portalContainer && document.body.contains(portalContainer)) {
|
|
97
|
+
// can't use `portalContainer.remove()` since `DocumentFragment` does not have `.remove()`
|
|
98
|
+
// eslint-disable-next-line unicorn/prefer-dom-node-remove
|
|
97
99
|
document.body.removeChild(portalContainer);
|
|
98
100
|
}
|
|
99
101
|
};
|
|
@@ -80,12 +80,15 @@ export function getFixedPosition(options: FixedPositionOptions): FixedPosition {
|
|
|
80
80
|
let { initialY } = options;
|
|
81
81
|
const container = findSizingContainer(options.container);
|
|
82
82
|
|
|
83
|
-
if (
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
83
|
+
if (
|
|
84
|
+
process.env.NODE_ENV !== "production" &&
|
|
85
|
+
preventOverlap &&
|
|
86
|
+
anchor.y !== "above" &&
|
|
87
|
+
anchor.y !== "below"
|
|
88
|
+
) {
|
|
89
|
+
throw new Error(
|
|
90
|
+
'Unable to prevent overlap when the vertical anchor is not `"above"` or `"below"`'
|
|
91
|
+
);
|
|
89
92
|
}
|
|
90
93
|
|
|
91
94
|
if (!element) {
|
|
@@ -407,8 +407,8 @@ export function useFixedPositioning<
|
|
|
407
407
|
updateStyle();
|
|
408
408
|
};
|
|
409
409
|
|
|
410
|
-
const resizeHandler = delegateEvent("resize", window, true);
|
|
411
|
-
const scrollHandler = delegateEvent("scroll", window, true, {
|
|
410
|
+
const resizeHandler = delegateEvent("resize", globalThis.window, true);
|
|
411
|
+
const scrollHandler = delegateEvent("scroll", globalThis.window, true, {
|
|
412
412
|
passive: true,
|
|
413
413
|
});
|
|
414
414
|
resizeHandler.add(resizeCallback);
|
package/src/positioning/utils.ts
CHANGED
|
@@ -294,7 +294,7 @@ export function findSizingContainer(
|
|
|
294
294
|
}
|
|
295
295
|
}
|
|
296
296
|
|
|
297
|
-
const data = el.
|
|
297
|
+
const data = el.dataset.sizingSelector;
|
|
298
298
|
if (data) {
|
|
299
299
|
const content = el.querySelector(data) as HTMLElement;
|
|
300
300
|
if (content) {
|
|
@@ -344,10 +344,10 @@ export function getElementRect(element: HTMLElement): DOMRect {
|
|
|
344
344
|
cloned.style.transform = "none";
|
|
345
345
|
|
|
346
346
|
const parent = element.parentElement || document.body;
|
|
347
|
-
parent.
|
|
347
|
+
parent.append(cloned);
|
|
348
348
|
|
|
349
349
|
const rect = cloned.getBoundingClientRect();
|
|
350
|
-
|
|
350
|
+
cloned.remove();
|
|
351
351
|
|
|
352
352
|
return rect;
|
|
353
353
|
}
|
|
@@ -5,7 +5,7 @@ let cache: number | undefined;
|
|
|
5
5
|
*/
|
|
6
6
|
export function getScrollbarWidth(force = false): number {
|
|
7
7
|
/* istanbul ignore if */
|
|
8
|
-
if (
|
|
8
|
+
if (globalThis.window === undefined) {
|
|
9
9
|
return 0;
|
|
10
10
|
}
|
|
11
11
|
|
|
@@ -17,16 +17,16 @@ export function getScrollbarWidth(force = false): number {
|
|
|
17
17
|
const outer = document.createElement("div");
|
|
18
18
|
outer.style.visibility = "hidden";
|
|
19
19
|
outer.style.overflow = "scroll";
|
|
20
|
-
document.body.
|
|
20
|
+
document.body.append(outer);
|
|
21
21
|
|
|
22
22
|
const inner = document.createElement("div");
|
|
23
|
-
outer.
|
|
23
|
+
outer.append(inner);
|
|
24
24
|
|
|
25
25
|
// the scrollbar width can be determined by comparing the width of the parent
|
|
26
26
|
// element that has scrollbars to the child element that does not.
|
|
27
27
|
value = outer.offsetWidth - inner.offsetWidth;
|
|
28
28
|
cache = value;
|
|
29
|
-
|
|
29
|
+
outer.remove();
|
|
30
30
|
|
|
31
31
|
return value;
|
|
32
32
|
}
|
package/src/searching/fuzzy.ts
CHANGED
|
@@ -42,11 +42,15 @@ const DEFAULT_EXTRACTOR = defaultExtractor("fuzzySearch");
|
|
|
42
42
|
export function createFuzzyRegExp(query: string): RegExp {
|
|
43
43
|
return new RegExp(
|
|
44
44
|
query
|
|
45
|
+
// eslint-disable-next-line unicorn/prefer-spread
|
|
45
46
|
.split("")
|
|
46
|
-
.join(
|
|
47
|
-
.
|
|
47
|
+
.join(String.raw`\w*`)
|
|
48
|
+
.replaceAll(
|
|
49
|
+
/(\(|\||\)|\\(?!w\*)|\[|\|-|\.|\^|\+|\$|\?|^(?!w)\*)/g,
|
|
50
|
+
String.raw`\$1`
|
|
51
|
+
)
|
|
48
52
|
// Couldn't get the matching of two '*' working, so replace them here..
|
|
49
|
-
.
|
|
53
|
+
.replaceAll("**", String.raw`*\*`),
|
|
50
54
|
"i"
|
|
51
55
|
);
|
|
52
56
|
}
|
package/src/searching/utils.ts
CHANGED
|
@@ -48,7 +48,7 @@ export function search<T>(
|
|
|
48
48
|
): readonly T[] | T | undefined {
|
|
49
49
|
const { list, type, query, filter, extractor, whitespace = "keep" } = options;
|
|
50
50
|
const fallback = type === "search" ? undefined : list;
|
|
51
|
-
if (
|
|
51
|
+
if (list.length === 0) {
|
|
52
52
|
return fallback;
|
|
53
53
|
}
|
|
54
54
|
|
package/src/snackbar/Toast.tsx
CHANGED
|
@@ -190,7 +190,7 @@ export const Toast = forwardRef<HTMLDivElement, ToastProps>(
|
|
|
190
190
|
}
|
|
191
191
|
|
|
192
192
|
let closeIcon = propCloseIcon;
|
|
193
|
-
if (
|
|
193
|
+
if (closeButtonProps?.children !== undefined) {
|
|
194
194
|
closeIcon = closeButtonProps.children;
|
|
195
195
|
}
|
|
196
196
|
|