UNPKG

ra-core

Version:

Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React

93 lines 4.09 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.queryReducer = exports.HIDE_FILTER = exports.SHOW_FILTER = exports.SET_FILTER = exports.SET_PER_PAGE = exports.SET_PAGE = exports.SORT_DESC = exports.SORT_ASC = exports.SET_SORT = void 0; const set_js_1 = __importDefault(require("lodash/set.js")); const removeEmpty_1 = __importDefault(require("../../util/removeEmpty.cjs")); const removeKey_1 = __importDefault(require("../../util/removeKey.cjs")); exports.SET_SORT = 'SET_SORT'; exports.SORT_ASC = 'ASC'; exports.SORT_DESC = 'DESC'; exports.SET_PAGE = 'SET_PAGE'; exports.SET_PER_PAGE = 'SET_PER_PAGE'; exports.SET_FILTER = 'SET_FILTER'; exports.SHOW_FILTER = 'SHOW_FILTER'; exports.HIDE_FILTER = 'HIDE_FILTER'; const oppositeOrder = direction => direction === exports.SORT_DESC ? exports.SORT_ASC : exports.SORT_DESC; /** * This reducer is for the react-router query string. */ const queryReducer = (previousState, action) => { switch (action.type) { case exports.SET_SORT: if (action.payload.field === previousState.sort) { return { ...previousState, order: action.payload.order ?? oppositeOrder(previousState.order), page: 1, }; } return { ...previousState, sort: action.payload.field, order: action.payload.order || exports.SORT_ASC, page: 1, }; case exports.SET_PAGE: return { ...previousState, page: action.payload }; case exports.SET_PER_PAGE: return { ...previousState, page: 1, perPage: action.payload }; case exports.SET_FILTER: { return { ...previousState, page: 1, filter: action.payload.filter, displayedFilters: action.payload.displayedFilters ? action.payload.displayedFilters : previousState.displayedFilters, }; } case exports.SHOW_FILTER: { if (previousState.displayedFilters && previousState.displayedFilters[action.payload.filterName]) { // the filter is already shown return previousState; } return { ...previousState, filter: typeof action.payload.defaultValue !== 'undefined' ? (0, set_js_1.default)(previousState.filter, action.payload.filterName, action.payload.defaultValue) : previousState.filter, // we don't use lodash.set() for displayed filters // to avoid problems with compound filter names (e.g. 'author.name') displayedFilters: { ...previousState.displayedFilters, [action.payload.filterName]: true, }, }; } case exports.HIDE_FILTER: { return { ...previousState, filter: (0, removeEmpty_1.default)((0, removeKey_1.default)(previousState.filter, action.payload)), // we don't use lodash.set() for displayed filters // to avoid problems with compound filter names (e.g. 'author.name') displayedFilters: previousState.displayedFilters ? Object.keys(previousState.displayedFilters).reduce((filters, filter) => { return filter !== action.payload ? { ...filters, [filter]: true } : filters; }, {}) : previousState.displayedFilters, }; } default: return previousState; } }; exports.queryReducer = queryReducer; exports.default = exports.queryReducer; //# sourceMappingURL=queryReducer.js.map