@blaze-cms/react-page-builder 0.124.0-alpha.9 → 0.124.1-alpha.2

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 (440) hide show
  1. package/CHANGELOG.md +325 -0
  2. package/README.md +8 -0
  3. package/lib/BannerContext/index.js.map +1 -1
  4. package/lib/HOC/withInfiniteScroll.js.map +1 -1
  5. package/lib/HOC/withTitle.js.map +1 -1
  6. package/lib/PBContext/index.js.map +1 -1
  7. package/lib/application/query/index.js +8 -2
  8. package/lib/application/query/index.js.map +1 -1
  9. package/lib/components/BackToTop/BackToTop.js.map +1 -1
  10. package/lib/components/Banner/AdSlotRender.js.map +1 -1
  11. package/lib/components/Banner/Banner.js.map +1 -1
  12. package/lib/components/Banner/BannerRender.js.map +1 -1
  13. package/lib/components/Banner/helpers.js.map +1 -1
  14. package/lib/components/Banner/index.js.map +1 -1
  15. package/lib/components/BlazeLink.js.map +1 -1
  16. package/lib/components/Breadcrumb/Breadcrumb.js.map +1 -1
  17. package/lib/components/Button.js +18 -5
  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 -301
  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 +18 -67
  155. package/lib/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
  156. package/lib/components/SearchFilter/SearchFilterContainer.js +97 -22
  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 +23 -6
  161. package/lib/components/SearchFilter/components/Range.js.map +1 -1
  162. package/lib/components/SearchFilter/components/Select.js +27 -11
  163. package/lib/components/SearchFilter/components/Select.js.map +1 -1
  164. package/lib/components/SearchFilter/components/TextSearch.js +1 -5
  165. package/lib/components/SearchFilter/components/TextSearch.js.map +1 -1
  166. package/lib/components/SearchFilter/helpers/build-filters-query.js +110 -0
  167. package/lib/components/SearchFilter/helpers/build-filters-query.js.map +1 -0
  168. package/lib/components/SearchFilter/helpers/build-query.js +1 -1
  169. package/lib/components/SearchFilter/helpers/build-query.js.map +1 -1
  170. package/lib/components/SearchFilter/helpers/build-raw-query-stringified.js +15 -8
  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 +16 -1
  176. package/lib/components/SearchFilter/helpers/get-initial-filter-values.js.map +1 -1
  177. package/lib/components/SearchFilter/helpers/get-intersected-prop.js.map +1 -1
  178. package/lib/components/SearchFilter/helpers/get-range-value.js +4 -2
  179. package/lib/components/SearchFilter/helpers/get-range-value.js.map +1 -1
  180. package/lib/components/SearchFilter/helpers/get-responsive-filter-classnames.js.map +1 -1
  181. package/lib/components/SearchFilter/helpers/get-select-options.js.map +1 -1
  182. package/lib/components/SearchFilter/helpers/index.js +8 -0
  183. package/lib/components/SearchFilter/helpers/index.js.map +1 -1
  184. package/lib/components/SearchFilter/helpers/parse-filter-value.js +3 -7
  185. package/lib/components/SearchFilter/helpers/parse-filter-value.js.map +1 -1
  186. package/lib/components/SearchFilterSort/SearchFilterSort.js.map +1 -1
  187. package/lib/components/SearchFilterSort/helpers/handle-sort-update.js.map +1 -1
  188. package/lib/components/SearchFilterSort/helpers/update-sort.js.map +1 -1
  189. package/lib/components/SocialFollow/SFItem.js.map +1 -1
  190. package/lib/components/SocialFollow/SocialFollow.js.map +1 -1
  191. package/lib/components/SocialFollow/SocialFollowRender.js.map +1 -1
  192. package/lib/components/SubMenu/SubMenu.js.map +1 -1
  193. package/lib/components/TextBlock/TextBlockRender.js.map +1 -1
  194. package/lib/components/TextBlock/index.js.map +1 -1
  195. package/lib/components/Video/Video.js.map +1 -1
  196. package/lib/components/Video/VideoModal.js.map +1 -1
  197. package/lib/components/Video/VideoRender.js.map +1 -1
  198. package/lib/components/Video/providers/Default.js.map +1 -1
  199. package/lib/components/Video/providers/JWPlayer/JWPlayerProvider.js.map +1 -1
  200. package/lib/components/Video/providers/YouTube/YouTubeProvider.js.map +1 -1
  201. package/lib/components/Video/providers/YouTube/YoutubeEmbeded.js.map +1 -1
  202. package/lib/components/Video/providers/get-provider.js.map +1 -1
  203. package/lib/components/Wrapper.js.map +1 -1
  204. package/lib/components/index.js +16 -1
  205. package/lib/components/index.js.map +1 -1
  206. package/lib/constants/index.js +3 -1
  207. package/lib/constants/index.js.map +1 -1
  208. package/lib/helpers/build-inherited-filters.js.map +1 -1
  209. package/lib/helpers/build-raw-query-base.js.map +1 -1
  210. package/lib/helpers/build-raw-query.js.map +1 -1
  211. package/lib/helpers/build-search-values-checkbox-select.js.map +1 -1
  212. package/lib/helpers/check-props-to-use.js.map +1 -1
  213. package/lib/helpers/get-entities-with-banner.js.map +1 -1
  214. package/lib/helpers/get-entity-data.js.map +1 -1
  215. package/lib/helpers/get-entity-render-props.js.map +1 -1
  216. package/lib/helpers/get-filter-props.js.map +1 -1
  217. package/lib/helpers/get-generic-props.js.map +1 -1
  218. package/lib/helpers/get-generic-render-variables.js.map +1 -1
  219. package/lib/helpers/get-image-ids.js.map +1 -1
  220. package/lib/helpers/get-parsed-prop-values.js.map +1 -1
  221. package/lib/helpers/get-prop-values.js.map +1 -1
  222. package/lib/helpers/get-query-filters.js.map +1 -1
  223. package/lib/helpers/get-query-props.js.map +1 -1
  224. package/lib/helpers/get-updated-filter-by.js.map +1 -1
  225. package/lib/helpers/inject-banner.js.map +1 -1
  226. package/lib/helpers/inject-banners-to-entities.js.map +1 -1
  227. package/lib/helpers/inject-multiple-banners/get-banners-for-entities/get-banners-for-entities.js.map +1 -1
  228. package/lib/helpers/inject-multiple-banners/get-banners-for-nodes/get-banners-for-nodes.js.map +1 -1
  229. package/lib/helpers/inject-multiple-banners/get-banners-for-nodes/helpers/group-node-entities.js.map +1 -1
  230. package/lib/helpers/inject-multiple-banners/inject-multiple-banners.js.map +1 -1
  231. package/lib/helpers/is-filter-entitys-id.js.map +1 -1
  232. package/lib/helpers/parse-TextBlock.js.map +1 -1
  233. package/lib/helpers/parse-props-to-display.js.map +1 -1
  234. package/lib/helpers/render-children.js.map +1 -1
  235. package/lib/helpers/sort-response-data.js.map +1 -1
  236. package/lib/hooks/helpers/RenderComponent.js.map +1 -1
  237. package/lib/hooks/helpers/append-gtm-classname.js +1 -0
  238. package/lib/hooks/helpers/append-gtm-classname.js.map +1 -1
  239. package/lib/hooks/helpers/buildPBComponents.js.map +1 -1
  240. package/lib/hooks/helpers/getComponent.js.map +1 -1
  241. package/lib/hooks/helpers/inject-element-banners.js.map +1 -1
  242. package/lib/hooks/helpers/inject-textblock-banners.js.map +1 -1
  243. package/lib/hooks/helpers/insert-banners.js.map +1 -1
  244. package/lib/hooks/helpers/update-targetings.js.map +1 -1
  245. package/lib/hooks/use-banner-insertion.js.map +1 -1
  246. package/lib/hooks/use-check-mobile-screen.js.map +1 -1
  247. package/lib/hooks/use-get-entity-schema.js.map +1 -1
  248. package/lib/hooks/use-get-entity-schemas-as-obj.js.map +1 -1
  249. package/lib/hooks/use-get-image-id-from-relation.js.map +1 -1
  250. package/lib/hooks/use-get-images.js.map +1 -1
  251. package/lib/hooks/use-get-single-entity-schema.js.map +1 -1
  252. package/lib/hooks/use-page-builder.js.map +1 -1
  253. package/lib/utils/get-class-modifiers.js.map +1 -1
  254. package/lib/utils/get-image-data.js.map +1 -1
  255. package/lib-es/application/query/index.js +45 -1
  256. package/lib-es/application/query/index.js.map +1 -1
  257. package/lib-es/components/Button.js +18 -6
  258. package/lib-es/components/Button.js.map +1 -1
  259. package/lib-es/components/Card/CardContainer.js +3 -7
  260. package/lib-es/components/Card/CardContainer.js.map +1 -1
  261. package/lib-es/components/Card/CardFactory.js +7 -4
  262. package/lib-es/components/Card/CardFactory.js.map +1 -1
  263. package/lib-es/components/CarouselWrapper.js +2 -2
  264. package/lib-es/components/CarouselWrapper.js.map +1 -1
  265. package/lib-es/components/Image/ImageRender.js +4 -1
  266. package/lib-es/components/Image/ImageRender.js.map +1 -1
  267. package/lib-es/components/ItemList/ItemListButton/ItemListButton.js +111 -0
  268. package/lib-es/components/ItemList/ItemListButton/ItemListButton.js.map +1 -0
  269. package/lib-es/components/ItemList/ItemListButton/index.js +3 -0
  270. package/lib-es/components/ItemList/ItemListButton/index.js.map +1 -0
  271. package/lib-es/components/ItemList/ItemListCounter/ItemListCounter.js +60 -0
  272. package/lib-es/components/ItemList/ItemListCounter/ItemListCounter.js.map +1 -0
  273. package/lib-es/components/ItemList/ItemListCounter/index.js +3 -0
  274. package/lib-es/components/ItemList/ItemListCounter/index.js.map +1 -0
  275. package/lib-es/components/ItemList/ItemListNew/ItemListNew.js +64 -0
  276. package/lib-es/components/ItemList/ItemListNew/ItemListNew.js.map +1 -0
  277. package/lib-es/components/ItemList/ItemListNew/index.js +3 -0
  278. package/lib-es/components/ItemList/ItemListNew/index.js.map +1 -0
  279. package/lib-es/components/ItemList/constants.js +6 -0
  280. package/lib-es/components/ItemList/constants.js.map +1 -0
  281. package/lib-es/components/ItemList/helpers/get-item-list-data.js +7 -0
  282. package/lib-es/components/ItemList/helpers/get-item-list-data.js.map +1 -0
  283. package/lib-es/components/ItemList/helpers/get-item-list-id.js +11 -0
  284. package/lib-es/components/ItemList/helpers/get-item-list-id.js.map +1 -0
  285. package/lib-es/components/ItemList/helpers/get-item-list-ids.js +13 -0
  286. package/lib-es/components/ItemList/helpers/get-item-list-ids.js.map +1 -0
  287. package/lib-es/components/ItemList/helpers/index.js +6 -0
  288. package/lib-es/components/ItemList/helpers/index.js.map +1 -0
  289. package/lib-es/components/ItemList/helpers/set-item-list-id.js +10 -0
  290. package/lib-es/components/ItemList/helpers/set-item-list-id.js.map +1 -0
  291. package/lib-es/components/ItemList/helpers/set-param-and-redirect.js +20 -0
  292. package/lib-es/components/ItemList/helpers/set-param-and-redirect.js.map +1 -0
  293. package/lib-es/components/ItemList/hooks/index.js +2 -0
  294. package/lib-es/components/ItemList/hooks/index.js.map +1 -0
  295. package/lib-es/components/ItemList/hooks/use-item-list-id.js +26 -0
  296. package/lib-es/components/ItemList/hooks/use-item-list-id.js.map +1 -0
  297. package/lib-es/components/LazyImage/LazyImage.js +4 -1
  298. package/lib-es/components/LazyImage/LazyImage.js.map +1 -1
  299. package/lib-es/components/List/ListBuilder.js +12 -6
  300. package/lib-es/components/List/ListBuilder.js.map +1 -1
  301. package/lib-es/components/List/ListFactory.js +33 -9
  302. package/lib-es/components/List/ListFactory.js.map +1 -1
  303. package/lib-es/components/List/helpers/has-required-item-list-details.js +20 -0
  304. package/lib-es/components/List/helpers/has-required-item-list-details.js.map +1 -0
  305. package/lib-es/components/List/helpers/index.js +1 -0
  306. package/lib-es/components/List/helpers/index.js.map +1 -1
  307. package/lib-es/components/Menu/Menu.js +54 -46
  308. package/lib-es/components/Menu/Menu.js.map +1 -1
  309. package/lib-es/components/Menu/MenuContext.js +6 -0
  310. package/lib-es/components/Menu/MenuContext.js.map +1 -0
  311. package/lib-es/components/MenuItem/MenuItem.js +24 -9
  312. package/lib-es/components/MenuItem/MenuItem.js.map +1 -1
  313. package/lib-es/components/SearchContent/SearchContent.js +129 -0
  314. package/lib-es/components/SearchContent/SearchContent.js.map +1 -0
  315. package/lib-es/components/SearchContent/SearchContentItems.js +33 -0
  316. package/lib-es/components/SearchContent/SearchContentItems.js.map +1 -0
  317. package/lib-es/components/SearchContent/SearchContentResults.js +31 -0
  318. package/lib-es/components/SearchContent/SearchContentResults.js.map +1 -0
  319. package/lib-es/components/SearchContent/SearchContentToggleIcon.js +30 -0
  320. package/lib-es/components/SearchContent/SearchContentToggleIcon.js.map +1 -0
  321. package/lib-es/components/SearchContent/index.js +1 -205
  322. package/lib-es/components/SearchContent/index.js.map +1 -1
  323. package/lib-es/components/SearchFilter/SearchFilter/FiltersList.js +2 -4
  324. package/lib-es/components/SearchFilter/SearchFilter/FiltersList.js.map +1 -1
  325. package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js +12 -44
  326. package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
  327. package/lib-es/components/SearchFilter/SearchFilterContainer.js +77 -15
  328. package/lib-es/components/SearchFilter/SearchFilterContainer.js.map +1 -1
  329. package/lib-es/components/SearchFilter/components/Checkbox.js +18 -9
  330. package/lib-es/components/SearchFilter/components/Checkbox.js.map +1 -1
  331. package/lib-es/components/SearchFilter/components/Range.js +19 -6
  332. package/lib-es/components/SearchFilter/components/Range.js.map +1 -1
  333. package/lib-es/components/SearchFilter/components/Select.js +23 -8
  334. package/lib-es/components/SearchFilter/components/Select.js.map +1 -1
  335. package/lib-es/components/SearchFilter/components/TextSearch.js +1 -5
  336. package/lib-es/components/SearchFilter/components/TextSearch.js.map +1 -1
  337. package/lib-es/components/SearchFilter/helpers/build-filters-query.js +73 -0
  338. package/lib-es/components/SearchFilter/helpers/build-filters-query.js.map +1 -0
  339. package/lib-es/components/SearchFilter/helpers/build-query.js +1 -1
  340. package/lib-es/components/SearchFilter/helpers/build-query.js.map +1 -1
  341. package/lib-es/components/SearchFilter/helpers/build-raw-query-stringified.js +15 -9
  342. package/lib-es/components/SearchFilter/helpers/build-raw-query-stringified.js.map +1 -1
  343. package/lib-es/components/SearchFilter/helpers/get-initial-filter-values.js +14 -1
  344. package/lib-es/components/SearchFilter/helpers/get-initial-filter-values.js.map +1 -1
  345. package/lib-es/components/SearchFilter/helpers/get-range-value.js +2 -2
  346. package/lib-es/components/SearchFilter/helpers/get-range-value.js.map +1 -1
  347. package/lib-es/components/SearchFilter/helpers/index.js +2 -1
  348. package/lib-es/components/SearchFilter/helpers/index.js.map +1 -1
  349. package/lib-es/components/SearchFilter/helpers/parse-filter-value.js +3 -3
  350. package/lib-es/components/SearchFilter/helpers/parse-filter-value.js.map +1 -1
  351. package/lib-es/components/index.js +10 -1
  352. package/lib-es/components/index.js.map +1 -1
  353. package/lib-es/constants/index.js +2 -1
  354. package/lib-es/constants/index.js.map +1 -1
  355. package/lib-es/helpers/build-raw-query.js.map +1 -1
  356. package/lib-es/hooks/helpers/append-gtm-classname.js +1 -0
  357. package/lib-es/hooks/helpers/append-gtm-classname.js.map +1 -1
  358. package/package.json +5 -4
  359. package/src/application/query/index.js +51 -1
  360. package/src/components/Button.js +27 -5
  361. package/src/components/Card/CardContainer.js +2 -6
  362. package/src/components/Card/CardFactory.js +5 -3
  363. package/src/components/CarouselWrapper.js +2 -2
  364. package/src/components/Image/ImageRender.js +3 -0
  365. package/src/components/ItemList/ItemListButton/ItemListButton.js +94 -0
  366. package/src/components/ItemList/ItemListButton/index.js +3 -0
  367. package/src/components/ItemList/ItemListCounter/ItemListCounter.js +52 -0
  368. package/src/components/ItemList/ItemListCounter/index.js +3 -0
  369. package/src/components/ItemList/ItemListNew/ItemListNew.js +51 -0
  370. package/src/components/ItemList/ItemListNew/index.js +3 -0
  371. package/src/components/ItemList/constants.js +5 -0
  372. package/src/components/ItemList/helpers/get-item-list-data.js +6 -0
  373. package/src/components/ItemList/helpers/get-item-list-id.js +11 -0
  374. package/src/components/ItemList/helpers/get-item-list-ids.js +10 -0
  375. package/src/components/ItemList/helpers/index.js +5 -0
  376. package/src/components/ItemList/helpers/set-item-list-id.js +9 -0
  377. package/src/components/ItemList/helpers/set-param-and-redirect.js +20 -0
  378. package/src/components/ItemList/hooks/index.js +1 -0
  379. package/src/components/ItemList/hooks/use-item-list-id.js +27 -0
  380. package/src/components/LazyImage/LazyImage.js +11 -1
  381. package/src/components/List/ListBuilder.js +10 -5
  382. package/src/components/List/ListFactory.js +48 -12
  383. package/src/components/List/helpers/has-required-item-list-details.js +14 -0
  384. package/src/components/List/helpers/index.js +1 -0
  385. package/src/components/Menu/Menu.js +61 -54
  386. package/src/components/Menu/MenuContext.js +5 -0
  387. package/src/components/MenuItem/MenuItem.js +39 -14
  388. package/src/components/SearchContent/SearchContent.js +136 -0
  389. package/src/components/SearchContent/SearchContentItems.js +28 -0
  390. package/src/components/SearchContent/SearchContentResults.js +27 -0
  391. package/src/components/SearchContent/SearchContentToggleIcon.js +27 -0
  392. package/src/components/SearchContent/index.js +1 -217
  393. package/src/components/SearchFilter/SearchFilter/FiltersList.js +30 -37
  394. package/src/components/SearchFilter/SearchFilter/SearchFilter.js +12 -26
  395. package/src/components/SearchFilter/SearchFilterContainer.js +72 -16
  396. package/src/components/SearchFilter/components/Checkbox.js +23 -8
  397. package/src/components/SearchFilter/components/Range.js +11 -5
  398. package/src/components/SearchFilter/components/Select.js +18 -11
  399. package/src/components/SearchFilter/components/TextSearch.js +1 -3
  400. package/src/components/SearchFilter/helpers/build-filters-query.js +60 -0
  401. package/src/components/SearchFilter/helpers/build-query.js +3 -1
  402. package/src/components/SearchFilter/helpers/build-raw-query-stringified.js +17 -11
  403. package/src/components/SearchFilter/helpers/get-initial-filter-values.js +15 -1
  404. package/src/components/SearchFilter/helpers/get-range-value.js +2 -2
  405. package/src/components/SearchFilter/helpers/index.js +3 -1
  406. package/src/components/SearchFilter/helpers/parse-filter-value.js +3 -3
  407. package/src/components/index.js +10 -1
  408. package/src/constants/index.js +2 -0
  409. package/src/helpers/build-raw-query.js +1 -0
  410. package/src/hooks/helpers/append-gtm-classname.js +3 -0
  411. package/tests/unit/src/components/Button.test.js +55 -1
  412. package/tests/unit/src/components/ItemList/ItemListButton.test.js +175 -0
  413. package/tests/unit/src/components/ItemList/ItemListCounter.test.js +65 -0
  414. package/tests/unit/src/components/ItemList/ItemListNew.test.js +164 -0
  415. package/tests/unit/src/components/ItemList/__snapshots__/ItemListButton.test.js.snap +107 -0
  416. package/tests/unit/src/components/ItemList/__snapshots__/ItemListCounter.test.js.snap +31 -0
  417. package/tests/unit/src/components/ItemList/__snapshots__/ItemListNew.test.js.snap +27 -0
  418. package/tests/unit/src/components/ItemList/helpers/get-item-list-data.test.js +28 -0
  419. package/tests/unit/src/components/ItemList/helpers/get-item-list-id.test.js +20 -0
  420. package/tests/unit/src/components/ItemList/helpers/get-item-list-ids.test.js +19 -0
  421. package/tests/unit/src/components/ItemList/helpers/set-item-list-id.test.js +13 -0
  422. package/tests/unit/src/components/ItemList/helpers/set-param-and-redirect.test.js +30 -0
  423. package/tests/unit/src/components/ItemList/hooks/use-item-list-id.test.js +32 -0
  424. package/tests/unit/src/components/List/helpers/has-required-item-list-details.test.js +30 -0
  425. package/tests/unit/src/components/Menu/Menu.test.js +9 -3
  426. package/tests/unit/src/components/Menu/__snapshots__/Menu.test.js.snap +12 -11
  427. package/tests/unit/src/components/MenuItem/MenuItem.test.js +1 -1
  428. package/tests/unit/src/components/MenuItem/SubMenu.test.js +5 -1
  429. package/tests/unit/src/components/MenuItem/__snapshots__/MenuItem.test.js.snap +54 -10
  430. package/tests/unit/src/components/SearchContent/SearchContent.test.js +29 -0
  431. package/tests/unit/src/components/SearchContent/__snapshots__/SearchContent.test.js.snap +9 -0
  432. package/tests/unit/src/components/SearchFilter/SearchFilter/SearchFilter.test.js +3 -6
  433. package/tests/unit/src/components/SearchFilter/components/Range.test.js +24 -0
  434. package/tests/unit/src/components/SearchFilter/components/__snapshots__/Checkbox.test.js.snap +2 -0
  435. package/tests/unit/src/components/SearchFilter/components/__snapshots__/Range.test.js.snap +3 -3
  436. package/tests/unit/src/components/SearchFilter/components/__snapshots__/Select.test.js.snap +4 -0
  437. package/tests/unit/src/components/SearchFilter/helpers/build-query.test.js +2 -2
  438. package/tests/unit/src/components/SearchFilter/helpers/get-initial-filter-values.test.js +31 -11
  439. package/tests/unit/src/components/SearchFilter/helpers/parse-filter-value.test.js +1 -1
  440. package/tests/unit/src/components/__snapshots__/index.test.js.snap +12 -0
