@blaze-cms/react-page-builder 0.124.0-alpha.3 → 0.124.0-alpha.7

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 (342) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/lib/application/query/index.js +1 -1
  3. package/lib/application/query/index.js.map +1 -1
  4. package/lib/components/SearchContent/index.js +131 -63
  5. package/lib/components/SearchContent/index.js.map +1 -1
  6. package/lib/constants/index.js +1 -1
  7. package/lib/helpers/build-props-query.js +18 -11
  8. package/lib/helpers/build-props-query.js.map +1 -1
  9. package/lib-es/application/query/index.js +4 -0
  10. package/lib-es/application/query/index.js.map +1 -1
  11. package/lib-es/components/SearchContent/index.js +83 -50
  12. package/lib-es/components/SearchContent/index.js.map +1 -1
  13. package/lib-es/helpers/build-props-query.js +11 -2
  14. package/lib-es/helpers/build-props-query.js.map +1 -1
  15. package/package.json +2 -2
  16. package/src/application/query/index.js +4 -0
  17. package/src/components/SearchContent/index.js +78 -38
  18. package/src/helpers/build-props-query.js +6 -3
  19. package/tests/unit/src/helpers/build-props-query.test.js +43 -0
  20. package/coverage/clover.xml +0 -3149
  21. package/coverage/coverage-final.json +0 -257
  22. package/coverage/lcov-report/HOC/index.html +0 -141
  23. package/coverage/lcov-report/HOC/index.js.html +0 -89
  24. package/coverage/lcov-report/HOC/withInfiniteScroll.js.html +0 -311
  25. package/coverage/lcov-report/HOC/withTitle.js.html +0 -185
  26. package/coverage/lcov-report/PBContext/index.html +0 -111
  27. package/coverage/lcov-report/PBContext/index.js.html +0 -95
  28. package/coverage/lcov-report/application/query/index.html +0 -111
  29. package/coverage/lcov-report/application/query/index.js.html +0 -482
  30. package/coverage/lcov-report/base.css +0 -224
  31. package/coverage/lcov-report/block-navigation.js +0 -79
  32. package/coverage/lcov-report/components/Banner/Banner.js.html +0 -260
  33. package/coverage/lcov-report/components/Banner/BannerRender.js.html +0 -464
  34. package/coverage/lcov-report/components/Banner/helpers.js.html +0 -515
  35. package/coverage/lcov-report/components/Banner/index.html +0 -156
  36. package/coverage/lcov-report/components/Banner/index.js.html +0 -89
  37. package/coverage/lcov-report/components/BlazeLink.js.html +0 -197
  38. package/coverage/lcov-report/components/Button.js.html +0 -353
  39. package/coverage/lcov-report/components/Card/Card.js.html +0 -548
  40. package/coverage/lcov-report/components/Card/CardContainer.js.html +0 -407
  41. package/coverage/lcov-report/components/Card/CardFactory.js.html +0 -218
  42. package/coverage/lcov-report/components/Card/CardRender.js.html +0 -806
  43. package/coverage/lcov-report/components/Card/constants.js.html +0 -89
  44. package/coverage/lcov-report/components/Card/helpers/get-dynamic-grid-classes.js.html +0 -137
  45. package/coverage/lcov-report/components/Card/helpers/get-published-listing-url.js.html +0 -92
  46. package/coverage/lcov-report/components/Card/helpers/index.html +0 -156
  47. package/coverage/lcov-report/components/Card/helpers/index.js.html +0 -89
  48. package/coverage/lcov-report/components/Card/helpers/use-dynamic-size-key.js.html +0 -98
  49. package/coverage/lcov-report/components/Card/index.html +0 -186
  50. package/coverage/lcov-report/components/Card/index.js.html +0 -89
  51. package/coverage/lcov-report/components/Carousel/Carousel.js.html +0 -185
  52. package/coverage/lcov-report/components/Carousel/CarouselImage/CarouselImage.js.html +0 -224
  53. package/coverage/lcov-report/components/Carousel/CarouselImage/index.html +0 -126
  54. package/coverage/lcov-report/components/Carousel/CarouselImage/index.js.html +0 -89
  55. package/coverage/lcov-report/components/Carousel/CarouselRender/CarouselRender.js.html +0 -335
  56. package/coverage/lcov-report/components/Carousel/CarouselRender/index.html +0 -126
  57. package/coverage/lcov-report/components/Carousel/CarouselRender/index.js.html +0 -89
  58. package/coverage/lcov-report/components/Carousel/index.html +0 -126
  59. package/coverage/lcov-report/components/Carousel/index.js.html +0 -89
  60. package/coverage/lcov-report/components/ClickWrapper.js.html +0 -191
  61. package/coverage/lcov-report/components/Code.js.html +0 -155
  62. package/coverage/lcov-report/components/DataSummary/DataSummaryFactory.js.html +0 -293
  63. package/coverage/lcov-report/components/DataSummary/DataSummaryRender.js.html +0 -272
  64. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/HeadingLargeSummary/HeadingLargeSummary.js.html +0 -149
  65. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/HeadingLargeSummary/HeadingLargeSummaryContent.js.html +0 -134
  66. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/HeadingLargeSummary/index.html +0 -141
  67. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/HeadingLargeSummary/index.js.html +0 -89
  68. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/ItemDetailsSummary/ItemDetailsSummary.js.html +0 -140
  69. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/ItemDetailsSummary/ItemDetailsSummaryContent.js.html +0 -161
  70. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/ItemDetailsSummary/index.html +0 -141
  71. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/ItemDetailsSummary/index.js.html +0 -89
  72. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/LargeSummary/LargeSummary.js.html +0 -140
  73. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/LargeSummary/LargeSummaryContent.js.html +0 -188
  74. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/LargeSummary/index.html +0 -141
  75. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/LargeSummary/index.js.html +0 -89
  76. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/ListSummary/ListSummary.js.html +0 -140
  77. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/ListSummary/ListSummaryContent.js.html +0 -185
  78. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/ListSummary/index.html +0 -141
  79. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/ListSummary/index.js.html +0 -89
  80. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/TextSummary/TextSummary.js.html +0 -140
  81. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/TextSummary/TextSummaryContent.js.html +0 -182
  82. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/TextSummary/index.html +0 -141
  83. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/TextSummary/index.js.html +0 -89
  84. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/index.html +0 -111
  85. package/coverage/lcov-report/components/DataSummary/DataSummaryTypes/index.js.html +0 -137
  86. package/coverage/lcov-report/components/DataSummary/helpers/build-props-to-display-with-content.js.html +0 -188
  87. package/coverage/lcov-report/components/DataSummary/helpers/get-data-summary-query.js.html +0 -131
  88. package/coverage/lcov-report/components/DataSummary/helpers/get-link-to-published-content.js.html +0 -110
  89. package/coverage/lcov-report/components/DataSummary/helpers/get-prop-value.js.html +0 -152
  90. package/coverage/lcov-report/components/DataSummary/helpers/get-value-from-array.js.html +0 -131
  91. package/coverage/lcov-report/components/DataSummary/helpers/index.html +0 -201
  92. package/coverage/lcov-report/components/DataSummary/helpers/index.js.html +0 -113
  93. package/coverage/lcov-report/components/DataSummary/helpers/strip-summary-props-content.js.html +0 -137
  94. package/coverage/lcov-report/components/DataSummary/index.html +0 -141
  95. package/coverage/lcov-report/components/DataSummary/index.js.html +0 -89
  96. package/coverage/lcov-report/components/Image/GlobalLightbox/GlobalLightbox.js.html +0 -674
  97. package/coverage/lcov-report/components/Image/GlobalLightbox/NavButton.js.html +0 -158
  98. package/coverage/lcov-report/components/Image/GlobalLightbox/index.html +0 -141
  99. package/coverage/lcov-report/components/Image/GlobalLightbox/index.js.html +0 -95
  100. package/coverage/lcov-report/components/Image/Image.js.html +0 -542
  101. package/coverage/lcov-report/components/Image/ImageDetails.js.html +0 -149
  102. package/coverage/lcov-report/components/Image/ImageFactory.js.html +0 -260
  103. package/coverage/lcov-report/components/Image/ImageRender.js.html +0 -299
  104. package/coverage/lcov-report/components/Image/Lightbox/Lightbox.js.html +0 -311
  105. package/coverage/lcov-report/components/Image/Lightbox/index.html +0 -126
  106. package/coverage/lcov-report/components/Image/Lightbox/index.js.html +0 -89
  107. package/coverage/lcov-report/components/Image/index.html +0 -171
  108. package/coverage/lcov-report/components/Image/index.js.html +0 -89
  109. package/coverage/lcov-report/components/Layout/Layout.js.html +0 -227
  110. package/coverage/lcov-report/components/Layout/constants.js.html +0 -98
  111. package/coverage/lcov-report/components/Layout/helpers/check-if-row-has-columns.js.html +0 -143
  112. package/coverage/lcov-report/components/Layout/helpers/get-styles-to-update.js.html +0 -107
  113. package/coverage/lcov-report/components/Layout/helpers/index.html +0 -141
  114. package/coverage/lcov-report/components/Layout/helpers/index.js.html +0 -92
  115. package/coverage/lcov-report/components/Layout/index.html +0 -141
  116. package/coverage/lcov-report/components/Layout/index.js.html +0 -89
  117. package/coverage/lcov-report/components/LazyImage/LazyImage.js.html +0 -161
  118. package/coverage/lcov-report/components/LazyImage/index.html +0 -126
  119. package/coverage/lcov-report/components/LazyImage/index.js.html +0 -89
  120. package/coverage/lcov-report/components/List/ListBuilder.js.html +0 -551
  121. package/coverage/lcov-report/components/List/ListFactory.js.html +0 -569
  122. package/coverage/lcov-report/components/List/ListRender.js.html +0 -356
  123. package/coverage/lcov-report/components/List/components/Cards/CardsRender.js.html +0 -305
  124. package/coverage/lcov-report/components/List/components/Cards/CardsRenderItem.js.html +0 -389
  125. package/coverage/lcov-report/components/List/components/Cards/CardsRenderWrapper.js.html +0 -173
  126. package/coverage/lcov-report/components/List/components/Cards/index.html +0 -156
  127. package/coverage/lcov-report/components/List/components/Cards/index.js.html +0 -89
  128. package/coverage/lcov-report/components/List/components/Full/FullRender.js.html +0 -242
  129. package/coverage/lcov-report/components/List/components/Full/FullRenderItem.js.html +0 -344
  130. package/coverage/lcov-report/components/List/components/Full/index.html +0 -141
  131. package/coverage/lcov-report/components/List/components/Full/index.js.html +0 -89
  132. package/coverage/lcov-report/components/List/components/Pagination/Classic.js.html +0 -206
  133. package/coverage/lcov-report/components/List/components/Pagination/ListPagination.js.html +0 -266
  134. package/coverage/lcov-report/components/List/components/Pagination/LoadMore.js.html +0 -182
  135. package/coverage/lcov-report/components/List/components/Pagination/index.html +0 -156
  136. package/coverage/lcov-report/components/List/components/Pagination/index.js.html +0 -89
  137. package/coverage/lcov-report/components/List/components/helpers/check-if-should-render-banner.js.html +0 -116
  138. package/coverage/lcov-report/components/List/components/helpers/check-if-should-render-gtm.js.html +0 -125
  139. package/coverage/lcov-report/components/List/components/helpers/index.html +0 -141
  140. package/coverage/lcov-report/components/List/components/helpers/index.js.html +0 -86
  141. package/coverage/lcov-report/components/List/components/index.html +0 -111
  142. package/coverage/lcov-report/components/List/components/index.js.html +0 -92
  143. package/coverage/lcov-report/components/List/constants.js.html +0 -95
  144. package/coverage/lcov-report/components/List/helpers/build-pagination-items.js.html +0 -182
  145. package/coverage/lcov-report/components/List/helpers/build-pagination-url.js.html +0 -113
  146. package/coverage/lcov-report/components/List/helpers/index.html +0 -141
  147. package/coverage/lcov-report/components/List/helpers/index.js.html +0 -83
  148. package/coverage/lcov-report/components/List/index.html +0 -171
  149. package/coverage/lcov-report/components/List/index.js.html +0 -89
  150. package/coverage/lcov-report/components/Login/Login.js.html +0 -359
  151. package/coverage/lcov-report/components/Login/index.html +0 -141
  152. package/coverage/lcov-report/components/Login/index.js.html +0 -89
  153. package/coverage/lcov-report/components/Login/loginMutation.js.html +0 -113
  154. package/coverage/lcov-report/components/Modal/Modal.js.html +0 -167
  155. package/coverage/lcov-report/components/Modal/index.html +0 -126
  156. package/coverage/lcov-report/components/Modal/index.js.html +0 -89
  157. package/coverage/lcov-report/components/SearchFilter/SearchFilter/FiltersList.js.html +0 -371
  158. package/coverage/lcov-report/components/SearchFilter/SearchFilter/MobileBottom.js.html +0 -218
  159. package/coverage/lcov-report/components/SearchFilter/SearchFilter/MobileTop.js.html +0 -146
  160. package/coverage/lcov-report/components/SearchFilter/SearchFilter/SearchFilter.js.html +0 -455
  161. package/coverage/lcov-report/components/SearchFilter/SearchFilter/index.html +0 -171
  162. package/coverage/lcov-report/components/SearchFilter/SearchFilter/index.js.html +0 -89
  163. package/coverage/lcov-report/components/SearchFilter/SearchFilterContainer.js.html +0 -398
  164. package/coverage/lcov-report/components/SearchFilter/components/Checkbox.js.html +0 -368
  165. package/coverage/lcov-report/components/SearchFilter/components/Range.js.html +0 -401
  166. package/coverage/lcov-report/components/SearchFilter/components/Select.js.html +0 -245
  167. package/coverage/lcov-report/components/SearchFilter/components/TextSearch.js.html +0 -206
  168. package/coverage/lcov-report/components/SearchFilter/components/index.html +0 -171
  169. package/coverage/lcov-report/components/SearchFilter/components/index.js.html +0 -98
  170. package/coverage/lcov-report/components/SearchFilter/constants.js.html +0 -239
  171. package/coverage/lcov-report/components/SearchFilter/helpers/build-new-query.js.html +0 -98
  172. package/coverage/lcov-report/components/SearchFilter/helpers/build-query-params.js.html +0 -155
  173. package/coverage/lcov-report/components/SearchFilter/helpers/build-raw-query-stringified.js.html +0 -221
  174. package/coverage/lcov-report/components/SearchFilter/helpers/calculate-min-max.js.html +0 -119
  175. package/coverage/lcov-report/components/SearchFilter/helpers/calculate-step.js.html +0 -92
  176. package/coverage/lcov-report/components/SearchFilter/helpers/check-if-range-updated.js.html +0 -104
  177. package/coverage/lcov-report/components/SearchFilter/helpers/decode-encode.js.html +0 -95
  178. package/coverage/lcov-report/components/SearchFilter/helpers/get-display-value.js.html +0 -98
  179. package/coverage/lcov-report/components/SearchFilter/helpers/get-intersected-prop.js.html +0 -98
  180. package/coverage/lcov-report/components/SearchFilter/helpers/get-range-value.js.html +0 -155
  181. package/coverage/lcov-report/components/SearchFilter/helpers/get-search-values.js.html +0 -308
  182. package/coverage/lcov-report/components/SearchFilter/helpers/get-select-options.js.html +0 -134
  183. package/coverage/lcov-report/components/SearchFilter/helpers/get-updated-ranges.js.html +0 -101
  184. package/coverage/lcov-report/components/SearchFilter/helpers/index.html +0 -381
  185. package/coverage/lcov-report/components/SearchFilter/helpers/index.js.html +0 -200
  186. package/coverage/lcov-report/components/SearchFilter/helpers/is-device-desktop.js.html +0 -95
  187. package/coverage/lcov-report/components/SearchFilter/helpers/remove-props-from-updated-ranges.js.html +0 -116
  188. package/coverage/lcov-report/components/SearchFilter/helpers/remove-updated-ranges.js.html +0 -98
  189. package/coverage/lcov-report/components/SearchFilter/helpers/set-updated-ranges-in-storage.js.html +0 -113
  190. package/coverage/lcov-report/components/SearchFilter/helpers/set-updated-ranges.js.html +0 -116
  191. package/coverage/lcov-report/components/SearchFilter/index.html +0 -141
  192. package/coverage/lcov-report/components/SearchFilter/index.js.html +0 -89
  193. package/coverage/lcov-report/components/SearchFilterSort/SearchFilterSort.js.html +0 -233
  194. package/coverage/lcov-report/components/SearchFilterSort/constants.js.html +0 -98
  195. package/coverage/lcov-report/components/SearchFilterSort/helpers/handle-sort-update.js.html +0 -158
  196. package/coverage/lcov-report/components/SearchFilterSort/helpers/index.html +0 -141
  197. package/coverage/lcov-report/components/SearchFilterSort/helpers/index.js.html +0 -86
  198. package/coverage/lcov-report/components/SearchFilterSort/helpers/update-sort.js.html +0 -110
  199. package/coverage/lcov-report/components/SearchFilterSort/index.html +0 -141
  200. package/coverage/lcov-report/components/SearchFilterSort/index.js.html +0 -89
  201. package/coverage/lcov-report/components/SocialFollow/SFItem.js.html +0 -152
  202. package/coverage/lcov-report/components/SocialFollow/SocialFollow.js.html +0 -179
  203. package/coverage/lcov-report/components/SocialFollow/SocialFollowRender.js.html +0 -182
  204. package/coverage/lcov-report/components/SocialFollow/index.html +0 -171
  205. package/coverage/lcov-report/components/SocialFollow/index.js.html +0 -89
  206. package/coverage/lcov-report/components/SocialFollow/sf.config.js.html +0 -206
  207. package/coverage/lcov-report/components/TextBlock/TextBlockRender.js.html +0 -113
  208. package/coverage/lcov-report/components/TextBlock/index.html +0 -126
  209. package/coverage/lcov-report/components/TextBlock/index.js.html +0 -188
  210. package/coverage/lcov-report/components/Video/Video.js.html +0 -266
  211. package/coverage/lcov-report/components/Video/VideoRender.js.html +0 -137
  212. package/coverage/lcov-report/components/Video/index.html +0 -141
  213. package/coverage/lcov-report/components/Video/index.js.html +0 -89
  214. package/coverage/lcov-report/components/Video/providers/Default.js.html +0 -149
  215. package/coverage/lcov-report/components/Video/providers/JWPlayer/JWPlayerController.js.html +0 -212
  216. package/coverage/lcov-report/components/Video/providers/JWPlayer/JWPlayerProvider.js.html +0 -311
  217. package/coverage/lcov-report/components/Video/providers/JWPlayer/index.html +0 -126
  218. package/coverage/lcov-report/components/Video/providers/YouTube/YouTubeProvider.js.html +0 -179
  219. package/coverage/lcov-report/components/Video/providers/YouTube/helpers/index.html +0 -111
  220. package/coverage/lcov-report/components/Video/providers/YouTube/helpers/index.js.html +0 -116
  221. package/coverage/lcov-report/components/Video/providers/YouTube/index.html +0 -111
  222. package/coverage/lcov-report/components/Video/providers/get-provider.js.html +0 -131
  223. package/coverage/lcov-report/components/Video/providers/index.html +0 -141
  224. package/coverage/lcov-report/components/Video/providers/index.js.html +0 -89
  225. package/coverage/lcov-report/components/Wrapper.js.html +0 -161
  226. package/coverage/lcov-report/components/index.html +0 -186
  227. package/coverage/lcov-report/components/index.js.html +0 -167
  228. package/coverage/lcov-report/constants/componentsDefaultValues.js.html +0 -143
  229. package/coverage/lcov-report/constants/index.html +0 -126
  230. package/coverage/lcov-report/constants/index.js.html +0 -671
  231. package/coverage/lcov-report/favicon.png +0 -0
  232. package/coverage/lcov-report/helpers/build-image-properties.js.html +0 -137
  233. package/coverage/lcov-report/helpers/build-inherited-filters.js.html +0 -350
  234. package/coverage/lcov-report/helpers/build-link-extra-props.js.html +0 -119
  235. package/coverage/lcov-report/helpers/build-props-query.js.html +0 -263
  236. package/coverage/lcov-report/helpers/build-query-fields.js.html +0 -119
  237. package/coverage/lcov-report/helpers/build-raw-query-base.js.html +0 -353
  238. package/coverage/lcov-report/helpers/build-raw-query.js.html +0 -323
  239. package/coverage/lcov-report/helpers/build-search-values-checkbox-select.js.html +0 -278
  240. package/coverage/lcov-report/helpers/build-search-values-text.js.html +0 -125
  241. package/coverage/lcov-report/helpers/build-set-filters.js.html +0 -197
  242. package/coverage/lcov-report/helpers/check-for-error.js.html +0 -110
  243. package/coverage/lcov-report/helpers/check-props-to-use.js.html +0 -110
  244. package/coverage/lcov-report/helpers/check-sort-by.js.html +0 -92
  245. package/coverage/lcov-report/helpers/entities/constants.js.html +0 -116
  246. package/coverage/lcov-report/helpers/entities/index.html +0 -111
  247. package/coverage/lcov-report/helpers/get-banner-data.js.html +0 -92
  248. package/coverage/lcov-report/helpers/get-click-wrapper-options.js.html +0 -170
  249. package/coverage/lcov-report/helpers/get-current-offset.js.html +0 -101
  250. package/coverage/lcov-report/helpers/get-dictionary-match.js.html +0 -116
  251. package/coverage/lcov-report/helpers/get-display-count-data.js.html +0 -119
  252. package/coverage/lcov-report/helpers/get-elasticsearch-operator.js.html +0 -95
  253. package/coverage/lcov-report/helpers/get-entities-with-banner.js.html +0 -107
  254. package/coverage/lcov-report/helpers/get-entity-data.js.html +0 -113
  255. package/coverage/lcov-report/helpers/get-entity-render-props.js.html +0 -128
  256. package/coverage/lcov-report/helpers/get-filter-props.js.html +0 -242
  257. package/coverage/lcov-report/helpers/get-filter-relation-keys.js.html +0 -107
  258. package/coverage/lcov-report/helpers/get-generic-props.js.html +0 -113
  259. package/coverage/lcov-report/helpers/get-generic-render-variables.js.html +0 -200
  260. package/coverage/lcov-report/helpers/get-image-ids.js.html +0 -185
  261. package/coverage/lcov-report/helpers/get-inherited-filters.js.html +0 -122
  262. package/coverage/lcov-report/helpers/get-items-to-display-ids.js.html +0 -110
  263. package/coverage/lcov-report/helpers/get-modifiers.js.html +0 -137
  264. package/coverage/lcov-report/helpers/get-not-equal-query.js.html +0 -107
  265. package/coverage/lcov-report/helpers/get-pagination-index.js.html +0 -107
  266. package/coverage/lcov-report/helpers/get-parsed-prop-values.js.html +0 -197
  267. package/coverage/lcov-report/helpers/get-parsed-summary-value.js.html +0 -128
  268. package/coverage/lcov-report/helpers/get-prop-values.js.html +0 -143
  269. package/coverage/lcov-report/helpers/get-query-filters.js.html +0 -149
  270. package/coverage/lcov-report/helpers/get-query-props.js.html +0 -182
  271. package/coverage/lcov-report/helpers/get-required-schemas.js.html +0 -164
  272. package/coverage/lcov-report/helpers/get-sanitized-prop-values.js.html +0 -92
  273. package/coverage/lcov-report/helpers/get-search-filter-type.js.html +0 -101
  274. package/coverage/lcov-report/helpers/get-sort-by-field-name.js.html +0 -146
  275. package/coverage/lcov-report/helpers/get-unpublished-entity-name.js.html +0 -113
  276. package/coverage/lcov-report/helpers/get-updated-filter-by.js.html +0 -158
  277. package/coverage/lcov-report/helpers/get-wrapped-value-with-link.js.html +0 -155
  278. package/coverage/lcov-report/helpers/group-entities.js.html +0 -113
  279. package/coverage/lcov-report/helpers/has-children.js.html +0 -125
  280. package/coverage/lcov-report/helpers/index.html +0 -1041
  281. package/coverage/lcov-report/helpers/index.js.html +0 -233
  282. package/coverage/lcov-report/helpers/inject-banner.js.html +0 -125
  283. package/coverage/lcov-report/helpers/inject-banners-to-entities.js.html +0 -128
  284. package/coverage/lcov-report/helpers/inject-multiple-banners/get-banners-for-entities/get-banners-for-entities.js.html +0 -128
  285. package/coverage/lcov-report/helpers/inject-multiple-banners/get-banners-for-entities/index.html +0 -126
  286. package/coverage/lcov-report/helpers/inject-multiple-banners/get-banners-for-entities/index.js.html +0 -89
  287. package/coverage/lcov-report/helpers/inject-multiple-banners/get-banners-for-nodes/get-banners-for-nodes.js.html +0 -131
  288. package/coverage/lcov-report/helpers/inject-multiple-banners/get-banners-for-nodes/helpers/group-node-entities.js.html +0 -179
  289. package/coverage/lcov-report/helpers/inject-multiple-banners/get-banners-for-nodes/helpers/index.html +0 -126
  290. package/coverage/lcov-report/helpers/inject-multiple-banners/get-banners-for-nodes/helpers/index.js.html +0 -89
  291. package/coverage/lcov-report/helpers/inject-multiple-banners/get-banners-for-nodes/index.html +0 -126
  292. package/coverage/lcov-report/helpers/inject-multiple-banners/get-banners-for-nodes/index.js.html +0 -89
  293. package/coverage/lcov-report/helpers/inject-multiple-banners/index.html +0 -126
  294. package/coverage/lcov-report/helpers/inject-multiple-banners/index.js.html +0 -89
  295. package/coverage/lcov-report/helpers/inject-multiple-banners/inject-multiple-banners.js.html +0 -119
  296. package/coverage/lcov-report/helpers/is-browser.js.html +0 -89
  297. package/coverage/lcov-report/helpers/is-filter-entitys-id.js.html +0 -122
  298. package/coverage/lcov-report/helpers/is-object.js.html +0 -89
  299. package/coverage/lcov-report/helpers/is-using-relation-image.js.html +0 -92
  300. package/coverage/lcov-report/helpers/parse-interval.js.html +0 -89
  301. package/coverage/lcov-report/helpers/parse-props-to-display.js.html +0 -194
  302. package/coverage/lcov-report/helpers/remove-extra-items.js.html +0 -119
  303. package/coverage/lcov-report/helpers/remove-unwanted-characters.js.html +0 -140
  304. package/coverage/lcov-report/helpers/render-children.js.html +0 -152
  305. package/coverage/lcov-report/helpers/should-render-waypoint.js.html +0 -92
  306. package/coverage/lcov-report/helpers/should-show-property.js.html +0 -89
  307. package/coverage/lcov-report/helpers/sort-response-data.js.html +0 -107
  308. package/coverage/lcov-report/helpers/split-children.js.html +0 -233
  309. package/coverage/lcov-report/helpers/update-childrens-parent.js.html +0 -140
  310. package/coverage/lcov-report/hooks/helpers/RenderList.js.html +0 -233
  311. package/coverage/lcov-report/hooks/helpers/StoreImages.js.html +0 -215
  312. package/coverage/lcov-report/hooks/helpers/append-gtm-classname.js.html +0 -188
  313. package/coverage/lcov-report/hooks/helpers/buildPBComponents.js.html +0 -329
  314. package/coverage/lcov-report/hooks/helpers/check-banner-insertion-set.js.html +0 -125
  315. package/coverage/lcov-report/hooks/helpers/constants.js.html +0 -98
  316. package/coverage/lcov-report/hooks/helpers/get-banner-index.js.html +0 -92
  317. package/coverage/lcov-report/hooks/helpers/get-lightbox-images.js.html +0 -242
  318. package/coverage/lcov-report/hooks/helpers/getComponent.js.html +0 -95
  319. package/coverage/lcov-report/hooks/helpers/index.html +0 -261
  320. package/coverage/lcov-report/hooks/helpers/index.js.html +0 -89
  321. package/coverage/lcov-report/hooks/helpers/insert-banners.js.html +0 -362
  322. package/coverage/lcov-report/hooks/index.html +0 -201
  323. package/coverage/lcov-report/hooks/index.js.html +0 -98
  324. package/coverage/lcov-report/hooks/use-get-entity-schema.js.html +0 -167
  325. package/coverage/lcov-report/hooks/use-get-entity-schemas-as-obj.js.html +0 -113
  326. package/coverage/lcov-report/hooks/use-get-image-id-from-relation.js.html +0 -143
  327. package/coverage/lcov-report/hooks/use-get-images.js.html +0 -143
  328. package/coverage/lcov-report/hooks/use-get-single-entity-schema.js.html +0 -125
  329. package/coverage/lcov-report/hooks/use-page-builder.js.html +0 -155
  330. package/coverage/lcov-report/index.html +0 -936
  331. package/coverage/lcov-report/prettify.css +0 -1
  332. package/coverage/lcov-report/prettify.js +0 -2
  333. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  334. package/coverage/lcov-report/sorter.js +0 -170
  335. package/coverage/lcov-report/utils/component-map.js.html +0 -182
  336. package/coverage/lcov-report/utils/get-class-modifiers.js.html +0 -287
  337. package/coverage/lcov-report/utils/get-image-data.js.html +0 -137
  338. package/coverage/lcov-report/utils/get-props-to-display-modifiers.js.html +0 -92
  339. package/coverage/lcov-report/utils/index.html +0 -186
  340. package/coverage/lcov-report/utils/index.js.html +0 -101
  341. package/coverage/lcov-report/utils/is-object-empty.js.html +0 -89
  342. package/coverage/lcov.info +0 -7222
