@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
package/src/link/Link.tsx
CHANGED
|
@@ -23,8 +23,7 @@ export type CustomLinkComponent =
|
|
|
23
23
|
* @since 6.0.0 Renamed `flexCentered` to `flex`.
|
|
24
24
|
*/
|
|
25
25
|
export interface LinkProps
|
|
26
|
-
extends AnchorHTMLAttributes<HTMLAnchorElement>,
|
|
27
|
-
LinkClassNameOptions {
|
|
26
|
+
extends AnchorHTMLAttributes<HTMLAnchorElement>, LinkClassNameOptions {
|
|
28
27
|
/**
|
|
29
28
|
* All links **must** have a valid href.
|
|
30
29
|
*/
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { type ReactNode, forwardRef,
|
|
3
|
+
import { type ReactNode, forwardRef, useRef } from "react";
|
|
4
4
|
|
|
5
|
+
import { useDevEffect } from "../utils/useDevEffect.js";
|
|
5
6
|
import { Link, type LinkProps } from "./Link.js";
|
|
6
7
|
import {
|
|
7
8
|
type SkipToMainContentClassNameOptions,
|
|
@@ -21,8 +22,7 @@ const getMainElement = (mainId: string): HTMLElement | null =>
|
|
|
21
22
|
* @since 6.0.0 The `mainId` is optional
|
|
22
23
|
*/
|
|
23
24
|
export interface SkipToMainContentProps
|
|
24
|
-
extends Omit<LinkProps, "href">,
|
|
25
|
-
SkipToMainContentClassNameOptions {
|
|
25
|
+
extends Omit<LinkProps, "href">, SkipToMainContentClassNameOptions {
|
|
26
26
|
/**
|
|
27
27
|
* @since 6.0.0 Changed default value from `"skip-to-main-content"`
|
|
28
28
|
* @defaultValue `"skip-to-main"`
|
|
@@ -95,30 +95,27 @@ export const SkipToMainContent = forwardRef<
|
|
|
95
95
|
// want to warn the developer about missing main element in development
|
|
96
96
|
// immediately to help prevent errors, but in production this can be lazy
|
|
97
97
|
// initialized only once a keyboard user focuses and clicks this element
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
useEffect(() => {
|
|
101
|
-
mainNodeRef.current = getMainElement(mainId);
|
|
98
|
+
useDevEffect(() => {
|
|
99
|
+
mainNodeRef.current = getMainElement(mainId);
|
|
102
100
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
101
|
+
if (!mainNodeRef.current) {
|
|
102
|
+
const foundMainId = document.querySelector('main,[role="main"]')?.id;
|
|
103
|
+
let message = `Unable to find a main element to focus`;
|
|
104
|
+
if (mainId) {
|
|
105
|
+
message += ` with an id of "${mainId}"`;
|
|
108
106
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
107
|
+
if (foundMainId) {
|
|
108
|
+
message += ` but a main element was found with an id of "${foundMainId}".`;
|
|
112
109
|
}
|
|
113
|
-
if (!foundMainId) {
|
|
114
|
-
message +=
|
|
115
|
-
'. There should be at least one <main> element or an element with role="main" on the page for accessibility.';
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
throw new Error(message);
|
|
119
110
|
}
|
|
120
|
-
|
|
121
|
-
|
|
111
|
+
if (!foundMainId) {
|
|
112
|
+
message +=
|
|
113
|
+
'. There should be at least one <main> element or an element with role="main" on the page for accessibility.';
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
throw new Error(message);
|
|
117
|
+
}
|
|
118
|
+
}, [mainId]);
|
|
122
119
|
|
|
123
120
|
return (
|
|
124
121
|
<Link
|
package/src/list/List.tsx
CHANGED
|
@@ -8,8 +8,7 @@ export type ListElement = HTMLUListElement | HTMLOListElement;
|
|
|
8
8
|
* @since 6.3.1 Extends the ListClassNameOptions
|
|
9
9
|
*/
|
|
10
10
|
export interface ListProps
|
|
11
|
-
extends HTMLAttributes<ListElement>,
|
|
12
|
-
ListClassNameOptions {
|
|
11
|
+
extends HTMLAttributes<ListElement>, ListClassNameOptions {
|
|
13
12
|
/**
|
|
14
13
|
* @defaultValue `"none"`
|
|
15
14
|
*/
|
package/src/list/ListItem.tsx
CHANGED
|
@@ -19,7 +19,8 @@ import { type ListItemChildrenProps } from "./types.js";
|
|
|
19
19
|
* @since 6.3.1 Extends the BaseListItemClassNameOptions
|
|
20
20
|
*/
|
|
21
21
|
export interface ListItemProps
|
|
22
|
-
extends
|
|
22
|
+
extends
|
|
23
|
+
HTMLAttributes<HTMLLIElement>,
|
|
23
24
|
ListItemChildrenProps,
|
|
24
25
|
BaseListItemClassNameOptions,
|
|
25
26
|
ComponentWithRippleProps {
|
|
@@ -10,7 +10,8 @@ import {
|
|
|
10
10
|
} from "./listItemStyles.js";
|
|
11
11
|
|
|
12
12
|
export interface ListItemAddonProps
|
|
13
|
-
extends
|
|
13
|
+
extends
|
|
14
|
+
Omit<TextIconSpacingProps, "icon" | "iconAfter" | "forceIconWrap">,
|
|
14
15
|
ListItemAddonClassNameOptions {
|
|
15
16
|
/**
|
|
16
17
|
* The addon that should be rendered.
|
|
@@ -17,7 +17,8 @@ import { type ListItemClassNameOptions, listItem } from "./listItemStyles.js";
|
|
|
17
17
|
import { type ListItemChildrenProps } from "./types.js";
|
|
18
18
|
|
|
19
19
|
export interface ListItemLinkProps
|
|
20
|
-
extends
|
|
20
|
+
extends
|
|
21
|
+
AnchorHTMLAttributes<HTMLAnchorElement>,
|
|
21
22
|
ListItemClassNameOptions,
|
|
22
23
|
ListItemChildrenProps,
|
|
23
24
|
ComponentWithRippleProps {
|
|
@@ -35,8 +35,7 @@ export function listSubheader(
|
|
|
35
35
|
* @since 6.0.0 The `role` prop defaults to `"presentation"`
|
|
36
36
|
*/
|
|
37
37
|
export interface ListSubheaderProps
|
|
38
|
-
extends HTMLAttributes<HTMLLIElement>,
|
|
39
|
-
ListSubheaderClassNameOptions {
|
|
38
|
+
extends HTMLAttributes<HTMLLIElement>, ListSubheaderClassNameOptions {
|
|
40
39
|
/**
|
|
41
40
|
* @defaultValue `"presentation"`
|
|
42
41
|
*/
|
|
@@ -4,15 +4,14 @@ import type { ListItemChildrenProps, ListItemHeight } from "./types.js";
|
|
|
4
4
|
* @since 6.0.0
|
|
5
5
|
* @internal
|
|
6
6
|
*/
|
|
7
|
-
export interface ListItemHeightOptions
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
> {
|
|
7
|
+
export interface ListItemHeightOptions extends Pick<
|
|
8
|
+
ListItemChildrenProps,
|
|
9
|
+
| "leftAddon"
|
|
10
|
+
| "rightAddon"
|
|
11
|
+
| "leftAddonType"
|
|
12
|
+
| "rightAddonType"
|
|
13
|
+
| "secondaryText"
|
|
14
|
+
> {
|
|
16
15
|
/**
|
|
17
16
|
* @see {@link ListItemHeight}
|
|
18
17
|
*/
|
|
@@ -72,8 +72,7 @@ export interface ListItemClassNameOptions extends BaseListItemClassNameOptions {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
/** @since 6.0.0 */
|
|
75
|
-
export interface InternalListItemClassNameOptions
|
|
76
|
-
extends ListItemClassNameOptions {
|
|
75
|
+
export interface InternalListItemClassNameOptions extends ListItemClassNameOptions {
|
|
77
76
|
/**
|
|
78
77
|
* @defaultValue `false`
|
|
79
78
|
*/
|
package/src/list/types.ts
CHANGED
|
@@ -227,5 +227,4 @@ export interface ListItemChildrenTextProps {
|
|
|
227
227
|
* @since 6.0.0 Renamed `textChildren` to `disableTextChildren`
|
|
228
228
|
*/
|
|
229
229
|
export interface ListItemChildrenProps
|
|
230
|
-
extends ListItemChildrenTextProps,
|
|
231
|
-
ListItemChildrenAddonProps {}
|
|
230
|
+
extends ListItemChildrenTextProps, ListItemChildrenAddonProps {}
|
|
@@ -14,12 +14,8 @@ import {
|
|
|
14
14
|
type AppSize,
|
|
15
15
|
type AppSizeQueries,
|
|
16
16
|
DEFAULT_APP_SIZE,
|
|
17
|
-
DEFAULT_DESKTOP_LARGE_MIN_WIDTH,
|
|
18
|
-
DEFAULT_DESKTOP_MIN_WIDTH,
|
|
19
|
-
DEFAULT_PHONE_MAX_WIDTH,
|
|
20
|
-
DEFAULT_TABLET_MAX_WIDTH,
|
|
21
|
-
DEFAULT_TABLET_MIN_WIDTH,
|
|
22
17
|
} from "./appSize.js";
|
|
18
|
+
import { MEDIA_QUERY_CONFIG } from "./config.js";
|
|
23
19
|
import { useMediaQuery } from "./useMediaQuery.js";
|
|
24
20
|
|
|
25
21
|
/** @internal */
|
|
@@ -71,6 +67,8 @@ export function useAppSize(): Readonly<AppSize> {
|
|
|
71
67
|
* @since 6.0.0 Renamed from `AppSizeListenerProps`.
|
|
72
68
|
* @since 6.0.0 Removed the `onChange` prop
|
|
73
69
|
* @since 6.0.0 Renamed `defaultSize` to `ssrSize`
|
|
70
|
+
* @since 6.4.0 Deprecated the `AppSizeQueries` in favor
|
|
71
|
+
* of the `MEDIA_QUERY_CONFIG`
|
|
74
72
|
*/
|
|
75
73
|
export interface AppSizeProviderProps extends AppSizeQueries {
|
|
76
74
|
/**
|
|
@@ -95,11 +93,11 @@ export interface AppSizeProviderProps extends AppSizeQueries {
|
|
|
95
93
|
export function AppSizeProvider(props: AppSizeProviderProps): ReactElement {
|
|
96
94
|
const {
|
|
97
95
|
ssrSize = DEFAULT_APP_SIZE,
|
|
98
|
-
phoneMaxWidth =
|
|
99
|
-
tabletMinWidth =
|
|
100
|
-
tabletMaxWidth =
|
|
101
|
-
desktopMinWidth =
|
|
102
|
-
desktopLargeMinWidth =
|
|
96
|
+
phoneMaxWidth = MEDIA_QUERY_CONFIG.phoneMaxWidth,
|
|
97
|
+
tabletMinWidth = MEDIA_QUERY_CONFIG.tabletMinWidth,
|
|
98
|
+
tabletMaxWidth = MEDIA_QUERY_CONFIG.tabletMaxWidth,
|
|
99
|
+
desktopMinWidth = MEDIA_QUERY_CONFIG.desktopMinWidth,
|
|
100
|
+
desktopLargeMinWidth = MEDIA_QUERY_CONFIG.desktopLargeMinWidth,
|
|
103
101
|
children,
|
|
104
102
|
} = props;
|
|
105
103
|
const { __root } = useContext(context);
|
|
@@ -62,6 +62,9 @@ export interface AppSizeQueries {
|
|
|
62
62
|
desktopLargeMinWidth?: QuerySize;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
+
/**
|
|
66
|
+
* @deprecated Use `MEDIA_QUERY_CONFIG` instead.
|
|
67
|
+
*/
|
|
65
68
|
export const DEFAULT_APP_SIZE_QUERIES: Readonly<AppSizeQueries> = {
|
|
66
69
|
phoneMaxWidth: DEFAULT_PHONE_MAX_WIDTH,
|
|
67
70
|
tabletMinWidth: DEFAULT_TABLET_MIN_WIDTH,
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type AppSizeQueries,
|
|
3
|
+
DEFAULT_DESKTOP_LARGE_MIN_WIDTH,
|
|
4
|
+
DEFAULT_DESKTOP_MIN_WIDTH,
|
|
5
|
+
DEFAULT_PHONE_MAX_WIDTH,
|
|
6
|
+
DEFAULT_TABLET_MAX_WIDTH,
|
|
7
|
+
DEFAULT_TABLET_MIN_WIDTH,
|
|
8
|
+
} from "./appSize.js";
|
|
9
|
+
|
|
10
|
+
/** @since 6.4.0 */
|
|
11
|
+
export type MediaQueryConfig = Required<AppSizeQueries>;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @since 6.4.0
|
|
15
|
+
*/
|
|
16
|
+
export const MEDIA_QUERY_CONFIG: MediaQueryConfig = {
|
|
17
|
+
phoneMaxWidth: DEFAULT_PHONE_MAX_WIDTH,
|
|
18
|
+
tabletMinWidth: DEFAULT_TABLET_MIN_WIDTH,
|
|
19
|
+
tabletMaxWidth: DEFAULT_TABLET_MAX_WIDTH,
|
|
20
|
+
desktopMinWidth: DEFAULT_DESKTOP_MIN_WIDTH,
|
|
21
|
+
desktopLargeMinWidth: DEFAULT_DESKTOP_LARGE_MIN_WIDTH,
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @since 6.4.0
|
|
26
|
+
*/
|
|
27
|
+
export function configureMediaQueries(
|
|
28
|
+
queries: Readonly<Partial<MediaQueryConfig>>
|
|
29
|
+
): void {
|
|
30
|
+
if (process.env.NODE_ENV !== "production") {
|
|
31
|
+
Object.entries(queries).forEach(([name, value]) => {
|
|
32
|
+
if (!(name in MEDIA_QUERY_CONFIG)) {
|
|
33
|
+
throw new Error(`${name} is an invalid react-md media query.`);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
MEDIA_QUERY_CONFIG[name as keyof MediaQueryConfig] = value;
|
|
37
|
+
});
|
|
38
|
+
} else {
|
|
39
|
+
Object.assign(MEDIA_QUERY_CONFIG, queries);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -29,7 +29,8 @@ import { MenuVisibilityProvider } from "./MenuVisibilityProvider.js";
|
|
|
29
29
|
import { useMenuBarContext } from "./useMenuBarProvider.js";
|
|
30
30
|
|
|
31
31
|
export interface BaseDropdownMenuProps
|
|
32
|
-
extends
|
|
32
|
+
extends
|
|
33
|
+
MenuConfiguration,
|
|
33
34
|
MenuListConvenienceProps,
|
|
34
35
|
MenuSheetConvenienceProps,
|
|
35
36
|
MenuConvenienceProps {
|
|
@@ -37,12 +38,10 @@ export interface BaseDropdownMenuProps
|
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
export interface DropdownMenuButtonProps
|
|
40
|
-
extends MenuButtonProps,
|
|
41
|
-
BaseDropdownMenuProps {}
|
|
41
|
+
extends MenuButtonProps, BaseDropdownMenuProps {}
|
|
42
42
|
|
|
43
43
|
export interface DropdownMenuItemButtonProps
|
|
44
|
-
extends MenuItemButtonProps,
|
|
45
|
-
BaseDropdownMenuProps {}
|
|
44
|
+
extends MenuItemButtonProps, BaseDropdownMenuProps {}
|
|
46
45
|
|
|
47
46
|
/**
|
|
48
47
|
* @since 6.0.0
|
package/src/menu/Menu.tsx
CHANGED
|
@@ -215,7 +215,8 @@ export type MenuFixedPositioningOptions = Omit<
|
|
|
215
215
|
* @since 6.0.0 Updated to use the latest Menu, Transition, and Portal API.
|
|
216
216
|
*/
|
|
217
217
|
export interface MenuProps
|
|
218
|
-
extends
|
|
218
|
+
extends
|
|
219
|
+
HTMLAttributes<HTMLDivElement>,
|
|
219
220
|
MenuConfiguration,
|
|
220
221
|
MenuConfigurationProps,
|
|
221
222
|
MenuFixedPositioningOptions,
|
|
@@ -19,7 +19,8 @@ const noop = (): void => {
|
|
|
19
19
|
* implementation.
|
|
20
20
|
*/
|
|
21
21
|
export interface MenuItemFileInputProps
|
|
22
|
-
extends
|
|
22
|
+
extends
|
|
23
|
+
Omit<MenuItemProps, "onChange">,
|
|
23
24
|
Pick<
|
|
24
25
|
InputHTMLAttributes<HTMLInputElement>,
|
|
25
26
|
"accept" | "capture" | "multiple"
|
|
@@ -46,7 +46,8 @@ export type MenuItemInputToggleCheckedCallback = (
|
|
|
46
46
|
|
|
47
47
|
/** @since 2.8.0 */
|
|
48
48
|
export interface BaseMenuItemInputToggleProps
|
|
49
|
-
extends
|
|
49
|
+
extends
|
|
50
|
+
HTMLAttributes<HTMLLIElement>,
|
|
50
51
|
ConfigurableInputToggleIconProps,
|
|
51
52
|
ListItemChildrenTextProps {
|
|
52
53
|
checked: boolean;
|
|
@@ -98,8 +99,7 @@ export interface BaseMenuItemInputToggleProps
|
|
|
98
99
|
}
|
|
99
100
|
|
|
100
101
|
export interface MenuItemCheckboxProps
|
|
101
|
-
extends BaseMenuItemInputToggleProps,
|
|
102
|
-
IndeterminateCheckboxProps {}
|
|
102
|
+
extends BaseMenuItemInputToggleProps, IndeterminateCheckboxProps {}
|
|
103
103
|
|
|
104
104
|
export type MenuItemRadioProps = BaseMenuItemInputToggleProps;
|
|
105
105
|
|
|
@@ -8,7 +8,8 @@ import { useMenuConfiguration } from "./MenuConfigurationProvider.js";
|
|
|
8
8
|
|
|
9
9
|
/** @since 5.0.0 */
|
|
10
10
|
export interface MenuItemSeparatorProps
|
|
11
|
-
extends
|
|
11
|
+
extends
|
|
12
|
+
HTMLAttributes<HTMLLIElement>,
|
|
12
13
|
Pick<DividerProps, "inset" | "vertical"> {}
|
|
13
14
|
|
|
14
15
|
/**
|
|
@@ -14,8 +14,10 @@ import { type NonNullMutableRef, type UseStateObject } from "../types.js";
|
|
|
14
14
|
* @since 5.0.0
|
|
15
15
|
* @since 6.0.0 Added the `defaultFocusIndex` ref.
|
|
16
16
|
*/
|
|
17
|
-
export interface MenuVisibilityContext
|
|
18
|
-
|
|
17
|
+
export interface MenuVisibilityContext extends UseStateObject<
|
|
18
|
+
"visible",
|
|
19
|
+
boolean
|
|
20
|
+
> {
|
|
19
21
|
defaultFocusIndex: NonNullMutableRef<number>;
|
|
20
22
|
}
|
|
21
23
|
|
package/src/menu/MenuWidget.tsx
CHANGED
|
@@ -23,8 +23,7 @@ const noop = (): void => {
|
|
|
23
23
|
* @internal
|
|
24
24
|
*/
|
|
25
25
|
export interface MenuWidgetProps
|
|
26
|
-
extends HTMLAttributes<HTMLDivElement>,
|
|
27
|
-
MenuListConvenienceProps {
|
|
26
|
+
extends HTMLAttributes<HTMLDivElement>, MenuListConvenienceProps {
|
|
28
27
|
isSheet: boolean;
|
|
29
28
|
horizontal: boolean;
|
|
30
29
|
disableElevation?: boolean;
|
|
@@ -48,8 +48,10 @@ export interface ContextMenuHookOptions {
|
|
|
48
48
|
* `ContextMenuImplementation` and dropped the `menuRef` and `menuNodeRef`
|
|
49
49
|
* fields.
|
|
50
50
|
*/
|
|
51
|
-
export interface ContextMenuImplementation
|
|
52
|
-
|
|
51
|
+
export interface ContextMenuImplementation extends UseStateObject<
|
|
52
|
+
"visible",
|
|
53
|
+
boolean
|
|
54
|
+
> {
|
|
53
55
|
menuProps: ContextMenuProps;
|
|
54
56
|
onContextMenu: <E extends HTMLElement>(event: MouseEvent<E>) => void;
|
|
55
57
|
}
|
package/src/movement/types.ts
CHANGED
|
@@ -137,9 +137,17 @@ export interface KeyboardMovementBehavior {
|
|
|
137
137
|
|
|
138
138
|
/**
|
|
139
139
|
* @since 6.3.0
|
|
140
|
+
* @since 6.4.0 Added `force` option.
|
|
140
141
|
*/
|
|
141
142
|
export interface KeyboardFocusFromKeyOptions {
|
|
142
143
|
key: string;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* @since 6.4.0
|
|
147
|
+
* @defaultValue `false`
|
|
148
|
+
*/
|
|
149
|
+
force?: boolean;
|
|
150
|
+
|
|
143
151
|
/** @defaultValue `false` */
|
|
144
152
|
reversed?: boolean;
|
|
145
153
|
|
|
@@ -150,15 +158,29 @@ export interface KeyboardFocusFromKeyOptions {
|
|
|
150
158
|
/**
|
|
151
159
|
* @since 6.3.0
|
|
152
160
|
*/
|
|
153
|
-
export type KeyboardFocusAction = (
|
|
161
|
+
export type KeyboardFocusAction = (
|
|
162
|
+
focusables?: readonly HTMLElement[],
|
|
163
|
+
force?: boolean
|
|
164
|
+
) => void;
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* @since 6.4.0
|
|
168
|
+
*/
|
|
169
|
+
export interface KeyboardMovementUpdateFocusIndexOptions {
|
|
170
|
+
index: number;
|
|
171
|
+
force?: boolean;
|
|
172
|
+
focusables?: readonly HTMLElement[];
|
|
173
|
+
}
|
|
154
174
|
|
|
155
175
|
/**
|
|
156
176
|
* @since 5.0.0
|
|
157
177
|
* @since 6.0.0 Removed `attach`, `detach` and `watching`
|
|
178
|
+
* @since 6.3.0 Added `focusFirst`, `focusLast`, `focusNext`, `focusPrevious`
|
|
179
|
+
* and `focusFromKey`.
|
|
180
|
+
* @since 6.4.0 Added `focusCurrent` and `updateFocusIndex`
|
|
158
181
|
* @internal
|
|
159
182
|
*/
|
|
160
|
-
export interface KeyboardMovementContext
|
|
161
|
-
extends Required<KeyboardMovementBehavior> {
|
|
183
|
+
export interface KeyboardMovementContext extends Required<KeyboardMovementBehavior> {
|
|
162
184
|
/** {@inheritDoc KeyboardMovementConfig} */
|
|
163
185
|
config: NonNullRef<KeyboardMovementConfig>;
|
|
164
186
|
|
|
@@ -195,6 +217,19 @@ export interface KeyboardMovementContext
|
|
|
195
217
|
* @since 6.3.0
|
|
196
218
|
*/
|
|
197
219
|
focusFromKey: (options: KeyboardFocusFromKeyOptions) => void;
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* @since 6.4.0
|
|
223
|
+
*/
|
|
224
|
+
focusCurrent: (
|
|
225
|
+
focusables?: readonly HTMLElement[],
|
|
226
|
+
force?: boolean
|
|
227
|
+
) => HTMLElement | undefined;
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* @since 6.4.0
|
|
231
|
+
*/
|
|
232
|
+
updateFocusIndex: (options: KeyboardMovementUpdateFocusIndexOptions) => void;
|
|
198
233
|
}
|
|
199
234
|
|
|
200
235
|
/**
|
|
@@ -241,8 +276,9 @@ export type KeyboardMovementFocusChangeEventHandler = (
|
|
|
241
276
|
* @since 6.0.0
|
|
242
277
|
* @internal
|
|
243
278
|
*/
|
|
244
|
-
export interface KeyboardMovementExtensionData<
|
|
245
|
-
extends
|
|
279
|
+
export interface KeyboardMovementExtensionData<
|
|
280
|
+
E extends HTMLElement,
|
|
281
|
+
> extends KeyboardMovementContext {
|
|
246
282
|
event: KeyboardEvent<E>;
|
|
247
283
|
currentFocusIndex: NonNullMutableRef<number>;
|
|
248
284
|
setFocusIndex: (index: number, focusables: readonly HTMLElement[]) => void;
|
|
@@ -260,9 +296,13 @@ export type KeyboardMovementEventHandlers<E extends HTMLElement> = Pick<
|
|
|
260
296
|
/**
|
|
261
297
|
* @since 6.3.0
|
|
262
298
|
*/
|
|
263
|
-
export interface SimpleKeyboardMovementWrapperOptions<
|
|
264
|
-
extends
|
|
299
|
+
export interface SimpleKeyboardMovementWrapperOptions<
|
|
300
|
+
E extends HTMLElement,
|
|
301
|
+
> extends KeyboardMovementEventHandlers<E> {
|
|
265
302
|
ref?: Ref<E>;
|
|
303
|
+
|
|
304
|
+
/** @defaultValue `false` */
|
|
305
|
+
disabled?: boolean;
|
|
266
306
|
}
|
|
267
307
|
|
|
268
308
|
/**
|
|
@@ -270,15 +310,13 @@ export interface SimpleKeyboardMovementWrapperOptions<E extends HTMLElement>
|
|
|
270
310
|
* @internal
|
|
271
311
|
*/
|
|
272
312
|
export interface KeyboardMovementProviderOptions<E extends HTMLElement>
|
|
273
|
-
extends
|
|
313
|
+
extends
|
|
314
|
+
KeyboardMovementBehavior,
|
|
274
315
|
SimpleKeyboardMovementWrapperOptions<E>,
|
|
275
316
|
KeyboardMovementConfiguration {
|
|
276
317
|
/** @see {@link TabIndexBehavior} */
|
|
277
318
|
tabIndexBehavior?: TabIndexBehavior;
|
|
278
319
|
|
|
279
|
-
/** @defaultValue `false` */
|
|
280
|
-
disabled?: boolean;
|
|
281
|
-
|
|
282
320
|
/**
|
|
283
321
|
* This is used to implement custom keyboard movement for the `keydown` event.
|
|
284
322
|
*/
|
|
@@ -332,8 +370,9 @@ export interface KeyboardMovementProviderOptions<E extends HTMLElement>
|
|
|
332
370
|
* @since 6.0.0
|
|
333
371
|
* @internal
|
|
334
372
|
*/
|
|
335
|
-
export interface KeyboardMovementProps<E extends HTMLElement>
|
|
336
|
-
|
|
373
|
+
export interface KeyboardMovementProps<E extends HTMLElement> extends Required<
|
|
374
|
+
KeyboardMovementEventHandlers<E>
|
|
375
|
+
> {
|
|
337
376
|
/**
|
|
338
377
|
* This will only be provided if the {@link KeyboardMovementContext.tabIndexBehavior}
|
|
339
378
|
* is set to `"virtual"`.
|