@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,5 +1,5 @@
1
1
  import React from 'react';
2
- import { act, render } from '@testing-library/react';
2
+ import { act, render, fireEvent, waitFor } from '@testing-library/react';
3
3
  import '@testing-library/jest-dom/extend-expect';
4
4
  import Button from '../../../../src/components/Button';
5
5
 
@@ -20,6 +20,16 @@ const componentProps = {
20
20
  }
21
21
  };
22
22
 
23
+ const contentToShow = 'Content to show';
24
+
25
+ const seoVisivilityProps = {
26
+ text: 'show more',
27
+ afterClickText: 'show less',
28
+ url: '',
29
+ icon: '',
30
+ children: [<p>Content to show</p>]
31
+ };
32
+
23
33
  const renderComponent = async props => {
24
34
  let renderResults;
25
35
 
@@ -68,4 +78,48 @@ describe('Button component', () => {
68
78
  const { container } = await renderComponent(logoutButton);
69
79
  expect(container.innerHTML).toBe('');
70
80
  });
81
+
82
+ it('should toggle button text and render child components for SEO visibility ', async () => {
83
+ const props = {
84
+ ...componentProps,
85
+ ...seoVisivilityProps,
86
+ childSeoVisibility: true
87
+ };
88
+ const { container, getByText } = await renderComponent(props);
89
+
90
+ const element = await waitFor(() => getByText('show more'));
91
+ expect(container.innerHTML).toContain(contentToShow);
92
+
93
+ fireEvent(
94
+ element,
95
+ new MouseEvent('click', {
96
+ bubbles: true,
97
+ cancelable: true
98
+ })
99
+ );
100
+ expect(container.innerHTML).toContain('show less');
101
+ expect(container.innerHTML).toContain(contentToShow);
102
+ });
103
+
104
+ it('should toggle button text hide child components when SEO visibility is disabled', async () => {
105
+ const props = {
106
+ ...componentProps,
107
+ ...seoVisivilityProps,
108
+ childSeoVisibility: false
109
+ };
110
+ const { container, getByText } = await renderComponent(props);
111
+
112
+ const element = await waitFor(() => getByText('show more'));
113
+ expect(container.innerHTML).not.toContain(contentToShow);
114
+
115
+ fireEvent(
116
+ element,
117
+ new MouseEvent('click', {
118
+ bubbles: true,
119
+ cancelable: true
120
+ })
121
+ );
122
+ expect(container.innerHTML).toContain('show less');
123
+ expect(container.innerHTML).toContain(contentToShow);
124
+ });
71
125
  });
