1- import { useState } from 'react' ;
21import { AnimatePresence , motion } from 'framer-motion' ;
32
4- import {
5- DistanceSlider ,
6- SortOptions ,
7- useTourFilterQuery ,
8- } from '@/features/tourFilter' ;
9- import { TouristContentsTypeFilter } from '@/shared' ;
10-
11- import type { SortOption } from '@/features/tourFilter' ;
3+ import { DistanceSlider } from '@/features/tourFilter' ;
4+ import { TouristContentsTypeFilter , useLocalStorage } from '@/shared' ;
5+ import type { TourInjected } from '@/features/tour/types' ;
6+ import { useState } from 'react' ;
127
138interface BottomSheetProps {
149 onClose : ( ) => void ;
@@ -19,19 +14,31 @@ export default function TourFilterSidebar({
1914 onClose,
2015 isOpen,
2116} : BottomSheetProps ) {
22- const { getQuery, updateQuery } = useTourFilterQuery ( ) ;
17+ const [ tourFilter , setTourFilter ] = useLocalStorage ( 'tourInfo' , {
18+ distance : '20000' ,
19+ contentTypeId : '12' ,
20+ } as TourInjected ) ;
2321
24- const [ aroundContentTypeId , setAroundContentTypeId ] = useState (
25- getQuery ( ) ?. tourType ?? '12' ,
26- ) ;
27- const [ distance , setDistance ] = useState ( getQuery ( ) ?. distance || 1 ) ;
28- const [ sortOption , setSortOption ] = useState < SortOption > ( 'distance' ) ;
22+ const [ currentTourFilter , setCurrentTourFilter ] = useState < TourInjected > ( {
23+ distance : tourFilter . distance ,
24+ contentTypeId : tourFilter . contentTypeId ,
25+ } ) ;
2926
3027 const handleSubmit = ( ) => {
31- updateQuery ( { tourType : aroundContentTypeId , distance } ) ;
28+ setTourFilter ( {
29+ distance : currentTourFilter . distance ,
30+ contentTypeId : currentTourFilter . contentTypeId ,
31+ } ) ;
3232 onClose ( ) ;
3333 } ;
3434
35+ const handleReset = ( ) => {
36+ setCurrentTourFilter ( {
37+ distance : '20000' ,
38+ contentTypeId : '12' ,
39+ } ) ;
40+ } ;
41+
3542 return (
3643 < AnimatePresence >
3744 { isOpen && (
@@ -58,28 +65,25 @@ export default function TourFilterSidebar({
5865 관광 타입
5966 </ label >
6067 < TouristContentsTypeFilter
61- contentTypeId = { aroundContentTypeId }
62- setContentTypeId = { setAroundContentTypeId }
68+ contentTypeId = { currentTourFilter . contentTypeId }
69+ setContentTypeId = { setCurrentTourFilter }
6370 />
6471 </ section >
6572 < section className = "my-5 py-5 px-5 rounded-xl shadow mr-3" >
6673 < label className = "block mb-2 text-lg font-semibold text-black" >
6774 거리
6875 </ label >
69- < DistanceSlider distance = { distance } setDistance = { setDistance } />
70- </ section >
71- < section className = "my-5 py-5 px-5 rounded-xl shadow mr-3" >
72- < label className = "block mb-2 text-lg font-semibold text-black" >
73- 정렬
74- </ label >
75- < SortOptions
76- selected = { sortOption }
77- setSelected = { setSortOption }
76+ < DistanceSlider
77+ distance = { currentTourFilter . distance }
78+ setDistance = { setCurrentTourFilter }
7879 />
7980 </ section >
8081 </ main >
8182 < footer className = "flex gap-3" >
82- < button className = "w-30 rounded-2xl bg-gray-300 px-5 py-2 text-black cursor-pointer " >
83+ < button
84+ className = "w-30 rounded-2xl bg-gray-300 px-5 py-2 text-black cursor-pointer"
85+ onClick = { handleReset }
86+ >
8387 초기화
8488 </ button >
8589 < button
0 commit comments