@react-md/core 6.3.4 → 6.5.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/_a11y.scss +3 -1
- package/dist/_base.scss +3 -0
- package/dist/_box-shadows.scss +20 -12
- package/dist/_core.scss +2 -1
- package/dist/_utils.scss +32 -10
- package/dist/app-bar/AppBar.js.map +1 -1
- package/dist/app-bar/AppBarTitle.js.map +1 -1
- package/dist/app-bar/_app-bar.scss +3 -3
- package/dist/autocomplete/AutocompleteListboxChildren.js.map +1 -1
- package/dist/autocomplete/_autocomplete.scss +20 -16
- 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/avatar/_avatar.scss +2 -1
- package/dist/button/Button.js.map +1 -1
- package/dist/button/FloatingActionButton.js.map +1 -1
- package/dist/button/_button.scss +9 -5
- 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/card/_card.scss +6 -6
- package/dist/chip/Chip.js.map +1 -1
- package/dist/chip/_chip.scss +6 -6
- 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/dialog/_dialog.scss +6 -6
- package/dist/divider/Divider.js.map +1 -1
- package/dist/divider/_divider.scss +6 -2
- 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.d.ts +24 -0
- package/dist/form/Select.js +14 -3
- package/dist/form/Select.js.map +1 -1
- package/dist/form/SelectedOption.d.ts +1 -2
- package/dist/form/SelectedOption.js +2 -2
- package/dist/form/SelectedOption.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/_input-toggle.scss +6 -5
- package/dist/form/_label.scss +2 -2
- package/dist/form/_legend.scss +77 -0
- package/dist/form/_slider.scss +7 -5
- package/dist/form/_switch.scss +7 -5
- package/dist/form/_text-field.scss +52 -15
- package/dist/form/defaultGetSelectedOptionChildren.d.ts +1 -0
- 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/getSelectedOptionChildren.d.ts +1 -0
- 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/_interaction.scss +5 -3
- 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/snackbar/_snackbar.scss +3 -3
- 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/_tabs.scss +5 -6
- 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/theme/_a11y.scss +3 -1
- package/dist/theme/_theme.scss +16 -12
- 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 +65 -19
- 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 +38 -30
- 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 +55 -3
- package/src/form/SelectedOption.tsx +2 -4
- 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,14 @@ $variables: (
|
|
|
106
125
|
/// layer behavior
|
|
107
126
|
@mixin styles($disable-layer: false) {
|
|
108
127
|
@if not $disable-everything {
|
|
128
|
+
// prettier-ignore
|
|
129
|
+
$pseudo-selectors: if(
|
|
130
|
+
sass(not $disable-inactive-background-color): "&::before, ";
|
|
131
|
+
else: "",
|
|
132
|
+
) + "&::after";
|
|
133
|
+
|
|
109
134
|
@include utils.optional-layer(window-splitter, $disable-layer) {
|
|
110
135
|
.rmd-window-splitter {
|
|
111
|
-
@include use-var(opacity);
|
|
112
|
-
|
|
113
136
|
background-color: transparent;
|
|
114
137
|
border: 0;
|
|
115
138
|
inset: 0;
|
|
@@ -117,24 +140,47 @@ $variables: (
|
|
|
117
140
|
padding: 0;
|
|
118
141
|
position: fixed;
|
|
119
142
|
transform: translate3d(get-var(x, 0), get-var(y, 0), get-var(z, 0));
|
|
120
|
-
transition: opacity transition.$linear-duration;
|
|
121
143
|
z-index: $z-index;
|
|
122
144
|
|
|
123
|
-
|
|
124
|
-
@include use-var(
|
|
125
|
-
background-color,
|
|
126
|
-
$fallback: if(
|
|
127
|
-
$background-color == interaction.get-var(focus-color),
|
|
128
|
-
$background-color,
|
|
129
|
-
null
|
|
130
|
-
)
|
|
131
|
-
);
|
|
132
|
-
|
|
145
|
+
#{$pseudo-selectors} {
|
|
133
146
|
content: "";
|
|
134
147
|
inset: 0;
|
|
135
148
|
position: absolute;
|
|
136
149
|
}
|
|
137
150
|
|
|
151
|
+
&::after {
|
|
152
|
+
// prettier-ignore
|
|
153
|
+
$fallback: if(
|
|
154
|
+
sass($background-color == interaction.get-var(focus-color)): $background-color;
|
|
155
|
+
else: null
|
|
156
|
+
);
|
|
157
|
+
@include use-var(background-color, $fallback: $fallback);
|
|
158
|
+
@include use-var(opacity);
|
|
159
|
+
|
|
160
|
+
transition: opacity transition.$linear-duration;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
@if not $disable-inactive-background-color {
|
|
164
|
+
&--no-inactive-bg::before {
|
|
165
|
+
display: none;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
&::before {
|
|
169
|
+
// prettier-ignore
|
|
170
|
+
$fallback: if(
|
|
171
|
+
sass($inactive-background-color == divider.get-var(color)): $inactive-background-color;
|
|
172
|
+
else: null,
|
|
173
|
+
);
|
|
174
|
+
@include use-var(
|
|
175
|
+
background-color,
|
|
176
|
+
inactive-background-color,
|
|
177
|
+
$fallback
|
|
178
|
+
);
|
|
179
|
+
|
|
180
|
+
pointer-events: none;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
138
184
|
@if not $disable-horizontal {
|
|
139
185
|
&--h {
|
|
140
186
|
@include set-var(x, get-var(position));
|
|
@@ -142,7 +188,7 @@ $variables: (
|
|
|
142
188
|
|
|
143
189
|
cursor: col-resize;
|
|
144
190
|
|
|
145
|
-
|
|
191
|
+
#{$pseudo-selectors} {
|
|
146
192
|
@include use-var(width, background-size);
|
|
147
193
|
}
|
|
148
194
|
|
|
@@ -158,7 +204,7 @@ $variables: (
|
|
|
158
204
|
calc(100dvw - get-var(size) - get-var(position))
|
|
159
205
|
);
|
|
160
206
|
|
|
161
|
-
|
|
207
|
+
#{$pseudo-selectors} {
|
|
162
208
|
margin-left: auto;
|
|
163
209
|
}
|
|
164
210
|
|
|
@@ -168,7 +214,7 @@ $variables: (
|
|
|
168
214
|
calc(-100dvw + get-var(size) + get-var(position))
|
|
169
215
|
);
|
|
170
216
|
|
|
171
|
-
|
|
217
|
+
#{$pseudo-selectors} {
|
|
172
218
|
margin-left: 0;
|
|
173
219
|
margin-right: auto;
|
|
174
220
|
}
|
|
@@ -185,7 +231,7 @@ $variables: (
|
|
|
185
231
|
cursor: row-resize;
|
|
186
232
|
width: 100%;
|
|
187
233
|
|
|
188
|
-
|
|
234
|
+
#{$pseudo-selectors} {
|
|
189
235
|
@include use-var(height, background-size);
|
|
190
236
|
}
|
|
191
237
|
}
|
|
@@ -197,7 +243,7 @@ $variables: (
|
|
|
197
243
|
calc(100dvh - get-var(size) - get-var(position))
|
|
198
244
|
);
|
|
199
245
|
|
|
200
|
-
|
|
246
|
+
#{$pseudo-selectors} {
|
|
201
247
|
transform: translateY(
|
|
202
248
|
calc(get-var(size) - get-var(background-size))
|
|
203
249
|
);
|
|
@@ -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.5.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.2",
|
|
84
|
+
"@swc/cli": "^0.7.9",
|
|
85
|
+
"@swc/core": "^1.15.7",
|
|
87
86
|
"@testing-library/dom": "^10.4.1",
|
|
88
87
|
"@testing-library/jest-dom": "^6.9.1",
|
|
89
|
-
"@testing-library/react": "^16.3.
|
|
88
|
+
"@testing-library/react": "^16.3.1",
|
|
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.4",
|
|
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.2",
|
|
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.3.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>;
|