@blaze-cms/react-page-builder 0.112.0-alpha.0 → 0.113.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 (46) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/lib/components/List/ListBuilder.js +4 -0
  3. package/lib/components/List/ListBuilder.js.map +1 -1
  4. package/lib/components/List/ListFactory.js +4 -0
  5. package/lib/components/List/ListFactory.js.map +1 -1
  6. package/lib/components/List/ListRender.js +4 -0
  7. package/lib/components/List/ListRender.js.map +1 -1
  8. package/lib/components/List/components/Cards/CardsRender.js +26 -3
  9. package/lib/components/List/components/Cards/CardsRender.js.map +1 -1
  10. package/lib/components/List/components/Cards/CardsRenderWrapper.js +25 -3
  11. package/lib/components/List/components/Cards/CardsRenderWrapper.js.map +1 -1
  12. package/lib/components/List/components/Full/FullRender.js +25 -3
  13. package/lib/components/List/components/Full/FullRender.js.map +1 -1
  14. package/lib/components/List/components/Pagination/ListPagination.js +1 -10
  15. package/lib/components/List/components/Pagination/ListPagination.js.map +1 -1
  16. package/lib-es/components/List/ListBuilder.js +4 -0
  17. package/lib-es/components/List/ListBuilder.js.map +1 -1
  18. package/lib-es/components/List/ListFactory.js +4 -0
  19. package/lib-es/components/List/ListFactory.js.map +1 -1
  20. package/lib-es/components/List/ListRender.js +4 -0
  21. package/lib-es/components/List/ListRender.js.map +1 -1
  22. package/lib-es/components/List/components/Cards/CardsRender.js +9 -3
  23. package/lib-es/components/List/components/Cards/CardsRender.js.map +1 -1
  24. package/lib-es/components/List/components/Cards/CardsRenderWrapper.js +7 -3
  25. package/lib-es/components/List/components/Cards/CardsRenderWrapper.js.map +1 -1
  26. package/lib-es/components/List/components/Full/FullRender.js +8 -3
  27. package/lib-es/components/List/components/Full/FullRender.js.map +1 -1
  28. package/lib-es/components/List/components/Pagination/ListPagination.js +1 -10
  29. package/lib-es/components/List/components/Pagination/ListPagination.js.map +1 -1
  30. package/package.json +2 -2
  31. package/src/components/List/ListBuilder.js +4 -0
  32. package/src/components/List/ListFactory.js +4 -0
  33. package/src/components/List/ListRender.js +4 -0
  34. package/src/components/List/components/Cards/CardsRender.js +11 -3
  35. package/src/components/List/components/Cards/CardsRenderWrapper.js +14 -4
  36. package/src/components/List/components/Full/FullRender.js +10 -4
  37. package/src/components/List/components/Pagination/ListPagination.js +1 -15
  38. package/tests/unit/src/components/List/components/Cards/CardsRender.test.js +9 -1
  39. package/tests/unit/src/components/List/components/Cards/CardsRenderWrapper.test.js +9 -1
  40. package/tests/unit/src/components/List/components/Cards/__snapshots__/CardsRender.test.js.snap +69 -2
  41. package/tests/unit/src/components/List/components/Cards/__snapshots__/CardsRenderWrapper.test.js.snap +14 -1
  42. package/tests/unit/src/components/List/components/Full/FullRender.test.js +6 -1
  43. package/tests/unit/src/components/List/components/Full/FullRenderItem.test.js +1 -1
  44. package/tests/unit/src/components/List/components/Full/__snapshots__/FullRender.test.js.snap +16 -2
  45. package/tests/unit/src/components/List/components/Full/__snapshots__/FullRenderItem.test.js.snap +1 -1
  46. package/tests/unit/src/components/List/components/Pagination/ListPagination.test.js +21 -6
