UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

156 lines (155 loc) • 13.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); const _qs = /*#__PURE__*/ _interop_require_default(require("qs")); const _react = /*#__PURE__*/ _interop_require_wildcard(require("react")); const _reacti18next = require("react-i18next"); const _reactrouterdom = require("react-router-dom"); const _types = require("../../../../fields/config/types"); const _sortableFieldTypes = /*#__PURE__*/ _interop_require_default(require("../../../../fields/sortableFieldTypes")); const _getTranslation = require("../../../../utilities/getTranslation"); const _SearchParams = require("../../utilities/SearchParams"); const _ReactSelect = /*#__PURE__*/ _interop_require_default(require("../ReactSelect")); require("./index.scss"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interop_require_wildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = { __proto__: null }; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for(var key in obj){ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } const baseClass = 'sort-complex'; const SortComplex = (props)=>{ const { collection, handleChange, modifySearchQuery = true } = props; const history = (0, _reactrouterdom.useHistory)(); const params = (0, _SearchParams.useSearchParams)(); const { i18n, t } = (0, _reacti18next.useTranslation)('general'); const [sortOptions, setSortOptions] = (0, _react.useState)(); const [sortFields] = (0, _react.useState)(()=>collection.fields.reduce((fields, field)=>{ if ((0, _types.fieldAffectsData)(field) && _sortableFieldTypes.default.indexOf(field.type) > -1) { return [ ...fields, { label: (0, _getTranslation.getTranslation)(field.label || field.name, i18n), value: field.name } ]; } return fields; }, [])); const [sortField, setSortField] = (0, _react.useState)(sortFields[0]); const [initialSort] = (0, _react.useState)(()=>({ label: t('descending'), value: '-' })); const [sortOrder, setSortOrder] = (0, _react.useState)(initialSort); (0, _react.useEffect)(()=>{ if (sortField?.value) { const newSortValue = `${sortOrder.value}${sortField.value}`; if (handleChange) handleChange(newSortValue); if (params.sort !== newSortValue && modifySearchQuery) { history.replace({ search: _qs.default.stringify({ ...params, sort: newSortValue }, { addQueryPrefix: true }) }); } } }, [ history, params, sortField, sortOrder, modifySearchQuery, handleChange ]); (0, _react.useEffect)(()=>{ setSortOptions([ { label: t('ascending'), value: '' }, { label: t('descending'), value: '-' } ]); }, [ i18n, t ]); return /*#__PURE__*/ _react.default.createElement("div", { className: baseClass }, /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement("div", { className: `${baseClass}__wrap` }, /*#__PURE__*/ _react.default.createElement("div", { className: `${baseClass}__select` }, /*#__PURE__*/ _react.default.createElement("div", { className: `${baseClass}__label` }, t('columnToSort')), /*#__PURE__*/ _react.default.createElement(_ReactSelect.default, { onChange: setSortField, options: sortFields, value: sortField })), /*#__PURE__*/ _react.default.createElement("div", { className: `${baseClass}__select` }, /*#__PURE__*/ _react.default.createElement("div", { className: `${baseClass}__label` }, t('order')), /*#__PURE__*/ _react.default.createElement(_ReactSelect.default, { onChange: (incomingSort)=>{ setSortOrder(incomingSort || initialSort); }, options: sortOptions, value: sortOrder }))))); }; const _default = SortComplex; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2VsZW1lbnRzL1NvcnRDb21wbGV4L2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcXVlcnlTdHJpbmcgZnJvbSAncXMnXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlSGlzdG9yeSB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nXG5cbmltcG9ydCB0eXBlIHsgT3B0aW9uT2JqZWN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUHJvcHMgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCBzb3J0YWJsZUZpZWxkVHlwZXMgZnJvbSAnLi4vLi4vLi4vLi4vZmllbGRzL3NvcnRhYmxlRmllbGRUeXBlcydcbmltcG9ydCB7IGdldFRyYW5zbGF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzL2dldFRyYW5zbGF0aW9uJ1xuaW1wb3J0IHsgdXNlU2VhcmNoUGFyYW1zIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL1NlYXJjaFBhcmFtcydcbmltcG9ydCBSZWFjdFNlbGVjdCBmcm9tICcuLi9SZWFjdFNlbGVjdCdcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5jb25zdCBiYXNlQ2xhc3MgPSAnc29ydC1jb21wbGV4J1xuXG5jb25zdCBTb3J0Q29tcGxleDogUmVhY3QuRkM8UHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY29sbGVjdGlvbiwgaGFuZGxlQ2hhbmdlLCBtb2RpZnlTZWFyY2hRdWVyeSA9IHRydWUgfSA9IHByb3BzXG5cbiAgY29uc3QgaGlzdG9yeSA9IHVzZUhpc3RvcnkoKVxuICBjb25zdCBwYXJhbXMgPSB1c2VTZWFyY2hQYXJhbXMoKVxuICBjb25zdCB7IGkxOG4sIHQgfSA9IHVzZVRyYW5zbGF0aW9uKCdnZW5lcmFsJylcbiAgY29uc3QgW3NvcnRPcHRpb25zLCBzZXRTb3J0T3B0aW9uc10gPSB1c2VTdGF0ZTxPcHRpb25PYmplY3RbXT4oKVxuXG4gIGNvbnN0IFtzb3J0RmllbGRzXSA9IHVzZVN0YXRlKCgpID0+XG4gICAgY29sbGVjdGlvbi5maWVsZHMucmVkdWNlKChmaWVsZHMsIGZpZWxkKSA9PiB7XG4gICAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgc29ydGFibGVGaWVsZFR5cGVzLmluZGV4T2YoZmllbGQudHlwZSkgPiAtMSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIC4uLmZpZWxkcyxcbiAgICAgICAgICB7IGxhYmVsOiBnZXRUcmFuc2xhdGlvbihmaWVsZC5sYWJlbCB8fCBmaWVsZC5uYW1lLCBpMThuKSwgdmFsdWU6IGZpZWxkLm5hbWUgfSxcbiAgICAgICAgXVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZpZWxkc1xuICAgIH0sIFtdKSxcbiAgKVxuXG4gIGNvbnN0IFtzb3J0RmllbGQsIHNldFNvcnRGaWVsZF0gPSB1c2VTdGF0ZShzb3J0RmllbGRzWzBdKVxuICBjb25zdCBbaW5pdGlhbFNvcnRdID0gdXNlU3RhdGUoKCkgPT4gKHsgbGFiZWw6IHQoJ2Rlc2NlbmRpbmcnKSwgdmFsdWU6ICctJyB9KSlcbiAgY29uc3QgW3NvcnRPcmRlciwgc2V0U29ydE9yZGVyXSA9IHVzZVN0YXRlKGluaXRpYWxTb3J0KVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNvcnRGaWVsZD8udmFsdWUpIHtcbiAgICAgIGNvbnN0IG5ld1NvcnRWYWx1ZSA9IGAke3NvcnRPcmRlci52YWx1ZX0ke3NvcnRGaWVsZC52YWx1ZX1gXG5cbiAgICAgIGlmIChoYW5kbGVDaGFuZ2UpIGhhbmRsZUNoYW5nZShuZXdTb3J0VmFsdWUpXG5cbiAgICAgIGlmIChwYXJhbXMuc29ydCAhPT0gbmV3U29ydFZhbHVlICYmIG1vZGlmeVNlYXJjaFF1ZXJ5KSB7XG4gICAgICAgIGhpc3RvcnkucmVwbGFjZSh7XG4gICAgICAgICAgc2VhcmNoOiBxdWVyeVN0cmluZy5zdHJpbmdpZnkoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgICAgc29ydDogbmV3U29ydFZhbHVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgYWRkUXVlcnlQcmVmaXg6IHRydWUgfSxcbiAgICAgICAgICApLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2hpc3RvcnksIHBhcmFtcywgc29ydEZpZWxkLCBzb3J0T3JkZXIsIG1vZGlmeVNlYXJjaFF1ZXJ5LCBoYW5kbGVDaGFuZ2VdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U29ydE9wdGlvbnMoW1xuICAgICAgeyBsYWJlbDogdCgnYXNjZW5kaW5nJyksIHZhbHVlOiAnJyB9LFxuICAgICAgeyBsYWJlbDogdCgnZGVzY2VuZGluZycpLCB2YWx1ZTogJy0nIH0sXG4gICAgXSlcbiAgfSwgW2kxOG4sIHRdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2Jhc2VDbGFzc30+XG4gICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X193cmFwYH0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3NlbGVjdGB9PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2xhYmVsYH0+e3QoJ2NvbHVtblRvU29ydCcpfTwvZGl2PlxuICAgICAgICAgICAgPFJlYWN0U2VsZWN0IG9uQ2hhbmdlPXtzZXRTb3J0RmllbGR9IG9wdGlvbnM9e3NvcnRGaWVsZHN9IHZhbHVlPXtzb3J0RmllbGR9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3NlbGVjdGB9PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2xhYmVsYH0+e3QoJ29yZGVyJyl9PC9kaXY+XG4gICAgICAgICAgICA8UmVhY3RTZWxlY3RcbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhpbmNvbWluZ1NvcnQpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRTb3J0T3JkZXIoaW5jb21pbmdTb3J0IHx8IGluaXRpYWxTb3J0KVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvcHRpb25zPXtzb3J0T3B0aW9uc31cbiAgICAgICAgICAgICAgdmFsdWU9e3NvcnRPcmRlcn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBTb3J0Q29tcGxleFxuIl0sIm5hbWVzIjpbImJhc2VDbGFzcyIsIlNvcnRDb21wbGV4IiwicHJvcHMiLCJjb2xsZWN0aW9uIiwiaGFuZGxlQ2hhbmdlIiwibW9kaWZ5U2VhcmNoUXVlcnkiLCJoaXN0b3J5IiwidXNlSGlzdG9yeSIsInBhcmFtcyIsInVzZVNlYXJjaFBhcmFtcyIsImkxOG4iLCJ0IiwidXNlVHJhbnNsYXRpb24iLCJzb3J0T3B0aW9ucyIsInNldFNvcnRPcHRpb25zIiwidXNlU3RhdGUiLCJzb3J0RmllbGRzIiwiZmllbGRzIiwicmVkdWNlIiwiZmllbGQiLCJmaWVsZEFmZmVjdHNEYXRhIiwic29ydGFibGVGaWVsZFR5cGVzIiwiaW5kZXhPZiIsInR5cGUiLCJsYWJlbCIsImdldFRyYW5zbGF0aW9uIiwibmFtZSIsInZhbHVlIiwic29ydEZpZWxkIiwic2V0U29ydEZpZWxkIiwiaW5pdGlhbFNvcnQiLCJzb3J0T3JkZXIiLCJzZXRTb3J0T3JkZXIiLCJ1c2VFZmZlY3QiLCJuZXdTb3J0VmFsdWUiLCJzb3J0IiwicmVwbGFjZSIsInNlYXJjaCIsInF1ZXJ5U3RyaW5nIiwic3RyaW5naWZ5IiwiYWRkUXVlcnlQcmVmaXgiLCJkaXYiLCJjbGFzc05hbWUiLCJSZWFjdCIsIkZyYWdtZW50IiwiUmVhY3RTZWxlY3QiLCJvbkNoYW5nZSIsIm9wdGlvbnMiLCJpbmNvbWluZ1NvcnQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBNEZBOzs7ZUFBQTs7OzJEQTVGd0I7K0RBQ21COzhCQUNaO2dDQUNKO3VCQUtNOzJFQUNGO2dDQUNBOzhCQUNDO29FQUNSO1FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVQLE1BQU1BLFlBQVk7QUFFbEIsTUFBTUMsY0FBK0IsQ0FBQ0M7SUFDcEMsTUFBTSxFQUFFQyxVQUFVLEVBQUVDLFlBQVksRUFBRUMsb0JBQW9CLElBQUksRUFBRSxHQUFHSDtJQUUvRCxNQUFNSSxVQUFVQyxJQUFBQSwwQkFBVTtJQUMxQixNQUFNQyxTQUFTQyxJQUFBQSw2QkFBZTtJQUM5QixNQUFNLEVBQUVDLElBQUksRUFBRUMsQ0FBQyxFQUFFLEdBQUdDLElBQUFBLDRCQUFjLEVBQUM7SUFDbkMsTUFBTSxDQUFDQyxhQUFhQyxlQUFlLEdBQUdDLElBQUFBLGVBQVE7SUFFOUMsTUFBTSxDQUFDQyxXQUFXLEdBQUdELElBQUFBLGVBQVEsRUFBQyxJQUM1QlosV0FBV2MsTUFBTSxDQUFDQyxNQUFNLENBQUMsQ0FBQ0QsUUFBUUU7WUFDaEMsSUFBSUMsSUFBQUEsdUJBQWdCLEVBQUNELFVBQVVFLDJCQUFrQixDQUFDQyxPQUFPLENBQUNILE1BQU1JLElBQUksSUFBSSxDQUFDLEdBQUc7Z0JBQzFFLE9BQU87dUJBQ0ZOO29CQUNIO3dCQUFFTyxPQUFPQyxJQUFBQSw4QkFBYyxFQUFDTixNQUFNSyxLQUFLLElBQUlMLE1BQU1PLElBQUksRUFBRWhCO3dCQUFPaUIsT0FBT1IsTUFBTU8sSUFBSTtvQkFBQztpQkFDN0U7WUFDSDtZQUNBLE9BQU9UO1FBQ1QsR0FBRyxFQUFFO0lBR1AsTUFBTSxDQUFDVyxXQUFXQyxhQUFhLEdBQUdkLElBQUFBLGVBQVEsRUFBQ0MsVUFBVSxDQUFDLEVBQUU7SUFDeEQsTUFBTSxDQUFDYyxZQUFZLEdBQUdmLElBQUFBLGVBQVEsRUFBQyxJQUFPLENBQUE7WUFBRVMsT0FBT2IsRUFBRTtZQUFlZ0IsT0FBTztRQUFJLENBQUE7SUFDM0UsTUFBTSxDQUFDSSxXQUFXQyxhQUFhLEdBQUdqQixJQUFBQSxlQUFRLEVBQUNlO0lBRTNDRyxJQUFBQSxnQkFBUyxFQUFDO1FBQ1IsSUFBSUwsV0FBV0QsT0FBTztZQUNwQixNQUFNTyxlQUFlLENBQUMsRUFBRUgsVUFBVUosS0FBSyxDQUFDLEVBQUVDLFVBQVVELEtBQUssQ0FBQyxDQUFDO1lBRTNELElBQUl2QixjQUFjQSxhQUFhOEI7WUFFL0IsSUFBSTFCLE9BQU8yQixJQUFJLEtBQUtELGdCQUFnQjdCLG1CQUFtQjtnQkFDckRDLFFBQVE4QixPQUFPLENBQUM7b0JBQ2RDLFFBQVFDLFdBQVcsQ0FBQ0MsU0FBUyxDQUMzQjt3QkFDRSxHQUFHL0IsTUFBTTt3QkFDVDJCLE1BQU1EO29CQUNSLEdBQ0E7d0JBQUVNLGdCQUFnQjtvQkFBSztnQkFFM0I7WUFDRjtRQUNGO0lBQ0YsR0FBRztRQUFDbEM7UUFBU0U7UUFBUW9CO1FBQVdHO1FBQVcxQjtRQUFtQkQ7S0FBYTtJQUUzRTZCLElBQUFBLGdCQUFTLEVBQUM7UUFDUm5CLGVBQWU7WUFDYjtnQkFBRVUsT0FBT2IsRUFBRTtnQkFBY2dCLE9BQU87WUFBRztZQUNuQztnQkFBRUgsT0FBT2IsRUFBRTtnQkFBZWdCLE9BQU87WUFBSTtTQUN0QztJQUNILEdBQUc7UUFBQ2pCO1FBQU1DO0tBQUU7SUFFWixxQkFDRSw2QkFBQzhCO1FBQUlDLFdBQVcxQztxQkFDZCw2QkFBQzJDLGNBQUssQ0FBQ0MsUUFBUSxzQkFDYiw2QkFBQ0g7UUFBSUMsV0FBVyxDQUFDLEVBQUUxQyxVQUFVLE1BQU0sQ0FBQztxQkFDbEMsNkJBQUN5QztRQUFJQyxXQUFXLENBQUMsRUFBRTFDLFVBQVUsUUFBUSxDQUFDO3FCQUNwQyw2QkFBQ3lDO1FBQUlDLFdBQVcsQ0FBQyxFQUFFMUMsVUFBVSxPQUFPLENBQUM7T0FBR1csRUFBRSxnQ0FDMUMsNkJBQUNrQyxvQkFBVztRQUFDQyxVQUFVakI7UUFBY2tCLFNBQVMvQjtRQUFZVyxPQUFPQzt1QkFFbkUsNkJBQUNhO1FBQUlDLFdBQVcsQ0FBQyxFQUFFMUMsVUFBVSxRQUFRLENBQUM7cUJBQ3BDLDZCQUFDeUM7UUFBSUMsV0FBVyxDQUFDLEVBQUUxQyxVQUFVLE9BQU8sQ0FBQztPQUFHVyxFQUFFLHlCQUMxQyw2QkFBQ2tDLG9CQUFXO1FBQ1ZDLFVBQVUsQ0FBQ0U7WUFDVGhCLGFBQWFnQixnQkFBZ0JsQjtRQUMvQjtRQUNBaUIsU0FBU2xDO1FBQ1RjLE9BQU9JOztBQU9yQjtNQUVBLFdBQWU5QiJ9