1
1
import React , { useState } from 'react'
2
- import type { ReactListProps } from './list'
2
+ import type { ReactListProps , ListEventType } from './list'
3
3
import ConditionalWrapper from '../ConditionalWrapper/ConditionalWrapper.tsx'
4
4
import Input from '../Input/Input.tsx'
5
5
@@ -21,6 +21,7 @@ const List = ({
21
21
} : ReactListProps ) => {
22
22
const [ searchValue , setSearchValue ] = useState ( '' )
23
23
const [ numberOfResults , setNumberOfResults ] = useState ( 1 )
24
+ const [ itemGroupsWithActive , setItemGroups ] = useState ( itemGroups )
24
25
25
26
const classes = classNames ( [
26
27
styles . list ,
@@ -37,7 +38,7 @@ const List = ({
37
38
? { maxHeight } as React . CSSProperties
38
39
: undefined
39
40
40
- const search = ( event : KeyboardEvent ) => {
41
+ const search = ( event : React . FormEvent < HTMLInputElement > ) => {
41
42
const value = ( event . target as HTMLInputElement ) . value
42
43
43
44
setSearchValue ( value )
@@ -58,20 +59,29 @@ const List = ({
58
59
const select = ( event : any ) => {
59
60
const li = event . target as HTMLLIElement
60
61
61
- itemGroups = itemGroups . map ( group => {
62
- group . items = group . items . map ( item => {
63
- item . selected = li . dataset . name === item . name
64
-
65
- return item
62
+ setItemGroups (
63
+ itemGroupsWithActive . map ( group => {
64
+ return {
65
+ ...group ,
66
+ items : group . items . map ( item => {
67
+ return {
68
+ ...item ,
69
+ selected : li . dataset . name === item . name
70
+ }
71
+ } )
72
+ }
66
73
} )
74
+ )
67
75
68
- return group
76
+ console . log ( {
77
+ ...li . dataset ,
78
+ list : li . parentElement
69
79
} )
70
80
71
81
onSelect ?.( {
72
82
...li . dataset ,
73
83
list : li . parentElement
74
- } )
84
+ } as ListEventType )
75
85
}
76
86
77
87
const selectByKey = ( event : any ) => {
@@ -98,8 +108,8 @@ const List = ({
98
108
{ children }
99
109
</ div >
100
110
) } >
101
- < ul className = { classes } id = { id } data-id = "w-list" style = { style } >
102
- { itemGroups . map ( ( group : ReactListProps [ 'itemGroups' ] [ 0 ] , index ) => (
111
+ < ul className = { classes } id = { id } style = { style } >
112
+ { itemGroupsWithActive . map ( ( group : ReactListProps [ 'itemGroups' ] [ 0 ] , index ) => (
103
113
< React . Fragment key = { index } >
104
114
{ group . title && (
105
115
< li className = { styles . title }
@@ -136,7 +146,12 @@ const List = ({
136
146
< ConditionalWrapper condition = { ! ! ( item . icon && item . subText ) } wrapper = { children => (
137
147
< div > { children } </ div >
138
148
) } >
139
- { item . icon && < span dangerouslySetInnerHTML = { { __html : item . icon } } /> }
149
+ { item . icon && (
150
+ < span
151
+ dangerouslySetInnerHTML = { { __html : item . icon } }
152
+ style = { { height : '18px' } }
153
+ />
154
+ ) }
140
155
{ item . name }
141
156
</ ConditionalWrapper >
142
157
{ item . subText && < span > { item . subText } </ span > }
0 commit comments