diff --git a/src/app/shared/search/search-labels/search-label-loader/search-label-loader.decorator.ts b/src/app/shared/search/search-labels/search-label-loader/search-label-loader.decorator.ts index c37607a437..7f0d469b6e 100644 --- a/src/app/shared/search/search-labels/search-label-loader/search-label-loader.decorator.ts +++ b/src/app/shared/search/search-labels/search-label-loader/search-label-loader.decorator.ts @@ -1,18 +1,23 @@ -import { Component } from '@angular/core'; +import { + Component, + Type, +} from '@angular/core'; -import { GenericConstructor } from '../../../../core/shared/generic-constructor'; +import { hasNoValue } from '../../../empty.util'; +import { SearchLabelComponent } from '../search-label/search-label.component'; +import { SearchLabelRangeComponent } from '../search-label-range/search-label-range.component'; -export const map: Map> = new Map(); +export const DEFAULT_LABEL_OPERATOR = undefined; -export function renderSearchLabelFor(operator: string) { - return function decorator(objectElement: any) { - if (!objectElement) { - return; - } - map.set(operator, objectElement); - }; -} - -export function getSearchLabelByOperator(operator: string): GenericConstructor { - return map.get(operator); +export const LABEL_DECORATOR_MAP: Map> = new Map([ + [DEFAULT_LABEL_OPERATOR, SearchLabelComponent as Type], + ['range', SearchLabelRangeComponent as Type], +]); + +export function getSearchLabelByOperator(operator: string): Type { + const comp: Type = LABEL_DECORATOR_MAP.get(operator); + if (hasNoValue(comp)) { + return LABEL_DECORATOR_MAP.get(DEFAULT_LABEL_OPERATOR); + } + return comp; } 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 f4f886c737..46a8c1c534 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 @@ -21,7 +21,6 @@ import { SearchService } from '../../../../core/shared/search/search.service'; import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service'; import { currentPath } from '../../../utils/route.utils'; import { AppliedFilter } from '../../models/applied-filter.model'; -import { renderSearchLabelFor } from '../search-label-loader/search-label-loader.decorator'; /** * Component that represents the label containing the currently active filters @@ -38,7 +37,6 @@ import { renderSearchLabelFor } from '../search-label-loader/search-label-loader TranslateModule, ], }) -@renderSearchLabelFor('range') export class SearchLabelRangeComponent implements OnInit { @Input() inPlaceSearch: boolean; 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 490a147504..7795555c36 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 @@ -18,7 +18,6 @@ import { SearchService } from '../../../../core/shared/search/search.service'; import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service'; import { currentPath } from '../../../utils/route.utils'; import { AppliedFilter } from '../../models/applied-filter.model'; -import { renderSearchLabelFor } from '../search-label-loader/search-label-loader.decorator'; /** * Component that represents the label containing the currently active filters @@ -30,13 +29,6 @@ import { renderSearchLabelFor } from '../search-label-loader/search-label-loader standalone: true, imports: [RouterLink, AsyncPipe, TranslateModule], }) -@renderSearchLabelFor('equals') -@renderSearchLabelFor('notequals') -@renderSearchLabelFor('authority') -@renderSearchLabelFor('notauthority') -@renderSearchLabelFor('contains') -@renderSearchLabelFor('notcontains') -@renderSearchLabelFor('query') export class SearchLabelComponent implements OnInit { @Input() inPlaceSearch: boolean; @Input() appliedFilter: AppliedFilter;