@blaze-cms/react-page-builder 0.124.1-alpha.2 → 0.124.1
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.
- package/CHANGELOG.md +31 -0
- package/lib/components/Banner/helpers.js +1 -1
- package/lib/components/Banner/helpers.js.map +1 -1
- package/lib/components/Button.js +4 -0
- package/lib/components/Button.js.map +1 -1
- package/lib/components/SearchFilter/SearchFilterContainer.js +9 -3
- package/lib/components/SearchFilter/SearchFilterContainer.js.map +1 -1
- package/lib/components/SearchFilter/components/Range.js +2 -3
- package/lib/components/SearchFilter/components/Range.js.map +1 -1
- package/lib/components/SearchFilter/helpers/build-filters-query.js +24 -6
- package/lib/components/SearchFilter/helpers/build-filters-query.js.map +1 -1
- package/lib-es/components/Banner/helpers.js +1 -1
- package/lib-es/components/Banner/helpers.js.map +1 -1
- package/lib-es/components/Button.js +4 -1
- package/lib-es/components/Button.js.map +1 -1
- package/lib-es/components/SearchFilter/SearchFilterContainer.js +7 -1
- package/lib-es/components/SearchFilter/SearchFilterContainer.js.map +1 -1
- package/lib-es/components/SearchFilter/components/Range.js +2 -3
- package/lib-es/components/SearchFilter/components/Range.js.map +1 -1
- package/lib-es/components/SearchFilter/helpers/build-filters-query.js +25 -6
- package/lib-es/components/SearchFilter/helpers/build-filters-query.js.map +1 -1
- package/package.json +2 -2
- package/src/components/Banner/helpers.js +1 -5
- package/src/components/Button.js +8 -1
- package/src/components/SearchFilter/SearchFilterContainer.js +7 -1
- package/src/components/SearchFilter/components/Range.js +11 -14
- package/src/components/SearchFilter/helpers/build-filters-query.js +7 -6
- package/tests/unit/src/components/Banner/helpers.test.js +1 -1
- package/tests/unit/src/components/Button.test.js +4 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,37 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [0.124.1](https://github.com/thebyte9/blaze/compare/v0.124.1-alpha.5...v0.124.1) (2022-09-06)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @blaze-cms/react-page-builder
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [0.124.1-alpha.5](https://github.com/thebyte9/blaze/compare/v0.124.1-alpha.4...v0.124.1-alpha.5) (2022-09-05)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* unpersist show/hide when navigating to next page ([#3584](https://github.com/thebyte9/blaze/issues/3584)) ([5ea63ce](https://github.com/thebyte9/blaze/commit/5ea63cefd780bf3e9e85c1471571c58a1170a473))
|
|
20
|
+
* use arrays for banner targetting ([#3579](https://github.com/thebyte9/blaze/issues/3579)) ([fd78f18](https://github.com/thebyte9/blaze/commit/fd78f189ba4bde01147be2d3021bdf1c17a27d58))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## [0.124.1-alpha.3](https://github.com/thebyte9/blaze/compare/v0.124.1-alpha.2...v0.124.1-alpha.3) (2022-08-25)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
### Bug Fixes
|
|
30
|
+
|
|
31
|
+
* search filter handles range values, show range filter even when min/max are the same ([#3568](https://github.com/thebyte9/blaze/issues/3568)) ([0c7e561](https://github.com/thebyte9/blaze/commit/0c7e561bd4bbd8fff9968dfa373cfa66ffc7a8ae))
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
6
37
|
## [0.124.1-alpha.2](https://github.com/thebyte9/blaze/compare/v0.124.1-alpha.1...v0.124.1-alpha.2) (2022-08-23)
|
|
7
38
|
|
|
8
39
|
|
|
@@ -292,7 +292,7 @@ exports.buildPropsData = buildPropsData;
|
|
|
292
292
|
var parseArrayValues = function parseArrayValues(arr, key) {
|
|
293
293
|
return arr.map(function (obj) {
|
|
294
294
|
return obj[key];
|
|
295
|
-
}).filter(Boolean)
|
|
295
|
+
}).filter(Boolean);
|
|
296
296
|
};
|
|
297
297
|
|
|
298
298
|
var getNestedValue = function getNestedValue(keys, object) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["getParsedSizes","sizes","sanitizedSizes","replace","toLowerCase","sizeGroups","split","map","group","Number","addPosnToTargetings","targetings","index","posn","buildTargetingValue","valueTargeting","includes","char","setCustomTargetings","cardBannerIndex","bannerTargetings","updatedTargetings","isValidTargeting","customTargeting","splitTargeting","Object","keys","forEach","key","keyTargeting","buildParsedAdunit","path","countContentHierarchies","baseAdunit","adunit","isInteger","base","process","env","DFP_BASE_ADUNIT","hasChildren","parseUrl","url","urlParts","filter","Boolean","urlPart","slice","length","join","endAdunit","END_ADUNIT","getBannerSizes","sizeId","bannerSizes","width","height","buildBannerSizes","parsedSizes","buildContextualTargeting","actionKey","props","propsToDisplay","data","buildPropsData","buildSizeMapping","sizeMapping","groupedViewports","reduce","acc","viewports","size","viewportWidth","viewportHeight","push","keyGroupedViewport","viewport","getMaxBannerHeight","Array","isArray","Math","max","o","MAX_BANNER_HEIGHT","getMinBannerHeight","min","MIN_BANNER_HEIGHT","buildUserQuery","userProps","basicProps","nestedProps","propertiesToDisplay","propKey","indexOf","baseProp","nestedProp","nestedKey","nested","prop","propsWithData","label","parsedKey","value","getNestedValue","labelToUse","parseArrayValues","arr","obj","object","shift","nestedValue"],"sources":["../../../src/components/Banner/helpers.js"],"sourcesContent":["import { parseUrl } from 'query-string';\nimport { END_ADUNIT, MAX_BANNER_HEIGHT, MIN_BANNER_HEIGHT } from '../../constants';\n\nconst getParsedSizes = (sizes = '') => {\n if (typeof sizes !== 'string') return [];\n\n const sanitizedSizes = sizes.replace(/\\s+/, '').toLowerCase();\n const sizeGroups = sanitizedSizes.split(',');\n\n return sizeGroups.map(group => group.split('x').map(Number));\n};\n\nconst addPosnToTargetings = (targetings, index) => {\n const posn = `posn=${index}`;\n return targetings ? `${targetings},${posn}` : posn;\n};\n\nconst buildTargetingValue = valueTargeting =>\n valueTargeting.includes('[') && valueTargeting.includes(']')\n ? valueTargeting.replace(/\\;|\\[|\\]/gm, char => (char === ';' ? ',' : '')).split(',')\n : valueTargeting;\n\nconst setCustomTargetings = (targetings, cardBannerIndex) => {\n let bannerTargetings = {};\n\n const updatedTargetings = cardBannerIndex\n ? addPosnToTargetings(targetings, cardBannerIndex)\n : targetings;\n\n const isValidTargeting = updatedTargetings && typeof updatedTargetings === 'string';\n\n if (isValidTargeting) {\n const customTargeting = {};\n\n let splitTargeting = updatedTargetings.split(',');\n splitTargeting = { ...splitTargeting };\n\n Object.keys(splitTargeting).forEach(key => {\n const [keyTargeting, valueTargeting] = splitTargeting[key].split('=');\n\n if (keyTargeting && valueTargeting) {\n customTargeting[keyTargeting] = buildTargetingValue(valueTargeting);\n }\n });\n bannerTargetings = { ...bannerTargetings, ...customTargeting };\n }\n\n return bannerTargetings;\n};\n\nconst buildParsedAdunit = (path, countContentHierarchies, baseAdunit, adunit) => {\n if (!Number.isInteger(countContentHierarchies)) return '';\n\n const base = baseAdunit || process.env.DFP_BASE_ADUNIT;\n const hasChildren = countContentHierarchies !== 0;\n const { url } = parseUrl(path);\n let urlParts = url\n .split('/')\n .filter(Boolean)\n .map(urlPart => urlPart.replace(/-/g, ''));\n urlParts = urlParts.slice(0, hasChildren ? urlParts.length : urlParts.length - 1).join('/');\n urlParts = urlParts ? `${urlParts}/` : urlParts;\n const endAdunit = adunit || END_ADUNIT;\n\n return `${base}/${urlParts}${endAdunit}`;\n};\n\nconst getBannerSizes = (sizeId, bannerSizes) =>\n sizeId && bannerSizes && bannerSizes.length\n ? bannerSizes.map(({ width, height }) => [width, height])\n : null;\n\nconst buildBannerSizes = (sizeId, bannerSizes, sizes) => {\n let parsedSizes = getBannerSizes(sizeId, bannerSizes);\n\n if (!parsedSizes && sizes) parsedSizes = getParsedSizes(sizes);\n\n return parsedSizes;\n};\n\nconst buildContextualTargeting = (actionKey, props = {}, propsToDisplay = []) => {\n if (actionKey && props[actionKey] && props[actionKey][0]) {\n const data = props[actionKey][0];\n return buildPropsData(data, propsToDisplay);\n }\n return {};\n};\n\nconst buildSizeMapping = (sizeId, bannerSizes) => {\n let sizeMapping = [];\n\n if (sizeId && bannerSizes && bannerSizes.length) {\n const groupedViewports = bannerSizes.reduce((acc, { width, height, viewports = [] }) => {\n const size = width && height ? [width, height] : null; // if one dimension is falsey then it shouldn't display\n\n if (viewports) {\n viewports.forEach(({ width: viewportWidth, height: viewportHeight }) => {\n const key = `${viewportWidth || 0}x${viewportHeight || 0}`;\n acc[key] = acc[key] || [];\n if (size) acc[key].push(size);\n });\n }\n return acc;\n }, {});\n\n sizeMapping = Object.keys(groupedViewports).map(keyGroupedViewport => {\n const [viewportWidth, viewportHeight] = keyGroupedViewport.split('x');\n return {\n viewport: [Number(viewportWidth), Number(viewportHeight)],\n sizes: groupedViewports[keyGroupedViewport]\n };\n });\n }\n\n return sizeMapping;\n};\n\nconst getMaxBannerHeight = bannerSizes => {\n if (Array.isArray(bannerSizes) && bannerSizes.length > 0) {\n return Math.max(...bannerSizes.map(o => o.height));\n }\n return MAX_BANNER_HEIGHT;\n};\n\nconst getMinBannerHeight = bannerSizes => {\n if (Array.isArray(bannerSizes) && bannerSizes.length > 0) {\n return Math.min(...bannerSizes.map(o => o.height));\n }\n return MIN_BANNER_HEIGHT;\n};\n\nconst buildUserQuery = userProps => {\n if (!userProps || !userProps.length) return '';\n const basicProps = [];\n const nestedProps = {};\n userProps.forEach(({ propertiesToDisplay }) => {\n const [propKey] = propertiesToDisplay;\n if (!propKey || propKey === 'id') return;\n if (propKey.indexOf('.') !== -1) {\n const [baseProp, nestedProp] = propKey.split('.');\n if (nestedProps[baseProp]) nestedProps[baseProp].push(nestedProp);\n else nestedProps[baseProp] = [nestedProp];\n } else basicProps.push(propKey);\n });\n\n Object.keys(nestedProps).forEach(nestedKey => {\n const nested = nestedProps[nestedKey];\n basicProps.push(nestedKey);\n basicProps.push('{');\n nested.forEach(prop => basicProps.push(prop));\n basicProps.push('}');\n });\n\n return basicProps.join(' ');\n};\n\nconst buildPropsData = (data, props) => {\n if (!data || !props.length) return {};\n const propsWithData = {};\n\n props.forEach(({ propertiesToDisplay, label }) => {\n const [key] = propertiesToDisplay;\n if (!key) return;\n\n const parsedKey = key.split('.');\n const value = getNestedValue(parsedKey, data);\n const labelToUse = label || key;\n\n propsWithData[labelToUse] = value;\n });\n return propsWithData;\n};\n\nconst parseArrayValues = (arr, key) =>\n arr\n .map(obj => obj[key])\n .filter(Boolean)\n .join(', ');\n\nconst getNestedValue = (keys, object) => {\n const key = keys.shift();\n const nestedValue = Array.isArray(object) ? parseArrayValues(object, key) : object[key];\n if (!nestedValue) return null;\n return keys.length ? getNestedValue(keys, nestedValue) : nestedValue;\n};\n\nexport {\n getParsedSizes,\n setCustomTargetings,\n buildParsedAdunit,\n buildBannerSizes,\n buildContextualTargeting,\n buildSizeMapping,\n getMaxBannerHeight,\n getMinBannerHeight,\n buildPropsData,\n buildUserQuery\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["getParsedSizes","sizes","sanitizedSizes","replace","toLowerCase","sizeGroups","split","map","group","Number","addPosnToTargetings","targetings","index","posn","buildTargetingValue","valueTargeting","includes","char","setCustomTargetings","cardBannerIndex","bannerTargetings","updatedTargetings","isValidTargeting","customTargeting","splitTargeting","Object","keys","forEach","key","keyTargeting","buildParsedAdunit","path","countContentHierarchies","baseAdunit","adunit","isInteger","base","process","env","DFP_BASE_ADUNIT","hasChildren","parseUrl","url","urlParts","filter","Boolean","urlPart","slice","length","join","endAdunit","END_ADUNIT","getBannerSizes","sizeId","bannerSizes","width","height","buildBannerSizes","parsedSizes","buildContextualTargeting","actionKey","props","propsToDisplay","data","buildPropsData","buildSizeMapping","sizeMapping","groupedViewports","reduce","acc","viewports","size","viewportWidth","viewportHeight","push","keyGroupedViewport","viewport","getMaxBannerHeight","Array","isArray","Math","max","o","MAX_BANNER_HEIGHT","getMinBannerHeight","min","MIN_BANNER_HEIGHT","buildUserQuery","userProps","basicProps","nestedProps","propertiesToDisplay","propKey","indexOf","baseProp","nestedProp","nestedKey","nested","prop","propsWithData","label","parsedKey","value","getNestedValue","labelToUse","parseArrayValues","arr","obj","object","shift","nestedValue"],"sources":["../../../src/components/Banner/helpers.js"],"sourcesContent":["import { parseUrl } from 'query-string';\nimport { END_ADUNIT, MAX_BANNER_HEIGHT, MIN_BANNER_HEIGHT } from '../../constants';\n\nconst getParsedSizes = (sizes = '') => {\n if (typeof sizes !== 'string') return [];\n\n const sanitizedSizes = sizes.replace(/\\s+/, '').toLowerCase();\n const sizeGroups = sanitizedSizes.split(',');\n\n return sizeGroups.map(group => group.split('x').map(Number));\n};\n\nconst addPosnToTargetings = (targetings, index) => {\n const posn = `posn=${index}`;\n return targetings ? `${targetings},${posn}` : posn;\n};\n\nconst buildTargetingValue = valueTargeting =>\n valueTargeting.includes('[') && valueTargeting.includes(']')\n ? valueTargeting.replace(/\\;|\\[|\\]/gm, char => (char === ';' ? ',' : '')).split(',')\n : valueTargeting;\n\nconst setCustomTargetings = (targetings, cardBannerIndex) => {\n let bannerTargetings = {};\n\n const updatedTargetings = cardBannerIndex\n ? addPosnToTargetings(targetings, cardBannerIndex)\n : targetings;\n\n const isValidTargeting = updatedTargetings && typeof updatedTargetings === 'string';\n\n if (isValidTargeting) {\n const customTargeting = {};\n\n let splitTargeting = updatedTargetings.split(',');\n splitTargeting = { ...splitTargeting };\n\n Object.keys(splitTargeting).forEach(key => {\n const [keyTargeting, valueTargeting] = splitTargeting[key].split('=');\n\n if (keyTargeting && valueTargeting) {\n customTargeting[keyTargeting] = buildTargetingValue(valueTargeting);\n }\n });\n bannerTargetings = { ...bannerTargetings, ...customTargeting };\n }\n\n return bannerTargetings;\n};\n\nconst buildParsedAdunit = (path, countContentHierarchies, baseAdunit, adunit) => {\n if (!Number.isInteger(countContentHierarchies)) return '';\n\n const base = baseAdunit || process.env.DFP_BASE_ADUNIT;\n const hasChildren = countContentHierarchies !== 0;\n const { url } = parseUrl(path);\n let urlParts = url\n .split('/')\n .filter(Boolean)\n .map(urlPart => urlPart.replace(/-/g, ''));\n urlParts = urlParts.slice(0, hasChildren ? urlParts.length : urlParts.length - 1).join('/');\n urlParts = urlParts ? `${urlParts}/` : urlParts;\n const endAdunit = adunit || END_ADUNIT;\n\n return `${base}/${urlParts}${endAdunit}`;\n};\n\nconst getBannerSizes = (sizeId, bannerSizes) =>\n sizeId && bannerSizes && bannerSizes.length\n ? bannerSizes.map(({ width, height }) => [width, height])\n : null;\n\nconst buildBannerSizes = (sizeId, bannerSizes, sizes) => {\n let parsedSizes = getBannerSizes(sizeId, bannerSizes);\n\n if (!parsedSizes && sizes) parsedSizes = getParsedSizes(sizes);\n\n return parsedSizes;\n};\n\nconst buildContextualTargeting = (actionKey, props = {}, propsToDisplay = []) => {\n if (actionKey && props[actionKey] && props[actionKey][0]) {\n const data = props[actionKey][0];\n return buildPropsData(data, propsToDisplay);\n }\n return {};\n};\n\nconst buildSizeMapping = (sizeId, bannerSizes) => {\n let sizeMapping = [];\n\n if (sizeId && bannerSizes && bannerSizes.length) {\n const groupedViewports = bannerSizes.reduce((acc, { width, height, viewports = [] }) => {\n const size = width && height ? [width, height] : null; // if one dimension is falsey then it shouldn't display\n\n if (viewports) {\n viewports.forEach(({ width: viewportWidth, height: viewportHeight }) => {\n const key = `${viewportWidth || 0}x${viewportHeight || 0}`;\n acc[key] = acc[key] || [];\n if (size) acc[key].push(size);\n });\n }\n return acc;\n }, {});\n\n sizeMapping = Object.keys(groupedViewports).map(keyGroupedViewport => {\n const [viewportWidth, viewportHeight] = keyGroupedViewport.split('x');\n return {\n viewport: [Number(viewportWidth), Number(viewportHeight)],\n sizes: groupedViewports[keyGroupedViewport]\n };\n });\n }\n\n return sizeMapping;\n};\n\nconst getMaxBannerHeight = bannerSizes => {\n if (Array.isArray(bannerSizes) && bannerSizes.length > 0) {\n return Math.max(...bannerSizes.map(o => o.height));\n }\n return MAX_BANNER_HEIGHT;\n};\n\nconst getMinBannerHeight = bannerSizes => {\n if (Array.isArray(bannerSizes) && bannerSizes.length > 0) {\n return Math.min(...bannerSizes.map(o => o.height));\n }\n return MIN_BANNER_HEIGHT;\n};\n\nconst buildUserQuery = userProps => {\n if (!userProps || !userProps.length) return '';\n const basicProps = [];\n const nestedProps = {};\n userProps.forEach(({ propertiesToDisplay }) => {\n const [propKey] = propertiesToDisplay;\n if (!propKey || propKey === 'id') return;\n if (propKey.indexOf('.') !== -1) {\n const [baseProp, nestedProp] = propKey.split('.');\n if (nestedProps[baseProp]) nestedProps[baseProp].push(nestedProp);\n else nestedProps[baseProp] = [nestedProp];\n } else basicProps.push(propKey);\n });\n\n Object.keys(nestedProps).forEach(nestedKey => {\n const nested = nestedProps[nestedKey];\n basicProps.push(nestedKey);\n basicProps.push('{');\n nested.forEach(prop => basicProps.push(prop));\n basicProps.push('}');\n });\n\n return basicProps.join(' ');\n};\n\nconst buildPropsData = (data, props) => {\n if (!data || !props.length) return {};\n const propsWithData = {};\n\n props.forEach(({ propertiesToDisplay, label }) => {\n const [key] = propertiesToDisplay;\n if (!key) return;\n\n const parsedKey = key.split('.');\n const value = getNestedValue(parsedKey, data);\n const labelToUse = label || key;\n\n propsWithData[labelToUse] = value;\n });\n return propsWithData;\n};\n\nconst parseArrayValues = (arr, key) => arr.map(obj => obj[key]).filter(Boolean);\n\nconst getNestedValue = (keys, object) => {\n const key = keys.shift();\n const nestedValue = Array.isArray(object) ? parseArrayValues(object, key) : object[key];\n if (!nestedValue) return null;\n return keys.length ? getNestedValue(keys, nestedValue) : nestedValue;\n};\n\nexport {\n getParsedSizes,\n setCustomTargetings,\n buildParsedAdunit,\n buildBannerSizes,\n buildContextualTargeting,\n buildSizeMapping,\n getMaxBannerHeight,\n getMinBannerHeight,\n buildPropsData,\n buildUserQuery\n};\n"],"mappings":"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"}
|
package/lib/components/Button.js
CHANGED
|
@@ -112,6 +112,10 @@ var Button = function Button(props) {
|
|
|
112
112
|
showChildren = _useState2[0],
|
|
113
113
|
setShowChildren = _useState2[1];
|
|
114
114
|
|
|
115
|
+
(0, _react.useEffect)(function () {
|
|
116
|
+
setShowChildren(false);
|
|
117
|
+
}, [router.asPath]);
|
|
118
|
+
|
|
115
119
|
var checkIfButtonShouldRender = function checkIfButtonShouldRender() {
|
|
116
120
|
if (isLogoutButton) return !!blazeCookie;
|
|
117
121
|
if (!text && !icon) return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","names":["Button","props","type","text","url","icon","name","style","children","clickAction","childSeoVisibility","afterClickText","otherProps","client","useApolloClient","router","useRouter","isLogoutButton","LOGOUT","useCookies","cookies","blazeCookie","blaze_auth","useState","showChildren","setShowChildren","checkIfButtonShouldRender","hasChildren","logout","handleLogout","reload","handleClick","buttonType","modifiers","getClassModifiers","currentProps","href","title","DynamicButton","BlazeLink","BlazeButton","updateChildrensParent","parent","itemId","itemEntity","renderedChildren","renderChildren","onClose","getClickWrapperOptions","shouldUseClickWrapper","wrapperProps","Wrapper","ClickWrapper","Fragment","contentClassName","classnames","propTypes","PropTypes","string","size","bool","oneOfType","arrayOf","node","defaultProps","withTitle"],"sources":["../../src/components/Button.js"],"sourcesContent":["import React, { useState, Fragment } from 'react';\nimport { useCookies } from 'react-cookie';\nimport { useRouter } from 'next/router';\nimport classnames from 'classnames';\nimport BlazeButton from '@blaze-react/button';\nimport { handleLogout } from '@blaze-cms/core-auth-ui';\nimport { useApolloClient } from '@apollo/client';\nimport PropTypes, { bool, string } from 'prop-types';\nimport ClickWrapper from './ClickWrapper';\nimport BlazeLink from './BlazeLink';\nimport { withTitle } from '../HOC';\nimport { getClassModifiers } from '../utils';\nimport { LOGOUT } from '../constants';\nimport {\n renderChildren,\n updateChildrensParent,\n hasChildren,\n getClickWrapperOptions\n} from '../helpers';\n\nconst Button = props => {\n const {\n type,\n text,\n url,\n icon,\n name,\n style,\n children,\n clickAction,\n childSeoVisibility,\n afterClickText,\n ...otherProps\n } = props;\n const client = useApolloClient();\n const router = useRouter();\n const isLogoutButton = clickAction === LOGOUT;\n const [cookies] = useCookies();\n const { blaze_auth: blazeCookie } = cookies;\n const [showChildren, setShowChildren] = useState(false);\n\n const checkIfButtonShouldRender = () => {\n if (isLogoutButton) return !!blazeCookie;\n if (!text && !icon) return false;\n return !!(url || hasChildren(children));\n };\n\n const logout = () => {\n handleLogout(client);\n url ? router.reload(url) : router.reload();\n };\n\n const handleClick = () => {\n if (isLogoutButton) logout();\n if (!url && !isLogoutButton) setShowChildren(!showChildren);\n };\n\n if (!checkIfButtonShouldRender()) return null;\n\n const buttonType = !text && icon ? 'icon' : type;\n const modifiers = getClassModifiers(buttonType, { icon, style, ...otherProps });\n const currentProps = url ? { href: url, title: name } : { name };\n const DynamicButton = url && !isLogoutButton ? BlazeLink : BlazeButton;\n updateChildrensParent(children, otherProps.parent.itemId, otherProps.parent.itemEntity);\n\n const renderedChildren = renderChildren(children, { onClose: handleClick });\n const { shouldUseClickWrapper, wrapperProps } = getClickWrapperOptions(children, props);\n const Wrapper = shouldUseClickWrapper ? ClickWrapper : Fragment;\n\n const contentClassName = classnames('button__content', {\n 'button__content--show': showChildren\n });\n\n return (\n <Wrapper {...wrapperProps}>\n {childSeoVisibility && <div className={contentClassName}>{renderedChildren}</div>}\n {!childSeoVisibility && showChildren && renderedChildren}\n <DynamicButton className={modifiers} onClick={handleClick} {...currentProps}>\n {icon && <i className={icon} />}\n {showChildren ? afterClickText : text}\n </DynamicButton>\n </Wrapper>\n );\n};\n\nButton.propTypes = {\n clickAction: PropTypes.string,\n text: PropTypes.string,\n afterClickText: string,\n name: PropTypes.string,\n type: PropTypes.string,\n url: PropTypes.string,\n size: PropTypes.string,\n icon: PropTypes.string,\n style: PropTypes.string,\n childSeoVisibility: bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nButton.defaultProps = {\n clickAction: '',\n text: '',\n afterClickText: '',\n name: '',\n type: '',\n url: null,\n size: '',\n icon: '',\n style: '',\n children: [],\n childSeoVisibility: false\n};\n\nexport default withTitle(Button);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;AAOA,IAAMA,MAAM,GAAG,SAATA,MAAS,CAAAC,KAAK,EAAI;EACtB,IACEC,IADF,GAYID,KAZJ,CACEC,IADF;EAAA,IAEEC,IAFF,GAYIF,KAZJ,CAEEE,IAFF;EAAA,IAGEC,GAHF,GAYIH,KAZJ,CAGEG,GAHF;EAAA,IAIEC,IAJF,GAYIJ,KAZJ,CAIEI,IAJF;EAAA,IAKEC,IALF,GAYIL,KAZJ,CAKEK,IALF;EAAA,IAMEC,KANF,GAYIN,KAZJ,CAMEM,KANF;EAAA,IAOEC,QAPF,GAYIP,KAZJ,CAOEO,QAPF;EAAA,IAQEC,WARF,GAYIR,KAZJ,CAQEQ,WARF;EAAA,IASEC,kBATF,GAYIT,KAZJ,CASES,kBATF;EAAA,IAUEC,cAVF,GAYIV,KAZJ,CAUEU,cAVF;EAAA,IAWKC,UAXL,6CAYIX,KAZJ;EAaA,IAAMY,MAAM,GAAG,IAAAC,uBAAA,GAAf;EACA,IAAMC,MAAM,GAAG,IAAAC,iBAAA,GAAf;EACA,IAAMC,cAAc,GAAGR,WAAW,KAAKS,iBAAvC;;EACA,kBAAkB,IAAAC,uBAAA,GAAlB;EAAA;EAAA,IAAOC,OAAP;;EACA,IAAoBC,WAApB,GAAoCD,OAApC,CAAQE,UAAR;;EACA,gBAAwC,IAAAC,eAAA,EAAS,KAAT,CAAxC;EAAA;EAAA,IAAOC,YAAP;EAAA,IAAqBC,eAArB;;EAEA,IAAMC,yBAAyB,GAAG,SAA5BA,yBAA4B,GAAM;IACtC,
|
|
1
|
+
{"version":3,"file":"Button.js","names":["Button","props","type","text","url","icon","name","style","children","clickAction","childSeoVisibility","afterClickText","otherProps","client","useApolloClient","router","useRouter","isLogoutButton","LOGOUT","useCookies","cookies","blazeCookie","blaze_auth","useState","showChildren","setShowChildren","useEffect","asPath","checkIfButtonShouldRender","hasChildren","logout","handleLogout","reload","handleClick","buttonType","modifiers","getClassModifiers","currentProps","href","title","DynamicButton","BlazeLink","BlazeButton","updateChildrensParent","parent","itemId","itemEntity","renderedChildren","renderChildren","onClose","getClickWrapperOptions","shouldUseClickWrapper","wrapperProps","Wrapper","ClickWrapper","Fragment","contentClassName","classnames","propTypes","PropTypes","string","size","bool","oneOfType","arrayOf","node","defaultProps","withTitle"],"sources":["../../src/components/Button.js"],"sourcesContent":["import React, { useState, Fragment, useEffect } from 'react';\nimport { useCookies } from 'react-cookie';\nimport { useRouter } from 'next/router';\nimport classnames from 'classnames';\nimport BlazeButton from '@blaze-react/button';\nimport { handleLogout } from '@blaze-cms/core-auth-ui';\nimport { useApolloClient } from '@apollo/client';\nimport PropTypes, { bool, string } from 'prop-types';\nimport ClickWrapper from './ClickWrapper';\nimport BlazeLink from './BlazeLink';\nimport { withTitle } from '../HOC';\nimport { getClassModifiers } from '../utils';\nimport { LOGOUT } from '../constants';\nimport {\n renderChildren,\n updateChildrensParent,\n hasChildren,\n getClickWrapperOptions\n} from '../helpers';\n\nconst Button = props => {\n const {\n type,\n text,\n url,\n icon,\n name,\n style,\n children,\n clickAction,\n childSeoVisibility,\n afterClickText,\n ...otherProps\n } = props;\n const client = useApolloClient();\n const router = useRouter();\n const isLogoutButton = clickAction === LOGOUT;\n const [cookies] = useCookies();\n const { blaze_auth: blazeCookie } = cookies;\n const [showChildren, setShowChildren] = useState(false);\n\n useEffect(\n () => {\n setShowChildren(false);\n },\n [router.asPath]\n );\n\n const checkIfButtonShouldRender = () => {\n if (isLogoutButton) return !!blazeCookie;\n if (!text && !icon) return false;\n return !!(url || hasChildren(children));\n };\n\n const logout = () => {\n handleLogout(client);\n url ? router.reload(url) : router.reload();\n };\n\n const handleClick = () => {\n if (isLogoutButton) logout();\n if (!url && !isLogoutButton) setShowChildren(!showChildren);\n };\n\n if (!checkIfButtonShouldRender()) return null;\n\n const buttonType = !text && icon ? 'icon' : type;\n const modifiers = getClassModifiers(buttonType, { icon, style, ...otherProps });\n const currentProps = url ? { href: url, title: name } : { name };\n const DynamicButton = url && !isLogoutButton ? BlazeLink : BlazeButton;\n updateChildrensParent(children, otherProps.parent.itemId, otherProps.parent.itemEntity);\n\n const renderedChildren = renderChildren(children, { onClose: handleClick });\n const { shouldUseClickWrapper, wrapperProps } = getClickWrapperOptions(children, props);\n const Wrapper = shouldUseClickWrapper ? ClickWrapper : Fragment;\n\n const contentClassName = classnames('button__content', {\n 'button__content--show': showChildren\n });\n\n return (\n <Wrapper {...wrapperProps}>\n {childSeoVisibility && <div className={contentClassName}>{renderedChildren}</div>}\n {!childSeoVisibility && showChildren && renderedChildren}\n <DynamicButton className={modifiers} onClick={handleClick} {...currentProps}>\n {icon && <i className={icon} />}\n {showChildren ? afterClickText : text}\n </DynamicButton>\n </Wrapper>\n );\n};\n\nButton.propTypes = {\n clickAction: PropTypes.string,\n text: PropTypes.string,\n afterClickText: string,\n name: PropTypes.string,\n type: PropTypes.string,\n url: PropTypes.string,\n size: PropTypes.string,\n icon: PropTypes.string,\n style: PropTypes.string,\n childSeoVisibility: bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nButton.defaultProps = {\n clickAction: '',\n text: '',\n afterClickText: '',\n name: '',\n type: '',\n url: null,\n size: '',\n icon: '',\n style: '',\n children: [],\n childSeoVisibility: false\n};\n\nexport default withTitle(Button);\n"],"mappings":"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"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
require("core-js/modules/es.object.keys.js");
|
|
4
|
-
|
|
5
3
|
require("core-js/modules/es.symbol.js");
|
|
6
4
|
|
|
7
5
|
require("core-js/modules/es.array.filter.js");
|
|
@@ -47,6 +45,8 @@ require("core-js/modules/es.array.includes.js");
|
|
|
47
45
|
|
|
48
46
|
require("core-js/modules/es.string.includes.js");
|
|
49
47
|
|
|
48
|
+
require("core-js/modules/es.object.keys.js");
|
|
49
|
+
|
|
50
50
|
require("core-js/modules/es.date.now.js");
|
|
51
51
|
|
|
52
52
|
require("core-js/modules/es.date.to-string.js");
|
|
@@ -185,7 +185,13 @@ var SearchFilterContainer = function SearchFilterContainer(_ref) {
|
|
|
185
185
|
var _getEntityData = (0, _helpers2.getEntityData)(entity),
|
|
186
186
|
docType = _getEntityData.docType;
|
|
187
187
|
|
|
188
|
-
var filtersQuery = shouldAddFilters ? (0, _helpers.buildFiltersQuery)(
|
|
188
|
+
var filtersQuery = shouldAddFilters ? (0, _helpers.buildFiltersQuery)({
|
|
189
|
+
query: filterValues,
|
|
190
|
+
filterBy: filterBy,
|
|
191
|
+
filterByProperty: filterByProperty,
|
|
192
|
+
rangeValues: rangeValues,
|
|
193
|
+
queryKeys: Object.keys(query)
|
|
194
|
+
}) : [];
|
|
189
195
|
var rawQueryStringified = (0, _helpers.buildRawQueryStringified)(checkboxSelectValues, rangeValues, docType, filtersQuery);
|
|
190
196
|
|
|
191
197
|
var _useQuery = (0, _client.useQuery)(action, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchFilterContainer.js","names":["reducer","state","action","newValues","type","shouldSearch","Error","SearchFilterContainer","entity","url","filters","name","isCollapsedOnResponsive","groupAfterMobile","groupAfterDesktop","filterBy","filterByProperty","shouldAddFilters","router","useRouter","asPath","searchFilterRef","useRef","useState","key","setKey","displaySearchFilter","setDisplaySearchFilter","urlPath","setUrlPath","parseUrl","currentUrl","query","sort","sortby","useReducer","getInitialFilterValues","filterValues","dispatch","useEffect","hasUrl","sortValues","stringify","baseQuery","getSearchPublishedContent","RAW_RESULTS","checkboxSelectValues","rangeValues","forEach","propsToDisplay","CHECKBOX_SELECT","includes","push","RANGE","getEntityData","docType","filtersQuery","buildFiltersQuery","rawQueryStringified","buildRawQueryStringified","useQuery","variables","limit","skip","data","error","message","length","searchPublishedContent","rawResults","filterData","aggregations","dataNotSet","initialFilterValues","handleSearch","newQuery","scrollToFirstList","shallow","scroll","then","Date","now","newUrl","buildNewQuery","document","getElementsByClassName","list","shouldScrollToFirstList","window","scrollTo","left","top","pageYOffset","SCROLL_OFFSET","getBoundingClientRect","propTypes","PropTypes","string","array","isRequired","bool","number","defaultProps","withTitle"],"sources":["../../../src/components/SearchFilter/SearchFilterContainer.js"],"sourcesContent":["import React, { useState, useRef, useReducer, useEffect } from 'react';\nimport { useRouter } from 'next/router';\nimport { useQuery } from '@apollo/client';\nimport PropTypes from 'prop-types';\nimport { parseUrl, stringify } from 'query-string';\nimport SearchFilter from './SearchFilter';\nimport { withTitle } from '../../HOC';\nimport { getSearchPublishedContent } from '../../application/query';\nimport {\n buildNewQuery,\n buildRawQueryStringified,\n getInitialFilterValues,\n buildFiltersQuery\n} from './helpers';\nimport { getEntityData } from '../../helpers';\nimport { RAW_RESULTS, RANGE, CHECKBOX_SELECT } from './constants';\nimport { SCROLL_OFFSET } from '../../constants';\n\nconst reducer = (state, action) => {\n const { newValues, type, shouldSearch = true } = action;\n\n switch (type) {\n case 'update':\n return { ...state, ...newValues, shouldSearch };\n case 'resetSearch':\n return { ...state, shouldSearch: false };\n case 'reset':\n return { ...newValues, shouldSearch: false };\n default:\n throw new Error();\n }\n};\n\nconst SearchFilterContainer = ({\n entity,\n url,\n filters,\n name,\n isCollapsedOnResponsive,\n groupAfterMobile,\n groupAfterDesktop,\n filterBy,\n filterByProperty,\n shouldAddFilters\n}) => {\n const router = useRouter();\n const { asPath } = router;\n const searchFilterRef = useRef(null);\n const [key, setKey] = useState(`filter-${name}`);\n const [displaySearchFilter, setDisplaySearchFilter] = useState(false);\n const [urlPath, setUrlPath] = useState(asPath); // used as asPath can take too long to update\n const {\n url: currentUrl,\n query: { sort, sortby },\n query\n } = parseUrl(urlPath);\n const [filterValues, dispatch] = useReducer(\n reducer,\n getInitialFilterValues(null, filters, query)\n );\n\n useEffect(\n () => {\n if (asPath) setUrlPath(asPath);\n },\n [asPath]\n );\n\n const hasUrl = !!url;\n\n const sortValues = sort && sortby ? stringify({ sort, sortby }) : '';\n const baseQuery = sortValues ? `${currentUrl}?${sortValues}` : currentUrl;\n\n const action = getSearchPublishedContent(RAW_RESULTS);\n const checkboxSelectValues = [];\n const rangeValues = [];\n\n filters.forEach(({ type, propsToDisplay }) => {\n if (CHECKBOX_SELECT.includes(type)) {\n checkboxSelectValues.push(propsToDisplay[0]);\n } else if (type === RANGE) {\n rangeValues.push(...propsToDisplay);\n }\n });\n\n const { docType } = getEntityData(entity);\n\n const filtersQuery = shouldAddFilters\n ? buildFiltersQuery(filterValues || query, filterBy, filterByProperty, rangeValues)\n : [];\n\n const rawQueryStringified = buildRawQueryStringified(\n checkboxSelectValues,\n rangeValues,\n docType,\n filtersQuery\n );\n\n const { data, error } = useQuery(action, {\n variables: { rawQueryStringified, limit: 0 }, // we only want aggs so limit=0 for no search results\n skip: !rawQueryStringified\n });\n\n if (error) return error.message;\n if (!filters.length) return null;\n\n const { searchPublishedContent: { rawResults: { aggregations: filterData } = {} } = {} } =\n data || {};\n\n if (filterValues.dataNotSet && filterData) {\n const initialFilterValues = getInitialFilterValues(filterData, filters, query);\n dispatch({ newValues: initialFilterValues, shouldSearch: false, type: 'update' });\n }\n\n const handleSearch = newQuery => {\n setDisplaySearchFilter(false);\n\n if (!newQuery) {\n scrollToFirstList();\n setUrlPath(baseQuery);\n return router.push('/Resolver', baseQuery, { shallow: !hasUrl, scroll: false }).then(() => {\n setKey(`filter-${name}:${Date.now()}`); // remove after range component update\n });\n }\n const newUrl = buildNewQuery(url, currentUrl, newQuery, sortValues);\n scrollToFirstList();\n setUrlPath(newUrl);\n return router.push('/Resolver', newUrl, { shallow: !hasUrl, scroll: false });\n };\n\n const scrollToFirstList = () => {\n const [list] = document.getElementsByClassName('list-top');\n const shouldScrollToFirstList = !hasUrl && list;\n\n if (shouldScrollToFirstList) {\n window.scrollTo({\n left: 0,\n top: window.pageYOffset - SCROLL_OFFSET + list.getBoundingClientRect().top\n });\n } else {\n window.scrollTo(0, 0);\n }\n };\n if (!filterValues) return '';\n\n return (\n <SearchFilter\n key={key}\n setAppliedFilters={dispatch}\n searchFilterRef={searchFilterRef}\n data={filterData}\n filters={filters}\n hasUrl={hasUrl}\n entity={entity}\n handleSearch={handleSearch}\n filterValues={filterValues}\n name={name}\n isCollapsedOnResponsive={isCollapsedOnResponsive}\n displaySearchFilter={displaySearchFilter}\n setDisplaySearchFilter={setDisplaySearchFilter}\n groupAfterMobile={groupAfterMobile}\n groupAfterDesktop={groupAfterDesktop}\n />\n );\n};\n\nSearchFilterContainer.propTypes = {\n entity: PropTypes.string,\n url: PropTypes.string,\n filters: PropTypes.array,\n name: PropTypes.string.isRequired,\n isCollapsedOnResponsive: PropTypes.bool,\n groupAfterMobile: PropTypes.number,\n groupAfterDesktop: PropTypes.number,\n filterBy: PropTypes.array,\n filterByProperty: PropTypes.array,\n shouldAddFilters: PropTypes.bool\n};\n\nSearchFilterContainer.defaultProps = {\n url: null,\n filters: [],\n entity: '',\n isCollapsedOnResponsive: true,\n groupAfterMobile: 0,\n groupAfterDesktop: 0,\n filterBy: [],\n filterByProperty: [],\n shouldAddFilters: false\n};\n\nexport default withTitle(SearchFilterContainer);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SearchFilterContainer.js","names":["reducer","state","action","newValues","type","shouldSearch","Error","SearchFilterContainer","entity","url","filters","name","isCollapsedOnResponsive","groupAfterMobile","groupAfterDesktop","filterBy","filterByProperty","shouldAddFilters","router","useRouter","asPath","searchFilterRef","useRef","useState","key","setKey","displaySearchFilter","setDisplaySearchFilter","urlPath","setUrlPath","parseUrl","currentUrl","query","sort","sortby","useReducer","getInitialFilterValues","filterValues","dispatch","useEffect","hasUrl","sortValues","stringify","baseQuery","getSearchPublishedContent","RAW_RESULTS","checkboxSelectValues","rangeValues","forEach","propsToDisplay","CHECKBOX_SELECT","includes","push","RANGE","getEntityData","docType","filtersQuery","buildFiltersQuery","queryKeys","Object","keys","rawQueryStringified","buildRawQueryStringified","useQuery","variables","limit","skip","data","error","message","length","searchPublishedContent","rawResults","filterData","aggregations","dataNotSet","initialFilterValues","handleSearch","newQuery","scrollToFirstList","shallow","scroll","then","Date","now","newUrl","buildNewQuery","document","getElementsByClassName","list","shouldScrollToFirstList","window","scrollTo","left","top","pageYOffset","SCROLL_OFFSET","getBoundingClientRect","propTypes","PropTypes","string","array","isRequired","bool","number","defaultProps","withTitle"],"sources":["../../../src/components/SearchFilter/SearchFilterContainer.js"],"sourcesContent":["import React, { useState, useRef, useReducer, useEffect } from 'react';\nimport { useRouter } from 'next/router';\nimport { useQuery } from '@apollo/client';\nimport PropTypes from 'prop-types';\nimport { parseUrl, stringify } from 'query-string';\nimport SearchFilter from './SearchFilter';\nimport { withTitle } from '../../HOC';\nimport { getSearchPublishedContent } from '../../application/query';\nimport {\n buildNewQuery,\n buildRawQueryStringified,\n getInitialFilterValues,\n buildFiltersQuery\n} from './helpers';\nimport { getEntityData } from '../../helpers';\nimport { RAW_RESULTS, RANGE, CHECKBOX_SELECT } from './constants';\nimport { SCROLL_OFFSET } from '../../constants';\n\nconst reducer = (state, action) => {\n const { newValues, type, shouldSearch = true } = action;\n\n switch (type) {\n case 'update':\n return { ...state, ...newValues, shouldSearch };\n case 'resetSearch':\n return { ...state, shouldSearch: false };\n case 'reset':\n return { ...newValues, shouldSearch: false };\n default:\n throw new Error();\n }\n};\n\nconst SearchFilterContainer = ({\n entity,\n url,\n filters,\n name,\n isCollapsedOnResponsive,\n groupAfterMobile,\n groupAfterDesktop,\n filterBy,\n filterByProperty,\n shouldAddFilters\n}) => {\n const router = useRouter();\n const { asPath } = router;\n const searchFilterRef = useRef(null);\n const [key, setKey] = useState(`filter-${name}`);\n const [displaySearchFilter, setDisplaySearchFilter] = useState(false);\n const [urlPath, setUrlPath] = useState(asPath); // used as asPath can take too long to update\n const {\n url: currentUrl,\n query: { sort, sortby },\n query\n } = parseUrl(urlPath);\n const [filterValues, dispatch] = useReducer(\n reducer,\n getInitialFilterValues(null, filters, query)\n );\n\n useEffect(\n () => {\n if (asPath) setUrlPath(asPath);\n },\n [asPath]\n );\n\n const hasUrl = !!url;\n\n const sortValues = sort && sortby ? stringify({ sort, sortby }) : '';\n const baseQuery = sortValues ? `${currentUrl}?${sortValues}` : currentUrl;\n\n const action = getSearchPublishedContent(RAW_RESULTS);\n const checkboxSelectValues = [];\n const rangeValues = [];\n\n filters.forEach(({ type, propsToDisplay }) => {\n if (CHECKBOX_SELECT.includes(type)) {\n checkboxSelectValues.push(propsToDisplay[0]);\n } else if (type === RANGE) {\n rangeValues.push(...propsToDisplay);\n }\n });\n\n const { docType } = getEntityData(entity);\n\n const filtersQuery = shouldAddFilters\n ? buildFiltersQuery({\n query: filterValues,\n filterBy,\n filterByProperty,\n rangeValues,\n queryKeys: Object.keys(query)\n })\n : [];\n\n const rawQueryStringified = buildRawQueryStringified(\n checkboxSelectValues,\n rangeValues,\n docType,\n filtersQuery\n );\n\n const { data, error } = useQuery(action, {\n variables: { rawQueryStringified, limit: 0 }, // we only want aggs so limit=0 for no search results\n skip: !rawQueryStringified\n });\n\n if (error) return error.message;\n if (!filters.length) return null;\n\n const { searchPublishedContent: { rawResults: { aggregations: filterData } = {} } = {} } =\n data || {};\n\n if (filterValues.dataNotSet && filterData) {\n const initialFilterValues = getInitialFilterValues(filterData, filters, query);\n dispatch({ newValues: initialFilterValues, shouldSearch: false, type: 'update' });\n }\n\n const handleSearch = newQuery => {\n setDisplaySearchFilter(false);\n\n if (!newQuery) {\n scrollToFirstList();\n setUrlPath(baseQuery);\n return router.push('/Resolver', baseQuery, { shallow: !hasUrl, scroll: false }).then(() => {\n setKey(`filter-${name}:${Date.now()}`); // remove after range component update\n });\n }\n const newUrl = buildNewQuery(url, currentUrl, newQuery, sortValues);\n scrollToFirstList();\n setUrlPath(newUrl);\n return router.push('/Resolver', newUrl, { shallow: !hasUrl, scroll: false });\n };\n\n const scrollToFirstList = () => {\n const [list] = document.getElementsByClassName('list-top');\n const shouldScrollToFirstList = !hasUrl && list;\n\n if (shouldScrollToFirstList) {\n window.scrollTo({\n left: 0,\n top: window.pageYOffset - SCROLL_OFFSET + list.getBoundingClientRect().top\n });\n } else {\n window.scrollTo(0, 0);\n }\n };\n if (!filterValues) return '';\n\n return (\n <SearchFilter\n key={key}\n setAppliedFilters={dispatch}\n searchFilterRef={searchFilterRef}\n data={filterData}\n filters={filters}\n hasUrl={hasUrl}\n entity={entity}\n handleSearch={handleSearch}\n filterValues={filterValues}\n name={name}\n isCollapsedOnResponsive={isCollapsedOnResponsive}\n displaySearchFilter={displaySearchFilter}\n setDisplaySearchFilter={setDisplaySearchFilter}\n groupAfterMobile={groupAfterMobile}\n groupAfterDesktop={groupAfterDesktop}\n />\n );\n};\n\nSearchFilterContainer.propTypes = {\n entity: PropTypes.string,\n url: PropTypes.string,\n filters: PropTypes.array,\n name: PropTypes.string.isRequired,\n isCollapsedOnResponsive: PropTypes.bool,\n groupAfterMobile: PropTypes.number,\n groupAfterDesktop: PropTypes.number,\n filterBy: PropTypes.array,\n filterByProperty: PropTypes.array,\n shouldAddFilters: PropTypes.bool\n};\n\nSearchFilterContainer.defaultProps = {\n url: null,\n filters: [],\n entity: '',\n isCollapsedOnResponsive: true,\n groupAfterMobile: 0,\n groupAfterDesktop: 0,\n filterBy: [],\n filterByProperty: [],\n shouldAddFilters: false\n};\n\nexport default withTitle(SearchFilterContainer);\n"],"mappings":"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"}
|
|
@@ -67,7 +67,7 @@ var Range = function Range(_ref) {
|
|
|
67
67
|
filterValues = _ref.filterValues,
|
|
68
68
|
shouldSearch = _ref.shouldSearch;
|
|
69
69
|
var router = (0, _router.useRouter)();
|
|
70
|
-
var debounceAmount = shouldSearch ? 1200 :
|
|
70
|
+
var debounceAmount = shouldSearch ? 1200 : 400;
|
|
71
71
|
|
|
72
72
|
var _parseUrl = (0, _queryString.parseUrl)((0, _decodeEncode.decodeValue)(router.asPath)),
|
|
73
73
|
query = _parseUrl.query;
|
|
@@ -91,7 +91,6 @@ var Range = function Range(_ref) {
|
|
|
91
91
|
min = _calculateMinMax.min,
|
|
92
92
|
max = _calculateMinMax.max;
|
|
93
93
|
|
|
94
|
-
var shouldShowRange = rangeOption && min !== max;
|
|
95
94
|
var minValue = rangeValue.minValue < min ? min : rangeValue.minValue;
|
|
96
95
|
var maxValue = rangeValue.maxValue > max ? max : rangeValue.maxValue;
|
|
97
96
|
|
|
@@ -126,7 +125,7 @@ var Range = function Range(_ref) {
|
|
|
126
125
|
});
|
|
127
126
|
updateFilterValues(updatedOptions, false);
|
|
128
127
|
}
|
|
129
|
-
})),
|
|
128
|
+
})), /*#__PURE__*/_react["default"].createElement(_rangeFilter["default"], {
|
|
130
129
|
key: "".concat(rangeOption, "-").concat(minValue, "-").concat(maxValue),
|
|
131
130
|
name: rangeOption,
|
|
132
131
|
label: hasMultipleOptions ? '' : label,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Range.js","names":["Range","rangeInterval","label","entity","propsToDisplay","dataAggregations","updateFilterValues","filterValues","shouldSearch","router","useRouter","debounceAmount","parseUrl","decodeValue","asPath","query","hasMultipleOptions","length","initialRangeOption","getIntersectedProp","rangeOption","selectedOption","rangeValue","useGetSingleEntitySchema","data","getEntitySchema","loading","options","getSelectOptions","calculateMinMax","min","max","
|
|
1
|
+
{"version":3,"file":"Range.js","names":["Range","rangeInterval","label","entity","propsToDisplay","dataAggregations","updateFilterValues","filterValues","shouldSearch","router","useRouter","debounceAmount","parseUrl","decodeValue","asPath","query","hasMultipleOptions","length","initialRangeOption","getIntersectedProp","rangeOption","selectedOption","rangeValue","useGetSingleEntitySchema","data","getEntitySchema","loading","options","getSelectOptions","calculateMinMax","min","max","minValue","maxValue","valueToUse","handleChange","debounce","option","value","updatedOptions","forEach","prop","eMin","eMax","initValue","getRangeValue","propTypes","PropTypes","array","isRequired","string","object","func","bool","number","defaultProps","withTitle"],"sources":["../../../../src/components/SearchFilter/components/Range.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport RangeFilter from '@blaze-react/range-filter';\nimport { useRouter } from 'next/router';\nimport Select from '@blaze-react/select';\nimport { parseUrl } from 'query-string';\nimport { useGetSingleEntitySchema } from '../../../hooks';\nimport { withTitle } from '../../../HOC';\nimport { getSelectOptions, getIntersectedProp, getRangeValue, calculateMinMax } from '../helpers';\nimport { decodeValue } from '../helpers/decode-encode';\n\nconst Range = ({\n rangeInterval,\n label,\n entity,\n propsToDisplay,\n dataAggregations,\n updateFilterValues,\n filterValues,\n shouldSearch\n}) => {\n const router = useRouter();\n const debounceAmount = shouldSearch ? 1200 : 400;\n const { query } = parseUrl(decodeValue(router.asPath));\n const hasMultipleOptions = propsToDisplay.length > 1;\n const initialRangeOption = getIntersectedProp(query, propsToDisplay) || propsToDisplay[0];\n const rangeOption =\n (filterValues[initialRangeOption] && filterValues[initialRangeOption].selectedOption) ||\n initialRangeOption;\n const rangeValue = filterValues[rangeOption];\n\n const { data: { getEntitySchema = {} } = {}, loading } = useGetSingleEntitySchema(\n entity,\n !hasMultipleOptions\n );\n\n if (loading || !rangeOption || !rangeValue) return '';\n\n const options = getSelectOptions(getEntitySchema, propsToDisplay);\n // get range from aggregations so it updates\n const { min, max } = calculateMinMax(dataAggregations[rangeOption], rangeInterval);\n const minValue = rangeValue.minValue < min ? min : rangeValue.minValue;\n const maxValue = rangeValue.maxValue > max ? max : rangeValue.maxValue;\n const valueToUse = { ...rangeValue, min, max, minValue, maxValue };\n\n const handleChange = debounce((option, value) => {\n updateFilterValues({ [option]: { ...value, selectedOption: rangeOption } }, shouldSearch);\n }, debounceAmount);\n\n return (\n <>\n {hasMultipleOptions && (\n <>\n <label>{label}</label>\n <Select\n value={rangeOption}\n id={rangeOption}\n options={options}\n required\n onChange={({ value }) => {\n const updatedOptions = {};\n propsToDisplay.forEach(prop => {\n const { min: eMin, max: eMax } = filterValues[prop];\n const initValue = getRangeValue(null, rangeInterval, eMin, eMax);\n updatedOptions[prop] = { ...initValue, selectedOption: value };\n });\n\n updateFilterValues(updatedOptions, false);\n }}\n />\n </>\n )}\n <RangeFilter\n key={`${rangeOption}-${minValue}-${maxValue}`}\n name={rangeOption}\n label={hasMultipleOptions ? '' : label}\n value={valueToUse}\n id={rangeOption}\n onChange={({ value }) => {\n handleChange(rangeOption, value);\n }}\n />\n </>\n );\n};\n\nRange.propTypes = {\n propsToDisplay: PropTypes.array.isRequired,\n entity: PropTypes.string.isRequired,\n filterValues: PropTypes.object.isRequired,\n updateFilterValues: PropTypes.func.isRequired,\n shouldSearch: PropTypes.bool,\n rangeInterval: PropTypes.number,\n label: PropTypes.string,\n dataAggregations: PropTypes.object.isRequired\n};\n\nRange.defaultProps = {\n shouldSearch: false,\n rangeInterval: 1,\n label: ''\n};\n\nexport default withTitle(Range);\n"],"mappings":"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"}
|
|
@@ -37,14 +37,20 @@ require("core-js/modules/es.array.index-of.js");
|
|
|
37
37
|
|
|
38
38
|
var QUERY_KEYS_TO_IGNORE = ['dataNotSet', 'shouldSearch', 'search_term'];
|
|
39
39
|
|
|
40
|
-
var builFilterObject = function builFilterObject(
|
|
40
|
+
var builFilterObject = function builFilterObject(_ref) {
|
|
41
|
+
var queryKey = _ref.queryKey,
|
|
42
|
+
value = _ref.value,
|
|
43
|
+
filters = _ref.filters,
|
|
44
|
+
isRange = _ref.isRange,
|
|
45
|
+
isInQuery = _ref.isInQuery;
|
|
46
|
+
|
|
41
47
|
if (isRange) {
|
|
42
48
|
// don't add to query if value matches range values
|
|
43
|
-
if (value.min !== value.minValue && value.max !== value.maxValue) {
|
|
49
|
+
if (isInQuery || value.min !== value.minValue && value.max !== value.maxValue) {
|
|
44
50
|
filters.push({
|
|
45
51
|
range: (0, _defineProperty2["default"])({}, queryKey, {
|
|
46
|
-
gte: Number(value.
|
|
47
|
-
lte: Number(value.
|
|
52
|
+
gte: Number(value.minValue),
|
|
53
|
+
lte: Number(value.maxValue)
|
|
48
54
|
})
|
|
49
55
|
});
|
|
50
56
|
}
|
|
@@ -70,14 +76,26 @@ var builFilterObject = function builFilterObject(queryKey, value, filters, isRan
|
|
|
70
76
|
});
|
|
71
77
|
};
|
|
72
78
|
|
|
73
|
-
var buildFiltersQuery = function buildFiltersQuery(
|
|
79
|
+
var buildFiltersQuery = function buildFiltersQuery(_ref2) {
|
|
80
|
+
var query = _ref2.query,
|
|
81
|
+
filterBy = _ref2.filterBy,
|
|
82
|
+
filterByProperty = _ref2.filterByProperty,
|
|
83
|
+
rangeValues = _ref2.rangeValues,
|
|
84
|
+
queryKeys = _ref2.queryKeys;
|
|
74
85
|
var mustFilters = [];
|
|
75
86
|
Object.keys(query).forEach(function (queryKey) {
|
|
76
87
|
if (QUERY_KEYS_TO_IGNORE.includes(queryKey)) return;
|
|
77
88
|
if (!queryKey || !query[queryKey]) return;
|
|
78
89
|
var queryValue = query[queryKey];
|
|
79
90
|
var isRange = rangeValues.includes(queryKey);
|
|
80
|
-
|
|
91
|
+
var isInQuery = queryKeys.includes(queryKey);
|
|
92
|
+
builFilterObject({
|
|
93
|
+
queryKey: queryKey,
|
|
94
|
+
value: queryValue,
|
|
95
|
+
filters: mustFilters,
|
|
96
|
+
isRange: isRange,
|
|
97
|
+
isInQuery: isInQuery
|
|
98
|
+
});
|
|
81
99
|
});
|
|
82
100
|
|
|
83
101
|
if (filterByProperty && filterByProperty.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-filters-query.js","names":["QUERY_KEYS_TO_IGNORE","builFilterObject","queryKey","value","filters","isRange","min","minValue","max","maxValue","push","range","gte","Number","lte","key","isArray","Array","singleFilterObj","match","forEach","filterValue","buildFiltersQuery","query","filterBy","filterByProperty","rangeValues","mustFilters","Object","keys","includes","queryValue","length","filterByPropOption","split","filterByPropKey","filterByOption","indexOf","filteryByValue","filterByKeyword"],"sources":["../../../../src/components/SearchFilter/helpers/build-filters-query.js"],"sourcesContent":["const QUERY_KEYS_TO_IGNORE = ['dataNotSet', 'shouldSearch', 'search_term'];\n\nconst builFilterObject = (queryKey, value, filters, isRange) => {\n if (isRange) {\n // don't add to query if value matches range values\n if (value.min !== value.minValue && value.max !== value.maxValue) {\n filters.push({\n range: {\n [queryKey]: {\n gte: Number(value.
|
|
1
|
+
{"version":3,"file":"build-filters-query.js","names":["QUERY_KEYS_TO_IGNORE","builFilterObject","queryKey","value","filters","isRange","isInQuery","min","minValue","max","maxValue","push","range","gte","Number","lte","key","isArray","Array","singleFilterObj","match","forEach","filterValue","buildFiltersQuery","query","filterBy","filterByProperty","rangeValues","queryKeys","mustFilters","Object","keys","includes","queryValue","length","filterByPropOption","split","filterByPropKey","filterByOption","indexOf","filteryByValue","filterByKeyword"],"sources":["../../../../src/components/SearchFilter/helpers/build-filters-query.js"],"sourcesContent":["const QUERY_KEYS_TO_IGNORE = ['dataNotSet', 'shouldSearch', 'search_term'];\n\nconst builFilterObject = ({ queryKey, value, filters, isRange, isInQuery }) => {\n if (isRange) {\n // don't add to query if value matches range values\n if (isInQuery || (value.min !== value.minValue && value.max !== value.maxValue)) {\n filters.push({\n range: {\n [queryKey]: {\n gte: Number(value.minValue),\n lte: Number(value.maxValue)\n }\n }\n });\n }\n return;\n }\n\n const key = isRange ? queryKey : `${queryKey}.keyword`;\n\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, rangeValues, queryKeys }) => {\n const mustFilters = [];\n Object.keys(query).forEach(queryKey => {\n if (QUERY_KEYS_TO_IGNORE.includes(queryKey)) return;\n if (!queryKey || !query[queryKey]) return;\n const queryValue = query[queryKey];\n\n const isRange = rangeValues.includes(queryKey);\n const isInQuery = queryKeys.includes(queryKey);\n builFilterObject({ queryKey, value: queryValue, filters: mustFilters, isRange, isInQuery });\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":"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"}
|
|
@@ -171,7 +171,7 @@ const buildPropsData = (data, props) => {
|
|
|
171
171
|
return propsWithData;
|
|
172
172
|
};
|
|
173
173
|
|
|
174
|
-
const parseArrayValues = (arr, key) => arr.map(obj => obj[key]).filter(Boolean)
|
|
174
|
+
const parseArrayValues = (arr, key) => arr.map(obj => obj[key]).filter(Boolean);
|
|
175
175
|
|
|
176
176
|
const getNestedValue = (keys, object) => {
|
|
177
177
|
const key = keys.shift();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["parseUrl","END_ADUNIT","MAX_BANNER_HEIGHT","MIN_BANNER_HEIGHT","getParsedSizes","sizes","sanitizedSizes","replace","toLowerCase","sizeGroups","split","map","group","Number","addPosnToTargetings","targetings","index","posn","buildTargetingValue","valueTargeting","includes","char","setCustomTargetings","cardBannerIndex","bannerTargetings","updatedTargetings","isValidTargeting","customTargeting","splitTargeting","Object","keys","forEach","key","keyTargeting","buildParsedAdunit","path","countContentHierarchies","baseAdunit","adunit","isInteger","base","process","env","DFP_BASE_ADUNIT","hasChildren","url","urlParts","filter","Boolean","urlPart","slice","length","join","endAdunit","getBannerSizes","sizeId","bannerSizes","width","height","buildBannerSizes","parsedSizes","buildContextualTargeting","actionKey","props","propsToDisplay","data","buildPropsData","buildSizeMapping","sizeMapping","groupedViewports","reduce","acc","viewports","size","viewportWidth","viewportHeight","push","keyGroupedViewport","viewport","getMaxBannerHeight","Array","isArray","Math","max","o","getMinBannerHeight","min","buildUserQuery","userProps","basicProps","nestedProps","propertiesToDisplay","propKey","indexOf","baseProp","nestedProp","nestedKey","nested","prop","propsWithData","label","parsedKey","value","getNestedValue","labelToUse","parseArrayValues","arr","obj","object","shift","nestedValue"],"sources":["../../../src/components/Banner/helpers.js"],"sourcesContent":["import { parseUrl } from 'query-string';\nimport { END_ADUNIT, MAX_BANNER_HEIGHT, MIN_BANNER_HEIGHT } from '../../constants';\n\nconst getParsedSizes = (sizes = '') => {\n if (typeof sizes !== 'string') return [];\n\n const sanitizedSizes = sizes.replace(/\\s+/, '').toLowerCase();\n const sizeGroups = sanitizedSizes.split(',');\n\n return sizeGroups.map(group => group.split('x').map(Number));\n};\n\nconst addPosnToTargetings = (targetings, index) => {\n const posn = `posn=${index}`;\n return targetings ? `${targetings},${posn}` : posn;\n};\n\nconst buildTargetingValue = valueTargeting =>\n valueTargeting.includes('[') && valueTargeting.includes(']')\n ? valueTargeting.replace(/\\;|\\[|\\]/gm, char => (char === ';' ? ',' : '')).split(',')\n : valueTargeting;\n\nconst setCustomTargetings = (targetings, cardBannerIndex) => {\n let bannerTargetings = {};\n\n const updatedTargetings = cardBannerIndex\n ? addPosnToTargetings(targetings, cardBannerIndex)\n : targetings;\n\n const isValidTargeting = updatedTargetings && typeof updatedTargetings === 'string';\n\n if (isValidTargeting) {\n const customTargeting = {};\n\n let splitTargeting = updatedTargetings.split(',');\n splitTargeting = { ...splitTargeting };\n\n Object.keys(splitTargeting).forEach(key => {\n const [keyTargeting, valueTargeting] = splitTargeting[key].split('=');\n\n if (keyTargeting && valueTargeting) {\n customTargeting[keyTargeting] = buildTargetingValue(valueTargeting);\n }\n });\n bannerTargetings = { ...bannerTargetings, ...customTargeting };\n }\n\n return bannerTargetings;\n};\n\nconst buildParsedAdunit = (path, countContentHierarchies, baseAdunit, adunit) => {\n if (!Number.isInteger(countContentHierarchies)) return '';\n\n const base = baseAdunit || process.env.DFP_BASE_ADUNIT;\n const hasChildren = countContentHierarchies !== 0;\n const { url } = parseUrl(path);\n let urlParts = url\n .split('/')\n .filter(Boolean)\n .map(urlPart => urlPart.replace(/-/g, ''));\n urlParts = urlParts.slice(0, hasChildren ? urlParts.length : urlParts.length - 1).join('/');\n urlParts = urlParts ? `${urlParts}/` : urlParts;\n const endAdunit = adunit || END_ADUNIT;\n\n return `${base}/${urlParts}${endAdunit}`;\n};\n\nconst getBannerSizes = (sizeId, bannerSizes) =>\n sizeId && bannerSizes && bannerSizes.length\n ? bannerSizes.map(({ width, height }) => [width, height])\n : null;\n\nconst buildBannerSizes = (sizeId, bannerSizes, sizes) => {\n let parsedSizes = getBannerSizes(sizeId, bannerSizes);\n\n if (!parsedSizes && sizes) parsedSizes = getParsedSizes(sizes);\n\n return parsedSizes;\n};\n\nconst buildContextualTargeting = (actionKey, props = {}, propsToDisplay = []) => {\n if (actionKey && props[actionKey] && props[actionKey][0]) {\n const data = props[actionKey][0];\n return buildPropsData(data, propsToDisplay);\n }\n return {};\n};\n\nconst buildSizeMapping = (sizeId, bannerSizes) => {\n let sizeMapping = [];\n\n if (sizeId && bannerSizes && bannerSizes.length) {\n const groupedViewports = bannerSizes.reduce((acc, { width, height, viewports = [] }) => {\n const size = width && height ? [width, height] : null; // if one dimension is falsey then it shouldn't display\n\n if (viewports) {\n viewports.forEach(({ width: viewportWidth, height: viewportHeight }) => {\n const key = `${viewportWidth || 0}x${viewportHeight || 0}`;\n acc[key] = acc[key] || [];\n if (size) acc[key].push(size);\n });\n }\n return acc;\n }, {});\n\n sizeMapping = Object.keys(groupedViewports).map(keyGroupedViewport => {\n const [viewportWidth, viewportHeight] = keyGroupedViewport.split('x');\n return {\n viewport: [Number(viewportWidth), Number(viewportHeight)],\n sizes: groupedViewports[keyGroupedViewport]\n };\n });\n }\n\n return sizeMapping;\n};\n\nconst getMaxBannerHeight = bannerSizes => {\n if (Array.isArray(bannerSizes) && bannerSizes.length > 0) {\n return Math.max(...bannerSizes.map(o => o.height));\n }\n return MAX_BANNER_HEIGHT;\n};\n\nconst getMinBannerHeight = bannerSizes => {\n if (Array.isArray(bannerSizes) && bannerSizes.length > 0) {\n return Math.min(...bannerSizes.map(o => o.height));\n }\n return MIN_BANNER_HEIGHT;\n};\n\nconst buildUserQuery = userProps => {\n if (!userProps || !userProps.length) return '';\n const basicProps = [];\n const nestedProps = {};\n userProps.forEach(({ propertiesToDisplay }) => {\n const [propKey] = propertiesToDisplay;\n if (!propKey || propKey === 'id') return;\n if (propKey.indexOf('.') !== -1) {\n const [baseProp, nestedProp] = propKey.split('.');\n if (nestedProps[baseProp]) nestedProps[baseProp].push(nestedProp);\n else nestedProps[baseProp] = [nestedProp];\n } else basicProps.push(propKey);\n });\n\n Object.keys(nestedProps).forEach(nestedKey => {\n const nested = nestedProps[nestedKey];\n basicProps.push(nestedKey);\n basicProps.push('{');\n nested.forEach(prop => basicProps.push(prop));\n basicProps.push('}');\n });\n\n return basicProps.join(' ');\n};\n\nconst buildPropsData = (data, props) => {\n if (!data || !props.length) return {};\n const propsWithData = {};\n\n props.forEach(({ propertiesToDisplay, label }) => {\n const [key] = propertiesToDisplay;\n if (!key) return;\n\n const parsedKey = key.split('.');\n const value = getNestedValue(parsedKey, data);\n const labelToUse = label || key;\n\n propsWithData[labelToUse] = value;\n });\n return propsWithData;\n};\n\nconst parseArrayValues = (arr, key) =>\n arr\n .map(obj => obj[key])\n .filter(Boolean)\n .join(', ');\n\nconst getNestedValue = (keys, object) => {\n const key = keys.shift();\n const nestedValue = Array.isArray(object) ? parseArrayValues(object, key) : object[key];\n if (!nestedValue) return null;\n return keys.length ? getNestedValue(keys, nestedValue) : nestedValue;\n};\n\nexport {\n getParsedSizes,\n setCustomTargetings,\n buildParsedAdunit,\n buildBannerSizes,\n buildContextualTargeting,\n buildSizeMapping,\n getMaxBannerHeight,\n getMinBannerHeight,\n buildPropsData,\n buildUserQuery\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["parseUrl","END_ADUNIT","MAX_BANNER_HEIGHT","MIN_BANNER_HEIGHT","getParsedSizes","sizes","sanitizedSizes","replace","toLowerCase","sizeGroups","split","map","group","Number","addPosnToTargetings","targetings","index","posn","buildTargetingValue","valueTargeting","includes","char","setCustomTargetings","cardBannerIndex","bannerTargetings","updatedTargetings","isValidTargeting","customTargeting","splitTargeting","Object","keys","forEach","key","keyTargeting","buildParsedAdunit","path","countContentHierarchies","baseAdunit","adunit","isInteger","base","process","env","DFP_BASE_ADUNIT","hasChildren","url","urlParts","filter","Boolean","urlPart","slice","length","join","endAdunit","getBannerSizes","sizeId","bannerSizes","width","height","buildBannerSizes","parsedSizes","buildContextualTargeting","actionKey","props","propsToDisplay","data","buildPropsData","buildSizeMapping","sizeMapping","groupedViewports","reduce","acc","viewports","size","viewportWidth","viewportHeight","push","keyGroupedViewport","viewport","getMaxBannerHeight","Array","isArray","Math","max","o","getMinBannerHeight","min","buildUserQuery","userProps","basicProps","nestedProps","propertiesToDisplay","propKey","indexOf","baseProp","nestedProp","nestedKey","nested","prop","propsWithData","label","parsedKey","value","getNestedValue","labelToUse","parseArrayValues","arr","obj","object","shift","nestedValue"],"sources":["../../../src/components/Banner/helpers.js"],"sourcesContent":["import { parseUrl } from 'query-string';\nimport { END_ADUNIT, MAX_BANNER_HEIGHT, MIN_BANNER_HEIGHT } from '../../constants';\n\nconst getParsedSizes = (sizes = '') => {\n if (typeof sizes !== 'string') return [];\n\n const sanitizedSizes = sizes.replace(/\\s+/, '').toLowerCase();\n const sizeGroups = sanitizedSizes.split(',');\n\n return sizeGroups.map(group => group.split('x').map(Number));\n};\n\nconst addPosnToTargetings = (targetings, index) => {\n const posn = `posn=${index}`;\n return targetings ? `${targetings},${posn}` : posn;\n};\n\nconst buildTargetingValue = valueTargeting =>\n valueTargeting.includes('[') && valueTargeting.includes(']')\n ? valueTargeting.replace(/\\;|\\[|\\]/gm, char => (char === ';' ? ',' : '')).split(',')\n : valueTargeting;\n\nconst setCustomTargetings = (targetings, cardBannerIndex) => {\n let bannerTargetings = {};\n\n const updatedTargetings = cardBannerIndex\n ? addPosnToTargetings(targetings, cardBannerIndex)\n : targetings;\n\n const isValidTargeting = updatedTargetings && typeof updatedTargetings === 'string';\n\n if (isValidTargeting) {\n const customTargeting = {};\n\n let splitTargeting = updatedTargetings.split(',');\n splitTargeting = { ...splitTargeting };\n\n Object.keys(splitTargeting).forEach(key => {\n const [keyTargeting, valueTargeting] = splitTargeting[key].split('=');\n\n if (keyTargeting && valueTargeting) {\n customTargeting[keyTargeting] = buildTargetingValue(valueTargeting);\n }\n });\n bannerTargetings = { ...bannerTargetings, ...customTargeting };\n }\n\n return bannerTargetings;\n};\n\nconst buildParsedAdunit = (path, countContentHierarchies, baseAdunit, adunit) => {\n if (!Number.isInteger(countContentHierarchies)) return '';\n\n const base = baseAdunit || process.env.DFP_BASE_ADUNIT;\n const hasChildren = countContentHierarchies !== 0;\n const { url } = parseUrl(path);\n let urlParts = url\n .split('/')\n .filter(Boolean)\n .map(urlPart => urlPart.replace(/-/g, ''));\n urlParts = urlParts.slice(0, hasChildren ? urlParts.length : urlParts.length - 1).join('/');\n urlParts = urlParts ? `${urlParts}/` : urlParts;\n const endAdunit = adunit || END_ADUNIT;\n\n return `${base}/${urlParts}${endAdunit}`;\n};\n\nconst getBannerSizes = (sizeId, bannerSizes) =>\n sizeId && bannerSizes && bannerSizes.length\n ? bannerSizes.map(({ width, height }) => [width, height])\n : null;\n\nconst buildBannerSizes = (sizeId, bannerSizes, sizes) => {\n let parsedSizes = getBannerSizes(sizeId, bannerSizes);\n\n if (!parsedSizes && sizes) parsedSizes = getParsedSizes(sizes);\n\n return parsedSizes;\n};\n\nconst buildContextualTargeting = (actionKey, props = {}, propsToDisplay = []) => {\n if (actionKey && props[actionKey] && props[actionKey][0]) {\n const data = props[actionKey][0];\n return buildPropsData(data, propsToDisplay);\n }\n return {};\n};\n\nconst buildSizeMapping = (sizeId, bannerSizes) => {\n let sizeMapping = [];\n\n if (sizeId && bannerSizes && bannerSizes.length) {\n const groupedViewports = bannerSizes.reduce((acc, { width, height, viewports = [] }) => {\n const size = width && height ? [width, height] : null; // if one dimension is falsey then it shouldn't display\n\n if (viewports) {\n viewports.forEach(({ width: viewportWidth, height: viewportHeight }) => {\n const key = `${viewportWidth || 0}x${viewportHeight || 0}`;\n acc[key] = acc[key] || [];\n if (size) acc[key].push(size);\n });\n }\n return acc;\n }, {});\n\n sizeMapping = Object.keys(groupedViewports).map(keyGroupedViewport => {\n const [viewportWidth, viewportHeight] = keyGroupedViewport.split('x');\n return {\n viewport: [Number(viewportWidth), Number(viewportHeight)],\n sizes: groupedViewports[keyGroupedViewport]\n };\n });\n }\n\n return sizeMapping;\n};\n\nconst getMaxBannerHeight = bannerSizes => {\n if (Array.isArray(bannerSizes) && bannerSizes.length > 0) {\n return Math.max(...bannerSizes.map(o => o.height));\n }\n return MAX_BANNER_HEIGHT;\n};\n\nconst getMinBannerHeight = bannerSizes => {\n if (Array.isArray(bannerSizes) && bannerSizes.length > 0) {\n return Math.min(...bannerSizes.map(o => o.height));\n }\n return MIN_BANNER_HEIGHT;\n};\n\nconst buildUserQuery = userProps => {\n if (!userProps || !userProps.length) return '';\n const basicProps = [];\n const nestedProps = {};\n userProps.forEach(({ propertiesToDisplay }) => {\n const [propKey] = propertiesToDisplay;\n if (!propKey || propKey === 'id') return;\n if (propKey.indexOf('.') !== -1) {\n const [baseProp, nestedProp] = propKey.split('.');\n if (nestedProps[baseProp]) nestedProps[baseProp].push(nestedProp);\n else nestedProps[baseProp] = [nestedProp];\n } else basicProps.push(propKey);\n });\n\n Object.keys(nestedProps).forEach(nestedKey => {\n const nested = nestedProps[nestedKey];\n basicProps.push(nestedKey);\n basicProps.push('{');\n nested.forEach(prop => basicProps.push(prop));\n basicProps.push('}');\n });\n\n return basicProps.join(' ');\n};\n\nconst buildPropsData = (data, props) => {\n if (!data || !props.length) return {};\n const propsWithData = {};\n\n props.forEach(({ propertiesToDisplay, label }) => {\n const [key] = propertiesToDisplay;\n if (!key) return;\n\n const parsedKey = key.split('.');\n const value = getNestedValue(parsedKey, data);\n const labelToUse = label || key;\n\n propsWithData[labelToUse] = value;\n });\n return propsWithData;\n};\n\nconst parseArrayValues = (arr, key) => arr.map(obj => obj[key]).filter(Boolean);\n\nconst getNestedValue = (keys, object) => {\n const key = keys.shift();\n const nestedValue = Array.isArray(object) ? parseArrayValues(object, key) : object[key];\n if (!nestedValue) return null;\n return keys.length ? getNestedValue(keys, nestedValue) : nestedValue;\n};\n\nexport {\n getParsedSizes,\n setCustomTargetings,\n buildParsedAdunit,\n buildBannerSizes,\n buildContextualTargeting,\n buildSizeMapping,\n getMaxBannerHeight,\n getMinBannerHeight,\n buildPropsData,\n buildUserQuery\n};\n"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
7
7
|
|
|
8
8
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
9
9
|
|
|
10
|
-
import React, { useState, Fragment } from 'react';
|
|
10
|
+
import React, { useState, Fragment, useEffect } from 'react';
|
|
11
11
|
import { useCookies } from 'react-cookie';
|
|
12
12
|
import { useRouter } from 'next/router';
|
|
13
13
|
import classnames from 'classnames';
|
|
@@ -45,6 +45,9 @@ const Button = props => {
|
|
|
45
45
|
blaze_auth: blazeCookie
|
|
46
46
|
} = cookies;
|
|
47
47
|
const [showChildren, setShowChildren] = useState(false);
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
setShowChildren(false);
|
|
50
|
+
}, [router.asPath]);
|
|
48
51
|
|
|
49
52
|
const checkIfButtonShouldRender = () => {
|
|
50
53
|
if (isLogoutButton) return !!blazeCookie;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","names":["React","useState","Fragment","useCookies","useRouter","classnames","BlazeButton","handleLogout","useApolloClient","PropTypes","bool","string","ClickWrapper","BlazeLink","withTitle","getClassModifiers","LOGOUT","renderChildren","updateChildrensParent","hasChildren","getClickWrapperOptions","Button","props","type","text","url","icon","name","style","children","clickAction","childSeoVisibility","afterClickText","otherProps","client","router","isLogoutButton","cookies","blaze_auth","blazeCookie","showChildren","setShowChildren","checkIfButtonShouldRender","logout","reload","handleClick","buttonType","modifiers","currentProps","href","title","DynamicButton","parent","itemId","itemEntity","renderedChildren","onClose","shouldUseClickWrapper","wrapperProps","Wrapper","contentClassName","propTypes","size","oneOfType","arrayOf","node","defaultProps"],"sources":["../../src/components/Button.js"],"sourcesContent":["import React, { useState, Fragment } from 'react';\nimport { useCookies } from 'react-cookie';\nimport { useRouter } from 'next/router';\nimport classnames from 'classnames';\nimport BlazeButton from '@blaze-react/button';\nimport { handleLogout } from '@blaze-cms/core-auth-ui';\nimport { useApolloClient } from '@apollo/client';\nimport PropTypes, { bool, string } from 'prop-types';\nimport ClickWrapper from './ClickWrapper';\nimport BlazeLink from './BlazeLink';\nimport { withTitle } from '../HOC';\nimport { getClassModifiers } from '../utils';\nimport { LOGOUT } from '../constants';\nimport {\n renderChildren,\n updateChildrensParent,\n hasChildren,\n getClickWrapperOptions\n} from '../helpers';\n\nconst Button = props => {\n const {\n type,\n text,\n url,\n icon,\n name,\n style,\n children,\n clickAction,\n childSeoVisibility,\n afterClickText,\n ...otherProps\n } = props;\n const client = useApolloClient();\n const router = useRouter();\n const isLogoutButton = clickAction === LOGOUT;\n const [cookies] = useCookies();\n const { blaze_auth: blazeCookie } = cookies;\n const [showChildren, setShowChildren] = useState(false);\n\n const checkIfButtonShouldRender = () => {\n if (isLogoutButton) return !!blazeCookie;\n if (!text && !icon) return false;\n return !!(url || hasChildren(children));\n };\n\n const logout = () => {\n handleLogout(client);\n url ? router.reload(url) : router.reload();\n };\n\n const handleClick = () => {\n if (isLogoutButton) logout();\n if (!url && !isLogoutButton) setShowChildren(!showChildren);\n };\n\n if (!checkIfButtonShouldRender()) return null;\n\n const buttonType = !text && icon ? 'icon' : type;\n const modifiers = getClassModifiers(buttonType, { icon, style, ...otherProps });\n const currentProps = url ? { href: url, title: name } : { name };\n const DynamicButton = url && !isLogoutButton ? BlazeLink : BlazeButton;\n updateChildrensParent(children, otherProps.parent.itemId, otherProps.parent.itemEntity);\n\n const renderedChildren = renderChildren(children, { onClose: handleClick });\n const { shouldUseClickWrapper, wrapperProps } = getClickWrapperOptions(children, props);\n const Wrapper = shouldUseClickWrapper ? ClickWrapper : Fragment;\n\n const contentClassName = classnames('button__content', {\n 'button__content--show': showChildren\n });\n\n return (\n <Wrapper {...wrapperProps}>\n {childSeoVisibility && <div className={contentClassName}>{renderedChildren}</div>}\n {!childSeoVisibility && showChildren && renderedChildren}\n <DynamicButton className={modifiers} onClick={handleClick} {...currentProps}>\n {icon && <i className={icon} />}\n {showChildren ? afterClickText : text}\n </DynamicButton>\n </Wrapper>\n );\n};\n\nButton.propTypes = {\n clickAction: PropTypes.string,\n text: PropTypes.string,\n afterClickText: string,\n name: PropTypes.string,\n type: PropTypes.string,\n url: PropTypes.string,\n size: PropTypes.string,\n icon: PropTypes.string,\n style: PropTypes.string,\n childSeoVisibility: bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nButton.defaultProps = {\n clickAction: '',\n text: '',\n afterClickText: '',\n name: '',\n type: '',\n url: null,\n size: '',\n icon: '',\n style: '',\n children: [],\n childSeoVisibility: false\n};\n\nexport default withTitle(Button);\n"],"mappings":";;;;;;;;;AAAA,OAAOA,KAAP,IAAgBC,QAAhB,EAA0BC,QAA1B,
|
|
1
|
+
{"version":3,"file":"Button.js","names":["React","useState","Fragment","useEffect","useCookies","useRouter","classnames","BlazeButton","handleLogout","useApolloClient","PropTypes","bool","string","ClickWrapper","BlazeLink","withTitle","getClassModifiers","LOGOUT","renderChildren","updateChildrensParent","hasChildren","getClickWrapperOptions","Button","props","type","text","url","icon","name","style","children","clickAction","childSeoVisibility","afterClickText","otherProps","client","router","isLogoutButton","cookies","blaze_auth","blazeCookie","showChildren","setShowChildren","asPath","checkIfButtonShouldRender","logout","reload","handleClick","buttonType","modifiers","currentProps","href","title","DynamicButton","parent","itemId","itemEntity","renderedChildren","onClose","shouldUseClickWrapper","wrapperProps","Wrapper","contentClassName","propTypes","size","oneOfType","arrayOf","node","defaultProps"],"sources":["../../src/components/Button.js"],"sourcesContent":["import React, { useState, Fragment, useEffect } from 'react';\nimport { useCookies } from 'react-cookie';\nimport { useRouter } from 'next/router';\nimport classnames from 'classnames';\nimport BlazeButton from '@blaze-react/button';\nimport { handleLogout } from '@blaze-cms/core-auth-ui';\nimport { useApolloClient } from '@apollo/client';\nimport PropTypes, { bool, string } from 'prop-types';\nimport ClickWrapper from './ClickWrapper';\nimport BlazeLink from './BlazeLink';\nimport { withTitle } from '../HOC';\nimport { getClassModifiers } from '../utils';\nimport { LOGOUT } from '../constants';\nimport {\n renderChildren,\n updateChildrensParent,\n hasChildren,\n getClickWrapperOptions\n} from '../helpers';\n\nconst Button = props => {\n const {\n type,\n text,\n url,\n icon,\n name,\n style,\n children,\n clickAction,\n childSeoVisibility,\n afterClickText,\n ...otherProps\n } = props;\n const client = useApolloClient();\n const router = useRouter();\n const isLogoutButton = clickAction === LOGOUT;\n const [cookies] = useCookies();\n const { blaze_auth: blazeCookie } = cookies;\n const [showChildren, setShowChildren] = useState(false);\n\n useEffect(\n () => {\n setShowChildren(false);\n },\n [router.asPath]\n );\n\n const checkIfButtonShouldRender = () => {\n if (isLogoutButton) return !!blazeCookie;\n if (!text && !icon) return false;\n return !!(url || hasChildren(children));\n };\n\n const logout = () => {\n handleLogout(client);\n url ? router.reload(url) : router.reload();\n };\n\n const handleClick = () => {\n if (isLogoutButton) logout();\n if (!url && !isLogoutButton) setShowChildren(!showChildren);\n };\n\n if (!checkIfButtonShouldRender()) return null;\n\n const buttonType = !text && icon ? 'icon' : type;\n const modifiers = getClassModifiers(buttonType, { icon, style, ...otherProps });\n const currentProps = url ? { href: url, title: name } : { name };\n const DynamicButton = url && !isLogoutButton ? BlazeLink : BlazeButton;\n updateChildrensParent(children, otherProps.parent.itemId, otherProps.parent.itemEntity);\n\n const renderedChildren = renderChildren(children, { onClose: handleClick });\n const { shouldUseClickWrapper, wrapperProps } = getClickWrapperOptions(children, props);\n const Wrapper = shouldUseClickWrapper ? ClickWrapper : Fragment;\n\n const contentClassName = classnames('button__content', {\n 'button__content--show': showChildren\n });\n\n return (\n <Wrapper {...wrapperProps}>\n {childSeoVisibility && <div className={contentClassName}>{renderedChildren}</div>}\n {!childSeoVisibility && showChildren && renderedChildren}\n <DynamicButton className={modifiers} onClick={handleClick} {...currentProps}>\n {icon && <i className={icon} />}\n {showChildren ? afterClickText : text}\n </DynamicButton>\n </Wrapper>\n );\n};\n\nButton.propTypes = {\n clickAction: PropTypes.string,\n text: PropTypes.string,\n afterClickText: string,\n name: PropTypes.string,\n type: PropTypes.string,\n url: PropTypes.string,\n size: PropTypes.string,\n icon: PropTypes.string,\n style: PropTypes.string,\n childSeoVisibility: bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nButton.defaultProps = {\n clickAction: '',\n text: '',\n afterClickText: '',\n name: '',\n type: '',\n url: null,\n size: '',\n icon: '',\n style: '',\n children: [],\n childSeoVisibility: false\n};\n\nexport default withTitle(Button);\n"],"mappings":"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"}
|
|
@@ -100,7 +100,13 @@ const SearchFilterContainer = ({
|
|
|
100
100
|
const {
|
|
101
101
|
docType
|
|
102
102
|
} = getEntityData(entity);
|
|
103
|
-
const filtersQuery = shouldAddFilters ? buildFiltersQuery(
|
|
103
|
+
const filtersQuery = shouldAddFilters ? buildFiltersQuery({
|
|
104
|
+
query: filterValues,
|
|
105
|
+
filterBy,
|
|
106
|
+
filterByProperty,
|
|
107
|
+
rangeValues,
|
|
108
|
+
queryKeys: Object.keys(query)
|
|
109
|
+
}) : [];
|
|
104
110
|
const rawQueryStringified = buildRawQueryStringified(checkboxSelectValues, rangeValues, docType, filtersQuery);
|
|
105
111
|
const {
|
|
106
112
|
data,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchFilterContainer.js","names":["React","useState","useRef","useReducer","useEffect","useRouter","useQuery","PropTypes","parseUrl","stringify","SearchFilter","withTitle","getSearchPublishedContent","buildNewQuery","buildRawQueryStringified","getInitialFilterValues","buildFiltersQuery","getEntityData","RAW_RESULTS","RANGE","CHECKBOX_SELECT","SCROLL_OFFSET","reducer","state","action","newValues","type","shouldSearch","Error","SearchFilterContainer","entity","url","filters","name","isCollapsedOnResponsive","groupAfterMobile","groupAfterDesktop","filterBy","filterByProperty","shouldAddFilters","router","asPath","searchFilterRef","key","setKey","displaySearchFilter","setDisplaySearchFilter","urlPath","setUrlPath","currentUrl","query","sort","sortby","filterValues","dispatch","hasUrl","sortValues","baseQuery","checkboxSelectValues","rangeValues","forEach","propsToDisplay","includes","push","docType","filtersQuery","rawQueryStringified","data","error","variables","limit","skip","message","length","searchPublishedContent","rawResults","aggregations","filterData","dataNotSet","initialFilterValues","handleSearch","newQuery","scrollToFirstList","shallow","scroll","then","Date","now","newUrl","list","document","getElementsByClassName","shouldScrollToFirstList","window","scrollTo","left","top","pageYOffset","getBoundingClientRect","propTypes","string","array","isRequired","bool","number","defaultProps"],"sources":["../../../src/components/SearchFilter/SearchFilterContainer.js"],"sourcesContent":["import React, { useState, useRef, useReducer, useEffect } from 'react';\nimport { useRouter } from 'next/router';\nimport { useQuery } from '@apollo/client';\nimport PropTypes from 'prop-types';\nimport { parseUrl, stringify } from 'query-string';\nimport SearchFilter from './SearchFilter';\nimport { withTitle } from '../../HOC';\nimport { getSearchPublishedContent } from '../../application/query';\nimport {\n buildNewQuery,\n buildRawQueryStringified,\n getInitialFilterValues,\n buildFiltersQuery\n} from './helpers';\nimport { getEntityData } from '../../helpers';\nimport { RAW_RESULTS, RANGE, CHECKBOX_SELECT } from './constants';\nimport { SCROLL_OFFSET } from '../../constants';\n\nconst reducer = (state, action) => {\n const { newValues, type, shouldSearch = true } = action;\n\n switch (type) {\n case 'update':\n return { ...state, ...newValues, shouldSearch };\n case 'resetSearch':\n return { ...state, shouldSearch: false };\n case 'reset':\n return { ...newValues, shouldSearch: false };\n default:\n throw new Error();\n }\n};\n\nconst SearchFilterContainer = ({\n entity,\n url,\n filters,\n name,\n isCollapsedOnResponsive,\n groupAfterMobile,\n groupAfterDesktop,\n filterBy,\n filterByProperty,\n shouldAddFilters\n}) => {\n const router = useRouter();\n const { asPath } = router;\n const searchFilterRef = useRef(null);\n const [key, setKey] = useState(`filter-${name}`);\n const [displaySearchFilter, setDisplaySearchFilter] = useState(false);\n const [urlPath, setUrlPath] = useState(asPath); // used as asPath can take too long to update\n const {\n url: currentUrl,\n query: { sort, sortby },\n query\n } = parseUrl(urlPath);\n const [filterValues, dispatch] = useReducer(\n reducer,\n getInitialFilterValues(null, filters, query)\n );\n\n useEffect(\n () => {\n if (asPath) setUrlPath(asPath);\n },\n [asPath]\n );\n\n const hasUrl = !!url;\n\n const sortValues = sort && sortby ? stringify({ sort, sortby }) : '';\n const baseQuery = sortValues ? `${currentUrl}?${sortValues}` : currentUrl;\n\n const action = getSearchPublishedContent(RAW_RESULTS);\n const checkboxSelectValues = [];\n const rangeValues = [];\n\n filters.forEach(({ type, propsToDisplay }) => {\n if (CHECKBOX_SELECT.includes(type)) {\n checkboxSelectValues.push(propsToDisplay[0]);\n } else if (type === RANGE) {\n rangeValues.push(...propsToDisplay);\n }\n });\n\n const { docType } = getEntityData(entity);\n\n const filtersQuery = shouldAddFilters\n ? buildFiltersQuery(filterValues || query, filterBy, filterByProperty, rangeValues)\n : [];\n\n const rawQueryStringified = buildRawQueryStringified(\n checkboxSelectValues,\n rangeValues,\n docType,\n filtersQuery\n );\n\n const { data, error } = useQuery(action, {\n variables: { rawQueryStringified, limit: 0 }, // we only want aggs so limit=0 for no search results\n skip: !rawQueryStringified\n });\n\n if (error) return error.message;\n if (!filters.length) return null;\n\n const { searchPublishedContent: { rawResults: { aggregations: filterData } = {} } = {} } =\n data || {};\n\n if (filterValues.dataNotSet && filterData) {\n const initialFilterValues = getInitialFilterValues(filterData, filters, query);\n dispatch({ newValues: initialFilterValues, shouldSearch: false, type: 'update' });\n }\n\n const handleSearch = newQuery => {\n setDisplaySearchFilter(false);\n\n if (!newQuery) {\n scrollToFirstList();\n setUrlPath(baseQuery);\n return router.push('/Resolver', baseQuery, { shallow: !hasUrl, scroll: false }).then(() => {\n setKey(`filter-${name}:${Date.now()}`); // remove after range component update\n });\n }\n const newUrl = buildNewQuery(url, currentUrl, newQuery, sortValues);\n scrollToFirstList();\n setUrlPath(newUrl);\n return router.push('/Resolver', newUrl, { shallow: !hasUrl, scroll: false });\n };\n\n const scrollToFirstList = () => {\n const [list] = document.getElementsByClassName('list-top');\n const shouldScrollToFirstList = !hasUrl && list;\n\n if (shouldScrollToFirstList) {\n window.scrollTo({\n left: 0,\n top: window.pageYOffset - SCROLL_OFFSET + list.getBoundingClientRect().top\n });\n } else {\n window.scrollTo(0, 0);\n }\n };\n if (!filterValues) return '';\n\n return (\n <SearchFilter\n key={key}\n setAppliedFilters={dispatch}\n searchFilterRef={searchFilterRef}\n data={filterData}\n filters={filters}\n hasUrl={hasUrl}\n entity={entity}\n handleSearch={handleSearch}\n filterValues={filterValues}\n name={name}\n isCollapsedOnResponsive={isCollapsedOnResponsive}\n displaySearchFilter={displaySearchFilter}\n setDisplaySearchFilter={setDisplaySearchFilter}\n groupAfterMobile={groupAfterMobile}\n groupAfterDesktop={groupAfterDesktop}\n />\n );\n};\n\nSearchFilterContainer.propTypes = {\n entity: PropTypes.string,\n url: PropTypes.string,\n filters: PropTypes.array,\n name: PropTypes.string.isRequired,\n isCollapsedOnResponsive: PropTypes.bool,\n groupAfterMobile: PropTypes.number,\n groupAfterDesktop: PropTypes.number,\n filterBy: PropTypes.array,\n filterByProperty: PropTypes.array,\n shouldAddFilters: PropTypes.bool\n};\n\nSearchFilterContainer.defaultProps = {\n url: null,\n filters: [],\n entity: '',\n isCollapsedOnResponsive: true,\n groupAfterMobile: 0,\n groupAfterDesktop: 0,\n filterBy: [],\n filterByProperty: [],\n shouldAddFilters: false\n};\n\nexport default withTitle(SearchFilterContainer);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SearchFilterContainer.js","names":["React","useState","useRef","useReducer","useEffect","useRouter","useQuery","PropTypes","parseUrl","stringify","SearchFilter","withTitle","getSearchPublishedContent","buildNewQuery","buildRawQueryStringified","getInitialFilterValues","buildFiltersQuery","getEntityData","RAW_RESULTS","RANGE","CHECKBOX_SELECT","SCROLL_OFFSET","reducer","state","action","newValues","type","shouldSearch","Error","SearchFilterContainer","entity","url","filters","name","isCollapsedOnResponsive","groupAfterMobile","groupAfterDesktop","filterBy","filterByProperty","shouldAddFilters","router","asPath","searchFilterRef","key","setKey","displaySearchFilter","setDisplaySearchFilter","urlPath","setUrlPath","currentUrl","query","sort","sortby","filterValues","dispatch","hasUrl","sortValues","baseQuery","checkboxSelectValues","rangeValues","forEach","propsToDisplay","includes","push","docType","filtersQuery","queryKeys","Object","keys","rawQueryStringified","data","error","variables","limit","skip","message","length","searchPublishedContent","rawResults","aggregations","filterData","dataNotSet","initialFilterValues","handleSearch","newQuery","scrollToFirstList","shallow","scroll","then","Date","now","newUrl","list","document","getElementsByClassName","shouldScrollToFirstList","window","scrollTo","left","top","pageYOffset","getBoundingClientRect","propTypes","string","array","isRequired","bool","number","defaultProps"],"sources":["../../../src/components/SearchFilter/SearchFilterContainer.js"],"sourcesContent":["import React, { useState, useRef, useReducer, useEffect } from 'react';\nimport { useRouter } from 'next/router';\nimport { useQuery } from '@apollo/client';\nimport PropTypes from 'prop-types';\nimport { parseUrl, stringify } from 'query-string';\nimport SearchFilter from './SearchFilter';\nimport { withTitle } from '../../HOC';\nimport { getSearchPublishedContent } from '../../application/query';\nimport {\n buildNewQuery,\n buildRawQueryStringified,\n getInitialFilterValues,\n buildFiltersQuery\n} from './helpers';\nimport { getEntityData } from '../../helpers';\nimport { RAW_RESULTS, RANGE, CHECKBOX_SELECT } from './constants';\nimport { SCROLL_OFFSET } from '../../constants';\n\nconst reducer = (state, action) => {\n const { newValues, type, shouldSearch = true } = action;\n\n switch (type) {\n case 'update':\n return { ...state, ...newValues, shouldSearch };\n case 'resetSearch':\n return { ...state, shouldSearch: false };\n case 'reset':\n return { ...newValues, shouldSearch: false };\n default:\n throw new Error();\n }\n};\n\nconst SearchFilterContainer = ({\n entity,\n url,\n filters,\n name,\n isCollapsedOnResponsive,\n groupAfterMobile,\n groupAfterDesktop,\n filterBy,\n filterByProperty,\n shouldAddFilters\n}) => {\n const router = useRouter();\n const { asPath } = router;\n const searchFilterRef = useRef(null);\n const [key, setKey] = useState(`filter-${name}`);\n const [displaySearchFilter, setDisplaySearchFilter] = useState(false);\n const [urlPath, setUrlPath] = useState(asPath); // used as asPath can take too long to update\n const {\n url: currentUrl,\n query: { sort, sortby },\n query\n } = parseUrl(urlPath);\n const [filterValues, dispatch] = useReducer(\n reducer,\n getInitialFilterValues(null, filters, query)\n );\n\n useEffect(\n () => {\n if (asPath) setUrlPath(asPath);\n },\n [asPath]\n );\n\n const hasUrl = !!url;\n\n const sortValues = sort && sortby ? stringify({ sort, sortby }) : '';\n const baseQuery = sortValues ? `${currentUrl}?${sortValues}` : currentUrl;\n\n const action = getSearchPublishedContent(RAW_RESULTS);\n const checkboxSelectValues = [];\n const rangeValues = [];\n\n filters.forEach(({ type, propsToDisplay }) => {\n if (CHECKBOX_SELECT.includes(type)) {\n checkboxSelectValues.push(propsToDisplay[0]);\n } else if (type === RANGE) {\n rangeValues.push(...propsToDisplay);\n }\n });\n\n const { docType } = getEntityData(entity);\n\n const filtersQuery = shouldAddFilters\n ? buildFiltersQuery({\n query: filterValues,\n filterBy,\n filterByProperty,\n rangeValues,\n queryKeys: Object.keys(query)\n })\n : [];\n\n const rawQueryStringified = buildRawQueryStringified(\n checkboxSelectValues,\n rangeValues,\n docType,\n filtersQuery\n );\n\n const { data, error } = useQuery(action, {\n variables: { rawQueryStringified, limit: 0 }, // we only want aggs so limit=0 for no search results\n skip: !rawQueryStringified\n });\n\n if (error) return error.message;\n if (!filters.length) return null;\n\n const { searchPublishedContent: { rawResults: { aggregations: filterData } = {} } = {} } =\n data || {};\n\n if (filterValues.dataNotSet && filterData) {\n const initialFilterValues = getInitialFilterValues(filterData, filters, query);\n dispatch({ newValues: initialFilterValues, shouldSearch: false, type: 'update' });\n }\n\n const handleSearch = newQuery => {\n setDisplaySearchFilter(false);\n\n if (!newQuery) {\n scrollToFirstList();\n setUrlPath(baseQuery);\n return router.push('/Resolver', baseQuery, { shallow: !hasUrl, scroll: false }).then(() => {\n setKey(`filter-${name}:${Date.now()}`); // remove after range component update\n });\n }\n const newUrl = buildNewQuery(url, currentUrl, newQuery, sortValues);\n scrollToFirstList();\n setUrlPath(newUrl);\n return router.push('/Resolver', newUrl, { shallow: !hasUrl, scroll: false });\n };\n\n const scrollToFirstList = () => {\n const [list] = document.getElementsByClassName('list-top');\n const shouldScrollToFirstList = !hasUrl && list;\n\n if (shouldScrollToFirstList) {\n window.scrollTo({\n left: 0,\n top: window.pageYOffset - SCROLL_OFFSET + list.getBoundingClientRect().top\n });\n } else {\n window.scrollTo(0, 0);\n }\n };\n if (!filterValues) return '';\n\n return (\n <SearchFilter\n key={key}\n setAppliedFilters={dispatch}\n searchFilterRef={searchFilterRef}\n data={filterData}\n filters={filters}\n hasUrl={hasUrl}\n entity={entity}\n handleSearch={handleSearch}\n filterValues={filterValues}\n name={name}\n isCollapsedOnResponsive={isCollapsedOnResponsive}\n displaySearchFilter={displaySearchFilter}\n setDisplaySearchFilter={setDisplaySearchFilter}\n groupAfterMobile={groupAfterMobile}\n groupAfterDesktop={groupAfterDesktop}\n />\n );\n};\n\nSearchFilterContainer.propTypes = {\n entity: PropTypes.string,\n url: PropTypes.string,\n filters: PropTypes.array,\n name: PropTypes.string.isRequired,\n isCollapsedOnResponsive: PropTypes.bool,\n groupAfterMobile: PropTypes.number,\n groupAfterDesktop: PropTypes.number,\n filterBy: PropTypes.array,\n filterByProperty: PropTypes.array,\n shouldAddFilters: PropTypes.bool\n};\n\nSearchFilterContainer.defaultProps = {\n url: null,\n filters: [],\n entity: '',\n isCollapsedOnResponsive: true,\n groupAfterMobile: 0,\n groupAfterDesktop: 0,\n filterBy: [],\n filterByProperty: [],\n shouldAddFilters: false\n};\n\nexport default withTitle(SearchFilterContainer);\n"],"mappings":";;;;;;AAAA,OAAOA,KAAP,IAAgBC,QAAhB,EAA0BC,MAA1B,EAAkCC,UAAlC,EAA8CC,SAA9C,QAA+D,OAA/D;AACA,SAASC,SAAT,QAA0B,aAA1B;AACA,SAASC,QAAT,QAAyB,gBAAzB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,QAAT,EAAmBC,SAAnB,QAAoC,cAApC;AACA,OAAOC,YAAP,MAAyB,gBAAzB;AACA,SAASC,SAAT,QAA0B,WAA1B;AACA,SAASC,yBAAT,QAA0C,yBAA1C;AACA,SACEC,aADF,EAEEC,wBAFF,EAGEC,sBAHF,EAIEC,iBAJF,QAKO,WALP;AAMA,SAASC,aAAT,QAA8B,eAA9B;AACA,SAASC,WAAT,EAAsBC,KAAtB,EAA6BC,eAA7B,QAAoD,aAApD;AACA,SAASC,aAAT,QAA8B,iBAA9B;;AAEA,MAAMC,OAAO,GAAG,CAACC,KAAD,EAAQC,MAAR,KAAmB;EACjC,MAAM;IAAEC,SAAF;IAAaC,IAAb;IAAmBC,YAAY,GAAG;EAAlC,IAA2CH,MAAjD;;EAEA,QAAQE,IAAR;IACE,KAAK,QAAL;MACE,qDAAYH,KAAZ,GAAsBE,SAAtB;QAAiCE;MAAjC;;IACF,KAAK,aAAL;MACE,uCAAYJ,KAAZ;QAAmBI,YAAY,EAAE;MAAjC;;IACF,KAAK,OAAL;MACE,uCAAYF,SAAZ;QAAuBE,YAAY,EAAE;MAArC;;IACF;MACE,MAAM,IAAIC,KAAJ,EAAN;EARJ;AAUD,CAbD;;AAeA,MAAMC,qBAAqB,GAAG,CAAC;EAC7BC,MAD6B;EAE7BC,GAF6B;EAG7BC,OAH6B;EAI7BC,IAJ6B;EAK7BC,uBAL6B;EAM7BC,gBAN6B;EAO7BC,iBAP6B;EAQ7BC,QAR6B;EAS7BC,gBAT6B;EAU7BC;AAV6B,CAAD,KAWxB;EACJ,MAAMC,MAAM,GAAGnC,SAAS,EAAxB;EACA,MAAM;IAAEoC;EAAF,IAAaD,MAAnB;EACA,MAAME,eAAe,GAAGxC,MAAM,CAAC,IAAD,CAA9B;EACA,MAAM,CAACyC,GAAD,EAAMC,MAAN,IAAgB3C,QAAQ,CAAE,UAASgC,IAAK,EAAhB,CAA9B;EACA,MAAM,CAACY,mBAAD,EAAsBC,sBAAtB,IAAgD7C,QAAQ,CAAC,KAAD,CAA9D;EACA,MAAM,CAAC8C,OAAD,EAAUC,UAAV,IAAwB/C,QAAQ,CAACwC,MAAD,CAAtC,CANI,CAM4C;;EAChD,MAAM;IACJV,GAAG,EAAEkB,UADD;IAEJC,KAAK,EAAE;MAAEC,IAAF;MAAQC;IAAR,CAFH;IAGJF;EAHI,IAIF1C,QAAQ,CAACuC,OAAD,CAJZ;EAKA,MAAM,CAACM,YAAD,EAAeC,QAAf,IAA2BnD,UAAU,CACzCmB,OADyC,EAEzCP,sBAAsB,CAAC,IAAD,EAAOiB,OAAP,EAAgBkB,KAAhB,CAFmB,CAA3C;EAKA9C,SAAS,CACP,MAAM;IACJ,IAAIqC,MAAJ,EAAYO,UAAU,CAACP,MAAD,CAAV;EACb,CAHM,EAIP,CAACA,MAAD,CAJO,CAAT;EAOA,MAAMc,MAAM,GAAG,CAAC,CAACxB,GAAjB;EAEA,MAAMyB,UAAU,GAAGL,IAAI,IAAIC,MAAR,GAAiB3C,SAAS,CAAC;IAAE0C,IAAF;IAAQC;EAAR,CAAD,CAA1B,GAA+C,EAAlE;EACA,MAAMK,SAAS,GAAGD,UAAU,GAAI,GAAEP,UAAW,IAAGO,UAAW,EAA/B,GAAmCP,UAA/D;EAEA,MAAMzB,MAAM,GAAGZ,yBAAyB,CAACM,WAAD,CAAxC;EACA,MAAMwC,oBAAoB,GAAG,EAA7B;EACA,MAAMC,WAAW,GAAG,EAApB;EAEA3B,OAAO,CAAC4B,OAAR,CAAgB,CAAC;IAAElC,IAAF;IAAQmC;EAAR,CAAD,KAA8B;IAC5C,IAAIzC,eAAe,CAAC0C,QAAhB,CAAyBpC,IAAzB,CAAJ,EAAoC;MAClCgC,oBAAoB,CAACK,IAArB,CAA0BF,cAAc,CAAC,CAAD,CAAxC;IACD,CAFD,MAEO,IAAInC,IAAI,KAAKP,KAAb,EAAoB;MACzBwC,WAAW,CAACI,IAAZ,CAAiB,GAAGF,cAApB;IACD;EACF,CAND;EAQA,MAAM;IAAEG;EAAF,IAAc/C,aAAa,CAACa,MAAD,CAAjC;EAEA,MAAMmC,YAAY,GAAG1B,gBAAgB,GACjCvB,iBAAiB,CAAC;IAChBkC,KAAK,EAAEG,YADS;IAEhBhB,QAFgB;IAGhBC,gBAHgB;IAIhBqB,WAJgB;IAKhBO,SAAS,EAAEC,MAAM,CAACC,IAAP,CAAYlB,KAAZ;EALK,CAAD,CADgB,GAQjC,EARJ;EAUA,MAAMmB,mBAAmB,GAAGvD,wBAAwB,CAClD4C,oBADkD,EAElDC,WAFkD,EAGlDK,OAHkD,EAIlDC,YAJkD,CAApD;EAOA,MAAM;IAAEK,IAAF;IAAQC;EAAR,IAAkBjE,QAAQ,CAACkB,MAAD,EAAS;IACvCgD,SAAS,EAAE;MAAEH,mBAAF;MAAuBI,KAAK,EAAE;IAA9B,CAD4B;IACO;IAC9CC,IAAI,EAAE,CAACL;EAFgC,CAAT,CAAhC;EAKA,IAAIE,KAAJ,EAAW,OAAOA,KAAK,CAACI,OAAb;EACX,IAAI,CAAC3C,OAAO,CAAC4C,MAAb,EAAqB,OAAO,IAAP;EAErB,MAAM;IAAEC,sBAAsB,EAAE;MAAEC,UAAU,EAAE;QAAEC,YAAY,EAAEC;MAAhB,IAA+B;IAA7C,IAAoD;EAA9E,IACJV,IAAI,IAAI,EADV;;EAGA,IAAIjB,YAAY,CAAC4B,UAAb,IAA2BD,UAA/B,EAA2C;IACzC,MAAME,mBAAmB,GAAGnE,sBAAsB,CAACiE,UAAD,EAAahD,OAAb,EAAsBkB,KAAtB,CAAlD;IACAI,QAAQ,CAAC;MAAE7B,SAAS,EAAEyD,mBAAb;MAAkCvD,YAAY,EAAE,KAAhD;MAAuDD,IAAI,EAAE;IAA7D,CAAD,CAAR;EACD;;EAED,MAAMyD,YAAY,GAAGC,QAAQ,IAAI;IAC/BtC,sBAAsB,CAAC,KAAD,CAAtB;;IAEA,IAAI,CAACsC,QAAL,EAAe;MACbC,iBAAiB;MACjBrC,UAAU,CAACS,SAAD,CAAV;MACA,OAAOjB,MAAM,CAACuB,IAAP,CAAY,WAAZ,EAAyBN,SAAzB,EAAoC;QAAE6B,OAAO,EAAE,CAAC/B,MAAZ;QAAoBgC,MAAM,EAAE;MAA5B,CAApC,EAAyEC,IAAzE,CAA8E,MAAM;QACzF5C,MAAM,CAAE,UAASX,IAAK,IAAGwD,IAAI,CAACC,GAAL,EAAW,EAA9B,CAAN,CADyF,CACjD;MACzC,CAFM,CAAP;IAGD;;IACD,MAAMC,MAAM,GAAG9E,aAAa,CAACkB,GAAD,EAAMkB,UAAN,EAAkBmC,QAAlB,EAA4B5B,UAA5B,CAA5B;IACA6B,iBAAiB;IACjBrC,UAAU,CAAC2C,MAAD,CAAV;IACA,OAAOnD,MAAM,CAACuB,IAAP,CAAY,WAAZ,EAAyB4B,MAAzB,EAAiC;MAAEL,OAAO,EAAE,CAAC/B,MAAZ;MAAoBgC,MAAM,EAAE;IAA5B,CAAjC,CAAP;EACD,CAdD;;EAgBA,MAAMF,iBAAiB,GAAG,MAAM;IAC9B,MAAM,CAACO,IAAD,IAASC,QAAQ,CAACC,sBAAT,CAAgC,UAAhC,CAAf;IACA,MAAMC,uBAAuB,GAAG,CAACxC,MAAD,IAAWqC,IAA3C;;IAEA,IAAIG,uBAAJ,EAA6B;MAC3BC,MAAM,CAACC,QAAP,CAAgB;QACdC,IAAI,EAAE,CADQ;QAEdC,GAAG,EAAEH,MAAM,CAACI,WAAP,GAAqB/E,aAArB,GAAqCuE,IAAI,CAACS,qBAAL,GAA6BF;MAFzD,CAAhB;IAID,CALD,MAKO;MACLH,MAAM,CAACC,QAAP,CAAgB,CAAhB,EAAmB,CAAnB;IACD;EACF,CAZD;;EAaA,IAAI,CAAC5C,YAAL,EAAmB,OAAO,EAAP;EAEnB,oBACE,oBAAC,YAAD;IACE,GAAG,EAAEV,GADP;IAEE,iBAAiB,EAAEW,QAFrB;IAGE,eAAe,EAAEZ,eAHnB;IAIE,IAAI,EAAEsC,UAJR;IAKE,OAAO,EAAEhD,OALX;IAME,MAAM,EAAEuB,MANV;IAOE,MAAM,EAAEzB,MAPV;IAQE,YAAY,EAAEqD,YARhB;IASE,YAAY,EAAE9B,YAThB;IAUE,IAAI,EAAEpB,IAVR;IAWE,uBAAuB,EAAEC,uBAX3B;IAYE,mBAAmB,EAAEW,mBAZvB;IAaE,sBAAsB,EAAEC,sBAb1B;IAcE,gBAAgB,EAAEX,gBAdpB;IAeE,iBAAiB,EAAEC;EAfrB,EADF;AAmBD,CAzID;;AA2IAP,qBAAqB,CAACyE,SAAtB,GAAkC;EAChCxE,MAAM,EAAEvB,SAAS,CAACgG,MADc;EAEhCxE,GAAG,EAAExB,SAAS,CAACgG,MAFiB;EAGhCvE,OAAO,EAAEzB,SAAS,CAACiG,KAHa;EAIhCvE,IAAI,EAAE1B,SAAS,CAACgG,MAAV,CAAiBE,UAJS;EAKhCvE,uBAAuB,EAAE3B,SAAS,CAACmG,IALH;EAMhCvE,gBAAgB,EAAE5B,SAAS,CAACoG,MANI;EAOhCvE,iBAAiB,EAAE7B,SAAS,CAACoG,MAPG;EAQhCtE,QAAQ,EAAE9B,SAAS,CAACiG,KARY;EAShClE,gBAAgB,EAAE/B,SAAS,CAACiG,KATI;EAUhCjE,gBAAgB,EAAEhC,SAAS,CAACmG;AAVI,CAAlC;AAaA7E,qBAAqB,CAAC+E,YAAtB,GAAqC;EACnC7E,GAAG,EAAE,IAD8B;EAEnCC,OAAO,EAAE,EAF0B;EAGnCF,MAAM,EAAE,EAH2B;EAInCI,uBAAuB,EAAE,IAJU;EAKnCC,gBAAgB,EAAE,CALiB;EAMnCC,iBAAiB,EAAE,CANgB;EAOnCC,QAAQ,EAAE,EAPyB;EAQnCC,gBAAgB,EAAE,EARiB;EASnCC,gBAAgB,EAAE;AATiB,CAArC;AAYA,eAAe5B,SAAS,CAACkB,qBAAD,CAAxB"}
|
|
@@ -27,7 +27,7 @@ const Range = ({
|
|
|
27
27
|
shouldSearch
|
|
28
28
|
}) => {
|
|
29
29
|
const router = useRouter();
|
|
30
|
-
const debounceAmount = shouldSearch ? 1200 :
|
|
30
|
+
const debounceAmount = shouldSearch ? 1200 : 400;
|
|
31
31
|
const {
|
|
32
32
|
query
|
|
33
33
|
} = parseUrl(decodeValue(router.asPath));
|
|
@@ -48,7 +48,6 @@ const Range = ({
|
|
|
48
48
|
min,
|
|
49
49
|
max
|
|
50
50
|
} = calculateMinMax(dataAggregations[rangeOption], rangeInterval);
|
|
51
|
-
const shouldShowRange = rangeOption && min !== max;
|
|
52
51
|
const minValue = rangeValue.minValue < min ? min : rangeValue.minValue;
|
|
53
52
|
const maxValue = rangeValue.maxValue > max ? max : rangeValue.maxValue;
|
|
54
53
|
|
|
@@ -87,7 +86,7 @@ const Range = ({
|
|
|
87
86
|
});
|
|
88
87
|
updateFilterValues(updatedOptions, false);
|
|
89
88
|
}
|
|
90
|
-
})),
|
|
89
|
+
})), /*#__PURE__*/React.createElement(RangeFilter, {
|
|
91
90
|
key: `${rangeOption}-${minValue}-${maxValue}`,
|
|
92
91
|
name: rangeOption,
|
|
93
92
|
label: hasMultipleOptions ? '' : label,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Range.js","names":["React","PropTypes","debounce","RangeFilter","useRouter","Select","parseUrl","useGetSingleEntitySchema","withTitle","getSelectOptions","getIntersectedProp","getRangeValue","calculateMinMax","decodeValue","Range","rangeInterval","label","entity","propsToDisplay","dataAggregations","updateFilterValues","filterValues","shouldSearch","router","debounceAmount","query","asPath","hasMultipleOptions","length","initialRangeOption","rangeOption","selectedOption","rangeValue","data","getEntitySchema","loading","options","min","max","
|
|
1
|
+
{"version":3,"file":"Range.js","names":["React","PropTypes","debounce","RangeFilter","useRouter","Select","parseUrl","useGetSingleEntitySchema","withTitle","getSelectOptions","getIntersectedProp","getRangeValue","calculateMinMax","decodeValue","Range","rangeInterval","label","entity","propsToDisplay","dataAggregations","updateFilterValues","filterValues","shouldSearch","router","debounceAmount","query","asPath","hasMultipleOptions","length","initialRangeOption","rangeOption","selectedOption","rangeValue","data","getEntitySchema","loading","options","min","max","minValue","maxValue","valueToUse","handleChange","option","value","updatedOptions","forEach","prop","eMin","eMax","initValue","propTypes","array","isRequired","string","object","func","bool","number","defaultProps"],"sources":["../../../../src/components/SearchFilter/components/Range.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport RangeFilter from '@blaze-react/range-filter';\nimport { useRouter } from 'next/router';\nimport Select from '@blaze-react/select';\nimport { parseUrl } from 'query-string';\nimport { useGetSingleEntitySchema } from '../../../hooks';\nimport { withTitle } from '../../../HOC';\nimport { getSelectOptions, getIntersectedProp, getRangeValue, calculateMinMax } from '../helpers';\nimport { decodeValue } from '../helpers/decode-encode';\n\nconst Range = ({\n rangeInterval,\n label,\n entity,\n propsToDisplay,\n dataAggregations,\n updateFilterValues,\n filterValues,\n shouldSearch\n}) => {\n const router = useRouter();\n const debounceAmount = shouldSearch ? 1200 : 400;\n const { query } = parseUrl(decodeValue(router.asPath));\n const hasMultipleOptions = propsToDisplay.length > 1;\n const initialRangeOption = getIntersectedProp(query, propsToDisplay) || propsToDisplay[0];\n const rangeOption =\n (filterValues[initialRangeOption] && filterValues[initialRangeOption].selectedOption) ||\n initialRangeOption;\n const rangeValue = filterValues[rangeOption];\n\n const { data: { getEntitySchema = {} } = {}, loading } = useGetSingleEntitySchema(\n entity,\n !hasMultipleOptions\n );\n\n if (loading || !rangeOption || !rangeValue) return '';\n\n const options = getSelectOptions(getEntitySchema, propsToDisplay);\n // get range from aggregations so it updates\n const { min, max } = calculateMinMax(dataAggregations[rangeOption], rangeInterval);\n const minValue = rangeValue.minValue < min ? min : rangeValue.minValue;\n const maxValue = rangeValue.maxValue > max ? max : rangeValue.maxValue;\n const valueToUse = { ...rangeValue, min, max, minValue, maxValue };\n\n const handleChange = debounce((option, value) => {\n updateFilterValues({ [option]: { ...value, selectedOption: rangeOption } }, shouldSearch);\n }, debounceAmount);\n\n return (\n <>\n {hasMultipleOptions && (\n <>\n <label>{label}</label>\n <Select\n value={rangeOption}\n id={rangeOption}\n options={options}\n required\n onChange={({ value }) => {\n const updatedOptions = {};\n propsToDisplay.forEach(prop => {\n const { min: eMin, max: eMax } = filterValues[prop];\n const initValue = getRangeValue(null, rangeInterval, eMin, eMax);\n updatedOptions[prop] = { ...initValue, selectedOption: value };\n });\n\n updateFilterValues(updatedOptions, false);\n }}\n />\n </>\n )}\n <RangeFilter\n key={`${rangeOption}-${minValue}-${maxValue}`}\n name={rangeOption}\n label={hasMultipleOptions ? '' : label}\n value={valueToUse}\n id={rangeOption}\n onChange={({ value }) => {\n handleChange(rangeOption, value);\n }}\n />\n </>\n );\n};\n\nRange.propTypes = {\n propsToDisplay: PropTypes.array.isRequired,\n entity: PropTypes.string.isRequired,\n filterValues: PropTypes.object.isRequired,\n updateFilterValues: PropTypes.func.isRequired,\n shouldSearch: PropTypes.bool,\n rangeInterval: PropTypes.number,\n label: PropTypes.string,\n dataAggregations: PropTypes.object.isRequired\n};\n\nRange.defaultProps = {\n shouldSearch: false,\n rangeInterval: 1,\n label: ''\n};\n\nexport default withTitle(Range);\n"],"mappings":"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"}
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
const QUERY_KEYS_TO_IGNORE = ['dataNotSet', 'shouldSearch', 'search_term'];
|
|
2
2
|
|
|
3
|
-
const builFilterObject = (
|
|
3
|
+
const builFilterObject = ({
|
|
4
|
+
queryKey,
|
|
5
|
+
value,
|
|
6
|
+
filters,
|
|
7
|
+
isRange,
|
|
8
|
+
isInQuery
|
|
9
|
+
}) => {
|
|
4
10
|
if (isRange) {
|
|
5
11
|
// don't add to query if value matches range values
|
|
6
|
-
if (value.min !== value.minValue && value.max !== value.maxValue) {
|
|
12
|
+
if (isInQuery || value.min !== value.minValue && value.max !== value.maxValue) {
|
|
7
13
|
filters.push({
|
|
8
14
|
range: {
|
|
9
15
|
[queryKey]: {
|
|
10
|
-
gte: Number(value.
|
|
11
|
-
lte: Number(value.
|
|
16
|
+
gte: Number(value.minValue),
|
|
17
|
+
lte: Number(value.maxValue)
|
|
12
18
|
}
|
|
13
19
|
}
|
|
14
20
|
});
|
|
@@ -39,14 +45,27 @@ const builFilterObject = (queryKey, value, filters, isRange) => {
|
|
|
39
45
|
});
|
|
40
46
|
};
|
|
41
47
|
|
|
42
|
-
const buildFiltersQuery = (
|
|
48
|
+
const buildFiltersQuery = ({
|
|
49
|
+
query,
|
|
50
|
+
filterBy,
|
|
51
|
+
filterByProperty,
|
|
52
|
+
rangeValues,
|
|
53
|
+
queryKeys
|
|
54
|
+
}) => {
|
|
43
55
|
const mustFilters = [];
|
|
44
56
|
Object.keys(query).forEach(queryKey => {
|
|
45
57
|
if (QUERY_KEYS_TO_IGNORE.includes(queryKey)) return;
|
|
46
58
|
if (!queryKey || !query[queryKey]) return;
|
|
47
59
|
const queryValue = query[queryKey];
|
|
48
60
|
const isRange = rangeValues.includes(queryKey);
|
|
49
|
-
|
|
61
|
+
const isInQuery = queryKeys.includes(queryKey);
|
|
62
|
+
builFilterObject({
|
|
63
|
+
queryKey,
|
|
64
|
+
value: queryValue,
|
|
65
|
+
filters: mustFilters,
|
|
66
|
+
isRange,
|
|
67
|
+
isInQuery
|
|
68
|
+
});
|
|
50
69
|
});
|
|
51
70
|
|
|
52
71
|
if (filterByProperty && filterByProperty.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-filters-query.js","names":["QUERY_KEYS_TO_IGNORE","builFilterObject","queryKey","value","filters","isRange","min","minValue","max","maxValue","push","range","gte","Number","lte","key","isArray","Array","singleFilterObj","match","forEach","filterValue","buildFiltersQuery","query","filterBy","filterByProperty","rangeValues","mustFilters","Object","keys","includes","queryValue","length","filterByPropOption","filterByPropKey","split","filterByOption","indexOf","filteryByValue","filterByKeyword"],"sources":["../../../../src/components/SearchFilter/helpers/build-filters-query.js"],"sourcesContent":["const QUERY_KEYS_TO_IGNORE = ['dataNotSet', 'shouldSearch', 'search_term'];\n\nconst builFilterObject = (queryKey, value, filters, isRange) => {\n if (isRange) {\n // don't add to query if value matches range values\n if (value.min !== value.minValue && value.max !== value.maxValue) {\n filters.push({\n range: {\n [queryKey]: {\n gte: Number(value.
|
|
1
|
+
{"version":3,"file":"build-filters-query.js","names":["QUERY_KEYS_TO_IGNORE","builFilterObject","queryKey","value","filters","isRange","isInQuery","min","minValue","max","maxValue","push","range","gte","Number","lte","key","isArray","Array","singleFilterObj","match","forEach","filterValue","buildFiltersQuery","query","filterBy","filterByProperty","rangeValues","queryKeys","mustFilters","Object","keys","includes","queryValue","length","filterByPropOption","filterByPropKey","split","filterByOption","indexOf","filteryByValue","filterByKeyword"],"sources":["../../../../src/components/SearchFilter/helpers/build-filters-query.js"],"sourcesContent":["const QUERY_KEYS_TO_IGNORE = ['dataNotSet', 'shouldSearch', 'search_term'];\n\nconst builFilterObject = ({ queryKey, value, filters, isRange, isInQuery }) => {\n if (isRange) {\n // don't add to query if value matches range values\n if (isInQuery || (value.min !== value.minValue && value.max !== value.maxValue)) {\n filters.push({\n range: {\n [queryKey]: {\n gte: Number(value.minValue),\n lte: Number(value.maxValue)\n }\n }\n });\n }\n return;\n }\n\n const key = isRange ? queryKey : `${queryKey}.keyword`;\n\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, rangeValues, queryKeys }) => {\n const mustFilters = [];\n Object.keys(query).forEach(queryKey => {\n if (QUERY_KEYS_TO_IGNORE.includes(queryKey)) return;\n if (!queryKey || !query[queryKey]) return;\n const queryValue = query[queryKey];\n\n const isRange = rangeValues.includes(queryKey);\n const isInQuery = queryKeys.includes(queryKey);\n builFilterObject({ queryKey, value: queryValue, filters: mustFilters, isRange, isInQuery });\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,oBAAoB,GAAG,CAAC,YAAD,EAAe,cAAf,EAA+B,aAA/B,CAA7B;;AAEA,MAAMC,gBAAgB,GAAG,CAAC;EAAEC,QAAF;EAAYC,KAAZ;EAAmBC,OAAnB;EAA4BC,OAA5B;EAAqCC;AAArC,CAAD,KAAsD;EAC7E,IAAID,OAAJ,EAAa;IACX;IACA,IAAIC,SAAS,IAAKH,KAAK,CAACI,GAAN,KAAcJ,KAAK,CAACK,QAApB,IAAgCL,KAAK,CAACM,GAAN,KAAcN,KAAK,CAACO,QAAtE,EAAiF;MAC/EN,OAAO,CAACO,IAAR,CAAa;QACXC,KAAK,EAAE;UACL,CAACV,QAAD,GAAY;YACVW,GAAG,EAAEC,MAAM,CAACX,KAAK,CAACK,QAAP,CADD;YAEVO,GAAG,EAAED,MAAM,CAACX,KAAK,CAACO,QAAP;UAFD;QADP;MADI,CAAb;IAQD;;IACD;EACD;;EAED,MAAMM,GAAG,GAAGX,OAAO,GAAGH,QAAH,GAAe,GAAEA,QAAS,UAA7C;EAEA,MAAMe,OAAO,GAAGC,KAAK,CAACD,OAAN,CAAcd,KAAd,CAAhB;;EACA,IAAI,CAACc,OAAL,EAAc;IACZ,MAAME,eAAe,GAAG;MAAEC,KAAK,EAAE;QAAE,CAACJ,GAAD,GAAOb;MAAT;IAAT,CAAxB;IACAC,OAAO,CAACO,IAAR,CAAaQ,eAAb;IACA;EACD;;EAEDhB,KAAK,CAACkB,OAAN,CAAcC,WAAW,IAAI;IAC3BlB,OAAO,CAACO,IAAR,CAAa;MAAES,KAAK,EAAE;QAAE,CAACJ,GAAD,GAAOM;MAAT;IAAT,CAAb;EACD,CAFD;AAGD,CA5BD;;AA6BA,MAAMC,iBAAiB,GAAG,CAAC;EAAEC,KAAF;EAASC,QAAT;EAAmBC,gBAAnB;EAAqCC,WAArC;EAAkDC;AAAlD,CAAD,KAAmE;EAC3F,MAAMC,WAAW,GAAG,EAApB;EACAC,MAAM,CAACC,IAAP,CAAYP,KAAZ,EAAmBH,OAAnB,CAA2BnB,QAAQ,IAAI;IACrC,IAAIF,oBAAoB,CAACgC,QAArB,CAA8B9B,QAA9B,CAAJ,EAA6C;IAC7C,IAAI,CAACA,QAAD,IAAa,CAACsB,KAAK,CAACtB,QAAD,CAAvB,EAAmC;IACnC,MAAM+B,UAAU,GAAGT,KAAK,CAACtB,QAAD,CAAxB;IAEA,MAAMG,OAAO,GAAGsB,WAAW,CAACK,QAAZ,CAAqB9B,QAArB,CAAhB;IACA,MAAMI,SAAS,GAAGsB,SAAS,CAACI,QAAV,CAAmB9B,QAAnB,CAAlB;IACAD,gBAAgB,CAAC;MAAEC,QAAF;MAAYC,KAAK,EAAE8B,UAAnB;MAA+B7B,OAAO,EAAEyB,WAAxC;MAAqDxB,OAArD;MAA8DC;IAA9D,CAAD,CAAhB;EACD,CARD;;EAUA,IAAIoB,gBAAgB,IAAIA,gBAAgB,CAACQ,MAAzC,EAAiD;IAC/CR,gBAAgB,IACdA,gBAAgB,CAACL,OAAjB,CAAyBc,kBAAkB,IAAI;MAC7C,MAAM,CAACC,eAAD,IAAoBD,kBAAkB,CAACE,KAAnB,CAAyB,GAAzB,CAA1B;MACAZ,QAAQ,CAACJ,OAAT,CAAiBiB,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;QACrBX,WAAW,CAAClB,IAAZ,CAAiB;UAAES,KAAK,EAAE;YAAE,CAACqB,eAAD,GAAmBD;UAArB;QAAT,CAAjB;MACD,CAND;IAOD,CATD,CADF;EAWD;;EAED,OAAOX,WAAP;AACD,CA3BD;;AA6BA,eAAeN,iBAAf"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blaze-cms/react-page-builder",
|
|
3
|
-
"version": "0.124.1
|
|
3
|
+
"version": "0.124.1",
|
|
4
4
|
"description": "Blaze react page builder",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-es/index.js",
|
|
@@ -85,5 +85,5 @@
|
|
|
85
85
|
"lib/*",
|
|
86
86
|
"lib-es/*"
|
|
87
87
|
],
|
|
88
|
-
"gitHead": "
|
|
88
|
+
"gitHead": "39d71595e55f54590430121381bdc236ca4341fd"
|
|
89
89
|
}
|
|
@@ -171,11 +171,7 @@ const buildPropsData = (data, props) => {
|
|
|
171
171
|
return propsWithData;
|
|
172
172
|
};
|
|
173
173
|
|
|
174
|
-
const parseArrayValues = (arr, key) =>
|
|
175
|
-
arr
|
|
176
|
-
.map(obj => obj[key])
|
|
177
|
-
.filter(Boolean)
|
|
178
|
-
.join(', ');
|
|
174
|
+
const parseArrayValues = (arr, key) => arr.map(obj => obj[key]).filter(Boolean);
|
|
179
175
|
|
|
180
176
|
const getNestedValue = (keys, object) => {
|
|
181
177
|
const key = keys.shift();
|
package/src/components/Button.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useState, Fragment } from 'react';
|
|
1
|
+
import React, { useState, Fragment, useEffect } from 'react';
|
|
2
2
|
import { useCookies } from 'react-cookie';
|
|
3
3
|
import { useRouter } from 'next/router';
|
|
4
4
|
import classnames from 'classnames';
|
|
@@ -39,6 +39,13 @@ const Button = props => {
|
|
|
39
39
|
const { blaze_auth: blazeCookie } = cookies;
|
|
40
40
|
const [showChildren, setShowChildren] = useState(false);
|
|
41
41
|
|
|
42
|
+
useEffect(
|
|
43
|
+
() => {
|
|
44
|
+
setShowChildren(false);
|
|
45
|
+
},
|
|
46
|
+
[router.asPath]
|
|
47
|
+
);
|
|
48
|
+
|
|
42
49
|
const checkIfButtonShouldRender = () => {
|
|
43
50
|
if (isLogoutButton) return !!blazeCookie;
|
|
44
51
|
if (!text && !icon) return false;
|
|
@@ -86,7 +86,13 @@ const SearchFilterContainer = ({
|
|
|
86
86
|
const { docType } = getEntityData(entity);
|
|
87
87
|
|
|
88
88
|
const filtersQuery = shouldAddFilters
|
|
89
|
-
? buildFiltersQuery(
|
|
89
|
+
? buildFiltersQuery({
|
|
90
|
+
query: filterValues,
|
|
91
|
+
filterBy,
|
|
92
|
+
filterByProperty,
|
|
93
|
+
rangeValues,
|
|
94
|
+
queryKeys: Object.keys(query)
|
|
95
|
+
})
|
|
90
96
|
: [];
|
|
91
97
|
|
|
92
98
|
const rawQueryStringified = buildRawQueryStringified(
|
|
@@ -21,7 +21,7 @@ const Range = ({
|
|
|
21
21
|
shouldSearch
|
|
22
22
|
}) => {
|
|
23
23
|
const router = useRouter();
|
|
24
|
-
const debounceAmount = shouldSearch ? 1200 :
|
|
24
|
+
const debounceAmount = shouldSearch ? 1200 : 400;
|
|
25
25
|
const { query } = parseUrl(decodeValue(router.asPath));
|
|
26
26
|
const hasMultipleOptions = propsToDisplay.length > 1;
|
|
27
27
|
const initialRangeOption = getIntersectedProp(query, propsToDisplay) || propsToDisplay[0];
|
|
@@ -40,7 +40,6 @@ const Range = ({
|
|
|
40
40
|
const options = getSelectOptions(getEntitySchema, propsToDisplay);
|
|
41
41
|
// get range from aggregations so it updates
|
|
42
42
|
const { min, max } = calculateMinMax(dataAggregations[rangeOption], rangeInterval);
|
|
43
|
-
const shouldShowRange = rangeOption && min !== max;
|
|
44
43
|
const minValue = rangeValue.minValue < min ? min : rangeValue.minValue;
|
|
45
44
|
const maxValue = rangeValue.maxValue > max ? max : rangeValue.maxValue;
|
|
46
45
|
const valueToUse = { ...rangeValue, min, max, minValue, maxValue };
|
|
@@ -72,18 +71,16 @@ const Range = ({
|
|
|
72
71
|
/>
|
|
73
72
|
</>
|
|
74
73
|
)}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
/>
|
|
86
|
-
)}
|
|
74
|
+
<RangeFilter
|
|
75
|
+
key={`${rangeOption}-${minValue}-${maxValue}`}
|
|
76
|
+
name={rangeOption}
|
|
77
|
+
label={hasMultipleOptions ? '' : label}
|
|
78
|
+
value={valueToUse}
|
|
79
|
+
id={rangeOption}
|
|
80
|
+
onChange={({ value }) => {
|
|
81
|
+
handleChange(rangeOption, value);
|
|
82
|
+
}}
|
|
83
|
+
/>
|
|
87
84
|
</>
|
|
88
85
|
);
|
|
89
86
|
};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
const QUERY_KEYS_TO_IGNORE = ['dataNotSet', 'shouldSearch', 'search_term'];
|
|
2
2
|
|
|
3
|
-
const builFilterObject = (queryKey, value, filters, isRange) => {
|
|
3
|
+
const builFilterObject = ({ queryKey, value, filters, isRange, isInQuery }) => {
|
|
4
4
|
if (isRange) {
|
|
5
5
|
// don't add to query if value matches range values
|
|
6
|
-
if (value.min !== value.minValue && value.max !== value.maxValue) {
|
|
6
|
+
if (isInQuery || (value.min !== value.minValue && value.max !== value.maxValue)) {
|
|
7
7
|
filters.push({
|
|
8
8
|
range: {
|
|
9
9
|
[queryKey]: {
|
|
10
|
-
gte: Number(value.
|
|
11
|
-
lte: Number(value.
|
|
10
|
+
gte: Number(value.minValue),
|
|
11
|
+
lte: Number(value.maxValue)
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
});
|
|
@@ -29,7 +29,7 @@ const builFilterObject = (queryKey, value, filters, isRange) => {
|
|
|
29
29
|
filters.push({ match: { [key]: filterValue } });
|
|
30
30
|
});
|
|
31
31
|
};
|
|
32
|
-
const buildFiltersQuery = (query, filterBy, filterByProperty, rangeValues) => {
|
|
32
|
+
const buildFiltersQuery = ({ query, filterBy, filterByProperty, rangeValues, queryKeys }) => {
|
|
33
33
|
const mustFilters = [];
|
|
34
34
|
Object.keys(query).forEach(queryKey => {
|
|
35
35
|
if (QUERY_KEYS_TO_IGNORE.includes(queryKey)) return;
|
|
@@ -37,7 +37,8 @@ const buildFiltersQuery = (query, filterBy, filterByProperty, rangeValues) => {
|
|
|
37
37
|
const queryValue = query[queryKey];
|
|
38
38
|
|
|
39
39
|
const isRange = rangeValues.includes(queryKey);
|
|
40
|
-
|
|
40
|
+
const isInQuery = queryKeys.includes(queryKey);
|
|
41
|
+
builFilterObject({ queryKey, value: queryValue, filters: mustFilters, isRange, isInQuery });
|
|
41
42
|
});
|
|
42
43
|
|
|
43
44
|
if (filterByProperty && filterByProperty.length) {
|
|
@@ -166,7 +166,7 @@ describe('buildContextualTargeting helper', () => {
|
|
|
166
166
|
{ getPages: [{ tags: [{ name: 'tag1' }, { name: 'tag2' }] }] },
|
|
167
167
|
[{ label: 'tagKey', propertiesToDisplay: ['tags.name'] }]
|
|
168
168
|
);
|
|
169
|
-
expect(contextualTargeting).toEqual({ tagKey: 'tag1, tag2' });
|
|
169
|
+
expect(contextualTargeting).toEqual({ tagKey: ['tag1', 'tag2'] });
|
|
170
170
|
});
|
|
171
171
|
});
|
|
172
172
|
|
|
@@ -8,6 +8,10 @@ jest.mock('@apollo/client', () => ({
|
|
|
8
8
|
useApolloClient: jest.fn(() => ({ resetStore: () => null }))
|
|
9
9
|
}));
|
|
10
10
|
|
|
11
|
+
jest.mock('next/router', () => ({
|
|
12
|
+
useRouter: jest.fn(() => ({ asPath: '' }))
|
|
13
|
+
}));
|
|
14
|
+
|
|
11
15
|
const componentProps = {
|
|
12
16
|
type: 'icon',
|
|
13
17
|
text: 'test',
|