@react-md/core 1.0.0-next.0 → 1.0.0-next.1
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/.turbo/turbo-build.log +5 -5
- package/.turbo/turbo-lint.log +12 -0
- package/.turbo/turbo-test.log +166 -0
- package/.turbo/turbo-typecheck.log +4 -0
- package/CHANGELOG.md +57 -0
- package/coverage/clover.xml +3 -1118
- package/coverage/coverage-final.json +1 -7
- package/coverage/lcov-report/CircularProgress.tsx.html +799 -0
- package/coverage/lcov-report/Dialog.tsx.html +1309 -0
- package/coverage/lcov-report/DialogContent.tsx.html +178 -0
- package/coverage/lcov-report/DialogFooter.tsx.html +169 -0
- package/coverage/lcov-report/LinearProgress.tsx.html +658 -0
- package/coverage/lcov-report/MaterialIcon.tsx.html +36 -42
- package/coverage/lcov-report/MaterialSymbol.tsx.html +240 -222
- package/coverage/lcov-report/MenuItemInputToggle.tsx.html +979 -0
- package/coverage/lcov-report/MenuItemSeparator.tsx.html +223 -0
- package/coverage/lcov-report/MenuItemTextField.tsx.html +289 -0
- package/coverage/lcov-report/Switch.tsx.html +535 -0
- package/coverage/lcov-report/SwitchTrack.tsx.html +262 -0
- package/coverage/lcov-report/Table.tsx.html +457 -0
- package/coverage/lcov-report/TableCell.tsx.html +982 -0
- package/coverage/lcov-report/TableCheckbox.tsx.html +709 -0
- package/coverage/lcov-report/TableContainer.tsx.html +220 -0
- package/coverage/lcov-report/TableFooter.tsx.html +502 -0
- package/coverage/lcov-report/TableHeader.tsx.html +541 -0
- package/coverage/lcov-report/TableRadio.tsx.html +670 -0
- package/coverage/lcov-report/TableRow.tsx.html +289 -0
- package/coverage/lcov-report/Tooltip.tsx.html +98 -155
- package/coverage/lcov-report/avatar/Avatar.tsx.html +37 -31
- package/coverage/lcov-report/avatar/index.html +22 -7
- package/coverage/lcov-report/avatar/styles.ts.html +268 -0
- package/coverage/lcov-report/button/AsyncButton.tsx.html +217 -10
- package/coverage/lcov-report/button/Button.tsx.html +95 -83
- package/coverage/lcov-report/button/index.html +12 -12
- package/coverage/lcov-report/config.ts.html +33 -18
- package/coverage/lcov-report/cssUtils.ts.html +143 -65
- package/coverage/lcov-report/dialog/Dialog.tsx.html +170 -167
- package/coverage/lcov-report/dialog/DialogContent.tsx.html +178 -0
- package/coverage/lcov-report/dialog/DialogFooter.tsx.html +169 -0
- package/coverage/lcov-report/dialog/DialogHeader.tsx.html +148 -0
- package/coverage/lcov-report/dialog/DialogTitle.tsx.html +256 -0
- package/coverage/lcov-report/dialog/index.html +18 -33
- package/coverage/lcov-report/dialog/styles.ts.html +439 -0
- package/coverage/lcov-report/form/MenuItemInputToggle.tsx.html +36 -24
- package/coverage/lcov-report/form/MenuItemTextField.tsx.html +12 -9
- package/coverage/lcov-report/form/SliderValueTooltip.tsx.html +319 -0
- package/coverage/lcov-report/form/Switch.tsx.html +310 -385
- package/coverage/lcov-report/form/SwitchTrack.tsx.html +98 -71
- package/coverage/lcov-report/form/index.html +20 -245
- package/coverage/lcov-report/form/switchStyles.ts.html +172 -0
- package/coverage/lcov-report/form/useRadioGroup.ts.html +79 -79
- package/coverage/lcov-report/hoverMode/index.html +116 -0
- package/coverage/lcov-report/hoverMode/useHoverMode.ts.html +676 -0
- package/coverage/lcov-report/icon/FontIcon.tsx.html +37 -46
- package/coverage/lcov-report/icon/index.html +12 -12
- package/coverage/lcov-report/icon/styles.ts.html +41 -104
- package/coverage/lcov-report/iconConfig.tsx.html +973 -0
- package/coverage/lcov-report/index.html +11 -101
- package/coverage/lcov-report/link/Link.tsx.html +358 -0
- package/coverage/lcov-report/link/index.html +20 -20
- package/coverage/lcov-report/list/ListItemLink.tsx.html +29 -35
- package/coverage/lcov-report/list/index.html +8 -38
- package/coverage/lcov-report/materialConfig.ts.html +703 -0
- package/coverage/lcov-report/media-queries/appSize.ts.html +1 -1
- package/coverage/lcov-report/media-queries/index.html +10 -10
- package/coverage/lcov-report/menu/DropdownMenu.tsx.html +976 -0
- package/coverage/lcov-report/menu/Menu.tsx.html +111 -60
- package/coverage/lcov-report/menu/MenuConfigurationProvider.tsx.html +637 -0
- package/coverage/lcov-report/menu/MenuSheet.tsx.html +37 -13
- package/coverage/lcov-report/menu/index.html +35 -65
- package/coverage/lcov-report/menu/menuConfig.ts.html +118 -0
- package/coverage/lcov-report/progress/CircularProgress.tsx.html +799 -0
- package/coverage/lcov-report/progress/LinearProgress.tsx.html +100 -94
- package/coverage/lcov-report/progress/index.html +22 -7
- package/coverage/lcov-report/src/CoreProviders.tsx.html +20 -20
- package/coverage/lcov-report/src/NoSsr.tsx.html +1 -1
- package/coverage/lcov-report/src/SsrProvider.tsx.html +10 -10
- package/coverage/lcov-report/src/app-bar/AppBar.tsx.html +65 -65
- package/coverage/lcov-report/src/app-bar/AppBarTitle.tsx.html +1 -1
- package/coverage/lcov-report/src/app-bar/index.html +20 -5
- package/coverage/lcov-report/src/avatar/Avatar.tsx.html +36 -27
- package/coverage/lcov-report/src/avatar/index.html +22 -7
- package/coverage/lcov-report/src/avatar/styles.ts.html +77 -8
- package/coverage/lcov-report/src/badge/Badge.tsx.html +1 -1
- package/coverage/lcov-report/src/badge/index.html +1 -1
- package/coverage/lcov-report/src/box/Box.tsx.html +1 -1
- package/coverage/lcov-report/src/box/index.html +10 -25
- package/coverage/lcov-report/src/box/styles.ts.html +103 -49
- package/coverage/lcov-report/src/button/AsyncButton.tsx.html +833 -284
- package/coverage/lcov-report/src/button/Button.tsx.html +87 -87
- package/coverage/lcov-report/src/button/ButtonUnstyled.tsx.html +1 -1
- package/coverage/lcov-report/src/button/FloatingActionButton.tsx.html +39 -39
- package/coverage/lcov-report/src/button/buttonStyles.ts.html +59 -59
- package/coverage/lcov-report/src/button/buttonUnstyledStyles.ts.html +1 -1
- package/coverage/lcov-report/src/button/index.html +23 -8
- package/coverage/lcov-report/src/card/Card.tsx.html +1 -1
- package/coverage/lcov-report/src/card/CardContent.tsx.html +1 -1
- package/coverage/lcov-report/src/card/CardFooter.tsx.html +1 -1
- package/coverage/lcov-report/src/card/CardHeader.tsx.html +1 -1
- package/coverage/lcov-report/src/card/CardSubtitle.tsx.html +1 -1
- package/coverage/lcov-report/src/card/CardTitle.tsx.html +1 -1
- package/coverage/lcov-report/src/card/index.html +95 -5
- package/coverage/lcov-report/src/card/styles.ts.html +1 -1
- package/coverage/lcov-report/src/chip/Chip.tsx.html +1 -1
- package/coverage/lcov-report/src/chip/index.html +1 -1
- package/coverage/lcov-report/src/chip/styles.ts.html +1 -1
- package/coverage/lcov-report/src/cssUtils.ts.html +68 -59
- package/coverage/lcov-report/src/delegateEvent.ts.html +84 -84
- package/coverage/lcov-report/src/dialog/Dialog.tsx.html +158 -155
- package/coverage/lcov-report/src/dialog/DialogContainer.tsx.html +27 -27
- package/coverage/lcov-report/src/dialog/DialogContent.tsx.html +72 -72
- package/coverage/lcov-report/src/dialog/DialogFooter.tsx.html +14 -14
- package/coverage/lcov-report/src/dialog/DialogHeader.tsx.html +9 -9
- package/coverage/lcov-report/src/dialog/DialogTitle.tsx.html +124 -124
- package/coverage/lcov-report/src/dialog/FixedDialog.tsx.html +1 -1
- package/coverage/lcov-report/src/dialog/NestedDialogProvider.ts.html +3 -3
- package/coverage/lcov-report/src/dialog/index.html +21 -21
- package/coverage/lcov-report/src/dialog/styles.ts.html +61 -61
- package/coverage/lcov-report/src/divider/Divider.tsx.html +24 -24
- package/coverage/lcov-report/src/divider/index.html +21 -6
- package/coverage/lcov-report/src/divider/styles.ts.html +11 -11
- package/coverage/lcov-report/src/draggable/index.html +5 -5
- package/coverage/lcov-report/src/draggable/useDraggable.ts.html +322 -322
- package/coverage/lcov-report/src/draggable/utils.ts.html +81 -81
- package/coverage/lcov-report/src/expansion-panel/ExpansionList.tsx.html +1 -1
- package/coverage/lcov-report/src/expansion-panel/ExpansionPanel.tsx.html +1 -1
- package/coverage/lcov-report/src/expansion-panel/ExpansionPanelHeader.tsx.html +11 -20
- package/coverage/lcov-report/src/expansion-panel/index.html +25 -10
- package/coverage/lcov-report/src/expansion-panel/useExpansionList.ts.html +1 -1
- package/coverage/lcov-report/src/expansion-panel/useExpansionPanels.ts.html +1 -1
- package/coverage/lcov-report/src/focus/index.html +23 -23
- package/coverage/lcov-report/src/focus/useFocusContainer.ts.html +142 -121
- package/coverage/lcov-report/src/focus/utils.ts.html +37 -37
- package/coverage/lcov-report/src/form/Checkbox.tsx.html +1 -1
- package/coverage/lcov-report/src/form/Fieldset.tsx.html +1 -1
- package/coverage/lcov-report/src/form/FileInput.tsx.html +133 -139
- package/coverage/lcov-report/src/form/Form.tsx.html +1 -1
- package/coverage/lcov-report/src/form/FormMessage.tsx.html +126 -264
- package/coverage/lcov-report/src/form/FormMessageContainer.tsx.html +42 -45
- package/coverage/lcov-report/src/form/FormMessageCounter.tsx.html +1 -1
- package/coverage/lcov-report/src/form/InputToggle.tsx.html +7 -16
- package/coverage/lcov-report/src/form/InputToggleIcon.tsx.html +1 -1
- package/coverage/lcov-report/src/form/Label.tsx.html +102 -102
- package/coverage/lcov-report/src/form/Legend.tsx.html +1 -1
- package/coverage/lcov-report/src/form/MenuItemCheckbox.tsx.html +11 -5
- package/coverage/lcov-report/src/form/MenuItemFileInput.tsx.html +3 -3
- package/coverage/lcov-report/src/form/MenuItemInputToggle.tsx.html +21 -9
- package/coverage/lcov-report/src/form/MenuItemRadio.tsx.html +11 -5
- package/coverage/lcov-report/src/form/MenuItemSwitch.tsx.html +1 -1
- package/coverage/lcov-report/src/form/MenuItemTextField.tsx.html +13 -4
- package/coverage/lcov-report/src/form/NativeSelect.tsx.html +20 -5
- package/coverage/lcov-report/src/form/OptGroup.tsx.html +1 -1
- package/coverage/lcov-report/src/form/Option.tsx.html +4 -4
- package/coverage/lcov-report/src/form/Password.tsx.html +3 -3
- package/coverage/lcov-report/src/form/Radio.tsx.html +1 -1
- package/coverage/lcov-report/src/form/Select.tsx.html +1 -1
- package/coverage/lcov-report/src/form/SelectValue.tsx.html +1 -1
- package/coverage/lcov-report/src/form/Slider.tsx.html +129 -9
- package/coverage/lcov-report/src/form/SliderContainer.tsx.html +1 -1
- package/coverage/lcov-report/src/form/SliderMark.tsx.html +1 -1
- package/coverage/lcov-report/src/form/SliderMarkLabel.tsx.html +1 -1
- package/coverage/lcov-report/src/form/SliderThumb.tsx.html +43 -7
- package/coverage/lcov-report/src/form/SliderTrack.tsx.html +1 -1
- package/coverage/lcov-report/src/form/SliderValueMarks.tsx.html +11 -5
- package/coverage/lcov-report/src/form/SliderValueTooltip.tsx.html +2 -2
- package/coverage/lcov-report/src/form/Switch.tsx.html +310 -373
- package/coverage/lcov-report/src/form/SwitchTrack.tsx.html +99 -69
- package/coverage/lcov-report/src/form/TextArea.tsx.html +21 -9
- package/coverage/lcov-report/src/form/TextField.tsx.html +16 -10
- package/coverage/lcov-report/src/form/TextFieldAddon.tsx.html +14 -26
- package/coverage/lcov-report/src/form/TextFieldContainer.tsx.html +28 -10
- package/coverage/lcov-report/src/form/TextFieldContainerStyles.ts.html +17 -8
- package/coverage/lcov-report/src/form/fileUtils.ts.html +3 -3
- package/coverage/lcov-report/src/form/formConfig.ts.html +18 -18
- package/coverage/lcov-report/src/form/formMessageStyles.ts.html +40 -40
- package/coverage/lcov-report/src/form/index.html +14 -164
- package/coverage/lcov-report/src/form/inputToggleStyles.ts.html +1 -1
- package/coverage/lcov-report/src/form/nativeSelectStyles.ts.html +34 -7
- package/coverage/lcov-report/src/form/optionStyles.ts.html +1 -1
- package/coverage/lcov-report/src/form/passwordStyles.ts.html +1 -1
- package/coverage/lcov-report/src/form/selectStyles.ts.html +1 -1
- package/coverage/lcov-report/src/form/selectUtils.ts.html +6 -9
- package/coverage/lcov-report/src/form/sliderUtils.ts.html +20 -14
- package/coverage/lcov-report/src/form/switchStyles.ts.html +68 -68
- package/coverage/lcov-report/src/form/textAreaStyles.ts.html +3 -3
- package/coverage/lcov-report/src/form/textFieldStyles.ts.html +1 -1
- package/coverage/lcov-report/src/form/useCheckboxGroup.ts.html +2 -2
- package/coverage/lcov-report/src/form/useFileUpload.ts.html +28 -19
- package/coverage/lcov-report/src/form/useListboxProvider.ts.html +5 -8
- package/coverage/lcov-report/src/form/useNumberField.ts.html +10 -10
- package/coverage/lcov-report/src/form/useRadioGroup.ts.html +22 -7
- package/coverage/lcov-report/src/form/useRangeSlider.ts.html +3 -3
- package/coverage/lcov-report/src/form/useResizingTextArea.ts.html +523 -0
- package/coverage/lcov-report/src/form/useSlider.ts.html +2 -2
- package/coverage/lcov-report/src/form/useTextField.ts.html +32 -26
- package/coverage/lcov-report/src/form/utils.ts.html +2 -2
- package/coverage/lcov-report/src/form/validation.ts.html +2 -2
- package/coverage/lcov-report/src/hoverMode/index.html +1 -1
- package/coverage/lcov-report/src/hoverMode/useHoverMode.ts.html +95 -95
- package/coverage/lcov-report/src/hoverMode/useHoverModeProvider.ts.html +3 -3
- package/coverage/lcov-report/src/icon/FontIcon.tsx.html +34 -43
- package/coverage/lcov-report/src/icon/IconRotator.tsx.html +1 -1
- package/coverage/lcov-report/src/icon/MaterialIcon.tsx.html +36 -42
- package/coverage/lcov-report/src/icon/MaterialSymbol.tsx.html +240 -222
- package/coverage/lcov-report/src/icon/SVGIcon.tsx.html +1 -1
- package/coverage/lcov-report/src/icon/TextIconSpacing.tsx.html +33 -33
- package/coverage/lcov-report/src/icon/iconConfig.tsx.html +973 -0
- package/coverage/lcov-report/src/icon/index.html +149 -14
- package/coverage/lcov-report/src/icon/material.ts.html +748 -58
- package/coverage/lcov-report/src/icon/materialConfig.ts.html +703 -0
- package/coverage/lcov-report/src/icon/styles.ts.html +47 -110
- package/coverage/lcov-report/src/index.html +8 -8
- package/coverage/lcov-report/src/interaction/Ripple.tsx.html +60 -60
- package/coverage/lcov-report/src/interaction/RippleContainer.tsx.html +41 -47
- package/coverage/lcov-report/src/interaction/UserInteractionModeProvider.tsx.html +240 -240
- package/coverage/lcov-report/src/interaction/config.ts.html +7 -7
- package/coverage/lcov-report/src/interaction/index.html +100 -10
- package/coverage/lcov-report/src/interaction/useElementInteraction.tsx.html +146 -146
- package/coverage/lcov-report/src/interaction/useHigherContrastChildren.tsx.html +17 -17
- package/coverage/lcov-report/src/interaction/utils.ts.html +171 -171
- package/coverage/lcov-report/src/layout/LayoutAppBar.tsx.html +1 -1
- package/coverage/lcov-report/src/layout/LayoutNav.tsx.html +60 -60
- package/coverage/lcov-report/src/layout/LayoutWindowSplitter.tsx.html +1 -1
- package/coverage/lcov-report/src/layout/Main.tsx.html +1 -1
- package/coverage/lcov-report/src/layout/index.html +200 -5
- package/coverage/lcov-report/src/layout/layoutNavStyles.ts.html +5 -5
- package/coverage/lcov-report/src/layout/layoutWindowSplitterStyles.ts.html +1 -1
- package/coverage/lcov-report/src/layout/mainStyles.ts.html +1 -1
- package/coverage/lcov-report/src/layout/useExpandableLayout.ts.html +1 -1
- package/coverage/lcov-report/src/layout/useHorizontalLayoutTransition.ts.html +1 -1
- package/coverage/lcov-report/src/layout/useLayoutAppBarHeight.ts.html +1 -1
- package/coverage/lcov-report/src/layout/useLayoutTree.ts.html +1 -1
- package/coverage/lcov-report/src/layout/useLayoutWindowSplitter.ts.html +1 -1
- package/coverage/lcov-report/src/layout/useMainTabIndex.ts.html +1 -1
- package/coverage/lcov-report/src/layout/useResizableLayout.ts.html +1 -1
- package/coverage/lcov-report/src/layout/useTemporaryLayout.ts.html +3 -3
- package/coverage/lcov-report/src/link/Link.tsx.html +39 -9
- package/coverage/lcov-report/src/link/SkipToMainContent.tsx.html +1 -1
- package/coverage/lcov-report/src/link/index.html +16 -16
- package/coverage/lcov-report/src/link/styles.ts.html +1 -1
- package/coverage/lcov-report/src/list/List.tsx.html +33 -33
- package/coverage/lcov-report/src/list/ListItem.tsx.html +534 -534
- package/coverage/lcov-report/src/list/ListItemAddon.tsx.html +33 -33
- package/coverage/lcov-report/src/list/ListItemChildren.tsx.html +77 -77
- package/coverage/lcov-report/src/list/ListItemLink.tsx.html +2 -2
- package/coverage/lcov-report/src/list/ListItemText.tsx.html +35 -35
- package/coverage/lcov-report/src/list/ListSubheader.tsx.html +1 -1
- package/coverage/lcov-report/src/list/getListItemHeight.ts.html +33 -33
- package/coverage/lcov-report/src/list/index.html +128 -8
- package/coverage/lcov-report/src/list/listItemStyles.ts.html +1 -1
- package/coverage/lcov-report/src/media-queries/AppSizeProvider.tsx.html +59 -59
- package/coverage/lcov-report/src/media-queries/appSize.ts.html +1 -1
- package/coverage/lcov-report/src/media-queries/index.html +20 -5
- package/coverage/lcov-report/src/media-queries/useMediaQuery.ts.html +24 -24
- package/coverage/lcov-report/src/menu/DropdownMenu.tsx.html +73 -16
- package/coverage/lcov-report/src/menu/Menu.tsx.html +66 -33
- package/coverage/lcov-report/src/menu/MenuBar.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/MenuButton.tsx.html +3 -3
- package/coverage/lcov-report/src/menu/MenuConfigurationProvider.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/MenuItem.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/MenuItemButton.tsx.html +3 -3
- package/coverage/lcov-report/src/menu/MenuItemGroup.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/MenuItemSeparator.tsx.html +6 -36
- package/coverage/lcov-report/src/menu/MenuSheet.tsx.html +34 -7
- package/coverage/lcov-report/src/menu/MenuVisibilityProvider.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/MenuWidget.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/MenuWidgetKeyboardProvider.tsx.html +1 -1
- package/coverage/lcov-report/src/menu/index.html +69 -24
- package/coverage/lcov-report/src/menu/useContextMenu.ts.html +1 -1
- package/coverage/lcov-report/src/menu/useMenuBarProvider.ts.html +1 -1
- package/coverage/lcov-report/src/menu/utils.ts.html +10 -10
- package/coverage/lcov-report/src/movement/constants.ts.html +1 -1
- package/coverage/lcov-report/src/movement/findMatchIndex.ts.html +1 -1
- package/coverage/lcov-report/src/movement/index.html +53 -8
- package/coverage/lcov-report/src/movement/useKeyboardMovementProvider.ts.html +92 -92
- package/coverage/lcov-report/src/movement/utils.ts.html +1 -1
- package/coverage/lcov-report/src/overlay/Overlay.tsx.html +64 -64
- package/coverage/lcov-report/src/overlay/index.html +1 -1
- package/coverage/lcov-report/src/overlay/overlayStyles.ts.html +28 -28
- package/coverage/lcov-report/src/portal/Portal.tsx.html +9 -9
- package/coverage/lcov-report/src/portal/PortalContainerProvider.tsx.html +29 -29
- package/coverage/lcov-report/src/portal/index.html +20 -5
- package/coverage/lcov-report/src/positioning/constants.ts.html +1 -1
- package/coverage/lcov-report/src/positioning/createHorizontalPosition.ts.html +63 -63
- package/coverage/lcov-report/src/positioning/createVerticalPosition.ts.html +65 -65
- package/coverage/lcov-report/src/positioning/getFixedPosition.ts.html +94 -94
- package/coverage/lcov-report/src/positioning/index.html +70 -10
- package/coverage/lcov-report/src/positioning/useFixedPositioning.ts.html +200 -200
- package/coverage/lcov-report/src/positioning/utils.ts.html +111 -111
- package/coverage/lcov-report/src/progress/CircularProgress.tsx.html +501 -456
- package/coverage/lcov-report/src/progress/LinearProgress.tsx.html +419 -338
- package/coverage/lcov-report/src/progress/getProgressA11y.ts.html +1 -1
- package/coverage/lcov-report/src/progress/index.html +32 -32
- package/coverage/lcov-report/src/responsive-item/ResponsiveItemContainer.tsx.html +1 -1
- package/coverage/lcov-report/src/responsive-item/ResponsiveItemOverlay.tsx.html +1 -1
- package/coverage/lcov-report/src/responsive-item/index.html +20 -5
- package/coverage/lcov-report/src/responsive-item/styles.ts.html +1 -1
- package/coverage/lcov-report/src/scroll/ScrollLock.tsx.html +1 -1
- package/coverage/lcov-report/src/scroll/getScrollbarWidth.ts.html +25 -25
- package/coverage/lcov-report/src/scroll/index.html +5 -5
- package/coverage/lcov-report/src/scroll/useScrollLock.ts.html +27 -27
- package/coverage/lcov-report/src/segmented-button/SegmentedButton.tsx.html +4 -4
- package/coverage/lcov-report/src/segmented-button/SegmentedButtonContainer.tsx.html +29 -8
- package/coverage/lcov-report/src/segmented-button/index.html +50 -5
- package/coverage/lcov-report/src/segmented-button/segmentedButtonContainerStyles.ts.html +15 -6
- package/coverage/lcov-report/src/segmented-button/segmentedButtonStyles.ts.html +1 -1
- package/coverage/lcov-report/src/sheet/Sheet.tsx.html +1 -1
- package/coverage/lcov-report/src/sheet/index.html +20 -5
- package/coverage/lcov-report/src/sheet/styles.ts.html +28 -28
- package/coverage/lcov-report/src/snackbar/DefaultToastRenderer.tsx.html +8 -5
- package/coverage/lcov-report/src/snackbar/Snackbar.tsx.html +7 -133
- package/coverage/lcov-report/src/snackbar/Toast.tsx.html +2 -2
- package/coverage/lcov-report/src/snackbar/ToastActionButton.tsx.html +1 -1
- package/coverage/lcov-report/src/snackbar/ToastCloseButton.tsx.html +3 -3
- package/coverage/lcov-report/src/snackbar/ToastContent.tsx.html +7 -115
- package/coverage/lcov-report/src/snackbar/ToastManager.tsx.html +1783 -0
- package/coverage/lcov-report/src/snackbar/ToastManagerProvider.tsx.html +16 -1696
- package/coverage/lcov-report/src/snackbar/index.html +159 -9
- package/coverage/lcov-report/src/snackbar/snackbarStyles.ts.html +214 -0
- package/coverage/lcov-report/src/snackbar/toastContentStyles.ts.html +196 -0
- package/coverage/lcov-report/src/snackbar/toastStyles.ts.html +1 -1
- package/coverage/lcov-report/src/snackbar/useCurrentToastActions.ts.html +1 -1
- package/coverage/lcov-report/src/suspense/CircularProgressSuspense.tsx.html +57 -6
- package/coverage/lcov-report/src/suspense/NullSuspense.tsx.html +1 -1
- package/coverage/lcov-report/src/suspense/index.html +7 -22
- package/coverage/lcov-report/src/table/Table.tsx.html +1 -1
- package/coverage/lcov-report/src/table/TableBody.tsx.html +1 -1
- package/coverage/lcov-report/src/table/TableCell.tsx.html +20 -35
- package/coverage/lcov-report/src/table/TableCellContent.tsx.html +2 -2
- package/coverage/lcov-report/src/table/TableCheckbox.tsx.html +1 -1
- package/coverage/lcov-report/src/table/TableConfigurationProvider.tsx.html +6 -12
- package/coverage/lcov-report/src/table/TableContainer.tsx.html +1 -1
- package/coverage/lcov-report/src/table/TableContainerProvider.tsx.html +1 -1
- package/coverage/lcov-report/src/table/TableFooter.tsx.html +1 -1
- package/coverage/lcov-report/src/table/TableHeader.tsx.html +1 -1
- package/coverage/lcov-report/src/table/TableRow.tsx.html +1 -1
- package/coverage/lcov-report/src/table/index.html +113 -8
- package/coverage/lcov-report/src/tabs/Tab.tsx.html +69 -69
- package/coverage/lcov-report/src/tabs/TabList.tsx.html +92 -92
- package/coverage/lcov-report/src/tabs/TabListScrollButton.tsx.html +61 -61
- package/coverage/lcov-report/src/tabs/index.html +143 -8
- package/coverage/lcov-report/src/tabs/tabIndicatorStyles.ts.html +157 -0
- package/coverage/lcov-report/src/tabs/tabListScrollButtonStyles.ts.html +226 -0
- package/coverage/lcov-report/src/tabs/tabListStyles.ts.html +241 -0
- package/coverage/lcov-report/src/tabs/tabStyles.ts.html +17 -17
- package/coverage/lcov-report/src/tabs/useTabList.ts.html +94 -94
- package/coverage/lcov-report/src/tabs/useTabs.ts.html +54 -54
- package/coverage/lcov-report/src/tabs/utils.ts.html +3 -3
- package/coverage/lcov-report/src/test-utils/IntersectionObserver.ts.html +1 -1
- package/coverage/lcov-report/src/test-utils/ResizeObserver.ts.html +1 -1
- package/coverage/lcov-report/src/test-utils/data-testid.ts.html +100 -0
- package/coverage/lcov-report/src/test-utils/drag.ts.html +1 -1
- package/coverage/lcov-report/src/test-utils/index.html +114 -9
- package/coverage/lcov-report/src/test-utils/jest-setup.ts.html +21 -9
- package/coverage/lcov-report/src/test-utils/matchMedia.ts.html +4 -4
- package/coverage/lcov-report/src/test-utils/polyfills/IntersectionObserver.ts.html +4 -4
- package/coverage/lcov-report/src/test-utils/polyfills/ResizeObserver.ts.html +3 -3
- package/coverage/lcov-report/src/test-utils/polyfills/index.html +1 -1
- package/coverage/lcov-report/src/test-utils/polyfills/matchMedia.ts.html +6 -6
- package/coverage/lcov-report/src/test-utils/polyfills/offsetParent.ts.html +14 -14
- package/coverage/lcov-report/src/test-utils/polyfills/scrollIntoView.ts.html +5 -5
- package/coverage/lcov-report/src/test-utils/render.tsx.html +21 -21
- package/coverage/lcov-report/src/test-utils/timers.ts.html +1 -1
- package/coverage/lcov-report/src/theme/LocalStorageColorSchemeProvider.tsx.html +1 -1
- package/coverage/lcov-report/src/theme/ThemeProvider.tsx.html +22 -4
- package/coverage/lcov-report/src/theme/colors.ts.html +1 -1
- package/coverage/lcov-report/src/theme/cssVars.ts.html +1 -1
- package/coverage/lcov-report/src/theme/index.html +71 -11
- package/coverage/lcov-report/src/theme/useCSSVariables.ts.html +1 -1
- package/coverage/lcov-report/src/theme/useColorScheme.ts.html +1 -1
- package/coverage/lcov-report/src/theme/useColorSchemeMetaTag.ts.html +1 -1
- package/coverage/lcov-report/src/theme/useColorSchemeProvider.ts.html +1 -1
- package/coverage/lcov-report/src/theme/usePrefersColorScheme.ts.html +1 -1
- package/coverage/lcov-report/src/theme/utils.ts.html +58 -58
- package/coverage/lcov-report/src/tooltip/Tooltip.tsx.html +98 -74
- package/coverage/lcov-report/src/tooltip/TooltipHoverModeProvider.tsx.html +60 -6
- package/coverage/lcov-report/src/tooltip/constants.ts.html +1 -1
- package/coverage/lcov-report/src/tooltip/index.html +72 -27
- package/coverage/lcov-report/src/tooltip/tooltipStyles.ts.html +18 -18
- package/coverage/lcov-report/src/tooltip/useOverflowTooltip.ts.html +196 -196
- package/coverage/lcov-report/src/tooltip/useTooltip.ts.html +511 -211
- package/coverage/lcov-report/src/tooltip/useTooltipPosition.ts.html +29 -29
- package/coverage/lcov-report/src/tooltip/utils.ts.html +23 -23
- package/coverage/lcov-report/src/transition/CSSTransition.tsx.html +1 -1
- package/coverage/lcov-report/src/transition/Collapse.tsx.html +1 -1
- package/coverage/lcov-report/src/transition/CrossFade.tsx.html +1 -1
- package/coverage/lcov-report/src/transition/ScaleTransition.tsx.html +1 -1
- package/coverage/lcov-report/src/transition/SkeletonPlaceholder.tsx.html +1 -1
- package/coverage/lcov-report/src/transition/Slide.tsx.html +46 -46
- package/coverage/lcov-report/src/transition/SlideContainer.tsx.html +1 -1
- package/coverage/lcov-report/src/transition/collapseStyles.ts.html +13 -13
- package/coverage/lcov-report/src/transition/config.ts.html +187 -0
- package/coverage/lcov-report/src/transition/index.html +295 -10
- package/coverage/lcov-report/src/transition/maxWidthTransition.ts.html +1 -1
- package/coverage/lcov-report/src/transition/useCSSTransition.ts.html +69 -69
- package/coverage/lcov-report/src/transition/useCarousel.ts.html +1 -1
- package/coverage/lcov-report/src/transition/useCollapseTransition.ts.html +99 -99
- package/coverage/lcov-report/src/transition/useCrossFadeTransition.ts.html +1 -1
- package/coverage/lcov-report/src/transition/useMaxWidthTransition.ts.html +1 -1
- package/coverage/lcov-report/src/transition/useScaleTransition.ts.html +18 -18
- package/coverage/lcov-report/src/transition/useSkeletonPlaceholder.ts.html +1 -1
- package/coverage/lcov-report/src/transition/useSlideTransition.ts.html +20 -20
- package/coverage/lcov-report/src/transition/useTransition.ts.html +277 -250
- package/coverage/lcov-report/src/transition/utils.ts.html +68 -68
- package/coverage/lcov-report/src/tree/DefaultTreeItemRenderer.tsx.html +2 -2
- package/coverage/lcov-report/src/tree/Tree.tsx.html +24 -36
- package/coverage/lcov-report/src/tree/TreeGroup.tsx.html +45 -45
- package/coverage/lcov-report/src/tree/TreeItem.tsx.html +213 -216
- package/coverage/lcov-report/src/tree/TreeItemExpander.tsx.html +3 -3
- package/coverage/lcov-report/src/tree/TreeProvider.tsx.html +29 -11
- package/coverage/lcov-report/src/tree/index.html +114 -9
- package/coverage/lcov-report/src/tree/styles.ts.html +1 -1
- package/coverage/lcov-report/src/tree/useTree.ts.html +1 -1
- package/coverage/lcov-report/src/tree/useTreeExpansion.ts.html +1 -1
- package/coverage/lcov-report/src/tree/useTreeItems.ts.html +10 -13
- package/coverage/lcov-report/src/tree/useTreeMovement.ts.html +1 -1
- package/coverage/lcov-report/src/tree/useTreeSelection.ts.html +1 -1
- package/coverage/lcov-report/src/tree/utils.ts.html +1 -1
- package/coverage/lcov-report/src/typography/SrOnly.tsx.html +26 -26
- package/coverage/lcov-report/src/typography/TextContainer.tsx.html +1 -1
- package/coverage/lcov-report/src/typography/Typography.tsx.html +71 -71
- package/coverage/lcov-report/src/typography/WritingDirectionProvider.tsx.html +75 -75
- package/coverage/lcov-report/src/typography/index.html +64 -19
- package/coverage/lcov-report/src/useAsyncAction.ts.html +25 -25
- package/coverage/lcov-report/src/useDebouncedFunction.ts.html +1 -1
- package/coverage/lcov-report/src/useDropzone.ts.html +1 -1
- package/coverage/lcov-report/src/useEnsuredId.ts.html +8 -8
- package/coverage/lcov-report/src/useEnsuredRef.ts.html +22 -19
- package/coverage/lcov-report/src/useEnsuredState.ts.html +18 -18
- package/coverage/lcov-report/src/useHtmlClassName.ts.html +1 -1
- package/coverage/lcov-report/src/useIntersectionObserver.ts.html +32 -32
- package/coverage/lcov-report/src/useIsomorphicLayoutEffect.ts.html +1 -1
- package/coverage/lcov-report/src/useLocalStorage.ts.html +225 -225
- package/coverage/lcov-report/src/useOrientation.ts.html +32 -32
- package/coverage/lcov-report/src/usePageInactive.ts.html +25 -25
- package/coverage/lcov-report/src/useResizeListener.ts.html +1 -1
- package/coverage/lcov-report/src/useResizeObserver.ts.html +28 -28
- package/coverage/lcov-report/src/useThrottledFunction.ts.html +1 -1
- package/coverage/lcov-report/src/useToggle.ts.html +18 -18
- package/coverage/lcov-report/src/useUnmounted.ts.html +11 -11
- package/coverage/lcov-report/src/useWindowSize.ts.html +1 -1
- package/coverage/lcov-report/src/utils/RenderRecursively.tsx.html +1 -1
- package/coverage/lcov-report/src/utils/alphaNumericSort.ts.html +1 -1
- package/coverage/lcov-report/src/utils/applyRef.ts.html +11 -11
- package/coverage/lcov-report/src/utils/bem.ts.html +50 -50
- package/coverage/lcov-report/src/utils/filters.ts.html +1 -1
- package/coverage/lcov-report/src/utils/getClientPosition.ts.html +1 -1
- package/coverage/lcov-report/src/utils/getPercentage.ts.html +36 -36
- package/coverage/lcov-report/src/utils/getRangeDefaultValue.ts.html +1 -1
- package/coverage/lcov-report/src/utils/getRangeSteps.ts.html +1 -1
- package/coverage/lcov-report/src/utils/identity.ts.html +1 -1
- package/coverage/lcov-report/src/utils/index.html +212 -17
- package/coverage/lcov-report/src/utils/isElementVisible.ts.html +14 -14
- package/coverage/lcov-report/src/utils/loop.ts.html +1 -1
- package/coverage/lcov-report/src/utils/nearest.ts.html +1 -1
- package/coverage/lcov-report/src/utils/parseCssLengthUnit.ts.html +41 -41
- package/coverage/lcov-report/src/utils/randomInt.ts.html +1 -1
- package/coverage/lcov-report/src/utils/wait.ts.html +1 -1
- package/coverage/lcov-report/src/utils/withinRange.ts.html +1 -1
- package/coverage/lcov-report/src/window-splitter/WindowSplitter.tsx.html +1 -1
- package/coverage/lcov-report/src/window-splitter/index.html +1 -1
- package/coverage/lcov-report/src/window-splitter/useWindowSplitter.ts.html +1 -1
- package/coverage/lcov-report/styles.ts.html +134 -320
- package/coverage/lcov-report/switchStyles.ts.html +172 -0
- package/coverage/lcov-report/table/Table.tsx.html +526 -0
- package/coverage/lcov-report/table/TableBody.tsx.html +280 -0
- package/coverage/lcov-report/table/TableCell.tsx.html +159 -168
- package/coverage/lcov-report/table/TableCheckbox.tsx.html +10 -13
- package/coverage/lcov-report/table/TableRadio.tsx.html +670 -0
- package/coverage/lcov-report/table/TableRow.tsx.html +370 -0
- package/coverage/lcov-report/table/index.html +62 -32
- package/coverage/lcov-report/tableCellStyles.ts.html +334 -0
- package/coverage/lcov-report/tableContainerStyles.ts.html +142 -0
- package/coverage/lcov-report/tableFooterStyles.ts.html +157 -0
- package/coverage/lcov-report/tableHeaderStyles.ts.html +163 -0
- package/coverage/lcov-report/tableRowStyles.ts.html +169 -0
- package/coverage/lcov-report/tableStyles.ts.html +157 -0
- package/coverage/lcov-report/tabs/Tab.tsx.html +502 -0
- package/coverage/lcov-report/tabs/TabList.tsx.html +796 -0
- package/coverage/lcov-report/tabs/index.html +62 -17
- package/coverage/lcov-report/tabs/useTabs.ts.html +1567 -0
- package/coverage/lcov-report/tabs/utils.ts.html +337 -0
- package/coverage/lcov-report/test-utils/index.html +20 -20
- package/coverage/lcov-report/test-utils/jest-setup.ts.html +124 -0
- package/coverage/lcov-report/tooltip/Tooltip.tsx.html +98 -74
- package/coverage/lcov-report/tooltip/TooltipHoverModeProvider.tsx.html +167 -11
- package/coverage/lcov-report/tooltip/constants.ts.html +1 -1
- package/coverage/lcov-report/tooltip/index.html +32 -17
- package/coverage/lcov-report/tooltip/tooltipStyles.ts.html +181 -0
- package/coverage/lcov-report/tooltip/useTooltip.ts.html +490 -190
- package/coverage/lcov-report/tooltipStyles.ts.html +181 -0
- package/coverage/lcov-report/transition/config.ts.html +187 -0
- package/coverage/lcov-report/transition/index.html +9 -24
- package/coverage/lcov-report/transition/useTransition.ts.html +943 -0
- package/coverage/lcov-report/tree/Tree.tsx.html +24 -36
- package/coverage/lcov-report/tree/TreeItem.tsx.html +213 -216
- package/coverage/lcov-report/tree/TreeProvider.tsx.html +55 -10
- package/coverage/lcov-report/tree/index.html +14 -59
- package/coverage/lcov-report/typography/WritingDirectionProvider.tsx.html +781 -0
- package/coverage/lcov-report/typography/index.html +8 -8
- package/coverage/lcov-report/useTooltip.ts.html +651 -375
- package/coverage/lcov-report/useTransition.ts.html +934 -0
- package/coverage/lcov-report/utils/index.html +24 -39
- package/coverage/lcov-report/utils/isElementVisible.ts.html +14 -14
- package/coverage/lcov-report/utils/parseCssLengthUnit.ts.html +19 -19
- package/coverage/lcov.info +0 -1176
- package/dist/_core.scss +5 -1
- package/dist/avatar/Avatar.d.ts +2 -15
- package/dist/avatar/Avatar.js +3 -2
- package/dist/avatar/Avatar.js.map +1 -1
- package/dist/avatar/_avatar.scss +4 -2
- package/dist/avatar/styles.d.ts +20 -2
- package/dist/avatar/styles.js +4 -1
- package/dist/avatar/styles.js.map +1 -1
- package/dist/button/AsyncButton.d.ts +29 -0
- package/dist/button/AsyncButton.js +14 -1
- package/dist/button/AsyncButton.js.map +1 -1
- package/dist/chip/_chip.scss +0 -16
- package/dist/chip/styles.d.ts +1 -1
- package/dist/chip/styles.js +3 -4
- package/dist/chip/styles.js.map +1 -1
- package/dist/cssUtils.d.ts +1 -0
- package/dist/cssUtils.js +1 -1
- package/dist/cssUtils.js.map +1 -1
- package/dist/dialog/Dialog.d.ts +1 -1
- package/dist/dialog/Dialog.js +2 -1
- package/dist/dialog/Dialog.js.map +1 -1
- package/dist/focus/useFocusContainer.d.ts +8 -8
- package/dist/focus/useFocusContainer.js +11 -10
- package/dist/focus/useFocusContainer.js.map +1 -1
- package/dist/form/MenuItemInputToggle.js +2 -2
- package/dist/form/MenuItemInputToggle.js.map +1 -1
- package/dist/form/MenuItemTextField.d.ts +2 -0
- package/dist/form/MenuItemTextField.js.map +1 -1
- package/dist/form/Slider.d.ts +41 -5
- package/dist/form/Slider.js +2 -1
- package/dist/form/Slider.js.map +1 -1
- package/dist/form/SliderThumb.d.ts +7 -2
- package/dist/form/SliderThumb.js +4 -2
- package/dist/form/SliderThumb.js.map +1 -1
- package/dist/form/SliderValueMarks.js +1 -1
- package/dist/form/SliderValueMarks.js.map +1 -1
- package/dist/form/SliderValueTooltip.js +1 -1
- package/dist/form/SliderValueTooltip.js.map +1 -1
- package/dist/form/Switch.d.ts +3 -2
- package/dist/form/Switch.js +7 -26
- package/dist/form/Switch.js.map +1 -1
- package/dist/form/SwitchTrack.d.ts +2 -1
- package/dist/form/SwitchTrack.js +8 -4
- package/dist/form/SwitchTrack.js.map +1 -1
- package/dist/form/_form.scss +41 -34
- package/dist/form/switchStyles.d.ts +1 -0
- package/dist/form/switchStyles.js +2 -1
- package/dist/form/switchStyles.js.map +1 -1
- package/dist/hoverMode/useHoverMode.d.ts +2 -2
- package/dist/hoverMode/useHoverMode.js +1 -1
- package/dist/hoverMode/useHoverMode.js.map +1 -1
- package/dist/icon/FontIcon.d.ts +2 -1
- package/dist/icon/FontIcon.js +4 -5
- package/dist/icon/FontIcon.js.map +1 -1
- package/dist/icon/MaterialIcon.d.ts +2 -2
- package/dist/icon/MaterialIcon.js +3 -6
- package/dist/icon/MaterialIcon.js.map +1 -1
- package/dist/icon/MaterialSymbol.d.ts +15 -8
- package/dist/icon/MaterialSymbol.js +15 -11
- package/dist/icon/MaterialSymbol.js.map +1 -1
- package/dist/icon/iconConfig.js.map +1 -1
- package/dist/icon/material.d.ts +1 -1
- package/dist/icon/material.js.map +1 -1
- package/dist/icon/materialConfig.d.ts +156 -0
- package/dist/icon/materialConfig.js +29 -0
- package/dist/icon/materialConfig.js.map +1 -0
- package/dist/icon/styles.d.ts +0 -15
- package/dist/icon/styles.js +2 -4
- package/dist/icon/styles.js.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.js +8 -6
- package/dist/index.js.map +1 -1
- package/dist/link/Link.d.ts +12 -6
- package/dist/link/Link.js +1 -2
- package/dist/link/Link.js.map +1 -1
- package/dist/list/ListItemLink.d.ts +1 -1
- package/dist/list/ListItemLink.js.map +1 -1
- package/dist/menu/DropdownMenu.d.ts +12 -1
- package/dist/menu/DropdownMenu.js +13 -4
- package/dist/menu/DropdownMenu.js.map +1 -1
- package/dist/menu/Menu.d.ts +8 -0
- package/dist/menu/Menu.js +2 -1
- package/dist/menu/Menu.js.map +1 -1
- package/dist/menu/MenuItemSeparator.d.ts +1 -2
- package/dist/menu/MenuItemSeparator.js +2 -8
- package/dist/menu/MenuItemSeparator.js.map +1 -1
- package/dist/menu/MenuSheet.d.ts +6 -1
- package/dist/menu/MenuSheet.js.map +1 -1
- package/dist/menu/menuConfig.d.ts +60 -0
- package/dist/progress/CircularProgress.d.ts +5 -4
- package/dist/progress/CircularProgress.js +3 -3
- package/dist/progress/CircularProgress.js.map +1 -1
- package/dist/progress/LinearProgress.d.ts +7 -5
- package/dist/progress/LinearProgress.js +4 -3
- package/dist/progress/LinearProgress.js.map +1 -1
- package/dist/segmented-button/_segmented-button.scss +5 -0
- package/dist/suspense/CircularProgressSuspense.d.ts +4 -0
- package/dist/suspense/CircularProgressSuspense.js +3 -1
- package/dist/suspense/CircularProgressSuspense.js.map +1 -1
- package/dist/table/Table.d.ts +0 -12
- package/dist/table/Table.js +1 -12
- package/dist/table/Table.js.map +1 -1
- package/dist/table/TableCell.d.ts +13 -38
- package/dist/table/TableCell.js +7 -15
- package/dist/table/TableCell.js.map +1 -1
- package/dist/table/TableCellContent.d.ts +9 -0
- package/dist/table/TableCellContent.js +2 -1
- package/dist/table/TableCellContent.js.map +1 -1
- package/dist/table/TableCheckbox.d.ts +2 -2
- package/dist/table/TableCheckbox.js +3 -3
- package/dist/table/TableCheckbox.js.map +1 -1
- package/dist/table/TableContainer.d.ts +0 -6
- package/dist/table/TableContainer.js +1 -6
- package/dist/table/TableContainer.js.map +1 -1
- package/dist/table/TableFooter.d.ts +7 -1
- package/dist/table/TableFooter.js +17 -16
- package/dist/table/TableFooter.js.map +1 -1
- package/dist/table/TableHeader.d.ts +7 -14
- package/dist/table/TableHeader.js +6 -14
- package/dist/table/TableHeader.js.map +1 -1
- package/dist/table/TableRadio.d.ts +106 -0
- package/dist/table/TableRadio.js +106 -0
- package/dist/table/TableRadio.js.map +1 -0
- package/dist/table/TableRow.d.ts +0 -10
- package/dist/table/TableRow.js +1 -12
- package/dist/table/TableRow.js.map +1 -1
- package/dist/table/_table.scss +16 -18
- package/dist/table/tableCellStyles.d.ts +33 -0
- package/dist/table/tableCellStyles.js +15 -0
- package/dist/table/tableCellStyles.js.map +1 -0
- package/dist/table/tableContainerStyles.d.ts +10 -0
- package/dist/table/tableContainerStyles.js +9 -0
- package/dist/table/tableContainerStyles.js.map +1 -0
- package/dist/table/tableFooterStyles.d.ts +10 -0
- package/dist/table/tableFooterStyles.js +12 -0
- package/dist/table/tableFooterStyles.js.map +1 -0
- package/dist/table/tableHeaderStyles.d.ts +10 -0
- package/dist/table/tableHeaderStyles.js +13 -0
- package/dist/table/tableHeaderStyles.js.map +1 -0
- package/dist/table/tableRowStyles.d.ts +10 -0
- package/dist/table/tableRowStyles.js +14 -0
- package/dist/table/tableRowStyles.js.map +1 -0
- package/dist/table/tableStyles.d.ts +12 -0
- package/dist/table/tableStyles.js +14 -0
- package/dist/table/tableStyles.js.map +1 -0
- package/dist/table/types.d.ts +28 -15
- package/dist/table/types.js.map +1 -1
- package/dist/tabs/_tabs.scss +2 -0
- package/dist/test-utils/data-testid.js +2 -0
- package/dist/test-utils/data-testid.js.map +1 -0
- package/dist/test-utils/jest-setup.js +3 -0
- package/dist/test-utils/jest-setup.js.map +1 -1
- package/dist/theme/ThemeProvider.d.ts +5 -0
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/tooltip/Tooltip.d.ts +13 -6
- package/dist/tooltip/Tooltip.js +2 -2
- package/dist/tooltip/Tooltip.js.map +1 -1
- package/dist/tooltip/TooltipHoverModeProvider.d.ts +15 -0
- package/dist/tooltip/TooltipHoverModeProvider.js.map +1 -1
- package/dist/tooltip/_tooltip.scss +1 -0
- package/dist/tooltip/tooltipStyles.d.ts +2 -1
- package/dist/tooltip/tooltipStyles.js +2 -2
- package/dist/tooltip/tooltipStyles.js.map +1 -1
- package/dist/tooltip/useTooltip.d.ts +71 -8
- package/dist/tooltip/useTooltip.js +68 -7
- package/dist/tooltip/useTooltip.js.map +1 -1
- package/dist/transition/config.d.ts +22 -0
- package/dist/transition/config.js +16 -0
- package/dist/transition/config.js.map +1 -0
- package/dist/transition/useTransition.js +15 -6
- package/dist/transition/useTransition.js.map +1 -1
- package/dist/tree/DefaultTreeItemRenderer.d.ts +1 -1
- package/dist/tree/DefaultTreeItemRenderer.js.map +1 -1
- package/dist/tree/Tree.d.ts +1 -1
- package/dist/tree/Tree.js +18 -21
- package/dist/tree/Tree.js.map +1 -1
- package/dist/tree/TreeItem.js +1 -3
- package/dist/tree/TreeItem.js.map +1 -1
- package/dist/tree/TreeProvider.d.ts +2 -0
- package/dist/tree/TreeProvider.js +3 -1
- package/dist/tree/TreeProvider.js.map +1 -1
- package/package.json +20 -17
- package/src/__tests__/NoSsr.tsx +5 -5
- package/src/__tests__/useAsyncAction.tsx +14 -6
- package/src/__tests__/useDebouncedFunction.tsx +6 -3
- package/src/__tests__/useDropzone.tsx +10 -10
- package/src/__tests__/useEnsuredId.tsx +5 -5
- package/src/__tests__/useEnsuredState.tsx +1 -2
- package/src/__tests__/useLocalStorage.tsx +21 -21
- package/src/__tests__/useResizeObserver.tsx +2 -0
- package/src/__tests__/useThrottledFunction.tsx +9 -8
- package/src/__tests__/useToggle.tsx +10 -10
- package/src/_core.scss +5 -1
- package/src/app-bar/__tests__/AppBar.tsx +15 -15
- package/src/app-bar/__tests__/AppBarTitle.tsx +3 -5
- package/src/avatar/Avatar.tsx +12 -20
- package/src/avatar/__tests__/Avatar.tsx +6 -6
- package/src/avatar/_avatar.scss +4 -2
- package/src/avatar/styles.ts +27 -4
- package/src/badge/__tests__/Badge.tsx +3 -3
- package/src/button/AsyncButton.tsx +71 -4
- package/src/button/__tests__/AsyncButton.tsx +2 -0
- package/src/button/__tests__/Button.tsx +12 -12
- package/src/button/__tests__/ButtonUnstyled.tsx +3 -3
- package/src/button/__tests__/__snapshots__/AsyncButton.tsx.snap +31 -8
- package/src/card/__tests__/Card.tsx +3 -3
- package/src/card/__tests__/CardContent.tsx +3 -3
- package/src/card/__tests__/CardFooter.tsx +3 -3
- package/src/card/__tests__/CardHeader.tsx +5 -5
- package/src/card/__tests__/CardSubtitle.tsx +3 -3
- package/src/card/__tests__/CardTitle.tsx +3 -3
- package/src/chip/__tests__/Chip.tsx +20 -22
- package/src/chip/__tests__/__snapshots__/Chip.tsx.snap +3 -3
- package/src/chip/__tests__/__snapshots__/styles.ts.snap +1 -1
- package/src/chip/_chip.scss +0 -16
- package/src/chip/styles.ts +4 -5
- package/src/cssUtils.ts +4 -1
- package/src/dialog/Dialog.tsx +5 -4
- package/src/dialog/__tests__/Dialog.tsx +316 -0
- package/src/dialog/__tests__/DialogContent.tsx +53 -0
- package/src/dialog/__tests__/DialogFooter.tsx +70 -0
- package/src/dialog/__tests__/DialogHeader.tsx +37 -0
- package/src/dialog/__tests__/DialogTitle.tsx +41 -0
- package/src/dialog/__tests__/__snapshots__/Dialog.tsx.snap +84 -0
- package/src/dialog/__tests__/__snapshots__/DialogContent.tsx.snap +36 -0
- package/src/dialog/__tests__/__snapshots__/DialogFooter.tsx.snap +186 -0
- package/src/dialog/__tests__/__snapshots__/DialogHeader.tsx.snap +18 -0
- package/src/dialog/__tests__/__snapshots__/DialogTitle.tsx.snap +26 -0
- package/src/divider/__tests__/Divider.tsx +3 -3
- package/src/draggable/__tests__/useDraggable.tsx +35 -39
- package/src/expansion-panel/__tests__/ExpansionPanel.tsx +28 -23
- package/src/focus/__tests__/useFocusContainer.tsx +280 -0
- package/src/focus/useFocusContainer.ts +17 -10
- package/src/form/MenuItemInputToggle.tsx +6 -2
- package/src/form/MenuItemTextField.tsx +3 -0
- package/src/form/Slider.tsx +45 -5
- package/src/form/SliderThumb.tsx +15 -3
- package/src/form/SliderValueMarks.tsx +3 -1
- package/src/form/SliderValueTooltip.tsx +1 -1
- package/src/form/Switch.tsx +6 -27
- package/src/form/SwitchTrack.tsx +12 -2
- package/src/form/__tests__/Checkbox.tsx +5 -5
- package/src/form/__tests__/Fieldset.tsx +3 -3
- package/src/form/__tests__/FileInput.tsx +2 -2
- package/src/form/__tests__/Label.tsx +3 -3
- package/src/form/__tests__/Legend.tsx +3 -3
- package/src/form/__tests__/Radio.tsx +3 -3
- package/src/form/__tests__/Switch.tsx +152 -0
- package/src/form/__tests__/__snapshots__/Switch.tsx.snap +428 -0
- package/src/form/__tests__/__snapshots__/useCheckboxGroup.tsx.snap +1 -1
- package/src/form/__tests__/__snapshots__/useRadioGroup.tsx.snap +1 -1
- package/src/form/__tests__/useCheckboxGroup.tsx +33 -33
- package/src/form/__tests__/useFileUpload.tsx +41 -33
- package/src/form/__tests__/useRadioGroup.tsx +25 -25
- package/src/form/_form.scss +41 -34
- package/src/form/switchStyles.ts +3 -3
- package/src/hoverMode/useHoverMode.ts +4 -4
- package/src/icon/FontIcon.tsx +2 -5
- package/src/icon/MaterialIcon.tsx +4 -6
- package/src/icon/MaterialSymbol.tsx +18 -12
- package/src/icon/__tests__/FontIcon.tsx +7 -11
- package/src/icon/__tests__/IconRotator.tsx +4 -4
- package/src/icon/__tests__/MaterialIcon.tsx +79 -0
- package/src/icon/__tests__/MaterialSymbol.tsx +100 -0
- package/src/icon/__tests__/SVGIcon.tsx +6 -5
- package/src/icon/__tests__/TextIconSpacing.tsx +15 -17
- package/src/icon/__tests__/__snapshots__/IconRotator.tsx.snap +6 -6
- package/src/icon/__tests__/__snapshots__/MaterialIcon.tsx.snap +82 -0
- package/src/icon/__tests__/__snapshots__/MaterialSymbol.tsx.snap +42 -0
- package/src/icon/iconConfig.tsx +1 -0
- package/src/icon/material.ts +284 -54
- package/src/icon/{MaterialSymbolsProvider.tsx → materialConfig.ts} +49 -67
- package/src/icon/styles.ts +0 -21
- package/src/index.ts +8 -6
- package/src/interaction/__tests__/UserInteractionModeProvider.tsx +3 -3
- package/src/layout/__tests__/useExpandableLayout.tsx +12 -1
- package/src/layout/__tests__/useLayoutTree.tsx +6 -1
- package/src/layout/__tests__/useResizableLayout.tsx +13 -1
- package/src/layout/__tests__/useTemporaryLayout.tsx +6 -1
- package/src/link/Link.tsx +15 -5
- package/src/link/__tests__/Link.tsx +3 -3
- package/src/link/__tests__/SkipToMainContent.tsx +11 -14
- package/src/list/ListItemLink.tsx +1 -1
- package/src/list/__tests__/List.tsx +7 -7
- package/src/list/__tests__/ListItem.tsx +17 -16
- package/src/list/__tests__/ListItemLink.tsx +7 -7
- package/src/list/__tests__/ListSubheader.tsx +5 -5
- package/src/menu/DropdownMenu.tsx +23 -4
- package/src/menu/Menu.tsx +11 -0
- package/src/menu/MenuItemSeparator.tsx +2 -12
- package/src/menu/MenuSheet.tsx +10 -1
- package/src/menu/__tests__/DropdownMenu.tsx +74 -65
- package/src/menu/__tests__/MenuBar.tsx +57 -48
- package/src/menu/__tests__/MenuVisibilityProvider.tsx +3 -3
- package/src/overlay/__tests__/Overlay.tsx +37 -35
- package/src/portal/__tests__/PortalContainerProvider.node.tsx +1 -0
- package/src/portal/__tests__/PortalContainerProvider.tsx +9 -9
- package/src/positioning/__tests__/useFixedPositioning.tsx +20 -14
- package/src/progress/CircularProgress.tsx +5 -4
- package/src/progress/LinearProgress.tsx +88 -86
- package/src/progress/__tests__/CircularProgress.tsx +49 -27
- package/src/progress/__tests__/LinearProgress.tsx +40 -25
- package/src/progress/__tests__/__snapshots__/CircularProgress.tsx.snap +21 -0
- package/src/progress/__tests__/__snapshots__/LinearProgress.tsx.snap +20 -0
- package/src/segmented-button/_segmented-button.scss +5 -0
- package/src/snackbar/__tests__/Snackbar.tsx +2 -2
- package/src/snackbar/__tests__/Toast.tsx +8 -3
- package/src/snackbar/__tests__/ToastActionButton.tsx +2 -2
- package/src/snackbar/__tests__/ToastCloseButton.tsx +2 -2
- package/src/snackbar/__tests__/ToastManagerProvider.tsx +8 -0
- package/src/suspense/CircularProgressSuspense.tsx +19 -2
- package/src/table/Table.tsx +1 -24
- package/src/table/TableCell.tsx +22 -85
- package/src/table/TableCellContent.tsx +20 -2
- package/src/table/TableCheckbox.tsx +3 -3
- package/src/table/TableContainer.tsx +1 -8
- package/src/table/TableFooter.tsx +30 -23
- package/src/table/TableHeader.tsx +23 -40
- package/src/table/TableRadio.tsx +195 -0
- package/src/table/TableRow.tsx +1 -28
- package/src/table/__tests__/Table.tsx +4 -10
- package/src/table/__tests__/TableBody.tsx +3 -3
- package/src/table/__tests__/TableCheckbox.tsx +10 -11
- package/src/table/__tests__/TableContainer.tsx +3 -3
- package/src/table/__tests__/TableRadio.tsx +112 -0
- package/src/table/__tests__/TableRow.tsx +4 -10
- package/src/table/__tests__/__snapshots__/Table.tsx.snap +249 -251
- package/src/table/__tests__/__snapshots__/TableBody.tsx.snap +3 -3
- package/src/table/__tests__/__snapshots__/TableCheckbox.tsx.snap +4 -4
- package/src/table/__tests__/__snapshots__/TableRadio.tsx.snap +138 -0
- package/src/table/__tests__/__snapshots__/TableRow.tsx.snap +4 -6
- package/src/table/__tests__/__snapshots__/tableContainerStyles.ts.snap +3 -0
- package/src/table/__tests__/__snapshots__/tableRowStyles.ts.snap +3 -0
- package/src/table/__tests__/__snapshots__/tableStyles.ts.snap +3 -0
- package/src/table/__tests__/tableContainerStyles.ts +8 -0
- package/src/table/__tests__/tableRowStyles.ts +8 -0
- package/src/table/__tests__/tableStyles.ts +8 -0
- package/src/table/_table.scss +16 -18
- package/src/table/tableCellStyles.ts +83 -0
- package/src/table/tableContainerStyles.ts +19 -0
- package/src/table/tableFooterStyles.ts +27 -0
- package/src/table/tableHeaderStyles.ts +29 -0
- package/src/table/tableRowStyles.ts +28 -0
- package/src/table/tableStyles.ts +24 -0
- package/src/table/types.ts +33 -15
- package/src/tabs/__tests__/Tab.tsx +3 -3
- package/src/tabs/__tests__/TabList.tsx +50 -40
- package/src/tabs/__tests__/useTabs.tsx +27 -24
- package/src/tabs/_tabs.scss +2 -0
- package/src/test-utils/data-testid.ts +5 -0
- package/src/test-utils/jest-setup.ts +4 -0
- package/src/theme/ThemeProvider.tsx +6 -0
- package/src/theme/__tests__/LocalStorageColorSchemeProvider.tsx +4 -4
- package/src/theme/__tests__/useCSSVariables.tsx +4 -4
- package/src/tooltip/Tooltip.tsx +17 -9
- package/src/tooltip/TooltipHoverModeProvider.tsx +18 -0
- package/src/tooltip/__tests__/Tooltip.tsx +147 -104
- package/src/tooltip/__tests__/TooltipHoverModeProvider.tsx +8 -3
- package/src/tooltip/__tests__/__snapshots__/Tooltip.tsx.snap +0 -33
- package/src/tooltip/_tooltip.scss +1 -0
- package/src/tooltip/tooltipStyles.ts +4 -4
- package/src/tooltip/useTooltip.ts +119 -19
- package/src/transition/__tests__/CSSTransition.tsx +12 -6
- package/src/transition/__tests__/Collapse.tsx +19 -17
- package/src/transition/__tests__/CrossFade.tsx +20 -17
- package/src/transition/__tests__/ScaleTransition.tsx +18 -14
- package/src/transition/__tests__/useCSSTransition.tsx +18 -14
- package/src/transition/__tests__/useCollapseTransition.tsx +25 -21
- package/src/transition/__tests__/useCrossFadeTransition.tsx +20 -16
- package/src/transition/__tests__/useScaleTransition.tsx +18 -12
- package/src/transition/__tests__/useTransition.tsx +165 -68
- package/src/transition/config.ts +34 -0
- package/src/transition/useTransition.ts +15 -6
- package/src/tree/DefaultTreeItemRenderer.tsx +1 -1
- package/src/tree/Tree.tsx +20 -24
- package/src/tree/TreeItem.tsx +2 -3
- package/src/tree/TreeProvider.tsx +6 -0
- package/src/tree/__tests__/Tree.tsx +7 -2
- package/src/tree/__tests__/TreeGroup.tsx +1 -0
- package/src/tree/__tests__/TreeItemExpander.tsx +1 -0
- package/src/typography/__tests__/TextContainer.tsx +3 -3
- package/src/typography/__tests__/Typography.tsx +10 -12
- package/src/typography/__tests__/WritingDirectionProvider.tsx +7 -7
- package/dist/divider/VerticalDivider.js +0 -40
- package/dist/divider/VerticalDivider.js.map +0 -1
- package/dist/divider/useVerticalDividerHeight.js +0 -40
- package/dist/divider/useVerticalDividerHeight.js.map +0 -1
- package/dist/link/LinkProvider.js +0 -26
- package/dist/link/LinkProvider.js.map +0 -1
- package/dist/tooltip/useOverflowTooltip.js +0 -71
- package/dist/tooltip/useOverflowTooltip.js.map +0 -1
- package/src/divider/VerticalDivider.tsx +0 -50
- package/src/divider/__tests__/VerticalDivider.tsx +0 -35
- package/src/divider/__tests__/__snapshots__/VerticalDivider.tsx.snap +0 -41
- package/src/divider/useVerticalDividerHeight.ts +0 -72
- package/src/icon/MaterialIconsProvider.ts +0 -23
- package/src/link/LinkProvider.tsx +0 -51
- package/src/tooltip/__tests__/useOverflowTooltip.tsx +0 -77
- package/src/tooltip/useOverflowTooltip.ts +0 -93
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/transition/useTransition.ts"],"sourcesContent":["\"use client\";\nimport { useEffect, useReducer, useRef, useState } from \"react\";\nimport { useSsr } from \"../SsrProvider.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { useIsomorphicLayoutEffect } from \"../useIsomorphicLayoutEffect.js\";\nimport type {\n TransitionHookOptions,\n TransitionHookReturnValue,\n TransitionStage,\n TransitionState,\n} from \"./types.js\";\nimport { getTransitionTimeout } from \"./utils.js\";\n\nconst INITIAL_STATE: TransitionState = {\n appearing: false,\n rendered: true,\n stage: \"exited\",\n};\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * You'll most likely want to use the {@link useCSSTransition} hook instead\n * since this is just a low-level hook that can be used to transition using\n * timeouts.\n *\n * @typeParam E - The HTMLElement type used or the ref required for the\n * transition.\n * @remarks \\@since 4.0.0\n */\nexport function useTransition<E extends HTMLElement>(\n options: TransitionHookOptions<E>\n): TransitionHookReturnValue<E> {\n const {\n nodeRef,\n timeout,\n transitionIn,\n reflow = false,\n temporary = false,\n appear = false,\n enter = true,\n exit = true,\n onEnter = noop,\n onEntering = noop,\n onEntered = noop,\n onExit = noop,\n onExiting = noop,\n onExited = noop,\n disablePortal: propDisablePortal,\n } = options;\n\n const configurationRef = useRef({\n timeout: getTransitionTimeout({ timeout, appear, enter, exit }),\n reflow,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n } as const);\n useIsomorphicLayoutEffect(() => {\n configurationRef.current = {\n timeout: getTransitionTimeout({ timeout, appear, enter, exit }),\n reflow,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n };\n }, [\n appear,\n enter,\n exit,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n reflow,\n timeout,\n ]);\n\n const ssr = useSsr();\n const [ref, refCallback] = useEnsuredRef<E>(nodeRef);\n const [disablePortal, setDisablePortal] = useState(ssr);\n const [state, dispatch] = useReducer(\n function reducer(\n state: TransitionState,\n action: TransitionStage | \"unmount\"\n ): TransitionState {\n const { appear, enter, exit } = configurationRef.current.timeout;\n const { appearing } = state;\n switch (action) {\n case \"enter\": {\n const duration = appearing ? appear : enter;\n return {\n stage: duration > 0 ? \"enter\" : \"entered\",\n rendered: true,\n appearing,\n };\n }\n case \"entering\":\n case \"entered\":\n return {\n stage: action,\n rendered: true,\n appearing,\n };\n case \"exit\": {\n const stage = exit > 0 ? \"exit\" : \"exited\";\n return {\n stage,\n rendered: !temporary || stage !== \"exited\",\n appearing: false,\n };\n }\n case \"exiting\":\n case \"exited\":\n return {\n stage: action,\n rendered: true,\n appearing: false,\n };\n case \"unmount\":\n if (state.stage === \"exited\" && !state.appearing && !state.rendered) {\n return state;\n }\n\n return {\n stage: \"exited\",\n rendered: false,\n appearing: false,\n };\n }\n },\n INITIAL_STATE,\n () => {\n let stage: TransitionStage = \"exited\";\n if (transitionIn) {\n stage = appear ? \"enter\" : \"entered\";\n }\n\n return {\n appearing: appear && transitionIn,\n rendered: !temporary || transitionIn,\n stage,\n };\n }\n );\n const { appearing, rendered, stage } = state;\n\n const isFirstRender = useRef(true);\n const isRehydrateAppear = useRef(ssr && !transitionIn);\n const defaultTransitionIn = useRef(transitionIn);\n useEffect(() => {\n const {\n timeout,\n reflow,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n } = configurationRef.current;\n let { onExited } = configurationRef.current;\n if (isFirstRender.current) {\n // The exited hook should **not** fire on first render since the element\n // was never in the DOM.\n isFirstRender.current = false;\n onExited = noop;\n }\n\n // if the transitionIn did not change between initial render and rehydration,\n // allow the enter transition to behave like normal.\n if (\n isRehydrateAppear.current &&\n !ssr &&\n !transitionIn &&\n !defaultTransitionIn.current\n ) {\n isRehydrateAppear.current = false;\n }\n\n // Cancel any exiting/exited transitions and instead immediately start the\n // enter transition\n if (transitionIn && stage.startsWith(\"exit\")) {\n const nextStage = isRehydrateAppear.current ? \"entered\" : \"enter\";\n dispatch(nextStage);\n return;\n }\n\n // Cancel any entering/entered transitions and instead immediately start the\n // exit transition\n if (!transitionIn && stage.startsWith(\"enter\")) {\n dispatch(\"exit\");\n return;\n }\n\n if (reflow && ref.current && stage !== \"exited\" && stage !== \"entered\") {\n // force reflow by accessing scrollTop\n ref.current.scrollTop;\n }\n\n let duration = 0;\n let nextStage: TransitionStage = stage;\n switch (stage) {\n case \"enter\":\n onEnter(appearing);\n nextStage = \"entering\";\n break;\n case \"entering\":\n onEntering(appearing);\n duration = timeout.enter;\n nextStage = \"entered\";\n break;\n case \"entered\":\n onEntered(appearing);\n break;\n case \"exit\":\n onExit();\n nextStage = \"exiting\";\n break;\n case \"exiting\":\n onExiting();\n duration = timeout.exit;\n nextStage = \"exited\";\n break;\n case \"exited\":\n onExited();\n setDisablePortal(false);\n break;\n }\n\n if (stage === nextStage) {\n // this is used to help catch changing the temporary prop.\n // not sure if I should really support that though...\n if (stage === \"exited\" && temporary) {\n dispatch(\"unmount\");\n }\n\n return;\n }\n\n // I used to rely on the `dispatch(\"unmount\")` above, but it seems like\n // there are some cases where re-rendering takes too long so the temporary\n // element flashes\n const dispatchStage =\n temporary && nextStage === \"exited\" ? \"unmount\" : nextStage;\n if (duration <= 0) {\n dispatch(dispatchStage);\n return;\n }\n\n const timer = window.setTimeout(() => {\n dispatch(dispatchStage);\n }, duration);\n\n return () => {\n window.clearTimeout(timer);\n };\n }, [appearing, ref, ssr, stage, temporary, transitionIn]);\n\n return {\n ref: refCallback,\n stage,\n rendered,\n appearing,\n transitionTo: dispatch,\n disablePortal: propDisablePortal || disablePortal,\n };\n}\n"],"names":["useEffect","useReducer","useRef","useState","useSsr","useEnsuredRef","useIsomorphicLayoutEffect","getTransitionTimeout","INITIAL_STATE","appearing","rendered","stage","noop","useTransition","options","nodeRef","timeout","transitionIn","reflow","temporary","appear","enter","exit","onEnter","onEntering","onEntered","onExit","onExiting","onExited","disablePortal","propDisablePortal","configurationRef","current","ssr","ref","refCallback","setDisablePortal","state","dispatch","reducer","action","duration","isFirstRender","isRehydrateAppear","defaultTransitionIn","startsWith","nextStage","scrollTop","dispatchStage","timer","window","setTimeout","clearTimeout","transitionTo"],"mappings":"AAAA;AACA,SAASA,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAQ;AAChE,SAASC,MAAM,QAAQ,oBAAoB;AAC3C,SAASC,aAAa,QAAQ,sBAAsB;AACpD,SAASC,yBAAyB,QAAQ,kCAAkC;AAO5E,SAASC,oBAAoB,QAAQ,aAAa;AAElD,MAAMC,gBAAiC;IACrCC,WAAW;IACXC,UAAU;IACVC,OAAO;AACT;AAEA,MAAMC,OAAO;AACX,aAAa;AACf;AAEA;;;;;;;;CAQC,GACD,OAAO,SAASC,cACdC,OAAiC;IAEjC,MAAM,EACJC,OAAO,EACPC,OAAO,EACPC,YAAY,EACZC,SAAS,KAAK,EACdC,YAAY,KAAK,EACjBC,SAAS,KAAK,EACdC,QAAQ,IAAI,EACZC,OAAO,IAAI,EACXC,UAAUX,IAAI,EACdY,aAAaZ,IAAI,EACjBa,YAAYb,IAAI,EAChBc,SAASd,IAAI,EACbe,YAAYf,IAAI,EAChBgB,WAAWhB,IAAI,EACfiB,eAAeC,iBAAiB,EACjC,GAAGhB;IAEJ,MAAMiB,mBAAmB7B,OAAO;QAC9Bc,SAAST,qBAAqB;YAAES;YAASI;YAAQC;YAAOC;QAAK;QAC7DJ;QACAK;QACAC;QACAC;QACAC;QACAC;QACAC;IACF;IACAtB,0BAA0B;QACxByB,iBAAiBC,OAAO,GAAG;YACzBhB,SAAST,qBAAqB;gBAAES;gBAASI;gBAAQC;gBAAOC;YAAK;YAC7DJ;YACAK;YACAC;YACAC;YACAC;YACAC;YACAC;QACF;IACF,GAAG;QACDR;QACAC;QACAC;QACAC;QACAE;QACAD;QACAE;QACAE;QACAD;QACAT;QACAF;KACD;IAED,MAAMiB,MAAM7B;IACZ,MAAM,CAAC8B,KAAKC,YAAY,GAAG9B,cAAiBU;IAC5C,MAAM,CAACc,eAAeO,iBAAiB,GAAGjC,SAAS8B;IACnD,MAAM,CAACI,OAAOC,SAAS,GAAGrC,WACxB,SAASsC,QACPF,KAAsB,EACtBG,MAAmC;QAEnC,MAAM,EAAEpB,MAAM,EAAEC,KAAK,EAAEC,IAAI,EAAE,GAAGS,iBAAiBC,OAAO,CAAChB,OAAO;QAChE,MAAM,EAAEP,SAAS,EAAE,GAAG4B;QACtB,OAAQG;YACN,KAAK;gBAAS;oBACZ,MAAMC,WAAWhC,YAAYW,SAASC;oBACtC,OAAO;wBACLV,OAAO8B,WAAW,IAAI,UAAU;wBAChC/B,UAAU;wBACVD;oBACF;gBACF;YACA,KAAK;YACL,KAAK;gBACH,OAAO;oBACLE,OAAO6B;oBACP9B,UAAU;oBACVD;gBACF;YACF,KAAK;gBAAQ;oBACX,MAAME,QAAQW,OAAO,IAAI,SAAS;oBAClC,OAAO;wBACLX;wBACAD,UAAU,CAACS,aAAaR,UAAU;wBAClCF,WAAW;oBACb;gBACF;YACA,KAAK;YACL,KAAK;gBACH,OAAO;oBACLE,OAAO6B;oBACP9B,UAAU;oBACVD,WAAW;gBACb;YACF,KAAK;gBACH,IAAI4B,MAAM1B,KAAK,KAAK,YAAY,CAAC0B,MAAM5B,SAAS,IAAI,CAAC4B,MAAM3B,QAAQ,EAAE;oBACnE,OAAO2B;gBACT;gBAEA,OAAO;oBACL1B,OAAO;oBACPD,UAAU;oBACVD,WAAW;gBACb;QACJ;IACF,GACAD,eACA;QACE,IAAIG,QAAyB;QAC7B,IAAIM,cAAc;YAChBN,QAAQS,SAAS,UAAU;QAC7B;QAEA,OAAO;YACLX,WAAWW,UAAUH;YACrBP,UAAU,CAACS,aAAaF;YACxBN;QACF;IACF;IAEF,MAAM,EAAEF,SAAS,EAAEC,QAAQ,EAAEC,KAAK,EAAE,GAAG0B;IAEvC,MAAMK,gBAAgBxC,OAAO;IAC7B,MAAMyC,oBAAoBzC,OAAO+B,OAAO,CAAChB;IACzC,MAAM2B,sBAAsB1C,OAAOe;IACnCjB,UAAU;QACR,MAAM,EACJgB,OAAO,EACPE,MAAM,EACNK,OAAO,EACPC,UAAU,EACVC,SAAS,EACTC,MAAM,EACNC,SAAS,EACV,GAAGI,iBAAiBC,OAAO;QAC5B,IAAI,EAAEJ,QAAQ,EAAE,GAAGG,iBAAiBC,OAAO;QAC3C,IAAIU,cAAcV,OAAO,EAAE;YACzB,wEAAwE;YACxE,wBAAwB;YACxBU,cAAcV,OAAO,GAAG;YACxBJ,WAAWhB;QACb;QAEA,6EAA6E;QAC7E,oDAAoD;QACpD,IACE+B,kBAAkBX,OAAO,IACzB,CAACC,OACD,CAAChB,gBACD,CAAC2B,oBAAoBZ,OAAO,EAC5B;YACAW,kBAAkBX,OAAO,GAAG;QAC9B;QAEA,0EAA0E;QAC1E,mBAAmB;QACnB,IAAIf,gBAAgBN,MAAMkC,UAAU,CAAC,SAAS;YAC5C,MAAMC,YAAYH,kBAAkBX,OAAO,GAAG,YAAY;YAC1DM,SAASQ;YACT;QACF;QAEA,4EAA4E;QAC5E,kBAAkB;QAClB,IAAI,CAAC7B,gBAAgBN,MAAMkC,UAAU,CAAC,UAAU;YAC9CP,SAAS;YACT;QACF;QAEA,IAAIpB,UAAUgB,IAAIF,OAAO,IAAIrB,UAAU,YAAYA,UAAU,WAAW;YACtE,sCAAsC;YACtCuB,IAAIF,OAAO,CAACe,SAAS;QACvB;QAEA,IAAIN,WAAW;QACf,IAAIK,YAA6BnC;QACjC,OAAQA;YACN,KAAK;gBACHY,QAAQd;gBACRqC,YAAY;gBACZ;YACF,KAAK;gBACHtB,WAAWf;gBACXgC,WAAWzB,QAAQK,KAAK;gBACxByB,YAAY;gBACZ;YACF,KAAK;gBACHrB,UAAUhB;gBACV;YACF,KAAK;gBACHiB;gBACAoB,YAAY;gBACZ;YACF,KAAK;gBACHnB;gBACAc,WAAWzB,QAAQM,IAAI;gBACvBwB,YAAY;gBACZ;YACF,KAAK;gBACHlB;gBACAQ,iBAAiB;gBACjB;QACJ;QAEA,IAAIzB,UAAUmC,WAAW;YACvB,0DAA0D;YAC1D,qDAAqD;YACrD,IAAInC,UAAU,YAAYQ,WAAW;gBACnCmB,SAAS;YACX;YAEA;QACF;QAEA,uEAAuE;QACvE,0EAA0E;QAC1E,kBAAkB;QAClB,MAAMU,gBACJ7B,aAAa2B,cAAc,WAAW,YAAYA;QACpD,IAAIL,YAAY,GAAG;YACjBH,SAASU;YACT;QACF;QAEA,MAAMC,QAAQC,OAAOC,UAAU,CAAC;YAC9Bb,SAASU;QACX,GAAGP;QAEH,OAAO;YACLS,OAAOE,YAAY,CAACH;QACtB;IACF,GAAG;QAACxC;QAAWyB;QAAKD;QAAKtB;QAAOQ;QAAWF;KAAa;IAExD,OAAO;QACLiB,KAAKC;QACLxB;QACAD;QACAD;QACA4C,cAAcf;QACdT,eAAeC,qBAAqBD;IACtC;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../src/transition/useTransition.ts"],"sourcesContent":["\"use client\";\nimport { useEffect, useReducer, useRef, useState } from \"react\";\nimport { useSsr } from \"../SsrProvider.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { useIsomorphicLayoutEffect } from \"../useIsomorphicLayoutEffect.js\";\nimport type {\n TransitionHookOptions,\n TransitionHookReturnValue,\n TransitionStage,\n TransitionState,\n} from \"./types.js\";\nimport { getTransitionTimeout } from \"./utils.js\";\nimport { TRANSITION_CONFIG } from \"./config.js\";\n\nconst INITIAL_STATE: TransitionState = {\n appearing: false,\n rendered: true,\n stage: \"exited\",\n};\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * You'll most likely want to use the {@link useCSSTransition} hook instead\n * since this is just a low-level hook that can be used to transition using\n * timeouts.\n *\n * @typeParam E - The HTMLElement type used or the ref required for the\n * transition.\n * @remarks \\@since 4.0.0\n */\nexport function useTransition<E extends HTMLElement>(\n options: TransitionHookOptions<E>\n): TransitionHookReturnValue<E> {\n const {\n nodeRef,\n timeout,\n transitionIn,\n reflow = false,\n temporary = false,\n appear = false,\n enter = true,\n exit = true,\n onEnter = noop,\n onEntering = noop,\n onEntered = noop,\n onExit = noop,\n onExiting = noop,\n onExited = noop,\n disablePortal: propDisablePortal,\n } = options;\n\n const configurationRef = useRef({\n timeout: getTransitionTimeout({ timeout, appear, enter, exit }),\n reflow,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n } as const);\n useIsomorphicLayoutEffect(() => {\n configurationRef.current = {\n timeout: getTransitionTimeout({ timeout, appear, enter, exit }),\n reflow,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n };\n }, [\n appear,\n enter,\n exit,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n reflow,\n timeout,\n ]);\n\n const ssr = useSsr();\n const [ref, refCallback] = useEnsuredRef<E>(nodeRef);\n const [disablePortal, setDisablePortal] = useState(ssr);\n const [state, dispatch] = useReducer(\n function reducer(\n state: TransitionState,\n action: TransitionStage | \"unmount\"\n ): TransitionState {\n const { appear, enter, exit } = configurationRef.current.timeout;\n const { appearing } = state;\n switch (action) {\n case \"enter\": {\n const duration = appearing ? appear : enter;\n return {\n stage: duration > 0 ? \"enter\" : \"entered\",\n rendered: true,\n appearing,\n };\n }\n case \"entering\":\n case \"entered\":\n return {\n stage: action,\n rendered: true,\n appearing,\n };\n case \"exit\": {\n const stage = exit > 0 ? \"exit\" : \"exited\";\n return {\n stage,\n rendered: !temporary || stage !== \"exited\",\n appearing: false,\n };\n }\n case \"exiting\":\n case \"exited\":\n return {\n stage: action,\n rendered: true,\n appearing: false,\n };\n case \"unmount\":\n if (state.stage === \"exited\" && !state.appearing && !state.rendered) {\n return state;\n }\n\n return {\n stage: \"exited\",\n rendered: false,\n appearing: false,\n };\n }\n },\n INITIAL_STATE,\n () => {\n let stage: TransitionStage = \"exited\";\n if (transitionIn) {\n stage = appear && !TRANSITION_CONFIG.disabled ? \"enter\" : \"entered\";\n }\n\n return {\n appearing: appear && transitionIn && !TRANSITION_CONFIG.disabled,\n rendered: !temporary || transitionIn,\n stage,\n };\n }\n );\n const { appearing, rendered, stage } = state;\n\n const isFirstRender = useRef(true);\n const isRehydrateAppear = useRef(ssr && !transitionIn);\n const defaultTransitionIn = useRef(transitionIn);\n useEffect(() => {\n const {\n timeout,\n reflow,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n } = configurationRef.current;\n let { onExited } = configurationRef.current;\n if (isFirstRender.current) {\n // The exited hook should **not** fire on first render since the element\n // was never in the DOM.\n isFirstRender.current = false;\n onExited = noop;\n }\n\n // if the transitionIn did not change between initial render and rehydration,\n // allow the enter transition to behave like normal.\n if (\n isRehydrateAppear.current &&\n !ssr &&\n !transitionIn &&\n !defaultTransitionIn.current\n ) {\n isRehydrateAppear.current = false;\n }\n\n // Cancel any exiting/exited transitions and instead immediately start the\n // enter transition\n if (transitionIn && stage.startsWith(\"exit\")) {\n const nextStage = isRehydrateAppear.current ? \"entered\" : \"enter\";\n dispatch(nextStage);\n return;\n }\n\n // Cancel any entering/entered transitions and instead immediately start the\n // exit transition\n if (!transitionIn && stage.startsWith(\"enter\")) {\n dispatch(\"exit\");\n return;\n }\n\n if (reflow && ref.current && stage !== \"exited\" && stage !== \"entered\") {\n // force reflow by accessing scrollTop\n ref.current.scrollTop;\n }\n\n let duration = 0;\n let nextStage: TransitionStage = stage;\n switch (stage) {\n case \"enter\":\n if (TRANSITION_CONFIG.disabled) {\n nextStage = \"entered\";\n } else {\n onEnter(appearing);\n nextStage = \"entering\";\n }\n break;\n case \"entering\":\n onEntering(appearing);\n duration = timeout.enter;\n nextStage = \"entered\";\n break;\n case \"entered\":\n onEntered(appearing);\n break;\n case \"exit\":\n if (TRANSITION_CONFIG.disabled) {\n nextStage = \"exited\";\n } else {\n onExit();\n nextStage = \"exiting\";\n }\n break;\n case \"exiting\":\n onExiting();\n duration = timeout.exit;\n nextStage = \"exited\";\n break;\n case \"exited\":\n onExited();\n setDisablePortal(false);\n break;\n }\n\n if (stage === nextStage) {\n // this is used to help catch changing the temporary prop.\n // not sure if I should really support that though...\n if (stage === \"exited\" && temporary) {\n dispatch(\"unmount\");\n }\n\n return;\n }\n\n // I used to rely on the `dispatch(\"unmount\")` above, but it seems like\n // there are some cases where re-rendering takes too long so the temporary\n // element flashes\n const dispatchStage =\n temporary && nextStage === \"exited\" ? \"unmount\" : nextStage;\n if (duration <= 0) {\n dispatch(dispatchStage);\n return;\n }\n\n const timer = window.setTimeout(() => {\n dispatch(dispatchStage);\n }, duration);\n\n return () => {\n window.clearTimeout(timer);\n };\n }, [appearing, ref, ssr, stage, temporary, transitionIn]);\n\n return {\n ref: refCallback,\n stage,\n rendered,\n appearing,\n transitionTo: dispatch,\n disablePortal: propDisablePortal || disablePortal,\n };\n}\n"],"names":["useEffect","useReducer","useRef","useState","useSsr","useEnsuredRef","useIsomorphicLayoutEffect","getTransitionTimeout","TRANSITION_CONFIG","INITIAL_STATE","appearing","rendered","stage","noop","useTransition","options","nodeRef","timeout","transitionIn","reflow","temporary","appear","enter","exit","onEnter","onEntering","onEntered","onExit","onExiting","onExited","disablePortal","propDisablePortal","configurationRef","current","ssr","ref","refCallback","setDisablePortal","state","dispatch","reducer","action","duration","disabled","isFirstRender","isRehydrateAppear","defaultTransitionIn","startsWith","nextStage","scrollTop","dispatchStage","timer","window","setTimeout","clearTimeout","transitionTo"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ReactElement } from "react";
|
|
2
|
-
import { type RenderRecursiveItemsProps } from "../utils/RenderRecursively.
|
|
2
|
+
import { type RenderRecursiveItemsProps } from "../utils/RenderRecursively.js";
|
|
3
3
|
import { type DefaultTreeItemNode, type TreeItemNode } from "./types.js";
|
|
4
4
|
/**
|
|
5
5
|
* **Client Component**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tree/DefaultTreeItemRenderer.tsx"],"sourcesContent":["import { type ReactElement } from \"react\";\nimport { type RenderRecursiveItemsProps } from \"../utils/RenderRecursively.
|
|
1
|
+
{"version":3,"sources":["../../src/tree/DefaultTreeItemRenderer.tsx"],"sourcesContent":["import { type ReactElement } from \"react\";\nimport { type RenderRecursiveItemsProps } from \"../utils/RenderRecursively.js\";\nimport { TreeItem } from \"./TreeItem.js\";\nimport { type DefaultTreeItemNode, type TreeItemNode } from \"./types.js\";\n\n/**\n * **Client Component**\n *\n * A reasonable default for rendering tree items that will extract all the\n * `ListItemChildrenProps` from the item and attempt to pass them into the\n * `TreeItem`.\n *\n * Look at the `Tree` component for an example of creating a custom\n * implementation.\n *\n * @remarks \\@since 6.0.0\n */\nexport function DefaultTreeItemRenderer<\n T extends TreeItemNode = DefaultTreeItemNode,\n>(props: RenderRecursiveItemsProps<T>): ReactElement {\n const { item: _item, parents, children: childItems } = props;\n const item = props.item as DefaultTreeItemNode;\n\n const {\n itemId,\n to,\n href,\n disabled,\n className,\n contentClassName,\n leftAddon,\n leftAddonType,\n leftAddonPosition,\n leftAddonClassName,\n leftAddonForceWrap,\n rightAddon,\n rightAddonType,\n rightAddonPosition,\n rightAddonClassName,\n rightAddonForceWrap,\n disableLeftAddonCenteredMedia,\n disableRightAddonCenteredMedia,\n } = item;\n const children = item.name ?? item.children;\n\n return (\n <TreeItem\n to={to}\n href={href}\n depth={parents.length}\n childItems={childItems}\n className={className}\n contentClassName={contentClassName}\n itemId={itemId}\n disabled={disabled}\n leftAddon={leftAddon}\n leftAddonType={leftAddonType}\n leftAddonPosition={leftAddonPosition}\n leftAddonClassName={leftAddonClassName}\n leftAddonForceWrap={leftAddonForceWrap}\n rightAddon={rightAddon}\n rightAddonType={rightAddonType}\n rightAddonPosition={rightAddonPosition}\n rightAddonClassName={rightAddonClassName}\n rightAddonForceWrap={rightAddonForceWrap}\n disableLeftAddonCenteredMedia={disableLeftAddonCenteredMedia}\n disableRightAddonCenteredMedia={disableRightAddonCenteredMedia}\n >\n {children}\n </TreeItem>\n );\n}\n"],"names":["TreeItem","DefaultTreeItemRenderer","props","item","_item","parents","children","childItems","itemId","to","href","disabled","className","contentClassName","leftAddon","leftAddonType","leftAddonPosition","leftAddonClassName","leftAddonForceWrap","rightAddon","rightAddonType","rightAddonPosition","rightAddonClassName","rightAddonForceWrap","disableLeftAddonCenteredMedia","disableRightAddonCenteredMedia","name","depth","length"],"mappings":";AAEA,SAASA,QAAQ,QAAQ,gBAAgB;AAGzC;;;;;;;;;;;CAWC,GACD,OAAO,SAASC,wBAEdC,KAAmC;IACnC,MAAM,EAAEC,MAAMC,KAAK,EAAEC,OAAO,EAAEC,UAAUC,UAAU,EAAE,GAAGL;IACvD,MAAMC,OAAOD,MAAMC,IAAI;IAEvB,MAAM,EACJK,MAAM,EACNC,EAAE,EACFC,IAAI,EACJC,QAAQ,EACRC,SAAS,EACTC,gBAAgB,EAChBC,SAAS,EACTC,aAAa,EACbC,iBAAiB,EACjBC,kBAAkB,EAClBC,kBAAkB,EAClBC,UAAU,EACVC,cAAc,EACdC,kBAAkB,EAClBC,mBAAmB,EACnBC,mBAAmB,EACnBC,6BAA6B,EAC7BC,8BAA8B,EAC/B,GAAGtB;IACJ,MAAMG,WAAWH,KAAKuB,IAAI,IAAIvB,KAAKG,QAAQ;IAE3C,qBACE,KAACN;QACCS,IAAIA;QACJC,MAAMA;QACNiB,OAAOtB,QAAQuB,MAAM;QACrBrB,YAAYA;QACZK,WAAWA;QACXC,kBAAkBA;QAClBL,QAAQA;QACRG,UAAUA;QACVG,WAAWA;QACXC,eAAeA;QACfC,mBAAmBA;QACnBC,oBAAoBA;QACpBC,oBAAoBA;QACpBC,YAAYA;QACZC,gBAAgBA;QAChBC,oBAAoBA;QACpBC,qBAAqBA;QACrBC,qBAAqBA;QACrBC,+BAA+BA;QAC/BC,gCAAgCA;kBAE/BnB;;AAGP"}
|
package/dist/tree/Tree.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ComponentType, type HTMLAttributes, type ReactElement, type ReactNode, type Ref } from "react";
|
|
2
|
-
import { type CustomLinkComponent } from "../link/
|
|
2
|
+
import { type CustomLinkComponent } from "../link/Link.js";
|
|
3
3
|
import { type LabelRequiredForA11y } from "../types.js";
|
|
4
4
|
import { type RenderRecursiveItemsProps } from "../utils/RenderRecursively.js";
|
|
5
5
|
import { type TreeExpansionMode } from "./TreeProvider.js";
|
package/dist/tree/Tree.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { LinkProvider } from "../link/LinkProvider.js";
|
|
4
3
|
import { List } from "../list/List.js";
|
|
5
4
|
import { KeyboardMovementProvider } from "../movement/useKeyboardMovementProvider.js";
|
|
6
5
|
import { useEnsuredId } from "../useEnsuredId.js";
|
|
@@ -71,7 +70,7 @@ import { useTreeMovement } from "./useTreeMovement.js";
|
|
|
71
70
|
* - `getItemValue`
|
|
72
71
|
* - `getItemProps`
|
|
73
72
|
*/ export function Tree(props) {
|
|
74
|
-
const { id, data, sort = identity, rootId = null, treeRef, className, expandedIds, selectedIds, toggleTreeItemSelection, selectMultipleTreeItems, toggleTreeItemExpansion, expandMultipleTreeItems, onClick, onFocus, onKeyDown, renderer: TreeItemRenderer = DefaultTreeItemRenderer, multiSelect = false, expansionMode = "auto", expanderIcon, expanderLeft = false, linkComponent, disableTransition = false, temporaryChildItems = false, ...remaining } = props;
|
|
73
|
+
const { id, data, sort = identity, rootId = null, treeRef, className, expandedIds, selectedIds, toggleTreeItemSelection, selectMultipleTreeItems, toggleTreeItemExpansion, expandMultipleTreeItems, onClick, onFocus, onKeyDown, renderer: TreeItemRenderer = DefaultTreeItemRenderer, multiSelect = false, expansionMode = "auto", expanderIcon, expanderLeft = false, linkComponent = "a", disableTransition = false, temporaryChildItems = false, ...remaining } = props;
|
|
75
74
|
const treeId = useEnsuredId(id, "tree");
|
|
76
75
|
const { items, treeItemChildIds } = useTreeItems({
|
|
77
76
|
data,
|
|
@@ -93,6 +92,7 @@ import { useTreeMovement } from "./useTreeMovement.js";
|
|
|
93
92
|
data: data,
|
|
94
93
|
rootId: rootId,
|
|
95
94
|
multiSelect: multiSelect,
|
|
95
|
+
linkComponent: linkComponent,
|
|
96
96
|
selectedIds: selectedIds,
|
|
97
97
|
expandedIds: expandedIds,
|
|
98
98
|
expanderIcon: expanderIcon,
|
|
@@ -105,25 +105,22 @@ import { useTreeMovement } from "./useTreeMovement.js";
|
|
|
105
105
|
toggleTreeItemExpansion: toggleTreeItemExpansion,
|
|
106
106
|
selectMultipleTreeItems: selectMultipleTreeItems,
|
|
107
107
|
expandMultipleTreeItems: expandMultipleTreeItems,
|
|
108
|
-
children: /*#__PURE__*/ _jsx(
|
|
109
|
-
value:
|
|
110
|
-
children: /*#__PURE__*/ _jsx(
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
getItemKey: (item)=>item.itemId,
|
|
125
|
-
render: TreeItemRenderer
|
|
126
|
-
})
|
|
108
|
+
children: /*#__PURE__*/ _jsx(KeyboardMovementProvider, {
|
|
109
|
+
value: movementContext,
|
|
110
|
+
children: /*#__PURE__*/ _jsx(List, {
|
|
111
|
+
...remaining,
|
|
112
|
+
...movementProps,
|
|
113
|
+
id: treeId,
|
|
114
|
+
ref: treeRef,
|
|
115
|
+
role: "tree",
|
|
116
|
+
tabIndex: 0,
|
|
117
|
+
className: tree({
|
|
118
|
+
className
|
|
119
|
+
}),
|
|
120
|
+
children: /*#__PURE__*/ _jsx(RenderRecursively, {
|
|
121
|
+
items: items,
|
|
122
|
+
getItemKey: (item)=>item.itemId,
|
|
123
|
+
render: TreeItemRenderer
|
|
127
124
|
})
|
|
128
125
|
})
|
|
129
126
|
})
|
package/dist/tree/Tree.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tree/Tree.tsx"],"sourcesContent":["\"use client\";\nimport {\n type ComponentType,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from \"react\";\nimport {\n LinkProvider,\n type CustomLinkComponent,\n} from \"../link/LinkProvider.js\";\nimport { List } from \"../list/List.js\";\nimport { KeyboardMovementProvider } from \"../movement/useKeyboardMovementProvider.js\";\nimport { type LabelRequiredForA11y } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport {\n RenderRecursively,\n type RenderRecursiveItemsProps,\n} from \"../utils/RenderRecursively.js\";\nimport { identity } from \"../utils/identity.js\";\nimport { DefaultTreeItemRenderer } from \"./DefaultTreeItemRenderer.js\";\nimport { TreeProvider, type TreeExpansionMode } from \"./TreeProvider.js\";\nimport { tree } from \"./styles.js\";\nimport {\n type TreeData,\n type TreeItemNode,\n type TreeItemSorter,\n} from \"./types.js\";\nimport { type TreeExpansion } from \"./useTreeExpansion.js\";\nimport { useTreeItems } from \"./useTreeItems.js\";\nimport { useTreeMovement } from \"./useTreeMovement.js\";\nimport { type TreeSelection } from \"./useTreeSelection.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-tree-depth\"?: number;\n \"--rmd-tree-item-padding\"?: string | number;\n \"--rmd-tree-item-padding-base\"?: string | number;\n \"--rmd-tree-item-padding-incrementor\"?: string | number;\n }\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type TreeHTMLAttributes = Omit<\n HTMLAttributes<HTMLUListElement>,\n \"role\" | \"tabIndex\" | \"children\"\n>;\n\n/**\n * @remarks\n * \\@since 6.0.0 There was a major API change and the `id` is now `optional`.\n * In addition, the following props were removed:\n * - `itemRenderer`\n * - `labelKey`\n * - `valueKey`\n * - `getItemLabel`\n * - `getItemValue`\n * - `getItemProps`\n */\nexport interface TreeProps<T extends TreeItemNode>\n extends TreeHTMLAttributes,\n TreeExpansion,\n TreeSelection {\n /** @see {@link TreeData} */\n data: TreeData<T>;\n\n /**\n * An optional ref to pass to the tree element.\n *\n * @remarks \\@since 6.0.0\n */\n treeRef?: Ref<HTMLUListElement>;\n\n /** @defaultValue `identity` */\n sort?: TreeItemSorter<T>;\n\n /**\n * Any nodes in the {@Link data} that have a `parentId` set to this value will\n * appear at the root of the tree.\n *\n * @defaultValue `null`\n */\n rootId?: string | null;\n\n /**\n * @defaultValue `\"auto\"`\n * @see {@link TreeExpansionMode}\n */\n expansionMode?: TreeExpansionMode;\n\n /**\n * Set this to `true` to display the expander icon to the left instead of the\n * right. This will also update the styles slightly so you can still provide a\n * `leftAddon`.\n *\n * @defaultValue `false`\n */\n expanderLeft?: boolean;\n\n /**\n * @defaultValue `getIcon(\"expander\")`\n */\n expanderIcon?: ReactNode;\n\n /**\n * Set this to `true` to disable the collapse transition for all tree items.\n *\n * @defaultValue `false`\n */\n disableTransition?: boolean;\n\n /**\n * Set this to `true` if the collapsed tree items should be removed from the\n * DOM instead of hidden using `display: none`. This _might_ improve\n * performance for large trees.\n *\n * @defaultValue `false`\n */\n temporaryChildItems?: boolean;\n\n /**\n * @example\n * Custom Tree Item Renderer\n * ```tsx\n * import type { TreeItemRendererProps } from \"@react-md/core\";\n * import { TreeItem, useKeyboardMovementContext, useTreeContext } from \"@react-md/core\";\n * import FolderIcon from \"@react-md/material-icons/FolderIcon\";\n * import FolderOpenIcon from \"@react-md/material-icons/FolderOpenIcon\";\n * import type { ReactElement } from \"react\";\n *\n * export function CustomTreeItem(props: TreeItemRendererProps): ReactElement {\n * const { item, ...remaining } = props;\n * const id = useId();\n * const { itemId } = item;\n * const {\n * data,\n * expandedIds,\n * selectedIds,\n * toggleTreeItemExpansion,\n * toggleTreeItemSelection,\n * } = useTreeContext()\n * const { activeDescendantId } = useKeyboardMovementContext();\n *\n * const focused = id === activeDescendantId;\n * const expanded = expandedIds.has(itemId);\n * const selected = selectedIds.has(itemId);\n * const children = ...; // do whatever\n *\n * return (\n * <TreeItem\n * {...remaining}\n * id={id}\n * itemId={itemId}\n * leftAddon={expanded ? <FolderOpenIcon /> : <FolderIcon />}\n * >\n * {children}\n * </TreeItem>\n * );\n * }\n * ```\n *\n * @see {@link DefaultTreeItemRenderer}\n * @defaultValue `DefaultTreeItemRenderer`\n */\n renderer?: ComponentType<RenderRecursiveItemsProps<T>>;\n\n /**\n * The link component to use for any tree item nodes that have a `to` or\n * `href`.\n *\n * @see {@link CustomLinkComponent}\n * @defaultValue `Link`\n */\n linkComponent?: CustomLinkComponent;\n}\n\n/**\n * **Client Component**\n *\n * @example\n * Simple Tree\n * ```tsx\n * import type { TreeData } from \"@react-md/core\";\n * import { Tree, useTree } from \"@react-md/core\";\n * import type { ReactElement } from \"react\";\n *\n * const data: TreeData = {\n * \"item-1\": {\n * itemId: \"item-1\",\n * parentId: null,\n * name: \"Root Level Item 1\",\n * },\n * \"item-2\": {\n * itemId: \"item-2\",\n * parentId: \"item-1\",\n * name: \"A child for the first item\",\n * },\n * \"item-3\": {\n * itemId: \"item-3\",\n * parentId: \"item-1\",\n * children: \"Another child for the first item\",\n * },\n * };\n *\n * function Example(): ReactElement {\n * const tree = useTree({\n * // can enable multiple selected items\n * // multiSelect: true,\n *\n * // can set default expanded and selected items\n * // defaultSelectedIds: [\"item-1\"],\n * // defaultExpandedIds: [\"item-1\"],\n * });\n *\n * return (\n * <Tree\n * {...tree}\n * aria-label=\"Tree\"\n * data={data}\n * />\n * );\n * }\n * ```\n *\n * @see {@link TreeProps.renderer} for a custom tree item example.\n *\n * @remarks\n * \\@since 6.0.0 There was a major API change and the `id` is now `optional`.\n * In addition, the following props were removed:\n * - `itemRenderer`\n * - `labelKey`\n * - `valueKey`\n * - `getItemLabel`\n * - `getItemValue`\n * - `getItemProps`\n */\nexport function Tree<T extends TreeItemNode>(\n props: LabelRequiredForA11y<TreeProps<T>>\n): ReactElement {\n const {\n id,\n data,\n sort = identity,\n rootId = null,\n treeRef,\n className,\n expandedIds,\n selectedIds,\n toggleTreeItemSelection,\n selectMultipleTreeItems,\n toggleTreeItemExpansion,\n expandMultipleTreeItems,\n onClick,\n onFocus,\n onKeyDown,\n renderer: TreeItemRenderer = DefaultTreeItemRenderer,\n multiSelect = false,\n expansionMode = \"auto\",\n expanderIcon,\n expanderLeft = false,\n linkComponent,\n disableTransition = false,\n temporaryChildItems = false,\n ...remaining\n } = props;\n const treeId = useEnsuredId(id, \"tree\");\n const { items, treeItemChildIds } = useTreeItems({\n data,\n sort,\n rootId,\n });\n\n const { metadataLookup, movementContext, movementProps } = useTreeMovement({\n onClick,\n onFocus,\n onKeyDown,\n data,\n expandedIds,\n selectedIds,\n treeItemChildIds,\n toggleTreeItemExpansion,\n expandMultipleTreeItems,\n });\n\n return (\n <TreeProvider\n data={data}\n rootId={rootId}\n multiSelect={multiSelect}\n selectedIds={selectedIds}\n expandedIds={expandedIds}\n expanderIcon={expanderIcon}\n expanderLeft={expanderLeft}\n expansionMode={expansionMode}\n metadataLookup={metadataLookup}\n disableTransition={disableTransition}\n temporaryChildItems={temporaryChildItems}\n toggleTreeItemSelection={toggleTreeItemSelection}\n toggleTreeItemExpansion={toggleTreeItemExpansion}\n selectMultipleTreeItems={selectMultipleTreeItems}\n expandMultipleTreeItems={expandMultipleTreeItems}\n >\n <LinkProvider value={linkComponent}>\n <KeyboardMovementProvider value={movementContext}>\n <List\n {...remaining}\n {...movementProps}\n id={treeId}\n ref={treeRef}\n role=\"tree\"\n tabIndex={0}\n className={tree({ className })}\n >\n <RenderRecursively\n items={items}\n getItemKey={(item) => item.itemId}\n render={TreeItemRenderer}\n />\n </List>\n </KeyboardMovementProvider>\n </LinkProvider>\n </TreeProvider>\n );\n}\n"],"names":["LinkProvider","List","KeyboardMovementProvider","useEnsuredId","RenderRecursively","identity","DefaultTreeItemRenderer","TreeProvider","tree","useTreeItems","useTreeMovement","Tree","props","id","data","sort","rootId","treeRef","className","expandedIds","selectedIds","toggleTreeItemSelection","selectMultipleTreeItems","toggleTreeItemExpansion","expandMultipleTreeItems","onClick","onFocus","onKeyDown","renderer","TreeItemRenderer","multiSelect","expansionMode","expanderIcon","expanderLeft","linkComponent","disableTransition","temporaryChildItems","remaining","treeId","items","treeItemChildIds","metadataLookup","movementContext","movementProps","value","ref","role","tabIndex","getItemKey","item","itemId","render"],"mappings":"AAAA;;AAQA,SACEA,YAAY,QAEP,0BAA0B;AACjC,SAASC,IAAI,QAAQ,kBAAkB;AACvC,SAASC,wBAAwB,QAAQ,6CAA6C;AAEtF,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SACEC,iBAAiB,QAEZ,gCAAgC;AACvC,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,uBAAuB,QAAQ,+BAA+B;AACvE,SAASC,YAAY,QAAgC,oBAAoB;AACzE,SAASC,IAAI,QAAQ,cAAc;AAOnC,SAASC,YAAY,QAAQ,oBAAoB;AACjD,SAASC,eAAe,QAAQ,uBAAuB;AAoJvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DC,GACD,OAAO,SAASC,KACdC,KAAyC;IAEzC,MAAM,EACJC,EAAE,EACFC,IAAI,EACJC,OAAOV,QAAQ,EACfW,SAAS,IAAI,EACbC,OAAO,EACPC,SAAS,EACTC,WAAW,EACXC,WAAW,EACXC,uBAAuB,EACvBC,uBAAuB,EACvBC,uBAAuB,EACvBC,uBAAuB,EACvBC,OAAO,EACPC,OAAO,EACPC,SAAS,EACTC,UAAUC,mBAAmBvB,uBAAuB,EACpDwB,cAAc,KAAK,EACnBC,gBAAgB,MAAM,EACtBC,YAAY,EACZC,eAAe,KAAK,EACpBC,aAAa,EACbC,oBAAoB,KAAK,EACzBC,sBAAsB,KAAK,EAC3B,GAAGC,WACJ,GAAGzB;IACJ,MAAM0B,SAASnC,aAAaU,IAAI;IAChC,MAAM,EAAE0B,KAAK,EAAEC,gBAAgB,EAAE,GAAG/B,aAAa;QAC/CK;QACAC;QACAC;IACF;IAEA,MAAM,EAAEyB,cAAc,EAAEC,eAAe,EAAEC,aAAa,EAAE,GAAGjC,gBAAgB;QACzEe;QACAC;QACAC;QACAb;QACAK;QACAC;QACAoB;QACAjB;QACAC;IACF;IAEA,qBACE,KAACjB;QACCO,MAAMA;QACNE,QAAQA;QACRc,aAAaA;QACbV,aAAaA;QACbD,aAAaA;QACba,cAAcA;QACdC,cAAcA;QACdF,eAAeA;QACfU,gBAAgBA;QAChBN,mBAAmBA;QACnBC,qBAAqBA;QACrBf,yBAAyBA;QACzBE,yBAAyBA;QACzBD,yBAAyBA;QACzBE,yBAAyBA;kBAEzB,cAAA,KAACxB;YAAa4C,OAAOV;sBACnB,cAAA,KAAChC;gBAAyB0C,OAAOF;0BAC/B,cAAA,KAACzC;oBACE,GAAGoC,SAAS;oBACZ,GAAGM,aAAa;oBACjB9B,IAAIyB;oBACJO,KAAK5B;oBACL6B,MAAK;oBACLC,UAAU;oBACV7B,WAAWV,KAAK;wBAAEU;oBAAU;8BAE5B,cAAA,KAACd;wBACCmC,OAAOA;wBACPS,YAAY,CAACC,OAASA,KAAKC,MAAM;wBACjCC,QAAQtB;;;;;;AAOtB"}
|
|
1
|
+
{"version":3,"sources":["../../src/tree/Tree.tsx"],"sourcesContent":["\"use client\";\nimport {\n type ComponentType,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from \"react\";\nimport { type CustomLinkComponent } from \"../link/Link.js\";\nimport { List } from \"../list/List.js\";\nimport { KeyboardMovementProvider } from \"../movement/useKeyboardMovementProvider.js\";\nimport { type LabelRequiredForA11y } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport {\n RenderRecursively,\n type RenderRecursiveItemsProps,\n} from \"../utils/RenderRecursively.js\";\nimport { identity } from \"../utils/identity.js\";\nimport { DefaultTreeItemRenderer } from \"./DefaultTreeItemRenderer.js\";\nimport { TreeProvider, type TreeExpansionMode } from \"./TreeProvider.js\";\nimport { tree } from \"./styles.js\";\nimport {\n type TreeData,\n type TreeItemNode,\n type TreeItemSorter,\n} from \"./types.js\";\nimport { type TreeExpansion } from \"./useTreeExpansion.js\";\nimport { useTreeItems } from \"./useTreeItems.js\";\nimport { useTreeMovement } from \"./useTreeMovement.js\";\nimport { type TreeSelection } from \"./useTreeSelection.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-tree-depth\"?: number;\n \"--rmd-tree-item-padding\"?: string | number;\n \"--rmd-tree-item-padding-base\"?: string | number;\n \"--rmd-tree-item-padding-incrementor\"?: string | number;\n }\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type TreeHTMLAttributes = Omit<\n HTMLAttributes<HTMLUListElement>,\n \"role\" | \"tabIndex\" | \"children\"\n>;\n\n/**\n * @remarks\n * \\@since 6.0.0 There was a major API change and the `id` is now `optional`.\n * In addition, the following props were removed:\n * - `itemRenderer`\n * - `labelKey`\n * - `valueKey`\n * - `getItemLabel`\n * - `getItemValue`\n * - `getItemProps`\n */\nexport interface TreeProps<T extends TreeItemNode>\n extends TreeHTMLAttributes,\n TreeExpansion,\n TreeSelection {\n /** @see {@link TreeData} */\n data: TreeData<T>;\n\n /**\n * An optional ref to pass to the tree element.\n *\n * @remarks \\@since 6.0.0\n */\n treeRef?: Ref<HTMLUListElement>;\n\n /** @defaultValue `identity` */\n sort?: TreeItemSorter<T>;\n\n /**\n * Any nodes in the {@Link data} that have a `parentId` set to this value will\n * appear at the root of the tree.\n *\n * @defaultValue `null`\n */\n rootId?: string | null;\n\n /**\n * @defaultValue `\"auto\"`\n * @see {@link TreeExpansionMode}\n */\n expansionMode?: TreeExpansionMode;\n\n /**\n * Set this to `true` to display the expander icon to the left instead of the\n * right. This will also update the styles slightly so you can still provide a\n * `leftAddon`.\n *\n * @defaultValue `false`\n */\n expanderLeft?: boolean;\n\n /**\n * @defaultValue `getIcon(\"expander\")`\n */\n expanderIcon?: ReactNode;\n\n /**\n * Set this to `true` to disable the collapse transition for all tree items.\n *\n * @defaultValue `false`\n */\n disableTransition?: boolean;\n\n /**\n * Set this to `true` if the collapsed tree items should be removed from the\n * DOM instead of hidden using `display: none`. This _might_ improve\n * performance for large trees.\n *\n * @defaultValue `false`\n */\n temporaryChildItems?: boolean;\n\n /**\n * @example\n * Custom Tree Item Renderer\n * ```tsx\n * import type { TreeItemRendererProps } from \"@react-md/core\";\n * import { TreeItem, useKeyboardMovementContext, useTreeContext } from \"@react-md/core\";\n * import FolderIcon from \"@react-md/material-icons/FolderIcon\";\n * import FolderOpenIcon from \"@react-md/material-icons/FolderOpenIcon\";\n * import type { ReactElement } from \"react\";\n *\n * export function CustomTreeItem(props: TreeItemRendererProps): ReactElement {\n * const { item, ...remaining } = props;\n * const id = useId();\n * const { itemId } = item;\n * const {\n * data,\n * expandedIds,\n * selectedIds,\n * toggleTreeItemExpansion,\n * toggleTreeItemSelection,\n * } = useTreeContext()\n * const { activeDescendantId } = useKeyboardMovementContext();\n *\n * const focused = id === activeDescendantId;\n * const expanded = expandedIds.has(itemId);\n * const selected = selectedIds.has(itemId);\n * const children = ...; // do whatever\n *\n * return (\n * <TreeItem\n * {...remaining}\n * id={id}\n * itemId={itemId}\n * leftAddon={expanded ? <FolderOpenIcon /> : <FolderIcon />}\n * >\n * {children}\n * </TreeItem>\n * );\n * }\n * ```\n *\n * @see {@link DefaultTreeItemRenderer}\n * @defaultValue `DefaultTreeItemRenderer`\n */\n renderer?: ComponentType<RenderRecursiveItemsProps<T>>;\n\n /**\n * The link component to use for any tree item nodes that have a `to` or\n * `href`.\n *\n * @see {@link CustomLinkComponent}\n * @defaultValue `Link`\n */\n linkComponent?: CustomLinkComponent;\n}\n\n/**\n * **Client Component**\n *\n * @example\n * Simple Tree\n * ```tsx\n * import type { TreeData } from \"@react-md/core\";\n * import { Tree, useTree } from \"@react-md/core\";\n * import type { ReactElement } from \"react\";\n *\n * const data: TreeData = {\n * \"item-1\": {\n * itemId: \"item-1\",\n * parentId: null,\n * name: \"Root Level Item 1\",\n * },\n * \"item-2\": {\n * itemId: \"item-2\",\n * parentId: \"item-1\",\n * name: \"A child for the first item\",\n * },\n * \"item-3\": {\n * itemId: \"item-3\",\n * parentId: \"item-1\",\n * children: \"Another child for the first item\",\n * },\n * };\n *\n * function Example(): ReactElement {\n * const tree = useTree({\n * // can enable multiple selected items\n * // multiSelect: true,\n *\n * // can set default expanded and selected items\n * // defaultSelectedIds: [\"item-1\"],\n * // defaultExpandedIds: [\"item-1\"],\n * });\n *\n * return (\n * <Tree\n * {...tree}\n * aria-label=\"Tree\"\n * data={data}\n * />\n * );\n * }\n * ```\n *\n * @see {@link TreeProps.renderer} for a custom tree item example.\n *\n * @remarks\n * \\@since 6.0.0 There was a major API change and the `id` is now `optional`.\n * In addition, the following props were removed:\n * - `itemRenderer`\n * - `labelKey`\n * - `valueKey`\n * - `getItemLabel`\n * - `getItemValue`\n * - `getItemProps`\n */\nexport function Tree<T extends TreeItemNode>(\n props: LabelRequiredForA11y<TreeProps<T>>\n): ReactElement {\n const {\n id,\n data,\n sort = identity,\n rootId = null,\n treeRef,\n className,\n expandedIds,\n selectedIds,\n toggleTreeItemSelection,\n selectMultipleTreeItems,\n toggleTreeItemExpansion,\n expandMultipleTreeItems,\n onClick,\n onFocus,\n onKeyDown,\n renderer: TreeItemRenderer = DefaultTreeItemRenderer,\n multiSelect = false,\n expansionMode = \"auto\",\n expanderIcon,\n expanderLeft = false,\n linkComponent = \"a\",\n disableTransition = false,\n temporaryChildItems = false,\n ...remaining\n } = props;\n const treeId = useEnsuredId(id, \"tree\");\n const { items, treeItemChildIds } = useTreeItems({\n data,\n sort,\n rootId,\n });\n\n const { metadataLookup, movementContext, movementProps } = useTreeMovement({\n onClick,\n onFocus,\n onKeyDown,\n data,\n expandedIds,\n selectedIds,\n treeItemChildIds,\n toggleTreeItemExpansion,\n expandMultipleTreeItems,\n });\n\n return (\n <TreeProvider\n data={data}\n rootId={rootId}\n multiSelect={multiSelect}\n linkComponent={linkComponent}\n selectedIds={selectedIds}\n expandedIds={expandedIds}\n expanderIcon={expanderIcon}\n expanderLeft={expanderLeft}\n expansionMode={expansionMode}\n metadataLookup={metadataLookup}\n disableTransition={disableTransition}\n temporaryChildItems={temporaryChildItems}\n toggleTreeItemSelection={toggleTreeItemSelection}\n toggleTreeItemExpansion={toggleTreeItemExpansion}\n selectMultipleTreeItems={selectMultipleTreeItems}\n expandMultipleTreeItems={expandMultipleTreeItems}\n >\n <KeyboardMovementProvider value={movementContext}>\n <List\n {...remaining}\n {...movementProps}\n id={treeId}\n ref={treeRef}\n role=\"tree\"\n tabIndex={0}\n className={tree({ className })}\n >\n <RenderRecursively\n items={items}\n getItemKey={(item) => item.itemId}\n render={TreeItemRenderer}\n />\n </List>\n </KeyboardMovementProvider>\n </TreeProvider>\n );\n}\n"],"names":["List","KeyboardMovementProvider","useEnsuredId","RenderRecursively","identity","DefaultTreeItemRenderer","TreeProvider","tree","useTreeItems","useTreeMovement","Tree","props","id","data","sort","rootId","treeRef","className","expandedIds","selectedIds","toggleTreeItemSelection","selectMultipleTreeItems","toggleTreeItemExpansion","expandMultipleTreeItems","onClick","onFocus","onKeyDown","renderer","TreeItemRenderer","multiSelect","expansionMode","expanderIcon","expanderLeft","linkComponent","disableTransition","temporaryChildItems","remaining","treeId","items","treeItemChildIds","metadataLookup","movementContext","movementProps","value","ref","role","tabIndex","getItemKey","item","itemId","render"],"mappings":"AAAA;;AASA,SAASA,IAAI,QAAQ,kBAAkB;AACvC,SAASC,wBAAwB,QAAQ,6CAA6C;AAEtF,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SACEC,iBAAiB,QAEZ,gCAAgC;AACvC,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,uBAAuB,QAAQ,+BAA+B;AACvE,SAASC,YAAY,QAAgC,oBAAoB;AACzE,SAASC,IAAI,QAAQ,cAAc;AAOnC,SAASC,YAAY,QAAQ,oBAAoB;AACjD,SAASC,eAAe,QAAQ,uBAAuB;AAoJvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DC,GACD,OAAO,SAASC,KACdC,KAAyC;IAEzC,MAAM,EACJC,EAAE,EACFC,IAAI,EACJC,OAAOV,QAAQ,EACfW,SAAS,IAAI,EACbC,OAAO,EACPC,SAAS,EACTC,WAAW,EACXC,WAAW,EACXC,uBAAuB,EACvBC,uBAAuB,EACvBC,uBAAuB,EACvBC,uBAAuB,EACvBC,OAAO,EACPC,OAAO,EACPC,SAAS,EACTC,UAAUC,mBAAmBvB,uBAAuB,EACpDwB,cAAc,KAAK,EACnBC,gBAAgB,MAAM,EACtBC,YAAY,EACZC,eAAe,KAAK,EACpBC,gBAAgB,GAAG,EACnBC,oBAAoB,KAAK,EACzBC,sBAAsB,KAAK,EAC3B,GAAGC,WACJ,GAAGzB;IACJ,MAAM0B,SAASnC,aAAaU,IAAI;IAChC,MAAM,EAAE0B,KAAK,EAAEC,gBAAgB,EAAE,GAAG/B,aAAa;QAC/CK;QACAC;QACAC;IACF;IAEA,MAAM,EAAEyB,cAAc,EAAEC,eAAe,EAAEC,aAAa,EAAE,GAAGjC,gBAAgB;QACzEe;QACAC;QACAC;QACAb;QACAK;QACAC;QACAoB;QACAjB;QACAC;IACF;IAEA,qBACE,KAACjB;QACCO,MAAMA;QACNE,QAAQA;QACRc,aAAaA;QACbI,eAAeA;QACfd,aAAaA;QACbD,aAAaA;QACba,cAAcA;QACdC,cAAcA;QACdF,eAAeA;QACfU,gBAAgBA;QAChBN,mBAAmBA;QACnBC,qBAAqBA;QACrBf,yBAAyBA;QACzBE,yBAAyBA;QACzBD,yBAAyBA;QACzBE,yBAAyBA;kBAEzB,cAAA,KAACtB;YAAyB0C,OAAOF;sBAC/B,cAAA,KAACzC;gBACE,GAAGoC,SAAS;gBACZ,GAAGM,aAAa;gBACjB9B,IAAIyB;gBACJO,KAAK5B;gBACL6B,MAAK;gBACLC,UAAU;gBACV7B,WAAWV,KAAK;oBAAEU;gBAAU;0BAE5B,cAAA,KAACd;oBACCmC,OAAOA;oBACPS,YAAY,CAACC,OAASA,KAAKC,MAAM;oBACjCC,QAAQtB;;;;;AAMpB"}
|
package/dist/tree/TreeItem.js
CHANGED
|
@@ -3,7 +3,6 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { useEffect } from "react";
|
|
4
4
|
import { useElementInteraction } from "../interaction/useElementInteraction.js";
|
|
5
5
|
import { useHigherContrastChildren } from "../interaction/useHigherContrastChildren.js";
|
|
6
|
-
import { useLink } from "../link/LinkProvider.js";
|
|
7
6
|
import { ListItemChildren } from "../list/ListItemChildren.js";
|
|
8
7
|
import { useKeyboardMovementContext } from "../movement/useKeyboardMovementProvider.js";
|
|
9
8
|
import { useEnsuredId } from "../useEnsuredId.js";
|
|
@@ -31,7 +30,7 @@ import { treeItem, treeItemContent, treeItemMedia } from "./styles.js";
|
|
|
31
30
|
remaining.to = undefined;
|
|
32
31
|
remaining.href = undefined;
|
|
33
32
|
}
|
|
34
|
-
const {
|
|
33
|
+
const { expandedIds, selectedIds, expanderLeft, expansionMode, metadataLookup, linkComponent: Link, toggleTreeItemSelection, toggleTreeItemExpansion, disableTransition: contextDisableTransition } = useTreeContext();
|
|
35
34
|
const { activeDescendantId } = useKeyboardMovementContext();
|
|
36
35
|
const isLeafNode = !childItems;
|
|
37
36
|
const focused = activeDescendantId === id;
|
|
@@ -79,7 +78,6 @@ import { treeItem, treeItemContent, treeItemMedia } from "./styles.js";
|
|
|
79
78
|
disabled
|
|
80
79
|
});
|
|
81
80
|
const isLink = !!(remaining.to || remaining.href);
|
|
82
|
-
const Link = useLink();
|
|
83
81
|
// cheating a bit so there are type errors around the event handlers
|
|
84
82
|
const ContentComponent = isLink ? Link : "span";
|
|
85
83
|
const leftAddonType = propLeftAddonType ?? (expanderLeft && leftAddon) ? "media" : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tree/TreeItem.tsx"],"sourcesContent":["\"use client\";\nimport {\n useEffect,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from \"react\";\nimport { useElementInteraction } from \"../interaction/useElementInteraction.js\";\nimport { useHigherContrastChildren } from \"../interaction/useHigherContrastChildren.js\";\nimport { useLink } from \"../link/LinkProvider.js\";\nimport { ListItemChildren } from \"../list/ListItemChildren.js\";\nimport { useKeyboardMovementContext } from \"../movement/useKeyboardMovementProvider.js\";\nimport { type PropsWithRef } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { TreeGroup, type OverridableTreeGroupProps } from \"./TreeGroup.js\";\nimport { TreeItemExpander } from \"./TreeItemExpander.js\";\nimport { useTreeContext } from \"./TreeProvider.js\";\nimport { treeItem, treeItemContent, treeItemMedia } from \"./styles.js\";\nimport { type DefaultTreeItemNode } from \"./types.js\";\n\n/**\n * @remarks \\@since 6.0.0 Added the `groupProps` prop.\n */\nexport interface TreeItemProps\n extends Omit<DefaultTreeItemNode, \"parentId\">,\n HTMLAttributes<HTMLLIElement> {\n /**\n * @defaultValue `\"tree-item-\" + useId()`\n */\n id?: string;\n\n /**\n * This is used to set the `--rmd-tree-depth` CSS variable which allows the\n * padding to increase for each nested tree.\n */\n depth: number;\n\n /**\n * Any additional props that should be passed to the surrounding `<li>`\n * element. The top-level props are passed to the `<span>` or `<a>` element\n * instead.\n */\n liProps?: PropsWithRef<HTMLAttributes<HTMLLIElement>, HTMLLIElement>;\n\n /**\n * Any additional props to pass to the `TreeGroup` component.\n */\n groupProps?: PropsWithRef<OverridableTreeGroupProps, HTMLUListElement>;\n\n /**\n * This should normally be the text/content to display within the tree item\n * and should **not** include nested trees.\n */\n children?: ReactNode;\n\n /**\n * The nested tree items to render within a `TreeGroup`.\n */\n childItems?: ReactNode;\n\n /** @defaultValue `false` */\n disableTransition?: boolean;\n\n /**\n * This ref is applied to the `<span>` or `<a>` element and can be used to\n * implement drag and drop behavior.\n */\n contentRef?: Ref<HTMLElement>;\n\n /**\n * Set this to `true` if the {@link childItems} should not be rendered while\n * collapsed.\n *\n * @defaultValue `false`\n */\n temporaryChildItems?: boolean;\n}\n\n/**\n * **Client Component**\n *\n * @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/treeview/}\n * @remarks\n * \\@since 6.0.0 The wrapping `<li>` element will always be `role=\"none\"` and\n * the `<span>` or `<a>` will gain the `role=\"treeitem\"` instead. This makes it\n * easier to pass event handlers because of the nested behavior of tree items.\n * \\@since 6.0.0 No longer provides the `aria-level`, `aria-setsize` and\n * `aria-posinset` attributes and allows the browser to compute them instead.\n */\nexport function TreeItem(props: TreeItemProps): ReactElement {\n const {\n id: propId,\n depth,\n liProps,\n disabled = false,\n disabledOpacity = false,\n groupProps,\n children: propChildren,\n className,\n itemId,\n leftAddon,\n leftAddonType: propLeftAddonType,\n leftAddonPosition,\n leftAddonClassName,\n leftAddonForceWrap,\n rightAddon,\n rightAddonType,\n rightAddonPosition,\n rightAddonClassName,\n rightAddonForceWrap,\n disableTextChildren,\n disableLeftAddonCenteredMedia: propDisableLeftAddonCenteredMedia,\n disableRightAddonCenteredMedia,\n textProps,\n textClassName,\n primaryText,\n secondaryText,\n secondaryTextProps,\n secondaryTextClassName,\n threeLines,\n childItems,\n contentClassName,\n temporaryChildItems,\n disableTransition: propDisableTransition,\n onBlur,\n onClick,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseUp,\n onMouseLeave,\n onDragStart,\n onTouchStart,\n onTouchEnd,\n onTouchMove,\n contentRef,\n ...remaining\n } = props;\n\n const id = useEnsuredId(propId, \"tree-item\");\n const children = useHigherContrastChildren(propChildren);\n if (disabled) {\n // you can't really disable a link other than removing the href, so\n // unset these props\n remaining.to = undefined;\n remaining.href = undefined;\n }\n\n const {\n metadataLookup,\n expandedIds,\n selectedIds,\n expanderLeft,\n expansionMode,\n toggleTreeItemSelection,\n toggleTreeItemExpansion,\n disableTransition: contextDisableTransition,\n } = useTreeContext();\n const { activeDescendantId } = useKeyboardMovementContext();\n\n const isLeafNode = !childItems;\n const focused = activeDescendantId === id;\n const expanded = expandedIds.has(itemId);\n const selected = selectedIds.has(itemId);\n const disableTransition = propDisableTransition ?? contextDisableTransition;\n\n useEffect(() => {\n const lookup = metadataLookup.current;\n lookup.expandable[itemId] = !isLeafNode;\n lookup.disabledItems[itemId] = disabled;\n lookup.elementToItem[id] = itemId;\n lookup.itemToElement[itemId] = id;\n\n return () => {\n delete lookup.disabledItems[itemId];\n delete lookup.expandable[itemId];\n delete lookup.elementToItem[id];\n delete lookup.itemToElement[itemId];\n };\n }, [id, metadataLookup, itemId, isLeafNode, disabled, depth]);\n\n const { pressedClassName, ripples, handlers } =\n useElementInteraction<HTMLLIElement>({\n onBlur,\n onClick(event) {\n onClick?.(event);\n toggleTreeItemSelection(itemId);\n if (!isLeafNode && expansionMode !== \"manual\") {\n toggleTreeItemExpansion(itemId);\n }\n },\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseUp,\n onMouseLeave,\n onDragStart,\n onTouchStart,\n onTouchEnd,\n onTouchMove,\n disabled,\n });\n\n const isLink = !!(remaining.to || remaining.href);\n const Link = useLink();\n\n // cheating a bit so there are type errors around the event handlers\n const ContentComponent = (isLink ? Link : \"span\") as \"span\";\n const leftAddonType =\n propLeftAddonType ?? (expanderLeft && leftAddon) ? \"media\" : undefined;\n const isMediaLeftAddon =\n typeof propLeftAddonType === \"undefined\" && leftAddonType === \"media\";\n const disableLeftAddonCenteredMedia =\n propDisableLeftAddonCenteredMedia ?? isMediaLeftAddon;\n\n return (\n <li\n {...liProps}\n role=\"none\"\n className={treeItem({\n className,\n expander: !!childItems,\n expanderLeft,\n })}\n >\n <ContentComponent\n {...remaining}\n // nodes with children should always apply the `aria-expanded` to show\n // that it is expandable while leaf nodes should remain omitted\n aria-expanded={isLeafNode ? undefined : expanded}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n id={id}\n ref={contentRef}\n role=\"treeitem\"\n tabIndex={-1}\n {...handlers}\n className={treeItemContent({\n link: isLink,\n padded: depth > 0,\n focused,\n selected,\n disabled,\n disabledOpacity,\n className: contentClassName,\n pressedClassName,\n })}\n >\n <ListItemChildren\n threeLines={threeLines}\n textClassName={textClassName}\n secondaryTextClassName={secondaryTextClassName}\n disableTextChildren={disableTextChildren}\n primaryText={primaryText}\n textProps={textProps}\n secondaryText={secondaryText}\n secondaryTextProps={secondaryTextProps}\n leftAddon={\n <TreeItemExpander\n isLeft\n itemId={itemId}\n addon={leftAddon}\n expanded={expanded}\n disabled={disabled}\n isLeafNode={isLeafNode}\n />\n }\n leftAddonType={leftAddonType}\n leftAddonPosition={leftAddonPosition}\n leftAddonClassName={treeItemMedia({\n isLeafNode,\n isMediaLeftAddon,\n className: leftAddonClassName,\n })}\n leftAddonForceWrap={leftAddonForceWrap}\n rightAddon={\n <TreeItemExpander\n itemId={itemId}\n addon={rightAddon}\n expanded={expanded}\n disabled={disabled}\n isLeafNode={isLeafNode}\n />\n }\n rightAddonType={rightAddonType}\n rightAddonPosition={rightAddonPosition}\n rightAddonClassName={rightAddonClassName}\n rightAddonForceWrap={rightAddonForceWrap}\n disableLeftAddonCenteredMedia={disableLeftAddonCenteredMedia}\n disableRightAddonCenteredMedia={disableRightAddonCenteredMedia}\n >\n {children}\n </ListItemChildren>\n {ripples}\n </ContentComponent>\n <TreeGroup\n id={`${id}-group`}\n temporary={temporaryChildItems}\n disableTransition={disableTransition}\n {...groupProps}\n depth={depth - 1}\n collapsed={isLeafNode || !expanded}\n >\n {childItems}\n </TreeGroup>\n </li>\n );\n}\n"],"names":["useEffect","useElementInteraction","useHigherContrastChildren","useLink","ListItemChildren","useKeyboardMovementContext","useEnsuredId","TreeGroup","TreeItemExpander","useTreeContext","treeItem","treeItemContent","treeItemMedia","TreeItem","props","id","propId","depth","liProps","disabled","disabledOpacity","groupProps","children","propChildren","className","itemId","leftAddon","leftAddonType","propLeftAddonType","leftAddonPosition","leftAddonClassName","leftAddonForceWrap","rightAddon","rightAddonType","rightAddonPosition","rightAddonClassName","rightAddonForceWrap","disableTextChildren","disableLeftAddonCenteredMedia","propDisableLeftAddonCenteredMedia","disableRightAddonCenteredMedia","textProps","textClassName","primaryText","secondaryText","secondaryTextProps","secondaryTextClassName","threeLines","childItems","contentClassName","temporaryChildItems","disableTransition","propDisableTransition","onBlur","onClick","onKeyDown","onKeyUp","onMouseDown","onMouseUp","onMouseLeave","onDragStart","onTouchStart","onTouchEnd","onTouchMove","contentRef","remaining","to","undefined","href","metadataLookup","expandedIds","selectedIds","expanderLeft","expansionMode","toggleTreeItemSelection","toggleTreeItemExpansion","contextDisableTransition","activeDescendantId","isLeafNode","focused","expanded","has","selected","lookup","current","expandable","disabledItems","elementToItem","itemToElement","pressedClassName","ripples","handlers","event","isLink","Link","ContentComponent","isMediaLeftAddon","li","role","expander","aria-expanded","aria-selected","aria-disabled","ref","tabIndex","link","padded","isLeft","addon","temporary","collapsed"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/tree/TreeItem.tsx"],"sourcesContent":["\"use client\";\nimport {\n useEffect,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from \"react\";\nimport { useElementInteraction } from \"../interaction/useElementInteraction.js\";\nimport { useHigherContrastChildren } from \"../interaction/useHigherContrastChildren.js\";\nimport { ListItemChildren } from \"../list/ListItemChildren.js\";\nimport { useKeyboardMovementContext } from \"../movement/useKeyboardMovementProvider.js\";\nimport { type PropsWithRef } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { TreeGroup, type OverridableTreeGroupProps } from \"./TreeGroup.js\";\nimport { TreeItemExpander } from \"./TreeItemExpander.js\";\nimport { useTreeContext } from \"./TreeProvider.js\";\nimport { treeItem, treeItemContent, treeItemMedia } from \"./styles.js\";\nimport { type DefaultTreeItemNode } from \"./types.js\";\n\n/**\n * @remarks \\@since 6.0.0 Added the `groupProps` prop.\n */\nexport interface TreeItemProps\n extends Omit<DefaultTreeItemNode, \"parentId\">,\n HTMLAttributes<HTMLLIElement> {\n /**\n * @defaultValue `\"tree-item-\" + useId()`\n */\n id?: string;\n\n /**\n * This is used to set the `--rmd-tree-depth` CSS variable which allows the\n * padding to increase for each nested tree.\n */\n depth: number;\n\n /**\n * Any additional props that should be passed to the surrounding `<li>`\n * element. The top-level props are passed to the `<span>` or `<a>` element\n * instead.\n */\n liProps?: PropsWithRef<HTMLAttributes<HTMLLIElement>, HTMLLIElement>;\n\n /**\n * Any additional props to pass to the `TreeGroup` component.\n */\n groupProps?: PropsWithRef<OverridableTreeGroupProps, HTMLUListElement>;\n\n /**\n * This should normally be the text/content to display within the tree item\n * and should **not** include nested trees.\n */\n children?: ReactNode;\n\n /**\n * The nested tree items to render within a `TreeGroup`.\n */\n childItems?: ReactNode;\n\n /** @defaultValue `false` */\n disableTransition?: boolean;\n\n /**\n * This ref is applied to the `<span>` or `<a>` element and can be used to\n * implement drag and drop behavior.\n */\n contentRef?: Ref<HTMLElement>;\n\n /**\n * Set this to `true` if the {@link childItems} should not be rendered while\n * collapsed.\n *\n * @defaultValue `false`\n */\n temporaryChildItems?: boolean;\n}\n\n/**\n * **Client Component**\n *\n * @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/treeview/}\n * @remarks\n * \\@since 6.0.0 The wrapping `<li>` element will always be `role=\"none\"` and\n * the `<span>` or `<a>` will gain the `role=\"treeitem\"` instead. This makes it\n * easier to pass event handlers because of the nested behavior of tree items.\n * \\@since 6.0.0 No longer provides the `aria-level`, `aria-setsize` and\n * `aria-posinset` attributes and allows the browser to compute them instead.\n */\nexport function TreeItem(props: TreeItemProps): ReactElement {\n const {\n id: propId,\n depth,\n liProps,\n disabled = false,\n disabledOpacity = false,\n groupProps,\n children: propChildren,\n className,\n itemId,\n leftAddon,\n leftAddonType: propLeftAddonType,\n leftAddonPosition,\n leftAddonClassName,\n leftAddonForceWrap,\n rightAddon,\n rightAddonType,\n rightAddonPosition,\n rightAddonClassName,\n rightAddonForceWrap,\n disableTextChildren,\n disableLeftAddonCenteredMedia: propDisableLeftAddonCenteredMedia,\n disableRightAddonCenteredMedia,\n textProps,\n textClassName,\n primaryText,\n secondaryText,\n secondaryTextProps,\n secondaryTextClassName,\n threeLines,\n childItems,\n contentClassName,\n temporaryChildItems,\n disableTransition: propDisableTransition,\n onBlur,\n onClick,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseUp,\n onMouseLeave,\n onDragStart,\n onTouchStart,\n onTouchEnd,\n onTouchMove,\n contentRef,\n ...remaining\n } = props;\n\n const id = useEnsuredId(propId, \"tree-item\");\n const children = useHigherContrastChildren(propChildren);\n if (disabled) {\n // you can't really disable a link other than removing the href, so\n // unset these props\n remaining.to = undefined;\n remaining.href = undefined;\n }\n\n const {\n expandedIds,\n selectedIds,\n expanderLeft,\n expansionMode,\n metadataLookup,\n linkComponent: Link,\n toggleTreeItemSelection,\n toggleTreeItemExpansion,\n disableTransition: contextDisableTransition,\n } = useTreeContext();\n const { activeDescendantId } = useKeyboardMovementContext();\n\n const isLeafNode = !childItems;\n const focused = activeDescendantId === id;\n const expanded = expandedIds.has(itemId);\n const selected = selectedIds.has(itemId);\n const disableTransition = propDisableTransition ?? contextDisableTransition;\n\n useEffect(() => {\n const lookup = metadataLookup.current;\n lookup.expandable[itemId] = !isLeafNode;\n lookup.disabledItems[itemId] = disabled;\n lookup.elementToItem[id] = itemId;\n lookup.itemToElement[itemId] = id;\n\n return () => {\n delete lookup.disabledItems[itemId];\n delete lookup.expandable[itemId];\n delete lookup.elementToItem[id];\n delete lookup.itemToElement[itemId];\n };\n }, [id, metadataLookup, itemId, isLeafNode, disabled, depth]);\n\n const { pressedClassName, ripples, handlers } =\n useElementInteraction<HTMLLIElement>({\n onBlur,\n onClick(event) {\n onClick?.(event);\n toggleTreeItemSelection(itemId);\n if (!isLeafNode && expansionMode !== \"manual\") {\n toggleTreeItemExpansion(itemId);\n }\n },\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseUp,\n onMouseLeave,\n onDragStart,\n onTouchStart,\n onTouchEnd,\n onTouchMove,\n disabled,\n });\n\n const isLink = !!(remaining.to || remaining.href);\n\n // cheating a bit so there are type errors around the event handlers\n const ContentComponent = (isLink ? Link : \"span\") as \"span\";\n const leftAddonType =\n propLeftAddonType ?? (expanderLeft && leftAddon) ? \"media\" : undefined;\n const isMediaLeftAddon =\n typeof propLeftAddonType === \"undefined\" && leftAddonType === \"media\";\n const disableLeftAddonCenteredMedia =\n propDisableLeftAddonCenteredMedia ?? isMediaLeftAddon;\n\n return (\n <li\n {...liProps}\n role=\"none\"\n className={treeItem({\n className,\n expander: !!childItems,\n expanderLeft,\n })}\n >\n <ContentComponent\n {...remaining}\n // nodes with children should always apply the `aria-expanded` to show\n // that it is expandable while leaf nodes should remain omitted\n aria-expanded={isLeafNode ? undefined : expanded}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n id={id}\n ref={contentRef}\n role=\"treeitem\"\n tabIndex={-1}\n {...handlers}\n className={treeItemContent({\n link: isLink,\n padded: depth > 0,\n focused,\n selected,\n disabled,\n disabledOpacity,\n className: contentClassName,\n pressedClassName,\n })}\n >\n <ListItemChildren\n threeLines={threeLines}\n textClassName={textClassName}\n secondaryTextClassName={secondaryTextClassName}\n disableTextChildren={disableTextChildren}\n primaryText={primaryText}\n textProps={textProps}\n secondaryText={secondaryText}\n secondaryTextProps={secondaryTextProps}\n leftAddon={\n <TreeItemExpander\n isLeft\n itemId={itemId}\n addon={leftAddon}\n expanded={expanded}\n disabled={disabled}\n isLeafNode={isLeafNode}\n />\n }\n leftAddonType={leftAddonType}\n leftAddonPosition={leftAddonPosition}\n leftAddonClassName={treeItemMedia({\n isLeafNode,\n isMediaLeftAddon,\n className: leftAddonClassName,\n })}\n leftAddonForceWrap={leftAddonForceWrap}\n rightAddon={\n <TreeItemExpander\n itemId={itemId}\n addon={rightAddon}\n expanded={expanded}\n disabled={disabled}\n isLeafNode={isLeafNode}\n />\n }\n rightAddonType={rightAddonType}\n rightAddonPosition={rightAddonPosition}\n rightAddonClassName={rightAddonClassName}\n rightAddonForceWrap={rightAddonForceWrap}\n disableLeftAddonCenteredMedia={disableLeftAddonCenteredMedia}\n disableRightAddonCenteredMedia={disableRightAddonCenteredMedia}\n >\n {children}\n </ListItemChildren>\n {ripples}\n </ContentComponent>\n <TreeGroup\n id={`${id}-group`}\n temporary={temporaryChildItems}\n disableTransition={disableTransition}\n {...groupProps}\n depth={depth - 1}\n collapsed={isLeafNode || !expanded}\n >\n {childItems}\n </TreeGroup>\n </li>\n );\n}\n"],"names":["useEffect","useElementInteraction","useHigherContrastChildren","ListItemChildren","useKeyboardMovementContext","useEnsuredId","TreeGroup","TreeItemExpander","useTreeContext","treeItem","treeItemContent","treeItemMedia","TreeItem","props","id","propId","depth","liProps","disabled","disabledOpacity","groupProps","children","propChildren","className","itemId","leftAddon","leftAddonType","propLeftAddonType","leftAddonPosition","leftAddonClassName","leftAddonForceWrap","rightAddon","rightAddonType","rightAddonPosition","rightAddonClassName","rightAddonForceWrap","disableTextChildren","disableLeftAddonCenteredMedia","propDisableLeftAddonCenteredMedia","disableRightAddonCenteredMedia","textProps","textClassName","primaryText","secondaryText","secondaryTextProps","secondaryTextClassName","threeLines","childItems","contentClassName","temporaryChildItems","disableTransition","propDisableTransition","onBlur","onClick","onKeyDown","onKeyUp","onMouseDown","onMouseUp","onMouseLeave","onDragStart","onTouchStart","onTouchEnd","onTouchMove","contentRef","remaining","to","undefined","href","expandedIds","selectedIds","expanderLeft","expansionMode","metadataLookup","linkComponent","Link","toggleTreeItemSelection","toggleTreeItemExpansion","contextDisableTransition","activeDescendantId","isLeafNode","focused","expanded","has","selected","lookup","current","expandable","disabledItems","elementToItem","itemToElement","pressedClassName","ripples","handlers","event","isLink","ContentComponent","isMediaLeftAddon","li","role","expander","aria-expanded","aria-selected","aria-disabled","ref","tabIndex","link","padded","isLeft","addon","temporary","collapsed"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ReactElement, type ReactNode } from "react";
|
|
2
|
+
import { type CustomLinkComponent } from "../link/Link.js";
|
|
2
3
|
import { type NonNullRef } from "../types.js";
|
|
3
4
|
import { type DefaultTreeItemNode, type TreeData, type TreeItemNode } from "./types.js";
|
|
4
5
|
import { type TreeExpansion } from "./useTreeExpansion.js";
|
|
@@ -62,6 +63,7 @@ export interface TreeContext<T extends TreeItemNode = DefaultTreeItemNode> exten
|
|
|
62
63
|
rootId: string | null;
|
|
63
64
|
disableTransition: boolean;
|
|
64
65
|
temporaryChildItems: boolean;
|
|
66
|
+
linkComponent: CustomLinkComponent;
|
|
65
67
|
/** @internal */
|
|
66
68
|
expanderLeft: boolean;
|
|
67
69
|
/** @internal */
|
|
@@ -24,7 +24,7 @@ const { Provider } = context;
|
|
|
24
24
|
* @internal
|
|
25
25
|
* @remarks \@since 6.0.0
|
|
26
26
|
*/ export function TreeProvider(props) {
|
|
27
|
-
const { children, data, rootId, multiSelect, expanderIcon, expanderLeft, expansionMode, metadataLookup, disableTransition, temporaryChildItems, expandedIds, selectedIds, expandMultipleTreeItems, toggleTreeItemExpansion, selectMultipleTreeItems, toggleTreeItemSelection } = props;
|
|
27
|
+
const { children, data, rootId, multiSelect, expanderIcon, expanderLeft, expansionMode, metadataLookup, disableTransition, temporaryChildItems, linkComponent, expandedIds, selectedIds, expandMultipleTreeItems, toggleTreeItemExpansion, selectMultipleTreeItems, toggleTreeItemSelection } = props;
|
|
28
28
|
const value = useMemo(()=>({
|
|
29
29
|
data,
|
|
30
30
|
rootId,
|
|
@@ -35,6 +35,7 @@ const { Provider } = context;
|
|
|
35
35
|
metadataLookup,
|
|
36
36
|
disableTransition,
|
|
37
37
|
temporaryChildItems,
|
|
38
|
+
linkComponent,
|
|
38
39
|
expandedIds,
|
|
39
40
|
selectedIds,
|
|
40
41
|
expandMultipleTreeItems,
|
|
@@ -49,6 +50,7 @@ const { Provider } = context;
|
|
|
49
50
|
expanderIcon,
|
|
50
51
|
expanderLeft,
|
|
51
52
|
expansionMode,
|
|
53
|
+
linkComponent,
|
|
52
54
|
metadataLookup,
|
|
53
55
|
multiSelect,
|
|
54
56
|
rootId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tree/TreeProvider.tsx"],"sourcesContent":["\"use client\";\nimport {\n createContext,\n useContext,\n useMemo,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { type NonNullRef } from \"../types.js\";\nimport {\n type DefaultTreeItemNode,\n type TreeData,\n type TreeItemNode,\n} from \"./types.js\";\nimport { type TreeExpansion } from \"./useTreeExpansion.js\";\nimport { type TreeSelection } from \"./useTreeSelection.js\";\n\n/**\n * When this is set to `\"auto\"`, clicking on a tree item with a mouse or with\n * the Enter/Space keys will select and expand/collapse the tree item. The user\n * can still use the ArrowLeft and ArrowRight keys to expand/collapse nested\n * tree items.\n *\n * When this is set to `\"manual\"`, clicking on a tree item with a mouse or with\n * the Enter/Space keys will only select that tree item. The user must use the\n * ArrowLeft and ArrowRight keys to expand/collapse nested tree items.\n *\n * The main use-case for the `\"manual\"` setting is creating a navigation tree\n * that requires the user to click on an icon or a button to expand the child\n * items.\n *\n * @remarks \\@since 6.0.0\n */\nexport type TreeExpansionMode = \"auto\" | \"manual\";\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport interface TreeItemMetadataLookup {\n /**\n * This is used for the keyboard movement behavior for trees that allow the\n * `ArrowRight` key for tree items that have children.\n */\n expandable: Record<string, boolean>;\n\n /**\n * This is a quick lookup if a tree item is disabled since it's possible the\n * custom `renderer` sets the `disabled` state and not the `TreeData`.\n */\n disabledItems: Record<string, boolean>;\n\n /**\n * A lookup of element `id` (DOM id) for each tree item to the `itemId`. This\n * is a quick way to figure out which item is being interacted with from a\n * keyboard event without needed to add `data-*` attributes.\n */\n elementToItem: Record<string, string>;\n\n /**\n * A lookup of tree item `itemId` to the element `id` (DOM id). This is used\n * to be able to find a parent tree item when the `ArrowLeft` key is pressed\n * to focus that parent item.\n */\n itemToElement: Record<string, string>;\n}\n\n/**\n * The tree context is mostly a convenience API for implementing a custom tree\n * item that requires the {@link TreeExpansion}, {@link TreeSelection} and\n * {@link TreeData} to work.\n *\n * The other properties on the context are most likely for internal use only.\n *\n * @remarks \\@since 6.0.0\n */\nexport interface TreeContext<T extends TreeItemNode = DefaultTreeItemNode>\n extends TreeExpansion,\n TreeSelection {\n data: TreeData<T>;\n rootId: string | null;\n disableTransition: boolean;\n temporaryChildItems: boolean;\n\n /** @internal */\n expanderLeft: boolean;\n /** @internal */\n expanderIcon: ReactNode;\n /** @internal */\n expansionMode: TreeExpansionMode;\n /** @internal */\n metadataLookup: NonNullRef<TreeItemMetadataLookup>;\n}\n\n// Allow the hook to correct typecast this instead\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst context = createContext<TreeContext<any> | undefined>(undefined);\ncontext.displayName = \"Tree\";\nconst { Provider } = context;\n\n/**\n * This can be used for a custom tree item renderer.\n *\n * @see The `Tree` component for an example.\n * @remarks \\@since 6.0.0\n */\nexport function useTreeContext<\n T extends TreeItemNode = DefaultTreeItemNode,\n>(): TreeContext<T> {\n const value = useContext(context);\n if (!value) {\n throw new Error(\"Cannot find a parent Tree component\");\n }\n\n return value;\n}\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport interface TreeProviderProps<T extends TreeItemNode = DefaultTreeItemNode>\n extends TreeContext<T> {\n children: ReactNode;\n}\n\n/**\n * **Client Component**\n *\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport function TreeProvider<T extends TreeItemNode = DefaultTreeItemNode>(\n props: TreeProviderProps<T>\n): ReactElement {\n const {\n children,\n data,\n rootId,\n multiSelect,\n expanderIcon,\n expanderLeft,\n expansionMode,\n metadataLookup,\n disableTransition,\n temporaryChildItems,\n expandedIds,\n selectedIds,\n expandMultipleTreeItems,\n toggleTreeItemExpansion,\n selectMultipleTreeItems,\n toggleTreeItemSelection,\n } = props;\n const value = useMemo<TreeContext<T>>(\n () => ({\n data,\n rootId,\n multiSelect,\n expanderIcon,\n expanderLeft,\n expansionMode,\n metadataLookup,\n disableTransition,\n temporaryChildItems,\n expandedIds,\n selectedIds,\n expandMultipleTreeItems,\n toggleTreeItemExpansion,\n selectMultipleTreeItems,\n toggleTreeItemSelection,\n }),\n [\n data,\n disableTransition,\n expandMultipleTreeItems,\n expandedIds,\n expanderIcon,\n expanderLeft,\n expansionMode,\n metadataLookup,\n multiSelect,\n rootId,\n selectMultipleTreeItems,\n selectedIds,\n temporaryChildItems,\n toggleTreeItemExpansion,\n toggleTreeItemSelection,\n ]\n );\n\n return <Provider value={value}>{children}</Provider>;\n}\n"],"names":["createContext","useContext","useMemo","context","undefined","displayName","Provider","useTreeContext","value","Error","TreeProvider","props","children","data","rootId","multiSelect","expanderIcon","expanderLeft","expansionMode","metadataLookup","disableTransition","temporaryChildItems","expandedIds","selectedIds","expandMultipleTreeItems","toggleTreeItemExpansion","selectMultipleTreeItems","toggleTreeItemSelection"],"mappings":"AAAA;;AACA,SACEA,aAAa,EACbC,UAAU,EACVC,OAAO,QAGF,QAAQ;
|
|
1
|
+
{"version":3,"sources":["../../src/tree/TreeProvider.tsx"],"sourcesContent":["\"use client\";\nimport {\n createContext,\n useContext,\n useMemo,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { type CustomLinkComponent } from \"../link/Link.js\";\nimport { type NonNullRef } from \"../types.js\";\nimport {\n type DefaultTreeItemNode,\n type TreeData,\n type TreeItemNode,\n} from \"./types.js\";\nimport { type TreeExpansion } from \"./useTreeExpansion.js\";\nimport { type TreeSelection } from \"./useTreeSelection.js\";\n\n/**\n * When this is set to `\"auto\"`, clicking on a tree item with a mouse or with\n * the Enter/Space keys will select and expand/collapse the tree item. The user\n * can still use the ArrowLeft and ArrowRight keys to expand/collapse nested\n * tree items.\n *\n * When this is set to `\"manual\"`, clicking on a tree item with a mouse or with\n * the Enter/Space keys will only select that tree item. The user must use the\n * ArrowLeft and ArrowRight keys to expand/collapse nested tree items.\n *\n * The main use-case for the `\"manual\"` setting is creating a navigation tree\n * that requires the user to click on an icon or a button to expand the child\n * items.\n *\n * @remarks \\@since 6.0.0\n */\nexport type TreeExpansionMode = \"auto\" | \"manual\";\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport interface TreeItemMetadataLookup {\n /**\n * This is used for the keyboard movement behavior for trees that allow the\n * `ArrowRight` key for tree items that have children.\n */\n expandable: Record<string, boolean>;\n\n /**\n * This is a quick lookup if a tree item is disabled since it's possible the\n * custom `renderer` sets the `disabled` state and not the `TreeData`.\n */\n disabledItems: Record<string, boolean>;\n\n /**\n * A lookup of element `id` (DOM id) for each tree item to the `itemId`. This\n * is a quick way to figure out which item is being interacted with from a\n * keyboard event without needed to add `data-*` attributes.\n */\n elementToItem: Record<string, string>;\n\n /**\n * A lookup of tree item `itemId` to the element `id` (DOM id). This is used\n * to be able to find a parent tree item when the `ArrowLeft` key is pressed\n * to focus that parent item.\n */\n itemToElement: Record<string, string>;\n}\n\n/**\n * The tree context is mostly a convenience API for implementing a custom tree\n * item that requires the {@link TreeExpansion}, {@link TreeSelection} and\n * {@link TreeData} to work.\n *\n * The other properties on the context are most likely for internal use only.\n *\n * @remarks \\@since 6.0.0\n */\nexport interface TreeContext<T extends TreeItemNode = DefaultTreeItemNode>\n extends TreeExpansion,\n TreeSelection {\n data: TreeData<T>;\n rootId: string | null;\n disableTransition: boolean;\n temporaryChildItems: boolean;\n\n linkComponent: CustomLinkComponent;\n\n /** @internal */\n expanderLeft: boolean;\n /** @internal */\n expanderIcon: ReactNode;\n /** @internal */\n expansionMode: TreeExpansionMode;\n /** @internal */\n metadataLookup: NonNullRef<TreeItemMetadataLookup>;\n}\n\n// Allow the hook to correct typecast this instead\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst context = createContext<TreeContext<any> | undefined>(undefined);\ncontext.displayName = \"Tree\";\nconst { Provider } = context;\n\n/**\n * This can be used for a custom tree item renderer.\n *\n * @see The `Tree` component for an example.\n * @remarks \\@since 6.0.0\n */\nexport function useTreeContext<\n T extends TreeItemNode = DefaultTreeItemNode,\n>(): TreeContext<T> {\n const value = useContext(context);\n if (!value) {\n throw new Error(\"Cannot find a parent Tree component\");\n }\n\n return value;\n}\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport interface TreeProviderProps<T extends TreeItemNode = DefaultTreeItemNode>\n extends TreeContext<T> {\n children: ReactNode;\n}\n\n/**\n * **Client Component**\n *\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport function TreeProvider<T extends TreeItemNode = DefaultTreeItemNode>(\n props: TreeProviderProps<T>\n): ReactElement {\n const {\n children,\n data,\n rootId,\n multiSelect,\n expanderIcon,\n expanderLeft,\n expansionMode,\n metadataLookup,\n disableTransition,\n temporaryChildItems,\n linkComponent,\n expandedIds,\n selectedIds,\n expandMultipleTreeItems,\n toggleTreeItemExpansion,\n selectMultipleTreeItems,\n toggleTreeItemSelection,\n } = props;\n const value = useMemo<TreeContext<T>>(\n () => ({\n data,\n rootId,\n multiSelect,\n expanderIcon,\n expanderLeft,\n expansionMode,\n metadataLookup,\n disableTransition,\n temporaryChildItems,\n linkComponent,\n expandedIds,\n selectedIds,\n expandMultipleTreeItems,\n toggleTreeItemExpansion,\n selectMultipleTreeItems,\n toggleTreeItemSelection,\n }),\n [\n data,\n disableTransition,\n expandMultipleTreeItems,\n expandedIds,\n expanderIcon,\n expanderLeft,\n expansionMode,\n linkComponent,\n metadataLookup,\n multiSelect,\n rootId,\n selectMultipleTreeItems,\n selectedIds,\n temporaryChildItems,\n toggleTreeItemExpansion,\n toggleTreeItemSelection,\n ]\n );\n\n return <Provider value={value}>{children}</Provider>;\n}\n"],"names":["createContext","useContext","useMemo","context","undefined","displayName","Provider","useTreeContext","value","Error","TreeProvider","props","children","data","rootId","multiSelect","expanderIcon","expanderLeft","expansionMode","metadataLookup","disableTransition","temporaryChildItems","linkComponent","expandedIds","selectedIds","expandMultipleTreeItems","toggleTreeItemExpansion","selectMultipleTreeItems","toggleTreeItemSelection"],"mappings":"AAAA;;AACA,SACEA,aAAa,EACbC,UAAU,EACVC,OAAO,QAGF,QAAQ;AA0Ff,kDAAkD;AAClD,8DAA8D;AAC9D,MAAMC,wBAAUH,cAA4CI;AAC5DD,QAAQE,WAAW,GAAG;AACtB,MAAM,EAAEC,QAAQ,EAAE,GAAGH;AAErB;;;;;CAKC,GACD,OAAO,SAASI;IAGd,MAAMC,QAAQP,WAAWE;IACzB,IAAI,CAACK,OAAO;QACV,MAAM,IAAIC,MAAM;IAClB;IAEA,OAAOD;AACT;AAWA;;;;;CAKC,GACD,OAAO,SAASE,aACdC,KAA2B;IAE3B,MAAM,EACJC,QAAQ,EACRC,IAAI,EACJC,MAAM,EACNC,WAAW,EACXC,YAAY,EACZC,YAAY,EACZC,aAAa,EACbC,cAAc,EACdC,iBAAiB,EACjBC,mBAAmB,EACnBC,aAAa,EACbC,WAAW,EACXC,WAAW,EACXC,uBAAuB,EACvBC,uBAAuB,EACvBC,uBAAuB,EACvBC,uBAAuB,EACxB,GAAGjB;IACJ,MAAMH,QAAQN,QACZ,IAAO,CAAA;YACLW;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;QACF,CAAA,GACA;QACEf;QACAO;QACAK;QACAF;QACAP;QACAC;QACAC;QACAI;QACAH;QACAJ;QACAD;QACAa;QACAH;QACAH;QACAK;QACAE;KACD;IAGH,qBAAO,KAACtB;QAASE,OAAOA;kBAAQI;;AAClC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-md/core",
|
|
3
|
-
"version": "1.0.0-next.
|
|
3
|
+
"version": "1.0.0-next.1",
|
|
4
4
|
"description": "The core components and functionality for react-md.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sass": "./dist/_core.scss",
|
|
@@ -11,11 +11,6 @@
|
|
|
11
11
|
"types": "./dist/index.d.ts",
|
|
12
12
|
"default": "./dist/index.js"
|
|
13
13
|
},
|
|
14
|
-
"./test-utils": "./dist/test-utils/index.js",
|
|
15
|
-
"./test-utils/*": {
|
|
16
|
-
"require": "./dist/test-utils/*",
|
|
17
|
-
"default": "./dist/test-utils/*.js"
|
|
18
|
-
},
|
|
19
14
|
"./test-utils/polyfills": {
|
|
20
15
|
"require": "./dist/test-utils/polyfills",
|
|
21
16
|
"default": "./dist/test-utils/polyfills/index.js"
|
|
@@ -24,7 +19,13 @@
|
|
|
24
19
|
"require": "./dist/test-utils/polyfills/*",
|
|
25
20
|
"default": "./dist/test-utils/polyfills/*.js"
|
|
26
21
|
},
|
|
27
|
-
"./test-utils/jest-setup": "./dist/test-utils/jest-setup.js
|
|
22
|
+
"./test-utils/jest-setup": "./dist/test-utils/jest-setup.js",
|
|
23
|
+
"./test-utils/data-testid": "./dist/test-utils/data-testid.js",
|
|
24
|
+
"./test-utils": "./dist/test-utils/index.js",
|
|
25
|
+
"./test-utils/*": {
|
|
26
|
+
"require": "./dist/test-utils/*",
|
|
27
|
+
"default": "./dist/test-utils/*.js"
|
|
28
|
+
},
|
|
28
29
|
"./colors": {
|
|
29
30
|
"sass": "./dist/_colors.scss"
|
|
30
31
|
},
|
|
@@ -54,22 +55,22 @@
|
|
|
54
55
|
"license": "MIT",
|
|
55
56
|
"dependencies": {
|
|
56
57
|
"cnbuilder": "^3.1.0",
|
|
57
|
-
"nanoid": "^5.0.
|
|
58
|
+
"nanoid": "^5.0.3"
|
|
58
59
|
},
|
|
59
60
|
"devDependencies": {
|
|
60
61
|
"@jest/globals": "^29.7.0",
|
|
61
62
|
"@jest/types": "^29.6.3",
|
|
62
63
|
"@swc/cli": "^0.1.62",
|
|
63
|
-
"@swc/core": "1.3.
|
|
64
|
+
"@swc/core": "1.3.96",
|
|
64
65
|
"@swc/jest": "^0.2.29",
|
|
65
66
|
"@testing-library/dom": "^9.3.3",
|
|
66
|
-
"@testing-library/jest-dom": "^6.1.
|
|
67
|
-
"@testing-library/react": "^14.
|
|
67
|
+
"@testing-library/jest-dom": "^6.1.4",
|
|
68
|
+
"@testing-library/react": "^14.1.0",
|
|
68
69
|
"@testing-library/user-event": "^14.5.1",
|
|
69
|
-
"@types/lodash": "^4.14.
|
|
70
|
-
"@types/node": "^20.
|
|
71
|
-
"@types/react": "^18.2.
|
|
72
|
-
"@types/react-dom": "^18.2.
|
|
70
|
+
"@types/lodash": "^4.14.201",
|
|
71
|
+
"@types/node": "^20.9.0",
|
|
72
|
+
"@types/react": "^18.2.37",
|
|
73
|
+
"@types/react-dom": "^18.2.15",
|
|
73
74
|
"chokidar": "^3.5.3",
|
|
74
75
|
"filesize": "^10.1.0",
|
|
75
76
|
"glob": "10.3.10",
|
|
@@ -81,9 +82,9 @@
|
|
|
81
82
|
"npm-run-all": "^4.1.5",
|
|
82
83
|
"postcss": "^8.4.31",
|
|
83
84
|
"postcss-scss": "^4.0.9",
|
|
84
|
-
"stylelint": "^15.
|
|
85
|
+
"stylelint": "^15.11.0",
|
|
85
86
|
"stylelint-config-prettier-scss": "^1.0.0",
|
|
86
|
-
"stylelint-config-recommended-scss": "^13.
|
|
87
|
+
"stylelint-config-recommended-scss": "^13.1.0",
|
|
87
88
|
"stylelint-order": "^6.0.3",
|
|
88
89
|
"ts-node": "^10.9.1",
|
|
89
90
|
"typescript": "^5.2.2"
|
|
@@ -129,6 +130,7 @@
|
|
|
129
130
|
},
|
|
130
131
|
"scripts": {
|
|
131
132
|
"dev": "npm-run-all --parallel build-esm-watch build-scss-watch build-types-watch",
|
|
133
|
+
"prepare-release": "npm-run-all clean-dist build",
|
|
132
134
|
"build": "npm-run-all build-esm build-scss build-types",
|
|
133
135
|
"build-esm": "swc src -d ./dist",
|
|
134
136
|
"build-esm-watch": "pnpm run build-esm --watch",
|
|
@@ -136,6 +138,7 @@
|
|
|
136
138
|
"build-types-watch": "pnpm run build-types --watch",
|
|
137
139
|
"build-scss": "node scripts/copySassFiles.js",
|
|
138
140
|
"build-scss-watch": "pnpm run build-scss --watch",
|
|
141
|
+
"clean-dist": "rm -rf dist",
|
|
139
142
|
"clean": "rm -rf .turbo dist node_modules",
|
|
140
143
|
"typecheck": "tsc --noEmit",
|
|
141
144
|
"lint-scripts": "eslint \"src/**/*.{ts,tsx,js,jsx,cjs,mjs}\"",
|
package/src/__tests__/NoSsr.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describe, expect, it } from "@jest/globals";
|
|
2
2
|
import { type ReactElement } from "react";
|
|
3
|
-
import { render } from "../test-utils/index.js";
|
|
3
|
+
import { render, screen } from "../test-utils/index.js";
|
|
4
4
|
|
|
5
5
|
import { NoSsr } from "../NoSsr.js";
|
|
6
6
|
import { SsrProvider, useSsr } from "../SsrProvider.js";
|
|
@@ -15,17 +15,17 @@ describe("NoSsr", () => {
|
|
|
15
15
|
return <p>Some Text</p>;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
render(
|
|
19
19
|
<NoSsr>
|
|
20
20
|
<Content />
|
|
21
21
|
</NoSsr>
|
|
22
22
|
);
|
|
23
23
|
|
|
24
|
-
expect(() => getByText("Some Text")).not.toThrow();
|
|
24
|
+
expect(() => screen.getByText("Some Text")).not.toThrow();
|
|
25
25
|
});
|
|
26
26
|
|
|
27
27
|
it("should always render the children if ssr mode has not been initialized", () => {
|
|
28
|
-
|
|
28
|
+
render(
|
|
29
29
|
<SsrProvider>
|
|
30
30
|
<NoSsr>
|
|
31
31
|
<Content />
|
|
@@ -33,7 +33,7 @@ describe("NoSsr", () => {
|
|
|
33
33
|
</SsrProvider>
|
|
34
34
|
);
|
|
35
35
|
|
|
36
|
-
expect(() => getByText("Some Text")).not.toThrow();
|
|
36
|
+
expect(() => screen.getByText("Some Text")).not.toThrow();
|
|
37
37
|
});
|
|
38
38
|
|
|
39
39
|
// I don't really know how to test this part
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { describe, expect, it, jest } from "@jest/globals";
|
|
2
2
|
import { type MouseEvent, type ReactElement } from "react";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
act,
|
|
5
|
+
rmdRender,
|
|
6
|
+
screen,
|
|
7
|
+
userEvent,
|
|
8
|
+
waitFor,
|
|
9
|
+
} from "../test-utils/index.js";
|
|
4
10
|
|
|
5
11
|
import { box } from "../box/styles.js";
|
|
6
12
|
import { Button, type ButtonProps } from "../button/Button.js";
|
|
@@ -41,7 +47,7 @@ function Test(props: TestProps): ReactElement {
|
|
|
41
47
|
disablePadding: true,
|
|
42
48
|
})}
|
|
43
49
|
>
|
|
44
|
-
<CircularProgress />
|
|
50
|
+
<CircularProgress aria-label="Loading" />
|
|
45
51
|
</span>
|
|
46
52
|
)}
|
|
47
53
|
</Button>
|
|
@@ -59,8 +65,8 @@ describe("useAsyncAction", () => {
|
|
|
59
65
|
instance.addEventListener("resolve-promise", () => resolve());
|
|
60
66
|
});
|
|
61
67
|
});
|
|
62
|
-
const {
|
|
63
|
-
const button = getByRole("button", { name: "Button" });
|
|
68
|
+
const { unmount } = rmdRender(<Test onClick={onClick} />);
|
|
69
|
+
const button = screen.getByRole("button", { name: "Button" });
|
|
64
70
|
|
|
65
71
|
expect(button).not.toHaveAttribute("aria-disabled");
|
|
66
72
|
await user.click(button);
|
|
@@ -74,6 +80,8 @@ describe("useAsyncAction", () => {
|
|
|
74
80
|
});
|
|
75
81
|
await waitFor(() => {
|
|
76
82
|
expect(button).not.toHaveAttribute("aria-disabled");
|
|
83
|
+
});
|
|
84
|
+
await waitFor(() => {
|
|
77
85
|
expect(button).not.toHaveAttribute("disabled");
|
|
78
86
|
});
|
|
79
87
|
|
|
@@ -101,8 +109,8 @@ describe("useAsyncAction", () => {
|
|
|
101
109
|
onClick,
|
|
102
110
|
};
|
|
103
111
|
|
|
104
|
-
const {
|
|
105
|
-
const button = getByRole("button", { name: "Button" });
|
|
112
|
+
const { rerender } = rmdRender(<Test {...props} disabled />);
|
|
113
|
+
const button = screen.getByRole("button", { name: "Button" });
|
|
106
114
|
expect(button).toBeDisabled();
|
|
107
115
|
|
|
108
116
|
await user.click(button);
|