@vibe/core 4.2.5 → 4.3.0-alpha-9bd83.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/metadata/accessibility/Accordion.md +10 -0
- package/dist/metadata/accessibility/AlertBanner.md +9 -0
- package/dist/metadata/accessibility/Avatar.md +12 -0
- package/dist/metadata/accessibility/AvatarGroup.md +6 -0
- package/dist/metadata/accessibility/BreadcrumbsBar.md +10 -0
- package/dist/metadata/accessibility/Button.md +13 -0
- package/dist/metadata/accessibility/ButtonGroup.md +9 -0
- package/dist/metadata/accessibility/Checkbox.md +13 -0
- package/dist/metadata/accessibility/Chips.md +10 -0
- package/dist/metadata/accessibility/Combobox.md +6 -0
- package/dist/metadata/accessibility/DropdownBasicDropdown.md +10 -0
- package/dist/metadata/accessibility/IconButton.md +26 -0
- package/dist/metadata/accessibility/Info.md +12 -0
- package/dist/metadata/accessibility/Link.md +8 -0
- package/dist/metadata/accessibility/List.md +11 -0
- package/dist/metadata/accessibility/Menu.md +10 -0
- package/dist/metadata/accessibility/MenuButton.md +6 -0
- package/dist/metadata/accessibility/MenuItem.md +8 -0
- package/dist/metadata/accessibility/Modal.md +35 -0
- package/dist/metadata/accessibility/NumberField.md +9 -0
- package/dist/metadata/accessibility/RadioButton.md +11 -0
- package/dist/metadata/accessibility/Search.md +10 -0
- package/dist/metadata/accessibility/Tabs.md +10 -0
- package/dist/metadata/accessibility/TextArea.md +17 -0
- package/dist/metadata/accessibility/TextField.md +16 -0
- package/dist/metadata/accessibility/Toast.md +4 -0
- package/dist/metadata/accessibility/Toggle.md +7 -0
- package/dist/metadata/accessibility/Tooltip.md +11 -0
- package/dist/metadata/components.json +20940 -0
- package/dist/metadata/examples/Accordion.md +136 -0
- package/dist/metadata/examples/AlertBanner.md +85 -0
- package/dist/metadata/examples/AttentionBox.md +267 -0
- package/dist/metadata/examples/Avatar.md +118 -0
- package/dist/metadata/examples/AvatarGroup.md +390 -0
- package/dist/metadata/examples/Badge.md +59 -0
- package/dist/metadata/examples/BaseInput.md +2 -0
- package/dist/metadata/examples/BaseList.md +342 -0
- package/dist/metadata/examples/Box.md +208 -0
- package/dist/metadata/examples/BreadcrumbItem.md +54 -0
- package/dist/metadata/examples/BreadcrumbsBar.md +64 -0
- package/dist/metadata/examples/Button.md +174 -0
- package/dist/metadata/examples/ButtonGroup.md +180 -0
- package/dist/metadata/examples/Checkbox.md +24 -0
- package/dist/metadata/examples/Chips.md +192 -0
- package/dist/metadata/examples/Clickable.md +31 -0
- package/dist/metadata/examples/ColorPicker.md +2 -0
- package/dist/metadata/examples/Combobox.md +438 -0
- package/dist/metadata/examples/Counter.md +188 -0
- package/dist/metadata/examples/DatePicker.md +43 -0
- package/dist/metadata/examples/Dialog.md +521 -0
- package/dist/metadata/examples/DialogContentContainer.md +18 -0
- package/dist/metadata/examples/Divider.md +50 -0
- package/dist/metadata/examples/DropdownBasicDropdown.md +479 -0
- package/dist/metadata/examples/DropdownBoxMode.md +218 -0
- package/dist/metadata/examples/EditableHeading.md +33 -0
- package/dist/metadata/examples/EditableText.md +36 -0
- package/dist/metadata/examples/EmptyState.md +192 -0
- package/dist/metadata/examples/ExpandCollapse.md +77 -0
- package/dist/metadata/examples/Flex.md +916 -0
- package/dist/metadata/examples/Heading.md +124 -0
- package/dist/metadata/examples/HiddenText.md +8 -0
- package/dist/metadata/examples/Icon.md +67 -0
- package/dist/metadata/examples/IconButton.md +141 -0
- package/dist/metadata/examples/Info.md +80 -0
- package/dist/metadata/examples/Label.md +109 -0
- package/dist/metadata/examples/Link.md +52 -0
- package/dist/metadata/examples/List.md +125 -0
- package/dist/metadata/examples/ListItem.md +42 -0
- package/dist/metadata/examples/Loader.md +148 -0
- package/dist/metadata/examples/Menu.md +141 -0
- package/dist/metadata/examples/MenuButton.md +127 -0
- package/dist/metadata/examples/MenuDivider.md +35 -0
- package/dist/metadata/examples/MenuGridItem.md +65 -0
- package/dist/metadata/examples/MenuItem.md +98 -0
- package/dist/metadata/examples/MenuItemButton.md +42 -0
- package/dist/metadata/examples/MenuTitle.md +25 -0
- package/dist/metadata/examples/ModalBasicLayout.md +400 -0
- package/dist/metadata/examples/ModalMediaLayout.md +240 -0
- package/dist/metadata/examples/ModalSideBySideLayout.md +313 -0
- package/dist/metadata/examples/MultiStepIndicator.md +189 -0
- package/dist/metadata/examples/NumberField.md +68 -0
- package/dist/metadata/examples/ProgressBar.md +152 -0
- package/dist/metadata/examples/RadioButton.md +41 -0
- package/dist/metadata/examples/Search.md +24 -0
- package/dist/metadata/examples/Skeleton.md +161 -0
- package/dist/metadata/examples/Slider.md +109 -0
- package/dist/metadata/examples/SplitButton.md +120 -0
- package/dist/metadata/examples/Steps.md +106 -0
- package/dist/metadata/examples/Table.md +449 -0
- package/dist/metadata/examples/Tabs.md +241 -0
- package/dist/metadata/examples/Text.md +188 -0
- package/dist/metadata/examples/TextArea.md +28 -0
- package/dist/metadata/examples/TextField.md +119 -0
- package/dist/metadata/examples/TextWithHighlight.md +2 -0
- package/dist/metadata/examples/ThemeProvider.md +47 -0
- package/dist/metadata/examples/Tipseen.md +111 -0
- package/dist/metadata/examples/Toast.md +127 -0
- package/dist/metadata/examples/Toggle.md +38 -0
- package/dist/metadata/examples/Tooltip.md +53 -0
- package/dist/metadata/examples/VirtualizedGrid.md +54 -0
- package/dist/metadata/examples/VirtualizedList.md +50 -0
- package/dist/metadata/examples/useGridKeyboardNavigationContext.md +61 -0
- package/dist/mocked_classnames/scripts/build-all-metadata.d.ts +1 -0
- package/dist/mocked_classnames/scripts/extract-accessibility.d.ts +4 -0
- package/dist/mocked_classnames/scripts/extract-examples.d.ts +3 -0
- package/dist/scripts/build-all-metadata.d.ts +1 -0
- package/dist/scripts/extract-accessibility.d.ts +4 -0
- package/dist/scripts/extract-examples.d.ts +3 -0
- package/package.json +12 -10
|
@@ -0,0 +1,521 @@
|
|
|
1
|
+
# Storybook Code Examples
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
```tsx
|
|
6
|
+
return <div style={{
|
|
7
|
+
padding: "80px var(--sb-spacing-small)"
|
|
8
|
+
}}>
|
|
9
|
+
<Dialog id="overview-dialog" aria-label="Overview dialog" middleware={preventMainAxisShift} shouldShowOnMount showTrigger={["click"]} hideTrigger={["click"]} position={"right"} content={<DialogContentContainer>
|
|
10
|
+
<Flex direction="column" align="start" gap="small" style={{
|
|
11
|
+
width: "150px",
|
|
12
|
+
padding: "var(--sb-spacing-small)"
|
|
13
|
+
}}>
|
|
14
|
+
<Skeleton type="text" size="h1" fullWidth />
|
|
15
|
+
{Array.from({
|
|
16
|
+
length: 3
|
|
17
|
+
}, (_value, index: number) => <Flex key={index} gap="small" style={{
|
|
18
|
+
width: "100%"
|
|
19
|
+
}}>
|
|
20
|
+
<Skeleton type="circle" width={20} height={20} />
|
|
21
|
+
<Skeleton type="text" size="small" fullWidth />
|
|
22
|
+
</Flex>)}
|
|
23
|
+
</Flex>
|
|
24
|
+
</DialogContentContainer>} {...args}>
|
|
25
|
+
<IconButton id="overview-dialog-trigger" aria-label="Open information dialog" icon={Info} active kind="secondary" />
|
|
26
|
+
</Dialog>
|
|
27
|
+
</div>;
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Positions
|
|
31
|
+
|
|
32
|
+
```tsx
|
|
33
|
+
// For maintain active state of each button according to the dialog open state (this hooks is available for your usage)
|
|
34
|
+
const {
|
|
35
|
+
isChecked: checkedTop,
|
|
36
|
+
onChange: onChangeTop
|
|
37
|
+
} = useSwitch({
|
|
38
|
+
defaultChecked: false
|
|
39
|
+
});
|
|
40
|
+
const {
|
|
41
|
+
isChecked: checkedBottom,
|
|
42
|
+
onChange: onChangeBottom
|
|
43
|
+
} = useSwitch({
|
|
44
|
+
defaultChecked: false
|
|
45
|
+
});
|
|
46
|
+
const {
|
|
47
|
+
isChecked: checkedRight,
|
|
48
|
+
onChange: onChangeRight
|
|
49
|
+
} = useSwitch({
|
|
50
|
+
defaultChecked: false
|
|
51
|
+
});
|
|
52
|
+
const {
|
|
53
|
+
isChecked: checkedLeft,
|
|
54
|
+
onChange: onChangeLeft
|
|
55
|
+
} = useSwitch({
|
|
56
|
+
defaultChecked: false
|
|
57
|
+
});
|
|
58
|
+
return <Flex style={{
|
|
59
|
+
padding: "80px var(--sb-spacing-small)"
|
|
60
|
+
}} gap="medium">
|
|
61
|
+
<Dialog id="positions-top-dialog" aria-label="Top positioned dialog" middleware={preventMainAxisShift} open={checkedTop} position="top" showTrigger={[]} hideTrigger={[]} content={<DialogContentContainer>
|
|
62
|
+
<Flex direction="column" align="start" gap="small" style={{
|
|
63
|
+
width: "150px",
|
|
64
|
+
padding: "var(--sb-spacing-small)"
|
|
65
|
+
}}>
|
|
66
|
+
<Skeleton type="text" size="h1" fullWidth />
|
|
67
|
+
{Array.from({
|
|
68
|
+
length: 3
|
|
69
|
+
}, (_value, index: number) => <Flex key={index} gap="small" style={{
|
|
70
|
+
width: "100%"
|
|
71
|
+
}}>
|
|
72
|
+
<Skeleton type="circle" width={20} height={20} />
|
|
73
|
+
<Skeleton type="text" size="small" fullWidth />
|
|
74
|
+
</Flex>)}
|
|
75
|
+
</Flex>
|
|
76
|
+
</DialogContentContainer>}>
|
|
77
|
+
<Button id="positions-top-button" aria-label="Toggle top dialog" kind="secondary" onClick={onChangeTop} active={checkedTop}>
|
|
78
|
+
Top
|
|
79
|
+
</Button>
|
|
80
|
+
</Dialog>
|
|
81
|
+
<Dialog id="positions-bottom-dialog" aria-label="Bottom positioned dialog" middleware={preventMainAxisShift} position="bottom" showTrigger={[]} hideTrigger={[]} open={checkedBottom} content={<DialogContentContainer>
|
|
82
|
+
<Flex direction="column" align="start" gap="small" style={{
|
|
83
|
+
width: "150px",
|
|
84
|
+
padding: "var(--sb-spacing-small)"
|
|
85
|
+
}}>
|
|
86
|
+
<Skeleton type="text" size="h1" fullWidth />
|
|
87
|
+
{Array.from({
|
|
88
|
+
length: 3
|
|
89
|
+
}, (_value, index: number) => <Flex key={index} gap="small" style={{
|
|
90
|
+
width: "100%"
|
|
91
|
+
}}>
|
|
92
|
+
<Skeleton type="circle" width={20} height={20} />
|
|
93
|
+
<Skeleton type="text" size="small" fullWidth />
|
|
94
|
+
</Flex>)}
|
|
95
|
+
</Flex>
|
|
96
|
+
</DialogContentContainer>}>
|
|
97
|
+
<Button id="positions-bottom-button" aria-label="Toggle bottom dialog" kind="secondary" onClick={onChangeBottom} active={checkedBottom}>
|
|
98
|
+
Bottom
|
|
99
|
+
</Button>
|
|
100
|
+
</Dialog>
|
|
101
|
+
<Dialog id="positions-right-dialog" aria-label="Right positioned dialog" middleware={preventMainAxisShift} showTrigger={[]} hideTrigger={[]} position="right" open={checkedRight} content={<DialogContentContainer>
|
|
102
|
+
<Flex direction="column" align="start" gap="small" style={{
|
|
103
|
+
width: "150px",
|
|
104
|
+
padding: "var(--sb-spacing-small)"
|
|
105
|
+
}}>
|
|
106
|
+
<Skeleton type="text" size="h1" fullWidth />
|
|
107
|
+
{Array.from({
|
|
108
|
+
length: 3
|
|
109
|
+
}, (_value, index: number) => <Flex key={index} gap="small" style={{
|
|
110
|
+
width: "100%"
|
|
111
|
+
}}>
|
|
112
|
+
<Skeleton type="circle" width={20} height={20} />
|
|
113
|
+
<Skeleton type="text" size="small" fullWidth />
|
|
114
|
+
</Flex>)}
|
|
115
|
+
</Flex>
|
|
116
|
+
</DialogContentContainer>}>
|
|
117
|
+
<Button id="positions-right-button" aria-label="Toggle right dialog" kind="secondary" onClick={onChangeRight} active={checkedRight}>
|
|
118
|
+
Right
|
|
119
|
+
</Button>
|
|
120
|
+
</Dialog>
|
|
121
|
+
<Dialog id="positions-left-dialog" aria-label="Left positioned dialog" middleware={preventMainAxisShift} position="left" showTrigger={[]} hideTrigger={[]} open={checkedLeft} content={<DialogContentContainer>
|
|
122
|
+
<Flex direction="column" align="start" gap="small" style={{
|
|
123
|
+
width: "150px",
|
|
124
|
+
padding: "var(--sb-spacing-small)"
|
|
125
|
+
}}>
|
|
126
|
+
<Skeleton type="text" size="h1" fullWidth />
|
|
127
|
+
{Array.from({
|
|
128
|
+
length: 3
|
|
129
|
+
}, (_value, index: number) => <Flex key={index} gap="small" style={{
|
|
130
|
+
width: "100%"
|
|
131
|
+
}}>
|
|
132
|
+
<Skeleton type="circle" width={20} height={20} />
|
|
133
|
+
<Skeleton type="text" size="small" fullWidth />
|
|
134
|
+
</Flex>)}
|
|
135
|
+
</Flex>
|
|
136
|
+
</DialogContentContainer>}>
|
|
137
|
+
<Button id="positions-left-button" aria-label="Toggle left dialog" kind="secondary" onClick={onChangeLeft} active={checkedLeft}>
|
|
138
|
+
Left
|
|
139
|
+
</Button>
|
|
140
|
+
</Dialog>
|
|
141
|
+
</Flex>;
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Show triggers
|
|
145
|
+
|
|
146
|
+
```tsx
|
|
147
|
+
const {
|
|
148
|
+
isChecked: clickButtonActive,
|
|
149
|
+
onChange: onClickClickButton
|
|
150
|
+
} = useSwitch({
|
|
151
|
+
defaultChecked: false
|
|
152
|
+
});
|
|
153
|
+
const {
|
|
154
|
+
isChecked: hoverButtonActive,
|
|
155
|
+
onChange: onHoverButton
|
|
156
|
+
} = useSwitch({
|
|
157
|
+
defaultChecked: false
|
|
158
|
+
});
|
|
159
|
+
const {
|
|
160
|
+
isChecked: focusButtonActive,
|
|
161
|
+
onChange: onFocusButton
|
|
162
|
+
} = useSwitch({
|
|
163
|
+
defaultChecked: false
|
|
164
|
+
});
|
|
165
|
+
return <Flex style={{
|
|
166
|
+
padding: "80px var(--sb-spacing-small)"
|
|
167
|
+
}} gap="medium">
|
|
168
|
+
<Dialog middleware={preventMainAxisShift} showTrigger={["click"]} hideTrigger={["click"]} content={<DialogContentContainer>
|
|
169
|
+
<Flex direction="column" align="start" gap="small" style={{
|
|
170
|
+
width: "150px",
|
|
171
|
+
padding: "var(--sb-spacing-small)"
|
|
172
|
+
}}>
|
|
173
|
+
<Skeleton type="text" size="h1" fullWidth />
|
|
174
|
+
{Array.from({
|
|
175
|
+
length: 3
|
|
176
|
+
}, (_value, index: number) => <Flex key={index} gap="small" style={{
|
|
177
|
+
width: "100%"
|
|
178
|
+
}}>
|
|
179
|
+
<Skeleton type="circle" width={20} height={20} />
|
|
180
|
+
<Skeleton type="text" size="small" fullWidth />
|
|
181
|
+
</Flex>)}
|
|
182
|
+
</Flex>
|
|
183
|
+
</DialogContentContainer>}>
|
|
184
|
+
<Button kind="secondary" active={clickButtonActive} onClick={onClickClickButton}>
|
|
185
|
+
On click
|
|
186
|
+
</Button>
|
|
187
|
+
</Dialog>
|
|
188
|
+
<Dialog middleware={preventMainAxisShift} showTrigger={["mouseenter"]} hideTrigger={["mouseleave"]} content={<DialogContentContainer>
|
|
189
|
+
<Flex direction="column" align="start" gap="small" style={{
|
|
190
|
+
width: "150px",
|
|
191
|
+
padding: "var(--sb-spacing-small)"
|
|
192
|
+
}}>
|
|
193
|
+
<Skeleton type="text" size="h1" fullWidth />
|
|
194
|
+
{Array.from({
|
|
195
|
+
length: 3
|
|
196
|
+
}, (_value, index: number) => <Flex key={index} gap="small" style={{
|
|
197
|
+
width: "100%"
|
|
198
|
+
}}>
|
|
199
|
+
<Skeleton type="circle" width={20} height={20} />
|
|
200
|
+
<Skeleton type="text" size="small" fullWidth />
|
|
201
|
+
</Flex>)}
|
|
202
|
+
</Flex>
|
|
203
|
+
</DialogContentContainer>}>
|
|
204
|
+
<div onMouseEnter={onHoverButton} onMouseLeave={onHoverButton}>
|
|
205
|
+
<Button kind="secondary" active={hoverButtonActive}>
|
|
206
|
+
On mouse enter
|
|
207
|
+
</Button>
|
|
208
|
+
</div>
|
|
209
|
+
</Dialog>
|
|
210
|
+
<Dialog middleware={preventMainAxisShift} showTrigger={["focus"]} hideTrigger={["blur"]} content={<DialogContentContainer>
|
|
211
|
+
<Flex direction="column" align="start" gap="small" style={{
|
|
212
|
+
width: "150px",
|
|
213
|
+
padding: "var(--sb-spacing-small)"
|
|
214
|
+
}}>
|
|
215
|
+
<Skeleton type="text" size="h1" fullWidth />
|
|
216
|
+
{Array.from({
|
|
217
|
+
length: 3
|
|
218
|
+
}, (_value, index: number) => <Flex key={index} gap="small" style={{
|
|
219
|
+
width: "100%"
|
|
220
|
+
}}>
|
|
221
|
+
<Skeleton type="circle" width={20} height={20} />
|
|
222
|
+
<Skeleton type="text" size="small" fullWidth />
|
|
223
|
+
</Flex>)}
|
|
224
|
+
</Flex>
|
|
225
|
+
</DialogContentContainer>}>
|
|
226
|
+
<Button onFocus={onFocusButton} onBlur={onFocusButton} kind="secondary" active={focusButtonActive}>
|
|
227
|
+
On focus
|
|
228
|
+
</Button>
|
|
229
|
+
</Dialog>
|
|
230
|
+
<Dialog middleware={preventMainAxisShift} shouldShowOnMount showTrigger={[]} hideTrigger={[]} position="right" content={<DialogContentContainer>
|
|
231
|
+
<Flex direction="column" align="start" gap="small" style={{
|
|
232
|
+
width: "150px",
|
|
233
|
+
padding: "var(--sb-spacing-small)"
|
|
234
|
+
}}>
|
|
235
|
+
<Skeleton type="text" size="h1" fullWidth />
|
|
236
|
+
{Array.from({
|
|
237
|
+
length: 3
|
|
238
|
+
}, (_value, index: number) => <Flex key={index} gap="small" style={{
|
|
239
|
+
width: "100%"
|
|
240
|
+
}}>
|
|
241
|
+
<Skeleton type="circle" width={20} height={20} />
|
|
242
|
+
<Skeleton type="text" size="small" fullWidth />
|
|
243
|
+
</Flex>)}
|
|
244
|
+
</Flex>
|
|
245
|
+
</DialogContentContainer>}>
|
|
246
|
+
<Button kind="secondary" active>
|
|
247
|
+
On mount
|
|
248
|
+
</Button>
|
|
249
|
+
</Dialog>
|
|
250
|
+
</Flex>;
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## Hide triggers
|
|
254
|
+
|
|
255
|
+
```tsx
|
|
256
|
+
// For maintain active state of each button according to the dialog open state (this hooks is available for your usage)
|
|
257
|
+
const {
|
|
258
|
+
isChecked: clickButtonActive,
|
|
259
|
+
onChange: switchClickButtonActive
|
|
260
|
+
} = useSwitch({
|
|
261
|
+
defaultChecked: true
|
|
262
|
+
});
|
|
263
|
+
const {
|
|
264
|
+
isChecked: clickOutsideButtonActive,
|
|
265
|
+
onChange: switchClickOutsideActive
|
|
266
|
+
} = useSwitch({
|
|
267
|
+
defaultChecked: true
|
|
268
|
+
});
|
|
269
|
+
const {
|
|
270
|
+
isChecked: mouseLeaveButtonActive,
|
|
271
|
+
onChange: switchMouseLeaveActive
|
|
272
|
+
} = useSwitch({
|
|
273
|
+
defaultChecked: true
|
|
274
|
+
});
|
|
275
|
+
const {
|
|
276
|
+
isChecked: blurButtonActive,
|
|
277
|
+
onChange: switchBlurButtonActive
|
|
278
|
+
} = useSwitch({
|
|
279
|
+
defaultChecked: true
|
|
280
|
+
});
|
|
281
|
+
const {
|
|
282
|
+
isChecked: contentClickButtonActive,
|
|
283
|
+
onChange: switchContentClickActive
|
|
284
|
+
} = useSwitch({
|
|
285
|
+
defaultChecked: true
|
|
286
|
+
});
|
|
287
|
+
const {
|
|
288
|
+
isChecked: contextMenuButtonActive,
|
|
289
|
+
onChange: switchContextMenuActive
|
|
290
|
+
} = useSwitch({
|
|
291
|
+
defaultChecked: true
|
|
292
|
+
});
|
|
293
|
+
return <Flex data-testid={HIDE_TRIGGERS_CONTAINER} id={HIDE_TRIGGERS_CONTAINER} style={{
|
|
294
|
+
paddingInline: "var(--sb-spacing-small)"
|
|
295
|
+
}} wrap direction="column" justify="start" align="start">
|
|
296
|
+
<Dialog middleware={preventMainAxisShift} shouldShowOnMount containerSelector={`#${HIDE_TRIGGERS_CONTAINER}`} onClickOutside={switchClickOutsideActive} position="right" showTrigger={["click"]} hideTrigger={["clickoutside"]} content={<DialogContentContainer data-testid={CLICK_OUTSIDE_DIALOG}>
|
|
297
|
+
<Flex direction="column" align="start" gap="small" style={{
|
|
298
|
+
width: "150px",
|
|
299
|
+
padding: "var(--sb-spacing-small)"
|
|
300
|
+
}}>
|
|
301
|
+
<Skeleton type="text" size="h1" fullWidth />
|
|
302
|
+
<Flex gap="small" style={{
|
|
303
|
+
width: "100%"
|
|
304
|
+
}}>
|
|
305
|
+
<Skeleton type="circle" width={20} height={20} />
|
|
306
|
+
<Skeleton type="text" size="small" fullWidth />
|
|
307
|
+
</Flex>
|
|
308
|
+
</Flex>
|
|
309
|
+
</DialogContentContainer>}>
|
|
310
|
+
<Button data-testid={CLICK_OUTSIDE_DIALOG_BUTTON} kind="secondary" active={clickOutsideButtonActive} onClick={switchClickOutsideActive} style={{
|
|
311
|
+
marginBlock: "54px"
|
|
312
|
+
}}>
|
|
313
|
+
On click outside
|
|
314
|
+
</Button>
|
|
315
|
+
</Dialog>
|
|
316
|
+
<Dialog middleware={preventMainAxisShift} shouldShowOnMount position="right" showTrigger={["click"]} hideTrigger={["click"]} content={<DialogContentContainer>
|
|
317
|
+
<Flex direction="column" align="start" gap="small" style={{
|
|
318
|
+
width: "150px",
|
|
319
|
+
padding: "var(--sb-spacing-small)"
|
|
320
|
+
}}>
|
|
321
|
+
<Skeleton type="text" size="h1" fullWidth />
|
|
322
|
+
<Flex gap="small" style={{
|
|
323
|
+
width: "100%"
|
|
324
|
+
}}>
|
|
325
|
+
<Skeleton type="circle" width={20} height={20} />
|
|
326
|
+
<Skeleton type="text" size="small" fullWidth />
|
|
327
|
+
</Flex>
|
|
328
|
+
</Flex>
|
|
329
|
+
</DialogContentContainer>}>
|
|
330
|
+
<Button kind="secondary" active={clickButtonActive} onClick={switchClickButtonActive} style={{
|
|
331
|
+
marginBlock: "54px"
|
|
332
|
+
}}>
|
|
333
|
+
On click
|
|
334
|
+
</Button>
|
|
335
|
+
</Dialog>
|
|
336
|
+
<Dialog middleware={preventMainAxisShift} shouldShowOnMount position="right" showTrigger={["focus", "click"]} hideTrigger={["blur"]} content={<DialogContentContainer>
|
|
337
|
+
<Flex direction="column" align="start" gap="small" style={{
|
|
338
|
+
width: "150px",
|
|
339
|
+
padding: "var(--sb-spacing-small)"
|
|
340
|
+
}}>
|
|
341
|
+
<Skeleton type="text" size="h1" fullWidth />
|
|
342
|
+
<Flex gap="small" style={{
|
|
343
|
+
width: "100%"
|
|
344
|
+
}}>
|
|
345
|
+
<Skeleton type="circle" width={20} height={20} />
|
|
346
|
+
<Skeleton type="text" size="small" fullWidth />
|
|
347
|
+
</Flex>
|
|
348
|
+
</Flex>
|
|
349
|
+
</DialogContentContainer>}>
|
|
350
|
+
<Button kind="secondary" active={blurButtonActive} onClick={switchBlurButtonActive} style={{
|
|
351
|
+
marginBlock: "54px"
|
|
352
|
+
}}>
|
|
353
|
+
On blur
|
|
354
|
+
</Button>
|
|
355
|
+
</Dialog>
|
|
356
|
+
<Dialog middleware={preventMainAxisShift} shouldShowOnMount position="right" showTrigger={["click"]} hideTrigger={["onContentClick"]} onContentClick={switchContentClickActive} content={<DialogContentContainer>
|
|
357
|
+
<Flex direction="column" align="start" gap="small" style={{
|
|
358
|
+
width: "150px",
|
|
359
|
+
padding: "var(--sb-spacing-small)"
|
|
360
|
+
}}>
|
|
361
|
+
<Skeleton type="text" size="h1" fullWidth />
|
|
362
|
+
<Flex gap="small" style={{
|
|
363
|
+
width: "100%"
|
|
364
|
+
}}>
|
|
365
|
+
<Skeleton type="circle" width={20} height={20} />
|
|
366
|
+
<Skeleton type="text" size="small" fullWidth />
|
|
367
|
+
</Flex>
|
|
368
|
+
</Flex>
|
|
369
|
+
</DialogContentContainer>}>
|
|
370
|
+
<Button kind="secondary" active={contentClickButtonActive} onClick={switchContentClickActive} style={{
|
|
371
|
+
marginBlock: "54px"
|
|
372
|
+
}}>
|
|
373
|
+
On content click
|
|
374
|
+
</Button>
|
|
375
|
+
</Dialog>
|
|
376
|
+
<Dialog middleware={preventMainAxisShift} shouldShowOnMount showTrigger={["mouseenter"]} hideTrigger={["mouseleave"]} position="right" onDialogDidHide={switchMouseLeaveActive} onDialogDidShow={switchMouseLeaveActive} content={<DialogContentContainer>
|
|
377
|
+
<Flex direction="column" align="start" gap="small" style={{
|
|
378
|
+
width: "150px",
|
|
379
|
+
padding: "var(--sb-spacing-small)"
|
|
380
|
+
}}>
|
|
381
|
+
<Skeleton type="text" size="h1" fullWidth />
|
|
382
|
+
<Flex gap="small" style={{
|
|
383
|
+
width: "100%"
|
|
384
|
+
}}>
|
|
385
|
+
<Skeleton type="circle" width={20} height={20} />
|
|
386
|
+
<Skeleton type="text" size="small" fullWidth />
|
|
387
|
+
</Flex>
|
|
388
|
+
</Flex>
|
|
389
|
+
</DialogContentContainer>}>
|
|
390
|
+
<Button kind="secondary" active={mouseLeaveButtonActive} onClick={switchMouseLeaveActive} style={{
|
|
391
|
+
marginBlock: "54px"
|
|
392
|
+
}}>
|
|
393
|
+
On mouse leave
|
|
394
|
+
</Button>
|
|
395
|
+
</Dialog>
|
|
396
|
+
<Dialog middleware={preventMainAxisShift} shouldShowOnMount showTrigger={["click"]} hideTrigger={["contextmenu"]} position="right" containerSelector={`#${HIDE_TRIGGERS_CONTAINER}`} onDialogDidHide={switchContextMenuActive} onDialogDidShow={switchContextMenuActive} content={<DialogContentContainer data-testid={CONTEXT_MENU_DIALOG}>
|
|
397
|
+
<Flex direction="column" align="start" gap="small" style={{
|
|
398
|
+
width: "150px",
|
|
399
|
+
padding: "var(--sb-spacing-small)"
|
|
400
|
+
}}>
|
|
401
|
+
<Skeleton type="text" size="h1" fullWidth />
|
|
402
|
+
<Flex gap="small" style={{
|
|
403
|
+
width: "100%"
|
|
404
|
+
}}>
|
|
405
|
+
<Skeleton type="circle" width={20} height={20} />
|
|
406
|
+
<Skeleton type="text" size="small" fullWidth />
|
|
407
|
+
</Flex>
|
|
408
|
+
</Flex>
|
|
409
|
+
</DialogContentContainer>}>
|
|
410
|
+
<Button kind="secondary" active={contextMenuButtonActive} style={{
|
|
411
|
+
marginBlock: "54px"
|
|
412
|
+
}}>
|
|
413
|
+
On right click
|
|
414
|
+
</Button>
|
|
415
|
+
</Dialog>
|
|
416
|
+
</Flex>;
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
## Controlled Dialog
|
|
420
|
+
|
|
421
|
+
```tsx
|
|
422
|
+
const {
|
|
423
|
+
isChecked: isOpen,
|
|
424
|
+
onChange: setIsOpen
|
|
425
|
+
} = useSwitch({
|
|
426
|
+
defaultChecked: false
|
|
427
|
+
});
|
|
428
|
+
return <Dialog
|
|
429
|
+
//disable default triggers
|
|
430
|
+
showTrigger={[]}
|
|
431
|
+
// manage the opening state in the app level
|
|
432
|
+
open={isOpen} content={<DialogContentContainer>
|
|
433
|
+
<DialogContentContainer>
|
|
434
|
+
<Button kind="secondary"
|
|
435
|
+
// @ts-ignore
|
|
436
|
+
onClick={() => setIsOpen(false)}>
|
|
437
|
+
This will close as well
|
|
438
|
+
</Button>
|
|
439
|
+
</DialogContentContainer>
|
|
440
|
+
</DialogContentContainer>}>
|
|
441
|
+
<Button
|
|
442
|
+
// @ts-ignore
|
|
443
|
+
onClick={() => setIsOpen(!isOpen)}>
|
|
444
|
+
Click me to toggle the Dialog
|
|
445
|
+
</Button>
|
|
446
|
+
</Dialog>;
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
## Dialog with tooltip
|
|
450
|
+
|
|
451
|
+
```tsx
|
|
452
|
+
return <div style={{
|
|
453
|
+
padding: "80px var(--sb-spacing-small)"
|
|
454
|
+
}}>
|
|
455
|
+
<Dialog tooltip middleware={preventMainAxisShift} shouldShowOnMount showTrigger={["click"]} hideTrigger={["click"]} position="right" content={<DialogContentContainer>
|
|
456
|
+
<Flex direction="column" align="start" gap="small" style={{
|
|
457
|
+
width: "150px",
|
|
458
|
+
padding: "var(--sb-spacing-small)"
|
|
459
|
+
}}>
|
|
460
|
+
<Skeleton type="text" size="h1" fullWidth />
|
|
461
|
+
{Array.from({
|
|
462
|
+
length: 3
|
|
463
|
+
}, (_value, index: number) => <Flex key={index} gap="small" style={{
|
|
464
|
+
width: "100%"
|
|
465
|
+
}}>
|
|
466
|
+
<Skeleton type="circle" width={20} height={20} />
|
|
467
|
+
<Skeleton type="text" size="small" fullWidth />
|
|
468
|
+
</Flex>)}
|
|
469
|
+
</Flex>
|
|
470
|
+
</DialogContentContainer>}>
|
|
471
|
+
<IconButton icon={Info} active kind="secondary" />
|
|
472
|
+
</Dialog>
|
|
473
|
+
</div>;
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
## Disable scroll when dialog open
|
|
477
|
+
|
|
478
|
+
```tsx
|
|
479
|
+
// For maintain active state of each button according to the dialog open state (this hooks is available for your usage)
|
|
480
|
+
const {
|
|
481
|
+
isChecked: checkedTop,
|
|
482
|
+
onChange: onChangeTop
|
|
483
|
+
} = useSwitch({
|
|
484
|
+
defaultChecked: false
|
|
485
|
+
});
|
|
486
|
+
return <Flex style={{
|
|
487
|
+
padding: "80px var(--sb-spacing-small)"
|
|
488
|
+
}} gap="medium">
|
|
489
|
+
<div className={"scrollable"} style={{
|
|
490
|
+
height: "300px",
|
|
491
|
+
width: "400px",
|
|
492
|
+
overflow: "auto"
|
|
493
|
+
}}>
|
|
494
|
+
<div style={{
|
|
495
|
+
height: "800px"
|
|
496
|
+
}}>
|
|
497
|
+
<Dialog open={checkedTop} position="left" showTrigger={[]} hideTrigger={[]} containerSelector={".scrollable"} disableContainerScroll content={<DialogContentContainer>
|
|
498
|
+
<Flex direction="column" align="start" gap="small" style={{
|
|
499
|
+
width: "150px",
|
|
500
|
+
padding: "var(--sb-spacing-small)"
|
|
501
|
+
}}>
|
|
502
|
+
<Skeleton type="text" size="h1" fullWidth />
|
|
503
|
+
{Array.from({
|
|
504
|
+
length: 3
|
|
505
|
+
}, (_value, index: number) => <Flex key={index} gap="small" style={{
|
|
506
|
+
width: "100%"
|
|
507
|
+
}}>
|
|
508
|
+
<Skeleton type="circle" width={20} height={20} />
|
|
509
|
+
<Skeleton type="text" size="small" fullWidth />
|
|
510
|
+
</Flex>)}
|
|
511
|
+
</Flex>
|
|
512
|
+
</DialogContentContainer>}>
|
|
513
|
+
<Button kind="secondary" onClick={onChangeTop} active={checkedTop}>
|
|
514
|
+
Click
|
|
515
|
+
</Button>
|
|
516
|
+
</Dialog>
|
|
517
|
+
</div>
|
|
518
|
+
</div>
|
|
519
|
+
</Flex>;
|
|
520
|
+
```
|
|
521
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Storybook Code Examples
|
|
2
|
+
|
|
3
|
+
## Popover
|
|
4
|
+
|
|
5
|
+
```tsx
|
|
6
|
+
<DialogContentContainer type="popover">
|
|
7
|
+
<Box margin="medium" padding="medium" />
|
|
8
|
+
</DialogContentContainer>
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Modal
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<DialogContentContainer type="modal">
|
|
15
|
+
<Box margin="medium" padding="medium" />
|
|
16
|
+
</DialogContentContainer>
|
|
17
|
+
```
|
|
18
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Storybook Code Examples
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
```tsx
|
|
6
|
+
const dividerTemplate = (args: DividerProps) => <div style={{
|
|
7
|
+
width: "400px",
|
|
8
|
+
height: "40px"
|
|
9
|
+
}}>
|
|
10
|
+
<Divider {...args} />
|
|
11
|
+
</div>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Directions
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
<div style={{
|
|
18
|
+
display: "flex",
|
|
19
|
+
flexDirection: "column",
|
|
20
|
+
width: "400px"
|
|
21
|
+
}}>
|
|
22
|
+
<div style={{
|
|
23
|
+
display: "flex",
|
|
24
|
+
alignItems: "center",
|
|
25
|
+
height: 40
|
|
26
|
+
}}>
|
|
27
|
+
<span style={{
|
|
28
|
+
marginRight: "var(--sb-spacing-large)",
|
|
29
|
+
alignSelf: "center"
|
|
30
|
+
}}>
|
|
31
|
+
Horizontal
|
|
32
|
+
</span>
|
|
33
|
+
<Divider direction="horizontal" />
|
|
34
|
+
</div>
|
|
35
|
+
<div style={{
|
|
36
|
+
display: "flex",
|
|
37
|
+
alignItems: "center",
|
|
38
|
+
height: 200
|
|
39
|
+
}}>
|
|
40
|
+
<span style={{
|
|
41
|
+
marginRight: "var(--sb-spacing-large)",
|
|
42
|
+
alignSelf: "center"
|
|
43
|
+
}}>
|
|
44
|
+
Vertical
|
|
45
|
+
</span>
|
|
46
|
+
<Divider direction="vertical" />
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
```
|
|
50
|
+
|