@salt-ds/lab 1.0.0-alpha.90 → 1.0.0-alpha.91
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/CHANGELOG.md +45 -0
- package/css/salt-lab.css +125 -366
- package/dist-cjs/index.js +20 -16
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/mega-menu/MegaMenu.js +82 -0
- package/dist-cjs/mega-menu/MegaMenu.js.map +1 -0
- package/dist-cjs/mega-menu/MegaMenuContent.css.js +6 -0
- package/dist-cjs/mega-menu/MegaMenuContent.css.js.map +1 -0
- package/dist-cjs/mega-menu/MegaMenuContent.js +33 -0
- package/dist-cjs/mega-menu/MegaMenuContent.js.map +1 -0
- package/dist-cjs/mega-menu/MegaMenuContext.js +11 -0
- package/dist-cjs/mega-menu/MegaMenuContext.js.map +1 -0
- package/dist-cjs/mega-menu/MegaMenuGroup.css.js +6 -0
- package/dist-cjs/mega-menu/MegaMenuGroup.css.js.map +1 -0
- package/dist-cjs/mega-menu/MegaMenuGroup.js +58 -0
- package/dist-cjs/mega-menu/MegaMenuGroup.js.map +1 -0
- package/dist-cjs/mega-menu/MegaMenuHeader.css.js +6 -0
- package/dist-cjs/mega-menu/MegaMenuHeader.css.js.map +1 -0
- package/dist-cjs/mega-menu/MegaMenuHeader.js +26 -0
- package/dist-cjs/mega-menu/MegaMenuHeader.js.map +1 -0
- package/dist-cjs/mega-menu/MegaMenuItem.css.js +6 -0
- package/dist-cjs/mega-menu/MegaMenuItem.css.js.map +1 -0
- package/dist-cjs/mega-menu/MegaMenuItem.js +52 -0
- package/dist-cjs/mega-menu/MegaMenuItem.js.map +1 -0
- package/dist-cjs/mega-menu/MegaMenuItemContent.css.js +6 -0
- package/dist-cjs/mega-menu/MegaMenuItemContent.css.js.map +1 -0
- package/dist-cjs/mega-menu/MegaMenuItemContent.js +23 -0
- package/dist-cjs/mega-menu/MegaMenuItemContent.js.map +1 -0
- package/dist-cjs/mega-menu/MegaMenuPanel.css.js +6 -0
- package/dist-cjs/mega-menu/MegaMenuPanel.css.js.map +1 -0
- package/dist-cjs/mega-menu/MegaMenuPanel.js +108 -0
- package/dist-cjs/mega-menu/MegaMenuPanel.js.map +1 -0
- package/dist-cjs/mega-menu/MegaMenuSection.css.js +6 -0
- package/dist-cjs/mega-menu/MegaMenuSection.css.js.map +1 -0
- package/dist-cjs/mega-menu/MegaMenuSection.js +25 -0
- package/dist-cjs/mega-menu/MegaMenuSection.js.map +1 -0
- package/dist-cjs/mega-menu/MegaMenuTrigger.js +92 -0
- package/dist-cjs/mega-menu/MegaMenuTrigger.js.map +1 -0
- package/dist-cjs/mega-menu/useMegaMenu.js +15 -0
- package/dist-cjs/mega-menu/useMegaMenu.js.map +1 -0
- package/dist-cjs/mega-menu/useMegaMenuKeyboard.js +209 -0
- package/dist-cjs/mega-menu/useMegaMenuKeyboard.js.map +1 -0
- package/dist-cjs/side-panel/SidePanel.css.js +1 -1
- package/dist-cjs/side-panel/SidePanel.js +25 -30
- package/dist-cjs/side-panel/SidePanel.js.map +1 -1
- package/dist-cjs/side-panel/SidePanelCloseButton.js +38 -0
- package/dist-cjs/side-panel/SidePanelCloseButton.js.map +1 -0
- package/dist-cjs/side-panel/SidePanelContent.css.js +1 -1
- package/dist-cjs/side-panel/SidePanelContent.js +3 -23
- package/dist-cjs/side-panel/SidePanelContent.js.map +1 -1
- package/dist-cjs/side-panel/SidePanelHeader.css.js +1 -1
- package/dist-cjs/side-panel/SidePanelProvider.js +20 -2
- package/dist-cjs/side-panel/SidePanelProvider.js.map +1 -1
- package/dist-cjs/side-panel/SidePanelTitle.css.js +1 -1
- package/dist-cjs/side-panel/SidePanelTitle.js +1 -0
- package/dist-cjs/side-panel/SidePanelTitle.js.map +1 -1
- package/dist-cjs/side-panel/SidePanelTrigger.js +4 -4
- package/dist-cjs/side-panel/SidePanelTrigger.js.map +1 -1
- package/dist-cjs/side-panel/internal/SidePanelContext.js +3 -0
- package/dist-cjs/side-panel/internal/SidePanelContext.js.map +1 -1
- package/dist-cjs/side-panel/internal/useIsScrollable.js +50 -0
- package/dist-cjs/side-panel/internal/useIsScrollable.js.map +1 -0
- package/dist-cjs/side-panel/internal/useSidePanelTabOrder.js +121 -0
- package/dist-cjs/side-panel/internal/useSidePanelTabOrder.js.map +1 -0
- package/dist-cjs/side-panel/useSidePanel.js +3 -1
- package/dist-cjs/side-panel/useSidePanel.js.map +1 -1
- package/dist-cjs/tree/Tree.js +8 -5
- package/dist-cjs/tree/Tree.js.map +1 -1
- package/dist-cjs/tree/TreeContext.js.map +1 -1
- package/dist-cjs/tree/TreeNode.js +18 -14
- package/dist-cjs/tree/TreeNode.js.map +1 -1
- package/dist-cjs/tree/TreeNodeTrigger.js +4 -3
- package/dist-cjs/tree/TreeNodeTrigger.js.map +1 -1
- package/dist-cjs/tree/treeModel.js +61 -0
- package/dist-cjs/tree/treeModel.js.map +1 -0
- package/dist-cjs/tree/useTree.js +71 -65
- package/dist-cjs/tree/useTree.js.map +1 -1
- package/dist-es/index.js +10 -8
- package/dist-es/index.js.map +1 -1
- package/dist-es/mega-menu/MegaMenu.js +80 -0
- package/dist-es/mega-menu/MegaMenu.js.map +1 -0
- package/dist-es/mega-menu/MegaMenuContent.css.js +4 -0
- package/dist-es/mega-menu/MegaMenuContent.css.js.map +1 -0
- package/dist-es/mega-menu/MegaMenuContent.js +31 -0
- package/dist-es/mega-menu/MegaMenuContent.js.map +1 -0
- package/dist-es/mega-menu/MegaMenuContext.js +9 -0
- package/dist-es/mega-menu/MegaMenuContext.js.map +1 -0
- package/dist-es/mega-menu/MegaMenuGroup.css.js +4 -0
- package/dist-es/mega-menu/MegaMenuGroup.css.js.map +1 -0
- package/dist-es/mega-menu/MegaMenuGroup.js +56 -0
- package/dist-es/mega-menu/MegaMenuGroup.js.map +1 -0
- package/dist-es/mega-menu/MegaMenuHeader.css.js +4 -0
- package/dist-es/mega-menu/MegaMenuHeader.css.js.map +1 -0
- package/dist-es/mega-menu/MegaMenuHeader.js +24 -0
- package/dist-es/mega-menu/MegaMenuHeader.js.map +1 -0
- package/dist-es/mega-menu/MegaMenuItem.css.js +4 -0
- package/dist-es/mega-menu/MegaMenuItem.css.js.map +1 -0
- package/dist-es/mega-menu/MegaMenuItem.js +50 -0
- package/dist-es/mega-menu/MegaMenuItem.js.map +1 -0
- package/dist-es/mega-menu/MegaMenuItemContent.css.js +4 -0
- package/dist-es/mega-menu/MegaMenuItemContent.css.js.map +1 -0
- package/dist-es/mega-menu/MegaMenuItemContent.js +21 -0
- package/dist-es/mega-menu/MegaMenuItemContent.js.map +1 -0
- package/dist-es/mega-menu/MegaMenuPanel.css.js +4 -0
- package/dist-es/mega-menu/MegaMenuPanel.css.js.map +1 -0
- package/dist-es/mega-menu/MegaMenuPanel.js +106 -0
- package/dist-es/mega-menu/MegaMenuPanel.js.map +1 -0
- package/dist-es/mega-menu/MegaMenuSection.css.js +4 -0
- package/dist-es/mega-menu/MegaMenuSection.css.js.map +1 -0
- package/dist-es/mega-menu/MegaMenuSection.js +23 -0
- package/dist-es/mega-menu/MegaMenuSection.js.map +1 -0
- package/dist-es/mega-menu/MegaMenuTrigger.js +90 -0
- package/dist-es/mega-menu/MegaMenuTrigger.js.map +1 -0
- package/dist-es/mega-menu/useMegaMenu.js +13 -0
- package/dist-es/mega-menu/useMegaMenu.js.map +1 -0
- package/dist-es/mega-menu/useMegaMenuKeyboard.js +205 -0
- package/dist-es/mega-menu/useMegaMenuKeyboard.js.map +1 -0
- package/dist-es/side-panel/SidePanel.css.js +1 -1
- package/dist-es/side-panel/SidePanel.js +28 -33
- package/dist-es/side-panel/SidePanel.js.map +1 -1
- package/dist-es/side-panel/SidePanelCloseButton.js +36 -0
- package/dist-es/side-panel/SidePanelCloseButton.js.map +1 -0
- package/dist-es/side-panel/SidePanelContent.css.js +1 -1
- package/dist-es/side-panel/SidePanelContent.js +4 -24
- package/dist-es/side-panel/SidePanelContent.js.map +1 -1
- package/dist-es/side-panel/SidePanelHeader.css.js +1 -1
- package/dist-es/side-panel/SidePanelProvider.js +20 -2
- package/dist-es/side-panel/SidePanelProvider.js.map +1 -1
- package/dist-es/side-panel/SidePanelTitle.css.js +1 -1
- package/dist-es/side-panel/SidePanelTitle.js +1 -0
- package/dist-es/side-panel/SidePanelTitle.js.map +1 -1
- package/dist-es/side-panel/SidePanelTrigger.js +5 -5
- package/dist-es/side-panel/SidePanelTrigger.js.map +1 -1
- package/dist-es/side-panel/internal/SidePanelContext.js +3 -0
- package/dist-es/side-panel/internal/SidePanelContext.js.map +1 -1
- package/dist-es/side-panel/internal/useIsScrollable.js +48 -0
- package/dist-es/side-panel/internal/useIsScrollable.js.map +1 -0
- package/dist-es/side-panel/internal/useSidePanelTabOrder.js +119 -0
- package/dist-es/side-panel/internal/useSidePanelTabOrder.js.map +1 -0
- package/dist-es/side-panel/useSidePanel.js +3 -1
- package/dist-es/side-panel/useSidePanel.js.map +1 -1
- package/dist-es/tree/Tree.js +8 -5
- package/dist-es/tree/Tree.js.map +1 -1
- package/dist-es/tree/TreeContext.js.map +1 -1
- package/dist-es/tree/TreeNode.js +20 -16
- package/dist-es/tree/TreeNode.js.map +1 -1
- package/dist-es/tree/TreeNodeTrigger.js +4 -3
- package/dist-es/tree/TreeNodeTrigger.js.map +1 -1
- package/dist-es/tree/treeModel.js +57 -0
- package/dist-es/tree/treeModel.js.map +1 -0
- package/dist-es/tree/useTree.js +49 -43
- package/dist-es/tree/useTree.js.map +1 -1
- package/dist-types/index.d.ts +1 -2
- package/dist-types/mega-menu/MegaMenu.d.ts +27 -0
- package/dist-types/mega-menu/MegaMenuContent.d.ts +8 -0
- package/dist-types/mega-menu/MegaMenuContext.d.ts +29 -0
- package/dist-types/mega-menu/MegaMenuGroup.d.ts +8 -0
- package/dist-types/mega-menu/MegaMenuHeader.d.ts +8 -0
- package/dist-types/mega-menu/MegaMenuItem.d.ts +12 -0
- package/dist-types/mega-menu/MegaMenuItemContent.d.ts +8 -0
- package/dist-types/mega-menu/MegaMenuPanel.d.ts +8 -0
- package/dist-types/mega-menu/MegaMenuSection.d.ts +8 -0
- package/dist-types/mega-menu/MegaMenuTrigger.d.ts +8 -0
- package/dist-types/mega-menu/index.d.ts +9 -0
- package/dist-types/mega-menu/useMegaMenu.d.ts +6 -0
- package/dist-types/mega-menu/useMegaMenuKeyboard.d.ts +30 -0
- package/dist-types/side-panel/SidePanelCloseButton.d.ts +2 -0
- package/dist-types/side-panel/SidePanelTrigger.d.ts +1 -2
- package/dist-types/side-panel/index.d.ts +1 -0
- package/dist-types/side-panel/internal/SidePanelContext.d.ts +8 -0
- package/dist-types/side-panel/internal/index.d.ts +2 -0
- package/dist-types/side-panel/internal/useIsScrollable.d.ts +2 -0
- package/dist-types/side-panel/internal/useSidePanelTabOrder.d.ts +7 -0
- package/dist-types/side-panel/useSidePanel.d.ts +11 -4
- package/dist-types/tree/TreeContext.d.ts +7 -1
- package/dist-types/tree/treeModel.d.ts +24 -0
- package/dist-types/tree/useTree.d.ts +3 -14
- package/package.json +2 -4
- package/dist-cjs/rating/Rating.css.js +0 -6
- package/dist-cjs/rating/Rating.css.js.map +0 -1
- package/dist-cjs/rating/Rating.js +0 -132
- package/dist-cjs/rating/Rating.js.map +0 -1
- package/dist-cjs/rating/RatingItem.css.js +0 -6
- package/dist-cjs/rating/RatingItem.css.js.map +0 -1
- package/dist-cjs/rating/RatingItem.js +0 -70
- package/dist-cjs/rating/RatingItem.js.map +0 -1
- package/dist-cjs/tabs-next/TabBar.css.js +0 -6
- package/dist-cjs/tabs-next/TabBar.css.js.map +0 -1
- package/dist-cjs/tabs-next/TabBar.js +0 -41
- package/dist-cjs/tabs-next/TabBar.js.map +0 -1
- package/dist-cjs/tabs-next/TabListLayoutContext.js +0 -13
- package/dist-cjs/tabs-next/TabListLayoutContext.js.map +0 -1
- package/dist-cjs/tabs-next/TabListNext.css.js +0 -6
- package/dist-cjs/tabs-next/TabListNext.css.js.map +0 -1
- package/dist-cjs/tabs-next/TabListNext.js +0 -271
- package/dist-cjs/tabs-next/TabListNext.js.map +0 -1
- package/dist-cjs/tabs-next/TabNext.css.js +0 -6
- package/dist-cjs/tabs-next/TabNext.css.js.map +0 -1
- package/dist-cjs/tabs-next/TabNext.js +0 -213
- package/dist-cjs/tabs-next/TabNext.js.map +0 -1
- package/dist-cjs/tabs-next/TabNextAction.js +0 -58
- package/dist-cjs/tabs-next/TabNextAction.js.map +0 -1
- package/dist-cjs/tabs-next/TabNextContext.js +0 -23
- package/dist-cjs/tabs-next/TabNextContext.js.map +0 -1
- package/dist-cjs/tabs-next/TabNextPanel.css.js +0 -6
- package/dist-cjs/tabs-next/TabNextPanel.css.js.map +0 -1
- package/dist-cjs/tabs-next/TabNextPanel.js +0 -92
- package/dist-cjs/tabs-next/TabNextPanel.js.map +0 -1
- package/dist-cjs/tabs-next/TabNextTrigger.css.js +0 -6
- package/dist-cjs/tabs-next/TabNextTrigger.css.js.map +0 -1
- package/dist-cjs/tabs-next/TabNextTrigger.js +0 -180
- package/dist-cjs/tabs-next/TabNextTrigger.js.map +0 -1
- package/dist-cjs/tabs-next/TabOverflowList.css.js +0 -6
- package/dist-cjs/tabs-next/TabOverflowList.css.js.map +0 -1
- package/dist-cjs/tabs-next/TabOverflowList.js +0 -237
- package/dist-cjs/tabs-next/TabOverflowList.js.map +0 -1
- package/dist-cjs/tabs-next/TabSlot.js +0 -30
- package/dist-cjs/tabs-next/TabSlot.js.map +0 -1
- package/dist-cjs/tabs-next/TabSlotRegistryContext.js +0 -16
- package/dist-cjs/tabs-next/TabSlotRegistryContext.js.map +0 -1
- package/dist-cjs/tabs-next/TabsNext.css.js +0 -6
- package/dist-cjs/tabs-next/TabsNext.css.js.map +0 -1
- package/dist-cjs/tabs-next/TabsNext.js +0 -195
- package/dist-cjs/tabs-next/TabsNext.js.map +0 -1
- package/dist-cjs/tabs-next/TabsNextContext.js +0 -47
- package/dist-cjs/tabs-next/TabsNextContext.js.map +0 -1
- package/dist-cjs/tabs-next/domUtils.js +0 -13
- package/dist-cjs/tabs-next/domUtils.js.map +0 -1
- package/dist-cjs/tabs-next/hooks/overflowMath.js +0 -86
- package/dist-cjs/tabs-next/hooks/overflowMath.js.map +0 -1
- package/dist-cjs/tabs-next/hooks/useCollection.js +0 -197
- package/dist-cjs/tabs-next/hooks/useCollection.js.map +0 -1
- package/dist-cjs/tabs-next/hooks/useFocusWithRetry.js +0 -64
- package/dist-cjs/tabs-next/hooks/useFocusWithRetry.js.map +0 -1
- package/dist-cjs/tabs-next/hooks/useOverflow.js +0 -266
- package/dist-cjs/tabs-next/hooks/useOverflow.js.map +0 -1
- package/dist-cjs/tabs-next/hooks/useOverflowLayoutState.js +0 -99
- package/dist-cjs/tabs-next/hooks/useOverflowLayoutState.js.map +0 -1
- package/dist-cjs/tabs-next/hooks/useOverflowSelectionState.js +0 -60
- package/dist-cjs/tabs-next/hooks/useOverflowSelectionState.js.map +0 -1
- package/dist-cjs/tabs-next/hooks/useRenderedTabWidth.js +0 -92
- package/dist-cjs/tabs-next/hooks/useRenderedTabWidth.js.map +0 -1
- package/dist-cjs/tabs-next/hooks/useRenderedTabsRegistry.js +0 -200
- package/dist-cjs/tabs-next/hooks/useRenderedTabsRegistry.js.map +0 -1
- package/dist-cjs/tabs-next/hooks/useTabListRecovery.js +0 -76
- package/dist-cjs/tabs-next/hooks/useTabListRecovery.js.map +0 -1
- package/dist-cjs/tabs-next/hooks/useTabRemovalHandler.js +0 -165
- package/dist-cjs/tabs-next/hooks/useTabRemovalHandler.js.map +0 -1
- package/dist-cjs/tabs-next/hooks/useTabSelectionFocus.js +0 -80
- package/dist-cjs/tabs-next/hooks/useTabSelectionFocus.js.map +0 -1
- package/dist-cjs/tabs-next/widthMeasurement.js +0 -42
- package/dist-cjs/tabs-next/widthMeasurement.js.map +0 -1
- package/dist-es/rating/Rating.css.js +0 -4
- package/dist-es/rating/Rating.css.js.map +0 -1
- package/dist-es/rating/Rating.js +0 -130
- package/dist-es/rating/Rating.js.map +0 -1
- package/dist-es/rating/RatingItem.css.js +0 -4
- package/dist-es/rating/RatingItem.css.js.map +0 -1
- package/dist-es/rating/RatingItem.js +0 -68
- package/dist-es/rating/RatingItem.js.map +0 -1
- package/dist-es/tabs-next/TabBar.css.js +0 -4
- package/dist-es/tabs-next/TabBar.css.js.map +0 -1
- package/dist-es/tabs-next/TabBar.js +0 -39
- package/dist-es/tabs-next/TabBar.js.map +0 -1
- package/dist-es/tabs-next/TabListLayoutContext.js +0 -10
- package/dist-es/tabs-next/TabListLayoutContext.js.map +0 -1
- package/dist-es/tabs-next/TabListNext.css.js +0 -4
- package/dist-es/tabs-next/TabListNext.css.js.map +0 -1
- package/dist-es/tabs-next/TabListNext.js +0 -269
- package/dist-es/tabs-next/TabListNext.js.map +0 -1
- package/dist-es/tabs-next/TabNext.css.js +0 -4
- package/dist-es/tabs-next/TabNext.css.js.map +0 -1
- package/dist-es/tabs-next/TabNext.js +0 -211
- package/dist-es/tabs-next/TabNext.js.map +0 -1
- package/dist-es/tabs-next/TabNextAction.js +0 -56
- package/dist-es/tabs-next/TabNextAction.js.map +0 -1
- package/dist-es/tabs-next/TabNextContext.js +0 -20
- package/dist-es/tabs-next/TabNextContext.js.map +0 -1
- package/dist-es/tabs-next/TabNextPanel.css.js +0 -4
- package/dist-es/tabs-next/TabNextPanel.css.js.map +0 -1
- package/dist-es/tabs-next/TabNextPanel.js +0 -90
- package/dist-es/tabs-next/TabNextPanel.js.map +0 -1
- package/dist-es/tabs-next/TabNextTrigger.css.js +0 -4
- package/dist-es/tabs-next/TabNextTrigger.css.js.map +0 -1
- package/dist-es/tabs-next/TabNextTrigger.js +0 -178
- package/dist-es/tabs-next/TabNextTrigger.js.map +0 -1
- package/dist-es/tabs-next/TabOverflowList.css.js +0 -4
- package/dist-es/tabs-next/TabOverflowList.css.js.map +0 -1
- package/dist-es/tabs-next/TabOverflowList.js +0 -235
- package/dist-es/tabs-next/TabOverflowList.js.map +0 -1
- package/dist-es/tabs-next/TabSlot.js +0 -28
- package/dist-es/tabs-next/TabSlot.js.map +0 -1
- package/dist-es/tabs-next/TabSlotRegistryContext.js +0 -13
- package/dist-es/tabs-next/TabSlotRegistryContext.js.map +0 -1
- package/dist-es/tabs-next/TabsNext.css.js +0 -4
- package/dist-es/tabs-next/TabsNext.css.js.map +0 -1
- package/dist-es/tabs-next/TabsNext.js +0 -193
- package/dist-es/tabs-next/TabsNext.js.map +0 -1
- package/dist-es/tabs-next/TabsNextContext.js +0 -44
- package/dist-es/tabs-next/TabsNextContext.js.map +0 -1
- package/dist-es/tabs-next/domUtils.js +0 -11
- package/dist-es/tabs-next/domUtils.js.map +0 -1
- package/dist-es/tabs-next/hooks/overflowMath.js +0 -82
- package/dist-es/tabs-next/hooks/overflowMath.js.map +0 -1
- package/dist-es/tabs-next/hooks/useCollection.js +0 -195
- package/dist-es/tabs-next/hooks/useCollection.js.map +0 -1
- package/dist-es/tabs-next/hooks/useFocusWithRetry.js +0 -62
- package/dist-es/tabs-next/hooks/useFocusWithRetry.js.map +0 -1
- package/dist-es/tabs-next/hooks/useOverflow.js +0 -264
- package/dist-es/tabs-next/hooks/useOverflow.js.map +0 -1
- package/dist-es/tabs-next/hooks/useOverflowLayoutState.js +0 -97
- package/dist-es/tabs-next/hooks/useOverflowLayoutState.js.map +0 -1
- package/dist-es/tabs-next/hooks/useOverflowSelectionState.js +0 -58
- package/dist-es/tabs-next/hooks/useOverflowSelectionState.js.map +0 -1
- package/dist-es/tabs-next/hooks/useRenderedTabWidth.js +0 -90
- package/dist-es/tabs-next/hooks/useRenderedTabWidth.js.map +0 -1
- package/dist-es/tabs-next/hooks/useRenderedTabsRegistry.js +0 -198
- package/dist-es/tabs-next/hooks/useRenderedTabsRegistry.js.map +0 -1
- package/dist-es/tabs-next/hooks/useTabListRecovery.js +0 -74
- package/dist-es/tabs-next/hooks/useTabListRecovery.js.map +0 -1
- package/dist-es/tabs-next/hooks/useTabRemovalHandler.js +0 -163
- package/dist-es/tabs-next/hooks/useTabRemovalHandler.js.map +0 -1
- package/dist-es/tabs-next/hooks/useTabSelectionFocus.js +0 -78
- package/dist-es/tabs-next/hooks/useTabSelectionFocus.js.map +0 -1
- package/dist-es/tabs-next/widthMeasurement.js +0 -36
- package/dist-es/tabs-next/widthMeasurement.js.map +0 -1
- package/dist-types/rating/Rating.d.ts +0 -48
- package/dist-types/rating/RatingItem.d.ts +0 -47
- package/dist-types/rating/index.d.ts +0 -1
- package/dist-types/tabs-next/TabBar.d.ts +0 -12
- package/dist-types/tabs-next/TabListLayoutContext.d.ts +0 -9
- package/dist-types/tabs-next/TabListNext.d.ts +0 -12
- package/dist-types/tabs-next/TabNext.d.ts +0 -12
- package/dist-types/tabs-next/TabNextAction.d.ts +0 -4
- package/dist-types/tabs-next/TabNextContext.d.ts +0 -12
- package/dist-types/tabs-next/TabNextPanel.d.ts +0 -9
- package/dist-types/tabs-next/TabNextTrigger.d.ts +0 -4
- package/dist-types/tabs-next/TabOverflowList.d.ts +0 -10
- package/dist-types/tabs-next/TabSlot.d.ts +0 -6
- package/dist-types/tabs-next/TabSlotRegistryContext.d.ts +0 -5
- package/dist-types/tabs-next/TabsNext.d.ts +0 -18
- package/dist-types/tabs-next/TabsNextContext.d.ts +0 -43
- package/dist-types/tabs-next/domUtils.d.ts +0 -1
- package/dist-types/tabs-next/hooks/overflowMath.d.ts +0 -18
- package/dist-types/tabs-next/hooks/useCollection.d.ts +0 -30
- package/dist-types/tabs-next/hooks/useFocusWithRetry.d.ts +0 -9
- package/dist-types/tabs-next/hooks/useOverflow.d.ts +0 -11
- package/dist-types/tabs-next/hooks/useOverflowLayoutState.d.ts +0 -13
- package/dist-types/tabs-next/hooks/useOverflowSelectionState.d.ts +0 -13
- package/dist-types/tabs-next/hooks/useRenderedTabWidth.d.ts +0 -12
- package/dist-types/tabs-next/hooks/useRenderedTabsRegistry.d.ts +0 -12
- package/dist-types/tabs-next/hooks/useTabListRecovery.d.ts +0 -12
- package/dist-types/tabs-next/hooks/useTabRemovalHandler.d.ts +0 -32
- package/dist-types/tabs-next/hooks/useTabSelectionFocus.d.ts +0 -15
- package/dist-types/tabs-next/index.d.ts +0 -7
- package/dist-types/tabs-next/widthMeasurement.d.ts +0 -5
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var core = require('@salt-ds/core');
|
|
4
|
-
var domAccessibilityApi = require('dom-accessibility-api');
|
|
5
|
-
var react = require('react');
|
|
6
|
-
|
|
7
|
-
function hasLostDocumentFocus(doc) {
|
|
8
|
-
const activeElement = doc.activeElement;
|
|
9
|
-
return !activeElement || activeElement === doc.body || activeElement === doc.documentElement || !activeElement.isConnected;
|
|
10
|
-
}
|
|
11
|
-
function getTabAccessibleName(element) {
|
|
12
|
-
return domAccessibilityApi.computeAccessibleName(element).trim();
|
|
13
|
-
}
|
|
14
|
-
function useTabSelectionFocus({
|
|
15
|
-
announce,
|
|
16
|
-
focusElementWithRetry,
|
|
17
|
-
getRenderedTab,
|
|
18
|
-
getSelectedTabElement,
|
|
19
|
-
menuOpen,
|
|
20
|
-
resolvedOverflowActiveValue,
|
|
21
|
-
selected,
|
|
22
|
-
selectionFromOverflowValueRef,
|
|
23
|
-
targetWindow
|
|
24
|
-
}) {
|
|
25
|
-
const previousSelected = core.usePrevious(selected, [selected]);
|
|
26
|
-
const focusSelectedTab = react.useCallback(() => {
|
|
27
|
-
focusElementWithRetry(getSelectedTabElement);
|
|
28
|
-
}, [focusElementWithRetry, getSelectedTabElement]);
|
|
29
|
-
core.useIsomorphicLayoutEffect(() => {
|
|
30
|
-
if (!menuOpen || !resolvedOverflowActiveValue) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
focusElementWithRetry(
|
|
34
|
-
() => {
|
|
35
|
-
var _a;
|
|
36
|
-
return (_a = getRenderedTab(resolvedOverflowActiveValue)) == null ? void 0 : _a.trigger;
|
|
37
|
-
}
|
|
38
|
-
);
|
|
39
|
-
}, [
|
|
40
|
-
focusElementWithRetry,
|
|
41
|
-
getRenderedTab,
|
|
42
|
-
menuOpen,
|
|
43
|
-
resolvedOverflowActiveValue
|
|
44
|
-
]);
|
|
45
|
-
core.useIsomorphicLayoutEffect(() => {
|
|
46
|
-
const doc = targetWindow == null ? void 0 : targetWindow.document;
|
|
47
|
-
if (!doc || selected === void 0 || previousSelected === void 0 || selected === previousSelected) {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
if (!hasLostDocumentFocus(doc)) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
focusSelectedTab();
|
|
54
|
-
}, [focusSelectedTab, previousSelected, selected, targetWindow]);
|
|
55
|
-
core.useIsomorphicLayoutEffect(() => {
|
|
56
|
-
const selectedFromOverflow = selectionFromOverflowValueRef.current;
|
|
57
|
-
if (selectedFromOverflow == null || selected === void 0 || selected === previousSelected) {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
if (selected !== selectedFromOverflow) {
|
|
61
|
-
selectionFromOverflowValueRef.current = null;
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
focusSelectedTab();
|
|
65
|
-
const selectedTab = getSelectedTabElement();
|
|
66
|
-
const selectedTabName = selectedTab ? getTabAccessibleName(selectedTab) || selected : selected;
|
|
67
|
-
announce(`${selectedTabName} moved to main tab list`, 100);
|
|
68
|
-
selectionFromOverflowValueRef.current = null;
|
|
69
|
-
}, [
|
|
70
|
-
announce,
|
|
71
|
-
getSelectedTabElement,
|
|
72
|
-
previousSelected,
|
|
73
|
-
focusSelectedTab,
|
|
74
|
-
selected,
|
|
75
|
-
selectionFromOverflowValueRef
|
|
76
|
-
]);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
exports.useTabSelectionFocus = useTabSelectionFocus;
|
|
80
|
-
//# sourceMappingURL=useTabSelectionFocus.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTabSelectionFocus.js","sources":["../src/tabs-next/hooks/useTabSelectionFocus.ts"],"sourcesContent":["import { useIsomorphicLayoutEffect, usePrevious } from \"@salt-ds/core\";\nimport { computeAccessibleName } from \"dom-accessibility-api\";\nimport type { MutableRefObject } from \"react\";\nimport { useCallback } from \"react\";\nimport type { TabsNextContextValue } from \"../TabsNextContext\";\n\nfunction hasLostDocumentFocus(doc: Document) {\n const activeElement = doc.activeElement;\n return (\n !activeElement ||\n activeElement === doc.body ||\n activeElement === doc.documentElement ||\n !activeElement.isConnected\n );\n}\n\nfunction getTabAccessibleName(element: HTMLElement) {\n return computeAccessibleName(element).trim();\n}\n\ninterface UseTabSelectionFocusArgs {\n announce: (message: string, timeout?: number) => void;\n focusElementWithRetry: (\n getElement: () => HTMLElement | null | undefined,\n ) => void;\n getRenderedTab: TabsNextContextValue[\"getRenderedTab\"];\n getSelectedTabElement: () => HTMLElement | null | undefined;\n menuOpen: boolean;\n resolvedOverflowActiveValue: string | null;\n selected?: string;\n selectionFromOverflowValueRef: MutableRefObject<string | null>;\n targetWindow: Window | null | undefined;\n}\n\nexport function useTabSelectionFocus({\n announce,\n focusElementWithRetry,\n getRenderedTab,\n getSelectedTabElement,\n menuOpen,\n resolvedOverflowActiveValue,\n selected,\n selectionFromOverflowValueRef,\n targetWindow,\n}: UseTabSelectionFocusArgs) {\n const previousSelected = usePrevious(selected, [selected]);\n\n const focusSelectedTab = useCallback(() => {\n focusElementWithRetry(getSelectedTabElement);\n }, [focusElementWithRetry, getSelectedTabElement]);\n\n useIsomorphicLayoutEffect(() => {\n if (!menuOpen || !resolvedOverflowActiveValue) {\n return;\n }\n\n focusElementWithRetry(\n () => getRenderedTab(resolvedOverflowActiveValue)?.trigger,\n );\n }, [\n focusElementWithRetry,\n getRenderedTab,\n menuOpen,\n resolvedOverflowActiveValue,\n ]);\n\n useIsomorphicLayoutEffect(() => {\n const doc = targetWindow?.document;\n if (\n !doc ||\n selected === undefined ||\n previousSelected === undefined ||\n selected === previousSelected\n ) {\n return;\n }\n\n if (!hasLostDocumentFocus(doc)) {\n return;\n }\n\n focusSelectedTab();\n }, [focusSelectedTab, previousSelected, selected, targetWindow]);\n\n useIsomorphicLayoutEffect(() => {\n const selectedFromOverflow = selectionFromOverflowValueRef.current;\n if (\n selectedFromOverflow == null ||\n selected === undefined ||\n selected === previousSelected\n ) {\n return;\n }\n\n if (selected !== selectedFromOverflow) {\n selectionFromOverflowValueRef.current = null;\n return;\n }\n\n focusSelectedTab();\n\n const selectedTab = getSelectedTabElement();\n const selectedTabName = selectedTab\n ? getTabAccessibleName(selectedTab) || selected\n : selected;\n\n announce(`${selectedTabName} moved to main tab list`, 100);\n selectionFromOverflowValueRef.current = null;\n }, [\n announce,\n getSelectedTabElement,\n previousSelected,\n focusSelectedTab,\n selected,\n selectionFromOverflowValueRef,\n ]);\n}\n"],"names":["computeAccessibleName","usePrevious","useCallback","useIsomorphicLayoutEffect"],"mappings":";;;;;;AAMA,SAAS,qBAAqB,GAAA,EAAe;AAC3C,EAAA,MAAM,gBAAgB,GAAA,CAAI,aAAA;AAC1B,EAAA,OACE,CAAC,iBACD,aAAA,KAAkB,GAAA,CAAI,QACtB,aAAA,KAAkB,GAAA,CAAI,eAAA,IACtB,CAAC,aAAA,CAAc,WAAA;AAEnB;AAEA,SAAS,qBAAqB,OAAA,EAAsB;AAClD,EAAA,OAAOA,yCAAA,CAAsB,OAAO,CAAA,CAAE,IAAA,EAAK;AAC7C;AAgBO,SAAS,oBAAA,CAAqB;AAAA,EACnC,QAAA;AAAA,EACA,qBAAA;AAAA,EACA,cAAA;AAAA,EACA,qBAAA;AAAA,EACA,QAAA;AAAA,EACA,2BAAA;AAAA,EACA,QAAA;AAAA,EACA,6BAAA;AAAA,EACA;AACF,CAAA,EAA6B;AAC3B,EAAA,MAAM,gBAAA,GAAmBC,gBAAA,CAAY,QAAA,EAAU,CAAC,QAAQ,CAAC,CAAA;AAEzD,EAAA,MAAM,gBAAA,GAAmBC,kBAAY,MAAM;AACzC,IAAA,qBAAA,CAAsB,qBAAqB,CAAA;AAAA,EAC7C,CAAA,EAAG,CAAC,qBAAA,EAAuB,qBAAqB,CAAC,CAAA;AAEjD,EAAAC,8BAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,2BAAA,EAA6B;AAC7C,MAAA;AAAA,IACF;AAEA,IAAA,qBAAA;AAAA,MACE,MAAG;AAzDT,QAAA,IAAA,EAAA;AAyDY,QAAA,OAAA,CAAA,EAAA,GAAA,cAAA,CAAe,2BAA2B,MAA1C,IAAA,GAAA,MAAA,GAAA,EAAA,CAA6C,OAAA;AAAA,MAAA;AAAA,KACrD;AAAA,EACF,CAAA,EAAG;AAAA,IACD,qBAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAAA,8BAAA,CAA0B,MAAM;AAC9B,IAAA,MAAM,MAAM,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,QAAA;AAC1B,IAAA,IACE,CAAC,GAAA,IACD,QAAA,KAAa,UACb,gBAAA,KAAqB,MAAA,IACrB,aAAa,gBAAA,EACb;AACA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,oBAAA,CAAqB,GAAG,CAAA,EAAG;AAC9B,MAAA;AAAA,IACF;AAEA,IAAA,gBAAA,EAAiB;AAAA,EACnB,GAAG,CAAC,gBAAA,EAAkB,gBAAA,EAAkB,QAAA,EAAU,YAAY,CAAC,CAAA;AAE/D,EAAAA,8BAAA,CAA0B,MAAM;AAC9B,IAAA,MAAM,uBAAuB,6BAAA,CAA8B,OAAA;AAC3D,IAAA,IACE,oBAAA,IAAwB,IAAA,IACxB,QAAA,KAAa,MAAA,IACb,aAAa,gBAAA,EACb;AACA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,aAAa,oBAAA,EAAsB;AACrC,MAAA,6BAAA,CAA8B,OAAA,GAAU,IAAA;AACxC,MAAA;AAAA,IACF;AAEA,IAAA,gBAAA,EAAiB;AAEjB,IAAA,MAAM,cAAc,qBAAA,EAAsB;AAC1C,IAAA,MAAM,eAAA,GAAkB,WAAA,GACpB,oBAAA,CAAqB,WAAW,KAAK,QAAA,GACrC,QAAA;AAEJ,IAAA,QAAA,CAAS,CAAA,EAAG,eAAe,CAAA,uBAAA,CAAA,EAA2B,GAAG,CAAA;AACzD,IAAA,6BAAA,CAA8B,OAAA,GAAU,IAAA;AAAA,EAC1C,CAAA,EAAG;AAAA,IACD,QAAA;AAAA,IACA,qBAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACD,CAAA;AACH;;;;"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const WIDTH_EPSILON = 0.5;
|
|
4
|
-
function getMeasuredWidth(element) {
|
|
5
|
-
if (!element) {
|
|
6
|
-
return 0;
|
|
7
|
-
}
|
|
8
|
-
const width = element.getBoundingClientRect().width;
|
|
9
|
-
return width || element.clientWidth || 0;
|
|
10
|
-
}
|
|
11
|
-
function getIntrinsicMeasuredWidth(element) {
|
|
12
|
-
if (!element) {
|
|
13
|
-
return 0;
|
|
14
|
-
}
|
|
15
|
-
const borderWidth = element.offsetWidth - element.clientWidth;
|
|
16
|
-
return Math.max(getMeasuredWidth(element), element.scrollWidth + borderWidth);
|
|
17
|
-
}
|
|
18
|
-
function getGapValue(styles) {
|
|
19
|
-
return Number.parseFloat(styles.columnGap || styles.gap || "0") || 0;
|
|
20
|
-
}
|
|
21
|
-
function seedWidthMap(elements) {
|
|
22
|
-
const widths = /* @__PURE__ */ new Map();
|
|
23
|
-
for (const element of elements) {
|
|
24
|
-
widths.set(element, getMeasuredWidth(element));
|
|
25
|
-
}
|
|
26
|
-
return widths;
|
|
27
|
-
}
|
|
28
|
-
function updateWidthMap(widths, element, nextWidth, epsilon = WIDTH_EPSILON) {
|
|
29
|
-
const previousWidth = widths.get(element);
|
|
30
|
-
widths.set(element, nextWidth);
|
|
31
|
-
if (previousWidth === void 0) {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
return Math.abs(previousWidth - nextWidth) > epsilon;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
exports.getGapValue = getGapValue;
|
|
38
|
-
exports.getIntrinsicMeasuredWidth = getIntrinsicMeasuredWidth;
|
|
39
|
-
exports.getMeasuredWidth = getMeasuredWidth;
|
|
40
|
-
exports.seedWidthMap = seedWidthMap;
|
|
41
|
-
exports.updateWidthMap = updateWidthMap;
|
|
42
|
-
//# sourceMappingURL=widthMeasurement.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widthMeasurement.js","sources":["../src/tabs-next/widthMeasurement.ts"],"sourcesContent":["const WIDTH_EPSILON = 0.5;\n\nexport function getMeasuredWidth(element: HTMLElement | null | undefined) {\n if (!element) {\n return 0;\n }\n\n const width = element.getBoundingClientRect().width;\n return width || element.clientWidth || 0;\n}\n\nexport function getIntrinsicMeasuredWidth(\n element: HTMLElement | null | undefined,\n) {\n if (!element) {\n return 0;\n }\n\n const borderWidth = element.offsetWidth - element.clientWidth;\n return Math.max(getMeasuredWidth(element), element.scrollWidth + borderWidth);\n}\n\nexport function getGapValue(styles: CSSStyleDeclaration) {\n return Number.parseFloat(styles.columnGap || styles.gap || \"0\") || 0;\n}\n\nexport function seedWidthMap(elements: HTMLElement[]) {\n const widths = new Map<HTMLElement, number>();\n for (const element of elements) {\n widths.set(element, getMeasuredWidth(element));\n }\n return widths;\n}\n\nexport function updateWidthMap(\n widths: Map<HTMLElement, number>,\n element: HTMLElement,\n nextWidth: number,\n epsilon = WIDTH_EPSILON,\n) {\n const previousWidth = widths.get(element);\n widths.set(element, nextWidth);\n\n if (previousWidth === undefined) {\n return false;\n }\n\n return Math.abs(previousWidth - nextWidth) > epsilon;\n}\n"],"names":[],"mappings":";;AAAA,MAAM,aAAA,GAAgB,GAAA;AAEf,SAAS,iBAAiB,OAAA,EAAyC;AACxE,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,CAAA;AAAA,EACT;AAEA,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,qBAAA,EAAsB,CAAE,KAAA;AAC9C,EAAA,OAAO,KAAA,IAAS,QAAQ,WAAA,IAAe,CAAA;AACzC;AAEO,SAAS,0BACd,OAAA,EACA;AACA,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,CAAA;AAAA,EACT;AAEA,EAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,WAAA,GAAc,OAAA,CAAQ,WAAA;AAClD,EAAA,OAAO,KAAK,GAAA,CAAI,gBAAA,CAAiB,OAAO,CAAA,EAAG,OAAA,CAAQ,cAAc,WAAW,CAAA;AAC9E;AAEO,SAAS,YAAY,MAAA,EAA6B;AACvD,EAAA,OAAO,OAAO,UAAA,CAAW,MAAA,CAAO,aAAa,MAAA,CAAO,GAAA,IAAO,GAAG,CAAA,IAAK,CAAA;AACrE;AAEO,SAAS,aAAa,QAAA,EAAyB;AACpD,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAyB;AAC5C,EAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,IAAA,MAAA,CAAO,GAAA,CAAI,OAAA,EAAS,gBAAA,CAAiB,OAAO,CAAC,CAAA;AAAA,EAC/C;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,cAAA,CACd,MAAA,EACA,OAAA,EACA,SAAA,EACA,UAAU,aAAA,EACV;AACA,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,GAAA,CAAI,OAAO,CAAA;AACxC,EAAA,MAAA,CAAO,GAAA,CAAI,SAAS,SAAS,CAAA;AAE7B,EAAA,IAAI,kBAAkB,MAAA,EAAW;AAC/B,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,aAAA,GAAgB,SAAS,CAAA,GAAI,OAAA;AAC/C;;;;;;;;"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
var css_248z = ".saltRating {\n display: inline-flex;\n box-sizing: border-box;\n}\n\n.saltFormField .saltRating-container {\n height: var(--salt-size-base);\n padding-top: calc(var(--salt-spacing-100) + var(--salt-spacing-fixed-100));\n}\n\n.saltFormField .saltRating-label {\n min-height: var(--salt-size-base);\n padding-top: var(--salt-spacing-100);\n}\n\n.saltRating-labelBottom {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--salt-spacing-75);\n}\n\n.saltRating-labelRight {\n flex-direction: row;\n gap: var(--salt-spacing-150);\n}\n\n.saltRating-container {\n display: flex;\n flex-direction: row;\n gap: var(--salt-spacing-150);\n flex-wrap: nowrap;\n justify-content: flex-start;\n padding-top: var(--salt-spacing-fixed-100);\n padding-bottom: var(--salt-spacing-fixed-100);\n box-sizing: border-box;\n}\n\n.saltRating-label {\n color: var(--salt-content-primary-foreground);\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n box-sizing: border-box;\n}\n";
|
|
2
|
-
|
|
3
|
-
export { css_248z as default };
|
|
4
|
-
//# sourceMappingURL=Rating.css.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Rating.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
package/dist-es/rating/Rating.js
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { makePrefixer, useFormFieldProps, useControlled, useId, capitalize } from '@salt-ds/core';
|
|
3
|
-
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
4
|
-
import { useWindow } from '@salt-ds/window';
|
|
5
|
-
import { clsx } from 'clsx';
|
|
6
|
-
import { forwardRef, useState } from 'react';
|
|
7
|
-
import css_248z from './Rating.css.js';
|
|
8
|
-
import { RatingItem } from './RatingItem.js';
|
|
9
|
-
|
|
10
|
-
const withBaseName = makePrefixer("saltRating");
|
|
11
|
-
const defaultGetLabel = (value) => `${value} Star${value > 1 ? "s" : ""}`;
|
|
12
|
-
const Rating = forwardRef(function Rating2({
|
|
13
|
-
value: valueProp,
|
|
14
|
-
defaultValue = 0,
|
|
15
|
-
name: nameProp,
|
|
16
|
-
onChange,
|
|
17
|
-
className,
|
|
18
|
-
readOnly: readOnlyProp,
|
|
19
|
-
disabled: disabledProp,
|
|
20
|
-
max = 5,
|
|
21
|
-
getLabel = defaultGetLabel,
|
|
22
|
-
getVisibleLabel,
|
|
23
|
-
labelPlacement = "right",
|
|
24
|
-
"aria-label": ariaLabel,
|
|
25
|
-
"aria-labelledby": ariaLabelledBy,
|
|
26
|
-
"aria-describedby": ariaDescribedBy,
|
|
27
|
-
...restProps
|
|
28
|
-
}, ref) {
|
|
29
|
-
const targetWindow = useWindow();
|
|
30
|
-
useComponentCssInjection({
|
|
31
|
-
testId: "salt-rating",
|
|
32
|
-
css: css_248z,
|
|
33
|
-
window: targetWindow
|
|
34
|
-
});
|
|
35
|
-
const {
|
|
36
|
-
disabled: formFieldDisabled,
|
|
37
|
-
readOnly: formFieldReadOnly,
|
|
38
|
-
a11yProps: {
|
|
39
|
-
"aria-describedby": formFieldDescribedBy,
|
|
40
|
-
"aria-labelledby": formFieldLabelledBy
|
|
41
|
-
} = {}
|
|
42
|
-
} = useFormFieldProps();
|
|
43
|
-
const disabled = formFieldDisabled || disabledProp;
|
|
44
|
-
const readOnly = formFieldReadOnly || readOnlyProp;
|
|
45
|
-
const [hoveredValue, setHoveredValue] = useState(0);
|
|
46
|
-
const [selected, setSelected] = useControlled({
|
|
47
|
-
controlled: valueProp,
|
|
48
|
-
default: defaultValue,
|
|
49
|
-
name: "Rating",
|
|
50
|
-
state: "value"
|
|
51
|
-
});
|
|
52
|
-
const name = useId(nameProp);
|
|
53
|
-
const handleMouseEnter = (event) => {
|
|
54
|
-
if (readOnly || disabled) return;
|
|
55
|
-
const itemValue = Number.parseInt(event.currentTarget.value, 10);
|
|
56
|
-
setHoveredValue(itemValue);
|
|
57
|
-
};
|
|
58
|
-
const handleChange = (event) => {
|
|
59
|
-
if (readOnly) {
|
|
60
|
-
event.preventDefault();
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
const itemValue = Number.parseInt(event.currentTarget.value, 10);
|
|
64
|
-
setSelected(itemValue);
|
|
65
|
-
onChange == null ? void 0 : onChange(event, itemValue);
|
|
66
|
-
};
|
|
67
|
-
return /* @__PURE__ */ jsxs(
|
|
68
|
-
"div",
|
|
69
|
-
{
|
|
70
|
-
ref,
|
|
71
|
-
className: clsx(
|
|
72
|
-
withBaseName(),
|
|
73
|
-
withBaseName(`label${capitalize(labelPlacement)}`),
|
|
74
|
-
className
|
|
75
|
-
),
|
|
76
|
-
...restProps,
|
|
77
|
-
children: [
|
|
78
|
-
/* @__PURE__ */ jsx(
|
|
79
|
-
"div",
|
|
80
|
-
{
|
|
81
|
-
role: "radiogroup",
|
|
82
|
-
className: withBaseName("container"),
|
|
83
|
-
"aria-readonly": readOnly || void 0,
|
|
84
|
-
"aria-label": ariaLabel,
|
|
85
|
-
"aria-labelledby": clsx(formFieldLabelledBy, ariaLabelledBy) || void 0,
|
|
86
|
-
"aria-describedby": clsx(formFieldDescribedBy, ariaDescribedBy) || void 0,
|
|
87
|
-
onMouseLeave: () => setHoveredValue(0),
|
|
88
|
-
children: Array.from({ length: max }, (_, index) => {
|
|
89
|
-
const itemValue = index + 1;
|
|
90
|
-
const isHovered = hoveredValue > 0 && itemValue <= hoveredValue;
|
|
91
|
-
const isSelected = hoveredValue === 0 && itemValue <= selected;
|
|
92
|
-
const isUnselecting = hoveredValue > 0 && itemValue > hoveredValue && itemValue <= selected;
|
|
93
|
-
return /* @__PURE__ */ jsx(
|
|
94
|
-
RatingItem,
|
|
95
|
-
{
|
|
96
|
-
currentRating: selected,
|
|
97
|
-
isHovered,
|
|
98
|
-
isSelected,
|
|
99
|
-
isUnselecting,
|
|
100
|
-
onMouseEnter: handleMouseEnter,
|
|
101
|
-
onChange: handleChange,
|
|
102
|
-
value: itemValue,
|
|
103
|
-
readOnly,
|
|
104
|
-
disabled,
|
|
105
|
-
name,
|
|
106
|
-
"aria-label": getLabel == null ? void 0 : getLabel(itemValue)
|
|
107
|
-
},
|
|
108
|
-
itemValue
|
|
109
|
-
);
|
|
110
|
-
})
|
|
111
|
-
}
|
|
112
|
-
),
|
|
113
|
-
getVisibleLabel && /* @__PURE__ */ jsx(
|
|
114
|
-
"div",
|
|
115
|
-
{
|
|
116
|
-
className: clsx(
|
|
117
|
-
withBaseName("label"),
|
|
118
|
-
withBaseName(`label-${labelPlacement}`)
|
|
119
|
-
),
|
|
120
|
-
"aria-hidden": true,
|
|
121
|
-
children: getVisibleLabel(hoveredValue || selected, max)
|
|
122
|
-
}
|
|
123
|
-
)
|
|
124
|
-
]
|
|
125
|
-
}
|
|
126
|
-
);
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
export { Rating };
|
|
130
|
-
//# sourceMappingURL=Rating.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Rating.js","sources":["../src/rating/Rating.tsx"],"sourcesContent":["import {\n capitalize,\n makePrefixer,\n useControlled,\n useFormFieldProps,\n useId,\n} from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ChangeEvent,\n type ComponentPropsWithoutRef,\n forwardRef,\n type MouseEvent,\n useState,\n} from \"react\";\nimport ratingCss from \"./Rating.css\";\nimport { RatingItem } from \"./RatingItem\";\n\nconst withBaseName = makePrefixer(\"saltRating\");\n\nexport interface RatingProps\n extends Omit<ComponentPropsWithoutRef<\"div\">, \"onChange\"> {\n /**\n * When provided, the component is controlled.\n */\n value?: number;\n /**\n * Default rating value for uncontrolled mode.\n * @default 0\n */\n defaultValue?: number;\n /**\n * Callback function for rating change.\n * The first parameter is the event, and the second is the selected rating value.\n */\n onChange?: (event: ChangeEvent<HTMLInputElement>, value: number) => void;\n /**\n * If true, the rating component will be in a read-only state.\n */\n readOnly?: boolean;\n /**\n * If true, the rating component will be in a disabled state.\n */\n disabled?: boolean;\n /**\n * Total number of icons displayed.\n * @default 5\n */\n max?: number;\n /**\n * Function used to provide a user-friendly name for the current value of the rating. Primarily used by screen readers.\n */\n getLabel?: (value: number) => string;\n /**\n * Function used to provide a visible label for the rating.\n */\n getVisibleLabel?: (value: number, max: number) => string;\n /**\n * Position of the label relative to the rating component.\n * @default \"right\"\n */\n labelPlacement?: \"right\" | \"bottom\";\n /**\n * The name to be set on each radio button within the group. If not set, then one will be generated for you.\n */\n name?: string;\n}\n\nconst defaultGetLabel = (value: number) =>\n `${value} Star${value > 1 ? \"s\" : \"\"}`;\n\nexport const Rating = forwardRef<HTMLDivElement, RatingProps>(function Rating(\n {\n value: valueProp,\n defaultValue = 0,\n name: nameProp,\n onChange,\n className,\n readOnly: readOnlyProp,\n disabled: disabledProp,\n max = 5,\n getLabel = defaultGetLabel,\n getVisibleLabel,\n labelPlacement = \"right\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n ...restProps\n },\n ref,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-rating\",\n css: ratingCss,\n window: targetWindow,\n });\n const {\n disabled: formFieldDisabled,\n readOnly: formFieldReadOnly,\n a11yProps: {\n \"aria-describedby\": formFieldDescribedBy,\n \"aria-labelledby\": formFieldLabelledBy,\n } = {},\n } = useFormFieldProps();\n\n const disabled = formFieldDisabled || disabledProp;\n const readOnly = formFieldReadOnly || readOnlyProp;\n\n const [hoveredValue, setHoveredValue] = useState(0);\n const [selected, setSelected] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: \"Rating\",\n state: \"value\",\n });\n const name = useId(nameProp);\n\n const handleMouseEnter = (event: MouseEvent<HTMLInputElement>) => {\n if (readOnly || disabled) return;\n const itemValue = Number.parseInt(event.currentTarget.value, 10);\n setHoveredValue(itemValue);\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (readOnly) {\n event.preventDefault();\n return;\n }\n\n const itemValue = Number.parseInt(event.currentTarget.value, 10);\n setSelected(itemValue);\n onChange?.(event, itemValue);\n };\n\n return (\n <div\n ref={ref}\n className={clsx(\n withBaseName(),\n withBaseName(`label${capitalize(labelPlacement)}`),\n className,\n )}\n {...restProps}\n >\n <div\n role=\"radiogroup\"\n className={withBaseName(\"container\")}\n aria-readonly={readOnly || undefined}\n aria-label={ariaLabel}\n aria-labelledby={clsx(formFieldLabelledBy, ariaLabelledBy) || undefined}\n aria-describedby={\n clsx(formFieldDescribedBy, ariaDescribedBy) || undefined\n }\n onMouseLeave={() => setHoveredValue(0)}\n >\n {Array.from({ length: max }, (_, index) => {\n const itemValue = index + 1;\n const isHovered = hoveredValue > 0 && itemValue <= hoveredValue;\n const isSelected = hoveredValue === 0 && itemValue <= selected;\n const isUnselecting =\n hoveredValue > 0 &&\n itemValue > hoveredValue &&\n itemValue <= selected;\n return (\n <RatingItem\n key={itemValue}\n currentRating={selected}\n isHovered={isHovered}\n isSelected={isSelected}\n isUnselecting={isUnselecting}\n onMouseEnter={handleMouseEnter}\n onChange={handleChange}\n value={itemValue}\n readOnly={readOnly}\n disabled={disabled}\n name={name}\n aria-label={getLabel?.(itemValue)}\n />\n );\n })}\n </div>\n {getVisibleLabel && (\n <div\n className={clsx(\n withBaseName(\"label\"),\n withBaseName(`label-${labelPlacement}`),\n )}\n aria-hidden\n >\n {getVisibleLabel(hoveredValue || selected, max)}\n </div>\n )}\n </div>\n );\n});\n"],"names":["Rating","ratingCss"],"mappings":"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"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
var css_248z = ".saltRatingItem {\n height: var(--salt-size-icon);\n width: var(--salt-size-icon);\n display: flex;\n position: relative;\n align-items: center;\n justify-content: center;\n cursor: var(--salt-cursor-hover);\n}\n\n.saltRatingItem-disabled,\n.saltRatingItem-readOnly {\n cursor: default;\n}\n\n.saltRatingItem-input {\n position: absolute;\n opacity: 0;\n width: 100%;\n height: 100%;\n margin: 0;\n cursor: inherit;\n z-index: 1;\n}\n\n.saltRatingItem-input::before {\n content: \"\";\n position: absolute;\n width: 100%;\n height: 100%;\n padding: var(--salt-spacing-fixed-600);\n transform: translate(-50%, -50%);\n top: 50%;\n left: 50%;\n box-sizing: content-box;\n}\n\n.saltRatingItem-icon {\n pointer-events: none;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--salt-sentiment-neutral-dataviz);\n}\n\n.saltRatingItem-icon .saltIcon {\n --saltIcon-size: var(--salt-size-icon);\n}\n\n.saltRatingItem-input:focus-visible ~ .saltRatingItem-icon::after {\n content: \"\";\n position: absolute;\n width: 100%;\n height: 100%;\n padding: var(--salt-spacing-fixed-600);\n transform: translate(-50%, -50%);\n top: 50%;\n left: 50%;\n box-sizing: content-box;\n\n border-radius: var(--salt-palette-corner-strongest);\n outline: var(--salt-focused-outline);\n outline-offset: calc(-1 * var(--salt-spacing-fixed-200));\n}\n\n.saltRatingItem-disabled {\n cursor: var(--salt-cursor-disabled);\n opacity: var(--salt-palette-opacity-disabled);\n}\n\n.saltRatingItem-disabled .saltRatingItem-input {\n cursor: var(--salt-cursor-disabled);\n}\n\n.saltRatingItem-selected .saltRatingItem-icon,\n.saltRatingItem-hovered .saltRatingItem-icon,\n.saltRatingItem-unselecting .saltRatingItem-icon {\n color: var(--salt-sentiment-accent-dataviz);\n}\n";
|
|
2
|
-
|
|
3
|
-
export { css_248z as default };
|
|
4
|
-
//# sourceMappingURL=RatingItem.css.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RatingItem.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { makePrefixer, useIcon } from '@salt-ds/core';
|
|
3
|
-
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
4
|
-
import { useWindow } from '@salt-ds/window';
|
|
5
|
-
import { clsx } from 'clsx';
|
|
6
|
-
import { forwardRef } from 'react';
|
|
7
|
-
import css_248z from './RatingItem.css.js';
|
|
8
|
-
|
|
9
|
-
const withBaseName = makePrefixer("saltRatingItem");
|
|
10
|
-
const RatingItem = forwardRef(
|
|
11
|
-
function RatingItem2(props, ref) {
|
|
12
|
-
const {
|
|
13
|
-
"aria-label": ariaLabel,
|
|
14
|
-
value,
|
|
15
|
-
currentRating,
|
|
16
|
-
isHovered,
|
|
17
|
-
isSelected,
|
|
18
|
-
isUnselecting,
|
|
19
|
-
onMouseEnter,
|
|
20
|
-
onChange,
|
|
21
|
-
readOnly = false,
|
|
22
|
-
disabled = false,
|
|
23
|
-
name
|
|
24
|
-
} = props;
|
|
25
|
-
const { RatingIcon, RatingSelectedIcon, RatingUnselectingIcon } = useIcon();
|
|
26
|
-
const targetWindow = useWindow();
|
|
27
|
-
useComponentCssInjection({
|
|
28
|
-
testId: "salt-rating-item",
|
|
29
|
-
css: css_248z,
|
|
30
|
-
window: targetWindow
|
|
31
|
-
});
|
|
32
|
-
const icon = isHovered || isSelected ? /* @__PURE__ */ jsx(RatingSelectedIcon, { "aria-hidden": true }) : isUnselecting ? /* @__PURE__ */ jsx(RatingUnselectingIcon, { "aria-hidden": true }) : /* @__PURE__ */ jsx(RatingIcon, { "aria-hidden": true });
|
|
33
|
-
return /* @__PURE__ */ jsxs(
|
|
34
|
-
"div",
|
|
35
|
-
{
|
|
36
|
-
className: clsx(withBaseName(), {
|
|
37
|
-
[withBaseName("hovered")]: isHovered,
|
|
38
|
-
[withBaseName("selected")]: isSelected,
|
|
39
|
-
[withBaseName("unselecting")]: isUnselecting,
|
|
40
|
-
[withBaseName("disabled")]: disabled,
|
|
41
|
-
[withBaseName("readOnly")]: readOnly
|
|
42
|
-
}),
|
|
43
|
-
children: [
|
|
44
|
-
/* @__PURE__ */ jsx(
|
|
45
|
-
"input",
|
|
46
|
-
{
|
|
47
|
-
ref,
|
|
48
|
-
type: "radio",
|
|
49
|
-
name,
|
|
50
|
-
value,
|
|
51
|
-
checked: currentRating === value,
|
|
52
|
-
onChange,
|
|
53
|
-
onMouseEnter,
|
|
54
|
-
disabled,
|
|
55
|
-
readOnly,
|
|
56
|
-
className: withBaseName("input"),
|
|
57
|
-
"aria-label": ariaLabel
|
|
58
|
-
}
|
|
59
|
-
),
|
|
60
|
-
/* @__PURE__ */ jsx("span", { className: withBaseName("icon"), "aria-hidden": true, children: icon })
|
|
61
|
-
]
|
|
62
|
-
}
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
);
|
|
66
|
-
|
|
67
|
-
export { RatingItem };
|
|
68
|
-
//# sourceMappingURL=RatingItem.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RatingItem.js","sources":["../src/rating/RatingItem.tsx"],"sourcesContent":["import { makePrefixer, useIcon } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ChangeEvent,\n type ComponentPropsWithoutRef,\n forwardRef,\n type MouseEvent,\n} from \"react\";\nimport ratingItemCss from \"./RatingItem.css\";\n\nconst withBaseName = makePrefixer(\"saltRatingItem\");\n\nexport interface RatingItemProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * specifies the value of the feedback item.\n */\n value: number;\n /**\n * To define if the current star is being hovered.\n */\n isHovered?: boolean;\n /**\n * To specify if the item is selected.\n */\n isSelected?: boolean;\n /**\n * defines the current selected rating.\n */\n currentRating?: number;\n /**\n * callback function when feedback item is hovered.\n */\n onMouseEnter: (event: MouseEvent<HTMLInputElement>) => void;\n /**\n * callback function when feedback item is clicked.\n */\n onChange: (event: ChangeEvent<HTMLInputElement>) => void;\n /**\n * If true, the rating item will be in a read-only state.\n */\n readOnly?: boolean;\n /**\n * If true, the rating item will be in a disabled state.\n */\n disabled?: boolean;\n /**\n * Indicates whether the current rating item is in an active state.\n * An active state typically means that the item is visually highlighted\n * or styled differently to indicate that it is part of the current selection\n * or interaction (e.g., hover or focus).\n */\n isUnselecting?: boolean;\n /**\n * Name of the radio group\n */\n name?: string;\n}\n\nexport const RatingItem = forwardRef<HTMLInputElement, RatingItemProps>(\n function RatingItem(props, ref) {\n const {\n \"aria-label\": ariaLabel,\n value,\n currentRating,\n isHovered,\n isSelected,\n isUnselecting,\n onMouseEnter,\n onChange,\n readOnly = false,\n disabled = false,\n name,\n } = props;\n\n const { RatingIcon, RatingSelectedIcon, RatingUnselectingIcon } = useIcon();\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-rating-item\",\n css: ratingItemCss,\n window: targetWindow,\n });\n\n const icon =\n isHovered || isSelected ? (\n <RatingSelectedIcon aria-hidden />\n ) : isUnselecting ? (\n <RatingUnselectingIcon aria-hidden />\n ) : (\n <RatingIcon aria-hidden />\n );\n\n return (\n <div\n className={clsx(withBaseName(), {\n [withBaseName(\"hovered\")]: isHovered,\n [withBaseName(\"selected\")]: isSelected,\n [withBaseName(\"unselecting\")]: isUnselecting,\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"readOnly\")]: readOnly,\n })}\n >\n <input\n ref={ref}\n type=\"radio\"\n name={name}\n value={value}\n checked={currentRating === value}\n onChange={onChange}\n onMouseEnter={onMouseEnter}\n disabled={disabled}\n readOnly={readOnly}\n className={withBaseName(\"input\")}\n aria-label={ariaLabel}\n />\n <span className={withBaseName(\"icon\")} aria-hidden>\n {icon}\n </span>\n </div>\n );\n },\n);\n"],"names":["RatingItem","ratingItemCss"],"mappings":";;;;;;;;AAYA,MAAM,YAAA,GAAe,aAAa,gBAAgB,CAAA;AAgD3C,MAAM,UAAA,GAAa,UAAA;AAAA,EACxB,SAASA,WAAAA,CAAW,KAAA,EAAO,GAAA,EAAK;AAC9B,IAAA,MAAM;AAAA,MACJ,YAAA,EAAc,SAAA;AAAA,MACd,KAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA,GAAW,KAAA;AAAA,MACX,QAAA,GAAW,KAAA;AAAA,MACX;AAAA,KACF,GAAI,KAAA;AAEJ,IAAA,MAAM,EAAE,UAAA,EAAY,kBAAA,EAAoB,qBAAA,KAA0B,OAAA,EAAQ;AAE1E,IAAA,MAAM,eAAe,SAAA,EAAU;AAC/B,IAAA,wBAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,kBAAA;AAAA,MACR,GAAA,EAAKC,QAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,MAAM,OACJ,SAAA,IAAa,UAAA,mBACX,GAAA,CAAC,kBAAA,EAAA,EAAmB,eAAW,IAAA,EAAC,CAAA,GAC9B,aAAA,mBACF,GAAA,CAAC,yBAAsB,aAAA,EAAW,IAAA,EAAC,oBAEnC,GAAA,CAAC,UAAA,EAAA,EAAW,eAAW,IAAA,EAAC,CAAA;AAG5B,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,IAAA,CAAK,YAAA,EAAa,EAAG;AAAA,UAC9B,CAAC,YAAA,CAAa,SAAS,CAAC,GAAG,SAAA;AAAA,UAC3B,CAAC,YAAA,CAAa,UAAU,CAAC,GAAG,UAAA;AAAA,UAC5B,CAAC,YAAA,CAAa,aAAa,CAAC,GAAG,aAAA;AAAA,UAC/B,CAAC,YAAA,CAAa,UAAU,CAAC,GAAG,QAAA;AAAA,UAC5B,CAAC,YAAA,CAAa,UAAU,CAAC,GAAG;AAAA,SAC7B,CAAA;AAAA,QAED,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,IAAA,EAAK,OAAA;AAAA,cACL,IAAA;AAAA,cACA,KAAA;AAAA,cACA,SAAS,aAAA,KAAkB,KAAA;AAAA,cAC3B,QAAA;AAAA,cACA,YAAA;AAAA,cACA,QAAA;AAAA,cACA,QAAA;AAAA,cACA,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,cAC/B,YAAA,EAAY;AAAA;AAAA,WACd;AAAA,0BACA,GAAA,CAAC,UAAK,SAAA,EAAW,YAAA,CAAa,MAAM,CAAA,EAAG,aAAA,EAAW,MAC/C,QAAA,EAAA,IAAA,EACH;AAAA;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;;;;"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
var css_248z = ".saltTabBar {\n display: flex;\n align-items: center;\n flex-direction: row;\n position: relative;\n box-sizing: border-box;\n min-width: 0;\n max-width: 100%;\n}\n\n.saltTabBar-strip {\n display: flex;\n align-items: center;\n flex-direction: row;\n flex: 1 1 auto;\n gap: var(--salt-spacing-100);\n box-sizing: border-box;\n min-width: 0;\n max-width: 100%;\n}\n\n.saltTabBar-divider::before {\n content: \"\";\n position: absolute;\n inset: auto 0 0 0;\n height: var(--salt-size-fixed-100);\n border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-separable-secondary-borderColor);\n}\n\n.saltTabBar-inset {\n padding-left: var(--salt-spacing-300);\n padding-right: var(--salt-spacing-300);\n}\n";
|
|
2
|
-
|
|
3
|
-
export { css_248z as default };
|
|
4
|
-
//# sourceMappingURL=TabBar.css.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TabBar.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { makePrefixer } from '@salt-ds/core';
|
|
3
|
-
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
4
|
-
import { useWindow } from '@salt-ds/window';
|
|
5
|
-
import { clsx } from 'clsx';
|
|
6
|
-
import { forwardRef } from 'react';
|
|
7
|
-
import css_248z from './TabBar.css.js';
|
|
8
|
-
|
|
9
|
-
const withBaseName = makePrefixer("saltTabBar");
|
|
10
|
-
const TabBar = forwardRef(
|
|
11
|
-
function TabBar2(props, ref) {
|
|
12
|
-
const { className, children, divider, inset, ...rest } = props;
|
|
13
|
-
const targetWindow = useWindow();
|
|
14
|
-
useComponentCssInjection({
|
|
15
|
-
testId: "salt-tab-bar",
|
|
16
|
-
css: css_248z,
|
|
17
|
-
window: targetWindow
|
|
18
|
-
});
|
|
19
|
-
return /* @__PURE__ */ jsx(
|
|
20
|
-
"div",
|
|
21
|
-
{
|
|
22
|
-
className: clsx(
|
|
23
|
-
withBaseName(),
|
|
24
|
-
{
|
|
25
|
-
[withBaseName("divider")]: divider,
|
|
26
|
-
[withBaseName("inset")]: inset
|
|
27
|
-
},
|
|
28
|
-
className
|
|
29
|
-
),
|
|
30
|
-
...rest,
|
|
31
|
-
ref,
|
|
32
|
-
children: /* @__PURE__ */ jsx("div", { className: withBaseName("strip"), children })
|
|
33
|
-
}
|
|
34
|
-
);
|
|
35
|
-
}
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
export { TabBar };
|
|
39
|
-
//# sourceMappingURL=TabBar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TabBar.js","sources":["../src/tabs-next/TabBar.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithRef, forwardRef } from \"react\";\nimport tabBarCss from \"./TabBar.css\";\n\nexport interface TabBarProps extends ComponentPropsWithRef<\"div\"> {\n /**\n * Styling variant with a bottom separator. Defaults to false\n */\n divider?: boolean;\n /**\n * Styling variant with left and right padding. Defaults to false\n */\n inset?: boolean;\n}\n\nconst withBaseName = makePrefixer(\"saltTabBar\");\n\nexport const TabBar = forwardRef<HTMLDivElement, TabBarProps>(\n function TabBar(props, ref) {\n const { className, children, divider, inset, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-tab-bar\",\n css: tabBarCss,\n window: targetWindow,\n });\n\n return (\n <div\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"divider\")]: divider,\n [withBaseName(\"inset\")]: inset,\n },\n className,\n )}\n {...rest}\n ref={ref}\n >\n <div className={withBaseName(\"strip\")}>{children}</div>\n </div>\n );\n },\n);\n"],"names":["TabBar","tabBarCss"],"mappings":";;;;;;;;AAkBA,MAAM,YAAA,GAAe,aAAa,YAAY,CAAA;AAEvC,MAAM,MAAA,GAAS,UAAA;AAAA,EACpB,SAASA,OAAAA,CAAO,KAAA,EAAO,GAAA,EAAK;AAC1B,IAAA,MAAM,EAAE,SAAA,EAAW,QAAA,EAAU,SAAS,KAAA,EAAO,GAAG,MAAK,GAAI,KAAA;AAEzD,IAAA,MAAM,eAAe,SAAA,EAAU;AAC/B,IAAA,wBAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,cAAA;AAAA,MACR,GAAA,EAAKC,QAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,IAAA;AAAA,UACT,YAAA,EAAa;AAAA,UACb;AAAA,YACE,CAAC,YAAA,CAAa,SAAS,CAAC,GAAG,OAAA;AAAA,YAC3B,CAAC,YAAA,CAAa,OAAO,CAAC,GAAG;AAAA,WAC3B;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG,IAAA;AAAA,QACJ,GAAA;AAAA,QAEA,8BAAC,KAAA,EAAA,EAAI,SAAA,EAAW,YAAA,CAAa,OAAO,GAAI,QAAA,EAAS;AAAA;AAAA,KACnD;AAAA,EAEJ;AACF;;;;"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { createContext } from '@salt-ds/core';
|
|
2
|
-
import { useContext } from 'react';
|
|
3
|
-
|
|
4
|
-
const TabListLayoutContext = createContext("TabListLayoutContext", null);
|
|
5
|
-
function useTabListLayout() {
|
|
6
|
-
return useContext(TabListLayoutContext);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export { TabListLayoutContext, useTabListLayout };
|
|
10
|
-
//# sourceMappingURL=TabListLayoutContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TabListLayoutContext.js","sources":["../src/tabs-next/TabListLayoutContext.tsx"],"sourcesContent":["import { createContext } from \"@salt-ds/core\";\nimport { useContext } from \"react\";\n\nexport type TabSlotLocation = \"hidden\" | \"main\" | \"overflow\";\n\nexport interface TabListLayoutContextValue {\n getLocation: (value: string) => TabSlotLocation;\n overflowActiveValue: string | null;\n setOverflowActiveValue: (value: string | null) => void;\n moveOverflowFocus: (\n key: \"ArrowDown\" | \"ArrowUp\" | \"Home\" | \"End\",\n value: string,\n ) => boolean;\n}\n\nexport const TabListLayoutContext =\n createContext<TabListLayoutContextValue | null>(\"TabListLayoutContext\", null);\n\nexport function useTabListLayout() {\n return useContext(TabListLayoutContext);\n}\n"],"names":[],"mappings":";;;AAeO,MAAM,oBAAA,GACX,aAAA,CAAgD,sBAAA,EAAwB,IAAI;AAEvE,SAAS,gBAAA,GAAmB;AACjC,EAAA,OAAO,WAAW,oBAAoB,CAAA;AACxC;;;;"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
var css_248z = "/* Component class applied to the root element */\n.saltTabListNext {\n display: flex;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n position: relative;\n background: transparent;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n gap: var(--salt-spacing-100);\n max-width: 100%;\n min-width: 0;\n flex: 0 1 auto;\n}\n\n.saltTabListNext-center {\n justify-content: center;\n}\n\n.saltTabListNext-right {\n justify-content: flex-end;\n}\n\n.saltTabListNext-activeColorPrimary {\n --saltTabListNext-activeColor: var(--salt-container-primary-background);\n}\n\n.saltTabListNext-activeColorSecondary {\n --saltTabListNext-activeColor: var(--salt-container-secondary-background);\n}\n\n.saltTabListNext-activeColorTertiary {\n --saltTabListNext-activeColor: var(--salt-container-tertiary-background);\n}\n\n.saltTabListNext-measureContainer {\n position: absolute;\n top: 0;\n left: 0;\n height: 0;\n overflow: hidden;\n pointer-events: none;\n visibility: hidden;\n white-space: nowrap;\n}\n";
|
|
2
|
-
|
|
3
|
-
export { css_248z as default };
|
|
4
|
-
//# sourceMappingURL=TabListNext.css.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TabListNext.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|