@blaze-cms/plugin-data-ui 0.140.3 → 0.141.0-alpha.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 (62) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/lib/components/EntityManager/Entity/Entity.js +9 -1
  3. package/lib/components/EntityManager/Entity/Entity.js.map +1 -1
  4. package/lib/components/EntityManager/Entity/EntityHeader/EntityHeader.js +18 -4
  5. package/lib/components/EntityManager/Entity/EntityHeader/EntityHeader.js.map +1 -1
  6. package/lib/components/EntityManager/Entity/SideBarRelations/helpers/build-dynamic-query.js +1 -1
  7. package/lib/components/EntityManager/Entity/SideBarRelations/helpers/build-dynamic-query.js.map +1 -1
  8. package/lib/components/InfoBoxes/helpers/build-dynamic-query.js +1 -1
  9. package/lib/components/InfoBoxes/helpers/build-dynamic-query.js.map +1 -1
  10. package/lib/components/InfoBoxes/presentational/InfoBox.js +2 -1
  11. package/lib/components/InfoBoxes/presentational/InfoBox.js.map +1 -1
  12. package/lib/components/ListingTable/ListingTable.js +116 -120
  13. package/lib/components/ListingTable/ListingTable.js.map +1 -1
  14. package/lib/components/ListingTable/ListingTableContent/ListingTableContent.js +18 -19
  15. package/lib/components/ListingTable/ListingTableContent/ListingTableContent.js.map +1 -1
  16. package/lib/components/ListingTable/mappers/populate-rows.js +3 -2
  17. package/lib/components/ListingTable/mappers/populate-rows.js.map +1 -1
  18. package/lib/components/ListingTable/service/index.js +11 -2
  19. package/lib/components/ListingTable/service/index.js.map +1 -1
  20. package/lib/components/hooks/useCallbackDebounce.js +22 -0
  21. package/lib/components/hooks/useCallbackDebounce.js.map +1 -0
  22. package/lib/utils/build-listing-query.js +1 -1
  23. package/lib/utils/build-listing-query.js.map +1 -1
  24. package/lib/utils/get-default-query-params.js +1 -1
  25. package/lib/utils/get-default-query-params.js.map +1 -1
  26. package/lib-es/components/EntityManager/Entity/Entity.js +12 -1
  27. package/lib-es/components/EntityManager/Entity/Entity.js.map +1 -1
  28. package/lib-es/components/EntityManager/Entity/EntityHeader/EntityHeader.js +18 -4
  29. package/lib-es/components/EntityManager/Entity/EntityHeader/EntityHeader.js.map +1 -1
  30. package/lib-es/components/EntityManager/Entity/SideBarRelations/helpers/build-dynamic-query.js +1 -0
  31. package/lib-es/components/EntityManager/Entity/SideBarRelations/helpers/build-dynamic-query.js.map +1 -1
  32. package/lib-es/components/InfoBoxes/helpers/build-dynamic-query.js +1 -0
  33. package/lib-es/components/InfoBoxes/helpers/build-dynamic-query.js.map +1 -1
  34. package/lib-es/components/InfoBoxes/presentational/InfoBox.js +2 -1
  35. package/lib-es/components/InfoBoxes/presentational/InfoBox.js.map +1 -1
  36. package/lib-es/components/ListingTable/ListingTable.js +58 -57
  37. package/lib-es/components/ListingTable/ListingTable.js.map +1 -1
  38. package/lib-es/components/ListingTable/ListingTableContent/ListingTableContent.js +18 -19
  39. package/lib-es/components/ListingTable/ListingTableContent/ListingTableContent.js.map +1 -1
  40. package/lib-es/components/ListingTable/mappers/populate-rows.js +20 -17
  41. package/lib-es/components/ListingTable/mappers/populate-rows.js.map +1 -1
  42. package/lib-es/components/ListingTable/service/index.js +7 -1
  43. package/lib-es/components/ListingTable/service/index.js.map +1 -1
  44. package/lib-es/components/hooks/useCallbackDebounce.js +12 -0
  45. package/lib-es/components/hooks/useCallbackDebounce.js.map +1 -0
  46. package/lib-es/utils/build-listing-query.js +1 -0
  47. package/lib-es/utils/build-listing-query.js.map +1 -1
  48. package/lib-es/utils/get-default-query-params.js +1 -1
  49. package/lib-es/utils/get-default-query-params.js.map +1 -1
  50. package/package.json +7 -6
  51. package/src/components/EntityManager/Entity/Entity.js +18 -0
  52. package/src/components/EntityManager/Entity/EntityHeader/EntityHeader.js +24 -11
  53. package/src/components/EntityManager/Entity/SideBarRelations/helpers/build-dynamic-query.js +1 -0
  54. package/src/components/InfoBoxes/helpers/build-dynamic-query.js +1 -0
  55. package/src/components/InfoBoxes/presentational/InfoBox.js +2 -2
  56. package/src/components/ListingTable/ListingTable.js +86 -93
  57. package/src/components/ListingTable/ListingTableContent/ListingTableContent.js +20 -18
  58. package/src/components/ListingTable/mappers/populate-rows.js +19 -16
  59. package/src/components/ListingTable/service/index.js +13 -2
  60. package/src/components/hooks/useCallbackDebounce.js +15 -0
  61. package/src/utils/build-listing-query.js +1 -0
  62. package/src/utils/get-default-query-params.js +1 -1
