@blaze-cms/react-page-builder 0.130.1 → 0.131.0-admin-updates.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 (212) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/lib/components/Card/CardsRender.js +13 -6
  3. package/lib/components/Card/CardsRender.js.map +1 -1
  4. package/lib/components/Card/helpers/get-updated-items-to-display.js +55 -0
  5. package/lib/components/Card/helpers/get-updated-items-to-display.js.map +1 -0
  6. package/lib/components/Card/helpers/index.js +7 -0
  7. package/lib/components/Card/helpers/index.js.map +1 -1
  8. package/lib/components/Code/Code.js +7 -3
  9. package/lib/components/Code/Code.js.map +1 -1
  10. package/lib/components/DataSummary/helpers/build-loop-props-content.js +3 -1
  11. package/lib/components/DataSummary/helpers/build-loop-props-content.js.map +1 -1
  12. package/lib/components/DataSummary/helpers/build-props-to-display-with-content.js +3 -2
  13. package/lib/components/DataSummary/helpers/build-props-to-display-with-content.js.map +1 -1
  14. package/lib/components/List/ListFactory.js +16 -11
  15. package/lib/components/List/ListFactory.js.map +1 -1
  16. package/lib/components/List/helpers/get-list-query.js +43 -0
  17. package/lib/components/List/helpers/get-list-query.js.map +1 -0
  18. package/lib/components/List/helpers/get-list-specific-search-filter.js +21 -0
  19. package/lib/components/List/helpers/get-list-specific-search-filter.js.map +1 -0
  20. package/lib/components/List/helpers/index.js +14 -0
  21. package/lib/components/List/helpers/index.js.map +1 -1
  22. package/lib/components/List/helpers/strip-query-key.js +14 -0
  23. package/lib/components/List/helpers/strip-query-key.js.map +1 -0
  24. package/lib/components/SearchContent/SearchContent.js +8 -6
  25. package/lib/components/SearchContent/SearchContent.js.map +1 -1
  26. package/lib/components/SearchContent/SearchContentItems.js +1 -1
  27. package/lib/components/SearchContent/SearchContentItems.js.map +1 -1
  28. package/lib/components/SearchFilter/SearchFilter/SearchFilter.js +17 -11
  29. package/lib/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
  30. package/lib/components/SearchFilter/SearchFilterContainer.js +63 -85
  31. package/lib/components/SearchFilter/SearchFilterContainer.js.map +1 -1
  32. package/lib/components/SearchFilter/helpers/build-filters-query.js +3 -1
  33. package/lib/components/SearchFilter/helpers/build-filters-query.js.map +1 -1
  34. package/lib/components/SearchFilter/helpers/build-new-url.js +17 -0
  35. package/lib/components/SearchFilter/helpers/build-new-url.js.map +1 -0
  36. package/lib/components/SearchFilter/helpers/build-url-query.js +48 -0
  37. package/lib/components/SearchFilter/helpers/build-url-query.js.map +1 -0
  38. package/lib/components/SearchFilter/helpers/get-filter-ranges-and-checkboxes-values.js +32 -0
  39. package/lib/components/SearchFilter/helpers/get-filter-ranges-and-checkboxes-values.js.map +1 -0
  40. package/lib/components/SearchFilter/helpers/get-filter-values.js +31 -0
  41. package/lib/components/SearchFilter/helpers/get-filter-values.js.map +1 -0
  42. package/lib/components/SearchFilter/helpers/index.js +18 -11
  43. package/lib/components/SearchFilter/helpers/index.js.map +1 -1
  44. package/lib/components/SearchFilter/index.js.map +1 -1
  45. package/lib/components/SearchFilter/searchFilterReducer.js +45 -0
  46. package/lib/components/SearchFilter/searchFilterReducer.js.map +1 -0
  47. package/lib/components/SearchFilterSort/SearchFilterSort.js +31 -11
  48. package/lib/components/SearchFilterSort/SearchFilterSort.js.map +1 -1
  49. package/lib/components/SearchFilterSort/helpers/handle-sort-update.js +19 -5
  50. package/lib/components/SearchFilterSort/helpers/handle-sort-update.js.map +1 -1
  51. package/lib/components/SearchFilterSort/helpers/update-sort.js +9 -5
  52. package/lib/components/SearchFilterSort/helpers/update-sort.js.map +1 -1
  53. package/lib/helpers/build-inherited-filters.js +2 -0
  54. package/lib/helpers/build-inherited-filters.js.map +1 -1
  55. package/lib/helpers/build-props-query.js +5 -2
  56. package/lib/helpers/build-props-query.js.map +1 -1
  57. package/lib/helpers/build-query-key.js +16 -0
  58. package/lib/helpers/build-query-key.js.map +1 -0
  59. package/lib/helpers/build-set-filters.js +5 -1
  60. package/lib/helpers/build-set-filters.js.map +1 -1
  61. package/lib/helpers/get-query-filters.js +6 -8
  62. package/lib/helpers/get-query-filters.js.map +1 -1
  63. package/lib/helpers/get-query-props.js +13 -2
  64. package/lib/helpers/get-query-props.js.map +1 -1
  65. package/lib/helpers/get-wrapped-value-with-link.js +2 -3
  66. package/lib/helpers/get-wrapped-value-with-link.js.map +1 -1
  67. package/lib/helpers/index.js +14 -0
  68. package/lib/helpers/index.js.map +1 -1
  69. package/lib/helpers/parse-props-to-display.js +13 -8
  70. package/lib/helpers/parse-props-to-display.js.map +1 -1
  71. package/lib/helpers/process-data-summary-value.js +56 -0
  72. package/lib/helpers/process-data-summary-value.js.map +1 -0
  73. package/lib-es/components/Card/CardsRender.js +14 -7
  74. package/lib-es/components/Card/CardsRender.js.map +1 -1
  75. package/lib-es/components/Card/helpers/get-updated-items-to-display.js +32 -0
  76. package/lib-es/components/Card/helpers/get-updated-items-to-display.js.map +1 -0
  77. package/lib-es/components/Card/helpers/index.js +1 -0
  78. package/lib-es/components/Card/helpers/index.js.map +1 -1
  79. package/lib-es/components/Code/Code.js +8 -4
  80. package/lib-es/components/Code/Code.js.map +1 -1
  81. package/lib-es/components/DataSummary/helpers/build-loop-props-content.js +3 -1
  82. package/lib-es/components/DataSummary/helpers/build-loop-props-content.js.map +1 -1
  83. package/lib-es/components/DataSummary/helpers/build-props-to-display-with-content.js +4 -3
  84. package/lib-es/components/DataSummary/helpers/build-props-to-display-with-content.js.map +1 -1
  85. package/lib-es/components/List/ListFactory.js +16 -12
  86. package/lib-es/components/List/ListFactory.js.map +1 -1
  87. package/lib-es/components/List/helpers/get-list-query.js +24 -0
  88. package/lib-es/components/List/helpers/get-list-query.js.map +1 -0
  89. package/lib-es/components/List/helpers/get-list-specific-search-filter.js +12 -0
  90. package/lib-es/components/List/helpers/get-list-specific-search-filter.js.map +1 -0
  91. package/lib-es/components/List/helpers/index.js +2 -0
  92. package/lib-es/components/List/helpers/index.js.map +1 -1
  93. package/lib-es/components/List/helpers/strip-query-key.js +6 -0
  94. package/lib-es/components/List/helpers/strip-query-key.js.map +1 -0
  95. package/lib-es/components/SearchContent/SearchContent.js +8 -6
  96. package/lib-es/components/SearchContent/SearchContent.js.map +1 -1
  97. package/lib-es/components/SearchContent/SearchContentItems.js +1 -1
  98. package/lib-es/components/SearchContent/SearchContentItems.js.map +1 -1
  99. package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js +18 -11
  100. package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
  101. package/lib-es/components/SearchFilter/SearchFilterContainer.js +47 -72
  102. package/lib-es/components/SearchFilter/SearchFilterContainer.js.map +1 -1
  103. package/lib-es/components/SearchFilter/helpers/build-filters-query.js +2 -0
  104. package/lib-es/components/SearchFilter/helpers/build-filters-query.js.map +1 -1
  105. package/lib-es/components/SearchFilter/helpers/build-new-url.js +8 -0
  106. package/lib-es/components/SearchFilter/helpers/build-new-url.js.map +1 -0
  107. package/lib-es/components/SearchFilter/helpers/build-url-query.js +30 -0
  108. package/lib-es/components/SearchFilter/helpers/build-url-query.js.map +1 -0
  109. package/lib-es/components/SearchFilter/helpers/get-filter-ranges-and-checkboxes-values.js +18 -0
  110. package/lib-es/components/SearchFilter/helpers/get-filter-ranges-and-checkboxes-values.js.map +1 -0
  111. package/lib-es/components/SearchFilter/helpers/get-filter-values.js +19 -0
  112. package/lib-es/components/SearchFilter/helpers/get-filter-values.js.map +1 -0
  113. package/lib-es/components/SearchFilter/helpers/index.js +5 -4
  114. package/lib-es/components/SearchFilter/helpers/index.js.map +1 -1
  115. package/lib-es/components/SearchFilter/index.js +2 -2
  116. package/lib-es/components/SearchFilter/index.js.map +1 -1
  117. package/lib-es/components/SearchFilter/searchFilterReducer.js +28 -0
  118. package/lib-es/components/SearchFilter/searchFilterReducer.js.map +1 -0
  119. package/lib-es/components/SearchFilterSort/SearchFilterSort.js +26 -10
  120. package/lib-es/components/SearchFilterSort/SearchFilterSort.js.map +1 -1
  121. package/lib-es/components/SearchFilterSort/helpers/handle-sort-update.js +21 -4
  122. package/lib-es/components/SearchFilterSort/helpers/handle-sort-update.js.map +1 -1
  123. package/lib-es/components/SearchFilterSort/helpers/update-sort.js +8 -4
  124. package/lib-es/components/SearchFilterSort/helpers/update-sort.js.map +1 -1
  125. package/lib-es/helpers/build-inherited-filters.js +2 -0
  126. package/lib-es/helpers/build-inherited-filters.js.map +1 -1
  127. package/lib-es/helpers/build-props-query.js +4 -2
  128. package/lib-es/helpers/build-props-query.js.map +1 -1
  129. package/lib-es/helpers/build-query-key.js +7 -0
  130. package/lib-es/helpers/build-query-key.js.map +1 -0
  131. package/lib-es/helpers/build-set-filters.js +5 -1
  132. package/lib-es/helpers/build-set-filters.js.map +1 -1
  133. package/lib-es/helpers/get-query-filters.js +6 -8
  134. package/lib-es/helpers/get-query-filters.js.map +1 -1
  135. package/lib-es/helpers/get-query-props.js +10 -2
  136. package/lib-es/helpers/get-query-props.js.map +1 -1
  137. package/lib-es/helpers/get-wrapped-value-with-link.js +2 -2
  138. package/lib-es/helpers/get-wrapped-value-with-link.js.map +1 -1
  139. package/lib-es/helpers/index.js +2 -0
  140. package/lib-es/helpers/index.js.map +1 -1
  141. package/lib-es/helpers/parse-props-to-display.js +12 -9
  142. package/lib-es/helpers/parse-props-to-display.js.map +1 -1
  143. package/lib-es/helpers/process-data-summary-value.js +36 -0
  144. package/lib-es/helpers/process-data-summary-value.js.map +1 -0
  145. package/package.json +10 -10
  146. package/src/components/Card/CardsRender.js +27 -7
  147. package/src/components/Card/helpers/get-updated-items-to-display.js +32 -0
  148. package/src/components/Card/helpers/index.js +1 -0
  149. package/src/components/Code/Code.js +7 -3
  150. package/src/components/DataSummary/helpers/build-loop-props-content.js +4 -1
  151. package/src/components/DataSummary/helpers/build-props-to-display-with-content.js +6 -3
  152. package/src/components/List/ListFactory.js +25 -15
  153. package/src/components/List/helpers/get-list-query.js +28 -0
  154. package/src/components/List/helpers/get-list-specific-search-filter.js +10 -0
  155. package/src/components/List/helpers/index.js +2 -0
  156. package/src/components/List/helpers/strip-query-key.js +6 -0
  157. package/src/components/SearchContent/SearchContent.js +8 -6
  158. package/src/components/SearchFilter/SearchFilter/SearchFilter.js +21 -12
  159. package/src/components/SearchFilter/SearchFilterContainer.js +57 -69
  160. package/src/components/SearchFilter/helpers/build-filters-query.js +9 -1
  161. package/src/components/SearchFilter/helpers/build-new-url.js +8 -0
  162. package/src/components/SearchFilter/helpers/build-url-query.js +31 -0
  163. package/src/components/SearchFilter/helpers/get-filter-ranges-and-checkboxes-values.js +17 -0
  164. package/src/components/SearchFilter/helpers/get-filter-values.js +21 -0
  165. package/src/components/SearchFilter/helpers/index.js +9 -7
  166. package/src/components/SearchFilter/index.js +2 -2
  167. package/src/components/SearchFilter/searchFilterReducer.js +15 -0
  168. package/src/components/SearchFilterSort/SearchFilterSort.js +18 -8
  169. package/src/components/SearchFilterSort/helpers/handle-sort-update.js +14 -5
  170. package/src/components/SearchFilterSort/helpers/update-sort.js +7 -3
  171. package/src/helpers/build-inherited-filters.js +3 -1
  172. package/src/helpers/build-props-query.js +4 -2
  173. package/src/helpers/build-query-key.js +7 -0
  174. package/src/helpers/build-set-filters.js +2 -1
  175. package/src/helpers/get-query-filters.js +4 -4
  176. package/src/helpers/get-query-props.js +12 -4
  177. package/src/helpers/get-wrapped-value-with-link.js +6 -3
  178. package/src/helpers/index.js +2 -0
  179. package/src/helpers/parse-props-to-display.js +25 -21
  180. package/src/helpers/process-data-summary-value.js +22 -0
  181. package/tests/helpers/mocks.js +3 -5
  182. package/tests/unit/src/components/Card/helpers/get-updated-items-to-display.test.js +72 -0
  183. package/tests/unit/src/components/Code/Code.test.js +5 -0
  184. package/tests/unit/src/components/Code/__snapshots__/Code.test.js.snap +8 -0
  185. package/tests/unit/src/components/DataSummary/helpers/build-loop-props-content.test.js +9 -0
  186. package/tests/unit/src/components/SearchFilter/__snapshots__/SearchFilterContainer.test.js.snap +1 -7
  187. package/tests/unit/src/components/SearchFilter/helpers/build-new-query.test.js +10 -10
  188. package/tests/unit/src/components/SearchFilter/helpers/build-query.test.js +24 -7
  189. package/tests/unit/src/components/SearchFilter/helpers/get-initial-filter-values.test.js +10 -10
  190. package/tests/unit/src/components/SearchFilterSort/SearchFilterSort.test.js +4 -1
  191. package/tests/unit/src/components/SearchFilterSort/helpers/handle-sort-update.test.js +26 -19
  192. package/tests/unit/src/components/SearchFilterSort/helpers/update-sort.test.js +10 -1
  193. package/tests/unit/src/helpers/__snapshots__/get-wrapped-value-with-link.test.js.snap +18 -0
  194. package/tests/unit/src/helpers/build-props-query.test.js +25 -0
  195. package/tests/unit/src/helpers/get-wrapped-value-with-link.test.js +2 -2
  196. package/tests/unit/src/helpers/parse-props-to-display.test.js +4 -0
  197. package/tests/unit/src/helpers/prcoess-data-summary-value.test.js +52 -0
  198. package/lib/components/SearchFilter/helpers/build-new-query.js +0 -15
  199. package/lib/components/SearchFilter/helpers/build-new-query.js.map +0 -1
  200. package/lib/components/SearchFilter/helpers/build-query.js +0 -37
  201. package/lib/components/SearchFilter/helpers/build-query.js.map +0 -1
  202. package/lib/components/SearchFilter/helpers/get-initial-filter-values.js +0 -43
  203. package/lib/components/SearchFilter/helpers/get-initial-filter-values.js.map +0 -1
  204. package/lib-es/components/SearchFilter/helpers/build-new-query.js +0 -6
  205. package/lib-es/components/SearchFilter/helpers/build-new-query.js.map +0 -1
  206. package/lib-es/components/SearchFilter/helpers/build-query.js +0 -23
  207. package/lib-es/components/SearchFilter/helpers/build-query.js.map +0 -1
  208. package/lib-es/components/SearchFilter/helpers/get-initial-filter-values.js +0 -26
  209. package/lib-es/components/SearchFilter/helpers/get-initial-filter-values.js.map +0 -1
  210. package/src/components/SearchFilter/helpers/build-new-query.js +0 -6
  211. package/src/components/SearchFilter/helpers/build-query.js +0 -26
  212. package/src/components/SearchFilter/helpers/get-initial-filter-values.js +0 -30
