@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
|
@@ -13,8 +13,7 @@ import { textArea } from "./textAreaStyles.js";
|
|
|
13
13
|
* @since 6.0.0
|
|
14
14
|
* @internal
|
|
15
15
|
*/
|
|
16
|
-
export interface ResizingTextAreaWrapperProps
|
|
17
|
-
extends HTMLAttributes<HTMLDivElement> {
|
|
16
|
+
export interface ResizingTextAreaWrapperProps extends HTMLAttributes<HTMLDivElement> {
|
|
18
17
|
maskId: string;
|
|
19
18
|
maskRef: Ref<HTMLTextAreaElement>;
|
|
20
19
|
defaultValue?: TextareaHTMLAttributes<HTMLTextAreaElement>["defaultValue"];
|
package/src/form/Select.tsx
CHANGED
|
@@ -95,7 +95,8 @@ export type SelectChangeEvent<Value extends string> =
|
|
|
95
95
|
* @since 6.0.0 Rewritten with a new API.
|
|
96
96
|
*/
|
|
97
97
|
export interface SelectProps<Value extends string>
|
|
98
|
-
extends
|
|
98
|
+
extends
|
|
99
|
+
Omit<TextFieldContainerProps, "label">,
|
|
99
100
|
Pick<InputHTMLAttributes<HTMLInputElement>, "form" | "required">,
|
|
100
101
|
UserAgentAutocompleteProps {
|
|
101
102
|
/**
|
package/src/form/Slider.tsx
CHANGED
|
@@ -32,8 +32,7 @@ export interface SliderAddonProps {
|
|
|
32
32
|
* a `Fieldset` instead.
|
|
33
33
|
*/
|
|
34
34
|
export interface SliderContainerProps
|
|
35
|
-
extends HTMLAttributes<HTMLDivElement>,
|
|
36
|
-
SliderAddonProps {
|
|
35
|
+
extends HTMLAttributes<HTMLDivElement>, SliderAddonProps {
|
|
37
36
|
vertical: boolean;
|
|
38
37
|
}
|
|
39
38
|
|
package/src/form/SliderThumb.tsx
CHANGED
|
@@ -83,8 +83,10 @@ export interface SliderThumbPresentation {
|
|
|
83
83
|
/**
|
|
84
84
|
* @since 6.0.0
|
|
85
85
|
*/
|
|
86
|
-
export interface ConfigurableSliderThumbProps
|
|
87
|
-
|
|
86
|
+
export interface ConfigurableSliderThumbProps extends Omit<
|
|
87
|
+
HTMLAttributes<HTMLSpanElement>,
|
|
88
|
+
"onChange"
|
|
89
|
+
> {
|
|
88
90
|
name?: string;
|
|
89
91
|
}
|
|
90
92
|
|
|
@@ -94,7 +96,8 @@ export interface ConfigurableSliderThumbProps
|
|
|
94
96
|
* @since 6.0.0 Internal only component.
|
|
95
97
|
*/
|
|
96
98
|
export interface SliderThumbProps
|
|
97
|
-
extends
|
|
99
|
+
extends
|
|
100
|
+
ConfigurableSliderThumbProps,
|
|
98
101
|
Required<SliderValueOptions>,
|
|
99
102
|
Required<SliderThumbPresentation> {
|
|
100
103
|
id: string;
|
package/src/form/SliderTrack.tsx
CHANGED
|
@@ -14,7 +14,8 @@ import {
|
|
|
14
14
|
* @since 6.0.0 Updated to be internal only.
|
|
15
15
|
*/
|
|
16
16
|
export interface SliderTrackProps
|
|
17
|
-
extends
|
|
17
|
+
extends
|
|
18
|
+
HTMLAttributes<HTMLSpanElement>,
|
|
18
19
|
ClosestThumbEventHandlersOptions,
|
|
19
20
|
ThumbOffsetsOptions {
|
|
20
21
|
animate: boolean;
|
|
@@ -127,8 +127,7 @@ export interface SliderMarksOptions {
|
|
|
127
127
|
* @since 6.0.0
|
|
128
128
|
*/
|
|
129
129
|
export interface SliderValueMarksProps
|
|
130
|
-
extends RangeStepsOptions,
|
|
131
|
-
Required<SliderMarksOptions> {
|
|
130
|
+
extends RangeStepsOptions, Required<SliderMarksOptions> {
|
|
132
131
|
vertical: boolean;
|
|
133
132
|
thumb1Value: number;
|
|
134
133
|
thumb2Value: number;
|
package/src/form/Switch.tsx
CHANGED
|
@@ -33,7 +33,8 @@ declare module "react" {
|
|
|
33
33
|
* `FormMessage` behavior.
|
|
34
34
|
*/
|
|
35
35
|
export interface SwitchProps
|
|
36
|
-
extends
|
|
36
|
+
extends
|
|
37
|
+
InputHTMLAttributes<HTMLInputElement>,
|
|
37
38
|
InputToggleLabelProps,
|
|
38
39
|
FormMessageContainerExtension,
|
|
39
40
|
FormComponentStates {
|
package/src/form/TextArea.tsx
CHANGED
|
@@ -35,8 +35,7 @@ declare module "react" {
|
|
|
35
35
|
* @since 6.0.0 Added `containerProps`.
|
|
36
36
|
*/
|
|
37
37
|
export interface TextAreaProps
|
|
38
|
-
extends FormFieldOptions,
|
|
39
|
-
TextareaHTMLAttributes<HTMLTextAreaElement> {
|
|
38
|
+
extends FormFieldOptions, TextareaHTMLAttributes<HTMLTextAreaElement> {
|
|
40
39
|
/** @defaultValue `"text-area-" + useId()` */
|
|
41
40
|
id?: string;
|
|
42
41
|
|
package/src/form/TextField.tsx
CHANGED
|
@@ -51,7 +51,8 @@ export type TextFieldInputAttributes = Omit<
|
|
|
51
51
|
* @since 6.0.0 Removed the `containerRef` prop.
|
|
52
52
|
*/
|
|
53
53
|
export interface TextFieldProps
|
|
54
|
-
extends
|
|
54
|
+
extends
|
|
55
|
+
TextFieldInputAttributes,
|
|
55
56
|
UserAgentAutocompleteProps,
|
|
56
57
|
FormFieldOptions {
|
|
57
58
|
/**
|
|
@@ -8,8 +8,7 @@ import { textFieldContainer } from "./textFieldContainerStyles.js";
|
|
|
8
8
|
import { type TextFieldContainerOptions } from "./types.js";
|
|
9
9
|
|
|
10
10
|
export interface TextFieldContainerProps
|
|
11
|
-
extends HTMLAttributes<HTMLDivElement>,
|
|
12
|
-
TextFieldContainerOptions {
|
|
11
|
+
extends HTMLAttributes<HTMLDivElement>, TextFieldContainerOptions {
|
|
13
12
|
/**
|
|
14
13
|
* Set this to `true` if there is a floating label with the `TextField` or
|
|
15
14
|
* `TextArea`.
|
|
@@ -8,6 +8,11 @@ const styles = bem("rmd-fieldset");
|
|
|
8
8
|
export interface FieldsetClassNameOptions {
|
|
9
9
|
className?: string;
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* @defaultValue `false`
|
|
13
|
+
*/
|
|
14
|
+
fullWidth?: boolean;
|
|
15
|
+
|
|
11
16
|
/**
|
|
12
17
|
* Set this to `true` to enable the default browser styles for a fieldset.
|
|
13
18
|
*
|
|
@@ -17,19 +22,29 @@ export interface FieldsetClassNameOptions {
|
|
|
17
22
|
browserStyles?: boolean;
|
|
18
23
|
|
|
19
24
|
/**
|
|
25
|
+
* @since 6.4.0
|
|
20
26
|
* @defaultValue `false`
|
|
21
27
|
*/
|
|
22
|
-
|
|
28
|
+
floatingLegend?: boolean;
|
|
23
29
|
}
|
|
24
30
|
|
|
25
31
|
/**
|
|
26
32
|
* @since 6.0.0
|
|
27
33
|
*/
|
|
28
34
|
export function fieldset(options: FieldsetClassNameOptions = {}): string {
|
|
29
|
-
const {
|
|
35
|
+
const {
|
|
36
|
+
className,
|
|
37
|
+
fullWidth,
|
|
38
|
+
browserStyles = false,
|
|
39
|
+
floatingLegend,
|
|
40
|
+
} = options;
|
|
30
41
|
|
|
31
42
|
return cnb(
|
|
32
|
-
styles({
|
|
43
|
+
styles({
|
|
44
|
+
unstyled: !browserStyles,
|
|
45
|
+
"full-width": fullWidth,
|
|
46
|
+
"floating-legend": floatingLegend,
|
|
47
|
+
}),
|
|
33
48
|
className
|
|
34
49
|
);
|
|
35
50
|
}
|
|
@@ -22,8 +22,10 @@ const styles = bem("rmd-input-toggle");
|
|
|
22
22
|
export type InputToggleSize = "auto" | "small" | "dense" | "normal" | "large";
|
|
23
23
|
|
|
24
24
|
/** @since 6.0.0 */
|
|
25
|
-
export interface InputToggleClassNameOptions
|
|
26
|
-
|
|
25
|
+
export interface InputToggleClassNameOptions extends Omit<
|
|
26
|
+
FormComponentStates,
|
|
27
|
+
"readOnly"
|
|
28
|
+
> {
|
|
27
29
|
className?: string;
|
|
28
30
|
type: "checkbox" | "radio";
|
|
29
31
|
|
package/src/form/labelStyles.ts
CHANGED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { cnb } from "cnbuilder";
|
|
2
|
+
|
|
3
|
+
import { cssUtils } from "../cssUtils.js";
|
|
4
|
+
import { bem } from "../utils/bem.js";
|
|
5
|
+
import { getFormConfig } from "./formConfig.js";
|
|
6
|
+
import { label } from "./labelStyles.js";
|
|
7
|
+
import { type FormTheme, type LabelClassNameOptions } from "./types.js";
|
|
8
|
+
|
|
9
|
+
const styles = bem("rmd-legend");
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @since 6.4.0
|
|
13
|
+
*/
|
|
14
|
+
export type LegendLabelClassNameOptions = Pick<
|
|
15
|
+
LabelClassNameOptions,
|
|
16
|
+
"active" | "gap" | "dense" | "error" | "stacked" | "disabled" | "reversed"
|
|
17
|
+
>;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @since 6.4.0
|
|
21
|
+
*/
|
|
22
|
+
export interface LegendClassNameOptions extends LegendLabelClassNameOptions {
|
|
23
|
+
className?: string;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @defaultValue `false`
|
|
27
|
+
*/
|
|
28
|
+
srOnly?: boolean;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Set this to `true` to make the `<legend>` have the styles of a floating label.
|
|
32
|
+
* This requires the parent `<fieldset>` to have the `floatingLegend` flag
|
|
33
|
+
* enabled.
|
|
34
|
+
*
|
|
35
|
+
* @defaultValue `false`
|
|
36
|
+
*/
|
|
37
|
+
floating?: boolean;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* This will only apply if {@link floating} is `true`.
|
|
41
|
+
*
|
|
42
|
+
* @see {@link FormTheme}
|
|
43
|
+
* @defaultValue `getFormConfig("theme")`
|
|
44
|
+
*/
|
|
45
|
+
theme?: FormTheme;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* This will only apply if {@link floating} is `true`.
|
|
49
|
+
*
|
|
50
|
+
* @see {@link LabelClassNameOptions.active}
|
|
51
|
+
* @defaultValue `false`
|
|
52
|
+
*/
|
|
53
|
+
active?: boolean;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* This will only apply if {@link floating} is `true`.
|
|
57
|
+
*
|
|
58
|
+
* @see {@link LabelClassNameOptions.gap}
|
|
59
|
+
* @defaultValue `false`
|
|
60
|
+
*/
|
|
61
|
+
gap?: boolean;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* This will only apply if {@link floating} is `true`.
|
|
65
|
+
*
|
|
66
|
+
* @see {@link LabelClassNameOptions.disabled}
|
|
67
|
+
* @defaultValue `false`
|
|
68
|
+
*/
|
|
69
|
+
disabled?: boolean;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* This will only apply if {@link floating} is `true`.
|
|
73
|
+
*
|
|
74
|
+
* @see {@link LabelClassNameOptions.dense}
|
|
75
|
+
* @defaultValue `false`
|
|
76
|
+
*/
|
|
77
|
+
dense?: boolean;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* This will only apply if {@link floating} is `true`.
|
|
81
|
+
*
|
|
82
|
+
* @see {@link LabelClassNameOptions.error}
|
|
83
|
+
* @defaultValue `false`
|
|
84
|
+
*/
|
|
85
|
+
error?: boolean;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* This will only apply if {@link floating} is `true`.
|
|
89
|
+
*
|
|
90
|
+
* @see {@link LabelClassNameOptions.stacked}
|
|
91
|
+
* @defaultValue `false`
|
|
92
|
+
*/
|
|
93
|
+
stacked?: boolean;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* This will only apply if {@link floating} is `true`.
|
|
97
|
+
*
|
|
98
|
+
* @see {@link LabelClassNameOptions.reversed}
|
|
99
|
+
* @defaultValue `false`
|
|
100
|
+
*/
|
|
101
|
+
reversed?: boolean;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* @since 6.4.0
|
|
106
|
+
*/
|
|
107
|
+
export function legend(options: LegendClassNameOptions = {}): string {
|
|
108
|
+
const {
|
|
109
|
+
className,
|
|
110
|
+
srOnly,
|
|
111
|
+
floating,
|
|
112
|
+
theme = getFormConfig("theme"),
|
|
113
|
+
...labelOptions
|
|
114
|
+
} = options;
|
|
115
|
+
|
|
116
|
+
return cnb(
|
|
117
|
+
styles({
|
|
118
|
+
floating,
|
|
119
|
+
"floating-filled": floating && theme === "filled",
|
|
120
|
+
"floating-underline": floating && theme === "underline",
|
|
121
|
+
"floating-outline": floating && theme === "outline",
|
|
122
|
+
}),
|
|
123
|
+
floating &&
|
|
124
|
+
label({
|
|
125
|
+
...labelOptions,
|
|
126
|
+
floating: true,
|
|
127
|
+
floatingActive: true,
|
|
128
|
+
}),
|
|
129
|
+
cssUtils({ srOnly }),
|
|
130
|
+
className
|
|
131
|
+
);
|
|
132
|
+
}
|
package/src/form/selectUtils.ts
CHANGED
|
@@ -6,8 +6,9 @@ import { type MenuItemProps } from "../menu/MenuItem.js";
|
|
|
6
6
|
* @internal
|
|
7
7
|
* @since 6.0.0
|
|
8
8
|
*/
|
|
9
|
-
export interface SelectOption<
|
|
10
|
-
extends
|
|
9
|
+
export interface SelectOption<
|
|
10
|
+
Value extends string | number = string,
|
|
11
|
+
> extends MenuItemProps {
|
|
11
12
|
value: Value;
|
|
12
13
|
}
|
|
13
14
|
|
|
@@ -8,8 +8,7 @@ const styles = bem("rmd-text-field-container");
|
|
|
8
8
|
|
|
9
9
|
/** @since 6.0.0 */
|
|
10
10
|
export interface TextFieldContainerClassNameOptions
|
|
11
|
-
extends FormThemeOptions,
|
|
12
|
-
FormComponentStates {
|
|
11
|
+
extends FormThemeOptions, FormComponentStates {
|
|
13
12
|
className?: string;
|
|
14
13
|
|
|
15
14
|
/** @defaultValue `false` */
|
package/src/form/types.ts
CHANGED
|
@@ -31,15 +31,27 @@ declare module "react" {
|
|
|
31
31
|
"--rmd-text-field-addon-spacing"?: string | number;
|
|
32
32
|
"--rmd-text-field-addon-margin-top"?: string | number;
|
|
33
33
|
"--rmd-text-field-addon-left-offset"?: string | number;
|
|
34
|
+
/** @since 6.4.0 */
|
|
35
|
+
"--rmd-text-field-base-height"?: string | number;
|
|
34
36
|
"--rmd-text-field-height"?: string | number;
|
|
37
|
+
/** @since 6.4.0 */
|
|
38
|
+
"--rmd-text-field-dense-height"?: string | number;
|
|
39
|
+
/** @since 6.4.0 */
|
|
40
|
+
"--rmd-text-field-label-height"?: string | number;
|
|
41
|
+
/** @since 6.4.0 */
|
|
42
|
+
"--rmd-text-field-dense-label-height"?: string | number;
|
|
35
43
|
"--rmd-text-field-padding-left"?: string | number;
|
|
36
44
|
"--rmd-text-field-padding-right"?: string | number;
|
|
37
45
|
"--rmd-text-field-padding-top"?: string | number;
|
|
38
46
|
"--rmd-text-field-border-color"?: string;
|
|
47
|
+
/** @since 6.4.0 */
|
|
48
|
+
"--rmd-text-field-border-radius"?: string | number;
|
|
39
49
|
"--rmd-text-field-hover-border-color"?: string;
|
|
40
50
|
"--rmd-text-field-filled-color"?: string;
|
|
41
51
|
"--rmd-text-field-filled-padding"?: string | number;
|
|
42
52
|
"--rmd-text-field-outlined-padding"?: string | number;
|
|
53
|
+
/** @since 6.4.0 */
|
|
54
|
+
"--rmd-text-field-outlined-border-radius"?: string | number;
|
|
43
55
|
"--rmd-text-field-underlined-padding"?: string | number;
|
|
44
56
|
}
|
|
45
57
|
}
|
|
@@ -102,20 +114,30 @@ export interface FormConfiguration extends Required<FormThemeOptions> {
|
|
|
102
114
|
}
|
|
103
115
|
|
|
104
116
|
/**
|
|
105
|
-
* @since 6.
|
|
117
|
+
* @since 6.4.0
|
|
106
118
|
*/
|
|
107
|
-
export interface
|
|
119
|
+
export interface InteractableFormComponentStates {
|
|
108
120
|
/** @defaultValue `false` */
|
|
109
|
-
|
|
121
|
+
disabled?: boolean;
|
|
110
122
|
|
|
111
123
|
/** @defaultValue `false` */
|
|
112
|
-
|
|
124
|
+
readOnly?: boolean;
|
|
125
|
+
}
|
|
113
126
|
|
|
127
|
+
/**
|
|
128
|
+
* @since 6.4.0
|
|
129
|
+
*/
|
|
130
|
+
export interface EditableFormComponentStates extends InteractableFormComponentStates {
|
|
114
131
|
/** @defaultValue `false` */
|
|
115
|
-
|
|
132
|
+
error?: boolean;
|
|
133
|
+
}
|
|
116
134
|
|
|
135
|
+
/**
|
|
136
|
+
* @since 6.0.0
|
|
137
|
+
*/
|
|
138
|
+
export interface FormComponentStates extends EditableFormComponentStates {
|
|
117
139
|
/** @defaultValue `false` */
|
|
118
|
-
|
|
140
|
+
active?: boolean;
|
|
119
141
|
}
|
|
120
142
|
|
|
121
143
|
/**
|
|
@@ -255,7 +277,8 @@ export interface FormMessageClassNameOptions {
|
|
|
255
277
|
}
|
|
256
278
|
|
|
257
279
|
export interface FormMessageProps
|
|
258
|
-
extends
|
|
280
|
+
extends
|
|
281
|
+
Omit<HTMLAttributes<HTMLDivElement>, "minLength" | "maxLength">,
|
|
259
282
|
FormMessageClassNameOptions {
|
|
260
283
|
/**
|
|
261
284
|
* If this component is acting as a form-level error message handler, the role
|
|
@@ -359,8 +382,7 @@ export interface FormMessageInputLengthCounterProps {
|
|
|
359
382
|
}
|
|
360
383
|
|
|
361
384
|
export interface FormMessageWithCounterProps
|
|
362
|
-
extends FormMessageProps,
|
|
363
|
-
FormMessageInputLengthCounterProps {}
|
|
385
|
+
extends FormMessageProps, FormMessageInputLengthCounterProps {}
|
|
364
386
|
|
|
365
387
|
/**
|
|
366
388
|
* @since 6.0.0
|
|
@@ -477,14 +499,12 @@ export interface LabelClassNameOptions {
|
|
|
477
499
|
}
|
|
478
500
|
|
|
479
501
|
export interface LabelProps
|
|
480
|
-
extends LabelHTMLAttributes<HTMLLabelElement>,
|
|
481
|
-
LabelClassNameOptions {}
|
|
502
|
+
extends LabelHTMLAttributes<HTMLLabelElement>, LabelClassNameOptions {}
|
|
482
503
|
|
|
483
504
|
/**
|
|
484
505
|
* @since 6.0.0
|
|
485
506
|
*/
|
|
486
|
-
export interface ConfigurableTextFieldAddonProps
|
|
487
|
-
extends HTMLAttributes<HTMLSpanElement> {
|
|
507
|
+
export interface ConfigurableTextFieldAddonProps extends HTMLAttributes<HTMLSpanElement> {
|
|
488
508
|
/**
|
|
489
509
|
* Boolean if the addon should be presentational only and prevent pointer
|
|
490
510
|
* events.
|
|
@@ -519,8 +539,7 @@ export interface TextFieldAddonProps extends ConfigurableTextFieldAddonProps {
|
|
|
519
539
|
* `leftAddonProps` / `rightAddonProps`. Removed `stretch`
|
|
520
540
|
*/
|
|
521
541
|
export interface TextFieldContainerOptions
|
|
522
|
-
extends FormThemeOptions,
|
|
523
|
-
FormComponentStates {
|
|
542
|
+
extends FormThemeOptions, FormComponentStates {
|
|
524
543
|
/**
|
|
525
544
|
* Set this to `true` to enable the dense spec which reduces the height.
|
|
526
545
|
*
|
|
@@ -578,8 +597,7 @@ export interface TextFieldContainerOptions
|
|
|
578
597
|
}
|
|
579
598
|
|
|
580
599
|
export interface FormFieldOptions
|
|
581
|
-
extends TextFieldContainerOptions,
|
|
582
|
-
FormMessageContainerExtension {
|
|
600
|
+
extends TextFieldContainerOptions, FormMessageContainerExtension {
|
|
583
601
|
/**
|
|
584
602
|
* An optional floating label to use with the text field. A label is generally
|
|
585
603
|
* recommended for accessibility, but can be omitted if an `aria-label` or
|
|
@@ -70,8 +70,9 @@ export interface CheckboxGroupImplementation<V extends string> {
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
/** @since 6.0.0 */
|
|
73
|
-
export interface IndeterminateCheckboxGroupImplementation<
|
|
74
|
-
extends
|
|
73
|
+
export interface IndeterminateCheckboxGroupImplementation<
|
|
74
|
+
V extends string,
|
|
75
|
+
> extends CheckboxGroupImplementation<V> {
|
|
75
76
|
getIndeterminateProps: () => {
|
|
76
77
|
"aria-checked": "mixed" | undefined;
|
|
77
78
|
name: string;
|
package/src/form/useCombobox.ts
CHANGED
|
@@ -141,7 +141,9 @@ export interface ComboboxVisibilityOptions {
|
|
|
141
141
|
export interface ConfigurableComboboxOptions<
|
|
142
142
|
ComboboxEl extends HTMLElement = HTMLInputElement,
|
|
143
143
|
PopupEl extends HTMLElement = HTMLElement,
|
|
144
|
-
>
|
|
144
|
+
>
|
|
145
|
+
extends
|
|
146
|
+
ComboboxKeyboardMovementOptions<ComboboxEl>,
|
|
145
147
|
ComboboxVisibilityOptions {
|
|
146
148
|
/**
|
|
147
149
|
* This is the {@link InputHTMLAttributes.form} attribute and is used to
|
|
@@ -259,7 +261,9 @@ export type ConfigurableComboboxMenuProps = Partial<
|
|
|
259
261
|
*/
|
|
260
262
|
export interface ProvidedComboboxMenuProps<
|
|
261
263
|
PopupEl extends HTMLElement = HTMLDivElement,
|
|
262
|
-
>
|
|
264
|
+
>
|
|
265
|
+
extends
|
|
266
|
+
Required<ComboboxTransitionCallbacks>,
|
|
263
267
|
ComboboxWidgetPopupProps<PopupEl> {
|
|
264
268
|
visible: boolean;
|
|
265
269
|
onRequestClose: () => void;
|
|
@@ -276,7 +280,8 @@ export interface ProvidedComboboxMenuProps<
|
|
|
276
280
|
* @since 6.0.0
|
|
277
281
|
*/
|
|
278
282
|
export interface ComboboxMenuProps<PopupEl extends HTMLElement = HTMLDivElement>
|
|
279
|
-
extends
|
|
283
|
+
extends
|
|
284
|
+
Omit<ConfigurableComboboxMenuProps, keyof ProvidedComboboxMenuProps>,
|
|
280
285
|
ProvidedComboboxMenuProps<PopupEl> {}
|
|
281
286
|
|
|
282
287
|
/**
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { useCallback, useRef, useState } from "react";
|
|
4
4
|
|
|
5
5
|
import { type UseStateInitializer, type UseStateSetter } from "../types.js";
|
|
6
|
+
import { useIsomorphicLayoutEffect } from "../useIsomorphicLayoutEffect.js";
|
|
6
7
|
import { withinRange } from "../utils/withinRange.js";
|
|
7
8
|
import { useFormReset } from "./useFormReset.js";
|
|
8
9
|
import {
|
|
@@ -47,7 +48,8 @@ export interface NumberFieldConstraints {
|
|
|
47
48
|
* - Renamed `fixOnBlur` to `updateValueOnBlur`
|
|
48
49
|
*/
|
|
49
50
|
export interface NumberFieldHookOptions
|
|
50
|
-
extends
|
|
51
|
+
extends
|
|
52
|
+
Omit<TextFieldHookOptions, "defaultValue" | "isNumber">,
|
|
51
53
|
NumberFieldConstraints {
|
|
52
54
|
/**
|
|
53
55
|
* @defaultValue `undefined`
|
|
@@ -112,42 +114,45 @@ export interface NumberFieldHookOptions
|
|
|
112
114
|
}
|
|
113
115
|
|
|
114
116
|
/** @since 6.0.0 */
|
|
115
|
-
export interface NumberFieldHookState
|
|
116
|
-
|
|
117
|
+
export interface NumberFieldHookState extends Omit<
|
|
118
|
+
TextFieldHookState,
|
|
119
|
+
"value"
|
|
120
|
+
> {
|
|
117
121
|
value: number | undefined;
|
|
118
122
|
}
|
|
119
123
|
|
|
120
124
|
/** @since 2.5.6 */
|
|
121
125
|
export interface ProvidedNumberFieldProps
|
|
122
|
-
extends ProvidedTextFieldProps,
|
|
123
|
-
NumberFieldConstraints {
|
|
126
|
+
extends ProvidedTextFieldProps, NumberFieldConstraints {
|
|
124
127
|
type: "number";
|
|
125
128
|
}
|
|
126
129
|
|
|
127
130
|
/** @since 2.5.6 */
|
|
128
131
|
export interface ProvidedNumberFieldMessageProps
|
|
129
|
-
extends ProvidedTextFieldMessageProps,
|
|
130
|
-
NumberFieldConstraints {
|
|
132
|
+
extends ProvidedTextFieldMessageProps, NumberFieldConstraints {
|
|
131
133
|
type: "number";
|
|
132
134
|
}
|
|
133
135
|
|
|
134
136
|
/** @since 6.0.0 */
|
|
135
|
-
export interface NumberFieldImplementation
|
|
136
|
-
|
|
137
|
+
export interface NumberFieldImplementation extends Omit<
|
|
138
|
+
TextFieldImplementation,
|
|
139
|
+
"value" | "setState"
|
|
140
|
+
> {
|
|
137
141
|
value: number | undefined;
|
|
138
142
|
setState: UseStateSetter<NumberFieldHookState>;
|
|
139
143
|
fieldProps: ProvidedNumberFieldProps;
|
|
140
144
|
}
|
|
141
145
|
|
|
142
146
|
/** @since 6.0.0 */
|
|
143
|
-
export interface NumberFieldWithMessageImplementation
|
|
144
|
-
extends NumberFieldImplementation {
|
|
147
|
+
export interface NumberFieldWithMessageImplementation extends NumberFieldImplementation {
|
|
145
148
|
fieldProps: ProvidedNumberFieldMessageProps;
|
|
146
149
|
}
|
|
147
150
|
|
|
148
151
|
/** @since 6.0.0 */
|
|
149
|
-
export interface ValidatedNumberFieldImplementation
|
|
150
|
-
|
|
152
|
+
export interface ValidatedNumberFieldImplementation extends Omit<
|
|
153
|
+
ValidatedTextFieldImplementation,
|
|
154
|
+
"value" | "setState"
|
|
155
|
+
> {
|
|
151
156
|
value: number | undefined;
|
|
152
157
|
setState: UseStateSetter<NumberFieldHookState>;
|
|
153
158
|
fieldProps: ProvidedNumberFieldProps | ProvidedNumberFieldMessageProps;
|
|
@@ -439,35 +444,31 @@ export function useNumberField(
|
|
|
439
444
|
},
|
|
440
445
|
});
|
|
441
446
|
|
|
447
|
+
const { error, errorMessage } = remaining;
|
|
448
|
+
const prevState = useRef({
|
|
449
|
+
error,
|
|
450
|
+
errorMessage,
|
|
451
|
+
value: number,
|
|
452
|
+
} satisfies NumberFieldHookState);
|
|
453
|
+
useIsomorphicLayoutEffect(() => {
|
|
454
|
+
prevState.current = {
|
|
455
|
+
error,
|
|
456
|
+
errorMessage,
|
|
457
|
+
value: number,
|
|
458
|
+
};
|
|
459
|
+
});
|
|
442
460
|
const reset = useCallback(() => {
|
|
443
461
|
resetTextField();
|
|
444
462
|
setNumber(initial.current);
|
|
445
463
|
}, [resetTextField]);
|
|
446
464
|
const setState = useCallback<UseStateSetter<NumberFieldHookState>>(
|
|
447
465
|
(nextState) => {
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
const updated = nextState({
|
|
453
|
-
...prevState,
|
|
454
|
-
value: prevNumber,
|
|
455
|
-
});
|
|
456
|
-
|
|
457
|
-
nextNumber = updated.value;
|
|
458
|
-
|
|
459
|
-
return {
|
|
460
|
-
...updated,
|
|
461
|
-
value: `${nextNumber ?? ""}`,
|
|
462
|
-
};
|
|
463
|
-
});
|
|
464
|
-
|
|
465
|
-
return nextNumber;
|
|
466
|
-
});
|
|
467
|
-
return;
|
|
468
|
-
}
|
|
466
|
+
const resolvedNextState =
|
|
467
|
+
typeof nextState === "function"
|
|
468
|
+
? nextState(prevState.current)
|
|
469
|
+
: nextState;
|
|
469
470
|
|
|
470
|
-
const { value, error, errorMessage } =
|
|
471
|
+
const { value, error, errorMessage } = resolvedNextState;
|
|
471
472
|
setNumber(value);
|
|
472
473
|
setTextFieldState({
|
|
473
474
|
value: `${value ?? ""}`,
|
|
@@ -31,8 +31,7 @@ export interface RangeSliderOptions extends SliderValueOptions {
|
|
|
31
31
|
* @since 6.0.0
|
|
32
32
|
*/
|
|
33
33
|
export interface RangeSliderImplementation
|
|
34
|
-
extends Required<SliderValueOptions>,
|
|
35
|
-
RangeSliderState {}
|
|
34
|
+
extends Required<SliderValueOptions>, RangeSliderState {}
|
|
36
35
|
|
|
37
36
|
/**
|
|
38
37
|
* @example Range Slider Example
|
package/src/form/useSlider.ts
CHANGED