diff --git a/src/lib/filtering/filter.service.ts b/src/lib/filtering/filter.service.ts index e7c3f3f..e334d10 100644 --- a/src/lib/filtering/filter.service.ts +++ b/src/lib/filtering/filter.service.ts @@ -37,7 +37,7 @@ export class FilterService { this._refresh$.next(true); } - toggleFilter(filterGroupSlug: string, key: string): void { + toggleFilter(filterGroupSlug: string, key: string, checkChildren = false): void { const filters = this.filterGroups.find(group => group.slug === filterGroupSlug)?.filters; if (!filters) { return console.error(`Cannot find filter group "${filterGroupSlug}"`); @@ -53,6 +53,10 @@ export class FilterService { if (found) { found.checked = !found.checked; + + if (checkChildren && found.checked && found instanceof NestedFilter) { + found.children.forEach(c => (c.checked = true)); + } } this.refresh(); @@ -99,6 +103,16 @@ export class FilterService { ); } + filtersEnabled(filterGroupSlug: string): boolean { + const group = this.getGroup(filterGroupSlug); + + if (!group) { + return false; + } + + return group.filters.some(filter => filter.checked || filter.children.some(c => c.checked)); + } + reset(): void { this.filterGroups.forEach(group => { group.filters.forEach(filter => { diff --git a/src/lib/services/dialog.service.ts b/src/lib/services/dialog.service.ts index a63ff35..66c143e 100644 --- a/src/lib/services/dialog.service.ts +++ b/src/lib/services/dialog.service.ts @@ -49,7 +49,7 @@ export abstract class DialogService { data, }); - const fn = async result => { + const fn = async (result: unknown) => { if (result && cb) { await cb(result); }