@blaze-cms/react-page-builder 0.124.0-alpha.4 → 0.124.0-alpha.40

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 (419) hide show
  1. package/CHANGELOG.md +320 -0
  2. package/README.md +9 -0
  3. package/example.env +1 -0
  4. package/lib/BannerContext/index.js.map +1 -1
  5. package/lib/HOC/withInfiniteScroll.js.map +1 -1
  6. package/lib/HOC/withTitle.js.map +1 -1
  7. package/lib/PBContext/index.js.map +1 -1
  8. package/lib/application/query/index.js +9 -3
  9. package/lib/application/query/index.js.map +1 -1
  10. package/lib/components/BackToTop/BackToTop.js.map +1 -1
  11. package/lib/components/Banner/AdSlotRender.js.map +1 -1
  12. package/lib/components/Banner/Banner.js.map +1 -1
  13. package/lib/components/Banner/BannerRender.js.map +1 -1
  14. package/lib/components/Banner/helpers.js.map +1 -1
  15. package/lib/components/Banner/index.js.map +1 -1
  16. package/lib/components/BlazeLink.js.map +1 -1
  17. package/lib/components/Breadcrumb/Breadcrumb.js.map +1 -1
  18. package/lib/components/Button.js.map +1 -1
  19. package/lib/components/Card/Card.js.map +1 -1
  20. package/lib/components/Card/CardContainer.js +3 -7
  21. package/lib/components/Card/CardContainer.js.map +1 -1
  22. package/lib/components/Card/CardFactory.js +6 -3
  23. package/lib/components/Card/CardFactory.js.map +1 -1
  24. package/lib/components/Card/CardRender.js.map +1 -1
  25. package/lib/components/Card/helpers/filter-query-setup.js.map +1 -1
  26. package/lib/components/Card/helpers/filters-setup.js.map +1 -1
  27. package/lib/components/Card/helpers/get-dynamic-grid-classes.js.map +1 -1
  28. package/lib/components/Carousel/Carousel.js.map +1 -1
  29. package/lib/components/Carousel/CarouselImage/CarouselImage.js.map +1 -1
  30. package/lib/components/Carousel/CarouselRender/CarouselRender.js.map +1 -1
  31. package/lib/components/CarouselWrapper.js +2 -2
  32. package/lib/components/CarouselWrapper.js.map +1 -1
  33. package/lib/components/ClickWrapper.js.map +1 -1
  34. package/lib/components/Code/Code.js.map +1 -1
  35. package/lib/components/Code/ScriptTag.js.map +1 -1
  36. package/lib/components/Code/helpers/wrap-script-tags.js.map +1 -1
  37. package/lib/components/DataSummary/DataSummaryFactory.js.map +1 -1
  38. package/lib/components/DataSummary/DataSummaryRender.js.map +1 -1
  39. package/lib/components/DataSummary/DataSummaryTypes/HeadingLargeSummary/HeadingLargeSummary.js.map +1 -1
  40. package/lib/components/DataSummary/DataSummaryTypes/HeadingLargeSummary/HeadingLargeSummaryContent.js.map +1 -1
  41. package/lib/components/DataSummary/DataSummaryTypes/ItemDetailsSummary/ItemDetailsSummary.js.map +1 -1
  42. package/lib/components/DataSummary/DataSummaryTypes/ItemDetailsSummary/ItemDetailsSummaryContent.js.map +1 -1
  43. package/lib/components/DataSummary/DataSummaryTypes/LargeSummary/LargeSummary.js.map +1 -1
  44. package/lib/components/DataSummary/DataSummaryTypes/LargeSummary/LargeSummaryContent.js.map +1 -1
  45. package/lib/components/DataSummary/DataSummaryTypes/ListSummary/ListSummary.js.map +1 -1
  46. package/lib/components/DataSummary/DataSummaryTypes/ListSummary/ListSummaryContent.js.map +1 -1
  47. package/lib/components/DataSummary/DataSummaryTypes/TextSummary/TextSummary.js.map +1 -1
  48. package/lib/components/DataSummary/DataSummaryTypes/TextSummary/TextSummaryContent.js.map +1 -1
  49. package/lib/components/DataSummary/DataSummaryTypes/index.js.map +1 -1
  50. package/lib/components/DataSummary/helpers/build-loop-props-content.js.map +1 -1
  51. package/lib/components/DataSummary/helpers/build-props-to-display-with-content.js.map +1 -1
  52. package/lib/components/DataSummary/helpers/get-data-summary-query.js.map +1 -1
  53. package/lib/components/DataSummary/helpers/get-link-based-on-value.js.map +1 -1
  54. package/lib/components/DataSummary/helpers/get-prop-value.js.map +1 -1
  55. package/lib/components/DataSummary/helpers/get-value-from-array.js.map +1 -1
  56. package/lib/components/DataSummary/helpers/strip-summary-props-content.js.map +1 -1
  57. package/lib/components/EmailConfirm/EmailConfirm.js.map +1 -1
  58. package/lib/components/Image/GlobalLightbox/GlobalLightbox.js.map +1 -1
  59. package/lib/components/Image/GlobalLightbox/NavButton.js.map +1 -1
  60. package/lib/components/Image/GlobalLightbox/index.js.map +1 -1
  61. package/lib/components/Image/Image.js.map +1 -1
  62. package/lib/components/Image/ImageDetails.js.map +1 -1
  63. package/lib/components/Image/ImageFactory.js.map +1 -1
  64. package/lib/components/Image/ImageRender.js +5 -1
  65. package/lib/components/Image/ImageRender.js.map +1 -1
  66. package/lib/components/Image/Lightbox/Lightbox.js.map +1 -1
  67. package/lib/components/ItemList/ItemListButton/ItemListButton.js +161 -0
  68. package/lib/components/ItemList/ItemListButton/ItemListButton.js.map +1 -0
  69. package/lib/components/ItemList/ItemListButton/index.js +16 -0
  70. package/lib/components/ItemList/ItemListButton/index.js.map +1 -0
  71. package/lib/components/ItemList/ItemListCounter/ItemListCounter.js +83 -0
  72. package/lib/components/ItemList/ItemListCounter/ItemListCounter.js.map +1 -0
  73. package/lib/components/ItemList/ItemListCounter/index.js +16 -0
  74. package/lib/components/ItemList/ItemListCounter/index.js.map +1 -0
  75. package/lib/components/ItemList/ItemListNew/ItemListNew.js +87 -0
  76. package/lib/components/ItemList/ItemListNew/ItemListNew.js.map +1 -0
  77. package/lib/components/ItemList/ItemListNew/index.js +16 -0
  78. package/lib/components/ItemList/ItemListNew/index.js.map +1 -0
  79. package/lib/components/ItemList/constants.js +19 -0
  80. package/lib/components/ItemList/constants.js.map +1 -0
  81. package/lib/components/ItemList/helpers/get-item-list-data.js +17 -0
  82. package/lib/components/ItemList/helpers/get-item-list-data.js.map +1 -0
  83. package/lib/components/ItemList/helpers/get-item-list-id.js +23 -0
  84. package/lib/components/ItemList/helpers/get-item-list-id.js.map +1 -0
  85. package/lib/components/ItemList/helpers/get-item-list-ids.js +28 -0
  86. package/lib/components/ItemList/helpers/get-item-list-ids.js.map +1 -0
  87. package/lib/components/ItemList/helpers/index.js +50 -0
  88. package/lib/components/ItemList/helpers/index.js.map +1 -0
  89. package/lib/components/ItemList/helpers/set-item-list-id.js +22 -0
  90. package/lib/components/ItemList/helpers/set-item-list-id.js.map +1 -0
  91. package/lib/components/ItemList/helpers/set-param-and-redirect.js +51 -0
  92. package/lib/components/ItemList/helpers/set-param-and-redirect.js.map +1 -0
  93. package/lib/components/ItemList/hooks/index.js +18 -0
  94. package/lib/components/ItemList/hooks/index.js.map +1 -0
  95. package/lib/components/ItemList/hooks/use-item-list-id.js +45 -0
  96. package/lib/components/ItemList/hooks/use-item-list-id.js.map +1 -0
  97. package/lib/components/Layout/Layout.js.map +1 -1
  98. package/lib/components/Layout/helpers/check-if-row-has-columns.js.map +1 -1
  99. package/lib/components/LazyImage/LazyImage.js +5 -1
  100. package/lib/components/LazyImage/LazyImage.js.map +1 -1
  101. package/lib/components/LazyImage/index.js.map +1 -1
  102. package/lib/components/List/ListBuilder.js +12 -6
  103. package/lib/components/List/ListBuilder.js.map +1 -1
  104. package/lib/components/List/ListFactory.js +34 -7
  105. package/lib/components/List/ListFactory.js.map +1 -1
  106. package/lib/components/List/ListRender.js.map +1 -1
  107. package/lib/components/List/components/Cards/CardRenderWithInfiniteScroll.js.map +1 -1
  108. package/lib/components/List/components/Cards/CardsRender.js.map +1 -1
  109. package/lib/components/List/components/Cards/CardsRenderItem.js.map +1 -1
  110. package/lib/components/List/components/Cards/CardsRenderWrapper.js.map +1 -1
  111. package/lib/components/List/components/Full/FullRender.js.map +1 -1
  112. package/lib/components/List/components/Full/FullRenderItem.js.map +1 -1
  113. package/lib/components/List/components/Full/FullRenderWithInfiniteScroll.js.map +1 -1
  114. package/lib/components/List/components/Header/ListHeader.js.map +1 -1
  115. package/lib/components/List/components/Pagination/Classic.js.map +1 -1
  116. package/lib/components/List/components/Pagination/ListPagination.js.map +1 -1
  117. package/lib/components/List/components/Pagination/LoadMore.js.map +1 -1
  118. package/lib/components/List/helpers/build-az-aggregations.js.map +1 -1
  119. package/lib/components/List/helpers/build-az-url.js.map +1 -1
  120. package/lib/components/List/helpers/build-pagination-items.js.map +1 -1
  121. package/lib/components/List/helpers/build-pagination-url.js.map +1 -1
  122. package/lib/components/List/helpers/has-required-item-list-details.js +29 -0
  123. package/lib/components/List/helpers/has-required-item-list-details.js.map +1 -0
  124. package/lib/components/List/helpers/index.js +8 -0
  125. package/lib/components/List/helpers/index.js.map +1 -1
  126. package/lib/components/Login/LoggedInMessage.js.map +1 -1
  127. package/lib/components/Login/Login.js.map +1 -1
  128. package/lib/components/Login/LoginForm.js.map +1 -1
  129. package/lib/components/Menu/Menu.js +41 -28
  130. package/lib/components/Menu/Menu.js.map +1 -1
  131. package/lib/components/Menu/MenuContext.js +20 -0
  132. package/lib/components/Menu/MenuContext.js.map +1 -0
  133. package/lib/components/MenuItem/MenuItem.js +26 -7
  134. package/lib/components/MenuItem/MenuItem.js.map +1 -1
  135. package/lib/components/Modal/Modal.js.map +1 -1
  136. package/lib/components/PasswordReset/PasswordReset.js.map +1 -1
  137. package/lib/components/PasswordReset/helpers/validatePassword.js.map +1 -1
  138. package/lib/components/PasswordResetRequest/PasswordResetRequest.js.map +1 -1
  139. package/lib/components/SearchContent/SearchContent.js +183 -0
  140. package/lib/components/SearchContent/SearchContent.js.map +1 -0
  141. package/lib/components/SearchContent/SearchContentItems.js +51 -0
  142. package/lib/components/SearchContent/SearchContentItems.js.map +1 -0
  143. package/lib/components/SearchContent/SearchContentResults.js +45 -0
  144. package/lib/components/SearchContent/SearchContentResults.js.map +1 -0
  145. package/lib/components/SearchContent/SearchContentToggleIcon.js +42 -0
  146. package/lib/components/SearchContent/SearchContentToggleIcon.js.map +1 -0
  147. package/lib/components/SearchContent/index.js +2 -233
  148. package/lib/components/SearchContent/index.js.map +1 -1
  149. package/lib/components/SearchFilter/SearchFilter/CloseMobileForm.js.map +1 -1
  150. package/lib/components/SearchFilter/SearchFilter/FiltersList.js +2 -4
  151. package/lib/components/SearchFilter/SearchFilter/FiltersList.js.map +1 -1
  152. package/lib/components/SearchFilter/SearchFilter/MobileFormToolbar.js.map +1 -1
  153. package/lib/components/SearchFilter/SearchFilter/ResetDesktopForm.js.map +1 -1
  154. package/lib/components/SearchFilter/SearchFilter/SearchFilter.js +27 -69
  155. package/lib/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
  156. package/lib/components/SearchFilter/SearchFilterContainer.js +87 -23
  157. package/lib/components/SearchFilter/SearchFilterContainer.js.map +1 -1
  158. package/lib/components/SearchFilter/components/Checkbox.js +19 -9
  159. package/lib/components/SearchFilter/components/Checkbox.js.map +1 -1
  160. package/lib/components/SearchFilter/components/Range.js.map +1 -1
  161. package/lib/components/SearchFilter/components/Select.js +27 -11
  162. package/lib/components/SearchFilter/components/Select.js.map +1 -1
  163. package/lib/components/SearchFilter/components/TextSearch.js +1 -5
  164. package/lib/components/SearchFilter/components/TextSearch.js.map +1 -1
  165. package/lib/components/SearchFilter/constants.js +1 -1
  166. package/lib/components/SearchFilter/constants.js.map +1 -1
  167. package/lib/components/SearchFilter/helpers/build-filters-query.js +87 -0
  168. package/lib/components/SearchFilter/helpers/build-filters-query.js.map +1 -0
  169. package/lib/components/SearchFilter/helpers/build-query.js.map +1 -1
  170. package/lib/components/SearchFilter/helpers/build-raw-query-stringified.js +2 -1
  171. package/lib/components/SearchFilter/helpers/build-raw-query-stringified.js.map +1 -1
  172. package/lib/components/SearchFilter/helpers/calculate-min-max.js.map +1 -1
  173. package/lib/components/SearchFilter/helpers/check-if-range-updated.js.map +1 -1
  174. package/lib/components/SearchFilter/helpers/get-filter-value-from-query.js.map +1 -1
  175. package/lib/components/SearchFilter/helpers/get-initial-filter-values.js.map +1 -1
  176. package/lib/components/SearchFilter/helpers/get-intersected-prop.js.map +1 -1
  177. package/lib/components/SearchFilter/helpers/get-range-value.js.map +1 -1
  178. package/lib/components/SearchFilter/helpers/get-responsive-filter-classnames.js.map +1 -1
  179. package/lib/components/SearchFilter/helpers/get-select-options.js.map +1 -1
  180. package/lib/components/SearchFilter/helpers/index.js +8 -0
  181. package/lib/components/SearchFilter/helpers/index.js.map +1 -1
  182. package/lib/components/SearchFilterSort/SearchFilterSort.js.map +1 -1
  183. package/lib/components/SearchFilterSort/helpers/handle-sort-update.js.map +1 -1
  184. package/lib/components/SearchFilterSort/helpers/update-sort.js.map +1 -1
  185. package/lib/components/SocialFollow/SFItem.js.map +1 -1
  186. package/lib/components/SocialFollow/SocialFollow.js.map +1 -1
  187. package/lib/components/SocialFollow/SocialFollowRender.js.map +1 -1
  188. package/lib/components/SubMenu/SubMenu.js.map +1 -1
  189. package/lib/components/TextBlock/TextBlockRender.js.map +1 -1
  190. package/lib/components/TextBlock/index.js.map +1 -1
  191. package/lib/components/Video/Video.js.map +1 -1
  192. package/lib/components/Video/VideoModal.js.map +1 -1
  193. package/lib/components/Video/VideoRender.js.map +1 -1
  194. package/lib/components/Video/providers/Default.js.map +1 -1
  195. package/lib/components/Video/providers/JWPlayer/JWPlayerProvider.js.map +1 -1
  196. package/lib/components/Video/providers/YouTube/YouTubeProvider.js.map +1 -1
  197. package/lib/components/Video/providers/YouTube/YoutubeEmbeded.js.map +1 -1
  198. package/lib/components/Video/providers/get-provider.js.map +1 -1
  199. package/lib/components/Wrapper.js.map +1 -1
  200. package/lib/components/index.js +16 -1
  201. package/lib/components/index.js.map +1 -1
  202. package/lib/constants/index.js +3 -1
  203. package/lib/constants/index.js.map +1 -1
  204. package/lib/helpers/build-inherited-filters.js.map +1 -1
  205. package/lib/helpers/build-raw-query-base.js.map +1 -1
  206. package/lib/helpers/build-raw-query.js.map +1 -1
  207. package/lib/helpers/build-search-values-checkbox-select.js.map +1 -1
  208. package/lib/helpers/check-props-to-use.js.map +1 -1
  209. package/lib/helpers/get-entities-with-banner.js.map +1 -1
  210. package/lib/helpers/get-entity-data.js.map +1 -1
  211. package/lib/helpers/get-entity-render-props.js.map +1 -1
  212. package/lib/helpers/get-filter-props.js.map +1 -1
  213. package/lib/helpers/get-generic-props.js.map +1 -1
  214. package/lib/helpers/get-generic-render-variables.js.map +1 -1
  215. package/lib/helpers/get-image-ids.js.map +1 -1
  216. package/lib/helpers/get-parsed-prop-values.js.map +1 -1
  217. package/lib/helpers/get-prop-values.js.map +1 -1
  218. package/lib/helpers/get-query-filters.js.map +1 -1
  219. package/lib/helpers/get-query-props.js.map +1 -1
  220. package/lib/helpers/get-updated-filter-by.js.map +1 -1
  221. package/lib/helpers/inject-banner.js.map +1 -1
  222. package/lib/helpers/inject-banners-to-entities.js.map +1 -1
  223. package/lib/helpers/inject-multiple-banners/get-banners-for-entities/get-banners-for-entities.js.map +1 -1
  224. package/lib/helpers/inject-multiple-banners/get-banners-for-nodes/get-banners-for-nodes.js.map +1 -1
  225. package/lib/helpers/inject-multiple-banners/get-banners-for-nodes/helpers/group-node-entities.js.map +1 -1
  226. package/lib/helpers/inject-multiple-banners/inject-multiple-banners.js.map +1 -1
  227. package/lib/helpers/is-filter-entitys-id.js.map +1 -1
  228. package/lib/helpers/parse-TextBlock.js.map +1 -1
  229. package/lib/helpers/parse-props-to-display.js.map +1 -1
  230. package/lib/helpers/render-children.js.map +1 -1
  231. package/lib/helpers/sort-response-data.js.map +1 -1
  232. package/lib/hooks/helpers/RenderComponent.js.map +1 -1
  233. package/lib/hooks/helpers/append-gtm-classname.js +1 -0
  234. package/lib/hooks/helpers/append-gtm-classname.js.map +1 -1
  235. package/lib/hooks/helpers/buildPBComponents.js.map +1 -1
  236. package/lib/hooks/helpers/getComponent.js.map +1 -1
  237. package/lib/hooks/helpers/inject-element-banners.js.map +1 -1
  238. package/lib/hooks/helpers/inject-textblock-banners.js.map +1 -1
  239. package/lib/hooks/helpers/insert-banners.js.map +1 -1
  240. package/lib/hooks/helpers/update-targetings.js.map +1 -1
  241. package/lib/hooks/use-banner-insertion.js.map +1 -1
  242. package/lib/hooks/use-check-mobile-screen.js.map +1 -1
  243. package/lib/hooks/use-get-entity-schema.js.map +1 -1
  244. package/lib/hooks/use-get-entity-schemas-as-obj.js.map +1 -1
  245. package/lib/hooks/use-get-image-id-from-relation.js.map +1 -1
  246. package/lib/hooks/use-get-images.js.map +1 -1
  247. package/lib/hooks/use-get-single-entity-schema.js.map +1 -1
  248. package/lib/hooks/use-page-builder.js.map +1 -1
  249. package/lib/utils/get-class-modifiers.js.map +1 -1
  250. package/lib/utils/get-image-data.js.map +1 -1
  251. package/lib-es/application/query/index.js +49 -1
  252. package/lib-es/application/query/index.js.map +1 -1
  253. package/lib-es/components/Card/CardContainer.js +3 -7
  254. package/lib-es/components/Card/CardContainer.js.map +1 -1
  255. package/lib-es/components/Card/CardFactory.js +7 -4
  256. package/lib-es/components/Card/CardFactory.js.map +1 -1
  257. package/lib-es/components/CarouselWrapper.js +2 -2
  258. package/lib-es/components/CarouselWrapper.js.map +1 -1
  259. package/lib-es/components/Image/ImageRender.js +4 -1
  260. package/lib-es/components/Image/ImageRender.js.map +1 -1
  261. package/lib-es/components/ItemList/ItemListButton/ItemListButton.js +111 -0
  262. package/lib-es/components/ItemList/ItemListButton/ItemListButton.js.map +1 -0
  263. package/lib-es/components/ItemList/ItemListButton/index.js +3 -0
  264. package/lib-es/components/ItemList/ItemListButton/index.js.map +1 -0
  265. package/lib-es/components/ItemList/ItemListCounter/ItemListCounter.js +60 -0
  266. package/lib-es/components/ItemList/ItemListCounter/ItemListCounter.js.map +1 -0
  267. package/lib-es/components/ItemList/ItemListCounter/index.js +3 -0
  268. package/lib-es/components/ItemList/ItemListCounter/index.js.map +1 -0
  269. package/lib-es/components/ItemList/ItemListNew/ItemListNew.js +64 -0
  270. package/lib-es/components/ItemList/ItemListNew/ItemListNew.js.map +1 -0
  271. package/lib-es/components/ItemList/ItemListNew/index.js +3 -0
  272. package/lib-es/components/ItemList/ItemListNew/index.js.map +1 -0
  273. package/lib-es/components/ItemList/constants.js +6 -0
  274. package/lib-es/components/ItemList/constants.js.map +1 -0
  275. package/lib-es/components/ItemList/helpers/get-item-list-data.js +7 -0
  276. package/lib-es/components/ItemList/helpers/get-item-list-data.js.map +1 -0
  277. package/lib-es/components/ItemList/helpers/get-item-list-id.js +11 -0
  278. package/lib-es/components/ItemList/helpers/get-item-list-id.js.map +1 -0
  279. package/lib-es/components/ItemList/helpers/get-item-list-ids.js +13 -0
  280. package/lib-es/components/ItemList/helpers/get-item-list-ids.js.map +1 -0
  281. package/lib-es/components/ItemList/helpers/index.js +6 -0
  282. package/lib-es/components/ItemList/helpers/index.js.map +1 -0
  283. package/lib-es/components/ItemList/helpers/set-item-list-id.js +10 -0
  284. package/lib-es/components/ItemList/helpers/set-item-list-id.js.map +1 -0
  285. package/lib-es/components/ItemList/helpers/set-param-and-redirect.js +20 -0
  286. package/lib-es/components/ItemList/helpers/set-param-and-redirect.js.map +1 -0
  287. package/lib-es/components/ItemList/hooks/index.js +2 -0
  288. package/lib-es/components/ItemList/hooks/index.js.map +1 -0
  289. package/lib-es/components/ItemList/hooks/use-item-list-id.js +26 -0
  290. package/lib-es/components/ItemList/hooks/use-item-list-id.js.map +1 -0
  291. package/lib-es/components/LazyImage/LazyImage.js +4 -1
  292. package/lib-es/components/LazyImage/LazyImage.js.map +1 -1
  293. package/lib-es/components/List/ListBuilder.js +12 -6
  294. package/lib-es/components/List/ListBuilder.js.map +1 -1
  295. package/lib-es/components/List/ListFactory.js +33 -9
  296. package/lib-es/components/List/ListFactory.js.map +1 -1
  297. package/lib-es/components/List/helpers/has-required-item-list-details.js +20 -0
  298. package/lib-es/components/List/helpers/has-required-item-list-details.js.map +1 -0
  299. package/lib-es/components/List/helpers/index.js +1 -0
  300. package/lib-es/components/List/helpers/index.js.map +1 -1
  301. package/lib-es/components/Menu/Menu.js +54 -46
  302. package/lib-es/components/Menu/Menu.js.map +1 -1
  303. package/lib-es/components/Menu/MenuContext.js +6 -0
  304. package/lib-es/components/Menu/MenuContext.js.map +1 -0
  305. package/lib-es/components/MenuItem/MenuItem.js +24 -9
  306. package/lib-es/components/MenuItem/MenuItem.js.map +1 -1
  307. package/lib-es/components/SearchContent/SearchContent.js +129 -0
  308. package/lib-es/components/SearchContent/SearchContent.js.map +1 -0
  309. package/lib-es/components/SearchContent/SearchContentItems.js +33 -0
  310. package/lib-es/components/SearchContent/SearchContentItems.js.map +1 -0
  311. package/lib-es/components/SearchContent/SearchContentResults.js +31 -0
  312. package/lib-es/components/SearchContent/SearchContentResults.js.map +1 -0
  313. package/lib-es/components/SearchContent/SearchContentToggleIcon.js +30 -0
  314. package/lib-es/components/SearchContent/SearchContentToggleIcon.js.map +1 -0
  315. package/lib-es/components/SearchContent/index.js +1 -172
  316. package/lib-es/components/SearchContent/index.js.map +1 -1
  317. package/lib-es/components/SearchFilter/SearchFilter/FiltersList.js +2 -4
  318. package/lib-es/components/SearchFilter/SearchFilter/FiltersList.js.map +1 -1
  319. package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js +21 -46
  320. package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
  321. package/lib-es/components/SearchFilter/SearchFilterContainer.js +70 -15
  322. package/lib-es/components/SearchFilter/SearchFilterContainer.js.map +1 -1
  323. package/lib-es/components/SearchFilter/components/Checkbox.js +18 -9
  324. package/lib-es/components/SearchFilter/components/Checkbox.js.map +1 -1
  325. package/lib-es/components/SearchFilter/components/Select.js +23 -8
  326. package/lib-es/components/SearchFilter/components/Select.js.map +1 -1
  327. package/lib-es/components/SearchFilter/components/TextSearch.js +1 -5
  328. package/lib-es/components/SearchFilter/components/TextSearch.js.map +1 -1
  329. package/lib-es/components/SearchFilter/constants.js +1 -1
  330. package/lib-es/components/SearchFilter/constants.js.map +1 -1
  331. package/lib-es/components/SearchFilter/helpers/build-filters-query.js +54 -0
  332. package/lib-es/components/SearchFilter/helpers/build-filters-query.js.map +1 -0
  333. package/lib-es/components/SearchFilter/helpers/build-raw-query-stringified.js +2 -1
  334. package/lib-es/components/SearchFilter/helpers/build-raw-query-stringified.js.map +1 -1
  335. package/lib-es/components/SearchFilter/helpers/get-initial-filter-values.js.map +1 -1
  336. package/lib-es/components/SearchFilter/helpers/index.js +2 -1
  337. package/lib-es/components/SearchFilter/helpers/index.js.map +1 -1
  338. package/lib-es/components/index.js +10 -1
  339. package/lib-es/components/index.js.map +1 -1
  340. package/lib-es/constants/index.js +2 -1
  341. package/lib-es/constants/index.js.map +1 -1
  342. package/lib-es/helpers/build-raw-query.js.map +1 -1
  343. package/lib-es/hooks/helpers/append-gtm-classname.js +1 -0
  344. package/lib-es/hooks/helpers/append-gtm-classname.js.map +1 -1
  345. package/package.json +5 -4
  346. package/src/application/query/index.js +55 -1
  347. package/src/components/Card/CardContainer.js +2 -6
  348. package/src/components/Card/CardFactory.js +5 -3
  349. package/src/components/CarouselWrapper.js +2 -2
  350. package/src/components/Image/ImageRender.js +3 -0
  351. package/src/components/ItemList/ItemListButton/ItemListButton.js +94 -0
  352. package/src/components/ItemList/ItemListButton/index.js +3 -0
  353. package/src/components/ItemList/ItemListCounter/ItemListCounter.js +52 -0
  354. package/src/components/ItemList/ItemListCounter/index.js +3 -0
  355. package/src/components/ItemList/ItemListNew/ItemListNew.js +51 -0
  356. package/src/components/ItemList/ItemListNew/index.js +3 -0
  357. package/src/components/ItemList/constants.js +5 -0
  358. package/src/components/ItemList/helpers/get-item-list-data.js +6 -0
  359. package/src/components/ItemList/helpers/get-item-list-id.js +11 -0
  360. package/src/components/ItemList/helpers/get-item-list-ids.js +10 -0
  361. package/src/components/ItemList/helpers/index.js +5 -0
  362. package/src/components/ItemList/helpers/set-item-list-id.js +9 -0
  363. package/src/components/ItemList/helpers/set-param-and-redirect.js +20 -0
  364. package/src/components/ItemList/hooks/index.js +1 -0
  365. package/src/components/ItemList/hooks/use-item-list-id.js +27 -0
  366. package/src/components/LazyImage/LazyImage.js +11 -1
  367. package/src/components/List/ListBuilder.js +10 -5
  368. package/src/components/List/ListFactory.js +48 -12
  369. package/src/components/List/helpers/has-required-item-list-details.js +14 -0
  370. package/src/components/List/helpers/index.js +1 -0
  371. package/src/components/Menu/Menu.js +61 -54
  372. package/src/components/Menu/MenuContext.js +5 -0
  373. package/src/components/MenuItem/MenuItem.js +39 -14
  374. package/src/components/SearchContent/SearchContent.js +136 -0
  375. package/src/components/SearchContent/SearchContentItems.js +28 -0
  376. package/src/components/SearchContent/SearchContentResults.js +27 -0
  377. package/src/components/SearchContent/SearchContentToggleIcon.js +27 -0
  378. package/src/components/SearchContent/index.js +1 -177
  379. package/src/components/SearchFilter/SearchFilter/FiltersList.js +30 -37
  380. package/src/components/SearchFilter/SearchFilter/SearchFilter.js +20 -28
  381. package/src/components/SearchFilter/SearchFilterContainer.js +58 -16
  382. package/src/components/SearchFilter/components/Checkbox.js +23 -8
  383. package/src/components/SearchFilter/components/Select.js +18 -11
  384. package/src/components/SearchFilter/components/TextSearch.js +1 -3
  385. package/src/components/SearchFilter/constants.js +1 -1
  386. package/src/components/SearchFilter/helpers/build-filters-query.js +40 -0
  387. package/src/components/SearchFilter/helpers/build-raw-query-stringified.js +2 -1
  388. package/src/components/SearchFilter/helpers/get-initial-filter-values.js +1 -0
  389. package/src/components/SearchFilter/helpers/index.js +3 -1
  390. package/src/components/index.js +10 -1
  391. package/src/constants/index.js +2 -0
  392. package/src/helpers/build-raw-query.js +1 -0
  393. package/src/hooks/helpers/append-gtm-classname.js +3 -0
  394. package/tests/helpers/mocks.js +4 -4
  395. package/tests/unit/src/components/ItemList/ItemListButton.test.js +175 -0
  396. package/tests/unit/src/components/ItemList/ItemListCounter.test.js +65 -0
  397. package/tests/unit/src/components/ItemList/ItemListNew.test.js +164 -0
  398. package/tests/unit/src/components/ItemList/__snapshots__/ItemListButton.test.js.snap +107 -0
  399. package/tests/unit/src/components/ItemList/__snapshots__/ItemListCounter.test.js.snap +31 -0
  400. package/tests/unit/src/components/ItemList/__snapshots__/ItemListNew.test.js.snap +27 -0
  401. package/tests/unit/src/components/ItemList/helpers/get-item-list-data.test.js +28 -0
  402. package/tests/unit/src/components/ItemList/helpers/get-item-list-id.test.js +20 -0
  403. package/tests/unit/src/components/ItemList/helpers/get-item-list-ids.test.js +19 -0
  404. package/tests/unit/src/components/ItemList/helpers/set-item-list-id.test.js +13 -0
  405. package/tests/unit/src/components/ItemList/helpers/set-param-and-redirect.test.js +30 -0
  406. package/tests/unit/src/components/ItemList/hooks/use-item-list-id.test.js +32 -0
  407. package/tests/unit/src/components/List/helpers/has-required-item-list-details.test.js +30 -0
  408. package/tests/unit/src/components/Menu/Menu.test.js +9 -3
  409. package/tests/unit/src/components/Menu/__snapshots__/Menu.test.js.snap +12 -11
  410. package/tests/unit/src/components/MenuItem/MenuItem.test.js +1 -1
  411. package/tests/unit/src/components/MenuItem/SubMenu.test.js +5 -1
  412. package/tests/unit/src/components/MenuItem/__snapshots__/MenuItem.test.js.snap +54 -10
  413. package/tests/unit/src/components/SearchContent/SearchContent.test.js +29 -0
  414. package/tests/unit/src/components/SearchContent/__snapshots__/SearchContent.test.js.snap +9 -0
  415. package/tests/unit/src/components/SearchFilter/SearchFilter/SearchFilter.test.js +26 -7
  416. package/tests/unit/src/components/SearchFilter/SearchFilter/__snapshots__/SearchFilter.test.js.snap +4 -0
  417. package/tests/unit/src/components/SearchFilter/components/__snapshots__/Checkbox.test.js.snap +2 -0
  418. package/tests/unit/src/components/SearchFilter/components/__snapshots__/Select.test.js.snap +4 -0
  419. package/tests/unit/src/components/__snapshots__/index.test.js.snap +12 -0
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
+ import Head from 'next/head';
3
4
  import { ResponsiveImage } from '@blaze-cms/image-cdn-react';
4
5
  import Lightbox from './Lightbox';
5
6
 
@@ -22,6 +23,7 @@ const ImageRender = ({
22
23
  ...otherProps
23
24
  }) => {
24
25
  const imageStyle = enableLightbox ? { cursor: 'pointer' } : style;
26
+ const HeadComponent = priority ? Head : null;
25
27
 
26
28
  return (
27
29
  <>
@@ -31,6 +33,7 @@ const ImageRender = ({
31
33
  src={imageUrl}
32
34
  onClick={handleEnableLightbox}
33
35
  style={imageStyle}
36
+ HeadComponent={HeadComponent}
34
37
  />
35
38
  {displayLightbox && (
36
39
  <Lightbox
@@ -0,0 +1,94 @@
1
+ import React, { useState } from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import {
4
+ BsBookmarkStarFill,
5
+ BsBookmarkCheckFill,
6
+ BsBookmarkStar,
7
+ BsBookmarkXFill
8
+ } from 'react-icons/bs';
9
+ import { useQuery, useMutation } from '@apollo/client';
10
+ import { getItemList, addItemsToList, removeItemsFromList } from '../../../application/query';
11
+ import { getItemListData, setItemListId } from '../helpers';
12
+ import { useItemListId } from '../hooks';
13
+
14
+ const ItemListButton = ({ listName, parent, modifier }) => {
15
+ const { itemId, itemEntity } = parent;
16
+ const [isHover, setIsHover] = useState(false);
17
+ const { listId } = useItemListId({ listName });
18
+
19
+ const getIcon = () => {
20
+ if (isInList) return isHover ? BsBookmarkXFill : BsBookmarkCheckFill;
21
+ return isHover ? BsBookmarkStarFill : BsBookmarkStar;
22
+ };
23
+
24
+ const { data, error, loading } = useQuery(getItemList, {
25
+ variables: { id: listId },
26
+ skip: !listId
27
+ });
28
+
29
+ const [addListItem] = useMutation(addItemsToList, {
30
+ onCompleted: ({ addItemsToList: listAddResult }) => {
31
+ const {
32
+ result: { id }
33
+ } = listAddResult;
34
+
35
+ if (!listId) {
36
+ setItemListId(listName, id);
37
+ }
38
+ }
39
+ });
40
+
41
+ const [removeListItem] = useMutation(removeItemsFromList);
42
+
43
+ const clickHandler = () => {
44
+ setIsHover(false);
45
+ isInList
46
+ ? removeListItem({
47
+ variables: { listId, listItems: [{ itemId, itemEntity }] },
48
+ skip: !listId
49
+ })
50
+ : addListItem({
51
+ variables: { name: listName, id: listId, listItems: [{ itemId, itemEntity }] },
52
+ skip: !listId
53
+ });
54
+ };
55
+
56
+ if (loading) return '';
57
+ if (error) return error.message;
58
+
59
+ const listItems = getItemListData(data);
60
+ const isInList = !!listItems.find(
61
+ ({ itemId: idToCheck, itemEntity: entityToCheck }) =>
62
+ idToCheck === itemId && entityToCheck === itemEntity
63
+ );
64
+ const Icon = getIcon();
65
+ const stateClassName = isInList ? 'item-list-button--selected' : '';
66
+ const className = ['item-list-button', stateClassName, modifier].filter(Boolean).join(' ');
67
+
68
+ return (
69
+ <div
70
+ className={className}
71
+ role="button"
72
+ onClick={clickHandler}
73
+ onMouseEnter={() => setIsHover(true)}
74
+ onMouseLeave={() => setIsHover(false)}>
75
+ <i>
76
+ <Icon />
77
+ </i>
78
+ </div>
79
+ );
80
+ };
81
+
82
+ ItemListButton.propTypes = {
83
+ parent: PropTypes.object,
84
+ listName: PropTypes.string,
85
+ modifier: PropTypes.string
86
+ };
87
+
88
+ ItemListButton.defaultProps = {
89
+ parent: {},
90
+ listName: '',
91
+ modifier: ''
92
+ };
93
+
94
+ export default ItemListButton;
@@ -0,0 +1,3 @@
1
+ import ItemListButton from './ItemListButton';
2
+
3
+ export default ItemListButton;
@@ -0,0 +1,52 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { useRouter } from 'next/router';
4
+ import { useQuery } from '@apollo/client';
5
+ import { BsBookmarkStarFill, BsBookmarkStar } from 'react-icons/bs';
6
+ import { getItemList } from '../../../application/query';
7
+ import { useItemListId } from '../hooks';
8
+ import { getItemListData } from '../helpers';
9
+
10
+ const ItemListCounter = ({ listName, modifier, url }) => {
11
+ const router = useRouter();
12
+ const { listId } = useItemListId({ listName });
13
+
14
+ const { data, error, loading } = useQuery(getItemList, {
15
+ variables: { id: listId },
16
+ skip: !listId
17
+ });
18
+
19
+ if (loading) return '';
20
+ if (error) return error.message;
21
+
22
+ const listItems = getItemListData(data);
23
+ const listLength = listItems.length;
24
+ const CounterIcon = listLength ? BsBookmarkStarFill : BsBookmarkStar;
25
+
26
+ const handleClick = () => router.push('/Resolver', `${url}?itemListId=${listId}`);
27
+
28
+ return (
29
+ <div
30
+ role="button"
31
+ type="button"
32
+ className={`item-list-counter ${modifier}`}
33
+ onClick={handleClick}>
34
+ <CounterIcon />
35
+ <span className="item-list-counter__badge">{listLength}</span>
36
+ </div>
37
+ );
38
+ };
39
+
40
+ ItemListCounter.propTypes = {
41
+ url: PropTypes.string,
42
+ listName: PropTypes.string,
43
+ modifier: PropTypes.string
44
+ };
45
+
46
+ ItemListCounter.defaultProps = {
47
+ url: '',
48
+ listName: '',
49
+ modifier: ''
50
+ };
51
+
52
+ export default ItemListCounter;
@@ -0,0 +1,3 @@
1
+ import ItemListCounter from './ItemListCounter';
2
+
3
+ export default ItemListCounter;
@@ -0,0 +1,51 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { useRouter } from 'next/router';
4
+ import { useQuery } from '@apollo/client';
5
+ import BlazeButton from '@blaze-react/button';
6
+ import { parseUrl } from 'query-string';
7
+ import { getItemList } from '../../../application/query';
8
+ import { useItemListId } from '../hooks';
9
+ import { getItemListData, setItemListId, setParamAndRedirect } from '../helpers';
10
+ import { LIST_ITEM_QUERY_PARAM } from '../constants';
11
+
12
+ const ItemListNew = ({ listName, modifier, text }) => {
13
+ const router = useRouter();
14
+ const { query: { [LIST_ITEM_QUERY_PARAM]: listItemId } = {} } = parseUrl(router.asPath);
15
+
16
+ const { listId } = useItemListId({ listName });
17
+ const listIdToUse = listItemId || listId;
18
+ const { data, error, loading } = useQuery(getItemList, {
19
+ variables: { id: listIdToUse },
20
+ skip: !listIdToUse
21
+ });
22
+
23
+ if (loading) return '';
24
+ if (error) return error.message;
25
+
26
+ const listItems = getItemListData(data);
27
+ if (!listItems.length) return '';
28
+
29
+ const handleClick = () => {
30
+ setItemListId(listName, '');
31
+ setParamAndRedirect(router);
32
+ };
33
+
34
+ return (
35
+ <BlazeButton className={`item-list-new ${modifier}`} onClick={handleClick}>
36
+ {text}
37
+ </BlazeButton>
38
+ );
39
+ };
40
+
41
+ ItemListNew.propTypes = {
42
+ listName: PropTypes.string.isRequired,
43
+ modifier: PropTypes.string,
44
+ text: PropTypes.string.isRequired
45
+ };
46
+
47
+ ItemListNew.defaultProps = {
48
+ modifier: ''
49
+ };
50
+
51
+ export default ItemListNew;
@@ -0,0 +1,3 @@
1
+ import ItemListNew from './ItemListNew';
2
+
3
+ export default ItemListNew;
@@ -0,0 +1,5 @@
1
+ export const ITEM_LIST_BUTTON = 'itemlistbutton';
2
+ export const ITEM_LIST_COUNTER = 'itemlistcounter';
3
+ export const ITEM_LIST_NEW = 'itemlistnew';
4
+ export const LIST_ITEM_LOCAL_KEY = 'blaze_item_list_';
5
+ export const LIST_ITEM_QUERY_PARAM = 'itemListId';
@@ -0,0 +1,6 @@
1
+ const getItemListData = data => {
2
+ if (data && data.getItemList && data.getItemList.listItems) return data.getItemList.listItems;
3
+ return [];
4
+ };
5
+
6
+ export default getItemListData;
@@ -0,0 +1,11 @@
1
+ import { LIST_ITEM_LOCAL_KEY } from '../constants';
2
+
3
+ const getItemListId = (listName, queryId) => {
4
+ if (queryId) return queryId;
5
+ if (!listName || typeof localStorage === 'undefined') return '';
6
+
7
+ const localListName = `${LIST_ITEM_LOCAL_KEY}${listName}`;
8
+ return localStorage.getItem(localListName) || '';
9
+ };
10
+
11
+ export default getItemListId;
@@ -0,0 +1,10 @@
1
+ import getItemListData from './get-item-list-data';
2
+
3
+ const getItemListIds = data => {
4
+ const itemListElements = getItemListData(data);
5
+ return itemListElements.length
6
+ ? itemListElements.map(({ itemId }) => ({ displayItems: [itemId] }))
7
+ : null;
8
+ };
9
+
10
+ export default getItemListIds;
@@ -0,0 +1,5 @@
1
+ export { default as getItemListId } from './get-item-list-id';
2
+ export { default as getItemListIds } from './get-item-list-ids';
3
+ export { default as getItemListData } from './get-item-list-data';
4
+ export { default as setItemListId } from './set-item-list-id';
5
+ export { default as setParamAndRedirect } from './set-param-and-redirect';
@@ -0,0 +1,9 @@
1
+ import { LIST_ITEM_LOCAL_KEY } from '../constants';
2
+
3
+ const setItemListId = (listName, id) => {
4
+ const localListName = `${LIST_ITEM_LOCAL_KEY}${listName}`;
5
+ localStorage.setItem(localListName, id);
6
+ window.dispatchEvent(new Event('storage'));
7
+ };
8
+
9
+ export default setItemListId;
@@ -0,0 +1,20 @@
1
+ import { LIST_ITEM_QUERY_PARAM } from '../constants';
2
+
3
+ const placeholderBase = 'https://blazecms.app'; // placeholder for URL, removed later
4
+
5
+ const setParamAndRedirect = (router, value) => {
6
+ const currentUrl = new URL(router.asPath, placeholderBase);
7
+ if (value) {
8
+ currentUrl.searchParams.set(LIST_ITEM_QUERY_PARAM, value);
9
+ } else if (!currentUrl.searchParams.get(LIST_ITEM_QUERY_PARAM)) return;
10
+ else {
11
+ currentUrl.searchParams.delete(LIST_ITEM_QUERY_PARAM);
12
+ }
13
+
14
+ const newUrl = currentUrl.toString().replace(placeholderBase, '');
15
+ router.push('/Resolver', newUrl, {
16
+ shallow: true
17
+ });
18
+ };
19
+
20
+ export default setParamAndRedirect;
@@ -0,0 +1 @@
1
+ export { default as useItemListId } from './use-item-list-id';
@@ -0,0 +1,27 @@
1
+ import { useState, useEffect } from 'react';
2
+ import { getItemListId } from '../helpers';
3
+
4
+ const useItemListId = ({ listName }) => {
5
+ const idFromStorage = getItemListId(listName);
6
+ const [listId, setListId] = useState(idFromStorage);
7
+
8
+ useEffect(
9
+ () => {
10
+ const storageEventHandler = () => {
11
+ const newId = getItemListId(listName);
12
+ setListId(newId);
13
+ };
14
+
15
+ window.addEventListener('storage', storageEventHandler);
16
+
17
+ return () => {
18
+ window.removeEventListener('storage', storageEventHandler);
19
+ };
20
+ },
21
+ [listName]
22
+ );
23
+
24
+ return { listId };
25
+ };
26
+
27
+ export default useItemListId;
@@ -1,16 +1,26 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { ResponsiveImage } from '@blaze-cms/image-cdn-react';
4
+ import Head from 'next/head';
4
5
  import { useInView } from '@blaze-react/utils/lib/customHooks';
5
6
  import { IN_VIEW_CONFIG } from '../../constants';
6
7
 
7
8
  const LazyImage = ({ src, alt, sizeKey, priority, ...props }) => {
8
9
  const [isIntersecting, outerRef] = useInView(IN_VIEW_CONFIG);
9
10
  const shouldRender = priority || isIntersecting;
11
+ const HeadComponent = priority ? Head : null;
10
12
 
11
13
  return (
12
14
  <span ref={outerRef}>
13
- {shouldRender && <ResponsiveImage src={src} alt={alt} sizeKey={sizeKey} {...props} />}
15
+ {shouldRender && (
16
+ <ResponsiveImage
17
+ src={src}
18
+ alt={alt}
19
+ sizeKey={sizeKey}
20
+ HeadComponent={HeadComponent}
21
+ {...props}
22
+ />
23
+ )}
14
24
  </span>
15
25
  );
16
26
  };
@@ -52,13 +52,15 @@ const ListBuilder = props => {
52
52
  requiredSchema,
53
53
  searchValues,
54
54
  azFilter,
55
- sortProperties
55
+ sortProperties,
56
+ itemListIds
56
57
  } = props;
57
58
  const isInfinite = paginationType === INFINITE;
58
59
  const listComponent = getListComponent(isCard, paginationType);
59
60
  const propsToDisplayValues = checkPropsToUse(propsToDisplay);
60
61
  const entityFields = buildPropsQuery(entitySchema, propsToDisplayValues, props) || '';
61
- const limitToUse = limit || itemsToDisplay.length;
62
+ const itemsToDisplayToUse = itemListIds || itemsToDisplay;
63
+ const limitToUse = limit || itemsToDisplayToUse.length;
62
64
  const shouldApplyDefaultSort = !sortProperties || !sortProperties.length;
63
65
  const itemsPerPageToUse = getItemsPerPageToUse(itemsPerPage, limitToUse);
64
66
  const initialOffset = getCurrentOffset(offset, itemsPerPageToUse, paginationIndex, limitToUse);
@@ -94,7 +96,7 @@ const ListBuilder = props => {
94
96
  stringProps
95
97
  },
96
98
  itemId,
97
- itemsToDisplay,
99
+ itemsToDisplayToUse,
98
100
  shouldApplyDefaultSort,
99
101
  { shouldReturnAggs: true, isAZ }
100
102
  );
@@ -137,7 +139,7 @@ const ListBuilder = props => {
137
139
  azFilter
138
140
  },
139
141
  itemId,
140
- itemsToDisplay,
142
+ itemsToDisplayToUse,
141
143
  shouldApplyDefaultSort,
142
144
  { shouldReturnAggs: false, isAZ }
143
145
  );
@@ -172,6 +174,7 @@ const ListBuilder = props => {
172
174
  isAZ={isAZ}
173
175
  azFilter={azFilter}
174
176
  {...props}
177
+ itemsToDisplay={itemsToDisplayToUse}
175
178
  />
176
179
  );
177
180
  };
@@ -202,12 +205,14 @@ ListBuilder.propTypes = {
202
205
  filterOperator: PropTypes.string.isRequired,
203
206
  paginationType: PropTypes.string,
204
207
  azFilter: PropTypes.string,
205
- sortProperties: PropTypes.array
208
+ sortProperties: PropTypes.array,
209
+ itemListIds: PropTypes.array
206
210
  };
207
211
 
208
212
  ListBuilder.defaultProps = {
209
213
  entityData: {},
210
214
  itemsToDisplay: [],
215
+ itemListIds: null,
211
216
  limit: 0,
212
217
  omitWrappers: false,
213
218
  offset: 0,
@@ -4,10 +4,14 @@ import { parseUrl } from 'query-string';
4
4
  import PropTypes from 'prop-types';
5
5
  import { useRouter } from 'next/router';
6
6
  import { MainContext } from '@blaze-cms/nextjs-components';
7
- import { getSingleEntitySchema, generateSingleItemQuery } from '../../application/query';
7
+ import {
8
+ getSingleEntitySchema,
9
+ generateSingleItemQuery,
10
+ getItemList
11
+ } from '../../application/query';
8
12
  import ListBuilder from './ListBuilder';
9
13
  import { AZ_LIST_TYPE } from './constants';
10
- import { getAzQueryFilter, getSortProps } from './helpers';
14
+ import { getAzQueryFilter, getSortProps, hasRequiredItemListDetails } from './helpers';
11
15
  import {
12
16
  getGenericProps,
13
17
  getRequiredSchemas,
@@ -21,6 +25,7 @@ import {
21
25
  getInheritedFilters,
22
26
  getQueryProps
23
27
  } from '../../helpers';
28
+ import { getItemListId, getItemListIds } from '../ItemList/helpers';
24
29
  import { useGetEntitySchemasAsObj } from '../../hooks';
25
30
  import { AND_OPERATOR, TEXT_SEARCH, ID, AND, FULL } from '../../constants';
26
31
 
@@ -37,16 +42,18 @@ const ListFactory = props => {
37
42
  sort: defaultSort,
38
43
  searchFilter,
39
44
  operator: filterOperator,
40
- sortProperties
45
+ sortProperties,
46
+ itemListName
41
47
  } = props;
42
-
43
48
  const { isPreview } = useContext(MainContext);
44
49
  const router = useRouter();
45
50
  const { asPath } = router;
46
51
  const parsedQuery = asPath.replace(/%5D/g, ']').replace(/%5B/g, '[');
47
- const { query, url, query: { sort: querySort, sortby: querySortBy } = {} } = parseUrl(
48
- parsedQuery
49
- );
52
+ const {
53
+ query,
54
+ url,
55
+ query: { sort: querySort, sortby: querySortBy, itemListId: queryItemListId } = {}
56
+ } = parseUrl(parsedQuery);
50
57
  const { sortbyFilters, updatedSortProperties } = getSortProps({
51
58
  querySort,
52
59
  sortProperties,
@@ -55,6 +62,7 @@ const ListFactory = props => {
55
62
  defaultSortBy
56
63
  });
57
64
 
65
+ const itemListId = getItemListId(itemListName, queryItemListId);
58
66
  const { itemEntity, itemId } = parent;
59
67
  const itemEntityUpdated = getUnpublishedEntityName(itemEntity);
60
68
  const paginationIndex = getPaginationIndex(query, name);
@@ -98,13 +106,38 @@ const ListFactory = props => {
98
106
  variables: { id: itemId },
99
107
  skip: schemasLoading || (!inheritedFilters.length && queryProps === ID)
100
108
  });
101
- const errorsToCheck = [schemaError, schemasError, requiredSchemaError, itemQueryError];
109
+
110
+ const { data: itemListData = {}, error: itemListError, loading: itemListLoading } = useQuery(
111
+ getItemList,
112
+ {
113
+ variables: { id: itemListId },
114
+ skip: !itemListId
115
+ }
116
+ );
117
+
118
+ if (!hasRequiredItemListDetails({ itemListName, router, itemListId, queryItemListId })) return '';
119
+
120
+ const errorsToCheck = [
121
+ schemaError,
122
+ schemasError,
123
+ requiredSchemaError,
124
+ itemQueryError,
125
+ itemListError
126
+ ];
102
127
  const { hasErr, errMsg } = checkForError(errorsToCheck);
103
128
 
104
- if (requiredSchemaLoading || schemasLoading || schemaLoading || itemQueryLoading) return '';
129
+ if (
130
+ requiredSchemaLoading ||
131
+ schemasLoading ||
132
+ schemaLoading ||
133
+ itemQueryLoading ||
134
+ itemListLoading
135
+ )
136
+ return '';
105
137
  if (hasErr) return errMsg;
106
138
  if (!entitySchema) return null;
107
139
 
140
+ const itemListIds = getItemListIds(itemListData);
108
141
  const isCard = type !== FULL;
109
142
  const isAZ = type === AZ_LIST_TYPE;
110
143
  const genericProps = getGenericProps(props);
@@ -147,7 +180,8 @@ const ListFactory = props => {
147
180
  paginationIndex,
148
181
  entityData,
149
182
  inheritedFilters,
150
- filterOperator
183
+ filterOperator,
184
+ itemListIds
151
185
  };
152
186
 
153
187
  return <ListBuilder {...listProps} />;
@@ -165,7 +199,8 @@ ListFactory.propTypes = {
165
199
  sortby: PropTypes.array,
166
200
  sort: PropTypes.string,
167
201
  searchFilter: PropTypes.object,
168
- sortProperties: PropTypes.array
202
+ sortProperties: PropTypes.array,
203
+ itemListName: PropTypes.string
169
204
  };
170
205
 
171
206
  ListFactory.defaultProps = {
@@ -177,7 +212,8 @@ ListFactory.defaultProps = {
177
212
  sortProperties: [],
178
213
  sort: '',
179
214
  operator: AND,
180
- searchFilter: {}
215
+ searchFilter: {},
216
+ itemListName: ''
181
217
  };
182
218
 
183
219
  export default ListFactory;
@@ -0,0 +1,14 @@
1
+ import { setParamAndRedirect } from '../../ItemList/helpers';
2
+
3
+ const hasRequiredItemListDetails = ({ itemListName, router, itemListId, queryItemListId }) => {
4
+ if (!itemListName) return true;
5
+
6
+ if (!queryItemListId && itemListId) {
7
+ setParamAndRedirect(router, itemListId);
8
+ return false;
9
+ }
10
+
11
+ return !!queryItemListId;
12
+ };
13
+
14
+ export default hasRequiredItemListDetails;
@@ -5,3 +5,4 @@ export { default as buildAzUrl } from './build-az-url';
5
5
  export { default as sortAggs } from './sort-aggs';
6
6
  export { default as getItemsPerPageToUse } from './get-items-per-page-to-use';
7
7
  export { default as getSortProps } from './get-sort-props';
8
+ export { default as hasRequiredItemListDetails } from './has-required-item-list-details';