Skip to content

Commit 22afc2e

Browse files
feat: donors multi-level filter
1 parent ae972ea commit 22afc2e

3 files changed

Lines changed: 16 additions & 6 deletions

File tree

src/app/components/ToolBoxPanel/components/filters/data.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ export const filtergroups: FilterGroupProps[] = [
147147
},
148148
{
149149
name: "Donors",
150-
addSubOptionFilters: false,
150+
addSubOptionFilters: true,
151151
},
152152
{
153153
name: "Replenishment Periods",

src/app/hooks/useAppliedFilters.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@ interface UseAppliedFiltersProps {
77
type: string;
88
}
99

10-
export function useAppliedFilters(
11-
props: UseAppliedFiltersProps
12-
): {
10+
export function useAppliedFilters(props: UseAppliedFiltersProps): {
1311
setAppliedFilters: ActionCreator<string[]>;
1412
appliedFilters: string[];
1513
setAppliedFiltersChildren?: ActionCreator<string[]>;
@@ -59,8 +57,10 @@ export function useAppliedFilters(
5957
return {
6058
setAppliedFilters: actions.setDonorCategories,
6159
appliedFilters: data.donorCategories,
62-
setAppliedFiltersChildren: actions.setDonors,
63-
appliedFiltersChildren: data.donors,
60+
setAppliedFiltersChildren: actions.setDonorSubCategories,
61+
appliedFiltersChildren: data.donorSubCategories,
62+
setAppliedFiltersGrandChildren: actions.setDonors,
63+
appliedFiltersGrandChildren: data.donors,
6464
};
6565
}
6666
return {

src/app/state/api/action-reducers/sync/filters/index.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export const defaultAppliedFilters: AppliedFiltersModel = {
1111
replenishmentPeriods: [] as string[],
1212
donors: [] as string[],
1313
donorCategories: [] as string[],
14+
donorSubCategories: [] as string[],
1415
};
1516

1617
export interface AppliedFiltersModel {
@@ -23,6 +24,7 @@ export interface AppliedFiltersModel {
2324
replenishmentPeriods: string[];
2425
donors: string[];
2526
donorCategories: string[];
27+
donorSubCategories: string[];
2628
}
2729

2830
export interface AppliedFiltersStateModel {
@@ -44,6 +46,8 @@ export interface AppliedFiltersStateModel {
4446
setDonors: Action<AppliedFiltersStateModel, string[]>;
4547
donorCategories: string[];
4648
setDonorCategories: Action<AppliedFiltersStateModel, string[]>;
49+
donorSubCategories: string[];
50+
setDonorSubCategories: Action<AppliedFiltersStateModel, string[]>;
4751
setAll: Action<AppliedFiltersStateModel, AppliedFiltersModel>;
4852
actionDefaultNone: Action<AppliedFiltersStateModel, string[]>;
4953
appliedFiltersCount: number;
@@ -95,6 +99,11 @@ export const AppliedFiltersState: AppliedFiltersStateModel = {
9599
state.donorCategories = payload;
96100
state.appliedFiltersCount += payload.length;
97101
}),
102+
donorSubCategories: [],
103+
setDonorSubCategories: action((state, payload: string[]) => {
104+
state.donorSubCategories = payload;
105+
state.appliedFiltersCount += payload.length;
106+
}),
98107
setAll: action((state, payload: AppliedFiltersModel) => {
99108
state.locations = payload.locations;
100109
state.components = payload.components;
@@ -105,6 +114,7 @@ export const AppliedFiltersState: AppliedFiltersStateModel = {
105114
state.replenishmentPeriods = payload.replenishmentPeriods;
106115
state.donors = payload.donors;
107116
state.donorCategories = payload.donorCategories;
117+
state.donorSubCategories = payload.donorSubCategories;
108118
state.appliedFiltersCount =
109119
payload.locations.length +
110120
payload.components.length +

0 commit comments

Comments
 (0)