@blaze-cms/react-page-builder 0.124.0-alpha.25 → 0.124.0-alpha.29

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 (237) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/lib/BannerContext/index.js.map +1 -1
  3. package/lib/HOC/withInfiniteScroll.js.map +1 -1
  4. package/lib/HOC/withTitle.js.map +1 -1
  5. package/lib/PBContext/index.js.map +1 -1
  6. package/lib/application/query/index.js.map +1 -1
  7. package/lib/components/BackToTop/BackToTop.js.map +1 -1
  8. package/lib/components/Banner/AdSlotRender.js.map +1 -1
  9. package/lib/components/Banner/Banner.js.map +1 -1
  10. package/lib/components/Banner/BannerRender.js.map +1 -1
  11. package/lib/components/Banner/helpers.js.map +1 -1
  12. package/lib/components/Banner/index.js.map +1 -1
  13. package/lib/components/BlazeLink.js.map +1 -1
  14. package/lib/components/Breadcrumb/Breadcrumb.js.map +1 -1
  15. package/lib/components/Button.js.map +1 -1
  16. package/lib/components/Card/Card.js.map +1 -1
  17. package/lib/components/Card/CardContainer.js.map +1 -1
  18. package/lib/components/Card/CardFactory.js.map +1 -1
  19. package/lib/components/Card/CardRender.js.map +1 -1
  20. package/lib/components/Card/helpers/filter-query-setup.js.map +1 -1
  21. package/lib/components/Card/helpers/filters-setup.js.map +1 -1
  22. package/lib/components/Card/helpers/get-dynamic-grid-classes.js.map +1 -1
  23. package/lib/components/Carousel/Carousel.js.map +1 -1
  24. package/lib/components/Carousel/CarouselImage/CarouselImage.js.map +1 -1
  25. package/lib/components/Carousel/CarouselRender/CarouselRender.js.map +1 -1
  26. package/lib/components/CarouselWrapper.js.map +1 -1
  27. package/lib/components/ClickWrapper.js.map +1 -1
  28. package/lib/components/Code/Code.js.map +1 -1
  29. package/lib/components/Code/ScriptTag.js.map +1 -1
  30. package/lib/components/Code/helpers/wrap-script-tags.js.map +1 -1
  31. package/lib/components/DataSummary/DataSummaryFactory.js.map +1 -1
  32. package/lib/components/DataSummary/DataSummaryRender.js.map +1 -1
  33. package/lib/components/DataSummary/DataSummaryTypes/HeadingLargeSummary/HeadingLargeSummary.js.map +1 -1
  34. package/lib/components/DataSummary/DataSummaryTypes/HeadingLargeSummary/HeadingLargeSummaryContent.js.map +1 -1
  35. package/lib/components/DataSummary/DataSummaryTypes/ItemDetailsSummary/ItemDetailsSummary.js.map +1 -1
  36. package/lib/components/DataSummary/DataSummaryTypes/ItemDetailsSummary/ItemDetailsSummaryContent.js.map +1 -1
  37. package/lib/components/DataSummary/DataSummaryTypes/LargeSummary/LargeSummary.js.map +1 -1
  38. package/lib/components/DataSummary/DataSummaryTypes/LargeSummary/LargeSummaryContent.js.map +1 -1
  39. package/lib/components/DataSummary/DataSummaryTypes/ListSummary/ListSummary.js.map +1 -1
  40. package/lib/components/DataSummary/DataSummaryTypes/ListSummary/ListSummaryContent.js.map +1 -1
  41. package/lib/components/DataSummary/DataSummaryTypes/TextSummary/TextSummary.js.map +1 -1
  42. package/lib/components/DataSummary/DataSummaryTypes/TextSummary/TextSummaryContent.js.map +1 -1
  43. package/lib/components/DataSummary/DataSummaryTypes/index.js.map +1 -1
  44. package/lib/components/DataSummary/helpers/build-loop-props-content.js.map +1 -1
  45. package/lib/components/DataSummary/helpers/build-props-to-display-with-content.js.map +1 -1
  46. package/lib/components/DataSummary/helpers/get-data-summary-query.js.map +1 -1
  47. package/lib/components/DataSummary/helpers/get-link-based-on-value.js.map +1 -1
  48. package/lib/components/DataSummary/helpers/get-prop-value.js.map +1 -1
  49. package/lib/components/DataSummary/helpers/get-value-from-array.js.map +1 -1
  50. package/lib/components/DataSummary/helpers/strip-summary-props-content.js.map +1 -1
  51. package/lib/components/EmailConfirm/EmailConfirm.js.map +1 -1
  52. package/lib/components/Image/GlobalLightbox/GlobalLightbox.js.map +1 -1
  53. package/lib/components/Image/GlobalLightbox/NavButton.js.map +1 -1
  54. package/lib/components/Image/GlobalLightbox/index.js.map +1 -1
  55. package/lib/components/Image/Image.js.map +1 -1
  56. package/lib/components/Image/ImageDetails.js.map +1 -1
  57. package/lib/components/Image/ImageFactory.js.map +1 -1
  58. package/lib/components/Image/ImageRender.js.map +1 -1
  59. package/lib/components/Image/Lightbox/Lightbox.js.map +1 -1
  60. package/lib/components/ItemListButton/ItemListButton.js.map +1 -1
  61. package/lib/components/ItemListCounter/ItemListCounter.js.map +1 -1
  62. package/lib/components/Layout/Layout.js.map +1 -1
  63. package/lib/components/Layout/helpers/check-if-row-has-columns.js.map +1 -1
  64. package/lib/components/LazyImage/LazyImage.js.map +1 -1
  65. package/lib/components/LazyImage/index.js.map +1 -1
  66. package/lib/components/List/ListBuilder.js.map +1 -1
  67. package/lib/components/List/ListFactory.js.map +1 -1
  68. package/lib/components/List/ListRender.js.map +1 -1
  69. package/lib/components/List/components/Cards/CardRenderWithInfiniteScroll.js.map +1 -1
  70. package/lib/components/List/components/Cards/CardsRender.js.map +1 -1
  71. package/lib/components/List/components/Cards/CardsRenderItem.js.map +1 -1
  72. package/lib/components/List/components/Cards/CardsRenderWrapper.js.map +1 -1
  73. package/lib/components/List/components/Full/FullRender.js.map +1 -1
  74. package/lib/components/List/components/Full/FullRenderItem.js.map +1 -1
  75. package/lib/components/List/components/Full/FullRenderWithInfiniteScroll.js.map +1 -1
  76. package/lib/components/List/components/Header/ListHeader.js.map +1 -1
  77. package/lib/components/List/components/Pagination/Classic.js.map +1 -1
  78. package/lib/components/List/components/Pagination/ListPagination.js.map +1 -1
  79. package/lib/components/List/components/Pagination/LoadMore.js.map +1 -1
  80. package/lib/components/List/helpers/build-az-aggregations.js.map +1 -1
  81. package/lib/components/List/helpers/build-az-url.js.map +1 -1
  82. package/lib/components/List/helpers/build-pagination-items.js.map +1 -1
  83. package/lib/components/List/helpers/build-pagination-url.js.map +1 -1
  84. package/lib/components/Login/LoggedInMessage.js.map +1 -1
  85. package/lib/components/Login/Login.js.map +1 -1
  86. package/lib/components/Login/LoginForm.js.map +1 -1
  87. package/lib/components/Menu/Menu.js +3 -1
  88. package/lib/components/Menu/Menu.js.map +1 -1
  89. package/lib/components/MenuItem/MenuItem.js.map +1 -1
  90. package/lib/components/Modal/Modal.js.map +1 -1
  91. package/lib/components/PasswordReset/PasswordReset.js.map +1 -1
  92. package/lib/components/PasswordReset/helpers/validatePassword.js.map +1 -1
  93. package/lib/components/PasswordResetRequest/PasswordResetRequest.js.map +1 -1
  94. package/lib/components/SearchContent/SearchContent.js +15 -7
  95. package/lib/components/SearchContent/SearchContent.js.map +1 -1
  96. package/lib/components/SearchContent/SearchContentItems.js +5 -2
  97. package/lib/components/SearchContent/SearchContentItems.js.map +1 -1
  98. package/lib/components/SearchFilter/SearchFilter/CloseMobileForm.js.map +1 -1
  99. package/lib/components/SearchFilter/SearchFilter/FiltersList.js +2 -4
  100. package/lib/components/SearchFilter/SearchFilter/FiltersList.js.map +1 -1
  101. package/lib/components/SearchFilter/SearchFilter/MobileFormToolbar.js.map +1 -1
  102. package/lib/components/SearchFilter/SearchFilter/ResetDesktopForm.js.map +1 -1
  103. package/lib/components/SearchFilter/SearchFilter/SearchFilter.js +16 -44
  104. package/lib/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
  105. package/lib/components/SearchFilter/SearchFilterContainer.js +86 -21
  106. package/lib/components/SearchFilter/SearchFilterContainer.js.map +1 -1
  107. package/lib/components/SearchFilter/components/Checkbox.js +17 -9
  108. package/lib/components/SearchFilter/components/Checkbox.js.map +1 -1
  109. package/lib/components/SearchFilter/components/Range.js.map +1 -1
  110. package/lib/components/SearchFilter/components/Select.js +27 -11
  111. package/lib/components/SearchFilter/components/Select.js.map +1 -1
  112. package/lib/components/SearchFilter/components/TextSearch.js +1 -5
  113. package/lib/components/SearchFilter/components/TextSearch.js.map +1 -1
  114. package/lib/components/SearchFilter/helpers/build-filters-query.js +87 -0
  115. package/lib/components/SearchFilter/helpers/build-filters-query.js.map +1 -0
  116. package/lib/components/SearchFilter/helpers/build-query.js.map +1 -1
  117. package/lib/components/SearchFilter/helpers/build-raw-query-stringified.js +2 -1
  118. package/lib/components/SearchFilter/helpers/build-raw-query-stringified.js.map +1 -1
  119. package/lib/components/SearchFilter/helpers/calculate-min-max.js.map +1 -1
  120. package/lib/components/SearchFilter/helpers/check-if-range-updated.js.map +1 -1
  121. package/lib/components/SearchFilter/helpers/get-filter-value-from-query.js.map +1 -1
  122. package/lib/components/SearchFilter/helpers/get-initial-filter-values.js.map +1 -1
  123. package/lib/components/SearchFilter/helpers/get-intersected-prop.js.map +1 -1
  124. package/lib/components/SearchFilter/helpers/get-range-value.js.map +1 -1
  125. package/lib/components/SearchFilter/helpers/get-responsive-filter-classnames.js.map +1 -1
  126. package/lib/components/SearchFilter/helpers/get-select-options.js.map +1 -1
  127. package/lib/components/SearchFilter/helpers/index.js +8 -0
  128. package/lib/components/SearchFilter/helpers/index.js.map +1 -1
  129. package/lib/components/SearchFilterSort/SearchFilterSort.js.map +1 -1
  130. package/lib/components/SearchFilterSort/helpers/handle-sort-update.js.map +1 -1
  131. package/lib/components/SearchFilterSort/helpers/update-sort.js.map +1 -1
  132. package/lib/components/SocialFollow/SFItem.js.map +1 -1
  133. package/lib/components/SocialFollow/SocialFollow.js.map +1 -1
  134. package/lib/components/SocialFollow/SocialFollowRender.js.map +1 -1
  135. package/lib/components/SubMenu/SubMenu.js.map +1 -1
  136. package/lib/components/TextBlock/TextBlockRender.js.map +1 -1
  137. package/lib/components/TextBlock/index.js.map +1 -1
  138. package/lib/components/Video/Video.js.map +1 -1
  139. package/lib/components/Video/VideoModal.js.map +1 -1
  140. package/lib/components/Video/VideoRender.js.map +1 -1
  141. package/lib/components/Video/providers/Default.js.map +1 -1
  142. package/lib/components/Video/providers/JWPlayer/JWPlayerProvider.js.map +1 -1
  143. package/lib/components/Video/providers/YouTube/YouTubeProvider.js.map +1 -1
  144. package/lib/components/Video/providers/YouTube/YoutubeEmbeded.js.map +1 -1
  145. package/lib/components/Video/providers/get-provider.js.map +1 -1
  146. package/lib/components/Wrapper.js.map +1 -1
  147. package/lib/components/index.js.map +1 -1
  148. package/lib/helpers/build-inherited-filters.js.map +1 -1
  149. package/lib/helpers/build-raw-query-base.js.map +1 -1
  150. package/lib/helpers/build-raw-query.js.map +1 -1
  151. package/lib/helpers/build-search-values-checkbox-select.js.map +1 -1
  152. package/lib/helpers/check-props-to-use.js.map +1 -1
  153. package/lib/helpers/get-entities-with-banner.js.map +1 -1
  154. package/lib/helpers/get-entity-data.js.map +1 -1
  155. package/lib/helpers/get-entity-render-props.js.map +1 -1
  156. package/lib/helpers/get-filter-props.js.map +1 -1
  157. package/lib/helpers/get-generic-props.js.map +1 -1
  158. package/lib/helpers/get-generic-render-variables.js.map +1 -1
  159. package/lib/helpers/get-image-ids.js.map +1 -1
  160. package/lib/helpers/get-item-list-ids.js.map +1 -1
  161. package/lib/helpers/get-parsed-prop-values.js.map +1 -1
  162. package/lib/helpers/get-prop-values.js.map +1 -1
  163. package/lib/helpers/get-query-filters.js.map +1 -1
  164. package/lib/helpers/get-query-props.js.map +1 -1
  165. package/lib/helpers/get-updated-filter-by.js.map +1 -1
  166. package/lib/helpers/inject-banner.js.map +1 -1
  167. package/lib/helpers/inject-banners-to-entities.js.map +1 -1
  168. package/lib/helpers/inject-multiple-banners/get-banners-for-entities/get-banners-for-entities.js.map +1 -1
  169. package/lib/helpers/inject-multiple-banners/get-banners-for-nodes/get-banners-for-nodes.js.map +1 -1
  170. package/lib/helpers/inject-multiple-banners/get-banners-for-nodes/helpers/group-node-entities.js.map +1 -1
  171. package/lib/helpers/inject-multiple-banners/inject-multiple-banners.js.map +1 -1
  172. package/lib/helpers/is-filter-entitys-id.js.map +1 -1
  173. package/lib/helpers/parse-TextBlock.js.map +1 -1
  174. package/lib/helpers/parse-props-to-display.js.map +1 -1
  175. package/lib/helpers/render-children.js.map +1 -1
  176. package/lib/helpers/sort-response-data.js.map +1 -1
  177. package/lib/hooks/helpers/RenderComponent.js.map +1 -1
  178. package/lib/hooks/helpers/buildPBComponents.js.map +1 -1
  179. package/lib/hooks/helpers/getComponent.js.map +1 -1
  180. package/lib/hooks/helpers/inject-element-banners.js.map +1 -1
  181. package/lib/hooks/helpers/inject-textblock-banners.js.map +1 -1
  182. package/lib/hooks/helpers/insert-banners.js.map +1 -1
  183. package/lib/hooks/helpers/update-targetings.js.map +1 -1
  184. package/lib/hooks/use-banner-insertion.js.map +1 -1
  185. package/lib/hooks/use-check-mobile-screen.js.map +1 -1
  186. package/lib/hooks/use-get-entity-schema.js.map +1 -1
  187. package/lib/hooks/use-get-entity-schemas-as-obj.js.map +1 -1
  188. package/lib/hooks/use-get-image-id-from-relation.js.map +1 -1
  189. package/lib/hooks/use-get-images.js.map +1 -1
  190. package/lib/hooks/use-get-single-entity-schema.js.map +1 -1
  191. package/lib/hooks/use-page-builder.js.map +1 -1
  192. package/lib/utils/get-class-modifiers.js.map +1 -1
  193. package/lib/utils/get-image-data.js.map +1 -1
  194. package/lib-es/components/Menu/Menu.js +3 -1
  195. package/lib-es/components/Menu/Menu.js.map +1 -1
  196. package/lib-es/components/SearchContent/SearchContent.js +9 -5
  197. package/lib-es/components/SearchContent/SearchContent.js.map +1 -1
  198. package/lib-es/components/SearchContent/SearchContentItems.js +4 -2
  199. package/lib-es/components/SearchContent/SearchContentItems.js.map +1 -1
  200. package/lib-es/components/SearchFilter/SearchFilter/FiltersList.js +2 -4
  201. package/lib-es/components/SearchFilter/SearchFilter/FiltersList.js.map +1 -1
  202. package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js +13 -38
  203. package/lib-es/components/SearchFilter/SearchFilter/SearchFilter.js.map +1 -1
  204. package/lib-es/components/SearchFilter/SearchFilterContainer.js +69 -14
  205. package/lib-es/components/SearchFilter/SearchFilterContainer.js.map +1 -1
  206. package/lib-es/components/SearchFilter/components/Checkbox.js +17 -9
  207. package/lib-es/components/SearchFilter/components/Checkbox.js.map +1 -1
  208. package/lib-es/components/SearchFilter/components/Select.js +23 -8
  209. package/lib-es/components/SearchFilter/components/Select.js.map +1 -1
  210. package/lib-es/components/SearchFilter/components/TextSearch.js +1 -5
  211. package/lib-es/components/SearchFilter/components/TextSearch.js.map +1 -1
  212. package/lib-es/components/SearchFilter/helpers/build-filters-query.js +54 -0
  213. package/lib-es/components/SearchFilter/helpers/build-filters-query.js.map +1 -0
  214. package/lib-es/components/SearchFilter/helpers/build-raw-query-stringified.js +2 -1
  215. package/lib-es/components/SearchFilter/helpers/build-raw-query-stringified.js.map +1 -1
  216. package/lib-es/components/SearchFilter/helpers/get-initial-filter-values.js.map +1 -1
  217. package/lib-es/components/SearchFilter/helpers/index.js +2 -1
  218. package/lib-es/components/SearchFilter/helpers/index.js.map +1 -1
  219. package/package.json +3 -2
  220. package/src/components/Menu/Menu.js +5 -2
  221. package/src/components/SearchContent/SearchContent.js +9 -5
  222. package/src/components/SearchContent/SearchContentItems.js +7 -1
  223. package/src/components/SearchFilter/SearchFilter/FiltersList.js +30 -37
  224. package/src/components/SearchFilter/SearchFilter/SearchFilter.js +11 -25
  225. package/src/components/SearchFilter/SearchFilterContainer.js +56 -15
  226. package/src/components/SearchFilter/components/Checkbox.js +22 -8
  227. package/src/components/SearchFilter/components/Select.js +18 -11
  228. package/src/components/SearchFilter/components/TextSearch.js +1 -3
  229. package/src/components/SearchFilter/helpers/build-filters-query.js +40 -0
  230. package/src/components/SearchFilter/helpers/build-raw-query-stringified.js +2 -1
  231. package/src/components/SearchFilter/helpers/get-initial-filter-values.js +1 -0
  232. package/src/components/SearchFilter/helpers/index.js +3 -1
  233. package/tests/unit/src/components/Menu/__snapshots__/Menu.test.js.snap +12 -11
  234. package/tests/unit/src/components/SearchFilter/SearchFilter/SearchFilter.test.js +3 -6
  235. package/tests/unit/src/components/SearchFilter/__snapshots__/SearchFilterContainer.test.js.snap +1 -7
  236. package/tests/unit/src/components/SearchFilter/components/__snapshots__/Checkbox.test.js.snap +2 -0
  237. package/tests/unit/src/components/SearchFilter/components/__snapshots__/Select.test.js.snap +4 -0