@@ -1,10 +1,4 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
-
3
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
-
5
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
-
7
- import React, { useState, useEffect, useReducer } from 'react';
1
+ import React, { useState, useEffect } from 'react';
8
2
  import PropTypes from 'prop-types';
9
3
  import classnames from 'classnames';
10
4
  import debounce from 'lodash.debounce';
@@ -15,34 +9,6 @@ import ResetDesktopForm from './ResetDesktopForm';
15
9
  import MobileFormToolbar from './MobileFormToolbar';
16
10
  import { SEARCH, REFINE, MORE_FILTERS_CLASSES } from '../constants';
17
11
 
18
- const reducer = (state, action) => {
19
- const {
20
- newValues,
21
- type,
22
- shouldSearch = true
23
- } = action;
24
-
25
- switch (type) {
26
- case 'update':
27
- return _objectSpread(_objectSpread(_objectSpread({}, state), newValues), {}, {
28
- shouldSearch
29
- });
30
-
31
- case 'resetSearch':
32
- return _objectSpread(_objectSpread({}, state), {}, {
33
- shouldSearch: false
34
- });
35
-
36
- case 'reset':
37
- return _objectSpread(_objectSpread({}, newValues), {}, {
38
- shouldSearch
39
- });
40
-
41
- default:
42
- throw new Error();
43
- }
44
- };
45
-
46
12
  const SearchFilter = ({
47
13
  searchFilterRef,
48
14
  data,
@@ -54,13 +20,13 @@ const SearchFilter = ({
54
20
  isCollapsedOnResponsive,
55
21
  displaySearchFilter,
56
22
  setDisplaySearchFilter,
57
- initialFilterValues,
58
23
  groupAfterDesktop,
59
- groupAfterMobile
24
+ groupAfterMobile,
25
+ filterValues,
26
+ setAppliedFilters
60
27
  }) => {
61
28
  const [moreFiltersMobileCollapsed, setMoreFiltersMobileCollapsed] = useState(true);
62
29
  const [moreFiltersDesktopCollapsed, setMoreFiltersDesktopCollapsed] = useState(true);
63
- const [filterValues, dispatch] = useReducer(reducer, initialFilterValues);
64
30
 
65
31
  const doSubmit = (newValues = filterValues) => {
66
32
  const newQuery = buildQuery(newValues, filters);
@@ -75,11 +41,11 @@ const SearchFilter = ({
75
41
  useEffect(() => {
76
42
  if (filterValues.shouldSearch) {
77
43
  handleSubmit(filterValues);
78
- dispatch({
44
+ setAppliedFilters({
79
45
  type: 'resetSearch'
80
46
  });
81
47
  }
82
- }, [filterValues, handleSubmit]);
48
+ }, [filterValues, handleSubmit, setAppliedFilters]);
83
49
  const formClass = classnames('filter__form filter__form--initial', {
84
50
  'filter__form--mobile': isCollapsedOnResponsive && displaySearchFilter,
85
51
  'filter__form--collapsible': isCollapsedOnResponsive
@@ -93,15 +59,16 @@ const SearchFilter = ({
93
59
  const formId = `filter-${name}-form`;
94
60
 
95
61
  const handleReset = () => {
96
- const newValues = getInitialFilterValues(data, filters, {});
97
- dispatch({
62
+ const newValues = getInitialFilterValues(null, filters, {});
63
+ setAppliedFilters({
98
64
  newValues,
99
65
  type: 'reset'
100
66
  });
67
+ doSubmit(newValues);
101
68
  };
102
69
 
103
70
  const updateFilterValues = (newValues, shouldSubmit) => {
104
- dispatch({
71
+ setAppliedFilters({
105
72
  newValues,
106
73
  shouldSearch: shouldSubmit,
107
74
  type: 'update'
@@ -219,7 +186,8 @@ SearchFilter.propTypes = {
219
186
  isCollapsedOnResponsive: PropTypes.bool.isRequired,
220
187
  groupAfterDesktop: PropTypes.number.isRequired,
221
188
  groupAfterMobile: PropTypes.number.isRequired,
222
- initialFilterValues: PropTypes.object.isRequired
189
+ filterValues: PropTypes.object.isRequired,
190
+ setAppliedFilters: PropTypes.func.isRequired
223
191
  };
224
192
  export default SearchFilter;
225
193
  //# sourceMappingURL=SearchFilter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchFilter.js","names":["React","useState","useEffect","useReducer","PropTypes","classnames","debounce","FiltersList","isDeviceDesktop","buildQuery","getInitialFilterValues","getResponsiveFilterClassnames","CloseMobileForm","ResetDesktopForm","MobileFormToolbar","SEARCH","REFINE","MORE_FILTERS_CLASSES","reducer","state","action","newValues","type","shouldSearch","Error","SearchFilter","searchFilterRef","data","filters","hasUrl","entity","handleSearch","name","isCollapsedOnResponsive","displaySearchFilter","setDisplaySearchFilter","initialFilterValues","groupAfterDesktop","groupAfterMobile","moreFiltersMobileCollapsed","setMoreFiltersMobileCollapsed","moreFiltersDesktopCollapsed","setMoreFiltersDesktopCollapsed","filterValues","dispatch","doSubmit","newQuery","handleSubmit","formClass","moreFiltersMobileWrapperClass","moreFiltersMobileTogglerClass","moreFiltersDesktopWrapperClass","moreFiltersDesktopTogglerClass","formId","handleReset","updateFilterValues","shouldSubmit","shouldGroup","e","preventDefault","slice","MOBILE_CONTENT","DESKTOP_CONTENT","DESKTOP_BUTTONS","MOBILE_BUTTONS","propTypes","object","isRequired","array","bool","string","func","number"],"sources":["../../../../src/components/SearchFilter/SearchFilter/SearchFilter.js"],"sourcesContent":["import React, { useState, useEffect, useReducer } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport FiltersList from './FiltersList';\nimport {\n isDeviceDesktop,\n buildQuery,\n getInitialFilterValues,\n getResponsiveFilterClassnames\n} from '../helpers';\nimport CloseMobileForm from './CloseMobileForm';\nimport ResetDesktopForm from './ResetDesktopForm';\nimport MobileFormToolbar from './MobileFormToolbar';\nimport { SEARCH, REFINE, MORE_FILTERS_CLASSES } from '../constants';\n\nconst reducer = (state, action) => {\n const { newValues, type, shouldSearch = true } = action;\n\n switch (type) {\n case 'update':\n return { ...state, ...newValues, shouldSearch };\n case 'resetSearch':\n return { ...state, shouldSearch: false };\n case 'reset':\n return { ...newValues, shouldSearch };\n default:\n throw new Error();\n }\n};\n\nconst SearchFilter = ({\n searchFilterRef,\n data,\n filters,\n hasUrl,\n entity,\n handleSearch,\n name,\n isCollapsedOnResponsive,\n displaySearchFilter,\n setDisplaySearchFilter,\n initialFilterValues,\n groupAfterDesktop,\n groupAfterMobile\n}) => {\n const [moreFiltersMobileCollapsed, setMoreFiltersMobileCollapsed] = useState(true);\n const [moreFiltersDesktopCollapsed, setMoreFiltersDesktopCollapsed] = useState(true);\n const [filterValues, dispatch] = useReducer(reducer, initialFilterValues);\n\n const doSubmit = (newValues = filterValues) => {\n const newQuery = buildQuery(newValues, filters);\n handleSearch(newQuery);\n setMoreFiltersDesktopCollapsed(true);\n setMoreFiltersMobileCollapsed(true);\n };\n\n const handleSubmit = debounce(newValues => {\n doSubmit(newValues);\n }, 200);\n\n useEffect(\n () => {\n if (filterValues.shouldSearch) {\n handleSubmit(filterValues);\n dispatch({ type: 'resetSearch' });\n }\n },\n [filterValues, handleSubmit]\n );\n\n const formClass = classnames('filter__form filter__form--initial', {\n 'filter__form--mobile': isCollapsedOnResponsive && displaySearchFilter,\n 'filter__form--collapsible': isCollapsedOnResponsive\n });\n\n const {\n moreFiltersMobileWrapperClass,\n moreFiltersMobileTogglerClass,\n moreFiltersDesktopWrapperClass,\n moreFiltersDesktopTogglerClass\n } = getResponsiveFilterClassnames(moreFiltersDesktopCollapsed, moreFiltersMobileCollapsed);\n\n const formId = `filter-${name}-form`;\n\n const handleReset = () => {\n const newValues = getInitialFilterValues(data, filters, {});\n\n dispatch({ newValues, type: 'reset' });\n };\n\n const updateFilterValues = (newValues, shouldSubmit) => {\n dispatch({ newValues, shouldSearch: shouldSubmit, type: 'update' });\n };\n\n const shouldGroup = !!(groupAfterDesktop || groupAfterMobile);\n const shouldSearch = !hasUrl;\n\n return (\n <>\n <form\n ref={searchFilterRef}\n className={formClass}\n data-testid={formId}\n id={formId}\n onSubmit={e => {\n e.preventDefault();\n doSubmit();\n }}>\n {displaySearchFilter && (\n <CloseMobileForm handleClose={() => setDisplaySearchFilter(false)} />\n )}\n\n <div className=\"filter filter--search-refine\">\n <ResetDesktopForm handleReset={handleReset} />\n\n <div className=\"filter__wrapper filter__wrapper--search-refine\">\n {!shouldGroup && (\n <FiltersList\n shouldSearch={shouldSearch}\n data={data}\n filters={filters}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n )}\n\n {shouldGroup && (\n <>\n <FiltersList\n shouldSearch={shouldSearch}\n data={data}\n filters={filters.slice(0, groupAfterMobile)}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n\n {!!groupAfterMobile && (\n <button\n data-testId=\"search-filter-mobile-toggler\"\n className={moreFiltersMobileTogglerClass}\n type=\"button\"\n onClick={() => setMoreFiltersMobileCollapsed(!moreFiltersMobileCollapsed)}>\n Filters\n </button>\n )}\n\n <div className={moreFiltersMobileWrapperClass}>\n <div className={MORE_FILTERS_CLASSES.MOBILE_CONTENT}>\n <FiltersList\n shouldSearch={shouldSearch && isDeviceDesktop()}\n data={data}\n filters={filters.slice(\n groupAfterMobile,\n groupAfterDesktop ? groupAfterDesktop - 1 : 0\n )}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n\n {!!groupAfterDesktop && (\n <button\n data-testId=\"search-filter-desktop-toggler\"\n className={moreFiltersDesktopTogglerClass}\n type=\"button\"\n onClick={() =>\n setMoreFiltersDesktopCollapsed(!moreFiltersDesktopCollapsed)\n }>\n More filters\n </button>\n )}\n\n <div className={moreFiltersDesktopWrapperClass}>\n <div className={MORE_FILTERS_CLASSES.DESKTOP_CONTENT}>\n <FiltersList\n shouldSearch={false}\n data={data}\n filters={filters.slice(groupAfterDesktop)}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n </div>\n\n <div className={MORE_FILTERS_CLASSES.DESKTOP_BUTTONS}>\n <ResetDesktopForm handleReset={handleReset} />\n\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n </div>\n </div>\n </div>\n\n <div className={MORE_FILTERS_CLASSES.MOBILE_BUTTONS}>\n <ResetDesktopForm handleReset={handleReset} />\n\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n </div>\n </div>\n </>\n )}\n\n <br />\n\n {!displaySearchFilter && (\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n )}\n </div>\n </div>\n\n {displaySearchFilter && <MobileFormToolbar formId={formId} handleReset={handleReset} />}\n </form>\n\n {isCollapsedOnResponsive &&\n !displaySearchFilter && (\n <div className=\"filter__refine filter__refine--mobile-close\" data-testid=\"refine-mobile\">\n <div role=\"button\" onClick={() => setDisplaySearchFilter(true)}>\n {REFINE}\n </div>\n </div>\n )}\n </>\n );\n};\n\nSearchFilter.propTypes = {\n data: PropTypes.object.isRequired,\n filters: PropTypes.array.isRequired,\n searchFilterRef: PropTypes.object.isRequired,\n hasUrl: PropTypes.bool.isRequired,\n entity: PropTypes.string.isRequired,\n handleSearch: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n displaySearchFilter: PropTypes.bool.isRequired,\n setDisplaySearchFilter: PropTypes.func.isRequired,\n isCollapsedOnResponsive: PropTypes.bool.isRequired,\n groupAfterDesktop: PropTypes.number.isRequired,\n groupAfterMobile: PropTypes.number.isRequired,\n initialFilterValues: PropTypes.object.isRequired\n};\n\nexport default SearchFilter;\n"],"mappings":"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"}
1
+ {"version":3,"file":"SearchFilter.js","names":["React","useState","useEffect","PropTypes","classnames","debounce","FiltersList","isDeviceDesktop","buildQuery","getInitialFilterValues","getResponsiveFilterClassnames","CloseMobileForm","ResetDesktopForm","MobileFormToolbar","SEARCH","REFINE","MORE_FILTERS_CLASSES","SearchFilter","searchFilterRef","data","filters","hasUrl","entity","handleSearch","name","isCollapsedOnResponsive","displaySearchFilter","setDisplaySearchFilter","groupAfterDesktop","groupAfterMobile","filterValues","setAppliedFilters","moreFiltersMobileCollapsed","setMoreFiltersMobileCollapsed","moreFiltersDesktopCollapsed","setMoreFiltersDesktopCollapsed","doSubmit","newValues","newQuery","handleSubmit","shouldSearch","type","formClass","moreFiltersMobileWrapperClass","moreFiltersMobileTogglerClass","moreFiltersDesktopWrapperClass","moreFiltersDesktopTogglerClass","formId","handleReset","updateFilterValues","shouldSubmit","shouldGroup","e","preventDefault","slice","MOBILE_CONTENT","DESKTOP_CONTENT","DESKTOP_BUTTONS","MOBILE_BUTTONS","propTypes","object","isRequired","array","bool","string","func","number"],"sources":["../../../../src/components/SearchFilter/SearchFilter/SearchFilter.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport FiltersList from './FiltersList';\nimport {\n isDeviceDesktop,\n buildQuery,\n getInitialFilterValues,\n getResponsiveFilterClassnames\n} from '../helpers';\nimport CloseMobileForm from './CloseMobileForm';\nimport ResetDesktopForm from './ResetDesktopForm';\nimport MobileFormToolbar from './MobileFormToolbar';\nimport { SEARCH, REFINE, MORE_FILTERS_CLASSES } from '../constants';\n\nconst SearchFilter = ({\n searchFilterRef,\n data,\n filters,\n hasUrl,\n entity,\n handleSearch,\n name,\n isCollapsedOnResponsive,\n displaySearchFilter,\n setDisplaySearchFilter,\n groupAfterDesktop,\n groupAfterMobile,\n filterValues,\n setAppliedFilters\n}) => {\n const [moreFiltersMobileCollapsed, setMoreFiltersMobileCollapsed] = useState(true);\n const [moreFiltersDesktopCollapsed, setMoreFiltersDesktopCollapsed] = useState(true);\n\n const doSubmit = (newValues = filterValues) => {\n const newQuery = buildQuery(newValues, filters);\n handleSearch(newQuery);\n setMoreFiltersDesktopCollapsed(true);\n setMoreFiltersMobileCollapsed(true);\n };\n\n const handleSubmit = debounce(newValues => {\n doSubmit(newValues);\n }, 200);\n\n useEffect(\n () => {\n if (filterValues.shouldSearch) {\n handleSubmit(filterValues);\n setAppliedFilters({ type: 'resetSearch' });\n }\n },\n [filterValues, handleSubmit, setAppliedFilters]\n );\n\n const formClass = classnames('filter__form filter__form--initial', {\n 'filter__form--mobile': isCollapsedOnResponsive && displaySearchFilter,\n 'filter__form--collapsible': isCollapsedOnResponsive\n });\n\n const {\n moreFiltersMobileWrapperClass,\n moreFiltersMobileTogglerClass,\n moreFiltersDesktopWrapperClass,\n moreFiltersDesktopTogglerClass\n } = getResponsiveFilterClassnames(moreFiltersDesktopCollapsed, moreFiltersMobileCollapsed);\n\n const formId = `filter-${name}-form`;\n\n const handleReset = () => {\n const newValues = getInitialFilterValues(null, filters, {});\n setAppliedFilters({ newValues, type: 'reset' });\n doSubmit(newValues);\n };\n\n const updateFilterValues = (newValues, shouldSubmit) => {\n setAppliedFilters({ newValues, shouldSearch: shouldSubmit, type: 'update' });\n };\n\n const shouldGroup = !!(groupAfterDesktop || groupAfterMobile);\n const shouldSearch = !hasUrl;\n\n return (\n <>\n <form\n ref={searchFilterRef}\n className={formClass}\n data-testid={formId}\n id={formId}\n onSubmit={e => {\n e.preventDefault();\n doSubmit();\n }}>\n {displaySearchFilter && (\n <CloseMobileForm handleClose={() => setDisplaySearchFilter(false)} />\n )}\n\n <div className=\"filter filter--search-refine\">\n <ResetDesktopForm handleReset={handleReset} />\n\n <div className=\"filter__wrapper filter__wrapper--search-refine\">\n {!shouldGroup && (\n <FiltersList\n shouldSearch={shouldSearch}\n data={data}\n filters={filters}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n )}\n\n {shouldGroup && (\n <>\n <FiltersList\n shouldSearch={shouldSearch}\n data={data}\n filters={filters.slice(0, groupAfterMobile)}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n\n {!!groupAfterMobile && (\n <button\n data-testId=\"search-filter-mobile-toggler\"\n className={moreFiltersMobileTogglerClass}\n type=\"button\"\n onClick={() => setMoreFiltersMobileCollapsed(!moreFiltersMobileCollapsed)}>\n Filters\n </button>\n )}\n\n <div className={moreFiltersMobileWrapperClass}>\n <div className={MORE_FILTERS_CLASSES.MOBILE_CONTENT}>\n <FiltersList\n shouldSearch={shouldSearch && isDeviceDesktop()}\n data={data}\n filters={filters.slice(\n groupAfterMobile,\n groupAfterDesktop ? groupAfterDesktop - 1 : 0\n )}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n\n {!!groupAfterDesktop && (\n <button\n data-testId=\"search-filter-desktop-toggler\"\n className={moreFiltersDesktopTogglerClass}\n type=\"button\"\n onClick={() =>\n setMoreFiltersDesktopCollapsed(!moreFiltersDesktopCollapsed)\n }>\n More filters\n </button>\n )}\n\n <div className={moreFiltersDesktopWrapperClass}>\n <div className={MORE_FILTERS_CLASSES.DESKTOP_CONTENT}>\n <FiltersList\n shouldSearch={false}\n data={data}\n filters={filters.slice(groupAfterDesktop)}\n hasUrl={hasUrl}\n entity={entity}\n filterValues={filterValues}\n updateFilterValues={updateFilterValues}\n />\n </div>\n\n <div className={MORE_FILTERS_CLASSES.DESKTOP_BUTTONS}>\n <ResetDesktopForm handleReset={handleReset} />\n\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n </div>\n </div>\n </div>\n\n <div className={MORE_FILTERS_CLASSES.MOBILE_BUTTONS}>\n <ResetDesktopForm handleReset={handleReset} />\n\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n </div>\n </div>\n </>\n )}\n\n <br />\n\n {!displaySearchFilter && (\n <button className=\"button button--full-width\" type=\"submit\">\n {SEARCH}\n </button>\n )}\n </div>\n </div>\n\n {displaySearchFilter && <MobileFormToolbar formId={formId} handleReset={handleReset} />}\n </form>\n\n {isCollapsedOnResponsive &&\n !displaySearchFilter && (\n <div className=\"filter__refine filter__refine--mobile-close\" data-testid=\"refine-mobile\">\n <div role=\"button\" onClick={() => setDisplaySearchFilter(true)}>\n {REFINE}\n </div>\n </div>\n )}\n </>\n );\n};\n\nSearchFilter.propTypes = {\n data: PropTypes.object.isRequired,\n filters: PropTypes.array.isRequired,\n searchFilterRef: PropTypes.object.isRequired,\n hasUrl: PropTypes.bool.isRequired,\n entity: PropTypes.string.isRequired,\n handleSearch: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n displaySearchFilter: PropTypes.bool.isRequired,\n setDisplaySearchFilter: PropTypes.func.isRequired,\n isCollapsedOnResponsive: PropTypes.bool.isRequired,\n groupAfterDesktop: PropTypes.number.isRequired,\n groupAfterMobile: PropTypes.number.isRequired,\n filterValues: PropTypes.object.isRequired,\n setAppliedFilters: PropTypes.func.isRequired\n};\n\nexport default SearchFilter;\n"],"mappings":"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"}
@@ -1,4 +1,10 @@
1
- import React, { useState, useRef } from 'react';
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
+
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
+
7
+ import React, { useState, useRef, useReducer, useEffect } from 'react';
2
8
  import { useRouter } from 'next/router';
3
9
  import { useQuery } from '@apollo/client';
4
10
  import PropTypes from 'prop-types';
@@ -6,11 +12,39 @@ import { parseUrl, stringify } from 'query-string';
6
12
  import SearchFilter from './SearchFilter';
7
13
  import { withTitle } from '../../HOC';
8
14
  import { getSearchPublishedContent } from '../../application/query';
9
- import { buildNewQuery, buildRawQueryStringified, getInitialFilterValues } from './helpers';
15
+ import { buildNewQuery, buildRawQueryStringified, getInitialFilterValues, buildFiltersQuery } from './helpers';
10
16
  import { getEntityData } from '../../helpers';
11
17
  import { RAW_RESULTS, RANGE, CHECKBOX_SELECT } from './constants';
12
18
  import { SCROLL_OFFSET } from '../../constants';
13
19
 
20
+ const reducer = (state, action) => {
21
+ const {
22
+ newValues,
23
+ type,
24
+ shouldSearch = true
25
+ } = action;
26
+
27
+ switch (type) {
28
+ case 'update':
29
+ return _objectSpread(_objectSpread(_objectSpread({}, state), newValues), {}, {
30
+ shouldSearch
31
+ });
32
+
33
+ case 'resetSearch':
34
+ return _objectSpread(_objectSpread({}, state), {}, {
35
+ shouldSearch: false
36
+ });
37
+
38
+ case 'reset':
39
+ return _objectSpread(_objectSpread({}, newValues), {}, {
40
+ shouldSearch: false
41
+ });
42
+
43
+ default:
44
+ throw new Error();
45
+ }
46
+ };
47
+
14
48
  const SearchFilterContainer = ({
15
49
  entity,
16
50
  url,
@@ -18,13 +52,20 @@ const SearchFilterContainer = ({
18
52
  name,
19
53
  isCollapsedOnResponsive,
20
54
  groupAfterMobile,
21
- groupAfterDesktop
55
+ groupAfterDesktop,
56
+ filterBy,
57
+ filterByProperty,
58
+ shouldAddFilters
22
59
  }) => {
23
60
  const router = useRouter();
61
+ const {
62
+ asPath
63
+ } = router;
24
64
  const searchFilterRef = useRef(null);
25
65
  const [key, setKey] = useState(`filter-${name}`);
26
66
  const [displaySearchFilter, setDisplaySearchFilter] = useState(false);
27
- const hasUrl = !!url;
67
+ const [urlPath, setUrlPath] = useState(asPath); // used as asPath can take too long to update
68
+
28
69
  const {
29
70
  url: currentUrl,
30
71
  query: {
@@ -32,14 +73,18 @@ const SearchFilterContainer = ({
32
73
  sortby
33
74
  },
34
75
  query
35
- } = parseUrl(router.asPath);
76
+ } = parseUrl(urlPath);
77
+ const [filterValues, dispatch] = useReducer(reducer, getInitialFilterValues(null, filters, query));
78
+ useEffect(() => {
79
+ if (asPath) setUrlPath(asPath);
80
+ }, [asPath]);
81
+ const hasUrl = !!url;
36
82
  const sortValues = sort && sortby ? stringify({
37
83
  sort,
38
84
  sortby
39
85
  }) : '';
40
86
  const baseQuery = sortValues ? `${currentUrl}?${sortValues}` : currentUrl;
41
87
  const action = getSearchPublishedContent(RAW_RESULTS);
42
- let rawQueryStringified = '';
43
88
  const checkboxSelectValues = [];
44
89
  const rangeValues = [];
45
90
  filters.forEach(({
@@ -55,11 +100,11 @@ const SearchFilterContainer = ({
55
100
  const {
56
101
  docType
57
102
  } = getEntityData(entity);
58
- rawQueryStringified = buildRawQueryStringified(checkboxSelectValues, rangeValues, docType);
103
+ const filtersQuery = shouldAddFilters ? buildFiltersQuery(filterValues || query, filterBy, filterByProperty, rangeValues) : [];
104
+ const rawQueryStringified = buildRawQueryStringified(checkboxSelectValues, rangeValues, docType, filtersQuery);
59
105
  const {
60
106
  data,
61
- error,
62
- loading
107
+ error
63
108
  } = useQuery(action, {
64
109
  variables: {
65
110
  rawQueryStringified,
@@ -68,23 +113,31 @@ const SearchFilterContainer = ({
68
113
  // we only want aggs so limit=0 for no search results
69
114
  skip: !rawQueryStringified
70
115
  });
71
- if (loading) return null;
72
116
  if (error) return error.message;
73
117
  if (!filters.length) return null;
74
118
  const {
75
119
  searchPublishedContent: {
76
120
  rawResults: {
77
- aggregations: filterData = {}
121
+ aggregations: filterData
78
122
  } = {}
79
123
  } = {}
80
124
  } = data || {};
81
- const initialFilterValues = getInitialFilterValues(filterData, filters, query);
125
+
126
+ if (filterValues.dataNotSet && filterData) {
127
+ const initialFilterValues = getInitialFilterValues(filterData, filters, query);
128
+ dispatch({
129
+ newValues: initialFilterValues,
130
+ shouldSearch: false,
131
+ type: 'update'
132
+ });
133
+ }
82
134
 
83
135
  const handleSearch = newQuery => {
84
136
  setDisplaySearchFilter(false);
85
137
 
86
138
  if (!newQuery) {
87
139
  scrollToFirstList();
140
+ setUrlPath(baseQuery);
88
141
  return router.push('/Resolver', baseQuery, {
89
142
  shallow: !hasUrl,
90
143
  scroll: false
@@ -95,6 +148,7 @@ const SearchFilterContainer = ({
95
148
 
96
149
  const newUrl = buildNewQuery(url, currentUrl, newQuery, sortValues);
97
150
  scrollToFirstList();
151
+ setUrlPath(newUrl);
98
152
  return router.push('/Resolver', newUrl, {
99
153
  shallow: !hasUrl,
100
154
  scroll: false
@@ -115,15 +169,17 @@ const SearchFilterContainer = ({
115
169
  }
116
170
  };
117
171
 
172
+ if (!filterValues) return '';
118
173
  return /*#__PURE__*/React.createElement(SearchFilter, {
119
174
  key: key,
175
+ setAppliedFilters: dispatch,
120
176
  searchFilterRef: searchFilterRef,
121
177
  data: filterData,
122
178
  filters: filters,
123
179
  hasUrl: hasUrl,
124
180
  entity: entity,
125
181
  handleSearch: handleSearch,
126
- initialFilterValues: initialFilterValues,
182
+ filterValues: filterValues,
127
183
  name: name,
128
184
  isCollapsedOnResponsive: isCollapsedOnResponsive,
129
185
  displaySearchFilter: displaySearchFilter,
@@ -140,7 +196,10 @@ SearchFilterContainer.propTypes = {
140
196
  name: PropTypes.string.isRequired,
141
197
  isCollapsedOnResponsive: PropTypes.bool,
142
198
  groupAfterMobile: PropTypes.number,
143
- groupAfterDesktop: PropTypes.number
199
+ groupAfterDesktop: PropTypes.number,
200
+ filterBy: PropTypes.array,
201
+ filterByProperty: PropTypes.array,
202
+ shouldAddFilters: PropTypes.bool
144
203
  };
145
204
  SearchFilterContainer.defaultProps = {
146
205
  url: null,
@@ -148,7 +207,10 @@ SearchFilterContainer.defaultProps = {
148
207
  entity: '',
149
208
  isCollapsedOnResponsive: true,
150
209
  groupAfterMobile: 0,
151
- groupAfterDesktop: 0
210
+ groupAfterDesktop: 0,
211
+ filterBy: [],
212
+ filterByProperty: [],
213
+ shouldAddFilters: false
152
214
  };
153
215
  export default withTitle(SearchFilterContainer);
154
216
  //# sourceMappingURL=SearchFilterContainer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchFilterContainer.js","names":["React","useState","useRef","useRouter","useQuery","PropTypes","parseUrl","stringify","SearchFilter","withTitle","getSearchPublishedContent","buildNewQuery","buildRawQueryStringified","getInitialFilterValues","getEntityData","RAW_RESULTS","RANGE","CHECKBOX_SELECT","SCROLL_OFFSET","SearchFilterContainer","entity","url","filters","name","isCollapsedOnResponsive","groupAfterMobile","groupAfterDesktop","router","searchFilterRef","key","setKey","displaySearchFilter","setDisplaySearchFilter","hasUrl","currentUrl","query","sort","sortby","asPath","sortValues","baseQuery","action","rawQueryStringified","checkboxSelectValues","rangeValues","forEach","type","propsToDisplay","includes","push","docType","data","error","loading","variables","limit","skip","message","length","searchPublishedContent","rawResults","aggregations","filterData","initialFilterValues","handleSearch","newQuery","scrollToFirstList","shallow","scroll","then","Date","now","newUrl","list","document","getElementsByClassName","shouldScrollToFirstList","window","scrollTo","left","top","pageYOffset","getBoundingClientRect","propTypes","string","array","isRequired","bool","number","defaultProps"],"sources":["../../../src/components/SearchFilter/SearchFilterContainer.js"],"sourcesContent":["import React, { useState, useRef } from 'react';\nimport { useRouter } from 'next/router';\nimport { useQuery } from '@apollo/client';\nimport PropTypes from 'prop-types';\nimport { parseUrl, stringify } from 'query-string';\nimport SearchFilter from './SearchFilter';\nimport { withTitle } from '../../HOC';\nimport { getSearchPublishedContent } from '../../application/query';\nimport { buildNewQuery, buildRawQueryStringified, getInitialFilterValues } from './helpers';\nimport { getEntityData } from '../../helpers';\nimport { RAW_RESULTS, RANGE, CHECKBOX_SELECT } from './constants';\nimport { SCROLL_OFFSET } from '../../constants';\n\nconst SearchFilterContainer = ({\n entity,\n url,\n filters,\n name,\n isCollapsedOnResponsive,\n groupAfterMobile,\n groupAfterDesktop\n}) => {\n const router = useRouter();\n const searchFilterRef = useRef(null);\n const [key, setKey] = useState(`filter-${name}`);\n const [displaySearchFilter, setDisplaySearchFilter] = useState(false);\n const hasUrl = !!url;\n const {\n url: currentUrl,\n query: { sort, sortby },\n query\n } = parseUrl(router.asPath);\n const sortValues = sort && sortby ? stringify({ sort, sortby }) : '';\n const baseQuery = sortValues ? `${currentUrl}?${sortValues}` : currentUrl;\n\n const action = getSearchPublishedContent(RAW_RESULTS);\n\n let rawQueryStringified = '';\n\n const checkboxSelectValues = [];\n const rangeValues = [];\n\n filters.forEach(({ type, propsToDisplay }) => {\n if (CHECKBOX_SELECT.includes(type)) {\n checkboxSelectValues.push(propsToDisplay[0]);\n } else if (type === RANGE) {\n rangeValues.push(...propsToDisplay);\n }\n });\n\n const { docType } = getEntityData(entity);\n\n rawQueryStringified = buildRawQueryStringified(checkboxSelectValues, rangeValues, docType);\n\n const { data, error, loading } = useQuery(action, {\n variables: { rawQueryStringified, limit: 0 }, // we only want aggs so limit=0 for no search results\n skip: !rawQueryStringified\n });\n\n if (loading) return null;\n if (error) return error.message;\n if (!filters.length) return null;\n\n const { searchPublishedContent: { rawResults: { aggregations: filterData = {} } = {} } = {} } =\n data || {};\n\n const initialFilterValues = getInitialFilterValues(filterData, filters, query);\n\n const handleSearch = newQuery => {\n setDisplaySearchFilter(false);\n\n if (!newQuery) {\n scrollToFirstList();\n return router.push('/Resolver', baseQuery, { shallow: !hasUrl, scroll: false }).then(() => {\n setKey(`filter-${name}:${Date.now()}`); // remove after range component update\n });\n }\n const newUrl = buildNewQuery(url, currentUrl, newQuery, sortValues);\n scrollToFirstList();\n return router.push('/Resolver', newUrl, { shallow: !hasUrl, scroll: false });\n };\n\n const scrollToFirstList = () => {\n const [list] = document.getElementsByClassName('list-top');\n const shouldScrollToFirstList = !hasUrl && list;\n\n if (shouldScrollToFirstList) {\n window.scrollTo({\n left: 0,\n top: window.pageYOffset - SCROLL_OFFSET + list.getBoundingClientRect().top\n });\n } else {\n window.scrollTo(0, 0);\n }\n };\n\n return (\n <SearchFilter\n key={key}\n searchFilterRef={searchFilterRef}\n data={filterData}\n filters={filters}\n hasUrl={hasUrl}\n entity={entity}\n handleSearch={handleSearch}\n initialFilterValues={initialFilterValues}\n name={name}\n isCollapsedOnResponsive={isCollapsedOnResponsive}\n displaySearchFilter={displaySearchFilter}\n setDisplaySearchFilter={setDisplaySearchFilter}\n groupAfterMobile={groupAfterMobile}\n groupAfterDesktop={groupAfterDesktop}\n />\n );\n};\n\nSearchFilterContainer.propTypes = {\n entity: PropTypes.string,\n url: PropTypes.string,\n filters: PropTypes.array,\n name: PropTypes.string.isRequired,\n isCollapsedOnResponsive: PropTypes.bool,\n groupAfterMobile: PropTypes.number,\n groupAfterDesktop: PropTypes.number\n};\n\nSearchFilterContainer.defaultProps = {\n url: null,\n filters: [],\n entity: '',\n isCollapsedOnResponsive: true,\n groupAfterMobile: 0,\n groupAfterDesktop: 0\n};\n\nexport default withTitle(SearchFilterContainer);\n"],"mappings":"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"}
1
+ {"version":3,"file":"SearchFilterContainer.js","names":["React","useState","useRef","useReducer","useEffect","useRouter","useQuery","PropTypes","parseUrl","stringify","SearchFilter","withTitle","getSearchPublishedContent","buildNewQuery","buildRawQueryStringified","getInitialFilterValues","buildFiltersQuery","getEntityData","RAW_RESULTS","RANGE","CHECKBOX_SELECT","SCROLL_OFFSET","reducer","state","action","newValues","type","shouldSearch","Error","SearchFilterContainer","entity","url","filters","name","isCollapsedOnResponsive","groupAfterMobile","groupAfterDesktop","filterBy","filterByProperty","shouldAddFilters","router","asPath","searchFilterRef","key","setKey","displaySearchFilter","setDisplaySearchFilter","urlPath","setUrlPath","currentUrl","query","sort","sortby","filterValues","dispatch","hasUrl","sortValues","baseQuery","checkboxSelectValues","rangeValues","forEach","propsToDisplay","includes","push","docType","filtersQuery","rawQueryStringified","data","error","variables","limit","skip","message","length","searchPublishedContent","rawResults","aggregations","filterData","dataNotSet","initialFilterValues","handleSearch","newQuery","scrollToFirstList","shallow","scroll","then","Date","now","newUrl","list","document","getElementsByClassName","shouldScrollToFirstList","window","scrollTo","left","top","pageYOffset","getBoundingClientRect","propTypes","string","array","isRequired","bool","number","defaultProps"],"sources":["../../../src/components/SearchFilter/SearchFilterContainer.js"],"sourcesContent":["import React, { useState, useRef, useReducer, useEffect } from 'react';\nimport { useRouter } from 'next/router';\nimport { useQuery } from '@apollo/client';\nimport PropTypes from 'prop-types';\nimport { parseUrl, stringify } from 'query-string';\nimport SearchFilter from './SearchFilter';\nimport { withTitle } from '../../HOC';\nimport { getSearchPublishedContent } from '../../application/query';\nimport {\n buildNewQuery,\n buildRawQueryStringified,\n getInitialFilterValues,\n buildFiltersQuery\n} from './helpers';\nimport { getEntityData } from '../../helpers';\nimport { RAW_RESULTS, RANGE, CHECKBOX_SELECT } from './constants';\nimport { SCROLL_OFFSET } from '../../constants';\n\nconst reducer = (state, action) => {\n const { newValues, type, shouldSearch = true } = action;\n\n switch (type) {\n case 'update':\n return { ...state, ...newValues, shouldSearch };\n case 'resetSearch':\n return { ...state, shouldSearch: false };\n case 'reset':\n return { ...newValues, shouldSearch: false };\n default:\n throw new Error();\n }\n};\n\nconst SearchFilterContainer = ({\n entity,\n url,\n filters,\n name,\n isCollapsedOnResponsive,\n groupAfterMobile,\n groupAfterDesktop,\n filterBy,\n filterByProperty,\n shouldAddFilters\n}) => {\n const router = useRouter();\n const { asPath } = router;\n const searchFilterRef = useRef(null);\n const [key, setKey] = useState(`filter-${name}`);\n const [displaySearchFilter, setDisplaySearchFilter] = useState(false);\n const [urlPath, setUrlPath] = useState(asPath); // used as asPath can take too long to update\n const {\n url: currentUrl,\n query: { sort, sortby },\n query\n } = parseUrl(urlPath);\n const [filterValues, dispatch] = useReducer(\n reducer,\n getInitialFilterValues(null, filters, query)\n );\n\n useEffect(\n () => {\n if (asPath) setUrlPath(asPath);\n },\n [asPath]\n );\n\n const hasUrl = !!url;\n\n const sortValues = sort && sortby ? stringify({ sort, sortby }) : '';\n const baseQuery = sortValues ? `${currentUrl}?${sortValues}` : currentUrl;\n\n const action = getSearchPublishedContent(RAW_RESULTS);\n const checkboxSelectValues = [];\n const rangeValues = [];\n\n filters.forEach(({ type, propsToDisplay }) => {\n if (CHECKBOX_SELECT.includes(type)) {\n checkboxSelectValues.push(propsToDisplay[0]);\n } else if (type === RANGE) {\n rangeValues.push(...propsToDisplay);\n }\n });\n\n const { docType } = getEntityData(entity);\n\n const filtersQuery = shouldAddFilters\n ? buildFiltersQuery(filterValues || query, filterBy, filterByProperty, rangeValues)\n : [];\n\n const rawQueryStringified = buildRawQueryStringified(\n checkboxSelectValues,\n rangeValues,\n docType,\n filtersQuery\n );\n\n const { data, error } = useQuery(action, {\n variables: { rawQueryStringified, limit: 0 }, // we only want aggs so limit=0 for no search results\n skip: !rawQueryStringified\n });\n\n if (error) return error.message;\n if (!filters.length) return null;\n\n const { searchPublishedContent: { rawResults: { aggregations: filterData } = {} } = {} } =\n data || {};\n\n if (filterValues.dataNotSet && filterData) {\n const initialFilterValues = getInitialFilterValues(filterData, filters, query);\n dispatch({ newValues: initialFilterValues, shouldSearch: false, type: 'update' });\n }\n\n const handleSearch = newQuery => {\n setDisplaySearchFilter(false);\n\n if (!newQuery) {\n scrollToFirstList();\n setUrlPath(baseQuery);\n return router.push('/Resolver', baseQuery, { shallow: !hasUrl, scroll: false }).then(() => {\n setKey(`filter-${name}:${Date.now()}`); // remove after range component update\n });\n }\n const newUrl = buildNewQuery(url, currentUrl, newQuery, sortValues);\n scrollToFirstList();\n setUrlPath(newUrl);\n return router.push('/Resolver', newUrl, { shallow: !hasUrl, scroll: false });\n };\n\n const scrollToFirstList = () => {\n const [list] = document.getElementsByClassName('list-top');\n const shouldScrollToFirstList = !hasUrl && list;\n\n if (shouldScrollToFirstList) {\n window.scrollTo({\n left: 0,\n top: window.pageYOffset - SCROLL_OFFSET + list.getBoundingClientRect().top\n });\n } else {\n window.scrollTo(0, 0);\n }\n };\n if (!filterValues) return '';\n\n return (\n <SearchFilter\n key={key}\n setAppliedFilters={dispatch}\n searchFilterRef={searchFilterRef}\n data={filterData}\n filters={filters}\n hasUrl={hasUrl}\n entity={entity}\n handleSearch={handleSearch}\n filterValues={filterValues}\n name={name}\n isCollapsedOnResponsive={isCollapsedOnResponsive}\n displaySearchFilter={displaySearchFilter}\n setDisplaySearchFilter={setDisplaySearchFilter}\n groupAfterMobile={groupAfterMobile}\n groupAfterDesktop={groupAfterDesktop}\n />\n );\n};\n\nSearchFilterContainer.propTypes = {\n entity: PropTypes.string,\n url: PropTypes.string,\n filters: PropTypes.array,\n name: PropTypes.string.isRequired,\n isCollapsedOnResponsive: PropTypes.bool,\n groupAfterMobile: PropTypes.number,\n groupAfterDesktop: PropTypes.number,\n filterBy: PropTypes.array,\n filterByProperty: PropTypes.array,\n shouldAddFilters: PropTypes.bool\n};\n\nSearchFilterContainer.defaultProps = {\n url: null,\n filters: [],\n entity: '',\n isCollapsedOnResponsive: true,\n groupAfterMobile: 0,\n groupAfterDesktop: 0,\n filterBy: [],\n filterByProperty: [],\n shouldAddFilters: false\n};\n\nexport default withTitle(SearchFilterContainer);\n"],"mappings":"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"}
@@ -13,9 +13,11 @@ const Checkbox = ({
13
13
  updateFilterValues,
14
14
  filterValues,
15
15
  label,
16
- shouldSearch
16
+ shouldSearch,
17
+ displayFilterCount
17
18
  }) => {
18
19
  const [checkboxLimit, setCheckboxLimit] = useState(null);
20
+ if (!data[prop]) return null;
19
21
 
20
22
  const handleCheckboxOptions = () => {
21
23
  if (checkboxLimit[prop] === LIMIT_MIN) {
@@ -44,14 +46,19 @@ const Checkbox = ({
44
46
 
45
47
  const multiple = [];
46
48
  const sortedValues = data[prop].buckets.map(({
47
- key
48
- }) => key).filter(Boolean).sort();
49
+ key,
50
+ doc_count: count
51
+ }) => {
52
+ const optionLabel = displayFilterCount ? `${key} (${count})` : key;
53
+ return [key, optionLabel, !count];
54
+ }).filter(Boolean).sort();
49
55
  sortedValues.forEach((value, i) => i < checkboxLimit[prop] && multiple.push({
50
- label: upperFirst(value),
51
- value,
56
+ label: upperFirst(value[1]),
57
+ value: value[0],
52
58
  name: prop,
53
- checked: checkboxQueryParams.includes(value),
54
- id: value
59
+ checked: checkboxQueryParams.includes(value[0]),
60
+ id: value[0],
61
+ disabled: value[2]
55
62
  }));
56
63
  const shouldDisplayMore = !checkboxLimit || checkboxLimit[prop] === LIMIT_MIN;
57
64
  return /*#__PURE__*/React.createElement(React.Fragment, null, label ? /*#__PURE__*/React.createElement("p", null, label) : '', /*#__PURE__*/React.createElement(Checkboxes, {
@@ -86,11 +93,13 @@ Checkbox.propTypes = {
86
93
  filterValues: PropTypes.object.isRequired,
87
94
  updateFilterValues: PropTypes.func.isRequired,
88
95
  shouldSearch: PropTypes.bool,
89
- label: PropTypes.string
96
+ label: PropTypes.string,
97
+ displayFilterCount: PropTypes.bool
90
98
  };
91
99
  Checkbox.defaultProps = {
92
100
  shouldSearch: false,
93
- label: ''
101
+ label: '',
102
+ displayFilterCount: false
94
103
  };
95
104
  export default withTitle(Checkbox);
96
105
  //# sourceMappingURL=Checkbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","names":["React","useState","PropTypes","upperFirst","Checkboxes","FaChevronDown","FaChevronUp","withTitle","decodeValue","LIMIT_MIN","LIMIT_MAX","MORE","LESS","Checkbox","data","prop","updateFilterValues","filterValues","label","shouldSearch","checkboxLimit","setCheckboxLimit","handleCheckboxOptions","checkboxQueryParams","map","val","multiple","sortedValues","buckets","key","filter","Boolean","sort","forEach","value","i","push","name","checked","includes","id","shouldDisplayMore","eData","newCheckboxValues","length","propTypes","object","isRequired","string","func","bool","defaultProps"],"sources":["../../../../src/components/SearchFilter/components/Checkbox.js"],"sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport upperFirst from 'lodash.upperfirst';\nimport { Checkboxes } from '@blaze-react/checkboxes';\nimport { FaChevronDown, FaChevronUp } from 'react-icons/fa';\nimport { withTitle } from '../../../HOC';\nimport { decodeValue } from '../helpers';\nimport { LIMIT_MIN, LIMIT_MAX, MORE, LESS } from '../constants';\n\nconst Checkbox = ({ data, prop, updateFilterValues, filterValues, label, shouldSearch }) => {\n const [checkboxLimit, setCheckboxLimit] = useState(null);\n\n const handleCheckboxOptions = () => {\n if (checkboxLimit[prop] === LIMIT_MIN) {\n setCheckboxLimit({ [prop]: LIMIT_MAX });\n } else {\n setCheckboxLimit({ [prop]: LIMIT_MIN });\n }\n };\n\n if (!checkboxLimit) {\n setCheckboxLimit({ [prop]: LIMIT_MIN });\n }\n\n if (!checkboxLimit) return null;\n\n let checkboxQueryParams = [];\n\n if (filterValues && filterValues[prop]) {\n checkboxQueryParams =\n typeof filterValues[prop] === 'string'\n ? [decodeValue(filterValues[prop])]\n : filterValues[prop].map(val => decodeValue(val));\n }\n const multiple = [];\n\n const sortedValues = data[prop].buckets\n .map(({ key }) => key)\n .filter(Boolean)\n .sort();\n\n sortedValues.forEach(\n (value, i) =>\n i < checkboxLimit[prop] &&\n multiple.push({\n label: upperFirst(value),\n value,\n name: prop,\n checked: checkboxQueryParams.includes(value),\n id: value\n })\n );\n\n const shouldDisplayMore = !checkboxLimit || checkboxLimit[prop] === LIMIT_MIN;\n\n return (\n <>\n {label ? <p>{label}</p> : ''}\n <Checkboxes\n className=\"form-checkbox\"\n options={multiple}\n onChange={({ data: eData }) => {\n const newCheckboxValues = eData\n .filter(({ checked }) => checked)\n .map(({ value }) => value);\n updateFilterValues({ [prop]: newCheckboxValues }, shouldSearch);\n }}\n />\n {data[prop].buckets.length > LIMIT_MIN && (\n <div role=\"button\" className=\"see-more\" onClick={handleCheckboxOptions}>\n {shouldDisplayMore ? (\n <>\n <i>\n <FaChevronDown className=\"inline-icon\" />\n </i>\n {` See ${MORE}`}\n </>\n ) : (\n <>\n <i>\n <FaChevronUp className=\"inline-icon\" />\n </i>\n {` See ${LESS}`}\n </>\n )}\n </div>\n )}\n </>\n );\n};\n\nCheckbox.propTypes = {\n data: PropTypes.object.isRequired,\n prop: PropTypes.string.isRequired,\n filterValues: PropTypes.object.isRequired,\n updateFilterValues: PropTypes.func.isRequired,\n shouldSearch: PropTypes.bool,\n label: PropTypes.string\n};\n\nCheckbox.defaultProps = {\n shouldSearch: false,\n label: ''\n};\n\nexport default withTitle(Checkbox);\n"],"mappings":"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"}
1
+ {"version":3,"file":"Checkbox.js","names":["React","useState","PropTypes","upperFirst","Checkboxes","FaChevronDown","FaChevronUp","withTitle","decodeValue","LIMIT_MIN","LIMIT_MAX","MORE","LESS","Checkbox","data","prop","updateFilterValues","filterValues","label","shouldSearch","displayFilterCount","checkboxLimit","setCheckboxLimit","handleCheckboxOptions","checkboxQueryParams","map","val","multiple","sortedValues","buckets","key","doc_count","count","optionLabel","filter","Boolean","sort","forEach","value","i","push","name","checked","includes","id","disabled","shouldDisplayMore","eData","newCheckboxValues","length","propTypes","object","isRequired","string","func","bool","defaultProps"],"sources":["../../../../src/components/SearchFilter/components/Checkbox.js"],"sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport upperFirst from 'lodash.upperfirst';\nimport { Checkboxes } from '@blaze-react/checkboxes';\nimport { FaChevronDown, FaChevronUp } from 'react-icons/fa';\nimport { withTitle } from '../../../HOC';\nimport { decodeValue } from '../helpers';\nimport { LIMIT_MIN, LIMIT_MAX, MORE, LESS } from '../constants';\n\nconst Checkbox = ({\n data,\n prop,\n updateFilterValues,\n filterValues,\n label,\n shouldSearch,\n displayFilterCount\n}) => {\n const [checkboxLimit, setCheckboxLimit] = useState(null);\n if (!data[prop]) return null;\n\n const handleCheckboxOptions = () => {\n if (checkboxLimit[prop] === LIMIT_MIN) {\n setCheckboxLimit({ [prop]: LIMIT_MAX });\n } else {\n setCheckboxLimit({ [prop]: LIMIT_MIN });\n }\n };\n\n if (!checkboxLimit) {\n setCheckboxLimit({ [prop]: LIMIT_MIN });\n }\n\n if (!checkboxLimit) return null;\n\n let checkboxQueryParams = [];\n\n if (filterValues && filterValues[prop]) {\n checkboxQueryParams =\n typeof filterValues[prop] === 'string'\n ? [decodeValue(filterValues[prop])]\n : filterValues[prop].map(val => decodeValue(val));\n }\n const multiple = [];\n\n const sortedValues = data[prop].buckets\n .map(({ key, doc_count: count }) => {\n const optionLabel = displayFilterCount ? `${key} (${count})` : key;\n return [key, optionLabel, !count];\n })\n .filter(Boolean)\n .sort();\n\n sortedValues.forEach(\n (value, i) =>\n i < checkboxLimit[prop] &&\n multiple.push({\n label: upperFirst(value[1]),\n value: value[0],\n name: prop,\n checked: checkboxQueryParams.includes(value[0]),\n id: value[0],\n disabled: value[2]\n })\n );\n\n const shouldDisplayMore = !checkboxLimit || checkboxLimit[prop] === LIMIT_MIN;\n\n return (\n <>\n {label ? <p>{label}</p> : ''}\n <Checkboxes\n className=\"form-checkbox\"\n options={multiple}\n onChange={({ data: eData }) => {\n const newCheckboxValues = eData\n .filter(({ checked }) => checked)\n .map(({ value }) => value);\n updateFilterValues({ [prop]: newCheckboxValues }, shouldSearch);\n }}\n />\n {data[prop].buckets.length > LIMIT_MIN && (\n <div role=\"button\" className=\"see-more\" onClick={handleCheckboxOptions}>\n {shouldDisplayMore ? (\n <>\n <i>\n <FaChevronDown className=\"inline-icon\" />\n </i>\n {` See ${MORE}`}\n </>\n ) : (\n <>\n <i>\n <FaChevronUp className=\"inline-icon\" />\n </i>\n {` See ${LESS}`}\n </>\n )}\n </div>\n )}\n </>\n );\n};\n\nCheckbox.propTypes = {\n data: PropTypes.object.isRequired,\n prop: PropTypes.string.isRequired,\n filterValues: PropTypes.object.isRequired,\n updateFilterValues: PropTypes.func.isRequired,\n shouldSearch: PropTypes.bool,\n label: PropTypes.string,\n displayFilterCount: PropTypes.bool\n};\n\nCheckbox.defaultProps = {\n shouldSearch: false,\n label: '',\n displayFilterCount: false\n};\n\nexport default withTitle(Checkbox);\n"],"mappings":"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"}
@@ -13,7 +13,7 @@ import Select from '@blaze-react/select';
13
13
  import { parseUrl } from 'query-string';
14
14
  import { useGetSingleEntitySchema } from '../../../hooks';
15
15
  import { withTitle } from '../../../HOC';
16
- import { getSelectOptions, getIntersectedProp, getRangeValue } from '../helpers';
16
+ import { getSelectOptions, getIntersectedProp, getRangeValue, calculateMinMax } from '../helpers';
17
17
  import { decodeValue } from '../helpers/decode-encode';
18
18
 
19
19
  const Range = ({
@@ -21,6 +21,7 @@ const Range = ({
21
21
  label,
22
22
  entity,
23
23
  propsToDisplay,
24
+ dataAggregations,
24
25
  updateFilterValues,
25
26
  filterValues,
26
27
  shouldSearch
@@ -41,12 +42,23 @@ const Range = ({
41
42
  loading
42
43
  } = useGetSingleEntitySchema(entity, !hasMultipleOptions);
43
44
  if (loading || !rangeOption || !rangeValue) return '';
44
- const options = getSelectOptions(getEntitySchema, propsToDisplay);
45
+ const options = getSelectOptions(getEntitySchema, propsToDisplay); // get range from aggregations so it updates
46
+
45
47
  const {
46
48
  min,
47
49
  max
48
- } = rangeValue;
50
+ } = calculateMinMax(dataAggregations[rangeOption], rangeInterval);
49
51
  const shouldShowRange = rangeOption && min !== max;
52
+ const minValue = rangeValue.minValue < min ? min : rangeValue.minValue;
53
+ const maxValue = rangeValue.maxValue > max ? max : rangeValue.maxValue;
54
+
55
+ const valueToUse = _objectSpread(_objectSpread({}, rangeValue), {}, {
56
+ min,
57
+ max,
58
+ minValue,
59
+ maxValue
60
+ });
61
+
50
62
  const handleChange = debounce((option, value) => {
51
63
  updateFilterValues({
52
64
  [option]: _objectSpread(_objectSpread({}, value), {}, {
@@ -76,10 +88,10 @@ const Range = ({
76
88
  updateFilterValues(updatedOptions, false);
77
89
  }
78
90
  })), shouldShowRange && /*#__PURE__*/React.createElement(RangeFilter, {
79
- key: rangeOption,
91
+ key: `${rangeOption}-${minValue}-${maxValue}`,
80
92
  name: rangeOption,
81
93
  label: hasMultipleOptions ? '' : label,
82
- value: rangeValue,
94
+ value: valueToUse,
83
95
  id: rangeOption,
84
96
  onChange: ({
85
97
  value
@@ -96,7 +108,8 @@ Range.propTypes = {
96
108
  updateFilterValues: PropTypes.func.isRequired,
97
109
  shouldSearch: PropTypes.bool,
98
110
  rangeInterval: PropTypes.number,
99
- label: PropTypes.string
111
+ label: PropTypes.string,
112
+ dataAggregations: PropTypes.object.isRequired
100
113
  };
101
114
  Range.defaultProps = {
102
115
  shouldSearch: false,