@@ -2,10 +2,9 @@ import getSearchFilterType from './get-search-filter-type';
2
2
  import buildSearchValuesCheckboxSelect from './build-search-values-checkbox-select';
3
3
  import { RANGE, CHECKBOX, SELECT } from '../constants';
4
4
 
5
- const getQueryFilters = (searchFilter, query) => {
6
- if (!searchFilter.settings || !searchFilter.settings.filters) {
5
+ const getQueryFilters = (searchFilter, query, listName) => {
6
+ if (!searchFilter.settings || !searchFilter.settings.filters)
7
7
  return { valuesAnd: [], valuesOr: [] };
8
- }
9
8
 
10
9
  const rangeFilters = getSearchFilterType(searchFilter, RANGE);
11
10
  const checkboxFilters = getSearchFilterType(searchFilter, CHECKBOX);
@@ -15,7 +14,8 @@ const getQueryFilters = (searchFilter, query) => {
15
14
  query,
16
15
  rangeFilters,
17
16
  checkboxFilters,
18
- selectFilters
17
+ selectFilters,
18
+ listName
19
19
  );
20
20
  return { valuesAnd, valuesOr };
21
21
  };
@@ -2,10 +2,11 @@ import isFilterEntitysId from './is-filter-entitys-id';
2
2
  import getFilterProps from './get-filter-props';
3
3
  import { ID } from '../constants';
4
4
 
5
- const getQueryProps = (inheritedFilters, currentSchema, filterEntitySchema) => {
5
+ const getQueryProps = (inheritedFilters, currentSchema, filterEntitySchema = {}) => {
6
6
  if (!currentSchema || !inheritedFilters.length) return ID;
7
7
 
8
- const { identifier: currentEntityId } = currentSchema;
8
+ const { identifier: currentEntityId, properties } = currentSchema;
9
+ const { identifier: filterEntityId } = filterEntitySchema;
9
10
 
10
11
  return inheritedFilters.reduce((acc, filter) => {
11
12
  const {
@@ -17,12 +18,19 @@ const getQueryProps = (inheritedFilters, currentSchema, filterEntitySchema) => {
17
18
  relationForeignKeys,
18
19
  shouldIgnoreFilter
19
20
  } = getFilterProps(filter, currentSchema, filterEntitySchema);
20
-
21
21
  if (shouldIgnoreFilter) return acc;
22
22
  if (relationForeignKeys && relationForeignKeys.length) {
23
23
  return `${acc} ${relationForeignKeys.join(' ')}`;
24
24
  }
25
-
25
+ if (filterName === ID) {
26
+ const queryValue = Object.keys(properties).find(
27
+ propKey =>
28
+ properties[propKey] &&
29
+ properties[propKey].relation &&
30
+ properties[propKey].relation.entityIdentifier === filterEntityId
31
+ );
32
+ if (queryValue) return `${acc} ${queryValue} `;
33
+ }
26
34
  const queryProp = relationEntityName ? `${relationName} { ${relationProp} }` : filterName;
27
35
  const queryPropFinalValue =
28
36
  isEntityItself && isFilterEntitysId(filterName, currentEntityId) ? ID : queryProp;
@@ -6,13 +6,16 @@ const getWrappedValueWithLink = (value, link, keyPrefix = '') => {
6
6
  const arrayResults = value.map((arrValue, index) => {
7
7
  const { keyField, url } = arrValue;
8
8
  const keyValue = arrValue[keyField];
9
+
9
10
  const isLastItem = index === value.length - 1;
10
- const keyFieldValue = isLastItem ? keyValue : keyValue.concat(',');
11
+ const keyFieldValue = isLastItem ? keyValue : <>{keyValue}, </>;
11
12
 
12
13
  return url ? (
13
- <BlazeLink key={[keyPrefix, index].join('-')} href={url}>{`${keyFieldValue} `}</BlazeLink>
14
+ <BlazeLink key={[keyPrefix, index].join('-')} href={url}>
15
+ {<>{keyFieldValue} </>}
16
+ </BlazeLink>
14
17
  ) : (
15
- `${keyFieldValue} `
18
+ <>{keyFieldValue} </>
16
19
  );
17
20
  });
18
21
 
@@ -51,3 +51,5 @@ export { default as getParsedPropValues } from './get-parsed-prop-values';
51
51
  export { default as getSanitizedPropValues } from './get-sanitized-prop-values';
52
52
  export { default as appendImages } from './append-images';
53
53
  export { default as parseTextBlock } from './parse-TextBlock';
54
+ export { default as processDataSummaryValue } from './process-data-summary-value';
55
+ export { default as buildQueryKey } from './build-query-key';
@@ -4,35 +4,39 @@ import isObject from './is-object';
4
4
  import getParsedPropValues from './get-parsed-prop-values';
5
5
  import getSanitizedPropValues from './get-sanitized-prop-values';
6
6
  import { BOLD_TAG, BLANK_SPACE_UNICODE_STRING } from '../constants';
7
+ import processDataSummaryValue from './process-data-summary-value';
7
8
 
8
9
  // TODO this helper should be removed if database is wiped clean and all elements change to new props struc
9
10
  const parsePropsToDisplay = (props = {}, propsToDisplay = []) => {
10
11
  if (!isObject(propsToDisplay[0])) return at(props, propsToDisplay).filter(Boolean);
11
12
 
12
- return propsToDisplay.map(
13
- ({ bold, propertiesToDisplay, prefix, suffix, shouldStrip, enableLink }, currentIndex) => {
14
- const Wrapper = bold ? BOLD_TAG : Fragment;
13
+ return propsToDisplay.map((options, currentIndex) => {
14
+ const { bold, propertiesToDisplay, prefix, suffix, shouldStrip, enableLink } = options;
15
+ const Wrapper = bold ? BOLD_TAG : Fragment;
15
16
 
16
- const parsedPropValues = getParsedPropValues({
17
- propertiesToDisplay,
18
- props,
19
- enableLink,
20
- shouldStrip
21
- });
17
+ const parsedPropValues = getParsedPropValues({
18
+ propertiesToDisplay,
19
+ props,
20
+ enableLink,
21
+ shouldStrip
22
+ });
22
23
 
23
- const sanitizedPropValues = getSanitizedPropValues(parsedPropValues);
24
- if (!sanitizedPropValues || !sanitizedPropValues.length) return null;
25
- const stringEndBlank =
26
- currentIndex + 1 === propsToDisplay.length ? '' : BLANK_SPACE_UNICODE_STRING;
24
+ const sanitizedPropValues = getSanitizedPropValues(parsedPropValues);
25
+ if (!sanitizedPropValues || !sanitizedPropValues.length) return null;
26
+ const stringEndBlank =
27
+ currentIndex + 1 === propsToDisplay.length ? '' : BLANK_SPACE_UNICODE_STRING;
27
28
 
28
- return (
29
- <Wrapper>
30
- {prefix} {sanitizedPropValues} {suffix}
31
- {stringEndBlank}
32
- </Wrapper>
33
- );
34
- }
35
- );
29
+ const processedValue = Array.isArray(sanitizedPropValues)
30
+ ? sanitizedPropValues.map(value => processDataSummaryValue(value, options))
31
+ : processDataSummaryValue(sanitizedPropValues, options);
32
+
33
+ return (
34
+ <Wrapper>
35
+ {prefix} {processedValue} {suffix}
36
+ {stringEndBlank}
37
+ </Wrapper>
38
+ );
39
+ });
36
40
  };
37
41
 
38
42
  export default parsePropsToDisplay;
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import components from '../components';
3
+
4
+ const { code: Code } = components;
5
+
6
+ const renderCode = value => <Code code={value} disableWrapper />;
7
+
8
+ const processDataSummaryValue = (objPropValue, { isHtml }) => {
9
+ let pValue = objPropValue;
10
+ if (isHtml) {
11
+ pValue = Array.isArray(objPropValue)
12
+ ? objPropValue.map(({ keyField, [keyField]: value, ...otherProps }) => ({
13
+ [keyField]: renderCode(value),
14
+ keyField,
15
+ ...otherProps
16
+ }))
17
+ : renderCode(objPropValue);
18
+ }
19
+ return pValue;
20
+ };
21
+
22
+ export default processDataSummaryValue;
@@ -1139,11 +1139,9 @@ const MOCKED_PROPS_FILTERS_LIST = {
1139
1139
  };
1140
1140
 
1141
1141
  const MOCKED_PROPS_SEARCH_FILTER = {
1142
- router: {
1143
- asPath: 'somePath',
1144
- query: {},
1145
- push: () => {}
1146
- },
1142
+ listComponentName: '',
1143
+ filterData: {},
1144
+ asPath: 'somePath',
1147
1145
  parent: {
1148
1146
  itemEntity: 'published_page'
1149
1147
  },
@@ -0,0 +1,72 @@
1
+ import '@testing-library/jest-dom/extend-expect';
2
+ import getUpdatedItemsToDisplay from '../../../../../../src/components/Card/helpers/get-updated-items-to-display';
3
+
4
+ const mockedProps = {
5
+ itemsToDisplay: [
6
+ {
7
+ displayItems: ['54321']
8
+ }
9
+ ],
10
+ parentEntityData: {
11
+ authorIds: ['12345']
12
+ },
13
+ parentSchema: {
14
+ properties: {
15
+ authorIds: {
16
+ relation: {
17
+ entityIdentifier: 'author'
18
+ }
19
+ }
20
+ }
21
+ },
22
+ inheritedFilters: ['id/author']
23
+ };
24
+
25
+ describe('getUpdatedItemsToDisplay helper function', () => {
26
+ it('should return empty array if no props passed', () => {
27
+ const emptyArray = getUpdatedItemsToDisplay({});
28
+ expect(emptyArray).toEqual([]);
29
+ });
30
+
31
+ it('should return old itemsToDisplay itemsToDisplay if no idProp match, no parentSchema or no parentEntityData', () => {
32
+ const onlyItemsToDisplayPassed = getUpdatedItemsToDisplay({
33
+ itemsToDisplay: mockedProps.itemsToDisplay
34
+ });
35
+ const noIdPropMatch = getUpdatedItemsToDisplay({
36
+ ...mockedProps,
37
+ inheritedFilters: ['notid/author']
38
+ });
39
+ const noParentSchema = getUpdatedItemsToDisplay({
40
+ ...mockedProps,
41
+ parentSchema: null
42
+ });
43
+ const noParentEntityData = getUpdatedItemsToDisplay({
44
+ ...mockedProps,
45
+ parentEntityData: null
46
+ });
47
+ expect(onlyItemsToDisplayPassed).toEqual(mockedProps.itemsToDisplay);
48
+ expect(noIdPropMatch).toEqual(mockedProps.itemsToDisplay);
49
+ expect(noParentSchema).toEqual(mockedProps.itemsToDisplay);
50
+ expect(noParentEntityData).toEqual(mockedProps.itemsToDisplay);
51
+ });
52
+
53
+ it('should return old itemsToDisplay if parentSchema has no propMatch with idProp entity', () => {
54
+ const sameItemsToDisplay = getUpdatedItemsToDisplay({
55
+ ...mockedProps,
56
+ inheritedFilters: ['id/noentitymatch']
57
+ });
58
+ expect(sameItemsToDisplay).toEqual(mockedProps.itemsToDisplay);
59
+ });
60
+
61
+ it('should return updated itemsToDisplay otherwise', () => {
62
+ const sameItemsToDisplay = getUpdatedItemsToDisplay({
63
+ ...mockedProps
64
+ });
65
+ expect(sameItemsToDisplay).toEqual([
66
+ ...mockedProps.itemsToDisplay,
67
+ {
68
+ displayItems: ['12345']
69
+ }
70
+ ]);
71
+ });
72
+ });
@@ -23,6 +23,11 @@ describe('Code component', () => {
23
23
  expect(asFragment()).toMatchSnapshot();
24
24
  });
25
25
 
26
+ it('should not render wrapper', () => {
27
+ const { asFragment } = render(Code, { ...props, disableWrapper: true });
28
+ expect(asFragment()).toMatchSnapshot();
29
+ });
30
+
26
31
  it('should return null if there is not embed code', () => {
27
32
  const { container } = render(Code, {});
28
33
  expect(container.innerHTML).toBe('');
@@ -27,3 +27,11 @@ exports[`Code component should not render script tags 1`] = `
27
27
  </div>
28
28
  </DocumentFragment>
29
29
  `;
30
+
31
+ exports[`Code component should not render wrapper 1`] = `
32
+ <DocumentFragment>
33
+ <p>
34
+ Lorem ipsum
35
+ </p>
36
+ </DocumentFragment>
37
+ `;
@@ -1,6 +1,11 @@
1
1
  import '@testing-library/jest-dom/extend-expect';
2
2
  import buildLoopPropsContent from '../../../../../../src/components/DataSummary/helpers/build-loop-props-content';
3
3
  import { mockedLoopProps, mockedPropsToDisplay, mockedData, mockedResults } from './mocks';
4
+ import processDataSummaryValue from '../../../../../../src/helpers/process-data-summary-value';
5
+
6
+ jest.mock('../../../../../../src/helpers/process-data-summary-value', () =>
7
+ jest.fn(value => value)
8
+ );
4
9
 
5
10
  describe('buildLoopPropsContent helper function', () => {
6
11
  const noParamsPassed = buildLoopPropsContent();
@@ -41,6 +46,10 @@ describe('buildLoopPropsContent helper function', () => {
41
46
  expect(noDataPassed).toEqual([]);
42
47
  });
43
48
 
49
+ it('should call processDataSummaryValue', () => {
50
+ expect(processDataSummaryValue).toHaveBeenCalledWith('pre data name', mockedPropsToDisplay[0]);
51
+ });
52
+
44
53
  it('should return regular dataSummary content if no loopable values are found', () => {
45
54
  expect(withNoLoopValues).toEqual(mockedResults[0]);
46
55
  expect(withNoLoopableValues).toEqual(mockedResults[1]);
@@ -1,11 +1,5 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`SearchFilter container should match snapshot 1`] = `
4
- <DocumentFragment>
5
- <div>
6
- Mocked component
7
- </div>
8
- </DocumentFragment>
9
- `;
3
+ exports[`SearchFilter container should match snapshot 1`] = `<DocumentFragment />`;
10
4
 
11
5
  exports[`SearchFilter container should return null if no filters are passed 1`] = `<DocumentFragment />`;
@@ -1,20 +1,20 @@
1
- import buildNewQuery from '../../../../../../src/components/SearchFilter/helpers/build-new-query';
2
-
1
+ import buildNewUrl from '../../../../../../src/components/SearchFilter/helpers/build-new-url';
2
+ // url, currentUrl, queryParams, hashBit
3
3
  const mockedProps = [
4
4
  ['', 'current-as-path', 'some=query&params=value'],
5
5
  ['urlFromProps', '', 'other=query&with=value'],
6
- ['urlFromProps', 'not=used', 'another=query&withthis=value', 'sort=asc&sortby=name']
6
+ ['urlFromProps', 'not=used', 'another=query&withthis=value'],
7
+ ['urlFromProps', 'not=used', 'another=query&withthis=value', 'this-is-content']
7
8
  ];
8
9
 
9
- describe('buildNewQuery helper function', () => {
10
- const simpleExample = buildNewQuery(...mockedProps[0]);
11
- const withPropsUrl = buildNewQuery(...mockedProps[1]);
12
- const withSort = buildNewQuery(...mockedProps[2]);
10
+ describe('buildNewUrl helper function', () => {
11
+ const simpleExample = buildNewUrl(...mockedProps[0]);
12
+ const withPropsUrl = buildNewUrl(...mockedProps[1]);
13
+ const withHash = buildNewUrl(...mockedProps[3]);
13
14
 
14
15
  it('should always return a string', () => {
15
16
  expect(typeof simpleExample).toBe('string');
16
17
  expect(typeof withPropsUrl).toBe('string');
17
- expect(typeof withSort).toBe('string');
18
18
  });
19
19
 
20
20
  it('should return new url using asPath and queryParams passed', () => {
@@ -25,7 +25,7 @@ describe('buildNewQuery helper function', () => {
25
25
  expect(withPropsUrl).toEqual('urlFromProps?other=query&with=value');
26
26
  });
27
27
 
28
- it('should return new url with sort if passed', () => {
29
- expect(withSort).toEqual('urlFromProps?another=query&withthis=value&sort=asc&sortby=name');
28
+ it('should return new url with hash if passed', () => {
29
+ expect(withHash).toEqual('urlFromProps?another=query&withthis=value#this-is-content');
30
30
  });
31
31
  });
@@ -1,4 +1,4 @@
1
- import buildQuery from '../../../../../../src/components/SearchFilter/helpers/build-query';
1
+ import buildUrlQuery from '../../../../../../src/components/SearchFilter/helpers/build-url-query';
2
2
  import { SEARCH_TERM } from '../../../../../../src/components/SearchFilter/constants';
3
3
 
4
4
  const mockedProps = [
@@ -10,10 +10,15 @@ const mockedProps = [
10
10
  ]
11
11
  ];
12
12
 
13
- describe('buildQuery helper function', () => {
14
- const simpleExample = buildQuery(...mockedProps[0]);
15
- const withTextSearch = buildQuery(...mockedProps[1]);
16
- const withSearchAndRange = buildQuery(...mockedProps[2]);
13
+ describe('buildUrlQuery helper function', () => {
14
+ const simpleExample = buildUrlQuery(...mockedProps[0]);
15
+ const withTextSearch = buildUrlQuery(...mockedProps[1]);
16
+ const withSearchAndRange = buildUrlQuery(...mockedProps[2]);
17
+ const withListName = buildUrlQuery(...mockedProps[2], 'listName');
18
+ const withListNameAndOtherQueryBits = buildUrlQuery(...mockedProps[2], 'listName', {
19
+ sort: 'asc',
20
+ anotherQuery: '123'
21
+ });
17
22
 
18
23
  it('should always return a string', () => {
19
24
  expect(typeof simpleExample).toBe('string');
@@ -24,10 +29,22 @@ describe('buildQuery helper function', () => {
24
29
  });
25
30
 
26
31
  it('should return new query string with search term if available', () => {
27
- expect(withTextSearch).toEqual('search_term=new%20search%20value');
32
+ expect(withTextSearch).toEqual('search_term=new search value');
28
33
  });
29
34
 
30
35
  it('should return new query string with search text and all other available query values', () => {
31
- expect(withSearchAndRange).toEqual('search_term=new%20search%20value&rangeFilter=2-10');
36
+ expect(withSearchAndRange).toEqual('search_term=new search value&rangeFilter=2-10');
37
+ });
38
+
39
+ it('should return new query string listName if passed', () => {
40
+ expect(withListName).toEqual(
41
+ 'pb[listName][search_term]=new search value&pb[listName][rangeFilter]=2-10'
42
+ );
43
+ });
44
+
45
+ it('should return new query string with unaltered bits from other query', () => {
46
+ expect(withListNameAndOtherQueryBits).toEqual(
47
+ 'pb[listName][search_term]=new search value&pb[listName][rangeFilter]=2-10&sort=asc&anotherQuery=123'
48
+ );
32
49
  });
33
50
  });
@@ -1,4 +1,4 @@
1
- import getInitialFilterValues from '../../../../../../src/components/SearchFilter/helpers/get-initial-filter-values';
1
+ import getFilterValues from '../../../../../../src/components/SearchFilter/helpers/get-filter-values';
2
2
  import { SEARCH_TERM } from '../../../../../../src/components/SearchFilter/constants';
3
3
 
4
4
  const filters = [
@@ -16,25 +16,24 @@ const mockedProps = [
16
16
  [{ rangeFilter: { min: 5, max: 10 }, checkboxFilter: {}, emptySelect: {} }, filters, query]
17
17
  ];
18
18
 
19
- describe('getInitialFilterValues helper function', () => {
20
- const withNoValue = getInitialFilterValues(...mockedProps[0]);
21
- const withValues = getInitialFilterValues(...mockedProps[1]);
19
+ describe('getFilterValues helper function', () => {
20
+ const withNoValue = getFilterValues(...mockedProps[0]);
21
+ const withValues = getFilterValues(...mockedProps[1]);
22
22
 
23
23
  it('should return init filter values based on query and filterData', () => {
24
- expect(withNoValue).toEqual({ dataNotSet: false, search_term: '' });
24
+ expect(withNoValue).toEqual({ search_term: '', dataNotSet: false });
25
25
  expect(withValues).toEqual({
26
- dataNotSet: false,
27
26
  search_term: query[SEARCH_TERM],
28
27
  rangeFilter: { max: 10, maxValue: 8, min: 5, minValue: 7, step: 1 },
29
28
  checkboxFilter: ['check1', 'check2'],
30
- emptySelect: null
29
+ emptySelect: null,
30
+ dataNotSet: false
31
31
  });
32
32
  });
33
33
 
34
34
  it('should return init filter values without filterData', () => {
35
- const withNoData = getInitialFilterValues(null, filters, query);
35
+ const withNoData = getFilterValues(null, filters, query);
36
36
  expect(withNoData).toEqual({
37
- dataNotSet: true,
38
37
  search_term: query[SEARCH_TERM],
39
38
  rangeFilter: {
40
39
  max: 8,
@@ -44,7 +43,8 @@ describe('getInitialFilterValues helper function', () => {
44
43
  step: 1
45
44
  },
46
45
  checkboxFilter: query.checkboxFilter,
47
- emptySelect: null
46
+ emptySelect: null,
47
+ dataNotSet: true
48
48
  });
49
49
  });
50
50
  });
@@ -5,8 +5,11 @@ import { render } from '@blaze-cms/tools/test-helpers/test-functions';
5
5
  import '@testing-library/jest-dom/extend-expect';
6
6
  import SearchFilterSort from '../../../../../src/components/SearchFilterSort/SearchFilterSort';
7
7
 
8
+ jest.mock('next/router', () => ({
9
+ useRouter: jest.fn(() => ({ asPath: 'test-url' }))
10
+ }));
11
+
8
12
  const props = {
9
- router: { asPath: 'some-path' },
10
13
  filters: [{ label: 'label1', propsToDisplay: ['name'], sort: 'ascending' }],
11
14
  label: 'someLabel',
12
15
  id: '123456'
@@ -1,43 +1,50 @@
1
1
  import handleSortUpdate from '../../../../../../src/components/SearchFilterSort/helpers/handle-sort-update';
2
2
 
3
3
  const routerPushResultMock = () => ({ then: jest.fn() });
4
+ // router, value, query, url, selectLabel, listComponentName
4
5
  const mockedProps = [
5
- [{ push: jest.fn(routerPushResultMock) }, 'defaultOption', {}, 'url', 'defaultOption'],
6
- [
7
- { push: jest.fn(routerPushResultMock) },
8
- 'defaultOption',
9
- { sort: 'asc', sortby: 'name', type: 'big' },
10
- 'baseurl',
11
- 'defaultOption'
12
- ],
13
- [
14
- { push: jest.fn(routerPushResultMock) },
15
- 'name:desc',
16
- { someOther: 'ott' },
17
- 'url',
18
- 'defaultOption'
19
- ]
6
+ {
7
+ router: { asPath: 'asPath', push: jest.fn(routerPushResultMock) },
8
+ value: 'defaultOption',
9
+ query: {},
10
+ url: 'url',
11
+ selectLabel: 'defaultOption'
12
+ },
13
+ {
14
+ router: { asPath: 'asPath', push: jest.fn(routerPushResultMock) },
15
+ value: 'defaultOption',
16
+ query: { sort: 'asc', sortby: 'name', type: 'big' },
17
+ url: 'baseurl',
18
+ selectLabel: 'defaultOption'
19
+ },
20
+ {
21
+ router: { asPath: 'asPath', push: jest.fn(routerPushResultMock) },
22
+ value: 'name:desc',
23
+ query: { someOther: 'ott' },
24
+ url: 'url',
25
+ selectLabel: 'defaultOption'
26
+ }
20
27
  ];
21
28
 
22
29
  describe('handleSortUpdate helper function', () => {
23
- mockedProps.forEach(props => handleSortUpdate(...props));
30
+ mockedProps.forEach(props => handleSortUpdate({ ...props }));
24
31
 
25
32
  it('should navigate to url with no sort if default value is selected', () => {
26
- expect(mockedProps[0][0].push).toHaveBeenLastCalledWith('/Resolver', 'url', {
33
+ expect(mockedProps[0].router.push).toHaveBeenLastCalledWith('/Resolver', 'url', {
27
34
  shallow: true,
28
35
  scroll: false
29
36
  });
30
37
  });
31
38
 
32
39
  it('should navigate to url with no sort with previous querys if default value is selected', () => {
33
- expect(mockedProps[1][0].push).toHaveBeenLastCalledWith('/Resolver', 'baseurl?type=big', {
40
+ expect(mockedProps[1].router.push).toHaveBeenLastCalledWith('/Resolver', 'baseurl?type=big', {
34
41
  shallow: true,
35
42
  scroll: false
36
43
  });
37
44
  });
38
45
 
39
46
  it('should navigate to url with new sort if selected', () => {
40
- expect(mockedProps[2][0].push).toHaveBeenLastCalledWith(
47
+ expect(mockedProps[2].router.push).toHaveBeenLastCalledWith(
41
48
  '/Resolver',
42
49
  'url?someOther=ott&sort=desc&sortby=name',
43
50
  { shallow: true, scroll: false }
@@ -1,10 +1,15 @@
1
1
  import updateSort from '../../../../../../src/components/SearchFilterSort/helpers/update-sort';
2
2
 
3
- const mockedProps = [['name:asc', {}, 'aurl'], ['name:asc', { other: '12', query2: 'an' }, 'aurl']];
3
+ const mockedProps = [
4
+ ['name:asc', {}, 'aurl'],
5
+ ['name:asc', { other: '12', query2: 'an' }, 'aurl'],
6
+ ['name:desc', { query1: 'aquery' }, 'theUrl', '#hashBit']
7
+ ];
4
8
 
5
9
  describe('updateSort helper function', () => {
6
10
  const basicSort = updateSort(...mockedProps[0]);
7
11
  const sortWithOtherQuerys = updateSort(...mockedProps[1]);
12
+ const sortWithhash = updateSort(...mockedProps[2]);
8
13
 
9
14
  it('should return a parsed url based on the parameters passed', () => {
10
15
  expect(basicSort).toEqual('aurl?sort=asc&sortby=name');
@@ -13,4 +18,8 @@ describe('updateSort helper function', () => {
13
18
  it('should return a parsed url with extra query params if passed', () => {
14
19
  expect(sortWithOtherQuerys).toEqual('aurl?other=12&query2=an&sort=asc&sortby=name');
15
20
  });
21
+
22
+ it('should return a parsed url with extra query params and hash if passed', () => {
23
+ expect(sortWithhash).toEqual('theUrl?query1=aquery&sort=desc&sortby=name#hashBit');
24
+ });
16
25
  });
@@ -0,0 +1,18 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`get wrapped value with link func should return array with correponding value and link 1`] = `
4
+ <React.Fragment>
5
+ <React.Fragment>
6
+ test-name
7
+ ,
8
+ </React.Fragment>
9
+
10
+ </React.Fragment>
11
+ `;
12
+
13
+ exports[`get wrapped value with link func should return array with correponding value and link 2`] = `
14
+ <React.Fragment>
15
+ test-name2
16
+
17
+ </React.Fragment>
18
+ `;
@@ -182,6 +182,31 @@ describe('get card render props', () => {
182
182
  'id,name,url,sponsored,featured,category{name,listingPageId,listingPageEntity, id publishedListingPage{id, url}},address{country,id}'
183
183
  );
184
184
  });
185
+
186
+ it('should url props where enableLink is set', () => {
187
+ const _data = {
188
+ getEntitySchema: {
189
+ interfaces: [CONTENT_INTERFACE],
190
+ properties: {
191
+ id: 'id',
192
+ nestedProperty: {
193
+ type: 'object'
194
+ }
195
+ },
196
+ relations: [{ localField: 'address' }],
197
+ dynamicProperties: {
198
+ nestedDynamicProperty: {
199
+ type: 'object'
200
+ }
201
+ }
202
+ }
203
+ };
204
+ const linkProps = ['nestedProperty.title', 'nestedDynamicProperty.title', 'address.title'];
205
+ const query = buildPropsQuery(_data, linkProps, {}, linkProps);
206
+ expect(query).toEqual(
207
+ 'id,name,url,sponsored,featured,nestedProperty{title,url},nestedDynamicProperty{title,url},address{title,id,url}'
208
+ );
209
+ });
185
210
  });
186
211
 
187
212
  function testUrlProperty({ extraProperties = {}, dynamicProperties = {}, cardProps }) {
@@ -33,7 +33,7 @@ describe('get wrapped value with link func', () => {
33
33
  expect(resultWithArray).toHaveLength(2);
34
34
  expect(resultWithArray[0].props.href).toEqual(link);
35
35
  expect(resultWithArray[0].key).toEqual(`${keyPrefix}-0`);
36
- expect(resultWithArray[0].props.children).toEqual(`${arrayOfValues[0][keyField]}, `);
37
- expect(resultWithArray[1]).toEqual(`${arrayOfValues[1][keyField]} `);
36
+ expect(resultWithArray[0].props.children).toMatchSnapshot();
37
+ expect(resultWithArray[1]).toMatchSnapshot();
38
38
  });
39
39
  });