@@ -27,7 +27,7 @@ export default function getSelectedIndex(config) {
2727 multiple,
2828 search,
2929 } )
30- const enabledIndicies = _ . reduce (
30+ const enabledIndexes = _ . reduce (
3131 menuOptions ,
3232 ( memo , item , index ) => {
3333 if ( ! item . disabled ) memo . push ( index )
@@ -40,30 +40,32 @@ export default function getSelectedIndex(config) {
4040
4141 // update the selected index
4242 if ( ! selectedIndex || selectedIndex < 0 ) {
43- const firstIndex = enabledIndicies [ 0 ]
43+ const firstIndex = enabledIndexes [ 0 ]
4444
4545 // Select the currently active item, if none, use the first item.
4646 // Multiple selects remove active items from the list,
4747 // their initial selected index should be 0.
4848 newSelectedIndex = multiple
4949 ? firstIndex
50- : _ . findIndex ( menuOptions , [ 'value' , value ] ) || enabledIndicies [ 0 ]
50+ : _ . findIndex ( menuOptions , [ 'value' , value ] ) || enabledIndexes [ 0 ]
5151 } else if ( multiple ) {
52+ newSelectedIndex = _ . find ( enabledIndexes , ( index ) => index >= selectedIndex )
53+
5254 // multiple selects remove options from the menu as they are made active
5355 // keep the selected index within range of the remaining items
5456 if ( selectedIndex >= menuOptions . length - 1 ) {
55- newSelectedIndex = enabledIndicies [ enabledIndicies . length - 1 ]
57+ newSelectedIndex = enabledIndexes [ enabledIndexes . length - 1 ]
5658 }
5759 } else {
5860 const activeIndex = _ . findIndex ( menuOptions , [ 'value' , value ] )
5961
6062 // regular selects can only have one active item
6163 // set the selected index to the currently active item
62- newSelectedIndex = _ . includes ( enabledIndicies , activeIndex ) ? activeIndex : undefined
64+ newSelectedIndex = _ . includes ( enabledIndexes , activeIndex ) ? activeIndex : undefined
6365 }
6466
6567 if ( ! newSelectedIndex || newSelectedIndex < 0 ) {
66- newSelectedIndex = enabledIndicies [ 0 ]
68+ newSelectedIndex = enabledIndexes [ 0 ]
6769 }
6870
6971 return newSelectedIndex
0 commit comments