@blaze-cms/plugin-data-ui 0.139.0-alpha.0 → 0.139.0-core-styles.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.
Files changed (153) hide show
  1. package/CHANGELOG.md +41 -2
  2. package/README.md +42 -0
  3. package/lib/components/EntityDataListing/EntityDataListing.js +3 -24
  4. package/lib/components/EntityDataListing/EntityDataListing.js.map +1 -1
  5. package/lib/components/EntityManager/Entity/EntitiyNavLinks/EntityNavLinks.js +39 -0
  6. package/lib/components/EntityManager/Entity/EntitiyNavLinks/EntityNavLinks.js.map +1 -0
  7. package/lib/components/EntityManager/Entity/EntitiyNavLinks/index.js +12 -0
  8. package/lib/components/EntityManager/Entity/EntitiyNavLinks/index.js.map +1 -0
  9. package/lib/components/EntityManager/Entity/Entity.js +16 -3
  10. package/lib/components/EntityManager/Entity/Entity.js.map +1 -1
  11. package/lib/components/EntityManager/Entity/SideBarRelations/container/CustomSidebarInfoContainer.js +44 -0
  12. package/lib/components/EntityManager/Entity/SideBarRelations/container/CustomSidebarInfoContainer.js.map +1 -0
  13. package/lib/components/EntityManager/Entity/SideBarRelations/helpers/build-dynamic-query.js +32 -0
  14. package/lib/components/EntityManager/Entity/SideBarRelations/helpers/build-dynamic-query.js.map +1 -0
  15. package/lib/components/EntityManager/Entity/SideBarRelations/hooks/useCustomSidebarData.js +45 -0
  16. package/lib/components/EntityManager/Entity/SideBarRelations/hooks/useCustomSidebarData.js.map +1 -0
  17. package/lib/components/EntityManager/Entity/SideBarRelations/index.js +12 -2
  18. package/lib/components/EntityManager/Entity/SideBarRelations/index.js.map +1 -1
  19. package/lib/components/EntityManager/Entity/SideBarRelations/presentational/CustomSidebarInfo.js +38 -0
  20. package/lib/components/EntityManager/Entity/SideBarRelations/presentational/CustomSidebarInfo.js.map +1 -0
  21. package/lib/components/InfoBoxes/InfoBoxes.js +36 -0
  22. package/lib/components/InfoBoxes/InfoBoxes.js.map +1 -0
  23. package/lib/components/InfoBoxes/container/InfoBoxContainer.js +44 -0
  24. package/lib/components/InfoBoxes/container/InfoBoxContainer.js.map +1 -0
  25. package/lib/components/InfoBoxes/helpers/build-dynamic-query.js +25 -0
  26. package/lib/components/InfoBoxes/helpers/build-dynamic-query.js.map +1 -0
  27. package/lib/components/InfoBoxes/hooks/useData.js +42 -0
  28. package/lib/components/InfoBoxes/hooks/useData.js.map +1 -0
  29. package/lib/components/InfoBoxes/hooks/useInfoBox.js +26 -0
  30. package/lib/components/InfoBoxes/hooks/useInfoBox.js.map +1 -0
  31. package/lib/components/InfoBoxes/index.js +12 -0
  32. package/lib/components/InfoBoxes/index.js.map +1 -0
  33. package/lib/components/InfoBoxes/presentational/InfoBox.js +46 -0
  34. package/lib/components/InfoBoxes/presentational/InfoBox.js.map +1 -0
  35. package/lib/components/ListingTable/ListingTable.js +125 -80
  36. package/lib/components/ListingTable/ListingTable.js.map +1 -1
  37. package/lib/components/ListingTable/ListingTableContent/ListingTableContent.js +8 -20
  38. package/lib/components/ListingTable/ListingTableContent/ListingTableContent.js.map +1 -1
  39. package/lib/components/ListingTable/mappers/populate-rows.js +92 -26
  40. package/lib/components/ListingTable/mappers/populate-rows.js.map +1 -1
  41. package/lib/components/ListingTable/service/index.js +73 -11
  42. package/lib/components/ListingTable/service/index.js.map +1 -1
  43. package/lib/constants.js +11 -1
  44. package/lib/constants.js.map +1 -1
  45. package/lib/icons/ContentIcon.js +90 -0
  46. package/lib/icons/ContentIcon.js.map +1 -0
  47. package/lib/icons/SettingsIcon.js +66 -0
  48. package/lib/icons/SettingsIcon.js.map +1 -0
  49. package/lib/icons/TaxonomyIcon.js +90 -0
  50. package/lib/icons/TaxonomyIcon.js.map +1 -0
  51. package/lib/icons/UsersIcon.js +64 -0
  52. package/lib/icons/UsersIcon.js.map +1 -0
  53. package/lib/icons/index.js +36 -0
  54. package/lib/icons/index.js.map +1 -0
  55. package/lib/index.js +38 -11
  56. package/lib/index.js.map +1 -1
  57. package/lib/utils/add-content-menu-items.js +61 -13
  58. package/lib/utils/add-content-menu-items.js.map +1 -1
  59. package/lib/utils/build-listing-query.js +11 -2
  60. package/lib/utils/build-listing-query.js.map +1 -1
  61. package/lib/utils/get-default-query-params.js +3 -4
  62. package/lib/utils/get-default-query-params.js.map +1 -1
  63. package/lib-es/components/EntityDataListing/EntityDataListing.js +3 -14
  64. package/lib-es/components/EntityDataListing/EntityDataListing.js.map +1 -1
  65. package/lib-es/components/EntityManager/Entity/EntitiyNavLinks/EntityNavLinks.js +30 -0
  66. package/lib-es/components/EntityManager/Entity/EntitiyNavLinks/EntityNavLinks.js.map +1 -0
  67. package/lib-es/components/EntityManager/Entity/EntitiyNavLinks/index.js +3 -0
  68. package/lib-es/components/EntityManager/Entity/EntitiyNavLinks/index.js.map +1 -0
  69. package/lib-es/components/EntityManager/Entity/Entity.js +16 -3
  70. package/lib-es/components/EntityManager/Entity/Entity.js.map +1 -1
  71. package/lib-es/components/EntityManager/Entity/SideBarRelations/container/CustomSidebarInfoContainer.js +30 -0
  72. package/lib-es/components/EntityManager/Entity/SideBarRelations/container/CustomSidebarInfoContainer.js.map +1 -0
  73. package/lib-es/components/EntityManager/Entity/SideBarRelations/helpers/build-dynamic-query.js +26 -0
  74. package/lib-es/components/EntityManager/Entity/SideBarRelations/helpers/build-dynamic-query.js.map +1 -0
  75. package/lib-es/components/EntityManager/Entity/SideBarRelations/hooks/useCustomSidebarData.js +39 -0
  76. package/lib-es/components/EntityManager/Entity/SideBarRelations/hooks/useCustomSidebarData.js.map +1 -0
  77. package/lib-es/components/EntityManager/Entity/SideBarRelations/index.js +12 -2
  78. package/lib-es/components/EntityManager/Entity/SideBarRelations/index.js.map +1 -1
  79. package/lib-es/components/EntityManager/Entity/SideBarRelations/presentational/CustomSidebarInfo.js +24 -0
  80. package/lib-es/components/EntityManager/Entity/SideBarRelations/presentational/CustomSidebarInfo.js.map +1 -0
  81. package/lib-es/components/InfoBoxes/InfoBoxes.js +28 -0
  82. package/lib-es/components/InfoBoxes/InfoBoxes.js.map +1 -0
  83. package/lib-es/components/InfoBoxes/container/InfoBoxContainer.js +30 -0
  84. package/lib-es/components/InfoBoxes/container/InfoBoxContainer.js.map +1 -0
  85. package/lib-es/components/InfoBoxes/helpers/build-dynamic-query.js +25 -0
  86. package/lib-es/components/InfoBoxes/helpers/build-dynamic-query.js.map +1 -0
  87. package/lib-es/components/InfoBoxes/hooks/useData.js +37 -0
  88. package/lib-es/components/InfoBoxes/hooks/useData.js.map +1 -0
  89. package/lib-es/components/InfoBoxes/hooks/useInfoBox.js +19 -0
  90. package/lib-es/components/InfoBoxes/hooks/useInfoBox.js.map +1 -0
  91. package/lib-es/components/InfoBoxes/index.js +3 -0
  92. package/lib-es/components/InfoBoxes/index.js.map +1 -0
  93. package/lib-es/components/InfoBoxes/presentational/InfoBox.js +31 -0
  94. package/lib-es/components/InfoBoxes/presentational/InfoBox.js.map +1 -0
  95. package/lib-es/components/ListingTable/ListingTable.js +56 -50
  96. package/lib-es/components/ListingTable/ListingTable.js.map +1 -1
  97. package/lib-es/components/ListingTable/ListingTableContent/ListingTableContent.js +11 -19
  98. package/lib-es/components/ListingTable/ListingTableContent/ListingTableContent.js.map +1 -1
  99. package/lib-es/components/ListingTable/mappers/populate-rows.js +76 -24
  100. package/lib-es/components/ListingTable/mappers/populate-rows.js.map +1 -1
  101. package/lib-es/components/ListingTable/service/index.js +65 -7
  102. package/lib-es/components/ListingTable/service/index.js.map +1 -1
  103. package/lib-es/constants.js +9 -1
  104. package/lib-es/constants.js.map +1 -1
  105. package/lib-es/icons/ContentIcon.js +80 -0
  106. package/lib-es/icons/ContentIcon.js.map +1 -0
  107. package/lib-es/icons/SettingsIcon.js +56 -0
  108. package/lib-es/icons/SettingsIcon.js.map +1 -0
  109. package/lib-es/icons/TaxonomyIcon.js +80 -0
  110. package/lib-es/icons/TaxonomyIcon.js.map +1 -0
  111. package/lib-es/icons/UsersIcon.js +54 -0
  112. package/lib-es/icons/UsersIcon.js.map +1 -0
  113. package/lib-es/icons/index.js +6 -0
  114. package/lib-es/icons/index.js.map +1 -0
  115. package/lib-es/index.js +37 -9
  116. package/lib-es/index.js.map +1 -1
  117. package/lib-es/utils/add-content-menu-items.js +46 -5
  118. package/lib-es/utils/add-content-menu-items.js.map +1 -1
  119. package/lib-es/utils/build-listing-query.js +10 -1
  120. package/lib-es/utils/build-listing-query.js.map +1 -1
  121. package/lib-es/utils/get-default-query-params.js +1 -3
  122. package/lib-es/utils/get-default-query-params.js.map +1 -1
  123. package/package.json +10 -9
  124. package/src/components/EntityDataListing/EntityDataListing.js +3 -12
  125. package/src/components/EntityManager/Entity/EntitiyNavLinks/EntityNavLinks.js +26 -0
  126. package/src/components/EntityManager/Entity/EntitiyNavLinks/index.js +3 -0
  127. package/src/components/EntityManager/Entity/Entity.js +10 -1
  128. package/src/components/EntityManager/Entity/SideBarRelations/container/CustomSidebarInfoContainer.js +22 -0
  129. package/src/components/EntityManager/Entity/SideBarRelations/helpers/build-dynamic-query.js +33 -0
  130. package/src/components/EntityManager/Entity/SideBarRelations/hooks/useCustomSidebarData.js +28 -0
  131. package/src/components/EntityManager/Entity/SideBarRelations/index.js +34 -16
  132. package/src/components/EntityManager/Entity/SideBarRelations/presentational/CustomSidebarInfo.js +33 -0
  133. package/src/components/InfoBoxes/InfoBoxes.js +24 -0
  134. package/src/components/InfoBoxes/container/InfoBoxContainer.js +22 -0
  135. package/src/components/InfoBoxes/helpers/build-dynamic-query.js +25 -0
  136. package/src/components/InfoBoxes/hooks/useData.js +20 -0
  137. package/src/components/InfoBoxes/hooks/useInfoBox.js +13 -0
  138. package/src/components/InfoBoxes/index.js +3 -0
  139. package/src/components/InfoBoxes/presentational/InfoBox.js +34 -0
  140. package/src/components/ListingTable/ListingTable.js +73 -39
  141. package/src/components/ListingTable/ListingTableContent/ListingTableContent.js +8 -22
  142. package/src/components/ListingTable/mappers/populate-rows.js +83 -18
  143. package/src/components/ListingTable/service/index.js +42 -5
  144. package/src/constants.js +13 -1
  145. package/src/icons/ContentIcon.js +72 -0
  146. package/src/icons/SettingsIcon.js +53 -0
  147. package/src/icons/TaxonomyIcon.js +74 -0
  148. package/src/icons/UsersIcon.js +50 -0
  149. package/src/icons/index.js +6 -0
  150. package/src/index.js +36 -8
  151. package/src/utils/add-content-menu-items.js +42 -3
  152. package/src/utils/build-listing-query.js +11 -1
  153. package/src/utils/get-default-query-params.js +1 -1