@@ -26,20 +26,11 @@ const ListPagination = _ref => {
26
26
 
27
27
  const [showPagination, setShowPagination] = useState(true);
28
28
  const paginationRef = useRef(null);
29
+ const isLoadMore = paginationType === LOAD_MORE;
29
30
  useEffect(() => {
30
31
  if (isInfinite) setShowPagination(false);
31
32
  }, [isInfinite]);
32
- useEffect(() => {
33
- if (paginationRef && paginationRef.current) {
34
- window.scrollTo({
35
- left: 0,
36
- top: window.pageYOffset - 100 + paginationRef.current.parentNode.getBoundingClientRect().top,
37
- behavior: 'smooth'
38
- });
39
- }
40
- }, [currentPage]);
41
33
  if (!showPagination) return null;
42
- const isLoadMore = paginationType === LOAD_MORE;
43
34
  const totalRecordsToFetch = limitToUse || listTotal;
44
35
  const numberOfPages = Math.ceil(totalRecordsToFetch / itemsPerPage);
45
36
  const isLastPage = currentPage >= numberOfPages;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/List/components/Pagination/ListPagination.js"],"names":["React","useState","useEffect","useRef","PropTypes","Classic","LoadMore","LOAD_MORE","ListPagination","listTotal","name","itemsPerPage","isInfinite","limitToUse","paginationType","currentPage","props","showPagination","setShowPagination","paginationRef","current","window","scrollTo","left","top","pageYOffset","parentNode","getBoundingClientRect","behavior","isLoadMore","totalRecordsToFetch","numberOfPages","Math","ceil","isLastPage","paginationProps","propTypes","number","isRequired","string","bool","defaultProps"],"mappings":";;;;;;;;AAAA,OAAOA,KAAP,IAAgBC,QAAhB,EAA0BC,SAA1B,EAAqCC,MAArC,QAAmD,OAAnD;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAOC,QAAP,MAAqB,YAArB;AACA,SAASC,SAAT,QAA0B,uBAA1B;;AAEA,MAAMC,cAAc,GAAG,QASjB;AAAA,MATkB;AACtBC,IAAAA,SADsB;AAEtBC,IAAAA,IAFsB;AAGtBC,IAAAA,YAHsB;AAItBC,IAAAA,UAJsB;AAKtBC,IAAAA,UALsB;AAMtBC,IAAAA,cANsB;AAOtBC,IAAAA;AAPsB,GASlB;AAAA,MADDC,KACC;;AACJ,QAAM,CAACC,cAAD,EAAiBC,iBAAjB,IAAsCjB,QAAQ,CAAC,IAAD,CAApD;AACA,QAAMkB,aAAa,GAAGhB,MAAM,CAAC,IAAD,CAA5B;AAEAD,EAAAA,SAAS,CACP,MAAM;AACJ,QAAIU,UAAJ,EAAgBM,iBAAiB,CAAC,KAAD,CAAjB;AACjB,GAHM,EAIP,CAACN,UAAD,CAJO,CAAT;AAOAV,EAAAA,SAAS,CACP,MAAM;AACJ,QAAIiB,aAAa,IAAIA,aAAa,CAACC,OAAnC,EAA4C;AAC1CC,MAAAA,MAAM,CAACC,QAAP,CAAgB;AACdC,QAAAA,IAAI,EAAE,CADQ;AAEdC,QAAAA,GAAG,EACDH,MAAM,CAACI,WAAP,GAAqB,GAArB,GAA2BN,aAAa,CAACC,OAAd,CAAsBM,UAAtB,CAAiCC,qBAAjC,GAAyDH,GAHxE;AAIdI,QAAAA,QAAQ,EAAE;AAJI,OAAhB;AAMD;AACF,GAVM,EAWP,CAACb,WAAD,CAXO,CAAT;AAcA,MAAI,CAACE,cAAL,EAAqB,OAAO,IAAP;AACrB,QAAMY,UAAU,GAAGf,cAAc,KAAKP,SAAtC;AACA,QAAMuB,mBAAmB,GAAGjB,UAAU,IAAIJ,SAA1C;AAEA,QAAMsB,aAAa,GAAGC,IAAI,CAACC,IAAL,CAAUH,mBAAmB,GAAGnB,YAAhC,CAAtB;AACA,QAAMuB,UAAU,GAAGnB,WAAW,IAAIgB,aAAlC;AACA,MAAIA,aAAa,IAAI,CAAjB,IAAuBG,UAAU,IAAItB,UAAzC,EAAsD,OAAO,IAAP;;AAEtD,QAAMuB,eAAe;AACnBzB,IAAAA,IADmB;AAEnBqB,IAAAA,aAFmB;AAGnBhB,IAAAA,WAHmB;AAInBmB,IAAAA;AAJmB,KAKhBlB,KALgB,CAArB;;AAQA,sBACE;AAAK,IAAA,SAAS,EAAC,YAAf;AAA4B,IAAA,GAAG,EAAEG;AAAjC,KACGU,UAAU,gBAAG,oBAAC,QAAD,EAAcM,eAAd,CAAH,gBAAuC,oBAAC,OAAD,EAAaA,eAAb,CADpD,CADF;AAKD,CAvDD;;AAyDA3B,cAAc,CAAC4B,SAAf,GAA2B;AACzBrB,EAAAA,WAAW,EAAEX,SAAS,CAACiC,MAAV,CAAiBC,UADL;AAEzBxB,EAAAA,cAAc,EAAEV,SAAS,CAACmC,MAAV,CAAiBD,UAFR;AAGzB7B,EAAAA,SAAS,EAAEL,SAAS,CAACiC,MAAV,CAAiBC,UAHH;AAIzB1B,EAAAA,UAAU,EAAER,SAAS,CAACoC,IAAV,CAAeF,UAJF;AAKzB3B,EAAAA,YAAY,EAAEP,SAAS,CAACiC,MAAV,CAAiBC,UALN;AAMzB5B,EAAAA,IAAI,EAAEN,SAAS,CAACmC,MAAV,CAAiBD,UANE;AAOzBzB,EAAAA,UAAU,EAAET,SAAS,CAACiC;AAPG,CAA3B;AAUA7B,cAAc,CAACiC,YAAf,GAA8B;AAC5B5B,EAAAA,UAAU,EAAE;AADgB,CAA9B;AAIA,eAAeL,cAAf","sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport Classic from './Classic';\nimport LoadMore from './LoadMore';\nimport { LOAD_MORE } from '../../../../constants';\n\nconst ListPagination = ({\n listTotal,\n name,\n itemsPerPage,\n isInfinite,\n limitToUse,\n paginationType,\n currentPage,\n ...props\n}) => {\n const [showPagination, setShowPagination] = useState(true);\n const paginationRef = useRef(null);\n\n useEffect(\n () => {\n if (isInfinite) setShowPagination(false);\n },\n [isInfinite]\n );\n\n useEffect(\n () => {\n if (paginationRef && paginationRef.current) {\n window.scrollTo({\n left: 0,\n top:\n window.pageYOffset - 100 + paginationRef.current.parentNode.getBoundingClientRect().top,\n behavior: 'smooth'\n });\n }\n },\n [currentPage]\n );\n\n if (!showPagination) return null;\n const isLoadMore = paginationType === LOAD_MORE;\n const totalRecordsToFetch = limitToUse || listTotal;\n\n const numberOfPages = Math.ceil(totalRecordsToFetch / itemsPerPage);\n const isLastPage = currentPage >= numberOfPages;\n if (numberOfPages <= 1 || (isLastPage && isInfinite)) return null;\n\n const paginationProps = {\n name,\n numberOfPages,\n currentPage,\n isLastPage,\n ...props\n };\n\n return (\n <div className=\"pagination\" ref={paginationRef}>\n {isLoadMore ? <LoadMore {...paginationProps} /> : <Classic {...paginationProps} />}\n </div>\n );\n};\n\nListPagination.propTypes = {\n currentPage: PropTypes.number.isRequired,\n paginationType: PropTypes.string.isRequired,\n listTotal: PropTypes.number.isRequired,\n isInfinite: PropTypes.bool.isRequired,\n itemsPerPage: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n limitToUse: PropTypes.number\n};\n\nListPagination.defaultProps = {\n limitToUse: null\n};\n\nexport default ListPagination;\n"],"file":"ListPagination.js"}
1
+ {"version":3,"sources":["../../../../../src/components/List/components/Pagination/ListPagination.js"],"names":["React","useState","useEffect","useRef","PropTypes","Classic","LoadMore","LOAD_MORE","ListPagination","listTotal","name","itemsPerPage","isInfinite","limitToUse","paginationType","currentPage","props","showPagination","setShowPagination","paginationRef","isLoadMore","totalRecordsToFetch","numberOfPages","Math","ceil","isLastPage","paginationProps","propTypes","number","isRequired","string","bool","defaultProps"],"mappings":";;;;;;;;AAAA,OAAOA,KAAP,IAAgBC,QAAhB,EAA0BC,SAA1B,EAAqCC,MAArC,QAAmD,OAAnD;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAOC,QAAP,MAAqB,YAArB;AACA,SAASC,SAAT,QAA0B,uBAA1B;;AAEA,MAAMC,cAAc,GAAG,QASjB;AAAA,MATkB;AACtBC,IAAAA,SADsB;AAEtBC,IAAAA,IAFsB;AAGtBC,IAAAA,YAHsB;AAItBC,IAAAA,UAJsB;AAKtBC,IAAAA,UALsB;AAMtBC,IAAAA,cANsB;AAOtBC,IAAAA;AAPsB,GASlB;AAAA,MADDC,KACC;;AACJ,QAAM,CAACC,cAAD,EAAiBC,iBAAjB,IAAsCjB,QAAQ,CAAC,IAAD,CAApD;AACA,QAAMkB,aAAa,GAAGhB,MAAM,CAAC,IAAD,CAA5B;AACA,QAAMiB,UAAU,GAAGN,cAAc,KAAKP,SAAtC;AAEAL,EAAAA,SAAS,CACP,MAAM;AACJ,QAAIU,UAAJ,EAAgBM,iBAAiB,CAAC,KAAD,CAAjB;AACjB,GAHM,EAIP,CAACN,UAAD,CAJO,CAAT;AAOA,MAAI,CAACK,cAAL,EAAqB,OAAO,IAAP;AACrB,QAAMI,mBAAmB,GAAGR,UAAU,IAAIJ,SAA1C;AAEA,QAAMa,aAAa,GAAGC,IAAI,CAACC,IAAL,CAAUH,mBAAmB,GAAGV,YAAhC,CAAtB;AACA,QAAMc,UAAU,GAAGV,WAAW,IAAIO,aAAlC;AACA,MAAIA,aAAa,IAAI,CAAjB,IAAuBG,UAAU,IAAIb,UAAzC,EAAsD,OAAO,IAAP;;AAEtD,QAAMc,eAAe;AACnBhB,IAAAA,IADmB;AAEnBY,IAAAA,aAFmB;AAGnBP,IAAAA,WAHmB;AAInBU,IAAAA;AAJmB,KAKhBT,KALgB,CAArB;;AAQA,sBACE;AAAK,IAAA,SAAS,EAAC,YAAf;AAA4B,IAAA,GAAG,EAAEG;AAAjC,KACGC,UAAU,gBAAG,oBAAC,QAAD,EAAcM,eAAd,CAAH,gBAAuC,oBAAC,OAAD,EAAaA,eAAb,CADpD,CADF;AAKD,CAzCD;;AA2CAlB,cAAc,CAACmB,SAAf,GAA2B;AACzBZ,EAAAA,WAAW,EAAEX,SAAS,CAACwB,MAAV,CAAiBC,UADL;AAEzBf,EAAAA,cAAc,EAAEV,SAAS,CAAC0B,MAAV,CAAiBD,UAFR;AAGzBpB,EAAAA,SAAS,EAAEL,SAAS,CAACwB,MAAV,CAAiBC,UAHH;AAIzBjB,EAAAA,UAAU,EAAER,SAAS,CAAC2B,IAAV,CAAeF,UAJF;AAKzBlB,EAAAA,YAAY,EAAEP,SAAS,CAACwB,MAAV,CAAiBC,UALN;AAMzBnB,EAAAA,IAAI,EAAEN,SAAS,CAAC0B,MAAV,CAAiBD,UANE;AAOzBhB,EAAAA,UAAU,EAAET,SAAS,CAACwB;AAPG,CAA3B;AAUApB,cAAc,CAACwB,YAAf,GAA8B;AAC5BnB,EAAAA,UAAU,EAAE;AADgB,CAA9B;AAIA,eAAeL,cAAf","sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport Classic from './Classic';\nimport LoadMore from './LoadMore';\nimport { LOAD_MORE } from '../../../../constants';\n\nconst ListPagination = ({\n listTotal,\n name,\n itemsPerPage,\n isInfinite,\n limitToUse,\n paginationType,\n currentPage,\n ...props\n}) => {\n const [showPagination, setShowPagination] = useState(true);\n const paginationRef = useRef(null);\n const isLoadMore = paginationType === LOAD_MORE;\n\n useEffect(\n () => {\n if (isInfinite) setShowPagination(false);\n },\n [isInfinite]\n );\n\n if (!showPagination) return null;\n const totalRecordsToFetch = limitToUse || listTotal;\n\n const numberOfPages = Math.ceil(totalRecordsToFetch / itemsPerPage);\n const isLastPage = currentPage >= numberOfPages;\n if (numberOfPages <= 1 || (isLastPage && isInfinite)) return null;\n\n const paginationProps = {\n name,\n numberOfPages,\n currentPage,\n isLastPage,\n ...props\n };\n\n return (\n <div className=\"pagination\" ref={paginationRef}>\n {isLoadMore ? <LoadMore {...paginationProps} /> : <Classic {...paginationProps} />}\n </div>\n );\n};\n\nListPagination.propTypes = {\n currentPage: PropTypes.number.isRequired,\n paginationType: PropTypes.string.isRequired,\n listTotal: PropTypes.number.isRequired,\n isInfinite: PropTypes.bool.isRequired,\n itemsPerPage: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n limitToUse: PropTypes.number\n};\n\nListPagination.defaultProps = {\n limitToUse: null\n};\n\nexport default ListPagination;\n"],"file":"ListPagination.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaze-cms/react-page-builder",
3
- "version": "0.112.0-alpha.0",
3
+ "version": "0.113.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": "5d74d74de0077c0c9dc79a7336cbfd584a35c325"
91
+ "gitHead": "c51eb46da13b5cbc6462618fb1712a4429186589"
92
92
  }
