@react-md/core 6.3.4 → 6.4.0
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/CoreProviders.d.ts +1 -0
- package/dist/CoreProviders.js.map +1 -1
- package/dist/_base.scss +3 -0
- package/dist/_core.scss +1 -0
- package/dist/_utils.scss +15 -7
- package/dist/app-bar/AppBar.js.map +1 -1
- package/dist/app-bar/AppBarTitle.js.map +1 -1
- package/dist/autocomplete/AutocompleteListboxChildren.js.map +1 -1
- package/dist/autocomplete/types.js.map +1 -1
- package/dist/autocomplete/utils.js.map +1 -1
- package/dist/avatar/Avatar.js.map +1 -1
- package/dist/button/Button.js.map +1 -1
- package/dist/button/FloatingActionButton.js.map +1 -1
- package/dist/card/Card.js.map +1 -1
- package/dist/card/CardContent.js.map +1 -1
- package/dist/card/ClickableCard.js.map +1 -1
- package/dist/chip/Chip.js.map +1 -1
- package/dist/datetime/NativeDateField.js.map +1 -1
- package/dist/datetime/NativeTimeField.js.map +1 -1
- package/dist/datetime/useDateField.js.map +1 -1
- package/dist/datetime/useTimeField.js.map +1 -1
- package/dist/dialog/Dialog.js.map +1 -1
- package/dist/dialog/DialogContainer.js.map +1 -1
- package/dist/dialog/DialogContent.js.map +1 -1
- package/dist/dialog/DialogFooter.js.map +1 -1
- package/dist/divider/Divider.js.map +1 -1
- package/dist/draggable/useDraggable.js.map +1 -1
- package/dist/draggable/utils.js.map +1 -1
- package/dist/expansion-panel/ExpansionPanelHeader.js.map +1 -1
- package/dist/files/FileInput.js.map +1 -1
- package/dist/files/useFileUpload.js.map +1 -1
- package/dist/files/validation.js.map +1 -1
- package/dist/focus/useFocusContainer.js.map +1 -1
- package/dist/form/Fieldset.d.ts +19 -0
- package/dist/form/Fieldset.js +22 -2
- package/dist/form/Fieldset.js.map +1 -1
- package/dist/form/FormMessageContainer.js.map +1 -1
- package/dist/form/FormMessageCounter.js.map +1 -1
- package/dist/form/InputToggle.js.map +1 -1
- package/dist/form/Legend.d.ts +27 -5
- package/dist/form/Legend.js +39 -6
- package/dist/form/Legend.js.map +1 -1
- package/dist/form/Listbox.js.map +1 -1
- package/dist/form/ListboxProvider.js.map +1 -1
- package/dist/form/NativeSelect.js.map +1 -1
- package/dist/form/Password.js.map +1 -1
- package/dist/form/ResizingTextAreaWrapper.js.map +1 -1
- package/dist/form/Select.js.map +1 -1
- package/dist/form/Slider.js.map +1 -1
- package/dist/form/SliderContainer.js.map +1 -1
- package/dist/form/SliderThumb.js.map +1 -1
- package/dist/form/SliderTrack.js.map +1 -1
- package/dist/form/SliderValueMarks.js.map +1 -1
- package/dist/form/Switch.js.map +1 -1
- package/dist/form/TextArea.js.map +1 -1
- package/dist/form/TextField.js.map +1 -1
- package/dist/form/TextFieldContainer.js.map +1 -1
- package/dist/form/_fieldset.scss +7 -0
- package/dist/form/_legend.scss +68 -0
- package/dist/form/_text-field.scss +39 -4
- package/dist/form/fieldsetStyles.d.ts +6 -1
- package/dist/form/fieldsetStyles.js +3 -2
- package/dist/form/fieldsetStyles.js.map +1 -1
- package/dist/form/inputToggleStyles.js.map +1 -1
- package/dist/form/labelStyles.d.ts +1 -1
- package/dist/form/labelStyles.js +1 -1
- package/dist/form/labelStyles.js.map +1 -1
- package/dist/form/legendStyles.d.ts +83 -0
- package/dist/form/legendStyles.js +25 -0
- package/dist/form/legendStyles.js.map +1 -0
- package/dist/form/selectUtils.js.map +1 -1
- package/dist/form/textFieldContainerStyles.js.map +1 -1
- package/dist/form/types.d.ts +28 -6
- package/dist/form/types.js.map +1 -1
- package/dist/form/useCheckboxGroup.js.map +1 -1
- package/dist/form/useCombobox.js.map +1 -1
- package/dist/form/useNumberField.js +16 -19
- package/dist/form/useNumberField.js.map +1 -1
- package/dist/form/useRangeSlider.js.map +1 -1
- package/dist/form/useSlider.js.map +1 -1
- package/dist/form/useTextField.js.map +1 -1
- package/dist/hoverMode/useHoverMode.js.map +1 -1
- package/dist/icon/FontIcon.js.map +1 -1
- package/dist/icon/IconRotator.js.map +1 -1
- package/dist/icon/MaterialIcon.js.map +1 -1
- package/dist/icon/MaterialSymbol.js.map +1 -1
- package/dist/icon/SVGIcon.js.map +1 -1
- package/dist/icon/config.d.ts +0 -1
- package/dist/icon/config.js +10 -7
- package/dist/icon/config.js.map +1 -1
- package/dist/icon/materialConfig.js.map +1 -1
- package/dist/icon/styles.js.map +1 -1
- package/dist/interaction/UserInteractionModeProvider.js +6 -4
- package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
- package/dist/interaction/types.js.map +1 -1
- package/dist/interaction/useElementInteraction.js.map +1 -1
- package/dist/layout/LayoutAppBar.d.ts +6 -6
- package/dist/layout/LayoutAppBar.js +6 -6
- package/dist/layout/LayoutAppBar.js.map +1 -1
- package/dist/layout/LayoutNav.js.map +1 -1
- package/dist/layout/LayoutWindowSplitter.js.map +1 -1
- package/dist/layout/Main.js.map +1 -1
- package/dist/layout/useExpandableLayout.js +43 -0
- package/dist/layout/useExpandableLayout.js.map +1 -1
- package/dist/layout/useHorizontalLayoutTransition.js.map +1 -1
- package/dist/layout/useLayoutTree.js.map +1 -1
- package/dist/layout/useLayoutWindowSplitter.js.map +1 -1
- package/dist/layout/useResizableLayout.js.map +1 -1
- package/dist/link/Link.js.map +1 -1
- package/dist/link/SkipToMainContent.js +19 -21
- package/dist/link/SkipToMainContent.js.map +1 -1
- package/dist/list/List.js.map +1 -1
- package/dist/list/ListItem.js.map +1 -1
- package/dist/list/ListItemAddon.js.map +1 -1
- package/dist/list/ListItemLink.js.map +1 -1
- package/dist/list/ListSubheader.js.map +1 -1
- package/dist/list/getListItemHeight.js.map +1 -1
- package/dist/list/listItemStyles.js.map +1 -1
- package/dist/list/types.js.map +1 -1
- package/dist/media-queries/AppSizeProvider.d.ts +2 -0
- package/dist/media-queries/AppSizeProvider.js +3 -2
- package/dist/media-queries/AppSizeProvider.js.map +1 -1
- package/dist/media-queries/appSize.d.ts +3 -0
- package/dist/media-queries/appSize.js +3 -1
- package/dist/media-queries/appSize.js.map +1 -1
- package/dist/media-queries/config.d.ts +11 -0
- package/dist/media-queries/config.js +26 -0
- package/dist/media-queries/config.js.map +1 -0
- package/dist/menu/DropdownMenu.js.map +1 -1
- package/dist/menu/Menu.js.map +1 -1
- package/dist/menu/MenuItemButton.js.map +1 -1
- package/dist/menu/MenuItemFileInput.js.map +1 -1
- package/dist/menu/MenuItemInputToggle.js.map +1 -1
- package/dist/menu/MenuItemSeparator.js.map +1 -1
- package/dist/menu/MenuVisibilityProvider.js.map +1 -1
- package/dist/menu/MenuWidget.js.map +1 -1
- package/dist/menu/useContextMenu.js.map +1 -1
- package/dist/movement/types.d.ts +28 -3
- package/dist/movement/types.js.map +1 -1
- package/dist/movement/useKeyboardMovementProvider.js +96 -47
- package/dist/movement/useKeyboardMovementProvider.js.map +1 -1
- package/dist/navigation/CollapsibleNavGroup.js.map +1 -1
- package/dist/navigation/NavItem.js.map +1 -1
- package/dist/navigation/NavItemButton.js.map +1 -1
- package/dist/navigation/NavItemLink.js.map +1 -1
- package/dist/navigation/getTableOfContentsHeadings.js.map +1 -1
- package/dist/navigation/types.js.map +1 -1
- package/dist/overlay/Overlay.js.map +1 -1
- package/dist/positioning/createHorizontalPosition.js.map +1 -1
- package/dist/positioning/createVerticalPosition.js.map +1 -1
- package/dist/positioning/useFixedPositioning.js.map +1 -1
- package/dist/progress/CircularProgress.js.map +1 -1
- package/dist/progress/LinearProgress.js.map +1 -1
- package/dist/progress/linearProgressStyles.js.map +1 -1
- package/dist/responsive-item/ResponsiveItem.js.map +1 -1
- package/dist/responsive-item/ResponsiveItemOverlay.js.map +1 -1
- package/dist/searching/caseInsensitive.js.map +1 -1
- package/dist/segmented-button/SegmentedButton.js.map +1 -1
- package/dist/segmented-button/SegmentedButtonContainer.js.map +1 -1
- package/dist/segmented-button/segmentedButtonStyles.js.map +1 -1
- package/dist/sheet/Sheet.js.map +1 -1
- package/dist/snackbar/Toast.js.map +1 -1
- package/dist/spinbutton/SpinButton.d.ts +16 -0
- package/dist/spinbutton/SpinButton.js +55 -0
- package/dist/spinbutton/SpinButton.js.map +1 -0
- package/dist/spinbutton/SpinButtonGroupProvider.d.ts +17 -0
- package/dist/spinbutton/SpinButtonGroupProvider.js +19 -0
- package/dist/spinbutton/SpinButtonGroupProvider.js.map +1 -0
- package/dist/spinbutton/defaults.d.ts +9 -0
- package/dist/spinbutton/defaults.js +25 -0
- package/dist/spinbutton/defaults.js.map +1 -0
- package/dist/spinbutton/types.d.ts +324 -0
- package/dist/spinbutton/types.js +5 -0
- package/dist/spinbutton/types.js.map +1 -0
- package/dist/spinbutton/useSpinButton.d.ts +5 -0
- package/dist/spinbutton/useSpinButton.js +260 -0
- package/dist/spinbutton/useSpinButton.js.map +1 -0
- package/dist/spinbutton/useSpinButtonGroupProvider.d.ts +27 -0
- package/dist/spinbutton/useSpinButtonGroupProvider.js +49 -0
- package/dist/spinbutton/useSpinButtonGroupProvider.js.map +1 -0
- package/dist/spinbutton/utils/deselectNode.d.ts +5 -0
- package/dist/spinbutton/utils/deselectNode.js +17 -0
- package/dist/spinbutton/utils/deselectNode.js.map +1 -0
- package/dist/spinbutton/utils/resolveInputEvent.d.ts +30 -0
- package/dist/spinbutton/utils/resolveInputEvent.js +53 -0
- package/dist/spinbutton/utils/resolveInputEvent.js.map +1 -0
- package/dist/spinbutton/utils/selectNode.d.ts +5 -0
- package/dist/spinbutton/utils/selectNode.js +15 -0
- package/dist/spinbutton/utils/selectNode.js.map +1 -0
- package/dist/table/StickyTableSection.js.map +1 -1
- package/dist/table/Table.js.map +1 -1
- package/dist/table/TableBody.js.map +1 -1
- package/dist/table/TableCellContent.js.map +1 -1
- package/dist/table/TableCheckbox.js.map +1 -1
- package/dist/table/TableFooter.js.map +1 -1
- package/dist/table/TableHeader.js.map +1 -1
- package/dist/table/TableRadio.js.map +1 -1
- package/dist/table/TableRow.js.map +1 -1
- package/dist/table/useStickyTableSection.js.map +1 -1
- package/dist/tabs/SimpleTabPanel.js.map +1 -1
- package/dist/tabs/SimpleTabPanels.js.map +1 -1
- package/dist/tabs/Tab.js.map +1 -1
- package/dist/tabs/TabList.js.map +1 -1
- package/dist/tabs/TabListScrollButton.js.map +1 -1
- package/dist/tabs/useMaxTabPanelHeight.js.map +1 -1
- package/dist/test-utils/data-testid.js.map +1 -1
- package/dist/test-utils/mocks/match-media.js +5 -5
- package/dist/test-utils/mocks/match-media.js.map +1 -1
- package/dist/test-utils/vitest/timers.d.ts +1 -1
- package/dist/test-utils/vitest/timers.js +1 -1
- package/dist/test-utils/vitest/timers.js.map +1 -1
- package/dist/tooltip/Tooltip.js.map +1 -1
- package/dist/tooltip/TooltipHoverModeProvider.js.map +1 -1
- package/dist/tooltip/useTooltip.js.map +1 -1
- package/dist/transition/CSSTransition.js.map +1 -1
- package/dist/transition/Collapse.js.map +1 -1
- package/dist/transition/CrossFade.js.map +1 -1
- package/dist/transition/ScaleTransition.js.map +1 -1
- package/dist/transition/SkeletonPlaceholder.js.map +1 -1
- package/dist/transition/Slide.js.map +1 -1
- package/dist/transition/SlideContainer.js.map +1 -1
- package/dist/transition/types.js.map +1 -1
- package/dist/transition/useCollapseTransition.js.map +1 -1
- package/dist/transition/useCrossFadeTransition.js.map +1 -1
- package/dist/transition/useMaxWidthTransition.js.map +1 -1
- package/dist/transition/useScaleTransition.js.map +1 -1
- package/dist/transition/useSkeletonPlaceholder.js.map +1 -1
- package/dist/tree/Tree.js.map +1 -1
- package/dist/tree/TreeItem.js.map +1 -1
- package/dist/tree/TreeProvider.js.map +1 -1
- package/dist/tree/styles.js.map +1 -1
- package/dist/tree/types.js.map +1 -1
- package/dist/tree/useTreeMovement.js.map +1 -1
- package/dist/typography/HighlightTextMark.js.map +1 -1
- package/dist/typography/Mark.js.map +1 -1
- package/dist/typography/TextContainer.js.map +1 -1
- package/dist/typography/Typography.js.map +1 -1
- package/dist/typography/_typography.scss +0 -1
- package/dist/useElementSize.js.map +1 -1
- package/dist/useIntersectionObserver.js.map +1 -1
- package/dist/useMutationObserver.js.map +1 -1
- package/dist/useWindowSize.js.map +1 -1
- package/dist/utils/getNumberOfDigits.d.ts +7 -0
- package/dist/utils/getNumberOfDigits.js +11 -0
- package/dist/utils/getNumberOfDigits.js.map +1 -0
- package/dist/utils/nearest.js +2 -1
- package/dist/utils/nearest.js.map +1 -1
- package/dist/utils/useDevEffect.d.ts +7 -0
- package/dist/utils/useDevEffect.js +8 -0
- package/dist/utils/useDevEffect.js.map +1 -0
- package/dist/window-splitter/WindowSplitter.js +3 -2
- package/dist/window-splitter/WindowSplitter.js.map +1 -1
- package/dist/window-splitter/_window-splitter.scss +60 -12
- package/dist/window-splitter/styles.d.ts +9 -0
- package/dist/window-splitter/styles.js +3 -2
- package/dist/window-splitter/styles.js.map +1 -1
- package/dist/window-splitter/useWindowSplitter.js.map +1 -1
- package/package.json +37 -29
- package/src/CoreProviders.tsx +1 -0
- package/src/app-bar/AppBar.tsx +1 -2
- package/src/app-bar/AppBarTitle.tsx +1 -2
- package/src/autocomplete/AutocompleteListboxChildren.tsx +3 -1
- package/src/autocomplete/types.ts +24 -19
- package/src/autocomplete/utils.ts +9 -6
- package/src/avatar/Avatar.tsx +2 -1
- package/src/button/Button.tsx +2 -1
- package/src/button/FloatingActionButton.tsx +2 -1
- package/src/card/Card.tsx +2 -1
- package/src/card/CardContent.tsx +1 -2
- package/src/card/ClickableCard.tsx +1 -2
- package/src/chip/Chip.tsx +2 -1
- package/src/datetime/NativeDateField.tsx +2 -1
- package/src/datetime/NativeTimeField.tsx +2 -1
- package/src/datetime/useDateField.ts +13 -8
- package/src/datetime/useTimeField.ts +13 -8
- package/src/dialog/Dialog.tsx +2 -1
- package/src/dialog/DialogContainer.tsx +1 -2
- package/src/dialog/DialogContent.tsx +1 -2
- package/src/dialog/DialogFooter.tsx +1 -2
- package/src/divider/Divider.tsx +1 -2
- package/src/draggable/useDraggable.ts +4 -4
- package/src/draggable/utils.ts +4 -2
- package/src/expansion-panel/ExpansionPanelHeader.tsx +1 -2
- package/src/files/FileInput.tsx +2 -1
- package/src/files/useFileUpload.ts +6 -6
- package/src/files/validation.ts +1 -2
- package/src/focus/useFocusContainer.ts +4 -4
- package/src/form/Fieldset.tsx +25 -3
- package/src/form/FormMessageContainer.tsx +1 -2
- package/src/form/FormMessageCounter.tsx +1 -2
- package/src/form/InputToggle.tsx +3 -3
- package/src/form/Legend.tsx +55 -10
- package/src/form/Listbox.tsx +1 -2
- package/src/form/ListboxProvider.ts +3 -2
- package/src/form/NativeSelect.tsx +2 -1
- package/src/form/Password.tsx +4 -2
- package/src/form/ResizingTextAreaWrapper.tsx +1 -2
- package/src/form/Select.tsx +2 -1
- package/src/form/Slider.tsx +2 -1
- package/src/form/SliderContainer.tsx +1 -2
- package/src/form/SliderThumb.tsx +6 -3
- package/src/form/SliderTrack.tsx +2 -1
- package/src/form/SliderValueMarks.tsx +1 -2
- package/src/form/Switch.tsx +2 -1
- package/src/form/TextArea.tsx +1 -2
- package/src/form/TextField.tsx +2 -1
- package/src/form/TextFieldContainer.tsx +1 -2
- package/src/form/fieldsetStyles.ts +18 -3
- package/src/form/inputToggleStyles.ts +4 -2
- package/src/form/labelStyles.ts +1 -1
- package/src/form/legendStyles.ts +132 -0
- package/src/form/selectUtils.ts +3 -2
- package/src/form/textFieldContainerStyles.ts +1 -2
- package/src/form/types.ts +35 -17
- package/src/form/useCheckboxGroup.ts +3 -2
- package/src/form/useCombobox.ts +8 -3
- package/src/form/useNumberField.ts +36 -35
- package/src/form/useRangeSlider.ts +1 -2
- package/src/form/useSlider.ts +1 -2
- package/src/form/useTextField.ts +8 -3
- package/src/hoverMode/useHoverMode.ts +4 -8
- package/src/icon/FontIcon.tsx +1 -2
- package/src/icon/IconRotator.tsx +1 -2
- package/src/icon/MaterialIcon.tsx +2 -1
- package/src/icon/MaterialSymbol.tsx +2 -1
- package/src/icon/SVGIcon.tsx +1 -2
- package/src/icon/config.tsx +10 -7
- package/src/icon/materialConfig.ts +1 -2
- package/src/icon/styles.ts +1 -2
- package/src/interaction/UserInteractionModeProvider.tsx +9 -4
- package/src/interaction/types.ts +1 -2
- package/src/interaction/useElementInteraction.tsx +3 -2
- package/src/layout/LayoutAppBar.tsx +6 -6
- package/src/layout/LayoutNav.tsx +2 -1
- package/src/layout/LayoutWindowSplitter.tsx +2 -1
- package/src/layout/Main.tsx +1 -2
- package/src/layout/useExpandableLayout.ts +63 -5
- package/src/layout/useHorizontalLayoutTransition.ts +1 -2
- package/src/layout/useLayoutTree.ts +2 -2
- package/src/layout/useLayoutWindowSplitter.ts +6 -6
- package/src/layout/useResizableLayout.ts +3 -6
- package/src/link/Link.tsx +1 -2
- package/src/link/SkipToMainContent.tsx +20 -23
- package/src/list/List.tsx +1 -2
- package/src/list/ListItem.tsx +2 -1
- package/src/list/ListItemAddon.tsx +2 -1
- package/src/list/ListItemLink.tsx +2 -1
- package/src/list/ListSubheader.tsx +1 -2
- package/src/list/getListItemHeight.ts +8 -9
- package/src/list/listItemStyles.ts +1 -2
- package/src/list/types.ts +1 -2
- package/src/media-queries/AppSizeProvider.tsx +8 -10
- package/src/media-queries/appSize.ts +3 -0
- package/src/media-queries/config.ts +41 -0
- package/src/menu/DropdownMenu.tsx +4 -5
- package/src/menu/Menu.tsx +2 -1
- package/src/menu/MenuItemButton.tsx +1 -2
- package/src/menu/MenuItemFileInput.tsx +2 -1
- package/src/menu/MenuItemInputToggle.tsx +3 -3
- package/src/menu/MenuItemSeparator.tsx +2 -1
- package/src/menu/MenuVisibilityProvider.tsx +4 -2
- package/src/menu/MenuWidget.tsx +1 -2
- package/src/menu/useContextMenu.ts +4 -2
- package/src/movement/types.ts +52 -13
- package/src/movement/useKeyboardMovementProvider.ts +77 -38
- package/src/navigation/CollapsibleNavGroup.tsx +1 -2
- package/src/navigation/NavItem.tsx +1 -2
- package/src/navigation/NavItemButton.tsx +2 -1
- package/src/navigation/NavItemLink.tsx +2 -1
- package/src/navigation/getTableOfContentsHeadings.ts +1 -2
- package/src/navigation/types.ts +1 -2
- package/src/overlay/Overlay.tsx +2 -1
- package/src/positioning/createHorizontalPosition.ts +10 -12
- package/src/positioning/createVerticalPosition.ts +10 -11
- package/src/positioning/useFixedPositioning.ts +6 -3
- package/src/progress/CircularProgress.tsx +2 -1
- package/src/progress/LinearProgress.tsx +2 -1
- package/src/progress/linearProgressStyles.ts +1 -2
- package/src/responsive-item/ResponsiveItem.tsx +1 -2
- package/src/responsive-item/ResponsiveItemOverlay.tsx +2 -1
- package/src/searching/caseInsensitive.ts +2 -4
- package/src/segmented-button/SegmentedButton.tsx +2 -1
- package/src/segmented-button/SegmentedButtonContainer.tsx +2 -1
- package/src/segmented-button/segmentedButtonStyles.ts +1 -2
- package/src/sheet/Sheet.tsx +1 -2
- package/src/snackbar/Toast.tsx +2 -1
- package/src/spinbutton/SpinButton.tsx +98 -0
- package/src/spinbutton/SpinButtonGroupProvider.tsx +32 -0
- package/src/spinbutton/defaults.ts +45 -0
- package/src/spinbutton/types.ts +413 -0
- package/src/spinbutton/useSpinButton.ts +311 -0
- package/src/spinbutton/useSpinButtonGroupProvider.ts +104 -0
- package/src/spinbutton/utils/deselectNode.ts +17 -0
- package/src/spinbutton/utils/resolveInputEvent.ts +112 -0
- package/src/spinbutton/utils/selectNode.ts +15 -0
- package/src/table/StickyTableSection.tsx +2 -1
- package/src/table/Table.tsx +1 -2
- package/src/table/TableBody.tsx +2 -1
- package/src/table/TableCellContent.tsx +1 -2
- package/src/table/TableCheckbox.tsx +1 -2
- package/src/table/TableFooter.tsx +1 -2
- package/src/table/TableHeader.tsx +1 -2
- package/src/table/TableRadio.tsx +1 -2
- package/src/table/TableRow.tsx +1 -2
- package/src/table/useStickyTableSection.tsx +1 -2
- package/src/tabs/SimpleTabPanel.tsx +2 -1
- package/src/tabs/SimpleTabPanels.tsx +2 -1
- package/src/tabs/Tab.tsx +3 -6
- package/src/tabs/TabList.tsx +2 -1
- package/src/tabs/TabListScrollButton.tsx +1 -2
- package/src/tabs/useMaxTabPanelHeight.ts +7 -4
- package/src/test-utils/data-testid.ts +1 -2
- package/src/test-utils/mocks/match-media.ts +5 -10
- package/src/test-utils/vitest/timers.ts +1 -1
- package/src/tooltip/Tooltip.tsx +2 -1
- package/src/tooltip/TooltipHoverModeProvider.tsx +1 -2
- package/src/tooltip/useTooltip.ts +9 -5
- package/src/transition/CSSTransition.tsx +2 -1
- package/src/transition/Collapse.tsx +4 -2
- package/src/transition/CrossFade.tsx +2 -1
- package/src/transition/ScaleTransition.tsx +2 -1
- package/src/transition/SkeletonPlaceholder.tsx +1 -2
- package/src/transition/Slide.tsx +2 -1
- package/src/transition/SlideContainer.tsx +1 -2
- package/src/transition/types.ts +15 -16
- package/src/transition/useCollapseTransition.ts +6 -5
- package/src/transition/useCrossFadeTransition.ts +3 -2
- package/src/transition/useMaxWidthTransition.ts +1 -2
- package/src/transition/useScaleTransition.ts +3 -2
- package/src/transition/useSkeletonPlaceholder.ts +1 -2
- package/src/tree/Tree.tsx +2 -1
- package/src/tree/TreeItem.tsx +2 -1
- package/src/tree/TreeProvider.tsx +4 -4
- package/src/tree/styles.ts +1 -2
- package/src/tree/types.ts +1 -2
- package/src/tree/useTreeMovement.ts +1 -2
- package/src/typography/HighlightTextMark.tsx +1 -2
- package/src/typography/Mark.tsx +1 -2
- package/src/typography/TextContainer.tsx +1 -2
- package/src/typography/Typography.tsx +1 -2
- package/src/useElementSize.ts +7 -4
- package/src/useIntersectionObserver.ts +3 -2
- package/src/useMutationObserver.ts +3 -2
- package/src/useWindowSize.ts +4 -2
- package/src/utils/getNumberOfDigits.ts +18 -0
- package/src/utils/nearest.ts +2 -1
- package/src/utils/useDevEffect.ts +9 -0
- package/src/window-splitter/WindowSplitter.tsx +5 -2
- package/src/window-splitter/styles.ts +13 -2
- package/src/window-splitter/useWindowSplitter.ts +3 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 6.4.0
|
|
3
|
+
* @see {@link https://stackoverflow.com/a/28203456}
|
|
4
|
+
*/ export function getNumberOfDigits(value) {
|
|
5
|
+
if (typeof value !== "number") {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
return (Math.log10((value ^ value >> 31) - (value >> 31)) | 0) + 1;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=getNumberOfDigits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/getNumberOfDigits.ts"],"sourcesContent":["/**\n * @since 6.4.0\n * @see {@link https://stackoverflow.com/a/28203456}\n */\nexport function getNumberOfDigits(value: number): number;\nexport function getNumberOfDigits(value: undefined): undefined;\nexport function getNumberOfDigits(\n value: number | undefined\n): number | undefined;\nexport function getNumberOfDigits(\n value: number | undefined\n): number | undefined {\n if (typeof value !== \"number\") {\n return;\n }\n\n return (Math.log10((value ^ (value >> 31)) - (value >> 31)) | 0) + 1;\n}\n"],"names":["getNumberOfDigits","value","Math","log10"],"mappings":"AAAA;;;CAGC,GAMD,OAAO,SAASA,kBACdC,KAAyB;IAEzB,IAAI,OAAOA,UAAU,UAAU;QAC7B;IACF;IAEA,OAAO,AAACC,CAAAA,KAAKC,KAAK,CAAC,AAACF,CAAAA,QAASA,SAAS,EAAE,IAAMA,CAAAA,SAAS,EAAC,KAAM,CAAA,IAAK;AACrE"}
|
package/dist/utils/nearest.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getNumberOfDigits } from "./getNumberOfDigits.js";
|
|
1
2
|
/**
|
|
2
3
|
* Rounds a number to the nearest step within a min/max range.
|
|
3
4
|
*
|
|
@@ -16,7 +17,7 @@
|
|
|
16
17
|
// precision gets weird:
|
|
17
18
|
// 0.28 * 100 === 28.000000000000004
|
|
18
19
|
const step = range / steps;
|
|
19
|
-
const decimals = Number.isInteger(step) ? range % steps : `${step}`.split(".")[1]
|
|
20
|
+
const decimals = Number.isInteger(step) ? range % steps : getNumberOfDigits(parseInt(`${step}`.split(".")[1]));
|
|
20
21
|
return Math.min(max, Math.max(min, parseFloat((zeroToOne * range + min).toFixed(decimals))));
|
|
21
22
|
}
|
|
22
23
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/nearest.ts"],"sourcesContent":["import { type MinMaxRange } from \"../types.js\";\n\n/**\n * @internal\n * @since 6.0.0\n */\nexport interface NearestOptions extends MinMaxRange {\n steps: number;\n value: number;\n\n /** @defaultValue `max - min` */\n range?: number;\n}\n\n/**\n * Rounds a number to the nearest step within a min/max range.\n *\n * @see https://stackoverflow.com/a/13635455\n * @returns the value rounded to the nearest step in the min/max range\n * @since 2.5.0 Added the `range` param\n * @since 6.0.0 Converted to using an object instead of multiple arguments.\n */\nexport function nearest(options: NearestOptions): number {\n const { min, max, steps, value, range = max - min } = options;\n if (min === max) {\n return max;\n }\n\n const rounded = Math.round(((value - min) * steps) / range) / steps;\n const zeroToOne = Math.min(Math.max(rounded, 0), 1);\n\n // have to calculate the number of allowed decimal places since decimal\n // precision gets weird:\n // 0.28 * 100 === 28.000000000000004\n const step = range / steps;\n const decimals = Number.isInteger(step)\n ? range % steps\n : `${step}`.split(\".\")[1]
|
|
1
|
+
{"version":3,"sources":["../../src/utils/nearest.ts"],"sourcesContent":["import { type MinMaxRange } from \"../types.js\";\nimport { getNumberOfDigits } from \"./getNumberOfDigits.js\";\n\n/**\n * @internal\n * @since 6.0.0\n */\nexport interface NearestOptions extends MinMaxRange {\n steps: number;\n value: number;\n\n /** @defaultValue `max - min` */\n range?: number;\n}\n\n/**\n * Rounds a number to the nearest step within a min/max range.\n *\n * @see https://stackoverflow.com/a/13635455\n * @returns the value rounded to the nearest step in the min/max range\n * @since 2.5.0 Added the `range` param\n * @since 6.0.0 Converted to using an object instead of multiple arguments.\n */\nexport function nearest(options: NearestOptions): number {\n const { min, max, steps, value, range = max - min } = options;\n if (min === max) {\n return max;\n }\n\n const rounded = Math.round(((value - min) * steps) / range) / steps;\n const zeroToOne = Math.min(Math.max(rounded, 0), 1);\n\n // have to calculate the number of allowed decimal places since decimal\n // precision gets weird:\n // 0.28 * 100 === 28.000000000000004\n const step = range / steps;\n const decimals = Number.isInteger(step)\n ? range % steps\n : getNumberOfDigits(parseInt(`${step}`.split(\".\")[1]));\n\n return Math.min(\n max,\n Math.max(min, parseFloat((zeroToOne * range + min).toFixed(decimals)))\n );\n}\n"],"names":["getNumberOfDigits","nearest","options","min","max","steps","value","range","rounded","Math","round","zeroToOne","step","decimals","Number","isInteger","parseInt","split","parseFloat","toFixed"],"mappings":"AACA,SAASA,iBAAiB,QAAQ,yBAAyB;AAc3D;;;;;;;CAOC,GACD,OAAO,SAASC,QAAQC,OAAuB;IAC7C,MAAM,EAAEC,GAAG,EAAEC,GAAG,EAAEC,KAAK,EAAEC,KAAK,EAAEC,QAAQH,MAAMD,GAAG,EAAE,GAAGD;IACtD,IAAIC,QAAQC,KAAK;QACf,OAAOA;IACT;IAEA,MAAMI,UAAUC,KAAKC,KAAK,CAAC,AAAEJ,CAAAA,QAAQH,GAAE,IAAKE,QAASE,SAASF;IAC9D,MAAMM,YAAYF,KAAKN,GAAG,CAACM,KAAKL,GAAG,CAACI,SAAS,IAAI;IAEjD,uEAAuE;IACvE,wBAAwB;IACxB,oCAAoC;IACpC,MAAMI,OAAOL,QAAQF;IACrB,MAAMQ,WAAWC,OAAOC,SAAS,CAACH,QAC9BL,QAAQF,QACRL,kBAAkBgB,SAAS,GAAGJ,MAAM,CAACK,KAAK,CAAC,IAAI,CAAC,EAAE;IAEtD,OAAOR,KAAKN,GAAG,CACbC,KACAK,KAAKL,GAAG,CAACD,KAAKe,WAAW,AAACP,CAAAA,YAAYJ,QAAQJ,GAAE,EAAGgB,OAAO,CAACN;AAE/D"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* This will be a no-op when `process.env.NODE_ENV === "production"`.
|
|
4
|
+
* Otherwise, it will be a normal `useEffect` call
|
|
5
|
+
* @since 6.4.0
|
|
6
|
+
*/ export const useDevEffect = process.env.NODE_ENV === "production" ? ()=>{} : useEffect;
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=useDevEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/useDevEffect.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\n/**\n * This will be a no-op when `process.env.NODE_ENV === \"production\"`.\n * Otherwise, it will be a normal `useEffect` call\n * @since 6.4.0\n */\nexport const useDevEffect =\n process.env.NODE_ENV === \"production\" ? () => {} : useEffect;\n"],"names":["useEffect","useDevEffect","process","env","NODE_ENV"],"mappings":"AAAA,SAASA,SAAS,QAAQ,QAAQ;AAElC;;;;CAIC,GACD,OAAO,MAAMC,eACXC,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe,KAAO,IAAIJ,UAAU"}
|
|
@@ -45,7 +45,7 @@ import { windowSplitter } from "./styles.js";
|
|
|
45
45
|
* @see {@link https://react-md.dev/components/window-splitter | WindowSplitter Demos}
|
|
46
46
|
* @since 6.0.0
|
|
47
47
|
*/ export const WindowSplitter = /*#__PURE__*/ forwardRef(function WindowSplitter(props, ref) {
|
|
48
|
-
const { role = "separator", className, dragging, reversed, disableFixed
|
|
48
|
+
const { role = "separator", className, dragging, reversed, disableFixed, inactiveBackground, ...remaining } = props;
|
|
49
49
|
const vertical = props["aria-orientation"] === "vertical";
|
|
50
50
|
return /*#__PURE__*/ _jsx("button", {
|
|
51
51
|
...remaining,
|
|
@@ -57,7 +57,8 @@ import { windowSplitter } from "./styles.js";
|
|
|
57
57
|
reversed,
|
|
58
58
|
dragging,
|
|
59
59
|
vertical,
|
|
60
|
-
disableFixed
|
|
60
|
+
disableFixed,
|
|
61
|
+
inactiveBackground
|
|
61
62
|
})
|
|
62
63
|
});
|
|
63
64
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/window-splitter/WindowSplitter.tsx"],"sourcesContent":["import { type ButtonHTMLAttributes, forwardRef } from \"react\";\n\nimport { type LabelRequiredForA11y } from \"../types.js\";\nimport {\n type BaseWindowSplitterClassNameOptions,\n windowSplitter,\n} from \"./styles.js\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { type useWindowSplitter } from \"./useWindowSplitter.js\";\n\n/**\n * @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/}\n * @since 6.0.0\n * @since 6.3.1 Extends BaseWindowSplitterClassNameOptions for CSSProperties\n * module augmentation.\n */\nexport interface BaseWindowSplitterProps\n extends
|
|
1
|
+
{"version":3,"sources":["../../src/window-splitter/WindowSplitter.tsx"],"sourcesContent":["import { type ButtonHTMLAttributes, forwardRef } from \"react\";\n\nimport { type LabelRequiredForA11y } from \"../types.js\";\nimport {\n type BaseWindowSplitterClassNameOptions,\n windowSplitter,\n} from \"./styles.js\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { type useWindowSplitter } from \"./useWindowSplitter.js\";\n\n/**\n * @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/}\n * @since 6.0.0\n * @since 6.3.1 Extends BaseWindowSplitterClassNameOptions for CSSProperties\n * module augmentation.\n */\nexport interface BaseWindowSplitterProps\n extends\n Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"type\" | \"children\">,\n BaseWindowSplitterClassNameOptions {\n /**\n * This will be provided by the {@link useWindowSplitter} hook.\n */\n \"aria-controls\": string;\n\n /**\n * This will be provided by the {@link useWindowSplitter} hook.\n */\n dragging: boolean;\n\n /**\n * This will be provided by the {@link useWindowSplitter} hook.\n */\n reversed: boolean;\n}\n\n/**\n * @since 6.0.0\n */\nexport type WindowSplitterProps = LabelRequiredForA11y<BaseWindowSplitterProps>;\n\n/**\n * The `WindowSplitter` should be used with the `useWindowSplitter` hook to\n * resize parts of a layout.\n *\n * See the `useResizableLayout` hook if the entire page layout should be\n * resizable.\n *\n * @example Simple Example\n * ```tsx\n * \"use client\";\n * import { WindowSplitter } from \"@react-md/core/window-splitter/WindowSplitter\";\n * import { useWindowSplitter } from \"@react-md/core/window-splitter/useWindowSplitter\";\n * import { useId, type ReactElement } from \"react\";\n *\n * export function Example(): ReactElement {\n * const panelId = useId();\n * const { value, splitterProps } = useWindowSplitter({\n * min: 120,\n * max: 380,\n * });\n *\n * return (\n * <div\n * style={{\n * \"--rmd-window-splitter-position\": `${value}px`,\n * display: \"grid\",\n * gridTemplateColumns: \"var(--rmd-window-splitter-position, 120px) 1fr\",\n * }}\n * >\n * <div>Panel 1</div>\n * <WindowSplitter\n * {...splitterProps}\n * aria-controls={panelId}\n * aria-labelledby={panelId}\n * />\n * <div>Panel 2</div>\n * </div>\n * );\n * }\n * ```\n *\n * @see {@link https://react-md.dev/components/window-splitter | WindowSplitter Demos}\n * @since 6.0.0\n */\nexport const WindowSplitter = forwardRef<\n HTMLButtonElement,\n WindowSplitterProps\n>(function WindowSplitter(props, ref) {\n const {\n role = \"separator\",\n className,\n dragging,\n reversed,\n disableFixed,\n inactiveBackground,\n ...remaining\n } = props;\n const vertical = props[\"aria-orientation\"] === \"vertical\";\n\n return (\n <button\n {...remaining}\n ref={ref}\n type=\"button\"\n role={role}\n className={windowSplitter({\n className,\n reversed,\n dragging,\n vertical,\n disableFixed,\n inactiveBackground,\n })}\n />\n );\n});\n"],"names":["forwardRef","windowSplitter","WindowSplitter","props","ref","role","className","dragging","reversed","disableFixed","inactiveBackground","remaining","vertical","button","type"],"mappings":";AAAA,SAAoCA,UAAU,QAAQ,QAAQ;AAG9D,SAEEC,cAAc,QACT,cAAc;AAmCrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CC,GACD,OAAO,MAAMC,+BAAiBF,WAG5B,SAASE,eAAeC,KAAK,EAAEC,GAAG;IAClC,MAAM,EACJC,OAAO,WAAW,EAClBC,SAAS,EACTC,QAAQ,EACRC,QAAQ,EACRC,YAAY,EACZC,kBAAkB,EAClB,GAAGC,WACJ,GAAGR;IACJ,MAAMS,WAAWT,KAAK,CAAC,mBAAmB,KAAK;IAE/C,qBACE,KAACU;QACE,GAAGF,SAAS;QACbP,KAAKA;QACLU,MAAK;QACLT,MAAMA;QACNC,WAAWL,eAAe;YACxBK;YACAE;YACAD;YACAK;YACAH;YACAC;QACF;;AAGN,GAAG"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
@use "sass:map";
|
|
6
6
|
@use "../utils";
|
|
7
|
+
@use "../divider/divider";
|
|
7
8
|
@use "../interaction/interaction";
|
|
8
9
|
@use "../transition/transition";
|
|
9
10
|
|
|
@@ -27,6 +28,11 @@ $disable-reversed: false !default;
|
|
|
27
28
|
/// @type Boolean
|
|
28
29
|
$disable-absolute-position: false !default;
|
|
29
30
|
|
|
31
|
+
/// Set to `true` to disable the inactive `background-color` styles.
|
|
32
|
+
/// @since 6.4.0
|
|
33
|
+
/// @type Boolean
|
|
34
|
+
$disable-inactive-background-color: false !default;
|
|
35
|
+
|
|
30
36
|
/// The default `WindowSplitter` draggable area.
|
|
31
37
|
/// @type Number
|
|
32
38
|
$size: 1rem !default;
|
|
@@ -35,10 +41,15 @@ $size: 1rem !default;
|
|
|
35
41
|
/// @type Number
|
|
36
42
|
$background-size: 0.25rem !default;
|
|
37
43
|
|
|
38
|
-
/// The default `background-color` for the `WindowSplitter
|
|
44
|
+
/// The default `background-color` for the `WindowSplitter` while being
|
|
45
|
+
/// interacted with by the user.
|
|
39
46
|
/// @type Color
|
|
40
47
|
$background-color: interaction.get-var(focus-color) !default;
|
|
41
48
|
|
|
49
|
+
/// An optional `background-color` to use while the
|
|
50
|
+
/// @type Color
|
|
51
|
+
$inactive-background-color: divider.get-var(color) !default;
|
|
52
|
+
|
|
42
53
|
/// The default `z-index` for the `WindowSplitter`.
|
|
43
54
|
/// @type Number
|
|
44
55
|
$z-index: 30 !default;
|
|
@@ -54,6 +65,7 @@ $variables: (
|
|
|
54
65
|
z,
|
|
55
66
|
position,
|
|
56
67
|
background-color,
|
|
68
|
+
inactive-background-color,
|
|
57
69
|
opacity
|
|
58
70
|
);
|
|
59
71
|
|
|
@@ -97,6 +109,13 @@ $variables: (
|
|
|
97
109
|
@if $background-color != interaction.get-var(focus-color) {
|
|
98
110
|
@include set-var(background-color, $background-color);
|
|
99
111
|
}
|
|
112
|
+
@if not
|
|
113
|
+
$disable-inactive-background-color and
|
|
114
|
+
$inactive-background-color !=
|
|
115
|
+
divider.get-var(color)
|
|
116
|
+
{
|
|
117
|
+
@include set-var(background-color, $inactive-background-color);
|
|
118
|
+
}
|
|
100
119
|
}
|
|
101
120
|
}
|
|
102
121
|
|
|
@@ -106,10 +125,15 @@ $variables: (
|
|
|
106
125
|
/// layer behavior
|
|
107
126
|
@mixin styles($disable-layer: false) {
|
|
108
127
|
@if not $disable-everything {
|
|
128
|
+
$pseudo-selectors: if(
|
|
129
|
+
not $disable-inactive-background-color,
|
|
130
|
+
"&::before, ",
|
|
131
|
+
""
|
|
132
|
+
) +
|
|
133
|
+
"&::after";
|
|
134
|
+
|
|
109
135
|
@include utils.optional-layer(window-splitter, $disable-layer) {
|
|
110
136
|
.rmd-window-splitter {
|
|
111
|
-
@include use-var(opacity);
|
|
112
|
-
|
|
113
137
|
background-color: transparent;
|
|
114
138
|
border: 0;
|
|
115
139
|
inset: 0;
|
|
@@ -117,9 +141,14 @@ $variables: (
|
|
|
117
141
|
padding: 0;
|
|
118
142
|
position: fixed;
|
|
119
143
|
transform: translate3d(get-var(x, 0), get-var(y, 0), get-var(z, 0));
|
|
120
|
-
transition: opacity transition.$linear-duration;
|
|
121
144
|
z-index: $z-index;
|
|
122
145
|
|
|
146
|
+
#{$pseudo-selectors} {
|
|
147
|
+
content: "";
|
|
148
|
+
inset: 0;
|
|
149
|
+
position: absolute;
|
|
150
|
+
}
|
|
151
|
+
|
|
123
152
|
&::after {
|
|
124
153
|
@include use-var(
|
|
125
154
|
background-color,
|
|
@@ -129,10 +158,29 @@ $variables: (
|
|
|
129
158
|
null
|
|
130
159
|
)
|
|
131
160
|
);
|
|
161
|
+
@include use-var(opacity);
|
|
132
162
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
163
|
+
transition: opacity transition.$linear-duration;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
@if not $disable-inactive-background-color {
|
|
167
|
+
&--no-inactive-bg::before {
|
|
168
|
+
display: none;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
&::before {
|
|
172
|
+
@include use-var(
|
|
173
|
+
background-color,
|
|
174
|
+
inactive-background-color,
|
|
175
|
+
if(
|
|
176
|
+
$inactive-background-color == divider.get-var(color),
|
|
177
|
+
$inactive-background-color,
|
|
178
|
+
null
|
|
179
|
+
)
|
|
180
|
+
);
|
|
181
|
+
|
|
182
|
+
pointer-events: none;
|
|
183
|
+
}
|
|
136
184
|
}
|
|
137
185
|
|
|
138
186
|
@if not $disable-horizontal {
|
|
@@ -142,7 +190,7 @@ $variables: (
|
|
|
142
190
|
|
|
143
191
|
cursor: col-resize;
|
|
144
192
|
|
|
145
|
-
|
|
193
|
+
#{$pseudo-selectors} {
|
|
146
194
|
@include use-var(width, background-size);
|
|
147
195
|
}
|
|
148
196
|
|
|
@@ -158,7 +206,7 @@ $variables: (
|
|
|
158
206
|
calc(100dvw - get-var(size) - get-var(position))
|
|
159
207
|
);
|
|
160
208
|
|
|
161
|
-
|
|
209
|
+
#{$pseudo-selectors} {
|
|
162
210
|
margin-left: auto;
|
|
163
211
|
}
|
|
164
212
|
|
|
@@ -168,7 +216,7 @@ $variables: (
|
|
|
168
216
|
calc(-100dvw + get-var(size) + get-var(position))
|
|
169
217
|
);
|
|
170
218
|
|
|
171
|
-
|
|
219
|
+
#{$pseudo-selectors} {
|
|
172
220
|
margin-left: 0;
|
|
173
221
|
margin-right: auto;
|
|
174
222
|
}
|
|
@@ -185,7 +233,7 @@ $variables: (
|
|
|
185
233
|
cursor: row-resize;
|
|
186
234
|
width: 100%;
|
|
187
235
|
|
|
188
|
-
|
|
236
|
+
#{$pseudo-selectors} {
|
|
189
237
|
@include use-var(height, background-size);
|
|
190
238
|
}
|
|
191
239
|
}
|
|
@@ -197,7 +245,7 @@ $variables: (
|
|
|
197
245
|
calc(100dvh - get-var(size) - get-var(position))
|
|
198
246
|
);
|
|
199
247
|
|
|
200
|
-
|
|
248
|
+
#{$pseudo-selectors} {
|
|
201
249
|
transform: translateY(
|
|
202
250
|
calc(get-var(size) - get-var(background-size))
|
|
203
251
|
);
|
|
@@ -7,6 +7,7 @@ declare module "react" {
|
|
|
7
7
|
"--rmd-window-splitter-z"?: string | number;
|
|
8
8
|
"--rmd-window-splitter-position"?: string | number;
|
|
9
9
|
"--rmd-window-splitter-backgrond-color"?: string;
|
|
10
|
+
"--rmd-window-splitter-inactive-backgrond-color"?: string;
|
|
10
11
|
"--rmd-window-splitter-opacity"?: string | number;
|
|
11
12
|
}
|
|
12
13
|
}
|
|
@@ -22,6 +23,14 @@ export interface BaseWindowSplitterClassNameOptions {
|
|
|
22
23
|
* @defaultValue `false`
|
|
23
24
|
*/
|
|
24
25
|
disableFixed?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Set to `true` to enable a background-color to the `WindowSplitter` even
|
|
28
|
+
* while not being interacted with by the user.
|
|
29
|
+
*
|
|
30
|
+
* @since 6.4.0
|
|
31
|
+
* @defaultValue `false`
|
|
32
|
+
*/
|
|
33
|
+
inactiveBackground?: boolean;
|
|
25
34
|
}
|
|
26
35
|
/**
|
|
27
36
|
* @since 6.0.0
|
|
@@ -4,14 +4,15 @@ const styles = bem("rmd-window-splitter");
|
|
|
4
4
|
/**
|
|
5
5
|
* @since 6.0.0
|
|
6
6
|
*/ export function windowSplitter(options = {}) {
|
|
7
|
-
const { vertical = false, dragging, reversed, disableFixed, className } = options;
|
|
7
|
+
const { vertical = false, dragging, reversed, disableFixed, inactiveBackground, className } = options;
|
|
8
8
|
return cnb(styles({
|
|
9
9
|
h: !vertical,
|
|
10
10
|
hr: !vertical && reversed,
|
|
11
11
|
v: vertical,
|
|
12
12
|
vr: vertical && reversed,
|
|
13
13
|
a: disableFixed,
|
|
14
|
-
dragging
|
|
14
|
+
dragging,
|
|
15
|
+
"no-inactive-bg": !inactiveBackground
|
|
15
16
|
}), className);
|
|
16
17
|
}
|
|
17
18
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/window-splitter/styles.ts"],"sourcesContent":["import { cnb } from \"cnbuilder\";\n\nimport { bem } from \"../utils/bem.js\";\n\nconst styles = bem(\"rmd-window-splitter\");\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-window-splitter-size\"?: string | number;\n \"--rmd-window-splitter-background-size\"?: string | number;\n \"--rmd-window-splitter-x\"?: string | number;\n \"--rmd-window-splitter-y\"?: string | number;\n \"--rmd-window-splitter-z\"?: string | number;\n \"--rmd-window-splitter-position\"?: string | number;\n \"--rmd-window-splitter-backgrond-color\"?: string;\n \"--rmd-window-splitter-opacity\"?: string | number;\n }\n}\n\n/**\n * @since 6.3.1\n */\nexport interface BaseWindowSplitterClassNameOptions {\n className?: string;\n\n /**\n * Set this to `true` if the window splitter should use `position: absolute`\n * instead of `position: fixed`.\n *\n * @defaultValue `false`\n */\n disableFixed?: boolean;\n}\n\n/**\n * @since 6.0.0\n * @since 6.3.1 Extends BaseWindowSplitterClassNameOptions\n */\nexport interface WindowSplitterClassNameOptions
|
|
1
|
+
{"version":3,"sources":["../../src/window-splitter/styles.ts"],"sourcesContent":["import { cnb } from \"cnbuilder\";\n\nimport { bem } from \"../utils/bem.js\";\n\nconst styles = bem(\"rmd-window-splitter\");\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-window-splitter-size\"?: string | number;\n \"--rmd-window-splitter-background-size\"?: string | number;\n \"--rmd-window-splitter-x\"?: string | number;\n \"--rmd-window-splitter-y\"?: string | number;\n \"--rmd-window-splitter-z\"?: string | number;\n \"--rmd-window-splitter-position\"?: string | number;\n \"--rmd-window-splitter-backgrond-color\"?: string;\n \"--rmd-window-splitter-inactive-backgrond-color\"?: string;\n \"--rmd-window-splitter-opacity\"?: string | number;\n }\n}\n\n/**\n * @since 6.3.1\n */\nexport interface BaseWindowSplitterClassNameOptions {\n className?: string;\n\n /**\n * Set this to `true` if the window splitter should use `position: absolute`\n * instead of `position: fixed`.\n *\n * @defaultValue `false`\n */\n disableFixed?: boolean;\n\n /**\n * Set to `true` to enable a background-color to the `WindowSplitter` even\n * while not being interacted with by the user.\n *\n * @since 6.4.0\n * @defaultValue `false`\n */\n inactiveBackground?: boolean;\n}\n\n/**\n * @since 6.0.0\n * @since 6.3.1 Extends BaseWindowSplitterClassNameOptions\n */\nexport interface WindowSplitterClassNameOptions extends BaseWindowSplitterClassNameOptions {\n dragging?: boolean;\n reversed?: boolean;\n vertical?: boolean;\n}\n\n/**\n * @since 6.0.0\n */\nexport function windowSplitter(\n options: WindowSplitterClassNameOptions = {}\n): string {\n const {\n vertical = false,\n dragging,\n reversed,\n disableFixed,\n inactiveBackground,\n className,\n } = options;\n\n return cnb(\n styles({\n h: !vertical,\n hr: !vertical && reversed,\n v: vertical,\n vr: vertical && reversed,\n a: disableFixed,\n dragging,\n \"no-inactive-bg\": !inactiveBackground,\n }),\n className\n );\n}\n"],"names":["cnb","bem","styles","windowSplitter","options","vertical","dragging","reversed","disableFixed","inactiveBackground","className","h","hr","v","vr","a"],"mappings":"AAAA,SAASA,GAAG,QAAQ,YAAY;AAEhC,SAASC,GAAG,QAAQ,kBAAkB;AAEtC,MAAMC,SAASD,IAAI;AAkDnB;;CAEC,GACD,OAAO,SAASE,eACdC,UAA0C,CAAC,CAAC;IAE5C,MAAM,EACJC,WAAW,KAAK,EAChBC,QAAQ,EACRC,QAAQ,EACRC,YAAY,EACZC,kBAAkB,EAClBC,SAAS,EACV,GAAGN;IAEJ,OAAOJ,IACLE,OAAO;QACLS,GAAG,CAACN;QACJO,IAAI,CAACP,YAAYE;QACjBM,GAAGR;QACHS,IAAIT,YAAYE;QAChBQ,GAAGP;QACHF;QACA,kBAAkB,CAACG;IACrB,IACAC;AAEJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/window-splitter/useWindowSplitter.ts"],"sourcesContent":["\"use client\";\n\nimport { type Ref, type RefCallback } from \"react\";\n\nimport {\n type BaseDraggableOptions,\n type DraggableImplementation,\n type DraggableKeyboardEventHandlers,\n type DraggableMouseEventHandlers,\n type DraggableStateOptions,\n type DraggableTouchEventHandlers,\n useDraggable,\n} from \"../draggable/useDraggable.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\n\n/**\n * @since 6.0.0\n */\nexport interface BaseWindowSplitterOptions<\n E extends HTMLElement = HTMLButtonElement,\n> extends Omit<BaseDraggableOptions<E>, keyof DraggableTouchEventHandlers<E>> {\n /**\n * An optional id to use for the window splitter.\n *\n * @defaultValue `\"window-splitter-\" + useId()`\n */\n id?: string;\n\n /**\n * An optional ref for the window splitter element. This will be merged into\n * the {@link WindowSplitterWidgetProps.ref}.\n */\n ref?: Ref<E>;\n}\n\n/**\n * @since 6.0.0\n */\nexport type WindowSplitterOptions<E extends HTMLElement = HTMLButtonElement> =\n BaseWindowSplitterOptions<E> & DraggableStateOptions;\n\n/**\n * @since 6.0.0\n */\nexport interface WindowSplitterWidgetProps<\n E extends HTMLElement = HTMLButtonElement,\n
|
|
1
|
+
{"version":3,"sources":["../../src/window-splitter/useWindowSplitter.ts"],"sourcesContent":["\"use client\";\n\nimport { type Ref, type RefCallback } from \"react\";\n\nimport {\n type BaseDraggableOptions,\n type DraggableImplementation,\n type DraggableKeyboardEventHandlers,\n type DraggableMouseEventHandlers,\n type DraggableStateOptions,\n type DraggableTouchEventHandlers,\n useDraggable,\n} from \"../draggable/useDraggable.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\n\n/**\n * @since 6.0.0\n */\nexport interface BaseWindowSplitterOptions<\n E extends HTMLElement = HTMLButtonElement,\n> extends Omit<BaseDraggableOptions<E>, keyof DraggableTouchEventHandlers<E>> {\n /**\n * An optional id to use for the window splitter.\n *\n * @defaultValue `\"window-splitter-\" + useId()`\n */\n id?: string;\n\n /**\n * An optional ref for the window splitter element. This will be merged into\n * the {@link WindowSplitterWidgetProps.ref}.\n */\n ref?: Ref<E>;\n}\n\n/**\n * @since 6.0.0\n */\nexport type WindowSplitterOptions<E extends HTMLElement = HTMLButtonElement> =\n BaseWindowSplitterOptions<E> & DraggableStateOptions;\n\n/**\n * @since 6.0.0\n */\nexport interface WindowSplitterWidgetProps<\n E extends HTMLElement = HTMLButtonElement,\n>\n extends\n Required<DraggableMouseEventHandlers<E>>,\n Required<DraggableKeyboardEventHandlers<E>> {\n \"aria-orientation\": \"vertical\" | undefined;\n \"aria-valuenow\": number;\n \"aria-valuemin\": number;\n \"aria-valuemax\": number;\n id: string;\n ref: RefCallback<E>;\n role: \"separator\";\n reversed: boolean;\n dragging: boolean;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface WindowSplitterImplementation<\n E extends HTMLElement = HTMLButtonElement,\n> extends DraggableImplementation<E> {\n splitterProps: WindowSplitterWidgetProps<E>;\n}\n\n/**\n * Used to control the state for the `WindowSplitter` component.\n *\n * @example Custom Implementation\n * ```tsx\n * import {\n * useWindowSplitter,\n * type WindowSplitterImplementation\n * } from \"@react-md/core/window-splitter/useWindowSplitter\";\n * import { useState } from \"react\";\n *\n * // this is pretty much the `useWindowSplitter` implementation\n * export function useMyCustomWindowSplitter(): WindowSplitterImplementation {\n * const [dragging, setDragging] = useState(false);\n * const [value, setValue] = useState(0);\n * const splitter = useWindowSplitter({\n * min: 0,\n * max: 100,\n * value,\n * setValue,\n * dragging,\n * setDragging,\n * });\n *\n * return {\n * ...splitter,\n * value,\n * setValue,\n * dragging,\n * }\n * }\n * ```\n *\n * @since 6.0.0\n */\nexport function useWindowSplitter<E extends HTMLElement = HTMLButtonElement>(\n options: WindowSplitterOptions<E>\n): WindowSplitterImplementation<E> {\n const { id: propId, reversed = false, vertical } = options;\n\n const id = useEnsuredId(propId, \"splitter\");\n const draggableImplementation = useDraggable(options);\n const {\n dragging,\n percentage,\n draggableRef,\n mouseEventHandlers,\n keyboardEventHandlers,\n } = draggableImplementation;\n\n return {\n ...draggableImplementation,\n splitterProps: {\n \"aria-orientation\": vertical ? \"vertical\" : undefined,\n \"aria-valuenow\": Math.ceil(percentage * 100),\n \"aria-valuemin\": 0,\n \"aria-valuemax\": 100,\n id,\n ref: draggableRef,\n role: \"separator\",\n dragging,\n reversed,\n ...mouseEventHandlers,\n ...keyboardEventHandlers,\n },\n };\n}\n"],"names":["useDraggable","useEnsuredId","useWindowSplitter","options","id","propId","reversed","vertical","draggableImplementation","dragging","percentage","draggableRef","mouseEventHandlers","keyboardEventHandlers","splitterProps","undefined","Math","ceil","ref","role"],"mappings":"AAAA;AAIA,SAOEA,YAAY,QACP,+BAA+B;AACtC,SAASC,YAAY,QAAQ,qBAAqB;AAyDlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCC,GACD,OAAO,SAASC,kBACdC,OAAiC;IAEjC,MAAM,EAAEC,IAAIC,MAAM,EAAEC,WAAW,KAAK,EAAEC,QAAQ,EAAE,GAAGJ;IAEnD,MAAMC,KAAKH,aAAaI,QAAQ;IAChC,MAAMG,0BAA0BR,aAAaG;IAC7C,MAAM,EACJM,QAAQ,EACRC,UAAU,EACVC,YAAY,EACZC,kBAAkB,EAClBC,qBAAqB,EACtB,GAAGL;IAEJ,OAAO;QACL,GAAGA,uBAAuB;QAC1BM,eAAe;YACb,oBAAoBP,WAAW,aAAaQ;YAC5C,iBAAiBC,KAAKC,IAAI,CAACP,aAAa;YACxC,iBAAiB;YACjB,iBAAiB;YACjBN;YACAc,KAAKP;YACLQ,MAAM;YACNV;YACAH;YACA,GAAGM,kBAAkB;YACrB,GAAGC,qBAAqB;QAC1B;IACF;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-md/core",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.4.0",
|
|
4
4
|
"description": "The core components and functionality for react-md.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sass": "./dist/_core.scss",
|
|
@@ -78,44 +78,45 @@
|
|
|
78
78
|
"remove-accents": "^0.5.0"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@jest/globals": "^
|
|
82
|
-
"@jest/types": "^
|
|
83
|
-
"@microsoft/api-extractor": "^7.
|
|
84
|
-
"@swc/cli": "^0.
|
|
85
|
-
"@swc/core": "^1.
|
|
86
|
-
"@swc/jest": "^0.2.39",
|
|
81
|
+
"@jest/globals": "^30.2.0",
|
|
82
|
+
"@jest/types": "^30.2.0",
|
|
83
|
+
"@microsoft/api-extractor": "^7.55.1",
|
|
84
|
+
"@swc/cli": "^0.7.9",
|
|
85
|
+
"@swc/core": "^1.15.3",
|
|
87
86
|
"@testing-library/dom": "^10.4.1",
|
|
88
87
|
"@testing-library/jest-dom": "^6.9.1",
|
|
89
88
|
"@testing-library/react": "^16.3.0",
|
|
90
89
|
"@testing-library/user-event": "^14.6.1",
|
|
91
|
-
"@trivago/prettier-plugin-sort-imports": "^
|
|
92
|
-
"@types/lodash": "^4.17.
|
|
93
|
-
"@types/node": "^
|
|
94
|
-
"@types/react": "^18.3.
|
|
95
|
-
"@types/react-dom": "^18.3.
|
|
96
|
-
"
|
|
97
|
-
"
|
|
90
|
+
"@trivago/prettier-plugin-sort-imports": "^6.0.0",
|
|
91
|
+
"@types/lodash": "^4.17.21",
|
|
92
|
+
"@types/node": "^24.10.1",
|
|
93
|
+
"@types/react": "^18.3.27",
|
|
94
|
+
"@types/react-dom": "^18.3.7",
|
|
95
|
+
"@vitejs/plugin-react-swc": "^4.2.2",
|
|
96
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
97
|
+
"chokidar": "^5.0.0",
|
|
98
|
+
"eslint": "^9.39.1",
|
|
98
99
|
"filesize": "^11.0.13",
|
|
99
|
-
"glob": "
|
|
100
|
-
"
|
|
101
|
-
"jest-environment-jsdom": "^29.7.0",
|
|
102
|
-
"jest-watch-typeahead": "^2.2.2",
|
|
100
|
+
"glob": "13.0.0",
|
|
101
|
+
"jsdom": "^27.2.0",
|
|
103
102
|
"lodash": "^4.17.21",
|
|
104
103
|
"lz-string": "^1.5.0",
|
|
105
|
-
"npm-run-
|
|
106
|
-
"prettier": "^3.
|
|
107
|
-
"
|
|
108
|
-
"
|
|
104
|
+
"npm-run-all2": "^8.0.2",
|
|
105
|
+
"prettier": "^3.7.4",
|
|
106
|
+
"react": "^18.3.1",
|
|
107
|
+
"react-dom": "^18.3.1",
|
|
108
|
+
"stylelint": "^16.26.1",
|
|
109
|
+
"ts-morph": "^27.0.2",
|
|
109
110
|
"ts-node": "^10.9.2",
|
|
110
|
-
"tsx": "^4.
|
|
111
|
-
"typescript": "^5.
|
|
111
|
+
"tsx": "^4.21.0",
|
|
112
|
+
"typescript": "^5.9.3",
|
|
112
113
|
"vitest": "^3.2.4",
|
|
113
114
|
"@react-md/eslint-config": "1.0.0",
|
|
114
115
|
"@react-md/stylelint-config": "1.0.0"
|
|
115
116
|
},
|
|
116
117
|
"peerDependencies": {
|
|
117
|
-
"@jest/globals": ">= 29 <=
|
|
118
|
-
"@jest/types": ">= 29 <=
|
|
118
|
+
"@jest/globals": ">= 29 <=31",
|
|
119
|
+
"@jest/types": ">= 29 <=31",
|
|
119
120
|
"@testing-library/dom": ">= 9",
|
|
120
121
|
"@testing-library/jest-dom": ">= 6",
|
|
121
122
|
"@testing-library/react": ">= 14",
|
|
@@ -157,8 +158,8 @@
|
|
|
157
158
|
"access": "public"
|
|
158
159
|
},
|
|
159
160
|
"volta": {
|
|
160
|
-
"node": "
|
|
161
|
-
"pnpm": "10.
|
|
161
|
+
"node": "24.11.1",
|
|
162
|
+
"pnpm": "10.24.0"
|
|
162
163
|
},
|
|
163
164
|
"scripts": {
|
|
164
165
|
"run-script": "tsx --tsconfig scripts/tsconfig.json",
|
|
@@ -176,9 +177,16 @@
|
|
|
176
177
|
"clean-dist": "rm -rf dist",
|
|
177
178
|
"clean": "rm -rf .turbo dist node_modules",
|
|
178
179
|
"typecheck": "tsc --noEmit",
|
|
180
|
+
"check-format": "prettier --check .",
|
|
181
|
+
"format": "prettier --write .",
|
|
179
182
|
"lint-scripts": "eslint \"src/**/*.{ts,tsx,js,jsx,cjs,mjs}\"",
|
|
180
183
|
"lint-styles": "stylelint \"src/**/*.{css,scss}\"",
|
|
181
184
|
"lint": "npm-run-all lint-scripts lint-styles",
|
|
182
|
-
"
|
|
185
|
+
"lint-fix": "npm-run-all \"lint-scripts --fix\" \"lint-styles --fix\"",
|
|
186
|
+
"test": "vitest",
|
|
187
|
+
"test-run": "vitest run",
|
|
188
|
+
"test-coverage": "vitest --coverage",
|
|
189
|
+
"test-run-coverage": "pnpm test-run --coverage",
|
|
190
|
+
"test-run-snapshot": "pnpm test-run -u"
|
|
183
191
|
}
|
|
184
192
|
}
|
package/src/CoreProviders.tsx
CHANGED
package/src/app-bar/AppBar.tsx
CHANGED
|
@@ -27,8 +27,7 @@ export type CustomAppBarComponent = ElementType<
|
|
|
27
27
|
* @since 6.0.0 Added the {@link stacked} and {@link scrollbarOffset} props.
|
|
28
28
|
*/
|
|
29
29
|
export interface AppBarProps
|
|
30
|
-
extends HTMLAttributes<HTMLDivElement>,
|
|
31
|
-
AppBarClassNameOptions {
|
|
30
|
+
extends HTMLAttributes<HTMLDivElement>, AppBarClassNameOptions {
|
|
32
31
|
/** @defaultValue `fixed ? "header" : "div"` */
|
|
33
32
|
as?: CustomAppBarComponent;
|
|
34
33
|
}
|
|
@@ -13,8 +13,7 @@ import { type AppBarTitleClassNameOptions, appBarTitle } from "./styles.js";
|
|
|
13
13
|
* will default to `"ellipsis"` which is new as well.
|
|
14
14
|
*/
|
|
15
15
|
export interface AppBarTitleProps
|
|
16
|
-
extends TypographyProps,
|
|
17
|
-
AppBarTitleClassNameOptions {
|
|
16
|
+
extends TypographyProps, AppBarTitleClassNameOptions {
|
|
18
17
|
/** @defaultValue `"headline-6"` */
|
|
19
18
|
type?: TypographyType;
|
|
20
19
|
|
|
@@ -16,7 +16,9 @@ import {
|
|
|
16
16
|
*/
|
|
17
17
|
export interface AutocompleteListboxChildrenProps<
|
|
18
18
|
Option extends AutocompleteOption,
|
|
19
|
-
>
|
|
19
|
+
>
|
|
20
|
+
extends
|
|
21
|
+
Required<AutocompleteGetOptionProps<Option>>,
|
|
20
22
|
Required<AutocompleteGetOptionLabel<Option>> {
|
|
21
23
|
query: string;
|
|
22
24
|
options: readonly Option[];
|
|
@@ -301,8 +301,9 @@ export type AutocompleteOptionLabelExtractor<
|
|
|
301
301
|
/**
|
|
302
302
|
* @since 6.0.0
|
|
303
303
|
*/
|
|
304
|
-
export interface AutocompleteFilteringOptions<
|
|
305
|
-
extends
|
|
304
|
+
export interface AutocompleteFilteringOptions<
|
|
305
|
+
Option extends AutocompleteOption,
|
|
306
|
+
> extends AutocompleteGetOptionLabel<Option> {
|
|
306
307
|
/**
|
|
307
308
|
* The list of options that can be shown within the autocomplete and filtered
|
|
308
309
|
* based on the current query.
|
|
@@ -390,7 +391,9 @@ export interface AutocompleteFilteringOptions<Option extends AutocompleteOption>
|
|
|
390
391
|
*/
|
|
391
392
|
export interface AutocompleteFilterAndListboxOptions<
|
|
392
393
|
Option extends AutocompleteOption,
|
|
393
|
-
>
|
|
394
|
+
>
|
|
395
|
+
extends
|
|
396
|
+
AutocompleteFilteringOptions<Option>,
|
|
394
397
|
AutocompleteGetOptionProps<Option>,
|
|
395
398
|
OptionSelectedIconProps {
|
|
396
399
|
/**
|
|
@@ -429,7 +432,9 @@ export interface AutocompleteEditableComboboxOptions<
|
|
|
429
432
|
Option extends AutocompleteOption,
|
|
430
433
|
ComboboxEl extends EditableHTMLElement = HTMLInputElement,
|
|
431
434
|
PopupEl extends HTMLElement = HTMLElement,
|
|
432
|
-
>
|
|
435
|
+
>
|
|
436
|
+
extends
|
|
437
|
+
EditableComboboxOptions<ComboboxEl, PopupEl>,
|
|
433
438
|
AutocompleteFilterAndListboxOptions<Option> {
|
|
434
439
|
onBlur?: FocusEventHandler<ComboboxEl>;
|
|
435
440
|
onChange?: ChangeEventHandler<ComboboxEl>;
|
|
@@ -481,7 +486,9 @@ export interface AutocompleteOptions<
|
|
|
481
486
|
Option extends AutocompleteOption,
|
|
482
487
|
ComboboxEl extends EditableHTMLElement = HTMLInputElement,
|
|
483
488
|
PopupEl extends HTMLElement = HTMLElement,
|
|
484
|
-
>
|
|
489
|
+
>
|
|
490
|
+
extends
|
|
491
|
+
AutocompleteEditableComboboxOptions<Option, ComboboxEl, PopupEl>,
|
|
485
492
|
AutocompleteUnknownQueryAndValueOptions<Option> {}
|
|
486
493
|
|
|
487
494
|
/**
|
|
@@ -502,8 +509,8 @@ export interface AutocompleteComboboxProps<
|
|
|
502
509
|
export interface AutocompleteListboxProps<
|
|
503
510
|
T extends AutocompleteOption = AutocompleteOption,
|
|
504
511
|
PopupEl extends HTMLElement = HTMLElement,
|
|
505
|
-
>
|
|
506
|
-
|
|
512
|
+
>
|
|
513
|
+
extends Omit<ComboboxMenuProps<PopupEl>, "ref">, OptionSelectedIconProps {
|
|
507
514
|
value: T | null | readonly T[];
|
|
508
515
|
setValue: Dispatch<T>;
|
|
509
516
|
onEnter: (appearing: boolean) => void;
|
|
@@ -513,8 +520,7 @@ export interface AutocompleteListboxProps<
|
|
|
513
520
|
* @since 6.0.0
|
|
514
521
|
*/
|
|
515
522
|
export interface ConfigurableAutocompleteListboxProps
|
|
516
|
-
extends ConfigurableComboboxMenuProps,
|
|
517
|
-
OptionSelectedIconProps {
|
|
523
|
+
extends ConfigurableComboboxMenuProps, OptionSelectedIconProps {
|
|
518
524
|
id?: string;
|
|
519
525
|
}
|
|
520
526
|
|
|
@@ -550,16 +556,14 @@ export interface ConfigurableAutocompleteClearButtonProps extends ButtonProps {
|
|
|
550
556
|
* @internal
|
|
551
557
|
* @since 6.0.0
|
|
552
558
|
*/
|
|
553
|
-
export interface AutocompleteClearButtonProps
|
|
554
|
-
extends ConfigurableAutocompleteClearButtonProps {
|
|
559
|
+
export interface AutocompleteClearButtonProps extends ConfigurableAutocompleteClearButtonProps {
|
|
555
560
|
onClick: MouseEventHandler<HTMLButtonElement>;
|
|
556
561
|
}
|
|
557
562
|
|
|
558
563
|
/**
|
|
559
564
|
* @since 6.0.0
|
|
560
565
|
*/
|
|
561
|
-
export interface ConfigurableAutocompleteDropdownButtonProps
|
|
562
|
-
extends ButtonProps {
|
|
566
|
+
export interface ConfigurableAutocompleteDropdownButtonProps extends ButtonProps {
|
|
563
567
|
/** @defaultValue `AutocompleteProps.listboxLabel` */
|
|
564
568
|
"aria-label"?: string;
|
|
565
569
|
/** @defaultValue `AutocompleteProps.listboxLabelledby` */
|
|
@@ -576,8 +580,7 @@ export interface ConfigurableAutocompleteDropdownButtonProps
|
|
|
576
580
|
/**
|
|
577
581
|
* @since 6.0.0
|
|
578
582
|
*/
|
|
579
|
-
export interface AutocompleteDropdownButtonProps
|
|
580
|
-
extends ConfigurableAutocompleteDropdownButtonProps {
|
|
583
|
+
export interface AutocompleteDropdownButtonProps extends ConfigurableAutocompleteDropdownButtonProps {
|
|
581
584
|
"aria-controls": string;
|
|
582
585
|
onClick: MouseEventHandler<HTMLButtonElement>;
|
|
583
586
|
visible: boolean;
|
|
@@ -586,8 +589,7 @@ export interface AutocompleteDropdownButtonProps
|
|
|
586
589
|
/**
|
|
587
590
|
* @since 6.0.0
|
|
588
591
|
*/
|
|
589
|
-
export interface AutocompleteCircularProgressProps
|
|
590
|
-
extends CircularProgressProps {
|
|
592
|
+
export interface AutocompleteCircularProgressProps extends CircularProgressProps {
|
|
591
593
|
/** @defaultValue `"Loading"` */
|
|
592
594
|
"aria-label"?: string;
|
|
593
595
|
|
|
@@ -616,7 +618,9 @@ export interface AutocompleteWithQueryImplementation<
|
|
|
616
618
|
Option extends AutocompleteOption,
|
|
617
619
|
ComboboxEl extends EditableHTMLElement = HTMLInputElement,
|
|
618
620
|
PopupEl extends HTMLElement = HTMLElement,
|
|
619
|
-
>
|
|
621
|
+
>
|
|
622
|
+
extends
|
|
623
|
+
EditableComboboxImplementation<ComboboxEl, PopupEl>,
|
|
620
624
|
Required<AutocompleteGetOptionProps<Option>>,
|
|
621
625
|
Required<AutocompleteGetOptionLabel<Option>> {
|
|
622
626
|
query: string;
|
|
@@ -700,7 +704,8 @@ export interface AutocompleteImplementation<
|
|
|
700
704
|
* @since 6.0.0
|
|
701
705
|
*/
|
|
702
706
|
export interface AutocompleteBaseProps<Option extends AutocompleteOption>
|
|
703
|
-
extends
|
|
707
|
+
extends
|
|
708
|
+
Omit<TextFieldProps, "value" | "defaultValue">,
|
|
704
709
|
AutocompleteFilterAndListboxOptions<Option>,
|
|
705
710
|
ComboboxVisibilityOptions {
|
|
706
711
|
inputRef?: Ref<HTMLInputElement>;
|