UNPKG

@helpscout/hsds-react

Version:

React component library for Help Scout's Design System

142 lines (111 loc) 3.58 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = exports.initialItemState = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _Dropdown = _interopRequireDefault(require("./Dropdown.actionTypes")); var _Dropdown2 = require("./Dropdown.store"); var _lodash = _interopRequireDefault(require("lodash.isfunction")); // Deprecated /* istanbul ignore file */ var initialItemState = { index: null, previousIndex: null }; exports.initialItemState = initialItemState; var reducer = function reducer(state, action) { if (state === void 0) { state = _Dropdown2.initialState; } if (action === void 0) { action = {}; } var nextState; var _action = action, payload = _action.payload; switch (action.type) { // Interactions case _Dropdown.default.CHANGE_DIRECTION: nextState = { direction: state.direction === 'right' ? 'left' : 'right' }; break; case _Dropdown.default.OPEN_DROPDOWN: nextState = (0, _extends2.default)({}, initialItemState, { isOpen: true }, payload); break; case _Dropdown.default.CLOSE_DROPDOWN: nextState = (0, _extends2.default)({}, initialItemState, { isOpen: false }); break; case _Dropdown.default.MENU_MOUNT: nextState = { isMounted: true }; break; case _Dropdown.default.MENU_UNMOUNT: nextState = { isMounted: false }; break; case _Dropdown.default.FOCUS_ITEM: nextState = (0, _extends2.default)({}, payload, { previousIndex: state.index }); break; case _Dropdown.default.SELECT_ITEM: nextState = (0, _extends2.default)({}, payload, { isOpen: state.closeOnSelect ? false : state.isOpen, previousSelectedItem: state.selectedItem }); break; case _Dropdown.default.UPDATE_SELECTED_ITEM: nextState = (0, _extends2.default)({}, state, { previousSelectedItem: state.selectedItem, selectedItem: payload.selectedItem }); break; case _Dropdown.default.CLEAR_SELECTION: nextState = (0, _extends2.default)({}, payload, { previousSelectedItem: state.selectedItem, isOpen: state.closeOnSelect ? false : state.isOpen }); break; // Node references case _Dropdown.default.SET_MENU_NODE: nextState = (0, _extends2.default)({}, payload); break; case _Dropdown.default.SET_TRIGGER_NODE: nextState = (0, _extends2.default)({}, payload); break; // Data case _Dropdown.default.UPDATE_ITEMS: nextState = (0, _extends2.default)({}, payload); break; case _Dropdown.default.UPDATE_INPUT_VALUE: nextState = (0, _extends2.default)({}, payload); break; case _Dropdown.default.UPDATE_INDEX: nextState = (0, _extends2.default)({}, payload); break; case _Dropdown.default.UPDATE_OPEN: nextState = (0, _extends2.default)({}, payload); break; case _Dropdown.default.UPDATE_DROPUP: nextState = (0, _extends2.default)({}, payload); break; // This prevents eslint errors default: break; } var nextReducedState = (0, _extends2.default)({}, state, nextState); if ((0, _lodash.default)(state.stateReducer)) { return state.stateReducer(nextReducedState, action); } else { return nextReducedState; } }; var _default = reducer; exports.default = _default;