UNPKG

cspace-ui

Version:
72 lines (69 loc) 2.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = SearchResultFooter; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _reactRedux = require("react-redux"); var _reactRouterDom = require("react-router-dom"); var _Pager = _interopRequireDefault(require("./Pager")); var _ConfigProvider = require("../config/ConfigProvider"); var _searchNames = require("../../constants/searchNames"); var _reducers = require("../../reducers"); var _prefs = require("../../actions/prefs"); var _searchHelpers = require("../../helpers/searchHelpers"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const propTypes = { searchDescriptor: _propTypes.default.object }; /** * A wrapper around a Pager to query for search results and populate the pagination info * @returns A <Pager /> wrapped in a <footer /> */ function SearchResultFooter({ searchDescriptor }) { const results = (0, _reactRedux.useSelector)(state => (0, _reducers.getSearchResult)(state, _searchNames.SEARCH_RESULT_PAGE_SEARCH_NAME, searchDescriptor)); const config = (0, _ConfigProvider.useConfig)(); const dispatch = (0, _reactRedux.useDispatch)(); const history = (0, _reactRouterDom.useHistory)(); const location = (0, _reactRouterDom.useLocation)(); if (!results) { return /*#__PURE__*/_react.default.createElement("footer", null); } const onPageChange = (0, _searchHelpers.createPageChangeHandler)({ history, location, zeroIndexed: true }); const onPageSizeChange = (0, _searchHelpers.createPageSizeChangeHandler)({ history, location, dispatch, setPreferredPageSize: _prefs.setSearchResultPagePageSize }); const listType = (0, _searchHelpers.getListTypeFromResult)(config, results); const listTypeConfig = config.listTypes[listType]; const { listNodeName } = listTypeConfig; const list = results.get(listNodeName); // useful to have a helper function for this? const totalItems = parseInt(list.get('totalItems'), 10); const pageNum = parseInt(list.get('pageNum'), 10); const pageSize = parseInt(list.get('pageSize'), 10); const lastPage = Math.max(0, Number.isNaN(totalItems) ? 0 : Math.ceil(totalItems / pageSize) - 1); return /*#__PURE__*/_react.default.createElement("footer", null, /*#__PURE__*/_react.default.createElement(_Pager.default, { currentPage: pageNum, lastPage: lastPage, pageSize: pageSize // eslint-disable-next-line react/jsx-no-bind , onPageChange: onPageChange // eslint-disable-next-line react/jsx-no-bind , onPageSizeChange: onPageSizeChange })); } SearchResultFooter.propTypes = propTypes;