reshaped 3.8.0-canary.7 → 3.8.0-canary.9

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.
Files changed (214) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/bundle.css +1 -1
  3. package/dist/bundle.js +9 -9
  4. package/dist/components/Accordion/AccordionControlled.js +1 -0
  5. package/dist/components/Actionable/Actionable.js +1 -0
  6. package/dist/components/Actionable/Actionable.module.css +1 -1
  7. package/dist/components/Alert/tests/Alert.stories.d.ts +6 -5
  8. package/dist/components/Alert/tests/Alert.stories.js +15 -2
  9. package/dist/components/Badge/Badge.module.css +1 -1
  10. package/dist/components/Badge/tests/Badge.stories.d.ts +5 -0
  11. package/dist/components/Badge/tests/Badge.stories.js +34 -0
  12. package/dist/components/Breadcrumbs/Breadcrumbs.js +1 -0
  13. package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.d.ts +8 -4
  14. package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.js +57 -1
  15. package/dist/components/Button/tests/Button.stories.d.ts +54 -12
  16. package/dist/components/Button/tests/Button.stories.js +725 -588
  17. package/dist/components/Calendar/CalendarMonth.js +1 -0
  18. package/dist/components/Card/Card.module.css +1 -1
  19. package/dist/components/Card/tests/Card.stories.d.ts +28 -6
  20. package/dist/components/Card/tests/Card.stories.js +110 -65
  21. package/dist/components/Carousel/Carousel.js +1 -0
  22. package/dist/components/Carousel/Carousel.module.css +1 -1
  23. package/dist/components/Checkbox/Checkbox.module.css +1 -1
  24. package/dist/components/Checkbox/tests/Checkbox.stories.d.ts +20 -4
  25. package/dist/components/Checkbox/tests/Checkbox.stories.js +150 -79
  26. package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.d.ts +9 -2
  27. package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.js +67 -35
  28. package/dist/components/Container/tests/Container.stories.d.ts +2 -0
  29. package/dist/components/Container/tests/Container.stories.js +14 -0
  30. package/dist/components/ContextMenu/tests/ContextMenu.stories.d.ts +10 -1
  31. package/dist/components/ContextMenu/tests/ContextMenu.stories.js +57 -13
  32. package/dist/components/Dismissible/tests/Dismissible.stories.d.ts +5 -0
  33. package/dist/components/Dismissible/tests/Dismissible.stories.js +30 -1
  34. package/dist/components/Divider/tests/Divider.stories.d.ts +8 -3
  35. package/dist/components/Divider/tests/Divider.stories.js +71 -41
  36. package/dist/components/DropdownMenu/tests/DropdownMenu.stories.d.ts +35 -6
  37. package/dist/components/DropdownMenu/tests/DropdownMenu.stories.js +222 -115
  38. package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.d.ts +0 -15
  39. package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.js +0 -106
  40. package/dist/components/FileUpload/FileUpload.module.css +1 -1
  41. package/dist/components/Flyout/Flyout.module.css +1 -1
  42. package/dist/components/Flyout/FlyoutContent.js +3 -0
  43. package/dist/components/Flyout/FlyoutControlled.js +6 -1
  44. package/dist/components/Flyout/utilities/flyout.js +0 -1
  45. package/dist/components/FormControl/FormControl.context.d.ts +1 -1
  46. package/dist/components/FormControl/tests/FormControl.stories.d.ts +2 -0
  47. package/dist/components/FormControl/tests/FormControl.stories.js +35 -0
  48. package/dist/components/Hidden/tests/Hidden.stories.d.ts +2 -0
  49. package/dist/components/Hidden/tests/Hidden.stories.js +9 -0
  50. package/dist/components/HiddenVisually/tests/HiddenVisually.stories.d.ts +2 -0
  51. package/dist/components/HiddenVisually/tests/HiddenVisually.stories.js +9 -0
  52. package/dist/components/Hotkey/tests/Hotkey.stories.d.ts +2 -0
  53. package/dist/components/Hotkey/tests/Hotkey.stories.js +15 -0
  54. package/dist/components/Icon/tests/Icon.stories.d.ts +3 -0
  55. package/dist/components/Icon/tests/Icon.stories.js +23 -0
  56. package/dist/components/Link/tests/Link.stories.d.ts +28 -5
  57. package/dist/components/Link/tests/Link.stories.js +141 -58
  58. package/dist/components/Link/tests/Link.test.stories.d.ts +0 -13
  59. package/dist/components/Link/tests/Link.test.stories.js +0 -85
  60. package/dist/components/Loader/tests/Loader.stories.d.ts +11 -2
  61. package/dist/components/Loader/tests/Loader.stories.js +52 -25
  62. package/dist/components/Loader/tests/Loader.test.stories.d.ts +0 -3
  63. package/dist/components/Loader/tests/Loader.test.stories.js +0 -21
  64. package/dist/components/MenuItem/tests/MenuItem.stories.d.ts +37 -7
  65. package/dist/components/MenuItem/tests/MenuItem.stories.js +218 -112
  66. package/dist/components/Modal/Modal.js +1 -1
  67. package/dist/components/Modal/Modal.module.css +1 -1
  68. package/dist/components/Modal/tests/Modal.stories.d.ts +53 -10
  69. package/dist/components/Modal/tests/Modal.stories.js +366 -214
  70. package/dist/components/Overlay/Overlay.js +1 -0
  71. package/dist/components/Overlay/tests/Overlay.stories.d.ts +15 -1
  72. package/dist/components/Overlay/tests/Overlay.stories.js +135 -1
  73. package/dist/components/Pagination/tests/Pagination.stories.d.ts +14 -1
  74. package/dist/components/Pagination/tests/Pagination.stories.js +93 -15
  75. package/dist/components/PinField/tests/PinField.stories.d.ts +1 -1
  76. package/dist/components/PinField/tests/PinField.stories.js +1 -1
  77. package/dist/components/Popover/Popover.module.css +1 -1
  78. package/dist/components/Progress/tests/Progress.stories.d.ts +19 -4
  79. package/dist/components/Progress/tests/Progress.stories.js +85 -49
  80. package/dist/components/Radio/Radio.module.css +1 -1
  81. package/dist/components/Radio/tests/Radio.stories.d.ts +25 -4
  82. package/dist/components/Radio/tests/Radio.stories.js +147 -65
  83. package/dist/components/RadioGroup/tests/RadioGroup.stories.d.ts +9 -2
  84. package/dist/components/RadioGroup/tests/RadioGroup.stories.js +64 -38
  85. package/dist/components/Reshaped/Reshaped.css +1 -1
  86. package/dist/components/Scrim/tests/Scrim.stories.d.ts +10 -2
  87. package/dist/components/Scrim/tests/Scrim.stories.js +51 -31
  88. package/dist/components/ScrollArea/ScrollArea.module.css +1 -1
  89. package/dist/components/Select/Select.module.css +1 -1
  90. package/dist/components/Select/Select.types.d.ts +38 -11
  91. package/dist/components/Select/SelectCustom.js +2 -1
  92. package/dist/components/Select/SelectCustomControlled.js +24 -9
  93. package/dist/components/Select/SelectCustomUncontrolled.js +10 -7
  94. package/dist/components/Select/SelectTrigger.js +1 -1
  95. package/dist/components/Select/tests/Select.stories.d.ts +3 -0
  96. package/dist/components/Select/tests/Select.stories.js +91 -34
  97. package/dist/components/Skeleton/tests/Skeleton.stories.d.ts +10 -2
  98. package/dist/components/Skeleton/tests/Skeleton.stories.js +46 -28
  99. package/dist/components/Slider/Slider.module.css +1 -1
  100. package/dist/components/Stepper/tests/Stepper.stories.d.ts +18 -4
  101. package/dist/components/Stepper/tests/Stepper.stories.js +99 -70
  102. package/dist/components/Switch/Switch.module.css +1 -1
  103. package/dist/components/Switch/tests/Switch.stories.d.ts +10 -2
  104. package/dist/components/Switch/tests/Switch.stories.js +77 -23
  105. package/dist/components/Switch/tests/Switch.test.stories.d.ts +0 -10
  106. package/dist/components/Switch/tests/Switch.test.stories.js +0 -68
  107. package/dist/components/Table/Table.module.css +1 -1
  108. package/dist/components/Table/tests/Table.stories.d.ts +25 -5
  109. package/dist/components/Table/tests/Table.stories.js +274 -177
  110. package/dist/components/Table/tests/Table.test.stories.d.ts +0 -5
  111. package/dist/components/Table/tests/Table.test.stories.js +0 -82
  112. package/dist/components/Tabs/Tabs.module.css +1 -1
  113. package/dist/components/Tabs/TabsControlled.js +1 -0
  114. package/dist/components/TextArea/TextArea.module.css +1 -1
  115. package/dist/components/TextArea/tests/TextArea.stories.d.ts +41 -9
  116. package/dist/components/TextArea/tests/TextArea.stories.js +179 -93
  117. package/dist/components/TextField/TextField.js +1 -1
  118. package/dist/components/TextField/TextField.module.css +1 -1
  119. package/dist/components/TextField/tests/TextField.stories.d.ts +41 -11
  120. package/dist/components/TextField/tests/TextField.stories.js +206 -132
  121. package/dist/components/TextField/tests/TextField.test.stories.d.ts +0 -13
  122. package/dist/components/TextField/tests/TextField.test.stories.js +0 -88
  123. package/dist/components/Theme/Theme.module.css +1 -1
  124. package/dist/components/Timeline/tests/Timeline.stories.d.ts +10 -2
  125. package/dist/components/Timeline/tests/Timeline.stories.js +69 -42
  126. package/dist/components/Timeline/tests/Timeline.test.stories.d.ts +0 -2
  127. package/dist/components/Timeline/tests/Timeline.test.stories.js +0 -21
  128. package/dist/components/Toast/ToastContainer.js +1 -0
  129. package/dist/components/Toast/ToastRegion.js +1 -0
  130. package/dist/components/Toast/tests/Toast.stories.d.ts +32 -8
  131. package/dist/components/Toast/tests/Toast.stories.js +111 -37
  132. package/dist/components/ToggleButtonGroup/ToggleButtonGroupControlled.js +1 -0
  133. package/dist/components/Tooltip/tests/Tooltip.stories.d.ts +18 -4
  134. package/dist/components/Tooltip/tests/Tooltip.stories.js +139 -107
  135. package/dist/components/Tooltip/tests/Tooltip.test.stories.d.ts +0 -6
  136. package/dist/components/Tooltip/tests/Tooltip.test.stories.js +0 -29
  137. package/dist/components/View/View.js +1 -0
  138. package/dist/components/View/tests/View.stories.d.ts +4 -0
  139. package/dist/components/View/tests/View.stories.js +39 -0
  140. package/dist/components/_private/Expandable/Expandable.js +3 -1
  141. package/dist/components/_private/Portal/Portal.js +4 -1
  142. package/dist/hooks/_private/usePrevious.js +1 -0
  143. package/dist/hooks/tests/useDrag.stories.js +1 -1
  144. package/dist/styles/resolvers/align/align.css +1 -1
  145. package/dist/styles/resolvers/aspectRatio/aspectRatio.css +1 -1
  146. package/dist/styles/resolvers/bleed/bleed.module.css +1 -1
  147. package/dist/styles/resolvers/justify/justify.css +1 -1
  148. package/dist/styles/resolvers/maxHeight/maxHeight.module.css +1 -1
  149. package/dist/styles/resolvers/maxWidth/maxWidth.module.css +1 -1
  150. package/dist/styles/resolvers/minHeight/minHeight.module.css +1 -1
  151. package/dist/styles/resolvers/minWidth/minWidth.module.css +1 -1
  152. package/dist/styles/resolvers/position/position.css +1 -1
  153. package/dist/styles/resolvers/textAlign/textAlign.css +1 -1
  154. package/dist/styles/resolvers/width/width.module.css +1 -1
  155. package/dist/utilities/scroll/disable.js +2 -2
  156. package/package.json +21 -21
  157. package/dist/components/Alert/tests/Alert.test.stories.d.ts +0 -15
  158. package/dist/components/Alert/tests/Alert.test.stories.js +0 -26
  159. package/dist/components/Badge/tests/Badge.test.stories.d.ts +0 -20
  160. package/dist/components/Badge/tests/Badge.test.stories.js +0 -46
  161. package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.d.ts +0 -23
  162. package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.js +0 -76
  163. package/dist/components/Button/tests/Button.test.stories.d.ts +0 -28
  164. package/dist/components/Button/tests/Button.test.stories.js +0 -135
  165. package/dist/components/Card/tests/Card.test.stories.d.ts +0 -35
  166. package/dist/components/Card/tests/Card.test.stories.js +0 -54
  167. package/dist/components/Checkbox/tests/Checkbox.test.stories.d.ts +0 -25
  168. package/dist/components/Checkbox/tests/Checkbox.test.stories.js +0 -104
  169. package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.d.ts +0 -22
  170. package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.js +0 -78
  171. package/dist/components/Container/tests/Container.test.stories.d.ts +0 -15
  172. package/dist/components/Container/tests/Container.test.stories.js +0 -26
  173. package/dist/components/ContextMenu/tests/ContextMenu.test.stories.d.ts +0 -25
  174. package/dist/components/ContextMenu/tests/ContextMenu.test.stories.js +0 -53
  175. package/dist/components/Dismissible/tests/Dismissible.test.stories.d.ts +0 -19
  176. package/dist/components/Dismissible/tests/Dismissible.test.stories.js +0 -42
  177. package/dist/components/Divider/tests/Divider.test.stories.d.ts +0 -18
  178. package/dist/components/Divider/tests/Divider.test.stories.js +0 -47
  179. package/dist/components/FormControl/tests/FormControl.test.stories.d.ts +0 -20
  180. package/dist/components/FormControl/tests/FormControl.test.stories.js +0 -49
  181. package/dist/components/Hidden/tests/Hidden.test.stories.d.ts +0 -15
  182. package/dist/components/Hidden/tests/Hidden.test.stories.js +0 -20
  183. package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.d.ts +0 -15
  184. package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.js +0 -20
  185. package/dist/components/Hotkey/tests/Hotkey.test.stories.d.ts +0 -15
  186. package/dist/components/Hotkey/tests/Hotkey.test.stories.js +0 -26
  187. package/dist/components/Icon/tests/Icon.test.stories.d.ts +0 -16
  188. package/dist/components/Icon/tests/Icon.test.stories.js +0 -35
  189. package/dist/components/MenuItem/tests/MenuItem.test.stories.d.ts +0 -27
  190. package/dist/components/MenuItem/tests/MenuItem.test.stories.js +0 -116
  191. package/dist/components/Modal/tests/Modal.test.stories.d.ts +0 -31
  192. package/dist/components/Modal/tests/Modal.test.stories.js +0 -149
  193. package/dist/components/Overlay/tests/Overlay.test.stories.d.ts +0 -28
  194. package/dist/components/Overlay/tests/Overlay.test.stories.js +0 -148
  195. package/dist/components/Pagination/tests/Pagination.test.stories.d.ts +0 -23
  196. package/dist/components/Pagination/tests/Pagination.test.stories.js +0 -86
  197. package/dist/components/Progress/tests/Progress.test.stories.d.ts +0 -16
  198. package/dist/components/Progress/tests/Progress.test.stories.js +0 -35
  199. package/dist/components/Radio/tests/Radio.test.stories.d.ts +0 -30
  200. package/dist/components/Radio/tests/Radio.test.stories.js +0 -118
  201. package/dist/components/RadioGroup/tests/RadioGroup.test.stories.d.ts +0 -22
  202. package/dist/components/RadioGroup/tests/RadioGroup.test.stories.js +0 -78
  203. package/dist/components/Scrim/tests/Scrim.test.stories.d.ts +0 -15
  204. package/dist/components/Scrim/tests/Scrim.test.stories.js +0 -25
  205. package/dist/components/Skeleton/tests/Skeleton.test.stories.d.ts +0 -15
  206. package/dist/components/Skeleton/tests/Skeleton.test.stories.js +0 -23
  207. package/dist/components/Stepper/tests/Stepper.test.stories.d.ts +0 -20
  208. package/dist/components/Stepper/tests/Stepper.test.stories.js +0 -28
  209. package/dist/components/TextArea/tests/TextArea.test.stories.d.ts +0 -28
  210. package/dist/components/TextArea/tests/TextArea.test.stories.js +0 -99
  211. package/dist/components/Toast/tests/Toast.test.stories.d.ts +0 -16
  212. package/dist/components/Toast/tests/Toast.test.stories.js +0 -101
  213. package/dist/components/View/tests/View.test.stories.d.ts +0 -24
  214. package/dist/components/View/tests/View.test.stories.js +0 -50