@@ -7,12 +7,13 @@ const InfoBox = ({
7
7
  if (!items) return null;
8
8
  const infoBoxItems = items.map(item => Object.values(item).map(info => {
9
9
  if (!info.label || !info.value) return null;
10
+ const label = info.showLabel === false ? '' : `${info.label}: `;
10
11
  return /*#__PURE__*/React.createElement("div", {
11
12
  className: "info-box--item",
12
13
  key: `${infoBoxKey}-${info.label.toLowerCase()}`
13
14
  }, /*#__PURE__*/React.createElement("div", {
14
15
  className: "info-box--label"
15
- }, info.label, ": "), /*#__PURE__*/React.createElement("div", {
16
+ }, label), /*#__PURE__*/React.createElement("div", {
16
17
  className: "info-box--value"
17
18
  }, info.value));
18
19
  }).filter(Boolean));
@@ -1 +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"}
1
+ {"version":3,"file":"InfoBox.js","names":["PropTypes","React","InfoBox","items","infoBoxKey","infoBoxItems","map","item","Object","values","info","label","value","showLabel","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 const label = info.showLabel === false ? '' : `${info.label}: `;\n return (\n <div className=\"info-box--item\" key={`${infoBoxKey}-${info.label.toLowerCase()}`}>\n <div className=\"info-box--label\">{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;IAC3C,MAAMD,KAAK,GAAGD,IAAI,CAACG,SAAS,KAAK,KAAK,GAAG,EAAE,GAAI,GAAEH,IAAI,CAACC,KAAM,IAAG;IAC/D,oBACEV,KAAA,CAAAa,aAAA;MAAKC,SAAS,EAAC,gBAAgB;MAACC,GAAG,EAAG,GAAEZ,UAAW,IAAGM,IAAI,CAACC,KAAK,CAACM,WAAW,CAAC,CAAE;IAAE,gBAC/EhB,KAAA,CAAAa,aAAA;MAAKC,SAAS,EAAC;IAAiB,GAAEJ,KAAW,CAAC,eAC9CV,KAAA,CAAAa,aAAA;MAAKC,SAAS,EAAC;IAAiB,GAAEL,IAAI,CAACE,KAAW,CAC/C,CAAC;EAEV,CAAC,CAAC,CACDM,MAAM,CAACC,OAAO,CACnB,CAAC;EAED,oBACElB,KAAA,CAAAa,aAAA;IAAKC,SAAS,EAAC,UAAU;IAACC,GAAG,EAAEZ;EAAW,gBACxCH,KAAA,CAAAa,aAAA;IAAKC,SAAS,EAAC;EAAqB,GAAEV,YAAkB,CACrD,CAAC;AAEV,CAAC;AAED,eAAeH,OAAO;AAEtBA,OAAO,CAACkB,SAAS,GAAG;EAClBhB,UAAU,EAAEJ,SAAS,CAACqB,MAAM,CAACC,UAAU;EACvCnB,KAAK,EAAEH,SAAS,CAACuB,KAAK,CAACD;AACzB,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
- import { useApolloClient } from '@apollo/client';
5
4
  import React, { useEffect, useState, Fragment } from 'react';
6
5
  import PropTypes from 'prop-types';
7
- import { withRouter, Link } from 'react-router-dom';
8
6
  import More from '@blaze-react/more';
7
+ import { useApolloClient } from '@apollo/client';
8
+ import { withRouter, Link, useLocation } from 'react-router-dom';
9
9
  import { PageHeader, DeleteAction, CardPrompt } from '@blaze-cms/admin';
10
10
  import { useToasts } from '@blaze-react/toaster';
11
11
  import { RenderHook } from '@blaze-cms/plugin-render-hooks-ui';
@@ -14,10 +14,10 @@ import availableActions from '../EntityManager/Entity/actions-handlers';
14
14
  import { fetchData } from './service';
15
15
  import { populateRows, formatRows, getParsedRowData } from './mappers/populate-rows';
16
16
  import { getDefaultQueryParams } from '../../utils/get-default-query-params';
17
- const OVER_SCAN_BUFFER = 10;
18
17
  const ListingTable = ({
19
18
  match,
20
- entitySchema
19
+ entitySchema,
20
+ history
21
21
  }) => {
22
22
  const [tableData, setTableData] = useState({});
23
23
  const [modalStatus, setModalStatus] = useState(false);
@@ -25,8 +25,7 @@ const ListingTable = ({
25
25
  const [previousSchema, setPreviousSchema] = useState({
26
26
  id: null
27
27
  });
28
- const [scrollToIndex, setScrollToIndex] = useState(0);
29
- const [verifiedRanges, setVerifiedRanges] = useState([]);
28
+ const [totalItems, setTotalItems] = useState(0);
30
29
  const queryParamsDefault = getDefaultQueryParams(entitySchema);
31
30
  const [queryParams, setQueryParams] = useState(queryParamsDefault);
32
31
  const [listFilters, setListFilters] = useState([]);
@@ -34,6 +33,9 @@ const ListingTable = ({
34
33
  const {
35
34
  addToast
36
35
  } = useToasts();
36
+ const location = useLocation();
37
+ const searchParams = new URLSearchParams(location.search);
38
+ const currentPage = Number(searchParams.get('page')) || 1;
37
39
  useEffect(() => {
38
40
  (async () => {
39
41
  if (entitySchema.id !== previousSchema.id || previousSchema.id === null && entitySchema.id) {
@@ -45,12 +47,15 @@ const ListingTable = ({
45
47
  })();
46
48
  }, [client, entitySchema, match.url, previousSchema.id, queryParams] // eslint-disable-line react-hooks/exhaustive-deps
47
49
  );
48
- const doQuery = async (filters = listFilters) => {
49
- const data = await fetchData({
50
+ const doQuery = async (filters = listFilters, params = queryParamsDefault) => {
51
+ const {
52
+ listingData,
53
+ totalRecords
54
+ } = await fetchData({
50
55
  client,
51
56
  querySettings: {
52
57
  entitySchema,
53
- queryParams: queryParamsDefault
58
+ queryParams: params
54
59
  },
55
60
  listFilters: filters
56
61
  });
@@ -58,9 +63,21 @@ const ListingTable = ({
58
63
  toggleModal,
59
64
  url: match.url,
60
65
  entitySchema,
61
- rows: data
66
+ rows: listingData
62
67
  });
63
68
  setTableData(populatedTable);
69
+ setTotalItems(totalRecords);
70
+ };
71
+ const handleOnPageChange = async ({
72
+ pageNumber,
73
+ offset: _offset
74
+ }) => {
75
+ const updatedQueryParams = _objectSpread(_objectSpread({}, queryParams), {}, {
76
+ offset: _offset
77
+ });
78
+ await doQuery(listFilters, updatedQueryParams);
79
+ history.push(`?page=${pageNumber}`);
80
+ document.getElementsByClassName('page')[0].scrollTo(0, 0);
64
81
  };
65
82
  const updateListingFilters = async filters => {
66
83
  await doQuery(filters);
@@ -95,10 +112,10 @@ const ListingTable = ({
95
112
  direction
96
113
  }]
97
114
  });
98
- setScrollToIndex(0);
99
- setVerifiedRanges([]);
100
115
  setQueryParams(sortQueryParams);
101
- const data = await fetchData({
116
+ const {
117
+ listingData
118
+ } = await fetchData({
102
119
  client,
103
120
  querySettings: {
104
121
  entitySchema,
@@ -116,58 +133,40 @@ const ListingTable = ({
116
133
  [property]: direction
117
134
  },
118
135
  rows: formatRows({
119
- rows: getParsedRowData(data),
136
+ rows: getParsedRowData(listingData),
120
137
  url: match.url,
121
138
  toggleModal,
122
139
  firstColumn,
123
140
  isEnquiry
124
141
  })
125
142
  }));
126
- };
127
- const handleRenderedItems = async params => {
128
- const {
129
- startIndex
130
- } = params;
131
- const rowsLength = tableData.rows.length;
132
- const loadIndex = Math.floor(rowsLength / 3) - OVER_SCAN_BUFFER;
133
- if (loadIndex > 0 && loadIndex < startIndex && !verifiedRanges.includes(loadIndex)) {
134
- const updatedQueryParams = _objectSpread(_objectSpread({}, queryParams), {}, {
135
- offset: rowsLength
136
- });
137
- const data = await fetchData({
138
- client,
139
- querySettings: {
140
- entitySchema,
141
- queryParams: updatedQueryParams
142
- },
143
- listFilters
144
- });
145
- const updatedRows = [...tableData.rows, ...formatRows({
146
- rows: getParsedRowData(data),
147
- url: match.url,
148
- toggleModal,
149
- isEnquiry: tableData.isEnquiry
150
- })];
151
- setVerifiedRanges([...verifiedRanges, loadIndex]);
152
- setQueryParams(updatedQueryParams);
153
- setTableData(_objectSpread(_objectSpread({}, tableData), {}, {
154
- rows: updatedRows
155
- }));
156
- setScrollToIndex(startIndex + OVER_SCAN_BUFFER);
157
- }
143
+ history.push('?page=1');
158
144
  };
159
145
  if (!tableData || !tableData.rows) return 'loading';
160
- const showAddButton = !!tableData.rows.length;
146
+ const {
147
+ displayProperties: {
148
+ adminCrudActions: {
149
+ create: createAction = {
150
+ active: true
151
+ },
152
+ delete: _deleteAction = {
153
+ active: true
154
+ }
155
+ } = {}
156
+ } = {}
157
+ } = entitySchema;
158
+ const showAddButton = !tableData.rows.length && listFilters.length === 0;
161
159
  return /*#__PURE__*/React.createElement("div", {
162
160
  className: "page"
163
- }, modalStatus && /*#__PURE__*/React.createElement(DeleteAction, {
161
+ }, modalStatus && _deleteAction.active && /*#__PURE__*/React.createElement(DeleteAction, {
162
+ "data-testid": "deleteEntity",
164
163
  onClose: toggleModal,
165
164
  deleteAction: deleteAction,
166
165
  itemName: itemToDelete.name
167
166
  }), /*#__PURE__*/React.createElement(PageHeader, {
168
167
  title: entitySchema.displayName,
169
168
  subtitle: ""
170
- }, showAddButton && /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Link, {
169
+ }, createAction.active && !showAddButton && /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Link, {
171
170
  "data-testid": "addEntity",
172
171
  className: "button button--small",
173
172
  to: `${match.url}/create`
@@ -177,26 +176,28 @@ const ListingTable = ({
177
176
  className: "material-icons"
178
177
  }, "more_vert")), /*#__PURE__*/React.createElement(More.Content, {
179
178
  isMoreMenu: true
180
- }))))), !showAddButton && /*#__PURE__*/React.createElement(CardPrompt, null, /*#__PURE__*/React.createElement(Link, {
179
+ }))))), showAddButton ? /*#__PURE__*/React.createElement(CardPrompt, null, /*#__PURE__*/React.createElement(Link, {
181
180
  className: "button button--rounded button--cta",
182
181
  to: `${match.url}/create`,
183
182
  "data-testid": "add-button"
184
- }, "Add")), /*#__PURE__*/React.createElement(RenderHook, {
183
+ }, "Add")) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(RenderHook, {
185
184
  hookKey: "entity:listing:main:top",
186
185
  schema: entitySchema,
186
+ listFilters: listFilters,
187
187
  setListFilters: updateListingFilters
188
188
  }), /*#__PURE__*/React.createElement(ListingTableContent, {
189
- overScanBuffer: OVER_SCAN_BUFFER,
189
+ totalItems: totalItems,
190
+ currentPage: currentPage,
190
191
  onSort: handleSort,
191
- onRenderItems: handleRenderedItems,
192
+ handleOnPageChange: handleOnPageChange,
192
193
  tableData: tableData,
193
- onCloseCardPrompt: onCloseCardPrompt,
194
- scrollToIndex: scrollToIndex
195
- }));
194
+ onCloseCardPrompt: onCloseCardPrompt
195
+ })));
196
196
  };
197
197
  ListingTable.propTypes = {
198
198
  entitySchema: PropTypes.object.isRequired,
199
- match: PropTypes.object.isRequired
199
+ match: PropTypes.object.isRequired,
200
+ history: PropTypes.object.isRequired
200
201
  };
201
202
  export default withRouter(ListingTable);
202
203
  //# sourceMappingURL=ListingTable.js.map
@@ -1 +1 @@
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","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 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;\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 {!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 <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
+ {"version":3,"file":"ListingTable.js","names":["React","useEffect","useState","Fragment","PropTypes","More","useApolloClient","withRouter","Link","useLocation","PageHeader","DeleteAction","CardPrompt","useToasts","RenderHook","ListingTableContent","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","doQuery","url","filters","params","listingData","totalRecords","querySettings","populatedTable","toggleModal","rows","handleOnPageChange","pageNumber","offset","_offset","updatedQueryParams","_objectSpread","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","Actions","Avatar","isMoreMenu","Content","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 More from '@blaze-react/more';\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 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 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, 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 })\n });\n history.push('?page=1');\n };\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 &&\n _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 &&\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 {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 <ListingTableContent\n totalItems={totalItems}\n currentPage={currentPage}\n onSort={handleSort}\n handleOnPageChange={handleOnPageChange}\n tableData={tableData}\n onCloseCardPrompt={onCloseCardPrompt}\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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"}
@@ -1,34 +1,38 @@
1
1
  import React from 'react';
2
2
  import Table from '@blaze-react/table';
3
+ import Pagination from '@blaze-react/pagination';
3
4
  import PropTypes from 'prop-types';
4
5
  import { withRouter } from 'react-router-dom';
5
6
  const ListingTableContent = ({
6
7
  tableData,
7
8
  handleSelect,
8
9
  onSort,
9
- onClickRow,
10
- overScanBuffer,
11
- onRenderItems,
12
- scrollToIndex
10
+ handleOnPageChange,
11
+ currentPage,
12
+ totalItems
13
13
  }) => {
14
14
  const displayTable = tableData && tableData.rows && !!tableData.rows.length;
15
15
  const {
16
16
  isEnquiry
17
17
  } = tableData;
18
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", {
19
+ return /*#__PURE__*/React.createElement(React.Fragment, null, displayTable ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
20
20
  className: className
21
21
  }, /*#__PURE__*/React.createElement(Table, {
22
- scrollToIndex: scrollToIndex,
23
22
  onSort: onSort,
24
- onClickRow: onClickRow,
25
- overScanBuffer: overScanBuffer,
26
- onRenderItems: onRenderItems,
27
23
  data: tableData,
28
24
  checkboxes: !isEnquiry,
29
25
  onSelect: handleSelect,
30
26
  "data-testid": "listing-table-content"
31
- }))));
27
+ }), /*#__PURE__*/React.createElement(Pagination, {
28
+ visiblePages: 10,
29
+ totalItems: totalItems,
30
+ currentPage: currentPage,
31
+ onPageChange: handleOnPageChange
32
+ }))) : /*#__PURE__*/React.createElement("span", {
33
+ className: "table-no-results",
34
+ "data-testid": "no-results"
35
+ }, "No results"));
32
36
  };
