@blaze-cms/react-page-builder 0.128.0-core-styles.0 → 0.128.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 (95) hide show
  1. package/CHANGELOG.md +46 -369
  2. package/lib/components/Card/Card.js +1 -1
  3. package/lib/components/Card/Card.js.map +1 -1
  4. package/lib/components/Card/CardsContainer.js +53 -24
  5. package/lib/components/Card/CardsContainer.js.map +1 -1
  6. package/lib/components/DataSummary/DataSummaryFactory.js +2 -1
  7. package/lib/components/DataSummary/DataSummaryFactory.js.map +1 -1
  8. package/lib/components/DataSummary/DataSummaryTypes/ItemDetailsSummary/ItemDetailsSummaryContent.js +3 -1
  9. package/lib/components/DataSummary/DataSummaryTypes/ItemDetailsSummary/ItemDetailsSummaryContent.js.map +1 -1
  10. package/lib/components/DataSummary/helpers/get-link-props.js +23 -0
  11. package/lib/components/DataSummary/helpers/get-link-props.js.map +1 -0
  12. package/lib/components/DataSummary/helpers/get-link-to-published-content.js +7 -12
  13. package/lib/components/DataSummary/helpers/get-link-to-published-content.js.map +1 -1
  14. package/lib/components/DataSummary/helpers/index.js +7 -0
  15. package/lib/components/DataSummary/helpers/index.js.map +1 -1
  16. package/lib/components/Image/Image.js +1 -1
  17. package/lib/components/Image/Image.js.map +1 -1
  18. package/lib/components/List/components/Full/FullRender.js.map +1 -1
  19. package/lib/components/List/components/helpers/check-if-should-render-banner.js +27 -5
  20. package/lib/components/List/components/helpers/check-if-should-render-banner.js.map +1 -1
  21. package/lib/components/List/components/helpers/index.js +8 -2
  22. package/lib/components/List/components/helpers/index.js.map +1 -1
  23. package/lib/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
  24. package/lib/components/SearchFilter/components/Checkbox.js +6 -1
  25. package/lib/components/SearchFilter/components/Checkbox.js.map +1 -1
  26. package/lib/components/SearchFilter/components/Range.js +9 -5
  27. package/lib/components/SearchFilter/components/Range.js.map +1 -1
  28. package/lib/components/SearchFilter/components/Select.js +9 -5
  29. package/lib/components/SearchFilter/components/Select.js.map +1 -1
  30. package/lib/components/SearchFilter/components/TextSearch.js +9 -5
  31. package/lib/components/SearchFilter/components/TextSearch.js.map +1 -1
  32. package/lib/helpers/build-props-query.js +34 -24
  33. package/lib/helpers/build-props-query.js.map +1 -1
  34. package/lib/hooks/helpers/RenderComponent.js +3 -2
  35. package/lib/hooks/helpers/RenderComponent.js.map +1 -1
  36. package/lib-es/components/Card/Card.js +1 -1
  37. package/lib-es/components/Card/Card.js.map +1 -1
  38. package/lib-es/components/Card/CardsContainer.js +59 -35
  39. package/lib-es/components/Card/CardsContainer.js.map +1 -1
  40. package/lib-es/components/DataSummary/DataSummaryFactory.js +3 -2
  41. package/lib-es/components/DataSummary/DataSummaryFactory.js.map +1 -1
  42. package/lib-es/components/DataSummary/DataSummaryTypes/ItemDetailsSummary/ItemDetailsSummaryContent.js +3 -1
  43. package/lib-es/components/DataSummary/DataSummaryTypes/ItemDetailsSummary/ItemDetailsSummaryContent.js.map +1 -1
  44. package/lib-es/components/DataSummary/helpers/get-link-props.js +6 -0
  45. package/lib-es/components/DataSummary/helpers/get-link-props.js.map +1 -0
  46. package/lib-es/components/DataSummary/helpers/get-link-to-published-content.js +4 -7
  47. package/lib-es/components/DataSummary/helpers/get-link-to-published-content.js.map +1 -1
  48. package/lib-es/components/DataSummary/helpers/index.js +2 -1
  49. package/lib-es/components/DataSummary/helpers/index.js.map +1 -1
  50. package/lib-es/components/Image/Image.js +1 -1
  51. package/lib-es/components/Image/Image.js.map +1 -1
  52. package/lib-es/components/List/components/Full/FullRender.js.map +1 -1
  53. package/lib-es/components/List/components/helpers/check-if-should-render-banner.js +29 -3
  54. package/lib-es/components/List/components/helpers/check-if-should-render-banner.js.map +1 -1
  55. package/lib-es/components/List/components/helpers/index.js +3 -2
  56. package/lib-es/components/List/components/helpers/index.js.map +1 -1
  57. package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
  58. package/lib-es/components/SearchFilter/components/Checkbox.js +6 -1
  59. package/lib-es/components/SearchFilter/components/Checkbox.js.map +1 -1
  60. package/lib-es/components/SearchFilter/components/Range.js +9 -5
  61. package/lib-es/components/SearchFilter/components/Range.js.map +1 -1
  62. package/lib-es/components/SearchFilter/components/Select.js +9 -5
  63. package/lib-es/components/SearchFilter/components/Select.js.map +1 -1
  64. package/lib-es/components/SearchFilter/components/TextSearch.js +9 -5
  65. package/lib-es/components/SearchFilter/components/TextSearch.js.map +1 -1
  66. package/lib-es/helpers/build-props-query.js +22 -9
  67. package/lib-es/helpers/build-props-query.js.map +1 -1
  68. package/lib-es/hooks/helpers/RenderComponent.js +3 -2
  69. package/lib-es/hooks/helpers/RenderComponent.js.map +1 -1
  70. package/package.json +10 -9
  71. package/src/components/Card/Card.js +2 -2
  72. package/src/components/Card/CardsContainer.js +54 -35
  73. package/src/components/DataSummary/DataSummaryFactory.js +3 -2
  74. package/src/components/DataSummary/DataSummaryTypes/ItemDetailsSummary/ItemDetailsSummaryContent.js +1 -1
  75. package/src/components/DataSummary/helpers/get-link-props.js +7 -0
  76. package/src/components/DataSummary/helpers/get-link-to-published-content.js +4 -8
  77. package/src/components/DataSummary/helpers/index.js +3 -1
  78. package/src/components/Image/Image.js +1 -1
  79. package/src/components/List/components/Full/FullRender.js +0 -1
  80. package/src/components/List/components/helpers/check-if-should-render-banner.js +24 -3
  81. package/src/components/List/components/helpers/index.js +4 -2
  82. package/src/components/SearchFilter/SearchFilter/SearchFilter.js +0 -1
  83. package/src/components/SearchFilter/components/Checkbox.js +4 -0
  84. package/src/components/SearchFilter/components/Range.js +7 -4
  85. package/src/components/SearchFilter/components/Select.js +23 -17
  86. package/src/components/SearchFilter/components/TextSearch.js +30 -26
  87. package/src/helpers/build-props-query.js +46 -33
  88. package/src/hooks/helpers/RenderComponent.js +19 -16
  89. package/tests/unit/src/components/Card/__snapshots__/Card.test.js.snap +10 -10
  90. package/tests/unit/src/components/Card/__snapshots__/CardContainer.test.js.snap +8 -8
  91. package/tests/unit/src/components/DataSummary/DataSummaryTypes/__snapshots__/ItemDetailsSummary.test.js.snap +24 -4
  92. package/tests/unit/src/components/DataSummary/helpers/get-link-props.test.js +35 -0
  93. package/tests/unit/src/components/DataSummary/helpers/get-link-to-published-content.test.js +0 -3
  94. package/tests/unit/src/components/List/components/Cards/__snapshots__/CardsRender.test.js.snap +12 -12
  95. package/tests/unit/src/components/List/components/helpers/check-if-should-render-banner.test.js +59 -28
@@ -1,7 +1,6 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import Select from '@blaze-react/select';
4
- import { withTitle } from '../../../HOC';
5
4
  import { DEFAULT_OPTION } from '../constants';
