@@ -17,7 +17,10 @@ import {
17
17
MenuTrigger ,
18
18
MenuTriggerItem ,
19
19
} from '.'
20
- import { Button } from '../Button'
20
+ import { Avatar } from '../Avatar'
21
+ import { Chip } from '../Chip'
22
+ import { Row } from '../Flex'
23
+ import { Text } from '../Text'
21
24
22
25
export default {
23
26
title : 'Components/Menu' ,
@@ -40,9 +43,7 @@ export default {
40
43
41
44
export const Default : Story = ( args ) => (
42
45
< Menu { ...args } >
43
- < MenuTrigger >
44
- < Button > Trigger</ Button >
45
- </ MenuTrigger >
46
+ < MenuButton > Show Menu</ MenuButton >
46
47
< MenuContent >
47
48
< MenuItem onSelect = { action ( 'cut' ) } > Cut</ MenuItem >
48
49
< MenuItem onSelect = { action ( 'copy' ) } > Copy</ MenuItem >
@@ -53,12 +54,9 @@ export const Default: Story = (args) => (
53
54
54
55
export const WithDisabledItems : Story = ( ) => (
55
56
< Menu >
56
- < MenuTrigger >
57
- < Button > Trigger</ Button >
58
- </ MenuTrigger >
57
+ < MenuButton > Show Menu</ MenuButton >
59
58
< MenuContent >
60
59
< MenuItem disabled > Cut</ MenuItem >
61
-
62
60
< MenuItem > Copy</ MenuItem >
63
61
</ MenuContent >
64
62
</ Menu >
@@ -67,9 +65,7 @@ export const WithDisabledItems: Story = () => (
67
65
/* Separators and Groups can be used to arrange items in vertical and horizontal sections */
68
66
export const WithSeparators : Story = ( ) => (
69
67
< Menu >
70
- < MenuTrigger >
71
- < Button > Trigger</ Button >
72
- </ MenuTrigger >
68
+ < MenuButton > Show Menu</ MenuButton >
73
69
< MenuContent >
74
70
< MenuItem > Cut</ MenuItem >
75
71
< MenuItem > Copy</ MenuItem >
@@ -92,9 +88,7 @@ export const WithSeparators: Story = () => (
92
88
93
89
export const WithLabel : Story = ( ) => (
94
90
< Menu >
95
- < MenuTrigger >
96
- < Button > Trigger</ Button >
97
- </ MenuTrigger >
91
+ < MenuButton > Show Menu</ MenuButton >
98
92
< MenuContent >
99
93
< MenuLabel > Actions</ MenuLabel >
100
94
< MenuItem > Cut</ MenuItem >
@@ -109,9 +103,7 @@ export const Controlled: Story = () => {
109
103
return (
110
104
< >
111
105
< Menu open = { open } onOpenChange = { setFalse } >
112
- < MenuTrigger >
113
- < Button onClick = { setTrue } > Show Menu</ Button >
114
- </ MenuTrigger >
106
+ < MenuButton onClick = { setTrue } > Show Menu</ MenuButton >
115
107
< MenuContent >
116
108
< MenuItem > Item</ MenuItem >
117
109
</ MenuContent >
@@ -125,9 +117,7 @@ export const WithCheckbox: Story = () => {
125
117
const [ checked , setChecked ] = useState ( true )
126
118
return (
127
119
< Menu >
128
- < MenuTrigger >
129
- < Button > Trigger</ Button >
130
- </ MenuTrigger >
120
+ < MenuButton > Show Menu</ MenuButton >
131
121
< MenuContent >
132
122
< MenuCheckboxItem checked = { checked } onCheckedChange = { setChecked } >
133
123
Cut
@@ -143,9 +133,7 @@ export const WithRadioItems: Story = () => {
143
133
const [ color , setColor ] = React . useState ( 'blue' )
144
134
return (
145
135
< Menu >
146
- < MenuTrigger >
147
- < Button > Trigger</ Button >
148
- </ MenuTrigger >
136
+ < MenuButton > Show Menu</ MenuButton >
149
137
< MenuContent >
150
138
< MenuRadioGroup value = { color } onValueChange = { setColor } >
151
139
< MenuRadioItem value = "red" > Red</ MenuRadioItem >
@@ -161,9 +149,7 @@ export const WithRadioItems: Story = () => {
161
149
export const Shortcuts : Story = ( ) => {
162
150
return (
163
151
< Menu >
164
- < MenuTrigger >
165
- < Button > Trigger</ Button >
166
- </ MenuTrigger >
152
+ < MenuButton > Show Menu</ MenuButton >
167
153
< MenuContent >
168
154
< MenuItem >
169
155
New Tab < MenuItemShortcut > ⌘+T</ MenuItemShortcut >
@@ -176,27 +162,56 @@ export const Shortcuts: Story = () => {
176
162
)
177
163
}
178
164
179
- /** Use the `MenuButton` component instead of `MenuTrigger` for an animated chevron indiciating the open state */
180
- export const WithMenuButton : Story = ( ) => {
165
+ /** The menu can be triggers from other components using the `MenuTrigger` */
166
+ export const WithTrigger : Story = ( ) => {
181
167
return (
182
- < Menu >
183
- < MenuButton > Button</ MenuButton >
184
- < MenuContent >
185
- < MenuItem onSelect = { action ( 'cut' ) } > Cut</ MenuItem >
186
- < MenuItem onSelect = { action ( 'copy' ) } > Copy</ MenuItem >
187
- < MenuItem onSelect = { action ( 'paste' ) } > Paste</ MenuItem >
188
- </ MenuContent >
189
- </ Menu >
168
+ < Row gap css = { { alignItems : 'center' } } >
169
+ < Menu >
170
+ < MenuTrigger >
171
+ < Text css = { { cursor : 'pointer' } } > Show Menu</ Text >
172
+ </ MenuTrigger >
173
+ < MenuContent >
174
+ < MenuItem onSelect = { action ( 'cut' ) } > Cut</ MenuItem >
175
+ < MenuItem onSelect = { action ( 'copy' ) } > Copy</ MenuItem >
176
+ < MenuItem onSelect = { action ( 'paste' ) } > Paste</ MenuItem >
177
+ </ MenuContent >
178
+ </ Menu >
179
+ < Menu >
180
+ < MenuTrigger >
181
+ < Avatar
182
+ size = "small"
183
+ alt = "Show Menu"
184
+ src = "https://i.pravatar.cc"
185
+ css = { { cursor : 'pointer' } }
186
+ />
187
+ </ MenuTrigger >
188
+ < MenuContent >
189
+ < MenuItem onSelect = { action ( 'cut' ) } > Cut</ MenuItem >
190
+ < MenuItem onSelect = { action ( 'copy' ) } > Copy</ MenuItem >
191
+ < MenuItem onSelect = { action ( 'paste' ) } > Paste</ MenuItem >
192
+ </ MenuContent >
193
+ </ Menu >
194
+ < Menu >
195
+ < MenuTrigger >
196
+ < Chip interactive variant = "success" >
197
+ Show Menu
198
+ </ Chip >
199
+ </ MenuTrigger >
200
+ < MenuContent >
201
+ < MenuItem onSelect = { action ( 'cut' ) } > Cut</ MenuItem >
202
+ < MenuItem onSelect = { action ( 'copy' ) } > Copy</ MenuItem >
203
+ < MenuItem onSelect = { action ( 'paste' ) } > Paste</ MenuItem >
204
+ </ MenuContent >
205
+ </ Menu >
206
+ </ Row >
190
207
)
191
208
}
192
209
193
210
/** Create nested menus using a nested `Menu` component with a `MenuTriggerItem` and it's own `MenuContent` */
194
211
export const Nested : Story = ( ) => {
195
212
return (
196
213
< Menu >
197
- < MenuTrigger >
198
- < Button > Trigger</ Button >
199
- </ MenuTrigger >
214
+ < MenuButton > Show Menu</ MenuButton >
200
215
< MenuContent >
201
216
< MenuItem >
202
217
New Tab < MenuItemShortcut > ⌘+T</ MenuItemShortcut >
@@ -230,11 +245,9 @@ export const MultipleMenus: Story = () => {
230
245
const [ checked , setChecked ] = useState ( true )
231
246
const [ color , setColor ] = React . useState ( 'blue' )
232
247
return (
233
- < >
248
+ < Row gap >
234
249
< Menu >
235
- < MenuTrigger >
236
- < Button > Trigger</ Button >
237
- </ MenuTrigger >
250
+ < MenuButton > Menu 1</ MenuButton >
238
251
< MenuContent >
239
252
< MenuCheckboxItem checked = { checked } onCheckedChange = { setChecked } >
240
253
Cut
@@ -243,9 +256,7 @@ export const MultipleMenus: Story = () => {
243
256
</ MenuContent >
244
257
</ Menu >
245
258
< Menu >
246
- < MenuTrigger >
247
- < Button > Trigger</ Button >
248
- </ MenuTrigger >
259
+ < MenuButton > Menu 2</ MenuButton >
249
260
< MenuContent >
250
261
< MenuRadioGroup value = { color } onValueChange = { setColor } >
251
262
< MenuRadioItem value = "red" > Red</ MenuRadioItem >
@@ -254,7 +265,7 @@ export const MultipleMenus: Story = () => {
254
265
</ MenuRadioGroup >
255
266
</ MenuContent >
256
267
</ Menu >
257
- </ >
268
+ </ Row >
258
269
)
259
270
}
260
271
@@ -264,9 +275,7 @@ export const Destructive: Story = () => {
264
275
const [ checked , setChecked ] = useState ( true )
265
276
return (
266
277
< Menu >
267
- < MenuTrigger >
268
- < Button > Trigger</ Button >
269
- </ MenuTrigger >
278
+ < MenuButton > Show Menu</ MenuButton >
270
279
< MenuContent >
271
280
< MenuItem >
272
281
Open < MenuItemShortcut > ⌘+O</ MenuItemShortcut >
0 commit comments