monday-ui-react-core
Version:
Official monday.com UI resources for application development in React.js
32 lines (30 loc) • 968 B
text/typescript
type ActiveDependentHelper = {
isItemSelectable: (index: number) => boolean;
visualFocusItemIndex: number;
itemsCount: number;
};
export function getNextSelectableIndex({ isItemSelectable, visualFocusItemIndex, itemsCount }: ActiveDependentHelper) {
if (visualFocusItemIndex > itemsCount - 1) return;
// Go over all the next items until found one which is selectable
for (let offset = 1; offset <= itemsCount; offset++) {
const nextIndex = (visualFocusItemIndex + offset) % itemsCount;
if (isItemSelectable(nextIndex)) {
return nextIndex;
}
}
}
export function getPreviousSelectableIndex({
isItemSelectable,
visualFocusItemIndex,
itemsCount
}: ActiveDependentHelper) {
for (let offset = 1; offset <= itemsCount - 1; offset++) {
let prevIndex = visualFocusItemIndex - offset;
if (prevIndex < 0) {
prevIndex = itemsCount + prevIndex;
}
if (isItemSelectable(prevIndex)) {
return prevIndex;
}
}
}