UNPKG

lucid-ui

Version:

A UI component library from AppNexus.

58 lines (57 loc) 1.4 kB
import _ from 'lodash'; export function onExpand(state) { const { selectedIndices } = state; const focusedIndex = _.last(selectedIndices); return { ...state, isExpanded: true, focusedIndex: _.isNil(focusedIndex) ? null : focusedIndex, }; } export function onCollapse(state) { return { ...state, isExpanded: false, }; } export function onSelect(state, optionIndex) { return { ...state, selectedIndices: [optionIndex], isExpanded: false, }; } export function onFocusNext(state) { const { focusedIndex } = state; let nextFocusedIndex = focusedIndex; if (_.isNull(focusedIndex)) { nextFocusedIndex = 0; } else if (_.isNumber(focusedIndex)) { nextFocusedIndex = focusedIndex + 1; } return { ...state, focusedIndex: nextFocusedIndex, }; } export function onFocusPrev(state) { const { focusedIndex } = state; let nextFocusedIndex = focusedIndex; if (_.isNull(focusedIndex) || focusedIndex === 0) { nextFocusedIndex = null; } else if (_.isNumber(focusedIndex)) { nextFocusedIndex = focusedIndex - 1; } return { ...state, focusedIndex: nextFocusedIndex, }; } export function onFocusOption(state, optionIndex) { return { ...state, focusedIndex: optionIndex, }; }