@@ -1,7 +1,7 @@
1
- import { Example } from "../../../utilities/storybook/index.js";
2
1
  import View from "../../View/index.js";
3
2
  import CheckboxGroup from "../index.js";
4
3
  import Checkbox from "../../Checkbox/index.js";
4
+ import { expect, fn, userEvent } from "storybook/test";
5
5
  export default {
6
6
  title: "Components/CheckboxGroup",
7
7
  component: CheckboxGroup,
@@ -11,41 +11,73 @@ export default {
11
11
  },
12
12
  },
13
13
  };
14
- export const selection = () => (<Example>
15
- <Example.Item title="unselected">
16
- <CheckboxGroup name="animal">
17
- <View gap={3}>
18
- <Checkbox value="dog">Checkbox 1</Checkbox>
19
- <Checkbox value="cat">Checkbox 2</Checkbox>
20
- </View>
21
- </CheckboxGroup>
22
- </Example.Item>
14
+ export const value = {
15
+ name: "value, controlled",
16
+ args: {
17
+ handleChange: fn(),
18
+ },
19
+ render: (args) => (<View gap={2}>
20
+ <CheckboxGroup name="test-name" value={["1"]} onChange={args.handleChange}>
21
+ {/* checked should be ignored */}
22
+ <Checkbox value="1" checked={false}>
23
+ Content
24
+ </Checkbox>
23
25
 
24
- <Example.Item title="checked, uncontrolled">
25
- <CheckboxGroup name="animal" defaultValue={["dog"]}>
26
- <View gap={3}>
27
- <Checkbox value="dog">Checkbox 1</Checkbox>
28
- <Checkbox value="cat">Checkbox 2</Checkbox>
29
- </View>
26
+ <Checkbox value="2">Content 2</Checkbox>
30
27
  </CheckboxGroup>
31
- </Example.Item>
28
+ </View>),
29
+ play: async ({ canvas, args }) => {
30
+ const inputs = canvas.getAllByRole("checkbox");
31
+ expect(inputs[0]).toBeChecked();
32
+ await userEvent.click(inputs[1]);
33
+ expect(args.handleChange).toHaveBeenCalledTimes(1);
34
+ expect(args.handleChange).toHaveBeenCalledWith({
35
+ name: "test-name",
36
+ value: ["1", "2"],
37
+ event: expect.objectContaining({ target: inputs[1] }),
38
+ });
39
+ // Still checked because it's controlled
40
+ expect(inputs[0]).toBeChecked();
41
+ expect(inputs[1]).not.toBeChecked();
42
+ },
43
+ };
44
+ export const defaultValue = {
45
+ name: "defaultValue, uncontrolled",
46
+ args: {
47
+ handleChange: fn(),
48
+ },
49
+ render: (args) => (<View gap={2}>
50
+ <CheckboxGroup name="test-name" defaultValue={["1"]} onChange={args.handleChange}>
51
+ {/* checked should be ignored */}
52
+ <Checkbox value="1" checked={false}>
53
+ Content
54
+ </Checkbox>
32
55
 
33
- <Example.Item title="checked, controlled">
34
- <CheckboxGroup name="animal" value={["dog"]}>
35
- <View gap={3}>
36
- <Checkbox value="dog">Checkbox 1</Checkbox>
37
- <Checkbox value="cat">Checkbox 2</Checkbox>
38
- </View>
56
+ <Checkbox value="2">Content 2</Checkbox>
39
57
  </CheckboxGroup>
40
- </Example.Item>
41
- </Example>);
42
- export const disabled = () => (<Example>
43
- <Example.Item title="disabled">
44
- <CheckboxGroup name="animal" disabled>
45
- <View gap={3}>
46
- <Checkbox value="dog">Dog</Checkbox>
47
- <Checkbox value="cat">Cat</Checkbox>
48
- </View>
49
- </CheckboxGroup>
50
- </Example.Item>
51
- </Example>);
58
+ </View>),
59
+ play: async ({ canvas, args }) => {
60
+ const inputs = canvas.getAllByRole("checkbox");
61
+ expect(inputs[0]).toBeChecked();
62
+ await userEvent.click(inputs[1]);
63
+ expect(args.handleChange).toHaveBeenCalledTimes(1);
64
+ expect(args.handleChange).toHaveBeenCalledWith({
65
+ name: "test-name",
66
+ value: ["1", "2"],
67
+ event: expect.objectContaining({ target: inputs[1] }),
68
+ });
69
+ expect(inputs[0]).toBeChecked();
70
+ expect(inputs[1]).toBeChecked();
71
+ },
72
+ };
73
+ export const disabled = {
74
+ name: "disabled",
75
+ render: () => (<CheckboxGroup name="test-name" disabled>
76
+ <Checkbox value="test-value">Item 1</Checkbox>
77
+ <Checkbox value="test-value-2">Item 2</Checkbox>
78
+ </CheckboxGroup>),
79
+ play: async ({ canvas }) => {
80
+ const [input] = canvas.getAllByRole("checkbox");
81
+ expect(input).toBeDisabled();
82
+ },
83
+ };
@@ -1,3 +1,4 @@
1
+ import { StoryObj } from "@storybook/react-vite";
1
2
  declare const _default: {
2
3
  title: string;
3
4
  component: import("react").FC<import("./..").ContainerProps>;
@@ -20,3 +21,4 @@ export declare const flex: {
20
21
  name: string;
21
22
  render: () => import("react").JSX.Element;
22
23
  };
24
+ export declare const className: StoryObj;
@@ -1,5 +1,6 @@
1
1
  import { Example, Placeholder } from "../../../utilities/storybook/index.js";
2
2
  import Container from "../index.js";
3
+ import { expect } from "storybook/test";
3
4
  export default {
4
5
  title: "Utility components/Container",
5
6
  component: Container,
@@ -59,3 +60,16 @@ export const flex = {
59
60
  </Example.Item>
60
61
  </Example>),
61
62
  };
63
+ export const className = {
64
+ name: "className, attributes",
65
+ render: () => (<div data-testid="root">
66
+ <Container className="test-classname" attributes={{ id: "test-id" }}>
67
+ <Placeholder />
68
+ </Container>
69
+ </div>),
70
+ play: async ({ canvas }) => {
71
+ const root = canvas.getByTestId("root").firstChild;
72
+ expect(root).toHaveClass("test-classname");
73
+ expect(root).toHaveAttribute("id", "test-id");
74
+ },
75
+ };
@@ -1,3 +1,5 @@
1
+ import { StoryObj } from "@storybook/react-vite";
2
+ import { fn } from "storybook/test";
1
3
  declare const _default: {
2
4
  title: string;
3
5
  component: import("react").FC<import("./..").ContextMenuProps> & {
@@ -14,4 +16,11 @@ declare const _default: {
14
16
  };
15
17
  };
16
18
  export default _default;
17
- export declare const base: () => import("react").JSX.Element;
19
+ export declare const base: {
20
+ name: string;
21
+ render: () => import("react").JSX.Element;
22
+ };
23
+ export declare const handlers: StoryObj<{
24
+ handleOpen: ReturnType<typeof fn>;
25
+ handleClose: ReturnType<typeof fn>;
26
+ }>;
@@ -1,6 +1,8 @@
1
1
  import { Example } from "../../../utilities/storybook/index.js";
2
2
  import ContextMenu from "../index.js";
3
3
  import View from "../../View/index.js";
4
+ import { expect, fn, userEvent, waitFor, within } from "storybook/test";
5
+ import { sleep } from "../../../utilities/helpers.js";
4
6
  export default {
5
7
  title: "Components/ContextMenu",
6
8
  component: ContextMenu,
@@ -10,17 +12,59 @@ export default {
10
12
  },
11
13
  },
12
14
  };
13
- export const base = () => (<Example>
14
- <Example.Item title="base">
15
- <div style={{ height: 200, overflow: "auto" }}>
16
- <ContextMenu>
17
- <View height="400px" backgroundColor="neutral-faded" borderRadius="medium"/>
15
+ export const base = {
16
+ name: "base",
17
+ render: () => (<Example>
18
+ <Example.Item title="base">
19
+ <div style={{ height: 200, overflow: "auto" }}>
20
+ <ContextMenu>
21
+ <View height="400px" backgroundColor="neutral-faded" borderRadius="medium"/>
18
22
 
19
- <ContextMenu.Content>
20
- <ContextMenu.Item>Item 1</ContextMenu.Item>
21
- <ContextMenu.Item>Item 2</ContextMenu.Item>
22
- </ContextMenu.Content>
23
- </ContextMenu>
24
- </div>
25
- </Example.Item>
26
- </Example>);
23
+ <ContextMenu.Content>
24
+ <ContextMenu.Item>Item 1</ContextMenu.Item>
25
+ <ContextMenu.Item>Item 2</ContextMenu.Item>
26
+ </ContextMenu.Content>
27
+ </ContextMenu>
28
+ </div>
29
+ </Example.Item>
30
+ </Example>),
31
+ };
32
+ export const handlers = {
33
+ name: "handleOpen, handleClose",
34
+ args: {
35
+ handleOpen: fn(),
36
+ handleClose: fn(),
37
+ },
38
+ render: (args) => (<div style={{ height: 200, overflow: "auto" }} data-testid="scroll">
39
+ <ContextMenu onOpen={args.handleOpen} onClose={args.handleClose}>
40
+ <View height="400px" backgroundColor="neutral-faded" borderRadius="medium" attributes={{ "data-testid": "root" }}/>
41
+
42
+ <ContextMenu.Content>
43
+ <ContextMenu.Item>Item</ContextMenu.Item>
44
+ </ContextMenu.Content>
45
+ </ContextMenu>
46
+ </div>),
47
+ play: async ({ canvasElement, args }) => {
48
+ const canvas = within(canvasElement.ownerDocument.body);
49
+ const root = canvas.getByTestId("root");
50
+ const scroll = canvas.getByTestId("scroll");
51
+ await userEvent.pointer({ keys: "[MouseRight>]", target: root });
52
+ expect(args.handleOpen).toHaveBeenCalledTimes(1);
53
+ expect(args.handleOpen).toHaveBeenCalledWith();
54
+ const item = canvas.getByText("Item");
55
+ expect(item).toBeInTheDocument();
56
+ // Context menu locks the scroll of the closest scrollable parent
57
+ expect(scroll).toHaveStyle("overflow: hidden");
58
+ // Wait for the open animation to finish
59
+ await sleep(500);
60
+ await userEvent.click(root);
61
+ expect(args.handleClose).toHaveBeenCalledTimes(1);
62
+ expect(args.handleClose).toHaveBeenCalledWith({ reason: "outside-click" });
63
+ await waitFor(() => {
64
+ expect(item).not.toBeInTheDocument();
65
+ expect(scroll).not.toHaveStyle("overflow: hidden");
66
+ }, {
67
+ timeout: 1000,
68
+ });
69
+ },
70
+ };
@@ -1,4 +1,5 @@
1
1
  import { StoryObj } from "@storybook/react-vite";
2
+ import { fn } from "storybook/test";
2
3
  declare const _default: {
3
4
  title: string;
4
5
  components: import("react").FC<import("./..").DismissibleProps>;
@@ -18,3 +19,7 @@ export declare const align: {
18
19
  render: () => import("react").JSX.Element;
19
20
  };
20
21
  export declare const hideCloseButton: StoryObj;
22
+ export declare const closeAriaLabel: StoryObj<{
23
+ handleClose: ReturnType<typeof fn>;
24
+ }>;
25
+ export declare const className: StoryObj;
@@ -1,4 +1,4 @@
1
- import { within, expect } from "storybook/test";
1
+ import { within, expect, userEvent, fn } from "storybook/test";
2
2
  import { Example, Placeholder } from "../../../utilities/storybook/index.js";
3
3
  import Dismissible from "../index.js";
4
4
  import Image from "../../Image/index.js";
@@ -66,3 +66,32 @@ export const hideCloseButton = {
66
66
  expect(button).not.toBeInTheDocument();
67
67
  },
68
68
  };
69
+ export const closeAriaLabel = {
70
+ args: {
71
+ handleClose: fn(),
72
+ },
73
+ name: "onClose, closeAriaLabel",
74
+ render: (args) => (<Dismissible closeAriaLabel="Close" onClose={args.handleClose}>
75
+ <Placeholder />
76
+ </Dismissible>),
77
+ play: async ({ canvas, args }) => {
78
+ const button = canvas.getAllByRole("button")[0];
79
+ await userEvent.click(button);
80
+ expect(button).toHaveAttribute("aria-label", "Close");
81
+ expect(args.handleClose).toHaveBeenCalledTimes(1);
82
+ expect(args.handleClose).toHaveBeenCalledWith();
83
+ },
84
+ };
85
+ export const className = {
86
+ name: "className, attributes",
87
+ render: () => (<div data-testid="root">
88
+ <Dismissible closeAriaLabel="Close" onClose={() => { }} className="test-classname" attributes={{ id: "test-id" }}>
89
+ <Placeholder />
90
+ </Dismissible>
91
+ </div>),
92
+ play: async ({ canvas }) => {
93
+ const root = canvas.getByTestId("root").firstChild;
94
+ expect(root).toHaveClass("test-classname");
95
+ expect(root).toHaveAttribute("id", "test-id");
96
+ },
97
+ };
@@ -1,3 +1,4 @@
1
+ import { StoryObj } from "@storybook/react-vite";
1
2
  declare const _default: {
2
3
  title: string;
3
4
  component: import("react").FC<import("./..").DividerProps>;
@@ -8,6 +9,10 @@ declare const _default: {
8
9
  };
9
10
  };
10
11
  export default _default;
11
- export declare const rendering: () => import("react").JSX.Element;
12
- export declare const vertical: () => import("react").JSX.Element;
13
- export declare const label: () => import("react").JSX.Element;
12
+ export declare const rendering: StoryObj;
13
+ export declare const vertical: StoryObj;
14
+ export declare const label: {
15
+ name: string;
16
+ render: () => import("react").JSX.Element;
17
+ };
18
+ export declare const className: StoryObj;
@@ -1,6 +1,7 @@
1
1
  import { Example, Placeholder } from "../../../utilities/storybook/index.js";
2
2
  import View from "../../View/index.js";
3
3
  import Divider from "../index.js";
4
+ import { expect } from "storybook/test";
4
5
  export default {
5
6
  title: "Components/Divider",
6
7
  component: Divider,
@@ -10,55 +11,84 @@ export default {
10
11
  },
11
12
  },
12
13
  };
