Skip to content

Commit ca73413

Browse files
committed
Stop filter dropdown from popping up on page reload
If you had selected a filter, but no value for that filter yet, the dropdown for selected the value would keep popping up on page reload. This could confuse users. This fixes that by moving the relevant state from redux into the component.
1 parent 6bc56f2 commit ca73413

3 files changed

Lines changed: 7 additions & 41 deletions

File tree

src/components/shared/TableFilters.tsx

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,12 @@ import { useTranslation } from "react-i18next";
33
import DatePicker from "react-datepicker";
44
import {
55
getFilters,
6-
getSecondFilter,
7-
getSelectedFilter,
86
getTextFilter,
97
} from "../../selectors/tableFilterSelectors";
108
import {
119
FilterData,
1210
editFilterValue,
13-
editSelectedFilter,
1411
editTextFilter,
15-
removeSecondFilter,
16-
removeSelectedFilter,
1712
removeTextFilter,
1813
resetFilterValues,
1914
} from "../../slices/tableFilterSlice";
@@ -52,8 +47,8 @@ const TableFilters = ({
5247
const dispatch = useAppDispatch();
5348

5449
const filterMap = useAppSelector(state => getFilters(state, resource));
55-
const secondFilter = useAppSelector(state => getSecondFilter(state));
56-
const selectedFilter = useAppSelector(state => getSelectedFilter(state));
50+
const [selectedFilter, setSelectedFilter] = useState("");
51+
const [secondFilter, setSecondFilter] = useState("");
5752
const textFilter = useAppSelector(state => getTextFilter(state, resource));
5853

5954
// Variables for showing different dialogs depending on what was clicked
@@ -76,8 +71,7 @@ const TableFilters = ({
7671
setFilterSelector(false);
7772

7873
dispatch(removeTextFilter(resource));
79-
dispatch(removeSelectedFilter());
80-
dispatch(removeSelectedFilter());
74+
setSelectedFilter("");
8175

8276
// Set all values of the filters in filterMap back to ""
8377
dispatch(resetFilterValues());
@@ -119,7 +113,7 @@ const TableFilters = ({
119113
}
120114

121115
if (name === "selectedFilter") {
122-
dispatch(editSelectedFilter(value));
116+
setSelectedFilter(value);
123117
setOpenSecondFilterMenu(true);
124118
}
125119

@@ -130,8 +124,8 @@ const TableFilters = ({
130124
if (filter) {
131125
dispatch(editFilterValue({ filterName: filter.name, value: value, resource }));
132126
setFilterSelector(false);
133-
dispatch(removeSelectedFilter());
134-
dispatch(removeSecondFilter());
127+
setSelectedFilter("");
128+
setSecondFilter("");
135129
setOpenSecondFilterMenu(false);
136130
mustApplyChanges = true;
137131
}
@@ -211,7 +205,7 @@ const TableFilters = ({
211205
resource,
212206
}));
213207
setFilterSelector(false);
214-
dispatch(removeSelectedFilter());
208+
setSelectedFilter("");
215209
// Reload of resource after going to very first page.
216210
dispatch(goToPage(0));
217211
await dispatch(loadResource());

src/selectors/tableFilterSelectors.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import { Resource } from "../slices/tableSlice";
99
export const getAllFilters = (state: RootState) => state.tableFilters.data;
1010
export const getStats = (state: RootState) => state.tableFilters.stats;
1111
export const getAllTextFilter = (state: RootState) => state.tableFilters.textFilter;
12-
export const getSelectedFilter = (state: RootState) => state.tableFilters.selectedFilter;
13-
export const getSecondFilter = (state: RootState) => state.tableFilters.secondFilter;
1412
export const getCurrentFilterResource = (state: RootState) => state.tableFilters.currentResource;
1513
export const getFilters = createSelector(
1614
[getAllFilters, (_state, resource: Resource) => resource],

src/slices/tableFilterSlice.ts

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,6 @@ type TableFilterState = {
5050
data: FilterData[],
5151
filterProfiles: FilterProfile[],
5252
textFilter: TextFilter[],
53-
selectedFilter: string,
54-
secondFilter: string,
5553
stats: Stats[],
5654
}
5755

@@ -65,8 +63,6 @@ const initialState: TableFilterState = {
6563
data: [],
6664
filterProfiles: [],
6765
textFilter: [],
68-
selectedFilter: "",
69-
secondFilter: "",
7066
stats: [],
7167
};
7268

@@ -362,24 +358,6 @@ const tableFilterSlice = createSlice({
362358
const filterMap = action.payload;
363359
state.data = filterMap;
364360
},
365-
editSelectedFilter(state, action: PayloadAction<
366-
TableFilterState["selectedFilter"]
367-
>) {
368-
const filter = action.payload;
369-
state.selectedFilter = filter;
370-
},
371-
removeSelectedFilter(state) {
372-
state.selectedFilter = "";
373-
},
374-
editSecondFilter(state, action: PayloadAction<
375-
TableFilterState["secondFilter"]
376-
>) {
377-
const filter = action.payload;
378-
state.secondFilter = filter;
379-
},
380-
removeSecondFilter(state) {
381-
state.secondFilter = "";
382-
},
383361
resetCorruptedState(state) {
384362
// Reset corrupted localStorage state to initial values
385363
if (!Array.isArray(state.data)) {
@@ -438,10 +416,6 @@ export const {
438416
editTextFilter,
439417
removeTextFilter,
440418
loadFilterProfile,
441-
editSelectedFilter,
442-
removeSelectedFilter,
443-
editSecondFilter,
444-
removeSecondFilter,
445419
resetCorruptedState,
446420
} = tableFilterSlice.actions;
447421

0 commit comments

Comments
 (0)