33
37
  ListingTableContent.propTypes = {
34
38
  tableData: PropTypes.object.isRequired,
@@ -37,19 +41,14 @@ ListingTableContent.propTypes = {
37
41
  }).isRequired,
38
42
  handleSelect: PropTypes.func,
39
43
  onSort: PropTypes.func,
40
- onClickRow: PropTypes.func,
41
- overScanBuffer: PropTypes.number,
42
- scrollToIndex: PropTypes.number,
43
- onRenderItems: PropTypes.func
44
+ handleOnPageChange: PropTypes.func,
45
+ currentPage: PropTypes.number.isRequired,
46
+ totalItems: PropTypes.number.isRequired
44
47
  };
45
48
  ListingTableContent.defaultProps = {
46
49
  handleSelect: () => {},
47
50
  onSort: () => {},
48
- onClickRow: () => {},
49
- overScanBuffer: 0,
50
- scrollToIndex: 0,
51
- onRenderItems: () => {},
52
- selectedMenuItem: null
51
+ handleOnPageChange: () => {}
53
52
  };
54
53
  export default withRouter(ListingTableContent);
55
54
  //# sourceMappingURL=ListingTableContent.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"ListingTableContent.js","names":["React","Table","Pagination","PropTypes","withRouter","ListingTableContent","tableData","handleSelect","onSort","handleOnPageChange","currentPage","totalItems","displayTable","rows","length","isEnquiry","className","createElement","Fragment","data","checkboxes","onSelect","visiblePages","onPageChange","propTypes","object","isRequired","match","shape","url","string","func","number","defaultProps"],"sources":["../../../../src/components/ListingTable/ListingTableContent/ListingTableContent.js"],"sourcesContent":["import React from 'react';\nimport Table from '@blaze-react/table';\nimport Pagination from '@blaze-react/pagination';\n\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\n\nconst ListingTableContent = ({\n tableData,\n handleSelect,\n onSort,\n handleOnPageChange,\n currentPage,\n totalItems\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 onSort={onSort}\n data={tableData}\n checkboxes={!isEnquiry}\n onSelect={handleSelect}\n data-testid=\"listing-table-content\"\n />\n <Pagination\n visiblePages={10}\n totalItems={totalItems}\n currentPage={currentPage}\n onPageChange={handleOnPageChange}\n />\n </div>\n </>\n ) : (\n <span className=\"table-no-results\" data-testid=\"no-results\">\n No results\n </span>\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 handleOnPageChange: PropTypes.func,\n currentPage: PropTypes.number.isRequired,\n totalItems: PropTypes.number.isRequired\n};\n\nListingTableContent.defaultProps = {\n handleSelect: () => {},\n onSort: () => {},\n handleOnPageChange: () => {}\n};\n\nexport default withRouter(ListingTableContent);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,KAAK,MAAM,oBAAoB;AACtC,OAAOC,UAAU,MAAM,yBAAyB;AAEhD,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,UAAU,QAAQ,kBAAkB;AAE7C,MAAMC,mBAAmB,GAAGA,CAAC;EAC3BC,SAAS;EACTC,YAAY;EACZC,MAAM;EACNC,kBAAkB;EAClBC,WAAW;EACXC;AACF,CAAC,KAAK;EACJ,MAAMC,YAAY,GAAGN,SAAS,IAAIA,SAAS,CAACO,IAAI,IAAI,CAAC,CAACP,SAAS,CAACO,IAAI,CAACC,MAAM;EAC3E,MAAM;IAAEC;EAAU,CAAC,GAAGT,SAAS;EAC/B,MAAMU,SAAS,GAAI,gBAAeD,SAAS,GAAG,cAAc,GAAG,EAAG,EAAC;EAEnE,oBACEf,KAAA,CAAAiB,aAAA,CAAAjB,KAAA,CAAAkB,QAAA,QACGN,YAAY,gBACXZ,KAAA,CAAAiB,aAAA,CAAAjB,KAAA,CAAAkB,QAAA,qBACElB,KAAA,CAAAiB,aAAA;IAAKD,SAAS,EAAEA;EAAU,gBACxBhB,KAAA,CAAAiB,aAAA,CAAChB,KAAK;IACJO,MAAM,EAAEA,MAAO;IACfW,IAAI,EAAEb,SAAU;IAChBc,UAAU,EAAE,CAACL,SAAU;IACvBM,QAAQ,EAAEd,YAAa;IACvB,eAAY;EAAuB,CACpC,CAAC,eACFP,KAAA,CAAAiB,aAAA,CAACf,UAAU;IACToB,YAAY,EAAE,EAAG;IACjBX,UAAU,EAAEA,UAAW;IACvBD,WAAW,EAAEA,WAAY;IACzBa,YAAY,EAAEd;EAAmB,CAClC,CACE,CACL,CAAC,gBAEHT,KAAA,CAAAiB,aAAA;IAAMD,SAAS,EAAC,kBAAkB;IAAC,eAAY;EAAY,GAAC,YAEtD,CAER,CAAC;AAEP,CAAC;AAEDX,mBAAmB,CAACmB,SAAS,GAAG;EAC9BlB,SAAS,EAAEH,SAAS,CAACsB,MAAM,CAACC,UAAU;EACtCC,KAAK,EAAExB,SAAS,CAACyB,KAAK,CAAC;IACrBC,GAAG,EAAE1B,SAAS,CAAC2B;EACjB,CAAC,CAAC,CAACJ,UAAU;EACbnB,YAAY,EAAEJ,SAAS,CAAC4B,IAAI;EAC5BvB,MAAM,EAAEL,SAAS,CAAC4B,IAAI;EACtBtB,kBAAkB,EAAEN,SAAS,CAAC4B,IAAI;EAClCrB,WAAW,EAAEP,SAAS,CAAC6B,MAAM,CAACN,UAAU;EACxCf,UAAU,EAAER,SAAS,CAAC6B,MAAM,CAACN;AAC/B,CAAC;AAEDrB,mBAAmB,CAAC4B,YAAY,GAAG;EACjC1B,YAAY,EAAEA,CAAA,KAAM,CAAC,CAAC;EACtBC,MAAM,EAAEA,CAAA,KAAM,CAAC,CAAC;EAChBC,kBAAkB,EAAEA,CAAA,KAAM,CAAC;AAC7B,CAAC;AAED,eAAeL,UAAU,CAACC,mBAAmB,CAAC"}