6
5
  const SelectFilter = ({
7
6
  data,
@@ -11,7 +10,8 @@ const SelectFilter = ({
11
10
  filterValues,
12
11
  shouldSearch,
13
12
  displayLabelAsPlaceholder,
14
- displayFilterCount
13
+ displayFilterCount,
14
+ elementTitle
15
15
  }) => {
16
16
  const filterValue = filterValues[prop] || '';
17
17
  const disabledOptions = [];
@@ -33,7 +33,9 @@ const SelectFilter = ({
33
33
  defaultTextValue = labelToUse;
34
34
  labelToUse = null;
35
35
  }
36
- return /*#__PURE__*/React.createElement(Select, {
36
+ return /*#__PURE__*/React.createElement(React.Fragment, null, elementTitle && /*#__PURE__*/React.createElement("div", {
37
+ className: "heading heading--section"
38
+ }, elementTitle), /*#__PURE__*/React.createElement(Select, {
37
39
  label: labelToUse,
38
40
  value: filterValue,
39
41
  id: prop,
@@ -50,7 +52,7 @@ const SelectFilter = ({
50
52
  }, shouldSearch);
51
53
  },
52
54
  disabled: disabledOptions
53
- });
55
+ }));
54
56
  };
55
57
  SelectFilter.propTypes = {
56
58
  data: PropTypes.object.isRequired,
@@ -59,6 +61,7 @@ SelectFilter.propTypes = {
59
61
  updateFilterValues: PropTypes.func.isRequired,
60
62
  shouldSearch: PropTypes.bool,
61
63
  label: PropTypes.string,
64
+ elementTitle: PropTypes.string,
62
65
  displayLabelAsPlaceholder: PropTypes.bool,
63
66
  displayFilterCount: PropTypes.bool
64
67
  };
@@ -66,8 +69,9 @@ SelectFilter.defaultProps = {
66
69
  filterValues: {},
67
70
  shouldSearch: false,
68
71
  label: '',
72
+ elementTitle: '',
69
73
  displayLabelAsPlaceholder: false,
70
74
  displayFilterCount: false
71
75
  };
72
- export default withTitle(SelectFilter);
76
+ export default SelectFilter;
73
77
  //# sourceMappingURL=Select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","names":["React","PropTypes","Select","withTitle","DEFAULT_OPTION","SelectFilter","data","label","prop","updateFilterValues","filterValues","shouldSearch","displayLabelAsPlaceholder","displayFilterCount","filterValue","disabledOptions","buckets","options","map","key","doc_count","count","push","optionLabel","filter","Boolean","sort","labelText","labelToUse","defaultTextValue","createElement","value","id","onChange","valueToUse","disabled","propTypes","object","isRequired","string","func","bool","defaultProps"],"sources":["../../../../src/components/SearchFilter/components/Select.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Select from '@blaze-react/select';\nimport { withTitle } from '../../../HOC';\nimport { DEFAULT_OPTION } from '../constants';\n\nconst SelectFilter = ({\n data,\n label,\n prop,\n updateFilterValues,\n filterValues,\n shouldSearch,\n displayLabelAsPlaceholder,\n displayFilterCount\n}) => {\n const filterValue = filterValues[prop] || '';\n const disabledOptions = [];\n const { buckets = [] } = data[prop] || {};\n const options = buckets\n .map(({ key, doc_count: count }) => {\n if (!count) disabledOptions.push(key);\n const optionLabel = displayFilterCount ? `${key} (${count})` : key;\n return [key, optionLabel];\n })\n .filter(Boolean)\n .sort();\n\n const labelText = label || prop;\n let labelToUse = labelText;\n let defaultTextValue = DEFAULT_OPTION;\n if (displayLabelAsPlaceholder) {\n defaultTextValue = labelToUse;\n labelToUse = null;\n }\n\n return (\n <Select\n label={labelToUse}\n value={filterValue}\n id={prop}\n data-testid={`filter-${prop}`}\n options={options}\n defaultTextValue={defaultTextValue}\n onChange={({ value }) => {\n let valueToUse = value;\n if (value === defaultTextValue) valueToUse = '';\n updateFilterValues({ [prop]: valueToUse }, shouldSearch);\n }}\n disabled={disabledOptions}\n />\n );\n};\n\nSelectFilter.propTypes = {\n data: PropTypes.object.isRequired,\n prop: PropTypes.string.isRequired,\n filterValues: PropTypes.object,\n updateFilterValues: PropTypes.func.isRequired,\n shouldSearch: PropTypes.bool,\n label: PropTypes.string,\n displayLabelAsPlaceholder: PropTypes.bool,\n displayFilterCount: PropTypes.bool\n};\n\nSelectFilter.defaultProps = {\n filterValues: {},\n shouldSearch: false,\n label: '',\n displayLabelAsPlaceholder: false,\n displayFilterCount: false\n};\n\nexport default withTitle(SelectFilter);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,MAAM,MAAM,qBAAqB;AACxC,SAASC,SAAS,QAAQ,cAAc;AACxC,SAASC,cAAc,QAAQ,cAAc;AAE7C,MAAMC,YAAY,GAAGA,CAAC;EACpBC,IAAI;EACJC,KAAK;EACLC,IAAI;EACJC,kBAAkB;EAClBC,YAAY;EACZC,YAAY;EACZC,yBAAyB;EACzBC;AACF,CAAC,KAAK;EACJ,MAAMC,WAAW,GAAGJ,YAAY,CAACF,IAAI,CAAC,IAAI,EAAE;EAC5C,MAAMO,eAAe,GAAG,EAAE;EAC1B,MAAM;IAAEC,OAAO,GAAG;EAAG,CAAC,GAAGV,IAAI,CAACE,IAAI,CAAC,IAAI,CAAC,CAAC;EACzC,MAAMS,OAAO,GAAGD,OAAO,CACpBE,GAAG,CAAC,CAAC;IAAEC,GAAG;IAAEC,SAAS,EAAEC;EAAM,CAAC,KAAK;IAClC,IAAI,CAACA,KAAK,EAAEN,eAAe,CAACO,IAAI,CAACH,GAAG,CAAC;IACrC,MAAMI,WAAW,GAAGV,kBAAkB,GAAI,GAAEM,GAAI,KAAIE,KAAM,GAAE,GAAGF,GAAG;IAClE,OAAO,CAACA,GAAG,EAAEI,WAAW,CAAC;EAC3B,CAAC,CAAC,CACDC,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,EAAE;EAET,MAAMC,SAAS,GAAGpB,KAAK,IAAIC,IAAI;EAC/B,IAAIoB,UAAU,GAAGD,SAAS;EAC1B,IAAIE,gBAAgB,GAAGzB,cAAc;EACrC,IAAIQ,yBAAyB,EAAE;IAC7BiB,gBAAgB,GAAGD,UAAU;IAC7BA,UAAU,GAAG,IAAI;EACnB;EAEA,oBACE5B,KAAA,CAAA8B,aAAA,CAAC5B,MAAM;IACLK,KAAK,EAAEqB,UAAW;IAClBG,KAAK,EAAEjB,WAAY;IACnBkB,EAAE,EAAExB,IAAK;IACT,eAAc,UAASA,IAAK,EAAE;IAC9BS,OAAO,EAAEA,OAAQ;IACjBY,gBAAgB,EAAEA,gBAAiB;IACnCI,QAAQ,EAAEA,CAAC;MAAEF;IAAM,CAAC,KAAK;MACvB,IAAIG,UAAU,GAAGH,KAAK;MACtB,IAAIA,KAAK,KAAKF,gBAAgB,EAAEK,UAAU,GAAG,EAAE;MAC/CzB,kBAAkB,CAAC;QAAE,CAACD,IAAI,GAAG0B;MAAW,CAAC,EAAEvB,YAAY,CAAC;IAC1D,CAAE;IACFwB,QAAQ,EAAEpB;EAAgB,EAC1B;AAEN,CAAC;AAEDV,YAAY,CAAC+B,SAAS,GAAG;EACvB9B,IAAI,EAAEL,SAAS,CAACoC,MAAM,CAACC,UAAU;EACjC9B,IAAI,EAAEP,SAAS,CAACsC,MAAM,CAACD,UAAU;EACjC5B,YAAY,EAAET,SAAS,CAACoC,MAAM;EAC9B5B,kBAAkB,EAAER,SAAS,CAACuC,IAAI,CAACF,UAAU;EAC7C3B,YAAY,EAAEV,SAAS,CAACwC,IAAI;EAC5BlC,KAAK,EAAEN,SAAS,CAACsC,MAAM;EACvB3B,yBAAyB,EAAEX,SAAS,CAACwC,IAAI;EACzC5B,kBAAkB,EAAEZ,SAAS,CAACwC;AAChC,CAAC;AAEDpC,YAAY,CAACqC,YAAY,GAAG;EAC1BhC,YAAY,EAAE,CAAC,CAAC;EAChBC,YAAY,EAAE,KAAK;EACnBJ,KAAK,EAAE,EAAE;EACTK,yBAAyB,EAAE,KAAK;EAChCC,kBAAkB,EAAE;AACtB,CAAC;AAED,eAAeV,SAAS,CAACE,YAAY,CAAC"}
1
+ {"version":3,"file":"Select.js","names":["React","PropTypes","Select","DEFAULT_OPTION","SelectFilter","data","label","prop","updateFilterValues","filterValues","shouldSearch","displayLabelAsPlaceholder","displayFilterCount","elementTitle","filterValue","disabledOptions","buckets","options","map","key","doc_count","count","push","optionLabel","filter","Boolean","sort","labelText","labelToUse","defaultTextValue","createElement","Fragment","className","value","id","onChange","valueToUse","disabled","propTypes","object","isRequired","string","func","bool","defaultProps"],"sources":["../../../../src/components/SearchFilter/components/Select.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Select from '@blaze-react/select';\nimport { DEFAULT_OPTION } from '../constants';\n\nconst SelectFilter = ({\n data,\n label,\n prop,\n updateFilterValues,\n filterValues,\n shouldSearch,\n displayLabelAsPlaceholder,\n displayFilterCount,\n elementTitle\n}) => {\n const filterValue = filterValues[prop] || '';\n const disabledOptions = [];\n const { buckets = [] } = data[prop] || {};\n const options = buckets\n .map(({ key, doc_count: count }) => {\n if (!count) disabledOptions.push(key);\n const optionLabel = displayFilterCount ? `${key} (${count})` : key;\n return [key, optionLabel];\n })\n .filter(Boolean)\n .sort();\n\n const labelText = label || prop;\n let labelToUse = labelText;\n let defaultTextValue = DEFAULT_OPTION;\n if (displayLabelAsPlaceholder) {\n defaultTextValue = labelToUse;\n labelToUse = null;\n }\n\n return (\n <>\n {elementTitle && <div className=\"heading heading--section\">{elementTitle}</div>}\n <Select\n label={labelToUse}\n value={filterValue}\n id={prop}\n data-testid={`filter-${prop}`}\n options={options}\n defaultTextValue={defaultTextValue}\n onChange={({ value }) => {\n let valueToUse = value;\n if (value === defaultTextValue) valueToUse = '';\n updateFilterValues({ [prop]: valueToUse }, shouldSearch);\n }}\n disabled={disabledOptions}\n />\n </>\n );\n};\n\nSelectFilter.propTypes = {\n data: PropTypes.object.isRequired,\n prop: PropTypes.string.isRequired,\n filterValues: PropTypes.object,\n updateFilterValues: PropTypes.func.isRequired,\n shouldSearch: PropTypes.bool,\n label: PropTypes.string,\n elementTitle: PropTypes.string,\n\n displayLabelAsPlaceholder: PropTypes.bool,\n displayFilterCount: PropTypes.bool\n};\n\nSelectFilter.defaultProps = {\n filterValues: {},\n shouldSearch: false,\n label: '',\n elementTitle: '',\n displayLabelAsPlaceholder: false,\n displayFilterCount: false\n};\n\nexport default SelectFilter;\n"],"mappings":"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"}
@@ -2,13 +2,15 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import Input from '@blaze-react/input';
4
4
  import { MdSearch } from 'react-icons/md';
5
- import { withTitle } from '../../../HOC';
6
5
  import { SEARCH_TERM } from '../constants';
7
6
  const TextSearch = ({
8
7
  label,
9
8
  searchValue,
10
- updateFilterValues
11
- }) => /*#__PURE__*/React.createElement("div", {
9
+ updateFilterValues,
10
+ elementTitle
11
+ }) => /*#__PURE__*/React.createElement(React.Fragment, null, elementTitle && /*#__PURE__*/React.createElement("div", {
12
+ className: "heading heading--section"
13
+ }, elementTitle), /*#__PURE__*/React.createElement("div", {
12
14
  className: "search"
13
15
  }, /*#__PURE__*/React.createElement("div", {
14
16
  className: "search__wrapper"
@@ -34,14 +36,16 @@ const TextSearch = ({
34
36
  [SEARCH_TERM]: searchValue
35
37
  }, true);
36
38
  }
37
- }, /*#__PURE__*/React.createElement("i", null, /*#__PURE__*/React.createElement(MdSearch, null)))));
39
+ }, /*#__PURE__*/React.createElement("i", null, /*#__PURE__*/React.createElement(MdSearch, null))))));
38
40
  TextSearch.propTypes = {
39
41
  searchValue: PropTypes.string.isRequired,
40
42
  updateFilterValues: PropTypes.func.isRequired,
43
+ elementTitle: PropTypes.string,
41
44
  label: PropTypes.string
42
45
  };
