@blaze-cms/plugin-data-ui 0.129.0-project-admin-customisations.1 → 0.129.0
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/CHANGELOG.md +6 -16
- package/README.md +0 -42
- package/lib/components/EntityDataListing/EntityDataListing.js +24 -3
- package/lib/components/EntityDataListing/EntityDataListing.js.map +1 -1
- package/lib/components/EntityManager/Entity/Entity.js +18 -29
- package/lib/components/EntityManager/Entity/Entity.js.map +1 -1
- package/lib/components/EntityManager/Entity/SideBarRelations/index.js +7 -23
- package/lib/components/EntityManager/Entity/SideBarRelations/index.js.map +1 -1
- package/lib/components/ListingTable/ListingTable.js +26 -5
- package/lib/components/ListingTable/ListingTable.js.map +1 -1
- package/lib/components/ListingTable/ListingTableContent/ListingTableContent.js +12 -5
- package/lib/components/ListingTable/ListingTableContent/ListingTableContent.js.map +1 -1
- package/lib/index.js +11 -3
- package/lib/index.js.map +1 -1
- package/lib/utils/add-content-menu-items.js +13 -64
- package/lib/utils/add-content-menu-items.js.map +1 -1
- package/lib-es/components/EntityDataListing/EntityDataListing.js +14 -3
- package/lib-es/components/EntityDataListing/EntityDataListing.js.map +1 -1
- package/lib-es/components/EntityManager/Entity/Entity.js +18 -29
- package/lib-es/components/EntityManager/Entity/Entity.js.map +1 -1
- package/lib-es/components/EntityManager/Entity/SideBarRelations/index.js +8 -24
- package/lib-es/components/EntityManager/Entity/SideBarRelations/index.js.map +1 -1
- package/lib-es/components/ListingTable/ListingTable.js +25 -4
- package/lib-es/components/ListingTable/ListingTable.js.map +1 -1
- package/lib-es/components/ListingTable/ListingTableContent/ListingTableContent.js +13 -6
- package/lib-es/components/ListingTable/ListingTableContent/ListingTableContent.js.map +1 -1
- package/lib-es/index.js +9 -1
- package/lib-es/index.js.map +1 -1
- package/lib-es/utils/add-content-menu-items.js +5 -49
- package/lib-es/utils/add-content-menu-items.js.map +1 -1
- package/package.json +9 -10
- package/src/components/EntityDataListing/EntityDataListing.js +12 -3
- package/src/components/EntityManager/Entity/Entity.js +59 -65
- package/src/components/EntityManager/Entity/SideBarRelations/index.js +19 -51
- package/src/components/ListingTable/ListingTable.js +18 -4
- package/src/components/ListingTable/ListingTableContent/ListingTableContent.js +16 -5
- package/src/index.js +8 -1
- package/src/utils/add-content-menu-items.js +3 -45
- package/lib/components/EntityManager/Entity/EntitiyNavLinks/EntityNavLinks.js +0 -39
- package/lib/components/EntityManager/Entity/EntitiyNavLinks/EntityNavLinks.js.map +0 -1
- package/lib/components/EntityManager/Entity/EntitiyNavLinks/index.js +0 -12
- package/lib/components/EntityManager/Entity/EntitiyNavLinks/index.js.map +0 -1
- package/lib/components/EntityManager/Entity/SideBarRelations/container/CustomSidebarInfoContainer.js +0 -44
- package/lib/components/EntityManager/Entity/SideBarRelations/container/CustomSidebarInfoContainer.js.map +0 -1
- package/lib/components/EntityManager/Entity/SideBarRelations/helpers/build-dynamic-query.js +0 -32
- package/lib/components/EntityManager/Entity/SideBarRelations/helpers/build-dynamic-query.js.map +0 -1
- package/lib/components/EntityManager/Entity/SideBarRelations/hooks/useCustomSidebarData.js +0 -45
- package/lib/components/EntityManager/Entity/SideBarRelations/hooks/useCustomSidebarData.js.map +0 -1
- package/lib/components/EntityManager/Entity/SideBarRelations/presentational/CustomSidebarInfo.js +0 -38
- package/lib/components/EntityManager/Entity/SideBarRelations/presentational/CustomSidebarInfo.js.map +0 -1
- package/lib/components/InfoBoxes/InfoBoxes.js +0 -36
- package/lib/components/InfoBoxes/InfoBoxes.js.map +0 -1
- package/lib/components/InfoBoxes/container/InfoBoxContainer.js +0 -44
- package/lib/components/InfoBoxes/container/InfoBoxContainer.js.map +0 -1
- package/lib/components/InfoBoxes/helpers/build-dynamic-query.js +0 -25
- package/lib/components/InfoBoxes/helpers/build-dynamic-query.js.map +0 -1
- package/lib/components/InfoBoxes/hooks/useData.js +0 -42
- package/lib/components/InfoBoxes/hooks/useData.js.map +0 -1
- package/lib/components/InfoBoxes/hooks/useInfoBox.js +0 -26
- package/lib/components/InfoBoxes/hooks/useInfoBox.js.map +0 -1
- package/lib/components/InfoBoxes/index.js +0 -12
- package/lib/components/InfoBoxes/index.js.map +0 -1
- package/lib/components/InfoBoxes/presentational/InfoBox.js +0 -46
- package/lib/components/InfoBoxes/presentational/InfoBox.js.map +0 -1
- package/lib-es/components/EntityManager/Entity/EntitiyNavLinks/EntityNavLinks.js +0 -30
- package/lib-es/components/EntityManager/Entity/EntitiyNavLinks/EntityNavLinks.js.map +0 -1
- package/lib-es/components/EntityManager/Entity/EntitiyNavLinks/index.js +0 -3
- package/lib-es/components/EntityManager/Entity/EntitiyNavLinks/index.js.map +0 -1
- package/lib-es/components/EntityManager/Entity/SideBarRelations/container/CustomSidebarInfoContainer.js +0 -30
- package/lib-es/components/EntityManager/Entity/SideBarRelations/container/CustomSidebarInfoContainer.js.map +0 -1
- package/lib-es/components/EntityManager/Entity/SideBarRelations/helpers/build-dynamic-query.js +0 -26
- package/lib-es/components/EntityManager/Entity/SideBarRelations/helpers/build-dynamic-query.js.map +0 -1
- package/lib-es/components/EntityManager/Entity/SideBarRelations/hooks/useCustomSidebarData.js +0 -39
- package/lib-es/components/EntityManager/Entity/SideBarRelations/hooks/useCustomSidebarData.js.map +0 -1
- package/lib-es/components/EntityManager/Entity/SideBarRelations/presentational/CustomSidebarInfo.js +0 -24
- package/lib-es/components/EntityManager/Entity/SideBarRelations/presentational/CustomSidebarInfo.js.map +0 -1
- package/lib-es/components/InfoBoxes/InfoBoxes.js +0 -28
- package/lib-es/components/InfoBoxes/InfoBoxes.js.map +0 -1
- package/lib-es/components/InfoBoxes/container/InfoBoxContainer.js +0 -30
- package/lib-es/components/InfoBoxes/container/InfoBoxContainer.js.map +0 -1
- package/lib-es/components/InfoBoxes/helpers/build-dynamic-query.js +0 -25
- package/lib-es/components/InfoBoxes/helpers/build-dynamic-query.js.map +0 -1
- package/lib-es/components/InfoBoxes/hooks/useData.js +0 -37
- package/lib-es/components/InfoBoxes/hooks/useData.js.map +0 -1
- package/lib-es/components/InfoBoxes/hooks/useInfoBox.js +0 -19
- package/lib-es/components/InfoBoxes/hooks/useInfoBox.js.map +0 -1
- package/lib-es/components/InfoBoxes/index.js +0 -3
- package/lib-es/components/InfoBoxes/index.js.map +0 -1
- package/lib-es/components/InfoBoxes/presentational/InfoBox.js +0 -31
- package/lib-es/components/InfoBoxes/presentational/InfoBox.js.map +0 -1
- package/src/components/EntityManager/Entity/EntitiyNavLinks/EntityNavLinks.js +0 -26
- package/src/components/EntityManager/Entity/EntitiyNavLinks/index.js +0 -3
- package/src/components/EntityManager/Entity/SideBarRelations/container/CustomSidebarInfoContainer.js +0 -22
- package/src/components/EntityManager/Entity/SideBarRelations/helpers/build-dynamic-query.js +0 -33
- package/src/components/EntityManager/Entity/SideBarRelations/hooks/useCustomSidebarData.js +0 -28
- package/src/components/EntityManager/Entity/SideBarRelations/presentational/CustomSidebarInfo.js +0 -33
- package/src/components/InfoBoxes/InfoBoxes.js +0 -24
- package/src/components/InfoBoxes/container/InfoBoxContainer.js +0 -22
- package/src/components/InfoBoxes/helpers/build-dynamic-query.js +0 -25
- package/src/components/InfoBoxes/hooks/useData.js +0 -20
- package/src/components/InfoBoxes/hooks/useInfoBox.js +0 -13
- package/src/components/InfoBoxes/index.js +0 -3
- package/src/components/InfoBoxes/presentational/InfoBox.js +0 -34
|
@@ -2,10 +2,8 @@ import { getQuery } from '@blaze-cms/admin-ui-utils';
|
|
|
2
2
|
const {
|
|
3
3
|
MENU_PERMISSIONS
|
|
4
4
|
} = require('../constants');
|
|
5
|
-
function getAddContentMenuItems(app) {
|
|
6
|
-
return async
|
|
7
|
-
addConfig
|
|
8
|
-
}) => {
|
|
5
|
+
function getAddContentMenuItems(app, sectionKey) {
|
|
6
|
+
return async addItem => {
|
|
9
7
|
const client = app.getClient();
|
|
10
8
|
const {
|
|
11
9
|
data: {
|
|
@@ -18,57 +16,15 @@ function getAddContentMenuItems(app) {
|
|
|
18
16
|
canDoActions: MENU_PERMISSIONS
|
|
19
17
|
}
|
|
20
18
|
});
|
|
21
|
-
if (!getEntitySchemas || !getEntitySchemas.length) return; // no items so don't add section
|
|
22
|
-
|
|
23
|
-
const menuItems = {};
|
|
24
|
-
const sectionMenuItems = {
|
|
25
|
-
content: {}
|
|
26
|
-
};
|
|
27
|
-
getEntitySchemas.forEach(({
|
|
28
|
-
id,
|
|
29
|
-
displayName,
|
|
30
|
-
displayProperties
|
|
31
|
-
}) => {
|
|
32
|
-
if (!displayProperties) return null;
|
|
33
|
-
const {
|
|
34
|
-
adminMenu: {
|
|
35
|
-
sectionKey = 'content'
|
|
36
|
-
} = {}
|
|
37
|
-
} = displayProperties;
|
|
38
|
-
const sectionItems = sectionMenuItems[sectionKey] || {};
|
|
39
|
-
sectionItems[id] = {
|
|
40
|
-
label: displayName,
|
|
41
|
-
uri: `/data-listing/${id}`
|
|
42
|
-
};
|
|
43
|
-
sectionMenuItems[sectionKey] = sectionItems;
|
|
44
|
-
});
|
|
45
|
-
const menuConfig = {
|
|
46
|
-
main: {
|
|
47
|
-
items: {
|
|
48
|
-
content: {
|
|
49
|
-
label: 'Content',
|
|
50
|
-
loadOpen: true,
|
|
51
|
-
order: 10,
|
|
52
|
-
items: menuItems
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
Object.entries(sectionMenuItems).forEach(([sectionKey, sectionItems]) => {
|
|
58
|
-
const sectionConfig = menuConfig.main.items[sectionKey] || {};
|
|
59
|
-
sectionConfig.items = sectionItems;
|
|
60
|
-
menuConfig.main.items[sectionKey] = sectionConfig;
|
|
61
|
-
});
|
|
62
19
|
getEntitySchemas.forEach(({
|
|
63
20
|
id,
|
|
64
21
|
displayName
|
|
65
22
|
}) => {
|
|
66
|
-
|
|
67
|
-
|
|
23
|
+
addItem({
|
|
24
|
+
name: displayName,
|
|
68
25
|
uri: `/data-listing/${id}`
|
|
69
|
-
};
|
|
26
|
+
}, sectionKey);
|
|
70
27
|
});
|
|
71
|
-
addConfig(menuConfig);
|
|
72
28
|
};
|
|
73
29
|
}
|
|
74
30
|
export default getAddContentMenuItems;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-content-menu-items.js","names":["getQuery","MENU_PERMISSIONS","require","getAddContentMenuItems","app","
|
|
1
|
+
{"version":3,"file":"add-content-menu-items.js","names":["getQuery","MENU_PERMISSIONS","require","getAddContentMenuItems","app","sectionKey","addItem","client","getClient","data","getEntitySchemas","query","variables","canDoActions","forEach","id","displayName","name","uri"],"sources":["../../src/utils/add-content-menu-items.js"],"sourcesContent":["import { getQuery } from '@blaze-cms/admin-ui-utils';\n\nconst { MENU_PERMISSIONS } = require('../constants');\n\nfunction getAddContentMenuItems(app, sectionKey) {\n return async addItem => {\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 getEntitySchemas.forEach(({ id, displayName }) => {\n addItem({ name: displayName, uri: `/data-listing/${id}` }, sectionKey);\n });\n };\n}\n\nexport default getAddContentMenuItems;\n"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,2BAA2B;AAEpD,MAAM;EAAEC;AAAiB,CAAC,GAAGC,OAAO,CAAC,cAAc,CAAC;AAEpD,SAASC,sBAAsBA,CAACC,GAAG,EAAEC,UAAU,EAAE;EAC/C,OAAO,MAAMC,OAAO,IAAI;IACtB,MAAMC,MAAM,GAAGH,GAAG,CAACI,SAAS,CAAC,CAAC;IAC9B,MAAM;MACJC,IAAI,EAAE;QAAEC;MAAiB;IAC3B,CAAC,GAAG,MAAMH,MAAM,CAACI,KAAK,CAAC;MACrBA,KAAK,EAAEX,QAAQ,CAAC,4BAA4B,CAAC;MAC7CY,SAAS,EAAE;QACT;QACAC,YAAY,EAAEZ;MAChB;IACF,CAAC,CAAC;IACFS,gBAAgB,CAACI,OAAO,CAAC,CAAC;MAAEC,EAAE;MAAEC;IAAY,CAAC,KAAK;MAChDV,OAAO,CAAC;QAAEW,IAAI,EAAED,WAAW;QAAEE,GAAG,EAAG,iBAAgBH,EAAG;MAAE,CAAC,EAAEV,UAAU,CAAC;IACxE,CAAC,CAAC;EACJ,CAAC;AACH;AAEA,eAAeF,sBAAsB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blaze-cms/plugin-data-ui",
|
|
3
|
-
"version": "0.129.0
|
|
3
|
+
"version": "0.129.0",
|
|
4
4
|
"description": "Blaze plugin data ui",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-es/index.js",
|
|
@@ -27,13 +27,12 @@
|
|
|
27
27
|
},
|
|
28
28
|
"license": "GPL-3.0",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@blaze-cms/admin-ui-utils": "0.129.0
|
|
31
|
-
"@blaze-cms/core-errors": "0.
|
|
32
|
-
"@blaze-cms/
|
|
33
|
-
"@blaze-cms/react-
|
|
34
|
-
"@blaze-cms/
|
|
35
|
-
"@blaze-cms/
|
|
36
|
-
"@blaze-cms/versioning-ui": "0.129.0-project-admin-customisations.0",
|
|
30
|
+
"@blaze-cms/admin-ui-utils": "^0.129.0",
|
|
31
|
+
"@blaze-cms/core-errors": "^0.127.0",
|
|
32
|
+
"@blaze-cms/react-form-builder": "^0.129.0",
|
|
33
|
+
"@blaze-cms/react-page-builder": "^0.129.0",
|
|
34
|
+
"@blaze-cms/setup-ui": "^0.128.1",
|
|
35
|
+
"@blaze-cms/versioning-ui": "^0.128.1",
|
|
37
36
|
"@blaze-react/button": "0.5.19",
|
|
38
37
|
"@blaze-react/more": "0.5.19",
|
|
39
38
|
"@blaze-react/multiselect": "0.6.6",
|
|
@@ -54,7 +53,7 @@
|
|
|
54
53
|
"uuid": "^3.3.3"
|
|
55
54
|
},
|
|
56
55
|
"devDependencies": {
|
|
57
|
-
"@blaze-cms/core-ui": "0.129.0
|
|
56
|
+
"@blaze-cms/core-ui": "^0.129.0"
|
|
58
57
|
},
|
|
59
58
|
"peerDependencies": {
|
|
60
59
|
"@apollo/client": "3.x",
|
|
@@ -66,5 +65,5 @@
|
|
|
66
65
|
"lib/*",
|
|
67
66
|
"lib-es/*"
|
|
68
67
|
],
|
|
69
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "43e8a5d929313c50f8edb27358da7278299ce6c6"
|
|
70
69
|
}
|
|
@@ -6,22 +6,31 @@ import { getQuery } from '@blaze-cms/admin-ui-utils';
|
|
|
6
6
|
import ListingTable from '../ListingTable/ListingTable';
|
|
7
7
|
import { withContext } from '../../utils/hoc/withContext';
|
|
8
8
|
|
|
9
|
-
const EntityDataListing = ({ match }) => {
|
|
9
|
+
const EntityDataListing = ({ match, menuItems }) => {
|
|
10
10
|
const {
|
|
11
11
|
params: { entityIdentifier: identifier }
|
|
12
12
|
} = match;
|
|
13
13
|
|
|
14
|
+
const [[selectedMenuItem]] = menuItems
|
|
15
|
+
.map(([_, { items }]) => {
|
|
16
|
+
const item = items.filter(({ uri }) => uri.endsWith(`/${identifier}`));
|
|
17
|
+
|
|
18
|
+
return item.length ? item : null;
|
|
19
|
+
})
|
|
20
|
+
.filter(Boolean);
|
|
21
|
+
|
|
14
22
|
const { data: { getEntitySchemas = [] } = {} } = useQuery(getQuery('GET_ENTITY_SCHEMA'), {
|
|
15
23
|
variables: { identifier }
|
|
16
24
|
});
|
|
17
25
|
|
|
18
26
|
if (!getEntitySchemas.length) return '';
|
|
19
27
|
|
|
20
|
-
return <ListingTable entitySchema={getEntitySchemas[0]} />;
|
|
28
|
+
return <ListingTable entitySchema={getEntitySchemas[0]} selectedMenuItem={selectedMenuItem} />;
|
|
21
29
|
};
|
|
22
30
|
|
|
23
31
|
EntityDataListing.propTypes = {
|
|
24
|
-
match: PropTypes.object.isRequired
|
|
32
|
+
match: PropTypes.object.isRequired,
|
|
33
|
+
menuItems: PropTypes.array.isRequired
|
|
25
34
|
};
|
|
26
35
|
|
|
27
36
|
export default withContext(EntityDataListing);
|
|
@@ -3,7 +3,6 @@ import React, { useEffect, useState, useRef } from 'react';
|
|
|
3
3
|
import { withRouter, Prompt } from 'react-router-dom';
|
|
4
4
|
import { useApolloClient } from '@apollo/client';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
|
-
import { RenderHook } from '@blaze-cms/plugin-render-hooks-ui';
|
|
7
6
|
import { getQuery, GET_CURRENT_TAB_ID } from '@blaze-cms/admin-ui-utils';
|
|
8
7
|
import { FormBuilder, parseFormValues } from '@blaze-cms/react-form-builder';
|
|
9
8
|
import { DeleteAction, CopyDataFromAction } from '@blaze-cms/admin';
|
|
@@ -35,7 +34,6 @@ import {
|
|
|
35
34
|
checkFulfilConditions
|
|
36
35
|
} from '../utils/entity';
|
|
37
36
|
import useToggle from '../../../utils/hooks/useToggle';
|
|
38
|
-
import InfoBoxes from '../../InfoBoxes/InfoBoxes';
|
|
39
37
|
|
|
40
38
|
const Entity = ({
|
|
41
39
|
formData,
|
|
@@ -405,72 +403,68 @@ const Entity = ({
|
|
|
405
403
|
|
|
406
404
|
return (
|
|
407
405
|
<div className="page">
|
|
408
|
-
<
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
<div className="
|
|
425
|
-
<div className="
|
|
426
|
-
<
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
/>
|
|
467
|
-
</Tabs>
|
|
468
|
-
</div>
|
|
406
|
+
<Prompt when={hasToDisplayPrompt} message={LEAVE_PAGE_MESSAGE} />
|
|
407
|
+
{showModal && (
|
|
408
|
+
<DeleteAction
|
|
409
|
+
onClose={setModalStatus}
|
|
410
|
+
deleteAction={onDelete}
|
|
411
|
+
itemName={formData.values.name}
|
|
412
|
+
/>
|
|
413
|
+
)}
|
|
414
|
+
{copyModalStatus && (
|
|
415
|
+
<CopyDataFromAction
|
|
416
|
+
onClose={handleCopyDataFromClose}
|
|
417
|
+
copyAction={onCopy}
|
|
418
|
+
getFormData={getFormData}
|
|
419
|
+
/>
|
|
420
|
+
)}
|
|
421
|
+
|
|
422
|
+
<div className="row row--display-row">
|
|
423
|
+
<div className="column column--three-quarters">
|
|
424
|
+
<EntityHeader
|
|
425
|
+
entityData={entityData}
|
|
426
|
+
entityIdentifier={entityIdentifier}
|
|
427
|
+
pageTitle={pageTitle}
|
|
428
|
+
pageName={pageName}
|
|
429
|
+
onSubmit={onSubmit}
|
|
430
|
+
handlePublishAndUnpublish={handlePublishAndUnpublish}
|
|
431
|
+
isSaveButtonAvailable={isSaveButtonAvailable}
|
|
432
|
+
isEnablePublishButton={isEnablePublishButton}
|
|
433
|
+
isEnablePreviewButton={isEnablePreviewButton}
|
|
434
|
+
toggleCopyModal={setCopyModalStatus}
|
|
435
|
+
toggleModal={setModalStatus}
|
|
436
|
+
formData={formData}
|
|
437
|
+
onViewUrl={onViewUrlHandler}
|
|
438
|
+
saveButtonText={saveButtonText}
|
|
439
|
+
/>
|
|
440
|
+
|
|
441
|
+
<div className="page__content">
|
|
442
|
+
<div className="content">
|
|
443
|
+
<Tabs
|
|
444
|
+
enabled={showPageBuilderTabs}
|
|
445
|
+
onTabChange={tabId => {
|
|
446
|
+
client.writeQuery({
|
|
447
|
+
query: GET_CURRENT_TAB_ID,
|
|
448
|
+
data: { currentTabId: tabId }
|
|
449
|
+
});
|
|
450
|
+
setCurrentTabId(tabId);
|
|
451
|
+
}}>
|
|
452
|
+
<FormBuilder
|
|
453
|
+
getIsFormValid={setIsFormValid}
|
|
454
|
+
getFormValues={getFormValues}
|
|
455
|
+
schema={schema}
|
|
456
|
+
data={clonedFormData}
|
|
457
|
+
onChange={onChangeFormValues}
|
|
458
|
+
shouldCopyData={shouldCopyData}
|
|
459
|
+
updateCopyData={updateCopyData}
|
|
460
|
+
formValues={formValues}
|
|
461
|
+
isNewEntity={isNewEntity}
|
|
462
|
+
/>
|
|
463
|
+
</Tabs>
|
|
469
464
|
</div>
|
|
470
465
|
</div>
|
|
471
466
|
</div>
|
|
472
|
-
|
|
473
|
-
<div className="column column--one-third page-sidebar">
|
|
467
|
+
<div className="column column--one-third">
|
|
474
468
|
{showSideBarRelations && (
|
|
475
469
|
<SideBarRelations
|
|
476
470
|
entity={entity}
|
|
@@ -4,23 +4,14 @@ import uuidv1 from 'uuid/v1';
|
|
|
4
4
|
import { useApolloClient } from '@apollo/client';
|
|
5
5
|
import { getQuery } from '@blaze-cms/admin-ui-utils';
|
|
6
6
|
import { formFieldTypes } from '@blaze-cms/react-form-builder';
|
|
7
|
-
import
|
|
7
|
+
import Badge from '@blaze-react/badge';
|
|
8
8
|
import { VersionsList } from '@blaze-cms/versioning-ui';
|
|
9
|
-
import { PUBLISHED
|
|
10
|
-
import CustomSidebarInfoContainer from './container/CustomSidebarInfoContainer';
|
|
11
|
-
import EntityNavLinks from '../EntitiyNavLinks';
|
|
9
|
+
import { PUBLISHED } from '../../../../constants';
|
|
12
10
|
|
|
13
11
|
const SideBarRelations = ({ schema, onChange, formData, entity }) => {
|
|
14
12
|
const { relation: RelationComponent } = formFieldTypes;
|
|
15
|
-
const {
|
|
16
|
-
formattedStatus,
|
|
17
|
-
formattedUpdated,
|
|
18
|
-
formattedCreated,
|
|
19
|
-
formattedPublished,
|
|
20
|
-
status
|
|
21
|
-
} = formData;
|
|
13
|
+
const { formattedStatus, formattedUpdated, formattedCreated, formattedPublished } = formData;
|
|
22
14
|
const client = useApolloClient();
|
|
23
|
-
|
|
24
15
|
const [relationsComponents, setRelationsComponents] = useState(null);
|
|
25
16
|
|
|
26
17
|
useEffect(
|
|
@@ -60,50 +51,27 @@ const SideBarRelations = ({ schema, onChange, formData, entity }) => {
|
|
|
60
51
|
const { id: itemId } = entity;
|
|
61
52
|
const { identifier: itemEntity, interfaces } = schema;
|
|
62
53
|
|
|
63
|
-
const statusClassName = classnames('sidebar__status__badge', {
|
|
64
|
-
'sidebar__status__badge--published': status === PUBLISHED,
|
|
65
|
-
'sidebar__status__badge--unpublished': status === UNPUBLISHED
|
|
66
|
-
});
|
|
67
|
-
|
|
68
54
|
return (
|
|
69
55
|
<div className="sidebar" data-testid="sideBarRelations-main-div">
|
|
70
56
|
<div className="sidebar__content">
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
<
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
</
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
<>
|
|
88
|
-
<p>
|
|
89
|
-
Created: <span>{formattedCreated}</span>
|
|
90
|
-
</p>
|
|
91
|
-
<p>
|
|
92
|
-
Updated: <span>{formattedUpdated}</span>
|
|
93
|
-
</p>
|
|
94
|
-
</>
|
|
95
|
-
)}
|
|
96
|
-
|
|
97
|
-
<CustomSidebarInfoContainer
|
|
98
|
-
id={itemId}
|
|
99
|
-
schema={schema}
|
|
100
|
-
displayProperties={schema.displayProperties}
|
|
101
|
-
/>
|
|
102
|
-
</div>
|
|
57
|
+
{formattedCreated && (
|
|
58
|
+
<div className="sidebar__status">
|
|
59
|
+
{formattedStatus && (
|
|
60
|
+
<Badge type="status" modifiers={formattedStatus}>
|
|
61
|
+
{formattedStatus}
|
|
62
|
+
{formattedStatus === PUBLISHED && `: ${formattedPublished}`}
|
|
63
|
+
</Badge>
|
|
64
|
+
)}
|
|
65
|
+
<p>
|
|
66
|
+
Created: <span>{formattedCreated}</span>
|
|
67
|
+
</p>
|
|
68
|
+
<p>
|
|
69
|
+
Updated: <span>{formattedUpdated}</span>
|
|
70
|
+
</p>
|
|
71
|
+
</div>
|
|
72
|
+
)}
|
|
103
73
|
|
|
104
74
|
<VersionsList itemEntity={itemEntity} itemId={itemId} interfaces={interfaces} />
|
|
105
|
-
<EntityNavLinks schema={schema} />
|
|
106
|
-
|
|
107
75
|
{relationsComponents &&
|
|
108
76
|
relationsComponents.map(({ id, staticData, schema: entitySchema }) => (
|
|
109
77
|
<RelationComponent
|
|
@@ -3,6 +3,7 @@ import React, { useEffect, useState, Fragment } from 'react';
|
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { withRouter, Link } from 'react-router-dom';
|
|
5
5
|
import More from '@blaze-react/more';
|
|
6
|
+
import { MainContext, useMainContext } from '@blaze-cms/admin-ui-utils';
|
|
6
7
|
import { PageHeader, DeleteAction } from '@blaze-cms/admin';
|
|
7
8
|
import { useToasts } from '@blaze-react/toaster';
|
|
8
9
|
import ListingTableContent from './ListingTableContent';
|
|
@@ -13,7 +14,7 @@ import { getDefaultQueryParams } from '../../utils/get-default-query-params';
|
|
|
13
14
|
|
|
14
15
|
const OVER_SCAN_BUFFER = 10;
|
|
15
16
|
|
|
16
|
-
const ListingTable = ({ match, entitySchema }) => {
|
|
17
|
+
const ListingTable = ({ match, entitySchema, selectedMenuItem }) => {
|
|
17
18
|
const [tableData, setTableData] = useState({});
|
|
18
19
|
const [modalStatus, setModalStatus] = useState(false);
|
|
19
20
|
const [itemToDelete, setItemToDelete] = useState({});
|
|
@@ -22,6 +23,7 @@ const ListingTable = ({ match, entitySchema }) => {
|
|
|
22
23
|
const [verifiedRanges, setVerifiedRanges] = useState([]);
|
|
23
24
|
const queryParamsDefault = getDefaultQueryParams({ schema: entitySchema });
|
|
24
25
|
const [queryParams, setQueryParams] = useState(queryParamsDefault);
|
|
26
|
+
const { menuItems, setMenuItems } = useMainContext(MainContext);
|
|
25
27
|
const client = useApolloClient();
|
|
26
28
|
const { addToast } = useToasts();
|
|
27
29
|
|
|
@@ -53,7 +55,17 @@ const ListingTable = ({ match, entitySchema }) => {
|
|
|
53
55
|
[client, entitySchema, match.url, previousSchema.id, queryParams] // eslint-disable-line react-hooks/exhaustive-deps
|
|
54
56
|
);
|
|
55
57
|
|
|
56
|
-
const onCloseCardPrompt = () =>
|
|
58
|
+
const onCloseCardPrompt = () => {
|
|
59
|
+
const updatedSelectedMenuItem = {
|
|
60
|
+
...selectedMenuItem,
|
|
61
|
+
isDisplayedPrompt: false
|
|
62
|
+
};
|
|
63
|
+
const [{ header, items }] = menuItems;
|
|
64
|
+
const updatedItems = items.map(
|
|
65
|
+
item => (item.name === selectedMenuItem.name ? updatedSelectedMenuItem : item)
|
|
66
|
+
);
|
|
67
|
+
setMenuItems([{ header, items: updatedItems }]);
|
|
68
|
+
};
|
|
57
69
|
|
|
58
70
|
const toggleModal = item => {
|
|
59
71
|
setModalStatus(!!item);
|
|
@@ -150,7 +162,7 @@ const ListingTable = ({ match, entitySchema }) => {
|
|
|
150
162
|
/>
|
|
151
163
|
)}
|
|
152
164
|
<PageHeader title={entitySchema.displayName} subtitle="">
|
|
153
|
-
{!!tableData.rows.length && (
|
|
165
|
+
{(!selectedMenuItem.isDisplayedPrompt || !!tableData.rows.length) && (
|
|
154
166
|
<Fragment>
|
|
155
167
|
<Link
|
|
156
168
|
data-testid="addEntity"
|
|
@@ -175,6 +187,7 @@ const ListingTable = ({ match, entitySchema }) => {
|
|
|
175
187
|
onRenderItems={handleRenderedItems}
|
|
176
188
|
tableData={tableData}
|
|
177
189
|
onCloseCardPrompt={onCloseCardPrompt}
|
|
190
|
+
selectedMenuItem={selectedMenuItem}
|
|
178
191
|
scrollToIndex={scrollToIndex}
|
|
179
192
|
/>
|
|
180
193
|
</div>
|
|
@@ -182,7 +195,8 @@ const ListingTable = ({ match, entitySchema }) => {
|
|
|
182
195
|
};
|
|
183
196
|
ListingTable.propTypes = {
|
|
184
197
|
entitySchema: PropTypes.object.isRequired,
|
|
185
|
-
match: PropTypes.object.isRequired
|
|
198
|
+
match: PropTypes.object.isRequired,
|
|
199
|
+
selectedMenuItem: PropTypes.object.isRequired
|
|
186
200
|
};
|
|
187
201
|
|
|
188
202
|
export default withRouter(ListingTable);
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import Table from '@blaze-react/table';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
|
-
import {
|
|
4
|
+
import { CardPrompt } from '@blaze-cms/admin';
|
|
5
|
+
import { Link, withRouter } from 'react-router-dom';
|
|
5
6
|
|
|
6
7
|
const ListingTableContent = ({
|
|
7
8
|
tableData,
|
|
@@ -19,7 +20,7 @@ const ListingTableContent = ({
|
|
|
19
20
|
|
|
20
21
|
return (
|
|
21
22
|
<>
|
|
22
|
-
{displayTable
|
|
23
|
+
{displayTable ? (
|
|
23
24
|
<>
|
|
24
25
|
<div className="page__content">
|
|
25
26
|
<Table
|
|
@@ -35,6 +36,17 @@ const ListingTableContent = ({
|
|
|
35
36
|
/>
|
|
36
37
|
</div>
|
|
37
38
|
</>
|
|
39
|
+
) : (
|
|
40
|
+
selectedMenuItem.isDisplayedPrompt && (
|
|
41
|
+
<CardPrompt onClose={onCloseCardPrompt} data-testid="card-prompt">
|
|
42
|
+
<Link
|
|
43
|
+
className="button button--rounded button--cta"
|
|
44
|
+
to={`${match.url}/create`}
|
|
45
|
+
data-testid="add-button">
|
|
46
|
+
Add
|
|
47
|
+
</Link>
|
|
48
|
+
</CardPrompt>
|
|
49
|
+
)
|
|
38
50
|
)}
|
|
39
51
|
</>
|
|
40
52
|
);
|
|
@@ -43,7 +55,7 @@ const ListingTableContent = ({
|
|
|
43
55
|
ListingTableContent.propTypes = {
|
|
44
56
|
tableData: PropTypes.object.isRequired,
|
|
45
57
|
onCloseCardPrompt: PropTypes.func.isRequired,
|
|
46
|
-
selectedMenuItem: PropTypes.object,
|
|
58
|
+
selectedMenuItem: PropTypes.object.isRequired,
|
|
47
59
|
match: PropTypes.shape({
|
|
48
60
|
url: PropTypes.string
|
|
49
61
|
}).isRequired,
|
|
@@ -61,8 +73,7 @@ ListingTableContent.defaultProps = {
|
|
|
61
73
|
onClickRow: () => {},
|
|
62
74
|
overScanBuffer: 0,
|
|
63
75
|
scrollToIndex: 0,
|
|
64
|
-
onRenderItems: () => {}
|
|
65
|
-
selectedMenuItem: null
|
|
76
|
+
onRenderItems: () => {}
|
|
66
77
|
};
|
|
67
78
|
|
|
68
79
|
export default withRouter(ListingTableContent);
|
package/src/index.js
CHANGED
|
@@ -12,7 +12,14 @@ const EntityManager = React.lazy(() =>
|
|
|
12
12
|
);
|
|
13
13
|
|
|
14
14
|
export default async function load(app) {
|
|
15
|
-
|
|
15
|
+
// To load different plugin information into menu
|
|
16
|
+
const sectionKey = 'content';
|
|
17
|
+
|
|
18
|
+
app.events.once('load:menu-section', addSection => {
|
|
19
|
+
addSection(sectionKey, { header: 'content', order: 100 });
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
app.events.once('load:menu-items', getAddContentMenuItems(app, sectionKey));
|
|
16
23
|
|
|
17
24
|
app.events.once('load:custom:field:type', addFieldType => {
|
|
18
25
|
Object.keys(formFieldTypes).forEach(type => {
|
|
@@ -2,8 +2,8 @@ import { getQuery } from '@blaze-cms/admin-ui-utils';
|
|
|
2
2
|
|
|
3
3
|
const { MENU_PERMISSIONS } = require('../constants');
|
|
4
4
|
|
|
5
|
-
function getAddContentMenuItems(app) {
|
|
6
|
-
return async
|
|
5
|
+
function getAddContentMenuItems(app, sectionKey) {
|
|
6
|
+
return async addItem => {
|
|
7
7
|
const client = app.getClient();
|
|
8
8
|
const {
|
|
9
9
|
data: { getEntitySchemas }
|
|
@@ -14,51 +14,9 @@ function getAddContentMenuItems(app) {
|
|
|
14
14
|
canDoActions: MENU_PERMISSIONS
|
|
15
15
|
}
|
|
16
16
|
});
|
|
17
|
-
|
|
18
|
-
if (!getEntitySchemas || !getEntitySchemas.length) return; // no items so don't add section
|
|
19
|
-
|
|
20
|
-
const menuItems = {};
|
|
21
|
-
const sectionMenuItems = { content: {} };
|
|
22
|
-
|
|
23
|
-
getEntitySchemas.forEach(({ id, displayName, displayProperties }) => {
|
|
24
|
-
if (!displayProperties) return null;
|
|
25
|
-
|
|
26
|
-
const { adminMenu: { sectionKey = 'content' } = {} } = displayProperties;
|
|
27
|
-
const sectionItems = sectionMenuItems[sectionKey] || {};
|
|
28
|
-
sectionItems[id] = {
|
|
29
|
-
label: displayName,
|
|
30
|
-
uri: `/data-listing/${id}`
|
|
31
|
-
};
|
|
32
|
-
sectionMenuItems[sectionKey] = sectionItems;
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
const menuConfig = {
|
|
36
|
-
main: {
|
|
37
|
-
items: {
|
|
38
|
-
content: {
|
|
39
|
-
label: 'Content',
|
|
40
|
-
loadOpen: true,
|
|
41
|
-
order: 10,
|
|
42
|
-
items: menuItems
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
Object.entries(sectionMenuItems).forEach(([sectionKey, sectionItems]) => {
|
|
49
|
-
const sectionConfig = menuConfig.main.items[sectionKey] || {};
|
|
50
|
-
sectionConfig.items = sectionItems;
|
|
51
|
-
menuConfig.main.items[sectionKey] = sectionConfig;
|
|
52
|
-
});
|
|
53
|
-
|
|
54
17
|
getEntitySchemas.forEach(({ id, displayName }) => {
|
|
55
|
-
|
|
56
|
-
label: displayName,
|
|
57
|
-
uri: `/data-listing/${id}`
|
|
58
|
-
};
|
|
18
|
+
addItem({ name: displayName, uri: `/data-listing/${id}` }, sectionKey);
|
|
59
19
|
});
|
|
60
|
-
|
|
61
|
-
addConfig(menuConfig);
|
|
62
20
|
};
|
|
63
21
|
}
|
|
64
22
|
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("core-js/modules/es.object.define-property.js");
|
|
4
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports["default"] = void 0;
|
|
9
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
-
require("core-js/modules/es.array.map.js");
|
|
11
|
-
require("core-js/modules/es.object.entries.js");
|
|
12
|
-
require("core-js/modules/es.string.starts-with.js");
|
|
13
|
-
var _reactRouterDom = require("react-router-dom");
|
|
14
|
-
var _react = _interopRequireDefault(require("react"));
|
|
15
|
-
var EntityNavLinks = function EntityNavLinks(_ref) {
|
|
16
|
-
var schema = _ref.schema;
|
|
17
|
-
if (!schema) return null;
|
|
18
|
-
var adminSectionNavigation = schema.displayProperties.adminSectionNavigation;
|
|
19
|
-
if (!adminSectionNavigation) return null;
|
|
20
|
-
var links = Object.entries(adminSectionNavigation).map(function (_ref2) {
|
|
21
|
-
var _ref3 = (0, _slicedToArray2["default"])(_ref2, 2),
|
|
22
|
-
k = _ref3[0],
|
|
23
|
-
v = _ref3[1];
|
|
24
|
-
var label = v.label,
|
|
25
|
-
uri = v.uri;
|
|
26
|
-
var Wrapper = uri.startsWith('#') ? 'a' : _reactRouterDom.Link;
|
|
27
|
-
return /*#__PURE__*/_react["default"].createElement(Wrapper, {
|
|
28
|
-
className: "entity-section-link",
|
|
29
|
-
href: uri,
|
|
30
|
-
to: uri
|
|
31
|
-
}, label);
|
|
32
|
-
});
|
|
33
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
34
|
-
className: "entity-section-links"
|
|
35
|
-
}, links);
|
|
36
|
-
};
|
|
37
|
-
var _default = EntityNavLinks;
|
|
38
|
-
exports["default"] = _default;
|
|
39
|
-
//# sourceMappingURL=EntityNavLinks.js.map
|