@@ -36,23 +36,26 @@ const getSanitizedColumnLabel = columnProp => {
36
36
  };
37
37
  const buildArrayRowContent = rowData => /*#__PURE__*/React.createElement("div", {
38
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))))));
39
+ }, rowData.map(rowGroup => {
40
+ if (!rowGroup.length) return null;
41
+ return /*#__PURE__*/React.createElement("div", {
42
+ className: "table-row-list__group"
43
+ }, rowGroup.map(({
44
+ label,
45
+ value,
46
+ url
47
+ }) => /*#__PURE__*/React.createElement("div", {
48
+ className: "table-row-list__group__item"
49
+ }, /*#__PURE__*/React.createElement("span", {
50
+ className: "table-row-list__group__item__label"
51
+ }, " ", label, ":"), url && value ? /*#__PURE__*/React.createElement(Link, {
52
+ to: url,
53
+ role: "button",
54
+ className: "table-row-list__group__item__value"
55
+ }, value) : value && /*#__PURE__*/React.createElement("span", {
56
+ className: "table-row-list__group__item__value"
57
+ }, " ", value))));
58
+ }));
56
59
  const buildArrayRowData = rowData => {
57
60
  const dataGroups = [];
58
61
  const groups = Math.ceil(rowData.length / 3) || 1;
@@ -1 +1 @@
1
- {"version":3,"file":"populate-rows.js","names":["React","Link","TableActions","ACTIONS","formatRows","rows","url","toggleModal","label","firstColumn","isEnquiry","map","data","editUrl","id","rowProps","_objectSpread","createElement","to","role","actions","showDeleteModal","getSanitizedColumnLabel","columnProp","sanitizedChar","index","length","toUpperCase","toLowerCase","buildArrayRowContent","rowData","className","rowGroup","value","buildArrayRowData","dataGroups","groups","Math","ceil","currentStart","slice","getParsedRowData","Object","keys","reduce","acc","key","parsedData","Array","isArray","getColumnsAndLabels","listingProperties","allProperties","columns","labels","forEach","listingProperty","propKey","includes","split","push","parsedRowData","populateRows","entitySchema","schemaId","properties","dynamicProperties","formProperties","columnOptions","identification","sort","orderBy"],"sources":["../../../../src/components/ListingTable/mappers/populate-rows.js"],"sourcesContent":["import React from 'react';\nimport { Link } from 'react-router-dom';\nimport TableActions from '../TableActions';\nimport { ACTIONS } from '../../../constants';\n\nconst formatRows = ({ rows, url, toggleModal, label, firstColumn = 'name', isEnquiry }) =>\n rows.map(data => {\n const editUrl = `${url}/update/${data.id}`;\n const rowProps = {\n ...data,\n [firstColumn]: (\n <Link to={editUrl} role=\"button\">\n {data[firstColumn]}\n </Link>\n )\n };\n if (!isEnquiry)\n rowProps.actions = (\n <TableActions editUrl={editUrl} data={data} showDeleteModal={toggleModal} />\n );\n return rowProps;\n });\n\nconst getSanitizedColumnLabel = columnProp => {\n let sanitizedChar = '';\n\n for (let index = 0; index < columnProp.length; index += 1) {\n if (index && columnProp[index] === columnProp[index].toUpperCase())\n sanitizedChar = `${sanitizedChar} ${columnProp[index].toLowerCase()}`;\n else sanitizedChar += columnProp[index];\n }\n return sanitizedChar;\n};\n\nconst buildArrayRowContent = rowData => (\n <div className=\"table-row-list\">\n {rowData.map(rowGroup => (\n <div className=\"table-row-list__group\">\n {rowGroup.map(({ label, value, url }) => (\n <div className=\"table-row-list__group__item\">\n <span className=\"table-row-list__group__item__label\"> {label}:</span>\n {url ? (\n <Link to={url} role=\"button\" className=\"table-row-list__group__item__value\">\n {value}\n </Link>\n ) : (\n <span className=\"table-row-list__group__item__value\"> {value}</span>\n )}\n </div>\n ))}\n </div>\n ))}\n </div>\n);\n\nconst buildArrayRowData = rowData => {\n const dataGroups = [];\n const groups = Math.ceil(rowData.length / 3) || 1;\n for (let index = 0; index < groups; index += 1) {\n const currentStart = index * groups;\n dataGroups[index] = rowData.slice(currentStart, currentStart + 3);\n }\n\n return buildArrayRowContent(dataGroups);\n};\n\nconst getParsedRowData = rows =>\n rows.map(rowData =>\n Object.keys(rowData).reduce((acc, key) => {\n const parsedData = Array.isArray(rowData[key])\n ? buildArrayRowData(rowData[key])\n : rowData[key];\n return { ...acc, [key]: parsedData };\n }, {})\n );\n\nconst getColumnsAndLabels = (listingProperties, allProperties, rows) => {\n const columns = [];\n const labels = {};\n\n listingProperties.forEach(listingProperty => {\n const propKey = listingProperty.includes(' ') ? listingProperty.split(' ')[0] : listingProperty;\n const { label } = allProperties[propKey] || {};\n columns.push(propKey);\n labels[propKey] = label || getSanitizedColumnLabel(propKey);\n });\n const parsedRowData = getParsedRowData(rows);\n\n return { columns, labels, parsedRowData };\n};\n\nconst populateRows = ({ toggleModal, url, entitySchema, rows }) => {\n const {\n id: schemaId,\n listingProperties,\n properties,\n dynamicProperties = {},\n formProperties\n } = entitySchema;\n\n const isEnquiry = schemaId === 'enquiry';\n const columnOptions = !isEnquiry ? [...listingProperties, ACTIONS] : [...listingProperties];\n\n const allProperties = { ...properties, ...dynamicProperties };\n const { columns, labels, parsedRowData } = getColumnsAndLabels(\n columnOptions,\n allProperties,\n rows\n );\n const [firstColumn] = columns;\n\n return {\n identification: 'id',\n sort: null,\n columns,\n labels,\n orderBy: [...formProperties],\n rows: formatRows({ firstColumn, rows: parsedRowData, url, toggleModal, isEnquiry }),\n isEnquiry\n };\n};\n\nexport { populateRows, formatRows, getParsedRowData };\n"],"mappings":"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"}
1
+ {"version":3,"file":"populate-rows.js","names":["React","Link","TableActions","ACTIONS","formatRows","rows","url","toggleModal","label","firstColumn","isEnquiry","map","data","editUrl","id","rowProps","_objectSpread","createElement","to","role","actions","showDeleteModal","getSanitizedColumnLabel","columnProp","sanitizedChar","index","length","toUpperCase","toLowerCase","buildArrayRowContent","rowData","className","rowGroup","value","buildArrayRowData","dataGroups","groups","Math","ceil","currentStart","slice","getParsedRowData","Object","keys","reduce","acc","key","parsedData","Array","isArray","getColumnsAndLabels","listingProperties","allProperties","columns","labels","forEach","listingProperty","propKey","includes","split","push","parsedRowData","populateRows","entitySchema","schemaId","properties","dynamicProperties","formProperties","columnOptions","identification","sort","orderBy"],"sources":["../../../../src/components/ListingTable/mappers/populate-rows.js"],"sourcesContent":["import React from 'react';\nimport { Link } from 'react-router-dom';\nimport TableActions from '../TableActions';\nimport { ACTIONS } from '../../../constants';\n\nconst formatRows = ({ rows, url, toggleModal, label, firstColumn = 'name', isEnquiry }) =>\n rows.map(data => {\n const editUrl = `${url}/update/${data.id}`;\n const rowProps = {\n ...data,\n [firstColumn]: (\n <Link to={editUrl} role=\"button\">\n {data[firstColumn]}\n </Link>\n )\n };\n if (!isEnquiry)\n rowProps.actions = (\n <TableActions editUrl={editUrl} data={data} showDeleteModal={toggleModal} />\n );\n return rowProps;\n });\n\nconst getSanitizedColumnLabel = columnProp => {\n let sanitizedChar = '';\n\n for (let index = 0; index < columnProp.length; index += 1) {\n if (index && columnProp[index] === columnProp[index].toUpperCase())\n sanitizedChar = `${sanitizedChar} ${columnProp[index].toLowerCase()}`;\n else sanitizedChar += columnProp[index];\n }\n return sanitizedChar;\n};\n\nconst buildArrayRowContent = rowData => (\n <div className=\"table-row-list\">\n {rowData.map(rowGroup => {\n if (!rowGroup.length) return null;\n return (\n <div className=\"table-row-list__group\">\n {rowGroup.map(({ label, value, url }) => (\n <div className=\"table-row-list__group__item\">\n <span className=\"table-row-list__group__item__label\"> {label}:</span>\n {url && value ? (\n <Link to={url} role=\"button\" className=\"table-row-list__group__item__value\">\n {value}\n </Link>\n ) : (\n value && <span className=\"table-row-list__group__item__value\"> {value}</span>\n )}\n </div>\n ))}\n </div>\n );\n })}\n </div>\n);\n\nconst buildArrayRowData = rowData => {\n const dataGroups = [];\n const groups = Math.ceil(rowData.length / 3) || 1;\n for (let index = 0; index < groups; index += 1) {\n const currentStart = index * groups;\n dataGroups[index] = rowData.slice(currentStart, currentStart + 3);\n }\n\n return buildArrayRowContent(dataGroups);\n};\n\nconst getParsedRowData = rows =>\n rows.map(rowData =>\n Object.keys(rowData).reduce((acc, key) => {\n const parsedData = Array.isArray(rowData[key])\n ? buildArrayRowData(rowData[key])\n : rowData[key];\n return { ...acc, [key]: parsedData };\n }, {})\n );\n\nconst getColumnsAndLabels = (listingProperties, allProperties, rows) => {\n const columns = [];\n const labels = {};\n\n listingProperties.forEach(listingProperty => {\n const propKey = listingProperty.includes(' ') ? listingProperty.split(' ')[0] : listingProperty;\n const { label } = allProperties[propKey] || {};\n columns.push(propKey);\n labels[propKey] = label || getSanitizedColumnLabel(propKey);\n });\n const parsedRowData = getParsedRowData(rows);\n\n return { columns, labels, parsedRowData };\n};\n\nconst populateRows = ({ toggleModal, url, entitySchema, rows }) => {\n const {\n id: schemaId,\n listingProperties,\n properties,\n dynamicProperties = {},\n formProperties\n } = entitySchema;\n\n const isEnquiry = schemaId === 'enquiry';\n const columnOptions = !isEnquiry ? [...listingProperties, ACTIONS] : [...listingProperties];\n\n const allProperties = { ...properties, ...dynamicProperties };\n const { columns, labels, parsedRowData } = getColumnsAndLabels(\n columnOptions,\n allProperties,\n rows\n );\n const [firstColumn] = columns;\n\n return {\n identification: 'id',\n sort: null,\n columns,\n labels,\n orderBy: [...formProperties],\n rows: formatRows({ firstColumn, rows: parsedRowData, url, toggleModal, isEnquiry }),\n isEnquiry\n };\n};\n\nexport { populateRows, formatRows, getParsedRowData };\n"],"mappings":"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"}
@@ -74,7 +74,13 @@ const fetchData = async ({
74
74
  variables,
75
75
  fetchPolicy: 'network-only'
76
76
  });
77
- return data.searchResults ? data.searchResults.results : data.listingData;
77
+ if (data.searchResults) {
78
+ return {
79
+ listingData: data.searchResults.results,
80
+ totalRecords: data.searchResults.total
81
+ };
82
+ }
83
+ return data;
78
84
  };
