@helpscout/hsds-react
Version:
React component library for Help Scout's Design System
142 lines (111 loc) • 3.58 kB
JavaScript
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;
;