UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

169 lines (168 loc) • 18.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); const _react = /*#__PURE__*/ _interop_require_wildcard(require("react")); const _reacti18next = require("react-i18next"); const _reactrouterdom = require("react-router-dom"); const _getTranslation = require("../../../../utilities/getTranslation"); const _groupNavItems = require("../../../utilities/groupNavItems"); const _Button = /*#__PURE__*/ _interop_require_default(require("../../elements/Button")); const _Card = /*#__PURE__*/ _interop_require_default(require("../../elements/Card")); const _Gutter = require("../../elements/Gutter"); const _Config = require("../../utilities/Config"); 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 = 'dashboard'; const Dashboard = (props)=>{ const { collections, globals, permissions, user } = props; const { push } = (0, _reactrouterdom.useHistory)(); const { i18n, t } = (0, _reacti18next.useTranslation)('general'); const { admin: { components: { afterDashboard, beforeDashboard } }, routes: { admin } } = (0, _Config.useConfig)(); const [groups, setGroups] = (0, _react.useState)([]); (0, _react.useEffect)(()=>{ setGroups((0, _groupNavItems.groupNavItems)([ ...collections.filter(({ admin: { hidden } })=>!(typeof hidden === 'function' ? hidden({ user }) : hidden)).map((collection)=>{ const entityToGroup = { entity: collection, type: _groupNavItems.EntityType.collection }; return entityToGroup; }), ...globals.filter(({ admin: { hidden } })=>!(typeof hidden === 'function' ? hidden({ user }) : hidden)).map((global)=>{ const entityToGroup = { entity: global, type: _groupNavItems.EntityType.global }; return entityToGroup; }) ], permissions, i18n)); }, [ collections, globals, i18n, permissions, user ]); return /*#__PURE__*/ _react.default.createElement("div", { className: baseClass }, /*#__PURE__*/ _react.default.createElement(_Gutter.Gutter, { className: `${baseClass}__wrap` }, Array.isArray(beforeDashboard) && beforeDashboard.map((Component, i)=>/*#__PURE__*/ _react.default.createElement(Component, { key: i })), groups.map(({ entities, label }, groupIndex)=>{ return /*#__PURE__*/ _react.default.createElement("div", { className: `${baseClass}__group`, key: groupIndex }, /*#__PURE__*/ _react.default.createElement("h2", { className: `${baseClass}__label` }, label), /*#__PURE__*/ _react.default.createElement("ul", { className: `${baseClass}__card-list` }, entities.map(({ entity, type }, entityIndex)=>{ let title; let buttonAriaLabel; let createHREF; let onClick; let hasCreatePermission; if (type === _groupNavItems.EntityType.collection) { title = (0, _getTranslation.getTranslation)(entity.labels.plural, i18n); buttonAriaLabel = t('showAllLabel', { label: title }); onClick = ()=>push({ pathname: `${admin}/collections/${entity.slug}` }); createHREF = `${admin}/collections/${entity.slug}/create`; hasCreatePermission = permissions?.collections?.[entity.slug]?.create?.permission; } if (type === _groupNavItems.EntityType.global) { title = (0, _getTranslation.getTranslation)(entity.label, i18n); buttonAriaLabel = t('editLabel', { label: (0, _getTranslation.getTranslation)(entity.label, i18n) }); onClick = ()=>push({ pathname: `${admin}/globals/${entity.slug}` }); } return /*#__PURE__*/ _react.default.createElement("li", { key: entityIndex }, /*#__PURE__*/ _react.default.createElement(_Card.default, { actions: hasCreatePermission && type === _groupNavItems.EntityType.collection ? /*#__PURE__*/ _react.default.createElement(_Button.default, { "aria-label": t('createNewLabel', { label: (0, _getTranslation.getTranslation)(entity.labels.singular, i18n) }), buttonStyle: "icon-label", el: "link", icon: "plus", iconStyle: "with-border", round: true, to: createHREF }) : undefined, buttonAriaLabel: buttonAriaLabel, id: `card-${entity.slug}`, onClick: onClick, title: title, titleAs: "h3" })); }))); }), Array.isArray(afterDashboard) && afterDashboard.map((Component, i)=>/*#__PURE__*/ _react.default.createElement(Component, { key: i })))); }; const _default = Dashboard; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL0Rhc2hib2FyZC9EZWZhdWx0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlSGlzdG9yeSB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nXG5cbmltcG9ydCB0eXBlIHsgRW50aXR5VG9Hcm91cCwgR3JvdXAgfSBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMvZ3JvdXBOYXZJdGVtcydcbmltcG9ydCB0eXBlIHsgUHJvcHMgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBnZXRUcmFuc2xhdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9nZXRUcmFuc2xhdGlvbidcbmltcG9ydCB7IEVudGl0eVR5cGUsIGdyb3VwTmF2SXRlbXMgfSBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMvZ3JvdXBOYXZJdGVtcydcbmltcG9ydCBCdXR0b24gZnJvbSAnLi4vLi4vZWxlbWVudHMvQnV0dG9uJ1xuaW1wb3J0IENhcmQgZnJvbSAnLi4vLi4vZWxlbWVudHMvQ2FyZCdcbmltcG9ydCB7IEd1dHRlciB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL0d1dHRlcidcbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9Db25maWcnXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcblxuY29uc3QgYmFzZUNsYXNzID0gJ2Rhc2hib2FyZCdcblxuY29uc3QgRGFzaGJvYXJkOiBSZWFjdC5GQzxQcm9wcz4gPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBjb2xsZWN0aW9ucywgZ2xvYmFscywgcGVybWlzc2lvbnMsIHVzZXIgfSA9IHByb3BzXG5cbiAgY29uc3QgeyBwdXNoIH0gPSB1c2VIaXN0b3J5KClcbiAgY29uc3QgeyBpMThuLCB0IH0gPSB1c2VUcmFuc2xhdGlvbignZ2VuZXJhbCcpXG5cbiAgY29uc3Qge1xuICAgIGFkbWluOiB7XG4gICAgICBjb21wb25lbnRzOiB7IGFmdGVyRGFzaGJvYXJkLCBiZWZvcmVEYXNoYm9hcmQgfSxcbiAgICB9LFxuICAgIHJvdXRlczogeyBhZG1pbiB9LFxuICB9ID0gdXNlQ29uZmlnKClcblxuICBjb25zdCBbZ3JvdXBzLCBzZXRHcm91cHNdID0gdXNlU3RhdGU8R3JvdXBbXT4oW10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRHcm91cHMoXG4gICAgICBncm91cE5hdkl0ZW1zKFxuICAgICAgICBbXG4gICAgICAgICAgLi4uY29sbGVjdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICh7IGFkbWluOiB7IGhpZGRlbiB9IH0pID0+XG4gICAgICAgICAgICAgICAgISh0eXBlb2YgaGlkZGVuID09PSAnZnVuY3Rpb24nID8gaGlkZGVuKHsgdXNlciB9KSA6IGhpZGRlbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKChjb2xsZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGVudGl0eVRvR3JvdXA6IEVudGl0eVRvR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgZW50aXR5OiBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudGl0eVR5cGUuY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBlbnRpdHlUb0dyb3VwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi5nbG9iYWxzXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAoeyBhZG1pbjogeyBoaWRkZW4gfSB9KSA9PlxuICAgICAgICAgICAgICAgICEodHlwZW9mIGhpZGRlbiA9PT0gJ2Z1bmN0aW9uJyA/IGhpZGRlbih7IHVzZXIgfSkgOiBoaWRkZW4pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLm1hcCgoZ2xvYmFsKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGVudGl0eVRvR3JvdXA6IEVudGl0eVRvR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgZW50aXR5OiBnbG9iYWwsXG4gICAgICAgICAgICAgICAgdHlwZTogRW50aXR5VHlwZS5nbG9iYWwsXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gZW50aXR5VG9Hcm91cFxuICAgICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgICBpMThuLFxuICAgICAgKSxcbiAgICApXG4gIH0sIFtjb2xsZWN0aW9ucywgZ2xvYmFscywgaTE4biwgcGVybWlzc2lvbnMsIHVzZXJdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2Jhc2VDbGFzc30+XG4gICAgICA8R3V0dGVyIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fd3JhcGB9PlxuICAgICAgICB7QXJyYXkuaXNBcnJheShiZWZvcmVEYXNoYm9hcmQpICYmXG4gICAgICAgICAgYmVmb3JlRGFzaGJvYXJkLm1hcCgoQ29tcG9uZW50LCBpKSA9PiA8Q29tcG9uZW50IGtleT17aX0gLz4pfVxuICAgICAgICB7Z3JvdXBzLm1hcCgoeyBlbnRpdGllcywgbGFiZWwgfSwgZ3JvdXBJbmRleCkgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZ3JvdXBgfSBrZXk9e2dyb3VwSW5kZXh9PlxuICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19sYWJlbGB9PntsYWJlbH08L2gyPlxuICAgICAgICAgICAgICA8dWwgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19jYXJkLWxpc3RgfT5cbiAgICAgICAgICAgICAgICB7ZW50aXRpZXMubWFwKCh7IGVudGl0eSwgdHlwZSB9LCBlbnRpdHlJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlOiBzdHJpbmdcbiAgICAgICAgICAgICAgICAgIGxldCBidXR0b25BcmlhTGFiZWw6IHN0cmluZ1xuICAgICAgICAgICAgICAgICAgbGV0IGNyZWF0ZUhSRUY6IHN0cmluZ1xuICAgICAgICAgICAgICAgICAgbGV0IG9uQ2xpY2s6ICgpID0+IHZvaWRcbiAgICAgICAgICAgICAgICAgIGxldCBoYXNDcmVhdGVQZXJtaXNzaW9uOiBib29sZWFuXG5cbiAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBFbnRpdHlUeXBlLmNvbGxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSBnZXRUcmFuc2xhdGlvbihlbnRpdHkubGFiZWxzLnBsdXJhbCwgaTE4bilcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uQXJpYUxhYmVsID0gdCgnc2hvd0FsbExhYmVsJywgeyBsYWJlbDogdGl0bGUgfSlcbiAgICAgICAgICAgICAgICAgICAgb25DbGljayA9ICgpID0+IHB1c2goeyBwYXRobmFtZTogYCR7YWRtaW59L2NvbGxlY3Rpb25zLyR7ZW50aXR5LnNsdWd9YCB9KVxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVIUkVGID0gYCR7YWRtaW59L2NvbGxlY3Rpb25zLyR7ZW50aXR5LnNsdWd9L2NyZWF0ZWBcbiAgICAgICAgICAgICAgICAgICAgaGFzQ3JlYXRlUGVybWlzc2lvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnM/LmNvbGxlY3Rpb25zPy5bZW50aXR5LnNsdWddPy5jcmVhdGU/LnBlcm1pc3Npb25cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IEVudGl0eVR5cGUuZ2xvYmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlID0gZ2V0VHJhbnNsYXRpb24oZW50aXR5LmxhYmVsLCBpMThuKVxuICAgICAgICAgICAgICAgICAgICBidXR0b25BcmlhTGFiZWwgPSB0KCdlZGl0TGFiZWwnLCB7IGxhYmVsOiBnZXRUcmFuc2xhdGlvbihlbnRpdHkubGFiZWwsIGkxOG4pIH0pXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2sgPSAoKSA9PiBwdXNoKHsgcGF0aG5hbWU6IGAke2FkbWlufS9nbG9iYWxzLyR7ZW50aXR5LnNsdWd9YCB9KVxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8bGkga2V5PXtlbnRpdHlJbmRleH0+XG4gICAgICAgICAgICAgICAgICAgICAgPENhcmRcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnM9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNDcmVhdGVQZXJtaXNzaW9uICYmIHR5cGUgPT09IEVudGl0eVR5cGUuY29sbGVjdGlvbiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjcmVhdGVOZXdMYWJlbCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldFRyYW5zbGF0aW9uKGVudGl0eS5sYWJlbHMuc2luZ3VsYXIsIGkxOG4pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TdHlsZT1cImljb24tbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWw9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwbHVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TdHlsZT1cIndpdGgtYm9yZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bz17Y3JlYXRlSFJFRn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25BcmlhTGFiZWw9e2J1dHRvbkFyaWFMYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtgY2FyZC0ke2VudGl0eS5zbHVnfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVBcz1cImgzXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgICAge0FycmF5LmlzQXJyYXkoYWZ0ZXJEYXNoYm9hcmQpICYmXG4gICAgICAgICAgYWZ0ZXJEYXNoYm9hcmQubWFwKChDb21wb25lbnQsIGkpID0+IDxDb21wb25lbnQga2V5PXtpfSAvPil9XG4gICAgICA8L0d1dHRlcj5cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBEYXNoYm9hcmRcbiJdLCJuYW1lcyI6WyJiYXNlQ2xhc3MiLCJEYXNoYm9hcmQiLCJwcm9wcyIsImNvbGxlY3Rpb25zIiwiZ2xvYmFscyIsInBlcm1pc3Npb25zIiwidXNlciIsInB1c2giLCJ1c2VIaXN0b3J5IiwiaTE4biIsInQiLCJ1c2VUcmFuc2xhdGlvbiIsImFkbWluIiwiY29tcG9uZW50cyIsImFmdGVyRGFzaGJvYXJkIiwiYmVmb3JlRGFzaGJvYXJkIiwicm91dGVzIiwidXNlQ29uZmlnIiwiZ3JvdXBzIiwic2V0R3JvdXBzIiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJncm91cE5hdkl0ZW1zIiwiZmlsdGVyIiwiaGlkZGVuIiwibWFwIiwiY29sbGVjdGlvbiIsImVudGl0eVRvR3JvdXAiLCJlbnRpdHkiLCJ0eXBlIiwiRW50aXR5VHlwZSIsImdsb2JhbCIsImRpdiIsImNsYXNzTmFtZSIsIkd1dHRlciIsIkFycmF5IiwiaXNBcnJheSIsIkNvbXBvbmVudCIsImkiLCJrZXkiLCJlbnRpdGllcyIsImxhYmVsIiwiZ3JvdXBJbmRleCIsImgyIiwidWwiLCJlbnRpdHlJbmRleCIsInRpdGxlIiwiYnV0dG9uQXJpYUxhYmVsIiwiY3JlYXRlSFJFRiIsIm9uQ2xpY2siLCJoYXNDcmVhdGVQZXJtaXNzaW9uIiwiZ2V0VHJhbnNsYXRpb24iLCJsYWJlbHMiLCJwbHVyYWwiLCJwYXRobmFtZSIsInNsdWciLCJjcmVhdGUiLCJwZXJtaXNzaW9uIiwibGkiLCJDYXJkIiwiYWN0aW9ucyIsIkJ1dHRvbiIsImFyaWEtbGFiZWwiLCJzaW5ndWxhciIsImJ1dHRvblN0eWxlIiwiZWwiLCJpY29uIiwiaWNvblN0eWxlIiwicm91bmQiLCJ0byIsInVuZGVmaW5lZCIsImlkIiwidGl0bGVBcyJdLCJtYXBwaW5ncyI6Ijs7OzsrQkEySUE7OztlQUFBOzs7K0RBM0kyQzs4QkFDWjtnQ0FDSjtnQ0FLSTsrQkFDVzsrREFDdkI7NkRBQ0Y7d0JBQ007d0JBQ0c7UUFDbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVAsTUFBTUEsWUFBWTtBQUVsQixNQUFNQyxZQUE2QixDQUFDQztJQUNsQyxNQUFNLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxFQUFFQyxXQUFXLEVBQUVDLElBQUksRUFBRSxHQUFHSjtJQUVwRCxNQUFNLEVBQUVLLElBQUksRUFBRSxHQUFHQyxJQUFBQSwwQkFBVTtJQUMzQixNQUFNLEVB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