@@ -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\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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"}
@@ -11,11 +11,22 @@ const SelectFilter = ({
11
11
  updateFilterValues,
12
12
  filterValues,
13
13
  shouldSearch,
14
- displayLabelAsPlaceholder
14
+ displayLabelAsPlaceholder,
15
+ displayFilterCount
15
16
  }) => {
16
17
  const filterValue = filterValues[prop] || '';
17
- const options = data[prop].buckets.map(bucket => bucket.key).filter(Boolean).sort();
18
- const optionsJoined = options;
18
+ const disabledOptions = [];
19
+ const {
20
+ buckets = []
21
+ } = data[prop] || {};
22
+ const options = buckets.map(({
23
+ key,
24
+ doc_count: count
25
+ }) => {
26
+ if (!count) disabledOptions.push(key);
27
+ const optionLabel = displayFilterCount ? `${key} (${count})` : key;
28
+ return [key, optionLabel];
29
+ }).filter(Boolean).sort();
19
30
  const labelText = label || prop;
20
31
  let labelToUse = labelText;
21
32
  let defaultTextValue = DEFAULT_OPTION;
@@ -30,7 +41,7 @@ const SelectFilter = ({
30
41
  value: filterValue,
31
42
  id: prop,
32
43
  "data-testid": `filter-${prop}`,
33
- options: optionsJoined,
44
+ options: options,
34
45
  defaultTextValue: defaultTextValue,
35
46
  onChange: ({
36
47
  value
@@ -40,23 +51,27 @@ const SelectFilter = ({
40
51
  updateFilterValues({
41
52
  [prop]: valueToUse
42
53
  }, shouldSearch);
43
- }
54
+ },
55
+ disabled: disabledOptions
44
56
  });
45
57
  };
46
58
 
47
59
  SelectFilter.propTypes = {
48
60
  data: PropTypes.object.isRequired,
49
61
  prop: PropTypes.string.isRequired,
50
- filterValues: PropTypes.object.isRequired,
62
+ filterValues: PropTypes.object,
51
63
  updateFilterValues: PropTypes.func.isRequired,
52
64
  shouldSearch: PropTypes.bool,
53
65
  label: PropTypes.string,
54
- displayLabelAsPlaceholder: PropTypes.bool
66
+ displayLabelAsPlaceholder: PropTypes.bool,
67
+ displayFilterCount: PropTypes.bool
55
68
  };
56
69
  SelectFilter.defaultProps = {
70
+ filterValues: {},
57
71
  shouldSearch: false,
58
72
  label: '',
59
- displayLabelAsPlaceholder: false
73
+ displayLabelAsPlaceholder: false,
74
+ displayFilterCount: false
60
75
  };
61
76
  export default withTitle(SelectFilter);
62
77
  //# sourceMappingURL=Select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","names":["React","PropTypes","Select","withTitle","DEFAULT_OPTION","SelectFilter","data","label","prop","updateFilterValues","filterValues","shouldSearch","displayLabelAsPlaceholder","filterValue","options","buckets","map","bucket","key","filter","Boolean","sort","optionsJoined","labelText","labelToUse","defaultTextValue","value","valueToUse","propTypes","object","isRequired","string","func","bool","defaultProps"],"sources":["../../../../src/components/SearchFilter/components/Select.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Select from '@blaze-react/select';\nimport { withTitle } from '../../../HOC';\nimport { DEFAULT_OPTION } from '../constants';\n\nconst SelectFilter = ({\n data,\n label,\n prop,\n updateFilterValues,\n filterValues,\n shouldSearch,\n displayLabelAsPlaceholder\n}) => {\n const filterValue = filterValues[prop] || '';\n\n const options = data[prop].buckets\n .map(bucket => bucket.key)\n .filter(Boolean)\n .sort();\n\n const optionsJoined = options;\n\n const labelText = label || prop;\n let labelToUse = labelText;\n let defaultTextValue = DEFAULT_OPTION;\n if (displayLabelAsPlaceholder) {\n defaultTextValue = labelToUse;\n labelToUse = null;\n }\n\n return (\n <Select\n label={labelToUse}\n value={filterValue}\n id={prop}\n data-testid={`filter-${prop}`}\n options={optionsJoined}\n defaultTextValue={defaultTextValue}\n onChange={({ value }) => {\n let valueToUse = value;\n if (value === defaultTextValue) valueToUse = '';\n\n updateFilterValues({ [prop]: valueToUse }, shouldSearch);\n }}\n />\n );\n};\n\nSelectFilter.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 displayLabelAsPlaceholder: PropTypes.bool\n};\n\nSelectFilter.defaultProps = {\n shouldSearch: false,\n label: '',\n displayLabelAsPlaceholder: false\n};\n\nexport default withTitle(SelectFilter);\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,MAAP,MAAmB,qBAAnB;AACA,SAASC,SAAT,QAA0B,cAA1B;AACA,SAASC,cAAT,QAA+B,cAA/B;;AAEA,MAAMC,YAAY,GAAG,CAAC;EACpBC,IADoB;EAEpBC,KAFoB;EAGpBC,IAHoB;EAIpBC,kBAJoB;EAKpBC,YALoB;EAMpBC,YANoB;EAOpBC;AAPoB,CAAD,KAQf;EACJ,MAAMC,WAAW,GAAGH,YAAY,CAACF,IAAD,CAAZ,IAAsB,EAA1C;EAEA,MAAMM,OAAO,GAAGR,IAAI,CAACE,IAAD,CAAJ,CAAWO,OAAX,CACbC,GADa,CACTC,MAAM,IAAIA,MAAM,CAACC,GADR,EAEbC,MAFa,CAENC,OAFM,EAGbC,IAHa,EAAhB;EAKA,MAAMC,aAAa,GAAGR,OAAtB;EAEA,MAAMS,SAAS,GAAGhB,KAAK,IAAIC,IAA3B;EACA,IAAIgB,UAAU,GAAGD,SAAjB;EACA,IAAIE,gBAAgB,GAAGrB,cAAvB;;EACA,IAAIQ,yBAAJ,EAA+B;IAC7Ba,gBAAgB,GAAGD,UAAnB;IACAA,UAAU,GAAG,IAAb;EACD;;EAED,oBACE,oBAAC,MAAD;IACE,KAAK,EAAEA,UADT;IAEE,KAAK,EAAEX,WAFT;IAGE,EAAE,EAAEL,IAHN;IAIE,eAAc,UAASA,IAAK,EAJ9B;IAKE,OAAO,EAAEc,aALX;IAME,gBAAgB,EAAEG,gBANpB;IAOE,QAAQ,EAAE,CAAC;MAAEC;IAAF,CAAD,KAAe;MACvB,IAAIC,UAAU,GAAGD,KAAjB;MACA,IAAIA,KAAK,KAAKD,gBAAd,EAAgCE,UAAU,GAAG,EAAb;MAEhClB,kBAAkB,CAAC;QAAE,CAACD,IAAD,GAAQmB;MAAV,CAAD,EAAyBhB,YAAzB,CAAlB;IACD;EAZH,EADF;AAgBD,CA1CD;;AA4CAN,YAAY,CAACuB,SAAb,GAAyB;EACvBtB,IAAI,EAAEL,SAAS,CAAC4B,MAAV,CAAiBC,UADA;EAEvBtB,IAAI,EAAEP,SAAS,CAAC8B,MAAV,CAAiBD,UAFA;EAGvBpB,YAAY,EAAET,SAAS,CAAC4B,MAAV,CAAiBC,UAHR;EAIvBrB,kBAAkB,EAAER,SAAS,CAAC+B,IAAV,CAAeF,UAJZ;EAKvBnB,YAAY,EAAEV,SAAS,CAACgC,IALD;EAMvB1B,KAAK,EAAEN,SAAS,CAAC8B,MANM;EAOvBnB,yBAAyB,EAAEX,SAAS,CAACgC;AAPd,CAAzB;AAUA5B,YAAY,CAAC6B,YAAb,GAA4B;EAC1BvB,YAAY,EAAE,KADY;EAE1BJ,KAAK,EAAE,EAFmB;EAG1BK,yBAAyB,EAAE;AAHD,CAA5B;AAMA,eAAeT,SAAS,CAACE,YAAD,CAAxB"}
1
+ {"version":3,"file":"Select.js","names":["React","PropTypes","Select","withTitle","DEFAULT_OPTION","SelectFilter","data","label","prop","updateFilterValues","filterValues","shouldSearch","displayLabelAsPlaceholder","displayFilterCount","filterValue","disabledOptions","buckets","options","map","key","doc_count","count","push","optionLabel","filter","Boolean","sort","labelText","labelToUse","defaultTextValue","value","valueToUse","propTypes","object","isRequired","string","func","bool","defaultProps"],"sources":["../../../../src/components/SearchFilter/components/Select.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Select from '@blaze-react/select';\nimport { withTitle } from '../../../HOC';\nimport { DEFAULT_OPTION } from '../constants';\n\nconst SelectFilter = ({\n data,\n label,\n prop,\n updateFilterValues,\n filterValues,\n shouldSearch,\n displayLabelAsPlaceholder,\n displayFilterCount\n}) => {\n const filterValue = filterValues[prop] || '';\n const disabledOptions = [];\n const { buckets = [] } = data[prop] || {};\n const options = buckets\n .map(({ key, doc_count: count }) => {\n if (!count) disabledOptions.push(key);\n const optionLabel = displayFilterCount ? `${key} (${count})` : key;\n return [key, optionLabel];\n })\n .filter(Boolean)\n .sort();\n\n const labelText = label || prop;\n let labelToUse = labelText;\n let defaultTextValue = DEFAULT_OPTION;\n if (displayLabelAsPlaceholder) {\n defaultTextValue = labelToUse;\n labelToUse = null;\n }\n\n return (\n <Select\n label={labelToUse}\n value={filterValue}\n id={prop}\n data-testid={`filter-${prop}`}\n options={options}\n defaultTextValue={defaultTextValue}\n onChange={({ value }) => {\n let valueToUse = value;\n if (value === defaultTextValue) valueToUse = '';\n updateFilterValues({ [prop]: valueToUse }, shouldSearch);\n }}\n disabled={disabledOptions}\n />\n );\n};\n\nSelectFilter.propTypes = {\n data: PropTypes.object.isRequired,\n prop: PropTypes.string.isRequired,\n filterValues: PropTypes.object,\n updateFilterValues: PropTypes.func.isRequired,\n shouldSearch: PropTypes.bool,\n label: PropTypes.string,\n displayLabelAsPlaceholder: PropTypes.bool,\n displayFilterCount: PropTypes.bool\n};\n\nSelectFilter.defaultProps = {\n filterValues: {},\n shouldSearch: false,\n label: '',\n displayLabelAsPlaceholder: false,\n displayFilterCount: false\n};\n\nexport default withTitle(SelectFilter);\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,MAAP,MAAmB,qBAAnB;AACA,SAASC,SAAT,QAA0B,cAA1B;AACA,SAASC,cAAT,QAA+B,cAA/B;;AAEA,MAAMC,YAAY,GAAG,CAAC;EACpBC,IADoB;EAEpBC,KAFoB;EAGpBC,IAHoB;EAIpBC,kBAJoB;EAKpBC,YALoB;EAMpBC,YANoB;EAOpBC,yBAPoB;EAQpBC;AARoB,CAAD,KASf;EACJ,MAAMC,WAAW,GAAGJ,YAAY,CAACF,IAAD,CAAZ,IAAsB,EAA1C;EACA,MAAMO,eAAe,GAAG,EAAxB;EACA,MAAM;IAAEC,OAAO,GAAG;EAAZ,IAAmBV,IAAI,CAACE,IAAD,CAAJ,IAAc,EAAvC;EACA,MAAMS,OAAO,GAAGD,OAAO,CACpBE,GADa,CACT,CAAC;IAAEC,GAAF;IAAOC,SAAS,EAAEC;EAAlB,CAAD,KAA+B;IAClC,IAAI,CAACA,KAAL,EAAYN,eAAe,CAACO,IAAhB,CAAqBH,GAArB;IACZ,MAAMI,WAAW,GAAGV,kBAAkB,GAAI,GAAEM,GAAI,KAAIE,KAAM,GAApB,GAAyBF,GAA/D;IACA,OAAO,CAACA,GAAD,EAAMI,WAAN,CAAP;EACD,CALa,EAMbC,MANa,CAMNC,OANM,EAObC,IAPa,EAAhB;EASA,MAAMC,SAAS,GAAGpB,KAAK,IAAIC,IAA3B;EACA,IAAIoB,UAAU,GAAGD,SAAjB;EACA,IAAIE,gBAAgB,GAAGzB,cAAvB;;EACA,IAAIQ,yBAAJ,EAA+B;IAC7BiB,gBAAgB,GAAGD,UAAnB;IACAA,UAAU,GAAG,IAAb;EACD;;EAED,oBACE,oBAAC,MAAD;IACE,KAAK,EAAEA,UADT;IAEE,KAAK,EAAEd,WAFT;IAGE,EAAE,EAAEN,IAHN;IAIE,eAAc,UAASA,IAAK,EAJ9B;IAKE,OAAO,EAAES,OALX;IAME,gBAAgB,EAAEY,gBANpB;IAOE,QAAQ,EAAE,CAAC;MAAEC;IAAF,CAAD,KAAe;MACvB,IAAIC,UAAU,GAAGD,KAAjB;MACA,IAAIA,KAAK,KAAKD,gBAAd,EAAgCE,UAAU,GAAG,EAAb;MAChCtB,kBAAkB,CAAC;QAAE,CAACD,IAAD,GAAQuB;MAAV,CAAD,EAAyBpB,YAAzB,CAAlB;IACD,CAXH;IAYE,QAAQ,EAAEI;EAZZ,EADF;AAgBD,CA9CD;;AAgDAV,YAAY,CAAC2B,SAAb,GAAyB;EACvB1B,IAAI,EAAEL,SAAS,CAACgC,MAAV,CAAiBC,UADA;EAEvB1B,IAAI,EAAEP,SAAS,CAACkC,MAAV,CAAiBD,UAFA;EAGvBxB,YAAY,EAAET,SAAS,CAACgC,MAHD;EAIvBxB,kBAAkB,EAAER,SAAS,CAACmC,IAAV,CAAeF,UAJZ;EAKvBvB,YAAY,EAAEV,SAAS,CAACoC,IALD;EAMvB9B,KAAK,EAAEN,SAAS,CAACkC,MANM;EAOvBvB,yBAAyB,EAAEX,SAAS,CAACoC,IAPd;EAQvBxB,kBAAkB,EAAEZ,SAAS,CAACoC;AARP,CAAzB;AAWAhC,YAAY,CAACiC,YAAb,GAA4B;EAC1B5B,YAAY,EAAE,EADY;EAE1BC,YAAY,EAAE,KAFY;EAG1BJ,KAAK,EAAE,EAHmB;EAI1BK,yBAAyB,EAAE,KAJD;EAK1BC,kBAAkB,EAAE;AALM,CAA5B;AAQA,eAAeV,SAAS,CAACE,YAAD,CAAxB"}
@@ -8,9 +8,7 @@ import { SEARCH_TERM } from '../constants';
8
8
  const TextSearch = ({
9
9
  label,
10
10
  searchValue,
11
- updateFilterValues,
12
- handleSubmit,
13
- filterValues
11
+ updateFilterValues
14
12
  }) => /*#__PURE__*/React.createElement("div", {
15
13
  className: "search"
16
14
  }, /*#__PURE__*/React.createElement("div", {
@@ -40,10 +38,8 @@ const TextSearch = ({
40
38
  }, /*#__PURE__*/React.createElement("i", null, /*#__PURE__*/React.createElement(MdSearch, null)))));
41
39
 
42
40
  TextSearch.propTypes = {
43
- filterValues: PropTypes.object.isRequired,
44
41
  searchValue: PropTypes.string.isRequired,
45
42
  updateFilterValues: PropTypes.func.isRequired,
46
- handleSubmit: PropTypes.func.isRequired,
47
43
  label: PropTypes.string
48
44
  };
49
45
  TextSearch.defaultProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"TextSearch.js","names":["React","PropTypes","Input","MdSearch","withTitle","SEARCH_TERM","TextSearch","label","searchValue","updateFilterValues","handleSubmit","filterValues","value","eValue","e","preventDefault","propTypes","object","isRequired","string","func","defaultProps"],"sources":["../../../../src/components/SearchFilter/components/TextSearch.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Input from '@blaze-react/input';\nimport { MdSearch } from 'react-icons/md';\nimport { withTitle } from '../../../HOC';\nimport { SEARCH_TERM } from '../constants';\n\nconst TextSearch = ({ label, searchValue, updateFilterValues, handleSubmit, filterValues }) => (\n <div className=\"search\">\n <div className=\"search__wrapper\">\n <div className=\"form-field form-field--input form-field--search\">\n <Input\n id={SEARCH_TERM}\n value={searchValue}\n placeholder={label || 'Search'}\n onChange={({ value: eValue }) => {\n updateFilterValues({ [SEARCH_TERM]: eValue }, false);\n }}\n />\n </div>\n <button\n type=\"button\"\n className=\"icon-button icon-button--search\"\n onClick={e => {\n e.preventDefault();\n updateFilterValues({ [SEARCH_TERM]: searchValue }, true);\n }}>\n <i>\n <MdSearch />\n </i>\n </button>\n </div>\n </div>\n);\n\nTextSearch.propTypes = {\n filterValues: PropTypes.object.isRequired,\n searchValue: PropTypes.string.isRequired,\n updateFilterValues: PropTypes.func.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n label: PropTypes.string\n};\n\nTextSearch.defaultProps = {\n label: ''\n};\n\nexport default withTitle(TextSearch);\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,KAAP,MAAkB,oBAAlB;AACA,SAASC,QAAT,QAAyB,gBAAzB;AACA,SAASC,SAAT,QAA0B,cAA1B;AACA,SAASC,WAAT,QAA4B,cAA5B;;AAEA,MAAMC,UAAU,GAAG,CAAC;EAAEC,KAAF;EAASC,WAAT;EAAsBC,kBAAtB;EAA0CC,YAA1C;EAAwDC;AAAxD,CAAD,kBACjB;EAAK,SAAS,EAAC;AAAf,gBACE;EAAK,SAAS,EAAC;AAAf,gBACE;EAAK,SAAS,EAAC;AAAf,gBACE,oBAAC,KAAD;EACE,EAAE,EAAEN,WADN;EAEE,KAAK,EAAEG,WAFT;EAGE,WAAW,EAAED,KAAK,IAAI,QAHxB;EAIE,QAAQ,EAAE,CAAC;IAAEK,KAAK,EAAEC;EAAT,CAAD,KAAuB;IAC/BJ,kBAAkB,CAAC;MAAE,CAACJ,WAAD,GAAeQ;IAAjB,CAAD,EAA4B,KAA5B,CAAlB;EACD;AANH,EADF,CADF,eAWE;EACE,IAAI,EAAC,QADP;EAEE,SAAS,EAAC,iCAFZ;EAGE,OAAO,EAAEC,CAAC,IAAI;IACZA,CAAC,CAACC,cAAF;IACAN,kBAAkB,CAAC;MAAE,CAACJ,WAAD,GAAeG;IAAjB,CAAD,EAAiC,IAAjC,CAAlB;EACD;AANH,gBAOE,4CACE,oBAAC,QAAD,OADF,CAPF,CAXF,CADF,CADF;;AA4BAF,UAAU,CAACU,SAAX,GAAuB;EACrBL,YAAY,EAAEV,SAAS,CAACgB,MAAV,CAAiBC,UADV;EAErBV,WAAW,EAAEP,SAAS,CAACkB,MAAV,CAAiBD,UAFT;EAGrBT,kBAAkB,EAAER,SAAS,CAACmB,IAAV,CAAeF,UAHd;EAIrBR,YAAY,EAAET,SAAS,CAACmB,IAAV,CAAeF,UAJR;EAKrBX,KAAK,EAAEN,SAAS,CAACkB;AALI,CAAvB;AAQAb,UAAU,CAACe,YAAX,GAA0B;EACxBd,KAAK,EAAE;AADiB,CAA1B;AAIA,eAAeH,SAAS,CAACE,UAAD,CAAxB"}
1
+ {"version":3,"file":"TextSearch.js","names":["React","PropTypes","Input","MdSearch","withTitle","SEARCH_TERM","TextSearch","label","searchValue","updateFilterValues","value","eValue","e","preventDefault","propTypes","string","isRequired","func","defaultProps"],"sources":["../../../../src/components/SearchFilter/components/TextSearch.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Input from '@blaze-react/input';\nimport { MdSearch } from 'react-icons/md';\nimport { withTitle } from '../../../HOC';\nimport { SEARCH_TERM } from '../constants';\n\nconst TextSearch = ({ label, searchValue, updateFilterValues }) => (\n <div className=\"search\">\n <div className=\"search__wrapper\">\n <div className=\"form-field form-field--input form-field--search\">\n <Input\n id={SEARCH_TERM}\n value={searchValue}\n placeholder={label || 'Search'}\n onChange={({ value: eValue }) => {\n updateFilterValues({ [SEARCH_TERM]: eValue }, false);\n }}\n />\n </div>\n <button\n type=\"button\"\n className=\"icon-button icon-button--search\"\n onClick={e => {\n e.preventDefault();\n updateFilterValues({ [SEARCH_TERM]: searchValue }, true);\n }}>\n <i>\n <MdSearch />\n </i>\n </button>\n </div>\n </div>\n);\n\nTextSearch.propTypes = {\n searchValue: PropTypes.string.isRequired,\n updateFilterValues: PropTypes.func.isRequired,\n label: PropTypes.string\n};\n\nTextSearch.defaultProps = {\n label: ''\n};\n\nexport default withTitle(TextSearch);\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,KAAP,MAAkB,oBAAlB;AACA,SAASC,QAAT,QAAyB,gBAAzB;AACA,SAASC,SAAT,QAA0B,cAA1B;AACA,SAASC,WAAT,QAA4B,cAA5B;;AAEA,MAAMC,UAAU,GAAG,CAAC;EAAEC,KAAF;EAASC,WAAT;EAAsBC;AAAtB,CAAD,kBACjB;EAAK,SAAS,EAAC;AAAf,gBACE;EAAK,SAAS,EAAC;AAAf,gBACE;EAAK,SAAS,EAAC;AAAf,gBACE,oBAAC,KAAD;EACE,EAAE,EAAEJ,WADN;EAEE,KAAK,EAAEG,WAFT;EAGE,WAAW,EAAED,KAAK,IAAI,QAHxB;EAIE,QAAQ,EAAE,CAAC;IAAEG,KAAK,EAAEC;EAAT,CAAD,KAAuB;IAC/BF,kBAAkB,CAAC;MAAE,CAACJ,WAAD,GAAeM;IAAjB,CAAD,EAA4B,KAA5B,CAAlB;EACD;AANH,EADF,CADF,eAWE;EACE,IAAI,EAAC,QADP;EAEE,SAAS,EAAC,iCAFZ;EAGE,OAAO,EAAEC,CAAC,IAAI;IACZA,CAAC,CAACC,cAAF;IACAJ,kBAAkB,CAAC;MAAE,CAACJ,WAAD,GAAeG;IAAjB,CAAD,EAAiC,IAAjC,CAAlB;EACD;AANH,gBAOE,4CACE,oBAAC,QAAD,OADF,CAPF,CAXF,CADF,CADF;;AA4BAF,UAAU,CAACQ,SAAX,GAAuB;EACrBN,WAAW,EAAEP,SAAS,CAACc,MAAV,CAAiBC,UADT;EAErBP,kBAAkB,EAAER,SAAS,CAACgB,IAAV,CAAeD,UAFd;EAGrBT,KAAK,EAAEN,SAAS,CAACc;AAHI,CAAvB;AAMAT,UAAU,CAACY,YAAX,GAA0B;EACxBX,KAAK,EAAE;AADiB,CAA1B;AAIA,eAAeH,SAAS,CAACE,UAAD,CAAxB"}
@@ -0,0 +1,54 @@
1
+ const builFilterObject = (key, value, filters) => {
2
+ const isArray = Array.isArray(value);
3
+
4
+ if (!isArray) {
5
+ const singleFilterObj = {
6
+ match: {
7
+ [key]: value
8
+ }
9
+ };
10
+ filters.push(singleFilterObj);
11
+ return;
12
+ }
13
+
14
+ value.forEach(filterValue => {
15
+ filters.push({
16
+ match: {
17
+ [key]: filterValue
18
+ }
19
+ });
20
+ });
21
+ };
22
+
23
+ const buildFiltersQuery = (query, filterBy, filterByProperty) => {
24
+ const mustFilters = [];
25
+ Object.keys(query).forEach(queryKey => {
26
+ if (queryKey === 'search_term' || queryKey === 'shouldSearch') return;
27
+ if (!queryKey || !query[queryKey]) return;
28
+ const queryValue = query[queryKey];
29
+ const queryKeyword = `${queryKey}.keyword`;
30
+ builFilterObject(queryKeyword, queryValue, mustFilters);
31
+ });
32
+
33
+ if (filterByProperty && filterByProperty.length) {
34
+ filterByProperty && filterByProperty.forEach(filterByPropOption => {
35
+ const [filterByPropKey] = filterByPropOption.split('/');
36
+ filterBy.forEach(filterByOption => {
37
+ if (filterByOption.indexOf(filterByPropKey) === -1) return;
38
+ const [, filteryByValue] = filterByOption.split('/');
39
+ const filterByKeyword = `${filterByPropKey}.keyword`;
40
+ if (!filteryByValue) return;
41
+ mustFilters.push({
42
+ match: {
43
+ [filterByKeyword]: filteryByValue
44
+ }
45
+ });
46
+ });
47
+ });
48
+ }
49
+
50
+ return mustFilters;
51
+ };
52
+
53
+ export default buildFiltersQuery;
54
+ //# sourceMappingURL=build-filters-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-filters-query.js","names":["builFilterObject","key","value","filters","isArray","Array","singleFilterObj","match","push","forEach","filterValue","buildFiltersQuery","query","filterBy","filterByProperty","mustFilters","Object","keys","queryKey","queryValue","queryKeyword","length","filterByPropOption","filterByPropKey","split","filterByOption","indexOf","filteryByValue","filterByKeyword"],"sources":["../../../../src/components/SearchFilter/helpers/build-filters-query.js"],"sourcesContent":["const builFilterObject = (key, value, filters) => {\n const isArray = Array.isArray(value);\n if (!isArray) {\n const singleFilterObj = { match: { [key]: value } };\n filters.push(singleFilterObj);\n return;\n }\n\n value.forEach(filterValue => {\n filters.push({ match: { [key]: filterValue } });\n });\n};\nconst buildFiltersQuery = (query, filterBy, filterByProperty) => {\n const mustFilters = [];\n Object.keys(query).forEach(queryKey => {\n if (queryKey === 'search_term' || queryKey === 'shouldSearch') return;\n if (!queryKey || !query[queryKey]) return;\n const queryValue = query[queryKey];\n const queryKeyword = `${queryKey}.keyword`;\n builFilterObject(queryKeyword, queryValue, mustFilters);\n });\n\n if (filterByProperty && filterByProperty.length) {\n filterByProperty &&\n filterByProperty.forEach(filterByPropOption => {\n const [filterByPropKey] = filterByPropOption.split('/');\n filterBy.forEach(filterByOption => {\n if (filterByOption.indexOf(filterByPropKey) === -1) return;\n const [, filteryByValue] = filterByOption.split('/');\n const filterByKeyword = `${filterByPropKey}.keyword`;\n if (!filteryByValue) return;\n mustFilters.push({ match: { [filterByKeyword]: filteryByValue } });\n });\n });\n }\n\n return mustFilters;\n};\n\nexport default buildFiltersQuery;\n"],"mappings":"AAAA,MAAMA,gBAAgB,GAAG,CAACC,GAAD,EAAMC,KAAN,EAAaC,OAAb,KAAyB;EAChD,MAAMC,OAAO,GAAGC,KAAK,CAACD,OAAN,CAAcF,KAAd,CAAhB;;EACA,IAAI,CAACE,OAAL,EAAc;IACZ,MAAME,eAAe,GAAG;MAAEC,KAAK,EAAE;QAAE,CAACN,GAAD,GAAOC;MAAT;IAAT,CAAxB;IACAC,OAAO,CAACK,IAAR,CAAaF,eAAb;IACA;EACD;;EAEDJ,KAAK,CAACO,OAAN,CAAcC,WAAW,IAAI;IAC3BP,OAAO,CAACK,IAAR,CAAa;MAAED,KAAK,EAAE;QAAE,CAACN,GAAD,GAAOS;MAAT;IAAT,CAAb;EACD,CAFD;AAGD,CAXD;;AAYA,MAAMC,iBAAiB,GAAG,CAACC,KAAD,EAAQC,QAAR,EAAkBC,gBAAlB,KAAuC;EAC/D,MAAMC,WAAW,GAAG,EAApB;EACAC,MAAM,CAACC,IAAP,CAAYL,KAAZ,EAAmBH,OAAnB,CAA2BS,QAAQ,IAAI;IACrC,IAAIA,QAAQ,KAAK,aAAb,IAA8BA,QAAQ,KAAK,cAA/C,EAA+D;IAC/D,IAAI,CAACA,QAAD,IAAa,CAACN,KAAK,CAACM,QAAD,CAAvB,EAAmC;IACnC,MAAMC,UAAU,GAAGP,KAAK,CAACM,QAAD,CAAxB;IACA,MAAME,YAAY,GAAI,GAAEF,QAAS,UAAjC;IACAlB,gBAAgB,CAACoB,YAAD,EAAeD,UAAf,EAA2BJ,WAA3B,CAAhB;EACD,CAND;;EAQA,IAAID,gBAAgB,IAAIA,gBAAgB,CAACO,MAAzC,EAAiD;IAC/CP,gBAAgB,IACdA,gBAAgB,CAACL,OAAjB,CAAyBa,kBAAkB,IAAI;MAC7C,MAAM,CAACC,eAAD,IAAoBD,kBAAkB,CAACE,KAAnB,CAAyB,GAAzB,CAA1B;MACAX,QAAQ,CAACJ,OAAT,CAAiBgB,cAAc,IAAI;QACjC,IAAIA,cAAc,CAACC,OAAf,CAAuBH,eAAvB,MAA4C,CAAC,CAAjD,EAAoD;QACpD,MAAM,GAAGI,cAAH,IAAqBF,cAAc,CAACD,KAAf,CAAqB,GAArB,CAA3B;QACA,MAAMI,eAAe,GAAI,GAAEL,eAAgB,UAA3C;QACA,IAAI,CAACI,cAAL,EAAqB;QACrBZ,WAAW,CAACP,IAAZ,CAAiB;UAAED,KAAK,EAAE;YAAE,CAACqB,eAAD,GAAmBD;UAArB;QAAT,CAAjB;MACD,CAND;IAOD,CATD,CADF;EAWD;;EAED,OAAOZ,WAAP;AACD,CAzBD;;AA2BA,eAAeJ,iBAAf"}
@@ -1,6 +1,6 @@
1
1
  import { KEYWORD, SIZE } from '../constants';
2
2
 
3
- const buildRawQueryStringified = (checkboxSelectValues, rangeValues, entity) => {
3
+ const buildRawQueryStringified = (checkboxSelectValues, rangeValues, entity, mustFilters) => {
4
4
  if (!checkboxSelectValues.length && !rangeValues.length) return '';
5
5
  const aggs = {};
6
6
  checkboxSelectValues.forEach(fieldName => {
@@ -30,6 +30,7 @@ const buildRawQueryStringified = (checkboxSelectValues, rangeValues, entity) =>
30
30
  docType: entity
31
31
  }
32
32
  }],
33
+ must: mustFilters,
33
34
  minimum_should_match: 1
34
35
  }
35
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build-raw-query-stringified.js","names":["KEYWORD","SIZE","buildRawQueryStringified","checkboxSelectValues","rangeValues","entity","length","aggs","forEach","fieldName","terms","field","size","stats","JSON","stringify","query","bool","filter","should","match","docType","minimum_should_match"],"sources":["../../../../src/components/SearchFilter/helpers/build-raw-query-stringified.js"],"sourcesContent":["import { KEYWORD, SIZE } from '../constants';\n\nconst buildRawQueryStringified = (checkboxSelectValues, rangeValues, entity) => {\n if (!checkboxSelectValues.length && !rangeValues.length) return '';\n\n const aggs = {};\n\n checkboxSelectValues.forEach(fieldName => {\n aggs[fieldName] = {\n terms: {\n field: `${fieldName}.${KEYWORD}`,\n size: SIZE\n }\n };\n });\n\n rangeValues.forEach(fieldName => {\n aggs[fieldName] = {\n stats: {\n field: fieldName\n }\n };\n });\n\n return JSON.stringify({\n aggs,\n size: 0,\n query: {\n bool: {\n filter: {\n bool: {\n should: [\n {\n match: {\n docType: entity\n }\n }\n ],\n minimum_should_match: 1\n }\n }\n }\n }\n });\n};\n\nexport default buildRawQueryStringified;\n"],"mappings":"AAAA,SAASA,OAAT,EAAkBC,IAAlB,QAA8B,cAA9B;;AAEA,MAAMC,wBAAwB,GAAG,CAACC,oBAAD,EAAuBC,WAAvB,EAAoCC,MAApC,KAA+C;EAC9E,IAAI,CAACF,oBAAoB,CAACG,MAAtB,IAAgC,CAACF,WAAW,CAACE,MAAjD,EAAyD,OAAO,EAAP;EAEzD,MAAMC,IAAI,GAAG,EAAb;EAEAJ,oBAAoB,CAACK,OAArB,CAA6BC,SAAS,IAAI;IACxCF,IAAI,CAACE,SAAD,CAAJ,GAAkB;MAChBC,KAAK,EAAE;QACLC,KAAK,EAAG,GAAEF,SAAU,IAAGT,OAAQ,EAD1B;QAELY,IAAI,EAAEX;MAFD;IADS,CAAlB;EAMD,CAPD;EASAG,WAAW,CAACI,OAAZ,CAAoBC,SAAS,IAAI;IAC/BF,IAAI,CAACE,SAAD,CAAJ,GAAkB;MAChBI,KAAK,EAAE;QACLF,KAAK,EAAEF;MADF;IADS,CAAlB;EAKD,CAND;EAQA,OAAOK,IAAI,CAACC,SAAL,CAAe;IACpBR,IADoB;IAEpBK,IAAI,EAAE,CAFc;IAGpBI,KAAK,EAAE;MACLC,IAAI,EAAE;QACJC,MAAM,EAAE;UACND,IAAI,EAAE;YACJE,MAAM,EAAE,CACN;cACEC,KAAK,EAAE;gBACLC,OAAO,EAAEhB;cADJ;YADT,CADM,CADJ;YAQJiB,oBAAoB,EAAE;UARlB;QADA;MADJ;IADD;EAHa,CAAf,CAAP;AAoBD,CA1CD;;AA4CA,eAAepB,wBAAf"}
1
+ {"version":3,"file":"build-raw-query-stringified.js","names":["KEYWORD","SIZE","buildRawQueryStringified","checkboxSelectValues","rangeValues","entity","mustFilters","length","aggs","forEach","fieldName","terms","field","size","stats","JSON","stringify","query","bool","filter","should","match","docType","must","minimum_should_match"],"sources":["../../../../src/components/SearchFilter/helpers/build-raw-query-stringified.js"],"sourcesContent":["import { KEYWORD, SIZE } from '../constants';\n\nconst buildRawQueryStringified = (checkboxSelectValues, rangeValues, entity, mustFilters) => {\n if (!checkboxSelectValues.length && !rangeValues.length) return '';\n\n const aggs = {};\n\n checkboxSelectValues.forEach(fieldName => {\n aggs[fieldName] = {\n terms: {\n field: `${fieldName}.${KEYWORD}`,\n size: SIZE\n }\n };\n });\n\n rangeValues.forEach(fieldName => {\n aggs[fieldName] = {\n stats: {\n field: fieldName\n }\n };\n });\n\n return JSON.stringify({\n aggs,\n size: 0,\n query: {\n bool: {\n filter: {\n bool: {\n should: [\n {\n match: {\n docType: entity\n }\n }\n ],\n must: mustFilters,\n minimum_should_match: 1\n }\n }\n }\n }\n });\n};\n\nexport default buildRawQueryStringified;\n"],"mappings":"AAAA,SAASA,OAAT,EAAkBC,IAAlB,QAA8B,cAA9B;;AAEA,MAAMC,wBAAwB,GAAG,CAACC,oBAAD,EAAuBC,WAAvB,EAAoCC,MAApC,EAA4CC,WAA5C,KAA4D;EAC3F,IAAI,CAACH,oBAAoB,CAACI,MAAtB,IAAgC,CAACH,WAAW,CAACG,MAAjD,EAAyD,OAAO,EAAP;EAEzD,MAAMC,IAAI,GAAG,EAAb;EAEAL,oBAAoB,CAACM,OAArB,CAA6BC,SAAS,IAAI;IACxCF,IAAI,CAACE,SAAD,CAAJ,GAAkB;MAChBC,KAAK,EAAE;QACLC,KAAK,EAAG,GAAEF,SAAU,IAAGV,OAAQ,EAD1B;QAELa,IAAI,EAAEZ;MAFD;IADS,CAAlB;EAMD,CAPD;EASAG,WAAW,CAACK,OAAZ,CAAoBC,SAAS,IAAI;IAC/BF,IAAI,CAACE,SAAD,CAAJ,GAAkB;MAChBI,KAAK,EAAE;QACLF,KAAK,EAAEF;MADF;IADS,CAAlB;EAKD,CAND;EAQA,OAAOK,IAAI,CAACC,SAAL,CAAe;IACpBR,IADoB;IAEpBK,IAAI,EAAE,CAFc;IAGpBI,KAAK,EAAE;MACLC,IAAI,EAAE;QACJC,MAAM,EAAE;UACND,IAAI,EAAE;YACJE,MAAM,EAAE,CACN;cACEC,KAAK,EAAE;gBACLC,OAAO,EAAEjB;cADJ;YADT,CADM,CADJ;YAQJkB,IAAI,EAAEjB,WARF;YASJkB,oBAAoB,EAAE;UATlB;QADA;MADJ;IADD;EAHa,CAAf,CAAP;AAqBD,CA3CD;;AA6CA,eAAetB,wBAAf"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-initial-filter-values.js","names":["SEARCH_TERM","getFilterValueFromQuery","getInitialFilterValues","filterData","filters","query","filterValues","Object","keys","forEach","key","filterProps","find","propsToDisplay","prop"],"sources":["../../../../src/components/SearchFilter/helpers/get-initial-filter-values.js"],"sourcesContent":["import { SEARCH_TERM } from '../constants';\nimport getFilterValueFromQuery from './get-filter-value-from-query';\n\nconst getInitialFilterValues = (filterData, filters, query) => {\n const filterValues = {};\n Object.keys(filterData).forEach(key => {\n const filterProps =\n filters.find(({ propsToDisplay }) => propsToDisplay.find(prop => key === prop)) || {};\n filterValues[key] = getFilterValueFromQuery(key, filterProps, filterData[key], query);\n });\n filterValues[SEARCH_TERM] = query[SEARCH_TERM] || '';\n\n return filterValues;\n};\n\nexport default getInitialFilterValues;\n"],"mappings":"AAAA,SAASA,WAAT,QAA4B,cAA5B;AACA,OAAOC,uBAAP,MAAoC,+BAApC;;AAEA,MAAMC,sBAAsB,GAAG,CAACC,UAAD,EAAaC,OAAb,EAAsBC,KAAtB,KAAgC;EAC7D,MAAMC,YAAY,GAAG,EAArB;EACAC,MAAM,CAACC,IAAP,CAAYL,UAAZ,EAAwBM,OAAxB,CAAgCC,GAAG,IAAI;IACrC,MAAMC,WAAW,GACfP,OAAO,CAACQ,IAAR,CAAa,CAAC;MAAEC;IAAF,CAAD,KAAwBA,cAAc,CAACD,IAAf,CAAoBE,IAAI,IAAIJ,GAAG,KAAKI,IAApC,CAArC,KAAmF,EADrF;IAEAR,YAAY,CAACI,GAAD,CAAZ,GAAoBT,uBAAuB,CAACS,GAAD,EAAMC,WAAN,EAAmBR,UAAU,CAACO,GAAD,CAA7B,EAAoCL,KAApC,CAA3C;EACD,CAJD;EAKAC,YAAY,CAACN,WAAD,CAAZ,GAA4BK,KAAK,CAACL,WAAD,CAAL,IAAsB,EAAlD;EAEA,OAAOM,YAAP;AACD,CAVD;;AAYA,eAAeJ,sBAAf"}
1
+ {"version":3,"file":"get-initial-filter-values.js","names":["SEARCH_TERM","getFilterValueFromQuery","getInitialFilterValues","filterData","filters","query","filterValues","Object","keys","forEach","key","filterProps","find","propsToDisplay","prop"],"sources":["../../../../src/components/SearchFilter/helpers/get-initial-filter-values.js"],"sourcesContent":["import { SEARCH_TERM } from '../constants';\nimport getFilterValueFromQuery from './get-filter-value-from-query';\n\nconst getInitialFilterValues = (filterData, filters, query) => {\n const filterValues = {};\n\n Object.keys(filterData).forEach(key => {\n const filterProps =\n filters.find(({ propsToDisplay }) => propsToDisplay.find(prop => key === prop)) || {};\n filterValues[key] = getFilterValueFromQuery(key, filterProps, filterData[key], query);\n });\n filterValues[SEARCH_TERM] = query[SEARCH_TERM] || '';\n\n return filterValues;\n};\n\nexport default getInitialFilterValues;\n"],"mappings":"AAAA,SAASA,WAAT,QAA4B,cAA5B;AACA,OAAOC,uBAAP,MAAoC,+BAApC;;AAEA,MAAMC,sBAAsB,GAAG,CAACC,UAAD,EAAaC,OAAb,EAAsBC,KAAtB,KAAgC;EAC7D,MAAMC,YAAY,GAAG,EAArB;EAEAC,MAAM,CAACC,IAAP,CAAYL,UAAZ,EAAwBM,OAAxB,CAAgCC,GAAG,IAAI;IACrC,MAAMC,WAAW,GACfP,OAAO,CAACQ,IAAR,CAAa,CAAC;MAAEC;IAAF,CAAD,KAAwBA,cAAc,CAACD,IAAf,CAAoBE,IAAI,IAAIJ,GAAG,KAAKI,IAApC,CAArC,KAAmF,EADrF;IAEAR,YAAY,CAACI,GAAD,CAAZ,GAAoBT,uBAAuB,CAACS,GAAD,EAAMC,WAAN,EAAmBR,UAAU,CAACO,GAAD,CAA7B,EAAoCL,KAApC,CAA3C;EACD,CAJD;EAKAC,YAAY,CAACN,WAAD,CAAZ,GAA4BK,KAAK,CAACL,WAAD,CAAL,IAAsB,EAAlD;EAEA,OAAOM,YAAP;AACD,CAXD;;AAaA,eAAeJ,sBAAf"}
@@ -13,5 +13,6 @@ import isDeviceDesktop from './is-device-desktop';
13
13
  import getInitialFilterValues from './get-initial-filter-values';
14
14
  import getFilterValueFromQuery from './get-filter-value-from-query';
15
15
  import buildQuery from './build-query';
16
- export { buildQuery, buildNewQuery, buildRawQueryStringified, decodeValue, encodeValue, checkIfRangeUpdated, getResponsiveFilterClassnames, getDisplayValue, calculateStep, calculateMinMax, getIntersectedProp, getRangeValue, getSelectOptions, isDeviceDesktop, getInitialFilterValues, getFilterValueFromQuery };
16
+ import buildFiltersQuery from './build-filters-query';
17
+ export { buildQuery, buildNewQuery, buildRawQueryStringified, decodeValue, encodeValue, checkIfRangeUpdated, getResponsiveFilterClassnames, getDisplayValue, calculateStep, calculateMinMax, getIntersectedProp, getRangeValue, getSelectOptions, isDeviceDesktop, getInitialFilterValues, getFilterValueFromQuery, buildFiltersQuery };
17
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["buildNewQuery","buildRawQueryStringified","decodeValue","encodeValue","checkIfRangeUpdated","getResponsiveFilterClassnames","getDisplayValue","calculateStep","calculateMinMax","getIntersectedProp","getRangeValue","getSelectOptions","isDeviceDesktop","getInitialFilterValues","getFilterValueFromQuery","buildQuery"],"sources":["../../../../src/components/SearchFilter/helpers/index.js"],"sourcesContent":["import buildNewQuery from './build-new-query';\nimport buildRawQueryStringified from './build-raw-query-stringified';\nimport { decodeValue, encodeValue } from './decode-encode';\nimport checkIfRangeUpdated from './check-if-range-updated';\nimport getResponsiveFilterClassnames from './get-responsive-filter-classnames';\nimport getDisplayValue from './get-display-value';\nimport calculateStep from './calculate-step';\nimport calculateMinMax from './calculate-min-max';\nimport getIntersectedProp from './get-intersected-prop';\nimport getRangeValue from './get-range-value';\nimport getSelectOptions from './get-select-options';\nimport isDeviceDesktop from './is-device-desktop';\nimport getInitialFilterValues from './get-initial-filter-values';\nimport getFilterValueFromQuery from './get-filter-value-from-query';\nimport buildQuery from './build-query';\n\nexport {\n buildQuery,\n buildNewQuery,\n buildRawQueryStringified,\n decodeValue,\n encodeValue,\n checkIfRangeUpdated,\n getResponsiveFilterClassnames,\n getDisplayValue,\n calculateStep,\n calculateMinMax,\n getIntersectedProp,\n getRangeValue,\n getSelectOptions,\n isDeviceDesktop,\n getInitialFilterValues,\n getFilterValueFromQuery\n};\n"],"mappings":"AAAA,OAAOA,aAAP,MAA0B,mBAA1B;AACA,OAAOC,wBAAP,MAAqC,+BAArC;AACA,SAASC,WAAT,EAAsBC,WAAtB,QAAyC,iBAAzC;AACA,OAAOC,mBAAP,MAAgC,0BAAhC;AACA,OAAOC,6BAAP,MAA0C,oCAA1C;AACA,OAAOC,eAAP,MAA4B,qBAA5B;AACA,OAAOC,aAAP,MAA0B,kBAA1B;AACA,OAAOC,eAAP,MAA4B,qBAA5B;AACA,OAAOC,kBAAP,MAA+B,wBAA/B;AACA,OAAOC,aAAP,MAA0B,mBAA1B;AACA,OAAOC,gBAAP,MAA6B,sBAA7B;AACA,OAAOC,eAAP,MAA4B,qBAA5B;AACA,OAAOC,sBAAP,MAAmC,6BAAnC;AACA,OAAOC,uBAAP,MAAoC,+BAApC;AACA,OAAOC,UAAP,MAAuB,eAAvB;AAEA,SACEA,UADF,EAEEf,aAFF,EAGEC,wBAHF,EAIEC,WAJF,EAKEC,WALF,EAMEC,mBANF,EAOEC,6BAPF,EAQEC,eARF,EASEC,aATF,EAUEC,eAVF,EAWEC,kBAXF,EAYEC,aAZF,EAaEC,gBAbF,EAcEC,eAdF,EAeEC,sBAfF,EAgBEC,uBAhBF"}
1
+ {"version":3,"file":"index.js","names":["buildNewQuery","buildRawQueryStringified","decodeValue","encodeValue","checkIfRangeUpdated","getResponsiveFilterClassnames","getDisplayValue","calculateStep","calculateMinMax","getIntersectedProp","getRangeValue","getSelectOptions","isDeviceDesktop","getInitialFilterValues","getFilterValueFromQuery","buildQuery","buildFiltersQuery"],"sources":["../../../../src/components/SearchFilter/helpers/index.js"],"sourcesContent":["import buildNewQuery from './build-new-query';\nimport buildRawQueryStringified from './build-raw-query-stringified';\nimport { decodeValue, encodeValue } from './decode-encode';\nimport checkIfRangeUpdated from './check-if-range-updated';\nimport getResponsiveFilterClassnames from './get-responsive-filter-classnames';\nimport getDisplayValue from './get-display-value';\nimport calculateStep from './calculate-step';\nimport calculateMinMax from './calculate-min-max';\nimport getIntersectedProp from './get-intersected-prop';\nimport getRangeValue from './get-range-value';\nimport getSelectOptions from './get-select-options';\nimport isDeviceDesktop from './is-device-desktop';\nimport getInitialFilterValues from './get-initial-filter-values';\nimport getFilterValueFromQuery from './get-filter-value-from-query';\nimport buildQuery from './build-query';\nimport buildFiltersQuery from './build-filters-query';\n\nexport {\n buildQuery,\n buildNewQuery,\n buildRawQueryStringified,\n decodeValue,\n encodeValue,\n checkIfRangeUpdated,\n getResponsiveFilterClassnames,\n getDisplayValue,\n calculateStep,\n calculateMinMax,\n getIntersectedProp,\n getRangeValue,\n getSelectOptions,\n isDeviceDesktop,\n getInitialFilterValues,\n getFilterValueFromQuery,\n buildFiltersQuery\n};\n"],"mappings":"AAAA,OAAOA,aAAP,MAA0B,mBAA1B;AACA,OAAOC,wBAAP,MAAqC,+BAArC;AACA,SAASC,WAAT,EAAsBC,WAAtB,QAAyC,iBAAzC;AACA,OAAOC,mBAAP,MAAgC,0BAAhC;AACA,OAAOC,6BAAP,MAA0C,oCAA1C;AACA,OAAOC,eAAP,MAA4B,qBAA5B;AACA,OAAOC,aAAP,MAA0B,kBAA1B;AACA,OAAOC,eAAP,MAA4B,qBAA5B;AACA,OAAOC,kBAAP,MAA+B,wBAA/B;AACA,OAAOC,aAAP,MAA0B,mBAA1B;AACA,OAAOC,gBAAP,MAA6B,sBAA7B;AACA,OAAOC,eAAP,MAA4B,qBAA5B;AACA,OAAOC,sBAAP,MAAmC,6BAAnC;AACA,OAAOC,uBAAP,MAAoC,+BAApC;AACA,OAAOC,UAAP,MAAuB,eAAvB;AACA,OAAOC,iBAAP,MAA8B,uBAA9B;AAEA,SACED,UADF,EAEEf,aAFF,EAGEC,wBAHF,EAIEC,WAJF,EAKEC,WALF,EAMEC,mBANF,EAOEC,6BAPF,EAQEC,eARF,EASEC,aATF,EAUEC,eAVF,EAWEC,kBAXF,EAYEC,aAZF,EAaEC,gBAbF,EAcEC,eAdF,EAeEC,sBAfF,EAgBEC,uBAhBF,EAiBEE,iBAjBF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaze-cms/react-page-builder",
3
- "version": "0.124.0-alpha.25",
3
+ "version": "0.124.0-alpha.29",
4
4
  "description": "Blaze react page builder",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-es/index.js",
@@ -31,6 +31,7 @@
31
31
  "@blaze-cms/core-errors": "^0.118.0",
32
32
  "@blaze-cms/image-cdn-react": "^0.2.0",
33
33
  "@blaze-cms/nextjs-components": "^0.124.0-alpha.2",
34
+ "@blaze-cms/plugin-search-ui": "^0.121.0",
34
35
  "@blaze-cms/setup-ui": "^0.92.0",
35
36
  "@blaze-cms/utils": "^0.118.0",
36
37
  "@blaze-react/breadcrumb": "0.8.0-alpha.60",
@@ -84,5 +85,5 @@
84
85
  "lib/*",
85
86
  "lib-es/*"
86
87
  ],
87
- "gitHead": "0a82c9c83c1786b8d413c22d085eabe98494373b"
88
+ "gitHead": "e9800fa33022ed743c9548a1e0df2ca73ee3d262"
88
89
  }
@@ -28,8 +28,11 @@ const Menu = ({
28
28
  const [showMobileMenu, setShowMobileMenu] = useState(false);
29
29
 
30
30
  const shouldDisplayCollapsed = collapse && isMobile;
31
+
31
32
  const mobileButtonClass = shouldDisplayCollapsed && isMobile ? mobileButtonModifier : HIDDEN;
33
+
32
34
  const shouldDisplayChildren = shouldDisplayCollapsed ? showMobileMenu : true;
35
+
33
36
  const childrenDesktopModifier =
34
37
  shouldDisplayChildren && !isMobile ? modifier : `${modifier} ${HIDDEN}`;
35
38
 
@@ -39,7 +42,7 @@ const Menu = ({
39
42
  const isMobileMenuExpanded = showMobileMenu ? `${mobileMenuModifier}` : '';
40
43
 
41
44
  return (
42
- <>
45
+ <div className="menu--wrapper">
43
46
  {collapse && (
44
47
  <div className="menu--mobile-wrapper">
45
48
  <div
@@ -89,7 +92,7 @@ const Menu = ({
89
92
  )}
90
93
  </ul>
91
94
  </div>
92
- </>
95
+ </div>
93
96
  );
94
97
  };
95
98
 
@@ -12,7 +12,8 @@ const SearchContent = ({
12
12
  searchInputWrapperDesktop,
13
13
  collapsible,
14
14
  isMobile,
15
- placeholder
15
+ placeholder,
16
+ modifier
16
17
  }) => {
17
18
  const [collapsed, setCollapsed] = useState(false);
18
19
  const router = useRouter();
@@ -45,8 +46,9 @@ const SearchContent = ({
45
46
  setSearchTerm('');
46
47
  };
47
48
 
49
+ const className = ['search-content', modifier, responsiveClasses].filter(Boolean).join(' ');
48
50
  return collapsed ? (
49
- <div className={responsiveClasses}>
51
+ <div className={className}>
50
52
  <div className="search-content--collapse__wrapper">
51
53
  <label className="search-content--collapse__label">
52
54
  <span className="search-content--collapse__icon_wrapper">
@@ -70,7 +72,7 @@ const SearchContent = ({
70
72
  </div>
71
73
  ) : (
72
74
  <>
73
- <div className={responsiveClasses}>
75
+ <div className={className}>
74
76
  <div className="search-content--expanded__wrapper">
75
77
  <label className="search-content--expanded__label">
76
78
  <span className="search-content--expanded__icon_wrapper">
@@ -105,7 +107,8 @@ SearchContent.propTypes = {
105
107
  placeholder: PropTypes.string,
106
108
  isMobile: PropTypes.bool,
107
109
  collapsible: PropTypes.bool,
108
- entities: PropTypes.array.isRequired
110
+ entities: PropTypes.array.isRequired,
111
+ modifier: PropTypes.string
109
112
  };
110
113
 
111
114
  SearchContent.defaultProps = {
@@ -114,7 +117,8 @@ SearchContent.defaultProps = {
114
117
  searchInputWrapperDesktop: '',
115
118
  placeholder: '',
116
119
  isMobile: false,
117
- collapsible: false
120
+ collapsible: false,
121
+ modifier: ''
118
122
  };
119
123
 
120
124
  export default SearchContent;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import BlazeLink from '../BlazeLink';
3
+ import LazyImage from '../LazyImage';
3
4
 
4
5
  const SearchContentItems = ({ results = [], onClick }) =>
5
6
  results.map(item => {
@@ -11,7 +12,12 @@ const SearchContentItems = ({ results = [], onClick }) =>
11
12
  <BlazeLink href={url} onClick={onClick} key={id}>
12
13
  <div className="search-content--results__wrapper">
13
14
  {image?.url ? (
14
- <img src={image.url} alt={name} className="search-content--results__image" />
15
+ <LazyImage
16
+ src={image.url}
17
+ alt={name}
18
+ className="search-content--results__image"
19
+ sizeKey="search-result"
20
+ />
15
21
  ) : null}
16
22
  <span className="search-content--results__title">{name}</span>
17
23
  </div>
@@ -17,13 +17,10 @@ const FiltersList = ({
17
17
 
18
18
  return filters.map(({ type, label, propsToDisplay, elementTitle, ...otherProps }, index) => {
19
19
  if (!propsToDisplay && !propsToDisplay.length) return null;
20
-
21
20
  const dynamicKey = [itemId, index].join('-');
22
21
  const isDataAvailable = !!data && Object.keys(data).length;
23
22
  const dataAggregations = isDataAvailable ? data : null;
24
23
  const areAggregationsAvailable = isDataAvailable && !!dataAggregations;
25
- const results = areAggregationsAvailable && dataAggregations[propsToDisplay[0]];
26
- const shouldDisplayFilter = results && results.buckets && results.buckets.length;
27
24
 
28
25
  switch (type) {
29
26
  case TEXT_SEARCH:
@@ -43,43 +40,39 @@ const FiltersList = ({
43
40
  );
44
41
  case CHECKBOX:
45
42
  return (
46
- !!shouldDisplayFilter && (
47
- <div
48
- key={dynamicKey}
49
- className="filter__section filter__section--search-refine filter__section--checkboxes">
50
- <Checkbox
51
- {...otherProps}
52
- data={data}
53
- prop={propsToDisplay[0]}
54
- label={label}
55
- elementTitle={elementTitle}
56
- hasUrl={hasUrl}
57
- filterValues={filterValues}
58
- updateFilterValues={updateFilterValues}
59
- shouldSearch={shouldSearch}
60
- />
61
- </div>
62
- )
43
+ <div
44
+ key={dynamicKey}
45
+ className="filter__section filter__section--search-refine filter__section--checkboxes">
46
+ <Checkbox
47
+ {...otherProps}
48
+ data={data}
49
+ prop={propsToDisplay[0]}
50
+ label={label}
51
+ elementTitle={elementTitle}
52
+ hasUrl={hasUrl}
53
+ filterValues={filterValues}
54
+ updateFilterValues={updateFilterValues}
55
+ shouldSearch={shouldSearch}
56
+ />
57
+ </div>
63
58
  );
64
59
  case SELECT:
65
60
  return (
66
- !!shouldDisplayFilter && (
67
- <div
68
- key={dynamicKey}
69
- className="filter__section filter__section--search-refine filter__section--selects">
70
- <SelectFilter
71
- {...otherProps}
72
- data={data}
73
- prop={propsToDisplay[0]}
74
- label={label}
75
- elementTitle={elementTitle}
76
- hasUrl={hasUrl}
77
- filterValues={filterValues}
78
- updateFilterValues={updateFilterValues}
79
- shouldSearch={shouldSearch}
80
- />
81
- </div>
82
- )
61
+ <div
62
+ key={dynamicKey}
63
+ className="filter__section filter__section--search-refine filter__section--selects">
64
+ <SelectFilter
65
+ {...otherProps}
66
+ data={data}
67
+ prop={propsToDisplay[0]}
68
+ label={label}
69
+ elementTitle={elementTitle}
70
+ hasUrl={hasUrl}
71
+ filterValues={filterValues}
72
+ updateFilterValues={updateFilterValues}
73
+ shouldSearch={shouldSearch}
74
+ />
75
+ </div>
83
76
  );
84
77
  case RANGE:
85
78
  return (
@@ -1,4 +1,4 @@
1
- import React, { useState, useEffect, useReducer } from 'react';
1
+ import React, { useState, useEffect } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import classnames from 'classnames';
4
4
  import debounce from 'lodash.debounce';
@@ -14,21 +14,6 @@ import ResetDesktopForm from './ResetDesktopForm';
14
14
  import MobileFormToolbar from './MobileFormToolbar';
15
15
  import { SEARCH, REFINE, MORE_FILTERS_CLASSES } from '../constants';
16
16
 
17
- const reducer = (state, action) => {
18
- const { newValues, type, shouldSearch = true } = action;
19
-
20
- switch (type) {
21
- case 'update':
22
- return { ...state, ...newValues, shouldSearch };
23
- case 'resetSearch':
24
- return { ...state, shouldSearch: false };
25
- case 'reset':
26
- return { ...newValues, shouldSearch };
27
- default:
28
- throw new Error();
29
- }
30
- };
31
-
32
17
  const SearchFilter = ({
33
18
  searchFilterRef,
34
19
  data,
@@ -40,13 +25,13 @@ const SearchFilter = ({
40
25
  isCollapsedOnResponsive,
41
26
  displaySearchFilter,
42
27
  setDisplaySearchFilter,
43
- initialFilterValues,
44
28
  groupAfterDesktop,
45
- groupAfterMobile
29
+ groupAfterMobile,
30
+ filterValues,
31
+ setAppliedFilters
46
32
  }) => {
47
33
  const [moreFiltersMobileCollapsed, setMoreFiltersMobileCollapsed] = useState(true);
48
34
  const [moreFiltersDesktopCollapsed, setMoreFiltersDesktopCollapsed] = useState(true);
49
- const [filterValues, dispatch] = useReducer(reducer, initialFilterValues);
50
35
 
51
36
  const doSubmit = (newValues = filterValues) => {
52
37
  const newQuery = buildQuery(newValues, filters);
@@ -63,10 +48,10 @@ const SearchFilter = ({
63
48
  () => {
64
49
  if (filterValues.shouldSearch) {
65
50
  handleSubmit(filterValues);
66
- dispatch({ type: 'resetSearch' });
51
+ setAppliedFilters({ type: 'resetSearch' });
67
52
  }
68
53
  },
69
- [filterValues, handleSubmit]
54
+ [filterValues, handleSubmit, setAppliedFilters]
70
55
  );
71
56
 
72
57
  const formClass = classnames('filter__form filter__form--initial', {
@@ -85,12 +70,12 @@ const SearchFilter = ({
85
70
 
86
71
  const handleReset = () => {
87
72
  const newValues = getInitialFilterValues(data, filters, {});
88
-
89
- dispatch({ newValues, type: 'reset' });
73
+ setAppliedFilters({ newValues, type: 'reset' });
90
74
  };
91
75
 
92
76
  const updateFilterValues = (newValues, shouldSubmit) => {
93
- dispatch({ newValues, shouldSearch: shouldSubmit, type: 'update' });
77
+ const newAppliedFilters = { ...filterValues, ...newValues };
78
+ setAppliedFilters({ newValues: newAppliedFilters, shouldSearch: shouldSubmit, type: 'update' });
94
79
  };
95
80
 
96
81
  const shouldGroup = !!(groupAfterDesktop || groupAfterMobile);
@@ -248,7 +233,8 @@ SearchFilter.propTypes = {
248
233
  isCollapsedOnResponsive: PropTypes.bool.isRequired,
249
234
  groupAfterDesktop: PropTypes.number.isRequired,
250
235
  groupAfterMobile: PropTypes.number.isRequired,
251
- initialFilterValues: PropTypes.object.isRequired
236
+ filterValues: PropTypes.object.isRequired,
237
+ setAppliedFilters: PropTypes.func.isRequired
252
238
  };
253
239
 
254
240
  export default SearchFilter;