reshaped 3.3.10 → 3.3.12
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 +9 -0
- package/dist/bundle.css +1 -1
- package/dist/bundle.js +10 -10
- package/dist/cjs/themes/_generator/utilities/generateColors.d.ts +1 -1
- package/dist/cjs/themes/_generator/utilities/generateColors.js +3 -2
- package/dist/cjs/themes/_generator/utilities/tests/color.test.js +32 -31
- package/dist/cjs/themes/slate/theme.css +1 -1
- package/dist/components/Accordion/tests/Accordion.stories.d.ts +30 -8
- package/dist/components/Accordion/tests/Accordion.stories.js +172 -119
- package/dist/components/ActionBar/tests/ActionBar.stories.d.ts +12 -3
- package/dist/components/ActionBar/tests/ActionBar.stories.js +51 -36
- package/dist/components/ActionBar/tests/ActionBar.test.stories.d.ts +15 -0
- package/dist/components/ActionBar/tests/ActionBar.test.stories.js +26 -0
- package/dist/components/Actionable/Actionable.js +1 -1
- package/dist/components/Actionable/Actionable.types.d.ts +3 -3
- package/dist/components/Actionable/tests/Actionable.stories.d.ts +19 -5
- package/dist/components/Actionable/tests/Actionable.stories.js +88 -63
- package/dist/components/Actionable/tests/Actionable.test.stories.d.ts +32 -0
- package/dist/components/Actionable/tests/Actionable.test.stories.js +130 -0
- package/dist/components/Alert/Alert.js +1 -1
- package/dist/components/Alert/tests/Alert.stories.d.ts +12 -3
- package/dist/components/Alert/tests/Alert.stories.js +51 -86
- package/dist/components/Alert/tests/Alert.test.stories.d.ts +15 -0
- package/dist/components/Alert/tests/Alert.test.stories.js +26 -0
- package/dist/components/Autocomplete/Autocomplete.js +9 -2
- package/dist/components/Autocomplete/tests/Autocomplete.stories.d.ts +6 -2
- package/dist/components/Autocomplete/tests/Autocomplete.stories.js +94 -111
- package/dist/components/Autocomplete/tests/Autocomplete.test.stories.d.ts +23 -0
- package/dist/components/Autocomplete/tests/Autocomplete.test.stories.js +86 -0
- package/dist/components/Avatar/Avatar.js +1 -1
- package/dist/components/Avatar/tests/Avatar.stories.d.ts +14 -4
- package/dist/components/Avatar/tests/Avatar.stories.js +94 -80
- package/dist/components/Avatar/tests/Avatar.test.stories.d.ts +17 -0
- package/dist/components/Avatar/tests/Avatar.test.stories.js +39 -0
- package/dist/components/Badge/tests/Badge.stories.d.ts +33 -8
- package/dist/components/Badge/tests/Badge.stories.js +238 -212
- package/dist/components/Badge/tests/Badge.test.stories.d.ts +20 -0
- package/dist/components/Badge/tests/Badge.test.stories.js +44 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.js +2 -2
- package/dist/components/Breadcrumbs/Breadcrumbs.types.d.ts +1 -0
- package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.d.ts +24 -5
- package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.js +114 -95
- package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.d.ts +23 -0
- package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.js +76 -0
- package/dist/components/Button/Button.js +5 -2
- package/dist/components/Button/Button.module.css +1 -1
- package/dist/components/Button/Button.types.d.ts +1 -0
- package/dist/components/Button/tests/Button.stories.d.ts +2 -2
- package/dist/components/Button/tests/Button.stories.js +77 -74
- package/dist/components/Button/tests/Button.test.stories.d.ts +27 -0
- package/dist/components/Button/tests/Button.test.stories.js +112 -0
- package/dist/components/Calendar/tests/Calendar.test.stories.d.ts +26 -0
- package/dist/components/Calendar/tests/Calendar.test.stories.js +161 -0
- package/dist/components/Card/Card.d.ts +3 -3
- package/dist/components/Card/Card.types.d.ts +1 -1
- package/dist/components/Card/tests/Card.stories.d.ts +3 -4
- package/dist/components/Card/tests/Card.stories.js +0 -11
- package/dist/components/Card/tests/Card.test.stories.d.ts +35 -0
- package/dist/components/Card/tests/Card.test.stories.js +54 -0
- package/dist/components/Carousel/Carousel.types.d.ts +1 -1
- package/dist/components/Carousel/CarouselControl.js +1 -1
- package/dist/components/Carousel/tests/Carousel.stories.d.ts +3 -0
- package/dist/components/Carousel/tests/Carousel.stories.js +5 -1
- package/dist/components/Carousel/tests/Carousel.test.stories.d.ts +17 -0
- package/dist/components/Carousel/tests/Carousel.test.stories.js +52 -0
- package/dist/components/Checkbox/tests/Checkbox.test.stories.d.ts +25 -0
- package/dist/components/Checkbox/tests/Checkbox.test.stories.js +104 -0
- package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.d.ts +22 -0
- package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.js +78 -0
- package/dist/components/Container/Container.module.css +1 -1
- package/dist/components/Container/tests/Container.stories.d.ts +12 -3
- package/dist/components/Container/tests/Container.stories.js +50 -31
- package/dist/components/Container/tests/Container.test.stories.d.ts +15 -0
- package/dist/components/Container/tests/Container.test.stories.js +26 -0
- package/dist/components/ContextMenu/ContextMenu.js +13 -9
- package/dist/components/ContextMenu/tests/ContextMenu.stories.js +2 -3
- package/dist/components/ContextMenu/tests/ContextMenu.test.stories.d.ts +26 -0
- package/dist/components/ContextMenu/tests/ContextMenu.test.stories.js +53 -0
- package/dist/components/Dismissible/Dismissible.js +1 -1
- package/dist/components/Dismissible/tests/Dismissible.stories.d.ts +10 -3
- package/dist/components/Dismissible/tests/Dismissible.stories.js +51 -34
- package/dist/components/Dismissible/tests/Dismissible.test.stories.d.ts +19 -0
- package/dist/components/Dismissible/tests/Dismissible.test.stories.js +42 -0
- package/dist/components/Divider/tests/Divider.test.stories.d.ts +18 -0
- package/dist/components/Divider/tests/Divider.test.stories.js +47 -0
- package/dist/components/DropdownMenu/DropdownMenu.js +1 -1
- package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.d.ts +37 -0
- package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.js +117 -0
- package/dist/components/FileUpload/tests/FileUpload.test.stories.d.ts +22 -0
- package/dist/components/FileUpload/tests/FileUpload.test.stories.js +52 -0
- package/dist/components/FormControl/FormControl.context.d.ts +12 -0
- package/dist/components/FormControl/FormControlCaption.js +1 -1
- package/dist/components/FormControl/FormControlLabel.js +1 -1
- package/dist/components/FormControl/tests/FormControl.stories.d.ts +11 -5
- package/dist/components/FormControl/tests/FormControl.stories.js +78 -73
- package/dist/components/FormControl/tests/FormControl.test.stories.d.ts +20 -0
- package/dist/components/FormControl/tests/FormControl.test.stories.js +49 -0
- package/dist/components/Grid/Grid.d.ts +2 -2
- package/dist/components/Grid/Grid.types.d.ts +3 -2
- package/dist/components/Grid/tests/Grid.stories.d.ts +22 -7
- package/dist/components/Grid/tests/Grid.stories.js +164 -149
- package/dist/components/Grid/tests/Grid.test.stories.d.ts +19 -0
- package/dist/components/Grid/tests/Grid.test.stories.js +42 -0
- package/dist/components/Hidden/Hidden.types.d.ts +1 -1
- package/dist/components/Hidden/tests/Hidden.stories.d.ts +4 -1
- package/dist/components/Hidden/tests/Hidden.stories.js +28 -25
- package/dist/components/Hidden/tests/Hidden.test.stories.d.ts +15 -0
- package/dist/components/Hidden/tests/Hidden.test.stories.js +20 -0
- package/dist/components/HiddenVisually/tests/HiddenVisually.stories.d.ts +4 -1
- package/dist/components/HiddenVisually/tests/HiddenVisually.stories.js +8 -5
- package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.d.ts +15 -0
- package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.js +20 -0
- package/dist/components/Hotkey/tests/Hotkey.test.stories.d.ts +15 -0
- package/dist/components/Hotkey/tests/Hotkey.test.stories.js +26 -0
- package/dist/components/Icon/tests/Icon.stories.d.ts +12 -3
- package/dist/components/Icon/tests/Icon.stories.js +69 -60
- package/dist/components/Icon/tests/Icon.test.stories.d.ts +16 -0
- package/dist/components/Icon/tests/Icon.test.stories.js +35 -0
- package/dist/components/Image/tests/Image.stories.d.ts +24 -5
- package/dist/components/Image/tests/Image.stories.js +95 -75
- package/dist/components/Image/tests/Image.test.stories.d.ts +25 -0
- package/dist/components/Image/tests/Image.test.stories.js +80 -0
- package/dist/components/Link/tests/Link.test.stories.d.ts +29 -0
- package/dist/components/Link/tests/Link.test.stories.js +87 -0
- package/dist/components/Loader/Loader.js +1 -1
- package/dist/components/Loader/Loader.types.d.ts +1 -0
- package/dist/components/Loader/tests/Loader.stories.js +8 -8
- package/dist/components/Loader/tests/Loader.test.stories.d.ts +16 -0
- package/dist/components/Loader/tests/Loader.test.stories.js +32 -0
- package/dist/components/MenuItem/tests/MenuItem.test.stories.d.ts +26 -0
- package/dist/components/MenuItem/tests/MenuItem.test.stories.js +100 -0
- package/dist/components/Modal/Modal.types.d.ts +1 -1
- package/dist/components/Modal/tests/Modal.test.stories.d.ts +32 -0
- package/dist/components/Modal/tests/Modal.test.stories.js +149 -0
- package/dist/components/Overlay/Overlay.types.d.ts +1 -1
- package/dist/components/Overlay/tests/Overlay.stories.d.ts +4 -2
- package/dist/components/Overlay/tests/Overlay.stories.js +53 -53
- package/dist/components/Overlay/tests/Overlay.test.stories.d.ts +28 -0
- package/dist/components/Overlay/tests/Overlay.test.stories.js +146 -0
- package/dist/components/Pagination/tests/Pagination.test.stories.d.ts +23 -0
- package/dist/components/Pagination/tests/Pagination.test.stories.js +86 -0
- package/dist/components/PinField/tests/PinField.stories.d.ts +0 -1
- package/dist/components/PinField/tests/PinField.stories.js +10 -19
- package/dist/components/PinField/tests/PinField.test.stories.d.ts +29 -0
- package/dist/components/PinField/tests/PinField.test.stories.js +177 -0
- package/dist/components/Popover/tests/Popover.test.stories.d.ts +40 -0
- package/dist/components/Popover/tests/Popover.test.stories.js +167 -0
- package/dist/components/Progress/Progress.js +2 -2
- package/dist/components/Progress/Progress.types.d.ts +1 -0
- package/dist/components/Progress/tests/Progress.stories.js +10 -10
- package/dist/components/Progress/tests/Progress.test.stories.d.ts +16 -0
- package/dist/components/Progress/tests/Progress.test.stories.js +35 -0
- package/dist/components/Radio/tests/Radio.test.stories.d.ts +30 -0
- package/dist/components/Radio/tests/Radio.test.stories.js +118 -0
- package/dist/components/RadioGroup/tests/RadioGroup.test.stories.d.ts +22 -0
- package/dist/components/RadioGroup/tests/RadioGroup.test.stories.js +78 -0
- package/dist/components/Reshaped/tests/Reshaped.stories.d.ts +33 -0
- package/dist/components/Reshaped/tests/Reshaped.stories.js +88 -0
- package/dist/components/Resizable/Resizable.js +4 -1
- package/dist/components/Resizable/Resizable.types.d.ts +2 -2
- package/dist/components/Resizable/tests/Resizable.stories.d.ts +3 -0
- package/dist/components/Resizable/tests/Resizable.stories.js +4 -0
- package/dist/components/Resizable/tests/Resizable.test.stories.d.ts +19 -0
- package/dist/components/Resizable/tests/Resizable.test.stories.js +25 -0
- package/dist/components/Scrim/tests/Scrim.test.stories.d.ts +15 -0
- package/dist/components/Scrim/tests/Scrim.test.stories.js +25 -0
- package/dist/components/ScrollArea/ScrollArea.js +1 -1
- package/dist/components/ScrollArea/ScrollArea.module.css +1 -1
- package/dist/components/ScrollArea/tests/ScrollArea.stories.d.ts +17 -4
- package/dist/components/ScrollArea/tests/ScrollArea.stories.js +114 -139
- package/dist/components/ScrollArea/tests/ScrollArea.test.stories.d.ts +23 -0
- package/dist/components/ScrollArea/tests/ScrollArea.test.stories.js +66 -0
- package/dist/components/Select/tests/Select.stories.d.ts +1 -1
- package/dist/components/Select/tests/Select.stories.js +5 -12
- package/dist/components/Select/tests/Select.test.stories.d.ts +27 -0
- package/dist/components/Select/tests/Select.test.stories.js +132 -0
- package/dist/components/Skeleton/tests/Skeleton.test.stories.d.ts +15 -0
- package/dist/components/Skeleton/tests/Skeleton.test.stories.js +23 -0
- package/dist/components/Slider/Slider.types.d.ts +1 -1
- package/dist/components/Slider/tests/Slider.stories.d.ts +0 -1
- package/dist/components/Slider/tests/Slider.stories.js +8 -9
- package/dist/components/Slider/tests/Slider.test.stories.d.ts +38 -0
- package/dist/components/Slider/tests/Slider.test.stories.js +150 -0
- package/dist/components/Stepper/Stepper.js +1 -1
- package/dist/components/Stepper/tests/Stepper.stories.js +0 -3
- package/dist/components/Stepper/tests/Stepper.test.stories.d.ts +18 -0
- package/dist/components/Stepper/tests/Stepper.test.stories.js +28 -0
- package/dist/components/Switch/tests/Switch.test.stories.d.ts +23 -0
- package/dist/components/Switch/tests/Switch.test.stories.js +79 -0
- package/dist/components/Table/tests/Table.test.stories.d.ts +25 -0
- package/dist/components/Table/tests/Table.test.stories.js +93 -0
- package/dist/components/Tabs/Tabs.types.d.ts +3 -3
- package/dist/components/Tabs/TabsContext.d.ts +3 -3
- package/dist/components/Tabs/TabsItem.js +1 -1
- package/dist/components/Tabs/tests/Tabs.stories.js +4 -4
- package/dist/components/Tabs/tests/Tabs.test.stories.d.ts +28 -0
- package/dist/components/Tabs/tests/Tabs.test.stories.js +128 -0
- package/dist/components/Text/Text.d.ts +1 -1
- package/dist/components/Text/Text.types.d.ts +1 -1
- package/dist/components/Text/tests/Text.stories.d.ts +29 -8
- package/dist/components/Text/tests/Text.stories.js +148 -125
- package/dist/components/Text/tests/Text.test.stories.d.ts +18 -0
- package/dist/components/Text/tests/Text.test.stories.js +49 -0
- package/dist/components/TextArea/TextArea.module.css +1 -1
- package/dist/components/TextArea/tests/TextArea.stories.js +1 -1
- package/dist/components/TextArea/tests/TextArea.test.stories.d.ts +29 -0
- package/dist/components/TextArea/tests/TextArea.test.stories.js +99 -0
- package/dist/components/TextField/TextField.js +3 -1
- package/dist/components/TextField/tests/TextField.stories.js +1 -1
- package/dist/components/TextField/tests/TextField.test.stories.d.ts +29 -0
- package/dist/components/TextField/tests/TextField.test.stories.js +99 -0
- package/dist/components/Theme/Theme.types.d.ts +2 -2
- package/dist/components/Theme/tests/Theme.test.stories.d.ts +24 -0
- package/dist/components/Theme/tests/Theme.test.stories.js +133 -0
- package/dist/components/Timeline/tests/Timeline.test.stories.d.ts +18 -0
- package/dist/components/Timeline/tests/Timeline.test.stories.js +32 -0
- package/dist/components/Toast/ToastContainer.js +1 -1
- package/dist/components/Toast/tests/Toast.test.stories.d.ts +16 -0
- package/dist/components/Toast/tests/Toast.test.stories.js +101 -0
- package/dist/components/Tooltip/Tooltip.d.ts +1 -1
- package/dist/components/Tooltip/tests/Tooltip.stories.d.ts +1 -1
- package/dist/components/Tooltip/tests/Tooltip.stories.js +0 -14
- package/dist/components/Tooltip/tests/Tooltip.test.stories.d.ts +19 -0
- package/dist/components/Tooltip/tests/Tooltip.test.stories.js +40 -0
- package/dist/components/View/View.d.ts +2 -2
- package/dist/components/View/View.js +4 -4
- package/dist/components/View/View.types.d.ts +2 -2
- package/dist/components/View/tests/View.stories.d.ts +114 -30
- package/dist/components/View/tests/View.stories.js +1092 -1012
- package/dist/components/View/tests/View.test.stories.d.ts +20 -0
- package/dist/components/View/tests/View.test.stories.js +50 -0
- package/dist/components/_private/Flyout/Flyout.types.d.ts +6 -6
- package/dist/components/_private/Flyout/FlyoutContent.js +1 -1
- package/dist/components/_private/Flyout/FlyoutControlled.js +5 -3
- package/dist/components/_private/Flyout/tests/Flyout.stories.js +5 -5
- package/dist/components/_private/Flyout/tests/Flyout.test.stories.d.ts +28 -0
- package/dist/components/_private/Flyout/tests/Flyout.test.stories.js +205 -0
- package/dist/components/_private/Flyout/useFlyout.d.ts +3 -3
- package/dist/components/_private/Portal/Portal.types.d.ts +3 -3
- package/dist/components/_private/Portal/tests/Portal.stories.js +1 -1
- package/dist/hooks/_private/useIsDismissible.d.ts +1 -1
- package/dist/hooks/_private/useOnClickOutside.d.ts +1 -1
- package/dist/hooks/_private/useSingletonHotkeys.d.ts +3 -3
- package/dist/hooks/_private/useSingletonHotkeys.js +1 -1
- package/dist/hooks/tests/useDrag.stories.js +1 -0
- package/dist/hooks/tests/useDrag.test.stories.d.ts +26 -0
- package/dist/hooks/tests/useDrag.test.stories.js +120 -0
- package/dist/hooks/tests/useElementId.stories.d.ts +6 -0
- package/dist/hooks/tests/useElementId.stories.js +19 -0
- package/dist/hooks/tests/useHotkeys.test.stories.d.ts +39 -0
- package/dist/hooks/tests/useHotkeys.test.stories.js +119 -0
- package/dist/hooks/tests/useRTL.stories.d.ts +6 -0
- package/dist/hooks/tests/useRTL.stories.js +25 -0
- package/dist/hooks/tests/useResponsiveClientValue.stories.d.ts +9 -1
- package/dist/hooks/tests/useResponsiveClientValue.stories.js +22 -9
- package/dist/hooks/tests/useScrollLock.stories.d.ts +6 -0
- package/dist/hooks/tests/useScrollLock.stories.js +22 -0
- package/dist/hooks/tests/useToggle.stories.d.ts +8 -0
- package/dist/hooks/tests/useToggle.stories.js +54 -0
- package/dist/hooks/useDrag.d.ts +3 -3
- package/dist/hooks/useHotkeys.d.ts +2 -2
- package/dist/hooks/useHotkeys.js +3 -1
- package/dist/hooks/useScrollLock.d.ts +2 -1
- package/dist/hooks/useScrollLock.js +7 -3
- package/dist/tests/ShadowDOM.stories.js +1 -1
- package/dist/themes/_generator/tests/themes.stories.d.ts +3 -0
- package/dist/themes/_generator/tests/themes.stories.js +7 -11
- package/dist/themes/_generator/utilities/generateColors.d.ts +1 -1
- package/dist/themes/_generator/utilities/generateColors.js +3 -2
- package/dist/themes/slate/theme.css +1 -1
- package/dist/types/global.d.ts +1 -1
- package/dist/utilities/helpers.d.ts +1 -0
- package/dist/utilities/helpers.js +3 -0
- package/dist/utilities/scroll/lock.d.ts +1 -0
- package/dist/utilities/scroll/lock.js +3 -3
- package/dist/utilities/scroll/lockSafari.d.ts +1 -1
- package/dist/utilities/scroll/lockSafari.js +4 -5
- package/dist/utilities/scroll/lockStandard.d.ts +4 -1
- package/dist/utilities/scroll/lockStandard.js +7 -2
- package/dist/utilities/storybook/Example.js +1 -2
- package/package.json +22 -21
- package/dist/components/Theme/tests/Theme.stories.d.ts +0 -13
- package/dist/components/Theme/tests/Theme.stories.js +0 -80
- package/dist/utilities/storybook/Example.module.css +0 -1
@@ -0,0 +1,99 @@
|
|
1
|
+
import { expect, fn, userEvent } from "@storybook/test";
|
2
|
+
import TextField from "../index.js";
|
3
|
+
export default {
|
4
|
+
title: "Components/TextField/tests",
|
5
|
+
component: TextField,
|
6
|
+
parameters: {
|
7
|
+
iframe: {
|
8
|
+
url: "https://reshaped.so/docs/components/text-area",
|
9
|
+
},
|
10
|
+
chromatic: { disableSnapshot: true },
|
11
|
+
},
|
12
|
+
};
|
13
|
+
export const render = {
|
14
|
+
name: "base",
|
15
|
+
render: () => <TextField name="test-name" inputAttributes={{ "aria-label": "Label" }}/>,
|
16
|
+
play: async ({ canvas }) => {
|
17
|
+
const input = canvas.getByRole("textbox");
|
18
|
+
expect(input).toHaveAttribute("name", "test-name");
|
19
|
+
expect(input).toHaveAccessibleName("Label");
|
20
|
+
},
|
21
|
+
};
|
22
|
+
export const placeholder = {
|
23
|
+
name: "placeholder",
|
24
|
+
render: () => (<TextField name="test-name" placeholder="Placeholder" inputAttributes={{ "aria-label": "Label" }}/>),
|
25
|
+
play: async ({ canvas }) => {
|
26
|
+
const input = canvas.getByRole("textbox");
|
27
|
+
expect(input).toHaveValue("");
|
28
|
+
expect(input).toHaveAttribute("placeholder", "Placeholder");
|
29
|
+
},
|
30
|
+
};
|
31
|
+
export const id = {
|
32
|
+
name: "id",
|
33
|
+
render: () => (<TextField name="test-name" id="test-id" inputAttributes={{ "aria-label": "Label" }}/>),
|
34
|
+
play: async ({ canvas }) => {
|
35
|
+
const input = canvas.getByRole("textbox");
|
36
|
+
expect(input).toHaveAttribute("id", "test-id");
|
37
|
+
},
|
38
|
+
};
|
39
|
+
export const disabled = {
|
40
|
+
name: "disabled",
|
41
|
+
render: () => <TextField name="test-name" disabled inputAttributes={{ "aria-label": "Label" }}/>,
|
42
|
+
play: async ({ canvas }) => {
|
43
|
+
const input = canvas.getByRole("textbox");
|
44
|
+
expect(input).toBeDisabled();
|
45
|
+
},
|
46
|
+
};
|
47
|
+
export const defaultValue = {
|
48
|
+
name: "defaultValue, uncontrolled",
|
49
|
+
args: {
|
50
|
+
handleChange: fn(),
|
51
|
+
},
|
52
|
+
render: (args) => (<TextField name="test-name" defaultValue="value" onChange={args.handleChange} inputAttributes={{ "aria-label": "Label" }}/>),
|
53
|
+
play: async ({ canvas, args }) => {
|
54
|
+
const input = canvas.getByRole("textbox");
|
55
|
+
expect(input).toHaveValue("value");
|
56
|
+
input.focus();
|
57
|
+
await userEvent.keyboard("2");
|
58
|
+
expect(args.handleChange).toBeCalledTimes(1);
|
59
|
+
expect(args.handleChange).toHaveBeenCalledWith({
|
60
|
+
name: "test-name",
|
61
|
+
value: "value2",
|
62
|
+
event: expect.objectContaining({ target: input }),
|
63
|
+
});
|
64
|
+
expect(input).toHaveValue("value2");
|
65
|
+
},
|
66
|
+
};
|
67
|
+
export const value = {
|
68
|
+
name: "value, controlled",
|
69
|
+
args: {
|
70
|
+
handleChange: fn(),
|
71
|
+
},
|
72
|
+
render: (args) => (<TextField name="test-name" value="value" onChange={args.handleChange} inputAttributes={{ "aria-label": "Label" }}/>),
|
73
|
+
play: async ({ canvas, args }) => {
|
74
|
+
const input = canvas.getByRole("textbox");
|
75
|
+
expect(input).toHaveValue("value");
|
76
|
+
input.focus();
|
77
|
+
await userEvent.keyboard("2");
|
78
|
+
expect(args.handleChange).toBeCalledTimes(1);
|
79
|
+
expect(args.handleChange).toHaveBeenCalledWith({
|
80
|
+
name: "test-name",
|
81
|
+
value: "value2",
|
82
|
+
event: expect.objectContaining({ target: input }),
|
83
|
+
});
|
84
|
+
expect(input).toHaveValue("value");
|
85
|
+
},
|
86
|
+
};
|
87
|
+
export const className = {
|
88
|
+
name: "className, attributes",
|
89
|
+
render: () => (<div data-testid="root">
|
90
|
+
<TextField className="test-classname" attributes={{ id: "test-id" }} name="name" inputAttributes={{ id: "test-input-id", "aria-label": "Label" }}/>
|
91
|
+
</div>),
|
92
|
+
play: async ({ canvas }) => {
|
93
|
+
const root = canvas.getByTestId("root").firstChild;
|
94
|
+
const input = canvas.getByRole("textbox");
|
95
|
+
expect(root).toHaveClass("test-classname");
|
96
|
+
expect(root).toHaveAttribute("id", "test-id");
|
97
|
+
expect(input).toHaveAttribute("id", "test-input-id");
|
98
|
+
},
|
99
|
+
};
|
@@ -22,10 +22,10 @@ export type Props = {
|
|
22
22
|
};
|
23
23
|
export type PrivateProps = Props & {
|
24
24
|
scoped?: boolean;
|
25
|
-
scopeRef?: React.RefObject<HTMLDivElement>;
|
25
|
+
scopeRef?: React.RefObject<HTMLDivElement | null>;
|
26
26
|
};
|
27
27
|
export type GlobalColorModeProps = {
|
28
28
|
defaultMode: ColorMode;
|
29
|
-
scopeRef?: React.RefObject<HTMLDivElement>;
|
29
|
+
scopeRef?: React.RefObject<HTMLDivElement | null>;
|
30
30
|
children?: React.ReactNode;
|
31
31
|
};
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import { StoryObj } from "@storybook/react";
|
2
|
+
declare const _default: {
|
3
|
+
title: string;
|
4
|
+
component: (props: import("./..").ThemeProps) => import("react").JSX.Element;
|
5
|
+
parameters: {
|
6
|
+
iframe: {
|
7
|
+
url: string;
|
8
|
+
};
|
9
|
+
chromatic: {
|
10
|
+
disableSnapshot: boolean;
|
11
|
+
};
|
12
|
+
};
|
13
|
+
};
|
14
|
+
export default _default;
|
15
|
+
export declare const light: StoryObj;
|
16
|
+
export declare const dark: StoryObj;
|
17
|
+
export declare const inherited: StoryObj;
|
18
|
+
export declare const inverted: StoryObj;
|
19
|
+
export declare const controlled: StoryObj;
|
20
|
+
export declare const uncontrolled: StoryObj;
|
21
|
+
export declare const disabledTransition: {
|
22
|
+
name: string;
|
23
|
+
render: () => import("react").JSX.Element;
|
24
|
+
};
|
@@ -0,0 +1,133 @@
|
|
1
|
+
import { expect, userEvent } from "@storybook/test";
|
2
|
+
import Card from "../../Card/index.js";
|
3
|
+
import Button from "../../Button/index.js";
|
4
|
+
import View from "../../View/index.js";
|
5
|
+
import MenuItem from "../../MenuItem/index.js";
|
6
|
+
import Theme, { useTheme } from "../index.js";
|
7
|
+
import { Example } from "../../../utilities/storybook/index.js";
|
8
|
+
export default {
|
9
|
+
title: "Utilities/Theme/tests",
|
10
|
+
component: Theme,
|
11
|
+
parameters: {
|
12
|
+
iframe: {
|
13
|
+
url: "https://reshaped.so/docs/utilities/theme",
|
14
|
+
},
|
15
|
+
chromatic: { disableSnapshot: true },
|
16
|
+
},
|
17
|
+
};
|
18
|
+
export const light = {
|
19
|
+
name: "light",
|
20
|
+
render: () => (<Theme name="reshaped" colorMode="light">
|
21
|
+
<Card attributes={{ "data-testid": "test-id" }}>Content</Card>
|
22
|
+
</Theme>),
|
23
|
+
play: ({ canvas }) => {
|
24
|
+
const root = canvas.getByTestId("test-id").parentNode;
|
25
|
+
expect(root).toHaveAttribute("data-rs-theme", "reshaped");
|
26
|
+
expect(root).toHaveAttribute("data-rs-color-mode", "light");
|
27
|
+
},
|
28
|
+
};
|
29
|
+
export const dark = {
|
30
|
+
name: "dark",
|
31
|
+
render: () => (<Theme name="reshaped" colorMode="dark">
|
32
|
+
<Card attributes={{ "data-testid": "test-id" }}>Content</Card>
|
33
|
+
</Theme>),
|
34
|
+
play: ({ canvas }) => {
|
35
|
+
const root = canvas.getByTestId("test-id").parentNode;
|
36
|
+
expect(root).toHaveAttribute("data-rs-theme", "reshaped");
|
37
|
+
expect(root).toHaveAttribute("data-rs-color-mode", "dark");
|
38
|
+
},
|
39
|
+
};
|
40
|
+
export const inherited = {
|
41
|
+
name: "inherited",
|
42
|
+
render: () => (<Theme name="reshaped">
|
43
|
+
<Card attributes={{ "data-testid": "test-id" }}>Content</Card>
|
44
|
+
</Theme>),
|
45
|
+
play: ({ canvas }) => {
|
46
|
+
const root = canvas.getByTestId("test-id").parentNode;
|
47
|
+
expect(root).toHaveAttribute("data-rs-theme", "reshaped");
|
48
|
+
// Our storybook setup uses dark by default
|
49
|
+
expect(root).toHaveAttribute("data-rs-color-mode", "dark");
|
50
|
+
},
|
51
|
+
};
|
52
|
+
export const inverted = {
|
53
|
+
name: "inverted",
|
54
|
+
render: () => (<Theme name="reshaped" colorMode="inverted">
|
55
|
+
<Card attributes={{ "data-testid": "test-id" }}>Content</Card>
|
56
|
+
</Theme>),
|
57
|
+
play: ({ canvas }) => {
|
58
|
+
const root = canvas.getByTestId("test-id").parentNode;
|
59
|
+
expect(root).toHaveAttribute("data-rs-theme", "reshaped");
|
60
|
+
expect(root).toHaveAttribute("data-rs-color-mode", "light");
|
61
|
+
},
|
62
|
+
};
|
63
|
+
export const controlled = {
|
64
|
+
name: "controlled",
|
65
|
+
render: () => {
|
66
|
+
const Internal = () => {
|
67
|
+
const { setTheme, theme } = useTheme();
|
68
|
+
return (<Button color="primary" onClick={() => setTheme("slate")}>
|
69
|
+
Switch to slate
|
70
|
+
</Button>);
|
71
|
+
};
|
72
|
+
return (<div data-testid="root">
|
73
|
+
<Theme name="reshaped">
|
74
|
+
<Internal />
|
75
|
+
</Theme>
|
76
|
+
</div>);
|
77
|
+
},
|
78
|
+
play: async ({ canvas }) => {
|
79
|
+
const root = canvas.getByTestId("root").firstChild;
|
80
|
+
const trigger = canvas.getAllByRole("button")[0];
|
81
|
+
expect(root).toHaveAttribute("data-rs-theme", "reshaped");
|
82
|
+
expect(root).toHaveAttribute("data-rs-color-mode", "dark");
|
83
|
+
await userEvent.click(trigger);
|
84
|
+
expect(root).toHaveAttribute("data-rs-theme", "reshaped");
|
85
|
+
expect(root).toHaveAttribute("data-rs-color-mode", "dark");
|
86
|
+
},
|
87
|
+
};
|
88
|
+
export const uncontrolled = {
|
89
|
+
name: "uncontrolled",
|
90
|
+
render: () => {
|
91
|
+
const Internal = () => {
|
92
|
+
const { setTheme } = useTheme();
|
93
|
+
return (<Button color="primary" onClick={() => setTheme("slate")}>
|
94
|
+
Switch to slate
|
95
|
+
</Button>);
|
96
|
+
};
|
97
|
+
return (<div data-testid="root">
|
98
|
+
<Theme defaultName="reshaped">
|
99
|
+
<Internal />
|
100
|
+
</Theme>
|
101
|
+
</div>);
|
102
|
+
},
|
103
|
+
play: async ({ canvas }) => {
|
104
|
+
const root = canvas.getByTestId("root").firstChild;
|
105
|
+
const trigger = canvas.getAllByRole("button")[0];
|
106
|
+
expect(root).toHaveAttribute("data-rs-theme", "reshaped");
|
107
|
+
expect(root).toHaveAttribute("data-rs-color-mode", "dark");
|
108
|
+
await userEvent.click(trigger);
|
109
|
+
expect(root).toHaveAttribute("data-rs-theme", "slate");
|
110
|
+
expect(root).toHaveAttribute("data-rs-color-mode", "dark");
|
111
|
+
},
|
112
|
+
};
|
113
|
+
export const disabledTransition = {
|
114
|
+
name: "disabled transitions",
|
115
|
+
render: () => {
|
116
|
+
const { invertColorMode } = useTheme();
|
117
|
+
return (<Example>
|
118
|
+
<Example.Item title="should have no transitions while switching color mode">
|
119
|
+
<View gap={3}>
|
120
|
+
<Button onClick={invertColorMode}>Invert mode</Button>
|
121
|
+
|
122
|
+
<MenuItem selected>Test transition</MenuItem>
|
123
|
+
|
124
|
+
<Card>Default card</Card>
|
125
|
+
|
126
|
+
<Theme colorMode="inverted">
|
127
|
+
<Card>Inverted card</Card>
|
128
|
+
</Theme>
|
129
|
+
</View>
|
130
|
+
</Example.Item>
|
131
|
+
</Example>);
|
132
|
+
},
|
133
|
+
};
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { StoryObj } from "@storybook/react";
|
2
|
+
declare const _default: {
|
3
|
+
title: string;
|
4
|
+
component: {
|
5
|
+
(props: import("./..").TimelineProps): import("react").JSX.Element;
|
6
|
+
Item: (props: import("./..").TimelineItemProps) => import("react").JSX.Element;
|
7
|
+
};
|
8
|
+
parameters: {
|
9
|
+
iframe: {
|
10
|
+
url: string;
|
11
|
+
};
|
12
|
+
chromatic: {
|
13
|
+
disableSnapshot: boolean;
|
14
|
+
};
|
15
|
+
};
|
16
|
+
};
|
17
|
+
export default _default;
|
18
|
+
export declare const className: StoryObj;
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import { expect } from "@storybook/test";
|
2
|
+
import Timeline from "../index.js";
|
3
|
+
export default {
|
4
|
+
title: "Components/Timeline/tests",
|
5
|
+
component: Timeline,
|
6
|
+
parameters: {
|
7
|
+
iframe: {
|
8
|
+
url: "https://reshaped.so/docs/components/timeline",
|
9
|
+
},
|
10
|
+
chromatic: { disableSnapshot: true },
|
11
|
+
},
|
12
|
+
};
|
13
|
+
export const className = {
|
14
|
+
name: "className, attributes",
|
15
|
+
render: () => (<div data-testid="root">
|
16
|
+
<Timeline className="test-classname" attributes={{ id: "test-id" }}>
|
17
|
+
<Timeline.Item className="test-item-classname" attributes={{ id: "test-item-id" }}>
|
18
|
+
Content
|
19
|
+
</Timeline.Item>
|
20
|
+
<Timeline.Item>Content</Timeline.Item>
|
21
|
+
</Timeline>
|
22
|
+
</div>),
|
23
|
+
play: async ({ canvas }) => {
|
24
|
+
const root = canvas.getByTestId("root").firstChild;
|
25
|
+
const items = canvas.getAllByRole("listitem");
|
26
|
+
expect(root).toHaveClass("test-classname");
|
27
|
+
expect(root).toHaveAttribute("id", "test-id");
|
28
|
+
expect(items).toHaveLength(2);
|
29
|
+
expect(items[0]).toHaveClass("test-item-classname");
|
30
|
+
expect(items[0]).toHaveAttribute("id", "test-item-id");
|
31
|
+
},
|
32
|
+
};
|
@@ -13,7 +13,7 @@ const ToastContainer = (props) => {
|
|
13
13
|
const { timeout = "short" } = toastProps;
|
14
14
|
const { show, hide, remove } = React.useContext(ToastContext);
|
15
15
|
const [toastHeight, setToastHeight] = React.useState();
|
16
|
-
const timeoutRef = React.useRef();
|
16
|
+
const timeoutRef = React.useRef(null);
|
17
17
|
const resizingRef = React.useRef(false);
|
18
18
|
const wrapperRef = React.useRef(null);
|
19
19
|
const visible = status === "entered";
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { StoryObj } from "@storybook/react";
|
2
|
+
declare const _default: {
|
3
|
+
title: string;
|
4
|
+
parameters: {
|
5
|
+
iframe: {
|
6
|
+
url: string;
|
7
|
+
};
|
8
|
+
chromatic: {
|
9
|
+
disableSnapshot: boolean;
|
10
|
+
};
|
11
|
+
};
|
12
|
+
};
|
13
|
+
export default _default;
|
14
|
+
export declare const base: StoryObj;
|
15
|
+
export declare const nested: StoryObj;
|
16
|
+
export declare const className: StoryObj;
|
@@ -0,0 +1,101 @@
|
|
1
|
+
import { expect, within, userEvent, waitFor } from "@storybook/test";
|
2
|
+
import { useToast, ToastProvider } from "../index.js";
|
3
|
+
import Button from "../../Button/index.js";
|
4
|
+
export default {
|
5
|
+
title: "Components/Toast/tests",
|
6
|
+
parameters: {
|
7
|
+
iframe: {
|
8
|
+
url: "https://reshaped.so/docs/components/toast",
|
9
|
+
},
|
10
|
+
chromatic: { disableSnapshot: true },
|
11
|
+
},
|
12
|
+
};
|
13
|
+
export const base = {
|
14
|
+
name: "base",
|
15
|
+
render: () => {
|
16
|
+
const toast = useToast();
|
17
|
+
return (<Button onClick={() => {
|
18
|
+
const id = toast.show({
|
19
|
+
title: "Title",
|
20
|
+
text: "Text",
|
21
|
+
children: "Children",
|
22
|
+
startSlot: "Slot",
|
23
|
+
actionsSlot: (<Button attributes={{ "data-testid": "trigger-id" }} onClick={() => toast.hide(id)}>
|
24
|
+
Trigger
|
25
|
+
</Button>),
|
26
|
+
});
|
27
|
+
}}>
|
28
|
+
Show toast
|
29
|
+
</Button>);
|
30
|
+
},
|
31
|
+
play: async ({ canvasElement }) => {
|
32
|
+
const canvas = within(canvasElement.ownerDocument.body);
|
33
|
+
const button = canvas.getAllByRole("button")[0];
|
34
|
+
await userEvent.click(button);
|
35
|
+
const title = canvas.getByText("Title");
|
36
|
+
const text = canvas.getByText("Text");
|
37
|
+
const children = canvas.getByText("Children");
|
38
|
+
const slot = canvas.getByText("Slot");
|
39
|
+
const action = canvas.getByTestId("trigger-id");
|
40
|
+
expect(title).toBeInTheDocument();
|
41
|
+
expect(text).toBeInTheDocument();
|
42
|
+
expect(children).toBeInTheDocument();
|
43
|
+
expect(slot).toBeInTheDocument();
|
44
|
+
expect(action).toBeInTheDocument();
|
45
|
+
await userEvent.click(action);
|
46
|
+
await waitFor(() => {
|
47
|
+
expect(title).not.toBeInTheDocument();
|
48
|
+
});
|
49
|
+
},
|
50
|
+
};
|
51
|
+
const NestedDemo = () => {
|
52
|
+
const toast = useToast();
|
53
|
+
return (<Button onClick={() => {
|
54
|
+
toast.show({
|
55
|
+
text: "Content",
|
56
|
+
});
|
57
|
+
}}>
|
58
|
+
Show toast
|
59
|
+
</Button>);
|
60
|
+
};
|
61
|
+
export const nested = {
|
62
|
+
name: "ToastProvider",
|
63
|
+
render: () => {
|
64
|
+
return (<div data-testid="test-container-id">
|
65
|
+
<ToastProvider>
|
66
|
+
<NestedDemo />
|
67
|
+
</ToastProvider>
|
68
|
+
</div>);
|
69
|
+
},
|
70
|
+
play: async ({ canvasElement }) => {
|
71
|
+
const canvas = within(canvasElement.ownerDocument.body);
|
72
|
+
const button = canvas.getAllByRole("button")[0];
|
73
|
+
await userEvent.click(button);
|
74
|
+
const container = canvas.getByTestId("test-container-id");
|
75
|
+
const toast = within(container).getByText("Content");
|
76
|
+
expect(toast).toBeInTheDocument();
|
77
|
+
},
|
78
|
+
};
|
79
|
+
export const className = {
|
80
|
+
name: "className, attributes",
|
81
|
+
render: () => {
|
82
|
+
const toast = useToast();
|
83
|
+
return (<Button onClick={() => {
|
84
|
+
const id = toast.show({
|
85
|
+
text: "Content",
|
86
|
+
attributes: { "data-testid": "test-id" },
|
87
|
+
className: "test-classname",
|
88
|
+
});
|
89
|
+
}}>
|
90
|
+
Show toast
|
91
|
+
</Button>);
|
92
|
+
},
|
93
|
+
play: async ({ canvasElement }) => {
|
94
|
+
const canvas = within(canvasElement.ownerDocument.body);
|
95
|
+
const button = canvas.getAllByRole("button")[0];
|
96
|
+
await userEvent.click(button);
|
97
|
+
const toast = canvas.getByTestId("test-id");
|
98
|
+
expect(toast).toBeInTheDocument();
|
99
|
+
expect(toast).toHaveClass("test-classname");
|
100
|
+
},
|
101
|
+
};
|
@@ -1,3 +1,3 @@
|
|
1
1
|
import type * as T from "./Tooltip.types";
|
2
|
-
declare const Tooltip: (props: T.Props) => string | number | boolean | import("react/jsx-runtime").JSX.Element | Iterable<import("react").ReactNode> | null | undefined;
|
2
|
+
declare const Tooltip: (props: T.Props) => string | number | bigint | boolean | import("react/jsx-runtime").JSX.Element | Iterable<import("react").ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<import("react").ReactNode> | null | undefined> | null | undefined;
|
3
3
|
export default Tooltip;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
declare const _default: {
|
2
2
|
title: string;
|
3
|
-
component: (props: import("./..").TooltipProps) => string | number | boolean | Iterable<import("react").ReactNode> | import("react").JSX.Element | null | undefined;
|
3
|
+
component: (props: import("./..").TooltipProps) => string | number | bigint | boolean | Iterable<import("react").ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<import("react").ReactNode> | null | undefined> | import("react").JSX.Element | null | undefined;
|
4
4
|
parameters: {
|
5
5
|
iframe: {
|
6
6
|
url: string;
|
@@ -4,7 +4,6 @@ import Popover from "../../Popover/index.js";
|
|
4
4
|
import Button from "../../Button/index.js";
|
5
5
|
import View from "../../View/index.js";
|
6
6
|
import useResponsiveClientValue from "../../../hooks/useResponsiveClientValue.js";
|
7
|
-
import Actionable from "../../Actionable/index.js";
|
8
7
|
export default {
|
9
8
|
title: "Components/Tooltip",
|
10
9
|
component: Tooltip,
|
@@ -109,19 +108,6 @@ export const edgeCases = () => (<Example>
|
|
109
108
|
</Tooltip>
|
110
109
|
</Example.Item>
|
111
110
|
|
112
|
-
<Example.Item title="tooltip with popover on different elements">
|
113
|
-
<Tooltip text="Tooltip" position="top">
|
114
|
-
{(attributes) => (<Actionable attributes={attributes} as="span">
|
115
|
-
<Popover position="bottom">
|
116
|
-
<Popover.Trigger>
|
117
|
-
{(popoverAttributes) => (<Button attributes={{ ...attributes, ...popoverAttributes }}>Action</Button>)}
|
118
|
-
</Popover.Trigger>
|
119
|
-
<Popover.Content>Popover</Popover.Content>
|
120
|
-
</Popover>
|
121
|
-
</Actionable>)}
|
122
|
-
</Tooltip>
|
123
|
-
</Example.Item>
|
124
|
-
|
125
111
|
<Example.Item title="nested popovers inside a tooltip">
|
126
112
|
<View direction="row" gap={2}>
|
127
113
|
<Tooltip position="top" text="Hello">
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { StoryObj } from "@storybook/react";
|
2
|
+
import { fn } from "@storybook/test";
|
3
|
+
declare const _default: {
|
4
|
+
title: string;
|
5
|
+
component: (props: import("./..").TooltipProps) => string | number | bigint | boolean | Iterable<import("react").ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<import("react").ReactNode> | null | undefined> | import("react").JSX.Element | null | undefined;
|
6
|
+
parameters: {
|
7
|
+
iframe: {
|
8
|
+
url: string;
|
9
|
+
};
|
10
|
+
chromatic: {
|
11
|
+
disableSnapshot: boolean;
|
12
|
+
};
|
13
|
+
};
|
14
|
+
};
|
15
|
+
export default _default;
|
16
|
+
export declare const defaultActive: StoryObj<{
|
17
|
+
handleOpen: ReturnType<typeof fn>;
|
18
|
+
handleClose: ReturnType<typeof fn>;
|
19
|
+
}>;
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import { expect, fn, userEvent, within, waitFor } from "@storybook/test";
|
2
|
+
import Tooltip from "../index.js";
|
3
|
+
import Button from "../../Button/index.js";
|
4
|
+
export default {
|
5
|
+
title: "Components/Tooltip/tests",
|
6
|
+
component: Tooltip,
|
7
|
+
parameters: {
|
8
|
+
iframe: {
|
9
|
+
url: "https://reshaped.so/docs/components/tooltip",
|
10
|
+
},
|
11
|
+
chromatic: { disableSnapshot: true },
|
12
|
+
},
|
13
|
+
};
|
14
|
+
export const defaultActive = {
|
15
|
+
name: "uncontrolled",
|
16
|
+
args: {
|
17
|
+
handleOpen: fn(),
|
18
|
+
handleClose: fn(),
|
19
|
+
},
|
20
|
+
render: (args) => (<Tooltip text="Content" onOpen={args.handleOpen} onClose={args.handleClose}>
|
21
|
+
{(attributes) => <Button attributes={attributes}>Trigger</Button>}
|
22
|
+
</Tooltip>),
|
23
|
+
play: async ({ canvasElement, args }) => {
|
24
|
+
const canvas = within(canvasElement.ownerDocument.body);
|
25
|
+
const trigger = canvas.getAllByRole("button")[0];
|
26
|
+
await userEvent.hover(trigger);
|
27
|
+
await waitFor(() => {
|
28
|
+
expect(args.handleOpen).toHaveBeenCalledTimes(1);
|
29
|
+
expect(args.handleOpen).toHaveBeenCalledWith();
|
30
|
+
});
|
31
|
+
const item = canvas.getByText("Content");
|
32
|
+
expect(item).toBeInTheDocument();
|
33
|
+
await userEvent.unhover(trigger);
|
34
|
+
await waitFor(() => {
|
35
|
+
expect(args.handleClose).toHaveBeenCalledTimes(1);
|
36
|
+
expect(args.handleClose).toHaveBeenCalledWith();
|
37
|
+
expect(item).not.toBeInTheDocument();
|
38
|
+
});
|
39
|
+
},
|
40
|
+
};
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import React from "react";
|
2
2
|
import type * as T from "./View.types";
|
3
3
|
declare const View: {
|
4
|
-
<As extends keyof JSX.IntrinsicElements = "div">(props: T.Props<As>): React.ReactNode;
|
5
|
-
Item: <As extends keyof JSX.IntrinsicElements = "div">(props: T.ItemProps<As>) => React.ReactNode;
|
4
|
+
<As extends keyof React.JSX.IntrinsicElements = "div">(props: T.Props<As>): React.ReactNode;
|
5
|
+
Item: <As extends keyof React.JSX.IntrinsicElements = "div">(props: T.ItemProps<As>) => React.ReactNode;
|
6
6
|
};
|
7
7
|
export default View;
|
@@ -124,22 +124,22 @@ const View = (props) => {
|
|
124
124
|
const formattedChildren = React.Children.map(children, (child, index) => {
|
125
125
|
if (!child)
|
126
126
|
return null;
|
127
|
+
const usedIndex = renderedItemIndex;
|
127
128
|
renderedItemIndex += 1;
|
128
129
|
if (child.type === Hidden) {
|
129
130
|
const { children: hiddenChild, ...hiddenProps } = child.props;
|
130
131
|
const key = child.key || index;
|
131
|
-
return (_createElement(Hidden, { ...hiddenProps, key: key }, renderItem({ child: hiddenChild, index:
|
132
|
+
return (_createElement(Hidden, { ...hiddenProps, key: key }, renderItem({ child: hiddenChild, index: usedIndex })));
|
132
133
|
}
|
133
134
|
if (child.type === React.Fragment && React.Children.count(child.props.children) > 1) {
|
134
135
|
return child.props.children.map((child) => {
|
135
136
|
if (!child)
|
136
137
|
return null;
|
137
|
-
const index = renderedItemIndex;
|
138
138
|
renderedItemIndex += 1;
|
139
|
-
return renderItem({ child, index });
|
139
|
+
return renderItem({ child, index: renderedItemIndex });
|
140
140
|
});
|
141
141
|
}
|
142
|
-
return renderItem({ child, index:
|
142
|
+
return renderItem({ child, index: usedIndex });
|
143
143
|
});
|
144
144
|
// Classnames and attributes are written here so we can assign nowrap to the root element based on the children
|
145
145
|
const rootClassNames = classNames(s.root, className, radiusStyles?.classNames, bleedStyles?.classNames, widthStyles?.classNames, heightStyles?.classNames, maxWidthStyles?.classNames, maxHeightStyles?.classNames, minWidthStyles?.classNames, minHeightStyles?.classNames, borderStyles?.classNames, backgroundColor && s[`--bg-${backgroundColor}`], shadow && s[`--shadow-${shadow}`], overflow && s[`--overflow-${overflow}`], animated && s["--animated"], divided && s["--divided"], (padding !== undefined || paddingInline !== undefined || paddingBlock !== undefined) &&
|
@@ -3,7 +3,7 @@ import type * as G from "../../types/global";
|
|
3
3
|
import type * as TStyles from "../../styles/types";
|
4
4
|
type Columns = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | "auto";
|
5
5
|
export type Direction = "row" | "column" | "row-reverse" | "column-reverse";
|
6
|
-
export type Props<TagName extends keyof JSX.IntrinsicElements = "div"> = {
|
6
|
+
export type Props<TagName extends keyof React.JSX.IntrinsicElements = "div"> = {
|
7
7
|
children?: React.ReactNode;
|
8
8
|
as?: TagName;
|
9
9
|
divided?: boolean;
|
@@ -44,7 +44,7 @@ export type Props<TagName extends keyof JSX.IntrinsicElements = "div"> = {
|
|
44
44
|
className?: G.ClassName;
|
45
45
|
attributes?: G.Attributes<TagName>;
|
46
46
|
} & Pick<ItemProps, "grow">;
|
47
|
-
export type ItemProps<TagName extends keyof JSX.IntrinsicElements = "div"> = {
|
47
|
+
export type ItemProps<TagName extends keyof React.JSX.IntrinsicElements = "div"> = {
|
48
48
|
order?: G.Responsive<number>;
|
49
49
|
columns?: G.Responsive<Columns>;
|
50
50
|
grow?: G.Responsive<boolean>;
|