@sanity/ui 4.0.0-beta.8 → 4.0.0-next.2
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 +1 -1
- package/README.md +21 -7
- package/dist/_chunks/getScopedTheme.cjs +4043 -0
- package/dist/_chunks/getScopedTheme.cjs.map +1 -0
- package/dist/_chunks/getScopedTheme.js +3803 -0
- package/dist/_chunks/getScopedTheme.js.map +1 -0
- package/dist/_chunks/refractor.cjs +18 -0
- package/dist/_chunks/refractor.cjs.map +1 -0
- package/dist/_chunks/refractor.js +20 -0
- package/dist/_chunks/refractor.js.map +1 -0
- package/dist/_chunks/rgba.d.cts +929 -0
- package/dist/_chunks/rgba.d.cts.map +1 -0
- package/dist/_chunks/rgba.d.ts +929 -0
- package/dist/_chunks/rgba.d.ts.map +1 -0
- package/dist/index.cjs +6243 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +2332 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +1767 -1190
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6134 -4725
- package/dist/index.js.map +1 -1
- package/dist/theme.cjs +54 -0
- package/dist/theme.cjs.map +1 -0
- package/dist/theme.d.cts +278 -0
- package/dist/theme.d.cts.map +1 -0
- package/dist/theme.d.ts +278 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +53 -0
- package/dist/theme.js.map +1 -0
- package/package.json +55 -86
- package/dist/_chunks-es/Syntax.js +0 -23
- package/dist/_chunks-es/Syntax.js.map +0 -1
- package/dist/index.css +0 -1
- package/exports/index.css +0 -1
- package/exports/index.ts +0 -125
- package/src/components/autocomplete/Autocomplete.tsx +0 -665
- package/src/components/autocomplete/AutocompleteOption.tsx +0 -42
- package/src/components/autocomplete/__workshop__/Async.tsx +0 -162
- package/src/components/autocomplete/__workshop__/ConstrainedHeight.tsx +0 -121
- package/src/components/autocomplete/__workshop__/Custom.tsx +0 -91
- package/src/components/autocomplete/__workshop__/Example.tsx +0 -70
- package/src/components/autocomplete/__workshop__/FocusAndBlur.tsx +0 -39
- package/src/components/autocomplete/__workshop__/Fullscreen.tsx +0 -307
- package/src/components/autocomplete/__workshop__/index.ts +0 -41
- package/src/components/autocomplete/__workshop__/mock/apiStore.ts +0 -49
- package/src/components/autocomplete/__workshop__/mock/countries.ts +0 -245
- package/src/components/autocomplete/__workshop__/types.ts +0 -4
- package/src/components/autocomplete/autocompleteReducer.ts +0 -47
- package/src/components/autocomplete/constants.ts +0 -28
- package/src/components/autocomplete/types.ts +0 -103
- package/src/components/breadcrumbs/Breadcrumbs.tsx +0 -163
- package/src/components/breadcrumbs/__workshop__/Example.tsx +0 -48
- package/src/components/breadcrumbs/__workshop__/index.ts +0 -16
- package/src/components/dialog/Dialog.tsx +0 -230
- package/src/components/dialog/DialogCard.tsx +0 -233
- package/src/components/dialog/DialogContext.ts +0 -21
- package/src/components/dialog/DialogProvider.tsx +0 -34
- package/src/components/dialog/__workshop__/Activate.tsx +0 -141
- package/src/components/dialog/__workshop__/AutoFocus.tsx +0 -29
- package/src/components/dialog/__workshop__/Layering.tsx +0 -41
- package/src/components/dialog/__workshop__/Nested.tsx +0 -71
- package/src/components/dialog/__workshop__/OnScroll.tsx +0 -51
- package/src/components/dialog/__workshop__/Panes.tsx +0 -75
- package/src/components/dialog/__workshop__/Position.tsx +0 -30
- package/src/components/dialog/__workshop__/Props.tsx +0 -93
- package/src/components/dialog/__workshop__/Provider.tsx +0 -11
- package/src/components/dialog/__workshop__/Wrapped.tsx +0 -76
- package/src/components/dialog/__workshop__/index.ts +0 -21
- package/src/components/dialog/isTargetWithinScope.ts +0 -14
- package/src/components/dialog/types.ts +0 -2
- package/src/components/dialog/useDialog.ts +0 -11
- package/src/components/hotkeys/Hotkeys.tsx +0 -70
- package/src/components/hotkeys/__workshop__/Plain.tsx +0 -9
- package/src/components/hotkeys/__workshop__/index.ts +0 -16
- package/src/components/menu/Menu.test.tsx +0 -125
- package/src/components/menu/Menu.tsx +0 -174
- package/src/components/menu/MenuButton.tsx +0 -231
- package/src/components/menu/MenuContext.ts +0 -19
- package/src/components/menu/MenuDivider.tsx +0 -32
- package/src/components/menu/MenuGroup.tsx +0 -240
- package/src/components/menu/MenuItem.tsx +0 -153
- package/src/components/menu/__workshop__/AsComponent.tsx +0 -45
- package/src/components/menu/__workshop__/AvatarMenu.tsx +0 -36
- package/src/components/menu/__workshop__/ClosableMenuButton.tsx +0 -47
- package/src/components/menu/__workshop__/ConstrainedInBoundary.tsx +0 -133
- package/src/components/menu/__workshop__/CustomMenuItem.tsx +0 -47
- package/src/components/menu/__workshop__/CustomSelectedState.tsx +0 -35
- package/src/components/menu/__workshop__/DataProps.tsx +0 -27
- package/src/components/menu/__workshop__/DisableFocusOnClose.tsx +0 -40
- package/src/components/menu/__workshop__/Groups.tsx +0 -164
- package/src/components/menu/__workshop__/MenuButton.tsx +0 -79
- package/src/components/menu/__workshop__/MenuGroupRight.tsx +0 -73
- package/src/components/menu/__workshop__/NestedMenu.tsx +0 -22
- package/src/components/menu/__workshop__/OnCloseMenuButton.tsx +0 -50
- package/src/components/menu/__workshop__/SelectedItem.tsx +0 -69
- package/src/components/menu/__workshop__/ShouldFocus.tsx +0 -42
- package/src/components/menu/__workshop__/Tones.tsx +0 -19
- package/src/components/menu/__workshop__/index.ts +0 -91
- package/src/components/menu/helpers.ts +0 -82
- package/src/components/menu/useMenu.ts +0 -21
- package/src/components/menu/useMenuController.ts +0 -245
- package/src/components/tab/Tab.tsx +0 -135
- package/src/components/tab/TabList.tsx +0 -157
- package/src/components/tab/TabListContext.ts +0 -10
- package/src/components/tab/TabPanel.tsx +0 -94
- package/src/components/tab/__workshop__/Example.tsx +0 -135
- package/src/components/tab/__workshop__/index.ts +0 -16
- package/src/components/tab/types.ts +0 -11
- package/src/components/toast/Toast.test.tsx +0 -103
- package/src/components/toast/Toast.tsx +0 -191
- package/src/components/toast/ToastContext.ts +0 -7
- package/src/components/toast/ToastLayer.tsx +0 -54
- package/src/components/toast/ToastProvider.tsx +0 -127
- package/src/components/toast/__workshop__/Hook.tsx +0 -71
- package/src/components/toast/__workshop__/Toast.tsx +0 -26
- package/src/components/toast/__workshop__/index.ts +0 -21
- package/src/components/toast/toastState.ts +0 -6
- package/src/components/toast/types.ts +0 -24
- package/src/components/toast/useToast.ts +0 -23
- package/src/components/tree/Tree.tsx +0 -248
- package/src/components/tree/TreeContext.ts +0 -10
- package/src/components/tree/TreeGroup.tsx +0 -46
- package/src/components/tree/TreeItem.tsx +0 -236
- package/src/components/tree/__workshop__/Basic.tsx +0 -108
- package/src/components/tree/__workshop__/TabFromElement.tsx +0 -84
- package/src/components/tree/__workshop__/basic.perf.ts +0 -19
- package/src/components/tree/__workshop__/index.ts +0 -23
- package/src/components/tree/helpers.ts +0 -105
- package/src/components/tree/types.ts +0 -24
- package/src/components/tree/useTree.ts +0 -17
- package/src/components/virtualList/VirtualList.tsx +0 -254
- package/src/components/virtualList/__workshop__/ChangingProps.tsx +0 -41
- package/src/components/virtualList/__workshop__/ElementScroll.tsx +0 -43
- package/src/components/virtualList/__workshop__/InfiniteList.tsx +0 -40
- package/src/components/virtualList/__workshop__/WindowScrolll.tsx +0 -23
- package/src/components/virtualList/__workshop__/index.ts +0 -31
- package/src/core/_keys.ts +0 -26
- package/src/core/constants.ts +0 -67
- package/src/core/getElementRef.ts +0 -29
- package/src/core/helpers/animation.ts +0 -26
- package/src/core/helpers/element.ts +0 -55
- package/src/core/helpers/focus.ts +0 -92
- package/src/core/helpers/props.ts +0 -51
- package/src/core/helpers/scroll.ts +0 -15
- package/src/core/lib/createGlobalScopedContext.ts +0 -39
- package/src/core/lib/globalScope.ts +0 -19
- package/src/core/lib/isArray.ts +0 -3
- package/src/core/lib/isRecord.ts +0 -3
- package/src/core/types.ts +0 -57
- package/src/hooks/useClickOutsideEvent.test.tsx +0 -114
- package/src/hooks/useClickOutsideEvent.ts +0 -66
- package/src/hooks/useCustomValidity.ts +0 -13
- package/src/hooks/useElementSize.ts +0 -19
- package/src/hooks/useGlobalKeyDown.ts +0 -23
- package/src/hooks/useMatchMedia.ts +0 -28
- package/src/hooks/useMediaIndex/__workshop__/Test.tsx +0 -14
- package/src/hooks/useMediaIndex/__workshop__/index.ts +0 -16
- package/src/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -21
- package/src/hooks/useMediaIndex/useMediaIndex.ts +0 -111
- package/src/hooks/useMounted.ts +0 -15
- package/src/hooks/usePrefersDark.hydration.test.tsx +0 -56
- package/src/hooks/usePrefersDark.test.tsx +0 -20
- package/src/hooks/usePrefersDark.ts +0 -16
- package/src/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -56
- package/src/hooks/usePrefersReducedMotion.test.tsx +0 -20
- package/src/hooks/usePrefersReducedMotion.ts +0 -16
- package/src/hooks/useResponsiveProp.ts +0 -14
- package/src/hooks/useUnique.ts +0 -54
- package/src/middleware/origin.ts +0 -47
- package/src/observers/elementSize.ts +0 -114
- package/src/primitives/_syntax/LazySyntax.tsx +0 -4
- package/src/primitives/_syntax/Syntax.tsx +0 -26
- package/src/primitives/avatar/Avatar.tsx +0 -145
- package/src/primitives/avatar/AvatarCounter.tsx +0 -69
- package/src/primitives/avatar/AvatarStack.tsx +0 -77
- package/src/primitives/avatar/__workshop__/AsButton.tsx +0 -12
- package/src/primitives/avatar/__workshop__/PropsStory.tsx +0 -24
- package/src/primitives/avatar/__workshop__/Stack.tsx +0 -27
- package/src/primitives/avatar/__workshop__/WithinButton.tsx +0 -51
- package/src/primitives/avatar/__workshop__/WithinMenuItem.tsx +0 -52
- package/src/primitives/avatar/__workshop__/index.ts +0 -36
- package/src/primitives/avatar/types.ts +0 -2
- package/src/primitives/badge/Badge.test.tsx +0 -16
- package/src/primitives/badge/Badge.tsx +0 -53
- package/src/primitives/badge/__workshop__/Props.tsx +0 -27
- package/src/primitives/badge/__workshop__/Tones.tsx +0 -15
- package/src/primitives/badge/__workshop__/index.ts +0 -26
- package/src/primitives/badge/__workshop__/within-button.tsx +0 -36
- package/src/primitives/box/Box.tsx +0 -73
- package/src/primitives/box/__workshop__/Props.tsx +0 -26
- package/src/primitives/box/__workshop__/Responsive.tsx +0 -19
- package/src/primitives/box/__workshop__/index.ts +0 -21
- package/src/primitives/button/Button.test.tsx +0 -30
- package/src/primitives/button/Button.tsx +0 -148
- package/src/primitives/button/__workshop__/Custom.tsx +0 -39
- package/src/primitives/button/__workshop__/CustomIcons.tsx +0 -37
- package/src/primitives/button/__workshop__/DataProps.tsx +0 -18
- package/src/primitives/button/__workshop__/Disabled.tsx +0 -43
- package/src/primitives/button/__workshop__/MixedChildren.tsx +0 -12
- package/src/primitives/button/__workshop__/Props.tsx +0 -60
- package/src/primitives/button/__workshop__/Stacked.tsx +0 -60
- package/src/primitives/button/__workshop__/Styled1.css.ts +0 -7
- package/src/primitives/button/__workshop__/Styled1.tsx +0 -11
- package/src/primitives/button/__workshop__/TextOverflow.tsx +0 -17
- package/src/primitives/button/__workshop__/UploadButton.tsx +0 -28
- package/src/primitives/button/__workshop__/index.ts +0 -61
- package/src/primitives/button/types.ts +0 -2
- package/src/primitives/card/Card.tsx +0 -124
- package/src/primitives/card/CardContext.ts +0 -10
- package/src/primitives/card/CardInternalContext.ts +0 -10
- package/src/primitives/card/CardInternalProvider.tsx +0 -15
- package/src/primitives/card/CardProvider.tsx +0 -16
- package/src/primitives/card/__workshop__/AsButton.tsx +0 -103
- package/src/primitives/card/__workshop__/AsComponent.tsx +0 -25
- package/src/primitives/card/__workshop__/Checkered.tsx +0 -25
- package/src/primitives/card/__workshop__/DataProps.tsx +0 -25
- package/src/primitives/card/__workshop__/Interactive.tsx +0 -29
- package/src/primitives/card/__workshop__/ListNavigation.tsx +0 -78
- package/src/primitives/card/__workshop__/Props.tsx +0 -59
- package/src/primitives/card/__workshop__/Selected.tsx +0 -62
- package/src/primitives/card/__workshop__/Styled.tsx +0 -11
- package/src/primitives/card/__workshop__/Tones.tsx +0 -26
- package/src/primitives/card/__workshop__/index.ts +0 -21
- package/src/primitives/card/types.ts +0 -21
- package/src/primitives/card/useCard.ts +0 -20
- package/src/primitives/checkbox/Checkbox.tsx +0 -80
- package/src/primitives/checkbox/__workshop__/Example.tsx +0 -25
- package/src/primitives/checkbox/__workshop__/Props.tsx +0 -35
- package/src/primitives/checkbox/__workshop__/ReadOnly.tsx +0 -16
- package/src/primitives/checkbox/__workshop__/Tones.tsx +0 -26
- package/src/primitives/checkbox/__workshop__/index.ts +0 -15
- package/src/primitives/code/Code.tsx +0 -47
- package/src/primitives/code/__workshop__/OpticalAlignment.tsx +0 -25
- package/src/primitives/code/__workshop__/Props.tsx +0 -20
- package/src/primitives/code/__workshop__/index.ts +0 -21
- package/src/primitives/container/Container.tsx +0 -43
- package/src/primitives/container/__workshop__/Example.tsx +0 -16
- package/src/primitives/container/__workshop__/index.ts +0 -16
- package/src/primitives/container/types.ts +0 -6
- package/src/primitives/flex/Flex.tsx +0 -38
- package/src/primitives/flex/__workshop__/Example.tsx +0 -26
- package/src/primitives/flex/__workshop__/Gap.tsx +0 -25
- package/src/primitives/flex/__workshop__/index.ts +0 -13
- package/src/primitives/flex/__workshop__/styles.css.ts +0 -12
- package/src/primitives/grid/Grid.tsx +0 -38
- package/src/primitives/grid/__workshop__/Responsive.tsx +0 -54
- package/src/primitives/grid/__workshop__/index.ts +0 -12
- package/src/primitives/heading/Heading.tsx +0 -68
- package/src/primitives/heading/__workshop__/OpticalAlignment.tsx +0 -27
- package/src/primitives/heading/__workshop__/Plain.tsx +0 -25
- package/src/primitives/heading/__workshop__/index.ts +0 -21
- package/src/primitives/inline/Inline.tsx +0 -37
- package/src/primitives/inline/__workshop__/Plain.tsx +0 -22
- package/src/primitives/inline/__workshop__/index.ts +0 -10
- package/src/primitives/kbd/Kbd.tsx +0 -36
- package/src/primitives/kbd/__workshop__/Plain.tsx +0 -9
- package/src/primitives/kbd/__workshop__/index.ts +0 -10
- package/src/primitives/label/Label.tsx +0 -67
- package/src/primitives/label/__workshop__/OpticalAlignment.tsx +0 -27
- package/src/primitives/label/__workshop__/Plain.tsx +0 -27
- package/src/primitives/label/__workshop__/index.ts +0 -21
- package/src/primitives/layer/Layer.test.tsx +0 -110
- package/src/primitives/layer/Layer.tsx +0 -35
- package/src/primitives/layer/LayerCard.tsx +0 -90
- package/src/primitives/layer/LayerContext.ts +0 -7
- package/src/primitives/layer/LayerProvider.tsx +0 -106
- package/src/primitives/layer/__workshop__/MultipleRoots.tsx +0 -49
- package/src/primitives/layer/__workshop__/Nested.tsx +0 -107
- package/src/primitives/layer/__workshop__/ResponsiveZOffset.tsx +0 -17
- package/src/primitives/layer/__workshop__/_debug.tsx +0 -17
- package/src/primitives/layer/__workshop__/index.ts +0 -26
- package/src/primitives/layer/getLayerContext.test.ts +0 -32
- package/src/primitives/layer/getLayerContext.ts +0 -21
- package/src/primitives/layer/types.ts +0 -9
- package/src/primitives/layer/useLayer.ts +0 -24
- package/src/primitives/popover/Popover.tsx +0 -291
- package/src/primitives/popover/PopoverLayer.tsx +0 -101
- package/src/primitives/popover/__workshop__/AlignedStory.tsx +0 -75
- package/src/primitives/popover/__workshop__/MarginsStory.tsx +0 -31
- package/src/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +0 -32
- package/src/primitives/popover/__workshop__/OpenOnMountStory.tsx +0 -11
- package/src/primitives/popover/__workshop__/PlainStory.tsx +0 -67
- package/src/primitives/popover/__workshop__/RecursiveStory.tsx +0 -71
- package/src/primitives/popover/__workshop__/SidePanelStory.tsx +0 -95
- package/src/primitives/popover/__workshop__/TestStory.tsx +0 -97
- package/src/primitives/popover/__workshop__/index.ts +0 -56
- package/src/primitives/popover/__workshop__/portal-inheritance.tsx +0 -15
- package/src/primitives/popover/constants.ts +0 -20
- package/src/primitives/popover/floating-ui/size.ts +0 -75
- package/src/primitives/popover/types.ts +0 -12
- package/src/primitives/popover/useMiddleware.ts +0 -126
- package/src/primitives/radio/Radio.tsx +0 -64
- package/src/primitives/radio/__workshop__/Example.tsx +0 -63
- package/src/primitives/radio/__workshop__/Plain.tsx +0 -28
- package/src/primitives/radio/__workshop__/index.ts +0 -13
- package/src/primitives/select/Select.tsx +0 -76
- package/src/primitives/select/__workshop__/Plain.tsx +0 -37
- package/src/primitives/select/__workshop__/ReadOnly.tsx +0 -23
- package/src/primitives/select/__workshop__/index.ts +0 -13
- package/src/primitives/selectable/Selectable.tsx +0 -48
- package/src/primitives/selectable/__workshop__/DataProps.tsx +0 -24
- package/src/primitives/selectable/__workshop__/as-link.tsx +0 -13
- package/src/primitives/selectable/__workshop__/index.ts +0 -19
- package/src/primitives/skeleton/CodeSkeleton.tsx +0 -49
- package/src/primitives/skeleton/HeadingSkeleton.tsx +0 -48
- package/src/primitives/skeleton/LabelSkeleton.tsx +0 -47
- package/src/primitives/skeleton/Skeleton.tsx +0 -70
- package/src/primitives/skeleton/TextSkeleton.tsx +0 -49
- package/src/primitives/skeleton/__workshop__/Delay.tsx +0 -69
- package/src/primitives/skeleton/__workshop__/Skeleton.tsx +0 -63
- package/src/primitives/skeleton/__workshop__/index.ts +0 -13
- package/src/primitives/spinner/Spinner.tsx +0 -45
- package/src/primitives/spinner/SpinnerAnimatedIcon.tsx +0 -14
- package/src/primitives/spinner/__workshop__/Props.tsx +0 -13
- package/src/primitives/spinner/__workshop__/index.ts +0 -16
- package/src/primitives/srOnly/SrOnly.tsx +0 -33
- package/src/primitives/stack/Stack.tsx +0 -38
- package/src/primitives/stack/__workshop__/Plain.tsx +0 -30
- package/src/primitives/stack/__workshop__/index.ts +0 -16
- package/src/primitives/switch/Switch.tsx +0 -76
- package/src/primitives/switch/__workshop__/Example.tsx +0 -25
- package/src/primitives/switch/__workshop__/Props.tsx +0 -23
- package/src/primitives/switch/__workshop__/index.ts +0 -13
- package/src/primitives/text/InlineCode.tsx +0 -25
- package/src/primitives/text/Text.tsx +0 -68
- package/src/primitives/text/__workshop__/Example.tsx +0 -26
- package/src/primitives/text/__workshop__/OpticalAlignment.tsx +0 -27
- package/src/primitives/text/__workshop__/index.ts +0 -26
- package/src/primitives/text/__workshop__/inline-code.tsx +0 -13
- package/src/primitives/textArea/TextArea.tsx +0 -97
- package/src/primitives/textArea/__workshop__/Plain.tsx +0 -46
- package/src/primitives/textArea/__workshop__/index.ts +0 -16
- package/src/primitives/textInput/TextInput.tsx +0 -279
- package/src/primitives/textInput/__workshop__/ClearButton.tsx +0 -32
- package/src/primitives/textInput/__workshop__/CustomValidity.tsx +0 -17
- package/src/primitives/textInput/__workshop__/Plain.tsx +0 -102
- package/src/primitives/textInput/__workshop__/ReadOnly.tsx +0 -14
- package/src/primitives/textInput/__workshop__/States.tsx +0 -53
- package/src/primitives/textInput/__workshop__/Tones.tsx +0 -40
- package/src/primitives/textInput/__workshop__/Typed.tsx +0 -23
- package/src/primitives/textInput/__workshop__/index.ts +0 -46
- package/src/primitives/tooltip/Tooltip.test.tsx +0 -496
- package/src/primitives/tooltip/Tooltip.tsx +0 -546
- package/src/primitives/tooltip/TooltipLayer.tsx +0 -72
- package/src/primitives/tooltip/__workshop__/CustomPortal.tsx +0 -102
- package/src/primitives/tooltip/__workshop__/OverflowingBoundary.tsx +0 -74
- package/src/primitives/tooltip/__workshop__/Props.tsx +0 -107
- package/src/primitives/tooltip/__workshop__/ResizableBoundary.tsx +0 -91
- package/src/primitives/tooltip/__workshop__/index.ts +0 -31
- package/src/primitives/tooltip/constants.ts +0 -24
- package/src/primitives/tooltip/tooltipDelayGroup/TooltipDelayGroupContext.tsx +0 -13
- package/src/primitives/tooltip/tooltipDelayGroup/TooltipDelayGroupProvider.tsx +0 -96
- package/src/primitives/tooltip/tooltipDelayGroup/types.ts +0 -7
- package/src/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
- package/src/root/Root.tsx +0 -93
- package/src/root/RootProvider.tsx +0 -37
- package/src/root/__workshop__/Boundary.tsx +0 -43
- package/src/root/__workshop__/index.ts +0 -24
- package/src/root/__workshop__/primitives.tsx +0 -49
- package/src/root/__workshop__/tone-inheritance.tsx +0 -65
- package/src/utils/ErrorBoundary.tsx +0 -50
- package/src/utils/boundaryElement/BoundaryElementContext.ts +0 -7
- package/src/utils/boundaryElement/BoundaryElementProvider.tsx +0 -16
- package/src/utils/boundaryElement/__workshop__/Plain.tsx +0 -49
- package/src/utils/boundaryElement/__workshop__/index.ts +0 -16
- package/src/utils/boundaryElement/types.ts +0 -2
- package/src/utils/boundaryElement/useBoundaryElement.ts +0 -12
- package/src/utils/elementQuery/ElementQuery.tsx +0 -75
- package/src/utils/elementQuery/__workshop__/CustomMedia.tsx +0 -19
- package/src/utils/elementQuery/__workshop__/index.ts +0 -16
- package/src/utils/elementQuery/__workshop__/styles.css.ts +0 -31
- package/src/utils/elementQuery/helpers.ts +0 -27
- package/src/utils/portal/Portal.test.tsx +0 -105
- package/src/utils/portal/Portal.tsx +0 -42
- package/src/utils/portal/PortalContext.ts +0 -37
- package/src/utils/portal/PortalProvider.tsx +0 -38
- package/src/utils/portal/__workshop__/Named.tsx +0 -69
- package/src/utils/portal/__workshop__/index.ts +0 -16
- package/src/utils/portal/types.ts +0 -7
- package/src/utils/portal/usePortal.ts +0 -30
|
@@ -1,496 +0,0 @@
|
|
|
1
|
-
import {act, fireEvent, screen} from '@testing-library/react'
|
|
2
|
-
import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest'
|
|
3
|
-
|
|
4
|
-
import {render} from '$test/utils'
|
|
5
|
-
|
|
6
|
-
import {Button} from '../button/Button'
|
|
7
|
-
import {Tooltip} from './Tooltip'
|
|
8
|
-
import {TooltipDelayGroupProvider} from './tooltipDelayGroup/TooltipDelayGroupProvider'
|
|
9
|
-
|
|
10
|
-
async function advance(ms: number) {
|
|
11
|
-
await act(async () => {
|
|
12
|
-
vi.advanceTimersByTime(ms)
|
|
13
|
-
})
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
async function flushAll() {
|
|
17
|
-
await act(async () => {
|
|
18
|
-
await vi.runAllTimersAsync()
|
|
19
|
-
})
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// Fake timers
|
|
23
|
-
beforeEach(() => {
|
|
24
|
-
vi.useFakeTimers()
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
// Running all pending timers and switching to real timers
|
|
28
|
-
afterEach(() => {
|
|
29
|
-
vi.runOnlyPendingTimers()
|
|
30
|
-
vi.useRealTimers()
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
describe('Tooltip', () => {
|
|
34
|
-
describe('Using same delay for open and close', () => {
|
|
35
|
-
it('should hide and show the tooltip content when hovered, with no delay', () => {
|
|
36
|
-
render(
|
|
37
|
-
<Tooltip animate={false} delay={0} placement={'top'} text="Tooltip content">
|
|
38
|
-
<Button mode="bleed" text="Hover me" />
|
|
39
|
-
</Tooltip>,
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
const button = screen.getByText('Hover me')
|
|
43
|
-
|
|
44
|
-
// Validate tooltip content is not rendered
|
|
45
|
-
expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
|
|
46
|
-
|
|
47
|
-
fireEvent.mouseEnter(button)
|
|
48
|
-
|
|
49
|
-
// With delay=0, advance timers to show tooltip
|
|
50
|
-
act(() => vi.advanceTimersByTime(1))
|
|
51
|
-
expect(screen.getByText('Tooltip content')).toBeInTheDocument()
|
|
52
|
-
|
|
53
|
-
fireEvent.mouseLeave(button)
|
|
54
|
-
|
|
55
|
-
// Advance timers to hide tooltip
|
|
56
|
-
act(() => vi.advanceTimersByTime(1))
|
|
57
|
-
expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
|
|
58
|
-
})
|
|
59
|
-
it('should support delays to show and hide the tooltip.', () => {
|
|
60
|
-
vi.useFakeTimers()
|
|
61
|
-
const delay = 200
|
|
62
|
-
|
|
63
|
-
render(
|
|
64
|
-
<Tooltip animate={false} delay={delay} placement={'top'} text="Tooltip content">
|
|
65
|
-
<Button mode="bleed" text="Hover me" />
|
|
66
|
-
</Tooltip>,
|
|
67
|
-
)
|
|
68
|
-
|
|
69
|
-
const button = screen.getByText('Hover me')
|
|
70
|
-
|
|
71
|
-
// Validate tooltip content is not rendered
|
|
72
|
-
expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
|
|
73
|
-
|
|
74
|
-
fireEvent.mouseEnter(button)
|
|
75
|
-
|
|
76
|
-
act(() => vi.advanceTimersByTime(delay / 2))
|
|
77
|
-
// Content should not be rendered yet
|
|
78
|
-
expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
|
|
79
|
-
act(() => vi.advanceTimersByTime(delay / 2))
|
|
80
|
-
|
|
81
|
-
// Validate tooltip content is rendered
|
|
82
|
-
screen.getByText('Tooltip content')
|
|
83
|
-
|
|
84
|
-
fireEvent.mouseLeave(button)
|
|
85
|
-
// Validate tooltip content is still showing.
|
|
86
|
-
screen.getByText('Tooltip content')
|
|
87
|
-
act(() => vi.advanceTimersByTime(delay))
|
|
88
|
-
// Validate tooltip content is not rendered anymore
|
|
89
|
-
expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
|
|
90
|
-
})
|
|
91
|
-
it('should support different open and close delays to show and hide the tooltip.', () => {
|
|
92
|
-
vi.useFakeTimers()
|
|
93
|
-
const openDelay = 200
|
|
94
|
-
const closeDelay = 150
|
|
95
|
-
|
|
96
|
-
render(
|
|
97
|
-
<Tooltip
|
|
98
|
-
animate={false}
|
|
99
|
-
delay={{
|
|
100
|
-
open: openDelay,
|
|
101
|
-
close: closeDelay,
|
|
102
|
-
}}
|
|
103
|
-
placement={'top'}
|
|
104
|
-
text="Tooltip content"
|
|
105
|
-
>
|
|
106
|
-
<Button mode="bleed" text="Hover me" />
|
|
107
|
-
</Tooltip>,
|
|
108
|
-
)
|
|
109
|
-
|
|
110
|
-
const button = screen.getByText('Hover me')
|
|
111
|
-
|
|
112
|
-
// Validate tooltip content is not rendered
|
|
113
|
-
expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
|
|
114
|
-
|
|
115
|
-
fireEvent.mouseEnter(button)
|
|
116
|
-
|
|
117
|
-
act(() => vi.advanceTimersByTime(openDelay / 2))
|
|
118
|
-
// Content should not be rendered yet
|
|
119
|
-
expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
|
|
120
|
-
act(() => vi.advanceTimersByTime(openDelay / 2))
|
|
121
|
-
|
|
122
|
-
// Validate tooltip content is rendered
|
|
123
|
-
screen.getByText('Tooltip content')
|
|
124
|
-
|
|
125
|
-
fireEvent.mouseLeave(button)
|
|
126
|
-
// Validate tooltip content is still showing.
|
|
127
|
-
screen.getByText('Tooltip content')
|
|
128
|
-
act(() => vi.advanceTimersByTime(closeDelay))
|
|
129
|
-
// Validate tooltip content is not rendered anymore
|
|
130
|
-
expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
|
|
131
|
-
})
|
|
132
|
-
})
|
|
133
|
-
|
|
134
|
-
describe('Using the <TooltipDelayGroupProvider />', () => {
|
|
135
|
-
it('should support groups with the same delay to open and close.', async () => {
|
|
136
|
-
const delay = 150
|
|
137
|
-
|
|
138
|
-
vi.useFakeTimers()
|
|
139
|
-
render(
|
|
140
|
-
<TooltipDelayGroupProvider delay={delay}>
|
|
141
|
-
<Tooltip animate={false} delay={400} placement={'top'} text="Tooltip 1">
|
|
142
|
-
<Button mode="bleed" text="Button 1" />
|
|
143
|
-
</Tooltip>
|
|
144
|
-
<Tooltip
|
|
145
|
-
animate={false}
|
|
146
|
-
delay={400} // This should be overridden by the group delay
|
|
147
|
-
placement={'top'}
|
|
148
|
-
text="Tooltip 2"
|
|
149
|
-
>
|
|
150
|
-
<Button mode="bleed" text="Button 2" />
|
|
151
|
-
</Tooltip>
|
|
152
|
-
</TooltipDelayGroupProvider>,
|
|
153
|
-
)
|
|
154
|
-
|
|
155
|
-
const button1 = screen.getByText('Button 1')
|
|
156
|
-
const button2 = screen.getByText('Button 2')
|
|
157
|
-
|
|
158
|
-
// Validate tooltip content is not rendered
|
|
159
|
-
expect(screen.queryByText('Tooltip 1')).not.toBeInTheDocument()
|
|
160
|
-
expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
|
|
161
|
-
|
|
162
|
-
// Hovers on first button, it should show first tooltip only
|
|
163
|
-
fireEvent.mouseEnter(button1)
|
|
164
|
-
act(() => vi.advanceTimersByTime(delay / 2))
|
|
165
|
-
// Content should not be rendered yet, we have a delay of 150ms
|
|
166
|
-
expect(screen.queryByText('Tooltip 1')).not.toBeInTheDocument()
|
|
167
|
-
expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
|
|
168
|
-
act(() => vi.advanceTimersByTime(delay / 2))
|
|
169
|
-
|
|
170
|
-
// Validate Tooltip 1 is rendered
|
|
171
|
-
screen.getByText('Tooltip 1')
|
|
172
|
-
expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
|
|
173
|
-
|
|
174
|
-
// Hovers on second button.
|
|
175
|
-
fireEvent.mouseLeave(button1)
|
|
176
|
-
fireEvent.mouseEnter(button2)
|
|
177
|
-
|
|
178
|
-
// Validate Tooltip 1 is not rendered, now tooltip 2 is open.
|
|
179
|
-
act(() => vi.advanceTimersByTime(1))
|
|
180
|
-
expect(screen.queryByText('Tooltip 1')).not.toBeInTheDocument()
|
|
181
|
-
screen.getByText('Tooltip 2')
|
|
182
|
-
|
|
183
|
-
// Validate tooltip content is not rendered anymore
|
|
184
|
-
fireEvent.mouseLeave(button2)
|
|
185
|
-
act(() => vi.advanceTimersByTime(delay + 1))
|
|
186
|
-
expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
|
|
187
|
-
|
|
188
|
-
// Hovering again, should trigger the tooltip to show immediately, as the group is not deactivated yet
|
|
189
|
-
fireEvent.mouseEnter(button2)
|
|
190
|
-
act(() => vi.advanceTimersByTime(1))
|
|
191
|
-
await act(async () => {
|
|
192
|
-
await vi.runAllTimersAsync()
|
|
193
|
-
})
|
|
194
|
-
screen.getByText('Tooltip 2')
|
|
195
|
-
|
|
196
|
-
// Validate tooltip content is not rendered anymore
|
|
197
|
-
fireEvent.mouseLeave(button2)
|
|
198
|
-
act(() => vi.advanceTimersByTime(delay + 1))
|
|
199
|
-
expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
|
|
200
|
-
|
|
201
|
-
// Wait 200ms, the group is deactivated, hovering again should trigger the delay
|
|
202
|
-
act(() => vi.advanceTimersByTime(200))
|
|
203
|
-
fireEvent.mouseEnter(button2)
|
|
204
|
-
act(() => vi.advanceTimersByTime(delay / 2))
|
|
205
|
-
expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
|
|
206
|
-
act(() => vi.advanceTimersByTime(delay / 2))
|
|
207
|
-
screen.getByText('Tooltip 2')
|
|
208
|
-
})
|
|
209
|
-
|
|
210
|
-
it('should support groups with different open and close delay.', async () => {
|
|
211
|
-
const openDelay = 250
|
|
212
|
-
const closeDelay = 150
|
|
213
|
-
|
|
214
|
-
vi.useFakeTimers()
|
|
215
|
-
render(
|
|
216
|
-
<TooltipDelayGroupProvider
|
|
217
|
-
delay={{
|
|
218
|
-
open: openDelay,
|
|
219
|
-
close: closeDelay,
|
|
220
|
-
}}
|
|
221
|
-
>
|
|
222
|
-
<Tooltip animate={false} delay={400} placement={'top'} text="Tooltip 1">
|
|
223
|
-
<Button mode="bleed" text="Button 1" />
|
|
224
|
-
</Tooltip>
|
|
225
|
-
<Tooltip
|
|
226
|
-
animate={false}
|
|
227
|
-
delay={400} // This should be overridden by the group delay
|
|
228
|
-
placement={'top'}
|
|
229
|
-
text="Tooltip 2"
|
|
230
|
-
>
|
|
231
|
-
<Button mode="bleed" text="Button 2" />
|
|
232
|
-
</Tooltip>
|
|
233
|
-
</TooltipDelayGroupProvider>,
|
|
234
|
-
)
|
|
235
|
-
|
|
236
|
-
const button1 = screen.getByText('Button 1')
|
|
237
|
-
const button2 = screen.getByText('Button 2')
|
|
238
|
-
|
|
239
|
-
// Validate tooltip content is not rendered
|
|
240
|
-
expect(screen.queryByText('Tooltip 1')).not.toBeInTheDocument()
|
|
241
|
-
expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
|
|
242
|
-
|
|
243
|
-
// Hovers on first button, it should show first tooltip only
|
|
244
|
-
fireEvent.mouseEnter(button1)
|
|
245
|
-
act(() => vi.advanceTimersByTime(openDelay / 2))
|
|
246
|
-
// Content should not be rendered yet, we have a delay of2150ms
|
|
247
|
-
expect(screen.queryByText('Tooltip 1')).not.toBeInTheDocument()
|
|
248
|
-
expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
|
|
249
|
-
act(() => vi.advanceTimersByTime(openDelay / 2))
|
|
250
|
-
|
|
251
|
-
// Validate Tooltip 1 is rendered
|
|
252
|
-
screen.getByText('Tooltip 1')
|
|
253
|
-
expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
|
|
254
|
-
|
|
255
|
-
// Hovers on second button.
|
|
256
|
-
fireEvent.mouseLeave(button1)
|
|
257
|
-
fireEvent.mouseEnter(button2)
|
|
258
|
-
|
|
259
|
-
// Validate Tooltip 1 is not rendered, now tooltip 2 is open.
|
|
260
|
-
act(() => vi.advanceTimersByTime(1))
|
|
261
|
-
expect(screen.queryByText('Tooltip 1')).not.toBeInTheDocument()
|
|
262
|
-
screen.getByText('Tooltip 2')
|
|
263
|
-
|
|
264
|
-
// Validate tooltip content is not rendered anymore
|
|
265
|
-
fireEvent.mouseLeave(button2)
|
|
266
|
-
act(() => vi.advanceTimersByTime(closeDelay + 1))
|
|
267
|
-
expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
|
|
268
|
-
|
|
269
|
-
// Hovering again, should trigger the tooltip to show immediately, as the group is not deactivated yet
|
|
270
|
-
fireEvent.mouseEnter(button2)
|
|
271
|
-
act(() => vi.advanceTimersByTime(1))
|
|
272
|
-
await act(async () => {
|
|
273
|
-
await vi.runAllTimersAsync()
|
|
274
|
-
})
|
|
275
|
-
screen.getByText('Tooltip 2')
|
|
276
|
-
|
|
277
|
-
// Validate tooltip content is not rendered anymore
|
|
278
|
-
fireEvent.mouseLeave(button2)
|
|
279
|
-
act(() => vi.advanceTimersByTime(closeDelay + 1))
|
|
280
|
-
expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
|
|
281
|
-
|
|
282
|
-
// Wait 200ms, the group is deactivated, hovering again should trigger the delay
|
|
283
|
-
act(() => vi.advanceTimersByTime(200))
|
|
284
|
-
fireEvent.mouseEnter(button2)
|
|
285
|
-
act(() => vi.advanceTimersByTime(openDelay / 2))
|
|
286
|
-
expect(screen.queryByText('Tooltip 2')).not.toBeInTheDocument()
|
|
287
|
-
act(() => vi.advanceTimersByTime(openDelay / 2))
|
|
288
|
-
screen.getByText('Tooltip 2')
|
|
289
|
-
})
|
|
290
|
-
})
|
|
291
|
-
|
|
292
|
-
describe('Closing the <Tooltip /> with the Escape key', () => {
|
|
293
|
-
it('Standalone tooltip closes immediately with Escape key', async () => {
|
|
294
|
-
const delay = 150
|
|
295
|
-
|
|
296
|
-
vi.useFakeTimers()
|
|
297
|
-
|
|
298
|
-
render(
|
|
299
|
-
<Tooltip animate={false} delay={delay} placement={'top'} text="Tooltip content">
|
|
300
|
-
<Button mode="bleed" text="Hover me" />
|
|
301
|
-
</Tooltip>,
|
|
302
|
-
)
|
|
303
|
-
|
|
304
|
-
const button = screen.getByText('Hover me')
|
|
305
|
-
|
|
306
|
-
// Validate tooltip content is not rendered
|
|
307
|
-
expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
|
|
308
|
-
act(() => {
|
|
309
|
-
fireEvent.focus(button)
|
|
310
|
-
})
|
|
311
|
-
await advance(delay)
|
|
312
|
-
|
|
313
|
-
// Validate tooltip content is rendered
|
|
314
|
-
expect(screen.getByText('Tooltip content')).toBeInTheDocument()
|
|
315
|
-
|
|
316
|
-
act(() => {
|
|
317
|
-
fireEvent.keyDown(button, {key: 'Escape', code: 'Escape'})
|
|
318
|
-
})
|
|
319
|
-
|
|
320
|
-
await flushAll()
|
|
321
|
-
|
|
322
|
-
// Validate tooltip content is not rendered anymore
|
|
323
|
-
expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
|
|
324
|
-
})
|
|
325
|
-
it('With <TooltipDelayGroupProvider /> closes immediately with Escape key', () => {
|
|
326
|
-
const delay = 150
|
|
327
|
-
|
|
328
|
-
vi.useFakeTimers()
|
|
329
|
-
|
|
330
|
-
render(
|
|
331
|
-
<TooltipDelayGroupProvider delay={{close: delay}}>
|
|
332
|
-
<Tooltip animate={false} delay={{close: delay}} placement={'top'} text="Tooltip content">
|
|
333
|
-
<Button mode="bleed" text="Hover me" />
|
|
334
|
-
</Tooltip>
|
|
335
|
-
</TooltipDelayGroupProvider>,
|
|
336
|
-
)
|
|
337
|
-
|
|
338
|
-
const button = screen.getByText('Hover me')
|
|
339
|
-
|
|
340
|
-
// Validate tooltip content is not rendered
|
|
341
|
-
expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
|
|
342
|
-
act(() => {
|
|
343
|
-
fireEvent.focus(button)
|
|
344
|
-
})
|
|
345
|
-
act(() => vi.advanceTimersByTime(delay))
|
|
346
|
-
|
|
347
|
-
// Validate tooltip content is rendered
|
|
348
|
-
screen.getByText('Tooltip content')
|
|
349
|
-
|
|
350
|
-
act(() => {
|
|
351
|
-
fireEvent.keyDown(button, {key: 'Escape', code: 'Escape'})
|
|
352
|
-
})
|
|
353
|
-
|
|
354
|
-
// Wait for any pending state updates to complete
|
|
355
|
-
act(() => {
|
|
356
|
-
vi.runAllTimers()
|
|
357
|
-
})
|
|
358
|
-
|
|
359
|
-
// Validate tooltip content is not rendered anymore
|
|
360
|
-
expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
|
|
361
|
-
})
|
|
362
|
-
})
|
|
363
|
-
|
|
364
|
-
describe('Clicking the <Tooltip /> child should close the tooltip', () => {
|
|
365
|
-
it('Should close the tooltip when the context menu is opened (right click)', async () => {
|
|
366
|
-
const delay = 150
|
|
367
|
-
|
|
368
|
-
render(
|
|
369
|
-
<Tooltip animate={false} delay={delay} text="Tooltip content">
|
|
370
|
-
<Button mode="bleed" text="Hover me" />
|
|
371
|
-
</Tooltip>,
|
|
372
|
-
)
|
|
373
|
-
|
|
374
|
-
const button = screen.getByText('Hover me')
|
|
375
|
-
|
|
376
|
-
// Assertion: tooltip does not exist in the document
|
|
377
|
-
expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
|
|
378
|
-
act(() => {
|
|
379
|
-
fireEvent.focus(button)
|
|
380
|
-
})
|
|
381
|
-
await advance(delay)
|
|
382
|
-
|
|
383
|
-
// Assertion: the tooltip is visible
|
|
384
|
-
expect(screen.getByText('Tooltip content')).toBeVisible()
|
|
385
|
-
|
|
386
|
-
act(() => {
|
|
387
|
-
fireEvent.contextMenu(button)
|
|
388
|
-
})
|
|
389
|
-
|
|
390
|
-
await flushAll()
|
|
391
|
-
|
|
392
|
-
// Assertion: tooltip does not exist in the document
|
|
393
|
-
expect(screen.queryByText('Tooltip content')).not.toBeInTheDocument()
|
|
394
|
-
})
|
|
395
|
-
})
|
|
396
|
-
|
|
397
|
-
describe('Used defined events on <Tooltip /> child should fire correctly', () => {
|
|
398
|
-
it('should fire the onBlur event', () => {
|
|
399
|
-
const handleBlur = vi.fn()
|
|
400
|
-
|
|
401
|
-
render(
|
|
402
|
-
<Tooltip animate={false} text="Tooltip content">
|
|
403
|
-
<Button data-testid="btn" mode="bleed" text="Hover me" onBlur={handleBlur} />
|
|
404
|
-
</Tooltip>,
|
|
405
|
-
)
|
|
406
|
-
|
|
407
|
-
act(() => fireEvent.blur(screen.getByTestId('btn')))
|
|
408
|
-
expect(handleBlur).toHaveBeenCalledTimes(1)
|
|
409
|
-
})
|
|
410
|
-
|
|
411
|
-
it('should fire the onClick event', async () => {
|
|
412
|
-
const handleClick = vi.fn()
|
|
413
|
-
|
|
414
|
-
render(
|
|
415
|
-
<Tooltip animate={false} text="Tooltip content">
|
|
416
|
-
<Button data-testid="btn" mode="bleed" text="Hover me" onClick={handleClick} />
|
|
417
|
-
</Tooltip>,
|
|
418
|
-
)
|
|
419
|
-
|
|
420
|
-
act(() => {
|
|
421
|
-
fireEvent.click(screen.getByTestId('btn'))
|
|
422
|
-
})
|
|
423
|
-
|
|
424
|
-
await flushAll()
|
|
425
|
-
|
|
426
|
-
expect(handleClick).toHaveBeenCalledTimes(1)
|
|
427
|
-
})
|
|
428
|
-
|
|
429
|
-
it('should fire the onContextMenu event', () => {
|
|
430
|
-
const handleContextMenu = vi.fn()
|
|
431
|
-
|
|
432
|
-
render(
|
|
433
|
-
<Tooltip animate={false} text="Tooltip content">
|
|
434
|
-
<Button
|
|
435
|
-
data-testid="btn"
|
|
436
|
-
mode="bleed"
|
|
437
|
-
text="Hover me"
|
|
438
|
-
onContextMenu={handleContextMenu}
|
|
439
|
-
/>
|
|
440
|
-
</Tooltip>,
|
|
441
|
-
)
|
|
442
|
-
|
|
443
|
-
act(() => fireEvent.contextMenu(screen.getByTestId('btn')))
|
|
444
|
-
expect(handleContextMenu).toHaveBeenCalledTimes(1)
|
|
445
|
-
})
|
|
446
|
-
|
|
447
|
-
it('should fire the onFocus event', async () => {
|
|
448
|
-
const handleFocus = vi.fn()
|
|
449
|
-
|
|
450
|
-
render(
|
|
451
|
-
<Tooltip animate={false} text="Tooltip content">
|
|
452
|
-
<Button data-testid="btn" mode="bleed" text="Hover me" onFocus={handleFocus} />
|
|
453
|
-
</Tooltip>,
|
|
454
|
-
)
|
|
455
|
-
|
|
456
|
-
act(() => {
|
|
457
|
-
fireEvent.focus(screen.getByTestId('btn'))
|
|
458
|
-
})
|
|
459
|
-
|
|
460
|
-
await flushAll()
|
|
461
|
-
|
|
462
|
-
expect(handleFocus).toHaveBeenCalledTimes(1)
|
|
463
|
-
})
|
|
464
|
-
|
|
465
|
-
it('should fire the onMouseEnter event', async () => {
|
|
466
|
-
const handleMouseEnter = vi.fn()
|
|
467
|
-
|
|
468
|
-
render(
|
|
469
|
-
<Tooltip animate={false} text="Tooltip content">
|
|
470
|
-
<Button data-testid="btn" mode="bleed" text="Hover me" onMouseEnter={handleMouseEnter} />
|
|
471
|
-
</Tooltip>,
|
|
472
|
-
)
|
|
473
|
-
|
|
474
|
-
act(() => {
|
|
475
|
-
fireEvent.mouseEnter(screen.getByTestId('btn'))
|
|
476
|
-
})
|
|
477
|
-
|
|
478
|
-
await flushAll()
|
|
479
|
-
|
|
480
|
-
expect(handleMouseEnter).toHaveBeenCalledTimes(1)
|
|
481
|
-
})
|
|
482
|
-
|
|
483
|
-
it('should fire the onMouseLeave event', () => {
|
|
484
|
-
const handleMouseLeave = vi.fn()
|
|
485
|
-
|
|
486
|
-
render(
|
|
487
|
-
<Tooltip animate={false} text="Tooltip content">
|
|
488
|
-
<Button data-testid="btn" mode="bleed" text="Hover me" onMouseLeave={handleMouseLeave} />
|
|
489
|
-
</Tooltip>,
|
|
490
|
-
)
|
|
491
|
-
|
|
492
|
-
act(() => fireEvent.mouseLeave(screen.getByTestId('btn')))
|
|
493
|
-
expect(handleMouseLeave).toHaveBeenCalledTimes(1)
|
|
494
|
-
})
|
|
495
|
-
})
|
|
496
|
-
})
|