43
46
  TextSearch.defaultProps = {
47
+ elementTitle: '',
44
48
  label: ''
45
49
  };
46
- export default withTitle(TextSearch);
50
+ export default TextSearch;
47
51
  //# sourceMappingURL=TextSearch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextSearch.js","names":["React","PropTypes","Input","MdSearch","withTitle","SEARCH_TERM","TextSearch","label","searchValue","updateFilterValues","createElement","className","id","value","placeholder","onChange","eValue","type","onClick","e","preventDefault","propTypes","string","isRequired","func","defaultProps"],"sources":["../../../../src/components/SearchFilter/components/TextSearch.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Input from '@blaze-react/input';\nimport { MdSearch } from 'react-icons/md';\nimport { withTitle } from '../../../HOC';\nimport { SEARCH_TERM } from '../constants';\n\nconst TextSearch = ({ label, searchValue, updateFilterValues }) => (\n <div className=\"search\">\n <div className=\"search__wrapper\">\n <div className=\"form-field form-field--input form-field--search\">\n <Input\n id={SEARCH_TERM}\n value={searchValue}\n placeholder={label || 'Search'}\n onChange={({ value: eValue }) => {\n updateFilterValues({ [SEARCH_TERM]: eValue }, false);\n }}\n />\n </div>\n <button\n type=\"button\"\n className=\"icon-button icon-button--search\"\n onClick={e => {\n e.preventDefault();\n updateFilterValues({ [SEARCH_TERM]: searchValue }, true);\n }}>\n <i>\n <MdSearch />\n </i>\n </button>\n </div>\n </div>\n);\n\nTextSearch.propTypes = {\n searchValue: PropTypes.string.isRequired,\n updateFilterValues: PropTypes.func.isRequired,\n label: PropTypes.string\n};\n\nTextSearch.defaultProps = {\n label: ''\n};\n\nexport default withTitle(TextSearch);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,KAAK,MAAM,oBAAoB;AACtC,SAASC,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,SAAS,QAAQ,cAAc;AACxC,SAASC,WAAW,QAAQ,cAAc;AAE1C,MAAMC,UAAU,GAAGA,CAAC;EAAEC,KAAK;EAAEC,WAAW;EAAEC;AAAmB,CAAC,kBAC5DT,KAAA,CAAAU,aAAA;EAAKC,SAAS,EAAC;AAAQ,gBACrBX,KAAA,CAAAU,aAAA;EAAKC,SAAS,EAAC;AAAiB,gBAC9BX,KAAA,CAAAU,aAAA;EAAKC,SAAS,EAAC;AAAiD,gBAC9DX,KAAA,CAAAU,aAAA,CAACR,KAAK;EACJU,EAAE,EAAEP,WAAY;EAChBQ,KAAK,EAAEL,WAAY;EACnBM,WAAW,EAAEP,KAAK,IAAI,QAAS;EAC/BQ,QAAQ,EAAEA,CAAC;IAAEF,KAAK,EAAEG;EAAO,CAAC,KAAK;IAC/BP,kBAAkB,CAAC;MAAE,CAACJ,WAAW,GAAGW;IAAO,CAAC,EAAE,KAAK,CAAC;EACtD;AAAE,EACF,CACE,eACNhB,KAAA,CAAAU,aAAA;EACEO,IAAI,EAAC,QAAQ;EACbN,SAAS,EAAC,iCAAiC;EAC3CO,OAAO,EAAEC,CAAC,IAAI;IACZA,CAAC,CAACC,cAAc,EAAE;IAClBX,kBAAkB,CAAC;MAAE,CAACJ,WAAW,GAAGG;IAAY,CAAC,EAAE,IAAI,CAAC;EAC1D;AAAE,gBACFR,KAAA,CAAAU,aAAA,yBACEV,KAAA,CAAAU,aAAA,CAACP,QAAQ,OAAG,CACV,CACG,CACL,CAET;AAEDG,UAAU,CAACe,SAAS,GAAG;EACrBb,WAAW,EAAEP,SAAS,CAACqB,MAAM,CAACC,UAAU;EACxCd,kBAAkB,EAAER,SAAS,CAACuB,IAAI,CAACD,UAAU;EAC7ChB,KAAK,EAAEN,SAAS,CAACqB;AACnB,CAAC;AAEDhB,UAAU,CAACmB,YAAY,GAAG;EACxBlB,KAAK,EAAE;AACT,CAAC;AAED,eAAeH,SAAS,CAACE,UAAU,CAAC"}
