@blaze-cms/react-page-builder 0.106.2 → 0.107.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 (39) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/lib/components/DataSummary/DataSummaryFactory.js +12 -3
  3. package/lib/components/DataSummary/DataSummaryFactory.js.map +1 -1
  4. package/lib/components/DataSummary/DataSummaryRender.js +11 -4
  5. package/lib/components/DataSummary/DataSummaryRender.js.map +1 -1
  6. package/lib/components/DataSummary/helpers/build-loop-props-content.js +102 -0
  7. package/lib/components/DataSummary/helpers/build-loop-props-content.js.map +1 -0
  8. package/lib/components/DataSummary/helpers/get-loop-props-limit.js +31 -0
  9. package/lib/components/DataSummary/helpers/get-loop-props-limit.js.map +1 -0
  10. package/lib/components/DataSummary/helpers/get-prop-value.js.map +1 -1
  11. package/lib/components/DataSummary/helpers/index.js +8 -0
  12. package/lib/components/DataSummary/helpers/index.js.map +1 -1
  13. package/lib-es/components/DataSummary/DataSummaryFactory.js +13 -4
  14. package/lib-es/components/DataSummary/DataSummaryFactory.js.map +1 -1
  15. package/lib-es/components/DataSummary/DataSummaryRender.js +13 -6
  16. package/lib-es/components/DataSummary/DataSummaryRender.js.map +1 -1
  17. package/lib-es/components/DataSummary/helpers/build-loop-props-content.js +63 -0
  18. package/lib-es/components/DataSummary/helpers/build-loop-props-content.js.map +1 -0
  19. package/lib-es/components/DataSummary/helpers/get-loop-props-limit.js +13 -0
  20. package/lib-es/components/DataSummary/helpers/get-loop-props-limit.js.map +1 -0
  21. package/lib-es/components/DataSummary/helpers/get-prop-value.js.map +1 -1
  22. package/lib-es/components/DataSummary/helpers/index.js +2 -1
  23. package/lib-es/components/DataSummary/helpers/index.js.map +1 -1
  24. package/package.json +2 -2
  25. package/src/components/DataSummary/DataSummaryFactory.js +11 -3
  26. package/src/components/DataSummary/DataSummaryRender.js +19 -4
  27. package/src/components/DataSummary/helpers/build-loop-props-content.js +60 -0
  28. package/src/components/DataSummary/helpers/get-loop-props-limit.js +12 -0
  29. package/src/components/DataSummary/helpers/get-prop-value.js +1 -1
  30. package/src/components/DataSummary/helpers/index.js +3 -1
  31. package/tests/unit/src/components/DataSummary/helpers/build-loop-props-content.test.js +60 -0
  32. package/tests/unit/src/components/DataSummary/{DataSummaryTypes/helpers → helpers}/build-props-to-display-with-content.test.js +1 -1
  33. package/tests/unit/src/components/DataSummary/{DataSummaryTypes/helpers → helpers}/get-data-summary-query.test.js +1 -1
  34. package/tests/unit/src/components/DataSummary/{DataSummaryTypes/helpers → helpers}/get-link-to-published-content.test.js +1 -1
  35. package/tests/unit/src/components/DataSummary/helpers/get-loop-props-limit.test.js +32 -0
  36. package/tests/unit/src/components/DataSummary/{DataSummaryTypes/helpers → helpers}/get-prop-value.test.js +1 -1
  37. package/tests/unit/src/components/DataSummary/{DataSummaryTypes/helpers → helpers}/get-value-from-array.test.js +1 -1
  38. package/tests/unit/src/components/DataSummary/helpers/mocks.js +88 -0
  39. package/tests/unit/src/components/DataSummary/{DataSummaryTypes/helpers → helpers}/strip-summary-props-content.test.js +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [0.107.0-alpha.0](https://github.com/thebyte9/blaze/compare/v0.106.2...v0.107.0-alpha.0) (2021-09-22)
7
+
8
+
9
+ ### Features
10
+
11
+ * added loopableProps to dataSummary ([#3108](https://github.com/thebyte9/blaze/issues/3108)) ([3398fbb](https://github.com/thebyte9/blaze/commit/3398fbbdee3e9146702292bfcf0599de3c6161c3))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [0.106.2](https://github.com/thebyte9/blaze/compare/v0.106.1...v0.106.2) (2021-09-22)
7
18
 
8
19
 
@@ -41,7 +41,7 @@ var _helpers2 = require("./helpers");
41
41
 
42
42
  var _DataSummaryRender = _interopRequireDefault(require("./DataSummaryRender"));
43
43
 
44
- var _excluded = ["entity", "dataRecordId", "propsToDisplay", "type", "useSelectedEntity", "elementTitle", "modifier", "headingStyle"];
44
+ var _excluded = ["entity", "dataRecordId", "propsToDisplay", "type", "useSelectedEntity", "elementTitle", "modifier", "headingStyle", "loopProperties", "loopLimit"];
45
45
 
46
46
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
47
47
 
@@ -56,6 +56,8 @@ var DataSummaryFactory = function DataSummaryFactory(_ref) {
56
56
  elementTitle = _ref.elementTitle,
57
57
  modifier = _ref.modifier,
58
58
  headingStyle = _ref.headingStyle,
59
+ loopProperties = _ref.loopProperties,
60
+ loopLimit = _ref.loopLimit,
59
61
  dataSummaryProps = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
60
62
  var entityForQuery = useSelectedEntity ? entity : dataSummaryProps.parent.itemEntity;
61
63
 
@@ -74,6 +76,7 @@ var DataSummaryFactory = function DataSummaryFactory(_ref) {
74
76
  if (loading) return '';
75
77
  if (error) return error.message;
76
78
  if (!data) return null;
79
+ if (!propsToDisplay || !propsToDisplay.length) return null;
77
80
  var propsToDisplayValues = (0, _helpers.checkPropsToUse)(propsToDisplay);
78
81
  var propsQueryString = (0, _helpers.buildPropsQuery)(data, propsToDisplayValues);
79
82
  var dataSummaryQuery = (0, _helpers2.getDataSummaryQuery)(data, isPreview, propsQueryString);
@@ -81,6 +84,8 @@ var DataSummaryFactory = function DataSummaryFactory(_ref) {
81
84
  return /*#__PURE__*/_react["default"].createElement(_DataSummaryRender["default"], {
82
85
  recordId: recordId,
83
86
  propsToDisplay: propsToDisplay,
87
+ loopProperties: loopProperties,
88
+ loopLimit: loopLimit,
84
89
  query: dataSummaryQuery,
85
90
  type: type,
86
91
  elementTitle: elementTitle,
@@ -97,7 +102,9 @@ DataSummaryFactory.propTypes = {
97
102
  useSelectedEntity: _propTypes["default"].bool,
98
103
  elementTitle: _propTypes["default"].string,
99
104
  modifier: _propTypes["default"].string,
100
- headingStyle: _propTypes["default"].string
105
+ headingStyle: _propTypes["default"].string,
106
+ loopProperties: _propTypes["default"].array,
107
+ loopLimit: _propTypes["default"].number
101
108
  };
102
109
  DataSummaryFactory.defaultProps = {
103
110
  type: 'text',
@@ -107,7 +114,9 @@ DataSummaryFactory.defaultProps = {
107
114
  entity: '',
108
115
  elementTitle: '',
109
116
  modifier: '',
110
- headingStyle: 'h2'
117
+ headingStyle: 'h2',
118
+ loopProperties: [],
119
+ loopLimit: 0
111
120
  };
112
121
  var _default = DataSummaryFactory;
113
122
  exports["default"] = _default;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/DataSummary/DataSummaryFactory.js"],"names":["DataSummaryFactory","entity","dataRecordId","propsToDisplay","type","useSelectedEntity","elementTitle","modifier","headingStyle","dataSummaryProps","entityForQuery","parent","itemEntity","getSingleEntitySchema","variables","id","data","error","loading","MainContext","isPreview","message","propsToDisplayValues","propsQueryString","dataSummaryQuery","recordId","itemId","propTypes","PropTypes","string","array","bool","defaultProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEA,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,OAUrB;AAAA,MATJC,MASI,QATJA,MASI;AAAA,MARJC,YAQI,QARJA,YAQI;AAAA,MAPJC,cAOI,QAPJA,cAOI;AAAA,MANJC,IAMI,QANJA,IAMI;AAAA,MALJC,iBAKI,QALJA,iBAKI;AAAA,MAJJC,YAII,QAJJA,YAII;AAAA,MAHJC,QAGI,QAHJA,QAGI;AAAA,MAFJC,YAEI,QAFJA,YAEI;AAAA,MADDC,gBACC;AACJ,MAAMC,cAAc,GAAGL,iBAAiB,GAAGJ,MAAH,GAAYQ,gBAAgB,CAACE,MAAjB,CAAwBC,UAA5E;;AACA,kBAAiC,0BAASC,4BAAT,EAAgC;AAC/DC,IAAAA,SAAS,EAAE;AAAEC,MAAAA,EAAE,EAAEL;AAAN;AADoD,GAAhC,CAAjC;AAAA,MAAQM,IAAR,aAAQA,IAAR;AAAA,MAAcC,KAAd,aAAcA,KAAd;AAAA,MAAqBC,OAArB,aAAqBA,OAArB;;AAGA,oBAAsB,uBAAWC,6BAAX,CAAtB;AAAA,MAAQC,SAAR,eAAQA,SAAR;;AAEA,MAAIF,OAAJ,EAAa,OAAO,EAAP;AACb,MAAID,KAAJ,EAAW,OAAOA,KAAK,CAACI,OAAb;AACX,MAAI,CAACL,IAAL,EAAW,OAAO,IAAP;AAEX,MAAMM,oBAAoB,GAAG,8BAAgBnB,cAAhB,CAA7B;AACA,MAAMoB,gBAAgB,GAAG,8BAAgBP,IAAhB,EAAsBM,oBAAtB,CAAzB;AACA,MAAME,gBAAgB,GAAG,mCAAoBR,IAApB,EAA0BI,SAA1B,EAAqCG,gBAArC,CAAzB;AACA,MAAME,QAAQ,GAAGvB,YAAY,CAAC,CAAD,CAAZ,IAAmBO,gBAAgB,CAACE,MAAjB,CAAwBe,MAA5D;AAEA,sBACE,gCAAC,6BAAD;AACE,IAAA,QAAQ,EAAED,QADZ;AAEE,IAAA,cAAc,EAAEtB,cAFlB;AAGE,IAAA,KAAK,EAAEqB,gBAHT;AAIE,IAAA,IAAI,EAAEpB,IAJR;AAKE,IAAA,YAAY,EAAEE,YALhB;AAME,IAAA,QAAQ,EAAEC,QANZ;AAOE,IAAA,OAAO,EAAEC;AAPX,IADF;AAWD,CArCD;;AAuCAR,kBAAkB,CAAC2B,SAAnB,GAA+B;AAC7BvB,EAAAA,IAAI,EAAEwB,sBAAUC,MADa;AAE7B3B,EAAAA,YAAY,EAAE0B,sBAAUE,KAFK;AAG7B3B,EAAAA,cAAc,EAAEyB,sBAAUE,KAHG;AAI7B7B,EAAAA,MAAM,EAAE2B,sBAAUC,MAJW;AAK7BxB,EAAAA,iBAAiB,EAAEuB,sBAAUG,IALA;AAM7BzB,EAAAA,YAAY,EAAEsB,sBAAUC,MANK;AAO7BtB,EAAAA,QAAQ,EAAEqB,sBAAUC,MAPS;AAQ7BrB,EAAAA,YAAY,EAAEoB,sBAAUC;AARK,CAA/B;AAWA7B,kBAAkB,CAACgC,YAAnB,GAAkC;AAChC5B,EAAAA,IAAI,EAAE,MAD0B;AAEhCF,EAAAA,YAAY,EAAE,EAFkB;AAGhCC,EAAAA,cAAc,EAAE,EAHgB;AAIhCE,EAAAA,iBAAiB,EAAE,IAJa;AAKhCJ,EAAAA,MAAM,EAAE,EALwB;AAMhCK,EAAAA,YAAY,EAAE,EANkB;AAOhCC,EAAAA,QAAQ,EAAE,EAPsB;AAQhCC,EAAAA,YAAY,EAAE;AARkB,CAAlC;eAWeR,kB","sourcesContent":["import React, { useContext } from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport PropTypes from 'prop-types';\nimport { MainContext } from '@blaze-cms/nextjs-components';\nimport { getSingleEntitySchema } from '../../application/query';\nimport { buildPropsQuery, checkPropsToUse } from '../../helpers';\nimport { getDataSummaryQuery } from './helpers';\nimport DataSummaryRender from './DataSummaryRender';\n\nconst DataSummaryFactory = ({\n entity,\n dataRecordId,\n propsToDisplay,\n type,\n useSelectedEntity,\n elementTitle,\n modifier,\n headingStyle,\n ...dataSummaryProps\n}) => {\n const entityForQuery = useSelectedEntity ? entity : dataSummaryProps.parent.itemEntity;\n const { data, error, loading } = useQuery(getSingleEntitySchema, {\n variables: { id: entityForQuery }\n });\n const { isPreview } = useContext(MainContext);\n\n if (loading) return '';\n if (error) return error.message;\n if (!data) return null;\n\n const propsToDisplayValues = checkPropsToUse(propsToDisplay);\n const propsQueryString = buildPropsQuery(data, propsToDisplayValues);\n const dataSummaryQuery = getDataSummaryQuery(data, isPreview, propsQueryString);\n const recordId = dataRecordId[0] || dataSummaryProps.parent.itemId;\n\n return (\n <DataSummaryRender\n recordId={recordId}\n propsToDisplay={propsToDisplay}\n query={dataSummaryQuery}\n type={type}\n elementTitle={elementTitle}\n modifier={modifier}\n htmlTag={headingStyle}\n />\n );\n};\n\nDataSummaryFactory.propTypes = {\n type: PropTypes.string,\n dataRecordId: PropTypes.array,\n propsToDisplay: PropTypes.array,\n entity: PropTypes.string,\n useSelectedEntity: PropTypes.bool,\n elementTitle: PropTypes.string,\n modifier: PropTypes.string,\n headingStyle: PropTypes.string\n};\n\nDataSummaryFactory.defaultProps = {\n type: 'text',\n dataRecordId: [],\n propsToDisplay: [],\n useSelectedEntity: true,\n entity: '',\n elementTitle: '',\n modifier: '',\n headingStyle: 'h2'\n};\n\nexport default DataSummaryFactory;\n"],"file":"DataSummaryFactory.js"}
1
+ {"version":3,"sources":["../../../src/components/DataSummary/DataSummaryFactory.js"],"names":["DataSummaryFactory","entity","dataRecordId","propsToDisplay","type","useSelectedEntity","elementTitle","modifier","headingStyle","loopProperties","loopLimit","dataSummaryProps","entityForQuery","parent","itemEntity","getSingleEntitySchema","variables","id","data","error","loading","MainContext","isPreview","message","length","propsToDisplayValues","propsQueryString","dataSummaryQuery","recordId","itemId","propTypes","PropTypes","string","array","bool","number","defaultProps"],"mappings":"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","sourcesContent":["import React, { useContext } from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport PropTypes from 'prop-types';\nimport { MainContext } from '@blaze-cms/nextjs-components';\nimport { getSingleEntitySchema } from '../../application/query';\nimport { buildPropsQuery, checkPropsToUse } from '../../helpers';\nimport { getDataSummaryQuery } from './helpers';\nimport DataSummaryRender from './DataSummaryRender';\n\nconst DataSummaryFactory = ({\n entity,\n dataRecordId,\n propsToDisplay,\n type,\n useSelectedEntity,\n elementTitle,\n modifier,\n headingStyle,\n loopProperties,\n loopLimit,\n ...dataSummaryProps\n}) => {\n const entityForQuery = useSelectedEntity ? entity : dataSummaryProps.parent.itemEntity;\n const { data, error, loading } = useQuery(getSingleEntitySchema, {\n variables: { id: entityForQuery }\n });\n const { isPreview } = useContext(MainContext);\n\n if (loading) return '';\n if (error) return error.message;\n if (!data) return null;\n if (!propsToDisplay || !propsToDisplay.length) return null;\n const propsToDisplayValues = checkPropsToUse(propsToDisplay);\n const propsQueryString = buildPropsQuery(data, propsToDisplayValues);\n const dataSummaryQuery = getDataSummaryQuery(data, isPreview, propsQueryString);\n const recordId = dataRecordId[0] || dataSummaryProps.parent.itemId;\n\n return (\n <DataSummaryRender\n recordId={recordId}\n propsToDisplay={propsToDisplay}\n loopProperties={loopProperties}\n loopLimit={loopLimit}\n query={dataSummaryQuery}\n type={type}\n elementTitle={elementTitle}\n modifier={modifier}\n htmlTag={headingStyle}\n />\n );\n};\n\nDataSummaryFactory.propTypes = {\n type: PropTypes.string,\n dataRecordId: PropTypes.array,\n propsToDisplay: PropTypes.array,\n entity: PropTypes.string,\n useSelectedEntity: PropTypes.bool,\n elementTitle: PropTypes.string,\n modifier: PropTypes.string,\n headingStyle: PropTypes.string,\n loopProperties: PropTypes.array,\n loopLimit: PropTypes.number\n};\n\nDataSummaryFactory.defaultProps = {\n type: 'text',\n dataRecordId: [],\n propsToDisplay: [],\n useSelectedEntity: true,\n entity: '',\n elementTitle: '',\n modifier: '',\n headingStyle: 'h2',\n loopProperties: [],\n loopLimit: 0\n};\n\nexport default DataSummaryFactory;\n"],"file":"DataSummaryFactory.js"}
@@ -23,7 +23,7 @@ var _utils = require("../../utils");
23
23
 
24
24
  var _helpers = require("./helpers");
25
25
 
26
- var _excluded = ["type", "htmlTag", "recordId", "query", "propsToDisplay", "elementTitle"];
26
+ var _excluded = ["type", "htmlTag", "recordId", "query", "propsToDisplay", "elementTitle", "loopProperties", "loopLimit"];
27
27
 
28
28
  var DataSummaryRender = function DataSummaryRender(_ref) {
29
29
  var type = _ref.type,
@@ -32,6 +32,8 @@ var DataSummaryRender = function DataSummaryRender(_ref) {
32
32
  query = _ref.query,
33
33
  propsToDisplay = _ref.propsToDisplay,
34
34
  elementTitle = _ref.elementTitle,
35
+ loopProperties = _ref.loopProperties,
36
+ loopLimit = _ref.loopLimit,
35
37
  otherProps = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
36
38
 
37
39
  var _useQuery = (0, _reactHooks.useQuery)(query, {
@@ -47,8 +49,9 @@ var DataSummaryRender = function DataSummaryRender(_ref) {
47
49
  if (error) return error.message;
48
50
  if (!data || !data.entityData) return null;
49
51
  var entityData = data.entityData;
52
+ var shouldLoop = loopProperties && loopProperties.length;
50
53
  var modifier = (0, _utils.getClassModifiers)('list', otherProps);
51
- var summaryPropsWithContent = (0, _helpers.buildPropsToDisplayWithContent)(entityData, propsToDisplay);
54
+ var summaryPropsWithContent = shouldLoop ? (0, _helpers.buildLoopPropsContent)(loopProperties, propsToDisplay, loopLimit, entityData) : (0, _helpers.buildPropsToDisplayWithContent)(entityData, propsToDisplay);
52
55
  var propsToDisplayModifiers = (0, _utils.getPropsToDisplayModifiers)(propsToDisplay);
53
56
  var summaryPropsWithCleanContent = (0, _helpers.stripSummaryPropsContent)(propsToDisplay, summaryPropsWithContent);
54
57
  var SummaryComponent = _DataSummaryTypes.summaryComponents[type];
@@ -68,7 +71,9 @@ DataSummaryRender.propTypes = {
68
71
  recordId: _propTypes["default"].string,
69
72
  propsToDisplay: _propTypes["default"].array,
70
73
  elementTitle: _propTypes["default"].string,
71
- htmlTag: _propTypes["default"].string
74
+ htmlTag: _propTypes["default"].string,
75
+ loopProperties: _propTypes["default"].array,
76
+ loopLimit: _propTypes["default"].number
72
77
  };
73
78
  DataSummaryRender.defaultProps = {
74
79
  type: 'text',
@@ -76,7 +81,9 @@ DataSummaryRender.defaultProps = {
76
81
  recordId: '',
77
82
  propsToDisplay: [],
78
83
  elementTitle: '',
79
- htmlTag: 'h2'
84
+ htmlTag: 'h2',
85
+ loopProperties: [],
86
+ loopLimit: 0
80
87
  };
81
88
  var _default = DataSummaryRender;
82
89
  exports["default"] = _default;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/DataSummary/DataSummaryRender.js"],"names":["DataSummaryRender","type","htmlTag","recordId","query","propsToDisplay","elementTitle","otherProps","variables","id","data","error","loading","message","entityData","modifier","summaryPropsWithContent","propsToDisplayModifiers","summaryPropsWithCleanContent","SummaryComponent","summaryComponents","length","propTypes","PropTypes","string","object","array","defaultProps"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB,OAQpB;AAAA,MAPJC,IAOI,QAPJA,IAOI;AAAA,MANJC,OAMI,QANJA,OAMI;AAAA,MALJC,QAKI,QALJA,QAKI;AAAA,MAJJC,KAII,QAJJA,KAII;AAAA,MAHJC,cAGI,QAHJA,cAGI;AAAA,MAFJC,YAEI,QAFJA,YAEI;AAAA,MADDC,UACC;;AACJ,kBAAiC,0BAASH,KAAT,EAAgB;AAC/CI,IAAAA,SAAS,EAAE;AAAEC,MAAAA,EAAE,EAAEN;AAAN;AADoC,GAAhB,CAAjC;AAAA,MAAQO,IAAR,aAAQA,IAAR;AAAA,MAAcC,KAAd,aAAcA,KAAd;AAAA,MAAqBC,OAArB,aAAqBA,OAArB;;AAIA,MAAIA,OAAJ,EAAa,OAAO,EAAP;AACb,MAAID,KAAJ,EAAW,OAAOA,KAAK,CAACE,OAAb;AACX,MAAI,CAACH,IAAD,IAAS,CAACA,IAAI,CAACI,UAAnB,EAA+B,OAAO,IAAP;AAC/B,MAAQA,UAAR,GAAuBJ,IAAvB,CAAQI,UAAR;AACA,MAAMC,QAAQ,GAAG,8BAAkB,MAAlB,EAA0BR,UAA1B,CAAjB;AACA,MAAMS,uBAAuB,GAAG,6CAA+BF,UAA/B,EAA2CT,cAA3C,CAAhC;AACA,MAAMY,uBAAuB,GAAG,uCAA2BZ,cAA3B,CAAhC;AACA,MAAMa,4BAA4B,GAAG,uCACnCb,cADmC,EAEnCW,uBAFmC,CAArC;AAIA,MAAMG,gBAAgB,GAAGC,oCAAkBnB,IAAlB,CAAzB;AACA,MAAI,CAACiB,4BAA4B,CAACG,MAAlC,EAA0C,OAAO,IAAP;AAE1C,sBACE,gCAAC,gBAAD;AACE,IAAA,QAAQ,EAAEN,QADZ;AAEE,IAAA,YAAY,EAAET,YAFhB;AAGE,IAAA,uBAAuB,EAAEY,4BAH3B;AAIE,IAAA,uBAAuB,EAAED,uBAJ3B;AAKE,IAAA,OAAO,EAAEf;AALX,IADF;AASD,CApCD;;AAsCAF,iBAAiB,CAACsB,SAAlB,GAA8B;AAC5BrB,EAAAA,IAAI,EAAEsB,sBAAUC,MADY;AAE5BpB,EAAAA,KAAK,EAAEmB,sBAAUE,MAFW;AAG5BtB,EAAAA,QAAQ,EAAEoB,sBAAUC,MAHQ;AAI5BnB,EAAAA,cAAc,EAAEkB,sBAAUG,KAJE;AAK5BpB,EAAAA,YAAY,EAAEiB,sBAAUC,MALI;AAM5BtB,EAAAA,OAAO,EAAEqB,sBAAUC;AANS,CAA9B;AASAxB,iBAAiB,CAAC2B,YAAlB,GAAiC;AAC/B1B,EAAAA,IAAI,EAAE,MADyB;AAE/BG,EAAAA,KAAK,EAAE,EAFwB;AAG/BD,EAAAA,QAAQ,EAAE,EAHqB;AAI/BE,EAAAA,cAAc,EAAE,EAJe;AAK/BC,EAAAA,YAAY,EAAE,EALiB;AAM/BJ,EAAAA,OAAO,EAAE;AANsB,CAAjC;eASeF,iB","sourcesContent":["import React from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport PropTypes from 'prop-types';\nimport { summaryComponents } from './DataSummaryTypes';\nimport { getClassModifiers, getPropsToDisplayModifiers } from '../../utils';\nimport { buildPropsToDisplayWithContent, stripSummaryPropsContent } from './helpers';\n\nconst DataSummaryRender = ({\n type,\n htmlTag,\n recordId,\n query,\n propsToDisplay,\n elementTitle,\n ...otherProps\n}) => {\n const { data, error, loading } = useQuery(query, {\n variables: { id: recordId }\n });\n\n if (loading) return '';\n if (error) return error.message;\n if (!data || !data.entityData) return null;\n const { entityData } = data;\n const modifier = getClassModifiers('list', otherProps);\n const summaryPropsWithContent = buildPropsToDisplayWithContent(entityData, propsToDisplay);\n const propsToDisplayModifiers = getPropsToDisplayModifiers(propsToDisplay);\n const summaryPropsWithCleanContent = stripSummaryPropsContent(\n propsToDisplay,\n summaryPropsWithContent\n );\n const SummaryComponent = summaryComponents[type];\n if (!summaryPropsWithCleanContent.length) return null;\n\n return (\n <SummaryComponent\n modifier={modifier}\n elementTitle={elementTitle}\n summaryPropsWithContent={summaryPropsWithCleanContent}\n propsToDisplayModifiers={propsToDisplayModifiers}\n htmlTag={htmlTag}\n />\n );\n};\n\nDataSummaryRender.propTypes = {\n type: PropTypes.string,\n query: PropTypes.object,\n recordId: PropTypes.string,\n propsToDisplay: PropTypes.array,\n elementTitle: PropTypes.string,\n htmlTag: PropTypes.string\n};\n\nDataSummaryRender.defaultProps = {\n type: 'text',\n query: {},\n recordId: '',\n propsToDisplay: [],\n elementTitle: '',\n htmlTag: 'h2'\n};\n\nexport default DataSummaryRender;\n"],"file":"DataSummaryRender.js"}
1
+ {"version":3,"sources":["../../../src/components/DataSummary/DataSummaryRender.js"],"names":["DataSummaryRender","type","htmlTag","recordId","query","propsToDisplay","elementTitle","loopProperties","loopLimit","otherProps","variables","id","data","error","loading","message","entityData","shouldLoop","length","modifier","summaryPropsWithContent","propsToDisplayModifiers","summaryPropsWithCleanContent","SummaryComponent","summaryComponents","propTypes","PropTypes","string","object","array","number","defaultProps"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAMA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB,OAUpB;AAAA,MATJC,IASI,QATJA,IASI;AAAA,MARJC,OAQI,QARJA,OAQI;AAAA,MAPJC,QAOI,QAPJA,QAOI;AAAA,MANJC,KAMI,QANJA,KAMI;AAAA,MALJC,cAKI,QALJA,cAKI;AAAA,MAJJC,YAII,QAJJA,YAII;AAAA,MAHJC,cAGI,QAHJA,cAGI;AAAA,MAFJC,SAEI,QAFJA,SAEI;AAAA,MADDC,UACC;;AACJ,kBAAiC,0BAASL,KAAT,EAAgB;AAC/CM,IAAAA,SAAS,EAAE;AAAEC,MAAAA,EAAE,EAAER;AAAN;AADoC,GAAhB,CAAjC;AAAA,MAAQS,IAAR,aAAQA,IAAR;AAAA,MAAcC,KAAd,aAAcA,KAAd;AAAA,MAAqBC,OAArB,aAAqBA,OAArB;;AAIA,MAAIA,OAAJ,EAAa,OAAO,EAAP;AACb,MAAID,KAAJ,EAAW,OAAOA,KAAK,CAACE,OAAb;AACX,MAAI,CAACH,IAAD,IAAS,CAACA,IAAI,CAACI,UAAnB,EAA+B,OAAO,IAAP;AAE/B,MAAQA,UAAR,GAAuBJ,IAAvB,CAAQI,UAAR;AACA,MAAMC,UAAU,GAAGV,cAAc,IAAIA,cAAc,CAACW,MAApD;AACA,MAAMC,QAAQ,GAAG,8BAAkB,MAAlB,EAA0BV,UAA1B,CAAjB;AACA,MAAMW,uBAAuB,GAAGH,UAAU,GACtC,oCAAsBV,cAAtB,EAAsCF,cAAtC,EAAsDG,SAAtD,EAAiEQ,UAAjE,CADsC,GAEtC,6CAA+BA,UAA/B,EAA2CX,cAA3C,CAFJ;AAIA,MAAMgB,uBAAuB,GAAG,uCAA2BhB,cAA3B,CAAhC;AACA,MAAMiB,4BAA4B,GAAG,uCACnCjB,cADmC,EAEnCe,uBAFmC,CAArC;AAIA,MAAMG,gBAAgB,GAAGC,oCAAkBvB,IAAlB,CAAzB;AACA,MAAI,CAACqB,4BAA4B,CAACJ,MAAlC,EAA0C,OAAO,IAAP;AAE1C,sBACE,gCAAC,gBAAD;AACE,IAAA,QAAQ,EAAEC,QADZ;AAEE,IAAA,YAAY,EAAEb,YAFhB;AAGE,IAAA,uBAAuB,EAAEgB,4BAH3B;AAIE,IAAA,uBAAuB,EAAED,uBAJ3B;AAKE,IAAA,OAAO,EAAEnB;AALX,IADF;AASD,CA3CD;;AA6CAF,iBAAiB,CAACyB,SAAlB,GAA8B;AAC5BxB,EAAAA,IAAI,EAAEyB,sBAAUC,MADY;AAE5BvB,EAAAA,KAAK,EAAEsB,sBAAUE,MAFW;AAG5BzB,EAAAA,QAAQ,EAAEuB,sBAAUC,MAHQ;AAI5BtB,EAAAA,cAAc,EAAEqB,sBAAUG,KAJE;AAK5BvB,EAAAA,YAAY,EAAEoB,sBAAUC,MALI;AAM5BzB,EAAAA,OAAO,EAAEwB,sBAAUC,MANS;AAO5BpB,EAAAA,cAAc,EAAEmB,sBAAUG,KAPE;AAQ5BrB,EAAAA,SAAS,EAAEkB,sBAAUI;AARO,CAA9B;AAWA9B,iBAAiB,CAAC+B,YAAlB,GAAiC;AAC/B9B,EAAAA,IAAI,EAAE,MADyB;AAE/BG,EAAAA,KAAK,EAAE,EAFwB;AAG/BD,EAAAA,QAAQ,EAAE,EAHqB;AAI/BE,EAAAA,cAAc,EAAE,EAJe;AAK/BC,EAAAA,YAAY,EAAE,EALiB;AAM/BJ,EAAAA,OAAO,EAAE,IANsB;AAO/BK,EAAAA,cAAc,EAAE,EAPe;AAQ/BC,EAAAA,SAAS,EAAE;AARoB,CAAjC;eAWeR,iB","sourcesContent":["import React from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport PropTypes from 'prop-types';\nimport { summaryComponents } from './DataSummaryTypes';\nimport { getClassModifiers, getPropsToDisplayModifiers } from '../../utils';\nimport {\n buildPropsToDisplayWithContent,\n stripSummaryPropsContent,\n buildLoopPropsContent\n} from './helpers';\n\nconst DataSummaryRender = ({\n type,\n htmlTag,\n recordId,\n query,\n propsToDisplay,\n elementTitle,\n loopProperties,\n loopLimit,\n ...otherProps\n}) => {\n const { data, error, loading } = useQuery(query, {\n variables: { id: recordId }\n });\n\n if (loading) return '';\n if (error) return error.message;\n if (!data || !data.entityData) return null;\n\n const { entityData } = data;\n const shouldLoop = loopProperties && loopProperties.length;\n const modifier = getClassModifiers('list', otherProps);\n const summaryPropsWithContent = shouldLoop\n ? buildLoopPropsContent(loopProperties, propsToDisplay, loopLimit, entityData)\n : buildPropsToDisplayWithContent(entityData, propsToDisplay);\n\n const propsToDisplayModifiers = getPropsToDisplayModifiers(propsToDisplay);\n const summaryPropsWithCleanContent = stripSummaryPropsContent(\n propsToDisplay,\n summaryPropsWithContent\n );\n const SummaryComponent = summaryComponents[type];\n if (!summaryPropsWithCleanContent.length) return null;\n\n return (\n <SummaryComponent\n modifier={modifier}\n elementTitle={elementTitle}\n summaryPropsWithContent={summaryPropsWithCleanContent}\n propsToDisplayModifiers={propsToDisplayModifiers}\n htmlTag={htmlTag}\n />\n );\n};\n\nDataSummaryRender.propTypes = {\n type: PropTypes.string,\n query: PropTypes.object,\n recordId: PropTypes.string,\n propsToDisplay: PropTypes.array,\n elementTitle: PropTypes.string,\n htmlTag: PropTypes.string,\n loopProperties: PropTypes.array,\n loopLimit: PropTypes.number\n};\n\nDataSummaryRender.defaultProps = {\n type: 'text',\n query: {},\n recordId: '',\n propsToDisplay: [],\n elementTitle: '',\n htmlTag: 'h2',\n loopProperties: [],\n loopLimit: 0\n};\n\nexport default DataSummaryRender;\n"],"file":"DataSummaryRender.js"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ require("core-js/modules/es.array.for-each.js");
15
+
16
+ require("core-js/modules/web.dom-collections.for-each.js");
17
+
18
+ require("core-js/modules/es.array.is-array.js");
19
+
20
+ require("core-js/modules/es.array.includes.js");
21
+
22
+ require("core-js/modules/es.string.includes.js");
23
+
24
+ require("core-js/modules/es.array.filter.js");
25
+
26
+ require("core-js/modules/es.array.map.js");
27
+
28
+ var _lodash = _interopRequireDefault(require("lodash.upperfirst"));
29
+
30
+ var _lodash2 = _interopRequireDefault(require("lodash.flatten"));
31
+
32
+ var _getLinkToPublishedContent = _interopRequireDefault(require("./get-link-to-published-content"));
33
+
34
+ var _getLoopPropsLimit = _interopRequireDefault(require("./get-loop-props-limit"));
35
+
36
+ var _getPropValue = _interopRequireDefault(require("./get-prop-value"));
37
+
38
+ var getLoopValue = function getLoopValue(value) {
39
+ var keyField = value.keyField;
40
+ return value[keyField];
41
+ };
42
+
43
+ var separateValues = function separateValues(propsToDisplay, loopProps, data) {
44
+ var regularValues = {};
45
+ var loopValues = {};
46
+ propsToDisplay.forEach(function (options) {
47
+ var propertiesToDisplay = options.propertiesToDisplay;
48
+ propertiesToDisplay.forEach(function (prop) {
49
+ var value = (0, _getPropValue["default"])(prop, data, options);
50
+ var isArrayValue = Array.isArray(value);
51
+ if (!value) return;
52
+ var isLoopableProp = loopProps.includes(prop) && isArrayValue;
53
+
54
+ if (isLoopableProp) {
55
+ loopValues[prop] = value;
56
+ } else {
57
+ regularValues[prop] = value;
58
+ }
59
+ });
60
+ });
61
+ return [regularValues, loopValues];
62
+ };
63
+
64
+ var buildLoopPropsContent = function buildLoopPropsContent() {
65
+ var loopProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
66
+ var propsToDisplay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
67
+ var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
68
+ var data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
69
+ var loopPropsWithContent = [];
70
+
71
+ var _separateValues = separateValues(propsToDisplay, loopProps, data),
72
+ _separateValues2 = (0, _slicedToArray2["default"])(_separateValues, 2),
73
+ regularValues = _separateValues2[0],
74
+ loopValues = _separateValues2[1];
75
+
76
+ var loopLimit = (0, _getLoopPropsLimit["default"])(loopValues, limit);
77
+
78
+ var _loop = function _loop(i) {
79
+ var propsArray = (0, _lodash2["default"])(propsToDisplay.map(function (options) {
80
+ var propertiesToDisplay = options.propertiesToDisplay,
81
+ label = options.label;
82
+ return propertiesToDisplay.map(function (key) {
83
+ var loopValue = loopValues[key];
84
+ var propValue = loopValue ? getLoopValue(loopValue[i]) : regularValues[key];
85
+ if (!propValue) return null;
86
+ var linkToPublishedContent = (0, _getLinkToPublishedContent["default"])(key, data);
87
+ return [(0, _lodash["default"])(label), propValue, linkToPublishedContent];
88
+ });
89
+ })).filter(Boolean);
90
+ loopPropsWithContent.push(propsArray);
91
+ };
92
+
93
+ for (var i = 0; i < loopLimit; i += 1) {
94
+ _loop(i);
95
+ }
96
+
97
+ return (0, _lodash2["default"])(loopPropsWithContent);
98
+ };
99
+
100
+ var _default = buildLoopPropsContent;
101
+ exports["default"] = _default;
102
+ //# sourceMappingURL=build-loop-props-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/DataSummary/helpers/build-loop-props-content.js"],"names":["getLoopValue","value","keyField","separateValues","propsToDisplay","loopProps","data","regularValues","loopValues","forEach","options","propertiesToDisplay","prop","isArrayValue","Array","isArray","isLoopableProp","includes","buildLoopPropsContent","limit","loopPropsWithContent","loopLimit","i","propsArray","map","label","key","loopValue","propValue","linkToPublishedContent","filter","Boolean","push"],"mappings":"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","sourcesContent":["import upperFirst from 'lodash.upperfirst';\nimport flatten from 'lodash.flatten';\nimport getLinkToPublishedContent from './get-link-to-published-content';\nimport getLoopPropsLimit from './get-loop-props-limit';\nimport getPropValue from './get-prop-value';\n\nconst getLoopValue = value => {\n const { keyField } = value;\n return value[keyField];\n};\n\nconst separateValues = (propsToDisplay, loopProps, data) => {\n const regularValues = {};\n const loopValues = {};\n\n propsToDisplay.forEach(options => {\n const { propertiesToDisplay } = options;\n propertiesToDisplay.forEach(prop => {\n const value = getPropValue(prop, data, options);\n const isArrayValue = Array.isArray(value);\n if (!value) return;\n const isLoopableProp = loopProps.includes(prop) && isArrayValue;\n\n if (isLoopableProp) {\n loopValues[prop] = value;\n } else {\n regularValues[prop] = value;\n }\n });\n });\n return [regularValues, loopValues];\n};\n\nconst buildLoopPropsContent = (loopProps = [], propsToDisplay = [], limit = 0, data = {}) => {\n const loopPropsWithContent = [];\n const [regularValues, loopValues] = separateValues(propsToDisplay, loopProps, data);\n\n const loopLimit = getLoopPropsLimit(loopValues, limit);\n\n for (let i = 0; i < loopLimit; i += 1) {\n const propsArray = flatten(\n propsToDisplay.map(options => {\n const { propertiesToDisplay, label } = options;\n return propertiesToDisplay.map(key => {\n const loopValue = loopValues[key];\n const propValue = loopValue ? getLoopValue(loopValue[i]) : regularValues[key];\n if (!propValue) return null;\n const linkToPublishedContent = getLinkToPublishedContent(key, data);\n\n return [upperFirst(label), propValue, linkToPublishedContent];\n });\n })\n ).filter(Boolean);\n loopPropsWithContent.push(propsArray);\n }\n\n return flatten(loopPropsWithContent);\n};\n\nexport default buildLoopPropsContent;\n"],"file":"build-loop-props-content.js"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ require("core-js/modules/es.array.for-each.js");
11
+
12
+ require("core-js/modules/web.dom-collections.for-each.js");
13
+
14
+ require("core-js/modules/es.object.keys.js");
15
+
16
+ require("core-js/modules/es.array.is-array.js");
17
+
18
+ var getLoopPropsLimit = function getLoopPropsLimit(values, limit) {
19
+ var valuesLimit = 1;
20
+ if (!values) return valuesLimit;
21
+ Object.keys(values).forEach(function (key) {
22
+ var value = values[key];
23
+ if (value && Array.isArray(value) && value.length > valuesLimit) valuesLimit = value.length;
24
+ });
25
+ if (!limit || valuesLimit < limit) return valuesLimit;
26
+ return limit;
27
+ };
28
+
29
+ var _default = getLoopPropsLimit;
30
+ exports["default"] = _default;
31
+ //# sourceMappingURL=get-loop-props-limit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/DataSummary/helpers/get-loop-props-limit.js"],"names":["getLoopPropsLimit","values","limit","valuesLimit","Object","keys","forEach","key","value","Array","isArray","length"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,MAAD,EAASC,KAAT,EAAmB;AAC3C,MAAIC,WAAW,GAAG,CAAlB;AACA,MAAI,CAACF,MAAL,EAAa,OAAOE,WAAP;AACbC,EAAAA,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG,EAAI;AACjC,QAAMC,KAAK,GAAGP,MAAM,CAACM,GAAD,CAApB;AACA,QAAIC,KAAK,IAAIC,KAAK,CAACC,OAAN,CAAcF,KAAd,CAAT,IAAiCA,KAAK,CAACG,MAAN,GAAeR,WAApD,EAAiEA,WAAW,GAAGK,KAAK,CAACG,MAApB;AAClE,GAHD;AAIA,MAAI,CAACT,KAAD,IAAUC,WAAW,GAAGD,KAA5B,EAAmC,OAAOC,WAAP;AACnC,SAAOD,KAAP;AACD,CATD;;eAWeF,iB","sourcesContent":["const getLoopPropsLimit = (values, limit) => {\n let valuesLimit = 1;\n if (!values) return valuesLimit;\n Object.keys(values).forEach(key => {\n const value = values[key];\n if (value && Array.isArray(value) && value.length > valuesLimit) valuesLimit = value.length;\n });\n if (!limit || valuesLimit < limit) return valuesLimit;\n return limit;\n};\n\nexport default getLoopPropsLimit;\n"],"file":"get-loop-props-limit.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/DataSummary/helpers/get-prop-value.js"],"names":["getPropValue","key","props","options","baseKey","split","nestedKey","filter","_","i","join","prefix","suffix","value","valueIsArray","Array","isArray","nestedValue","trim"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA,IAAMA,YAAY,GAAG,SAAfA,YAAe,CAACC,GAAD,EAAMC,KAAN,EAA8B;AAAA,MAAjBC,OAAiB,uEAAP,EAAO;AACjD,MAAMC,OAAO,GAAGH,GAAG,CAACI,KAAJ,CAAU,GAAV,EAAe,CAAf,CAAhB;AACA,MAAMC,SAAS,GAAGL,GAAG,CAClBI,KADe,CACT,GADS,EAEfE,MAFe,CAER,UAACC,CAAD,EAAIC,CAAJ;AAAA,WAAUA,CAAC,KAAK,CAAhB;AAAA,GAFQ,EAGfC,IAHe,CAGV,GAHU,CAAlB;AAIA,wBAAqCP,OAArC,CAAQQ,MAAR;AAAA,MAAQA,MAAR,gCAAiB,EAAjB;AAAA,wBAAqCR,OAArC,CAAqBS,MAArB;AAAA,MAAqBA,MAArB,gCAA8B,EAA9B;AACA,MAAMC,KAAK,GAAGX,KAAK,CAACE,OAAD,CAAnB;AACA,MAAI,OAAOS,KAAP,KAAiB,SAAjB,IAA8B,CAACA,KAAnC,EAA0C,OAAO,IAAP;;AAE1C,MAAIP,SAAJ,EAAe;AACb,QAAMQ,YAAY,GAAGC,KAAK,CAACC,OAAN,CAAcH,KAAd,CAArB;AACA,QAAMI,WAAW,GAAG,CAACH,YAAD,GAAgBD,KAAK,CAACP,SAAD,CAArB,GAAmC,EAAvD;AACA,QAAIQ,YAAJ,EAAkB,OAAO,mCAAkBR,SAAlB,EAA6BO,KAA7B,EAAoCF,MAApC,EAA4CC,MAA5C,CAAP;AAElB,WAAOK,WAAW,GAAG,UAAGN,MAAH,cAAaM,WAAb,cAA4BL,MAA5B,EAAqCM,IAArC,EAAH,GAAiD,IAAnE;AACD;;AAED,SAAO,UAAGP,MAAH,cAAaE,KAAb,cAAsBD,MAAtB,EAA+BM,IAA/B,EAAP;AACD,CAnBD;;eAqBelB,Y","sourcesContent":["import getValueFromArray from './get-value-from-array';\n\nconst getPropValue = (key, props, options = {}) => {\n const baseKey = key.split('.')[0];\n const nestedKey = key\n .split('.')\n .filter((_, i) => i !== 0)\n .join('.');\n const { prefix = '', suffix = '' } = options;\n const value = props[baseKey];\n if (typeof value !== 'boolean' && !value) return null;\n\n if (nestedKey) {\n const valueIsArray = Array.isArray(value);\n const nestedValue = !valueIsArray ? value[nestedKey] : '';\n if (valueIsArray) return getValueFromArray(nestedKey, value, prefix, suffix);\n\n return nestedValue ? `${prefix} ${nestedValue} ${suffix}`.trim() : null;\n }\n\n return `${prefix} ${value} ${suffix}`.trim();\n};\n\nexport default getPropValue;\n"],"file":"get-prop-value.js"}
1
+ {"version":3,"sources":["../../../../src/components/DataSummary/helpers/get-prop-value.js"],"names":["getPropValue","key","props","options","baseKey","split","nestedKey","filter","_","i","join","prefix","suffix","value","valueIsArray","Array","isArray","nestedValue","trim"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA,IAAMA,YAAY,GAAG,SAAfA,YAAe,CAACC,GAAD,EAAMC,KAAN,EAA8B;AAAA,MAAjBC,OAAiB,uEAAP,EAAO;AACjD,MAAMC,OAAO,GAAGH,GAAG,CAACI,KAAJ,CAAU,GAAV,EAAe,CAAf,CAAhB;AACA,MAAMC,SAAS,GAAGL,GAAG,CAClBI,KADe,CACT,GADS,EAEfE,MAFe,CAER,UAACC,CAAD,EAAIC,CAAJ;AAAA,WAAUA,CAAC,KAAK,CAAhB;AAAA,GAFQ,EAGfC,IAHe,CAGV,GAHU,CAAlB;AAIA,wBAAqCP,OAArC,CAAQQ,MAAR;AAAA,MAAQA,MAAR,gCAAiB,EAAjB;AAAA,wBAAqCR,OAArC,CAAqBS,MAArB;AAAA,MAAqBA,MAArB,gCAA8B,EAA9B;AACA,MAAMC,KAAK,GAAGX,KAAK,CAACE,OAAD,CAAnB;AAEA,MAAI,OAAOS,KAAP,KAAiB,SAAjB,IAA8B,CAACA,KAAnC,EAA0C,OAAO,IAAP;;AAE1C,MAAIP,SAAJ,EAAe;AACb,QAAMQ,YAAY,GAAGC,KAAK,CAACC,OAAN,CAAcH,KAAd,CAArB;AACA,QAAMI,WAAW,GAAG,CAACH,YAAD,GAAgBD,KAAK,CAACP,SAAD,CAArB,GAAmC,EAAvD;AACA,QAAIQ,YAAJ,EAAkB,OAAO,mCAAkBR,SAAlB,EAA6BO,KAA7B,EAAoCF,MAApC,EAA4CC,MAA5C,CAAP;AAClB,WAAOK,WAAW,GAAG,UAAGN,MAAH,cAAaM,WAAb,cAA4BL,MAA5B,EAAqCM,IAArC,EAAH,GAAiD,IAAnE;AACD;;AAED,SAAO,UAAGP,MAAH,cAAaE,KAAb,cAAsBD,MAAtB,EAA+BM,IAA/B,EAAP;AACD,CAnBD;;eAqBelB,Y","sourcesContent":["import getValueFromArray from './get-value-from-array';\n\nconst getPropValue = (key, props, options = {}) => {\n const baseKey = key.split('.')[0];\n const nestedKey = key\n .split('.')\n .filter((_, i) => i !== 0)\n .join('.');\n const { prefix = '', suffix = '' } = options;\n const value = props[baseKey];\n\n if (typeof value !== 'boolean' && !value) return null;\n\n if (nestedKey) {\n const valueIsArray = Array.isArray(value);\n const nestedValue = !valueIsArray ? value[nestedKey] : '';\n if (valueIsArray) return getValueFromArray(nestedKey, value, prefix, suffix);\n return nestedValue ? `${prefix} ${nestedValue} ${suffix}`.trim() : null;\n }\n\n return `${prefix} ${value} ${suffix}`.trim();\n};\n\nexport default getPropValue;\n"],"file":"get-prop-value.js"}
@@ -31,6 +31,12 @@ Object.defineProperty(exports, "stripSummaryPropsContent", {
31
31
  return _stripSummaryPropsContent["default"];
32
32
  }
33
33
  });
34
+ Object.defineProperty(exports, "buildLoopPropsContent", {
35
+ enumerable: true,
36
+ get: function get() {
37
+ return _buildLoopPropsContent["default"];
38
+ }
39
+ });
34
40
 
35
41
  var _getDataSummaryQuery = _interopRequireDefault(require("./get-data-summary-query"));
36
42
 
@@ -39,4 +45,6 @@ var _buildPropsToDisplayWithContent = _interopRequireDefault(require("./build-pr
39
45
  var _getLinkToPublishedContent = _interopRequireDefault(require("./get-link-to-published-content"));
40
46
 
41
47
  var _stripSummaryPropsContent = _interopRequireDefault(require("./strip-summary-props-content"));
48
+
49
+ var _buildLoopPropsContent = _interopRequireDefault(require("./build-loop-props-content"));
42
50
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/DataSummary/helpers/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA","sourcesContent":["import getDataSummaryQuery from './get-data-summary-query';\nimport buildPropsToDisplayWithContent from './build-props-to-display-with-content';\nimport getLinkToPublishedContent from './get-link-to-published-content';\nimport stripSummaryPropsContent from './strip-summary-props-content';\n\nexport {\n getDataSummaryQuery,\n buildPropsToDisplayWithContent,\n getLinkToPublishedContent,\n stripSummaryPropsContent\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/components/DataSummary/helpers/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA","sourcesContent":["import getDataSummaryQuery from './get-data-summary-query';\nimport buildPropsToDisplayWithContent from './build-props-to-display-with-content';\nimport getLinkToPublishedContent from './get-link-to-published-content';\nimport stripSummaryPropsContent from './strip-summary-props-content';\nimport buildLoopPropsContent from './build-loop-props-content';\n\nexport {\n getDataSummaryQuery,\n buildPropsToDisplayWithContent,\n getLinkToPublishedContent,\n stripSummaryPropsContent,\n buildLoopPropsContent\n};\n"],"file":"index.js"}
@@ -1,5 +1,5 @@
1
1
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
2
- const _excluded = ["entity", "dataRecordId", "propsToDisplay", "type", "useSelectedEntity", "elementTitle", "modifier", "headingStyle"];
2
+ const _excluded = ["entity", "dataRecordId", "propsToDisplay", "type", "useSelectedEntity", "elementTitle", "modifier", "headingStyle", "loopProperties", "loopLimit"];
3
3
  import React, { useContext } from 'react';
4
4
  import { useQuery } from '@apollo/react-hooks';
5
5
  import PropTypes from 'prop-types';
@@ -18,7 +18,9 @@ const DataSummaryFactory = _ref => {
18
18
  useSelectedEntity,
19
19
  elementTitle,
20
20
  modifier,
21
- headingStyle
21
+ headingStyle,
22
+ loopProperties,
23
+ loopLimit
22
24
  } = _ref,
23
25
  dataSummaryProps = _objectWithoutProperties(_ref, _excluded);
24
26
 
@@ -38,6 +40,7 @@ const DataSummaryFactory = _ref => {
38
40
  if (loading) return '';
39
41
  if (error) return error.message;
40
42
  if (!data) return null;
43
+ if (!propsToDisplay || !propsToDisplay.length) return null;
41
44
  const propsToDisplayValues = checkPropsToUse(propsToDisplay);
42
45
  const propsQueryString = buildPropsQuery(data, propsToDisplayValues);
43
46
  const dataSummaryQuery = getDataSummaryQuery(data, isPreview, propsQueryString);
@@ -45,6 +48,8 @@ const DataSummaryFactory = _ref => {
45
48
  return /*#__PURE__*/React.createElement(DataSummaryRender, {
46
49
  recordId: recordId,
47
50
  propsToDisplay: propsToDisplay,
51
+ loopProperties: loopProperties,
52
+ loopLimit: loopLimit,
48
53
  query: dataSummaryQuery,
49
54
  type: type,
50
55
  elementTitle: elementTitle,
@@ -61,7 +66,9 @@ DataSummaryFactory.propTypes = {
61
66
  useSelectedEntity: PropTypes.bool,
62
67
  elementTitle: PropTypes.string,
63
68
  modifier: PropTypes.string,
64
- headingStyle: PropTypes.string
69
+ headingStyle: PropTypes.string,
70
+ loopProperties: PropTypes.array,
71
+ loopLimit: PropTypes.number
65
72
  };
66
73
  DataSummaryFactory.defaultProps = {
67
74
  type: 'text',
@@ -71,7 +78,9 @@ DataSummaryFactory.defaultProps = {
71
78
  entity: '',
72
79
  elementTitle: '',
73
80
  modifier: '',
74
- headingStyle: 'h2'
81
+ headingStyle: 'h2',
82
+ loopProperties: [],
83
+ loopLimit: 0
75
84
  };
76
85
  export default DataSummaryFactory;
77
86
  //# sourceMappingURL=DataSummaryFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/DataSummary/DataSummaryFactory.js"],"names":["React","useContext","useQuery","PropTypes","MainContext","getSingleEntitySchema","buildPropsQuery","checkPropsToUse","getDataSummaryQuery","DataSummaryRender","DataSummaryFactory","entity","dataRecordId","propsToDisplay","type","useSelectedEntity","elementTitle","modifier","headingStyle","dataSummaryProps","entityForQuery","parent","itemEntity","data","error","loading","variables","id","isPreview","message","propsToDisplayValues","propsQueryString","dataSummaryQuery","recordId","itemId","propTypes","string","array","bool","defaultProps"],"mappings":"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","sourcesContent":["import React, { useContext } from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport PropTypes from 'prop-types';\nimport { MainContext } from '@blaze-cms/nextjs-components';\nimport { getSingleEntitySchema } from '../../application/query';\nimport { buildPropsQuery, checkPropsToUse } from '../../helpers';\nimport { getDataSummaryQuery } from './helpers';\nimport DataSummaryRender from './DataSummaryRender';\n\nconst DataSummaryFactory = ({\n entity,\n dataRecordId,\n propsToDisplay,\n type,\n useSelectedEntity,\n elementTitle,\n modifier,\n headingStyle,\n ...dataSummaryProps\n}) => {\n const entityForQuery = useSelectedEntity ? entity : dataSummaryProps.parent.itemEntity;\n const { data, error, loading } = useQuery(getSingleEntitySchema, {\n variables: { id: entityForQuery }\n });\n const { isPreview } = useContext(MainContext);\n\n if (loading) return '';\n if (error) return error.message;\n if (!data) return null;\n\n const propsToDisplayValues = checkPropsToUse(propsToDisplay);\n const propsQueryString = buildPropsQuery(data, propsToDisplayValues);\n const dataSummaryQuery = getDataSummaryQuery(data, isPreview, propsQueryString);\n const recordId = dataRecordId[0] || dataSummaryProps.parent.itemId;\n\n return (\n <DataSummaryRender\n recordId={recordId}\n propsToDisplay={propsToDisplay}\n query={dataSummaryQuery}\n type={type}\n elementTitle={elementTitle}\n modifier={modifier}\n htmlTag={headingStyle}\n />\n );\n};\n\nDataSummaryFactory.propTypes = {\n type: PropTypes.string,\n dataRecordId: PropTypes.array,\n propsToDisplay: PropTypes.array,\n entity: PropTypes.string,\n useSelectedEntity: PropTypes.bool,\n elementTitle: PropTypes.string,\n modifier: PropTypes.string,\n headingStyle: PropTypes.string\n};\n\nDataSummaryFactory.defaultProps = {\n type: 'text',\n dataRecordId: [],\n propsToDisplay: [],\n useSelectedEntity: true,\n entity: '',\n elementTitle: '',\n modifier: '',\n headingStyle: 'h2'\n};\n\nexport default DataSummaryFactory;\n"],"file":"DataSummaryFactory.js"}
1
+ {"version":3,"sources":["../../../src/components/DataSummary/DataSummaryFactory.js"],"names":["React","useContext","useQuery","PropTypes","MainContext","getSingleEntitySchema","buildPropsQuery","checkPropsToUse","getDataSummaryQuery","DataSummaryRender","DataSummaryFactory","entity","dataRecordId","propsToDisplay","type","useSelectedEntity","elementTitle","modifier","headingStyle","loopProperties","loopLimit","dataSummaryProps","entityForQuery","parent","itemEntity","data","error","loading","variables","id","isPreview","message","length","propsToDisplayValues","propsQueryString","dataSummaryQuery","recordId","itemId","propTypes","string","array","bool","number","defaultProps"],"mappings":"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","sourcesContent":["import React, { useContext } from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport PropTypes from 'prop-types';\nimport { MainContext } from '@blaze-cms/nextjs-components';\nimport { getSingleEntitySchema } from '../../application/query';\nimport { buildPropsQuery, checkPropsToUse } from '../../helpers';\nimport { getDataSummaryQuery } from './helpers';\nimport DataSummaryRender from './DataSummaryRender';\n\nconst DataSummaryFactory = ({\n entity,\n dataRecordId,\n propsToDisplay,\n type,\n useSelectedEntity,\n elementTitle,\n modifier,\n headingStyle,\n loopProperties,\n loopLimit,\n ...dataSummaryProps\n}) => {\n const entityForQuery = useSelectedEntity ? entity : dataSummaryProps.parent.itemEntity;\n const { data, error, loading } = useQuery(getSingleEntitySchema, {\n variables: { id: entityForQuery }\n });\n const { isPreview } = useContext(MainContext);\n\n if (loading) return '';\n if (error) return error.message;\n if (!data) return null;\n if (!propsToDisplay || !propsToDisplay.length) return null;\n const propsToDisplayValues = checkPropsToUse(propsToDisplay);\n const propsQueryString = buildPropsQuery(data, propsToDisplayValues);\n const dataSummaryQuery = getDataSummaryQuery(data, isPreview, propsQueryString);\n const recordId = dataRecordId[0] || dataSummaryProps.parent.itemId;\n\n return (\n <DataSummaryRender\n recordId={recordId}\n propsToDisplay={propsToDisplay}\n loopProperties={loopProperties}\n loopLimit={loopLimit}\n query={dataSummaryQuery}\n type={type}\n elementTitle={elementTitle}\n modifier={modifier}\n htmlTag={headingStyle}\n />\n );\n};\n\nDataSummaryFactory.propTypes = {\n type: PropTypes.string,\n dataRecordId: PropTypes.array,\n propsToDisplay: PropTypes.array,\n entity: PropTypes.string,\n useSelectedEntity: PropTypes.bool,\n elementTitle: PropTypes.string,\n modifier: PropTypes.string,\n headingStyle: PropTypes.string,\n loopProperties: PropTypes.array,\n loopLimit: PropTypes.number\n};\n\nDataSummaryFactory.defaultProps = {\n type: 'text',\n dataRecordId: [],\n propsToDisplay: [],\n useSelectedEntity: true,\n entity: '',\n elementTitle: '',\n modifier: '',\n headingStyle: 'h2',\n loopProperties: [],\n loopLimit: 0\n};\n\nexport default DataSummaryFactory;\n"],"file":"DataSummaryFactory.js"}
@@ -1,11 +1,11 @@
1
1
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
2
- const _excluded = ["type", "htmlTag", "recordId", "query", "propsToDisplay", "elementTitle"];
2
+ const _excluded = ["type", "htmlTag", "recordId", "query", "propsToDisplay", "elementTitle", "loopProperties", "loopLimit"];
3
3
  import React from 'react';
4
4
  import { useQuery } from '@apollo/react-hooks';
5
5
  import PropTypes from 'prop-types';
6
6
  import { summaryComponents } from './DataSummaryTypes';
7
7
  import { getClassModifiers, getPropsToDisplayModifiers } from '../../utils';
8
- import { buildPropsToDisplayWithContent, stripSummaryPropsContent } from './helpers';
8
+ import { buildPropsToDisplayWithContent, stripSummaryPropsContent, buildLoopPropsContent } from './helpers';
9
9
 
10
10
  const DataSummaryRender = _ref => {
11
11
  let {
@@ -14,7 +14,9 @@ const DataSummaryRender = _ref => {
14
14
  recordId,
15
15
  query,
16
16
  propsToDisplay,
17
- elementTitle
17
+ elementTitle,
18
+ loopProperties,
19
+ loopLimit
18
20
  } = _ref,
19
21
  otherProps = _objectWithoutProperties(_ref, _excluded);
20
22
 
@@ -33,8 +35,9 @@ const DataSummaryRender = _ref => {
33
35
  const {
34
36
  entityData
35
37
  } = data;
38
+ const shouldLoop = loopProperties && loopProperties.length;
36
39
  const modifier = getClassModifiers('list', otherProps);
37
- const summaryPropsWithContent = buildPropsToDisplayWithContent(entityData, propsToDisplay);
40
+ const summaryPropsWithContent = shouldLoop ? buildLoopPropsContent(loopProperties, propsToDisplay, loopLimit, entityData) : buildPropsToDisplayWithContent(entityData, propsToDisplay);
38
41
  const propsToDisplayModifiers = getPropsToDisplayModifiers(propsToDisplay);
39
42
  const summaryPropsWithCleanContent = stripSummaryPropsContent(propsToDisplay, summaryPropsWithContent);
40
43
  const SummaryComponent = summaryComponents[type];
@@ -54,7 +57,9 @@ DataSummaryRender.propTypes = {
54
57
  recordId: PropTypes.string,
55
58
  propsToDisplay: PropTypes.array,
56
59
  elementTitle: PropTypes.string,
57
- htmlTag: PropTypes.string
60
+ htmlTag: PropTypes.string,
61
+ loopProperties: PropTypes.array,
62
+ loopLimit: PropTypes.number
58
63
  };
59
64
  DataSummaryRender.defaultProps = {
60
65
  type: 'text',
@@ -62,7 +67,9 @@ DataSummaryRender.defaultProps = {
62
67
  recordId: '',
63
68
  propsToDisplay: [],
64
69
  elementTitle: '',
65
- htmlTag: 'h2'
70
+ htmlTag: 'h2',
71
+ loopProperties: [],
72
+ loopLimit: 0
66
73
  };
67
74
  export default DataSummaryRender;
68
75
  //# sourceMappingURL=DataSummaryRender.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/DataSummary/DataSummaryRender.js"],"names":["React","useQuery","PropTypes","summaryComponents","getClassModifiers","getPropsToDisplayModifiers","buildPropsToDisplayWithContent","stripSummaryPropsContent","DataSummaryRender","type","htmlTag","recordId","query","propsToDisplay","elementTitle","otherProps","data","error","loading","variables","id","message","entityData","modifier","summaryPropsWithContent","propsToDisplayModifiers","summaryPropsWithCleanContent","SummaryComponent","length","propTypes","string","object","array","defaultProps"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,QAAT,QAAyB,qBAAzB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,iBAAT,QAAkC,oBAAlC;AACA,SAASC,iBAAT,EAA4BC,0BAA5B,QAA8D,aAA9D;AACA,SAASC,8BAAT,EAAyCC,wBAAzC,QAAyE,WAAzE;;AAEA,MAAMC,iBAAiB,GAAG,QAQpB;AAAA,MARqB;AACzBC,IAAAA,IADyB;AAEzBC,IAAAA,OAFyB;AAGzBC,IAAAA,QAHyB;AAIzBC,IAAAA,KAJyB;AAKzBC,IAAAA,cALyB;AAMzBC,IAAAA;AANyB,GAQrB;AAAA,MADDC,UACC;;AACJ,QAAM;AAAEC,IAAAA,IAAF;AAAQC,IAAAA,KAAR;AAAeC,IAAAA;AAAf,MAA2BjB,QAAQ,CAACW,KAAD,EAAQ;AAC/CO,IAAAA,SAAS,EAAE;AAAEC,MAAAA,EAAE,EAAET;AAAN;AADoC,GAAR,CAAzC;AAIA,MAAIO,OAAJ,EAAa,OAAO,EAAP;AACb,MAAID,KAAJ,EAAW,OAAOA,KAAK,CAACI,OAAb;AACX,MAAI,CAACL,IAAD,IAAS,CAACA,IAAI,CAACM,UAAnB,EAA+B,OAAO,IAAP;AAC/B,QAAM;AAAEA,IAAAA;AAAF,MAAiBN,IAAvB;AACA,QAAMO,QAAQ,GAAGnB,iBAAiB,CAAC,MAAD,EAASW,UAAT,CAAlC;AACA,QAAMS,uBAAuB,GAAGlB,8BAA8B,CAACgB,UAAD,EAAaT,cAAb,CAA9D;AACA,QAAMY,uBAAuB,GAAGpB,0BAA0B,CAACQ,cAAD,CAA1D;AACA,QAAMa,4BAA4B,GAAGnB,wBAAwB,CAC3DM,cAD2D,EAE3DW,uBAF2D,CAA7D;AAIA,QAAMG,gBAAgB,GAAGxB,iBAAiB,CAACM,IAAD,CAA1C;AACA,MAAI,CAACiB,4BAA4B,CAACE,MAAlC,EAA0C,OAAO,IAAP;AAE1C,sBACE,oBAAC,gBAAD;AACE,IAAA,QAAQ,EAAEL,QADZ;AAEE,IAAA,YAAY,EAAET,YAFhB;AAGE,IAAA,uBAAuB,EAAEY,4BAH3B;AAIE,IAAA,uBAAuB,EAAED,uBAJ3B;AAKE,IAAA,OAAO,EAAEf;AALX,IADF;AASD,CApCD;;AAsCAF,iBAAiB,CAACqB,SAAlB,GAA8B;AAC5BpB,EAAAA,IAAI,EAAEP,SAAS,CAAC4B,MADY;AAE5BlB,EAAAA,KAAK,EAAEV,SAAS,CAAC6B,MAFW;AAG5BpB,EAAAA,QAAQ,EAAET,SAAS,CAAC4B,MAHQ;AAI5BjB,EAAAA,cAAc,EAAEX,SAAS,CAAC8B,KAJE;AAK5BlB,EAAAA,YAAY,EAAEZ,SAAS,CAAC4B,MALI;AAM5BpB,EAAAA,OAAO,EAAER,SAAS,CAAC4B;AANS,CAA9B;AASAtB,iBAAiB,CAACyB,YAAlB,GAAiC;AAC/BxB,EAAAA,IAAI,EAAE,MADyB;AAE/BG,EAAAA,KAAK,EAAE,EAFwB;AAG/BD,EAAAA,QAAQ,EAAE,EAHqB;AAI/BE,EAAAA,cAAc,EAAE,EAJe;AAK/BC,EAAAA,YAAY,EAAE,EALiB;AAM/BJ,EAAAA,OAAO,EAAE;AANsB,CAAjC;AASA,eAAeF,iBAAf","sourcesContent":["import React from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport PropTypes from 'prop-types';\nimport { summaryComponents } from './DataSummaryTypes';\nimport { getClassModifiers, getPropsToDisplayModifiers } from '../../utils';\nimport { buildPropsToDisplayWithContent, stripSummaryPropsContent } from './helpers';\n\nconst DataSummaryRender = ({\n type,\n htmlTag,\n recordId,\n query,\n propsToDisplay,\n elementTitle,\n ...otherProps\n}) => {\n const { data, error, loading } = useQuery(query, {\n variables: { id: recordId }\n });\n\n if (loading) return '';\n if (error) return error.message;\n if (!data || !data.entityData) return null;\n const { entityData } = data;\n const modifier = getClassModifiers('list', otherProps);\n const summaryPropsWithContent = buildPropsToDisplayWithContent(entityData, propsToDisplay);\n const propsToDisplayModifiers = getPropsToDisplayModifiers(propsToDisplay);\n const summaryPropsWithCleanContent = stripSummaryPropsContent(\n propsToDisplay,\n summaryPropsWithContent\n );\n const SummaryComponent = summaryComponents[type];\n if (!summaryPropsWithCleanContent.length) return null;\n\n return (\n <SummaryComponent\n modifier={modifier}\n elementTitle={elementTitle}\n summaryPropsWithContent={summaryPropsWithCleanContent}\n propsToDisplayModifiers={propsToDisplayModifiers}\n htmlTag={htmlTag}\n />\n );\n};\n\nDataSummaryRender.propTypes = {\n type: PropTypes.string,\n query: PropTypes.object,\n recordId: PropTypes.string,\n propsToDisplay: PropTypes.array,\n elementTitle: PropTypes.string,\n htmlTag: PropTypes.string\n};\n\nDataSummaryRender.defaultProps = {\n type: 'text',\n query: {},\n recordId: '',\n propsToDisplay: [],\n elementTitle: '',\n htmlTag: 'h2'\n};\n\nexport default DataSummaryRender;\n"],"file":"DataSummaryRender.js"}
1
+ {"version":3,"sources":["../../../src/components/DataSummary/DataSummaryRender.js"],"names":["React","useQuery","PropTypes","summaryComponents","getClassModifiers","getPropsToDisplayModifiers","buildPropsToDisplayWithContent","stripSummaryPropsContent","buildLoopPropsContent","DataSummaryRender","type","htmlTag","recordId","query","propsToDisplay","elementTitle","loopProperties","loopLimit","otherProps","data","error","loading","variables","id","message","entityData","shouldLoop","length","modifier","summaryPropsWithContent","propsToDisplayModifiers","summaryPropsWithCleanContent","SummaryComponent","propTypes","string","object","array","number","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { useQuery } from '@apollo/react-hooks';\nimport PropTypes from 'prop-types';\nimport { summaryComponents } from './DataSummaryTypes';\nimport { getClassModifiers, getPropsToDisplayModifiers } from '../../utils';\nimport {\n buildPropsToDisplayWithContent,\n stripSummaryPropsContent,\n buildLoopPropsContent\n} from './helpers';\n\nconst DataSummaryRender = ({\n type,\n htmlTag,\n recordId,\n query,\n propsToDisplay,\n elementTitle,\n loopProperties,\n loopLimit,\n ...otherProps\n}) => {\n const { data, error, loading } = useQuery(query, {\n variables: { id: recordId }\n });\n\n if (loading) return '';\n if (error) return error.message;\n if (!data || !data.entityData) return null;\n\n const { entityData } = data;\n const shouldLoop = loopProperties && loopProperties.length;\n const modifier = getClassModifiers('list', otherProps);\n const summaryPropsWithContent = shouldLoop\n ? buildLoopPropsContent(loopProperties, propsToDisplay, loopLimit, entityData)\n : buildPropsToDisplayWithContent(entityData, propsToDisplay);\n\n const propsToDisplayModifiers = getPropsToDisplayModifiers(propsToDisplay);\n const summaryPropsWithCleanContent = stripSummaryPropsContent(\n propsToDisplay,\n summaryPropsWithContent\n );\n const SummaryComponent = summaryComponents[type];\n if (!summaryPropsWithCleanContent.length) return null;\n\n return (\n <SummaryComponent\n modifier={modifier}\n elementTitle={elementTitle}\n summaryPropsWithContent={summaryPropsWithCleanContent}\n propsToDisplayModifiers={propsToDisplayModifiers}\n htmlTag={htmlTag}\n />\n );\n};\n\nDataSummaryRender.propTypes = {\n type: PropTypes.string,\n query: PropTypes.object,\n recordId: PropTypes.string,\n propsToDisplay: PropTypes.array,\n elementTitle: PropTypes.string,\n htmlTag: PropTypes.string,\n loopProperties: PropTypes.array,\n loopLimit: PropTypes.number\n};\n\nDataSummaryRender.defaultProps = {\n type: 'text',\n query: {},\n recordId: '',\n propsToDisplay: [],\n elementTitle: '',\n htmlTag: 'h2',\n loopProperties: [],\n loopLimit: 0\n};\n\nexport default DataSummaryRender;\n"],"file":"DataSummaryRender.js"}
@@ -0,0 +1,63 @@
1
+ import upperFirst from 'lodash.upperfirst';
2
+ import flatten from 'lodash.flatten';
3
+ import getLinkToPublishedContent from './get-link-to-published-content';
4
+ import getLoopPropsLimit from './get-loop-props-limit';
5
+ import getPropValue from './get-prop-value';
6
+
7
+ const getLoopValue = value => {
8
+ const {
9
+ keyField
10
+ } = value;
11
+ return value[keyField];
12
+ };
13
+
14
+ const separateValues = (propsToDisplay, loopProps, data) => {
15
+ const regularValues = {};
16
+ const loopValues = {};
17
+ propsToDisplay.forEach(options => {
18
+ const {
19
+ propertiesToDisplay
20
+ } = options;
21
+ propertiesToDisplay.forEach(prop => {
22
+ const value = getPropValue(prop, data, options);
23
+ const isArrayValue = Array.isArray(value);
24
+ if (!value) return;
25
+ const isLoopableProp = loopProps.includes(prop) && isArrayValue;
26
+
27
+ if (isLoopableProp) {
28
+ loopValues[prop] = value;
29
+ } else {
30
+ regularValues[prop] = value;
31
+ }
32
+ });
33
+ });
34
+ return [regularValues, loopValues];
35
+ };
36
+
37
+ const buildLoopPropsContent = (loopProps = [], propsToDisplay = [], limit = 0, data = {}) => {
38
+ const loopPropsWithContent = [];
39
+ const [regularValues, loopValues] = separateValues(propsToDisplay, loopProps, data);
40
+ const loopLimit = getLoopPropsLimit(loopValues, limit);
41
+
42
+ for (let i = 0; i < loopLimit; i += 1) {
43
+ const propsArray = flatten(propsToDisplay.map(options => {
44
+ const {
45
+ propertiesToDisplay,
46
+ label
47
+ } = options;
48
+ return propertiesToDisplay.map(key => {
49
+ const loopValue = loopValues[key];
50
+ const propValue = loopValue ? getLoopValue(loopValue[i]) : regularValues[key];
51
+ if (!propValue) return null;
52
+ const linkToPublishedContent = getLinkToPublishedContent(key, data);
53
+ return [upperFirst(label), propValue, linkToPublishedContent];
54
+ });
55
+ })).filter(Boolean);
56
+ loopPropsWithContent.push(propsArray);
57
+ }
58
+
59
+ return flatten(loopPropsWithContent);
60
+ };
61
+
62
+ export default buildLoopPropsContent;
63
+ //# sourceMappingURL=build-loop-props-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/DataSummary/helpers/build-loop-props-content.js"],"names":["upperFirst","flatten","getLinkToPublishedContent","getLoopPropsLimit","getPropValue","getLoopValue","value","keyField","separateValues","propsToDisplay","loopProps","data","regularValues","loopValues","forEach","options","propertiesToDisplay","prop","isArrayValue","Array","isArray","isLoopableProp","includes","buildLoopPropsContent","limit","loopPropsWithContent","loopLimit","i","propsArray","map","label","key","loopValue","propValue","linkToPublishedContent","filter","Boolean","push"],"mappings":"AAAA,OAAOA,UAAP,MAAuB,mBAAvB;AACA,OAAOC,OAAP,MAAoB,gBAApB;AACA,OAAOC,yBAAP,MAAsC,iCAAtC;AACA,OAAOC,iBAAP,MAA8B,wBAA9B;AACA,OAAOC,YAAP,MAAyB,kBAAzB;;AAEA,MAAMC,YAAY,GAAGC,KAAK,IAAI;AAC5B,QAAM;AAAEC,IAAAA;AAAF,MAAeD,KAArB;AACA,SAAOA,KAAK,CAACC,QAAD,CAAZ;AACD,CAHD;;AAKA,MAAMC,cAAc,GAAG,CAACC,cAAD,EAAiBC,SAAjB,EAA4BC,IAA5B,KAAqC;AAC1D,QAAMC,aAAa,GAAG,EAAtB;AACA,QAAMC,UAAU,GAAG,EAAnB;AAEAJ,EAAAA,cAAc,CAACK,OAAf,CAAuBC,OAAO,IAAI;AAChC,UAAM;AAAEC,MAAAA;AAAF,QAA0BD,OAAhC;AACAC,IAAAA,mBAAmB,CAACF,OAApB,CAA4BG,IAAI,IAAI;AAClC,YAAMX,KAAK,GAAGF,YAAY,CAACa,IAAD,EAAON,IAAP,EAAaI,OAAb,CAA1B;AACA,YAAMG,YAAY,GAAGC,KAAK,CAACC,OAAN,CAAcd,KAAd,CAArB;AACA,UAAI,CAACA,KAAL,EAAY;AACZ,YAAMe,cAAc,GAAGX,SAAS,CAACY,QAAV,CAAmBL,IAAnB,KAA4BC,YAAnD;;AAEA,UAAIG,cAAJ,EAAoB;AAClBR,QAAAA,UAAU,CAACI,IAAD,CAAV,GAAmBX,KAAnB;AACD,OAFD,MAEO;AACLM,QAAAA,aAAa,CAACK,IAAD,CAAb,GAAsBX,KAAtB;AACD;AACF,KAXD;AAYD,GAdD;AAeA,SAAO,CAACM,aAAD,EAAgBC,UAAhB,CAAP;AACD,CApBD;;AAsBA,MAAMU,qBAAqB,GAAG,CAACb,SAAS,GAAG,EAAb,EAAiBD,cAAc,GAAG,EAAlC,EAAsCe,KAAK,GAAG,CAA9C,EAAiDb,IAAI,GAAG,EAAxD,KAA+D;AAC3F,QAAMc,oBAAoB,GAAG,EAA7B;AACA,QAAM,CAACb,aAAD,EAAgBC,UAAhB,IAA8BL,cAAc,CAACC,cAAD,EAAiBC,SAAjB,EAA4BC,IAA5B,CAAlD;AAEA,QAAMe,SAAS,GAAGvB,iBAAiB,CAACU,UAAD,EAAaW,KAAb,CAAnC;;AAEA,OAAK,IAAIG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,SAApB,EAA+BC,CAAC,IAAI,CAApC,EAAuC;AACrC,UAAMC,UAAU,GAAG3B,OAAO,CACxBQ,cAAc,CAACoB,GAAf,CAAmBd,OAAO,IAAI;AAC5B,YAAM;AAAEC,QAAAA,mBAAF;AAAuBc,QAAAA;AAAvB,UAAiCf,OAAvC;AACA,aAAOC,mBAAmB,CAACa,GAApB,CAAwBE,GAAG,IAAI;AACpC,cAAMC,SAAS,GAAGnB,UAAU,CAACkB,GAAD,CAA5B;AACA,cAAME,SAAS,GAAGD,SAAS,GAAG3B,YAAY,CAAC2B,SAAS,CAACL,CAAD,CAAV,CAAf,GAAgCf,aAAa,CAACmB,GAAD,CAAxE;AACA,YAAI,CAACE,SAAL,EAAgB,OAAO,IAAP;AAChB,cAAMC,sBAAsB,GAAGhC,yBAAyB,CAAC6B,GAAD,EAAMpB,IAAN,CAAxD;AAEA,eAAO,CAACX,UAAU,CAAC8B,KAAD,CAAX,EAAoBG,SAApB,EAA+BC,sBAA/B,CAAP;AACD,OAPM,CAAP;AAQD,KAVD,CADwB,CAAP,CAYjBC,MAZiB,CAYVC,OAZU,CAAnB;AAaAX,IAAAA,oBAAoB,CAACY,IAArB,CAA0BT,UAA1B;AACD;;AAED,SAAO3B,OAAO,CAACwB,oBAAD,CAAd;AACD,CAxBD;;AA0BA,eAAeF,qBAAf","sourcesContent":["import upperFirst from 'lodash.upperfirst';\nimport flatten from 'lodash.flatten';\nimport getLinkToPublishedContent from './get-link-to-published-content';\nimport getLoopPropsLimit from './get-loop-props-limit';\nimport getPropValue from './get-prop-value';\n\nconst getLoopValue = value => {\n const { keyField } = value;\n return value[keyField];\n};\n\nconst separateValues = (propsToDisplay, loopProps, data) => {\n const regularValues = {};\n const loopValues = {};\n\n propsToDisplay.forEach(options => {\n const { propertiesToDisplay } = options;\n propertiesToDisplay.forEach(prop => {\n const value = getPropValue(prop, data, options);\n const isArrayValue = Array.isArray(value);\n if (!value) return;\n const isLoopableProp = loopProps.includes(prop) && isArrayValue;\n\n if (isLoopableProp) {\n loopValues[prop] = value;\n } else {\n regularValues[prop] = value;\n }\n });\n });\n return [regularValues, loopValues];\n};\n\nconst buildLoopPropsContent = (loopProps = [], propsToDisplay = [], limit = 0, data = {}) => {\n const loopPropsWithContent = [];\n const [regularValues, loopValues] = separateValues(propsToDisplay, loopProps, data);\n\n const loopLimit = getLoopPropsLimit(loopValues, limit);\n\n for (let i = 0; i < loopLimit; i += 1) {\n const propsArray = flatten(\n propsToDisplay.map(options => {\n const { propertiesToDisplay, label } = options;\n return propertiesToDisplay.map(key => {\n const loopValue = loopValues[key];\n const propValue = loopValue ? getLoopValue(loopValue[i]) : regularValues[key];\n if (!propValue) return null;\n const linkToPublishedContent = getLinkToPublishedContent(key, data);\n\n return [upperFirst(label), propValue, linkToPublishedContent];\n });\n })\n ).filter(Boolean);\n loopPropsWithContent.push(propsArray);\n }\n\n return flatten(loopPropsWithContent);\n};\n\nexport default buildLoopPropsContent;\n"],"file":"build-loop-props-content.js"}
@@ -0,0 +1,13 @@
1
+ const getLoopPropsLimit = (values, limit) => {
2
+ let valuesLimit = 1;
3
+ if (!values) return valuesLimit;
4
+ Object.keys(values).forEach(key => {
5
+ const value = values[key];
6
+ if (value && Array.isArray(value) && value.length > valuesLimit) valuesLimit = value.length;
7
+ });
8
+ if (!limit || valuesLimit < limit) return valuesLimit;
9
+ return limit;
10
+ };
11
+
12
+ export default getLoopPropsLimit;
13
+ //# sourceMappingURL=get-loop-props-limit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/DataSummary/helpers/get-loop-props-limit.js"],"names":["getLoopPropsLimit","values","limit","valuesLimit","Object","keys","forEach","key","value","Array","isArray","length"],"mappings":"AAAA,MAAMA,iBAAiB,GAAG,CAACC,MAAD,EAASC,KAAT,KAAmB;AAC3C,MAAIC,WAAW,GAAG,CAAlB;AACA,MAAI,CAACF,MAAL,EAAa,OAAOE,WAAP;AACbC,EAAAA,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4BC,GAAG,IAAI;AACjC,UAAMC,KAAK,GAAGP,MAAM,CAACM,GAAD,CAApB;AACA,QAAIC,KAAK,IAAIC,KAAK,CAACC,OAAN,CAAcF,KAAd,CAAT,IAAiCA,KAAK,CAACG,MAAN,GAAeR,WAApD,EAAiEA,WAAW,GAAGK,KAAK,CAACG,MAApB;AAClE,GAHD;AAIA,MAAI,CAACT,KAAD,IAAUC,WAAW,GAAGD,KAA5B,EAAmC,OAAOC,WAAP;AACnC,SAAOD,KAAP;AACD,CATD;;AAWA,eAAeF,iBAAf","sourcesContent":["const getLoopPropsLimit = (values, limit) => {\n let valuesLimit = 1;\n if (!values) return valuesLimit;\n Object.keys(values).forEach(key => {\n const value = values[key];\n if (value && Array.isArray(value) && value.length > valuesLimit) valuesLimit = value.length;\n });\n if (!limit || valuesLimit < limit) return valuesLimit;\n return limit;\n};\n\nexport default getLoopPropsLimit;\n"],"file":"get-loop-props-limit.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/DataSummary/helpers/get-prop-value.js"],"names":["getValueFromArray","getPropValue","key","props","options","baseKey","split","nestedKey","filter","_","i","join","prefix","suffix","value","valueIsArray","Array","isArray","nestedValue","trim"],"mappings":"AAAA,OAAOA,iBAAP,MAA8B,wBAA9B;;AAEA,MAAMC,YAAY,GAAG,CAACC,GAAD,EAAMC,KAAN,EAAaC,OAAO,GAAG,EAAvB,KAA8B;AACjD,QAAMC,OAAO,GAAGH,GAAG,CAACI,KAAJ,CAAU,GAAV,EAAe,CAAf,CAAhB;AACA,QAAMC,SAAS,GAAGL,GAAG,CAClBI,KADe,CACT,GADS,EAEfE,MAFe,CAER,CAACC,CAAD,EAAIC,CAAJ,KAAUA,CAAC,KAAK,CAFR,EAGfC,IAHe,CAGV,GAHU,CAAlB;AAIA,QAAM;AAAEC,IAAAA,MAAM,GAAG,EAAX;AAAeC,IAAAA,MAAM,GAAG;AAAxB,MAA+BT,OAArC;AACA,QAAMU,KAAK,GAAGX,KAAK,CAACE,OAAD,CAAnB;AACA,MAAI,OAAOS,KAAP,KAAiB,SAAjB,IAA8B,CAACA,KAAnC,EAA0C,OAAO,IAAP;;AAE1C,MAAIP,SAAJ,EAAe;AACb,UAAMQ,YAAY,GAAGC,KAAK,CAACC,OAAN,CAAcH,KAAd,CAArB;AACA,UAAMI,WAAW,GAAG,CAACH,YAAD,GAAgBD,KAAK,CAACP,SAAD,CAArB,GAAmC,EAAvD;AACA,QAAIQ,YAAJ,EAAkB,OAAOf,iBAAiB,CAACO,SAAD,EAAYO,KAAZ,EAAmBF,MAAnB,EAA2BC,MAA3B,CAAxB;AAElB,WAAOK,WAAW,GAAI,GAAEN,MAAO,IAAGM,WAAY,IAAGL,MAAO,EAAnC,CAAqCM,IAArC,EAAH,GAAiD,IAAnE;AACD;;AAED,SAAQ,GAAEP,MAAO,IAAGE,KAAM,IAAGD,MAAO,EAA7B,CAA+BM,IAA/B,EAAP;AACD,CAnBD;;AAqBA,eAAelB,YAAf","sourcesContent":["import getValueFromArray from './get-value-from-array';\n\nconst getPropValue = (key, props, options = {}) => {\n const baseKey = key.split('.')[0];\n const nestedKey = key\n .split('.')\n .filter((_, i) => i !== 0)\n .join('.');\n const { prefix = '', suffix = '' } = options;\n const value = props[baseKey];\n if (typeof value !== 'boolean' && !value) return null;\n\n if (nestedKey) {\n const valueIsArray = Array.isArray(value);\n const nestedValue = !valueIsArray ? value[nestedKey] : '';\n if (valueIsArray) return getValueFromArray(nestedKey, value, prefix, suffix);\n\n return nestedValue ? `${prefix} ${nestedValue} ${suffix}`.trim() : null;\n }\n\n return `${prefix} ${value} ${suffix}`.trim();\n};\n\nexport default getPropValue;\n"],"file":"get-prop-value.js"}
1
+ {"version":3,"sources":["../../../../src/components/DataSummary/helpers/get-prop-value.js"],"names":["getValueFromArray","getPropValue","key","props","options","baseKey","split","nestedKey","filter","_","i","join","prefix","suffix","value","valueIsArray","Array","isArray","nestedValue","trim"],"mappings":"AAAA,OAAOA,iBAAP,MAA8B,wBAA9B;;AAEA,MAAMC,YAAY,GAAG,CAACC,GAAD,EAAMC,KAAN,EAAaC,OAAO,GAAG,EAAvB,KAA8B;AACjD,QAAMC,OAAO,GAAGH,GAAG,CAACI,KAAJ,CAAU,GAAV,EAAe,CAAf,CAAhB;AACA,QAAMC,SAAS,GAAGL,GAAG,CAClBI,KADe,CACT,GADS,EAEfE,MAFe,CAER,CAACC,CAAD,EAAIC,CAAJ,KAAUA,CAAC,KAAK,CAFR,EAGfC,IAHe,CAGV,GAHU,CAAlB;AAIA,QAAM;AAAEC,IAAAA,MAAM,GAAG,EAAX;AAAeC,IAAAA,MAAM,GAAG;AAAxB,MAA+BT,OAArC;AACA,QAAMU,KAAK,GAAGX,KAAK,CAACE,OAAD,CAAnB;AAEA,MAAI,OAAOS,KAAP,KAAiB,SAAjB,IAA8B,CAACA,KAAnC,EAA0C,OAAO,IAAP;;AAE1C,MAAIP,SAAJ,EAAe;AACb,UAAMQ,YAAY,GAAGC,KAAK,CAACC,OAAN,CAAcH,KAAd,CAArB;AACA,UAAMI,WAAW,GAAG,CAACH,YAAD,GAAgBD,KAAK,CAACP,SAAD,CAArB,GAAmC,EAAvD;AACA,QAAIQ,YAAJ,EAAkB,OAAOf,iBAAiB,CAACO,SAAD,EAAYO,KAAZ,EAAmBF,MAAnB,EAA2BC,MAA3B,CAAxB;AAClB,WAAOK,WAAW,GAAI,GAAEN,MAAO,IAAGM,WAAY,IAAGL,MAAO,EAAnC,CAAqCM,IAArC,EAAH,GAAiD,IAAnE;AACD;;AAED,SAAQ,GAAEP,MAAO,IAAGE,KAAM,IAAGD,MAAO,EAA7B,CAA+BM,IAA/B,EAAP;AACD,CAnBD;;AAqBA,eAAelB,YAAf","sourcesContent":["import getValueFromArray from './get-value-from-array';\n\nconst getPropValue = (key, props, options = {}) => {\n const baseKey = key.split('.')[0];\n const nestedKey = key\n .split('.')\n .filter((_, i) => i !== 0)\n .join('.');\n const { prefix = '', suffix = '' } = options;\n const value = props[baseKey];\n\n if (typeof value !== 'boolean' && !value) return null;\n\n if (nestedKey) {\n const valueIsArray = Array.isArray(value);\n const nestedValue = !valueIsArray ? value[nestedKey] : '';\n if (valueIsArray) return getValueFromArray(nestedKey, value, prefix, suffix);\n return nestedValue ? `${prefix} ${nestedValue} ${suffix}`.trim() : null;\n }\n\n return `${prefix} ${value} ${suffix}`.trim();\n};\n\nexport default getPropValue;\n"],"file":"get-prop-value.js"}
@@ -2,5 +2,6 @@ import getDataSummaryQuery from './get-data-summary-query';
2
2
  import buildPropsToDisplayWithContent from './build-props-to-display-with-content';
3
3
  import getLinkToPublishedContent from './get-link-to-published-content';
4
4
  import stripSummaryPropsContent from './strip-summary-props-content';
5
- export { getDataSummaryQuery, buildPropsToDisplayWithContent, getLinkToPublishedContent, stripSummaryPropsContent };
5
+ import buildLoopPropsContent from './build-loop-props-content';
6
+ export { getDataSummaryQuery, buildPropsToDisplayWithContent, getLinkToPublishedContent, stripSummaryPropsContent, buildLoopPropsContent };
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/DataSummary/helpers/index.js"],"names":["getDataSummaryQuery","buildPropsToDisplayWithContent","getLinkToPublishedContent","stripSummaryPropsContent"],"mappings":"AAAA,OAAOA,mBAAP,MAAgC,0BAAhC;AACA,OAAOC,8BAAP,MAA2C,uCAA3C;AACA,OAAOC,yBAAP,MAAsC,iCAAtC;AACA,OAAOC,wBAAP,MAAqC,+BAArC;AAEA,SACEH,mBADF,EAEEC,8BAFF,EAGEC,yBAHF,EAIEC,wBAJF","sourcesContent":["import getDataSummaryQuery from './get-data-summary-query';\nimport buildPropsToDisplayWithContent from './build-props-to-display-with-content';\nimport getLinkToPublishedContent from './get-link-to-published-content';\nimport stripSummaryPropsContent from './strip-summary-props-content';\n\nexport {\n getDataSummaryQuery,\n buildPropsToDisplayWithContent,\n getLinkToPublishedContent,\n stripSummaryPropsContent\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/components/DataSummary/helpers/index.js"],"names":["getDataSummaryQuery","buildPropsToDisplayWithContent","getLinkToPublishedContent","stripSummaryPropsContent","buildLoopPropsContent"],"mappings":"AAAA,OAAOA,mBAAP,MAAgC,0BAAhC;AACA,OAAOC,8BAAP,MAA2C,uCAA3C;AACA,OAAOC,yBAAP,MAAsC,iCAAtC;AACA,OAAOC,wBAAP,MAAqC,+BAArC;AACA,OAAOC,qBAAP,MAAkC,4BAAlC;AAEA,SACEJ,mBADF,EAEEC,8BAFF,EAGEC,yBAHF,EAIEC,wBAJF,EAKEC,qBALF","sourcesContent":["import getDataSummaryQuery from './get-data-summary-query';\nimport buildPropsToDisplayWithContent from './build-props-to-display-with-content';\nimport getLinkToPublishedContent from './get-link-to-published-content';\nimport stripSummaryPropsContent from './strip-summary-props-content';\nimport buildLoopPropsContent from './build-loop-props-content';\n\nexport {\n getDataSummaryQuery,\n buildPropsToDisplayWithContent,\n getLinkToPublishedContent,\n stripSummaryPropsContent,\n buildLoopPropsContent\n};\n"],"file":"index.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaze-cms/react-page-builder",
3
- "version": "0.106.2",
3
+ "version": "0.107.0-alpha.0",
4
4
  "description": "Blaze react page builder",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-es/index.js",
@@ -88,5 +88,5 @@
88
88
  "lib/*",
89
89
  "lib-es/*"
90
90
  ],
91
- "gitHead": "af20502aa0b782866dc654da5fd941597e496666"
91
+ "gitHead": "fb86622f935fc0cbf63381aec468ed0dd31cca03"
92
92
  }
@@ -16,6 +16,8 @@ const DataSummaryFactory = ({
16
16
  elementTitle,
17
17
  modifier,
18
18
  headingStyle,
19
+ loopProperties,
20
+ loopLimit,
19
21
  ...dataSummaryProps
20
22
  }) => {
21
23
  const entityForQuery = useSelectedEntity ? entity : dataSummaryProps.parent.itemEntity;
@@ -27,7 +29,7 @@ const DataSummaryFactory = ({
27
29
  if (loading) return '';
28
30
  if (error) return error.message;
29
31
  if (!data) return null;
30
-
32
+ if (!propsToDisplay || !propsToDisplay.length) return null;
31
33
  const propsToDisplayValues = checkPropsToUse(propsToDisplay);
32
34
  const propsQueryString = buildPropsQuery(data, propsToDisplayValues);
33
35
  const dataSummaryQuery = getDataSummaryQuery(data, isPreview, propsQueryString);
@@ -37,6 +39,8 @@ const DataSummaryFactory = ({
37
39
  <DataSummaryRender
38
40
  recordId={recordId}
39
41
  propsToDisplay={propsToDisplay}
42
+ loopProperties={loopProperties}
43
+ loopLimit={loopLimit}
40
44
  query={dataSummaryQuery}
41
45
  type={type}
42
46
  elementTitle={elementTitle}
@@ -54,7 +58,9 @@ DataSummaryFactory.propTypes = {
54
58
  useSelectedEntity: PropTypes.bool,
55
59
  elementTitle: PropTypes.string,
56
60
  modifier: PropTypes.string,
57
- headingStyle: PropTypes.string
61
+ headingStyle: PropTypes.string,
62
+ loopProperties: PropTypes.array,
63
+ loopLimit: PropTypes.number
58
64
  };
59
65
 
60
66
  DataSummaryFactory.defaultProps = {
@@ -65,7 +71,9 @@ DataSummaryFactory.defaultProps = {
65
71
  entity: '',
66
72
  elementTitle: '',
67
73
  modifier: '',
68
- headingStyle: 'h2'
74
+ headingStyle: 'h2',
75
+ loopProperties: [],
76
+ loopLimit: 0
69
77
  };
70
78
 
71
79
  export default DataSummaryFactory;
@@ -3,7 +3,11 @@ import { useQuery } from '@apollo/react-hooks';
3
3
  import PropTypes from 'prop-types';
4
4
  import { summaryComponents } from './DataSummaryTypes';
5
5
  import { getClassModifiers, getPropsToDisplayModifiers } from '../../utils';
6
- import { buildPropsToDisplayWithContent, stripSummaryPropsContent } from './helpers';
6
+ import {
7
+ buildPropsToDisplayWithContent,
8
+ stripSummaryPropsContent,
9
+ buildLoopPropsContent
10
+ } from './helpers';
7
11
 
8
12
  const DataSummaryRender = ({
9
13
  type,
@@ -12,6 +16,8 @@ const DataSummaryRender = ({
12
16
  query,
13
17
  propsToDisplay,
14
18
  elementTitle,
19
+ loopProperties,
20
+ loopLimit,
15
21
  ...otherProps
16
22
  }) => {
17
23
  const { data, error, loading } = useQuery(query, {
@@ -21,9 +27,14 @@ const DataSummaryRender = ({
21
27
  if (loading) return '';
22
28
  if (error) return error.message;
23
29
  if (!data || !data.entityData) return null;
30
+
24
31
  const { entityData } = data;
32
+ const shouldLoop = loopProperties && loopProperties.length;
25
33
  const modifier = getClassModifiers('list', otherProps);
26
- const summaryPropsWithContent = buildPropsToDisplayWithContent(entityData, propsToDisplay);
34
+ const summaryPropsWithContent = shouldLoop
35
+ ? buildLoopPropsContent(loopProperties, propsToDisplay, loopLimit, entityData)
36
+ : buildPropsToDisplayWithContent(entityData, propsToDisplay);
37
+
27
38
  const propsToDisplayModifiers = getPropsToDisplayModifiers(propsToDisplay);
28
39
  const summaryPropsWithCleanContent = stripSummaryPropsContent(
29
40
  propsToDisplay,
@@ -49,7 +60,9 @@ DataSummaryRender.propTypes = {
49
60
  recordId: PropTypes.string,
50
61
  propsToDisplay: PropTypes.array,
51
62
  elementTitle: PropTypes.string,
52
- htmlTag: PropTypes.string
63
+ htmlTag: PropTypes.string,
64
+ loopProperties: PropTypes.array,
65
+ loopLimit: PropTypes.number
53
66
  };
54
67
 
55
68
  DataSummaryRender.defaultProps = {
@@ -58,7 +71,9 @@ DataSummaryRender.defaultProps = {
58
71
  recordId: '',
59
72
  propsToDisplay: [],
60
73
  elementTitle: '',
61
- htmlTag: 'h2'
74
+ htmlTag: 'h2',
75
+ loopProperties: [],
76
+ loopLimit: 0
62
77
  };
63
78
 
64
79
  export default DataSummaryRender;
@@ -0,0 +1,60 @@
1
+ import upperFirst from 'lodash.upperfirst';
2
+ import flatten from 'lodash.flatten';
3
+ import getLinkToPublishedContent from './get-link-to-published-content';
4
+ import getLoopPropsLimit from './get-loop-props-limit';
5
+ import getPropValue from './get-prop-value';
6
+
7
+ const getLoopValue = value => {
8
+ const { keyField } = value;
9
+ return value[keyField];
10
+ };
11
+
12
+ const separateValues = (propsToDisplay, loopProps, data) => {
13
+ const regularValues = {};
14
+ const loopValues = {};
15
+
16
+ propsToDisplay.forEach(options => {
17
+ const { propertiesToDisplay } = options;
18
+ propertiesToDisplay.forEach(prop => {
19
+ const value = getPropValue(prop, data, options);
20
+ const isArrayValue = Array.isArray(value);
21
+ if (!value) return;
22
+ const isLoopableProp = loopProps.includes(prop) && isArrayValue;
23
+
24
+ if (isLoopableProp) {
25
+ loopValues[prop] = value;
26
+ } else {
27
+ regularValues[prop] = value;
28
+ }
29
+ });
30
+ });
31
+ return [regularValues, loopValues];
32
+ };
33
+
34
+ const buildLoopPropsContent = (loopProps = [], propsToDisplay = [], limit = 0, data = {}) => {
35
+ const loopPropsWithContent = [];
36
+ const [regularValues, loopValues] = separateValues(propsToDisplay, loopProps, data);
37
+
38
+ const loopLimit = getLoopPropsLimit(loopValues, limit);
39
+
40
+ for (let i = 0; i < loopLimit; i += 1) {
41
+ const propsArray = flatten(
42
+ propsToDisplay.map(options => {
43
+ const { propertiesToDisplay, label } = options;
44
+ return propertiesToDisplay.map(key => {
45
+ const loopValue = loopValues[key];
46
+ const propValue = loopValue ? getLoopValue(loopValue[i]) : regularValues[key];
47
+ if (!propValue) return null;
48
+ const linkToPublishedContent = getLinkToPublishedContent(key, data);
49
+
50
+ return [upperFirst(label), propValue, linkToPublishedContent];
51
+ });
52
+ })
53
+ ).filter(Boolean);
54
+ loopPropsWithContent.push(propsArray);
55
+ }
56
+
57
+ return flatten(loopPropsWithContent);
58
+ };
59
+
60
+ export default buildLoopPropsContent;
@@ -0,0 +1,12 @@
1
+ const getLoopPropsLimit = (values, limit) => {
2
+ let valuesLimit = 1;
3
+ if (!values) return valuesLimit;
4
+ Object.keys(values).forEach(key => {
5
+ const value = values[key];
6
+ if (value && Array.isArray(value) && value.length > valuesLimit) valuesLimit = value.length;
7
+ });
8
+ if (!limit || valuesLimit < limit) return valuesLimit;
9
+ return limit;
10
+ };
11
+
12
+ export default getLoopPropsLimit;
@@ -8,13 +8,13 @@ const getPropValue = (key, props, options = {}) => {
8
8
  .join('.');
9
9
  const { prefix = '', suffix = '' } = options;
10
10
  const value = props[baseKey];
11
+
11
12
  if (typeof value !== 'boolean' && !value) return null;
12
13
 
13
14
  if (nestedKey) {
14
15
  const valueIsArray = Array.isArray(value);
15
16
  const nestedValue = !valueIsArray ? value[nestedKey] : '';
16
17
  if (valueIsArray) return getValueFromArray(nestedKey, value, prefix, suffix);
17
-
18
18
  return nestedValue ? `${prefix} ${nestedValue} ${suffix}`.trim() : null;
19
19
  }
20
20
 
@@ -2,10 +2,12 @@ import getDataSummaryQuery from './get-data-summary-query';
2
2
  import buildPropsToDisplayWithContent from './build-props-to-display-with-content';
3
3
  import getLinkToPublishedContent from './get-link-to-published-content';
4
4
  import stripSummaryPropsContent from './strip-summary-props-content';
5
+ import buildLoopPropsContent from './build-loop-props-content';
5
6
 
6
7
  export {
7
8
  getDataSummaryQuery,
8
9
  buildPropsToDisplayWithContent,
9
10
  getLinkToPublishedContent,
10
- stripSummaryPropsContent
11
+ stripSummaryPropsContent,
12
+ buildLoopPropsContent
11
13
  };
@@ -0,0 +1,60 @@
1
+ import '@testing-library/jest-dom/extend-expect';
2
+ import { buildLoopPropsContent } from '../../../../../../src/components/DataSummary/helpers';
3
+ import { mockedLoopProps, mockedPropsToDisplay, mockedData, mockedResults } from './mocks';
4
+
5
+ describe('buildLoopPropsContent helper function', () => {
6
+ const noParamsPassed = buildLoopPropsContent();
7
+ const noValuesPassed = buildLoopPropsContent([], [], 0, {});
8
+ const noDataPassed = buildLoopPropsContent(mockedLoopProps, mockedPropsToDisplay, 0, {});
9
+ const withNoLoopValues = buildLoopPropsContent([], mockedPropsToDisplay, 0, mockedData[0]);
10
+ const withNoLoopableValues = buildLoopPropsContent(
11
+ mockedLoopProps,
12
+ mockedPropsToDisplay,
13
+ 0,
14
+ mockedData[1]
15
+ );
16
+ const withLoopableValues = buildLoopPropsContent(
17
+ mockedLoopProps,
18
+ mockedPropsToDisplay,
19
+ 0,
20
+ mockedData[0]
21
+ );
22
+ const withUnreachableLimit = buildLoopPropsContent(
23
+ mockedLoopProps,
24
+ mockedPropsToDisplay,
25
+ 12,
26
+ mockedData[0]
27
+ );
28
+ const withLimit = buildLoopPropsContent(mockedLoopProps, mockedPropsToDisplay, 2, mockedData[0]);
29
+
30
+ it('should always return an array', () => {
31
+ expect(Array.isArray(noParamsPassed)).toBeTruthy();
32
+ expect(Array.isArray(noValuesPassed)).toBeTruthy();
33
+ expect(Array.isArray(noDataPassed)).toBeTruthy();
34
+ expect(Array.isArray(withNoLoopValues)).toBeTruthy();
35
+ expect(Array.isArray(withNoLoopableValues)).toBeTruthy();
36
+ });
37
+
38
+ it('should return an empty array if no propsToDisplay or matching values are found', () => {
39
+ expect(noParamsPassed).toEqual([]);
40
+ expect(noValuesPassed).toEqual([]);
41
+ expect(noDataPassed).toEqual([]);
42
+ });
43
+
44
+ it('should return regular dataSummary content if no loopable values are found', () => {
45
+ expect(withNoLoopValues).toEqual(mockedResults[0]);
46
+ expect(withNoLoopableValues).toEqual(mockedResults[1]);
47
+ });
48
+
49
+ it('should return looped data summary if loopable values are found', () => {
50
+ expect(withLoopableValues).toEqual(mockedResults[2]);
51
+ });
52
+
53
+ it('should return maxed looped data summary if limit is higher than loopable props', () => {
54
+ expect(withUnreachableLimit).toEqual(mockedResults[2]);
55
+ });
56
+
57
+ it('should return looped data based on limit if is reachable', () => {
58
+ expect(withLimit).toEqual(mockedResults[3]);
59
+ });
60
+ });
@@ -1,5 +1,5 @@
1
1
  import '@testing-library/jest-dom/extend-expect';
2
- import { buildPropsToDisplayWithContent } from '../../../../../../../src/components/DataSummary/helpers';
2
+ import { buildPropsToDisplayWithContent } from '../../../../../../src/components/DataSummary/helpers';
3
3
 
4
4
  const mockedPropsArray = ['id', 'name', 'tags.name', 'tags.id'];
5
5
 
@@ -1,5 +1,5 @@
1
1
  import '@testing-library/jest-dom/extend-expect';
2
- import { getDataSummaryQuery } from '../../../../../../../src/components/DataSummary/helpers';
2
+ import { getDataSummaryQuery } from '../../../../../../src/components/DataSummary/helpers';
3
3
 
4
4
  describe('get data summary query func', () => {
5
5
  const data = {
@@ -1,5 +1,5 @@
1
1
  import '@testing-library/jest-dom/extend-expect';
2
- import { getLinkToPublishedContent } from '../../../../../../../src/components/DataSummary/helpers';
2
+ import { getLinkToPublishedContent } from '../../../../../../src/components/DataSummary/helpers';
3
3
 
4
4
  describe('get link to published content', () => {
5
5
  it('should be a function', () => {
@@ -0,0 +1,32 @@
1
+ import '@testing-library/jest-dom/extend-expect';
2
+ import getLoopPropsLimit from '../../../../../../src/components/DataSummary/helpers/get-loop-props-limit';
3
+
4
+ const mockedValues = [
5
+ { test: [1, 2, 3] },
6
+ { test: [1, 2, 3, 4], test2: [1, 2, 3, 4, 5], test3: [1, 2] }
7
+ ];
8
+ describe('getLoopPropsLimit helper function', () => {
9
+ const noParamsPassed = getLoopPropsLimit();
10
+ const noValuesPassed = getLoopPropsLimit(undefined, 12);
11
+ const noLimitPassed = getLoopPropsLimit(mockedValues[0]);
12
+ const withLimit = getLoopPropsLimit(mockedValues[0], 2);
13
+ const withHigherLimitThanValues = getLoopPropsLimit(mockedValues[1], 22);
14
+
15
+ it('should always return a number', () => {
16
+ expect(typeof noParamsPassed).toEqual('number');
17
+ expect(typeof noValuesPassed).toEqual('number');
18
+ expect(typeof noLimitPassed).toEqual('number');
19
+ expect(typeof withLimit).toEqual('number');
20
+ expect(typeof withHigherLimitThanValues).toEqual('number');
21
+ });
22
+
23
+ it('if no values are passed should return a limit of 1', () => {
24
+ expect(noValuesPassed).toEqual(1);
25
+ });
26
+
27
+ it('should return the limitToUse based on values and limit passed', () => {
28
+ expect(withLimit).toEqual(2);
29
+ expect(noLimitPassed).toEqual(3);
30
+ expect(withHigherLimitThanValues).toEqual(5);
31
+ });
32
+ });
@@ -1,5 +1,5 @@
1
1
  import '@testing-library/jest-dom/extend-expect';
2
- import getPropValue from '../../../../../../../src/components/DataSummary/helpers/get-prop-value';
2
+ import getPropValue from '../../../../../../src/components/DataSummary/helpers/get-prop-value';
3
3
 
4
4
  describe('build props to display func', () => {
5
5
  const key = 'id';
@@ -1,5 +1,5 @@
1
1
  import '@testing-library/jest-dom/extend-expect';
2
- import getValueFromArray from '../../../../../../../src/components/DataSummary/helpers/get-value-from-array';
2
+ import getValueFromArray from '../../../../../../src/components/DataSummary/helpers/get-value-from-array';
3
3
 
4
4
  const key = 'id';
5
5
  const arr = [{ id: 'fd21b310-e9d9-11e9-a6fe-5b82b901ff45', utl: 'test-url' }];
@@ -0,0 +1,88 @@
1
+ const labels = ['Whataver normal label', 'Label for looped prop'];
2
+ const nestedLoopString = 'nested loop';
3
+ const nestedValueString = 'nestedValue';
4
+ const preffixString = 'pre';
5
+ const suffixString = ' -suff';
6
+ const dataNameString = 'data name';
7
+ const mockedLoopProps = ['nestedLoopProp.nestedValue'];
8
+ const mockedPropsToDisplay = [
9
+ {
10
+ bold: false,
11
+ enableLink: true,
12
+ label: labels[0],
13
+ modifier: '',
14
+ prefix: preffixString,
15
+ propertiesToDisplay: ['name'],
16
+ shouldStrip: true
17
+ },
18
+ {
19
+ bold: false,
20
+ enableLink: true,
21
+ label: labels[1],
22
+ modifier: '',
23
+ suffix: suffixString,
24
+ propertiesToDisplay: ['nestedLoopProp.nestedValue'],
25
+ shouldStrip: true
26
+ }
27
+ ];
28
+
29
+ const mockedData = [
30
+ {
31
+ name: dataNameString,
32
+ nestedLoopProp: [
33
+ { [nestedValueString]: `${nestedLoopString} 1` },
34
+ { [nestedValueString]: `${nestedLoopString} 2` },
35
+ { [nestedValueString]: `${nestedLoopString} 3` }
36
+ ]
37
+ },
38
+ {
39
+ name: dataNameString,
40
+ nestedLoopProp: { [nestedValueString]: `test ${nestedLoopString} value` }
41
+ }
42
+ ];
43
+ const mockedResults = [
44
+ [
45
+ [labels[0], `${preffixString} ${dataNameString}`, ''],
46
+ [
47
+ labels[1],
48
+ [
49
+ {
50
+ keyField: nestedValueString,
51
+ [nestedValueString]: `${nestedLoopString} 1${suffixString}`,
52
+ url: ''
53
+ },
54
+ {
55
+ keyField: nestedValueString,
56
+ [nestedValueString]: `${nestedLoopString} 2${suffixString}`,
57
+ url: ''
58
+ },
59
+ {
60
+ keyField: nestedValueString,
61
+ [nestedValueString]: `${nestedLoopString} 3${suffixString}`,
62
+ url: ''
63
+ }
64
+ ],
65
+ ''
66
+ ]
67
+ ],
68
+ [
69
+ [labels[0], `${preffixString} ${dataNameString}`, ''],
70
+ [labels[1], `test ${nestedLoopString} value ${suffixString}`, '']
71
+ ],
72
+ [
73
+ [labels[0], `${preffixString} ${dataNameString}`, ''],
74
+ [labels[1], `${nestedLoopString} 1${suffixString}`, ''],
75
+ [labels[0], `${preffixString} ${dataNameString}`, ''],
76
+ [labels[1], `${nestedLoopString} 2${suffixString}`, ''],
77
+ [labels[0], `${preffixString} ${dataNameString}`, ''],
78
+ [labels[1], `${nestedLoopString} 3${suffixString}`, '']
79
+ ],
80
+ [
81
+ [labels[0], `${preffixString} ${dataNameString}`, ''],
82
+ [labels[1], `${nestedLoopString} 1${suffixString}`, ''],
83
+ [labels[0], `${preffixString} ${dataNameString}`, ''],
84
+ [labels[1], `${nestedLoopString} 2${suffixString}`, '']
85
+ ]
86
+ ];
87
+
88
+ export { mockedLoopProps, mockedPropsToDisplay, mockedData, mockedResults };
@@ -1,5 +1,5 @@
1
1
  import '@testing-library/jest-dom/extend-expect';
2
- import stripSummaryPropsContent from '../../../../../../../src/components/DataSummary/helpers/strip-summary-props-content';
2
+ import stripSummaryPropsContent from '../../../../../../src/components/DataSummary/helpers/strip-summary-props-content';
3
3
 
4
4
  describe('strip summary props content', () => {
5
5
  const stripTrue = [{ shouldStrip: true }];