@@ -0,0 +1,37 @@
1
+ import { useQuery, gql } from '@apollo/client';
2
+ import useInfoBoxData from './useInfoBox';
3
+ function useData({
4
+ id,
5
+ schema,
6
+ infoBox
7
+ }) {
8
+ const {
9
+ query
10
+ } = useInfoBoxData({
11
+ id,
12
+ schema,
13
+ infoBox
14
+ });
15
+ const infoBoxQuery = query || gql`
16
+ query {
17
+ __typename
18
+ }
19
+ `;
20
+ const {
21
+ data = {},
22
+ loading,
23
+ error
24
+ } = useQuery(infoBoxQuery, {
25
+ variables: {
26
+ id
27
+ },
28
+ skip: !query
29
+ });
30
+ return {
31
+ data: data.__typename !== 'Query' ? data : null,
32
+ loading,
33
+ error
34
+ };
35
+ }
36
+ export default useData;
37
+ //# sourceMappingURL=useData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useData.js","names":["useQuery","gql","useInfoBoxData","useData","id","schema","infoBox","query","infoBoxQuery","data","loading","error","variables","skip","__typename"],"sources":["../../../../src/components/InfoBoxes/hooks/useData.js"],"sourcesContent":["import { useQuery, gql } from '@apollo/client';\nimport useInfoBoxData from './useInfoBox';\n\nfunction useData({ id, schema, infoBox }) {\n const { query } = useInfoBoxData({ id, schema, infoBox });\n\n const infoBoxQuery =\n query ||\n gql`\n query {\n __typename\n }\n `;\n\n const { data = {}, loading, error } = useQuery(infoBoxQuery, { variables: { id }, skip: !query });\n\n return { data: data.__typename !== 'Query' ? data : null, loading, error };\n}\n\nexport default useData;\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,GAAG,QAAQ,gBAAgB;AAC9C,OAAOC,cAAc,MAAM,cAAc;AAEzC,SAASC,OAAOA,CAAC;EAAEC,EAAE;EAAEC,MAAM;EAAEC;AAAQ,CAAC,EAAE;EACxC,MAAM;IAAEC;EAAM,CAAC,GAAGL,cAAc,CAAC;IAAEE,EAAE;IAAEC,MAAM;IAAEC;EAAQ,CAAC,CAAC;EAEzD,MAAME,YAAY,GAChBD,KAAK,IACLN,GAAI;AACR;AACA;AACA;AACA,KAAK;EAEH,MAAM;IAAEQ,IAAI,GAAG,CAAC,CAAC;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGX,QAAQ,CAACQ,YAAY,EAAE;IAAEI,SAAS,EAAE;MAAER;IAAG,CAAC;IAAES,IAAI,EAAE,CAACN;EAAM,CAAC,CAAC;EAEjG,OAAO;IAAEE,IAAI,EAAEA,IAAI,CAACK,UAAU,KAAK,OAAO,GAAGL,IAAI,GAAG,IAAI;IAAEC,OAAO;IAAEC;EAAM,CAAC;AAC5E;AAEA,eAAeR,OAAO"}
@@ -0,0 +1,19 @@
1
+ import buildDynamicQuery from '../helpers/build-dynamic-query';
2
+ function useInfoBox({
3
+ id,
4
+ schema,
5
+ infoBox
6
+ }) {
7
+ const {
8
+ query
9
+ } = buildDynamicQuery({
10
+ id,
11
+ schema,
12
+ infoBox
13
+ });
14
+ return {
15
+ query: query || null
16
+ };
17
+ }
18
+ export default useInfoBox;
19
+ //# sourceMappingURL=useInfoBox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInfoBox.js","names":["buildDynamicQuery","useInfoBox","id","schema","infoBox","query"],"sources":["../../../../src/components/InfoBoxes/hooks/useInfoBox.js"],"sourcesContent":["import buildDynamicQuery from '../helpers/build-dynamic-query';\n\nfunction useInfoBox({ id, schema, infoBox }) {\n const { query } = buildDynamicQuery({\n id,\n schema,\n infoBox\n });\n\n return { query: query || null };\n}\n\nexport default useInfoBox;\n"],"mappings":"AAAA,OAAOA,iBAAiB,MAAM,gCAAgC;AAE9D,SAASC,UAAUA,CAAC;EAAEC,EAAE;EAAEC,MAAM;EAAEC;AAAQ,CAAC,EAAE;EAC3C,MAAM;IAAEC;EAAM,CAAC,GAAGL,iBAAiB,CAAC;IAClCE,EAAE;IACFC,MAAM;IACNC;EACF,CAAC,CAAC;EAEF,OAAO;IAAEC,KAAK,EAAEA,KAAK,IAAI;EAAK,CAAC;AACjC;AAEA,eAAeJ,UAAU"}
@@ -0,0 +1,3 @@
1
+ import InfoBoxes from './InfoBoxes';
2
+ export default InfoBoxes;
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["InfoBoxes"],"sources":["../../../src/components/InfoBoxes/index.js"],"sourcesContent":["import InfoBoxes from './InfoBoxes';\n\nexport default InfoBoxes;\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,aAAa;AAEnC,eAAeA,SAAS"}
@@ -0,0 +1,31 @@
1
+ import PropTypes from 'prop-types';
2
+ import React from 'react';
3
+ const InfoBox = ({
4
+ items,
5
+ infoBoxKey
6
+ }) => {
7
+ if (!items) return null;
8
+ const infoBoxItems = items.map(item => Object.values(item).map(info => {
9
+ if (!info.label || !info.value) return null;
10
+ return /*#__PURE__*/React.createElement("div", {
11
+ className: "info-box--item",
12
+ key: `${infoBoxKey}-${info.label.toLowerCase()}`
13
+ }, /*#__PURE__*/React.createElement("div", {
14
+ className: "info-box--label"
15
+ }, info.label, ": "), /*#__PURE__*/React.createElement("div", {
16
+ className: "info-box--value"
17
+ }, info.value));
18
+ }).filter(Boolean));
19
+ return /*#__PURE__*/React.createElement("div", {
20
+ className: "info-box",
21
+ key: infoBoxKey
22
+ }, /*#__PURE__*/React.createElement("div", {
23
+ className: "info-box--container"
24
+ }, infoBoxItems));
25
+ };
26
+ export default InfoBox;
27
+ InfoBox.propTypes = {
28
+ infoBoxKey: PropTypes.string.isRequired,
29
+ items: PropTypes.array.isRequired
30
+ };
31
+ //# sourceMappingURL=InfoBox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InfoBox.js","names":["PropTypes","React","InfoBox","items","infoBoxKey","infoBoxItems","map","item","Object","values","info","label","value","createElement","className","key","toLowerCase","filter","Boolean","propTypes","string","isRequired","array"],"sources":["../../../../src/components/InfoBoxes/presentational/InfoBox.js"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nconst InfoBox = ({ items, infoBoxKey }) => {\n if (!items) return null;\n\n const infoBoxItems = items.map(item =>\n Object.values(item)\n .map(info => {\n if (!info.label || !info.value) return null;\n\n return (\n <div className=\"info-box--item\" key={`${infoBoxKey}-${info.label.toLowerCase()}`}>\n <div className=\"info-box--label\">{info.label}: </div>\n <div className=\"info-box--value\">{info.value}</div>\n </div>\n );\n })\n .filter(Boolean)\n );\n\n return (\n <div className=\"info-box\" key={infoBoxKey}>\n <div className=\"info-box--container\">{infoBoxItems}</div>\n </div>\n );\n};\n\nexport default InfoBox;\n\nInfoBox.propTypes = {\n infoBoxKey: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired\n};\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,YAAY;AAClC,OAAOC,KAAK,MAAM,OAAO;AAEzB,MAAMC,OAAO,GAAGA,CAAC;EAAEC,KAAK;EAAEC;AAAW,CAAC,KAAK;EACzC,IAAI,CAACD,KAAK,EAAE,OAAO,IAAI;EAEvB,MAAME,YAAY,GAAGF,KAAK,CAACG,GAAG,CAACC,IAAI,IACjCC,MAAM,CAACC,MAAM,CAACF,IAAI,CAAC,CAChBD,GAAG,CAACI,IAAI,IAAI;IACX,IAAI,CAACA,IAAI,CAACC,KAAK,IAAI,CAACD,IAAI,CAACE,KAAK,EAAE,OAAO,IAAI;IAE3C,oBACEX,KAAA,CAAAY,aAAA;MAAKC,SAAS,EAAC,gBAAgB;MAACC,GAAG,EAAG,GAAEX,UAAW,IAAGM,IAAI,CAACC,KAAK,CAACK,WAAW,CAAC,CAAE;IAAE,gBAC/Ef,KAAA,CAAAY,aAAA;MAAKC,SAAS,EAAC;IAAiB,GAAEJ,IAAI,CAACC,KAAK,EAAC,IAAO,CAAC,eACrDV,KAAA,CAAAY,aAAA;MAAKC,SAAS,EAAC;IAAiB,GAAEJ,IAAI,CAACE,KAAW,CAC/C,CAAC;EAEV,CAAC,CAAC,CACDK,MAAM,CAACC,OAAO,CACnB,CAAC;EAED,oBACEjB,KAAA,CAAAY,aAAA;IAAKC,SAAS,EAAC,UAAU;IAACC,GAAG,EAAEX;EAAW,gBACxCH,KAAA,CAAAY,aAAA;IAAKC,SAAS,EAAC;EAAqB,GAAET,YAAkB,CACrD,CAAC;AAEV,CAAC;AAED,eAAeH,OAAO;AAEtBA,OAAO,CAACiB,SAAS,GAAG;EAClBf,UAAU,EAAEJ,SAAS,CAACoB,MAAM,CAACC,UAAU;EACvClB,KAAK,EAAEH,SAAS,CAACsB,KAAK,CAACD;AACzB,CAAC"}
@@ -6,19 +6,18 @@ import React, { useEffect, useState, Fragment } from 'react';
6
6
  import PropTypes from 'prop-types';