@@ -1,12 +1,14 @@
1
1
  import React, { useState } from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { gql, useQuery } from '@apollo/client';
3
+ import { gql, useApolloClient } from '@apollo/client';
4
4
  import { useRouter } from 'next/router';
5
5
  import { getPublishedContent } from '../../application/query';
6
6
  import BlazeLink from '../BlazeLink';
7
7
 
8
+ const logError = error => error;
9
+
8
10
  const SearchContent = ({
9
- entity,
11
+ entities,
10
12
  searchInputAlignment,
11
13
  searchInputWrapperMobile,
12
14
  searchInputWrapperDesktop,
@@ -16,44 +18,70 @@ const SearchContent = ({
16
18
  }) => {
17
19
  const [collapsed, setCollapsed] = useState(collapsible);
18
20
  const [searchTerm, setSearchTerm] = useState(null);
21
+ const [data, setData] = useState([]);
19
22
  const router = useRouter();
23
+ const client = useApolloClient();
20
24
 
21
25
  const capitalize = s => {
22
26
  if (typeof s !== 'string') return '';
23
27
  return s.charAt(0).toUpperCase() + s.slice(1);
24
28
  };
25
29
 
26
- const [a, b] = entity.split('_');
27
- const entityName = capitalize(a) + capitalize(b);
28
- const rawQueryStringified = JSON.stringify({
29
- size: 0,
30
- query: {
31
- bool: {
32
- should: [{
33
- match: {
34
- docType: entity
30
+ React.useEffect(() => {
31
+ if (data && data.length !== 0) return;
32
+ const promises = entities.map(entity => {
33
+ const [a, b] = entity.split('_');
34
+ const entityName = capitalize(a) + capitalize(b);
35
+ const rawQueryStringified = JSON.stringify({
36
+ size: 0,
37
+ query: {
38
+ bool: {
39
+ should: [{
40
+ match: {
41
+ docType: entity
42
+ }
43
+ }],
44
+ minimum_should_match: 1
45
+ }
46
+ }
47
+ });
48
+ const query = gql`
49
+ ${getPublishedContent(entityName)}
50
+ `;
51
+
52
+ try {
53
+ return client.query({
54
+ query,
55
+ variables: {
56
+ rawQueryStringified,
57
+ offset: 0,
58
+ limit: 5
35
59
  }
36
- }],
37
- minimum_should_match: 1
60
+ });
61
+ } catch (e) {
62
+ return [];
38
63
  }
64
+ });
65
+
66
+ try {
67
+ (async () => {
68
+ try {
69
+ const fetchResults = await Promise.all(promises);
70
+ const searchResults = fetchResults.map(result => {
71
+ const {
72
+ data: resultData
73
+ } = result;
74
+ return resultData.searchPublishedContent.results;
75
+ }).flat();
76
+ setData(searchResults);
77
+ } catch (e) {
78
+ logError(e);
79
+ }
80
+ })();
81
+ } catch (e) {
82
+ logError(e);
39
83
  }
40
84
  });
41
- const query = gql`
42
- ${getPublishedContent(entityName)}
43
- `;
44
- const {
45
- loading,
46
- error,
47
- data
48
- } = useQuery(query, {
49
- variables: {
50
- rawQueryStringified,
51
- offset: 0,
52
- limit: 5
53
- }
54
- });
55
- if (loading) return null;
56
- if (error) return null;
57
85
 
58
86
  const handleClick = (e, url) => {
59
87
  e.preventDefault();
@@ -66,30 +94,35 @@ const SearchContent = ({
66
94
  }
67
95
  };
68
96
 
69
- const renderResults = () => {
70
- // eslint-disable-next-line no-undef
97
+ const renderResults = () => // eslint-disable-next-line no-undef
98
+ data === null || data === void 0 ? void 0 : data.map(dataItem => {
71
99
  const {
72
- results
73
- } = data === null || data === void 0 ? void 0 : data.searchPublishedContent;
100
+ name,
101
+ image,
102
+ url
103
+ } = dataItem;
74
104
 
75
- if (results && searchTerm && searchTerm !== '') {
76
- return results.map(({
77
- name,
78
- url
79
- }) => {
80
- if (name.includes(searchTerm)) {
81
- return /*#__PURE__*/React.createElement(BlazeLink, {
82
- href: url,
83
- onClick: e => handleClick(e, url)
84
- }, name);
85
- }
105
+ if (searchTerm && searchTerm !== '') {
106
+ if (name.includes(searchTerm)) {
107
+ return /*#__PURE__*/React.createElement(BlazeLink, {
108
+ href: url,
109
+ onClick: e => handleClick(e, url)
110
+ }, /*#__PURE__*/React.createElement("div", {
111
+ className: "mt-2 mb-1"
112
+ }, /*#__PURE__*/React.createElement("div", {
113
+ className: "flex justify-start items-center"
114
+ }, image.url ? /*#__PURE__*/React.createElement("img", {
115
+ src: image.url,
116
+ alt: name,
117
+ className: "w-20 h-14"
118
+ }) : null, /*#__PURE__*/React.createElement("span", {
119
+ className: "ml-2"
120
+ }, name))));
121
+ }
86
122
 
87
- return null;
88
- });
123
+ return null;
89
124
  }
90
-
91
- return [];
92
- };
125
+ });
93
126
 
94
127
  const searchResultsMessage = searchTerm ? `Search results for: ${searchTerm}` : '';
95
128
  return collapsed ? /*#__PURE__*/React.createElement("div", {
@@ -160,7 +193,7 @@ SearchContent.propTypes = {
160
193
  placeholder: PropTypes.string,
161
194
  isMobile: PropTypes.bool,
162
195
  collapsible: PropTypes.bool,
163
- entity: PropTypes.string.isRequired
196
+ entities: PropTypes.array.isRequired
164
197
  };
165
198
  SearchContent.defaultProps = {
166
199
  searchInputAlignment: '',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/SearchContent/index.js"],"names":["React","useState","PropTypes","gql","useQuery","useRouter","getPublishedContent","BlazeLink","SearchContent","entity","searchInputAlignment","searchInputWrapperMobile","searchInputWrapperDesktop","collapsible","isMobile","placeholder","collapsed","setCollapsed","searchTerm","setSearchTerm","router","capitalize","s","charAt","toUpperCase","slice","a","b","split","entityName","rawQueryStringified","JSON","stringify","size","query","bool","should","match","docType","minimum_should_match","loading","error","data","variables","offset","limit","handleClick","e","url","preventDefault","push","handleKeyPress","key","target","value","renderResults","results","searchPublishedContent","map","name","includes","searchResultsMessage","propTypes","string","isRequired","defaultProps"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { gql, useQuery } from '@apollo/client';\nimport { useRouter } from 'next/router';\nimport { getPublishedContent } from '../../application/query';\nimport BlazeLink from '../BlazeLink';\n\nconst SearchContent = ({\n entity,\n searchInputAlignment,\n searchInputWrapperMobile,\n searchInputWrapperDesktop,\n collapsible,\n isMobile,\n placeholder\n}) => {\n const [collapsed, setCollapsed] = useState(collapsible);\n const [searchTerm, setSearchTerm] = useState(null);\n const router = useRouter();\n\n const capitalize = s => {\n if (typeof s !== 'string') return '';\n return s.charAt(0).toUpperCase() + s.slice(1);\n };\n\n const [a, b] = entity.split('_');\n\n const entityName = capitalize(a) + capitalize(b);\n\n const rawQueryStringified = JSON.stringify({\n size: 0,\n query: {\n bool: {\n should: [\n {\n match: {\n docType: entity\n }\n }\n ],\n minimum_should_match: 1\n }\n }\n });\n\n const query = gql`\n ${getPublishedContent(entityName)}\n `;\n\n const { loading, error, data } = useQuery(query, {\n variables: { rawQueryStringified, offset: 0, limit: 5 }\n });\n\n if (loading) return null;\n if (error) return null;\n\n const handleClick = (e, url) => {\n e.preventDefault();\n router.push(url);\n };\n\n const handleKeyPress = e => {\n if (e.key === 'Enter' && e.target.value !== '') {\n router.push(`/search?search_term=${e.target.value}`);\n }\n };\n\n const renderResults = () => {\n // eslint-disable-next-line no-undef\n const { results } = data?.searchPublishedContent;\n\n if (results && searchTerm && searchTerm !== '') {\n return results.map(({ name, url }) => {\n if (name.includes(searchTerm)) {\n return (\n <BlazeLink href={url} onClick={e => handleClick(e, url)}>\n {name}\n </BlazeLink>\n );\n }\n\n return null;\n });\n }\n\n return [];\n };\n\n const searchResultsMessage = searchTerm ? `Search results for: ${searchTerm}` : '';\n\n return collapsed ? (\n <div className={isMobile ? searchInputWrapperMobile : searchInputWrapperDesktop}>\n <div className=\"search-content--collapse__wrapper\">\n <label className=\"search-content--collapse__label\">\n <span className=\"search-content--collapse__icon_wrapper\">\n <svg className=\"search-content--collapse__icon\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n <input\n onFocus={() => setCollapsed(false)}\n onChange={e => setSearchTerm(e.target.value)}\n type=\"text\"\n name=\"search\"\n value=\"\"\n className=\"search-content--collapse__input\"\n />\n </label>\n </div>\n </div>\n ) : (\n <>\n <div className={`${isMobile ? searchInputWrapperMobile : searchInputWrapperDesktop}`}>\n <div className=\"search-content--expanded__wrapper\">\n <label className=\"search-content--expanded__label\">\n <span className=\"search-content--expanded__icon_wrapper\">\n <svg className=\"search-content--expanded__icon\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n <input\n type=\"text\"\n name=\"search\"\n onChange={e => setSearchTerm(e.target.value)}\n onKeyPress={handleKeyPress}\n className=\"search-content--expanded__input\"\n placeholder={placeholder}\n onBlur={() => {\n if (!collapsible) return;\n if (!searchTerm || searchTerm === '') setCollapsed(true);\n }}\n />\n </label>\n </div>\n {data &&\n searchResultsMessage !== '' && (\n <div className=\"search-content--results__wrapper\">\n <div className=\"search-content--results__wrapper--message\">\n <div className=\"text-sm pt-2\">{searchResultsMessage}</div>\n\n <div className=\"search-content--results__message\">\n <div className=\"search-content--results__content\">{renderResults()}</div>\n </div>\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nSearchContent.propTypes = {\n searchInputAlignment: PropTypes.string,\n searchInputWrapperMobile: PropTypes.string,\n searchInputWrapperDesktop: PropTypes.string,\n placeholder: PropTypes.string,\n isMobile: PropTypes.bool,\n collapsible: PropTypes.bool,\n entity: PropTypes.string.isRequired\n};\n\nSearchContent.defaultProps = {\n searchInputAlignment: '',\n searchInputWrapperMobile: '',\n searchInputWrapperDesktop: '',\n placeholder: '',\n isMobile: false,\n collapsible: false\n};\n\nexport default SearchContent;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/components/SearchContent/index.js"],"names":["React","useState","PropTypes","gql","useApolloClient","useRouter","getPublishedContent","BlazeLink","logError","error","SearchContent","entities","searchInputAlignment","searchInputWrapperMobile","searchInputWrapperDesktop","collapsible","isMobile","placeholder","collapsed","setCollapsed","searchTerm","setSearchTerm","data","setData","router","client","capitalize","s","charAt","toUpperCase","slice","useEffect","length","promises","map","entity","a","b","split","entityName","rawQueryStringified","JSON","stringify","size","query","bool","should","match","docType","minimum_should_match","variables","offset","limit","e","fetchResults","Promise","all","searchResults","result","resultData","searchPublishedContent","results","flat","handleClick","url","preventDefault","push","handleKeyPress","key","target","value","renderResults","dataItem","name","image","includes","searchResultsMessage","propTypes","string","array","isRequired","defaultProps"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { gql, useApolloClient } from '@apollo/client';\n\nimport { useRouter } from 'next/router';\nimport { getPublishedContent } from '../../application/query';\nimport BlazeLink from '../BlazeLink';\n\nconst logError = error => error;\n\nconst SearchContent = ({\n entities,\n searchInputAlignment,\n searchInputWrapperMobile,\n searchInputWrapperDesktop,\n collapsible,\n isMobile,\n placeholder\n}) => {\n const [collapsed, setCollapsed] = useState(collapsible);\n const [searchTerm, setSearchTerm] = useState(null);\n const [data, setData] = useState([]);\n\n const router = useRouter();\n const client = useApolloClient();\n\n const capitalize = s => {\n if (typeof s !== 'string') return '';\n return s.charAt(0).toUpperCase() + s.slice(1);\n };\n\n React.useEffect(() => {\n if (data && data.length !== 0) return;\n\n const promises = entities.map(entity => {\n const [a, b] = entity.split('_');\n\n const entityName = capitalize(a) + capitalize(b);\n\n const rawQueryStringified = JSON.stringify({\n size: 0,\n query: {\n bool: {\n should: [\n {\n match: {\n docType: entity\n }\n }\n ],\n minimum_should_match: 1\n }\n }\n });\n\n const query = gql`\n ${getPublishedContent(entityName)}\n `;\n\n try {\n return client.query({\n query,\n variables: {\n rawQueryStringified,\n offset: 0,\n limit: 5\n }\n });\n } catch (e) {\n return [];\n }\n });\n\n try {\n (async () => {\n try {\n const fetchResults = await Promise.all(promises);\n const searchResults = fetchResults\n .map(result => {\n const { data: resultData } = result;\n return resultData.searchPublishedContent.results;\n })\n .flat();\n\n setData(searchResults);\n } catch (e) {\n logError(e);\n }\n })();\n } catch (e) {\n logError(e);\n }\n });\n\n const handleClick = (e, url) => {\n e.preventDefault();\n router.push(url);\n };\n\n const handleKeyPress = e => {\n if (e.key === 'Enter' && e.target.value !== '') {\n router.push(`/search?search_term=${e.target.value}`);\n }\n };\n\n const renderResults = () =>\n // eslint-disable-next-line no-undef\n data?.map(dataItem => {\n const { name, image, url } = dataItem;\n\n if (searchTerm && searchTerm !== '') {\n if (name.includes(searchTerm)) {\n return (\n <BlazeLink href={url} onClick={e => handleClick(e, url)}>\n <div className=\"mt-2 mb-1\">\n <div className=\"flex justify-start items-center\">\n {image.url ? <img src={image.url} alt={name} className=\"w-20 h-14\" /> : null}\n <span className=\"ml-2\">{name}</span>\n </div>\n </div>\n </BlazeLink>\n );\n }\n\n return null;\n }\n });\n\n const searchResultsMessage = searchTerm ? `Search results for: ${searchTerm}` : '';\n\n return collapsed ? (\n <div className={isMobile ? searchInputWrapperMobile : searchInputWrapperDesktop}>\n <div className=\"search-content--collapse__wrapper\">\n <label className=\"search-content--collapse__label\">\n <span className=\"search-content--collapse__icon_wrapper\">\n <svg className=\"search-content--collapse__icon\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n <input\n onFocus={() => setCollapsed(false)}\n onChange={e => setSearchTerm(e.target.value)}\n type=\"text\"\n name=\"search\"\n value=\"\"\n className=\"search-content--collapse__input\"\n />\n </label>\n </div>\n </div>\n ) : (\n <>\n <div className={`${isMobile ? searchInputWrapperMobile : searchInputWrapperDesktop}`}>\n <div className=\"search-content--expanded__wrapper\">\n <label className=\"search-content--expanded__label\">\n <span className=\"search-content--expanded__icon_wrapper\">\n <svg className=\"search-content--expanded__icon\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n <input\n type=\"text\"\n name=\"search\"\n onChange={e => setSearchTerm(e.target.value)}\n onKeyPress={handleKeyPress}\n className=\"search-content--expanded__input\"\n placeholder={placeholder}\n onBlur={() => {\n if (!collapsible) return;\n if (!searchTerm || searchTerm === '') setCollapsed(true);\n }}\n />\n </label>\n </div>\n {data &&\n searchResultsMessage !== '' && (\n <div className=\"search-content--results__wrapper\">\n <div className=\"search-content--results__wrapper--message\">\n <div className=\"text-sm pt-2\">{searchResultsMessage}</div>\n\n <div className=\"search-content--results__message\">\n <div className=\"search-content--results__content\">{renderResults()}</div>\n </div>\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nSearchContent.propTypes = {\n searchInputAlignment: PropTypes.string,\n searchInputWrapperMobile: PropTypes.string,\n searchInputWrapperDesktop: PropTypes.string,\n placeholder: PropTypes.string,\n isMobile: PropTypes.bool,\n collapsible: PropTypes.bool,\n entities: PropTypes.array.isRequired\n};\n\nSearchContent.defaultProps = {\n searchInputAlignment: '',\n searchInputWrapperMobile: '',\n searchInputWrapperDesktop: '',\n placeholder: '',\n isMobile: false,\n collapsible: false\n};\n\nexport default SearchContent;\n"],"file":"index.js"}
@@ -13,12 +13,20 @@ const buildPropsQuery = (data, extraProps = [], cardOptions = null) => {
13
13
  const allProps = [...typeBasedProps, ...extraProps];
14
14
  const uniqueProps = [...new Set([...allProps])];
15
15
  const basicProps = uniqueProps.filter(prop => prop && !prop.includes('.')).filter((prop, i, arr) => arr.indexOf(prop) === i);
16
- const complexProps = buildComplexProps(shouldAddCategoryProps, uniqueProps);
16
+ const complexProps = buildComplexProps(shouldAddCategoryProps, uniqueProps, data);
17
17
  return [...basicProps, ...complexProps].join(',');
18
18
  };
19
19
 
20
- const buildComplexProps = (shouldAddCategoryProps, props) => props.filter(prop => prop && prop.includes('.')).map(nested => nested.split('.')[0]).filter((prop, i, arr) => arr.indexOf(prop) === i).map(base => {
20
+ const buildComplexProps = (shouldAddCategoryProps, props, {
21
+ getEntitySchema: {
22
+ relations
23
+ }
24
+ }) => props.filter(prop => prop && prop.includes('.')).map(nested => nested.split('.')[0]).filter((prop, i, arr) => arr.indexOf(prop) === i).map(base => {
25
+ const matchingRelation = relations.find(({
26
+ localField
27
+ }) => localField === base);
21
28
  const nestedProps = props.filter((extraProp, i, arr) => extraProp && extraProp.startsWith(`${base}.`) && arr.indexOf(extraProp) === i).map(nested => nested.split('.')[1]);
29
+ if (matchingRelation && !nestedProps.includes('id')) nestedProps.push('id');
22
30
  const jointNestedProps = nestedProps.join(',');
23
31
  if (base === 'category' && shouldAddCategoryProps) return `${base}{${jointNestedProps}, ${categoryProps}}`;
24
32
 
@@ -55,6 +63,7 @@ const getTypeBaseProps = (data, cardOptions, extraPropsHaveCategory) => {
55
63
  const typeBasedProps = [...defaultProps];
56
64
  typeBasedProps.push(...getCategoyProps(shouldAddCategoryProps, hasCategory, hasPreheader));
57
65
  typeBasedProps.push(...getContentProps(isContent));
66
+ if (properties.url || dynamicProperties.url) typeBasedProps.push('url');
58
67
 
59
68
  if (displayThumbnail && relations.find(({
60
69
  localField
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/helpers/build-props-query.js"],"names":["CATEGORY_ID","ID","PREHEADER_PROP","HEADLINE_PROP","defaultProps","categoryProps","checkProps","props","Object","keys","filter","prop","length","buildPropsQuery","data","extraProps","cardOptions","extraPropsHaveCategory","includes","typeBasedProps","shouldAddCategoryProps","getTypeBaseProps","allProps","uniqueProps","Set","basicProps","i","arr","indexOf","complexProps","buildComplexProps","join","map","nested","split","base","nestedProps","extraProp","startsWith","jointNestedProps","isCard","displayCategory","displayThumbnail","getEntitySchema","interfaces","properties","dynamicProperties","relations","isContent","hasCategory","hasPreheader","push","getCategoyProps","getContentProps","find","localField"],"mappings":"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","sourcesContent":["import { CATEGORY_ID, ID, PREHEADER_PROP, HEADLINE_PROP } from '../constants';\n\nconst defaultProps = [ID, 'name'];\nconst categoryProps = 'id publishedListingPage{id, url}';\n\nconst checkProps = props =>\n !!(props && Object.keys(props).filter(prop => prop === CATEGORY_ID).length);\n\nconst buildPropsQuery = (data, extraProps = [], cardOptions = null) => {\n const extraPropsHaveCategory = !!extraProps.filter(prop => prop.includes('category.')).length;\n\n const { typeBasedProps, shouldAddCategoryProps } = getTypeBaseProps(\n data,\n cardOptions,\n extraPropsHaveCategory\n );\n\n const allProps = [...typeBasedProps, ...extraProps];\n\n const uniqueProps = [...new Set([...allProps])];\n\n const basicProps = uniqueProps\n .filter(prop => prop && !prop.includes('.'))\n .filter((prop, i, arr) => arr.indexOf(prop) === i);\n const complexProps = buildComplexProps(shouldAddCategoryProps, uniqueProps);\n\n return [...basicProps, ...complexProps].join(',');\n};\n\nconst buildComplexProps = (shouldAddCategoryProps, props) =>\n props\n .filter(prop => prop && prop.includes('.'))\n .map(nested => nested.split('.')[0])\n .filter((prop, i, arr) => arr.indexOf(prop) === i)\n .map(base => {\n const nestedProps = props\n .filter(\n (extraProp, i, arr) =>\n extraProp && extraProp.startsWith(`${base}.`) && arr.indexOf(extraProp) === i\n )\n .map(nested => nested.split('.')[1]);\n\n const jointNestedProps = nestedProps.join(',');\n if (base === 'category' && shouldAddCategoryProps)\n return `${base}{${jointNestedProps}, ${categoryProps}}`;\n if (base.includes('published')) {\n return `${base}{${jointNestedProps},url}`;\n }\n return `${base}{${jointNestedProps}}`;\n });\n\nconst getTypeBaseProps = (data, cardOptions, extraPropsHaveCategory) => {\n const isCard = !!cardOptions;\n const { displayCategory = true, displayThumbnail = true } = cardOptions || {};\n\n const shouldAddCategoryProps =\n (isCard && displayCategory) || (!isCard && !extraPropsHaveCategory);\n\n if (!isCard) return { typeBasedProps: [ID], shouldAddCategoryProps };\n\n const { getEntitySchema } = data;\n const { interfaces, properties, dynamicProperties, relations } = getEntitySchema;\n\n const isContent = !!interfaces.includes('content/content');\n const hasCategory = checkProps(properties) || checkProps(dynamicProperties);\n const hasPreheader = properties[PREHEADER_PROP];\n\n const typeBasedProps = [...defaultProps];\n\n typeBasedProps.push(...getCategoyProps(shouldAddCategoryProps, hasCategory, hasPreheader));\n typeBasedProps.push(...getContentProps(isContent));\n\n if (displayThumbnail && relations.find(({ localField }) => localField === 'image')) {\n typeBasedProps.push('image.id', 'image.url', 'image.data');\n }\n\n return { typeBasedProps, shouldAddCategoryProps };\n};\n\nconst getContentProps = isContent => (isContent ? ['url', 'sponsored', 'featured'] : []);\n\nconst getCategoyProps = (shouldAddCategoryProps, hasCategory, hasPreheader) => {\n if (!shouldAddCategoryProps) return [];\n\n const props = [];\n\n if (hasCategory) {\n props.push('category.name', 'category.listingPageId', 'category.listingPageEntity');\n }\n\n if (hasPreheader) {\n props.push(`${PREHEADER_PROP}{name}`);\n props.push(HEADLINE_PROP);\n }\n\n return props;\n};\n\nexport default buildPropsQuery;\n"],"file":"build-props-query.js"}
1
+ {"version":3,"sources":["../../src/helpers/build-props-query.js"],"names":["CATEGORY_ID","ID","PREHEADER_PROP","HEADLINE_PROP","defaultProps","categoryProps","checkProps","props","Object","keys","filter","prop","length","buildPropsQuery","data","extraProps","cardOptions","extraPropsHaveCategory","includes","typeBasedProps","shouldAddCategoryProps","getTypeBaseProps","allProps","uniqueProps","Set","basicProps","i","arr","indexOf","complexProps","buildComplexProps","join","getEntitySchema","relations","map","nested","split","base","matchingRelation","find","localField","nestedProps","extraProp","startsWith","push","jointNestedProps","isCard","displayCategory","displayThumbnail","interfaces","properties","dynamicProperties","isContent","hasCategory","hasPreheader","getCategoyProps","getContentProps","url"],"mappings":"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","sourcesContent":["import { CATEGORY_ID, ID, PREHEADER_PROP, HEADLINE_PROP } from '../constants';\n\nconst defaultProps = [ID, 'name'];\nconst categoryProps = 'id publishedListingPage{id, url}';\n\nconst checkProps = props =>\n !!(props && Object.keys(props).filter(prop => prop === CATEGORY_ID).length);\n\nconst buildPropsQuery = (data, extraProps = [], cardOptions = null) => {\n const extraPropsHaveCategory = !!extraProps.filter(prop => prop.includes('category.')).length;\n\n const { typeBasedProps, shouldAddCategoryProps } = getTypeBaseProps(\n data,\n cardOptions,\n extraPropsHaveCategory\n );\n\n const allProps = [...typeBasedProps, ...extraProps];\n\n const uniqueProps = [...new Set([...allProps])];\n\n const basicProps = uniqueProps\n .filter(prop => prop && !prop.includes('.'))\n .filter((prop, i, arr) => arr.indexOf(prop) === i);\n const complexProps = buildComplexProps(shouldAddCategoryProps, uniqueProps, data);\n return [...basicProps, ...complexProps].join(',');\n};\n\nconst buildComplexProps = (shouldAddCategoryProps, props, { getEntitySchema: { relations } }) =>\n props\n .filter(prop => prop && prop.includes('.'))\n .map(nested => nested.split('.')[0])\n .filter((prop, i, arr) => arr.indexOf(prop) === i)\n .map(base => {\n const matchingRelation = relations.find(({ localField }) => localField === base);\n const nestedProps = props\n .filter(\n (extraProp, i, arr) =>\n extraProp && extraProp.startsWith(`${base}.`) && arr.indexOf(extraProp) === i\n )\n .map(nested => nested.split('.')[1]);\n if (matchingRelation && !nestedProps.includes('id')) nestedProps.push('id');\n\n const jointNestedProps = nestedProps.join(',');\n if (base === 'category' && shouldAddCategoryProps)\n return `${base}{${jointNestedProps}, ${categoryProps}}`;\n if (base.includes('published')) {\n return `${base}{${jointNestedProps},url}`;\n }\n return `${base}{${jointNestedProps}}`;\n });\n\nconst getTypeBaseProps = (data, cardOptions, extraPropsHaveCategory) => {\n const isCard = !!cardOptions;\n const { displayCategory = true, displayThumbnail = true } = cardOptions || {};\n\n const shouldAddCategoryProps =\n (isCard && displayCategory) || (!isCard && !extraPropsHaveCategory);\n\n if (!isCard) return { typeBasedProps: [ID], shouldAddCategoryProps };\n\n const { getEntitySchema } = data;\n const { interfaces, properties, dynamicProperties, relations } = getEntitySchema;\n\n const isContent = !!interfaces.includes('content/content');\n const hasCategory = checkProps(properties) || checkProps(dynamicProperties);\n const hasPreheader = properties[PREHEADER_PROP];\n\n const typeBasedProps = [...defaultProps];\n\n typeBasedProps.push(...getCategoyProps(shouldAddCategoryProps, hasCategory, hasPreheader));\n typeBasedProps.push(...getContentProps(isContent));\n\n if (properties.url || dynamicProperties.url) typeBasedProps.push('url');\n\n if (displayThumbnail && relations.find(({ localField }) => localField === 'image')) {\n typeBasedProps.push('image.id', 'image.url', 'image.data');\n }\n\n return { typeBasedProps, shouldAddCategoryProps };\n};\n\nconst getContentProps = isContent => (isContent ? ['url', 'sponsored', 'featured'] : []);\n\nconst getCategoyProps = (shouldAddCategoryProps, hasCategory, hasPreheader) => {\n if (!shouldAddCategoryProps) return [];\n\n const props = [];\n\n if (hasCategory) {\n props.push('category.name', 'category.listingPageId', 'category.listingPageEntity');\n }\n\n if (hasPreheader) {\n props.push(`${PREHEADER_PROP}{name}`);\n props.push(HEADLINE_PROP);\n }\n\n return props;\n};\n\nexport default buildPropsQuery;\n"],"file":"build-props-query.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaze-cms/react-page-builder",
3
- "version": "0.124.0-alpha.3",
3
+ "version": "0.124.0-alpha.7",
4
4
  "description": "Blaze react page builder",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-es/index.js",
@@ -84,5 +84,5 @@
84
84
  "lib/*",
85
85
  "lib-es/*"
86
86
  ],
87
- "gitHead": "a1111541646b69aba70356809b369b61da895d99"
87
+ "gitHead": "45228d668dd07cda68e55330f9028fbacb4a034f"
88
88
  }
@@ -156,6 +156,10 @@ const getPublishedContent = entity => `
156
156
  ... on ${entity} {
157
157
  id
158
158
  name
159
+ image {
160
+ url
161
+ __typename
162
+ }
159
163
  url
160
164
  __typename
161
165
  }
@@ -1,12 +1,15 @@
1
1
  import React, { useState } from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { gql, useQuery } from '@apollo/client';
3
+ import { gql, useApolloClient } from '@apollo/client';
4
+
4
5
  import { useRouter } from 'next/router';
5
6
  import { getPublishedContent } from '../../application/query';
6
7
  import BlazeLink from '../BlazeLink';
7
8
 
9
+ const logError = error => error;
10
+
8
11
  const SearchContent = ({
9
- entity,
12
+ entities,
10
13
  searchInputAlignment,
11
14
  searchInputWrapperMobile,
12
15
  searchInputWrapperDesktop,
@@ -16,44 +19,79 @@ const SearchContent = ({
16
19
  }) => {
17
20
  const [collapsed, setCollapsed] = useState(collapsible);
18
21
  const [searchTerm, setSearchTerm] = useState(null);
22
+ const [data, setData] = useState([]);
23
+
19
24
  const router = useRouter();
25
+ const client = useApolloClient();
20
26
 
21
27
  const capitalize = s => {
22
28
  if (typeof s !== 'string') return '';
23
29
  return s.charAt(0).toUpperCase() + s.slice(1);
24
30
  };
25
31
 
26
- const [a, b] = entity.split('_');
27
-
28
- const entityName = capitalize(a) + capitalize(b);
32
+ React.useEffect(() => {
33
+ if (data && data.length !== 0) return;
34
+
35
+ const promises = entities.map(entity => {
36
+ const [a, b] = entity.split('_');
37
+
38
+ const entityName = capitalize(a) + capitalize(b);
39
+
40
+ const rawQueryStringified = JSON.stringify({
41
+ size: 0,
42
+ query: {
43
+ bool: {
44
+ should: [
45
+ {
46
+ match: {
47
+ docType: entity
48
+ }
49
+ }
50
+ ],
51
+ minimum_should_match: 1
52
+ }
53
+ }
54
+ });
29
55
 
30
- const rawQueryStringified = JSON.stringify({
31
- size: 0,
32
- query: {
33
- bool: {
34
- should: [
35
- {
36
- match: {
37
- docType: entity
38
- }
56
+ const query = gql`
57
+ ${getPublishedContent(entityName)}
58
+ `;
59
+
60
+ try {
61
+ return client.query({
62
+ query,
63
+ variables: {
64
+ rawQueryStringified,
65
+ offset: 0,
66
+ limit: 5
39
67
  }
40
- ],
41
- minimum_should_match: 1
68
+ });
69
+ } catch (e) {
70
+ return [];
42
71
  }
72
+ });
73
+
74
+ try {
75
+ (async () => {
76
+ try {
77
+ const fetchResults = await Promise.all(promises);
78
+ const searchResults = fetchResults
79
+ .map(result => {
80
+ const { data: resultData } = result;
81
+ return resultData.searchPublishedContent.results;
82
+ })
83
+ .flat();
84
+
85
+ setData(searchResults);
86
+ } catch (e) {
87
+ logError(e);
88
+ }
89
+ })();
90
+ } catch (e) {
91
+ logError(e);
43
92
  }
44
93
  });
45
94
 
46
- const query = gql`
47
- ${getPublishedContent(entityName)}
48
- `;
49
-
50
- const { loading, error, data } = useQuery(query, {
51
- variables: { rawQueryStringified, offset: 0, limit: 5 }
52
- });
53
-
54
- if (loading) return null;
55
- if (error) return null;
56
-
57
95
  const handleClick = (e, url) => {
58
96
  e.preventDefault();
59
97
  router.push(url);
@@ -65,26 +103,28 @@ const SearchContent = ({
65
103
  }
66
104
  };
67
105
 
68
- const renderResults = () => {
106
+ const renderResults = () =>
69
107
  // eslint-disable-next-line no-undef
70
- const { results } = data?.searchPublishedContent;
108
+ data?.map(dataItem => {
109
+ const { name, image, url } = dataItem;
71
110
 
72
- if (results && searchTerm && searchTerm !== '') {
73
- return results.map(({ name, url }) => {
111
+ if (searchTerm && searchTerm !== '') {
74
112
  if (name.includes(searchTerm)) {
75
113
  return (
76
114
  <BlazeLink href={url} onClick={e => handleClick(e, url)}>
77
- {name}
115
+ <div className="mt-2 mb-1">
116
+ <div className="flex justify-start items-center">
117
+ {image.url ? <img src={image.url} alt={name} className="w-20 h-14" /> : null}
118
+ <span className="ml-2">{name}</span>
119
+ </div>
120
+ </div>
78
121
  </BlazeLink>
79
122
  );
80
123
  }
81
124
 
82
125
  return null;
83
- });
84
- }
85
-
86
- return [];
87
- };
126
+ }
127
+ });
88
128
 
89
129
  const searchResultsMessage = searchTerm ? `Search results for: ${searchTerm}` : '';
90
130
 
@@ -164,7 +204,7 @@ SearchContent.propTypes = {
164
204
  placeholder: PropTypes.string,
165
205
  isMobile: PropTypes.bool,
166
206
  collapsible: PropTypes.bool,
167
- entity: PropTypes.string.isRequired
207
+ entities: PropTypes.array.isRequired
168
208
  };
169
209
 
170
210
  SearchContent.defaultProps = {
@@ -22,23 +22,24 @@ const buildPropsQuery = (data, extraProps = [], cardOptions = null) => {
22
22
  const basicProps = uniqueProps
23
23
  .filter(prop => prop && !prop.includes('.'))
24
24
  .filter((prop, i, arr) => arr.indexOf(prop) === i);
25
- const complexProps = buildComplexProps(shouldAddCategoryProps, uniqueProps);
26
-
25
+ const complexProps = buildComplexProps(shouldAddCategoryProps, uniqueProps, data);
27
26
  return [...basicProps, ...complexProps].join(',');
28
27
  };
29
28
 
30
- const buildComplexProps = (shouldAddCategoryProps, props) =>
29
+ const buildComplexProps = (shouldAddCategoryProps, props, { getEntitySchema: { relations } }) =>
31
30
  props
32
31
  .filter(prop => prop && prop.includes('.'))
33
32
  .map(nested => nested.split('.')[0])
34
33
  .filter((prop, i, arr) => arr.indexOf(prop) === i)
35
34
  .map(base => {
35
+ const matchingRelation = relations.find(({ localField }) => localField === base);
36
36
  const nestedProps = props
37
37
  .filter(
38
38
  (extraProp, i, arr) =>
39
39
  extraProp && extraProp.startsWith(`${base}.`) && arr.indexOf(extraProp) === i
40
40
  )
41
41
  .map(nested => nested.split('.')[1]);
42
+ if (matchingRelation && !nestedProps.includes('id')) nestedProps.push('id');
42
43
 
43
44
  const jointNestedProps = nestedProps.join(',');
44
45
  if (base === 'category' && shouldAddCategoryProps)
@@ -70,6 +71,8 @@ const getTypeBaseProps = (data, cardOptions, extraPropsHaveCategory) => {
70
71
  typeBasedProps.push(...getCategoyProps(shouldAddCategoryProps, hasCategory, hasPreheader));
71
72
  typeBasedProps.push(...getContentProps(isContent));
72
73
 
74
+ if (properties.url || dynamicProperties.url) typeBasedProps.push('url');
75
+
73
76
  if (displayThumbnail && relations.find(({ localField }) => localField === 'image')) {
74
77
  typeBasedProps.push('image.id', 'image.url', 'image.data');
75
78
  }
@@ -33,6 +33,7 @@ describe('get card render props', () => {
33
33
  dynamicProperties: {}
34
34
  }
35
35
  };
36
+
36
37
  const cardProps = {};
37
38
 
38
39
  it('should be a function', () => {
@@ -159,4 +160,46 @@ describe('get card render props', () => {
159
160
  'id,name,url,sponsored,featured,category{name,listingPageId,listingPageEntity, id publishedListingPage{id, url}}'
160
161
  );
161
162
  });
163
+
164
+ it('should include url if property has url', () => {
165
+ testUrlProperty({ extraProperties: { url: 'url' }, cardProps });
166
+ });
167
+
168
+ it('should include url if dynamic property has url', () => {
169
+ testUrlProperty({ dynamicProperties: { url: 'url' }, cardProps });
170
+ });
171
+
172
+ it('should add id prop to nested relations', () => {
173
+ const _data = {
174
+ getEntitySchema: {
175
+ interfaces: [CONTENT_INTERFACE],
176
+ properties: {
177
+ id: 'id',
178
+ categoryId: 'catId'
179
+ },
180
+ relations: [{ localField: 'address' }],
181
+ dynamicProperties: {}
182
+ }
183
+ };
184
+ const query = buildPropsQuery(_data, ['address.country'], cardProps);
185
+ expect(query).toEqual(
186
+ 'id,name,url,sponsored,featured,category{name,listingPageId,listingPageEntity, id publishedListingPage{id, url}},address{country,id}'
187
+ );
188
+ });
162
189
  });
190
+
191
+ function testUrlProperty({ extraProperties = {}, dynamicProperties = {}, cardProps }) {
192
+ const dataWithUrlProperty = {
193
+ getEntitySchema: {
194
+ interfaces: [],
195
+ properties: {
196
+ id: 'id',
197
+ ...extraProperties
198
+ },
199
+ relations: [],
200
+ dynamicProperties
201
+ }
202
+ };
203
+ const query = buildPropsQuery(dataWithUrlProperty, [], cardProps);
204
+ expect(query).toEqual('id,name,url');
205
+ }