88 useMultipleSelection ,
99 UseMultipleSelectionReturnValue
1010} from "downshift" ;
11- import { useCallback , useMemo } from "react" ;
11+ import { RefObject , useCallback , useMemo } from "react" ;
1212import { A11yStatusMessage , MultiSelector } from "../helpers/types" ;
1313
1414export type UseDownshiftMultiSelectPropsReturnValue = UseMultipleSelectionReturnValue < string > &
@@ -36,6 +36,7 @@ interface Options {
3636export function useDownshiftMultiSelectProps (
3737 selector : MultiSelector ,
3838 options : Options ,
39+ inputRef : RefObject < HTMLInputElement | null > ,
3940 a11yStatusMessage : A11yStatusMessage
4041) : UseDownshiftMultiSelectPropsReturnValue {
4142 const {
@@ -57,14 +58,24 @@ export function useDownshiftMultiSelectProps(
5758 selector . setValue ( selectedItems ?? [ ] ) ;
5859 } ,
5960
60- onStateChange ( { selectedItems : newSelectedItems , type } ) {
61+ onStateChange ( { selectedItems : newSelectedItems , type, activeIndex : newActiveIndex } ) {
6162 switch ( type ) {
6263 case useMultipleSelection . stateChangeTypes . SelectedItemKeyDownBackspace :
6364 case useMultipleSelection . stateChangeTypes . SelectedItemKeyDownDelete :
65+ if ( newActiveIndex === - 1 ) {
66+ inputRef . current ?. focus ( ) ;
67+ }
68+ setSelectedItems ( newSelectedItems ! ) ;
69+ break ;
6470 case useMultipleSelection . stateChangeTypes . DropdownKeyDownBackspace :
6571 case useMultipleSelection . stateChangeTypes . FunctionRemoveSelectedItem :
6672 setSelectedItems ( newSelectedItems ! ) ;
6773 break ;
74+ case useMultipleSelection . stateChangeTypes . SelectedItemKeyDownNavigationNext :
75+ if ( newActiveIndex === - 1 ) {
76+ inputRef . current ?. focus ( ) ;
77+ }
78+ break ;
6879 default :
6980 break ;
7081 }
0 commit comments