From 174b239f26e9b877648f5c63432abf8c9bb97654 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Wed, 23 Feb 2022 13:22:49 +0200 Subject: [PATCH] get a list of enabled filters --- src/lib/filtering/filter-utils.ts | 4 ++-- src/lib/filtering/filter.service.ts | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/lib/filtering/filter-utils.ts b/src/lib/filtering/filter-utils.ts index 44b4e5c..5d7391b 100644 --- a/src/lib/filtering/filter-utils.ts +++ b/src/lib/filtering/filter-utils.ts @@ -96,6 +96,6 @@ export function flatChildren(filters: INestedFilter[]): IFilter[] { return filters.reduce((acc: IFilter[], f) => [...acc, ...(f?.children ?? [])], []); } -export function toFlatFilters(groups: IFilterGroup[]): IFilter[] { - return groups.reduce((acc: IFilter[], f) => [...acc, ...f.filters, ...flatChildren(f.filters)], []); +export function toFlatFilters(groups: IFilterGroup[], condition = (filters: IFilter[]) => filters): IFilter[] { + return groups.reduce((acc: IFilter[], f) => [...acc, ...condition(f.filters), ...condition(flatChildren(f.filters))], []); } diff --git a/src/lib/filtering/filter.service.ts b/src/lib/filtering/filter.service.ts index e334d10..abcf49b 100644 --- a/src/lib/filtering/filter.service.ts +++ b/src/lib/filtering/filter.service.ts @@ -25,9 +25,13 @@ export class FilterService { return Object.values(this._filterGroups$.getValue()); } + get enabledFlatFilters() { + return toFlatFilters(this.filterGroups, filters => filters.filter(f => f.checked)); + } + private get _showResetFilters$(): Observable { return this.filterGroups$.pipe( - map(toFlatFilters), + map(value => toFlatFilters(value)), map(f => !!f.find(el => el.checked)), shareDistinctLast(), );