@@ -24,7 +24,7 @@ const List = (props) => {
2424
2525 const [ selectedItem , setSelectedItem ] = useState ( undefined ) ;
2626
27- const itemsRef = { } ;
27+ const itemsRef = [ ] ;
2828
2929 const isSelected = ( item ) => selectedItem === values . indexOf ( item ) ;
3030
@@ -53,24 +53,29 @@ const List = (props) => {
5353 modifyText ( values [ selectedItem ] ) ;
5454 } ;
5555
56- const selectItem = ( item , keyboard = false ) => {
56+ const selectItem = ( item ) => {
5757 setSelectedItem ( values . indexOf ( item ) ) ;
58- if ( keyboard ) dropdownScroll ( itemsRef [ getId ( item ) ] ) ;
5958 } ;
6059
6160 const handleKeyDown = useCallback (
6261 ( event ) => {
6362 if ( event . which === KEY_CODES . UP ) {
6463 setSelectedItem ( ( prevSelected ) => {
6564 if ( prevSelected === undefined ) return 0 ;
66- return prevSelected === 0 ? values . length - 1 : prevSelected - 1 ;
65+ const newID =
66+ prevSelected === 0 ? values . length - 1 : prevSelected - 1 ;
67+ dropdownScroll ( itemsRef [ newID ] ) ;
68+ return newID ;
6769 } ) ;
6870 }
6971
7072 if ( event . which === KEY_CODES . DOWN ) {
7173 setSelectedItem ( ( prevSelected ) => {
7274 if ( prevSelected === undefined ) return 0 ;
73- return prevSelected === values . length - 1 ? 0 : prevSelected + 1 ;
75+ const newID =
76+ prevSelected === values . length - 1 ? 0 : prevSelected + 1 ;
77+ dropdownScroll ( itemsRef [ newID ] ) ;
78+ return newID ;
7479 } ) ;
7580 }
7681
@@ -123,7 +128,7 @@ const List = (props) => {
123128 __html : renderHeader ( propValue ) ,
124129 } }
125130 />
126- { values . map ( ( item ) => (
131+ { values . map ( ( item , i ) => (
127132 < Item
128133 className = { itemClassName }
129134 component = { component }
@@ -132,7 +137,7 @@ const List = (props) => {
132137 onClickHandler = { handleClick }
133138 onSelectHandler = { selectItem }
134139 ref = { ( ref ) => {
135- itemsRef [ getId ( item ) ] = ref ;
140+ itemsRef [ i ] = ref ;
136141 } }
137142 selected = { isSelected ( item ) }
138143 style = { itemStyle }
0 commit comments