@dxos/react-ui 0.8.4-main.c85a9c8dae → 0.8.4-main.d05539e30a
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/LICENSE +102 -5
- package/README.md +1 -1
- package/dist/lib/browser/chunk-A5QCIG5R.mjs +24 -0
- package/dist/lib/browser/chunk-A5QCIG5R.mjs.map +7 -0
- package/dist/lib/browser/{chunk-2FKSMWNY.mjs → chunk-LY5XDQR5.mjs} +84 -12
- package/dist/lib/browser/chunk-LY5XDQR5.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1559 -1062
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +44 -20
- package/dist/lib/browser/testing/index.mjs.map +4 -4
- package/dist/lib/browser/translations.mjs +9 -0
- package/dist/lib/browser/translations.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-ZNBLTSHI.mjs → chunk-NGKLIKP3.mjs} +84 -12
- package/dist/lib/node-esm/chunk-NGKLIKP3.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-XCFLA74M.mjs +26 -0
- package/dist/lib/node-esm/chunk-XCFLA74M.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +1559 -1062
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +44 -20
- package/dist/lib/node-esm/testing/index.mjs.map +4 -4
- package/dist/lib/node-esm/translations.mjs +10 -0
- package/dist/lib/node-esm/translations.mjs.map +7 -0
- package/dist/types/src/components/Avatars/Avatar.d.ts +1 -1
- package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
- package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
- package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
- package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
- package/dist/types/src/components/Button/Button.d.ts +2 -2
- package/dist/types/src/components/Button/Button.d.ts.map +1 -1
- package/dist/types/src/components/Button/Button.stories.d.ts +1 -1
- package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -1
- package/dist/types/src/components/Button/IconButton.d.ts +1 -0
- package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
- package/dist/types/src/components/Button/IconButton.stories.d.ts +3 -0
- package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -1
- package/dist/types/src/components/Button/Toggle.d.ts +2 -2
- package/dist/types/src/components/Button/Toggle.d.ts.map +1 -1
- package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -1
- package/dist/types/src/components/Button/ToggleGroup.d.ts +6 -6
- package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -1
- package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +2 -2
- package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -1
- package/dist/types/src/components/Card/Card.d.ts +68 -65
- package/dist/types/src/components/Card/Card.d.ts.map +1 -1
- package/dist/types/src/components/Card/Card.stories.d.ts +2 -2
- package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -1
- package/dist/types/src/components/Carousel/Carousel.d.ts +106 -0
- package/dist/types/src/components/Carousel/Carousel.d.ts.map +1 -0
- package/dist/types/src/components/Carousel/index.d.ts +2 -0
- package/dist/types/src/components/Carousel/index.d.ts.map +1 -0
- package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
- package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
- package/dist/types/src/components/Clipboard/index.d.ts +10 -1
- package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
- package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/AlertDialog.d.ts +42 -31
- package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/Dialog.d.ts +47 -30
- package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/Dialog.stories.d.ts +3 -2
- package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
- package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -1
- package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -1
- package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +14 -3
- package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -1
- package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -1
- package/dist/types/src/components/Focus/Focus.d.ts +36 -0
- package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
- package/dist/types/src/components/Focus/Focus.stories.d.ts +9 -0
- package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
- package/dist/types/src/components/Focus/index.d.ts +2 -0
- package/dist/types/src/components/Focus/index.d.ts.map +1 -0
- package/dist/types/src/components/Icon/Icon.d.ts +4 -0
- package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
- package/dist/types/src/components/Icon/Icon.stories.d.ts +11 -3
- package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -1
- package/dist/types/src/components/Image/Image.d.ts +2 -1
- package/dist/types/src/components/Image/Image.d.ts.map +1 -1
- package/dist/types/src/components/Image/Image.stories.d.ts +3 -2
- package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.d.ts +14 -17
- package/dist/types/src/components/Input/Input.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.stories.d.ts +3 -3
- package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
- package/dist/types/src/components/Link/Link.d.ts.map +1 -1
- package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
- package/dist/types/src/components/List/List.d.ts +5 -3
- package/dist/types/src/components/List/List.d.ts.map +1 -1
- package/dist/types/src/components/List/List.stories.d.ts +3 -1
- package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
- package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -1
- package/dist/types/src/components/List/Tree.d.ts +2 -2
- package/dist/types/src/components/List/Tree.d.ts.map +1 -1
- package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -1
- package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -1
- package/dist/types/src/components/List/Treegrid.d.ts +5 -9
- package/dist/types/src/components/List/Treegrid.d.ts.map +1 -1
- package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -1
- package/dist/types/src/components/Main/Main.d.ts +7 -3
- package/dist/types/src/components/Main/Main.d.ts.map +1 -1
- package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
- package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -1
- package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts +46 -0
- package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts.map +1 -0
- package/dist/types/src/components/MediaPlayer/MediaPlayer.stories.d.ts +16 -0
- package/dist/types/src/components/MediaPlayer/MediaPlayer.stories.d.ts.map +1 -0
- package/dist/types/src/components/MediaPlayer/index.d.ts +2 -0
- package/dist/types/src/components/MediaPlayer/index.d.ts.map +1 -0
- package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -1
- package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -1
- package/dist/types/src/components/Menu/DropdownMenu.d.ts +58 -49
- package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -1
- package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +14 -1
- package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -1
- package/dist/types/src/components/Message/Message.d.ts +1 -1
- package/dist/types/src/components/Message/Message.d.ts.map +1 -1
- package/dist/types/src/components/Message/Message.stories.d.ts +2 -2
- package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
- package/dist/types/src/components/Popover/Popover.d.ts +38 -22
- package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
- package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
- package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +12 -11
- package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
- package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +21 -10
- package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
- package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +42 -13
- package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
- package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +5 -6
- package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/Select/Select.d.ts.map +1 -1
- package/dist/types/src/components/Select/Select.stories.d.ts +2 -2
- package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
- package/dist/types/src/components/Separator/Separator.d.ts +3 -3
- package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
- package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -1
- package/dist/types/src/components/Splitter/Splitter.d.ts +19 -21
- package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -1
- package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -1
- package/dist/types/src/components/Status/Status.d.ts +3 -4
- package/dist/types/src/components/Status/Status.d.ts.map +1 -1
- package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
- package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
- package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +1 -1
- package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +1 -1
- package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -1
- package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +54 -55
- package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
- package/dist/types/src/components/ThemeProvider/index.d.ts +1 -1
- package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
- package/dist/types/src/components/Toast/Toast.d.ts +16 -16
- package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
- package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
- package/dist/types/src/components/Toolbar/Toolbar.d.ts +10 -20
- package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
- package/dist/types/src/components/Tooltip/Tooltip.d.ts +16 -16
- package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +2 -2
- package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +3 -0
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/exemplars/generics.stories.d.ts +6 -5
- package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -1
- package/dist/types/src/exemplars/slot.stories.d.ts +1 -0
- package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -1
- package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -1
- package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +1 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
- package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
- package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
- package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
- package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
- package/dist/types/src/hooks/useSafeCollisionPadding.d.ts.map +1 -1
- package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
- package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
- package/dist/types/src/playground/Custom.stories.d.ts +1 -1
- package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
- package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
- package/dist/types/src/primitives/Column/Column.d.ts +20 -19
- package/dist/types/src/primitives/Column/Column.d.ts.map +1 -1
- package/dist/types/src/primitives/Column/Column.stories.d.ts +19 -0
- package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -1
- package/dist/types/src/primitives/Container/Container.d.ts +7 -0
- package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
- package/dist/types/src/primitives/Container/Container.stories.d.ts +6 -0
- package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
- package/dist/types/src/primitives/Container/index.d.ts +2 -0
- package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
- package/dist/types/src/primitives/Flex/Flex.d.ts +8 -5
- package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -1
- package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -1
- package/dist/types/src/primitives/Grid/Grid.d.ts +6 -5
- package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -1
- package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -1
- package/dist/types/src/primitives/Panel/Panel.d.ts +23 -22
- package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -1
- package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -1
- package/dist/types/src/primitives/index.d.ts +1 -0
- package/dist/types/src/primitives/index.d.ts.map +1 -1
- package/dist/types/src/testing/Loading.d.ts +9 -0
- package/dist/types/src/testing/Loading.d.ts.map +1 -0
- package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
- package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -1
- package/dist/types/src/testing/decorators/withTheme.d.ts +1 -1
- package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +1 -0
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +8 -3
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/util/usePx.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +29 -26
- package/src/components/Avatars/Avatar.stories.tsx +2 -3
- package/src/components/Avatars/Avatar.tsx +1 -2
- package/src/components/Avatars/AvatarGroup.stories.tsx +0 -1
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -2
- package/src/components/Button/Button.stories.tsx +0 -1
- package/src/components/Button/Button.tsx +5 -13
- package/src/components/Button/IconButton.stories.tsx +6 -4
- package/src/components/Button/IconButton.tsx +3 -4
- package/src/components/Button/Toggle.stories.tsx +0 -1
- package/src/components/Button/Toggle.tsx +4 -4
- package/src/components/Button/ToggleGroup.stories.tsx +0 -1
- package/src/components/Button/ToggleGroup.tsx +12 -16
- package/src/components/Card/Card.stories.tsx +15 -15
- package/src/components/Card/Card.tsx +294 -132
- package/src/components/Carousel/Carousel.tsx +379 -0
- package/src/components/Carousel/index.ts +5 -0
- package/src/components/Clipboard/CopyButton.tsx +5 -6
- package/src/components/Dialog/AlertDialog.stories.tsx +5 -6
- package/src/components/Dialog/AlertDialog.tsx +67 -126
- package/src/components/Dialog/Dialog.stories.tsx +64 -9
- package/src/components/Dialog/Dialog.tsx +84 -88
- package/src/components/ErrorFallback/ErrorFallback.stories.tsx +3 -8
- package/src/components/ErrorFallback/ErrorStack.tsx +36 -2
- package/src/components/Focus/AUDIT.md +43 -0
- package/src/components/Focus/Focus.stories.tsx +230 -0
- package/src/components/Focus/Focus.tsx +201 -0
- package/src/components/Focus/index.ts +5 -0
- package/src/components/Icon/Icon.stories.tsx +43 -13
- package/src/components/Icon/Icon.tsx +14 -3
- package/src/components/Image/Image.stories.tsx +3 -3
- package/src/components/Image/Image.tsx +31 -8
- package/src/components/Input/Input.stories.tsx +3 -4
- package/src/components/Input/Input.tsx +7 -7
- package/src/components/Link/Link.stories.tsx +0 -1
- package/src/components/Link/Link.tsx +10 -2
- package/src/components/List/List.stories.tsx +3 -4
- package/src/components/List/List.tsx +7 -6
- package/src/components/List/ListDropIndicator.tsx +0 -1
- package/src/components/List/Tree.stories.tsx +2 -3
- package/src/components/List/Tree.tsx +0 -1
- package/src/components/List/TreeDropIndicator.tsx +1 -1
- package/src/components/List/Treegrid.stories.tsx +26 -27
- package/src/components/List/Treegrid.tsx +14 -14
- package/src/components/Main/Main.stories.tsx +0 -1
- package/src/components/Main/Main.tsx +1 -2
- package/src/components/MediaPlayer/MediaPlayer.stories.tsx +50 -0
- package/src/components/MediaPlayer/MediaPlayer.tsx +153 -0
- package/src/components/MediaPlayer/index.ts +5 -0
- package/src/components/Menu/ContextMenu.stories.tsx +0 -1
- package/src/components/Menu/DropdownMenu.stories.tsx +0 -1
- package/src/components/Menu/DropdownMenu.tsx +48 -42
- package/src/components/Message/Message.stories.tsx +7 -8
- package/src/components/Message/Message.tsx +23 -10
- package/src/components/Popover/Popover.stories.tsx +4 -5
- package/src/components/Popover/Popover.tsx +42 -42
- package/src/components/ScrollArea/ScrollArea.stories.tsx +89 -30
- package/src/components/ScrollArea/ScrollArea.tsx +41 -25
- package/src/components/ScrollContainer/ScrollContainer.stories.tsx +20 -18
- package/src/components/ScrollContainer/ScrollContainer.tsx +199 -92
- package/src/components/Select/Select.stories.tsx +5 -6
- package/src/components/Separator/Separator.tsx +4 -7
- package/src/components/Skeleton/Skeleton.stories.tsx +0 -1
- package/src/components/Splitter/Splitter.stories.tsx +29 -29
- package/src/components/Splitter/Splitter.tsx +35 -46
- package/src/components/Status/Status.stories.tsx +0 -1
- package/src/components/Status/Status.tsx +8 -5
- package/src/components/Tag/Tag.stories.tsx +0 -1
- package/src/components/ThemeProvider/ThemeProvider.stories.tsx +0 -1
- package/src/components/ThemeProvider/ThemeProvider.tsx +5 -4
- package/src/components/ThemeProvider/index.ts +1 -1
- package/src/components/Toast/Toast.stories.tsx +0 -1
- package/src/components/Toast/Toast.tsx +16 -31
- package/src/components/Toolbar/Toolbar.stories.tsx +0 -1
- package/src/components/Toolbar/Toolbar.tsx +36 -48
- package/src/components/Tooltip/Tooltip.stories.tsx +7 -8
- package/src/components/Tooltip/Tooltip.tsx +29 -29
- package/src/components/index.ts +3 -0
- package/src/exemplars/generics.stories.tsx +7 -15
- package/src/exemplars/slot.stories.tsx +64 -68
- package/src/exemplars/tabster.stories.tsx +1 -1
- package/src/exemplars/virtualizer.stories.tsx +4 -5
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useDensityContext.ts +2 -2
- package/src/playground/Custom.stories.tsx +6 -9
- package/src/primitives/Column/AUDIT.md +148 -0
- package/src/primitives/Column/Column.stories.tsx +128 -19
- package/src/primitives/Column/Column.tsx +89 -80
- package/src/primitives/Container/Container.stories.tsx +29 -0
- package/src/primitives/Container/Container.tsx +19 -0
- package/src/primitives/Container/index.ts +5 -0
- package/src/primitives/Flex/Flex.stories.tsx +0 -1
- package/src/primitives/Flex/Flex.tsx +20 -20
- package/src/primitives/Grid/Grid.stories.tsx +0 -1
- package/src/primitives/Grid/Grid.tsx +23 -36
- package/src/primitives/Panel/Panel.stories.tsx +9 -8
- package/src/primitives/Panel/Panel.tsx +43 -60
- package/src/primitives/index.ts +1 -0
- package/src/testing/Loading.tsx +47 -0
- package/src/testing/decorators/withLayout.tsx +7 -17
- package/src/testing/decorators/withTheme.tsx +10 -7
- package/src/testing/index.ts +2 -0
- package/src/translations.ts +8 -3
- package/src/util/usePx.ts +1 -0
- package/dist/lib/browser/chunk-2FKSMWNY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ZNBLTSHI.mjs.map +0 -7
|
@@ -17,9 +17,9 @@ import { useControllableState } from '@radix-ui/react-use-controllable-state';
|
|
|
17
17
|
import React, {
|
|
18
18
|
type ComponentPropsWithRef,
|
|
19
19
|
type ComponentPropsWithoutRef,
|
|
20
|
-
type
|
|
20
|
+
type ComponentRef,
|
|
21
21
|
type FC,
|
|
22
|
-
|
|
22
|
+
PropsWithChildren,
|
|
23
23
|
type ReactNode,
|
|
24
24
|
type RefObject,
|
|
25
25
|
forwardRef,
|
|
@@ -47,7 +47,7 @@ const useMenuScope: (scope?: Scope) => any = createMenuScope();
|
|
|
47
47
|
|
|
48
48
|
type DropdownMenuContextValue = {
|
|
49
49
|
triggerId: string;
|
|
50
|
-
triggerRef:
|
|
50
|
+
triggerRef: RefObject<HTMLButtonElement | null>;
|
|
51
51
|
contentId: string;
|
|
52
52
|
open: boolean;
|
|
53
53
|
onOpenChange(open: boolean): void;
|
|
@@ -58,17 +58,23 @@ type DropdownMenuContextValue = {
|
|
|
58
58
|
const [DropdownMenuProvider, useDropdownMenuContext] =
|
|
59
59
|
createDropdownMenuContext<DropdownMenuContextValue>(DROPDOWN_MENU_NAME);
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
children?: ReactNode;
|
|
61
|
+
type DropdownMenuRootProps = PropsWithChildren<{
|
|
63
62
|
dir?: Direction;
|
|
63
|
+
modal?: boolean;
|
|
64
64
|
open?: boolean;
|
|
65
65
|
defaultOpen?: boolean;
|
|
66
66
|
onOpenChange?(open: boolean): void;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
}>;
|
|
68
|
+
|
|
69
|
+
const DropdownMenuRoot = ({
|
|
70
|
+
__scopeDropdownMenu,
|
|
71
|
+
children,
|
|
72
|
+
dir,
|
|
73
|
+
modal = true,
|
|
74
|
+
open: openProp,
|
|
75
|
+
defaultOpen,
|
|
76
|
+
onOpenChange,
|
|
77
|
+
}: ScopedProps<DropdownMenuRootProps>) => {
|
|
72
78
|
const menuScope = useMenuScope(__scopeDropdownMenu);
|
|
73
79
|
const triggerRef = useRef<HTMLButtonElement | null>(null);
|
|
74
80
|
const [open = false, setOpen] = useControllableState({
|
|
@@ -81,14 +87,14 @@ const DropdownMenuRoot: FC<DropdownMenuRootProps> = (props: ScopedProps<Dropdown
|
|
|
81
87
|
<DropdownMenuProvider
|
|
82
88
|
scope={__scopeDropdownMenu}
|
|
83
89
|
triggerId={useId()}
|
|
84
|
-
triggerRef={triggerRef
|
|
90
|
+
triggerRef={triggerRef}
|
|
85
91
|
contentId={useId()}
|
|
86
92
|
open={open}
|
|
87
93
|
onOpenChange={setOpen}
|
|
88
94
|
onOpenToggle={useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen])}
|
|
89
95
|
modal={modal}
|
|
90
96
|
>
|
|
91
|
-
<MenuPrimitive.Root {...menuScope}
|
|
97
|
+
<MenuPrimitive.Root {...menuScope} dir={dir} modal={modal} open={open} onOpenChange={setOpen}>
|
|
92
98
|
{children}
|
|
93
99
|
</MenuPrimitive.Root>
|
|
94
100
|
</DropdownMenuProvider>
|
|
@@ -103,9 +109,9 @@ DropdownMenuRoot.displayName = DROPDOWN_MENU_NAME;
|
|
|
103
109
|
|
|
104
110
|
const TRIGGER_NAME = 'DropdownMenuTrigger';
|
|
105
111
|
|
|
106
|
-
type DropdownMenuTriggerElement =
|
|
112
|
+
type DropdownMenuTriggerElement = ComponentRef<typeof Primitive.button>;
|
|
107
113
|
type PrimitiveButtonProps = ComponentPropsWithoutRef<typeof Primitive.button>;
|
|
108
|
-
|
|
114
|
+
type DropdownMenuTriggerProps = PrimitiveButtonProps;
|
|
109
115
|
|
|
110
116
|
const DropdownMenuTrigger = forwardRef<DropdownMenuTriggerElement, DropdownMenuTriggerProps>(
|
|
111
117
|
(props: ScopedProps<DropdownMenuTriggerProps>, forwardedRef) => {
|
|
@@ -168,9 +174,9 @@ DropdownMenuTrigger.displayName = TRIGGER_NAME;
|
|
|
168
174
|
|
|
169
175
|
const VIRTUAL_TRIGGER_NAME = 'DropdownMenuVirtualTrigger';
|
|
170
176
|
|
|
171
|
-
|
|
177
|
+
type DropdownMenuVirtualTriggerProps = {
|
|
172
178
|
virtualRef: RefObject<DropdownMenuTriggerElement | null>;
|
|
173
|
-
}
|
|
179
|
+
};
|
|
174
180
|
|
|
175
181
|
const DropdownMenuVirtualTrigger = (props: ScopedProps<DropdownMenuVirtualTriggerProps>) => {
|
|
176
182
|
const { __scopeDropdownMenu, virtualRef } = props;
|
|
@@ -193,7 +199,7 @@ DropdownMenuVirtualTrigger.displayName = VIRTUAL_TRIGGER_NAME;
|
|
|
193
199
|
const PORTAL_NAME = 'DropdownMenuPortal';
|
|
194
200
|
|
|
195
201
|
type MenuPortalProps = ComponentPropsWithoutRef<typeof MenuPrimitive.Portal>;
|
|
196
|
-
|
|
202
|
+
type DropdownMenuPortalProps = MenuPortalProps;
|
|
197
203
|
|
|
198
204
|
const DropdownMenuPortal: FC<DropdownMenuPortalProps> = (props: ScopedProps<DropdownMenuPortalProps>) => {
|
|
199
205
|
const { __scopeDropdownMenu, ...portalProps } = props;
|
|
@@ -229,9 +235,9 @@ const DropdownMenuViewport = forwardRef<HTMLDivElement, DropdownMenuViewportProp
|
|
|
229
235
|
|
|
230
236
|
const CONTENT_NAME = 'DropdownMenuContent';
|
|
231
237
|
|
|
232
|
-
type DropdownMenuContentElement =
|
|
238
|
+
type DropdownMenuContentElement = ComponentRef<typeof MenuPrimitive.Content>;
|
|
233
239
|
type MenuContentProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Content>>;
|
|
234
|
-
|
|
240
|
+
type DropdownMenuContentProps = Omit<MenuContentProps, 'onEntryFocus'>;
|
|
235
241
|
|
|
236
242
|
const DropdownMenuContent = forwardRef<DropdownMenuContentElement, DropdownMenuContentProps>(
|
|
237
243
|
(props: ScopedProps<DropdownMenuContentProps>, forwardedRef) => {
|
|
@@ -308,9 +314,9 @@ DropdownMenuContent.displayName = CONTENT_NAME;
|
|
|
308
314
|
|
|
309
315
|
const GROUP_NAME = 'DropdownMenuGroup';
|
|
310
316
|
|
|
311
|
-
type DropdownMenuGroupElement =
|
|
317
|
+
type DropdownMenuGroupElement = ComponentRef<typeof MenuPrimitive.Group>;
|
|
312
318
|
type MenuGroupProps = ComponentPropsWithoutRef<typeof MenuPrimitive.Group>;
|
|
313
|
-
|
|
319
|
+
type DropdownMenuGroupProps = MenuGroupProps;
|
|
314
320
|
|
|
315
321
|
const DropdownMenuGroup = forwardRef<DropdownMenuGroupElement, DropdownMenuGroupProps>(
|
|
316
322
|
(props: ScopedProps<DropdownMenuGroupProps>, forwardedRef) => {
|
|
@@ -328,9 +334,9 @@ DropdownMenuGroup.displayName = GROUP_NAME;
|
|
|
328
334
|
|
|
329
335
|
const LABEL_NAME = 'DropdownMenuLabel';
|
|
330
336
|
|
|
331
|
-
type DropdownMenuLabelElement =
|
|
337
|
+
type DropdownMenuLabelElement = ComponentRef<typeof MenuPrimitive.Label>;
|
|
332
338
|
type MenuLabelProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Label>>;
|
|
333
|
-
|
|
339
|
+
type DropdownMenuLabelProps = MenuLabelProps;
|
|
334
340
|
|
|
335
341
|
const DropdownMenuGroupLabel = forwardRef<DropdownMenuLabelElement, DropdownMenuLabelProps>(
|
|
336
342
|
(props: ScopedProps<DropdownMenuLabelProps>, forwardedRef) => {
|
|
@@ -356,9 +362,9 @@ DropdownMenuGroupLabel.displayName = LABEL_NAME;
|
|
|
356
362
|
|
|
357
363
|
const ITEM_NAME = 'DropdownMenuItem';
|
|
358
364
|
|
|
359
|
-
type DropdownMenuItemElement =
|
|
365
|
+
type DropdownMenuItemElement = ComponentRef<typeof MenuPrimitive.Item>;
|
|
360
366
|
type MenuItemProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Item>>;
|
|
361
|
-
|
|
367
|
+
type DropdownMenuItemProps = MenuItemProps;
|
|
362
368
|
|
|
363
369
|
const DropdownMenuItem = forwardRef<DropdownMenuItemElement, DropdownMenuItemProps>(
|
|
364
370
|
(props: ScopedProps<DropdownMenuItemProps>, forwardedRef) => {
|
|
@@ -384,9 +390,9 @@ DropdownMenuItem.displayName = ITEM_NAME;
|
|
|
384
390
|
|
|
385
391
|
const CHECKBOX_ITEM_NAME = 'DropdownMenuCheckboxItem';
|
|
386
392
|
|
|
387
|
-
type DropdownMenuCheckboxItemElement =
|
|
393
|
+
type DropdownMenuCheckboxItemElement = ComponentRef<typeof MenuPrimitive.CheckboxItem>;
|
|
388
394
|
type MenuCheckboxItemProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.CheckboxItem>>;
|
|
389
|
-
|
|
395
|
+
type DropdownMenuCheckboxItemProps = MenuCheckboxItemProps;
|
|
390
396
|
|
|
391
397
|
const DropdownMenuCheckboxItem = forwardRef<DropdownMenuCheckboxItemElement, DropdownMenuCheckboxItemProps>(
|
|
392
398
|
(props: ScopedProps<DropdownMenuCheckboxItemProps>, forwardedRef) => {
|
|
@@ -412,9 +418,9 @@ DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
|
|
|
412
418
|
|
|
413
419
|
const RADIO_GROUP_NAME = 'DropdownMenuRadioGroup';
|
|
414
420
|
|
|
415
|
-
type DropdownMenuRadioGroupElement =
|
|
421
|
+
type DropdownMenuRadioGroupElement = ComponentRef<typeof MenuPrimitive.RadioGroup>;
|
|
416
422
|
type MenuRadioGroupProps = ComponentPropsWithoutRef<typeof MenuPrimitive.RadioGroup>;
|
|
417
|
-
|
|
423
|
+
type DropdownMenuRadioGroupProps = MenuRadioGroupProps;
|
|
418
424
|
|
|
419
425
|
const DropdownMenuRadioGroup = forwardRef<DropdownMenuRadioGroupElement, DropdownMenuRadioGroupProps>(
|
|
420
426
|
(props: ScopedProps<DropdownMenuRadioGroupProps>, forwardedRef) => {
|
|
@@ -432,7 +438,7 @@ DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;
|
|
|
432
438
|
|
|
433
439
|
const RADIO_ITEM_NAME = 'DropdownMenuRadioItem';
|
|
434
440
|
|
|
435
|
-
type DropdownMenuRadioItemElement =
|
|
441
|
+
type DropdownMenuRadioItemElement = ComponentRef<typeof MenuPrimitive.RadioItem>;
|
|
436
442
|
type MenuRadioItemProps = ComponentPropsWithoutRef<typeof MenuPrimitive.RadioItem>;
|
|
437
443
|
type DropdownMenuRadioItemProps = ThemedClassName<MenuRadioItemProps>;
|
|
438
444
|
|
|
@@ -460,9 +466,9 @@ DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;
|
|
|
460
466
|
|
|
461
467
|
const INDICATOR_NAME = 'DropdownMenuItemIndicator';
|
|
462
468
|
|
|
463
|
-
type DropdownMenuItemIndicatorElement =
|
|
469
|
+
type DropdownMenuItemIndicatorElement = ComponentRef<typeof MenuPrimitive.ItemIndicator>;
|
|
464
470
|
type MenuItemIndicatorProps = ComponentPropsWithoutRef<typeof MenuPrimitive.ItemIndicator>;
|
|
465
|
-
|
|
471
|
+
type DropdownMenuItemIndicatorProps = MenuItemIndicatorProps;
|
|
466
472
|
|
|
467
473
|
const DropdownMenuItemIndicator = forwardRef<DropdownMenuItemIndicatorElement, DropdownMenuItemIndicatorProps>(
|
|
468
474
|
(props: ScopedProps<DropdownMenuItemIndicatorProps>, forwardedRef) => {
|
|
@@ -480,9 +486,9 @@ DropdownMenuItemIndicator.displayName = INDICATOR_NAME;
|
|
|
480
486
|
|
|
481
487
|
const SEPARATOR_NAME = 'DropdownMenuSeparator';
|
|
482
488
|
|
|
483
|
-
type DropdownMenuSeparatorElement =
|
|
489
|
+
type DropdownMenuSeparatorElement = ComponentRef<typeof MenuPrimitive.Separator>;
|
|
484
490
|
type MenuSeparatorProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Separator>>;
|
|
485
|
-
|
|
491
|
+
type DropdownMenuSeparatorProps = MenuSeparatorProps;
|
|
486
492
|
|
|
487
493
|
const DropdownMenuSeparator = forwardRef<DropdownMenuSeparatorElement, DropdownMenuSeparatorProps>(
|
|
488
494
|
(props: ScopedProps<DropdownMenuSeparatorProps>, forwardedRef) => {
|
|
@@ -508,9 +514,9 @@ DropdownMenuSeparator.displayName = SEPARATOR_NAME;
|
|
|
508
514
|
|
|
509
515
|
const ARROW_NAME = 'DropdownMenuArrow';
|
|
510
516
|
|
|
511
|
-
type DropdownMenuArrowElement =
|
|
517
|
+
type DropdownMenuArrowElement = ComponentRef<typeof MenuPrimitive.Arrow>;
|
|
512
518
|
type MenuArrowProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Arrow>>;
|
|
513
|
-
|
|
519
|
+
type DropdownMenuArrowProps = MenuArrowProps;
|
|
514
520
|
|
|
515
521
|
const DropdownMenuArrow = forwardRef<DropdownMenuArrowElement, DropdownMenuArrowProps>(
|
|
516
522
|
(props: ScopedProps<DropdownMenuArrowProps>, forwardedRef) => {
|
|
@@ -534,12 +540,12 @@ DropdownMenuArrow.displayName = ARROW_NAME;
|
|
|
534
540
|
// DropdownMenuSub
|
|
535
541
|
//
|
|
536
542
|
|
|
537
|
-
|
|
543
|
+
type DropdownMenuSubProps = {
|
|
538
544
|
children?: ReactNode;
|
|
539
545
|
open?: boolean;
|
|
540
546
|
defaultOpen?: boolean;
|
|
541
547
|
onOpenChange?(open: boolean): void;
|
|
542
|
-
}
|
|
548
|
+
};
|
|
543
549
|
|
|
544
550
|
const DropdownMenuSub: FC<DropdownMenuSubProps> = (props: ScopedProps<DropdownMenuSubProps>) => {
|
|
545
551
|
const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;
|
|
@@ -563,9 +569,9 @@ const DropdownMenuSub: FC<DropdownMenuSubProps> = (props: ScopedProps<DropdownMe
|
|
|
563
569
|
|
|
564
570
|
const SUB_TRIGGER_NAME = 'DropdownMenuSubTrigger';
|
|
565
571
|
|
|
566
|
-
type DropdownMenuSubTriggerElement =
|
|
572
|
+
type DropdownMenuSubTriggerElement = ComponentRef<typeof MenuPrimitive.SubTrigger>;
|
|
567
573
|
type MenuSubTriggerProps = ComponentPropsWithoutRef<typeof MenuPrimitive.SubTrigger>;
|
|
568
|
-
|
|
574
|
+
type DropdownMenuSubTriggerProps = MenuSubTriggerProps;
|
|
569
575
|
|
|
570
576
|
const DropdownMenuSubTrigger = forwardRef<DropdownMenuSubTriggerElement, DropdownMenuSubTriggerProps>(
|
|
571
577
|
(props: ScopedProps<DropdownMenuSubTriggerProps>, forwardedRef) => {
|
|
@@ -583,9 +589,9 @@ DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
|
|
|
583
589
|
|
|
584
590
|
const SUB_CONTENT_NAME = 'DropdownMenuSubContent';
|
|
585
591
|
|
|
586
|
-
type DropdownMenuSubContentElement =
|
|
592
|
+
type DropdownMenuSubContentElement = ComponentRef<typeof MenuPrimitive.Content>;
|
|
587
593
|
type MenuSubContentProps = ComponentPropsWithoutRef<typeof MenuPrimitive.SubContent>;
|
|
588
|
-
|
|
594
|
+
type DropdownMenuSubContentProps = MenuSubContentProps;
|
|
589
595
|
|
|
590
596
|
const DropdownMenuSubContent = forwardRef<DropdownMenuSubContentElement, DropdownMenuSubContentProps>(
|
|
591
597
|
(props: ScopedProps<DropdownMenuSubContentProps>, forwardedRef) => {
|
|
@@ -5,25 +5,24 @@
|
|
|
5
5
|
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
6
6
|
import React from 'react';
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { random } from '@dxos/random';
|
|
9
9
|
import { type MessageValence } from '@dxos/ui-types';
|
|
10
10
|
|
|
11
11
|
import { withTheme } from '../../testing';
|
|
12
|
-
|
|
13
12
|
import { Message } from './Message';
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
random.seed(123);
|
|
16
15
|
|
|
17
|
-
type
|
|
16
|
+
type DefaultStoryProps = {
|
|
18
17
|
valence: MessageValence;
|
|
19
18
|
title: string;
|
|
20
19
|
body: string;
|
|
21
20
|
};
|
|
22
21
|
|
|
23
|
-
const DefaultStory = ({ valence, title, body }:
|
|
22
|
+
const DefaultStory = ({ valence, title, body }: DefaultStoryProps) => (
|
|
24
23
|
<div className='w-[30rem]'>
|
|
25
24
|
<Message.Root valence={valence}>
|
|
26
|
-
{title && <Message.Title>{title}</Message.Title>}
|
|
25
|
+
{title && <Message.Title onClose={() => console.log('close')}>{title}</Message.Title>}
|
|
27
26
|
{body && <Message.Content>{body}</Message.Content>}
|
|
28
27
|
</Message.Root>
|
|
29
28
|
</div>
|
|
@@ -53,7 +52,7 @@ export const Default: Story = {
|
|
|
53
52
|
args: {
|
|
54
53
|
valence: 'neutral',
|
|
55
54
|
title: 'Alert title',
|
|
56
|
-
body:
|
|
55
|
+
body: random.lorem.paragraphs(1),
|
|
57
56
|
},
|
|
58
57
|
};
|
|
59
58
|
|
|
@@ -61,6 +60,6 @@ export const Error: Story = {
|
|
|
61
60
|
args: {
|
|
62
61
|
valence: 'error',
|
|
63
62
|
title: 'Error title',
|
|
64
|
-
body:
|
|
63
|
+
body: random.lorem.paragraphs(1),
|
|
65
64
|
},
|
|
66
65
|
};
|
|
@@ -6,12 +6,16 @@ import { createContext } from '@radix-ui/react-context';
|
|
|
6
6
|
import { Primitive } from '@radix-ui/react-primitive';
|
|
7
7
|
import { Slot } from '@radix-ui/react-slot';
|
|
8
8
|
import React, { type ComponentPropsWithRef, forwardRef } from 'react';
|
|
9
|
+
import { useTranslation } from 'react-i18next';
|
|
9
10
|
|
|
10
11
|
import { useId } from '@dxos/react-hooks';
|
|
11
12
|
import { type Elevation, type MessageValence } from '@dxos/ui-types';
|
|
12
13
|
|
|
14
|
+
import { translationKey } from '#translations';
|
|
15
|
+
|
|
13
16
|
import { useElevationContext, useThemeContext } from '../../hooks';
|
|
14
17
|
import { type ThemedClassName } from '../../util';
|
|
18
|
+
import { IconButton } from '../Button';
|
|
15
19
|
import { Icon } from '../Icon';
|
|
16
20
|
|
|
17
21
|
const messageIcons: Record<MessageValence, string> = {
|
|
@@ -84,27 +88,36 @@ MessageRoot.displayName = MESSAGE_NAME;
|
|
|
84
88
|
//
|
|
85
89
|
|
|
86
90
|
type MessageTitleProps = Omit<ThemedClassName<ComponentPropsWithRef<typeof Primitive.h2>>, 'id'> & {
|
|
87
|
-
asChild?: boolean;
|
|
88
91
|
icon?: string;
|
|
92
|
+
onClose?: () => void;
|
|
89
93
|
};
|
|
90
94
|
|
|
91
95
|
const MESSAGE_TITLE_NAME = 'MessageTitle';
|
|
92
96
|
|
|
93
97
|
const MessageTitle = forwardRef<HTMLHeadingElement, MessageTitleProps>(
|
|
94
|
-
({
|
|
98
|
+
({ classNames, children, icon: iconProp, onClose }, forwardedRef) => {
|
|
99
|
+
const { t } = useTranslation(translationKey);
|
|
95
100
|
const { tx } = useThemeContext();
|
|
96
101
|
const { titleId, valence } = useMessageContext(MESSAGE_TITLE_NAME);
|
|
97
|
-
const Comp = asChild ? Slot : Primitive.h2;
|
|
98
102
|
const icon = iconProp ?? messageIcons[valence];
|
|
99
103
|
return (
|
|
100
|
-
<
|
|
101
|
-
{
|
|
102
|
-
<div
|
|
103
|
-
|
|
104
|
-
|
|
104
|
+
<div className={tx('message.header', {}, classNames)} id={titleId} ref={forwardedRef}>
|
|
105
|
+
{icon && (
|
|
106
|
+
<div className={tx('message.icon', { valence })}>
|
|
107
|
+
<Icon icon={icon} />
|
|
108
|
+
</div>
|
|
105
109
|
)}
|
|
106
|
-
<
|
|
107
|
-
|
|
110
|
+
<h2 className={tx('message.title', {}, classNames)}>{children}</h2>
|
|
111
|
+
{onClose && (
|
|
112
|
+
<IconButton
|
|
113
|
+
variant='ghost'
|
|
114
|
+
icon='ph--x--regular'
|
|
115
|
+
iconOnly
|
|
116
|
+
label={t('toolbar-close.label')}
|
|
117
|
+
onClick={onClose}
|
|
118
|
+
/>
|
|
119
|
+
)}
|
|
120
|
+
</div>
|
|
108
121
|
);
|
|
109
122
|
},
|
|
110
123
|
);
|
|
@@ -5,14 +5,13 @@
|
|
|
5
5
|
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
6
6
|
import React, { type PropsWithChildren, type ReactNode, useRef, useState } from 'react';
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { random } from '@dxos/random';
|
|
9
9
|
|
|
10
10
|
import { withTheme } from '../../testing';
|
|
11
11
|
import { Button } from '../Button';
|
|
12
|
-
|
|
13
12
|
import { Popover } from './Popover';
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
random.seed(1234);
|
|
16
15
|
|
|
17
16
|
const DefaultStory = ({ openTrigger, children }: PropsWithChildren<{ openTrigger: ReactNode }>) => {
|
|
18
17
|
return (
|
|
@@ -42,7 +41,7 @@ type Story = StoryObj<typeof meta>;
|
|
|
42
41
|
export const Default: Story = {
|
|
43
42
|
args: {
|
|
44
43
|
openTrigger: <Button>Open popover</Button>,
|
|
45
|
-
children:
|
|
44
|
+
children: random.lorem.paragraphs(3),
|
|
46
45
|
},
|
|
47
46
|
};
|
|
48
47
|
|
|
@@ -59,7 +58,7 @@ export const VirtualTrigger = {
|
|
|
59
58
|
<Popover.VirtualTrigger virtualRef={buttonRef} />
|
|
60
59
|
<Popover.Content>
|
|
61
60
|
<Popover.Viewport>
|
|
62
|
-
<p className='px-2 py-1 min-w-[18rem] max-w-[38rem]'>{
|
|
61
|
+
<p className='px-2 py-1 min-w-[18rem] max-w-[38rem]'>{random.lorem.paragraphs(3)}</p>
|
|
63
62
|
</Popover.Viewport>
|
|
64
63
|
<Popover.Arrow />
|
|
65
64
|
</Popover.Content>
|
|
@@ -24,7 +24,6 @@ import React, {
|
|
|
24
24
|
type ComponentPropsWithRef,
|
|
25
25
|
type ComponentPropsWithoutRef,
|
|
26
26
|
type ComponentRef,
|
|
27
|
-
type ElementRef,
|
|
28
27
|
type FC,
|
|
29
28
|
type ReactNode,
|
|
30
29
|
type RefObject,
|
|
@@ -37,30 +36,31 @@ import React, {
|
|
|
37
36
|
} from 'react';
|
|
38
37
|
import { RemoveScroll } from 'react-remove-scroll';
|
|
39
38
|
|
|
40
|
-
import { useElevationContext, useThemeContext } from '../../hooks';
|
|
41
|
-
import { useSafeCollisionPadding } from '../../hooks/useSafeCollisionPadding';
|
|
39
|
+
import { useSafeCollisionPadding, useElevationContext, useThemeContext } from '../../hooks';
|
|
42
40
|
import { type ThemedClassName } from '../../util';
|
|
43
41
|
|
|
44
42
|
//
|
|
45
43
|
// Context
|
|
46
44
|
//
|
|
47
45
|
|
|
46
|
+
type ScopedProps<P> = P & { __scopePopover?: Scope };
|
|
47
|
+
|
|
48
48
|
const POPOVER_NAME = 'Popover';
|
|
49
49
|
|
|
50
|
-
type ScopedProps<P> = P & { __scopePopover?: Scope };
|
|
51
50
|
const [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [createPopperScope]);
|
|
51
|
+
|
|
52
52
|
const usePopperScope = createPopperScope();
|
|
53
53
|
|
|
54
54
|
type PopoverContextValue = {
|
|
55
55
|
triggerRef: RefObject<HTMLButtonElement>;
|
|
56
56
|
contentId: string;
|
|
57
|
+
hasCustomAnchor: boolean;
|
|
58
|
+
modal: boolean;
|
|
57
59
|
open: boolean;
|
|
58
60
|
onOpenChange(open: boolean): void;
|
|
59
61
|
onOpenToggle(): void;
|
|
60
|
-
hasCustomAnchor: boolean;
|
|
61
62
|
onCustomAnchorAdd(): void;
|
|
62
63
|
onCustomAnchorRemove(): void;
|
|
63
|
-
modal: boolean;
|
|
64
64
|
};
|
|
65
65
|
|
|
66
66
|
const [PopoverProvider, usePopoverContext] = createPopoverContext<PopoverContextValue>(POPOVER_NAME);
|
|
@@ -69,13 +69,13 @@ const [PopoverProvider, usePopoverContext] = createPopoverContext<PopoverContext
|
|
|
69
69
|
// PopoverRoot
|
|
70
70
|
//
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
type PopoverRootProps = {
|
|
73
73
|
children?: ReactNode;
|
|
74
74
|
open?: boolean;
|
|
75
75
|
defaultOpen?: boolean;
|
|
76
76
|
onOpenChange?: (open: boolean) => void;
|
|
77
77
|
modal?: boolean;
|
|
78
|
-
}
|
|
78
|
+
};
|
|
79
79
|
|
|
80
80
|
const PopoverRoot: FC<PopoverRootProps> = (props: ScopedProps<PopoverRootProps>) => {
|
|
81
81
|
const { __scopePopover, children, open: openProp, defaultOpen, onOpenChange, modal = false } = props;
|
|
@@ -118,7 +118,7 @@ const ANCHOR_NAME = 'PopoverAnchor';
|
|
|
118
118
|
|
|
119
119
|
type PopoverAnchorElement = ComponentRef<typeof PopperPrimitive.Anchor>;
|
|
120
120
|
type PopperAnchorProps = ComponentPropsWithoutRef<typeof PopperPrimitive.Anchor>;
|
|
121
|
-
|
|
121
|
+
type PopoverAnchorProps = PopperAnchorProps;
|
|
122
122
|
|
|
123
123
|
const PopoverAnchor = forwardRef<PopoverAnchorElement, PopoverAnchorProps>(
|
|
124
124
|
(props: ScopedProps<PopoverAnchorProps>, forwardedRef) => {
|
|
@@ -144,11 +144,11 @@ PopoverAnchor.displayName = ANCHOR_NAME;
|
|
|
144
144
|
|
|
145
145
|
const TRIGGER_NAME = 'PopoverTrigger';
|
|
146
146
|
|
|
147
|
-
type PopoverTriggerElement =
|
|
147
|
+
type PopoverTriggerElement = ComponentRef<typeof Primitive.button>;
|
|
148
148
|
type PrimitiveButtonProps = ComponentPropsWithoutRef<typeof Primitive.button>;
|
|
149
|
-
|
|
149
|
+
type PopoverTriggerProps = PrimitiveButtonProps & {
|
|
150
150
|
asChild?: boolean;
|
|
151
|
-
}
|
|
151
|
+
};
|
|
152
152
|
|
|
153
153
|
const PopoverTrigger = forwardRef<PopoverTriggerElement, PopoverTriggerProps>(
|
|
154
154
|
(props: ScopedProps<PopoverTriggerProps>, forwardedRef) => {
|
|
@@ -189,9 +189,9 @@ PopoverTrigger.displayName = TRIGGER_NAME;
|
|
|
189
189
|
|
|
190
190
|
const VIRTUAL_TRIGGER_NAME = 'PopoverVirtualTrigger';
|
|
191
191
|
|
|
192
|
-
|
|
192
|
+
type PopoverVirtualTriggerProps = {
|
|
193
193
|
virtualRef: RefObject<PopoverTriggerElement | null>;
|
|
194
|
-
}
|
|
194
|
+
};
|
|
195
195
|
|
|
196
196
|
const PopoverVirtualTrigger = (props: ScopedProps<PopoverVirtualTriggerProps>) => {
|
|
197
197
|
const { __scopePopover, virtualRef } = props;
|
|
@@ -219,7 +219,7 @@ const [PortalProvider, usePortalContext] = createPopoverContext<PortalContextVal
|
|
|
219
219
|
});
|
|
220
220
|
|
|
221
221
|
type PortalProps = ComponentPropsWithoutRef<typeof PortalPrimitive>;
|
|
222
|
-
|
|
222
|
+
type PopoverPortalProps = {
|
|
223
223
|
children?: ReactNode;
|
|
224
224
|
/**
|
|
225
225
|
* Specify a container element to portal the content into.
|
|
@@ -230,9 +230,9 @@ interface PopoverPortalProps {
|
|
|
230
230
|
* controlling animation with React animation libraries.
|
|
231
231
|
*/
|
|
232
232
|
forceMount?: true;
|
|
233
|
-
}
|
|
233
|
+
};
|
|
234
234
|
|
|
235
|
-
const PopoverPortal
|
|
235
|
+
const PopoverPortal = (props: ScopedProps<PopoverPortalProps>) => {
|
|
236
236
|
const { __scopePopover, forceMount, children, container } = props;
|
|
237
237
|
const context = usePopoverContext(PORTAL_NAME, __scopePopover);
|
|
238
238
|
return (
|
|
@@ -397,31 +397,31 @@ const PopoverContentNonModal = forwardRef<PopoverContentTypeElement, PopoverCont
|
|
|
397
397
|
},
|
|
398
398
|
);
|
|
399
399
|
|
|
400
|
-
type PopoverContentImplElement =
|
|
400
|
+
type PopoverContentImplElement = ComponentRef<typeof PopperPrimitive.Content>;
|
|
401
401
|
type FocusScopeProps = ComponentPropsWithoutRef<typeof FocusScope>;
|
|
402
402
|
type DismissableLayerProps = ComponentPropsWithoutRef<typeof DismissableLayer>;
|
|
403
403
|
type PopperContentProps = ThemedClassName<ComponentPropsWithoutRef<typeof PopperPrimitive.Content>>;
|
|
404
404
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
}
|
|
405
|
+
type PopoverContentImplProps = Omit<PopperContentProps, 'onPlaced'> &
|
|
406
|
+
Omit<DismissableLayerProps, 'onDismiss'> & {
|
|
407
|
+
/**
|
|
408
|
+
* Whether focus should be trapped within the `Popover`
|
|
409
|
+
* (default: false)
|
|
410
|
+
*/
|
|
411
|
+
trapFocus?: FocusScopeProps['trapped'];
|
|
412
|
+
|
|
413
|
+
/**
|
|
414
|
+
* Event handler called when auto-focusing on open.
|
|
415
|
+
* Can be prevented.
|
|
416
|
+
*/
|
|
417
|
+
onOpenAutoFocus?: FocusScopeProps['onMountAutoFocus'];
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* Event handler called when auto-focusing on close.
|
|
421
|
+
* Can be prevented.
|
|
422
|
+
*/
|
|
423
|
+
onCloseAutoFocus?: FocusScopeProps['onUnmountAutoFocus'];
|
|
424
|
+
};
|
|
425
425
|
|
|
426
426
|
const PopoverContentImpl = forwardRef<PopoverContentImplElement, PopoverContentImplProps>(
|
|
427
427
|
(props: ScopedProps<PopoverContentImplProps>, forwardedRef) => {
|
|
@@ -514,8 +514,8 @@ const PopoverContentImpl = forwardRef<PopoverContentImplElement, PopoverContentI
|
|
|
514
514
|
|
|
515
515
|
const CLOSE_NAME = 'PopoverClose';
|
|
516
516
|
|
|
517
|
-
type PopoverCloseElement =
|
|
518
|
-
|
|
517
|
+
type PopoverCloseElement = ComponentRef<typeof Primitive.button>;
|
|
518
|
+
type PopoverCloseProps = PrimitiveButtonProps;
|
|
519
519
|
|
|
520
520
|
const PopoverClose = forwardRef<PopoverCloseElement, PopoverCloseProps>(
|
|
521
521
|
(props: ScopedProps<PopoverCloseProps>, forwardedRef) => {
|
|
@@ -540,9 +540,9 @@ PopoverClose.displayName = CLOSE_NAME;
|
|
|
540
540
|
|
|
541
541
|
const ARROW_NAME = 'PopoverArrow';
|
|
542
542
|
|
|
543
|
-
type PopoverArrowElement =
|
|
543
|
+
type PopoverArrowElement = ComponentRef<typeof PopperPrimitive.Arrow>;
|
|
544
544
|
type PopperArrowProps = ThemedClassName<ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>>;
|
|
545
|
-
|
|
545
|
+
type PopoverArrowProps = PopperArrowProps;
|
|
546
546
|
|
|
547
547
|
const PopoverArrow = forwardRef<PopoverArrowElement, PopoverArrowProps>(
|
|
548
548
|
(props: ScopedProps<PopoverArrowProps>, forwardedRef) => {
|