UNPKG

@helpscout/hsds-react

Version:

React component library for Help Scout's Design System

85 lines (68 loc) 2.48 kB
"use strict"; 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; } }