79
85
  export { fetchData };
80
86
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["buildListingQuery","buildVariables","entitySchema","isSearchQuery","listFilters","queryParams","identifier","sort","offset","limit","where","property","direction","parsedOffset","_objectSpread","Array","isArray","rawQuery","bool","must","filter","term","entityIdentifier","JSON","stringify","fetchData","client","querySettings","displayProperties","adminListings","dataSource","source","query","variables","data","fetchPolicy","searchResults","results","listingData"],"sources":["../../../../src/components/ListingTable/service/index.js"],"sourcesContent":["import buildListingQuery from '../../../utils/build-listing-query';\n\nfunction buildVariables({ entitySchema, isSearchQuery, listFilters = [], queryParams = {} }) {\n const { identifier } = entitySchema;\n const { sort, offset, limit, where } = queryParams;\n const [{ property, direction }] = sort;\n const parsedOffset = `${property}:${direction}`;\n\n if (!isSearchQuery)\n return {\n ...queryParams,\n where: !Array.isArray(listFilters) ? listFilters : where\n };\n\n const rawQuery = {\n bool: {\n must: listFilters || [],\n filter: [\n {\n term: {\n entityIdentifier: identifier\n }\n }\n ]\n }\n };\n\n return {\n limit,\n offset,\n sort: parsedOffset,\n where: JSON.stringify(rawQuery)\n };\n}\n\nconst fetchData = async ({ client, querySettings: { entitySchema, queryParams }, listFilters }) => {\n const {\n displayProperties: { adminListings: { dataSource: { source } = {} } = {} } = {}\n } = entitySchema;\n\n const isSearchQuery = source === 'search';\n const query = buildListingQuery(entitySchema, isSearchQuery);\n const variables = buildVariables({ entitySchema, listFilters, queryParams, isSearchQuery });\n const { data = {} } = await client.query({ query, variables, fetchPolicy: 'network-only' });\n\n return data.searchResults ? data.searchResults.results : data.listingData;\n};\n\nexport { fetchData };\n"],"mappings":";;;AAAA,OAAOA,iBAAiB,MAAM,oCAAoC;AAElE,SAASC,cAAcA,CAAC;EAAEC,YAAY;EAAEC,aAAa;EAAEC,WAAW,GAAG,EAAE;EAAEC,WAAW,GAAG,CAAC;AAAE,CAAC,EAAE;EAC3F,MAAM;IAAEC;EAAW,CAAC,GAAGJ,YAAY;EACnC,MAAM;IAAEK,IAAI;IAAEC,MAAM;IAAEC,KAAK;IAAEC;EAAM,CAAC,GAAGL,WAAW;EAClD,MAAM,CAAC;IAAEM,QAAQ;IAAEC;EAAU,CAAC,CAAC,GAAGL,IAAI;EACtC,MAAMM,YAAY,GAAI,GAAEF,QAAS,IAAGC,SAAU,EAAC;EAE/C,IAAI,CAACT,aAAa,EAChB,OAAAW,aAAA,CAAAA,aAAA,KACKT,WAAW;IACdK,KAAK,EAAE,CAACK,KAAK,CAACC,OAAO,CAACZ,WAAW,CAAC,GAAGA,WAAW,GAAGM;EAAK;EAG5D,MAAMO,QAAQ,GAAG;IACfC,IAAI,EAAE;MACJC,IAAI,EAAEf,WAAW,IAAI,EAAE;MACvBgB,MAAM,EAAE,CACN;QACEC,IAAI,EAAE;UACJC,gBAAgB,EAAEhB;QACpB;MACF,CAAC;IAEL;EACF,CAAC;EAED,OAAO;IACLG,KAAK;IACLD,MAAM;IACND,IAAI,EAAEM,YAAY;IAClBH,KAAK,EAAEa,IAAI,CAACC,SAAS,CAACP,QAAQ;EAChC,CAAC;AACH;AAEA,MAAMQ,SAAS,GAAG,MAAAA,CAAO;EAAEC,MAAM;EAAEC,aAAa,EAAE;IAAEzB,YAAY;IAAEG;EAAY,CAAC;EAAED;AAAY,CAAC,KAAK;EACjG,MAAM;IACJwB,iBAAiB,EAAE;MAAEC,aAAa,EAAE;QAAEC,UAAU,EAAE;UAAEC;QAAO,CAAC,GAAG,CAAC;MAAE,CAAC,GAAG,CAAC;IAAE,CAAC,GAAG,CAAC;EAChF,CAAC,GAAG7B,YAAY;EAEhB,MAAMC,aAAa,GAAG4B,MAAM,KAAK,QAAQ;EACzC,MAAMC,KAAK,GAAGhC,iBAAiB,CAACE,YAAY,EAAEC,aAAa,CAAC;EAC5D,MAAM8B,SAAS,GAAGhC,cAAc,CAAC;IAAEC,YAAY;IAAEE,WAAW;IAAEC,WAAW;IAAEF;EAAc,CAAC,CAAC;EAC3F,MAAM;IAAE+B,IAAI,GAAG,CAAC;EAAE,CAAC,GAAG,MAAMR,MAAM,CAACM,KAAK,CAAC;IAAEA,KAAK;IAAEC,SAAS;IAAEE,WAAW,EAAE;EAAe,CAAC,CAAC;EAE3F,OAAOD,IAAI,CAACE,aAAa,GAAGF,IAAI,CAACE,aAAa,CAACC,OAAO,GAAGH,IAAI,CAACI,WAAW;AAC3E,CAAC;AAED,SAASb,SAAS"}
1
+ {"version":3,"file":"index.js","names":["buildListingQuery","buildVariables","entitySchema","isSearchQuery","listFilters","queryParams","identifier","sort","offset","limit","where","property","direction","parsedOffset","_objectSpread","Array","isArray","rawQuery","bool","must","filter","term","entityIdentifier","JSON","stringify","fetchData","client","querySettings","displayProperties","adminListings","dataSource","source","query","variables","data","fetchPolicy","searchResults","listingData","results","totalRecords","total"],"sources":["../../../../src/components/ListingTable/service/index.js"],"sourcesContent":["import buildListingQuery from '../../../utils/build-listing-query';\n\nfunction buildVariables({ entitySchema, isSearchQuery, listFilters = [], queryParams = {} }) {\n const { identifier } = entitySchema;\n const { sort, offset, limit, where } = queryParams;\n const [{ property, direction }] = sort;\n const parsedOffset = `${property}:${direction}`;\n\n if (!isSearchQuery)\n return {\n ...queryParams,\n where: !Array.isArray(listFilters) ? listFilters : where\n };\n\n const rawQuery = {\n bool: {\n must: listFilters || [],\n filter: [\n {\n term: {\n entityIdentifier: identifier\n }\n }\n ]\n }\n };\n\n return {\n limit,\n offset,\n sort: parsedOffset,\n where: JSON.stringify(rawQuery)\n };\n}\n\nconst fetchData = async ({ client, querySettings: { entitySchema, queryParams }, listFilters }) => {\n const {\n displayProperties: { adminListings: { dataSource: { source } = {} } = {} } = {}\n } = entitySchema;\n\n const isSearchQuery = source === 'search';\n const query = buildListingQuery(entitySchema, isSearchQuery);\n const variables = buildVariables({ entitySchema, listFilters, queryParams, isSearchQuery });\n\n const { data = {} } = await client.query({\n query,\n variables,\n fetchPolicy: 'network-only'\n });\n\n if (data.searchResults) {\n return {\n listingData: data.searchResults.results,\n totalRecords: data.searchResults.total\n };\n }\n return data;\n};\n\nexport { fetchData };\n"],"mappings":";;;AAAA,OAAOA,iBAAiB,MAAM,oCAAoC;AAElE,SAASC,cAAcA,CAAC;EAAEC,YAAY;EAAEC,aAAa;EAAEC,WAAW,GAAG,EAAE;EAAEC,WAAW,GAAG,CAAC;AAAE,CAAC,EAAE;EAC3F,MAAM;IAAEC;EAAW,CAAC,GAAGJ,YAAY;EACnC,MAAM;IAAEK,IAAI;IAAEC,MAAM;IAAEC,KAAK;IAAEC;EAAM,CAAC,GAAGL,WAAW;EAClD,MAAM,CAAC;IAAEM,QAAQ;IAAEC;EAAU,CAAC,CAAC,GAAGL,IAAI;EACtC,MAAMM,YAAY,GAAI,GAAEF,QAAS,IAAGC,SAAU,EAAC;EAE/C,IAAI,CAACT,aAAa,EAChB,OAAAW,aAAA,CAAAA,aAAA,KACKT,WAAW;IACdK,KAAK,EAAE,CAACK,KAAK,CAACC,OAAO,CAACZ,WAAW,CAAC,GAAGA,WAAW,GAAGM;EAAK;EAG5D,MAAMO,QAAQ,GAAG;IACfC,IAAI,EAAE;MACJC,IAAI,EAAEf,WAAW,IAAI,EAAE;MACvBgB,MAAM,EAAE,CACN;QACEC,IAAI,EAAE;UACJC,gBAAgB,EAAEhB;QACpB;MACF,CAAC;IAEL;EACF,CAAC;EAED,OAAO;IACLG,KAAK;IACLD,MAAM;IACND,IAAI,EAAEM,YAAY;IAClBH,KAAK,EAAEa,IAAI,CAACC,SAAS,CAACP,QAAQ;EAChC,CAAC;AACH;AAEA,MAAMQ,SAAS,GAAG,MAAAA,CAAO;EAAEC,MAAM;EAAEC,aAAa,EAAE;IAAEzB,YAAY;IAAEG;EAAY,CAAC;EAAED;AAAY,CAAC,KAAK;EACjG,MAAM;IACJwB,iBAAiB,EAAE;MAAEC,aAAa,EAAE;QAAEC,UAAU,EAAE;UAAEC;QAAO,CAAC,GAAG,CAAC;MAAE,CAAC,GAAG,CAAC;IAAE,CAAC,GAAG,CAAC;EAChF,CAAC,GAAG7B,YAAY;EAEhB,MAAMC,aAAa,GAAG4B,MAAM,KAAK,QAAQ;EACzC,MAAMC,KAAK,GAAGhC,iBAAiB,CAACE,YAAY,EAAEC,aAAa,CAAC;EAC5D,MAAM8B,SAAS,GAAGhC,cAAc,CAAC;IAAEC,YAAY;IAAEE,WAAW;IAAEC,WAAW;IAAEF;EAAc,CAAC,CAAC;EAE3F,MAAM;IAAE+B,IAAI,GAAG,CAAC;EAAE,CAAC,GAAG,MAAMR,MAAM,CAACM,KAAK,CAAC;IACvCA,KAAK;IACLC,SAAS;IACTE,WAAW,EAAE;EACf,CAAC,CAAC;EAEF,IAAID,IAAI,CAACE,aAAa,EAAE;IACtB,OAAO;MACLC,WAAW,EAAEH,IAAI,CAACE,aAAa,CAACE,OAAO;MACvCC,YAAY,EAAEL,IAAI,CAACE,aAAa,CAACI;IACnC,CAAC;EACH;EACA,OAAON,IAAI;AACb,CAAC;AAED,SAAST,SAAS"}
@@ -0,0 +1,12 @@
1
+ import { useEffect } from 'react';
2
+ function useCallbackDebounce(callback, delay, dependencies, skip) {
3
+ useEffect(() => {
4
+ if (skip) return;
5
+ const timer = setTimeout(callback, delay);
6
+ return () => clearTimeout(timer);
7
+ },
8
+ // eslint-disable-next-line react-hooks/exhaustive-deps
9
+ dependencies);
10
+ }
11
+ export default useCallbackDebounce;
12
+ //# sourceMappingURL=useCallbackDebounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCallbackDebounce.js","names":["useEffect","useCallbackDebounce","callback","delay","dependencies","skip","timer","setTimeout","clearTimeout"],"sources":["../../../src/components/hooks/useCallbackDebounce.js"],"sourcesContent":["import { useEffect } from 'react';\n\nfunction useCallbackDebounce(callback, delay, dependencies, skip) {\n useEffect(\n () => {\n if (skip) return;\n const timer = setTimeout(callback, delay);\n return () => clearTimeout(timer);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n dependencies\n );\n}\n\nexport default useCallbackDebounce;\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AAEjC,SAASC,mBAAmBA,CAACC,QAAQ,EAAEC,KAAK,EAAEC,YAAY,EAAEC,IAAI,EAAE;EAChEL,SAAS,CACP,MAAM;IACJ,IAAIK,IAAI,EAAE;IACV,MAAMC,KAAK,GAAGC,UAAU,CAACL,QAAQ,EAAEC,KAAK,CAAC;IACzC,OAAO,MAAMK,YAAY,CAACF,KAAK,CAAC;EAClC,CAAC;EACD;EACAF,YACF,CAAC;AACH;AAEA,eAAeH,mBAAmB"}
@@ -20,6 +20,7 @@ function buildListingQuery(entitySchema, isSearchQuery) {
20
20
  id,
21
21
  ${entitySchema.listingProperties.join(',\n')}
22
22
  }
