@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.
- package/CHANGELOG.md +38 -0
- package/lib/components/List/ListBuilder.js +4 -0
- package/lib/components/List/ListBuilder.js.map +1 -1
- package/lib/components/List/ListFactory.js +4 -0
- package/lib/components/List/ListFactory.js.map +1 -1
- package/lib/components/List/ListRender.js +4 -0
- package/lib/components/List/ListRender.js.map +1 -1
- package/lib/components/List/components/Cards/CardsRender.js +26 -3
- package/lib/components/List/components/Cards/CardsRender.js.map +1 -1
- package/lib/components/List/components/Cards/CardsRenderWrapper.js +25 -3
- package/lib/components/List/components/Cards/CardsRenderWrapper.js.map +1 -1
- package/lib/components/List/components/Full/FullRender.js +25 -3
- package/lib/components/List/components/Full/FullRender.js.map +1 -1
- package/lib/components/List/components/Pagination/ListPagination.js +1 -10
- package/lib/components/List/components/Pagination/ListPagination.js.map +1 -1
- package/lib-es/components/List/ListBuilder.js +4 -0
- package/lib-es/components/List/ListBuilder.js.map +1 -1
- package/lib-es/components/List/ListFactory.js +4 -0
- package/lib-es/components/List/ListFactory.js.map +1 -1
- package/lib-es/components/List/ListRender.js +4 -0
- package/lib-es/components/List/ListRender.js.map +1 -1
- package/lib-es/components/List/components/Cards/CardsRender.js +9 -3
- package/lib-es/components/List/components/Cards/CardsRender.js.map +1 -1
- package/lib-es/components/List/components/Cards/CardsRenderWrapper.js +7 -3
- package/lib-es/components/List/components/Cards/CardsRenderWrapper.js.map +1 -1
- package/lib-es/components/List/components/Full/FullRender.js +8 -3
- package/lib-es/components/List/components/Full/FullRender.js.map +1 -1
- package/lib-es/components/List/components/Pagination/ListPagination.js +1 -10
- package/lib-es/components/List/components/Pagination/ListPagination.js.map +1 -1
- package/package.json +2 -2
- package/src/components/List/ListBuilder.js +4 -0
- package/src/components/List/ListFactory.js +4 -0
- package/src/components/List/ListRender.js +4 -0
- package/src/components/List/components/Cards/CardsRender.js +11 -3
- package/src/components/List/components/Cards/CardsRenderWrapper.js +14 -4
- package/src/components/List/components/Full/FullRender.js +10 -4
- package/src/components/List/components/Pagination/ListPagination.js +1 -15
- package/tests/unit/src/components/List/components/Cards/CardsRender.test.js +9 -1
- package/tests/unit/src/components/List/components/Cards/CardsRenderWrapper.test.js +9 -1
- package/tests/unit/src/components/List/components/Cards/__snapshots__/CardsRender.test.js.snap +69 -2
- package/tests/unit/src/components/List/components/Cards/__snapshots__/CardsRenderWrapper.test.js.snap +14 -1
- package/tests/unit/src/components/List/components/Full/FullRender.test.js +6 -1
- package/tests/unit/src/components/List/components/Full/FullRenderItem.test.js +1 -1
- package/tests/unit/src/components/List/components/Full/__snapshots__/FullRender.test.js.snap +16 -2
- package/tests/unit/src/components/List/components/Full/__snapshots__/FullRenderItem.test.js.snap +1 -1
- 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","
|
|
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.
|
|
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": "
|
|
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
|
-
<
|
|
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
|
-
</
|
|
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 = ({
|
|
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
|
-
<
|
|
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
|
-
</
|
|
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
|
-
<
|
|
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
|
-
</
|
|
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
|
|
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
|
|
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
|
});
|
package/tests/unit/src/components/List/components/Cards/__snapshots__/CardsRender.test.js.snap
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`CardsRender component should render based on listData
|
|
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
|
|
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
|
|
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
|
|
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 }) => {
|
package/tests/unit/src/components/List/components/Full/__snapshots__/FullRender.test.js.snap
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`FullRender component should
|
|
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
|
+
`;
|
package/tests/unit/src/components/List/components/Full/__snapshots__/FullRenderItem.test.js.snap
CHANGED
|
@@ -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
|
|
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:
|
|
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
|
-
.
|
|
22
|
-
asPath: mockedAsPath
|
|
31
|
+
.mockImplementation(() => ({
|
|
32
|
+
asPath: mockedAsPath,
|
|
33
|
+
...mockedEvents
|
|
34
|
+
}))
|
|
35
|
+
.mockImplementation(() => ({
|
|
36
|
+
asPath: mockedAsPath,
|
|
37
|
+
...mockedEvents
|
|
23
38
|
}))
|
|
24
39
|
}));
|
|
25
40
|
|