@helpscout/hsds-react
Version:
React component library for Help Scout's Design System
85 lines (68 loc) • 2.48 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = reducer;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _Table = require("./Table.utils");
var _Table2 = require("./Table.actionTypes");
function reducer(state, _ref) {
var type = _ref.type,
payload = _ref.payload,
_ref$opts = _ref.opts,
opts = _ref$opts === void 0 ? {} : _ref$opts;
switch (type) {
case _Table2.UPDATE_TABLE_DATA:
return (0, _extends2.default)({}, state, {
currentTableData: (0, _Table.getDisplayTableData)(payload)
});
case _Table2.EXPAND_TABLE:
case _Table2.COLLAPSE_TABLE:
return (0, _extends2.default)({}, state, {
currentTableData: (0, _Table.getDisplayTableData)(payload)
});
case _Table2.SELECT_ALL_ROWS:
var allRows = payload.data.map(function (d) {
return d[payload.selectionKey];
});
opts.sideEffect && opts.sideEffect(allRows);
return (0, _extends2.default)({}, state, {
selectedRows: allRows
});
case _Table2.DESELECT_ALL_ROWS:
var noRows = [];
opts.sideEffect && opts.sideEffect(noRows);
return (0, _extends2.default)({}, state, {
selectedRows: noRows
});
case _Table2.SELECT_ROW:
var addedToSelection = state.selectedRows.concat(payload.value);
opts.sideEffect && opts.sideEffect(addedToSelection);
return (0, _extends2.default)({}, state, {
selectedRows: addedToSelection
});
case _Table2.DESELECT_ROW:
var removedFromSelection = state.selectedRows.filter(function (row) {
return row !== payload.value;
});
opts.sideEffect && opts.sideEffect(removedFromSelection);
return (0, _extends2.default)({}, state, {
selectedRows: removedFromSelection
});
case _Table2.UPDATE_COLUMNS:
return (0, _extends2.default)({}, state, {
columns: payload.columns.map(function (column) {
var newColumn = (0, _extends2.default)({}, column);
if (newColumn.title === payload.clickedColumn.label) {
newColumn.show = !payload.clickedColumn.remove;
}
return newColumn;
})
});
case _Table2.RESET_COLUMNS:
return (0, _extends2.default)({}, state, {
columns: payload.columns
});
default:
return state;
}
}
;