price slider now updates store filter
All checks were successful
Vercel Preview Deployment / Deploy-Preview (push) Successful in 1m22s
All checks were successful
Vercel Preview Deployment / Deploy-Preview (push) Successful in 1m22s
This commit is contained in:
parent
3faa9fe73b
commit
be98abb776
@ -13,14 +13,26 @@ const AddRegionButton: React.FC = () => {
|
|||||||
return <Button onClick={handleClick}>Add Region "Sverige"</Button>;
|
return <Button onClick={handleClick}>Add Region "Sverige"</Button>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const ResetFilters: React.FC = () => {
|
||||||
|
const resetFilters = useFilterStore((state) => state.resetFilters);
|
||||||
|
|
||||||
|
const handleClick = () => {
|
||||||
|
resetFilters();
|
||||||
|
};
|
||||||
|
|
||||||
|
return <Button onClick={handleClick}>Reset filters</Button>;
|
||||||
|
};
|
||||||
|
|
||||||
export default function App() {
|
export default function App() {
|
||||||
const filters = useFilterStore((state) => state.filters);
|
const filters = useFilterStore((state) => state.filters);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="container flex w-full flex-col justify-center">
|
<div className="container flex w-full flex-col justify-center">
|
||||||
<FormCard />
|
<FormCard />
|
||||||
|
<h1 className="text-2xl">Filter state:</h1>
|
||||||
{JSON.stringify(filters)}
|
{JSON.stringify(filters)}
|
||||||
<AddRegionButton />
|
<AddRegionButton />
|
||||||
|
<ResetFilters />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -10,16 +10,19 @@ import {
|
|||||||
import { Input } from "~/components/ui/input";
|
import { Input } from "~/components/ui/input";
|
||||||
import { Slider } from "~/components/ui/slider";
|
import { Slider } from "~/components/ui/slider";
|
||||||
import { ChangeEvent, useState } from "react";
|
import { ChangeEvent, useState } from "react";
|
||||||
|
import useFilterStore from "../store";
|
||||||
|
|
||||||
export default function Filtermenu() {
|
export default function Filtermenu() {
|
||||||
const [minPrice, setMinPrice] = useState<number>(0);
|
const [minPrice, setMinPrice] = useState<number>(0);
|
||||||
const [maxPrice, setMaxPrice] = useState<number>(9999);
|
const [maxPrice, setMaxPrice] = useState<number>(9999);
|
||||||
const [sliderValues, setSliderValues] = useState<[number, number]>([0, 9999]);
|
const [sliderValues, setSliderValues] = useState<[number, number]>([0, 9999]);
|
||||||
|
const setStorePrice = useFilterStore((state) => state.setPrice);
|
||||||
|
|
||||||
const handleMinPriceChange = (e: ChangeEvent<HTMLInputElement>): void => {
|
const handleMinPriceChange = (e: ChangeEvent<HTMLInputElement>): void => {
|
||||||
const value = Math.min(Number(e.target.value), maxPrice - 1);
|
const value = Math.min(Number(e.target.value), maxPrice - 1);
|
||||||
setMinPrice(value);
|
setMinPrice(value);
|
||||||
setSliderValues([value, sliderValues[1]]);
|
setSliderValues([value, sliderValues[1]]);
|
||||||
|
setStorePrice(minPrice, maxPrice);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleMaxPriceChange = (e: ChangeEvent<HTMLInputElement>) => {
|
const handleMaxPriceChange = (e: ChangeEvent<HTMLInputElement>) => {
|
||||||
@ -32,6 +35,7 @@ export default function Filtermenu() {
|
|||||||
setSliderValues(values);
|
setSliderValues(values);
|
||||||
setMinPrice(values[0]);
|
setMinPrice(values[0]);
|
||||||
setMaxPrice(values[1]);
|
setMaxPrice(values[1]);
|
||||||
|
setStorePrice(minPrice, maxPrice);
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
Loading…
Reference in New Issue
Block a user