@@ -3,10 +3,14 @@ import useSelectList from '~/helpers/use-select-list';
3
3
import cn from 'classnames' ;
4
4
import './form-elements.scss' ;
5
5
6
- function Option ( { text, active, onClick} : {
6
+ function Option ( {
7
+ text,
8
+ active,
9
+ onClick
10
+ } : {
7
11
text : string ;
8
12
active : boolean ;
9
- onClick ?: React . MouseEventHandler < HTMLDivElement >
13
+ onClick ?: React . MouseEventHandler < HTMLDivElement > ;
10
14
} ) {
11
15
const ref = React . useRef < HTMLDivElement > ( null ) ;
12
16
@@ -17,12 +21,7 @@ function Option({text, active, onClick}: {
17
21
} , [ active ] ) ;
18
22
19
23
return (
20
- < div
21
- className = { cn ( { active} ) }
22
- role = "option"
23
- onClick = { onClick }
24
- ref = { ref }
25
- >
24
+ < div className = { cn ( { active} ) } role = "option" onClick = { onClick } ref = { ref } >
26
25
{ text }
27
26
</ div >
28
27
) ;
@@ -31,29 +30,37 @@ function Option({text, active, onClick}: {
31
30
type OptionType = {
32
31
label : string ;
33
32
value : string ;
34
- }
33
+ } ;
35
34
36
- function SuggestionList ( { options, activeIndex, accept} : {
35
+ function SuggestionList ( {
36
+ options,
37
+ activeIndex,
38
+ accept
39
+ } : {
37
40
options : OptionType [ ] ;
38
41
accept : ( o : OptionType ) => void ;
39
42
activeIndex : number ;
40
43
} ) {
41
44
return (
42
45
< div className = "suggestion-list" role = "listbox" >
43
- {
44
- options . map ( ( opt , i ) =>
45
- < Option
46
- key = { opt . value } active = { activeIndex === i }
47
- onClick = { ( ) => accept ( opt ) }
48
- text = { opt . label }
49
- />
50
- )
51
- }
46
+ { options . map ( ( opt , i ) => (
47
+ < Option
48
+ key = { opt . value }
49
+ active = { activeIndex === i }
50
+ onClick = { ( ) => accept ( opt ) }
51
+ text = { opt . label }
52
+ />
53
+ ) ) }
52
54
</ div >
53
55
) ;
54
56
}
55
57
56
- export function FilteringSelect ( { options, inputProps, accept, accepted} : {
58
+ export function FilteringSelect ( {
59
+ options,
60
+ inputProps,
61
+ accept,
62
+ accepted
63
+ } : {
57
64
options : OptionType [ ] ;
58
65
inputProps : JSX . IntrinsicAttributes ;
59
66
accept : ( o : unknown ) => void ;
@@ -85,10 +92,13 @@ export function FilteringSelect({options, inputProps, accept, accepted}: {
85
92
return (
86
93
< div className = "input-with-suggestions" >
87
94
< input type = "text" { ...inputProps } onKeyDown = { wrappedKeyDown } />
88
- {
89
- ! accepted &&
90
- < SuggestionList options = { options } activeIndex = { activeIndex } accept = { accept } />
91
- }
95
+ { ! accepted && (
96
+ < SuggestionList
97
+ options = { options }
98
+ activeIndex = { activeIndex }
99
+ accept = { accept }
100
+ />
101
+ ) }
92
102
</ div >
93
103
) ;
94
104
}
0 commit comments