Skip to content
This repository was archived by the owner on Jun 28, 2026. It is now read-only.

Commit 91c419c

Browse files
authored
fix: enable arrow key navigation when filter input is focused (#8012)
* fix: enable arrow key navigation when filter input is focused * refactor: remove unused code
1 parent bbb0673 commit 91c419c

3 files changed

Lines changed: 63 additions & 0 deletions

File tree

components/lib/multiselect/MultiSelect.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,66 @@ export const MultiSelect = React.memo(
382382
setClicked(false);
383383
};
384384

385+
const onFilterKeyDown = (event) => {
386+
switch (event.code) {
387+
case 'ArrowUp':
388+
if (props.inline) {
389+
break;
390+
}
391+
392+
onArrowUpKey(event);
393+
break;
394+
395+
case 'ArrowDown':
396+
if (props.inline) {
397+
break;
398+
}
399+
400+
onArrowDownKey(event);
401+
402+
break;
403+
404+
case 'NumpadEnter':
405+
case 'Enter':
406+
if (props.inline) {
407+
break;
408+
}
409+
410+
onEnterKey(event);
411+
break;
412+
413+
case 'Home':
414+
if (props.inline) {
415+
break;
416+
}
417+
418+
onHomeKey(event);
419+
event.preventDefault();
420+
break;
421+
422+
case 'End':
423+
if (props.inline) {
424+
break;
425+
}
426+
427+
onEndKey(event);
428+
event.preventDefault();
429+
break;
430+
431+
case 'Escape':
432+
if (props.inline) {
433+
break;
434+
}
435+
436+
hide();
437+
break;
438+
439+
case 'Tab':
440+
onTabKey(event);
441+
break;
442+
}
443+
};
444+
385445
const onSelectAll = (event) => {
386446
if (props.onSelectAll) {
387447
props.onSelectAll(event);
@@ -1169,6 +1229,7 @@ export const MultiSelect = React.memo(
11691229
getOptionValue={getOptionValue}
11701230
updateModel={updateModel}
11711231
onFilterInputChange={onFilterInputChange}
1232+
onFilterKeyDown={onFilterKeyDown}
11721233
resetFilter={resetFilter}
11731234
onCloseClick={onCloseClick}
11741235
onSelectAll={onSelectAll}

components/lib/multiselect/MultiSelectHeader.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ export const MultiSelectHeader = React.memo((props) => {
7373
role="searchbox"
7474
value={props.filterValue}
7575
onChange={onFilter}
76+
onKeyDown={props.onFilterKeyDown}
7677
className="p-multiselect-filter"
7778
placeholder={props.filterPlaceholder}
7879
pt={ptm('filterInput')}

components/lib/multiselect/MultiSelectPanel.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ export const MultiSelectPanel = React.memo(
6969
getOptionValue={props.getOptionValue}
7070
updateModel={props.updateModel}
7171
onFilter={onFilterInputChange}
72+
onFilterKeyDown={props.onFilterKeyDown}
7273
filterPlaceholder={props.filterPlaceholder}
7374
onClose={props.onCloseClick}
7475
showSelectAll={props.showSelectAll}

0 commit comments

Comments
 (0)