reshaped 3.8.8 → 3.9.0-canary.1

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 (191) hide show
  1. package/dist/bundle.css +1 -1
  2. package/dist/bundle.js +11 -11
  3. package/dist/components/Button/Button.module.css +1 -1
  4. package/dist/components/Card/Card.d.ts +1 -1
  5. package/dist/components/Divider/Divider.js +3 -3
  6. package/dist/components/Divider/Divider.module.css +1 -1
  7. package/dist/components/Divider/Divider.types.d.ts +6 -0
  8. package/dist/components/DropdownMenu/DropdownMenu.js +1 -1
  9. package/dist/components/DropdownMenu/DropdownMenu.types.d.ts +1 -1
  10. package/dist/components/Flyout/Flyout.constants.d.ts +1 -3
  11. package/dist/components/Flyout/Flyout.constants.js +1 -3
  12. package/dist/components/Flyout/Flyout.types.d.ts +2 -0
  13. package/dist/components/Flyout/FlyoutControlled.js +10 -11
  14. package/dist/components/Flyout/utilities/cooldown.js +1 -2
  15. package/dist/components/Icon/Icon.module.css +1 -1
  16. package/dist/components/Popover/Popover.types.d.ts +1 -1
  17. package/dist/components/Progress/Progress.module.css +1 -1
  18. package/dist/components/Select/Select.module.css +1 -1
  19. package/dist/components/Select/Select.types.d.ts +16 -11
  20. package/dist/components/Select/SelectCustomControlled.js +27 -10
  21. package/dist/components/Select/SelectGroup.d.ts +4 -0
  22. package/dist/components/Select/SelectGroup.js +10 -0
  23. package/dist/components/Select/SelectTrigger.js +1 -1
  24. package/dist/components/Select/index.d.ts +3 -2
  25. package/dist/components/Select/index.js +3 -2
  26. package/dist/components/Tabs/TabsContext.d.ts +1 -1
  27. package/dist/components/TextArea/TextArea.module.css +1 -1
  28. package/dist/components/TextArea/TextArea.types.d.ts +1 -1
  29. package/dist/components/TextField/TextField.module.css +1 -1
  30. package/dist/components/TextField/TextField.types.d.ts +1 -1
  31. package/dist/components/Tooltip/Tooltip.types.d.ts +1 -1
  32. package/dist/config/tailwind.d.ts +1 -1
  33. package/package.json +31 -30
  34. package/dist/components/Accordion/tests/Accordion.stories.d.ts +0 -44
  35. package/dist/components/Accordion/tests/Accordion.stories.js +0 -204
  36. package/dist/components/ActionBar/tests/ActionBar.stories.d.ts +0 -40
  37. package/dist/components/ActionBar/tests/ActionBar.stories.js +0 -223
  38. package/dist/components/Actionable/tests/Actionable.stories.d.ts +0 -41
  39. package/dist/components/Actionable/tests/Actionable.stories.js +0 -220
  40. package/dist/components/Alert/tests/Alert.stories.d.ts +0 -24
  41. package/dist/components/Alert/tests/Alert.stories.js +0 -78
  42. package/dist/components/Autocomplete/tests/Autocomplete.stories.d.ts +0 -32
  43. package/dist/components/Autocomplete/tests/Autocomplete.stories.js +0 -246
  44. package/dist/components/Avatar/tests/Avatar.stories.d.ts +0 -31
  45. package/dist/components/Avatar/tests/Avatar.stories.js +0 -176
  46. package/dist/components/Badge/tests/Badge.stories.d.ts +0 -55
  47. package/dist/components/Badge/tests/Badge.stories.js +0 -328
  48. package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.d.ts +0 -40
  49. package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.js +0 -187
  50. package/dist/components/Button/tests/Button.stories.d.ts +0 -79
  51. package/dist/components/Button/tests/Button.stories.js +0 -789
  52. package/dist/components/Calendar/tests/Calendar.stories.d.ts +0 -29
  53. package/dist/components/Calendar/tests/Calendar.stories.js +0 -255
  54. package/dist/components/Card/tests/Card.stories.d.ts +0 -52
  55. package/dist/components/Card/tests/Card.stories.js +0 -125
  56. package/dist/components/Carousel/tests/Carousel.stories.d.ts +0 -34
  57. package/dist/components/Carousel/tests/Carousel.stories.js +0 -224
  58. package/dist/components/Checkbox/tests/Checkbox.stories.d.ts +0 -30
  59. package/dist/components/Checkbox/tests/Checkbox.stories.js +0 -171
  60. package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.d.ts +0 -19
  61. package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.js +0 -83
  62. package/dist/components/Container/tests/Container.stories.d.ts +0 -24
  63. package/dist/components/Container/tests/Container.stories.js +0 -75
  64. package/dist/components/ContextMenu/tests/ContextMenu.stories.d.ts +0 -26
  65. package/dist/components/ContextMenu/tests/ContextMenu.stories.js +0 -70
  66. package/dist/components/Dismissible/tests/Dismissible.stories.d.ts +0 -25
  67. package/dist/components/Dismissible/tests/Dismissible.stories.js +0 -97
  68. package/dist/components/Divider/tests/Divider.stories.d.ts +0 -18
  69. package/dist/components/Divider/tests/Divider.stories.js +0 -94
  70. package/dist/components/DropdownMenu/tests/DropdownMenu.stories.d.ts +0 -53
  71. package/dist/components/DropdownMenu/tests/DropdownMenu.stories.js +0 -278
  72. package/dist/components/FileUpload/tests/FileUpload.stories.d.ts +0 -31
  73. package/dist/components/FileUpload/tests/FileUpload.stories.js +0 -140
  74. package/dist/components/Flyout/tests/Flyout.stories.d.ts +0 -102
  75. package/dist/components/Flyout/tests/Flyout.stories.js +0 -708
  76. package/dist/components/FormControl/tests/FormControl.stories.d.ts +0 -31
  77. package/dist/components/FormControl/tests/FormControl.stories.js +0 -143
  78. package/dist/components/Grid/tests/Grid.stories.d.ts +0 -38
  79. package/dist/components/Grid/tests/Grid.stories.js +0 -245
  80. package/dist/components/Hidden/tests/Hidden.stories.d.ts +0 -16
  81. package/dist/components/Hidden/tests/Hidden.stories.js +0 -48
  82. package/dist/components/HiddenVisually/tests/HiddenVisually.stories.d.ts +0 -16
  83. package/dist/components/HiddenVisually/tests/HiddenVisually.stories.js +0 -28
  84. package/dist/components/Hotkey/tests/Hotkey.stories.d.ts +0 -13
  85. package/dist/components/Hotkey/tests/Hotkey.stories.js +0 -53
  86. package/dist/components/Icon/tests/Icon.stories.d.ts +0 -25
  87. package/dist/components/Icon/tests/Icon.stories.js +0 -113
  88. package/dist/components/Image/tests/Image.stories.d.ts +0 -41
  89. package/dist/components/Image/tests/Image.stories.js +0 -196
  90. package/dist/components/Link/tests/Link.stories.d.ts +0 -42
  91. package/dist/components/Link/tests/Link.stories.js +0 -155
  92. package/dist/components/Loader/tests/Loader.stories.d.ts +0 -21
  93. package/dist/components/Loader/tests/Loader.stories.js +0 -68
  94. package/dist/components/MenuItem/tests/MenuItem.stories.d.ts +0 -59
  95. package/dist/components/MenuItem/tests/MenuItem.stories.js +0 -236
  96. package/dist/components/Modal/tests/Modal.stories.d.ts +0 -64
  97. package/dist/components/Modal/tests/Modal.stories.js +0 -410
  98. package/dist/components/NumberField/tests/NumberField.stories.d.ts +0 -28
  99. package/dist/components/NumberField/tests/NumberField.stories.js +0 -258
  100. package/dist/components/Overlay/tests/Overlay.stories.d.ts +0 -28
  101. package/dist/components/Overlay/tests/Overlay.stories.js +0 -202
  102. package/dist/components/Pagination/tests/Pagination.stories.d.ts +0 -24
  103. package/dist/components/Pagination/tests/Pagination.stories.js +0 -105
  104. package/dist/components/PinField/tests/PinField.stories.d.ts +0 -34
  105. package/dist/components/PinField/tests/PinField.stories.js +0 -209
  106. package/dist/components/Popover/tests/Popover.stories.d.ts +0 -69
  107. package/dist/components/Popover/tests/Popover.stories.js +0 -340
  108. package/dist/components/Progress/tests/Progress.stories.d.ts +0 -30
  109. package/dist/components/Progress/tests/Progress.stories.js +0 -102
  110. package/dist/components/ProgressIndicator/tests/ProgressIndicator.stories.d.ts +0 -19
  111. package/dist/components/ProgressIndicator/tests/ProgressIndicator.stories.js +0 -92
  112. package/dist/components/Radio/tests/Radio.stories.d.ts +0 -35
  113. package/dist/components/Radio/tests/Radio.stories.js +0 -162
  114. package/dist/components/RadioGroup/tests/RadioGroup.stories.d.ts +0 -19
  115. package/dist/components/RadioGroup/tests/RadioGroup.stories.js +0 -77
  116. package/dist/components/Reshaped/tests/Reshaped.stories.d.ts +0 -34
  117. package/dist/components/Reshaped/tests/Reshaped.stories.js +0 -108
  118. package/dist/components/Resizable/tests/Resizable.stories.d.ts +0 -38
  119. package/dist/components/Resizable/tests/Resizable.stories.js +0 -185
  120. package/dist/components/Scrim/tests/Scrim.stories.d.ts +0 -20
  121. package/dist/components/Scrim/tests/Scrim.stories.js +0 -67
  122. package/dist/components/ScrollArea/tests/ScrollArea.stories.d.ts +0 -37
  123. package/dist/components/ScrollArea/tests/ScrollArea.stories.js +0 -244
  124. package/dist/components/Select/SelectOptionGroup.d.ts +0 -4
  125. package/dist/components/Select/SelectOptionGroup.js +0 -9
  126. package/dist/components/Select/tests/Select.stories.d.ts +0 -47
  127. package/dist/components/Select/tests/Select.stories.js +0 -520
  128. package/dist/components/Skeleton/tests/Skeleton.stories.d.ts +0 -20
  129. package/dist/components/Skeleton/tests/Skeleton.stories.js +0 -63
  130. package/dist/components/Slider/tests/Slider.stories.d.ts +0 -47
  131. package/dist/components/Slider/tests/Slider.stories.js +0 -279
  132. package/dist/components/Stepper/tests/Stepper.stories.d.ts +0 -31
  133. package/dist/components/Stepper/tests/Stepper.stories.js +0 -135
  134. package/dist/components/Switch/tests/Switch.stories.d.ts +0 -22
  135. package/dist/components/Switch/tests/Switch.stories.js +0 -137
  136. package/dist/components/Switch/tests/Switch.test.stories.d.ts +0 -13
  137. package/dist/components/Switch/tests/Switch.test.stories.js +0 -11
  138. package/dist/components/Table/tests/Table.stories.d.ts +0 -42
  139. package/dist/components/Table/tests/Table.stories.js +0 -348
  140. package/dist/components/Tabs/tests/Tabs.stories.d.ts +0 -62
  141. package/dist/components/Tabs/tests/Tabs.stories.js +0 -539
  142. package/dist/components/Text/tests/Text.stories.d.ts +0 -48
  143. package/dist/components/Text/tests/Text.stories.js +0 -201
  144. package/dist/components/TextArea/tests/TextArea.stories.d.ts +0 -53
  145. package/dist/components/TextArea/tests/TextArea.stories.js +0 -200
  146. package/dist/components/TextField/tests/TextField.stories.d.ts +0 -53
  147. package/dist/components/TextField/tests/TextField.stories.js +0 -237
  148. package/dist/components/Theme/tests/Theme.stories.d.ts +0 -25
  149. package/dist/components/Theme/tests/Theme.stories.js +0 -171
  150. package/dist/components/Timeline/tests/Timeline.stories.d.ts +0 -22
  151. package/dist/components/Timeline/tests/Timeline.stories.js +0 -86
  152. package/dist/components/Toast/tests/Toast.stories.d.ts +0 -41
  153. package/dist/components/Toast/tests/Toast.stories.js +0 -432
  154. package/dist/components/ToggleButton/tests/ToggleButton.stories.d.ts +0 -27
  155. package/dist/components/ToggleButton/tests/ToggleButton.stories.js +0 -97
  156. package/dist/components/ToggleButtonGroup/tests/ToggleButtonGroup.stories.d.ts +0 -27
  157. package/dist/components/ToggleButtonGroup/tests/ToggleButtonGroup.stories.js +0 -169
  158. package/dist/components/Tooltip/tests/Tooltip.stories.d.ts +0 -28
  159. package/dist/components/Tooltip/tests/Tooltip.stories.js +0 -182
  160. package/dist/components/View/tests/View.stories.d.ts +0 -141
  161. package/dist/components/View/tests/View.stories.js +0 -1329
  162. package/dist/components/_private/Portal/tests/Portal.stories.d.ts +0 -6
  163. package/dist/components/_private/Portal/tests/Portal.stories.js +0 -17
  164. package/dist/hooks/tests/useDrag.stories.d.ts +0 -31
  165. package/dist/hooks/tests/useDrag.stories.js +0 -147
  166. package/dist/hooks/tests/useElementId.stories.d.ts +0 -11
  167. package/dist/hooks/tests/useElementId.stories.js +0 -23
  168. package/dist/hooks/tests/useHandlerRef.stories.d.ts +0 -14
  169. package/dist/hooks/tests/useHandlerRef.stories.js +0 -44
  170. package/dist/hooks/tests/useHotkeys.stories.d.ts +0 -43
  171. package/dist/hooks/tests/useHotkeys.stories.js +0 -158
  172. package/dist/hooks/tests/useKeyboardArrowNavigation.stories.d.ts +0 -15
  173. package/dist/hooks/tests/useKeyboardArrowNavigation.stories.js +0 -128
  174. package/dist/hooks/tests/useKeyboardMode.stories.d.ts +0 -11
  175. package/dist/hooks/tests/useKeyboardMode.stories.js +0 -42
  176. package/dist/hooks/tests/useOnClickOutside.stories.d.ts +0 -23
  177. package/dist/hooks/tests/useOnClickOutside.stories.js +0 -111
  178. package/dist/hooks/tests/useRTL.stories.d.ts +0 -11
  179. package/dist/hooks/tests/useRTL.stories.js +0 -23
  180. package/dist/hooks/tests/useResponsiveClientValue.stories.d.ts +0 -18
  181. package/dist/hooks/tests/useResponsiveClientValue.stories.js +0 -30
  182. package/dist/hooks/tests/useScrollLock.stories.d.ts +0 -14
  183. package/dist/hooks/tests/useScrollLock.stories.js +0 -97
  184. package/dist/hooks/tests/useToggle.stories.d.ts +0 -13
  185. package/dist/hooks/tests/useToggle.stories.js +0 -59
  186. package/dist/tests/ShadowDOM.stories.d.ts +0 -6
  187. package/dist/tests/ShadowDOM.stories.js +0 -110
  188. package/dist/tests/themes.stories.d.ts +0 -16
  189. package/dist/tests/themes.stories.js +0 -327
  190. package/dist/utilities/a11y/tests/TrapFocus.stories.d.ts +0 -14
  191. package/dist/utilities/a11y/tests/TrapFocus.stories.js +0 -615
