diff --git a/src/app/core/shared/search/search-filter.service.ts b/src/app/core/shared/search/search-filter.service.ts index de09ef67e0..c4675be50f 100644 --- a/src/app/core/shared/search/search-filter.service.ts +++ b/src/app/core/shared/search/search-filter.service.ts @@ -13,7 +13,8 @@ import { SearchFilterIncrementPageAction, SearchFilterInitializeAction, SearchFilterResetPageAction, - SearchFilterToggleAction + SearchFilterToggleAction, + SearchFilterMinimizeAllPageAction, } from '../../../shared/search/search-filters/search-filter/search-filter.actions'; import { hasValue, isNotEmpty, } from '../../../shared/empty.util'; import { SearchFilterConfig } from '../../../shared/search/models/search-filter-config.model'; @@ -202,7 +203,7 @@ export class SearchFilterService { select(filterByNameSelector(filterName)), map((object: SearchFilterState) => { if (object) { - return object.filterCollapsed; + return object.filterCollapsed || object.minimized; } else { return false; } @@ -284,6 +285,10 @@ export class SearchFilterService { public resetPage(filterName: string): void { this.store.dispatch(new SearchFilterResetPageAction(filterName)); } + + public minimizeAll(): void { + this.store.dispatch(new SearchFilterMinimizeAllPageAction()); + } } function filterByNameSelector(name: string): MemoizedSelector { diff --git a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.html b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.html index 817b1e9316..f0e6120725 100644 --- a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.html +++ b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.html @@ -1,7 +1,8 @@ + [queryParams]="addQueryParams$ | async" + (click)="filterService.minimizeAll()"> {{filterValue.label}} diff --git a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.html b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.html index 55ae44a160..186e65b6d1 100644 --- a/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.html +++ b/src/app/shared/search/search-filters/search-filter/search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component.html @@ -1,7 +1,8 @@ + [queryParams]="removeQueryParams | async" + (click)="searchFilterService.minimizeAll()"> @@ -21,7 +20,6 @@ diff --git a/src/app/shared/search/search-filters/search-filters.component.html b/src/app/shared/search/search-filters/search-filters.component.html index e392cd2663..068e1c53cf 100644 --- a/src/app/shared/search/search-filters/search-filters.component.html +++ b/src/app/shared/search/search-filters/search-filters.component.html @@ -4,4 +4,4 @@ - {{"search.filters.reset" | translate}} + diff --git a/src/app/shared/search/search-filters/search-filters.component.ts b/src/app/shared/search/search-filters/search-filters.component.ts index 65f3029a6f..0d67e4c79e 100644 --- a/src/app/shared/search/search-filters/search-filters.component.ts +++ b/src/app/shared/search/search-filters/search-filters.component.ts @@ -11,6 +11,7 @@ import { SearchConfigurationService } from '../../../core/shared/search/search-c import { SEARCH_CONFIG_SERVICE } from '../../../my-dspace-page/my-dspace-page.component'; import { currentPath } from '../../utils/route.utils'; import { AppliedFilter } from '../models/applied-filter.model'; +import { SearchFilterService } from '../../../core/shared/search/search-filter.service'; @Component({ selector: 'ds-search-filters', @@ -69,9 +70,11 @@ export class SearchFiltersComponent implements OnInit { * @param {SearchConfigurationService} searchConfigService */ constructor( - private searchService: SearchService, - private router: Router, - @Inject(SEARCH_CONFIG_SERVICE) private searchConfigService: SearchConfigurationService) { + protected searchService: SearchService, + protected searchFilterService: SearchFilterService, + protected router: Router, + @Inject(SEARCH_CONFIG_SERVICE) protected searchConfigService: SearchConfigurationService, + ) { } ngOnInit(): void { @@ -99,4 +102,9 @@ export class SearchFiltersComponent implements OnInit { return config ? config.name : undefined; } + minimizeFilters(): void { + if (this.searchService.appliedFilters$.value.length > 0) { + this.searchFilterService.minimizeAll(); + } + } } diff --git a/src/app/shared/search/search-labels/search-label-range/search-label-range.component.html b/src/app/shared/search/search-labels/search-label-range/search-label-range.component.html index 84c6c75ebc..fc1d2312a6 100644 --- a/src/app/shared/search/search-labels/search-label-range/search-label-range.component.html +++ b/src/app/shared/search/search-labels/search-label-range/search-label-range.component.html @@ -1,6 +1,7 @@ {{('search.filters.applied.f.' + appliedFilter.filter + '.min') | translate}}: {{ min }} × @@ -8,6 +9,7 @@ {{('search.filters.applied.f.' + appliedFilter.filter + '.max') | translate}}: {{ max }} × diff --git a/src/app/shared/search/search-labels/search-label-range/search-label-range.component.spec.ts b/src/app/shared/search/search-labels/search-label-range/search-label-range.component.spec.ts index ca835f2bbf..d0e09f891b 100644 --- a/src/app/shared/search/search-labels/search-label-range/search-label-range.component.spec.ts +++ b/src/app/shared/search/search-labels/search-label-range/search-label-range.component.spec.ts @@ -13,6 +13,8 @@ import { SearchConfigurationServiceStub } from '../../../testing/search-configur import { PaginationService } from '../../../../core/pagination/pagination.service'; import { PaginationServiceStub } from '../../../testing/pagination-service.stub'; import { PaginationComponentOptions } from '../../../pagination/pagination-component-options.model'; +import { SearchFilterService } from '../../../../core/shared/search/search-filter.service'; +import { SearchFilterServiceStub } from '../../../testing/search-filter-service.stub'; describe('SearchLabelRangeComponent', () => { let comp: SearchLabelRangeComponent; @@ -20,6 +22,7 @@ describe('SearchLabelRangeComponent', () => { let route: ActivatedRouteStub; let searchConfigurationService: SearchConfigurationServiceStub; + let searchFilterService: SearchFilterServiceStub; let paginationService: PaginationServiceStub; const searchLink = '/search'; @@ -51,6 +54,7 @@ describe('SearchLabelRangeComponent', () => { init(); route = new ActivatedRouteStub(initialRouteParams); searchConfigurationService = new SearchConfigurationServiceStub(); + searchFilterService = new SearchFilterServiceStub(); paginationService = new PaginationServiceStub(pagination); await TestBed.configureTestingModule({ @@ -65,6 +69,7 @@ describe('SearchLabelRangeComponent', () => { { provide: PaginationService, useValue: paginationService }, { provide: SearchConfigurationService, useValue: searchConfigurationService }, { provide: SearchService, useValue: new SearchServiceStub(searchLink) }, + { provide: SearchFilterService, useValue: searchFilterService }, { provide: ActivatedRoute, useValue: route }, ], }).compileComponents(); diff --git a/src/app/shared/search/search-labels/search-label-range/search-label-range.component.ts b/src/app/shared/search/search-labels/search-label-range/search-label-range.component.ts index 593dc2f9e1..5842358ce1 100644 --- a/src/app/shared/search/search-labels/search-label-range/search-label-range.component.ts +++ b/src/app/shared/search/search-labels/search-label-range/search-label-range.component.ts @@ -7,6 +7,7 @@ import { AppliedFilter } from '../../models/applied-filter.model'; import { renderSearchLabelFor } from '../search-label-loader/search-label-loader.decorator'; import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service'; import { PaginationService } from '../../../../core/pagination/pagination.service'; +import { SearchFilterService } from '../../../../core/shared/search/search-filter.service'; /** * Component that represents the label containing the currently active filters @@ -37,6 +38,7 @@ export class SearchLabelRangeComponent implements OnInit { protected router: Router, protected searchConfigurationService: SearchConfigurationService, protected searchService: SearchService, + protected searchFilterService: SearchFilterService, ) { } diff --git a/src/app/shared/search/search-labels/search-label/search-label.component.html b/src/app/shared/search/search-labels/search-label/search-label.component.html index c2caa9d432..e3078a23c7 100644 --- a/src/app/shared/search/search-labels/search-label/search-label.component.html +++ b/src/app/shared/search/search-labels/search-label/search-label.component.html @@ -1,6 +1,7 @@ + [queryParams]="(removeParameters$ | async)" + (click)="searchFilterService.minimizeAll()"> {{('search.filters.applied.f.' + appliedFilter.filter) | translate}}{{'search.filters.applied.operator.' + appliedFilter.operator | translate}}: {{'search.filters.' + appliedFilter.filter + '.' + appliedFilter.label | translate: {default: appliedFilter.label} }} × diff --git a/src/app/shared/search/search-labels/search-label/search-label.component.spec.ts b/src/app/shared/search/search-labels/search-label/search-label.component.spec.ts index 657f9ae4a1..905726901e 100644 --- a/src/app/shared/search/search-labels/search-label/search-label.component.spec.ts +++ b/src/app/shared/search/search-labels/search-label/search-label.component.spec.ts @@ -13,6 +13,8 @@ import { SearchConfigurationServiceStub } from '../../../testing/search-configur import { PaginationService } from '../../../../core/pagination/pagination.service'; import { PaginationServiceStub } from '../../../testing/pagination-service.stub'; import { PaginationComponentOptions } from '../../../pagination/pagination-component-options.model'; +import { SearchFilterServiceStub } from '../../../testing/search-filter-service.stub'; +import { SearchFilterService } from '../../../../core/shared/search/search-filter.service'; describe('SearchLabelComponent', () => { let comp: SearchLabelComponent; @@ -20,6 +22,7 @@ describe('SearchLabelComponent', () => { let route: ActivatedRouteStub; let searchConfigurationService: SearchConfigurationServiceStub; + let searchFilterService: SearchFilterServiceStub; let paginationService: PaginationServiceStub; const searchLink = '/search'; @@ -51,6 +54,7 @@ describe('SearchLabelComponent', () => { init(); route = new ActivatedRouteStub(initialRouteParams); searchConfigurationService = new SearchConfigurationServiceStub(); + searchFilterService = new SearchFilterServiceStub(); paginationService = new PaginationServiceStub(pagination); await TestBed.configureTestingModule({ @@ -64,6 +68,7 @@ describe('SearchLabelComponent', () => { providers: [ { provide: PaginationService, useValue: paginationService }, { provide: SearchConfigurationService, useValue: searchConfigurationService }, + { provide: SearchFilterService, useValue: searchFilterService }, { provide: SearchService, useValue: new SearchServiceStub(searchLink) }, { provide: ActivatedRoute, useValue: route }, ], diff --git a/src/app/shared/search/search-labels/search-label/search-label.component.ts b/src/app/shared/search/search-labels/search-label/search-label.component.ts index ff891de12b..12b8bb15b8 100644 --- a/src/app/shared/search/search-labels/search-label/search-label.component.ts +++ b/src/app/shared/search/search-labels/search-label/search-label.component.ts @@ -7,6 +7,7 @@ import { AppliedFilter } from '../../models/applied-filter.model'; import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service'; import { renderSearchLabelFor } from '../search-label-loader/search-label-loader.decorator'; import { PaginationService } from '../../../../core/pagination/pagination.service'; +import { SearchFilterService } from '../../../../core/shared/search/search-filter.service'; /** * Component that represents the label containing the currently active filters @@ -30,6 +31,7 @@ export class SearchLabelComponent implements OnInit { protected router: Router, protected searchConfigurationService: SearchConfigurationService, protected searchService: SearchService, + protected searchFilterService: SearchFilterService, ) { }