Skip to content

Commit bebd357

Browse files
Refactored filter logic to prevent resetting selections when applying multiple filters.
1 parent e8b41a0 commit bebd357

File tree

1 file changed

+16
-26
lines changed

1 file changed

+16
-26
lines changed

src/components/FilterDialog.tsx

+16-26
Original file line numberDiff line numberDiff line change
@@ -33,21 +33,11 @@ export const FilterDialog = ({
3333
onReset: () => void;
3434
onApplyFilters: (exams: string[], slots: string[], years: string[]) => void;
3535
}) => {
36-
const [selectedExams, setSelectedExams] = useState<string[]>(
37-
initialExams ?? [],
38-
);
39-
const [selectedSlots, setSelectedSlots] = useState<string[]>(
40-
initialSlots ?? [],
41-
);
42-
const [selectedYears, setSelectedYears] = useState<string[]>(
43-
initialYears ?? [],
44-
);
45-
const [, setSelectedCampuses] = useState<string[]>(
46-
initialYears ?? [],
47-
);
48-
const [selectedSemesters, setSelectedSemesters] = useState<string[]>(
49-
initialYears ?? [],
50-
);
36+
const [selectedExams, setSelectedExams] = useState<string[]>(initialExams ?? []);
37+
const [selectedSlots, setSelectedSlots] = useState<string[]>(initialSlots ?? []);
38+
const [selectedYears, setSelectedYears] = useState<string[]>(initialYears ?? []);
39+
const [selectedCampuses, setSelectedCampuses] = useState<string[]>(initialCampuses ?? []);
40+
const [selectedSemesters, setSelectedSemesters] = useState<string[]>(initialSemesters ?? []);
5141
const [open, setOpen] = useState(false);
5242

5343
useEffect(() => {
@@ -56,7 +46,7 @@ export const FilterDialog = ({
5646
setSelectedYears(initialYears ?? []);
5747
setSelectedCampuses(initialCampuses ?? []);
5848
setSelectedSemesters(initialSemesters ?? []);
59-
}, [initialCampuses, initialExams, initialSemesters, initialSlots, initialYears]);
49+
}, [initialExams, initialSlots, initialYears, initialCampuses, initialSemesters]);
6050

6151
const exams = filterOptions.uniqueExams.map((exam) => ({
6252
label: exam,
@@ -74,10 +64,11 @@ export const FilterDialog = ({
7464
label: semester,
7565
value: semester,
7666
}));
77-
// const campuses = filterOptions.uniqueCampuses.map((campus) => ({
78-
// label: campus,
79-
// value: campus,
80-
// }));
67+
const campuses = filterOptions.uniqueCampuses.map((campus) => ({
68+
label: campus,
69+
value: campus,
70+
}));
71+
8172
const handleFilterClick = () => {
8273
onApplyFilters(selectedExams, selectedSlots, selectedYears);
8374
setOpen(false);
@@ -88,7 +79,6 @@ export const FilterDialog = ({
8879
setSelectedSlots([]);
8980
setSelectedYears([]);
9081
setSelectedSemesters([]);
91-
9282
setSelectedCampuses([]);
9383
setOpen(false);
9484
onReset();
@@ -112,31 +102,31 @@ export const FilterDialog = ({
112102
options={exams}
113103
onValueChange={setSelectedExams}
114104
placeholder="Exams"
115-
defaultValue={selectedExams}
105+
value={selectedExams}
116106
/>
117107
<MultiSelect
118108
options={slots}
119109
onValueChange={setSelectedSlots}
120110
placeholder="Slots"
121-
defaultValue={selectedSlots}
111+
value={selectedSlots}
122112
/>
123113
<MultiSelect
124114
options={years}
125115
onValueChange={setSelectedYears}
126116
placeholder="Years"
127-
defaultValue={selectedYears}
117+
value={selectedYears}
128118
/>
129119
<MultiSelect
130120
options={semesters}
131121
onValueChange={setSelectedSemesters}
132122
placeholder="Semesters"
133-
defaultValue={selectedSemesters}
123+
value={selectedSemesters}
134124
/>
135125
{/* <MultiSelect
136126
options={campuses}
137127
onValueChange={setSelectedCampuses}
138128
placeholder="Campuses"
139-
defaultValue={selectedCampuses}
129+
value={selectedCampuses}
140130
/> */}
141131
</div>
142132
<div className="flex justify-between">

0 commit comments

Comments
 (0)