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,4 +1,3 @@
1
- import { expect } from "storybook/test";
2
1
  import Timeline from "../index.js";
3
2
  export default {
4
3
  title: "Components/Timeline/tests",
@@ -10,23 +9,3 @@ export default {
10
9
  chromatic: { disableSnapshot: true },
11
10
  },
12
11
  };
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
- };
@@ -89,6 +89,7 @@ const ToastContainer = (props) => {
89
89
  // Height + padding + borders
90
90
  height: status === "entered" ? `calc(${toastHeight}px + var(--rs-unit-x2) + 2px)` : 0,
91
91
  // Disable transition when height of the toast can change
92
+ // eslint-disable-next-line react-hooks/refs
92
93
  transitionDuration: resizingRef.current ? "0s" : undefined,
93
94
  }, onTransitionEnd: handleTransitionEnd, onFocus: stopTimer, onBlur: startTimer, children: _jsx("span", { className: s.wrapper, children: _jsx(Toast, { ...toastProps, collapsed: index > 0 && !inspected, attributes: { ...toastProps.attributes, ref: wrapperRef } }) }) }));
94
95
  };
@@ -56,6 +56,7 @@ const ToastRegion = (props) => {
56
56
  // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events
57
57
  _jsx("ul", { role: "region", "aria-live": "polite", className: regionClassNames, ref: rootRef, onTouchStart: handleTouchStart, onClick: handleClick, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, style: { width }, children: queue.map((data, index) => {
58
58
  const visibleIndex = filteredLength - index + hiddenCount - 1;
59
+ // eslint-disable-next-line react-hooks/immutability
59
60
  if (data.status !== "entered")
60
61
  hiddenCount += 1;
61
62
  return (_jsx(ToastContainer, { ...data, index: visibleIndex, inspected: inspecting || !!expanded }, data.id));
@@ -1,3 +1,4 @@
1
+ import { StoryObj } from "@storybook/react-vite";
1
2
  declare const _default: {
2
3
  title: string;
3
4
  parameters: {
@@ -7,11 +8,34 @@ declare const _default: {
7
8
  };
8
9
  };
9
10
  export default _default;
10
- export declare const base: () => import("react").JSX.Element;
11
- export declare const size: () => import("react").JSX.Element;
12
- export declare const position: () => import("react").JSX.Element;
13
- export declare const color: () => import("react").JSX.Element;
14
- export declare const timeout: () => import("react").JSX.Element;
15
- export declare const regionOptions: () => import("react").JSX.Element;
16
- export declare const slots: () => import("react").JSX.Element;
17
- export declare const edgeCases: () => import("react").JSX.Element;
11
+ export declare const size: {
12
+ name: string;
13
+ render: () => import("react").JSX.Element;
14
+ };
15
+ export declare const position: {
16
+ name: string;
17
+ render: () => import("react").JSX.Element;
18
+ };
19
+ export declare const color: {
20
+ name: string;
21
+ render: () => import("react").JSX.Element;
22
+ };
23
+ export declare const timeout: {
24
+ name: string;
25
+ render: () => import("react").JSX.Element;
26
+ };
27
+ export declare const regionOptions: {
28
+ name: string;
29
+ render: () => import("react").JSX.Element;
30
+ };
31
+ export declare const slots: {
32
+ name: string;
33
+ render: () => import("react").JSX.Element;
34
+ };
35
+ export declare const base: StoryObj;
36
+ export declare const nested: StoryObj;
37
+ export declare const className: StoryObj;
38
+ export declare const edgeCases: {
39
+ name: string;
40
+ render: () => import("react").JSX.Element;
41
+ };
@@ -6,6 +6,8 @@ import Image from "../../Image/index.js";
6
6
  import Text from "../../Text/index.js";
7
7
  import Dismissible from "../../Dismissible/index.js";
8
8
  import IconZap from "../../../icons/Zap.js";
9
+ import { expect, userEvent, waitFor, within } from "storybook/test";
10
+ import { sleep } from "../../../utilities/helpers.js";
9
11
  export default {
10
12
  title: "Components/Toast",
11
13
  parameters: {
@@ -14,27 +16,6 @@ export default {
14
16
  },
15
17
  },
16
18
  };
17
- const Base = () => {
18
- const toast = useToast();
19
- return (<Button onClick={() => {
20
- const id = toast.show({
21
- icon: IconZap,
22
- title: "Hey!",
23
- text: "Event completed",
24
- actionsSlot: [
25
- <Button onClick={() => toast.hide(id)}>Undo</Button>,
26
- <Button onClick={() => toast.hide(id)}>Show</Button>,
27
- ],
28
- });
29
- }}>
30
- Show toast
31
- </Button>);
32
- };
33
- export const base = () => (<Example>
34
- <Example.Item title="title, children, icon, actions">
35
- <Base />
36
- </Example.Item>
37
- </Example>);
38
19
  const Size = () => {
39
20
  const toast = useToast();
40
21
  const props = {
@@ -67,7 +48,7 @@ const Size = () => {
67
48
  </Example.Item>
68
49
  </Example>);
69
50
  };
70
- export const size = () => <Size />;
51
+ export const size = { name: "size", render: () => <Size /> };
71
52
  const Position = () => {
72
53
  const toast = useToast();
73
54
  return (<Example>
@@ -134,7 +115,7 @@ const Position = () => {
134
115
  </Example.Item>
135
116
  </Example>);
136
117
  };
137
- export const position = () => <Position />;
118
+ export const position = { name: "position", render: () => <Position /> };
138
119
  const Color = () => {
139
120
  const toast = useToast();
140
121
  return (<Example>
@@ -236,7 +217,7 @@ const Color = () => {
236
217
  </Example.Item>
237
218
  </Example>);
238
219
  };
239
- export const color = () => <Color />;
220
+ export const color = { name: "color", render: () => <Color /> };
240
221
  const Timeout = () => {
241
222
  const toast = useToast();
242
223
  return (<Example>
@@ -272,7 +253,7 @@ const Timeout = () => {
272
253
  </Example.Item>
273
254
  </Example>);
274
255
  };
275
- export const timeout = () => <Timeout />;
256
+ export const timeout = { name: "timeout", render: () => <Timeout /> };
276
257
  const Expanded = () => {
277
258
  const toast = useToast();
278
259
  return (<Example>
@@ -288,7 +269,7 @@ const Expanded = () => {
288
269
  </Example.Item>
289
270
  </Example>);
290
271
  };
291
- export const regionOptions = () => <Expanded />;
272
+ export const regionOptions = { name: "expanded", render: () => <Expanded /> };
292
273
  const Slots = () => {
293
274
  const toast = useToast();
294
275
  return (<Example>
@@ -323,7 +304,97 @@ const Slots = () => {
323
304
  </Example.Item>
324
305
  </Example>);
325
306
  };
326
- export const slots = () => <Slots />;
307
+ export const slots = { name: "slots", render: () => <Slots /> };
308
+ export const base = {
309
+ name: "base",
310
+ render: () => {
311
+ const toast = useToast();
312
+ return (<Button onClick={() => {
313
+ const id = toast.show({
314
+ title: "Title",
315
+ text: "Text",
316
+ children: "Children",
317
+ startSlot: "Slot",
318
+ actionsSlot: (<Button attributes={{ "data-testid": "trigger-id" }} onClick={() => toast.hide(id)}>
319
+ Trigger
320
+ </Button>),
321
+ });
322
+ }}>
323
+ Show toast
324
+ </Button>);
325
+ },
326
+ play: async ({ canvasElement }) => {
327
+ const canvas = within(canvasElement.ownerDocument.body);
328
+ const button = canvas.getAllByRole("button")[0];
329
+ await userEvent.click(button);
330
+ const title = canvas.getByText("Title");
331
+ const text = canvas.getByText("Text");
332
+ const children = canvas.getByText("Children");
333
+ const slot = canvas.getByText("Slot");
334
+ const action = canvas.getByTestId("trigger-id");
335
+ expect(title).toBeInTheDocument();
336
+ expect(text).toBeInTheDocument();
337
+ expect(children).toBeInTheDocument();
338
+ expect(slot).toBeInTheDocument();
339
+ expect(action).toBeInTheDocument();
340
+ await userEvent.click(action);
341
+ await sleep(500);
342
+ await waitFor(() => {
343
+ expect(title).not.toBeInTheDocument();
344
+ });
345
+ },
346
+ };
347
+ const NestedDemo = () => {
348
+ const toast = useToast();
349
+ return (<Button onClick={() => {
350
+ toast.show({
351
+ text: "Content",
352
+ });
353
+ }}>
354
+ Show toast
355
+ </Button>);
356
+ };
357
+ export const nested = {
358
+ name: "ToastProvider",
359
+ render: () => {
360
+ return (<div data-testid="test-container-id">
361
+ <ToastProvider>
362
+ <NestedDemo />
363
+ </ToastProvider>
364
+ </div>);
365
+ },
366
+ play: async ({ canvasElement }) => {
367
+ const canvas = within(canvasElement.ownerDocument.body);
368
+ const button = canvas.getAllByRole("button")[0];
369
+ await userEvent.click(button);
370
+ const container = canvas.getByTestId("test-container-id");
371
+ const toast = within(container).getByText("Content");
372
+ expect(toast).toBeInTheDocument();
373
+ },
374
+ };
375
+ export const className = {
376
+ name: "className, attributes",
377
+ render: () => {
378
+ const toast = useToast();
379
+ return (<Button onClick={() => {
380
+ const id = toast.show({
381
+ text: "Content",
382
+ attributes: { "data-testid": "test-id" },
383
+ className: "test-classname",
384
+ });
385
+ }}>
386
+ Show toast
387
+ </Button>);
388
+ },
389
+ play: async ({ canvasElement }) => {
390
+ const canvas = within(canvasElement.ownerDocument.body);
391
+ const button = canvas.getAllByRole("button")[0];
392
+ await userEvent.click(button);
393
+ const toast = canvas.getByTestId("test-id");
394
+ expect(toast).toBeInTheDocument();
395
+ expect(toast).toHaveClass("test-classname");
396
+ },
397
+ };
327
398
  const Multiline = () => {
328
399
  const toast = useToast();
329
400
  return (<Button onClick={() => {
@@ -346,13 +417,16 @@ const Nested = () => {
346
417
  </Button>
347
418
  </View>);
348
419
  };
349
- export const edgeCases = () => (<Example>
350
- <Example.Item title="Multiline, should support dynamic height">
351
- <Multiline />
352
- </Example.Item>
353
- <Example.Item title="Nested ToastProvider">
354
- <ToastProvider>
355
- <Nested />
356
- </ToastProvider>
357
- </Example.Item>
358
- </Example>);
420
+ export const edgeCases = {
421
+ name: "test: edge cases",
422
+ render: () => (<Example>
423
+ <Example.Item title="Multiline, should support dynamic height">
424
+ <Multiline />
425
+ </Example.Item>
426
+ <Example.Item title="Nested ToastProvider">
427
+ <ToastProvider>
428
+ <Nested />
429
+ </ToastProvider>
430
+ </Example.Item>
431
+ </Example>),
432
+ };
@@ -23,6 +23,7 @@ const ToggleButtonGroupControlled = (props) => {
23
23
  return child;
24
24
  }
25
25
  const boundIndex = toggleButtonIndex;
26
+ // eslint-disable-next-line react-hooks/immutability
26
27
  toggleButtonIndex += 1;
27
28
  const focusable = focusableIndexRef.current === boundIndex;
28
29
  return (_jsx(ToggleButtonGroupItem, { ...child.props, focusable: focusable, onFocus: () => {
@@ -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("./..").TooltipProps>;
@@ -8,7 +10,19 @@ declare const _default: {
8
10
  };
9
11
  };
10
12
  export default _default;
11
- export declare const position: () => import("react").JSX.Element;
12
- export declare const color: () => import("react").JSX.Element;
13
- export declare const controlled: () => import("react").JSX.Element;
14
- export declare const edgeCases: () => import("react").JSX.Element;
13
+ export declare const position: {
14
+ name: string;
15
+ render: () => import("react").JSX.Element;
16
+ };
17
+ export declare const color: {
18
+ name: string;
19
+ render: () => import("react").JSX.Element;
20
+ };
21
+ export declare const defaultActive: StoryObj<{
22
+ handleOpen: ReturnType<typeof fn>;
23
+ handleClose: ReturnType<typeof fn>;
24
+ }>;
25
+ export declare const edgeCases: {
26
+ name: string;
27
+ render: () => import("react").JSX.Element;
28
+ };
@@ -4,6 +4,7 @@ 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 { expect, fn, userEvent, waitFor, within } from "storybook/test";
7
8
  export default {
8
9
  title: "Components/Tooltip",
9
10
  component: Tooltip,
@@ -29,122 +30,153 @@ const DemoResponsive = (props) => {
29
30
  {(attributes) => <Button attributes={attributes}>Show tooltip</Button>}
30
31
  </Tooltip>);
31
32
  };
32
- export const position = () => (<Example>
33
- <Example.Item title="position: bottom-start">
34
- <View direction="row" gap={2}>
35
- <Demo position="bottom-start" text="Tooltip 1"/>
36
- <Demo position="bottom-start" text="Tooltip 2"/>
37
- <Demo position="bottom-start" text="Tooltip 3"/>
38
- </View>
39
- </Example.Item>
40
- <Example.Item title="position: bottom">
41
- <Demo position="bottom"/>
42
- </Example.Item>
43
- <Example.Item title="position: bottom-end">
44
- <Demo position="bottom-end"/>
45
- </Example.Item>
46
- <Example.Item title="position: top-start">
47
- <Demo position="top-start"/>
48
- </Example.Item>
49
- <Example.Item title="position: top">
50
- <Demo position="top"/>
51
- </Example.Item>
52
- <Example.Item title="position: top-end">
53
- <Demo position="top-end"/>
54
- </Example.Item>
33
+ export const position = {
34
+ name: "position",
35
+ render: () => (<Example>
36
+ <Example.Item title="position: bottom-start">
37
+ <View direction="row" gap={2}>
38
+ <Demo position="bottom-start" text="Tooltip 1"/>
39
+ <Demo position="bottom-start" text="Tooltip 2"/>
40
+ <Demo position="bottom-start" text="Tooltip 3"/>
41
+ </View>
42
+ </Example.Item>
43
+ <Example.Item title="position: bottom">
44
+ <Demo position="bottom"/>
45
+ </Example.Item>
46
+ <Example.Item title="position: bottom-end">
47
+ <Demo position="bottom-end"/>
48
+ </Example.Item>
49
+ <Example.Item title="position: top-start">
50
+ <Demo position="top-start"/>
51
+ </Example.Item>
52
+ <Example.Item title="position: top">
53
+ <Demo position="top"/>
54
+ </Example.Item>
55
+ <Example.Item title="position: top-end">
56
+ <Demo position="top-end"/>
57
+ </Example.Item>
55
58
 
56
- <Example.Item title="position: start">
57
- <View align="end">
58
- <Demo position="start"/>
59
- </View>
60
- </Example.Item>
59
+ <Example.Item title="position: start">
60
+ <View align="end">
61
+ <Demo position="start"/>
62
+ </View>
63
+ </Example.Item>
61
64
 
62
- <Example.Item title="position: start-top">
63
- <View align="end">
64
- <Demo position="start-top"/>
65
- </View>
66
- </Example.Item>
65
+ <Example.Item title="position: start-top">
66
+ <View align="end">
67
+ <Demo position="start-top"/>
68
+ </View>
69
+ </Example.Item>
67
70
 
68
- <Example.Item title="position: start-bottom">
69
- <View align="end">
70
- <Demo position="start-bottom"/>
71
- </View>
72
- </Example.Item>
71
+ <Example.Item title="position: start-bottom">
72
+ <View align="end">
73
+ <Demo position="start-bottom"/>
74
+ </View>
75
+ </Example.Item>
73
76
 
74
- <Example.Item title="position: end">
75
- <Demo position="end"/>
76
- </Example.Item>
77
+ <Example.Item title="position: end">
78
+ <Demo position="end"/>
79
+ </Example.Item>
77
80
 
78
- <Example.Item title="position: end-top">
79
- <Demo position="end-top"/>
80
- </Example.Item>
81
+ <Example.Item title="position: end-top">
82
+ <Demo position="end-top"/>
83
+ </Example.Item>
81
84
 
82
- <Example.Item title="position: end-bottom">
83
- <Demo position="end-bottom"/>
84
- </Example.Item>
85
- </Example>);
86
- export const color = () => (<Example>
87
- <Example.Item title="color: inverted">
88
- <Demo color="inverted" position="bottom"/>
89
- </Example.Item>
90
- <Example.Item title="color: dark">
91
- <Demo color="dark" position="bottom"/>
92
- </Example.Item>
93
- </Example>);
94
- export const controlled = () => (<Example>
95
- <Example.Item title="active, controlled, position: bottom">
96
- <Demo position="bottom" active/>
97
- </Example.Item>
98
- </Example>);
99
- export const edgeCases = () => (<Example>
100
- <Example.Item title="responsive visibility">
101
- <DemoResponsive text="Responsive"/>
102
- </Example.Item>
103
-
104
- <Example.Item title="without text">
105
- <Tooltip>{() => <Button>Button</Button>}</Tooltip>
106
- </Example.Item>
85
+ <Example.Item title="position: end-bottom">
86
+ <Demo position="end-bottom"/>
87
+ </Example.Item>
88
+ </Example>),
89
+ };
90
+ export const color = {
91
+ name: "color",
92
+ render: () => (<Example>
93
+ <Example.Item title="color: inverted">
94
+ <Demo color="inverted" position="bottom"/>
95
+ </Example.Item>
96
+ <Example.Item title="color: dark">
97
+ <Demo color="dark" position="bottom"/>
98
+ </Example.Item>
99
+ </Example>),
100
+ };
101
+ export const defaultActive = {
102
+ name: "uncontrolled",
103
+ args: {
104
+ handleOpen: fn(),
105
+ handleClose: fn(),
106
+ },
107
+ render: (args) => (<Tooltip text="Content" onOpen={args.handleOpen} onClose={args.handleClose}>
108
+ {(attributes) => <Button attributes={attributes}>Trigger</Button>}
109
+ </Tooltip>),
110
+ play: async ({ canvasElement, args }) => {
111
+ const canvas = within(canvasElement.ownerDocument.body);
112
+ const trigger = canvas.getAllByRole("button")[0];
113
+ await userEvent.hover(trigger);
114
+ await waitFor(() => {
115
+ expect(args.handleOpen).toHaveBeenCalledTimes(1);
116
+ expect(args.handleOpen).toHaveBeenCalledWith();
117
+ });
118
+ const item = canvas.getByText("Content");
119
+ expect(item).toBeInTheDocument();
120
+ await userEvent.unhover(trigger);
121
+ await waitFor(() => {
122
+ expect(args.handleClose).toHaveBeenCalledTimes(1);
123
+ expect(args.handleClose).toHaveBeenCalledWith({});
124
+ expect(item).not.toBeInTheDocument();
125
+ });
126
+ },
127
+ };
128
+ export const edgeCases = {
129
+ name: "test: edge cases",
130
+ render: () => (<Example>
131
+ <Example.Item title="responsive visibility">
132
+ <DemoResponsive text="Responsive"/>
133
+ </Example.Item>
107
134
 
108
- <Example.Item title="tooltip with popover">
109
- <Tooltip text="Tooltip" position="top">
110
- {(attributes) => (<Popover position="bottom">
111
- <Popover.Trigger>
112
- {(popoverAttributes) => (<Button attributes={{ ...attributes, ...popoverAttributes }}>Action</Button>)}
113
- </Popover.Trigger>
114
- <Popover.Content>Popover</Popover.Content>
115
- </Popover>)}
116
- </Tooltip>
117
- </Example.Item>
135
+ <Example.Item title="without text">
136
+ <Tooltip>{() => <Button>Button</Button>}</Tooltip>
137
+ </Example.Item>
118
138
 
119
- <Example.Item title="nested popovers inside a tooltip">
120
- <View direction="row" gap={2}>
121
- <Tooltip position="top" text="Hello">
122
- {(tooltipAttributes) => (<Popover position="bottom" width="300px">
139
+ <Example.Item title="tooltip with popover">
140
+ <Tooltip text="Tooltip" position="top">
141
+ {(attributes) => (<Popover position="bottom">
123
142
  <Popover.Trigger>
124
- {(attributes) => (<Button attributes={{ ...tooltipAttributes, ...attributes }}>
125
- Tooltip with popover
126
- </Button>)}
143
+ {(popoverAttributes) => (<Button attributes={{ ...attributes, ...popoverAttributes }}>Action</Button>)}
127
144
  </Popover.Trigger>
128
- <Popover.Content>
129
- <View gap={2} align="center" direction="row" justify="space-between">
130
- Popover content
131
- <Popover position="bottom" width="300px">
132
- <Popover.Trigger>
133
- {(attributes) => <Button attributes={attributes}>Open</Button>}
134
- </Popover.Trigger>
135
- <Popover.Content>
136
- <Popover.Dismissible align="center" closeAriaLabel="Close">
137
- Another popover content
138
- </Popover.Dismissible>
139
- </Popover.Content>
140
- </Popover>
141
- </View>
142
- </Popover.Content>
145
+ <Popover.Content>Popover</Popover.Content>
143
146
  </Popover>)}
144
147
  </Tooltip>
145
- <Tooltip position="top" text="Hello">
146
- {(tooltipAttributes) => <Button attributes={tooltipAttributes}>Just a tooltip</Button>}
147
- </Tooltip>
148
- </View>
149
- </Example.Item>
150
- </Example>);
148
+ </Example.Item>
149
+
150
+ <Example.Item title="nested popovers inside a tooltip">
151
+ <View direction="row" gap={2}>
152
+ <Tooltip position="top" text="Hello">
153
+ {(tooltipAttributes) => (<Popover position="bottom" width="300px">
154
+ <Popover.Trigger>
155
+ {(attributes) => (<Button attributes={{ ...tooltipAttributes, ...attributes }}>
156
+ Tooltip with popover
157
+ </Button>)}
158
+ </Popover.Trigger>
159
+ <Popover.Content>
160
+ <View gap={2} align="center" direction="row" justify="space-between">
161
+ Popover content
162
+ <Popover position="bottom" width="300px">
163
+ <Popover.Trigger>
164
+ {(attributes) => <Button attributes={attributes}>Open</Button>}
165
+ </Popover.Trigger>
166
+ <Popover.Content>
167
+ <Popover.Dismissible align="center" closeAriaLabel="Close">
168
+ Another popover content
169
+ </Popover.Dismissible>
170
+ </Popover.Content>
171
+ </Popover>
172
+ </View>
173
+ </Popover.Content>
174
+ </Popover>)}
175
+ </Tooltip>
176
+ <Tooltip position="top" text="Hello">
177
+ {(tooltipAttributes) => <Button attributes={tooltipAttributes}>Just a tooltip</Button>}
178
+ </Tooltip>
179
+ </View>
180
+ </Example.Item>
181
+ </Example>),
182
+ };
@@ -1,5 +1,3 @@
1
- import { StoryObj } from "@storybook/react-vite";
2
- import { fn } from "storybook/test";
3
1
  declare const _default: {
4
2
  title: string;
5
3
  component: import("react").FC<import("./..").TooltipProps>;
@@ -13,7 +11,3 @@ declare const _default: {
13
11
  };
14
12
  };
15
13
  export default _default;
16
- export declare const defaultActive: StoryObj<{
17
- handleOpen: ReturnType<typeof fn>;
18
- handleClose: ReturnType<typeof fn>;
19
- }>;
@@ -1,6 +1,4 @@
1
- import { expect, fn, userEvent, within, waitFor } from "storybook/test";
2
1
  import Tooltip from "../index.js";
3
- import Button from "../../Button/index.js";
4
2
  export default {
5
3
  title: "Components/Tooltip/tests",
6
4
  component: Tooltip,
@@ -11,30 +9,3 @@ export default {
11
9
  chromatic: { disableSnapshot: true },
12
10
  },
13
11
  };
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
- };