1
+ {"version":3,"file":"TextSearch.js","names":["React","PropTypes","Input","MdSearch","SEARCH_TERM","TextSearch","label","searchValue","updateFilterValues","elementTitle","createElement","Fragment","className","id","value","placeholder","onChange","eValue","type","onClick","e","preventDefault","propTypes","string","isRequired","func","defaultProps"],"sources":["../../../../src/components/SearchFilter/components/TextSearch.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Input from '@blaze-react/input';\nimport { MdSearch } from 'react-icons/md';\nimport { SEARCH_TERM } from '../constants';\n\nconst TextSearch = ({ label, searchValue, updateFilterValues, elementTitle }) => (\n <>\n {elementTitle && <div className=\"heading heading--section\">{elementTitle}</div>}\n <div className=\"search\">\n <div className=\"search__wrapper\">\n <div className=\"form-field form-field--input form-field--search\">\n <Input\n id={SEARCH_TERM}\n value={searchValue}\n placeholder={label || 'Search'}\n onChange={({ value: eValue }) => {\n updateFilterValues({ [SEARCH_TERM]: eValue }, false);\n }}\n />\n </div>\n <button\n type=\"button\"\n className=\"icon-button icon-button--search\"\n onClick={e => {\n e.preventDefault();\n updateFilterValues({ [SEARCH_TERM]: searchValue }, true);\n }}>\n <i>\n <MdSearch />\n </i>\n </button>\n </div>\n </div>\n </>\n);\n\nTextSearch.propTypes = {\n searchValue: PropTypes.string.isRequired,\n updateFilterValues: PropTypes.func.isRequired,\n elementTitle: PropTypes.string,\n label: PropTypes.string\n};\n\nTextSearch.defaultProps = {\n elementTitle: '',\n label: ''\n};\n\nexport default TextSearch;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,KAAK,MAAM,oBAAoB;AACtC,SAASC,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,WAAW,QAAQ,cAAc;AAE1C,MAAMC,UAAU,GAAGA,CAAC;EAAEC,KAAK;EAAEC,WAAW;EAAEC,kBAAkB;EAAEC;AAAa,CAAC,kBAC1ET,KAAA,CAAAU,aAAA,CAAAV,KAAA,CAAAW,QAAA,QACGF,YAAY,iBAAIT,KAAA,CAAAU,aAAA;EAAKE,SAAS,EAAC;AAA0B,GAAEH,YAAY,CAAO,eAC/ET,KAAA,CAAAU,aAAA;EAAKE,SAAS,EAAC;AAAQ,gBACrBZ,KAAA,CAAAU,aAAA;EAAKE,SAAS,EAAC;AAAiB,gBAC9BZ,KAAA,CAAAU,aAAA;EAAKE,SAAS,EAAC;AAAiD,gBAC9DZ,KAAA,CAAAU,aAAA,CAACR,KAAK;EACJW,EAAE,EAAET,WAAY;EAChBU,KAAK,EAAEP,WAAY;EACnBQ,WAAW,EAAET,KAAK,IAAI,QAAS;EAC/BU,QAAQ,EAAEA,CAAC;IAAEF,KAAK,EAAEG;EAAO,CAAC,KAAK;IAC/BT,kBAAkB,CAAC;MAAE,CAACJ,WAAW,GAAGa;IAAO,CAAC,EAAE,KAAK,CAAC;EACtD;AAAE,EACF,CACE,eACNjB,KAAA,CAAAU,aAAA;EACEQ,IAAI,EAAC,QAAQ;EACbN,SAAS,EAAC,iCAAiC;EAC3CO,OAAO,EAAEC,CAAC,IAAI;IACZA,CAAC,CAACC,cAAc,EAAE;IAClBb,kBAAkB,CAAC;MAAE,CAACJ,WAAW,GAAGG;IAAY,CAAC,EAAE,IAAI,CAAC;EAC1D;AAAE,gBACFP,KAAA,CAAAU,aAAA,yBACEV,KAAA,CAAAU,aAAA,CAACP,QAAQ,OAAG,CACV,CACG,CACL,CACF,CAET;AAEDE,UAAU,CAACiB,SAAS,GAAG;EACrBf,WAAW,EAAEN,SAAS,CAACsB,MAAM,CAACC,UAAU;EACxChB,kBAAkB,EAAEP,SAAS,CAACwB,IAAI,CAACD,UAAU;EAC7Cf,YAAY,EAAER,SAAS,CAACsB,MAAM;EAC9BjB,KAAK,EAAEL,SAAS,CAACsB;AACnB,CAAC;AAEDlB,UAAU,CAACqB,YAAY,GAAG;EACxBjB,YAAY,EAAE,EAAE;EAChBH,KAAK,EAAE;AACT,CAAC;AAED,eAAeD,UAAU"}
@@ -2,7 +2,7 @@ import { CATEGORY_ID, ID, PREHEADER_PROP, HEADLINE_PROP } from '../constants';
2
2
  const defaultProps = [ID, 'name'];
3
3
  const categoryProps = 'id publishedListingPage{id, url}';
4
4
  const checkProps = props => !!(props && Object.keys(props).filter(prop => prop === CATEGORY_ID).length);
5
- const buildPropsQuery = (entitySchema, extraProps = [], cardOptions = null) => {
5
+ const buildPropsQuery = (entitySchema, extraProps = [], cardOptions = null, linkProps = []) => {
6
6
  const parsedSchema = entitySchema.getEntitySchema ? entitySchema.getEntitySchema : entitySchema;
7
7
  const extraPropsHaveCategory = !!extraProps.filter(prop => prop.includes('category.')).length;
8
8
  const {
@@ -11,18 +11,33 @@ const buildPropsQuery = (entitySchema, extraProps = [], cardOptions = null) => {
11
11
  } = getTypeBaseProps(parsedSchema, cardOptions, extraPropsHaveCategory);
12
12
  const allProps = [...typeBasedProps, ...extraProps];
13
13
  const uniqueProps = [...new Set([...allProps])];
14
- const basicProps = uniqueProps.filter(prop => prop && !prop.includes('.')).filter((prop, i, arr) => arr.indexOf(prop) === i);
15
- const complexProps = buildComplexProps(shouldAddCategoryProps, uniqueProps, parsedSchema);
14
+ const basicProps = [];
15
+ const nestedProps = {};
16
+ uniqueProps.forEach(prop => {
17
+ if (prop) {
18
+ if (!prop.includes('.')) {
19
+ basicProps.push(prop);
20
+ return;
21
+ }
22
+ const [base, nested] = prop.split('.');
23
+ if (!nestedProps[base]) nestedProps[base] = [nested];else nestedProps[base].push(nested);
24
+ }
25
+ });
26
+ const complexProps = buildComplexProps(shouldAddCategoryProps, nestedProps, parsedSchema, linkProps);
16
27
  return [...basicProps, ...complexProps].join(',');
17
28
  };
18
29
  const buildComplexProps = (shouldAddCategoryProps, props, {
19
- relations
20
- }) => props.filter(prop => prop && prop.includes('.')).map(nested => nested.split('.')[0]).filter((prop, i, arr) => arr.indexOf(prop) === i).map(base => {
30
+ relations = [],
31
+ dynamicProperties = {}
32
+ }, linkProps) => Object.keys(props).map(base => {
33
+ const nestedProps = props[base];
34
+ const hasLink = !!linkProps.find(linkProp => linkProp.includes(base));
21
35
  const matchingRelation = relations.find(({
22
36
  localField
23
37
  }) => localField === base);
24
- const nestedProps = props.filter((extraProp, i, arr) => extraProp && extraProp.startsWith(`${base}.`) && arr.indexOf(extraProp) === i).map(nested => nested.split('.')[1]);
38
+ const matchingDynamicProp = Object.keys(dynamicProperties).find(dynamicKey => dynamicKey === base);
25
39
  if (matchingRelation && !nestedProps.includes('id')) nestedProps.push('id');
40
+ if (hasLink && (!!matchingRelation || !!matchingDynamicProp)) nestedProps.push('url');
26
41
  const jointNestedProps = nestedProps.join(',');
27
42
  if (base === 'category' && shouldAddCategoryProps) return `${base}{${jointNestedProps}, ${categoryProps}}`;
28
43
  if (base.includes('published')) {
@@ -68,9 +83,7 @@ const getContentProps = isContent => isContent ? ['url', 'sponsored', 'featured'
68
83
  const getCategoyProps = (shouldAddCategoryProps, hasCategory, hasPreheader) => {
69
84
  if (!shouldAddCategoryProps) return [];
70
85
  const props = [];
71
- if (hasCategory) {
72
- props.push('category.name', 'category.listingPageId', 'category.listingPageEntity');
73
- }
86
+ if (hasCategory) props.push('category.name', 'category.listingPageId', 'category.listingPageEntity');
74
87
  if (hasPreheader) {
75
88
  props.push(`${PREHEADER_PROP}{name}`);
76
89
  props.push(HEADLINE_PROP);
@@ -1 +1 @@
1
- {"version":3,"file":"build-props-query.js","names":["CATEGORY_ID","ID","PREHEADER_PROP","HEADLINE_PROP","defaultProps","categoryProps","checkProps","props","Object","keys","filter","prop","length","buildPropsQuery","entitySchema","extraProps","cardOptions","parsedSchema","getEntitySchema","extraPropsHaveCategory","includes","typeBasedProps","shouldAddCategoryProps","getTypeBaseProps","allProps","uniqueProps","Set","basicProps","i","arr","indexOf","complexProps","buildComplexProps","join","relations","map","nested","split","base","matchingRelation","find","localField","nestedProps","extraProp","startsWith","push","jointNestedProps","isCard","displayCategory","displayThumbnail","interfaces","properties","dynamicProperties","isContent","hasCategory","hasPreheader","getCategoyProps","getContentProps","url"],"sources":["../../src/helpers/build-props-query.js"],"sourcesContent":["import { CATEGORY_ID, ID, PREHEADER_PROP, HEADLINE_PROP } from '../constants';\n\nconst defaultProps = [ID, 'name'];\nconst categoryProps = 'id publishedListingPage{id, url}';\n\nconst checkProps = props =>\n !!(props && Object.keys(props).filter(prop => prop === CATEGORY_ID).length);\n\nconst buildPropsQuery = (entitySchema, extraProps = [], cardOptions = null) => {\n const parsedSchema = entitySchema.getEntitySchema ? entitySchema.getEntitySchema : entitySchema;\n const extraPropsHaveCategory = !!extraProps.filter(prop => prop.includes('category.')).length;\n const { typeBasedProps, shouldAddCategoryProps } = getTypeBaseProps(\n parsedSchema,\n cardOptions,\n extraPropsHaveCategory\n );\n\n const allProps = [...typeBasedProps, ...extraProps];\n\n const uniqueProps = [...new Set([...allProps])];\n\n const basicProps = uniqueProps\n .filter(prop => prop && !prop.includes('.'))\n .filter((prop, i, arr) => arr.indexOf(prop) === i);\n const complexProps = buildComplexProps(shouldAddCategoryProps, uniqueProps, parsedSchema);\n return [...basicProps, ...complexProps].join(',');\n};\n\nconst buildComplexProps = (shouldAddCategoryProps, props, { relations }) =>\n props\n .filter(prop => prop && prop.includes('.'))\n .map(nested => nested.split('.')[0])\n .filter((prop, i, arr) => arr.indexOf(prop) === i)\n .map(base => {\n const matchingRelation = relations.find(({ localField }) => localField === base);\n const nestedProps = props\n .filter(\n (extraProp, i, arr) =>\n extraProp && extraProp.startsWith(`${base}.`) && arr.indexOf(extraProp) === i\n )\n .map(nested => nested.split('.')[1]);\n if (matchingRelation && !nestedProps.includes('id')) nestedProps.push('id');\n\n const jointNestedProps = nestedProps.join(',');\n if (base === 'category' && shouldAddCategoryProps)\n return `${base}{${jointNestedProps}, ${categoryProps}}`;\n if (base.includes('published')) {\n return `${base}{${jointNestedProps},url}`;\n }\n return `${base}{${jointNestedProps}}`;\n });\n\nconst getTypeBaseProps = (entitySchema, cardOptions, extraPropsHaveCategory) => {\n const isCard = !!cardOptions;\n const { displayCategory = true, displayThumbnail = true } = cardOptions || {};\n\n const shouldAddCategoryProps =\n (isCard && displayCategory) || (!isCard && !extraPropsHaveCategory);\n\n if (!isCard) return { typeBasedProps: [ID], shouldAddCategoryProps };\n\n const { interfaces, properties, dynamicProperties, relations } = entitySchema;\n\n const isContent = !!interfaces.includes('content/content');\n const hasCategory = checkProps(properties) || checkProps(dynamicProperties);\n const hasPreheader = properties[PREHEADER_PROP];\n\n const typeBasedProps = [...defaultProps];\n\n typeBasedProps.push(...getCategoyProps(shouldAddCategoryProps, hasCategory, hasPreheader));\n typeBasedProps.push(...getContentProps(isContent));\n\n if (properties.url || dynamicProperties.url) typeBasedProps.push('url');\n\n if (displayThumbnail && relations.find(({ localField }) => localField === 'image')) {\n typeBasedProps.push('image.id', 'image.url', 'image.data');\n }\n\n return { typeBasedProps, shouldAddCategoryProps };\n};\n\nconst getContentProps = isContent => (isContent ? ['url', 'sponsored', 'featured'] : []);\n\nconst getCategoyProps = (shouldAddCategoryProps, hasCategory, hasPreheader) => {\n if (!shouldAddCategoryProps) return [];\n\n const props = [];\n\n if (hasCategory) {\n props.push('category.name', 'category.listingPageId', 'category.listingPageEntity');\n }\n\n if (hasPreheader) {\n props.push(`${PREHEADER_PROP}{name}`);\n props.push(HEADLINE_PROP);\n }\n\n return props;\n};\n\nexport default buildPropsQuery;\n"],"mappings":"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"}
1
+ {"version":3,"file":"build-props-query.js","names":["CATEGORY_ID","ID","PREHEADER_PROP","HEADLINE_PROP","defaultProps","categoryProps","checkProps","props","Object","keys","filter","prop","length","buildPropsQuery","entitySchema","extraProps","cardOptions","linkProps","parsedSchema","getEntitySchema","extraPropsHaveCategory","includes","typeBasedProps","shouldAddCategoryProps","getTypeBaseProps","allProps","uniqueProps","Set","basicProps","nestedProps","forEach","push","base","nested","split","complexProps","buildComplexProps","join","relations","dynamicProperties","map","hasLink","find","linkProp","matchingRelation","localField","matchingDynamicProp","dynamicKey","jointNestedProps","isCard","displayCategory","displayThumbnail","interfaces","properties","isContent","hasCategory","hasPreheader","getCategoyProps","getContentProps","url"],"sources":["../../src/helpers/build-props-query.js"],"sourcesContent":["import { CATEGORY_ID, ID, PREHEADER_PROP, HEADLINE_PROP } from '../constants';\n\nconst defaultProps = [ID, 'name'];\nconst categoryProps = 'id publishedListingPage{id, url}';\n\nconst checkProps = props =>\n !!(props && Object.keys(props).filter(prop => prop === CATEGORY_ID).length);\n\nconst buildPropsQuery = (entitySchema, extraProps = [], cardOptions = null, linkProps = []) => {\n const parsedSchema = entitySchema.getEntitySchema ? entitySchema.getEntitySchema : entitySchema;\n const extraPropsHaveCategory = !!extraProps.filter(prop => prop.includes('category.')).length;\n const { typeBasedProps, shouldAddCategoryProps } = getTypeBaseProps(\n parsedSchema,\n cardOptions,\n extraPropsHaveCategory\n );\n\n const allProps = [...typeBasedProps, ...extraProps];\n const uniqueProps = [...new Set([...allProps])];\n const basicProps = [];\n const nestedProps = {};\n uniqueProps.forEach(prop => {\n if (prop) {\n if (!prop.includes('.')) {\n basicProps.push(prop);\n return;\n }\n const [base, nested] = prop.split('.');\n if (!nestedProps[base]) nestedProps[base] = [nested];\n else nestedProps[base].push(nested);\n }\n });\n\n const complexProps = buildComplexProps(\n shouldAddCategoryProps,\n nestedProps,\n parsedSchema,\n linkProps\n );\n\n return [...basicProps, ...complexProps].join(',');\n};\n\nconst buildComplexProps = (\n shouldAddCategoryProps,\n props,\n { relations = [], dynamicProperties = {} },\n linkProps\n) =>\n Object.keys(props).map(base => {\n const nestedProps = props[base];\n const hasLink = !!linkProps.find(linkProp => linkProp.includes(base));\n const matchingRelation = relations.find(({ localField }) => localField === base);\n const matchingDynamicProp = Object.keys(dynamicProperties).find(\n dynamicKey => dynamicKey === base\n );\n\n if (matchingRelation && !nestedProps.includes('id')) nestedProps.push('id');\n if (hasLink && (!!matchingRelation || !!matchingDynamicProp)) nestedProps.push('url');\n const jointNestedProps = nestedProps.join(',');\n if (base === 'category' && shouldAddCategoryProps)\n return `${base}{${jointNestedProps}, ${categoryProps}}`;\n if (base.includes('published')) {\n return `${base}{${jointNestedProps},url}`;\n }\n return `${base}{${jointNestedProps}}`;\n });\n\nconst getTypeBaseProps = (entitySchema, cardOptions, extraPropsHaveCategory) => {\n const isCard = !!cardOptions;\n const { displayCategory = true, displayThumbnail = true } = cardOptions || {};\n\n const shouldAddCategoryProps =\n (isCard && displayCategory) || (!isCard && !extraPropsHaveCategory);\n\n if (!isCard) return { typeBasedProps: [ID], shouldAddCategoryProps };\n\n const { interfaces, properties, dynamicProperties, relations } = entitySchema;\n\n const isContent = !!interfaces.includes('content/content');\n const hasCategory = checkProps(properties) || checkProps(dynamicProperties);\n const hasPreheader = properties[PREHEADER_PROP];\n\n const typeBasedProps = [...defaultProps];\n\n typeBasedProps.push(...getCategoyProps(shouldAddCategoryProps, hasCategory, hasPreheader));\n typeBasedProps.push(...getContentProps(isContent));\n\n if (properties.url || dynamicProperties.url) typeBasedProps.push('url');\n\n if (displayThumbnail && relations.find(({ localField }) => localField === 'image')) {\n typeBasedProps.push('image.id', 'image.url', 'image.data');\n }\n\n return { typeBasedProps, shouldAddCategoryProps };\n};\n\nconst getContentProps = isContent => (isContent ? ['url', 'sponsored', 'featured'] : []);\n\nconst getCategoyProps = (shouldAddCategoryProps, hasCategory, hasPreheader) => {\n if (!shouldAddCategoryProps) return [];\n const props = [];\n if (hasCategory)\n props.push('category.name', 'category.listingPageId', 'category.listingPageEntity');\n\n if (hasPreheader) {\n props.push(`${PREHEADER_PROP}{name}`);\n props.push(HEADLINE_PROP);\n }\n\n return props;\n};\n\nexport default buildPropsQuery;\n"],"mappings":"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"}
@@ -3,6 +3,7 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
3
3
  const _excluded = ["component", "imageProps", "childComponents", "options", "textBlockBanners", "hasTextBlockBanners", "siblings"];
4
4
  import React from 'react';
5
5
  import PropTypes from 'prop-types';
6
+ import ErrorBoundary from '@blaze-cms/core-errors-ui';
6
7
  import getComponent from './getComponent';
7
8
  import appendGtmClassName from './append-gtm-classname';
8
9
  import { PB_TYPE_IMAGE, PB_TYPE_BANNER, PB_TYPE_TEXTBLOCK, PB_TYPE_CAROUSEL } from './constants';
@@ -29,7 +30,7 @@ const RenderComponent = _ref => {
29
30
  const imageOptions = isImage ? imageProps : {};
30
31
  if (!Component) return null;
31
32
  const updatedSettings = appendGtmClassName(settings, childComponents);
32
- return /*#__PURE__*/React.createElement(Component, _extends({
33
+ return /*#__PURE__*/React.createElement(ErrorBoundary, null, /*#__PURE__*/React.createElement(Component, _extends({
33
34
  key: id,
34
35
  type: type
35
36
  }, options, imageOptions, nestedComponentsProps, updatedSettings, {
@@ -38,7 +39,7 @@ const RenderComponent = _ref => {
38
39
  siblings: siblings,
39
40
  banners: textBlockBanners,
40
41
  pbOptions: options
41
- }, childComponents) : childComponents);
42
+ }, childComponents) : childComponents));
42
43
  };
43
44
  RenderComponent.propTypes = {
44
45
  component: PropTypes.shape({
@@ -1 +1 @@
1
- {"version":3,"file":"RenderComponent.js","names":["React","PropTypes","getComponent","appendGtmClassName","PB_TYPE_IMAGE","PB_TYPE_BANNER","PB_TYPE_TEXTBLOCK","PB_TYPE_CAROUSEL","BannerContextProvider","RenderComponent","_ref","component","imageProps","childComponents","options","textBlockBanners","hasTextBlockBanners","siblings","nestedComponentsProps","_objectWithoutProperties","_excluded","type","settings","id","name","Component","isImage","includes","imageOptions","updatedSettings","createElement","_extends","key","banners","pbOptions","propTypes","shape","string","object","items","array","isRequired","node","bool","defaultProps"],"sources":["../../../src/hooks/helpers/RenderComponent.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport getComponent from './getComponent';\nimport appendGtmClassName from './append-gtm-classname';\nimport { PB_TYPE_IMAGE, PB_TYPE_BANNER, PB_TYPE_TEXTBLOCK, PB_TYPE_CAROUSEL } from './constants';\nimport { BannerContextProvider } from '../../BannerContext';\n\nconst RenderComponent = ({\n component,\n imageProps,\n childComponents,\n options = {},\n textBlockBanners,\n hasTextBlockBanners,\n siblings,\n ...nestedComponentsProps\n}) => {\n const { type, settings, id, name } = component;\n const Component = getComponent(type);\n const isImage = [PB_TYPE_IMAGE, PB_TYPE_BANNER, PB_TYPE_TEXTBLOCK, PB_TYPE_CAROUSEL].includes(\n type\n );\n const imageOptions = isImage ? imageProps : {};\n if (!Component) return null;\n const updatedSettings = appendGtmClassName(settings, childComponents);\n\n return (\n <Component\n key={id}\n type={type}\n {...options}\n {...imageOptions}\n {...nestedComponentsProps}\n {...updatedSettings}\n name={name || settings.name}>\n {hasTextBlockBanners ? (\n <BannerContextProvider siblings={siblings} banners={textBlockBanners} pbOptions={options}>\n {childComponents}\n </BannerContextProvider>\n ) : (\n childComponents\n )}\n </Component>\n );\n};\n\nRenderComponent.propTypes = {\n component: PropTypes.shape({\n type: PropTypes.string,\n id: PropTypes.string,\n name: PropTypes.string,\n settings: PropTypes.object,\n items: PropTypes.array\n }).isRequired,\n imageProps: PropTypes.object.isRequired,\n options: PropTypes.object.isRequired,\n childComponents: PropTypes.node.isRequired,\n textBlockBanners: PropTypes.array,\n hasTextBlockBanners: PropTypes.bool,\n siblings: PropTypes.array\n};\n\nRenderComponent.defaultProps = { textBlockBanners: null, hasTextBlockBanners: false, siblings: [] };\n\nexport default RenderComponent;\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,YAAY,MAAM,gBAAgB;AACzC,OAAOC,kBAAkB,MAAM,wBAAwB;AACvD,SAASC,aAAa,EAAEC,cAAc,EAAEC,iBAAiB,EAAEC,gBAAgB,QAAQ,aAAa;AAChG,SAASC,qBAAqB,QAAQ,qBAAqB;AAE3D,MAAMC,eAAe,GAAGC,IAAA,IASlB;EAAA,IATmB;MACvBC,SAAS;MACTC,UAAU;MACVC,eAAe;MACfC,OAAO,GAAG,CAAC,CAAC;MACZC,gBAAgB;MAChBC,mBAAmB;MACnBC;IAEF,CAAC,GAAAP,IAAA;IADIQ,qBAAqB,GAAAC,wBAAA,CAAAT,IAAA,EAAAU,SAAA;EAExB,MAAM;IAAEC,IAAI;IAAEC,QAAQ;IAAEC,EAAE;IAAEC;EAAK,CAAC,GAAGb,SAAS;EAC9C,MAAMc,SAAS,GAAGvB,YAAY,CAACmB,IAAI,CAAC;EACpC,MAAMK,OAAO,GAAG,CAACtB,aAAa,EAAEC,cAAc,EAAEC,iBAAiB,EAAEC,gBAAgB,CAAC,CAACoB,QAAQ,CAC3FN,IAAI,CACL;EACD,MAAMO,YAAY,GAAGF,OAAO,GAAGd,UAAU,GAAG,CAAC,CAAC;EAC9C,IAAI,CAACa,SAAS,EAAE,OAAO,IAAI;EAC3B,MAAMI,eAAe,GAAG1B,kBAAkB,CAACmB,QAAQ,EAAET,eAAe,CAAC;EAErE,oBACEb,KAAA,CAAA8B,aAAA,CAACL,SAAS,EAAAM,QAAA;IACRC,GAAG,EAAET,EAAG;IACRF,IAAI,EAAEA;EAAK,GACPP,OAAO,EACPc,YAAY,EACZV,qBAAqB,EACrBW,eAAe;IACnBL,IAAI,EAAEA,IAAI,IAAIF,QAAQ,CAACE;EAAK,IAC3BR,mBAAmB,gBAClBhB,KAAA,CAAA8B,aAAA,CAACtB,qBAAqB;IAACS,QAAQ,EAAEA,QAAS;IAACgB,OAAO,EAAElB,gBAAiB;IAACmB,SAAS,EAAEpB;EAAQ,GACtFD,eAAe,CACM,GAExBA,eACD,CACS;AAEhB,CAAC;AAEDJ,eAAe,CAAC0B,SAAS,GAAG;EAC1BxB,SAAS,EAAEV,SAAS,CAACmC,KAAK,CAAC;IACzBf,IAAI,EAAEpB,SAAS,CAACoC,MAAM;IACtBd,EAAE,EAAEtB,SAAS,CAACoC,MAAM;IACpBb,IAAI,EAAEvB,SAAS,CAACoC,MAAM;IACtBf,QAAQ,EAAErB,SAAS,CAACqC,MAAM;IAC1BC,KAAK,EAAEtC,SAAS,CAACuC;EACnB,CAAC,CAAC,CAACC,UAAU;EACb7B,UAAU,EAAEX,SAAS,CAACqC,MAAM,CAACG,UAAU;EACvC3B,OAAO,EAAEb,SAAS,CAACqC,MAAM,CAACG,UAAU;EACpC5B,eAAe,EAAEZ,SAAS,CAACyC,IAAI,CAACD,UAAU;EAC1C1B,gBAAgB,EAAEd,SAAS,CAACuC,KAAK;EACjCxB,mBAAmB,EAAEf,SAAS,CAAC0C,IAAI;EACnC1B,QAAQ,EAAEhB,SAAS,CAACuC;AACtB,CAAC;AAED/B,eAAe,CAACmC,YAAY,GAAG;EAAE7B,gBAAgB,EAAE,IAAI;EAAEC,mBAAmB,EAAE,KAAK;EAAEC,QAAQ,EAAE;AAAG,CAAC;AAEnG,eAAeR,eAAe"}
1
+ {"version":3,"file":"RenderComponent.js","names":["React","PropTypes","ErrorBoundary","getComponent","appendGtmClassName","PB_TYPE_IMAGE","PB_TYPE_BANNER","PB_TYPE_TEXTBLOCK","PB_TYPE_CAROUSEL","BannerContextProvider","RenderComponent","_ref","component","imageProps","childComponents","options","textBlockBanners","hasTextBlockBanners","siblings","nestedComponentsProps","_objectWithoutProperties","_excluded","type","settings","id","name","Component","isImage","includes","imageOptions","updatedSettings","createElement","_extends","key","banners","pbOptions","propTypes","shape","string","object","items","array","isRequired","node","bool","defaultProps"],"sources":["../../../src/hooks/helpers/RenderComponent.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport ErrorBoundary from '@blaze-cms/core-errors-ui';\nimport getComponent from './getComponent';\nimport appendGtmClassName from './append-gtm-classname';\nimport { PB_TYPE_IMAGE, PB_TYPE_BANNER, PB_TYPE_TEXTBLOCK, PB_TYPE_CAROUSEL } from './constants';\nimport { BannerContextProvider } from '../../BannerContext';\n\nconst RenderComponent = ({\n component,\n imageProps,\n childComponents,\n options = {},\n textBlockBanners,\n hasTextBlockBanners,\n siblings,\n ...nestedComponentsProps\n}) => {\n const { type, settings, id, name } = component;\n const Component = getComponent(type);\n const isImage = [PB_TYPE_IMAGE, PB_TYPE_BANNER, PB_TYPE_TEXTBLOCK, PB_TYPE_CAROUSEL].includes(\n type\n );\n const imageOptions = isImage ? imageProps : {};\n if (!Component) return null;\n const updatedSettings = appendGtmClassName(settings, childComponents);\n\n return (\n <ErrorBoundary>\n <Component\n key={id}\n type={type}\n {...options}\n {...imageOptions}\n {...nestedComponentsProps}\n {...updatedSettings}\n name={name || settings.name}>\n {hasTextBlockBanners ? (\n <BannerContextProvider siblings={siblings} banners={textBlockBanners} pbOptions={options}>\n {childComponents}\n </BannerContextProvider>\n ) : (\n childComponents\n )}\n </Component>\n </ErrorBoundary>\n );\n};\n\nRenderComponent.propTypes = {\n component: PropTypes.shape({\n type: PropTypes.string,\n id: PropTypes.string,\n name: PropTypes.string,\n settings: PropTypes.object,\n items: PropTypes.array\n }).isRequired,\n imageProps: PropTypes.object.isRequired,\n options: PropTypes.object.isRequired,\n childComponents: PropTypes.node.isRequired,\n textBlockBanners: PropTypes.array,\n hasTextBlockBanners: PropTypes.bool,\n siblings: PropTypes.array\n};\n\nRenderComponent.defaultProps = { textBlockBanners: null, hasTextBlockBanners: false, siblings: [] };\n\nexport default RenderComponent;\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,aAAa,MAAM,2BAA2B;AACrD,OAAOC,YAAY,MAAM,gBAAgB;AACzC,OAAOC,kBAAkB,MAAM,wBAAwB;AACvD,SAASC,aAAa,EAAEC,cAAc,EAAEC,iBAAiB,EAAEC,gBAAgB,QAAQ,aAAa;AAChG,SAASC,qBAAqB,QAAQ,qBAAqB;AAE3D,MAAMC,eAAe,GAAGC,IAAA,IASlB;EAAA,IATmB;MACvBC,SAAS;MACTC,UAAU;MACVC,eAAe;MACfC,OAAO,GAAG,CAAC,CAAC;MACZC,gBAAgB;MAChBC,mBAAmB;MACnBC;IAEF,CAAC,GAAAP,IAAA;IADIQ,qBAAqB,GAAAC,wBAAA,CAAAT,IAAA,EAAAU,SAAA;EAExB,MAAM;IAAEC,IAAI;IAAEC,QAAQ;IAAEC,EAAE;IAAEC;EAAK,CAAC,GAAGb,SAAS;EAC9C,MAAMc,SAAS,GAAGvB,YAAY,CAACmB,IAAI,CAAC;EACpC,MAAMK,OAAO,GAAG,CAACtB,aAAa,EAAEC,cAAc,EAAEC,iBAAiB,EAAEC,gBAAgB,CAAC,CAACoB,QAAQ,CAC3FN,IAAI,CACL;EACD,MAAMO,YAAY,GAAGF,OAAO,GAAGd,UAAU,GAAG,CAAC,CAAC;EAC9C,IAAI,CAACa,SAAS,EAAE,OAAO,IAAI;EAC3B,MAAMI,eAAe,GAAG1B,kBAAkB,CAACmB,QAAQ,EAAET,eAAe,CAAC;EAErE,oBACEd,KAAA,CAAA+B,aAAA,CAAC7B,aAAa,qBACZF,KAAA,CAAA+B,aAAA,CAACL,SAAS,EAAAM,QAAA;IACRC,GAAG,EAAET,EAAG;IACRF,IAAI,EAAEA;EAAK,GACPP,OAAO,EACPc,YAAY,EACZV,qBAAqB,EACrBW,eAAe;IACnBL,IAAI,EAAEA,IAAI,IAAIF,QAAQ,CAACE;EAAK,IAC3BR,mBAAmB,gBAClBjB,KAAA,CAAA+B,aAAA,CAACtB,qBAAqB;IAACS,QAAQ,EAAEA,QAAS;IAACgB,OAAO,EAAElB,gBAAiB;IAACmB,SAAS,EAAEpB;EAAQ,GACtFD,eAAe,CACM,GAExBA,eACD,CACS,CACE;AAEpB,CAAC;AAEDJ,eAAe,CAAC0B,SAAS,GAAG;EAC1BxB,SAAS,EAAEX,SAAS,CAACoC,KAAK,CAAC;IACzBf,IAAI,EAAErB,SAAS,CAACqC,MAAM;IACtBd,EAAE,EAAEvB,SAAS,CAACqC,MAAM;IACpBb,IAAI,EAAExB,SAAS,CAACqC,MAAM;IACtBf,QAAQ,EAAEtB,SAAS,CAACsC,MAAM;IAC1BC,KAAK,EAAEvC,SAAS,CAACwC;EACnB,CAAC,CAAC,CAACC,UAAU;EACb7B,UAAU,EAAEZ,SAAS,CAACsC,MAAM,CAACG,UAAU;EACvC3B,OAAO,EAAEd,SAAS,CAACsC,MAAM,CAACG,UAAU;EACpC5B,eAAe,EAAEb,SAAS,CAAC0C,IAAI,CAACD,UAAU;EAC1C1B,gBAAgB,EAAEf,SAAS,CAACwC,KAAK;EACjCxB,mBAAmB,EAAEhB,SAAS,CAAC2C,IAAI;EACnC1B,QAAQ,EAAEjB,SAAS,CAACwC;AACtB,CAAC;AAED/B,eAAe,CAACmC,YAAY,GAAG;EAAE7B,gBAAgB,EAAE,IAAI;EAAEC,mBAAmB,EAAE,KAAK;EAAEC,QAAQ,EAAE;AAAG,CAAC;AAEnG,eAAeR,eAAe"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaze-cms/react-page-builder",
3
- "version": "0.128.0-core-styles.0",
3
+ "version": "0.128.0",
4
4
  "description": "Blaze react page builder",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-es/index.js",
@@ -27,14 +27,15 @@
27
27
  },
28
28
  "license": "GPL-3.0",
29
29
  "dependencies": {
30
- "@blaze-cms/core-auth-ui": "0.128.0-core-styles.0",
30
+ "@blaze-cms/core-auth-ui": "^0.128.0",
31
31
  "@blaze-cms/core-errors": "^0.127.0",
32
- "@blaze-cms/image-cdn-react": "0.3.0-alpha.3",
33
- "@blaze-cms/nextjs-components": "0.128.0-core-styles.0",
34
- "@blaze-cms/plugin-search-ui": "0.128.0-core-styles.0",
35
- "@blaze-cms/setup-ui": "0.128.0-core-styles.0",
36
- "@blaze-cms/utils": "0.128.0-core-styles.0",
37
- "@blaze-cms/utils-handlebars": "0.128.0-core-styles.0",
32
+ "@blaze-cms/core-errors-ui": "^0.128.0",
33
+ "@blaze-cms/image-cdn-react": "0.3.0-alpha.5",
34
+ "@blaze-cms/nextjs-components": "^0.128.0",
35
+ "@blaze-cms/plugin-search-ui": "^0.128.0",
36
+ "@blaze-cms/setup-ui": "^0.128.0",
37
+ "@blaze-cms/utils": "^0.128.0",
38
+ "@blaze-cms/utils-handlebars": "^0.128.0",
38
39
  "@blaze-react/breadcrumb": "0.8.0-alpha.60",
39
40
  "@blaze-react/button": "0.5.19",
40
41
  "@blaze-react/checkboxes": "0.5.31",
@@ -88,5 +89,5 @@
88
89
  "lib/*",
89
90
  "lib-es/*"
90
91
  ],
91
- "gitHead": "91cbf4e36ff8860f2e2ef140ee6e132fe2cbf0f6"
92
+ "gitHead": "fb7948536c8e7ab915cf63397b6885c272f79be2"
92
93
  }
@@ -134,11 +134,11 @@ const Card = ({
134
134
  <div className="badge badge--label">{label}</div>
135
135
  ))}
136
136
  {displayTitle && (
137
- <h2 className={titleWrapperModifier}>
137
+ <div className={titleWrapperModifier}>
138
138
  <BlazeLink title={linkTitle} gtmId={gtmId} href={url} scroll>
139
139
  {headline}
140
140
  </BlazeLink>
141
- </h2>
141
+ </div>
142
142
  )}
143
143
  {!!parsedPropsToDisplay.length && (
144
144
  <div className={getModifiers('card__details', modifiers)}>
@@ -9,8 +9,9 @@ import Card from './Card';
9
9
  import { getDynamicGridClasses } from './helpers';
10
10
  import { getEntitiesWithBanner, parsePropsToDisplay } from '../../helpers';
11
11
  import { getPropsToDisplayModifiers } from '../../utils';
12
+ import { checkIfShouldRenderBanner, checkNewBannerSettings } from '../List/components/helpers';
12
13
 
13
- const CardsContainer = ({
14
+ const CardContainer = ({
14
15
  cardData,
15
16
  gridModifier,
16
17
  style,
@@ -36,14 +37,20 @@ const CardsContainer = ({
36
37
  titleOverlayModifier,
37
38
  ...cardProps
38
39
  }) => {
39
- const cardsWithBanners = getEntitiesWithBanner(cardData, cardProps);
40
40
  const { itemId } = useContext(MainContext);
41
+ const { banner } = cardProps;
42
+ // TODO: remove this check and all associated code once old banner setup is no longer supported
43
+ const hasNewBannerSettings = checkNewBannerSettings(banner);
44
+ const parsedCardsData = hasNewBannerSettings
45
+ ? cardData
46
+ : getEntitiesWithBanner(cardData, cardProps);
41
47
  const propsToDisplayModifiers = getPropsToDisplayModifiers(propsToDisplay);
42
48
  const dynamicWrapperSizes = enableCarousel
43
49
  ? ''
44
50
  : getDynamicGridClasses('grid', itemsPerRow, designConfig);
45
- let renderCounter = 0;
46
51
  const CardWrapper = enableCarousel ? CarouselWrapper : Wrapper;
52
+ let bannerIndex = 0;
53
+ const bannerProps = banner ? { ...cardProps, ...banner, type: 'banner' } : null;
47
54
 
48
55
  return (
49
56
  <CardWrapper
@@ -53,13 +60,48 @@ const CardsContainer = ({
53
60
  bannerModifier={bannerModifier}
54
61
  enableAutoScroll={enableAutoScroll}
55
62
  autoScrollTimer={autoScrollTimer}>
56
- {cardsWithBanners.map(({ baseAdunit, id, ...entityProps }, index) => {
63
+ {parsedCardsData.map((currentEntity, index) => {
64
+ const { baseAdunit, id, ...entityProps } = currentEntity;
65
+ const shouldRenderBanner = !!bannerProps && checkIfShouldRenderBanner(index, banner);
57
66
  const extraProps = parsePropsToDisplay(entityProps, propsToDisplay);
58
67
  const dynamicKey = [itemId, index].join('-');
59
- if (baseAdunit) renderCounter += 1;
60
-
61
68
  const priority = priorityLimit > 0 && index + 1 <= priorityLimit;
69
+ if (hasNewBannerSettings && shouldRenderBanner) bannerIndex += 1;
70
+ if (!hasNewBannerSettings && baseAdunit) bannerIndex += 1;
71
+ const parsedCardProps = {
72
+ key: id,
73
+ id,
74
+ enableCarousel,
75
+ graphqlEntityMap,
76
+ propsToDisplay,
77
+ parsedPropsToDisplay: extraProps,
78
+ propsToDisplayModifiers,
79
+ modifier,
80
+ style,
81
+ cardChildren,
82
+ gtmChildren,
83
+ gtmId: name,
84
+ gridModifier,
85
+ entityProps,
86
+ displayCategory,
87
+ displayThumbnail,
88
+ displayTitle,
89
+ priority,
90
+ enableOverlay,
91
+ overlayModifier,
92
+ titleOverlayModifier,
93
+ ...entityProps
94
+ };
62
95
 
96
+ if (hasNewBannerSettings)
97
+ return (
98
+ <>
99
+ <Card key={id} {...parsedCardProps} />
100
+ {shouldRenderBanner && (
101
+ <Banner key={dynamicKey} {...bannerProps} renderCounter={bannerIndex} />
102
+ )}
103
+ </>
104
+ );
63
105
  return baseAdunit ? (
64
106
  <Banner
65
107
  key={dynamicKey}
@@ -67,44 +109,21 @@ const CardsContainer = ({
67
109
  baseAdunit={baseAdunit}
68
110
  {...entityProps}
69
111
  modifier={modifier}
70
- renderCounter={renderCounter}
112
+ renderCounter={bannerIndex}
71
113
  />
72
114
  ) : (
73
- <Card
74
- key={id}
75
- id={id}
76
- enableCarousel={enableCarousel}
77
- graphqlEntityMap={graphqlEntityMap}
78
- propsToDisplay={propsToDisplay}
79
- parsedPropsToDisplay={extraProps}
80
- propsToDisplayModifiers={propsToDisplayModifiers}
81
- modifier={modifier}
82
- style={style}
83
- cardChildren={cardChildren}
84
- gtmChildren={gtmChildren}
85
- gtmId={name}
86
- gridModifier={gridModifier}
87
- entityProps={entityProps}
88
- displayCategory={displayCategory}
89
- displayThumbnail={displayThumbnail}
90
- displayTitle={displayTitle}
91
- priority={priority}
92
- enableOverlay={enableOverlay}
93
- overlayModifier={overlayModifier}
94
- titleOverlayModifier={titleOverlayModifier}
95
- {...entityProps}
96
- />
115
+ <Card key={id} {...parsedCardProps} />
97
116
  );
98
117
  })}
99
118
  </CardWrapper>
100
119
  );
101
120
  };
102
121
 
103
- CardsContainer.propTypes = {
122
+ CardContainer.propTypes = {
104
123
  cardData: PropTypes.array.isRequired,
124
+ graphqlEntityMap: PropTypes.object.isRequired,
105
125
  name: PropTypes.string,
106
126
  entity: PropTypes.string.isRequired,
107
- graphqlEntityMap: PropTypes.object.isRequired,
108
127
  gridModifier: PropTypes.string,
109
128
  gtmChildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),
110
129
  cardChildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),
@@ -126,7 +145,7 @@ CardsContainer.propTypes = {
126
145
  autoScrollTimer: PropTypes.number
127
146
  };
128
147
 
129
- CardsContainer.defaultProps = {
148
+ CardContainer.defaultProps = {
130
149
  gtmChildren: [],
131
150
  cardChildren: [],
132
151
  name: '',
@@ -149,4 +168,4 @@ CardsContainer.defaultProps = {
149
168
  titleOverlayModifier: ''
150
169
  };
151
170
 
152
- export default withTitle(CardsContainer);
171
+ export default withTitle(CardContainer);
@@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
4
4
  import { MainContext } from '@blaze-cms/nextjs-components';
5
5
  import { getSingleEntitySchema } from '../../application/query';
6
6
  import { buildPropsQuery, checkPropsToUse } from '../../helpers';
7
- import { getDataSummaryQuery } from './helpers';
7
+ import { getDataSummaryQuery, getLinkProps } from './helpers';
8
8
  import DataSummaryRender from './DataSummaryRender';
9
9
 
10
10
  const DataSummaryFactory = ({
@@ -31,7 +31,8 @@ const DataSummaryFactory = ({
31
31
  if (!data) return null;
32
32
  if (!propsToDisplay || !propsToDisplay.length) return null;
33
33
  const propsToDisplayValues = checkPropsToUse(propsToDisplay);
34
- const propsQueryString = buildPropsQuery(data, propsToDisplayValues);
34
+ const linkProps = getLinkProps(propsToDisplay);
35
+ const propsQueryString = buildPropsQuery(data, propsToDisplayValues, null, linkProps);
35
36
  const dataSummaryQuery = getDataSummaryQuery(data, isPreview, propsQueryString);
36
37
  const recordId = dataRecordId[0] || dataSummaryProps.parent.itemId;
37
38
 
@@ -13,7 +13,7 @@ const ItemDetailsSummaryContent = ({ summaryPropsWithContent }) => {
13
13
 
14
14
  return (
15
15
  <span className={modifier} key={dynamicKey}>
16
- {wrappedValue}
16
+ {key && <span className="item-details-summary-label">{key}</span>} {wrappedValue}
17
17
  </span>
18
18
  );
19
19
  });
@@ -0,0 +1,7 @@
1
+ const getLinkProps = (props = []) =>
2
+ props
3
+ .map(({ propertiesToDisplay, enableLink }) => enableLink && propertiesToDisplay)
4
+ .flat()
5
+ .filter(Boolean);
6
+
7
+ export default getLinkProps;
@@ -1,12 +1,8 @@
1
1
  const getLinkToPublishedContent = (key = '', props = {}) => {
2
- if (key.includes('published')) {
3
- const [baseKey] = key.split('.');
4
- if (!props[baseKey]) return '';
5
-
6
- const content = Array.isArray(props[baseKey]) ? props[baseKey][0] : props[baseKey];
7
- return content && content.url ? content.url : '';
8
- }
9
- return '';
2
+ const [baseKey] = key.split('.');
3
+ if (!props[baseKey]) return '';
4
+ const content = Array.isArray(props[baseKey]) ? props[baseKey][0] : props[baseKey];
5
+ return content && content.url ? content.url : '';
10
6
  };
11
7
 
12
8
  export default getLinkToPublishedContent;
@@ -5,6 +5,7 @@ import stripSummaryPropsContent from './strip-summary-props-content';
5
5
  import buildLoopPropsContent from './build-loop-props-content';
6
6
  import parseBooleanValues from './parse-boolean-values';
7
7
  import getLinkBasedOnValue from './get-link-based-on-value';
8
+ import getLinkProps from './get-link-props';
8
9
 
9
10
  export {
10
11
  getDataSummaryQuery,
@@ -13,5 +14,6 @@ export {
13
14
  stripSummaryPropsContent,
14
15
  buildLoopPropsContent,
15
16
  parseBooleanValues,
16
- getLinkBasedOnValue
17
+ getLinkBasedOnValue,
18
+ getLinkProps
17
19
  };
@@ -78,7 +78,7 @@ const Image = ({
78
78
 
79
79
  return (
80
80
  <Wrapper ref={outerRef} className={wrapperClassName} modifiers={modifiers} {...otherProps}>
81
- {elementTitle && <h2 className="heading heading--section">{elementTitle}</h2>}
81
+ {elementTitle && <div className="heading heading--section">{elementTitle}</div>}
82
82
  {shouldDisplayImage && (
83
83
  <ImgWrapper {...imgWrapperProps}>
84
84
  <ImageRender
@@ -17,7 +17,6 @@ const FullRender = ({ orderedListData, omitWrappers, paginationType, ...props })
17
17
  ? { hasBanner, parent, entity, propsToDisplay, ...banner, type: BANNER }
18
18
  : null;
19
19
  let bannerIndex = 0;
20
-
21
20
  const WrapperToUse = omitWrappers ? Fragment : Wrapper;
22
21
 
23
22
  return (