@blaze-cms/react-page-builder 0.112.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 (40) hide show
  1. package/CHANGELOG.md +11 -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-es/components/List/ListBuilder.js +4 -0
  15. package/lib-es/components/List/ListBuilder.js.map +1 -1
  16. package/lib-es/components/List/ListFactory.js +4 -0
  17. package/lib-es/components/List/ListFactory.js.map +1 -1
  18. package/lib-es/components/List/ListRender.js +4 -0
  19. package/lib-es/components/List/ListRender.js.map +1 -1
  20. package/lib-es/components/List/components/Cards/CardsRender.js +9 -3
  21. package/lib-es/components/List/components/Cards/CardsRender.js.map +1 -1
  22. package/lib-es/components/List/components/Cards/CardsRenderWrapper.js +7 -3
  23. package/lib-es/components/List/components/Cards/CardsRenderWrapper.js.map +1 -1
  24. package/lib-es/components/List/components/Full/FullRender.js +8 -3
  25. package/lib-es/components/List/components/Full/FullRender.js.map +1 -1
  26. package/package.json +2 -2
  27. package/src/components/List/ListBuilder.js +4 -0
  28. package/src/components/List/ListFactory.js +4 -0
  29. package/src/components/List/ListRender.js +4 -0
  30. package/src/components/List/components/Cards/CardsRender.js +11 -3
  31. package/src/components/List/components/Cards/CardsRenderWrapper.js +14 -4
  32. package/src/components/List/components/Full/FullRender.js +10 -4
  33. package/tests/unit/src/components/List/components/Cards/CardsRender.test.js +9 -1
  34. package/tests/unit/src/components/List/components/Cards/CardsRenderWrapper.test.js +9 -1
  35. package/tests/unit/src/components/List/components/Cards/__snapshots__/CardsRender.test.js.snap +69 -2
  36. package/tests/unit/src/components/List/components/Cards/__snapshots__/CardsRenderWrapper.test.js.snap +14 -1
  37. package/tests/unit/src/components/List/components/Full/FullRender.test.js +6 -1
  38. package/tests/unit/src/components/List/components/Full/FullRenderItem.test.js +1 -1
  39. package/tests/unit/src/components/List/components/Full/__snapshots__/FullRender.test.js.snap +16 -2
  40. package/tests/unit/src/components/List/components/Full/__snapshots__/FullRenderItem.test.js.snap +1 -1
@@ -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
  };
@@ -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"