32 lines
874 B
JavaScript
32 lines
874 B
JavaScript
import { listReducer, ListActionTypes, moveHighlight } from '../useList';
|
|
import { TabsListActionTypes } from './useTabsList.types';
|
|
export function tabsListReducer(state, action) {
|
|
if (action.type === TabsListActionTypes.valueChange) {
|
|
return {
|
|
...state,
|
|
highlightedValue: action.value
|
|
};
|
|
}
|
|
const newState = listReducer(state, action);
|
|
const {
|
|
context: {
|
|
selectionFollowsFocus
|
|
}
|
|
} = action;
|
|
if (action.type === ListActionTypes.itemsChange) {
|
|
if (newState.selectedValues.length > 0) {
|
|
return {
|
|
...newState,
|
|
highlightedValue: newState.selectedValues[0]
|
|
};
|
|
}
|
|
moveHighlight(null, 'reset', action.context);
|
|
}
|
|
if (selectionFollowsFocus && newState.highlightedValue != null) {
|
|
return {
|
|
...newState,
|
|
selectedValues: [newState.highlightedValue]
|
|
};
|
|
}
|
|
return newState;
|
|
} |