@@ -0,0 +1,175 @@
1
+ import React from 'react';
2
+ import '@testing-library/jest-dom/extend-expect';
3
+ import { render, waitFor, fireEvent } from '@testing-library/react';
4
+ import { MockedProvider } from '@apollo/client/testing';
5
+
6
+ import ItemListButton from '../../../../../src/components/ItemList/ItemListButton';
7
+ import {
8
+ getItemList,
9
+ addItemsToList,
10
+ removeItemsFromList
11
+ } from '../../../../../src/application/query';
12
+ import userItemListId from '../../../../../src/components/ItemList/hooks/use-item-list-id';
13
+ import setItemListId from '../../../../../src/components/ItemList/helpers/set-item-list-id';
14
+
15
+ jest.mock('../../../../../src/components/ItemList/hooks/use-item-list-id', () =>
16
+ jest.fn(() => ({ listId: 'LIST ID' }))
17
+ );
18
+
19
+ jest.mock('../../../../../src/components/ItemList/helpers/set-item-list-id', () => {
20
+ const originalModule = jest.requireActual(
21
+ '../../../../../src/components/ItemList/helpers/set-item-list-id'
22
+ );
23
+ return jest.fn((...args) => originalModule.default(...args));
24
+ });
25
+
26
+ const listId = 'LIST ID';
27
+ const missingListId = 'MISSING';
28
+ const emptyListId = 'EMPTY';
29
+ const listItem = { itemId: 'ID', itemEntity: 'ENTITY' };
30
+ const listName = 'list_name';
31
+ const props = {
32
+ listName,
33
+ modifier: 'modifier',
34
+ parent: {
35
+ itemId: 'ID',
36
+ itemEntity: 'ENTITY'
37
+ }
38
+ };
39
+
40
+ const mocks = [
41
+ {
42
+ request: {
43
+ query: getItemList,
44
+ variables: { id: listId }
45
+ },
46
+ result: {
47
+ data: {
48
+ getItemList: { id: listId, listItems: [listItem] }
49
+ }
50
+ }
51
+ },
52
+ {
53
+ request: {
54
+ query: getItemList,
55
+ variables: { id: missingListId }
56
+ },
57
+ result: {
58
+ data: {
59
+ getItemList: null
60
+ }
61
+ }
62
+ },
63
+ {
64
+ request: {
65
+ query: getItemList,
66
+ variables: { id: emptyListId }
67
+ },
68
+ result: {
69
+ data: {
70
+ getItemList: { id: emptyListId, listItems: [] }
71
+ }
72
+ }
73
+ },
74
+ {
75
+ request: {
76
+ query: addItemsToList,
77
+ variables: { name: listName, id: '', listItems: [props.parent] }
78
+ },
79
+ result: {
80
+ data: {
81
+ addItemsToList: {
82
+ result: { id: listId, listItems: [listItem] }
83
+ }
84
+ }
85
+ }
86
+ },
87
+ {
88
+ request: {
89
+ query: removeItemsFromList,
90
+ variables: { listId, listItems: [props.parent] }
91
+ },
92
+ result: {
93
+ data: {
94
+ removeItemsFromList: {
95
+ result: { id: listId, listItems: [listItem] }
96
+ }
97
+ }
98
+ }
99
+ }
100
+ ];
101
+
102
+ const selectedClasses = 'item-list-button item-list-button--selected modifier';
103
+ const unselectedClasses = 'item-list-button modifier';
104
+ const buttonRole = 'button';
105
+
106
+ describe('ItemListButton component', () => {
107
+ beforeEach(() => {
108
+ jest.clearAllMocks();
109
+ });
110
+
111
+ it('should render button marked selected when current parent is in the list', async () => {
112
+ const { asFragment, getByRole } = render(
113
+ <MockedProvider mocks={mocks}>
114
+ <ItemListButton {...props} />
115
+ </MockedProvider>
116
+ );
117
+
118
+ await waitFor(() => getByRole(buttonRole));
119
+ const button = getByRole(buttonRole);
120
+ expect(button).toHaveClass(selectedClasses);
121
+ expect(asFragment()).toMatchSnapshot();
122
+ });
123
+
124
+ it('should add and remove item to the list on click', async () => {
125
+ userItemListId.mockReturnValueOnce({ listId: '' }).mockReturnValueOnce({ listId });
126
+ const { asFragment, getByRole } = render(
127
+ <MockedProvider mocks={mocks}>
128
+ <ItemListButton {...props} />
129
+ </MockedProvider>
130
+ );
131
+
132
+ await waitFor(() => getByRole(buttonRole));
133
+ const button = getByRole(buttonRole);
134
+ fireEvent.click(button);
135
+ await waitFor(() => getByRole(buttonRole));
136
+ const selectedButton = getByRole(buttonRole);
137
+ expect(selectedButton).toHaveClass(selectedClasses);
138
+ expect(asFragment()).toMatchSnapshot();
139
+
140
+ fireEvent.click(selectedButton);
141
+ await waitFor(() => getByRole(buttonRole));
142
+ const removedButton = getByRole(buttonRole);
143
+ expect(removedButton).toHaveClass(unselectedClasses);
144
+ expect(asFragment()).toMatchSnapshot();
145
+ });
146
+
147
+ it('should set list id from mutation', async () => {
148
+ userItemListId.mockReturnValue({ listId: '' });
149
+ const { getByRole } = render(
150
+ <MockedProvider mocks={mocks}>
151
+ <ItemListButton {...props} />
152
+ </MockedProvider>
153
+ );
154
+
155
+ await waitFor(() => getByRole(buttonRole));
156
+ const button = getByRole(buttonRole);
157
+ fireEvent.click(button);
158
+ await waitFor(() => getByRole(buttonRole));
159
+ expect(setItemListId).toHaveBeenCalledWith(listName, listId);
160
+ });
161
+
162
+ it('should render button not marked selected when current parent is not in the list', async () => {
163
+ userItemListId.mockReturnValue({ listId: emptyListId });
164
+ const { asFragment, getByRole } = render(
165
+ <MockedProvider mocks={mocks}>
166
+ <ItemListButton {...props} />
167
+ </MockedProvider>
168
+ );
169
+
170
+ await waitFor(() => getByRole(buttonRole));
171
+ const button = getByRole(buttonRole);
172
+ expect(button).toHaveClass(unselectedClasses);
173
+ expect(asFragment()).toMatchSnapshot();
174
+ });
175
+ });
@@ -0,0 +1,65 @@
1
+ import React from 'react';
2
+ import '@testing-library/jest-dom/extend-expect';
3
+ import { render, waitFor, fireEvent } from '@testing-library/react';
4
+ import { MockedProvider } from '@apollo/client/testing';
5
+ import { useRouter } from 'next/router';
6
+ import ItemListCounter from '../../../../../src/components/ItemList/ItemListCounter';
7
+ import { getItemList } from '../../../../../src/application/query';
8
+
9
+ jest.mock('../../../../../src/components/ItemList/hooks/use-item-list-id', () =>
10
+ jest.fn(() => ({ listId: 'LIST ID' }))
11
+ );
12
+
13
+ jest.mock('next/router', () => {
14
+ const push = jest.fn();
15
+ return {
16
+ useRouter: jest.fn(() => ({ push }))
17
+ };
18
+ });
19
+
20
+ const listId = 'LIST ID';
21
+ const listItem = { itemId: 'ID', itemEntity: 'ENTITY' };
22
+ const listName = 'list_name';
23
+ const props = {
24
+ listName,
25
+ modifier: 'modifier',
26
+ url: '/list-url'
27
+ };
28
+
29
+ const mocks = [
30
+ {
31
+ request: {
32
+ query: getItemList,
33
+ variables: { id: listId }
34
+ },
35
+ result: {
36
+ data: {
37
+ getItemList: { id: listId, listItems: [listItem] }
38
+ }
39
+ }
40
+ }
41
+ ];
42
+
43
+ const buttonRole = 'button';
44
+ const router = useRouter();
45
+
46
+ describe('ItemListCounter component', () => {
47
+ beforeEach(() => {
48
+ jest.clearAllMocks();
49
+ });
50
+
51
+ it('should display listItem count and route to url', async () => {
52
+ const { asFragment, getByRole, getByText } = render(
53
+ <MockedProvider mocks={mocks}>
54
+ <ItemListCounter {...props} />
55
+ </MockedProvider>
56
+ );
57
+ await waitFor(() => getByText('1'));
58
+
59
+ const button = getByRole(buttonRole);
60
+ expect(asFragment()).toMatchSnapshot();
61
+
62
+ fireEvent.click(button);
63
+ expect(router.push).toHaveBeenCalledWith('/Resolver', `${props.url}?itemListId=${listId}`);
64
+ });
65
+ });
@@ -0,0 +1,164 @@
1
+ import React from 'react';
2
+ import '@testing-library/jest-dom/extend-expect';
3
+ import { render, waitFor, fireEvent } from '@testing-library/react';
4
+ import { MockedProvider } from '@apollo/client/testing';
5
+ import { useRouter } from 'next/router';
6
+ import ItemListNew from '../../../../../src/components/ItemList/ItemListNew';
7
+ import { getItemList } from '../../../../../src/application/query';
8
+ import userItemListId from '../../../../../src/components/ItemList/hooks/use-item-list-id';
9
+ import getItemListData from '../../../../../src/components/ItemList/helpers/get-item-list-data';
10
+ import setItemListId from '../../../../../src/components/ItemList/helpers/set-item-list-id';
11
+ import setParamAndRedirect from '../../../../../src/components/ItemList/helpers/set-param-and-redirect';
12
+ import { LIST_ITEM_QUERY_PARAM } from '../../../../../src/components/ItemList/constants';
13
+
14
+ jest.mock('next/router', () => {
15
+ const useRouterMock = jest.fn(() => ({ asPath: '/test' }));
16
+ return { useRouter: useRouterMock };
17
+ });
18
+
19
+ jest.mock('../../../../../src/components/ItemList/hooks/use-item-list-id', () =>
20
+ jest.fn(() => ({ listId: 'LIST ID' }))
21
+ );
22
+
23
+ jest.mock('../../../../../src/components/ItemList/helpers/set-item-list-id', () => {
24
+ const originalModule = jest.requireActual(
25
+ '../../../../../src/components/ItemList/helpers/set-item-list-id'
26
+ );
27
+ return jest.fn((...args) => originalModule.default(...args));
28
+ });
29
+
30
+ jest.mock('../../../../../src/components/ItemList/helpers/set-param-and-redirect', () => jest.fn());
31
+
32
+ jest.mock('../../../../../src/components/ItemList/helpers/get-item-list-data', () => {
33
+ const originalModule = jest.requireActual(
34
+ '../../../../../src/components/ItemList/helpers/get-item-list-data'
35
+ );
36
+ return jest.fn((...args) => originalModule.default(...args));
37
+ });
38
+
39
+ const listId = 'LIST ID';
40
+ const missingListId = 'MISSING';
41
+ const emptyListId = 'EMPTY';
42
+ const queryListId = 'QUERY-LIST-ID';
43
+ const queryListItem = { itemId: 'ID FROM QUERY', itemEntity: 'ENTITY' };
44
+ const mocks = [
45
+ {
46
+ request: {
47
+ query: getItemList,
48
+ variables: { id: listId }
49
+ },
50
+ result: {
51
+ data: {
52
+ getItemList: { id: listId, listItems: [{ itemId: 'ID', itemEntity: 'ENTITY' }] }
53
+ }
54
+ }
55
+ },
56
+ {
57
+ request: {
58
+ query: getItemList,
59
+ variables: { id: missingListId }
60
+ },
61
+ result: {
62
+ data: {
63
+ getItemList: null
64
+ }
65
+ }
66
+ },
67
+ {
68
+ request: {
69
+ query: getItemList,
70
+ variables: { id: emptyListId }
71
+ },
72
+ result: {
73
+ data: {
74
+ getItemList: { id: emptyListId, listItems: [] }
75
+ }
76
+ }
77
+ },
78
+ {
79
+ request: {
80
+ query: getItemList,
81
+ variables: { id: queryListId }
82
+ },
83
+ result: {
84
+ data: {
85
+ getItemList: { id: queryListId, listItems: [queryListItem] }
86
+ }
87
+ }
88
+ }
89
+ ];
90
+
91
+ describe('ItemListNew component', () => {
92
+ const props = {
93
+ listName: 'list_name',
94
+ modifier: 'button',
95
+ text: 'Clear list'
96
+ };
97
+
98
+ beforeEach(() => {
99
+ jest.clearAllMocks();
100
+ });
101
+
102
+ it('should match snapshot and render without throwing an error', async () => {
103
+ const { asFragment, getByText } = render(
104
+ <MockedProvider mocks={mocks}>
105
+ <ItemListNew {...props} />
106
+ </MockedProvider>
107
+ );
108
+ await waitFor(() => expect(getByText(props.text)).toBeInTheDocument());
109
+ expect(asFragment()).toMatchSnapshot();
110
+ });
111
+
112
+ it('should not render if list not found', async () => {
113
+ userItemListId.mockReturnValue({ listId: missingListId });
114
+ const { asFragment } = render(
115
+ <MockedProvider mocks={mocks}>
116
+ <ItemListNew {...props} listName={missingListId} />
117
+ </MockedProvider>
118
+ );
119
+
120
+ await waitFor(() => expect(getItemListData).toHaveBeenCalled());
121
+ expect(asFragment()).toMatchSnapshot();
122
+ });
123
+
124
+ it('should render using listId from query', async () => {
125
+ userItemListId.mockReturnValue({ listId });
126
+ const queryStringPath = { asPath: `/test?${LIST_ITEM_QUERY_PARAM}=${queryListId}` };
127
+ useRouter.mockReturnValueOnce(queryStringPath).mockReturnValueOnce(queryStringPath);
128
+ const { asFragment } = render(
129
+ <MockedProvider mocks={mocks}>
130
+ <ItemListNew {...props} listName={queryListId} />
131
+ </MockedProvider>
132
+ );
133
+
134
+ await waitFor(() => expect(getItemListData).toHaveBeenCalled());
135
+ expect(getItemListData).toHaveBeenCalledWith({
136
+ getItemList: { id: queryListId, listItems: [queryListItem] }
137
+ });
138
+ expect(asFragment()).toMatchSnapshot();
139
+ });
140
+
141
+ it('should not render if list has not items', async () => {
142
+ userItemListId.mockReturnValue({ listId: emptyListId });
143
+ const { asFragment } = render(
144
+ <MockedProvider mocks={mocks}>
145
+ <ItemListNew {...props} listName={emptyListId} />
146
+ </MockedProvider>
147
+ );
148
+ await waitFor(() => expect(getItemListData).toHaveBeenCalled());
149
+ expect(asFragment()).toMatchSnapshot();
150
+ });
151
+
152
+ it('should clear id and redirect onclick', async () => {
153
+ userItemListId.mockReturnValue({ listId });
154
+ const { getByText } = render(
155
+ <MockedProvider mocks={mocks}>
156
+ <ItemListNew {...props} />
157
+ </MockedProvider>
158
+ );
159
+ await waitFor(() => expect(getByText(props.text)).toBeInTheDocument());
160
+ fireEvent.click(getByText(props.text));
161
+ expect(setItemListId).toHaveBeenCalledWith(props.listName, '');
162
+ expect(setParamAndRedirect).toHaveBeenCalled();
163
+ });
164
+ });
@@ -0,0 +1,107 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`ItemListButton component should add and remove item to the list on click 1`] = `
4
+ <DocumentFragment>
5
+ <div
6
+ class="item-list-button item-list-button--selected modifier"
7
+ role="button"
8
+ >
9
+ <i>
10
+ <svg
11
+ fill="currentColor"
12
+ height="1em"
13
+ stroke="currentColor"
14
+ stroke-width="0"
15
+ viewBox="0 0 16 16"
16
+ width="1em"
17
+ xmlns="http://www.w3.org/2000/svg"
18
+ >
19
+ <path
20
+ d="M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5zm8.854-9.646a.5.5 0 0 0-.708-.708L7.5 7.793 6.354 6.646a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0l3-3z"
21
+ fill-rule="evenodd"
22
+ />
23
+ </svg>
24
+ </i>
25
+ </div>
26
+ </DocumentFragment>
27
+ `;
28
+
29
+ exports[`ItemListButton component should add and remove item to the list on click 2`] = `
30
+ <DocumentFragment>
31
+ <div
32
+ class="item-list-button item-list-button--selected modifier"
33
+ role="button"
34
+ >
35
+ <i>
36
+ <svg
37
+ fill="currentColor"
38
+ height="1em"
39
+ stroke="currentColor"
40
+ stroke-width="0"
41
+ viewBox="0 0 16 16"
42
+ width="1em"
43
+ xmlns="http://www.w3.org/2000/svg"
44
+ >
45
+ <path
46
+ d="M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5zm8.854-9.646a.5.5 0 0 0-.708-.708L7.5 7.793 6.354 6.646a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0l3-3z"
47
+ fill-rule="evenodd"
48
+ />
49
+ </svg>
50
+ </i>
51
+ </div>
52
+ </DocumentFragment>
53
+ `;
54
+
55
+ exports[`ItemListButton component should render button marked selected when current parent is in the list 1`] = `
56
+ <DocumentFragment>
57
+ <div
58
+ class="item-list-button item-list-button--selected modifier"
59
+ role="button"
60
+ >
61
+ <i>
62
+ <svg
63
+ fill="currentColor"
64
+ height="1em"
65
+ stroke="currentColor"
66
+ stroke-width="0"
67
+ viewBox="0 0 16 16"
68
+ width="1em"
69
+ xmlns="http://www.w3.org/2000/svg"
70
+ >
71
+ <path
72
+ d="M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5zm8.854-9.646a.5.5 0 0 0-.708-.708L7.5 7.793 6.354 6.646a.5.5 0 1 0-.708.708l1.5 1.5a.5.5 0 0 0 .708 0l3-3z"
73
+ fill-rule="evenodd"
74
+ />
75
+ </svg>
76
+ </i>
77
+ </div>
78
+ </DocumentFragment>
79
+ `;
80
+
81
+ exports[`ItemListButton component should render button not marked selected when current parent is not in the list 1`] = `
82
+ <DocumentFragment>
83
+ <div
84
+ class="item-list-button modifier"
85
+ role="button"
86
+ >
87
+ <i>
88
+ <svg
89
+ fill="currentColor"
90
+ height="1em"
91
+ stroke="currentColor"
92
+ stroke-width="0"
93
+ viewBox="0 0 16 16"
94
+ width="1em"
95
+ xmlns="http://www.w3.org/2000/svg"
96
+ >
97
+ <path
98
+ d="M7.84 4.1a.178.178 0 0 1 .32 0l.634 1.285a.178.178 0 0 0 .134.098l1.42.206c.145.021.204.2.098.303L9.42 6.993a.178.178 0 0 0-.051.158l.242 1.414a.178.178 0 0 1-.258.187l-1.27-.668a.178.178 0 0 0-.165 0l-1.27.668a.178.178 0 0 1-.257-.187l.242-1.414a.178.178 0 0 0-.05-.158l-1.03-1.001a.178.178 0 0 1 .098-.303l1.42-.206a.178.178 0 0 0 .134-.098L7.84 4.1z"
99
+ />
100
+ <path
101
+ d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.777.416L8 13.101l-5.223 2.815A.5.5 0 0 1 2 15.5V2zm2-1a1 1 0 0 0-1 1v12.566l4.723-2.482a.5.5 0 0 1 .554 0L13 14.566V2a1 1 0 0 0-1-1H4z"
102
+ />
103
+ </svg>
104
+ </i>
105
+ </div>
106
+ </DocumentFragment>
107
+ `;
@@ -0,0 +1,31 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`ItemListCounter component should display listItem count and route to url 1`] = `
4
+ <DocumentFragment>
5
+ <div
6
+ class="item-list-counter modifier"
7
+ role="button"
8
+ type="button"
9
+ >
10
+ <svg
11
+ fill="currentColor"
12
+ height="1em"
13
+ stroke="currentColor"
14
+ stroke-width="0"
15
+ viewBox="0 0 16 16"
16
+ width="1em"
17
+ xmlns="http://www.w3.org/2000/svg"
18
+ >
19
+ <path
20
+ d="M2 15.5V2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v13.5a.5.5 0 0 1-.74.439L8 13.069l-5.26 2.87A.5.5 0 0 1 2 15.5zM8.16 4.1a.178.178 0 0 0-.32 0l-.634 1.285a.178.178 0 0 1-.134.098l-1.42.206a.178.178 0 0 0-.098.303L6.58 6.993c.042.041.061.1.051.158L6.39 8.565a.178.178 0 0 0 .258.187l1.27-.668a.178.178 0 0 1 .165 0l1.27.668a.178.178 0 0 0 .257-.187L9.368 7.15a.178.178 0 0 1 .05-.158l1.028-1.001a.178.178 0 0 0-.098-.303l-1.42-.206a.178.178 0 0 1-.134-.098L8.16 4.1z"
21
+ fill-rule="evenodd"
22
+ />
23
+ </svg>
24
+ <span
25
+ class="item-list-counter__badge"
26
+ >
27
+ 1
28
+ </span>
29
+ </div>
30
+ </DocumentFragment>
31
+ `;
@@ -0,0 +1,27 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`ItemListNew component should match snapshot and render without throwing an error 1`] = `
4
+ <DocumentFragment>
5
+ <button
6
+ class="item-list-new button"
7
+ type="button"
8
+ >
9
+ Clear list
10
+ </button>
11
+ </DocumentFragment>
12
+ `;
13
+
14
+ exports[`ItemListNew component should not render if list has not items 1`] = `<DocumentFragment />`;
15
+
16
+ exports[`ItemListNew component should not render if list not found 1`] = `<DocumentFragment />`;
17
+
18
+ exports[`ItemListNew component should render using listId from query 1`] = `
19
+ <DocumentFragment>
20
+ <button
21
+ class="item-list-new button"
22
+ type="button"
23
+ >
24
+ Clear list
25
+ </button>
26
+ </DocumentFragment>
27
+ `;
@@ -0,0 +1,28 @@
1
+ import '@testing-library/jest-dom/extend-expect';
2
+ import getItemListData from '../../../../../../src/components/ItemList/helpers/get-item-list-data';
3
+
4
+ describe('getItemListData helper', () => {
5
+ const noData = getItemListData();
6
+ const noGetItemList = getItemListData({});
7
+ const noListItems = getItemListData({ getItemList: {} });
8
+ const withCorrectData = getItemListData({
9
+ getItemList: { listItems: ['one item', 'two items'] }
10
+ });
11
+
12
+ it('should always return an array', () => {
13
+ expect(Array.isArray(noData)).toBeTruthy();
14
+ expect(Array.isArray(noGetItemList)).toBeTruthy();
15
+ expect(Array.isArray(noListItems)).toBeTruthy();
16
+ expect(Array.isArray(withCorrectData)).toBeTruthy();
17
+ });
18
+
19
+ it('should return an empty array if data passed doesnt have expected props', () => {
20
+ expect(noData).toEqual([]);
21
+ expect(noGetItemList).toEqual([]);
22
+ expect(noListItems).toEqual([]);
23
+ });
24
+
25
+ it('should return listData otherwise', () => {
26
+ expect(withCorrectData).toEqual(['one item', 'two items']);
27
+ });
28
+ });
@@ -0,0 +1,20 @@
1
+ import '@testing-library/jest-dom/extend-expect';
2
+ import getitemListId from '../../../../../../src/components/ItemList/helpers/get-item-list-id';
3
+
4
+ describe('getitemListId helper', () => {
5
+ const noValues = getitemListId();
6
+ const noListId = getitemListId('listName');
7
+ const noListName = getitemListId(null, '123asd');
8
+
9
+ it('should return empty string if no values are passed', () => {
10
+ expect(noValues).toEqual('');
11
+ });
12
+
13
+ it('should return listId if passed', () => {
14
+ expect(noListName).toEqual('123asd');
15
+ });
16
+
17
+ it('should return local value if no id is passed but name is', () => {
18
+ expect(noListId).toEqual('');
19
+ });
20
+ });