@szhsin/react-autocomplete
Advanced tools
Comparing version 0.8.3 to 0.8.4
@@ -248,6 +248,7 @@ 'use strict'; | ||
const baseIndex = traverseInput ? -1 : 0; | ||
let nextIndex = instance.a; | ||
let nextItem; | ||
let newItem, | ||
nextIndex = instance.a, | ||
itemCounter = 0; | ||
const itemLength = items.length; | ||
do { | ||
for (;;) { | ||
if (isForward) { | ||
@@ -258,8 +259,9 @@ if (++nextIndex >= itemLength) nextIndex = baseIndex; | ||
} | ||
nextItem = items[nextIndex]; | ||
if (!nextItem || !isItemDisabled(nextItem)) break; | ||
} while (nextIndex !== instance.a); | ||
newItem = items[nextIndex]; | ||
if (!newItem || !isItemDisabled(newItem)) break; | ||
if (++itemCounter >= itemLength) return focusItem; | ||
} | ||
instance.a = nextIndex; | ||
setFocusItem(nextItem); | ||
return nextItem; | ||
setFocusItem(newItem); | ||
return newItem; | ||
} | ||
@@ -269,5 +271,24 @@ }; | ||
const isArray = Array.isArray; | ||
const groupedTraversal = ({ | ||
groupedItems, | ||
getItemsInGroup, | ||
...restProps | ||
}) => { | ||
const groups = isArray(groupedItems) ? groupedItems : groupedItems ? Object.values(groupedItems) : []; | ||
const items = []; | ||
groups.forEach(group => { | ||
const itemsInGroup = isArray(group) ? group : getItemsInGroup ? getItemsInGroup(group) : []; | ||
items.push(...itemsInGroup); | ||
}); | ||
return linearTraversal({ | ||
...restProps, | ||
items | ||
}); | ||
}; | ||
exports.autocomplete = autocomplete; | ||
exports.groupedTraversal = groupedTraversal; | ||
exports.linearTraversal = linearTraversal; | ||
exports.supercomplete = supercomplete; | ||
exports.useAutocomplete = useAutocomplete; |
@@ -5,1 +5,2 @@ export { useAutocomplete } from './hooks/useAutocomplete.js'; | ||
export { linearTraversal } from './traversals/linearTraversal.js'; | ||
export { groupedTraversal } from './traversals/groupedTraversal.js'; |
@@ -18,6 +18,7 @@ import { useState } from 'react'; | ||
const baseIndex = traverseInput ? -1 : 0; | ||
let nextIndex = instance.a; | ||
let nextItem; | ||
let newItem, | ||
nextIndex = instance.a, | ||
itemCounter = 0; | ||
const itemLength = items.length; | ||
do { | ||
for (;;) { | ||
if (isForward) { | ||
@@ -28,8 +29,9 @@ if (++nextIndex >= itemLength) nextIndex = baseIndex; | ||
} | ||
nextItem = items[nextIndex]; | ||
if (!nextItem || !isItemDisabled(nextItem)) break; | ||
} while (nextIndex !== instance.a); | ||
newItem = items[nextIndex]; | ||
if (!newItem || !isItemDisabled(newItem)) break; | ||
if (++itemCounter >= itemLength) return focusItem; | ||
} | ||
instance.a = nextIndex; | ||
setFocusItem(nextItem); | ||
return nextItem; | ||
setFocusItem(newItem); | ||
return newItem; | ||
} | ||
@@ -36,0 +38,0 @@ }; |
{ | ||
"name": "@szhsin/react-autocomplete", | ||
"version": "0.8.3", | ||
"version": "0.8.4", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "author": "Zheng Song", |
@@ -5,2 +5,3 @@ export { useAutocomplete } from './hooks/useAutocomplete'; | ||
export { linearTraversal } from './traversals/linearTraversal'; | ||
export { groupedTraversal } from './traversals/groupedTraversal'; | ||
export type { AutocompleteProps, AutocompleteState, Feature } from './common'; |
22603
18
688