@@ -1,410 +0,0 @@
1
- import React from "react";
2
- import { Example, Placeholder } from "../../../utilities/storybook/index.js";
3
- import Modal from "../index.js";
4
- import View from "../../View/index.js";
5
- import Button from "../../Button/index.js";
6
- import Dismissible from "../../Dismissible/index.js";
7
- import DropdownMenu from "../../DropdownMenu/index.js";
8
- import Switch from "../../Switch/index.js";
9
- import TextField from "../../TextField/index.js";
10
- import useToggle from "../../../hooks/useToggle.js";
11
- import Radio from "../../Radio/index.js";
12
- import { expect, fn, userEvent, waitFor, within } from "storybook/test";
13
- import { sleep } from "../../../utilities/helpers.js";
14
- export default {
15
- title: "Components/Modal",
16
- component: Modal,
17
- parameters: {
18
- iframe: {
19
- url: "https://reshaped.so/docs/components/modal",
20
- },
21
- },
22
- };
23
- const Demo = (props) => {
24
- const { active: activeProp, title, subtitle, children, ...modalProps } = props;
25
- const { active, activate, deactivate } = useToggle(activeProp);
26
- return (<>
27
- <Button onClick={activate}>Open dialog</Button>
28
- <Modal {...modalProps} active={active} onClose={deactivate}>
29
- <View gap={3}>
30
- {(title || subtitle) && (<Dismissible onClose={deactivate} closeAriaLabel="Close modal">
31
- {title && <Modal.Title>{title}</Modal.Title>}
32
- {subtitle && <Modal.Subtitle>{subtitle}</Modal.Subtitle>}
33
- </Dismissible>)}
34
- {children ||
35
- "Lorem ipsum is placeholder text commonly used in the graphic, print, and publishing industries for previewing layouts and visual mockups."}
36
- <Button onClick={deactivate}>Close</Button>
37
- <TextField name="hey"/>
38
- </View>
39
- </Modal>
40
- </>);
41
- };
42
- export const position = {
43
- name: "position",
44
- render: () => (<Example>
45
- <Example.Item title={["responsive position", "[s] full-screen", "[m] center", "[l] end"]}>
46
- <Demo position={{ s: "full-screen", m: "center", l: "end" }}/>
47
- </Example.Item>
48
- <Example.Item title="position: center">
49
- <Demo position="center"/>
50
- </Example.Item>
51
- <Example.Item title="position: bottom">
52
- <Demo position="bottom"/>
53
- </Example.Item>
54
- <Example.Item title="position: start">
55
- <Demo position="start"/>
56
- </Example.Item>
57
- <Example.Item title="position: end">
58
- <Demo position="end"/>
59
- </Example.Item>
60
- <Example.Item title="position: full-screen">
61
- <Demo position="full-screen"/>
62
- </Example.Item>
63
- </Example>),
64
- };
65
- export const size = {
66
- name: "size",
67
- render: () => {
68
- return (<Example>
69
- <Example.Item title="size: default">
70
- <Demo />
71
- </Example.Item>
72
- <Example.Item title="size: 300px">
73
- <Demo size="300px"/>
74
- </Example.Item>
75
- <Example.Item title={["size: 800px", "should have max width of 100% minus gaps on the sides"]}>
76
- <Demo size="800px"/>
77
- </Example.Item>
78
- <Example.Item title={[
79
- "responsive size, responsive position",
80
- "[s] auto",
81
- "[m+] 600px",
82
- "bottom position changes height instead of width",
83
- ]}>
84
- <Demo position={{ s: "bottom", m: "center", l: "end" }} size={{ s: "auto", m: "600px" }}/>
85
- </Example.Item>
86
- </Example>);
87
- },
88
- };
89
- export const padding = {
90
- name: "padding",
91
- render: () => (<Example>
92
- <Example.Item title="padding: 0">
93
- <Demo padding={0}/>
94
- </Example.Item>
95
- <Example.Item title="padding: 6">
96
- <Demo padding={6}/>
97
- </Example.Item>
98
- <Example.Item title={["responsive padding", "[s] 2", "[m+]: 6"]}>
99
- <Demo padding={{ s: 2, m: 6 }}/>
100
- </Example.Item>
101
- </Example>),
102
- };
103
- export const overflow = {
104
- name: "overflow",
105
- render: () => (<Example>
106
- <Example.Item title="default overflow">
107
- <Demo>
108
- <div style={{
109
- position: "absolute",
110
- top: -32,
111
- left: -32,
112
- height: 100,
113
- width: 100,
114
- background: "tomato",
115
- }}/>
116
- </Demo>
117
- </Example.Item>
118
-
119
- <Example.Item title="overflow: visible">
120
- <Demo overflow="visible">
121
- <div style={{
122
- position: "absolute",
123
- top: -32,
124
- left: -32,
125
- height: 100,
126
- width: 100,
127
- background: "tomato",
128
- }}/>
129
- </Demo>
130
- </Example.Item>
131
- </Example>),
132
- };
133
- export const composition = {
134
- name: "composition",
135
- render: () => (<Example>
136
- <Example.Item title="title, subtitle, dismissible">
137
- <Demo title="Modal title" subtitle="Modal subtitle"/>
138
- </Example.Item>
139
- </Example>),
140
- };
141
- export const overlay = {
142
- name: "overlay",
143
- render: () => (<Example>
144
- <Example.Item title="transparentOverlay, doesn't lock scroll">
145
- <Demo transparentOverlay/>
146
- </Example.Item>
147
- <Example.Item title="blurredOverlay">
148
- <Demo blurredOverlay/>
149
- </Example.Item>
150
- <View height="1000px"/>
151
- </Example>),
152
- };
153
- export const flags = {
154
- name: "disableCloseOnOutsideClick",
155
- args: {
156
- handleClose: fn(),
157
- },
158
- render: (args) => {
159
- return (<Example>
160
- <Example.Item title="disableCloseOnOutsideClick">
161
- <Demo disableCloseOnOutsideClick onClose={args.handleClose} active/>
162
- </Example.Item>
163
- </Example>);
164
- },
165
- };
166
- export const containerRef = {
167
- name: "containerRef",
168
- render: () => {
169
- const containerRef = React.useRef(null);
170
- const containerRef2 = React.useRef(null);
171
- const toggle = useToggle();
172
- const toggle2 = useToggle();
173
- return (<Example>
174
- <Example.Item title={["in scrollable container", "scroll and then open"]}>
175
- <View attributes={{ ref: containerRef2 }} borderRadius="medium" height="400px" overflow="auto" backgroundColor="neutral-faded" padding={4}>
176
- <View gap={4} align="start">
177
- <Button onClick={toggle2.activate}>Open modal</Button>
178
- <View height="500px" backgroundColor="primary" width="500px" borderRadius="medium"/>
179
- </View>
180
- <Modal containerRef={containerRef2} active={toggle2.active} onClose={toggle2.deactivate} position="end">
181
- <Placeholder />
182
- </Modal>
183
- </View>
184
- </Example.Item>
185
- <Example.Item title="in static container">
186
- <View attributes={{ ref: containerRef }} borderRadius="medium" height="400px" overflow="hidden" backgroundColor="neutral-faded" padding={4}>
187
- <Button onClick={toggle.activate}>Open modal</Button>
188
- <Modal containerRef={containerRef} active={toggle.active} onClose={toggle.deactivate} position="end">
189
- <Placeholder />
190
- </Modal>
191
- </View>
192
- </Example.Item>
193
- </Example>);
194
- },
195
- };
196
- export const renderProps = {
197
- name: "children, render props",
198
- render: () => (<Modal active className="test-classname" attributes={{ "data-testid": "test-id" }}>
199
- <Modal.Title>Title</Modal.Title>
200
- Content
201
- </Modal>),
202
- play: async ({ canvasElement }) => {
203
- const canvas = within(canvasElement.ownerDocument.body);
204
- const root = canvas.getByText("Content");
205
- expect(root).toBeInTheDocument();
206
- },
207
- };
208
- export const handlers = {
209
- name: "onOpen, onClose, onAfterOpen, onAfterClose",
210
- args: {
211
- handleOpen: fn(),
212
- handleClose: fn(),
213
- handleAfterClose: fn(),
214
- handleAfterOpen: fn(),
215
- },
216
- render: (args) => {
217
- const overlayToggle = useToggle();
218
- return (<>
219
- <Button onClick={() => overlayToggle.toggle()}>Open overlay</Button>
220
- <Modal active={overlayToggle.active} onClose={(closeArgs) => {
221
- overlayToggle.deactivate();
222
- args.handleClose(closeArgs);
223
- }} onOpen={args.handleOpen} onAfterOpen={args.handleAfterOpen} onAfterClose={args.handleAfterClose}>
224
- <Modal.Title>Title</Modal.Title>
225
- Content
226
- </Modal>
227
- </>);
228
- },
229
- play: async ({ canvasElement, args }) => {
230
- const canvas = within(canvasElement.ownerDocument.body);
231
- const trigger = canvas.getAllByRole("button")[0];
232
- let overlay;
233
- await userEvent.click(trigger);
234
- overlay = canvas.getByText("Content");
235
- await waitFor(() => {
236
- expect(args.handleOpen).toHaveBeenCalledTimes(1);
237
- expect(args.handleOpen).toHaveBeenCalledWith();
238
- });
239
- // Wait for transition
240
- await waitFor(() => {
241
- expect(args.handleAfterOpen).toHaveBeenCalledTimes(1);
242
- expect(args.handleAfterOpen).toHaveBeenCalledWith();
243
- });
244
- // Close by changing the state after the trigger click
245
- await userEvent.click(trigger);
246
- // Wait for transition
247
- await waitFor(() => {
248
- // Changing state doesn't trigger onClose
249
- expect(args.handleClose).toHaveBeenCalledTimes(0);
250
- expect(args.handleAfterClose).toHaveBeenCalledTimes(1);
251
- expect(args.handleAfterClose).toHaveBeenCalledWith();
252
- });
253
- // Open
254
- await userEvent.click(trigger);
255
- await sleep(100);
256
- overlay = canvas.getAllByRole("button", { hidden: true }).at(-1);
257
- // Close by clicking on the overlay
258
- await userEvent.click(overlay);
259
- await waitFor(() => {
260
- expect(args.handleClose).toHaveBeenCalledTimes(1);
261
- expect(args.handleClose).toHaveBeenCalledWith({ reason: "overlay-click" });
262
- expect(args.handleAfterClose).toHaveBeenCalledTimes(2);
263
- expect(args.handleAfterClose).toHaveBeenCalledWith();
264
- });
265
- // Open
266
- await userEvent.click(trigger);
267
- await sleep(100);
268
- // Close by pressing Escape
269
- await userEvent.keyboard("{Escape}");
270
- await waitFor(() => {
271
- expect(args.handleClose).toHaveBeenCalledTimes(2);
272
- expect(args.handleClose).toHaveBeenCalledWith({ reason: "escape-key" });
273
- expect(args.handleAfterClose).toHaveBeenCalledTimes(3);
274
- expect(args.handleAfterClose).toHaveBeenCalledWith();
275
- });
276
- },
277
- };
278
- export const className = {
279
- name: "className, attributes",
280
- render: () => (<Modal active className="test-classname" attributes={{ "data-testid": "test-id" }}>
281
- <Modal.Title>Title</Modal.Title>
282
- Content
283
- </Modal>),
284
- play: async ({ canvasElement }) => {
285
- const canvas = within(canvasElement.ownerDocument.body);
286
- const root = canvas.getByTestId("test-id");
287
- expect(root).toHaveClass("test-classname");
288
- },
289
- };
290
- export const edgeCases = {
291
- name: "test: edge cases",
292
- render: () => {
293
- const menuModalToggle = useToggle();
294
- const menuModalToggleInner = useToggle();
295
- const scrollModalToggle = useToggle();
296
- const inputRef = React.useRef(null);
297
- return (<Example>
298
- <Example.Item title="Scrolls with long content on touch devices">
299
- <Demo position="center">
300
- <Button onClick={() => { }}>Action</Button>
301
- <View height="2000px" backgroundColor="primary-faded"/>
302
- </Demo>
303
- </Example.Item>
304
- <Example.Item title="keyboard focus stays on the modal first">
305
- <Demo title="Modal title" autoFocus={false}/>
306
- </Example.Item>
307
- <Example.Item title="trap focus works with custom children components">
308
- <Demo title="Modal title">
309
- <View gap={3} direction="row">
310
- <Button onClick={() => { }}>Button</Button>
311
- <Switch name="switch"/>
312
- </View>
313
- </Demo>
314
- </Example.Item>
315
- <Example.Item title="focus moves to the input">
316
- <Demo title="Modal title" onOpen={() => {
317
- inputRef.current?.focus();
318
- }}>
319
- <View gap={3} direction="row">
320
- <Button onClick={() => { }}>Button</Button>
321
- <TextField name="name" inputAttributes={{ ref: inputRef }}/>
322
- </View>
323
- </Demo>
324
- </Example.Item>
325
- <Example.Item title="Focus moves to the input with autoFocus">
326
- <Demo title="Modal title">
327
- <View gap={3} direction="row">
328
- <Button onClick={() => { }}>Button</Button>
329
- <TextField name="name" placeholder="autofocus" inputAttributes={{ autoFocus: true }}/>
330
- </View>
331
- </Demo>
332
- </Example.Item>
333
- <Example.Item title="scrollable area in modal ignores swipe-to-close">
334
- <View gap={3} direction="row">
335
- <Button onClick={scrollModalToggle.activate}>Open</Button>
336
- <Modal active={scrollModalToggle.active} onClose={scrollModalToggle.deactivate} size="300px" position="bottom">
337
- <View height="1000px" backgroundColor="neutral-faded" borderRadius="medium" padding={4}>
338
- Content
339
- </View>
340
- </Modal>
341
- </View>
342
- </Example.Item>
343
- <Example.Item title={[
344
- "trap focus works correctly when it was already trapped",
345
- "focus return back to the dropdown trigger on modal close",
346
- "closing dropdown inside the modal doesn't close the modal",
347
- ]}>
348
- <DropdownMenu>
349
- <DropdownMenu.Trigger>
350
- {(attributes) => <Button attributes={attributes}>Open menu</Button>}
351
- </DropdownMenu.Trigger>
352
- <DropdownMenu.Content>
353
- <DropdownMenu.Item onClick={menuModalToggle.activate}>Open dialog</DropdownMenu.Item>
354
- <DropdownMenu.Item>Item 2</DropdownMenu.Item>
355
- </DropdownMenu.Content>
356
- </DropdownMenu>
357
- <Modal active={menuModalToggle.active} onClose={menuModalToggle.deactivate}>
358
- <View gap={3}>
359
- <DropdownMenu>
360
- <DropdownMenu.Trigger>
361
- {(attributes) => <Button attributes={attributes}>Open menu</Button>}
362
- </DropdownMenu.Trigger>
363
- <DropdownMenu.Content>
364
- <DropdownMenu.Item>Item 1</DropdownMenu.Item>
365
- <DropdownMenu.Item>Item 2</DropdownMenu.Item>
366
- </DropdownMenu.Content>
367
- </DropdownMenu>
368
- <Button onClick={menuModalToggleInner.activate}>Open dialog</Button>
369
- <Button onClick={menuModalToggle.deactivate}>Close</Button>
370
- <Modal active={menuModalToggleInner.active} onClose={menuModalToggleInner.deactivate}>
371
- <Button onClick={menuModalToggleInner.deactivate}>Close</Button>
372
- </Modal>
373
- </View>
374
- </Modal>
375
- </Example.Item>
376
-
377
- <Example.Item title="disableSwipeGesture">
378
- <Demo disableSwipeGesture position="start"/>
379
- </Example.Item>
380
-
381
- <Example.Item title="scroll locks on open">
382
- <Demo />
383
- <View height="1000px"/>
384
- </Example.Item>
385
- </Example>);
386
- },
387
- };
388
- export const trapFocusEdgeCases = {
389
- name: "test: trap focus edge cases",
390
- render: () => {
391
- const toggle = useToggle();
392
- return (<Example>
393
- <Example.Item title="Radio should be navigatable with arrow keys">
394
- <Button onClick={toggle.activate}>Open modal</Button>
395
- <Modal active={toggle.active} onClose={toggle.deactivate}>
396
- <View gap={2}>
397
- <Button onClick={() => { }}>Action 1</Button>
398
- <Radio name="radio" value="1">
399
- Option 1
400
- </Radio>
401
- <Radio name="radio" value="2">
402
- Option 2
403
- </Radio>
404
- <Button onClick={() => { }}>Action 2</Button>
405
- </View>
406
- </Modal>
407
- </Example.Item>
408
- </Example>);
409
- },
410
- };
@@ -1,28 +0,0 @@
1
- import { StoryObj } from "@storybook/react-vite";
2
- import { Mock } from "storybook/test";
3
- declare const _default: {
4
- title: string;
5
- component: import("react").FC<import("./..").NumberFieldProps>;
6
- parameters: {
7
- iframe: {
8
- url: string;
9
- };
10
- };
11
- };
12
- export default _default;
13
- export declare const variant: StoryObj;
14
- export declare const size: StoryObj;
15
- export declare const disabled: StoryObj<{
16
- handleChange: Mock;
17
- }>;
18
- export declare const defaultValue: StoryObj<{
19
- handleChange: Mock;
20
- }>;
21
- export declare const value: StoryObj<{
22
- handleChange: Mock;
23
- }>;
24
- export declare const minMax: StoryObj;
25
- export declare const step: StoryObj;
26
- export declare const className: StoryObj;
27
- export declare const formControl: StoryObj;
28
- export declare const valueChanges: StoryObj;