@@ -40,6 +40,7 @@ const ListBuilder = props => {
40
40
  sortby,
41
41
  sort,
42
42
  paginationIndex,
43
+ omitWrappers,
43
44
  operator,
44
45
  filterOperator,
45
46
  currentSchema,
@@ -161,6 +162,7 @@ const ListBuilder = props => {
161
162
  limitToUse={limitToUse}
162
163
  itemsPerPageToUse={itemsPerPageToUse}
163
164
  action={action}
165
+ omitWrappers={omitWrappers}
164
166
  listComponent={listComponent}
165
167
  listAggregations={updatedAggregations}
166
168
  isAZ={isAZ}
@@ -188,6 +190,7 @@ ListBuilder.propTypes = {
188
190
  entityData: PropTypes.object,
189
191
  itemsToDisplay: PropTypes.array,
190
192
  limit: PropTypes.number,
193
+ omitWrappers: PropTypes.bool,
191
194
  offset: PropTypes.number,
192
195
  sortby: PropTypes.array.isRequired,
193
196
  sort: PropTypes.string.isRequired,
@@ -201,6 +204,7 @@ ListBuilder.defaultProps = {
201
204
  entityData: {},
202
205
  itemsToDisplay: [],
203
206
  limit: 0,
207
+ omitWrappers: false,
204
208
  offset: 0,
205
209
  paginationType: 'infinite',
206
210
  inheritedFilters: [],
@@ -31,6 +31,7 @@ const ListFactory = props => {
31
31
  name,
32
32
  filterByProperty,
33
33
  filterBy,
34
+ omitWrappers,
34
35
  type,
35
36
  sortby: defaultSortBy,
36
37
  sort: defaultSort,
@@ -132,6 +133,7 @@ const ListFactory = props => {
132
133
  filterEntitySchema,
133
134
  requiredSchema,
134
135
  currentSchema,
136
+ omitWrappers,
135
137
  operator,
136
138
  isTextSearchFilterApplied,
137
139
  paginationIndex,
@@ -149,6 +151,7 @@ ListFactory.propTypes = {
149
151
  type: PropTypes.string.isRequired,
150
152
  filterBy: PropTypes.array,
151
153
  filterByProperty: PropTypes.array,
154
+ omitWrappers: PropTypes.bool,
152
155
  operator: PropTypes.string,
153
156
  name: PropTypes.string,
154
157
  sortby: PropTypes.array,
@@ -159,6 +162,7 @@ ListFactory.propTypes = {
159
162
  ListFactory.defaultProps = {
160
163
  filterBy: [],
161
164
  filterByProperty: [],
165
+ omitWrappers: false,
162
166
  name: '',
163
167
  sortby: [],
164
168
  sort: '',
@@ -17,6 +17,7 @@ const ListRender = props => {
17
17
  limitToUse,
18
18
  initialOffset,
19
19
  isInfinite,
20
+ omitWrappers,
20
21
  paginationType,
21
22
  listComponent: ListComponent,
22
23
  query,
@@ -57,6 +58,7 @@ const ListRender = props => {
57
58
  actionKey={actionKey}
58
59
  limitToUse={limitToUse}
59
60
  fetchMore={fetchMore}
61
+ omitWrappers={omitWrappers}
60
62
  itemsPerPageToUse={itemsPerPageToUse || listData.length}
61
63
  listTotal={listTotal}
62
64
  currentListLength={currentListLength}
@@ -94,6 +96,7 @@ ListRender.propTypes = {
94
96
  limitToUse: PropTypes.number.isRequired,
95
97
  initialOffset: PropTypes.number.isRequired,
96
98
  isInfinite: PropTypes.bool.isRequired,
99
+ omitWrappers: PropTypes.bool,
97
100
  query: PropTypes.object.isRequired,
98
101
  url: PropTypes.string.isRequired,
99
102
  listComponent: PropTypes.func.isRequired,
@@ -105,6 +108,7 @@ ListRender.propTypes = {
105
108
  };
106
109
 
107
110
  ListRender.defaultProps = {
111
+ omitWrappers: false,
108
112
  itemsToDisplay: [],
109
113
  listAggregations: [],
110
114
  displayTotal: false
@@ -1,7 +1,8 @@
1
- import React from 'react';
1
+ import React, { Fragment } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import CardsRenderWrapper from './CardsRenderWrapper';
4
4
  import { BANNER } from '../../constants';
5
+ import Wrapper from '../../../Wrapper';
5
6
  import { splitChildren, appendImages } from '../../../../helpers';
6
7
  import { getPropsToDisplayModifiers } from '../../../../utils';
7
8
  import ListPagination from '../Pagination';
@@ -14,6 +15,7 @@ const CardsRender = ({
14
15
  children,
15
16
  entity,
16
17
  banner,
18
+ omitWrappers,
17
19
  propsToDisplay,
18
20
  paginationType,
19
21
  parent,
@@ -38,15 +40,18 @@ const CardsRender = ({
38
40
  if (imagesLoading) return '';
39
41
  const updatedListWithImages = appendImages(imagesData, orderedListData, itemsToDisplay);
40
42
 
43
+ const WrapperToUse = omitWrappers ? Fragment : Wrapper;
44
+
41
45
  return (
42
46
  <>
43
- <div className="list list--compact">
47
+ <WrapperToUse className="list list--compact">
44
48
  <CardsRenderWrapper
45
49
  orderedListData={updatedListWithImages}
46
50
  listProps={props}
47
51
  bannerProps={bannerProps}
48
52
  cardChildren={regularChildren}
49
53
  gtmChildren={gtmChildren}
54
+ omitWrappers={omitWrappers}
50
55
  propsToDisplay={propsToDisplay}
51
56
  propsToDisplayModifiers={propsToDisplayModifiers}
52
57
  gridModifier={gridModifier}
@@ -54,7 +59,8 @@ const CardsRender = ({
54
59
  parent={parent}
55
60
  {...props}
56
61
  />
57
- </div>
62
+ </WrapperToUse>
63
+
58
64
  {paginationType === LOAD_MORE && (
59
65
  <ListPagination paginationType={paginationType} parent={parent} {...props} />
60
66
  )}
@@ -70,6 +76,7 @@ CardsRender.propTypes = {
70
76
  paginationType: PropTypes.string.isRequired,
71
77
  hasBanner: PropTypes.bool,
72
78
  banner: PropTypes.object,
79
+ omitWrappers: PropTypes.bool,
73
80
  gridModifier: PropTypes.string,
74
81
  entity: PropTypes.string.isRequired,
75
82
  children: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),
@@ -82,6 +89,7 @@ CardsRender.defaultProps = {
82
89
  children: null,
83
90
  hasBanner: false,
84
91
  banner: null,
92
+ omitWrappers: false,
85
93
  gtmData: null,
86
94
  itemsToDisplay: []
87
95
  };
@@ -1,15 +1,23 @@
1
- import React from 'react';
1
+ import React, { Fragment } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import CardsRenderItem from './CardsRenderItem';
4
4
  import Wrapper from '../../../Wrapper';
5
5
  import { withTitle } from '../../../../HOC';
6
6
  import { checkIfShouldRenderBanner } from '../helpers';
7
7
 
8
- const CardsRenderWrapper = ({ orderedListData, gridModifier, bannerProps, ...props }) => {
8
+ const CardsRenderWrapper = ({
9
+ orderedListData,
10
+ gridModifier,
11
+ omitWrappers,
12
+ bannerProps,
13
+ ...props
14
+ }) => {
9
15
  let bannerIndex = 0;
10
16
 
17
+ const WrapperToUse = omitWrappers ? Fragment : Wrapper;
18
+
11
19
  return (
12
- <Wrapper className="grid" modifiers={gridModifier}>
20
+ <WrapperToUse className="grid" modifiers={gridModifier}>
13
21
  {orderedListData.map((cardProps, index) => {
14
22
  const { id } = cardProps;
15
23
  const shouldRenderBanner = !!bannerProps && checkIfShouldRenderBanner(index, bannerProps);
@@ -29,18 +37,20 @@ const CardsRenderWrapper = ({ orderedListData, gridModifier, bannerProps, ...pro
29
37
  />
30
38
  );
31
39
  })}
32
- </Wrapper>
40
+ </WrapperToUse>
33
41
  );
34
42
  };
35
43
 
36
44
  CardsRenderWrapper.propTypes = {
37
45
  orderedListData: PropTypes.array.isRequired,
38
46
  gridModifier: PropTypes.string.isRequired,
47
+ omitWrappers: PropTypes.bool,
39
48
  imagesData: PropTypes.array,
40
49
  bannerProps: PropTypes.object
41
50
  };
42
51
 
43
52
  CardsRenderWrapper.defaultProps = {
53
+ omitWrappers: false,
44
54
  imagesData: [],
45
55
  bannerProps: {}
46
56
  };
@@ -1,13 +1,14 @@
1
- import React from 'react';
1
+ import React, { Fragment } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import uuid from 'uuid/v1';
4
4
  import FullRenderItem from './FullRenderItem';
5
5
  import ListPagination from '../Pagination';
6
6
  import { LOAD_MORE } from '../../../../constants';
7
7
  import { BANNER } from '../../constants';
8
+ import Wrapper from '../../../Wrapper';
8
9
  import { checkIfShouldRenderBanner } from '../helpers';
9
10
 
10
- const FullRender = ({ orderedListData, paginationType, ...props }) => {
11
+ const FullRender = ({ orderedListData, omitWrappers, paginationType, ...props }) => {
11
12
  const pageBuilderID = uuid();
12
13
  const { parent, entity, propsToDisplay, banner, hasBanner } = props;
13
14
  const bannerProps = banner
@@ -15,9 +16,11 @@ const FullRender = ({ orderedListData, paginationType, ...props }) => {
15
16
  : null;
16
17
  let bannerIndex = 0;
17
18
 
19
+ const WrapperToUse = omitWrappers ? Fragment : Wrapper;
20
+
18
21
  return (
19
22
  <>
20
- <div className="list list--full">
23
+ <WrapperToUse className="list list--full">
21
24
  {orderedListData.map(({ id, ...entityProps }, i) => {
22
25
  const shouldRenderBanner = !!bannerProps && checkIfShouldRenderBanner(i, bannerProps);
23
26
  if (shouldRenderBanner) bannerIndex += 1;
@@ -37,7 +40,8 @@ const FullRender = ({ orderedListData, paginationType, ...props }) => {
37
40
  />
38
41
  );
39
42
  })}
40
- </div>
43
+ </WrapperToUse>
44
+
41
45
  {paginationType === LOAD_MORE && (
42
46
  <ListPagination paginationType={paginationType} {...props} />
43
47
  )}
@@ -51,11 +55,13 @@ FullRender.propTypes = {
51
55
  parent: PropTypes.object.isRequired,
52
56
  propsToDisplay: PropTypes.array.isRequired,
53
57
  entity: PropTypes.string.isRequired,
58
+ omitWrappers: PropTypes.bool,
54
59
  hasBanner: PropTypes.bool,
55
60
  banner: PropTypes.object
56
61
  };
57
62
 
58
63
  FullRender.defaultProps = {
64
+ omitWrappers: false,
59
65
  hasBanner: false,
60
66
  banner: null
61
67
  };
@@ -16,6 +16,7 @@ const ListPagination = ({
16
16
  }) => {
17
17
  const [showPagination, setShowPagination] = useState(true);
18
18
  const paginationRef = useRef(null);
19
+ const isLoadMore = paginationType === LOAD_MORE;
19
20
 
20
21
  useEffect(
21
22
  () => {
@@ -24,22 +25,7 @@ const ListPagination = ({
24
25
  [isInfinite]
25
26
  );
26
27
 
27
- useEffect(
28
- () => {
29
- if (paginationRef && paginationRef.current) {
30
- window.scrollTo({
31
- left: 0,
32
- top:
33
- window.pageYOffset - 100 + paginationRef.current.parentNode.getBoundingClientRect().top,
34
- behavior: 'smooth'
35
- });
36
- }
37
- },
38
- [currentPage]
39
- );
40
-
41
28
  if (!showPagination) return null;
42
- const isLoadMore = paginationType === LOAD_MORE;
43
29
  const totalRecordsToFetch = limitToUse || listTotal;
44
30
 
45
31
  const numberOfPages = Math.ceil(totalRecordsToFetch / itemsPerPage);
@@ -8,8 +8,16 @@ jest.mock('../../../../../../../src/hooks', () => ({
8
8
  }));
9
9
 
10
10
  describe('CardsRender component', () => {
11
- it('should render based on listData recieved', async () => {
11
+ it('should render based on listData received', async () => {
12
12
  const { asFragment } = await render(CardsRender, MOCKED_LIST_OPTIONS);
13
13
  expect(asFragment()).toMatchSnapshot();
14
14
  });
15
+
16
+ it('should render without wrapper, when requested', async () => {
17
+ const { asFragment } = await render(CardsRender, {
18
+ ...MOCKED_LIST_OPTIONS,
19
+ omitWrappers: true
20
+ });
21
+ expect(asFragment()).toMatchSnapshot();
22
+ });
15
23
  });
@@ -9,8 +9,16 @@ jest.mock('../../../../../../../src/components/List/components/Cards/CardsRender
9
9
  );
10
10
 
11
11
  describe('CardsRenderWrapper component', () => {
12
- it('should render list with wrapper and tittle', async () => {
12
+ it('should render list with wrapper and title', async () => {
13
13
  const { asFragment } = await render(CardsRenderWrapper, MOCKED_LIST_OPTIONS);
14
14
  expect(asFragment()).toMatchSnapshot();
15
15
  });
16
+
17
+ it('should render without wrapper, when requested', async () => {
18
+ const { asFragment } = await render(CardsRenderWrapper, {
19
+ ...MOCKED_LIST_OPTIONS,
20
+ omitWrappers: true
21
+ });
22
+ expect(asFragment()).toMatchSnapshot();
23
+ });
16
24
  });
@@ -1,9 +1,9 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`CardsRender component should render based on listData recieved 1`] = `
3
+ exports[`CardsRender component should render based on listData received 1`] = `
4
4
  <DocumentFragment>
5
5
  <div
6
- class="list list--compact"
6
+ class="list list--compact "
7
7
  >
8
8
  <h2
9
9
  class="heading heading--section"
@@ -74,3 +74,70 @@ exports[`CardsRender component should render based on listData recieved 1`] = `
74
74
  </div>
75
75
  </DocumentFragment>
76
76
  `;
77
+
78
+ exports[`CardsRender component should render without wrapper, when requested 1`] = `
79
+ <DocumentFragment>
80
+ <h2
81
+ class="heading heading--section"
82
+ >
83
+ Some title
84
+ </h2>
85
+ <div
86
+ class="list__item list__item--compact"
87
+ >
88
+ <div
89
+ class="card card--portrait"
90
+ >
91
+ <div
92
+ class="card__content-wrapper card__content-wrapper--portrait"
93
+ >
94
+ <div
95
+ class="card__content card__content--portrait"
96
+ >
97
+ <h2
98
+ class="card__title card__title--portrait"
99
+ />
100
+ </div>
101
+ </div>
102
+ </div>
103
+ </div>
104
+ <div
105
+ class="list__item list__item--compact"
106
+ >
107
+ <div
108
+ class="card card--portrait"
109
+ >
110
+ <div
111
+ class="card__content-wrapper card__content-wrapper--portrait"
112
+ >
113
+ <div
114
+ class="card__content card__content--portrait"
115
+ >
116
+ <h2
117
+ class="card__title card__title--portrait"
118
+ />
119
+ </div>
120
+ </div>
121
+ </div>
122
+ </div>
123
+ <div
124
+ class="list__item list__item--compact"
125
+ >
126
+ <div
127
+ class="card card--portrait"
128
+ >
129
+ <div
130
+ class="card__content-wrapper card__content-wrapper--portrait"
131
+ >
132
+ <div
133
+ class="card__content card__content--portrait"
134
+ >
135
+ <h2
136
+ class="card__title card__title--portrait"
137
+ />
138
+ </div>
139
+ </div>
140
+ </div>
141
+ </div>
142
+ </DocumentFragment>
143
+ `;
@@ -1,6 +1,6 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`CardsRenderWrapper component should render list with wrapper and tittle 1`] = `
3
+ exports[`CardsRenderWrapper component should render list with wrapper and title 1`] = `
4
4
  <DocumentFragment>
5
5
  <h2
6
6
  class="heading heading--section"
@@ -16,3 +16,16 @@ exports[`CardsRenderWrapper component should render list with wrapper and tittle
16
16
  </div>
17
17
  </DocumentFragment>
18
18
  `;
19
+
20
+ exports[`CardsRenderWrapper component should render without wrapper, when requested 1`] = `
21
+ <DocumentFragment>
22
+ <h2
23
+ class="heading heading--section"
24
+ >
25
+ Some title
26
+ </h2>
27
+ <div />
28
+ <div />
29
+ <div />
30
+ </DocumentFragment>
31
+ `;
@@ -9,8 +9,13 @@ jest.mock('../../../../../../../src/components/List/components/Full/FullRenderIt
9
9
  );
10
10
 
11
11
  describe('FullRender component', () => {
12
- it('should render if orderedListData is recieved', async () => {
12
+ it('should render if orderedListData is received', async () => {
13
13
  const { asFragment } = await render(FullRender, MOCKED_LIST_OPTIONS);
14
14
  expect(asFragment()).toMatchSnapshot();
15
15
  });
16
+
17
+ it('should render without wrapper, when requested', async () => {
18
+ const { asFragment } = await render(FullRender, { ...MOCKED_LIST_OPTIONS, omitWrappers: true });
19
+ expect(asFragment()).toMatchSnapshot();
20
+ });
16
21
  });
@@ -18,7 +18,7 @@ describe('FullRenderItem component', () => {
18
18
  });
19
19
  expect(asFragment()).toMatchSnapshot();
20
20
  });
21
- it('should render item recieved', async () => {
21
+ it('should render item received', async () => {
22
22
  const { asFragment, getByTestId } = await render(FullRenderItem, MOCKED_LIST_OPTIONS);
23
23
  expect(asFragment()).toMatchSnapshot();
24
24
  MOCKED_LIST_OPTIONS.pageBuilderComponents.forEach(({ id }) => {
@@ -1,9 +1,9 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`FullRender component should render if orderedListData is recieved 1`] = `
3
+ exports[`FullRender component should render if orderedListData is received 1`] = `
4
4
  <DocumentFragment>
5
5
  <div
6
- class="list list--full"
6
+ class="list list--full "
7
7
  >
8
8
  <div>
9
9
  item1
@@ -17,3 +17,17 @@ exports[`FullRender component should render if orderedListData is recieved 1`]
17
17
  </div>
18
18
  </DocumentFragment>
19
19
  `;
20
+
21
+ exports[`FullRender component should render without wrapper, when requested 1`] = `
22
+ <DocumentFragment>
23
+ <div>
24
+ item1
25
+ </div>
26
+ <div>
27
+ item2
28
+ </div>
29
+ <div>
30
+ item3
31
+ </div>
32
+ </DocumentFragment>
33
+ `;
@@ -22,7 +22,7 @@ exports[`FullRenderItem component should not render if no pageBuilderComponents
22
22
  </DocumentFragment>
23
23
  `;
24
24
 
25
- exports[`FullRenderItem component should render item recieved 1`] = `
25
+ exports[`FullRenderItem component should render item received 1`] = `
26
26
  <DocumentFragment>
27
27
  <div
28
28
  class="heading heading--section heading--section--count"
@@ -5,21 +5,36 @@ import ListPagination from '../../../../../../../src/components/List/components/
5
5
 
6
6
  const mockedAsPath = '/test-url?pb[list][page]=3';
7
7
 
8
+ const mockedEvents = {
9
+ events: {
10
+ on: jest.fn(),
11
+ off: jest.fn()
12
+ }
13
+ };
14
+
8
15
  jest.mock('next/router', () => ({
9
16
  useRouter: jest
10
17
  .fn()
11
18
  .mockImplementationOnce(() => ({
12
- asPath: '/test-url?pb[list][page]=4'
19
+ asPath: '/test-url?pb[list][page]=4',
20
+ ...mockedEvents
13
21
  }))
14
- .mockImplementationOnce(() => ({ asPath: 'test-url', query: { someQuery: 'valueq' } }))
15
22
  .mockImplementationOnce(() => ({
16
- asPath: mockedAsPath
23
+ asPath: 'test-url',
24
+ query: { someQuery: 'valueq' },
25
+ ...mockedEvents
17
26
  }))
18
27
  .mockImplementationOnce(() => ({
19
- asPath: mockedAsPath
28
+ asPath: mockedAsPath,
29
+ ...mockedEvents
20
30
  }))
21
- .mockImplementationOnce(() => ({
22
- asPath: mockedAsPath
31
+ .mockImplementation(() => ({
32
+ asPath: mockedAsPath,
33
+ ...mockedEvents
34
+ }))
35
+ .mockImplementation(() => ({
36
+ asPath: mockedAsPath,
37
+ ...mockedEvents
23
38
  }))
24
39
  }));
25
40