23
+ totalRecords: ${entitySchema.actions.countAll}(where: $where)
23
24
  }
24
25
  `;
25
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build-listing-query.js","names":["gql","BlazeError","getDynamicQuery","buildAdminSearchQuery","entitySchema","listingProperties","parsedProperties","join","buildListingQuery","isSearchQuery","actions","getAll","sortType","toUpperCase","substr"],"sources":["../../src/utils/build-listing-query.js"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { BlazeError } from '@blaze-cms/core-errors';\nimport { getDynamicQuery } from '@blaze-cms/admin-ui-utils';\n\nconst buildAdminSearchQuery = entitySchema => {\n const { listingProperties = [] } = entitySchema || {};\n const parsedProperties = `id, ${listingProperties.join(' ') || 'id name'}`;\n\n return getDynamicQuery('ADMIN_SEARCH')([entitySchema], parsedProperties, true);\n};\n\nfunction buildListingQuery(entitySchema, isSearchQuery) {\n if (!entitySchema.actions || !entitySchema.actions.getAll || !entitySchema.listingProperties) {\n throw new BlazeError(\n 'Listing query requires getAll action and listingProperties from entity schema'\n );\n }\n\n if (isSearchQuery) return buildAdminSearchQuery(entitySchema);\n\n const sortType =\n entitySchema.actions.getAll[0].toUpperCase() + entitySchema.actions.getAll.substr(1);\n\n return gql`\n query ${\n entitySchema.actions.getAll\n }($where: JSON, $limit: Int, $offset:Int, $sort: [${sortType}SortItem]) {\n listingData: ${\n entitySchema.actions.getAll\n }(where: $where, limit: $limit, offset:$offset, sort:$sort){\n id,\n ${entitySchema.listingProperties.join(',\\n')}\n }\n }\n `;\n}\n\nexport default buildListingQuery;\n"],"mappings":"AAAA,SAASA,GAAG,QAAQ,gBAAgB;AACpC,SAASC,UAAU,QAAQ,wBAAwB;AACnD,SAASC,eAAe,QAAQ,2BAA2B;AAE3D,MAAMC,qBAAqB,GAAGC,YAAY,IAAI;EAC5C,MAAM;IAAEC,iBAAiB,GAAG;EAAG,CAAC,GAAGD,YAAY,IAAI,CAAC,CAAC;EACrD,MAAME,gBAAgB,GAAI,OAAMD,iBAAiB,CAACE,IAAI,CAAC,GAAG,CAAC,IAAI,SAAU,EAAC;EAE1E,OAAOL,eAAe,CAAC,cAAc,CAAC,CAAC,CAACE,YAAY,CAAC,EAAEE,gBAAgB,EAAE,IAAI,CAAC;AAChF,CAAC;AAED,SAASE,iBAAiBA,CAACJ,YAAY,EAAEK,aAAa,EAAE;EACtD,IAAI,CAACL,YAAY,CAACM,OAAO,IAAI,CAACN,YAAY,CAACM,OAAO,CAACC,MAAM,IAAI,CAACP,YAAY,CAACC,iBAAiB,EAAE;IAC5F,MAAM,IAAIJ,UAAU,CAClB,+EACF,CAAC;EACH;EAEA,IAAIQ,aAAa,EAAE,OAAON,qBAAqB,CAACC,YAAY,CAAC;EAE7D,MAAMQ,QAAQ,GACZR,YAAY,CAACM,OAAO,CAACC,MAAM,CAAC,CAAC,CAAC,CAACE,WAAW,CAAC,CAAC,GAAGT,YAAY,CAACM,OAAO,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC;EAEtF,OAAOd,GAAI;AACb,YACMI,YAAY,CAACM,OAAO,CAACC,MACtB,oDAAmDC,QAAS;AACjE,qBACQR,YAAY,CAACM,OAAO,CAACC,MACtB;AACP;AACA,UAAUP,YAAY,CAACC,iBAAiB,CAACE,IAAI,CAAC,KAAK,CAAE;AACrD;AACA;AACA,GAAG;AACH;AAEA,eAAeC,iBAAiB"}
1
+ {"version":3,"file":"build-listing-query.js","names":["gql","BlazeError","getDynamicQuery","buildAdminSearchQuery","entitySchema","listingProperties","parsedProperties","join","buildListingQuery","isSearchQuery","actions","getAll","sortType","toUpperCase","substr","countAll"],"sources":["../../src/utils/build-listing-query.js"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { BlazeError } from '@blaze-cms/core-errors';\nimport { getDynamicQuery } from '@blaze-cms/admin-ui-utils';\n\nconst buildAdminSearchQuery = entitySchema => {\n const { listingProperties = [] } = entitySchema || {};\n const parsedProperties = `id, ${listingProperties.join(' ') || 'id name'}`;\n\n return getDynamicQuery('ADMIN_SEARCH')([entitySchema], parsedProperties, true);\n};\n\nfunction buildListingQuery(entitySchema, isSearchQuery) {\n if (!entitySchema.actions || !entitySchema.actions.getAll || !entitySchema.listingProperties) {\n throw new BlazeError(\n 'Listing query requires getAll action and listingProperties from entity schema'\n );\n }\n\n if (isSearchQuery) return buildAdminSearchQuery(entitySchema);\n\n const sortType =\n entitySchema.actions.getAll[0].toUpperCase() + entitySchema.actions.getAll.substr(1);\n\n return gql`\n query ${\n entitySchema.actions.getAll\n }($where: JSON, $limit: Int, $offset:Int, $sort: [${sortType}SortItem]) {\n listingData: ${\n entitySchema.actions.getAll\n }(where: $where, limit: $limit, offset:$offset, sort:$sort){\n id,\n ${entitySchema.listingProperties.join(',\\n')}\n }\n totalRecords: ${entitySchema.actions.countAll}(where: $where)\n }\n `;\n}\n\nexport default buildListingQuery;\n"],"mappings":"AAAA,SAASA,GAAG,QAAQ,gBAAgB;AACpC,SAASC,UAAU,QAAQ,wBAAwB;AACnD,SAASC,eAAe,QAAQ,2BAA2B;AAE3D,MAAMC,qBAAqB,GAAGC,YAAY,IAAI;EAC5C,MAAM;IAAEC,iBAAiB,GAAG;EAAG,CAAC,GAAGD,YAAY,IAAI,CAAC,CAAC;EACrD,MAAME,gBAAgB,GAAI,OAAMD,iBAAiB,CAACE,IAAI,CAAC,GAAG,CAAC,IAAI,SAAU,EAAC;EAE1E,OAAOL,eAAe,CAAC,cAAc,CAAC,CAAC,CAACE,YAAY,CAAC,EAAEE,gBAAgB,EAAE,IAAI,CAAC;AAChF,CAAC;AAED,SAASE,iBAAiBA,CAACJ,YAAY,EAAEK,aAAa,EAAE;EACtD,IAAI,CAACL,YAAY,CAACM,OAAO,IAAI,CAACN,YAAY,CAACM,OAAO,CAACC,MAAM,IAAI,CAACP,YAAY,CAACC,iBAAiB,EAAE;IAC5F,MAAM,IAAIJ,UAAU,CAClB,+EACF,CAAC;EACH;EAEA,IAAIQ,aAAa,EAAE,OAAON,qBAAqB,CAACC,YAAY,CAAC;EAE7D,MAAMQ,QAAQ,GACZR,YAAY,CAACM,OAAO,CAACC,MAAM,CAAC,CAAC,CAAC,CAACE,WAAW,CAAC,CAAC,GAAGT,YAAY,CAACM,OAAO,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC;EAEtF,OAAOd,GAAI;AACb,YACMI,YAAY,CAACM,OAAO,CAACC,MACtB,oDAAmDC,QAAS;AACjE,qBACQR,YAAY,CAACM,OAAO,CAACC,MACtB;AACP;AACA,UAAUP,YAAY,CAACC,iBAAiB,CAACE,IAAI,CAAC,KAAK,CAAE;AACrD;AACA,sBAAsBH,YAAY,CAACM,OAAO,CAACK,QAAS;AACpD;AACA,GAAG;AACH;AAEA,eAAeP,iBAAiB"}
@@ -5,7 +5,7 @@ const getDefaultQueryParams = schema => {
5
5
  } = schema.displayProperties || {};
6
6
  return {
7
7
  where,
8
- limit: 40,
8
+ limit: 10,
9
9
  offset: 0,
10
10
  sort: updated ? [{
11
11
  property: 'updated',
@@ -1 +1 @@
1
- {"version":3,"file":"get-default-query-params.js","names":["getDefaultQueryParams","schema","updated","properties","adminDefaultListingFilter","where","displayProperties","limit","offset","sort","property","direction"],"sources":["../../src/utils/get-default-query-params.js"],"sourcesContent":["const getDefaultQueryParams = schema => {\n const updated = schema.properties && schema.properties.updated;\n const { adminDefaultListingFilter: where } = schema.displayProperties || {};\n\n return {\n where,\n limit: 40,\n offset: 0,\n sort: updated\n ? [\n {\n property: 'updated',\n direction: 'desc'\n }\n ]\n : []\n };\n};\n\nexport { getDefaultQueryParams };\n"],"mappings":"AAAA,MAAMA,qBAAqB,GAAGC,MAAM,IAAI;EACtC,MAAMC,OAAO,GAAGD,MAAM,CAACE,UAAU,IAAIF,MAAM,CAACE,UAAU,CAACD,OAAO;EAC9D,MAAM;IAAEE,yBAAyB,EAAEC;EAAM,CAAC,GAAGJ,MAAM,CAACK,iBAAiB,IAAI,CAAC,CAAC;EAE3E,OAAO;IACLD,KAAK;IACLE,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,CAAC;IACTC,IAAI,EAAEP,OAAO,GACT,CACE;MACEQ,QAAQ,EAAE,SAAS;MACnBC,SAAS,EAAE;IACb,CAAC,CACF,GACD;EACN,CAAC;AACH,CAAC;AAED,SAASX,qBAAqB"}
1
+ {"version":3,"file":"get-default-query-params.js","names":["getDefaultQueryParams","schema","updated","properties","adminDefaultListingFilter","where","displayProperties","limit","offset","sort","property","direction"],"sources":["../../src/utils/get-default-query-params.js"],"sourcesContent":["const getDefaultQueryParams = schema => {\n const updated = schema.properties && schema.properties.updated;\n const { adminDefaultListingFilter: where } = schema.displayProperties || {};\n\n return {\n where,\n limit: 10,\n offset: 0,\n sort: updated\n ? [\n {\n property: 'updated',\n direction: 'desc'\n }\n ]\n : []\n };\n};\n\nexport { getDefaultQueryParams };\n"],"mappings":"AAAA,MAAMA,qBAAqB,GAAGC,MAAM,IAAI;EACtC,MAAMC,OAAO,GAAGD,MAAM,CAACE,UAAU,IAAIF,MAAM,CAACE,UAAU,CAACD,OAAO;EAC9D,MAAM;IAAEE,yBAAyB,EAAEC;EAAM,CAAC,GAAGJ,MAAM,CAACK,iBAAiB,IAAI,CAAC,CAAC;EAE3E,OAAO;IACLD,KAAK;IACLE,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,CAAC;IACTC,IAAI,EAAEP,OAAO,GACT,CACE;MACEQ,QAAQ,EAAE,SAAS;MACnBC,SAAS,EAAE;IACb,CAAC,CACF,GACD;EACN,CAAC;AACH,CAAC;AAED,SAASX,qBAAqB"}