7
7
  import { withRouter, Link } from 'react-router-dom';
8
8
  import More from '@blaze-react/more';
9
- import { MainContext, useMainContext } from '@blaze-cms/admin-ui-utils';
10
- import { PageHeader, DeleteAction } from '@blaze-cms/admin';
9
+ import { PageHeader, DeleteAction, CardPrompt } from '@blaze-cms/admin';
11
10
  import { useToasts } from '@blaze-react/toaster';
11
+ import { RenderHook } from '@blaze-cms/plugin-render-hooks-ui';
12
12
  import ListingTableContent from './ListingTableContent';
13
13
  import availableActions from '../EntityManager/Entity/actions-handlers';
14
14
  import { fetchData } from './service';
15
- import { populateRows, formatRows } from './mappers/populate-rows';
15
+ import { populateRows, formatRows, getParsedRowData } from './mappers/populate-rows';
16
16
  import { getDefaultQueryParams } from '../../utils/get-default-query-params';
17
17
  const OVER_SCAN_BUFFER = 10;
18
18
  const ListingTable = ({
19
19
  match,
20
- entitySchema,
21
- selectedMenuItem
20
+ entitySchema
22
21
  }) => {
23
22
  const [tableData, setTableData] = useState({});
24
23
  const [modalStatus, setModalStatus] = useState(false);
@@ -28,14 +27,10 @@ const ListingTable = ({
28
27
  });
29
28
  const [scrollToIndex, setScrollToIndex] = useState(0);
30
29
  const [verifiedRanges, setVerifiedRanges] = useState([]);
31
- const queryParamsDefault = getDefaultQueryParams({
32
- schema: entitySchema
33
- });
30
+ const queryParamsDefault = getDefaultQueryParams(entitySchema);
34
31
  const [queryParams, setQueryParams] = useState(queryParamsDefault);
35
- const {
36
- menuItems,
37
- setMenuItems
38
- } = useMainContext(MainContext);
32
+ const [listFilters, setListFilters] = useState([]);
33
+ const [displayCardPrompt, setDisplayCardPrompt] = useState(true);
39
34
  const client = useApolloClient();
40
35
  const {
41
36
  addToast
@@ -43,20 +38,7 @@ const ListingTable = ({
43
38
  useEffect(() => {
44
39
  (async () => {
45
40
  if (entitySchema.id !== previousSchema.id || previousSchema.id === null && entitySchema.id) {
46
- const data = await fetchData({
47
- client,
48
- querySettings: {
49
- entitySchema,
50
- queryParams: queryParamsDefault
51
- }
52
- });
53
- const populatedTable = populateRows({
54
- toggleModal,
55
- url: match.url,
56
- entitySchema,
57
- rows: data
58
- });
59
- setTableData(populatedTable);
41
+ await doQuery();
60
42
  setPreviousSchema({
61
43
  id: entitySchema.id
62
44
  });
@@ -65,20 +47,28 @@ const ListingTable = ({
65
47
  }, [client, entitySchema, match.url, previousSchema.id, queryParams] // eslint-disable-line react-hooks/exhaustive-deps
66
48
  );
67
49
 
68
- const onCloseCardPrompt = () => {
69
- const updatedSelectedMenuItem = _objectSpread(_objectSpread({}, selectedMenuItem), {}, {
70
- isDisplayedPrompt: false
50
+ const doQuery = async (filters = listFilters) => {
51
+ const data = await fetchData({
52
+ client,
53
+ querySettings: {
54
+ entitySchema,
55
+ queryParams: queryParamsDefault
56
+ },
57
+ listFilters: filters
58
+ });
59
+ const populatedTable = populateRows({
60
+ toggleModal,
61
+ url: match.url,
62
+ entitySchema,
63
+ rows: data
71
64
  });
72
- const [{
73
- header,
74
- items
75
- }] = menuItems;
76
- const updatedItems = items.map(item => item.name === selectedMenuItem.name ? updatedSelectedMenuItem : item);
77
- setMenuItems([{
78
- header,
79
- items: updatedItems
80
- }]);
65
+ setTableData(populatedTable);
66
+ };
67
+ const updateListingFilters = async filters => {
68
+ await doQuery(filters);
69
+ setListFilters(filters);
81
70
  };
71
+ const onCloseCardPrompt = () => null;
82
72
  const toggleModal = item => {
83
73
  setModalStatus(!!item);
84
74
  setItemToDelete(item || {});
@@ -115,10 +105,12 @@ const ListingTable = ({
115
105
  querySettings: {
116
106
  entitySchema,
117
107
  queryParams: sortQueryParams
118
- }
108
+ },
109
+ listFilters
119
110
  });
120
111
  const {
121
- columns
112
+ columns,
113
+ isEnquiry
122
114
  } = tableData;
123
115
  const [firstColumn] = columns;
124
116
  setTableData(_objectSpread(_objectSpread({}, tableData), {}, {
@@ -126,10 +118,11 @@ const ListingTable = ({
126
118
  [property]: direction
127
119
  },
128
120
  rows: formatRows({
129
- rows: data,
121
+ rows: getParsedRowData(data),
130
122
  url: match.url,
131
123
  toggleModal,
132
- firstColumn
124
+ firstColumn,
125
+ isEnquiry
133
126
  })
134
127
  }));
135
128
  };
@@ -148,12 +141,14 @@ const ListingTable = ({
148
141
  querySettings: {
149
142
  entitySchema,
150
143
  queryParams: updatedQueryParams
151
- }
144
+ },
145
+ listFilters
152
146
  });
153
147
  const updatedRows = [...tableData.rows, ...formatRows({
154
- rows: data,
148
+ rows: getParsedRowData(data),
155
149
  url: match.url,
156
- toggleModal
150
+ toggleModal,
151
+ isEnquiry: tableData.isEnquiry
157
152
  })];
158
153
  setVerifiedRanges([...verifiedRanges, loadIndex]);
159
154
  setQueryParams(updatedQueryParams);
@@ -164,6 +159,7 @@ const ListingTable = ({
164
159
  }
165
160
  };
166
161
  if (!tableData || !tableData.rows) return 'loading';
162
+ const showAddButton = !!tableData.rows.length && !tableData.isEnquiry;
167
163
  return /*#__PURE__*/React.createElement("div", {
168
164
  className: "page"
169
165
  }, modalStatus && /*#__PURE__*/React.createElement(DeleteAction, {
@@ -173,7 +169,7 @@ const ListingTable = ({
173
169
  }), /*#__PURE__*/React.createElement(PageHeader, {
174
170
  title: entitySchema.displayName,
175
171
  subtitle: ""
176
- }, (!selectedMenuItem.isDisplayedPrompt || !!tableData.rows.length) && /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Link, {
172
+ }, showAddButton && /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Link, {
177
173
  "data-testid": "addEntity",
178
174
  className: "button button--small",
179
175
  to: `${match.url}/create`
@@ -183,20 +179,30 @@ const ListingTable = ({
183
179
  className: "material-icons"
184
180
  }, "more_vert")), /*#__PURE__*/React.createElement(More.Content, {
185
181
  isMoreMenu: true
186
- }))))), /*#__PURE__*/React.createElement(ListingTableContent, {
182
+ }))))), displayCardPrompt && !showAddButton && /*#__PURE__*/React.createElement(CardPrompt, {
183
+ onClose: () => {
184
+ setDisplayCardPrompt(false);
185
+ }
186
+ }, /*#__PURE__*/React.createElement(Link, {
187
+ className: "button button--rounded button--cta",
188
+ to: `${match.url}/create`,
189
+ "data-testid": "add-button"
190
+ }, "Add")), /*#__PURE__*/React.createElement(RenderHook, {
191
+ hookKey: "entity:listing:main:top",
192
+ schema: entitySchema,
193
+ setListFilters: updateListingFilters
194
+ }), /*#__PURE__*/React.createElement(ListingTableContent, {
187
195
  overScanBuffer: OVER_SCAN_BUFFER,
188
196
  onSort: handleSort,
189
197
  onRenderItems: handleRenderedItems,
190
198
  tableData: tableData,
191
199
  onCloseCardPrompt: onCloseCardPrompt,
192
- selectedMenuItem: selectedMenuItem,
193
200
  scrollToIndex: scrollToIndex
194
201
  }));
195
202
  };
196
203
  ListingTable.propTypes = {
197
204
  entitySchema: PropTypes.object.isRequired,
198
- match: PropTypes.object.isRequired,
199
- selectedMenuItem: PropTypes.object.isRequired
205
+ match: PropTypes.object.isRequired
200
206
  };
201
207
  export default withRouter(ListingTable);
202
208
  //# sourceMappingURL=ListingTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListingTable.js","names":["useApolloClient","React","useEffect","useState","Fragment","PropTypes","withRouter","Link","More","MainContext","useMainContext","PageHeader","DeleteAction","useToasts","ListingTableContent","availableActions","fetchData","populateRows","formatRows","getDefaultQueryParams","OVER_SCAN_BUFFER","ListingTable","match","entitySchema","selectedMenuItem","tableData","setTableData","modalStatus","setModalStatus","itemToDelete","setItemToDelete","previousSchema","setPreviousSchema","id","scrollToIndex","setScrollToIndex","verifiedRanges","setVerifiedRanges","queryParamsDefault","schema","queryParams","setQueryParams","menuItems","setMenuItems","client","addToast","data","querySettings","populatedTable","toggleModal","url","rows","onCloseCardPrompt","updatedSelectedMenuItem","_objectSpread","isDisplayedPrompt","header","items","updatedItems","map","item","name","deleteAction","delete","submit","parsedFormValues","updatedTableData","filter","handleSort","event","property","direction","Object","entries","sortQueryParams","sort","columns","firstColumn","appliedSort","handleRenderedItems","params","startIndex","rowsLength","length","loadIndex","Math","floor","includes","updatedQueryParams","offset","updatedRows","createElement","className","onClose","itemName","title","displayName","subtitle","to","Actions","Avatar","isMoreMenu","Content","overScanBuffer","onSort","onRenderItems","propTypes","object","isRequired"],"sources":["../../../src/components/ListingTable/ListingTable.js"],"sourcesContent":["import { useApolloClient } from '@apollo/client';\nimport React, { useEffect, useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter, Link } from 'react-router-dom';\nimport More from '@blaze-react/more';\nimport { MainContext, useMainContext } from '@blaze-cms/admin-ui-utils';\nimport { PageHeader, DeleteAction } from '@blaze-cms/admin';\nimport { useToasts } from '@blaze-react/toaster';\nimport ListingTableContent from './ListingTableContent';\nimport availableActions from '../EntityManager/Entity/actions-handlers';\nimport { fetchData } from './service';\nimport { populateRows, formatRows } from './mappers/populate-rows';\nimport { getDefaultQueryParams } from '../../utils/get-default-query-params';\n\nconst OVER_SCAN_BUFFER = 10;\n\nconst ListingTable = ({ match, entitySchema, selectedMenuItem }) => {\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 [scrollToIndex, setScrollToIndex] = useState(0);\n const [verifiedRanges, setVerifiedRanges] = useState([]);\n const queryParamsDefault = getDefaultQueryParams({ schema: entitySchema });\n const [queryParams, setQueryParams] = useState(queryParamsDefault);\n const { menuItems, setMenuItems } = useMainContext(MainContext);\n const client = useApolloClient();\n const { addToast } = useToasts();\n\n useEffect(\n () => {\n (async () => {\n if (\n entitySchema.id !== previousSchema.id ||\n (previousSchema.id === null && entitySchema.id)\n ) {\n const data = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: queryParamsDefault\n }\n });\n const populatedTable = populateRows({\n toggleModal,\n url: match.url,\n entitySchema,\n rows: data\n });\n setTableData(populatedTable);\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 onCloseCardPrompt = () => {\n const updatedSelectedMenuItem = {\n ...selectedMenuItem,\n isDisplayedPrompt: false\n };\n const [{ header, items }] = menuItems;\n const updatedItems = items.map(\n item => (item.name === selectedMenuItem.name ? updatedSelectedMenuItem : item)\n );\n setMenuItems([{ header, items: updatedItems }]);\n };\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 setScrollToIndex(0);\n setVerifiedRanges([]);\n setQueryParams(sortQueryParams);\n\n const data = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: sortQueryParams\n }\n });\n const { columns } = tableData;\n const [firstColumn] = columns;\n\n setTableData({\n ...tableData,\n appliedSort: { [property]: direction },\n rows: formatRows({ rows: data, url: match.url, toggleModal, firstColumn })\n });\n };\n\n const handleRenderedItems = async params => {\n const { startIndex } = params;\n const rowsLength = tableData.rows.length;\n const loadIndex = Math.floor(rowsLength / 3) - OVER_SCAN_BUFFER;\n if (loadIndex > 0 && loadIndex < startIndex && !verifiedRanges.includes(loadIndex)) {\n const updatedQueryParams = {\n ...queryParams,\n offset: rowsLength\n };\n const data = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: updatedQueryParams\n }\n });\n const updatedRows = [\n ...tableData.rows,\n ...formatRows({ rows: data, url: match.url, toggleModal })\n ];\n\n setVerifiedRanges([...verifiedRanges, loadIndex]);\n setQueryParams(updatedQueryParams);\n setTableData({\n ...tableData,\n rows: updatedRows\n });\n setScrollToIndex(startIndex + OVER_SCAN_BUFFER);\n }\n };\n\n if (!tableData || !tableData.rows) return 'loading';\n\n return (\n <div className=\"page\">\n {modalStatus && (\n <DeleteAction\n onClose={toggleModal}\n deleteAction={deleteAction}\n itemName={itemToDelete.name}\n />\n )}\n <PageHeader title={entitySchema.displayName} subtitle=\"\">\n {(!selectedMenuItem.isDisplayedPrompt || !!tableData.rows.length) && (\n <Fragment>\n <Link\n data-testid=\"addEntity\"\n className=\"button button--small\"\n to={`${match.url}/create`}>\n Add\n </Link>\n <PageHeader.Actions>\n <More>\n <More.Avatar isMoreMenu>\n <span className=\"material-icons\">more_vert</span>\n </More.Avatar>\n <More.Content isMoreMenu />\n </More>\n </PageHeader.Actions>\n </Fragment>\n )}\n </PageHeader>\n <ListingTableContent\n overScanBuffer={OVER_SCAN_BUFFER}\n onSort={handleSort}\n onRenderItems={handleRenderedItems}\n tableData={tableData}\n onCloseCardPrompt={onCloseCardPrompt}\n selectedMenuItem={selectedMenuItem}\n scrollToIndex={scrollToIndex}\n />\n </div>\n );\n};\nListingTable.propTypes = {\n entitySchema: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired,\n selectedMenuItem: PropTypes.object.isRequired\n};\n\nexport default withRouter(ListingTable);\n"],"mappings":"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"}
1
+ {"version":3,"file":"ListingTable.js","names":["useApolloClient","React","useEffect","useState","Fragment","PropTypes","withRouter","Link","More","PageHeader","DeleteAction","CardPrompt","useToasts","RenderHook","ListingTableContent","availableActions","fetchData","populateRows","formatRows","getParsedRowData","getDefaultQueryParams","OVER_SCAN_BUFFER","ListingTable","match","entitySchema","tableData","setTableData","modalStatus","setModalStatus","itemToDelete","setItemToDelete","previousSchema","setPreviousSchema","id","scrollToIndex","setScrollToIndex","verifiedRanges","setVerifiedRanges","queryParamsDefault","queryParams","setQueryParams","listFilters","setListFilters","displayCardPrompt","setDisplayCardPrompt","client","addToast","doQuery","url","filters","data","querySettings","populatedTable","toggleModal","rows","updateListingFilters","onCloseCardPrompt","item","deleteAction","delete","submit","parsedFormValues","updatedTableData","_objectSpread","filter","handleSort","event","property","direction","Object","entries","sortQueryParams","sort","columns","isEnquiry","firstColumn","appliedSort","handleRenderedItems","params","startIndex","rowsLength","length","loadIndex","Math","floor","includes","updatedQueryParams","offset","updatedRows","showAddButton","createElement","className","onClose","itemName","name","title","displayName","subtitle","to","Actions","Avatar","isMoreMenu","Content","hookKey","schema","overScanBuffer","onSort","onRenderItems","propTypes","object","isRequired"],"sources":["../../../src/components/ListingTable/ListingTable.js"],"sourcesContent":["import { useApolloClient } from '@apollo/client';\nimport React, { useEffect, useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter, Link } from 'react-router-dom';\nimport More from '@blaze-react/more';\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 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 OVER_SCAN_BUFFER = 10;\n\nconst ListingTable = ({ match, entitySchema }) => {\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 [scrollToIndex, setScrollToIndex] = useState(0);\n const [verifiedRanges, setVerifiedRanges] = useState([]);\n const queryParamsDefault = getDefaultQueryParams(entitySchema);\n const [queryParams, setQueryParams] = useState(queryParamsDefault);\n const [listFilters, setListFilters] = useState([]);\n const [displayCardPrompt, setDisplayCardPrompt] = useState(true);\n const client = useApolloClient();\n const { addToast } = useToasts();\n\n useEffect(\n () => {\n (async () => {\n if (\n entitySchema.id !== previousSchema.id ||\n (previousSchema.id === null && entitySchema.id)\n ) {\n await doQuery();\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) => {\n const data = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: queryParamsDefault\n },\n listFilters: filters\n });\n\n const populatedTable = populateRows({\n toggleModal,\n url: match.url,\n entitySchema,\n rows: data\n });\n\n setTableData(populatedTable);\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 setScrollToIndex(0);\n setVerifiedRanges([]);\n setQueryParams(sortQueryParams);\n\n const data = 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(data),\n url: match.url,\n toggleModal,\n firstColumn,\n isEnquiry\n })\n });\n };\n\n const handleRenderedItems = async params => {\n const { startIndex } = params;\n const rowsLength = tableData.rows.length;\n const loadIndex = Math.floor(rowsLength / 3) - OVER_SCAN_BUFFER;\n if (loadIndex > 0 && loadIndex < startIndex && !verifiedRanges.includes(loadIndex)) {\n const updatedQueryParams = {\n ...queryParams,\n offset: rowsLength\n };\n const data = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: updatedQueryParams\n },\n listFilters\n });\n const updatedRows = [\n ...tableData.rows,\n ...formatRows({\n rows: getParsedRowData(data),\n url: match.url,\n toggleModal,\n isEnquiry: tableData.isEnquiry\n })\n ];\n\n setVerifiedRanges([...verifiedRanges, loadIndex]);\n setQueryParams(updatedQueryParams);\n setTableData({\n ...tableData,\n rows: updatedRows\n });\n setScrollToIndex(startIndex + OVER_SCAN_BUFFER);\n }\n };\n\n if (!tableData || !tableData.rows) return 'loading';\n const showAddButton = !!tableData.rows.length && !tableData.isEnquiry;\n\n return (\n <div className=\"page\">\n {modalStatus && (\n <DeleteAction\n onClose={toggleModal}\n deleteAction={deleteAction}\n itemName={itemToDelete.name}\n />\n )}\n <PageHeader title={entitySchema.displayName} subtitle=\"\">\n {showAddButton && (\n <Fragment>\n <Link\n data-testid=\"addEntity\"\n className=\"button button--small\"\n to={`${match.url}/create`}>\n Add\n </Link>\n <PageHeader.Actions>\n <More>\n <More.Avatar isMoreMenu>\n <span className=\"material-icons\">more_vert</span>\n </More.Avatar>\n <More.Content isMoreMenu />\n </More>\n </PageHeader.Actions>\n </Fragment>\n )}\n </PageHeader>\n {displayCardPrompt &&\n !showAddButton && (\n <CardPrompt\n onClose={() => {\n setDisplayCardPrompt(false);\n }}>\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 <RenderHook\n hookKey=\"entity:listing:main:top\"\n schema={entitySchema}\n setListFilters={updateListingFilters}\n />\n <ListingTableContent\n overScanBuffer={OVER_SCAN_BUFFER}\n onSort={handleSort}\n onRenderItems={handleRenderedItems}\n tableData={tableData}\n onCloseCardPrompt={onCloseCardPrompt}\n scrollToIndex={scrollToIndex}\n />\n </div>\n );\n};\nListingTable.propTypes = {\n entitySchema: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired\n};\n\nexport default withRouter(ListingTable);\n"],"mappings":"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"}
@@ -1,14 +1,10 @@
1
1
  import React from 'react';
2
2
  import Table from '@blaze-react/table';
3
3
  import PropTypes from 'prop-types';
4
- import { CardPrompt } from '@blaze-cms/admin';
5
- import { Link, withRouter } from 'react-router-dom';
4
+ import { withRouter } from 'react-router-dom';
6
5
  const ListingTableContent = ({
7
6
  tableData,
8
7
  handleSelect,
9
- onCloseCardPrompt,
10
- selectedMenuItem,
11
- match,
12
8
  onSort,
13
9
  onClickRow,
14
10
  overScanBuffer,
@@ -16,8 +12,12 @@ const ListingTableContent = ({
16
12
  scrollToIndex
17
13
  }) => {
18
14
  const displayTable = tableData && tableData.rows && !!tableData.rows.length;
19
- return /*#__PURE__*/React.createElement(React.Fragment, null, displayTable ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
20
- className: "page__content"
15
+ const {
16
+ isEnquiry
17
+ } = tableData;
18
+ const className = `page__content${isEnquiry ? ' array-table' : ''}`;
19
+ return /*#__PURE__*/React.createElement(React.Fragment, null, displayTable && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
20
+ className: className
21
21
  }, /*#__PURE__*/React.createElement(Table, {
22
22
  scrollToIndex: scrollToIndex,
23
23
  onSort: onSort,
@@ -25,22 +25,13 @@ const ListingTableContent = ({
25
25
  overScanBuffer: overScanBuffer,
26
26
  onRenderItems: onRenderItems,
27
27
  data: tableData,
28
- checkboxes: true,
28
+ checkboxes: !isEnquiry,
29
29
  onSelect: handleSelect,
30
30
  "data-testid": "listing-table-content"
31
- }))) : selectedMenuItem.isDisplayedPrompt && /*#__PURE__*/React.createElement(CardPrompt, {
32
- onClose: onCloseCardPrompt,
33
- "data-testid": "card-prompt"
34
- }, /*#__PURE__*/React.createElement(Link, {
35
- className: "button button--rounded button--cta",
36
- to: `${match.url}/create`,
37
- "data-testid": "add-button"
38
- }, "Add")));
31
+ }))));
39
32
  };
40
33
  ListingTableContent.propTypes = {
41
34
  tableData: PropTypes.object.isRequired,
42
- onCloseCardPrompt: PropTypes.func.isRequired,
43
- selectedMenuItem: PropTypes.object.isRequired,
44
35
  match: PropTypes.shape({
45
36
  url: PropTypes.string
46
37
  }).isRequired,
@@ -57,7 +48,8 @@ ListingTableContent.defaultProps = {
57
48
  onClickRow: () => {},
58
49
  overScanBuffer: 0,
59
50
  scrollToIndex: 0,
60
- onRenderItems: () => {}
51
+ onRenderItems: () => {},
52
+ selectedMenuItem: null
61
53
  };
62
54
  export default withRouter(ListingTableContent);
63
55
  //# sourceMappingURL=ListingTableContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListingTableContent.js","names":["React","Table","PropTypes","CardPrompt","Link","withRouter","ListingTableContent","tableData","handleSelect","onCloseCardPrompt","selectedMenuItem","match","onSort","onClickRow","overScanBuffer","onRenderItems","scrollToIndex","displayTable","rows","length","createElement","Fragment","className","data","checkboxes","onSelect","isDisplayedPrompt","onClose","to","url","propTypes","object","isRequired","func","shape","string","number","defaultProps"],"sources":["../../../../src/components/ListingTable/ListingTableContent/ListingTableContent.js"],"sourcesContent":["import React from 'react';\nimport Table from '@blaze-react/table';\nimport PropTypes from 'prop-types';\nimport { CardPrompt } from '@blaze-cms/admin';\nimport { Link, withRouter } from 'react-router-dom';\n\nconst ListingTableContent = ({\n tableData,\n handleSelect,\n onCloseCardPrompt,\n selectedMenuItem,\n match,\n onSort,\n onClickRow,\n overScanBuffer,\n onRenderItems,\n scrollToIndex\n}) => {\n const displayTable = tableData && tableData.rows && !!tableData.rows.length;\n\n return (\n <>\n {displayTable ? (\n <>\n <div className=\"page__content\">\n <Table\n scrollToIndex={scrollToIndex}\n onSort={onSort}\n onClickRow={onClickRow}\n overScanBuffer={overScanBuffer}\n onRenderItems={onRenderItems}\n data={tableData}\n checkboxes\n onSelect={handleSelect}\n data-testid=\"listing-table-content\"\n />\n </div>\n </>\n ) : (\n selectedMenuItem.isDisplayedPrompt && (\n <CardPrompt onClose={onCloseCardPrompt} data-testid=\"card-prompt\">\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 </>\n );\n};\n\nListingTableContent.propTypes = {\n tableData: PropTypes.object.isRequired,\n onCloseCardPrompt: PropTypes.func.isRequired,\n selectedMenuItem: PropTypes.object.isRequired,\n match: PropTypes.shape({\n url: PropTypes.string\n }).isRequired,\n handleSelect: PropTypes.func,\n onSort: PropTypes.func,\n onClickRow: PropTypes.func,\n overScanBuffer: PropTypes.number,\n scrollToIndex: PropTypes.number,\n onRenderItems: PropTypes.func\n};\n\nListingTableContent.defaultProps = {\n handleSelect: () => {},\n onSort: () => {},\n onClickRow: () => {},\n overScanBuffer: 0,\n scrollToIndex: 0,\n onRenderItems: () => {}\n};\n\nexport default withRouter(ListingTableContent);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,KAAK,MAAM,oBAAoB;AACtC,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,IAAI,EAAEC,UAAU,QAAQ,kBAAkB;AAEnD,MAAMC,mBAAmB,GAAGA,CAAC;EAC3BC,SAAS;EACTC,YAAY;EACZC,iBAAiB;EACjBC,gBAAgB;EAChBC,KAAK;EACLC,MAAM;EACNC,UAAU;EACVC,cAAc;EACdC,aAAa;EACbC;AACF,CAAC,KAAK;EACJ,MAAMC,YAAY,GAAGV,SAAS,IAAIA,SAAS,CAACW,IAAI,IAAI,CAAC,CAACX,SAAS,CAACW,IAAI,CAACC,MAAM;EAE3E,oBACEnB,KAAA,CAAAoB,aAAA,CAAApB,KAAA,CAAAqB,QAAA,QACGJ,YAAY,gBACXjB,KAAA,CAAAoB,aAAA,CAAApB,KAAA,CAAAqB,QAAA,qBACErB,KAAA,CAAAoB,aAAA;IAAKE,SAAS,EAAC;EAAe,gBAC5BtB,KAAA,CAAAoB,aAAA,CAACnB,KAAK;IACJe,aAAa,EAAEA,aAAc;IAC7BJ,MAAM,EAAEA,MAAO;IACfC,UAAU,EAAEA,UAAW;IACvBC,cAAc,EAAEA,cAAe;IAC/BC,aAAa,EAAEA,aAAc;IAC7BQ,IAAI,EAAEhB,SAAU;IAChBiB,UAAU;IACVC,QAAQ,EAAEjB,YAAa;IACvB,eAAY;EAAuB,CACpC,CACE,CACL,CAAC,GAEHE,gBAAgB,CAACgB,iBAAiB,iBAChC1B,KAAA,CAAAoB,aAAA,CAACjB,UAAU;IAACwB,OAAO,EAAElB,iBAAkB;IAAC,eAAY;EAAa,gBAC/DT,KAAA,CAAAoB,aAAA,CAAChB,IAAI;IACHkB,SAAS,EAAC,oCAAoC;IAC9CM,EAAE,EAAG,GAAEjB,KAAK,CAACkB,GAAI,SAAS;IAC1B,eAAY;EAAY,GAAC,KAErB,CACI,CAGhB,CAAC;AAEP,CAAC;AAEDvB,mBAAmB,CAACwB,SAAS,GAAG;EAC9BvB,SAAS,EAAEL,SAAS,CAAC6B,MAAM,CAACC,UAAU;EACtCvB,iBAAiB,EAAEP,SAAS,CAAC+B,IAAI,CAACD,UAAU;EAC5CtB,gBAAgB,EAAER,SAAS,CAAC6B,MAAM,CAACC,UAAU;EAC7CrB,KAAK,EAAET,SAAS,CAACgC,KAAK,CAAC;IACrBL,GAAG,EAAE3B,SAAS,CAACiC;EACjB,CAAC,CAAC,CAACH,UAAU;EACbxB,YAAY,EAAEN,SAAS,CAAC+B,IAAI;EAC5BrB,MAAM,EAAEV,SAAS,CAAC+B,IAAI;EACtBpB,UAAU,EAAEX,SAAS,CAAC+B,IAAI;EAC1BnB,cAAc,EAAEZ,SAAS,CAACkC,MAAM;EAChCpB,aAAa,EAAEd,SAAS,CAACkC,MAAM;EAC/BrB,aAAa,EAAEb,SAAS,CAAC+B;AAC3B,CAAC;AAED3B,mBAAmB,CAAC+B,YAAY,GAAG;EACjC7B,YAAY,EAAEA,CAAA,KAAM,CAAC,CAAC;EACtBI,MAAM,EAAEA,CAAA,KAAM,CAAC,CAAC;EAChBC,UAAU,EAAEA,CAAA,KAAM,CAAC,CAAC;EACpBC,cAAc,EAAE,CAAC;EACjBE,aAAa,EAAE,CAAC;EAChBD,aAAa,EAAEA,CAAA,KAAM,CAAC;AACxB,CAAC;AAED,eAAeV,UAAU,CAACC,mBAAmB,CAAC"}
1
+ {"version":3,"file":"ListingTableContent.js","names":["React","Table","PropTypes","withRouter","ListingTableContent","tableData","handleSelect","onSort","onClickRow","overScanBuffer","onRenderItems","scrollToIndex","displayTable","rows","length","isEnquiry","className","createElement","Fragment","data","checkboxes","onSelect","propTypes","object","isRequired","match","shape","url","string","func","number","defaultProps","selectedMenuItem"],"sources":["../../../../src/components/ListingTable/ListingTableContent/ListingTableContent.js"],"sourcesContent":["import React from 'react';\nimport Table from '@blaze-react/table';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\n\nconst ListingTableContent = ({\n tableData,\n handleSelect,\n onSort,\n onClickRow,\n overScanBuffer,\n onRenderItems,\n scrollToIndex\n}) => {\n const displayTable = tableData && tableData.rows && !!tableData.rows.length;\n const { isEnquiry } = tableData;\n const className = `page__content${isEnquiry ? ' array-table' : ''}`;\n\n return (\n <>\n {displayTable && (\n <>\n <div className={className}>\n <Table\n scrollToIndex={scrollToIndex}\n onSort={onSort}\n onClickRow={onClickRow}\n overScanBuffer={overScanBuffer}\n onRenderItems={onRenderItems}\n data={tableData}\n checkboxes={!isEnquiry}\n onSelect={handleSelect}\n data-testid=\"listing-table-content\"\n />\n </div>\n </>\n )}\n </>\n );\n};\n\nListingTableContent.propTypes = {\n tableData: PropTypes.object.isRequired,\n match: PropTypes.shape({\n url: PropTypes.string\n }).isRequired,\n handleSelect: PropTypes.func,\n onSort: PropTypes.func,\n onClickRow: PropTypes.func,\n overScanBuffer: PropTypes.number,\n scrollToIndex: PropTypes.number,\n onRenderItems: PropTypes.func\n};\n\nListingTableContent.defaultProps = {\n handleSelect: () => {},\n onSort: () => {},\n onClickRow: () => {},\n overScanBuffer: 0,\n scrollToIndex: 0,\n onRenderItems: () => {},\n selectedMenuItem: null\n};\n\nexport default withRouter(ListingTableContent);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,KAAK,MAAM,oBAAoB;AACtC,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,UAAU,QAAQ,kBAAkB;AAE7C,MAAMC,mBAAmB,GAAGA,CAAC;EAC3BC,SAAS;EACTC,YAAY;EACZC,MAAM;EACNC,UAAU;EACVC,cAAc;EACdC,aAAa;EACbC;AACF,CAAC,KAAK;EACJ,MAAMC,YAAY,GAAGP,SAAS,IAAIA,SAAS,CAACQ,IAAI,IAAI,CAAC,CAACR,SAAS,CAACQ,IAAI,CAACC,MAAM;EAC3E,MAAM;IAAEC;EAAU,CAAC,GAAGV,SAAS;EAC/B,MAAMW,SAAS,GAAI,gBAAeD,SAAS,GAAG,cAAc,GAAG,EAAG,EAAC;EAEnE,oBACEf,KAAA,CAAAiB,aAAA,CAAAjB,KAAA,CAAAkB,QAAA,QACGN,YAAY,iBACXZ,KAAA,CAAAiB,aAAA,CAAAjB,KAAA,CAAAkB,QAAA,qBACElB,KAAA,CAAAiB,aAAA;IAAKD,SAAS,EAAEA;EAAU,gBACxBhB,KAAA,CAAAiB,aAAA,CAAChB,KAAK;IACJU,aAAa,EAAEA,aAAc;IAC7BJ,MAAM,EAAEA,MAAO;IACfC,UAAU,EAAEA,UAAW;IACvBC,cAAc,EAAEA,cAAe;IAC/BC,aAAa,EAAEA,aAAc;IAC7BS,IAAI,EAAEd,SAAU;IAChBe,UAAU,EAAE,CAACL,SAAU;IACvBM,QAAQ,EAAEf,YAAa;IACvB,eAAY;EAAuB,CACpC,CACE,CACL,CAEJ,CAAC;AAEP,CAAC;AAEDF,mBAAmB,CAACkB,SAAS,GAAG;EAC9BjB,SAAS,EAAEH,SAAS,CAACqB,MAAM,CAACC,UAAU;EACtCC,KAAK,EAAEvB,SAAS,CAACwB,KAAK,CAAC;IACrBC,GAAG,EAAEzB,SAAS,CAAC0B;EACjB,CAAC,CAAC,CAACJ,UAAU;EACblB,YAAY,EAAEJ,SAAS,CAAC2B,IAAI;EAC5BtB,MAAM,EAAEL,SAAS,CAAC2B,IAAI;EACtBrB,UAAU,EAAEN,SAAS,CAAC2B,IAAI;EAC1BpB,cAAc,EAAEP,SAAS,CAAC4B,MAAM;EAChCnB,aAAa,EAAET,SAAS,CAAC4B,MAAM;EAC/BpB,aAAa,EAAER,SAAS,CAAC2B;AAC3B,CAAC;AAEDzB,mBAAmB,CAAC2B,YAAY,GAAG;EACjCzB,YAAY,EAAEA,CAAA,KAAM,CAAC,CAAC;EACtBC,MAAM,EAAEA,CAAA,KAAM,CAAC,CAAC;EAChBC,UAAU,EAAEA,CAAA,KAAM,CAAC,CAAC;EACpBC,cAAc,EAAE,CAAC;EACjBE,aAAa,EAAE,CAAC;EAChBD,aAAa,EAAEA,CAAA,KAAM,CAAC,CAAC;EACvBsB,gBAAgB,EAAE;AACpB,CAAC;AAED,eAAe7B,UAAU,CAACC,mBAAmB,CAAC"}
@@ -10,20 +10,22 @@ const formatRows = ({
10
10
  url,
11
11
  toggleModal,
12
12
  label,
13
- firstColumn = 'name'
13
+ firstColumn = 'name',
14
+ isEnquiry
14
15
  }) => rows.map(data => {
15
16
  const editUrl = `${url}/update/${data.id}`;
16
- return _objectSpread(_objectSpread({}, data), {}, {
17
+ const rowProps = _objectSpread(_objectSpread({}, data), {}, {
17
18
  [firstColumn]: /*#__PURE__*/React.createElement(Link, {
18
19
  to: editUrl,
19
20
  role: "button"
20
- }, data[firstColumn]),
21
- actions: /*#__PURE__*/React.createElement(TableActions, {
22
- editUrl: editUrl,
23
- data: data,
24
- showDeleteModal: toggleModal
25
- })
21
+ }, data[firstColumn])
26
22
  });
23
+ if (!isEnquiry) rowProps.actions = /*#__PURE__*/React.createElement(TableActions, {
24
+ editUrl: editUrl,
25
+ data: data,
26
+ showDeleteModal: toggleModal
27
+ });
28
+ return rowProps;
27
29
  });
28
30
  const getSanitizedColumnLabel = columnProp => {
29
31
  let sanitizedChar = '';
@@ -32,14 +34,57 @@ const getSanitizedColumnLabel = columnProp => {
32
34
  }
33
35
  return sanitizedChar;
34
36
  };
35
- const getColumnLabels = (listingProperties, properties, dynamicProperties) => {
36
- const allProperties = _objectSpread(_objectSpread({}, properties), dynamicProperties);
37
- return listingProperties.reduce((acc, listingProperty) => {
38
- const label = allProperties[listingProperty].label || getSanitizedColumnLabel(listingProperty);
39
- return _objectSpread(_objectSpread({}, acc), {
40
- [listingProperty]: label
41
- });
42
- }, {});
37
+ const buildArrayRowContent = rowData => /*#__PURE__*/React.createElement("div", {
38
+ className: "table-row-list"
39
+ }, rowData.map(rowGroup => /*#__PURE__*/React.createElement("div", {
40
+ className: "table-row-list__group"
41
+ }, rowGroup.map(({
42
+ label,
43
+ value,
44
+ url
45
+ }) => /*#__PURE__*/React.createElement("div", {
46
+ className: "table-row-list__group__item"
47
+ }, /*#__PURE__*/React.createElement("span", {
48
+ className: "table-row-list__group__item__label"
49
+ }, " ", label, ":"), url ? /*#__PURE__*/React.createElement(Link, {
50
+ to: url,
51
+ role: "button",
52
+ className: "table-row-list__group__item__value"
53
+ }, value) : /*#__PURE__*/React.createElement("span", {
54
+ className: "table-row-list__group__item__value"
55
+ }, " ", value))))));
56
+ const buildArrayRowData = rowData => {
57
+ const dataGroups = [];
58
+ const groups = Math.ceil(rowData.length / 3) || 1;
59
+ for (let index = 0; index < groups; index += 1) {
60
+ const currentStart = index * groups;
61
+ dataGroups[index] = rowData.slice(currentStart, currentStart + 3);
62
+ }
63
+ return buildArrayRowContent(dataGroups);
64
+ };
65
+ const getParsedRowData = rows => rows.map(rowData => Object.keys(rowData).reduce((acc, key) => {
66
+ const parsedData = Array.isArray(rowData[key]) ? buildArrayRowData(rowData[key]) : rowData[key];
67
+ return _objectSpread(_objectSpread({}, acc), {}, {
68
+ [key]: parsedData
69
+ });
70
+ }, {}));
71
+ const getColumnsAndLabels = (listingProperties, allProperties, rows) => {
72
+ const columns = [];
73
+ const labels = {};
74
+ listingProperties.forEach(listingProperty => {
75
+ const propKey = listingProperty.includes(' ') ? listingProperty.split(' ')[0] : listingProperty;
76
+ const {
77
+ label
78
+ } = allProperties[propKey] || {};
79
+ columns.push(propKey);
80
+ labels[propKey] = label || getSanitizedColumnLabel(propKey);
81
+ });
82
+ const parsedRowData = getParsedRowData(rows);
83
+ return {
84
+ columns,
85
+ labels,
86
+ parsedRowData
87
+ };
43
88
  };
44
89
  const populateRows = ({
45
90
  toggleModal,
@@ -48,16 +93,21 @@ const populateRows = ({
48
93
  rows
49
94
  }) => {
50
95
  const {
96
+ id: schemaId,
51
97
  listingProperties,
52
98
  properties,
53
99
  dynamicProperties = {},
54
100
  formProperties
55
101
  } = entitySchema;
56
- const columns = [...listingProperties, ACTIONS];
102
+ const isEnquiry = schemaId === 'enquiry';
103
+ const columnOptions = !isEnquiry ? [...listingProperties, ACTIONS] : [...listingProperties];
104
+ const allProperties = _objectSpread(_objectSpread({}, properties), dynamicProperties);
105
+ const {
106
+ columns,
107
+ labels,
108
+ parsedRowData
109
+ } = getColumnsAndLabels(columnOptions, allProperties, rows);
57
110
  const [firstColumn] = columns;
58
- const labels = _objectSpread(_objectSpread({}, getColumnLabels(listingProperties, properties, dynamicProperties)), {}, {
59
- [ACTIONS]: ACTIONS
60
- });
61
111
  return {
62
112
  identification: 'id',
63
113
  sort: null,
@@ -66,11 +116,13 @@ const populateRows = ({
66
116
  orderBy: [...formProperties],
67
117
  rows: formatRows({
68
118
  firstColumn,
69
- rows,
119
+ rows: parsedRowData,
70
120
  url,
71
- toggleModal
72
- })
121
+ toggleModal,
122
+ isEnquiry
123
+ }),
124
+ isEnquiry
73
125
  };
74
126
  };
75
- export { populateRows, formatRows };
127
+ export { populateRows, formatRows, getParsedRowData };
76
128
  //# sourceMappingURL=populate-rows.js.map