Skip to content

Commit 95ab0b4

Browse files
author
Tom Hutman
committed
ensure dropdownScroll callback is called on up/down key press
1 parent 02e9bba commit 95ab0b4

File tree

1 file changed

+12
-7
lines changed
  • src/components/AutoCompleteTextarea

1 file changed

+12
-7
lines changed

src/components/AutoCompleteTextarea/List.js

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)