lucid-ui
Version:
A UI component library from AppNexus.
58 lines (57 loc) • 1.4 kB
JavaScript
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,
};
}