reshaped 3.9.0-canary.0 → 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 (177) hide show
  1. package/dist/bundle.css +1 -1
  2. package/dist/bundle.js +10 -10
  3. package/dist/components/Button/Button.module.css +1 -1
  4. package/dist/components/Card/Card.module.css +1 -1
  5. package/dist/components/DropdownMenu/DropdownMenu.js +1 -1
  6. package/dist/components/Flyout/Flyout.constants.d.ts +1 -3
  7. package/dist/components/Flyout/Flyout.constants.js +1 -3
  8. package/dist/components/Flyout/FlyoutControlled.js +6 -8
  9. package/dist/components/Flyout/utilities/cooldown.js +1 -2
  10. package/dist/components/Icon/Icon.module.css +1 -1
  11. package/dist/components/Progress/Progress.module.css +1 -1
  12. package/dist/components/Reshaped/Reshaped.css +1 -1
  13. package/dist/components/Text/Text.module.css +1 -1
  14. package/dist/components/Theme/Theme.module.css +1 -1
  15. package/dist/hooks/useOnClickOutside.js +2 -4
  16. package/dist/themes/_generator/tokens/css.js +2 -2
  17. package/dist/themes/figma/theme.css +1 -1
  18. package/dist/themes/fragments/twitter/theme.css +1 -1
  19. package/dist/themes/reshaped/theme.css +1 -1
  20. package/dist/themes/slate/theme.css +1 -1
  21. package/package.json +40 -35
  22. package/dist/components/Accordion/tests/Accordion.stories.d.ts +0 -44
  23. package/dist/components/Accordion/tests/Accordion.stories.js +0 -204
  24. package/dist/components/ActionBar/tests/ActionBar.stories.d.ts +0 -40
  25. package/dist/components/ActionBar/tests/ActionBar.stories.js +0 -223
  26. package/dist/components/Actionable/tests/Actionable.stories.d.ts +0 -41
  27. package/dist/components/Actionable/tests/Actionable.stories.js +0 -220
  28. package/dist/components/Alert/tests/Alert.stories.d.ts +0 -24
  29. package/dist/components/Alert/tests/Alert.stories.js +0 -78
  30. package/dist/components/Autocomplete/tests/Autocomplete.stories.d.ts +0 -32
  31. package/dist/components/Autocomplete/tests/Autocomplete.stories.js +0 -246
  32. package/dist/components/Avatar/tests/Avatar.stories.d.ts +0 -31
  33. package/dist/components/Avatar/tests/Avatar.stories.js +0 -176
  34. package/dist/components/Badge/tests/Badge.stories.d.ts +0 -55
  35. package/dist/components/Badge/tests/Badge.stories.js +0 -328
  36. package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.d.ts +0 -40
  37. package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.js +0 -187
  38. package/dist/components/Button/tests/Button.stories.d.ts +0 -79
  39. package/dist/components/Button/tests/Button.stories.js +0 -789
  40. package/dist/components/Calendar/tests/Calendar.stories.d.ts +0 -29
  41. package/dist/components/Calendar/tests/Calendar.stories.js +0 -255
  42. package/dist/components/Card/tests/Card.stories.d.ts +0 -52
  43. package/dist/components/Card/tests/Card.stories.js +0 -125
  44. package/dist/components/Carousel/tests/Carousel.stories.d.ts +0 -34
  45. package/dist/components/Carousel/tests/Carousel.stories.js +0 -224
  46. package/dist/components/Checkbox/tests/Checkbox.stories.d.ts +0 -30
  47. package/dist/components/Checkbox/tests/Checkbox.stories.js +0 -171
  48. package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.d.ts +0 -19
  49. package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.js +0 -83
  50. package/dist/components/Container/tests/Container.stories.d.ts +0 -24
  51. package/dist/components/Container/tests/Container.stories.js +0 -75
  52. package/dist/components/ContextMenu/tests/ContextMenu.stories.d.ts +0 -26
  53. package/dist/components/ContextMenu/tests/ContextMenu.stories.js +0 -70
  54. package/dist/components/Dismissible/tests/Dismissible.stories.d.ts +0 -25
  55. package/dist/components/Dismissible/tests/Dismissible.stories.js +0 -97
  56. package/dist/components/Divider/tests/Divider.stories.d.ts +0 -20
  57. package/dist/components/Divider/tests/Divider.stories.js +0 -120
  58. package/dist/components/DropdownMenu/tests/DropdownMenu.stories.d.ts +0 -53
  59. package/dist/components/DropdownMenu/tests/DropdownMenu.stories.js +0 -278
  60. package/dist/components/FileUpload/tests/FileUpload.stories.d.ts +0 -31
  61. package/dist/components/FileUpload/tests/FileUpload.stories.js +0 -140
  62. package/dist/components/Flyout/tests/Flyout.stories.d.ts +0 -103
  63. package/dist/components/Flyout/tests/Flyout.stories.js +0 -738
  64. package/dist/components/FormControl/tests/FormControl.stories.d.ts +0 -31
  65. package/dist/components/FormControl/tests/FormControl.stories.js +0 -143
  66. package/dist/components/Grid/tests/Grid.stories.d.ts +0 -38
  67. package/dist/components/Grid/tests/Grid.stories.js +0 -245
  68. package/dist/components/Hidden/tests/Hidden.stories.d.ts +0 -16
  69. package/dist/components/Hidden/tests/Hidden.stories.js +0 -48
  70. package/dist/components/HiddenVisually/tests/HiddenVisually.stories.d.ts +0 -16
  71. package/dist/components/HiddenVisually/tests/HiddenVisually.stories.js +0 -28
  72. package/dist/components/Hotkey/tests/Hotkey.stories.d.ts +0 -13
  73. package/dist/components/Hotkey/tests/Hotkey.stories.js +0 -53
  74. package/dist/components/Icon/tests/Icon.stories.d.ts +0 -25
  75. package/dist/components/Icon/tests/Icon.stories.js +0 -113
  76. package/dist/components/Image/tests/Image.stories.d.ts +0 -41
  77. package/dist/components/Image/tests/Image.stories.js +0 -196
  78. package/dist/components/Link/tests/Link.stories.d.ts +0 -42
  79. package/dist/components/Link/tests/Link.stories.js +0 -155
  80. package/dist/components/Loader/tests/Loader.stories.d.ts +0 -21
  81. package/dist/components/Loader/tests/Loader.stories.js +0 -68
  82. package/dist/components/MenuItem/tests/MenuItem.stories.d.ts +0 -59
  83. package/dist/components/MenuItem/tests/MenuItem.stories.js +0 -236
  84. package/dist/components/Modal/tests/Modal.stories.d.ts +0 -64
  85. package/dist/components/Modal/tests/Modal.stories.js +0 -410
  86. package/dist/components/NumberField/tests/NumberField.stories.d.ts +0 -28
  87. package/dist/components/NumberField/tests/NumberField.stories.js +0 -258
  88. package/dist/components/Overlay/tests/Overlay.stories.d.ts +0 -28
  89. package/dist/components/Overlay/tests/Overlay.stories.js +0 -202
  90. package/dist/components/Pagination/tests/Pagination.stories.d.ts +0 -24
  91. package/dist/components/Pagination/tests/Pagination.stories.js +0 -105
  92. package/dist/components/PinField/tests/PinField.stories.d.ts +0 -34
  93. package/dist/components/PinField/tests/PinField.stories.js +0 -209
  94. package/dist/components/Popover/tests/Popover.stories.d.ts +0 -69
  95. package/dist/components/Popover/tests/Popover.stories.js +0 -340
  96. package/dist/components/Progress/tests/Progress.stories.d.ts +0 -30
  97. package/dist/components/Progress/tests/Progress.stories.js +0 -102
  98. package/dist/components/ProgressIndicator/tests/ProgressIndicator.stories.d.ts +0 -19
  99. package/dist/components/ProgressIndicator/tests/ProgressIndicator.stories.js +0 -92
  100. package/dist/components/Radio/tests/Radio.stories.d.ts +0 -35
  101. package/dist/components/Radio/tests/Radio.stories.js +0 -162
  102. package/dist/components/RadioGroup/tests/RadioGroup.stories.d.ts +0 -19
  103. package/dist/components/RadioGroup/tests/RadioGroup.stories.js +0 -77
  104. package/dist/components/Reshaped/tests/Reshaped.stories.d.ts +0 -34
  105. package/dist/components/Reshaped/tests/Reshaped.stories.js +0 -108
  106. package/dist/components/Resizable/tests/Resizable.stories.d.ts +0 -38
  107. package/dist/components/Resizable/tests/Resizable.stories.js +0 -185
  108. package/dist/components/Scrim/tests/Scrim.stories.d.ts +0 -20
  109. package/dist/components/Scrim/tests/Scrim.stories.js +0 -67
  110. package/dist/components/ScrollArea/tests/ScrollArea.stories.d.ts +0 -37
  111. package/dist/components/ScrollArea/tests/ScrollArea.stories.js +0 -244
  112. package/dist/components/Select/tests/Select.stories.d.ts +0 -53
  113. package/dist/components/Select/tests/Select.stories.js +0 -616
  114. package/dist/components/Skeleton/tests/Skeleton.stories.d.ts +0 -20
  115. package/dist/components/Skeleton/tests/Skeleton.stories.js +0 -63
  116. package/dist/components/Slider/tests/Slider.stories.d.ts +0 -47
  117. package/dist/components/Slider/tests/Slider.stories.js +0 -279
  118. package/dist/components/Stepper/tests/Stepper.stories.d.ts +0 -31
  119. package/dist/components/Stepper/tests/Stepper.stories.js +0 -135
  120. package/dist/components/Switch/tests/Switch.stories.d.ts +0 -22
  121. package/dist/components/Switch/tests/Switch.stories.js +0 -137
  122. package/dist/components/Switch/tests/Switch.test.stories.d.ts +0 -13
  123. package/dist/components/Switch/tests/Switch.test.stories.js +0 -11
  124. package/dist/components/Table/tests/Table.stories.d.ts +0 -42
  125. package/dist/components/Table/tests/Table.stories.js +0 -348
  126. package/dist/components/Tabs/tests/Tabs.stories.d.ts +0 -62
  127. package/dist/components/Tabs/tests/Tabs.stories.js +0 -539
  128. package/dist/components/Text/tests/Text.stories.d.ts +0 -48
  129. package/dist/components/Text/tests/Text.stories.js +0 -201
  130. package/dist/components/TextArea/tests/TextArea.stories.d.ts +0 -53
  131. package/dist/components/TextArea/tests/TextArea.stories.js +0 -204
  132. package/dist/components/TextField/tests/TextField.stories.d.ts +0 -54
  133. package/dist/components/TextField/tests/TextField.stories.js +0 -252
  134. package/dist/components/Theme/tests/Theme.stories.d.ts +0 -25
  135. package/dist/components/Theme/tests/Theme.stories.js +0 -171
  136. package/dist/components/Timeline/tests/Timeline.stories.d.ts +0 -22
  137. package/dist/components/Timeline/tests/Timeline.stories.js +0 -86
  138. package/dist/components/Toast/tests/Toast.stories.d.ts +0 -41
  139. package/dist/components/Toast/tests/Toast.stories.js +0 -432
  140. package/dist/components/ToggleButton/tests/ToggleButton.stories.d.ts +0 -27
  141. package/dist/components/ToggleButton/tests/ToggleButton.stories.js +0 -97
  142. package/dist/components/ToggleButtonGroup/tests/ToggleButtonGroup.stories.d.ts +0 -27
  143. package/dist/components/ToggleButtonGroup/tests/ToggleButtonGroup.stories.js +0 -169
  144. package/dist/components/Tooltip/tests/Tooltip.stories.d.ts +0 -28
  145. package/dist/components/Tooltip/tests/Tooltip.stories.js +0 -182
  146. package/dist/components/View/tests/View.stories.d.ts +0 -141
  147. package/dist/components/View/tests/View.stories.js +0 -1329
  148. package/dist/components/_private/Portal/tests/Portal.stories.d.ts +0 -6
  149. package/dist/components/_private/Portal/tests/Portal.stories.js +0 -17
  150. package/dist/hooks/tests/useDrag.stories.d.ts +0 -31
  151. package/dist/hooks/tests/useDrag.stories.js +0 -147
  152. package/dist/hooks/tests/useElementId.stories.d.ts +0 -11
  153. package/dist/hooks/tests/useElementId.stories.js +0 -23
  154. package/dist/hooks/tests/useHandlerRef.stories.d.ts +0 -14
  155. package/dist/hooks/tests/useHandlerRef.stories.js +0 -44
  156. package/dist/hooks/tests/useHotkeys.stories.d.ts +0 -43
  157. package/dist/hooks/tests/useHotkeys.stories.js +0 -158
  158. package/dist/hooks/tests/useKeyboardArrowNavigation.stories.d.ts +0 -15
  159. package/dist/hooks/tests/useKeyboardArrowNavigation.stories.js +0 -128
  160. package/dist/hooks/tests/useKeyboardMode.stories.d.ts +0 -11
  161. package/dist/hooks/tests/useKeyboardMode.stories.js +0 -42
  162. package/dist/hooks/tests/useOnClickOutside.stories.d.ts +0 -23
  163. package/dist/hooks/tests/useOnClickOutside.stories.js +0 -111
  164. package/dist/hooks/tests/useRTL.stories.d.ts +0 -11
  165. package/dist/hooks/tests/useRTL.stories.js +0 -23
  166. package/dist/hooks/tests/useResponsiveClientValue.stories.d.ts +0 -18
  167. package/dist/hooks/tests/useResponsiveClientValue.stories.js +0 -30
  168. package/dist/hooks/tests/useScrollLock.stories.d.ts +0 -14
  169. package/dist/hooks/tests/useScrollLock.stories.js +0 -97
  170. package/dist/hooks/tests/useToggle.stories.d.ts +0 -13
  171. package/dist/hooks/tests/useToggle.stories.js +0 -59
  172. package/dist/tests/ShadowDOM.stories.d.ts +0 -6
  173. package/dist/tests/ShadowDOM.stories.js +0 -110
  174. package/dist/tests/themes.stories.d.ts +0 -16
  175. package/dist/tests/themes.stories.js +0 -327
  176. package/dist/utilities/a11y/tests/TrapFocus.stories.d.ts +0 -14
  177. 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;