@blaze-cms/plugin-data-ui 0.146.0-rc-eagle-3.7 → 0.146.0-rc-eagle-3.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/ListingTable/ListingTable.js +1 -1
- package/lib/components/ListingTable/ListingTable.js.map +1 -1
- package/lib/utils/add-content-menu-items.js +25 -22
- package/lib/utils/add-content-menu-items.js.map +1 -1
- package/lib-es/components/ListingTable/ListingTable.js +1 -1
- package/lib-es/components/ListingTable/ListingTable.js.map +1 -1
- package/lib-es/utils/add-content-menu-items.js +25 -22
- package/lib-es/utils/add-content-menu-items.js.map +1 -1
- package/package.json +5 -5
- package/src/components/ListingTable/ListingTable.js +1 -1
- package/src/utils/add-content-menu-items.js +21 -20
|
@@ -176,7 +176,7 @@ const ListingTable = ({
|
|
|
176
176
|
deleteAction: deleteAction,
|
|
177
177
|
itemName: itemToDelete.name
|
|
178
178
|
}), /*#__PURE__*/_react.default.createElement(_admin.PageHeader, {
|
|
179
|
-
title: entitySchema.displayName,
|
|
179
|
+
title: entitySchema.displayNamePlural || entitySchema.displayName,
|
|
180
180
|
subtitle: ""
|
|
181
181
|
}, createAction.active && !showAddButton && /*#__PURE__*/_react.default.createElement(_reactRouterDom.Link, {
|
|
182
182
|
"data-testid": "addEntity",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListingTable.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_client","_reactRouterDom","_admin","_toaster","_pluginRenderHooksUi","_ListingTableContent","_SearchFilter","_actionsHandlers","_service","_populateRows","_getDefaultQueryParams","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","ListingTable","match","entitySchema","history","tableData","setTableData","useState","modalStatus","setModalStatus","itemToDelete","setItemToDelete","previousSchema","setPreviousSchema","id","totalItems","setTotalItems","queryParamsDefault","getDefaultQueryParams","queryParams","setQueryParams","listFilters","setListFilters","client","useApolloClient","addToast","useToasts","location","useLocation","searchParams","URLSearchParams","search","currentPage","Number","useEffect","updatedQueryParams","offset","limit","doQuery","url","filters","params","listingData","totalRecords","fetchData","querySettings","populatedTable","populateRows","toggleModal","rows","handleOnPageChange","pageNumber","_offset","document","getElementsByClassName","scrollTo","updateListingFilters","onCloseCardPrompt","item","deleteAction","availableActions","delete","submit","parsedFormValues","updatedTableData","handleSort","event","property","direction","entries","sortQueryParams","sort","columns","isEnquiry","firstColumn","appliedSort","formatRows","getParsedRowData","displayProperties","adminCrudActions","create","createAction","active","_deleteAction","showAddButton","createElement","className","DeleteAction","onClose","itemName","name","PageHeader","title","displayName","subtitle","Link","to","CardPrompt","Fragment","RenderHook","hookKey","schema","onSort","propTypes","PropTypes","object","isRequired","_default","exports","withRouter"],"sources":["../../../src/components/ListingTable/ListingTable.js"],"sourcesContent":["import React, { useEffect, useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { useApolloClient } from '@apollo/client';\nimport { withRouter, Link, useLocation } from 'react-router-dom';\nimport { PageHeader, DeleteAction, CardPrompt } from '@blaze-cms/admin';\nimport { useToasts } from '@blaze-react/toaster';\nimport { RenderHook } from '@blaze-cms/plugin-render-hooks-ui';\nimport ListingTableContent from './ListingTableContent';\nimport SearchFilter from './SearchFilter/SearchFilter';\nimport availableActions from '../EntityManager/Entity/actions-handlers';\nimport { fetchData } from './service';\nimport { populateRows, formatRows, getParsedRowData } from './mappers/populate-rows';\nimport { getDefaultQueryParams } from '../../utils/get-default-query-params';\n\nconst ListingTable = ({ match, entitySchema, history }) => {\n const [tableData, setTableData] = useState({});\n const [modalStatus, setModalStatus] = useState(false);\n const [itemToDelete, setItemToDelete] = useState({});\n const [previousSchema, setPreviousSchema] = useState({ id: null });\n const [totalItems, setTotalItems] = useState(0);\n const queryParamsDefault = getDefaultQueryParams(entitySchema);\n const [queryParams, setQueryParams] = useState(queryParamsDefault);\n const [listFilters, setListFilters] = useState([]);\n const client = useApolloClient();\n const { addToast } = useToasts();\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n const currentPage = Number(searchParams.get('page')) || 1;\n\n useEffect(\n () => {\n (async () => {\n if (\n entitySchema.id !== previousSchema.id ||\n (previousSchema.id === null && entitySchema.id)\n ) {\n const updatedQueryParams = {\n ...queryParams,\n offset: currentPage * queryParamsDefault.limit - queryParamsDefault.limit\n };\n await doQuery([], updatedQueryParams);\n setPreviousSchema({ id: entitySchema.id });\n }\n })();\n },\n [client, entitySchema, match.url, previousSchema.id, queryParams] // eslint-disable-line react-hooks/exhaustive-deps\n );\n\n const doQuery = async (filters = listFilters, params = queryParamsDefault) => {\n const { listingData, totalRecords } = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: params\n },\n listFilters: filters\n });\n\n const populatedTable = populateRows({\n toggleModal,\n url: match.url,\n entitySchema,\n rows: listingData\n });\n\n setTableData(populatedTable);\n setTotalItems(totalRecords);\n };\n\n const handleOnPageChange = async ({ pageNumber, offset: _offset }) => {\n const updatedQueryParams = {\n ...queryParams,\n offset: _offset\n };\n\n await doQuery(listFilters, updatedQueryParams);\n\n history.push(`?page=${pageNumber}`);\n document.getElementsByClassName('page')[0].scrollTo(0, 0);\n };\n\n const updateListingFilters = async filters => {\n await doQuery(filters);\n setListFilters(filters);\n };\n\n const onCloseCardPrompt = () => null;\n\n const toggleModal = item => {\n setModalStatus(!!item);\n setItemToDelete(item || {});\n };\n\n const deleteAction = async () => {\n await availableActions.delete.submit(\n {\n entitySchema,\n parsedFormValues: { id: itemToDelete.id },\n client\n },\n addToast\n );\n\n toggleModal();\n\n const updatedTableData = {\n ...tableData,\n rows: tableData.rows.filter(({ id }) => id !== itemToDelete.id)\n };\n\n setTableData(updatedTableData);\n };\n\n const handleSort = async event => {\n const [[property, direction]] = Object.entries(event);\n const sortQueryParams = {\n ...queryParamsDefault,\n sort: [{ property, direction }]\n };\n setQueryParams(sortQueryParams);\n\n const { listingData } = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: sortQueryParams\n },\n listFilters\n });\n const { columns, isEnquiry } = tableData;\n const [firstColumn] = columns;\n\n setTableData({\n ...tableData,\n appliedSort: { [property]: direction },\n rows: formatRows({\n rows: getParsedRowData(listingData),\n url: match.url,\n toggleModal,\n firstColumn,\n isEnquiry,\n entitySchema\n })\n });\n history.push('?page=1');\n };\n if (!tableData || !tableData.rows) return 'loading';\n\n const {\n displayProperties: {\n adminCrudActions: {\n create: createAction = { active: true },\n delete: _deleteAction = { active: true }\n } = {}\n } = {}\n } = entitySchema;\n\n const showAddButton = !tableData.rows.length && listFilters.length === 0;\n\n return (\n <div className=\"page\">\n {modalStatus && _deleteAction.active && (\n <DeleteAction\n data-testid=\"deleteEntity\"\n onClose={toggleModal}\n deleteAction={deleteAction}\n itemName={itemToDelete.name}\n />\n )}\n <PageHeader title={entitySchema.displayName} subtitle=\"\">\n {createAction.active && !showAddButton && (\n <Link data-testid=\"addEntity\" className=\"button button--small\" to={`${match.url}/create`}>\n Add\n </Link>\n )}\n </PageHeader>\n {showAddButton ? (\n <CardPrompt>\n <Link\n className=\"button button--rounded button--cta\"\n to={`${match.url}/create`}\n data-testid=\"add-button\">\n Add\n </Link>\n </CardPrompt>\n ) : (\n <>\n <RenderHook\n hookKey=\"entity:listing:main:top\"\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n <SearchFilter\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n <ListingTableContent\n totalItems={totalItems}\n currentPage={currentPage}\n onSort={handleSort}\n handleOnPageChange={handleOnPageChange}\n tableData={tableData}\n onCloseCardPrompt={onCloseCardPrompt}\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n </>\n )}\n </div>\n );\n};\nListingTable.propTypes = {\n entitySchema: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired,\n history: PropTypes.object.isRequired\n};\n\nexport default withRouter(ListingTable);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ListingTable.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_client","_reactRouterDom","_admin","_toaster","_pluginRenderHooksUi","_ListingTableContent","_SearchFilter","_actionsHandlers","_service","_populateRows","_getDefaultQueryParams","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","ListingTable","match","entitySchema","history","tableData","setTableData","useState","modalStatus","setModalStatus","itemToDelete","setItemToDelete","previousSchema","setPreviousSchema","id","totalItems","setTotalItems","queryParamsDefault","getDefaultQueryParams","queryParams","setQueryParams","listFilters","setListFilters","client","useApolloClient","addToast","useToasts","location","useLocation","searchParams","URLSearchParams","search","currentPage","Number","useEffect","updatedQueryParams","offset","limit","doQuery","url","filters","params","listingData","totalRecords","fetchData","querySettings","populatedTable","populateRows","toggleModal","rows","handleOnPageChange","pageNumber","_offset","document","getElementsByClassName","scrollTo","updateListingFilters","onCloseCardPrompt","item","deleteAction","availableActions","delete","submit","parsedFormValues","updatedTableData","handleSort","event","property","direction","entries","sortQueryParams","sort","columns","isEnquiry","firstColumn","appliedSort","formatRows","getParsedRowData","displayProperties","adminCrudActions","create","createAction","active","_deleteAction","showAddButton","createElement","className","DeleteAction","onClose","itemName","name","PageHeader","title","displayNamePlural","displayName","subtitle","Link","to","CardPrompt","Fragment","RenderHook","hookKey","schema","onSort","propTypes","PropTypes","object","isRequired","_default","exports","withRouter"],"sources":["../../../src/components/ListingTable/ListingTable.js"],"sourcesContent":["import React, { useEffect, useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { useApolloClient } from '@apollo/client';\nimport { withRouter, Link, useLocation } from 'react-router-dom';\nimport { PageHeader, DeleteAction, CardPrompt } from '@blaze-cms/admin';\nimport { useToasts } from '@blaze-react/toaster';\nimport { RenderHook } from '@blaze-cms/plugin-render-hooks-ui';\nimport ListingTableContent from './ListingTableContent';\nimport SearchFilter from './SearchFilter/SearchFilter';\nimport availableActions from '../EntityManager/Entity/actions-handlers';\nimport { fetchData } from './service';\nimport { populateRows, formatRows, getParsedRowData } from './mappers/populate-rows';\nimport { getDefaultQueryParams } from '../../utils/get-default-query-params';\n\nconst ListingTable = ({ match, entitySchema, history }) => {\n const [tableData, setTableData] = useState({});\n const [modalStatus, setModalStatus] = useState(false);\n const [itemToDelete, setItemToDelete] = useState({});\n const [previousSchema, setPreviousSchema] = useState({ id: null });\n const [totalItems, setTotalItems] = useState(0);\n const queryParamsDefault = getDefaultQueryParams(entitySchema);\n const [queryParams, setQueryParams] = useState(queryParamsDefault);\n const [listFilters, setListFilters] = useState([]);\n const client = useApolloClient();\n const { addToast } = useToasts();\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n const currentPage = Number(searchParams.get('page')) || 1;\n\n useEffect(\n () => {\n (async () => {\n if (\n entitySchema.id !== previousSchema.id ||\n (previousSchema.id === null && entitySchema.id)\n ) {\n const updatedQueryParams = {\n ...queryParams,\n offset: currentPage * queryParamsDefault.limit - queryParamsDefault.limit\n };\n await doQuery([], updatedQueryParams);\n setPreviousSchema({ id: entitySchema.id });\n }\n })();\n },\n [client, entitySchema, match.url, previousSchema.id, queryParams] // eslint-disable-line react-hooks/exhaustive-deps\n );\n\n const doQuery = async (filters = listFilters, params = queryParamsDefault) => {\n const { listingData, totalRecords } = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: params\n },\n listFilters: filters\n });\n\n const populatedTable = populateRows({\n toggleModal,\n url: match.url,\n entitySchema,\n rows: listingData\n });\n\n setTableData(populatedTable);\n setTotalItems(totalRecords);\n };\n\n const handleOnPageChange = async ({ pageNumber, offset: _offset }) => {\n const updatedQueryParams = {\n ...queryParams,\n offset: _offset\n };\n\n await doQuery(listFilters, updatedQueryParams);\n\n history.push(`?page=${pageNumber}`);\n document.getElementsByClassName('page')[0].scrollTo(0, 0);\n };\n\n const updateListingFilters = async filters => {\n await doQuery(filters);\n setListFilters(filters);\n };\n\n const onCloseCardPrompt = () => null;\n\n const toggleModal = item => {\n setModalStatus(!!item);\n setItemToDelete(item || {});\n };\n\n const deleteAction = async () => {\n await availableActions.delete.submit(\n {\n entitySchema,\n parsedFormValues: { id: itemToDelete.id },\n client\n },\n addToast\n );\n\n toggleModal();\n\n const updatedTableData = {\n ...tableData,\n rows: tableData.rows.filter(({ id }) => id !== itemToDelete.id)\n };\n\n setTableData(updatedTableData);\n };\n\n const handleSort = async event => {\n const [[property, direction]] = Object.entries(event);\n const sortQueryParams = {\n ...queryParamsDefault,\n sort: [{ property, direction }]\n };\n setQueryParams(sortQueryParams);\n\n const { listingData } = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: sortQueryParams\n },\n listFilters\n });\n const { columns, isEnquiry } = tableData;\n const [firstColumn] = columns;\n\n setTableData({\n ...tableData,\n appliedSort: { [property]: direction },\n rows: formatRows({\n rows: getParsedRowData(listingData),\n url: match.url,\n toggleModal,\n firstColumn,\n isEnquiry,\n entitySchema\n })\n });\n history.push('?page=1');\n };\n if (!tableData || !tableData.rows) return 'loading';\n\n const {\n displayProperties: {\n adminCrudActions: {\n create: createAction = { active: true },\n delete: _deleteAction = { active: true }\n } = {}\n } = {}\n } = entitySchema;\n\n const showAddButton = !tableData.rows.length && listFilters.length === 0;\n\n return (\n <div className=\"page\">\n {modalStatus && _deleteAction.active && (\n <DeleteAction\n data-testid=\"deleteEntity\"\n onClose={toggleModal}\n deleteAction={deleteAction}\n itemName={itemToDelete.name}\n />\n )}\n <PageHeader title={entitySchema.displayNamePlural || entitySchema.displayName} subtitle=\"\">\n {createAction.active && !showAddButton && (\n <Link data-testid=\"addEntity\" className=\"button button--small\" to={`${match.url}/create`}>\n Add\n </Link>\n )}\n </PageHeader>\n {showAddButton ? (\n <CardPrompt>\n <Link\n className=\"button button--rounded button--cta\"\n to={`${match.url}/create`}\n data-testid=\"add-button\">\n Add\n </Link>\n </CardPrompt>\n ) : (\n <>\n <RenderHook\n hookKey=\"entity:listing:main:top\"\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n <SearchFilter\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n <ListingTableContent\n totalItems={totalItems}\n currentPage={currentPage}\n onSort={handleSort}\n handleOnPageChange={handleOnPageChange}\n tableData={tableData}\n onCloseCardPrompt={onCloseCardPrompt}\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n </>\n )}\n </div>\n );\n};\nListingTable.propTypes = {\n entitySchema: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired,\n history: PropTypes.object.isRequired\n};\n\nexport default withRouter(ListingTable);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,6 +8,16 @@ var _adminUiUtils = require("@blaze-cms/admin-ui-utils");
|
|
|
8
8
|
const {
|
|
9
9
|
MENU_PERMISSIONS
|
|
10
10
|
} = require('../constants');
|
|
11
|
+
|
|
12
|
+
// Menu items label a listing of many records, so they use the plural. The
|
|
13
|
+
// fallback matters: this package and the API are published independently, so an
|
|
14
|
+
// admin bundle can run against an API that does not yet resolve the field.
|
|
15
|
+
function getMenuLabel({
|
|
16
|
+
displayName,
|
|
17
|
+
displayNamePlural
|
|
18
|
+
}) {
|
|
19
|
+
return displayNamePlural || displayName || '';
|
|
20
|
+
}
|
|
11
21
|
function getAddContentMenuItems(app) {
|
|
12
22
|
return async ({
|
|
13
23
|
addConfig
|
|
@@ -26,16 +36,21 @@ function getAddContentMenuItems(app) {
|
|
|
26
36
|
});
|
|
27
37
|
if (!getEntitySchemas || !getEntitySchemas.length) return; // no items so don't add section
|
|
28
38
|
|
|
29
|
-
const menuItems = {};
|
|
30
39
|
const sectionMenuItems = {
|
|
31
40
|
settings: {}
|
|
32
41
|
};
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
42
|
+
|
|
43
|
+
// Order by the label that is rendered, not by displayName. getEntitySchemas
|
|
44
|
+
// is sorted on displayName server-side and that order serves every other
|
|
45
|
+
// consumer, which shows the singular, so the plural ordering belongs here.
|
|
46
|
+
// The explicit `order` is what MenuSectionItems reads to sort.
|
|
47
|
+
const orderedEntities = [...getEntitySchemas].sort((entityA, entityB) => getMenuLabel(entityA).localeCompare(getMenuLabel(entityB)));
|
|
48
|
+
orderedEntities.forEach((entity, order) => {
|
|
49
|
+
const {
|
|
50
|
+
id,
|
|
51
|
+
displayProperties
|
|
52
|
+
} = entity;
|
|
53
|
+
if (!displayProperties) return;
|
|
39
54
|
const {
|
|
40
55
|
adminMenu: {
|
|
41
56
|
sectionKey = 'settings'
|
|
@@ -43,18 +58,15 @@ function getAddContentMenuItems(app) {
|
|
|
43
58
|
} = displayProperties;
|
|
44
59
|
const sectionItems = sectionMenuItems[sectionKey] || {};
|
|
45
60
|
sectionItems[id] = {
|
|
46
|
-
label:
|
|
61
|
+
label: getMenuLabel(entity),
|
|
62
|
+
order,
|
|
47
63
|
uri: `/data-listing/${id}`
|
|
48
64
|
};
|
|
49
65
|
sectionMenuItems[sectionKey] = sectionItems;
|
|
50
66
|
});
|
|
51
67
|
const menuConfig = {
|
|
52
68
|
main: {
|
|
53
|
-
items: {
|
|
54
|
-
settings: {
|
|
55
|
-
items: menuItems
|
|
56
|
-
}
|
|
57
|
-
}
|
|
69
|
+
items: {}
|
|
58
70
|
}
|
|
59
71
|
};
|
|
60
72
|
Object.entries(sectionMenuItems).forEach(([sectionKey, sectionItems]) => {
|
|
@@ -62,15 +74,6 @@ function getAddContentMenuItems(app) {
|
|
|
62
74
|
sectionConfig.items = sectionItems;
|
|
63
75
|
menuConfig.main.items[sectionKey] = sectionConfig;
|
|
64
76
|
});
|
|
65
|
-
getEntitySchemas.forEach(({
|
|
66
|
-
id,
|
|
67
|
-
displayName
|
|
68
|
-
}) => {
|
|
69
|
-
menuItems[id] = {
|
|
70
|
-
label: displayName,
|
|
71
|
-
uri: `/data-listing/${id}`
|
|
72
|
-
};
|
|
73
|
-
});
|
|
74
77
|
addConfig(menuConfig);
|
|
75
78
|
};
|
|
76
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-content-menu-items.js","names":["_adminUiUtils","require","MENU_PERMISSIONS","getAddContentMenuItems","app","addConfig","client","getClient","data","getEntitySchemas","query","getQuery","variables","canDoActions","length","
|
|
1
|
+
{"version":3,"file":"add-content-menu-items.js","names":["_adminUiUtils","require","MENU_PERMISSIONS","getMenuLabel","displayName","displayNamePlural","getAddContentMenuItems","app","addConfig","client","getClient","data","getEntitySchemas","query","getQuery","variables","canDoActions","length","sectionMenuItems","settings","orderedEntities","sort","entityA","entityB","localeCompare","forEach","entity","order","id","displayProperties","adminMenu","sectionKey","sectionItems","label","uri","menuConfig","main","items","Object","entries","sectionConfig","_default","exports","default"],"sources":["../../src/utils/add-content-menu-items.js"],"sourcesContent":["import { getQuery } from '@blaze-cms/admin-ui-utils';\n\nconst { MENU_PERMISSIONS } = require('../constants');\n\n// Menu items label a listing of many records, so they use the plural. The\n// fallback matters: this package and the API are published independently, so an\n// admin bundle can run against an API that does not yet resolve the field.\nfunction getMenuLabel({ displayName, displayNamePlural }) {\n return displayNamePlural || displayName || '';\n}\n\nfunction getAddContentMenuItems(app) {\n return async ({ addConfig }) => {\n const client = app.getClient();\n const {\n data: { getEntitySchemas }\n } = await client.query({\n query: getQuery('GET_USER_EDITABLE_ENTITIES'),\n variables: {\n // only return entities that the current user can do the following actions on\n canDoActions: MENU_PERMISSIONS\n }\n });\n\n if (!getEntitySchemas || !getEntitySchemas.length) return; // no items so don't add section\n\n const sectionMenuItems = { settings: {} };\n\n // Order by the label that is rendered, not by displayName. getEntitySchemas\n // is sorted on displayName server-side and that order serves every other\n // consumer, which shows the singular, so the plural ordering belongs here.\n // The explicit `order` is what MenuSectionItems reads to sort.\n const orderedEntities = [...getEntitySchemas].sort((entityA, entityB) =>\n getMenuLabel(entityA).localeCompare(getMenuLabel(entityB))\n );\n\n orderedEntities.forEach((entity, order) => {\n const { id, displayProperties } = entity;\n if (!displayProperties) return;\n\n const { adminMenu: { sectionKey = 'settings' } = {} } = displayProperties;\n const sectionItems = sectionMenuItems[sectionKey] || {};\n sectionItems[id] = {\n label: getMenuLabel(entity),\n order,\n uri: `/data-listing/${id}`\n };\n sectionMenuItems[sectionKey] = sectionItems;\n });\n\n const menuConfig = { main: { items: {} } };\n\n Object.entries(sectionMenuItems).forEach(([sectionKey, sectionItems]) => {\n const sectionConfig = menuConfig.main.items[sectionKey] || {};\n sectionConfig.items = sectionItems;\n menuConfig.main.items[sectionKey] = sectionConfig;\n });\n\n addConfig(menuConfig);\n };\n}\n\nexport default getAddContentMenuItems;\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAEA,MAAM;EAAEC;AAAiB,CAAC,GAAGD,OAAO,CAAC,cAAc,CAAC;;AAEpD;AACA;AACA;AACA,SAASE,YAAYA,CAAC;EAAEC,WAAW;EAAEC;AAAkB,CAAC,EAAE;EACxD,OAAOA,iBAAiB,IAAID,WAAW,IAAI,EAAE;AAC/C;AAEA,SAASE,sBAAsBA,CAACC,GAAG,EAAE;EACnC,OAAO,OAAO;IAAEC;EAAU,CAAC,KAAK;IAC9B,MAAMC,MAAM,GAAGF,GAAG,CAACG,SAAS,CAAC,CAAC;IAC9B,MAAM;MACJC,IAAI,EAAE;QAAEC;MAAiB;IAC3B,CAAC,GAAG,MAAMH,MAAM,CAACI,KAAK,CAAC;MACrBA,KAAK,EAAE,IAAAC,sBAAQ,EAAC,4BAA4B,CAAC;MAC7CC,SAAS,EAAE;QACT;QACAC,YAAY,EAAEd;MAChB;IACF,CAAC,CAAC;IAEF,IAAI,CAACU,gBAAgB,IAAI,CAACA,gBAAgB,CAACK,MAAM,EAAE,OAAO,CAAC;;IAE3D,MAAMC,gBAAgB,GAAG;MAAEC,QAAQ,EAAE,CAAC;IAAE,CAAC;;IAEzC;IACA;IACA;IACA;IACA,MAAMC,eAAe,GAAG,CAAC,GAAGR,gBAAgB,CAAC,CAACS,IAAI,CAAC,CAACC,OAAO,EAAEC,OAAO,KAClEpB,YAAY,CAACmB,OAAO,CAAC,CAACE,aAAa,CAACrB,YAAY,CAACoB,OAAO,CAAC,CAC3D,CAAC;IAEDH,eAAe,CAACK,OAAO,CAAC,CAACC,MAAM,EAAEC,KAAK,KAAK;MACzC,MAAM;QAAEC,EAAE;QAAEC;MAAkB,CAAC,GAAGH,MAAM;MACxC,IAAI,CAACG,iBAAiB,EAAE;MAExB,MAAM;QAAEC,SAAS,EAAE;UAAEC,UAAU,GAAG;QAAW,CAAC,GAAG,CAAC;MAAE,CAAC,GAAGF,iBAAiB;MACzE,MAAMG,YAAY,GAAGd,gBAAgB,CAACa,UAAU,CAAC,IAAI,CAAC,CAAC;MACvDC,YAAY,CAACJ,EAAE,CAAC,GAAG;QACjBK,KAAK,EAAE9B,YAAY,CAACuB,MAAM,CAAC;QAC3BC,KAAK;QACLO,GAAG,EAAE,iBAAiBN,EAAE;MAC1B,CAAC;MACDV,gBAAgB,CAACa,UAAU,CAAC,GAAGC,YAAY;IAC7C,CAAC,CAAC;IAEF,MAAMG,UAAU,GAAG;MAAEC,IAAI,EAAE;QAAEC,KAAK,EAAE,CAAC;MAAE;IAAE,CAAC;IAE1CC,MAAM,CAACC,OAAO,CAACrB,gBAAgB,CAAC,CAACO,OAAO,CAAC,CAAC,CAACM,UAAU,EAAEC,YAAY,CAAC,KAAK;MACvE,MAAMQ,aAAa,GAAGL,UAAU,CAACC,IAAI,CAACC,KAAK,CAACN,UAAU,CAAC,IAAI,CAAC,CAAC;MAC7DS,aAAa,CAACH,KAAK,GAAGL,YAAY;MAClCG,UAAU,CAACC,IAAI,CAACC,KAAK,CAACN,UAAU,CAAC,GAAGS,aAAa;IACnD,CAAC,CAAC;IAEFhC,SAAS,CAAC2B,UAAU,CAAC;EACvB,CAAC;AACH;AAAC,IAAAM,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcrC,sBAAsB","ignoreList":[]}
|
|
@@ -168,7 +168,7 @@ const ListingTable = ({
|
|
|
168
168
|
deleteAction: deleteAction,
|
|
169
169
|
itemName: itemToDelete.name
|
|
170
170
|
}), /*#__PURE__*/React.createElement(PageHeader, {
|
|
171
|
-
title: entitySchema.displayName,
|
|
171
|
+
title: entitySchema.displayNamePlural || entitySchema.displayName,
|
|
172
172
|
subtitle: ""
|
|
173
173
|
}, createAction.active && !showAddButton && /*#__PURE__*/React.createElement(Link, {
|
|
174
174
|
"data-testid": "addEntity",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListingTable.js","names":["React","useEffect","useState","Fragment","PropTypes","useApolloClient","withRouter","Link","useLocation","PageHeader","DeleteAction","CardPrompt","useToasts","RenderHook","ListingTableContent","SearchFilter","availableActions","fetchData","populateRows","formatRows","getParsedRowData","getDefaultQueryParams","ListingTable","match","entitySchema","history","tableData","setTableData","modalStatus","setModalStatus","itemToDelete","setItemToDelete","previousSchema","setPreviousSchema","id","totalItems","setTotalItems","queryParamsDefault","queryParams","setQueryParams","listFilters","setListFilters","client","addToast","location","searchParams","URLSearchParams","search","currentPage","Number","get","updatedQueryParams","_objectSpread","offset","limit","doQuery","url","filters","params","listingData","totalRecords","querySettings","populatedTable","toggleModal","rows","handleOnPageChange","pageNumber","_offset","push","document","getElementsByClassName","scrollTo","updateListingFilters","onCloseCardPrompt","item","deleteAction","delete","submit","parsedFormValues","updatedTableData","filter","handleSort","event","property","direction","Object","entries","sortQueryParams","sort","columns","isEnquiry","firstColumn","appliedSort","displayProperties","adminCrudActions","create","createAction","active","_deleteAction","showAddButton","length","createElement","className","onClose","itemName","name","title","displayName","subtitle","to","hookKey","schema","onSort","propTypes","object","isRequired"],"sources":["../../../src/components/ListingTable/ListingTable.js"],"sourcesContent":["import React, { useEffect, useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { useApolloClient } from '@apollo/client';\nimport { withRouter, Link, useLocation } from 'react-router-dom';\nimport { PageHeader, DeleteAction, CardPrompt } from '@blaze-cms/admin';\nimport { useToasts } from '@blaze-react/toaster';\nimport { RenderHook } from '@blaze-cms/plugin-render-hooks-ui';\nimport ListingTableContent from './ListingTableContent';\nimport SearchFilter from './SearchFilter/SearchFilter';\nimport availableActions from '../EntityManager/Entity/actions-handlers';\nimport { fetchData } from './service';\nimport { populateRows, formatRows, getParsedRowData } from './mappers/populate-rows';\nimport { getDefaultQueryParams } from '../../utils/get-default-query-params';\n\nconst ListingTable = ({ match, entitySchema, history }) => {\n const [tableData, setTableData] = useState({});\n const [modalStatus, setModalStatus] = useState(false);\n const [itemToDelete, setItemToDelete] = useState({});\n const [previousSchema, setPreviousSchema] = useState({ id: null });\n const [totalItems, setTotalItems] = useState(0);\n const queryParamsDefault = getDefaultQueryParams(entitySchema);\n const [queryParams, setQueryParams] = useState(queryParamsDefault);\n const [listFilters, setListFilters] = useState([]);\n const client = useApolloClient();\n const { addToast } = useToasts();\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n const currentPage = Number(searchParams.get('page')) || 1;\n\n useEffect(\n () => {\n (async () => {\n if (\n entitySchema.id !== previousSchema.id ||\n (previousSchema.id === null && entitySchema.id)\n ) {\n const updatedQueryParams = {\n ...queryParams,\n offset: currentPage * queryParamsDefault.limit - queryParamsDefault.limit\n };\n await doQuery([], updatedQueryParams);\n setPreviousSchema({ id: entitySchema.id });\n }\n })();\n },\n [client, entitySchema, match.url, previousSchema.id, queryParams] // eslint-disable-line react-hooks/exhaustive-deps\n );\n\n const doQuery = async (filters = listFilters, params = queryParamsDefault) => {\n const { listingData, totalRecords } = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: params\n },\n listFilters: filters\n });\n\n const populatedTable = populateRows({\n toggleModal,\n url: match.url,\n entitySchema,\n rows: listingData\n });\n\n setTableData(populatedTable);\n setTotalItems(totalRecords);\n };\n\n const handleOnPageChange = async ({ pageNumber, offset: _offset }) => {\n const updatedQueryParams = {\n ...queryParams,\n offset: _offset\n };\n\n await doQuery(listFilters, updatedQueryParams);\n\n history.push(`?page=${pageNumber}`);\n document.getElementsByClassName('page')[0].scrollTo(0, 0);\n };\n\n const updateListingFilters = async filters => {\n await doQuery(filters);\n setListFilters(filters);\n };\n\n const onCloseCardPrompt = () => null;\n\n const toggleModal = item => {\n setModalStatus(!!item);\n setItemToDelete(item || {});\n };\n\n const deleteAction = async () => {\n await availableActions.delete.submit(\n {\n entitySchema,\n parsedFormValues: { id: itemToDelete.id },\n client\n },\n addToast\n );\n\n toggleModal();\n\n const updatedTableData = {\n ...tableData,\n rows: tableData.rows.filter(({ id }) => id !== itemToDelete.id)\n };\n\n setTableData(updatedTableData);\n };\n\n const handleSort = async event => {\n const [[property, direction]] = Object.entries(event);\n const sortQueryParams = {\n ...queryParamsDefault,\n sort: [{ property, direction }]\n };\n setQueryParams(sortQueryParams);\n\n const { listingData } = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: sortQueryParams\n },\n listFilters\n });\n const { columns, isEnquiry } = tableData;\n const [firstColumn] = columns;\n\n setTableData({\n ...tableData,\n appliedSort: { [property]: direction },\n rows: formatRows({\n rows: getParsedRowData(listingData),\n url: match.url,\n toggleModal,\n firstColumn,\n isEnquiry,\n entitySchema\n })\n });\n history.push('?page=1');\n };\n if (!tableData || !tableData.rows) return 'loading';\n\n const {\n displayProperties: {\n adminCrudActions: {\n create: createAction = { active: true },\n delete: _deleteAction = { active: true }\n } = {}\n } = {}\n } = entitySchema;\n\n const showAddButton = !tableData.rows.length && listFilters.length === 0;\n\n return (\n <div className=\"page\">\n {modalStatus && _deleteAction.active && (\n <DeleteAction\n data-testid=\"deleteEntity\"\n onClose={toggleModal}\n deleteAction={deleteAction}\n itemName={itemToDelete.name}\n />\n )}\n <PageHeader title={entitySchema.displayName} subtitle=\"\">\n {createAction.active && !showAddButton && (\n <Link data-testid=\"addEntity\" className=\"button button--small\" to={`${match.url}/create`}>\n Add\n </Link>\n )}\n </PageHeader>\n {showAddButton ? (\n <CardPrompt>\n <Link\n className=\"button button--rounded button--cta\"\n to={`${match.url}/create`}\n data-testid=\"add-button\">\n Add\n </Link>\n </CardPrompt>\n ) : (\n <>\n <RenderHook\n hookKey=\"entity:listing:main:top\"\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n <SearchFilter\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n <ListingTableContent\n totalItems={totalItems}\n currentPage={currentPage}\n onSort={handleSort}\n handleOnPageChange={handleOnPageChange}\n tableData={tableData}\n onCloseCardPrompt={onCloseCardPrompt}\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n </>\n )}\n </div>\n );\n};\nListingTable.propTypes = {\n entitySchema: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired,\n history: PropTypes.object.isRequired\n};\n\nexport default withRouter(ListingTable);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ListingTable.js","names":["React","useEffect","useState","Fragment","PropTypes","useApolloClient","withRouter","Link","useLocation","PageHeader","DeleteAction","CardPrompt","useToasts","RenderHook","ListingTableContent","SearchFilter","availableActions","fetchData","populateRows","formatRows","getParsedRowData","getDefaultQueryParams","ListingTable","match","entitySchema","history","tableData","setTableData","modalStatus","setModalStatus","itemToDelete","setItemToDelete","previousSchema","setPreviousSchema","id","totalItems","setTotalItems","queryParamsDefault","queryParams","setQueryParams","listFilters","setListFilters","client","addToast","location","searchParams","URLSearchParams","search","currentPage","Number","get","updatedQueryParams","_objectSpread","offset","limit","doQuery","url","filters","params","listingData","totalRecords","querySettings","populatedTable","toggleModal","rows","handleOnPageChange","pageNumber","_offset","push","document","getElementsByClassName","scrollTo","updateListingFilters","onCloseCardPrompt","item","deleteAction","delete","submit","parsedFormValues","updatedTableData","filter","handleSort","event","property","direction","Object","entries","sortQueryParams","sort","columns","isEnquiry","firstColumn","appliedSort","displayProperties","adminCrudActions","create","createAction","active","_deleteAction","showAddButton","length","createElement","className","onClose","itemName","name","title","displayNamePlural","displayName","subtitle","to","hookKey","schema","onSort","propTypes","object","isRequired"],"sources":["../../../src/components/ListingTable/ListingTable.js"],"sourcesContent":["import React, { useEffect, useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { useApolloClient } from '@apollo/client';\nimport { withRouter, Link, useLocation } from 'react-router-dom';\nimport { PageHeader, DeleteAction, CardPrompt } from '@blaze-cms/admin';\nimport { useToasts } from '@blaze-react/toaster';\nimport { RenderHook } from '@blaze-cms/plugin-render-hooks-ui';\nimport ListingTableContent from './ListingTableContent';\nimport SearchFilter from './SearchFilter/SearchFilter';\nimport availableActions from '../EntityManager/Entity/actions-handlers';\nimport { fetchData } from './service';\nimport { populateRows, formatRows, getParsedRowData } from './mappers/populate-rows';\nimport { getDefaultQueryParams } from '../../utils/get-default-query-params';\n\nconst ListingTable = ({ match, entitySchema, history }) => {\n const [tableData, setTableData] = useState({});\n const [modalStatus, setModalStatus] = useState(false);\n const [itemToDelete, setItemToDelete] = useState({});\n const [previousSchema, setPreviousSchema] = useState({ id: null });\n const [totalItems, setTotalItems] = useState(0);\n const queryParamsDefault = getDefaultQueryParams(entitySchema);\n const [queryParams, setQueryParams] = useState(queryParamsDefault);\n const [listFilters, setListFilters] = useState([]);\n const client = useApolloClient();\n const { addToast } = useToasts();\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n const currentPage = Number(searchParams.get('page')) || 1;\n\n useEffect(\n () => {\n (async () => {\n if (\n entitySchema.id !== previousSchema.id ||\n (previousSchema.id === null && entitySchema.id)\n ) {\n const updatedQueryParams = {\n ...queryParams,\n offset: currentPage * queryParamsDefault.limit - queryParamsDefault.limit\n };\n await doQuery([], updatedQueryParams);\n setPreviousSchema({ id: entitySchema.id });\n }\n })();\n },\n [client, entitySchema, match.url, previousSchema.id, queryParams] // eslint-disable-line react-hooks/exhaustive-deps\n );\n\n const doQuery = async (filters = listFilters, params = queryParamsDefault) => {\n const { listingData, totalRecords } = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: params\n },\n listFilters: filters\n });\n\n const populatedTable = populateRows({\n toggleModal,\n url: match.url,\n entitySchema,\n rows: listingData\n });\n\n setTableData(populatedTable);\n setTotalItems(totalRecords);\n };\n\n const handleOnPageChange = async ({ pageNumber, offset: _offset }) => {\n const updatedQueryParams = {\n ...queryParams,\n offset: _offset\n };\n\n await doQuery(listFilters, updatedQueryParams);\n\n history.push(`?page=${pageNumber}`);\n document.getElementsByClassName('page')[0].scrollTo(0, 0);\n };\n\n const updateListingFilters = async filters => {\n await doQuery(filters);\n setListFilters(filters);\n };\n\n const onCloseCardPrompt = () => null;\n\n const toggleModal = item => {\n setModalStatus(!!item);\n setItemToDelete(item || {});\n };\n\n const deleteAction = async () => {\n await availableActions.delete.submit(\n {\n entitySchema,\n parsedFormValues: { id: itemToDelete.id },\n client\n },\n addToast\n );\n\n toggleModal();\n\n const updatedTableData = {\n ...tableData,\n rows: tableData.rows.filter(({ id }) => id !== itemToDelete.id)\n };\n\n setTableData(updatedTableData);\n };\n\n const handleSort = async event => {\n const [[property, direction]] = Object.entries(event);\n const sortQueryParams = {\n ...queryParamsDefault,\n sort: [{ property, direction }]\n };\n setQueryParams(sortQueryParams);\n\n const { listingData } = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: sortQueryParams\n },\n listFilters\n });\n const { columns, isEnquiry } = tableData;\n const [firstColumn] = columns;\n\n setTableData({\n ...tableData,\n appliedSort: { [property]: direction },\n rows: formatRows({\n rows: getParsedRowData(listingData),\n url: match.url,\n toggleModal,\n firstColumn,\n isEnquiry,\n entitySchema\n })\n });\n history.push('?page=1');\n };\n if (!tableData || !tableData.rows) return 'loading';\n\n const {\n displayProperties: {\n adminCrudActions: {\n create: createAction = { active: true },\n delete: _deleteAction = { active: true }\n } = {}\n } = {}\n } = entitySchema;\n\n const showAddButton = !tableData.rows.length && listFilters.length === 0;\n\n return (\n <div className=\"page\">\n {modalStatus && _deleteAction.active && (\n <DeleteAction\n data-testid=\"deleteEntity\"\n onClose={toggleModal}\n deleteAction={deleteAction}\n itemName={itemToDelete.name}\n />\n )}\n <PageHeader title={entitySchema.displayNamePlural || entitySchema.displayName} subtitle=\"\">\n {createAction.active && !showAddButton && (\n <Link data-testid=\"addEntity\" className=\"button button--small\" to={`${match.url}/create`}>\n Add\n </Link>\n )}\n </PageHeader>\n {showAddButton ? (\n <CardPrompt>\n <Link\n className=\"button button--rounded button--cta\"\n to={`${match.url}/create`}\n data-testid=\"add-button\">\n Add\n </Link>\n </CardPrompt>\n ) : (\n <>\n <RenderHook\n hookKey=\"entity:listing:main:top\"\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n <SearchFilter\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n <ListingTableContent\n totalItems={totalItems}\n currentPage={currentPage}\n onSort={handleSort}\n handleOnPageChange={handleOnPageChange}\n tableData={tableData}\n onCloseCardPrompt={onCloseCardPrompt}\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n </>\n )}\n </div>\n );\n};\nListingTable.propTypes = {\n entitySchema: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired,\n history: PropTypes.object.isRequired\n};\n\nexport default withRouter(ListingTable);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,6 +2,16 @@ import { getQuery } from '@blaze-cms/admin-ui-utils';
|
|
|
2
2
|
const {
|
|
3
3
|
MENU_PERMISSIONS
|
|
4
4
|
} = require('../constants');
|
|
5
|
+
|
|
6
|
+
// Menu items label a listing of many records, so they use the plural. The
|
|
7
|
+
// fallback matters: this package and the API are published independently, so an
|
|
8
|
+
// admin bundle can run against an API that does not yet resolve the field.
|
|
9
|
+
function getMenuLabel({
|
|
10
|
+
displayName,
|
|
11
|
+
displayNamePlural
|
|
12
|
+
}) {
|
|
13
|
+
return displayNamePlural || displayName || '';
|
|
14
|
+
}
|
|
5
15
|
function getAddContentMenuItems(app) {
|
|
6
16
|
return async ({
|
|
7
17
|
addConfig
|
|
@@ -20,16 +30,21 @@ function getAddContentMenuItems(app) {
|
|
|
20
30
|
});
|
|
21
31
|
if (!getEntitySchemas || !getEntitySchemas.length) return; // no items so don't add section
|
|
22
32
|
|
|
23
|
-
const menuItems = {};
|
|
24
33
|
const sectionMenuItems = {
|
|
25
34
|
settings: {}
|
|
26
35
|
};
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
36
|
+
|
|
37
|
+
// Order by the label that is rendered, not by displayName. getEntitySchemas
|
|
38
|
+
// is sorted on displayName server-side and that order serves every other
|
|
39
|
+
// consumer, which shows the singular, so the plural ordering belongs here.
|
|
40
|
+
// The explicit `order` is what MenuSectionItems reads to sort.
|
|
41
|
+
const orderedEntities = [...getEntitySchemas].sort((entityA, entityB) => getMenuLabel(entityA).localeCompare(getMenuLabel(entityB)));
|
|
42
|
+
orderedEntities.forEach((entity, order) => {
|
|
43
|
+
const {
|
|
44
|
+
id,
|
|
45
|
+
displayProperties
|
|
46
|
+
} = entity;
|
|
47
|
+
if (!displayProperties) return;
|
|
33
48
|
const {
|
|
34
49
|
adminMenu: {
|
|
35
50
|
sectionKey = 'settings'
|
|
@@ -37,18 +52,15 @@ function getAddContentMenuItems(app) {
|
|
|
37
52
|
} = displayProperties;
|
|
38
53
|
const sectionItems = sectionMenuItems[sectionKey] || {};
|
|
39
54
|
sectionItems[id] = {
|
|
40
|
-
label:
|
|
55
|
+
label: getMenuLabel(entity),
|
|
56
|
+
order,
|
|
41
57
|
uri: `/data-listing/${id}`
|
|
42
58
|
};
|
|
43
59
|
sectionMenuItems[sectionKey] = sectionItems;
|
|
44
60
|
});
|
|
45
61
|
const menuConfig = {
|
|
46
62
|
main: {
|
|
47
|
-
items: {
|
|
48
|
-
settings: {
|
|
49
|
-
items: menuItems
|
|
50
|
-
}
|
|
51
|
-
}
|
|
63
|
+
items: {}
|
|
52
64
|
}
|
|
53
65
|
};
|
|
54
66
|
Object.entries(sectionMenuItems).forEach(([sectionKey, sectionItems]) => {
|
|
@@ -56,15 +68,6 @@ function getAddContentMenuItems(app) {
|
|
|
56
68
|
sectionConfig.items = sectionItems;
|
|
57
69
|
menuConfig.main.items[sectionKey] = sectionConfig;
|
|
58
70
|
});
|
|
59
|
-
getEntitySchemas.forEach(({
|
|
60
|
-
id,
|
|
61
|
-
displayName
|
|
62
|
-
}) => {
|
|
63
|
-
menuItems[id] = {
|
|
64
|
-
label: displayName,
|
|
65
|
-
uri: `/data-listing/${id}`
|
|
66
|
-
};
|
|
67
|
-
});
|
|
68
71
|
addConfig(menuConfig);
|
|
69
72
|
};
|
|
70
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-content-menu-items.js","names":["getQuery","MENU_PERMISSIONS","require","getAddContentMenuItems","app","addConfig","client","getClient","data","getEntitySchemas","query","variables","canDoActions","length","
|
|
1
|
+
{"version":3,"file":"add-content-menu-items.js","names":["getQuery","MENU_PERMISSIONS","require","getMenuLabel","displayName","displayNamePlural","getAddContentMenuItems","app","addConfig","client","getClient","data","getEntitySchemas","query","variables","canDoActions","length","sectionMenuItems","settings","orderedEntities","sort","entityA","entityB","localeCompare","forEach","entity","order","id","displayProperties","adminMenu","sectionKey","sectionItems","label","uri","menuConfig","main","items","Object","entries","sectionConfig"],"sources":["../../src/utils/add-content-menu-items.js"],"sourcesContent":["import { getQuery } from '@blaze-cms/admin-ui-utils';\n\nconst { MENU_PERMISSIONS } = require('../constants');\n\n// Menu items label a listing of many records, so they use the plural. The\n// fallback matters: this package and the API are published independently, so an\n// admin bundle can run against an API that does not yet resolve the field.\nfunction getMenuLabel({ displayName, displayNamePlural }) {\n return displayNamePlural || displayName || '';\n}\n\nfunction getAddContentMenuItems(app) {\n return async ({ addConfig }) => {\n const client = app.getClient();\n const {\n data: { getEntitySchemas }\n } = await client.query({\n query: getQuery('GET_USER_EDITABLE_ENTITIES'),\n variables: {\n // only return entities that the current user can do the following actions on\n canDoActions: MENU_PERMISSIONS\n }\n });\n\n if (!getEntitySchemas || !getEntitySchemas.length) return; // no items so don't add section\n\n const sectionMenuItems = { settings: {} };\n\n // Order by the label that is rendered, not by displayName. getEntitySchemas\n // is sorted on displayName server-side and that order serves every other\n // consumer, which shows the singular, so the plural ordering belongs here.\n // The explicit `order` is what MenuSectionItems reads to sort.\n const orderedEntities = [...getEntitySchemas].sort((entityA, entityB) =>\n getMenuLabel(entityA).localeCompare(getMenuLabel(entityB))\n );\n\n orderedEntities.forEach((entity, order) => {\n const { id, displayProperties } = entity;\n if (!displayProperties) return;\n\n const { adminMenu: { sectionKey = 'settings' } = {} } = displayProperties;\n const sectionItems = sectionMenuItems[sectionKey] || {};\n sectionItems[id] = {\n label: getMenuLabel(entity),\n order,\n uri: `/data-listing/${id}`\n };\n sectionMenuItems[sectionKey] = sectionItems;\n });\n\n const menuConfig = { main: { items: {} } };\n\n Object.entries(sectionMenuItems).forEach(([sectionKey, sectionItems]) => {\n const sectionConfig = menuConfig.main.items[sectionKey] || {};\n sectionConfig.items = sectionItems;\n menuConfig.main.items[sectionKey] = sectionConfig;\n });\n\n addConfig(menuConfig);\n };\n}\n\nexport default getAddContentMenuItems;\n"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,2BAA2B;AAEpD,MAAM;EAAEC;AAAiB,CAAC,GAAGC,OAAO,CAAC,cAAc,CAAC;;AAEpD;AACA;AACA;AACA,SAASC,YAAYA,CAAC;EAAEC,WAAW;EAAEC;AAAkB,CAAC,EAAE;EACxD,OAAOA,iBAAiB,IAAID,WAAW,IAAI,EAAE;AAC/C;AAEA,SAASE,sBAAsBA,CAACC,GAAG,EAAE;EACnC,OAAO,OAAO;IAAEC;EAAU,CAAC,KAAK;IAC9B,MAAMC,MAAM,GAAGF,GAAG,CAACG,SAAS,CAAC,CAAC;IAC9B,MAAM;MACJC,IAAI,EAAE;QAAEC;MAAiB;IAC3B,CAAC,GAAG,MAAMH,MAAM,CAACI,KAAK,CAAC;MACrBA,KAAK,EAAEb,QAAQ,CAAC,4BAA4B,CAAC;MAC7Cc,SAAS,EAAE;QACT;QACAC,YAAY,EAAEd;MAChB;IACF,CAAC,CAAC;IAEF,IAAI,CAACW,gBAAgB,IAAI,CAACA,gBAAgB,CAACI,MAAM,EAAE,OAAO,CAAC;;IAE3D,MAAMC,gBAAgB,GAAG;MAAEC,QAAQ,EAAE,CAAC;IAAE,CAAC;;IAEzC;IACA;IACA;IACA;IACA,MAAMC,eAAe,GAAG,CAAC,GAAGP,gBAAgB,CAAC,CAACQ,IAAI,CAAC,CAACC,OAAO,EAAEC,OAAO,KAClEnB,YAAY,CAACkB,OAAO,CAAC,CAACE,aAAa,CAACpB,YAAY,CAACmB,OAAO,CAAC,CAC3D,CAAC;IAEDH,eAAe,CAACK,OAAO,CAAC,CAACC,MAAM,EAAEC,KAAK,KAAK;MACzC,MAAM;QAAEC,EAAE;QAAEC;MAAkB,CAAC,GAAGH,MAAM;MACxC,IAAI,CAACG,iBAAiB,EAAE;MAExB,MAAM;QAAEC,SAAS,EAAE;UAAEC,UAAU,GAAG;QAAW,CAAC,GAAG,CAAC;MAAE,CAAC,GAAGF,iBAAiB;MACzE,MAAMG,YAAY,GAAGd,gBAAgB,CAACa,UAAU,CAAC,IAAI,CAAC,CAAC;MACvDC,YAAY,CAACJ,EAAE,CAAC,GAAG;QACjBK,KAAK,EAAE7B,YAAY,CAACsB,MAAM,CAAC;QAC3BC,KAAK;QACLO,GAAG,EAAE,iBAAiBN,EAAE;MAC1B,CAAC;MACDV,gBAAgB,CAACa,UAAU,CAAC,GAAGC,YAAY;IAC7C,CAAC,CAAC;IAEF,MAAMG,UAAU,GAAG;MAAEC,IAAI,EAAE;QAAEC,KAAK,EAAE,CAAC;MAAE;IAAE,CAAC;IAE1CC,MAAM,CAACC,OAAO,CAACrB,gBAAgB,CAAC,CAACO,OAAO,CAAC,CAAC,CAACM,UAAU,EAAEC,YAAY,CAAC,KAAK;MACvE,MAAMQ,aAAa,GAAGL,UAAU,CAACC,IAAI,CAACC,KAAK,CAACN,UAAU,CAAC,IAAI,CAAC,CAAC;MAC7DS,aAAa,CAACH,KAAK,GAAGL,YAAY;MAClCG,UAAU,CAACC,IAAI,CAACC,KAAK,CAACN,UAAU,CAAC,GAAGS,aAAa;IACnD,CAAC,CAAC;IAEF/B,SAAS,CAAC0B,UAAU,CAAC;EACvB,CAAC;AACH;AAEA,eAAe5B,sBAAsB","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blaze-cms/plugin-data-ui",
|
|
3
|
-
"version": "0.146.0-rc-eagle-3.
|
|
3
|
+
"version": "0.146.0-rc-eagle-3.10",
|
|
4
4
|
"description": "Blaze plugin data ui",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-es/index.js",
|
|
@@ -32,11 +32,11 @@
|
|
|
32
32
|
},
|
|
33
33
|
"license": "GPL-3.0",
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@blaze-cms/admin-ui-utils": "0.146.0-rc-eagle-3.
|
|
35
|
+
"@blaze-cms/admin-ui-utils": "0.146.0-rc-eagle-3.10",
|
|
36
36
|
"@blaze-cms/core-errors": "0.146.0-rc-eagle-3.0",
|
|
37
37
|
"@blaze-cms/plugin-render-hooks-ui": "0.146.0-rc-eagle-3.0",
|
|
38
|
-
"@blaze-cms/react-form-builder": "0.146.0-rc-eagle-3.
|
|
39
|
-
"@blaze-cms/react-page-builder": "0.146.0-rc-eagle-3.
|
|
38
|
+
"@blaze-cms/react-form-builder": "0.146.0-rc-eagle-3.10",
|
|
39
|
+
"@blaze-cms/react-page-builder": "0.146.0-rc-eagle-3.10",
|
|
40
40
|
"@blaze-cms/setup-ui": "0.146.0-rc-eagle-3.0",
|
|
41
41
|
"@blaze-cms/versioning-ui": "0.146.0-rc-eagle-3.0",
|
|
42
42
|
"@blaze-react/button": "0.8.0-alpha.82",
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
"lib/*",
|
|
73
73
|
"lib-es/*"
|
|
74
74
|
],
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "782e5e3c8df78fc8c873288a155958ff5b5c6705"
|
|
76
76
|
}
|
|
@@ -167,7 +167,7 @@ const ListingTable = ({ match, entitySchema, history }) => {
|
|
|
167
167
|
itemName={itemToDelete.name}
|
|
168
168
|
/>
|
|
169
169
|
)}
|
|
170
|
-
<PageHeader title={entitySchema.displayName} subtitle="">
|
|
170
|
+
<PageHeader title={entitySchema.displayNamePlural || entitySchema.displayName} subtitle="">
|
|
171
171
|
{createAction.active && !showAddButton && (
|
|
172
172
|
<Link data-testid="addEntity" className="button button--small" to={`${match.url}/create`}>
|
|
173
173
|
Add
|
|
@@ -2,6 +2,13 @@ import { getQuery } from '@blaze-cms/admin-ui-utils';
|
|
|
2
2
|
|
|
3
3
|
const { MENU_PERMISSIONS } = require('../constants');
|
|
4
4
|
|
|
5
|
+
// Menu items label a listing of many records, so they use the plural. The
|
|
6
|
+
// fallback matters: this package and the API are published independently, so an
|
|
7
|
+
// admin bundle can run against an API that does not yet resolve the field.
|
|
8
|
+
function getMenuLabel({ displayName, displayNamePlural }) {
|
|
9
|
+
return displayNamePlural || displayName || '';
|
|
10
|
+
}
|
|
11
|
+
|
|
5
12
|
function getAddContentMenuItems(app) {
|
|
6
13
|
return async ({ addConfig }) => {
|
|
7
14
|
const client = app.getClient();
|
|
@@ -17,30 +24,31 @@ function getAddContentMenuItems(app) {
|
|
|
17
24
|
|
|
18
25
|
if (!getEntitySchemas || !getEntitySchemas.length) return; // no items so don't add section
|
|
19
26
|
|
|
20
|
-
const menuItems = {};
|
|
21
27
|
const sectionMenuItems = { settings: {} };
|
|
22
28
|
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
// Order by the label that is rendered, not by displayName. getEntitySchemas
|
|
30
|
+
// is sorted on displayName server-side and that order serves every other
|
|
31
|
+
// consumer, which shows the singular, so the plural ordering belongs here.
|
|
32
|
+
// The explicit `order` is what MenuSectionItems reads to sort.
|
|
33
|
+
const orderedEntities = [...getEntitySchemas].sort((entityA, entityB) =>
|
|
34
|
+
getMenuLabel(entityA).localeCompare(getMenuLabel(entityB))
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
orderedEntities.forEach((entity, order) => {
|
|
38
|
+
const { id, displayProperties } = entity;
|
|
39
|
+
if (!displayProperties) return;
|
|
25
40
|
|
|
26
41
|
const { adminMenu: { sectionKey = 'settings' } = {} } = displayProperties;
|
|
27
42
|
const sectionItems = sectionMenuItems[sectionKey] || {};
|
|
28
43
|
sectionItems[id] = {
|
|
29
|
-
label:
|
|
44
|
+
label: getMenuLabel(entity),
|
|
45
|
+
order,
|
|
30
46
|
uri: `/data-listing/${id}`
|
|
31
47
|
};
|
|
32
48
|
sectionMenuItems[sectionKey] = sectionItems;
|
|
33
49
|
});
|
|
34
50
|
|
|
35
|
-
const menuConfig = {
|
|
36
|
-
main: {
|
|
37
|
-
items: {
|
|
38
|
-
settings: {
|
|
39
|
-
items: menuItems
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
};
|
|
51
|
+
const menuConfig = { main: { items: {} } };
|
|
44
52
|
|
|
45
53
|
Object.entries(sectionMenuItems).forEach(([sectionKey, sectionItems]) => {
|
|
46
54
|
const sectionConfig = menuConfig.main.items[sectionKey] || {};
|
|
@@ -48,13 +56,6 @@ function getAddContentMenuItems(app) {
|
|
|
48
56
|
menuConfig.main.items[sectionKey] = sectionConfig;
|
|
49
57
|
});
|
|
50
58
|
|
|
51
|
-
getEntitySchemas.forEach(({ id, displayName }) => {
|
|
52
|
-
menuItems[id] = {
|
|
53
|
-
label: displayName,
|
|
54
|
-
uri: `/data-listing/${id}`
|
|
55
|
-
};
|
|
56
|
-
});
|
|
57
|
-
|
|
58
59
|
addConfig(menuConfig);
|
|
59
60
|
};
|
|
60
61
|
}
|