13
- export const rendering = () => (<Example>
14
- <Example.Item title="default rendering">
15
- <Divider />
16
- </Example.Item>
17
-
18
- <Example.Item title={["blank rendering", "box should overlap with divider"]}>
19
- <View width="40px" height="10px" backgroundColor="primary"/>
20
- <Divider blank/>
21
- </Example.Item>
22
- </Example>);
23
- export const vertical = () => (<Example>
24
- <Example.Item title="vertical">
25
- <View gap={3} direction="row" align="stretch">
26
- <Placeholder />
27
- <View.Item>
28
- <Divider vertical/>
29
- </View.Item>
30
- <Placeholder />
31
- </View>
32
- </Example.Item>
14
+ export const rendering = {
15
+ name: "base",
16
+ render: () => (<Example>
17
+ <Example.Item title="default rendering">
18
+ <Divider />
19
+ </Example.Item>
33
20
 
34
- <Example.Item title={["responsive vertical", "[s] true", "[m+]: false"]}>
35
- <View gap={3} direction={{ s: "row", m: "column" }} align="stretch">
36
- <Placeholder />
37
- <View.Item>
38
- <Divider vertical={{ s: true, m: false }}/>
39
- </View.Item>
40
- <Placeholder />
41
- </View>
42
- </Example.Item>
43
- </Example>);
44
- export const label = () => {
45
- return (<Example>
46
- <Example.Item title="alignment">
47
- <View gap={4}>
48
- <Divider>Centered label</Divider>
49
- <Divider contentPosition="start">Start label</Divider>
50
- <Divider contentPosition="end">End label</Divider>
21
+ <Example.Item title={["blank rendering", "box should overlap with divider"]}>
22
+ <View width="40px" height="10px" backgroundColor="primary"/>
23
+ <Divider blank/>
24
+ </Example.Item>
25
+ </Example>),
26
+ play: async ({ canvas }) => {
27
+ const [el] = canvas.getAllByRole("separator");
28
+ expect(el).toHaveAttribute("aria-orientation", "horizontal");
29
+ },
30
+ };
31
+ export const vertical = {
32
+ name: "vertical",
33
+ render: () => (<Example>
34
+ <Example.Item title="vertical">
35
+ <View gap={3} direction="row" align="stretch">
36
+ <Placeholder />
37
+ <View.Item>
38
+ <Divider vertical/>
39
+ </View.Item>
40
+ <Placeholder />
51
41
  </View>
52
42
  </Example.Item>
53
43
 
54
- <Example.Item title="responsive">
55
- <View gap={3} direction={{ s: "column", m: "row" }} align="stretch">
44
+ <Example.Item title={["responsive vertical", "[s] true", "[m+]: false"]}>
45
+ <View gap={3} direction={{ s: "row", m: "column" }} align="stretch">
56
46
  <Placeholder />
57
47
  <View.Item>
58
- <Divider vertical={{ s: false, m: true }}>or pick second option</Divider>
48
+ <Divider vertical={{ s: true, m: false }}/>
59
49
  </View.Item>
60
50
  <Placeholder />
61
51
  </View>
62
52
  </Example.Item>
63
- </Example>);
53
+ </Example>),
54
+ play: async ({ canvas }) => {
55
+ const [el, elResponsive] = canvas.getAllByRole("separator");
56
+ expect(el).toHaveAttribute("aria-orientation", "vertical");
57
+ expect(elResponsive).not.toHaveAttribute("aria-orientation");
58
+ },
59
+ };
60
+ export const label = {
61
+ name: "children, contentPosition",
62
+ render: () => {
63
+ return (<Example>
64
+ <Example.Item title="alignment">
65
+ <View gap={4}>
66
+ <Divider>Centered label</Divider>
67
+ <Divider contentPosition="start">Start label</Divider>
68
+ <Divider contentPosition="end">End label</Divider>
69
+ </View>
70
+ </Example.Item>
71
+
72
+ <Example.Item title="responsive">
73
+ <View gap={3} direction={{ s: "column", m: "row" }} align="stretch">
74
+ <Placeholder />
75
+ <View.Item>
76
+ <Divider vertical={{ s: false, m: true }}>or pick second option</Divider>
77
+ </View.Item>
78
+ <Placeholder />
79
+ </View>
80
+ </Example.Item>
81
+ </Example>);
82
+ },
83
+ };
84
+ export const className = {
85
+ name: "className, attributes",
86
+ render: () => (<div data-testid="root">
87
+ <Divider className="test-classname" attributes={{ id: "test-id" }}/>
88
+ </div>),
89
+ play: async ({ canvas }) => {
90
+ const root = canvas.getByTestId("root").firstChild;
91
+ expect(root).toHaveClass("test-classname");
92
+ expect(root).toHaveAttribute("id", "test-id");
93
+ },
64
94
  };
@@ -1,3 +1,5 @@
1
+ import { fn } from "storybook/test";
2
+ import { StoryObj } from "@storybook/react-vite";
1
3
  declare const _default: {
2
4
  title: string;
3
5
  component: import("react").FC<import("./..").DropdownMenuProps> & {
@@ -16,9 +18,36 @@ declare const _default: {
16
18
  };
17
19
  };
18
20
  export default _default;
19
- export declare const position: () => import("react").JSX.Element;
20
- export declare const sections: () => import("react").JSX.Element;
21
- export declare const submenu: () => import("react").JSX.Element;
22
- export declare const state: () => import("react").JSX.Element;
23
- export declare const testScroll: () => import("react").JSX.Element;
24
- export declare const testThemeSwitching: () => import("react").JSX.Element;
21
+ export declare const position: {
22
+ name: string;
23
+ render: () => import("react").JSX.Element;
24
+ };
25
+ export declare const sections: {
26
+ name: string;
27
+ render: () => import("react").JSX.Element;
28
+ };
29
+ export declare const submenu: {
30
+ name: string;
31
+ render: () => import("react").JSX.Element;
32
+ };
33
+ export declare const defaultActive: StoryObj<{
34
+ handleOpen: ReturnType<typeof fn>;
35
+ handleClose: ReturnType<typeof fn>;
36
+ }>;
37
+ export declare const active: StoryObj<{
38
+ handleOpen: ReturnType<typeof fn>;
39
+ handleClose: ReturnType<typeof fn>;
40
+ }>;
41
+ export declare const activeFalse: StoryObj<{
42
+ handleOpen: ReturnType<typeof fn>;
43
+ handleClose: ReturnType<typeof fn>;
44
+ }>;
45
+ export declare const className: StoryObj;
46
+ export declare const testScroll: {
47
+ name: string;
48
+ render: () => import("react").JSX.Element;
49
+ };
50
+ export declare const testThemeSwitching: {
51
+ name: string;
52
+ render: () => import("react").JSX.Element;
53
+ };