11
11
*/
12
12
13
13
import { action } from '@storybook/addon-actions' ;
14
- import { Autocomplete , Button , Collection , DialogTrigger , Header , Input , Keyboard , Label , ListBox , ListBoxSection , ListLayout , Popover , SearchField , Select , SelectValue , Separator , SubmenuTrigger , Text , TextField , Virtualizer } from 'react-aria-components' ;
15
- import { Menu , MenuItem , MenuSection , MenuTrigger } from '../src/Menu ' ;
14
+ import { Autocomplete , Button , Collection , DialogTrigger , Header , Input , Keyboard , Label , ListBox , ListBoxSection , ListLayout , Menu , MenuItem , MenuSection , MenuTrigger , Popover , SearchField , Select , SelectValue , Separator , SubmenuTrigger , Text , TextField , Virtualizer } from 'react-aria-components' ;
15
+ import { Meta , StoryObj } from '@storybook/react ' ;
16
16
import { MyListBoxItem , MyMenuItem } from './utils' ;
17
17
import React from 'react' ;
18
18
import styles from '../example/index.css' ;
@@ -21,6 +21,7 @@ import {useFilter} from 'react-aria';
21
21
22
22
export default {
23
23
title : 'React Aria Components/Autocomplete' ,
24
+ component : Autocomplete ,
24
25
args : {
25
26
onAction : action ( 'onAction' ) ,
26
27
selectionMode : 'multiple' ,
@@ -46,7 +47,11 @@ export default {
46
47
options : [ 'clearSelection' , 'none' ]
47
48
}
48
49
}
49
- } ;
50
+ } as Meta < typeof Autocomplete > ;
51
+
52
+ export type AutocompleteStory = StoryObj < typeof Autocomplete > ;
53
+ export type MenuStory = StoryObj < typeof Menu > ;
54
+ export type ListBoxStory = StoryObj < typeof ListBox > ;
50
55
51
56
let StaticMenu = ( props ) => {
52
57
return (
@@ -113,7 +118,7 @@ function AutocompleteWrapper(props) {
113
118
) ;
114
119
}
115
120
116
- export const AutocompleteExample = {
121
+ export const AutocompleteExample : AutocompleteStory = {
117
122
render : ( args ) => {
118
123
return (
119
124
< AutocompleteWrapper >
@@ -131,7 +136,7 @@ export const AutocompleteExample = {
131
136
name : 'Autocomplete complex static with textfield'
132
137
} ;
133
138
134
- export const AutocompleteSearchfield = {
139
+ export const AutocompleteSearchfield : AutocompleteStory = {
135
140
render : ( args ) => {
136
141
return (
137
142
< AutocompleteWrapper defaultInputValue = "Ba" >
@@ -289,7 +294,7 @@ let dynamicRenderFuncSections = (item: ItemNode) => {
289
294
}
290
295
} ;
291
296
292
- export const AutocompleteMenuDynamic = {
297
+ export const AutocompleteMenuDynamic : AutocompleteStory = {
293
298
render : ( args ) => {
294
299
return (
295
300
< >
@@ -313,7 +318,7 @@ export const AutocompleteMenuDynamic = {
313
318
name : 'Autocomplete, dynamic menu'
314
319
} ;
315
320
316
- export const AutocompleteOnActionOnMenuItems = {
321
+ export const AutocompleteOnActionOnMenuItems : AutocompleteStory = {
317
322
render : ( args ) => {
318
323
return (
319
324
< AutocompleteWrapper >
@@ -342,7 +347,7 @@ interface AutocompleteItem {
342
347
343
348
let items : AutocompleteItem [ ] = [ { id : '1' , name : 'Foo' } , { id : '2' , name : 'Bar' } , { id : '3' , name : 'Baz' } ] ;
344
349
345
- export const AutocompleteDisabledKeys = {
350
+ export const AutocompleteDisabledKeys : AutocompleteStory = {
346
351
render : ( args ) => {
347
352
return (
348
353
< AutocompleteWrapper >
@@ -362,7 +367,7 @@ export const AutocompleteDisabledKeys = {
362
367
name : 'Autocomplete, disabled key'
363
368
} ;
364
369
365
- const AsyncExample = ( args ) => {
370
+ const AsyncExample = ( args : any ) : React . ReactElement => {
366
371
let list = useAsyncList < AutocompleteItem > ( {
367
372
async load ( { filterText} ) {
368
373
let json = await new Promise ( resolve => {
@@ -413,7 +418,7 @@ const AsyncExample = (args) => {
413
418
) ;
414
419
} ;
415
420
416
- export const AutocompleteAsyncLoadingExample = {
421
+ export const AutocompleteAsyncLoadingExample : StoryObj < typeof AsyncExample > = {
417
422
render : ( args ) => {
418
423
return < AsyncExample { ...args } /> ;
419
424
} ,
@@ -445,14 +450,14 @@ const CaseSensitiveFilter = (args) => {
445
450
) ;
446
451
} ;
447
452
448
- export const AutocompleteCaseSensitive = {
453
+ export const AutocompleteCaseSensitive : AutocompleteStory = {
449
454
render : ( args ) => {
450
455
return < CaseSensitiveFilter { ...args } /> ;
451
456
} ,
452
457
name : 'Autocomplete, case sensitive filter'
453
458
} ;
454
459
455
- export const AutocompleteWithListbox = {
460
+ export const AutocompleteWithListbox : AutocompleteStory = {
456
461
render : ( args ) => {
457
462
return (
458
463
< DialogTrigger >
@@ -529,7 +534,7 @@ function VirtualizedListBox(props) {
529
534
) ;
530
535
}
531
536
532
- export const AutocompleteWithVirtualizedListbox = {
537
+ export const AutocompleteWithVirtualizedListbox : AutocompleteStory = {
533
538
render : ( args ) => {
534
539
return (
535
540
< DialogTrigger >
@@ -615,7 +620,7 @@ function ShellExample() {
615
620
) ;
616
621
}
617
622
618
- export const AutocompleteInPopover = {
623
+ export const AutocompleteInPopover : MenuStory = {
619
624
render : ( ) => {
620
625
return (
621
626
< MenuTrigger >
@@ -660,7 +665,7 @@ export const AutocompleteInPopover = {
660
665
}
661
666
} ;
662
667
663
- export const AutocompleteInPopoverDialogTrigger = {
668
+ export const AutocompleteInPopoverDialogTrigger : MenuStory = {
664
669
render : ( ) => {
665
670
return (
666
671
< DialogTrigger >
@@ -771,7 +776,7 @@ const MyMenu2 = () => {
771
776
) ;
772
777
} ;
773
778
774
- export function AutocompleteWithExtraButtons ( ) {
779
+ export function AutocompleteWithExtraButtons ( ) : React . ReactElement {
775
780
return (
776
781
< div >
777
782
< input />
@@ -787,7 +792,7 @@ export function AutocompleteWithExtraButtons() {
787
792
// TODO: note that Space is used to select an item in a multiselect menu but that is also reserved for the
788
793
// autocomplete input field. Should we add logic to allow Space to select menu items when focus is in the Menu
789
794
// or is that a rare/unlikely use case for menus in general?
790
- export const AutocompleteMenuInPopoverDialogTrigger = {
795
+ export const AutocompleteMenuInPopoverDialogTrigger : MenuStory = {
791
796
render : ( args ) => {
792
797
return (
793
798
< DialogTrigger >
@@ -831,7 +836,7 @@ export const AutocompleteMenuInPopoverDialogTrigger = {
831
836
832
837
let manyItems = [ ...Array ( 100 ) ] . map ( ( _ , i ) => ( { id : i , name : `Item ${ i } ` } ) ) ;
833
838
834
- export const AutocompleteSelect = ( ) => (
839
+ export const AutocompleteSelect = ( ) : React . ReactElement => (
835
840
< Select style = { { marginBottom : 40 , position : 'relative' } } >
836
841
< Label style = { { display : 'block' } } > Test</ Label >
837
842
< Button >
0 commit comments