diff --git a/projects/aca-content/src/lib/components/search/search-results/search-results.component.spec.ts b/projects/aca-content/src/lib/components/search/search-results/search-results.component.spec.ts index 23cd6fb41..b9445886b 100644 --- a/projects/aca-content/src/lib/components/search/search-results/search-results.component.spec.ts +++ b/projects/aca-content/src/lib/components/search/search-results/search-results.component.spec.ts @@ -446,6 +446,40 @@ describe('SearchComponent', () => { flush(); })); + + it('should enable the reset button when userFacetBuckets was reset but queryFragments are still present', fakeAsync(() => { + queryBuilder.userFacetBucketsUpdate.next({ test: [{ label: 'test-value' }] as FacetFieldBucket[] }); + queryBuilder.queryFragmentsUpdate.next({ test: 'test-value' }); + queryBuilder.userFacetBucketsUpdate.next({}); + + tick(); + + fixture.detectChanges(); + + const resetBtn = getResetSearchButton(); + + expect(resetBtn).toBeDefined(); + expect(resetBtn.getAttribute('disabled')).toBeFalsy(); + + flush(); + })); + + it('should enable the reset button when queryFragments was reset but userFacetBuckets are still present', fakeAsync(() => { + queryBuilder.userFacetBucketsUpdate.next({ test: [{ label: 'test-value' }] as FacetFieldBucket[] }); + queryBuilder.queryFragmentsUpdate.next({ test: 'test-value' }); + queryBuilder.queryFragmentsUpdate.next({}); + + tick(); + + fixture.detectChanges(); + + const resetBtn = getResetSearchButton(); + + expect(resetBtn).toBeDefined(); + expect(resetBtn.getAttribute('disabled')).toBeFalsy(); + + flush(); + })); }); testHeader(SearchResultsComponent, false); diff --git a/projects/aca-content/src/lib/components/search/search-results/search-results.component.ts b/projects/aca-content/src/lib/components/search/search-results/search-results.component.ts index 146e7b45f..7dffbb171 100644 --- a/projects/aca-content/src/lib/components/search/search-results/search-results.component.ts +++ b/projects/aca-content/src/lib/components/search/search-results/search-results.component.ts @@ -84,7 +84,7 @@ import { formatSearchTerm } from '../../../utils/aca-search-utils'; import { SaveSearchDirective } from '../search-save/directive/save-search.directive'; -import { combineLatest, merge, Observable, of } from 'rxjs'; +import { combineLatest, Observable, of } from 'rxjs'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { MatMenuModule } from '@angular/material/menu'; import { IsFeatureSupportedInCurrentAcsPipe } from '../../../pipes/is-feature-supported.pipe'; @@ -173,10 +173,13 @@ export class SearchResultsComponent extends PageComponent implements OnInit, OnD this.searchConfig = searchConfig; }); - this.areFiltersActive$ = merge(this.queryBuilder.queryFragmentsUpdate, this.queryBuilder.userFacetBucketsUpdate).pipe( + this.areFiltersActive$ = combineLatest([this.queryBuilder.queryFragmentsUpdate, this.queryBuilder.userFacetBucketsUpdate]).pipe( takeUntilDestroyed(), - map((v) => { - return Object.values(v).some((filterValue) => (Array.isArray(filterValue) ? filterValue.length > 0 : !!filterValue)); + map((filters) => { + const [queryFragments, userFacetBuckets] = filters.map((rawFilter) => { + return Object.values(rawFilter).some((filterValue) => (Array.isArray(filterValue) ? filterValue.length > 0 : !!filterValue)); + }); + return queryFragments || userFacetBuckets; }) ); }