Update FilterModal
* Fixes spacing of interactive elements in FilterBar so they don't stretch according to content anymore * Adds new `persistFilters` prop that determines whether the FilterBar should persist any filters to the user's cookies * Uses defaultFilterset prop to populate the default filter set instead of importing the actual "default filter set" and using it directly
This commit is contained in:
parent
48d451d136
commit
01b51f2829
2 changed files with 20 additions and 8 deletions
|
|
@ -33,17 +33,21 @@
|
||||||
minmax($unit-20x, 1fr)
|
minmax($unit-20x, 1fr)
|
||||||
minmax($unit-20x, 1fr)
|
minmax($unit-20x, 1fr)
|
||||||
minmax($unit-20x, 1fr)
|
minmax($unit-20x, 1fr)
|
||||||
0.5fr;
|
auto;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
gap: $unit;
|
gap: $unit;
|
||||||
width: auto;
|
width: 75%;
|
||||||
|
|
||||||
@include breakpoint(tablet) {
|
@include breakpoint(tablet) {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
grid-template-rows: auto;
|
grid-template-rows: auto;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
& > * {
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.shadow {
|
&.shadow {
|
||||||
|
|
|
||||||
|
|
@ -11,12 +11,13 @@ import SelectItem from '~components/common/SelectItem'
|
||||||
import Button from '~components/common/Button'
|
import Button from '~components/common/Button'
|
||||||
|
|
||||||
import { appState } from '~utils/appState'
|
import { appState } from '~utils/appState'
|
||||||
import { defaultFilterset } from '~utils/defaultFilters'
|
|
||||||
|
|
||||||
import FilterIcon from '~public/icons/Filter.svg'
|
import FilterIcon from '~public/icons/Filter.svg'
|
||||||
import styles from './index.module.scss'
|
import styles from './index.module.scss'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
|
defaultFilterset: FilterSet
|
||||||
|
persistFilters?: boolean
|
||||||
children: React.ReactNode
|
children: React.ReactNode
|
||||||
scrolled: boolean
|
scrolled: boolean
|
||||||
element?: number
|
element?: number
|
||||||
|
|
@ -62,13 +63,14 @@ const FilterBar = (props: Props) => {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// Fetch user's advanced filters
|
// Fetch user's advanced filters
|
||||||
const filtersCookie = getCookie('filters')
|
const filtersCookie = getCookie('filters')
|
||||||
if (filtersCookie) setAdvancedFilters(JSON.parse(filtersCookie as string))
|
if (filtersCookie && props.persistFilters) {
|
||||||
else setAdvancedFilters(defaultFilterset)
|
setAdvancedFilters(JSON.parse(filtersCookie as string))
|
||||||
|
} else setAdvancedFilters(props.defaultFilterset)
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setMatchesDefaultFilters(equals(advancedFilters, defaultFilterset))
|
setMatchesDefaultFilters(equals(advancedFilters, props.defaultFilterset))
|
||||||
}, [advancedFilters, defaultFilterset])
|
}, [advancedFilters, props.defaultFilterset])
|
||||||
|
|
||||||
function openElementSelect() {
|
function openElementSelect() {
|
||||||
setElementOpen(!elementOpen)
|
setElementOpen(!elementOpen)
|
||||||
|
|
@ -194,9 +196,11 @@ const FilterBar = (props: Props) => {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<FilterModal
|
<FilterModal
|
||||||
defaultFilterSet={defaultFilterset}
|
defaultFilterSet={props.defaultFilterset}
|
||||||
filterSet={advancedFilters}
|
filterSet={advancedFilters}
|
||||||
|
persistFilters={props.persistFilters}
|
||||||
open={filterModalOpen}
|
open={filterModalOpen}
|
||||||
onOpenChange={setFilterModalOpen}
|
onOpenChange={setFilterModalOpen}
|
||||||
sendAdvancedFilters={handleAdvancedFiltersChanged}
|
sendAdvancedFilters={handleAdvancedFiltersChanged}
|
||||||
|
|
@ -205,4 +209,8 @@ const FilterBar = (props: Props) => {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FilterBar.defaultProps = {
|
||||||
|
persistFilters: true,
|
||||||
|
}
|
||||||
|
|
||||||
export default FilterBar
|
export default FilterBar
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue