-
Notifications
You must be signed in to change notification settings - Fork 73
/
Copy pathSelectedFilters.js
73 lines (64 loc) · 1.81 KB
/
SelectedFilters.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import PropTypes from 'prop-types'
import React, { useContext } from 'react'
import { useIntl } from 'react-intl'
import { useCssHandles } from 'vtex.css-handles'
import FacetItem from './FacetItem'
import FilterOptionTemplate from './FilterOptionTemplate'
import { facetOptionShape } from '../constants/propTypes'
import SettingsContext from './SettingsContext'
const CSS_HANDLES = ['selectedFilterItem']
/**
* Search Filter Component.
*/
const SelectedFilters = ({
map,
filters = [],
preventRouteChange = false,
navigateToFacet,
}) => {
const intl = useIntl()
const handles = useCssHandles(CSS_HANDLES)
const { showFacetTitle } = useContext(SettingsContext)
const visibleFilters = filters
.filter(filter => !filter.hidden)
.filter(filter => filter.key !== 'shipping')
if (!visibleFilters.length) {
return null
}
const title = intl.formatMessage({ id: 'store/search.selected-filters' })
return (
<FilterOptionTemplate
id="selectedFilters"
title={title}
filters={visibleFilters}
collapsable={false}
selected
>
{facet => {
return (
<FacetItem
map={map}
key={facet.name}
showTitle={showFacetTitle}
facetTitle={facet.title}
facet={facet}
className={handles.selectedFilterItem}
preventRouteChange={preventRouteChange}
navigateToFacet={navigateToFacet}
/>
)
}}
</FilterOptionTemplate>
)
}
SelectedFilters.propTypes = {
filterTitle: PropTypes.string,
/** Legacy search map */
map: PropTypes.string,
/** Selected filters. */
filters: PropTypes.arrayOf(facetOptionShape).isRequired,
/** Prevent route changes */
preventRouteChange: PropTypes.bool,
navigateToFacet: PropTypes.func,
}
export default SelectedFilters