@siemens/element-ng 48.2.0 → 48.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/index.d.ts +5 -2
- package/application-header/index.d.ts +15 -2
- package/chat-messages/index.d.ts +670 -0
- package/chat-messages/package.json +3 -0
- package/dashboard/index.d.ts +3 -3
- package/fesm2022/siemens-element-ng-accordion.mjs +7 -4
- package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-application-header.mjs +62 -1
- package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-card.mjs +4 -4
- package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-chat-messages.mjs +959 -0
- package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-dashboard.mjs +15 -15
- package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datepicker.mjs +5 -3
- package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-file-uploader.mjs +277 -118
- package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filtered-search.mjs +7 -12
- package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-icon.mjs +3 -1
- package/fesm2022/siemens-element-ng-icon.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-ip-input.mjs +92 -89
- package/fesm2022/siemens-element-ng-ip-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown-renderer.mjs +253 -0
- package/fesm2022/siemens-element-ng-markdown-renderer.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs +2 -9
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-phone-number.mjs +5 -4
- package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-popover.mjs +3 -4
- package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-resize-observer.mjs +13 -0
- package/fesm2022/siemens-element-ng-resize-observer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-select.mjs +4 -0
- package/fesm2022/siemens-element-ng-select.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-side-panel.mjs +3 -5
- package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-bar.mjs +3 -4
- package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tour.mjs +58 -21
- package/fesm2022/siemens-element-ng-tour.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tree-view.mjs +43 -4
- package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
- package/file-uploader/index.d.ts +119 -15
- package/filtered-search/index.d.ts +6 -7
- package/icon/index.d.ts +3 -1
- package/ip-input/index.d.ts +13 -0
- package/markdown-renderer/index.d.ts +36 -0
- package/markdown-renderer/package.json +3 -0
- package/navbar-vertical/index.d.ts +2 -4
- package/package.json +15 -7
- package/resize-observer/index.d.ts +13 -0
- package/schematics/migrations/action-modal-migration/action-modal-migration.js +47 -6
- package/schematics/migrations/data/attribute-selectors.js +6 -0
- package/schematics/migrations/data/component-names.js +78 -0
- package/schematics/migrations/data/element-selectors.js +10 -0
- package/schematics/migrations/data/index.js +17 -0
- package/schematics/migrations/data/output-names.js +7 -0
- package/schematics/migrations/data/symbol-removals.js +49 -0
- package/schematics/migrations/element-migration/element-migration.js +93 -0
- package/schematics/migrations/element-migration/index.js +5 -0
- package/schematics/migrations/index.js +7 -2
- package/schematics/migrations/wizard-migration/index.js +80 -0
- package/schematics/scss-import-to-siemens-migration/index.js +3 -3
- package/schematics/ts-import-to-siemens-migration/index.js +2 -2
- package/schematics/utils/index.js +3 -3
- package/schematics/utils/project-utils.js +24 -35
- package/schematics/utils/template-utils.js +78 -2
- package/schematics/utils/ts-utils.js +5 -5
- package/select/index.d.ts +5 -0
- package/status-bar/index.d.ts +0 -1
- package/template-i18n.json +10 -0
- package/tour/index.d.ts +4 -2
- package/translate/index.d.ts +10 -0
- package/tree-view/index.d.ts +40 -1
- package/schematics/migrations/to-legacy-migration/to-legacy-migration.js +0 -55
- package/schematics/migrations/to-legacy-migration/to-legacy-replacement.js +0 -35
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-filtered-search.mjs","sources":["../../../../projects/element-ng/filtered-search/si-filtered-search-helper.ts","../../../../projects/element-ng/filtered-search/values/si-filtered-search-value.base.ts","../../../../projects/element-ng/filtered-search/values/date-value/si-filtered-search-date-value.component.ts","../../../../projects/element-ng/filtered-search/values/date-value/si-filtered-search-date-value.component.html","../../../../projects/element-ng/filtered-search/values/si-filtered-search-option-value.base.ts","../../../../projects/element-ng/filtered-search/values/multi-select/si-filtered-search-multi-select.component.ts","../../../../projects/element-ng/filtered-search/values/multi-select/si-filtered-search-multi-select.component.html","../../../../projects/element-ng/filtered-search/values/typeahead/si-filtered-search-typeahead.component.ts","../../../../projects/element-ng/filtered-search/values/typeahead/si-filtered-search-typeahead.component.html","../../../../projects/element-ng/filtered-search/si-filtered-search-value.component.ts","../../../../projects/element-ng/filtered-search/si-filtered-search-value.component.html","../../../../projects/element-ng/filtered-search/si-filtered-search.component.ts","../../../../projects/element-ng/filtered-search/si-filtered-search.component.html","../../../../projects/element-ng/filtered-search/si-filtered-search.module.ts","../../../../projects/element-ng/filtered-search/index.ts","../../../../projects/element-ng/filtered-search/siemens-element-ng-filtered-search.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { formatDate } from '@angular/common';\nimport { isValid } from '@siemens/element-ng/datepicker';\n\nimport { CriterionDefinition, OptionCriterion, OptionType } from './si-filtered-search.model';\n\nexport interface TypeaheadOptionCriterion extends OptionCriterion {\n selected?: boolean;\n translatedLabel: string;\n}\n\nexport interface InternalCriterionDefinition extends CriterionDefinition {\n label: string;\n translatedLabel: string;\n}\n\n/** Convert options to option criterions */\nexport const toOptionCriteria = (values?: OptionType[]): OptionCriterion[] =>\n values?.map(v =>\n typeof v === 'string'\n ? { value: v }\n : { label: v.label, value: v.value, iconClass: v.iconClass }\n ) ?? [];\n\n/*\n * Update selected state the matching is based on value since plain\n * string options will automatically fill the value attribute with the\n * actual string value.\n */\nexport const selectOptions = (options: TypeaheadOptionCriterion[], toSelect: string[]): void =>\n options.forEach(val => (val.selected = toSelect.includes(val.value)));\n\n/**\n * Difference by name, create an array that contains those elements of criteria's a that are not in criteria's b.\n * This operation is also sometimes called minus (-).\n */\nexport const differenceByName = (\n a: InternalCriterionDefinition[],\n b: { config: InternalCriterionDefinition }[]\n): InternalCriterionDefinition[] =>\n a.filter(x => b.filter(y => y.config.name === x.name).length === 0);\n\n/** Convert criteria to internal model criteria */\nexport const toInternalCriteria = (crit: CriterionDefinition): InternalCriterionDefinition => {\n return {\n ...crit,\n label: crit.label ?? crit.name,\n translatedLabel: crit.label ?? crit.name\n };\n};\n\nexport const getISODateString = (\n date: Date | undefined,\n format: 'date' | 'date-time',\n locale: string\n): string => {\n if (!isValid(date)) {\n return '';\n }\n\n switch (format) {\n case 'date':\n return formatDate(date, 'yyyy-MM-dd', locale);\n case 'date-time':\n return date.toISOString();\n }\n};\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Directive, ElementRef, input, model, output, signal, Signal } from '@angular/core';\nimport { TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { CriterionDefinition, CriterionValue } from '../si-filtered-search.model';\n\n@Directive({\n host: {\n '[class.invalid-criterion]': '!validValue()',\n 'class': 'pill pill-interactive px-0 criterion-value-section'\n }\n})\nexport abstract class SiFilteredSearchValueBase {\n readonly active = model.required<boolean>();\n readonly criterionValue = model.required<CriterionValue>();\n readonly definition = input.required<CriterionDefinition>();\n readonly disabled = input.required<boolean>();\n readonly searchLabel = input.required<TranslatableString>();\n\n readonly submitValue = output<{ freeText: string } | void>();\n readonly editValue = output();\n readonly backspaceOverflow = output();\n\n protected abstract readonly valueInput: Signal<ElementRef<HTMLInputElement> | undefined>;\n protected abstract readonly validValue: Signal<boolean>;\n\n readonly focusInOverlay = signal(false).asReadonly();\n\n focus(): void {\n this.valueInput()?.nativeElement.focus();\n }\n\n protected valueEnter(): void {\n if (\n !this.definition().multiSelect &&\n (this.criterionValue().value || this.criterionValue().dateValue)\n ) {\n this.active.set(false);\n this.submitValue.emit();\n }\n }\n\n protected valueBackspace(): void {\n if (!this.valueInput()!.nativeElement.value) {\n this.backspaceOverflow.emit();\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { DatePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n LOCALE_ID,\n signal,\n viewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n getDatepickerFormat,\n getNamedFormat,\n isValid,\n SiDatepickerDirective,\n SiDatepickerOverlayDirective\n} from '@siemens/element-ng/datepicker';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { getISODateString } from '../../si-filtered-search-helper';\nimport { SiFilteredSearchValueBase } from '../si-filtered-search-value.base';\n\n@Component({\n selector: 'si-filtered-search-date-value',\n imports: [DatePipe, FormsModule, SiDatepickerDirective, SiTranslatePipe],\n templateUrl: './si-filtered-search-date-value.component.html',\n styleUrl: './si-filtered-search-date-value.component.scss',\n providers: [\n { provide: SiFilteredSearchValueBase, useExisting: SiFilteredSearchDateValueComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiFilteredSearchDateValueComponent extends SiFilteredSearchValueBase {\n private locale = inject(LOCALE_ID).toString();\n\n protected override readonly valueInput = viewChild<ElementRef<HTMLInputElement>>('valueInput');\n private readonly datepickerOverlay = viewChild(SiDatepickerOverlayDirective);\n\n protected readonly disableTime = signal(false);\n protected readonly shortDateFormat: string;\n\n override readonly focusInOverlay = computed(() => !!this.datepickerOverlay()?.isShown());\n readonly validFormat = computed(() => isValid(this.criterionValue().dateValue));\n // The information if the time is currently disabled is only present in the\n // current search criterion instance and not in the generic configuration.\n // So we need to merge the initial config with the current instance config.\n readonly dateConfig = computed(() => ({\n ...this.definition().datepickerConfig,\n disabledTime: this.disableTime()\n }));\n readonly dateFormat = computed(() => getDatepickerFormat(this.locale, this.dateConfig()));\n override readonly validValue = computed(() => {\n const dateConfig = this.dateConfig();\n const minDate = dateConfig?.minDate ?? false;\n const maxDate = dateConfig?.maxDate ?? false;\n const dateValue = this.criterionValue().dateValue ?? false;\n return (\n (!minDate || (minDate && dateValue && dateValue >= minDate)) &&\n (!maxDate || (maxDate && dateValue && dateValue <= maxDate))\n );\n });\n\n constructor() {\n super();\n this.shortDateFormat = getNamedFormat(this.locale, 'shortDate');\n if (!this.shortDateFormat.includes('yyyy')) {\n this.shortDateFormat = this.shortDateFormat.replace('yy', 'yyyy');\n }\n }\n\n protected valueDateSelect(date: Date): void {\n // In case the user type an illegal date into the date input,\n // our directive emits a new undefined value and keeps\n if (!date && this.criterionValue().dateValue) {\n date = new Date(this.criterionValue().dateValue!);\n }\n\n let value: string;\n const validationType = this.definition().validationType;\n if (validationType === 'date') {\n value = getISODateString(date, 'date', this.locale);\n } else if (validationType === 'date-time') {\n if (this.disableTime()) {\n value = getISODateString(date, 'date', this.locale);\n } else {\n value = getISODateString(date, 'date-time', this.locale);\n }\n }\n\n this.criterionValue.update(v => ({ ...v, value, dateValue: date }));\n }\n}\n","@let dateValue = criterionValue().dateValue;\n@if (!active()) {\n <div\n class=\"criterion-value-text focus-inside px-4\"\n [tabindex]=\"disabled() ? -1 : 0\"\n (keydown.enter)=\"editValue.emit()\"\n (click)=\"editValue.emit()\"\n >\n @if (!validFormat()) {\n <!-- DatePipe throws an error if the date is invalid, so we have to do it on our own. -->\n <!-- We may should have a better solution here. Ideally we would keep the broken string so that a user can fix it later. -->\n\n {{ $any(dateValue)?.toString() }}\n } @else if (!disableTime() || definition().validationType === 'date-time') {\n {{ dateValue | date: dateFormat() }}\n } @else {\n {{ dateValue | date: shortDateFormat }}\n }\n </div>\n} @else {\n <input\n #valueInput\n type=\"text\"\n siDatepicker\n class=\"px-4 py-0 border-0 focus-inside\"\n [attr.aria-label]=\"searchLabel() | translate\"\n [siDatepickerConfig]=\"dateConfig()\"\n [ngModel]=\"dateValue\"\n (keydown.backspace)=\"valueBackspace()\"\n (keydown.enter)=\"valueEnter()\"\n (siDatepickerDisabledTime)=\"disableTime.set($event)\"\n (ngModelChange)=\"valueDateSelect($event)\"\n />\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { computed, DestroyRef, Directive, inject, input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { injectSiTranslateService } from '@siemens/element-translate-ng/translate';\nimport { BehaviorSubject, Observable, of, switchMap } from 'rxjs';\nimport { debounceTime, first, map, tap } from 'rxjs/operators';\n\nimport {\n InternalCriterionDefinition,\n toOptionCriteria,\n TypeaheadOptionCriterion\n} from '../si-filtered-search-helper';\nimport { OptionCriterion, OptionType } from '../si-filtered-search.model';\nimport { SiFilteredSearchValueBase } from './si-filtered-search-value.base';\n\n@Directive()\nexport abstract class SiFilteredSearchOptionValueBase extends SiFilteredSearchValueBase {\n readonly lazyValueProvider =\n input<(criterionName: string, typed: string | string[]) => Observable<OptionType[]>>();\n readonly searchDebounceTime = input.required<number>();\n readonly onlySelectValue = input.required<boolean>();\n readonly maxCriteriaOptions = input.required<number>();\n readonly optionsInScrollableView = input.required<number>();\n readonly readonly = input.required<boolean>();\n readonly disableSelectionByColonAndSemicolon = input.required<boolean>();\n readonly isStrictOrOnlySelectValue = input.required<boolean>();\n\n protected readonly inputChange = new BehaviorSubject('');\n\n private readonly destroyRef = inject(DestroyRef);\n protected readonly translateService = injectSiTranslateService();\n\n readonly inputType = computed(() =>\n this.definition().validationType === 'integer' || this.definition().validationType === 'float'\n ? 'number'\n : 'text'\n );\n readonly step = computed(() => (this.definition().validationType === 'integer' ? '1' : 'any'));\n readonly options = computed(() => this.buildOptions());\n override readonly validValue = computed(() => {\n const config = this.definition();\n if (!this.isStrictOrOnlySelectValue() && !config.strictValue && !config.onlySelectValue) {\n return true;\n }\n\n // TODO: this never worked with lazy options. We should fix that.\n // TODO: checking if options are empty is also questionable. Should be changed v47.\n return (\n (config.options?.length && this.hasOptionValue()) ||\n (!config.options?.length && !!this.criterionValue().value)\n );\n });\n\n protected buildOptions(): Observable<TypeaheadOptionCriterion[]> | undefined {\n let optionsStream: Observable<OptionCriterion[]> | undefined;\n if (this.lazyValueProvider()) {\n optionsStream = this.inputChange.pipe(\n debounceTime(this.searchDebounceTime()),\n takeUntilDestroyed(this.destroyRef),\n switchMap(value => {\n return this.lazyValueProvider()!(\n this.definition().name,\n // TODO: fix lazy loading for multi-select. Seems to be not needed, but it should work.\n this.definition().multiSelect ? '' : (value ?? '')\n ).pipe(\n map(options => toOptionCriteria(options)),\n tap(\n options =>\n ((this.definition() ?? ({} as InternalCriterionDefinition)).options = options)\n )\n );\n })\n );\n } else if (this.definition()) {\n optionsStream = of(toOptionCriteria(this.definition().options));\n }\n\n return optionsStream?.pipe(\n switchMap(options => {\n const keys: string[] = options.map(option => option.label!).filter(label => !!label);\n return this.translateService.translateAsync(keys).pipe(\n map(translations =>\n options.map(option => ({\n ...option,\n translatedLabel: translations[option.label!] ?? option.label ?? option.value\n }))\n )\n );\n })\n );\n }\n\n protected buildOptionValue(): void {\n if (this.criterionValue().value?.length) {\n // resolve options for initial values\n this.options()!\n .pipe(first())\n .subscribe(options => this.processTypeaheadOptions(options));\n }\n }\n\n protected abstract processTypeaheadOptions(value: TypeaheadOptionCriterion[]): void;\n protected abstract hasOptionValue(): boolean;\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n OnChanges,\n OnInit,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { SiTypeaheadDirective, TypeaheadMatch } from '@siemens/element-ng/typeahead';\nimport { SiTranslateModule, TranslatableString } from '@siemens/element-translate-ng/translate';\nimport { BehaviorSubject, Observable, switchMap } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\n\nimport { selectOptions, TypeaheadOptionCriterion } from '../../si-filtered-search-helper';\nimport { OptionCriterion } from '../../si-filtered-search.model';\nimport { SiFilteredSearchOptionValueBase } from '../si-filtered-search-option-value.base';\nimport { SiFilteredSearchValueBase } from '../si-filtered-search-value.base';\n\n@Component({\n selector: 'si-filtered-search-multi-select',\n imports: [SiTranslateModule, SiTypeaheadDirective],\n templateUrl: './si-filtered-search-multi-select.component.html',\n styleUrl: './si-filtered-search-multi-select.component.scss',\n providers: [\n { provide: SiFilteredSearchValueBase, useExisting: SiFilteredSearchMultiSelectComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiFilteredSearchMultiSelectComponent\n extends SiFilteredSearchOptionValueBase\n implements OnChanges, OnInit\n{\n readonly itemCountText = input.required<TranslatableString>();\n protected override readonly valueInput = viewChild<ElementRef<HTMLInputElement>>('valueInput');\n protected readonly optionValue = signal<OptionCriterion[]>([]);\n protected readonly selectionChange = new BehaviorSubject<string[]>([]);\n\n readonly hasMultiSelections = computed(\n () => Array.isArray(this.criterionValue().value) && this.criterionValue().value!.length > 1\n );\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.criterionValue &&\n this.criterionValue().value?.length !== this.optionValue().length\n ) {\n this.optionValue.set([]);\n this.selectionChange.next([]);\n }\n }\n\n ngOnInit(): void {\n this.inputChange.next('');\n this.selectionChange.next(this.criterionValue().value as string[]);\n this.buildOptionValue();\n }\n\n protected valueTypeaheadSelect(match: TypeaheadMatch): void {\n const option = match.option as OptionCriterion;\n if (match.itemSelected) {\n this.criterionValue.update(v => ({ ...v, value: [...v.value!, option.value] }));\n this.optionValue.update(v => [...v, option]);\n } else {\n const value = this.criterionValue();\n if (typeof value.value !== 'string') {\n this.criterionValue.set({\n ...value,\n value: value.value?.filter(elem => elem !== option.value)\n });\n }\n this.optionValue.update(v => v.filter(elem => elem.value !== option.value));\n }\n this.selectionChange.next(this.criterionValue().value as string[]);\n }\n\n protected override buildOptions(): Observable<TypeaheadOptionCriterion[]> | undefined {\n const translatedOptions = super.buildOptions();\n return translatedOptions?.pipe(\n switchMap(options =>\n this.selectionChange!.pipe(\n tap(value => {\n selectOptions(options, value);\n }),\n map(() => options)\n )\n )\n );\n }\n\n protected processTypeaheadOptions(options: TypeaheadOptionCriterion[]): void {\n const value = this.criterionValue().value as string[];\n this.optionValue.set(\n options.filter(\n option =>\n value.includes(option.value) ||\n // TODO: remove this. I don't know why, but it seems like previously FS accepted labels as well\n value.includes(option.translatedLabel)\n )\n );\n // Sneaky patch the value.\n // We did not emit a change, as no user interaction happened.\n // We should consider dropping this, but there is currently a unit test checking this behavior.\n value.splice(0, value.length, ...this.optionValue().map(option => option.value));\n }\n\n protected hasOptionValue(): boolean {\n return !!this.optionValue().length;\n }\n}\n","@let value = criterionValue().value;\n@if (!active()) {\n <div\n class=\"criterion-value-text focus-inside px-4\"\n [tabindex]=\"disabled() ? -1 : 0\"\n (keydown.enter)=\"editValue.emit()\"\n (click)=\"editValue.emit()\"\n >\n @if (!!value && hasMultiSelections()) {\n {{ itemCountText() | translate: { itemCount: value.length } }}\n } @else if (optionValue()[0]) {\n {{ optionValue()[0].label ?? optionValue()[0].value | translate }}\n } @else {\n {{ value }}\n }\n </div>\n} @else {\n <input\n #valueInput\n typeaheadOptionField=\"translatedLabel\"\n class=\"px-4 py-0 border-0 focus-inside\"\n typeaheadScrollable\n typeaheadMultiSelect\n [type]=\"inputType()\"\n [step]=\"step()\"\n [siTypeahead]=\"options() ?? []\"\n [typeaheadMinLength]=\"0\"\n [typeaheadOptionsLimit]=\"maxCriteriaOptions()\"\n [readOnly]=\"readonly() || onlySelectValue()\"\n [typeaheadOptionsInScrollableView]=\"optionsInScrollableView()\"\n [attr.aria-label]=\"searchLabel() | translate\"\n (keydown.backspace)=\"valueBackspace()\"\n (keydown.enter)=\"valueEnter()\"\n (typeaheadOnSelect)=\"valueTypeaheadSelect($event)\"\n (typeaheadOnInput)=\"inputChange.next($event)\"\n />\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n OnChanges,\n OnInit,\n signal,\n SimpleChanges,\n untracked,\n viewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SiTypeaheadDirective, TypeaheadMatch } from '@siemens/element-ng/typeahead';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { TypeaheadOptionCriterion } from '../../si-filtered-search-helper';\nimport { OptionCriterion } from '../../si-filtered-search.model';\nimport { SiFilteredSearchOptionValueBase } from '../si-filtered-search-option-value.base';\nimport { SiFilteredSearchValueBase } from '../si-filtered-search-value.base';\n\n@Component({\n selector: 'si-filtered-search-typeahead',\n imports: [SiTypeaheadDirective, FormsModule, SiTranslatePipe],\n templateUrl: './si-filtered-search-typeahead.component.html',\n styleUrl: './si-filtered-search-typeahead.component.scss',\n providers: [\n { provide: SiFilteredSearchValueBase, useExisting: SiFilteredSearchTypeaheadComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiFilteredSearchTypeaheadComponent\n extends SiFilteredSearchOptionValueBase\n implements OnChanges, OnInit\n{\n protected override readonly valueInput = viewChild<ElementRef<HTMLInputElement>>('valueInput');\n protected readonly optionValue = signal<OptionCriterion | undefined>(undefined);\n\n // This must be a separate signal as it should only emit when the actual empty state changes.\n private readonly inputEmpty = computed(() => !this.criterionValue().value);\n\n // This MUST only be updated if the active state changes.\n // Otherwise, user values might be overridden.\n // It is only used to pass the initial input value if the user starts editing the input.\n readonly valueLabel = computed(() => {\n // This is needed for the clear button.\n // But we cannot subscribe to the value changes itself, as those would cause to many updates.\n if (this.inputEmpty()) {\n return '';\n }\n\n if (this.active()) {\n const option = untracked(() => this.optionValue());\n if (option) {\n return option.label ? this.translateService.translateSync(option.label) : option.value;\n } else {\n return untracked(() => this.criterionValue().value) as string;\n }\n }\n return '';\n });\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.criterionValue && this.criterionValue().value !== this.optionValue()?.value) {\n this.optionValue.set(undefined);\n }\n }\n\n ngOnInit(): void {\n this.inputChange.next((this.criterionValue().value as string) ?? '');\n this.buildOptionValue();\n }\n\n protected valueChange(newValue: string | string[]): void {\n if (typeof newValue === 'string') {\n const match = newValue.match(/(.+?);(.*)$/);\n let value: string;\n if (!this.disableSelectionByColonAndSemicolon() && match) {\n value = match[1];\n this.submitValue.emit({ freeText: match[2] });\n } else {\n value = newValue;\n }\n this.optionValue.set(undefined);\n this.criterionValue.update(v => ({ ...v, value }));\n this.inputChange.next(newValue);\n }\n }\n\n protected valueTypeaheadFullMatch(match: TypeaheadMatch): void {\n const option = match.option as TypeaheadOptionCriterion;\n this.optionValue.set(option);\n // Usually, we already emitted a change in onCriterionValueInputChange using the text entered by the user.\n // In case of a fullMatch, we should check if the value is different from label.\n // If it is different, we must emit another event using the value instead of the label.\n // TODO: prevent the emit of the label matching the option. This is currently not possible due to the order events.\n if (option.value !== option.translatedLabel) {\n this.criterionValue.update(v => ({ ...v, value: option.value }));\n }\n }\n\n protected valueTypeaheadSelect(match: TypeaheadMatch): void {\n this.valueTypeaheadFullMatch(match);\n this.submitValue.emit();\n }\n\n protected valueFilterKeys(event: KeyboardEvent): void {\n // In integer mode, no floating point numbers are allowed.\n // So we prevent the input of '.' or ','.\n if (\n this.definition().validationType === 'integer' &&\n (event.key === '.' || event.key === ',')\n ) {\n event.preventDefault();\n }\n }\n\n protected processTypeaheadOptions(options: TypeaheadOptionCriterion[]): void {\n this.optionValue.set(\n options.find(\n option =>\n option.value === this.criterionValue().value ||\n // TODO: remove this. I don't know why, but it seems like previously FS accepted labels as well\n option.translatedLabel === this.criterionValue().value\n )\n );\n // Sneaky patch the value.\n // We did not emit a change, as no user interaction happened.\n // We should consider dropping this, but there is currently a unit test checking this behavior.\n const optionValue = this.optionValue();\n if (optionValue) {\n // TODO: The last ?? optionValue.label is non-sense, but we have a unit test checking this behavior.\n this.criterionValue().value = optionValue.value ?? optionValue.label;\n }\n }\n\n protected hasOptionValue(): boolean {\n return !!this.optionValue();\n }\n}\n","@let value = criterionValue().value;\n@if (!active()) {\n <div\n class=\"criterion-value-text focus-inside px-4\"\n [tabindex]=\"disabled() ? -1 : 0\"\n (keydown.enter)=\"editValue.emit()\"\n (click)=\"editValue.emit()\"\n >\n @let optionValue = this.optionValue();\n @if (optionValue) {\n {{ optionValue.label ?? optionValue.value | translate }}\n } @else {\n {{ value }}\n }\n </div>\n} @else {\n <input\n #valueInput\n typeaheadOptionField=\"translatedLabel\"\n class=\"px-4 py-0 border-0 focus-inside\"\n typeaheadScrollable\n [type]=\"inputType()\"\n [step]=\"step()\"\n [ngModel]=\"valueLabel()\"\n [siTypeahead]=\"options() ?? []\"\n [typeaheadProcess]=\"!onlySelectValue()\"\n [typeaheadMinLength]=\"0\"\n [typeaheadOptionsLimit]=\"maxCriteriaOptions()\"\n [typeaheadAutoSelectIndex]=\"value?.length ? 0 : -1\"\n [readOnly]=\"readonly() || onlySelectValue() || definition().onlySelectValue\"\n [typeaheadOptionsInScrollableView]=\"optionsInScrollableView()\"\n [attr.aria-label]=\"searchLabel() | translate\"\n (keydown)=\"valueFilterKeys($event)\"\n (keydown.backspace)=\"valueBackspace()\"\n (keydown.enter)=\"valueEnter()\"\n (ngModelChange)=\"valueChange($event)\"\n (typeaheadOnFullMatch)=\"valueTypeaheadFullMatch($event)\"\n (typeaheadOnSelect)=\"valueTypeaheadSelect($event)\"\n />\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMonitorFocus, FocusOrigin } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n model,\n OnInit,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { addIcons, elementCancel, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTypeaheadDirective } from '@siemens/element-ng/typeahead';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\nimport { Observable } from 'rxjs';\n\nimport { CriterionDefinition, CriterionValue, OptionType } from './si-filtered-search.model';\nimport { SiFilteredSearchDateValueComponent } from './values/date-value/si-filtered-search-date-value.component';\nimport { SiFilteredSearchMultiSelectComponent } from './values/multi-select/si-filtered-search-multi-select.component';\nimport { SiFilteredSearchValueBase } from './values/si-filtered-search-value.base';\nimport { SiFilteredSearchTypeaheadComponent } from './values/typeahead/si-filtered-search-typeahead.component';\n\n@Component({\n selector: 'si-filtered-search-value',\n imports: [\n CdkMonitorFocus,\n SiTypeaheadDirective,\n FormsModule,\n SiTranslatePipe,\n SiFilteredSearchDateValueComponent,\n SiFilteredSearchTypeaheadComponent,\n SiFilteredSearchMultiSelectComponent,\n SiIconComponent\n ],\n templateUrl: './si-filtered-search-value.component.html',\n styleUrl: './si-filtered-search-value.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiFilteredSearchValueComponent implements OnInit {\n readonly value = model.required<CriterionValue>();\n readonly definition = input.required<CriterionDefinition>();\n readonly disabled = input.required<boolean>();\n readonly readonly = input.required<boolean>();\n readonly onlySelectValue = input.required<boolean>();\n readonly maxCriteriaOptions = input.required<number>();\n readonly optionsInScrollableView = input.required<number>();\n readonly clearButtonLabel = input.required<TranslatableString>();\n readonly lazyValueProvider =\n input<(criterionName: string, typed: string | string[]) => Observable<OptionType[]>>();\n readonly searchDebounceTime = input.required<number>();\n readonly itemCountText = input.required<TranslatableString>();\n readonly disableSelectionByColonAndSemicolon = input.required<boolean>();\n readonly searchLabel = input.required<TranslatableString>();\n readonly invalidCriterion = input.required<boolean>();\n readonly isStrictOrOnlySelectValue = input.required<boolean>();\n readonly editOnCreation = input.required<boolean>();\n\n readonly deleteCriterion = output<{ triggerSearch: boolean } | void>();\n readonly submitCriterion = output<{ freeText: string } | void>();\n\n protected readonly active = signal<boolean>(false);\n protected readonly icons = addIcons({ elementCancel });\n\n private hasPendingFocus = false;\n\n private readonly operatorInput = viewChild<ElementRef<HTMLInputElement>>('operatorInput');\n private readonly valueInput = viewChild(SiFilteredSearchValueBase);\n\n readonly type = computed(() => {\n const definition = this.definition();\n const validationType = definition.validationType;\n if (validationType === 'date' || validationType === 'date-time') {\n return 'date';\n }\n // Handle multi-select vs single-select for other validation types.\n return definition.multiSelect ? 'multi-select' : 'typeahead';\n });\n readonly selectedOperatorIndex = computed(() => {\n const operator = this.value().operator;\n const operators = this.definition().operators;\n if (!operator || !operators) {\n return -1;\n }\n\n return operators.findIndex(op => op.includes(operator));\n });\n readonly longestOperatorLength = computed(() => {\n const operators = this.definition().operators;\n if (!operators) {\n return 0;\n }\n return Math.max(...operators.map(a => a.length));\n });\n\n ngOnInit(): void {\n if (this.editOnCreation()) {\n this.edit();\n }\n }\n\n closeOverlay(): void {\n if (this.active()) {\n this.active.set(false);\n }\n }\n\n edit(field?: 'value' | 'operator'): void {\n if (this.readonly()) {\n return;\n }\n\n this.active.set(true);\n this.hasPendingFocus = true;\n\n setTimeout(() => {\n if (field === 'value') {\n this.valueInput()?.focus();\n } else if (field === 'operator') {\n this.operatorInput()?.nativeElement.focus();\n } else {\n (this.operatorInput()?.nativeElement ?? this.valueInput())?.focus();\n }\n this.hasPendingFocus = false;\n });\n }\n\n protected backspaceOverflow(): void {\n const operatorInput = this.operatorInput()?.nativeElement;\n if (operatorInput) {\n operatorInput.focus();\n } else {\n this.deleteCriterion.emit();\n }\n }\n\n protected focusChange(focusOrigin: FocusOrigin): void {\n if (this.hasPendingFocus) {\n return;\n }\n setTimeout(() => {\n // We need to wait for the overlay, that might be shown and now close as well on onside click.\n if (this.active() && !focusOrigin && !this.valueInput()?.focusInOverlay()) {\n this.active.set(false);\n }\n });\n }\n\n protected operatorUpdate(operator: string): void {\n this.value.update(value => ({ ...value, operator }));\n }\n\n protected operatorBackspace(): void {\n if (!this.operatorInput()?.nativeElement.value) {\n this.deleteCriterion.emit();\n }\n }\n\n protected operatorEnter(): void {\n this.valueInput()!.focus();\n }\n\n protected operatorBlur(): void {\n const operators = this.definition().operators;\n if (operators && !operators.includes(this.value().operator!)) {\n this.operatorUpdate(operators.includes('=') ? '=' : operators[0]);\n }\n }\n\n protected clear(): void {\n if (!this.active() || !this.value().value?.length) {\n this.deleteCriterion.emit({ triggerSearch: true });\n return;\n }\n\n this.value.update(v => ({\n ...v,\n dateValue: undefined,\n value: this.definition().multiSelect ? [] : ''\n }));\n }\n}\n","<div\n cdkMonitorSubtreeFocus\n class=\"criteria pill-group\"\n [class.disabled]=\"disabled()\"\n [attr.aria-disabled]=\"disabled()\"\n [class.invalid-criterion]=\"invalidCriterion()\"\n (cdkFocusChange)=\"focusChange($event)\"\n>\n <div class=\"pill pill-interactive criterion-label si-h5\" (click)=\"edit()\">\n {{ definition().label | translate }}\n </div>\n @if (definition().operators?.length) {\n <div class=\"pill pill-interactive px-0 criterion-operator-section\">\n <!-- criterion operator input -->\n @if (active()) {\n <input\n #operatorInput\n type=\"text\"\n class=\"focus-inside operator-input py-0 border-0\"\n [siTypeahead]=\"definition().operators!\"\n [typeaheadProcess]=\"false\"\n [typeaheadAutoSelectIndex]=\"selectedOperatorIndex()\"\n [typeaheadMinLength]=\"0\"\n [typeaheadOptionsLimit]=\"0\"\n [readOnly]=\"false\"\n [typeaheadScrollable]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionsInScrollableView()\"\n [attr.aria-label]=\"searchLabel() | translate\"\n [attr.size]=\"longestOperatorLength()\"\n [ngModel]=\"value().operator\"\n (ngModelChange)=\"operatorUpdate($event)\"\n (keydown.backspace)=\"operatorBackspace()\"\n (keydown.enter)=\"operatorEnter()\"\n (typeaheadOnSelect)=\"operatorEnter()\"\n (blur)=\"operatorBlur()\"\n />\n } @else {\n <!-- criterion operator field -->\n <div\n class=\"criterion-operator-text px-2 focus-inside\"\n [tabindex]=\"!disabled() ? 0 : -1\"\n (keydown.enter)=\"edit('operator')\"\n (click)=\"edit('operator')\"\n >\n {{ value().operator }}\n </div>\n }\n </div>\n }\n @switch (type()) {\n @case ('date') {\n <si-filtered-search-date-value\n [definition]=\"definition()\"\n [disabled]=\"disabled()\"\n [searchLabel]=\"searchLabel()\"\n [(active)]=\"active\"\n [(criterionValue)]=\"value\"\n (backspaceOverflow)=\"backspaceOverflow()\"\n (editValue)=\"edit('value')\"\n (submitValue)=\"submitCriterion.emit($event)\"\n />\n }\n @case ('multi-select') {\n <si-filtered-search-multi-select\n [definition]=\"definition()\"\n [disabled]=\"disabled()\"\n [searchLabel]=\"searchLabel()\"\n [searchDebounceTime]=\"searchDebounceTime()\"\n [onlySelectValue]=\"onlySelectValue()\"\n [optionsInScrollableView]=\"optionsInScrollableView()\"\n [maxCriteriaOptions]=\"maxCriteriaOptions()\"\n [lazyValueProvider]=\"lazyValueProvider()\"\n [itemCountText]=\"itemCountText()\"\n [isStrictOrOnlySelectValue]=\"isStrictOrOnlySelectValue()\"\n [disableSelectionByColonAndSemicolon]=\"disableSelectionByColonAndSemicolon()\"\n [readonly]=\"readonly()\"\n [(active)]=\"active\"\n [(criterionValue)]=\"value\"\n (backspaceOverflow)=\"backspaceOverflow()\"\n (editValue)=\"edit('value')\"\n (submitValue)=\"submitCriterion.emit($event)\"\n />\n }\n @case ('typeahead') {\n <si-filtered-search-typeahead\n [definition]=\"definition()\"\n [disabled]=\"disabled()\"\n [searchLabel]=\"searchLabel()\"\n [searchDebounceTime]=\"searchDebounceTime()\"\n [onlySelectValue]=\"onlySelectValue()\"\n [optionsInScrollableView]=\"optionsInScrollableView()\"\n [maxCriteriaOptions]=\"maxCriteriaOptions()\"\n [lazyValueProvider]=\"lazyValueProvider()\"\n [isStrictOrOnlySelectValue]=\"isStrictOrOnlySelectValue()\"\n [disableSelectionByColonAndSemicolon]=\"disableSelectionByColonAndSemicolon()\"\n [readonly]=\"readonly()\"\n [(active)]=\"active\"\n [(criterionValue)]=\"value\"\n (backspaceOverflow)=\"backspaceOverflow()\"\n (editValue)=\"edit('value')\"\n (submitValue)=\"submitCriterion.emit($event)\"\n />\n }\n }\n @if (!readonly()) {\n <div class=\"pill px-0 ms-n1\">\n <button\n type=\"button\"\n class=\"btn btn-circle btn-xs btn-ghost focus-inside\"\n [attr.aria-label]=\"clearButtonLabel() | translate\"\n [disabled]=\"disabled()\"\n (click)=\"clear()\"\n (mousedown)=\"$event.preventDefault()\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n </div>\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n LOCALE_ID,\n model,\n OnChanges,\n OnDestroy,\n OnInit,\n output,\n signal,\n SimpleChanges,\n viewChild,\n viewChildren\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BackgroundColorVariant, isRTL } from '@siemens/element-ng/common';\nimport { addIcons, elementCancel, elementSearch, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTypeaheadDirective, TypeaheadOption } from '@siemens/element-ng/typeahead';\nimport {\n injectSiTranslateService,\n SiTranslatePipe,\n t,\n TranslatableString\n} from '@siemens/element-translate-ng/translate';\nimport { BehaviorSubject, Observable, of, Subject, switchMap } from 'rxjs';\nimport { debounceTime, map, takeUntil } from 'rxjs/operators';\n\nimport {\n differenceByName,\n getISODateString,\n InternalCriterionDefinition,\n toInternalCriteria\n} from './si-filtered-search-helper';\nimport { SiFilteredSearchValueComponent } from './si-filtered-search-value.component';\nimport {\n Criterion,\n CriterionDefinition,\n CriterionValue,\n DisplayedCriteriaEventArgs,\n OptionType,\n SearchCriteria\n} from './si-filtered-search.model';\n\n@Component({\n selector: 'si-filtered-search',\n imports: [\n FormsModule,\n SiIconComponent,\n SiTypeaheadDirective,\n SiTranslatePipe,\n SiFilteredSearchValueComponent\n ],\n templateUrl: './si-filtered-search.component.html',\n styleUrl: './si-filtered-search.component.scss',\n host: {\n '[class.disabled]': 'disabled()',\n '[class.dark-background]': \"colorVariant() === 'base-0'\"\n }\n})\nexport class SiFilteredSearchComponent implements OnInit, OnChanges, OnDestroy {\n private static readonly criterionRegex = /(.+?):(.*)$/;\n\n /**\n * Output callback event that provides an object describing the\n * selected criteria and additional filter text.\n */\n readonly doSearch = output<SearchCriteria>();\n\n /**\n * If this is set to `true`, the search triggers for each input (implicit search).\n * By default, the search is triggered when the user submits by pressing the\n * search button or by pressing enter.\n *\n * @defaultValue false\n */\n readonly doSearchOnInputChange = input(false, {\n transform: booleanAttribute\n });\n /**\n * In addition to lazy loaded value, you can also lazy load the criteria itself\n */\n readonly lazyCriterionProvider =\n input<\n (\n typed: string,\n searchCriteria?: SearchCriteria\n ) => Observable<Criterion[] | CriterionDefinition[]>\n >();\n /**\n * In many cases, your application defines the criteria, but the values need\n * to be loaded from a server. In this case you can provide a function that\n * returns the possible criterion options as an Observable.\n */\n readonly lazyValueProvider =\n input<(criterionName: string, typed: string | string[]) => Observable<OptionType[]>>();\n /**\n * Disable any interactivity.\n *\n * @defaultValue false\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * Do not allow changes. Search can still be triggered.\n *\n * @deprecated Use {@link disabled} instead.\n *\n * @defaultValue false\n */\n readonly readonly = input(false, { transform: booleanAttribute });\n /**\n * Limit criteria to the predefined ones.\n *\n * @defaultValue false\n */\n readonly strictCriterion = input(false, { transform: booleanAttribute });\n\n /**\n * Limit criterion options to the predefined ones. `[strictValue]`\n * enforces `[strictCriterion]` to true automatically.\n *\n * @defaultValue false\n */\n readonly strictValue = input(false, { transform: booleanAttribute });\n\n /**\n * Limit criterion options to the predefined ones and prevent typing. `[onlySelectValue]`\n * enforces `[strictValue]` and `[strictCriterion]` to true automatically.\n *\n * @defaultValue false\n */\n readonly onlySelectValue = input(false, { transform: booleanAttribute });\n\n /**\n * Custom debounce time for lazy loading of criteria data.\n *\n * @defaultValue 500\n */\n readonly lazyLoadingDebounceTime = input(500);\n\n /**\n * Custom debounce time (in mills) to delay the search emission.\n * (Default is 0 as in most cases a users manually triggers a search.\n * Recommended to increase a bit when using doSearchOnInputChange=true)\n *\n * @defaultValue 0\n */\n readonly searchDebounceTime = input(0);\n /**\n * The placeholder for input field.\n *\n * @defaultValue ''\n */\n readonly placeholder = input('');\n\n /**\n * Defines the number of criteria, criteria values and operators visible at once.\n *\n * @defaultValue 10\n */\n readonly optionsInScrollableView = input(10);\n\n /**\n * The current selected search criteria and entered search text.\n *\n * @defaultValue\n * ```\n * { criteria: [], value: '' }\n * ```\n */\n readonly searchCriteria = model<SearchCriteria>({ criteria: [], value: '' });\n\n /**\n * Predefine criteria options.\n *\n * @defaultValue []\n */\n readonly criteria = input<Criterion[] | CriterionDefinition[]>([]);\n /**\n * Opt-in to search for each criterion only once.\n *\n * @defaultValue false\n */\n readonly exclusiveCriteria = input(false, {\n transform: booleanAttribute\n });\n /**\n * Limit the number of possible criteria. The default is undefined so that any number of criteria can be used.\n * For example, setting the value to 1 let you only select one criterion that you need to remove before being\n * able to set another one.\n *\n * @defaultValue undefined\n */\n readonly maxCriteria = input<number | undefined>(undefined);\n\n /**\n * Defines the maximum options within one criterion. The default is 20 and 0 means unlimited.\n *\n * @defaultValue 20\n */\n readonly maxCriteriaOptions = input(20);\n /**\n * Search input aria label, Needed by a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_FILTERED_SEARCH.SEARCH:Search`)\n * ```\n */\n readonly searchLabel = input(t(() => $localize`:@@SI_FILTERED_SEARCH.SEARCH:Search`));\n /**\n * Clear button aria label. Needed for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_FILTERED_SEARCH.CLEAR:Clear`)\n * ```\n */\n readonly clearButtonLabel = input(t(() => $localize`:@@SI_FILTERED_SEARCH.CLEAR:Clear`));\n\n /**\n * The accessible label of the search button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_FILTERED_SEARCH.SUBMIT_BUTTON:Submit search`)\n * ```\n */\n readonly submitButtonLabel = input(\n t(() => $localize`:@@SI_FILTERED_SEARCH.SUBMIT_BUTTON:Submit search`)\n );\n\n /**\n * Items count text appended to the count in case of multi-selection of values.\n * Translation key, `{{itemCount}}` in the translation will be replaced with the actual value.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_FILTERED_SEARCH.ITEM_COUNT:{{itemCount}} items`)\n * ```\n */\n readonly itemCountText = input<TranslatableString>(\n t(() => $localize`:@@SI_FILTERED_SEARCH.ITEM_COUNT:{{itemCount}} items`)\n );\n /**\n * Color variant to determine component background\n *\n * @defaultValue 'base-1'\n */\n readonly colorVariant = input<BackgroundColorVariant>('base-1');\n /**\n * Disables the free text search to only use the criterion for filtering.\n *\n * @defaultValue false\n */\n readonly disableFreeTextSearch = input(false, { transform: booleanAttribute });\n /**\n * Limit on the number of criteria/criteria value to be displayed by the typeahead\n *\n * @defaultValue 20\n */\n readonly typeaheadOptionsLimit = input(20);\n /**\n * By default, the Filtered Search will treat `:` as a special character\n * to submit the current input in the freetext and immediately create a criterion.\n * Use this input to disable this behavior.\n *\n * @defaultValue false\n */\n readonly disableSelectionByColonAndSemicolon = input(false, { transform: booleanAttribute });\n /**\n * The interceptor is called when the list of criteria is shown as soon as the user starts typing in the input field.\n * The interceptor's {@link DisplayedCriteriaEventArgs.allow} method can be used to filter the list of displayed criteria.\n *\n * **Note:** The interceptor is called as long as the {@link searchCriteria} does not exceed {@link maxCriteria}.\n * Further, the interceptor is not called when using the {@link lazyCriterionProvider}.\n *\n * @example\n * ```\n * <si-filtered-search\n * [criteria]=\"[{ name: 'foo', label: 'Foo' }, { name: 'bar', label: 'Bar' }]\"\n * (interceptDisplayedCriteria)=\"$event.allow(\n * $event.searchCriteria.criteria.some(s => s.name === 'foo')\n * ? $event.criteria.filter(c => c !== 'foo')\n * : $event.criteria\n * )\">\n * </si-filtered-search>\n * ```\n */\n readonly interceptDisplayedCriteria = output<DisplayedCriteriaEventArgs>();\n\n private readonly freeTextInputElement =\n viewChild.required<ElementRef<HTMLInputElement>>('freeTextInputElement');\n\n private readonly scrollContainer = viewChild.required('scrollContainer', { read: ElementRef });\n\n private readonly valueComponents = viewChildren(SiFilteredSearchValueComponent);\n\n protected dataSource: Observable<InternalCriterionDefinition[]>;\n protected autoEditCriteria = false;\n\n protected values: { config: InternalCriterionDefinition; value: CriterionValue }[] = [];\n protected searchValue = '';\n /** Internal criteria model */\n protected internalCriterionDefinitions: InternalCriterionDefinition[] = [];\n protected readonly icons = addIcons({ elementCancel, elementSearch });\n\n /** Used to trigger a renewed search */\n private typeaheadInputChange = new BehaviorSubject<string>('');\n /** Used to debounce the Search emissions */\n private searchEmitQueue = new Subject<SearchCriteria | undefined>();\n private destroySubscriptions = new Subject<boolean>();\n private cdRef = inject(ChangeDetectorRef);\n private translateService = injectSiTranslateService();\n private locale = inject(LOCALE_ID).toString();\n /**\n * The cache is used to control when the interceptDisplayedCriteria event needs to be called.\n * Every time a criteria gain the focus we have to reset the cache to call the interceptor.\n */\n private allowedCriteriaCache?: string[];\n\n // Angular also calls ngOnChanges if we emitted a change and then two-way-databinding writes back our own change.\n // We use this to ensure that we do not write our own change back to the input.\n private lastEmittedSearchCriteria?: SearchCriteria;\n\n protected readonly isStrictOrOnlySelectValue = computed(() => {\n return this.strictValue() || this.onlySelectValue();\n });\n\n private readonly strictCriterionOrValue = computed(() => {\n return this.strictCriterion() || this.isStrictOrOnlySelectValue();\n });\n\n private readonly lazyLoadedCriteria = signal<Criterion[] | CriterionDefinition[] | undefined>(\n undefined\n );\n private readonly loadedCriteria = computed(() => {\n const lazyLoadedCriteria = this.lazyLoadedCriteria();\n if (lazyLoadedCriteria) {\n return lazyLoadedCriteria;\n } else {\n return this.criteria() ?? [];\n }\n });\n\n private readonly isReadOnly = computed(() => this.readonly() || this.disabled());\n\n constructor() {\n this.dataSource = this.typeaheadInputChange.pipe(\n switchMap(value => {\n if (this.lazyCriterionProvider()) {\n return this.lazyCriterionProvider()!(value, this.searchCriteria()).pipe(\n debounceTime(this.lazyLoadingDebounceTime()),\n map(result => this.getCriteriaToDisplayFromSubscription(result))\n );\n } else {\n return of(this.getFilteredTypeaheadCriteria(value));\n }\n }),\n switchMap(criteria => {\n return this.translateService.translateAsync(criteria.map(c => c.label)).pipe(\n map(translations => {\n criteria.forEach(c => (c.translatedLabel = translations[c.label] ?? c.label ?? c.name));\n return criteria;\n })\n );\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.criteria) {\n this.initCriteria();\n }\n if (\n (changes.searchCriteria && this.searchCriteria() !== this.lastEmittedSearchCriteria) ||\n changes.criteria\n ) {\n this.initValue();\n // Update typeahead since the criteria input can change while the free text input is focused.\n // This is necessary since the criteria are set as a result of an API call response.\n this.typeaheadInputChange.next(this.freeTextInputElement().nativeElement.value ?? '');\n }\n }\n\n ngOnInit(): void {\n if (this.strictCriterionOrValue() && this.internalCriterionDefinitions.length === 0) {\n throw new Error('strict criterion mode activated without predefined criteria!');\n }\n\n this.searchEmitQueue\n .pipe(debounceTime(this.searchDebounceTime()), takeUntil(this.destroySubscriptions))\n .subscribe(searchCriteria => this.doSearch.emit(searchCriteria!));\n }\n\n ngOnDestroy(): void {\n this.destroySubscriptions.next(true);\n this.destroySubscriptions.unsubscribe();\n }\n\n private initCriteria(): void {\n this.internalCriterionDefinitions = this.loadedCriteria().map(c => toInternalCriteria(c));\n }\n\n private initValue(): void {\n this.autoEditCriteria = false;\n this.searchValue = this.searchCriteria()?.value ?? '';\n this.values =\n this.searchCriteria()?.criteria.map(c => {\n const config =\n this.internalCriterionDefinitions.find(ic => ic.name === c.name) ??\n ({\n name: c.name,\n label: c.label ?? c.name,\n translatedLabel: c.label ?? c.name\n } as InternalCriterionDefinition);\n\n let value = c.value ?? '';\n // Fix input, in case the user provided the value as string for the multi-select use case.\n if (config.multiSelect && typeof value === 'string') {\n value = value !== '' ? [value] : [];\n }\n\n let dateValue: Date | undefined;\n if (config.validationType === 'date' || config.validationType === 'date-time') {\n dateValue = value ? new Date(value.toString()) : new Date();\n value ??= getISODateString(\n dateValue,\n config.validationType === 'date' || config.datepickerConfig?.disabledTime\n ? 'date'\n : 'date-time',\n this.locale\n );\n }\n\n return {\n value: {\n name: c.name,\n value,\n ...(dateValue ? { dateValue } : {}),\n ...(c.operator ? { operator: c.operator } : {})\n },\n config\n };\n }) ?? [];\n this.lastEmittedSearchCriteria = this.searchCriteria();\n this.allowedCriteriaCache = undefined;\n }\n\n /**\n * Deletes all currently selected criteria and effectively resets the filtered search.\n */\n deleteAllCriteria(event?: MouseEvent): void {\n if (this.isReadOnly()) {\n return;\n }\n event?.stopPropagation();\n\n // Reset search criteria\n this.values = [];\n this.searchValue = '';\n this.emitChangeEvent();\n this.allowedCriteriaCache = undefined;\n this.typeaheadInputChange.next(this.searchValue);\n this.submit();\n }\n\n protected deleteCriterion(\n criterion: CriterionValue,\n index: number,\n event: { triggerSearch: boolean } | void\n ): void {\n if (this.isReadOnly()) {\n return;\n }\n\n // Close any active overlays before deleting the criterion\n // This could happen in case when user has opened a multiselect pill\n // and then clicks on clear button of other pill.\n this.valueComponents().forEach(component => {\n component.closeOverlay();\n });\n this.cdRef.detectChanges();\n\n this.values = this.values.filter(v => v.value !== criterion);\n this.emitChangeEvent();\n this.allowedCriteriaCache = undefined;\n if (this.values.length !== index) {\n this.valueComponents()[index + 1].edit('value');\n } else {\n this.freeTextInputElement().nativeElement.focus();\n }\n this.typeaheadInputChange.next(this.searchValue);\n if (event?.triggerSearch) {\n this.submit();\n }\n }\n\n protected submit(): void {\n if (!this.doSearchOnInputChange()) {\n this.doSearch.emit(this.searchCriteria()!);\n }\n }\n\n protected typeaheadOnSelectCriterion(event: TypeaheadOption): void {\n const criterion = event as InternalCriterionDefinition;\n\n // Timeout is needed otherwise siTypeahead will overwrite the value\n setTimeout(() => {\n // Removes the focus border before creating a new criterion to prevent the impression of jumping content.\n this.freeTextInputElement().nativeElement.blur();\n this.searchValue = '';\n this.addCriterion(criterion);\n // The user selected a criterion so we remove the free text search value and add the criterion.\n this.allowedCriteriaCache = undefined;\n this.typeaheadInputChange.next('');\n }, 0);\n }\n\n protected validateCriterionLabel(criterion: InternalCriterionDefinition): boolean {\n if (!this.strictCriterionOrValue()) {\n return true;\n }\n return this.internalCriterionDefinitions.includes(criterion);\n }\n\n /**\n * Converts the internally used data model to the external model.\n * In case options for Criterion is Option[] map to the value from the label.\n */\n private convertToExternalModel(): SearchCriteria {\n const correctedCriteria: SearchCriteria = {\n value: this.searchValue,\n criteria: this.values.map(v => v.value)\n };\n if (this.disableFreeTextSearch()) {\n correctedCriteria.value = '';\n }\n return correctedCriteria;\n }\n\n private addCriterion(config: InternalCriterionDefinition, value?: string): void {\n if (config.multiSelect) {\n this.values = [...this.values, { value: { value: [], name: config.name }, config }];\n } else if (config.validationType === 'date' || config.validationType === 'date-time') {\n this.values = [\n ...this.values,\n {\n value: {\n dateValue: new Date(),\n value: getISODateString(new Date(), config.validationType, this.locale),\n name: config.name\n },\n config\n }\n ];\n } else {\n this.values = [...this.values, { value: { value: value ?? '', name: config.name }, config }];\n }\n\n this.autoEditCriteria = true;\n this.emitChangeEvent();\n }\n\n /**\n * Get criteria list to be shown in typeahead.\n * @param token - input field value.\n * @returns list of criteria to be shown in typeahead.\n */\n private getFilteredTypeaheadCriteria(token: string): InternalCriterionDefinition[] {\n if (this.maxCriteria() === undefined || this.values.length < this.maxCriteria()!) {\n const allowedCriteria = !this.exclusiveCriteria()\n ? this.internalCriterionDefinitions\n : differenceByName(this.internalCriterionDefinitions, this.values);\n\n if (allowedCriteria.length > 0 && !this.allowedCriteriaCache) {\n // Call interceptor to allow applications to customize the list of available criteria\n const available = allowedCriteria.map(c => c.name);\n // Ensure that all entries are allowed in case the consumer doesn't use the allow callback\n this.allowedCriteriaCache = available;\n this.interceptDisplayedCriteria.emit({\n criteria: available,\n searchCriteria: this.convertToExternalModel(),\n allow: criteriaNamesToDisplay => {\n if (criteriaNamesToDisplay) {\n this.allowedCriteriaCache = criteriaNamesToDisplay;\n }\n }\n });\n }\n\n return allowedCriteria.filter(c => this.allowedCriteriaCache?.includes(c.name));\n } else {\n return [];\n }\n }\n\n private getCriteriaToDisplayFromSubscription(\n result: CriterionDefinition[]\n ): InternalCriterionDefinition[] {\n this.lazyLoadedCriteria.set(result);\n this.internalCriterionDefinitions = this.loadedCriteria().map(c => toInternalCriteria(c));\n // It's necessary to update the criteria configuration since consuming applications may change the options.\n // A common case are criteria which depend on each other like Country, Site and Building. If the user change\n // the site the building options might become invalid.\n // KEEP THE REFERENCE, otherwise CD is broken\n this.values = this.values.map(v =>\n Object.assign(v, {\n value: v.value,\n config: this.internalCriterionDefinitions.find(ic => ic.name === v.config.name) ?? v.config\n })\n );\n\n if (this.maxCriteria() === undefined || this.values.length < this.maxCriteria()!) {\n return !this.exclusiveCriteria()\n ? this.internalCriterionDefinitions\n : differenceByName(this.internalCriterionDefinitions, this.values);\n }\n\n return [];\n }\n\n protected freeTextFocus(): void {\n // Ensure that the free text input is fully visible in the scroll container\n const scrollDirection = isRTL() ? -1 : 1;\n const position = scrollDirection * this.scrollContainer().nativeElement.scrollWidth;\n this.scrollContainer().nativeElement.scrollLeft = position;\n this.typeaheadInputChange.next(this.freeTextInputElement().nativeElement.value);\n }\n\n protected freeTextBackspace(event: Event): void {\n if (!(event.target as HTMLInputElement).value) {\n // edit last criterion if a user presses backspace in empty search input.\n const valueComponents = this.valueComponents();\n if (valueComponents.length) {\n valueComponents[valueComponents.length - 1].edit('value');\n }\n }\n }\n\n protected freeTextInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n\n const match = value.match(SiFilteredSearchComponent.criterionRegex);\n if (!this.disableSelectionByColonAndSemicolon() && !this.onlySelectValue() && match) {\n const criterionName = match[1];\n if (this.searchValue === '') {\n // The value was empty before, so we must make angular detect a change here.\n // Otherwise, the entire value which was pasted will remain in the input.\n // This happens if the user pasts something like: 'key:value'\n this.searchValue = value;\n this.cdRef.detectChanges();\n }\n this.searchValue = '';\n this.allowedCriteriaCache = undefined;\n\n const nameLowerCase = criterionName.toLocaleLowerCase();\n const criterion = this.internalCriterionDefinitions.find(\n ic => ic.translatedLabel.toLocaleLowerCase() === nameLowerCase\n ) ?? {\n name: criterionName,\n label: criterionName,\n translatedLabel: criterionName\n };\n\n this.typeaheadInputChange.next('');\n this.addCriterion(criterion, match[2]);\n } else {\n this.searchValue = value;\n\n if (!this.disableFreeTextSearch()) {\n this.emitChangeEvent();\n }\n\n this.typeaheadInputChange.next(value);\n }\n }\n\n protected valueChange(\n value: CriterionValue,\n criterion: { config: InternalCriterionDefinition; value: CriterionValue }\n ): void {\n criterion.value = value;\n this.emitChangeEvent();\n }\n\n protected focusNext(index: number, event: { freeText: string } | void): void {\n const next = this.valueComponents()[index + 1];\n if (next) {\n next.edit();\n } else {\n this.searchValue = event?.freeText ?? this.searchValue;\n this.freeTextInputElement().nativeElement.focus();\n }\n }\n\n private updateAndEmitSearchCriteria(): void {\n this.searchCriteria.set(this.convertToExternalModel());\n this.lastEmittedSearchCriteria = this.searchCriteria();\n }\n\n private emitChangeEvent(): void {\n this.updateAndEmitSearchCriteria();\n if (this.doSearchOnInputChange()) {\n this.searchEmitQueue.next(this.searchCriteria());\n }\n }\n}\n","<div\n #scrollContainer\n class=\"search-container d-flex align-items-center overflow-auto py-2 w-100 ps-2 pe-2\"\n>\n @for (criterion of values; track criterion) {\n <si-filtered-search-value\n [editOnCreation]=\"autoEditCriteria\"\n [definition]=\"criterion.config\"\n [value]=\"criterion.value\"\n [invalidCriterion]=\"!validateCriterionLabel(criterion.config)\"\n [disabled]=\"disabled()\"\n [clearButtonLabel]=\"clearButtonLabel()\"\n [disableSelectionByColonAndSemicolon]=\"disableSelectionByColonAndSemicolon()\"\n [isStrictOrOnlySelectValue]=\"isStrictOrOnlySelectValue()\"\n [itemCountText]=\"itemCountText()\"\n [lazyValueProvider]=\"lazyValueProvider()\"\n [maxCriteriaOptions]=\"maxCriteriaOptions()\"\n [optionsInScrollableView]=\"optionsInScrollableView()\"\n [readonly]=\"readonly()\"\n [searchLabel]=\"searchLabel()\"\n [onlySelectValue]=\"onlySelectValue()\"\n [searchDebounceTime]=\"searchDebounceTime()\"\n (submitCriterion)=\"focusNext($index, $event)\"\n (deleteCriterion)=\"deleteCriterion(criterion.value, $index, $event)\"\n (valueChange)=\"valueChange($event, criterion)\"\n />\n }\n <!-- criterion input -->\n <input\n #freeTextInputElement\n type=\"text\"\n class=\"value-input ps-2 me-2 flex-grow-1\"\n typeaheadOptionField=\"translatedLabel\"\n [siTypeahead]=\"dataSource\"\n [typeaheadMinLength]=\"readonly() ? 1 : 0\"\n [typeaheadOptionsLimit]=\"typeaheadOptionsLimit()\"\n [typeaheadScrollable]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionsInScrollableView()\"\n [typeaheadAutoSelectIndex]=\"searchValue ? 0 : -1\"\n [readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"searchLabel() | translate\"\n [value]=\"searchValue\"\n (focus)=\"freeTextFocus()\"\n (input)=\"freeTextInput($event)\"\n (keydown.backspace)=\"freeTextBackspace($event)\"\n (keydown.enter)=\"submit()\"\n (typeaheadOnSelect)=\"typeaheadOnSelectCriterion($event.option)\"\n />\n</div>\n<!-- clear all searchCriteria -->\n@if ((values.length || searchValue.length) && !readonly()) {\n <div class=\"clear-button-container\">\n <button\n type=\"button\"\n class=\"btn btn-circle btn-xs btn-ghost mx-2\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"clearButtonLabel() | translate\"\n (click)=\"deleteAllCriteria($event)\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n </div>\n}\n\n@if (!disabled()) {\n <button\n type=\"button\"\n class=\"search-button btn btn-circle btn-xs btn-secondary focus-inside\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"submitButtonLabel() | translate\"\n (click)=\"submit()\"\n >\n <si-icon [icon]=\"icons.elementSearch\" />\n </button>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiFilteredSearchComponent } from './si-filtered-search.component';\n\n@NgModule({\n imports: [SiFilteredSearchComponent],\n exports: [SiFilteredSearchComponent]\n})\nexport class SiFilteredSearchModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-filtered-search.component';\nexport * from './si-filtered-search.model';\nexport * from './si-filtered-search.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-filtered-search.mjs","sources":["../../../../projects/element-ng/filtered-search/si-filtered-search-helper.ts","../../../../projects/element-ng/filtered-search/values/si-filtered-search-value.base.ts","../../../../projects/element-ng/filtered-search/values/date-value/si-filtered-search-date-value.component.ts","../../../../projects/element-ng/filtered-search/values/date-value/si-filtered-search-date-value.component.html","../../../../projects/element-ng/filtered-search/values/si-filtered-search-option-value.base.ts","../../../../projects/element-ng/filtered-search/values/multi-select/si-filtered-search-multi-select.component.ts","../../../../projects/element-ng/filtered-search/values/multi-select/si-filtered-search-multi-select.component.html","../../../../projects/element-ng/filtered-search/values/typeahead/si-filtered-search-typeahead.component.ts","../../../../projects/element-ng/filtered-search/values/typeahead/si-filtered-search-typeahead.component.html","../../../../projects/element-ng/filtered-search/si-filtered-search-value.component.ts","../../../../projects/element-ng/filtered-search/si-filtered-search-value.component.html","../../../../projects/element-ng/filtered-search/si-filtered-search.component.ts","../../../../projects/element-ng/filtered-search/si-filtered-search.component.html","../../../../projects/element-ng/filtered-search/si-filtered-search.module.ts","../../../../projects/element-ng/filtered-search/index.ts","../../../../projects/element-ng/filtered-search/siemens-element-ng-filtered-search.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { formatDate } from '@angular/common';\nimport { isValid } from '@siemens/element-ng/datepicker';\n\nimport { CriterionDefinition, OptionCriterion, OptionType } from './si-filtered-search.model';\n\nexport interface TypeaheadOptionCriterion extends OptionCriterion {\n selected?: boolean;\n translatedLabel: string;\n}\n\nexport interface InternalCriterionDefinition extends CriterionDefinition {\n label: string;\n translatedLabel: string;\n}\n\n/** Convert options to option criterions */\nexport const toOptionCriteria = (values?: OptionType[]): OptionCriterion[] =>\n values?.map(v =>\n typeof v === 'string'\n ? { value: v }\n : { label: v.label, value: v.value, iconClass: v.iconClass }\n ) ?? [];\n\n/*\n * Update selected state the matching is based on value since plain\n * string options will automatically fill the value attribute with the\n * actual string value.\n */\nexport const selectOptions = (options: TypeaheadOptionCriterion[], toSelect: string[]): void =>\n options.forEach(val => (val.selected = toSelect.includes(val.value)));\n\n/**\n * Difference by name, create an array that contains those elements of criteria's a that are not in criteria's b.\n * This operation is also sometimes called minus (-).\n */\nexport const differenceByName = (\n a: InternalCriterionDefinition[],\n b: { config: InternalCriterionDefinition }[]\n): InternalCriterionDefinition[] =>\n a.filter(x => b.filter(y => y.config.name === x.name).length === 0);\n\n/** Convert criteria to internal model criteria */\nexport const toInternalCriteria = (crit: CriterionDefinition): InternalCriterionDefinition => {\n return {\n ...crit,\n label: crit.label ?? crit.name,\n translatedLabel: crit.label ?? crit.name\n };\n};\n\nexport const getISODateString = (\n date: Date | undefined,\n format: 'date' | 'date-time',\n locale: string\n): string => {\n if (!isValid(date)) {\n return '';\n }\n\n switch (format) {\n case 'date':\n return formatDate(date, 'yyyy-MM-dd', locale);\n case 'date-time':\n return date.toISOString();\n }\n};\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Directive, ElementRef, input, model, output, signal, Signal } from '@angular/core';\nimport { TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { CriterionDefinition, CriterionValue } from '../si-filtered-search.model';\n\n@Directive({\n host: {\n '[class.invalid-criterion]': '!validValue()',\n 'class': 'pill pill-interactive px-0 criterion-value-section'\n }\n})\nexport abstract class SiFilteredSearchValueBase {\n readonly active = model.required<boolean>();\n readonly criterionValue = model.required<CriterionValue>();\n readonly definition = input.required<CriterionDefinition>();\n readonly disabled = input.required<boolean>();\n readonly searchLabel = input.required<TranslatableString>();\n\n readonly submitValue = output<{ freeText: string } | void>();\n readonly editValue = output();\n readonly backspaceOverflow = output();\n\n protected abstract readonly valueInput: Signal<ElementRef<HTMLInputElement> | undefined>;\n protected abstract readonly validValue: Signal<boolean>;\n\n readonly focusInOverlay = signal(false).asReadonly();\n\n focus(): void {\n this.valueInput()?.nativeElement.focus();\n }\n\n protected valueEnter(): void {\n if (\n !this.definition().multiSelect &&\n (this.criterionValue().value || this.criterionValue().dateValue)\n ) {\n this.active.set(false);\n this.submitValue.emit();\n }\n }\n\n protected valueBackspace(): void {\n if (!this.valueInput()!.nativeElement.value) {\n this.backspaceOverflow.emit();\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { DatePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n LOCALE_ID,\n signal,\n viewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n getDatepickerFormat,\n getNamedFormat,\n isValid,\n SiDatepickerDirective,\n SiDatepickerOverlayDirective\n} from '@siemens/element-ng/datepicker';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { getISODateString } from '../../si-filtered-search-helper';\nimport { SiFilteredSearchValueBase } from '../si-filtered-search-value.base';\n\n@Component({\n selector: 'si-filtered-search-date-value',\n imports: [DatePipe, FormsModule, SiDatepickerDirective, SiTranslatePipe],\n templateUrl: './si-filtered-search-date-value.component.html',\n styleUrl: './si-filtered-search-date-value.component.scss',\n providers: [\n { provide: SiFilteredSearchValueBase, useExisting: SiFilteredSearchDateValueComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiFilteredSearchDateValueComponent extends SiFilteredSearchValueBase {\n private locale = inject(LOCALE_ID).toString();\n\n protected override readonly valueInput = viewChild<ElementRef<HTMLInputElement>>('valueInput');\n private readonly datepickerOverlay = viewChild(SiDatepickerOverlayDirective);\n\n protected readonly disableTime = signal(false);\n protected readonly shortDateFormat: string;\n\n override readonly focusInOverlay = computed(() => !!this.datepickerOverlay()?.isShown());\n readonly validFormat = computed(() => isValid(this.criterionValue().dateValue));\n // The information if the time is currently disabled is only present in the\n // current search criterion instance and not in the generic configuration.\n // So we need to merge the initial config with the current instance config.\n readonly dateConfig = computed(() => ({\n ...this.definition().datepickerConfig,\n disabledTime: this.disableTime()\n }));\n readonly dateFormat = computed(() => getDatepickerFormat(this.locale, this.dateConfig()));\n override readonly validValue = computed(() => {\n const dateConfig = this.dateConfig();\n const minDate = dateConfig?.minDate ?? false;\n const maxDate = dateConfig?.maxDate ?? false;\n const dateValue = this.criterionValue().dateValue ?? false;\n return (\n (!minDate || (minDate && dateValue && dateValue >= minDate)) &&\n (!maxDate || (maxDate && dateValue && dateValue <= maxDate))\n );\n });\n\n constructor() {\n super();\n this.shortDateFormat = getNamedFormat(this.locale, 'shortDate');\n if (!this.shortDateFormat.includes('yyyy')) {\n this.shortDateFormat = this.shortDateFormat.replace('yy', 'yyyy');\n }\n }\n\n protected valueDateSelect(date: Date): void {\n // In case the user type an illegal date into the date input,\n // our directive emits a new undefined value and keeps\n if (!date && this.criterionValue().dateValue) {\n date = new Date(this.criterionValue().dateValue!);\n }\n\n let value: string;\n const validationType = this.definition().validationType;\n if (validationType === 'date') {\n value = getISODateString(date, 'date', this.locale);\n } else if (validationType === 'date-time') {\n if (this.disableTime()) {\n value = getISODateString(date, 'date', this.locale);\n } else {\n value = getISODateString(date, 'date-time', this.locale);\n }\n }\n\n this.criterionValue.update(v => ({ ...v, value, dateValue: date }));\n }\n}\n","@let dateValue = criterionValue().dateValue;\n@if (!active()) {\n <div\n class=\"criterion-value-text focus-inside px-4\"\n [tabindex]=\"disabled() ? -1 : 0\"\n (keydown.enter)=\"editValue.emit()\"\n (click)=\"editValue.emit()\"\n >\n @if (!validFormat()) {\n <!-- DatePipe throws an error if the date is invalid, so we have to do it on our own. -->\n <!-- We may should have a better solution here. Ideally we would keep the broken string so that a user can fix it later. -->\n\n {{ $any(dateValue)?.toString() }}\n } @else if (!disableTime() || definition().validationType === 'date-time') {\n {{ dateValue | date: dateFormat() }}\n } @else {\n {{ dateValue | date: shortDateFormat }}\n }\n </div>\n} @else {\n <input\n #valueInput\n type=\"text\"\n siDatepicker\n class=\"px-4 py-0 border-0 focus-inside\"\n [attr.aria-label]=\"searchLabel() | translate\"\n [siDatepickerConfig]=\"dateConfig()\"\n [ngModel]=\"dateValue\"\n (keydown.backspace)=\"valueBackspace()\"\n (keydown.enter)=\"valueEnter()\"\n (siDatepickerDisabledTime)=\"disableTime.set($event)\"\n (ngModelChange)=\"valueDateSelect($event)\"\n />\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { computed, DestroyRef, Directive, inject, input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { injectSiTranslateService } from '@siemens/element-translate-ng/translate';\nimport { BehaviorSubject, Observable, of, switchMap } from 'rxjs';\nimport { debounceTime, first, map, tap } from 'rxjs/operators';\n\nimport {\n InternalCriterionDefinition,\n toOptionCriteria,\n TypeaheadOptionCriterion\n} from '../si-filtered-search-helper';\nimport { OptionCriterion, OptionType } from '../si-filtered-search.model';\nimport { SiFilteredSearchValueBase } from './si-filtered-search-value.base';\n\n@Directive()\nexport abstract class SiFilteredSearchOptionValueBase extends SiFilteredSearchValueBase {\n readonly lazyValueProvider =\n input<(criterionName: string, typed: string | string[]) => Observable<OptionType[]>>();\n readonly searchDebounceTime = input.required<number>();\n readonly onlySelectValue = input.required<boolean>();\n readonly maxCriteriaOptions = input.required<number>();\n readonly optionsInScrollableView = input.required<number>();\n readonly readonly = input.required<boolean>();\n readonly disableSelectionByColonAndSemicolon = input.required<boolean>();\n readonly isStrictOrOnlySelectValue = input.required<boolean>();\n\n protected readonly inputChange = new BehaviorSubject('');\n\n private readonly destroyRef = inject(DestroyRef);\n protected readonly translateService = injectSiTranslateService();\n\n readonly inputType = computed(() =>\n this.definition().validationType === 'integer' || this.definition().validationType === 'float'\n ? 'number'\n : 'text'\n );\n readonly step = computed(() => (this.definition().validationType === 'integer' ? '1' : 'any'));\n readonly options = computed(() => this.buildOptions());\n override readonly validValue = computed(() => {\n const config = this.definition();\n if (!this.isStrictOrOnlySelectValue() && !config.strictValue && !config.onlySelectValue) {\n return true;\n }\n\n // TODO: this never worked with lazy options. We should fix that.\n // TODO: checking if options are empty is also questionable. Should be changed v47.\n return (\n (config.options?.length && this.hasOptionValue()) ||\n (!config.options?.length && !!this.criterionValue().value)\n );\n });\n\n protected buildOptions(): Observable<TypeaheadOptionCriterion[]> | undefined {\n let optionsStream: Observable<OptionCriterion[]> | undefined;\n if (this.lazyValueProvider()) {\n optionsStream = this.inputChange.pipe(\n debounceTime(this.searchDebounceTime()),\n takeUntilDestroyed(this.destroyRef),\n switchMap(value => {\n return this.lazyValueProvider()!(\n this.definition().name,\n // TODO: fix lazy loading for multi-select. Seems to be not needed, but it should work.\n this.definition().multiSelect ? '' : (value ?? '')\n ).pipe(\n map(options => toOptionCriteria(options)),\n tap(\n options =>\n ((this.definition() ?? ({} as InternalCriterionDefinition)).options = options)\n )\n );\n })\n );\n } else if (this.definition()) {\n optionsStream = of(toOptionCriteria(this.definition().options));\n }\n\n return optionsStream?.pipe(\n switchMap(options => {\n const keys: string[] = options.map(option => option.label!).filter(label => !!label);\n return this.translateService.translateAsync(keys).pipe(\n map(translations =>\n options.map(option => ({\n ...option,\n translatedLabel: translations[option.label!] ?? option.label ?? option.value\n }))\n )\n );\n })\n );\n }\n\n protected buildOptionValue(): void {\n if (this.criterionValue().value?.length) {\n // resolve options for initial values\n this.options()!\n .pipe(first())\n .subscribe(options => this.processTypeaheadOptions(options));\n }\n }\n\n protected abstract processTypeaheadOptions(value: TypeaheadOptionCriterion[]): void;\n protected abstract hasOptionValue(): boolean;\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n OnChanges,\n OnInit,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { SiTypeaheadDirective, TypeaheadMatch } from '@siemens/element-ng/typeahead';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\nimport { BehaviorSubject, Observable, switchMap } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\n\nimport { selectOptions, TypeaheadOptionCriterion } from '../../si-filtered-search-helper';\nimport { OptionCriterion } from '../../si-filtered-search.model';\nimport { SiFilteredSearchOptionValueBase } from '../si-filtered-search-option-value.base';\nimport { SiFilteredSearchValueBase } from '../si-filtered-search-value.base';\n\n@Component({\n selector: 'si-filtered-search-multi-select',\n imports: [SiTranslatePipe, SiTypeaheadDirective],\n templateUrl: './si-filtered-search-multi-select.component.html',\n styleUrl: './si-filtered-search-multi-select.component.scss',\n providers: [\n { provide: SiFilteredSearchValueBase, useExisting: SiFilteredSearchMultiSelectComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiFilteredSearchMultiSelectComponent\n extends SiFilteredSearchOptionValueBase\n implements OnChanges, OnInit\n{\n readonly itemCountText = input.required<TranslatableString>();\n protected override readonly valueInput = viewChild<ElementRef<HTMLInputElement>>('valueInput');\n protected readonly optionValue = signal<OptionCriterion[]>([]);\n protected readonly selectionChange = new BehaviorSubject<string[]>([]);\n\n readonly hasMultiSelections = computed(\n () => Array.isArray(this.criterionValue().value) && this.criterionValue().value!.length > 1\n );\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.criterionValue &&\n this.criterionValue().value?.length !== this.optionValue().length\n ) {\n this.optionValue.set([]);\n this.selectionChange.next([]);\n }\n }\n\n ngOnInit(): void {\n this.inputChange.next('');\n this.selectionChange.next(this.criterionValue().value as string[]);\n this.buildOptionValue();\n }\n\n protected valueTypeaheadSelect(match: TypeaheadMatch): void {\n const option = match.option as OptionCriterion;\n if (match.itemSelected) {\n this.criterionValue.update(v => ({ ...v, value: [...v.value!, option.value] }));\n this.optionValue.update(v => [...v, option]);\n } else {\n const value = this.criterionValue();\n if (typeof value.value !== 'string') {\n this.criterionValue.set({\n ...value,\n value: value.value?.filter(elem => elem !== option.value)\n });\n }\n this.optionValue.update(v => v.filter(elem => elem.value !== option.value));\n }\n this.selectionChange.next(this.criterionValue().value as string[]);\n }\n\n protected override buildOptions(): Observable<TypeaheadOptionCriterion[]> | undefined {\n const translatedOptions = super.buildOptions();\n return translatedOptions?.pipe(\n switchMap(options =>\n this.selectionChange!.pipe(\n tap(value => {\n selectOptions(options, value);\n }),\n map(() => options)\n )\n )\n );\n }\n\n protected processTypeaheadOptions(options: TypeaheadOptionCriterion[]): void {\n const value = this.criterionValue().value as string[];\n this.optionValue.set(\n options.filter(\n option =>\n value.includes(option.value) ||\n // TODO: remove this. I don't know why, but it seems like previously FS accepted labels as well\n value.includes(option.translatedLabel)\n )\n );\n // Sneaky patch the value.\n // We did not emit a change, as no user interaction happened.\n // We should consider dropping this, but there is currently a unit test checking this behavior.\n value.splice(0, value.length, ...this.optionValue().map(option => option.value));\n }\n\n protected hasOptionValue(): boolean {\n return !!this.optionValue().length;\n }\n}\n","@let value = criterionValue().value;\n@if (!active()) {\n <div\n class=\"criterion-value-text focus-inside px-4\"\n [tabindex]=\"disabled() ? -1 : 0\"\n (keydown.enter)=\"editValue.emit()\"\n (click)=\"editValue.emit()\"\n >\n @if (!!value && hasMultiSelections()) {\n {{ itemCountText() | translate: { itemCount: value.length } }}\n } @else if (optionValue()[0]) {\n {{ optionValue()[0].label ?? optionValue()[0].value | translate }}\n } @else {\n {{ value }}\n }\n </div>\n} @else {\n <input\n #valueInput\n typeaheadOptionField=\"translatedLabel\"\n class=\"px-4 py-0 border-0 focus-inside\"\n typeaheadScrollable\n typeaheadMultiSelect\n [type]=\"inputType()\"\n [step]=\"step()\"\n [siTypeahead]=\"options() ?? []\"\n [typeaheadMinLength]=\"0\"\n [typeaheadOptionsLimit]=\"maxCriteriaOptions()\"\n [readOnly]=\"readonly() || onlySelectValue()\"\n [typeaheadOptionsInScrollableView]=\"optionsInScrollableView()\"\n [attr.aria-label]=\"searchLabel() | translate\"\n (keydown.backspace)=\"valueBackspace()\"\n (keydown.enter)=\"valueEnter()\"\n (typeaheadOnSelect)=\"valueTypeaheadSelect($event)\"\n (typeaheadOnInput)=\"inputChange.next($event)\"\n />\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n OnChanges,\n OnInit,\n signal,\n SimpleChanges,\n untracked,\n viewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SiTypeaheadDirective, TypeaheadMatch } from '@siemens/element-ng/typeahead';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { TypeaheadOptionCriterion } from '../../si-filtered-search-helper';\nimport { OptionCriterion } from '../../si-filtered-search.model';\nimport { SiFilteredSearchOptionValueBase } from '../si-filtered-search-option-value.base';\nimport { SiFilteredSearchValueBase } from '../si-filtered-search-value.base';\n\n@Component({\n selector: 'si-filtered-search-typeahead',\n imports: [SiTypeaheadDirective, FormsModule, SiTranslatePipe],\n templateUrl: './si-filtered-search-typeahead.component.html',\n styleUrl: './si-filtered-search-typeahead.component.scss',\n providers: [\n { provide: SiFilteredSearchValueBase, useExisting: SiFilteredSearchTypeaheadComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiFilteredSearchTypeaheadComponent\n extends SiFilteredSearchOptionValueBase\n implements OnChanges, OnInit\n{\n protected override readonly valueInput = viewChild<ElementRef<HTMLInputElement>>('valueInput');\n protected readonly optionValue = signal<OptionCriterion | undefined>(undefined);\n\n // This must be a separate signal as it should only emit when the actual empty state changes.\n private readonly inputEmpty = computed(() => !this.criterionValue().value);\n\n // This MUST only be updated if the active state changes.\n // Otherwise, user values might be overridden.\n // It is only used to pass the initial input value if the user starts editing the input.\n readonly valueLabel = computed(() => {\n // This is needed for the clear button.\n // But we cannot subscribe to the value changes itself, as those would cause to many updates.\n if (this.inputEmpty()) {\n return '';\n }\n\n if (this.active()) {\n const option = untracked(() => this.optionValue());\n if (option) {\n return option.label ? this.translateService.translateSync(option.label) : option.value;\n } else {\n return untracked(() => this.criterionValue().value) as string;\n }\n }\n return '';\n });\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.criterionValue && this.criterionValue().value !== this.optionValue()?.value) {\n this.optionValue.set(undefined);\n }\n }\n\n ngOnInit(): void {\n this.inputChange.next((this.criterionValue().value as string) ?? '');\n this.buildOptionValue();\n }\n\n protected valueChange(newValue: string | string[]): void {\n if (typeof newValue === 'string') {\n const match = newValue.match(/(.+?);(.*)$/);\n let value: string;\n if (!this.disableSelectionByColonAndSemicolon() && match) {\n value = match[1];\n this.submitValue.emit({ freeText: match[2] });\n } else {\n value = newValue;\n }\n this.optionValue.set(undefined);\n this.criterionValue.update(v => ({ ...v, value }));\n this.inputChange.next(newValue);\n }\n }\n\n protected valueTypeaheadFullMatch(match: TypeaheadMatch): void {\n const option = match.option as TypeaheadOptionCriterion;\n this.optionValue.set(option);\n // Usually, we already emitted a change in onCriterionValueInputChange using the text entered by the user.\n // In case of a fullMatch, we should check if the value is different from label.\n // If it is different, we must emit another event using the value instead of the label.\n // TODO: prevent the emit of the label matching the option. This is currently not possible due to the order events.\n if (option.value !== option.translatedLabel) {\n this.criterionValue.update(v => ({ ...v, value: option.value }));\n }\n }\n\n protected valueTypeaheadSelect(match: TypeaheadMatch): void {\n this.valueTypeaheadFullMatch(match);\n this.submitValue.emit();\n }\n\n protected valueFilterKeys(event: KeyboardEvent): void {\n // In integer mode, no floating point numbers are allowed.\n // So we prevent the input of '.' or ','.\n if (\n this.definition().validationType === 'integer' &&\n (event.key === '.' || event.key === ',')\n ) {\n event.preventDefault();\n }\n }\n\n protected processTypeaheadOptions(options: TypeaheadOptionCriterion[]): void {\n this.optionValue.set(\n options.find(\n option =>\n option.value === this.criterionValue().value ||\n // TODO: remove this. I don't know why, but it seems like previously FS accepted labels as well\n option.translatedLabel === this.criterionValue().value\n )\n );\n // Sneaky patch the value.\n // We did not emit a change, as no user interaction happened.\n // We should consider dropping this, but there is currently a unit test checking this behavior.\n const optionValue = this.optionValue();\n if (optionValue) {\n // TODO: The last ?? optionValue.label is non-sense, but we have a unit test checking this behavior.\n this.criterionValue().value = optionValue.value ?? optionValue.label;\n }\n }\n\n protected hasOptionValue(): boolean {\n return !!this.optionValue();\n }\n}\n","@let value = criterionValue().value;\n@if (!active()) {\n <div\n class=\"criterion-value-text focus-inside px-4\"\n [tabindex]=\"disabled() ? -1 : 0\"\n (keydown.enter)=\"editValue.emit()\"\n (click)=\"editValue.emit()\"\n >\n @let optionValue = this.optionValue();\n @if (optionValue) {\n {{ optionValue.label ?? optionValue.value | translate }}\n } @else {\n {{ value }}\n }\n </div>\n} @else {\n <input\n #valueInput\n typeaheadOptionField=\"translatedLabel\"\n class=\"px-4 py-0 border-0 focus-inside\"\n typeaheadScrollable\n [type]=\"inputType()\"\n [step]=\"step()\"\n [ngModel]=\"valueLabel()\"\n [siTypeahead]=\"options() ?? []\"\n [typeaheadProcess]=\"!onlySelectValue()\"\n [typeaheadMinLength]=\"0\"\n [typeaheadOptionsLimit]=\"maxCriteriaOptions()\"\n [typeaheadAutoSelectIndex]=\"value?.length ? 0 : -1\"\n [readOnly]=\"readonly() || onlySelectValue() || definition().onlySelectValue\"\n [typeaheadOptionsInScrollableView]=\"optionsInScrollableView()\"\n [attr.aria-label]=\"searchLabel() | translate\"\n (keydown)=\"valueFilterKeys($event)\"\n (keydown.backspace)=\"valueBackspace()\"\n (keydown.enter)=\"valueEnter()\"\n (ngModelChange)=\"valueChange($event)\"\n (typeaheadOnFullMatch)=\"valueTypeaheadFullMatch($event)\"\n (typeaheadOnSelect)=\"valueTypeaheadSelect($event)\"\n />\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMonitorFocus, FocusOrigin } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n model,\n OnInit,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { addIcons, elementCancel, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTypeaheadDirective } from '@siemens/element-ng/typeahead';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\nimport { Observable } from 'rxjs';\n\nimport { CriterionDefinition, CriterionValue, OptionType } from './si-filtered-search.model';\nimport { SiFilteredSearchDateValueComponent } from './values/date-value/si-filtered-search-date-value.component';\nimport { SiFilteredSearchMultiSelectComponent } from './values/multi-select/si-filtered-search-multi-select.component';\nimport { SiFilteredSearchValueBase } from './values/si-filtered-search-value.base';\nimport { SiFilteredSearchTypeaheadComponent } from './values/typeahead/si-filtered-search-typeahead.component';\n\n@Component({\n selector: 'si-filtered-search-value',\n imports: [\n CdkMonitorFocus,\n SiTypeaheadDirective,\n FormsModule,\n SiTranslatePipe,\n SiFilteredSearchDateValueComponent,\n SiFilteredSearchTypeaheadComponent,\n SiFilteredSearchMultiSelectComponent,\n SiIconComponent\n ],\n templateUrl: './si-filtered-search-value.component.html',\n styleUrl: './si-filtered-search-value.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiFilteredSearchValueComponent implements OnInit {\n readonly value = model.required<CriterionValue>();\n readonly definition = input.required<CriterionDefinition>();\n readonly disabled = input.required<boolean>();\n readonly readonly = input.required<boolean>();\n readonly onlySelectValue = input.required<boolean>();\n readonly maxCriteriaOptions = input.required<number>();\n readonly optionsInScrollableView = input.required<number>();\n readonly clearButtonLabel = input.required<TranslatableString>();\n readonly lazyValueProvider =\n input<(criterionName: string, typed: string | string[]) => Observable<OptionType[]>>();\n readonly searchDebounceTime = input.required<number>();\n readonly itemCountText = input.required<TranslatableString>();\n readonly disableSelectionByColonAndSemicolon = input.required<boolean>();\n readonly searchLabel = input.required<TranslatableString>();\n readonly invalidCriterion = input.required<boolean>();\n readonly isStrictOrOnlySelectValue = input.required<boolean>();\n readonly editOnCreation = input.required<boolean>();\n\n readonly deleteCriterion = output<{ triggerSearch: boolean } | void>();\n readonly submitCriterion = output<{ freeText: string } | void>();\n\n protected readonly active = signal<boolean>(false);\n protected readonly icons = addIcons({ elementCancel });\n\n private hasPendingFocus = false;\n\n private readonly operatorInput = viewChild<ElementRef<HTMLInputElement>>('operatorInput');\n private readonly valueInput = viewChild(SiFilteredSearchValueBase);\n\n readonly type = computed(() => {\n const definition = this.definition();\n const validationType = definition.validationType;\n if (validationType === 'date' || validationType === 'date-time') {\n return 'date';\n }\n // Handle multi-select vs single-select for other validation types.\n return definition.multiSelect ? 'multi-select' : 'typeahead';\n });\n readonly selectedOperatorIndex = computed(() => {\n const operator = this.value().operator;\n const operators = this.definition().operators;\n if (!operator || !operators) {\n return -1;\n }\n\n return operators.findIndex(op => op.includes(operator));\n });\n readonly longestOperatorLength = computed(() => {\n const operators = this.definition().operators;\n if (!operators) {\n return 0;\n }\n return Math.max(...operators.map(a => a.length));\n });\n\n ngOnInit(): void {\n if (this.editOnCreation()) {\n this.edit();\n }\n }\n\n closeOverlay(): void {\n if (this.active()) {\n this.active.set(false);\n }\n }\n\n edit(field?: 'value' | 'operator'): void {\n if (this.readonly()) {\n return;\n }\n\n this.active.set(true);\n this.hasPendingFocus = true;\n\n setTimeout(() => {\n if (field === 'value') {\n this.valueInput()?.focus();\n } else if (field === 'operator') {\n this.operatorInput()?.nativeElement.focus();\n } else {\n (this.operatorInput()?.nativeElement ?? this.valueInput())?.focus();\n }\n this.hasPendingFocus = false;\n });\n }\n\n protected backspaceOverflow(): void {\n const operatorInput = this.operatorInput()?.nativeElement;\n if (operatorInput) {\n operatorInput.focus();\n } else {\n this.deleteCriterion.emit();\n }\n }\n\n protected focusChange(focusOrigin: FocusOrigin): void {\n if (this.hasPendingFocus) {\n return;\n }\n setTimeout(() => {\n // We need to wait for the overlay, that might be shown and now close as well on onside click.\n if (this.active() && !focusOrigin && !this.valueInput()?.focusInOverlay()) {\n this.active.set(false);\n }\n });\n }\n\n protected operatorUpdate(operator: string): void {\n this.value.update(value => ({ ...value, operator }));\n }\n\n protected operatorBackspace(): void {\n if (!this.operatorInput()?.nativeElement.value) {\n this.deleteCriterion.emit();\n }\n }\n\n protected operatorEnter(): void {\n this.valueInput()!.focus();\n }\n\n protected operatorBlur(): void {\n const operators = this.definition().operators;\n if (operators && !operators.includes(this.value().operator!)) {\n this.operatorUpdate(operators.includes('=') ? '=' : operators[0]);\n }\n }\n\n protected clear(): void {\n if (!this.active() || !this.value().value?.length) {\n this.deleteCriterion.emit({ triggerSearch: true });\n return;\n }\n\n this.value.update(v => ({\n ...v,\n dateValue: undefined,\n value: this.definition().multiSelect ? [] : ''\n }));\n }\n}\n","<div\n cdkMonitorSubtreeFocus\n class=\"criteria pill-group\"\n [class.disabled]=\"disabled()\"\n [attr.aria-disabled]=\"disabled()\"\n [class.invalid-criterion]=\"invalidCriterion()\"\n (cdkFocusChange)=\"focusChange($event)\"\n>\n <div class=\"pill pill-interactive criterion-label si-h5\" (click)=\"edit()\">\n {{ definition().label | translate }}\n </div>\n @if (definition().operators?.length) {\n <div class=\"pill pill-interactive px-0 criterion-operator-section\">\n <!-- criterion operator input -->\n @if (active()) {\n <input\n #operatorInput\n type=\"text\"\n class=\"focus-inside operator-input py-0 border-0\"\n [siTypeahead]=\"definition().operators!\"\n [typeaheadProcess]=\"false\"\n [typeaheadAutoSelectIndex]=\"selectedOperatorIndex()\"\n [typeaheadMinLength]=\"0\"\n [typeaheadOptionsLimit]=\"0\"\n [readOnly]=\"false\"\n [typeaheadScrollable]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionsInScrollableView()\"\n [attr.aria-label]=\"searchLabel() | translate\"\n [attr.size]=\"longestOperatorLength()\"\n [ngModel]=\"value().operator\"\n (ngModelChange)=\"operatorUpdate($event)\"\n (keydown.backspace)=\"operatorBackspace()\"\n (keydown.enter)=\"operatorEnter()\"\n (typeaheadOnSelect)=\"operatorEnter()\"\n (blur)=\"operatorBlur()\"\n />\n } @else {\n <!-- criterion operator field -->\n <div\n class=\"criterion-operator-text px-2 focus-inside\"\n [tabindex]=\"!disabled() ? 0 : -1\"\n (keydown.enter)=\"edit('operator')\"\n (click)=\"edit('operator')\"\n >\n {{ value().operator }}\n </div>\n }\n </div>\n }\n @switch (type()) {\n @case ('date') {\n <si-filtered-search-date-value\n [definition]=\"definition()\"\n [disabled]=\"disabled()\"\n [searchLabel]=\"searchLabel()\"\n [(active)]=\"active\"\n [(criterionValue)]=\"value\"\n (backspaceOverflow)=\"backspaceOverflow()\"\n (editValue)=\"edit('value')\"\n (submitValue)=\"submitCriterion.emit($event)\"\n />\n }\n @case ('multi-select') {\n <si-filtered-search-multi-select\n [definition]=\"definition()\"\n [disabled]=\"disabled()\"\n [searchLabel]=\"searchLabel()\"\n [searchDebounceTime]=\"searchDebounceTime()\"\n [onlySelectValue]=\"onlySelectValue()\"\n [optionsInScrollableView]=\"optionsInScrollableView()\"\n [maxCriteriaOptions]=\"maxCriteriaOptions()\"\n [lazyValueProvider]=\"lazyValueProvider()\"\n [itemCountText]=\"itemCountText()\"\n [isStrictOrOnlySelectValue]=\"isStrictOrOnlySelectValue()\"\n [disableSelectionByColonAndSemicolon]=\"disableSelectionByColonAndSemicolon()\"\n [readonly]=\"readonly()\"\n [(active)]=\"active\"\n [(criterionValue)]=\"value\"\n (backspaceOverflow)=\"backspaceOverflow()\"\n (editValue)=\"edit('value')\"\n (submitValue)=\"submitCriterion.emit($event)\"\n />\n }\n @case ('typeahead') {\n <si-filtered-search-typeahead\n [definition]=\"definition()\"\n [disabled]=\"disabled()\"\n [searchLabel]=\"searchLabel()\"\n [searchDebounceTime]=\"searchDebounceTime()\"\n [onlySelectValue]=\"onlySelectValue()\"\n [optionsInScrollableView]=\"optionsInScrollableView()\"\n [maxCriteriaOptions]=\"maxCriteriaOptions()\"\n [lazyValueProvider]=\"lazyValueProvider()\"\n [isStrictOrOnlySelectValue]=\"isStrictOrOnlySelectValue()\"\n [disableSelectionByColonAndSemicolon]=\"disableSelectionByColonAndSemicolon()\"\n [readonly]=\"readonly()\"\n [(active)]=\"active\"\n [(criterionValue)]=\"value\"\n (backspaceOverflow)=\"backspaceOverflow()\"\n (editValue)=\"edit('value')\"\n (submitValue)=\"submitCriterion.emit($event)\"\n />\n }\n }\n @if (!readonly()) {\n <div class=\"pill px-0 ms-n1\">\n <button\n type=\"button\"\n class=\"btn btn-circle btn-xs btn-ghost focus-inside\"\n [attr.aria-label]=\"clearButtonLabel() | translate\"\n [disabled]=\"disabled()\"\n (click)=\"clear()\"\n (mousedown)=\"$event.preventDefault()\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n </div>\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n LOCALE_ID,\n model,\n OnChanges,\n OnInit,\n output,\n signal,\n SimpleChanges,\n viewChild,\n viewChildren\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { BackgroundColorVariant, isRTL } from '@siemens/element-ng/common';\nimport { addIcons, elementCancel, elementSearch, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiTypeaheadDirective, TypeaheadOption } from '@siemens/element-ng/typeahead';\nimport {\n injectSiTranslateService,\n SiTranslatePipe,\n t,\n TranslatableString\n} from '@siemens/element-translate-ng/translate';\nimport { BehaviorSubject, Observable, of, Subject, switchMap } from 'rxjs';\nimport { debounceTime, map } from 'rxjs/operators';\n\nimport {\n differenceByName,\n getISODateString,\n InternalCriterionDefinition,\n toInternalCriteria\n} from './si-filtered-search-helper';\nimport { SiFilteredSearchValueComponent } from './si-filtered-search-value.component';\nimport {\n Criterion,\n CriterionDefinition,\n CriterionValue,\n DisplayedCriteriaEventArgs,\n OptionType,\n SearchCriteria\n} from './si-filtered-search.model';\n\n@Component({\n selector: 'si-filtered-search',\n imports: [\n FormsModule,\n SiIconComponent,\n SiTypeaheadDirective,\n SiTranslatePipe,\n SiFilteredSearchValueComponent\n ],\n templateUrl: './si-filtered-search.component.html',\n styleUrl: './si-filtered-search.component.scss',\n host: {\n '[class.disabled]': 'disabled()',\n '[class.dark-background]': \"colorVariant() === 'base-0'\"\n }\n})\nexport class SiFilteredSearchComponent implements OnInit, OnChanges {\n private static readonly criterionRegex = /(.+?):(.*)$/;\n\n /**\n * Output callback event that provides an object describing the\n * selected criteria and additional filter text.\n */\n readonly doSearch = output<SearchCriteria>();\n\n /**\n * If this is set to `true`, the search triggers for each input (implicit search).\n * By default, the search is triggered when the user submits by pressing the\n * search button or by pressing enter.\n *\n * @defaultValue false\n */\n readonly doSearchOnInputChange = input(false, {\n transform: booleanAttribute\n });\n /**\n * In addition to lazy loaded value, you can also lazy load the criteria itself\n */\n readonly lazyCriterionProvider =\n input<\n (\n typed: string,\n searchCriteria?: SearchCriteria\n ) => Observable<Criterion[] | CriterionDefinition[]>\n >();\n /**\n * In many cases, your application defines the criteria, but the values need\n * to be loaded from a server. In this case you can provide a function that\n * returns the possible criterion options as an Observable.\n */\n readonly lazyValueProvider =\n input<(criterionName: string, typed: string | string[]) => Observable<OptionType[]>>();\n /**\n * Disable any interactivity.\n *\n * @defaultValue false\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * Do not allow changes. Search can still be triggered.\n *\n * @deprecated Use {@link disabled} instead.\n *\n * @defaultValue false\n */\n readonly readonly = input(false, { transform: booleanAttribute });\n /**\n * Limit criteria to the predefined ones.\n *\n * @defaultValue false\n */\n readonly strictCriterion = input(false, { transform: booleanAttribute });\n\n /**\n * Limit criterion options to the predefined ones. `[strictValue]`\n * enforces `[strictCriterion]` to true automatically.\n *\n * @defaultValue false\n */\n readonly strictValue = input(false, { transform: booleanAttribute });\n\n /**\n * Limit criterion options to the predefined ones and prevent typing. `[onlySelectValue]`\n * enforces `[strictValue]` and `[strictCriterion]` to true automatically.\n *\n * @defaultValue false\n */\n readonly onlySelectValue = input(false, { transform: booleanAttribute });\n\n /**\n * Custom debounce time for lazy loading of criteria data.\n *\n * @defaultValue 500\n */\n readonly lazyLoadingDebounceTime = input(500);\n\n /**\n * Custom debounce time (in mills) to delay the search emission.\n * (Default is 0 as in most cases a users manually triggers a search.\n * Recommended to increase a bit when using doSearchOnInputChange=true)\n *\n * @defaultValue 0\n */\n readonly searchDebounceTime = input(0);\n /**\n * The placeholder for input field.\n *\n * @defaultValue ''\n */\n readonly placeholder = input('');\n\n /**\n * Defines the number of criteria, criteria values and operators visible at once.\n *\n * @defaultValue 10\n */\n readonly optionsInScrollableView = input(10);\n\n /**\n * The current selected search criteria and entered search text.\n *\n * @defaultValue\n * ```\n * { criteria: [], value: '' }\n * ```\n */\n readonly searchCriteria = model<SearchCriteria>({ criteria: [], value: '' });\n\n /**\n * Predefine criteria options.\n *\n * @defaultValue []\n */\n readonly criteria = input<Criterion[] | CriterionDefinition[]>([]);\n /**\n * Opt-in to search for each criterion only once.\n *\n * @defaultValue false\n */\n readonly exclusiveCriteria = input(false, {\n transform: booleanAttribute\n });\n /**\n * Limit the number of possible criteria. The default is undefined so that any number of criteria can be used.\n * For example, setting the value to 1 let you only select one criterion that you need to remove before being\n * able to set another one.\n *\n * @defaultValue undefined\n */\n readonly maxCriteria = input<number | undefined>(undefined);\n\n /**\n * Defines the maximum options within one criterion. The default is 20 and 0 means unlimited.\n *\n * @defaultValue 20\n */\n readonly maxCriteriaOptions = input(20);\n /**\n * Search input aria label, Needed by a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_FILTERED_SEARCH.SEARCH:Search`)\n * ```\n */\n readonly searchLabel = input(t(() => $localize`:@@SI_FILTERED_SEARCH.SEARCH:Search`));\n /**\n * Clear button aria label. Needed for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_FILTERED_SEARCH.CLEAR:Clear`)\n * ```\n */\n readonly clearButtonLabel = input(t(() => $localize`:@@SI_FILTERED_SEARCH.CLEAR:Clear`));\n\n /**\n * The accessible label of the search button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_FILTERED_SEARCH.SUBMIT_BUTTON:Submit search`)\n * ```\n */\n readonly submitButtonLabel = input(\n t(() => $localize`:@@SI_FILTERED_SEARCH.SUBMIT_BUTTON:Submit search`)\n );\n\n /**\n * Items count text appended to the count in case of multi-selection of values.\n * Translation key, `{{itemCount}}` in the translation will be replaced with the actual value.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_FILTERED_SEARCH.ITEM_COUNT:{{itemCount}} items`)\n * ```\n */\n readonly itemCountText = input<TranslatableString>(\n t(() => $localize`:@@SI_FILTERED_SEARCH.ITEM_COUNT:{{itemCount}} items`)\n );\n /**\n * Color variant to determine component background\n *\n * @defaultValue 'base-1'\n */\n readonly colorVariant = input<BackgroundColorVariant>('base-1');\n /**\n * Disables the free text search to only use the criterion for filtering.\n *\n * @defaultValue false\n */\n readonly disableFreeTextSearch = input(false, { transform: booleanAttribute });\n /**\n * Limit on the number of criteria/criteria value to be displayed by the typeahead\n *\n * @defaultValue 20\n */\n readonly typeaheadOptionsLimit = input(20);\n /**\n * By default, the Filtered Search will treat `:` as a special character\n * to submit the current input in the freetext and immediately create a criterion.\n * Use this input to disable this behavior.\n *\n * @defaultValue false\n */\n readonly disableSelectionByColonAndSemicolon = input(false, { transform: booleanAttribute });\n /**\n * The interceptor is called when the list of criteria is shown as soon as the user starts typing in the input field.\n * The interceptor's {@link DisplayedCriteriaEventArgs.allow} method can be used to filter the list of displayed criteria.\n *\n * **Note:** The interceptor is called as long as the {@link searchCriteria} does not exceed {@link maxCriteria}.\n * Further, the interceptor is not called when using the {@link lazyCriterionProvider}.\n *\n * @example\n * ```\n * <si-filtered-search\n * [criteria]=\"[{ name: 'foo', label: 'Foo' }, { name: 'bar', label: 'Bar' }]\"\n * (interceptDisplayedCriteria)=\"$event.allow(\n * $event.searchCriteria.criteria.some(s => s.name === 'foo')\n * ? $event.criteria.filter(c => c !== 'foo')\n * : $event.criteria\n * )\">\n * </si-filtered-search>\n * ```\n */\n readonly interceptDisplayedCriteria = output<DisplayedCriteriaEventArgs>();\n\n private readonly freeTextInputElement =\n viewChild.required<ElementRef<HTMLInputElement>>('freeTextInputElement');\n\n private readonly scrollContainer = viewChild.required('scrollContainer', { read: ElementRef });\n\n private readonly valueComponents = viewChildren(SiFilteredSearchValueComponent);\n\n protected dataSource: Observable<InternalCriterionDefinition[]>;\n protected autoEditCriteria = false;\n\n protected values: { config: InternalCriterionDefinition; value: CriterionValue }[] = [];\n protected searchValue = '';\n /** Internal criteria model */\n protected internalCriterionDefinitions: InternalCriterionDefinition[] = [];\n protected readonly icons = addIcons({ elementCancel, elementSearch });\n\n /** Used to trigger a renewed search */\n private typeaheadInputChange = new BehaviorSubject<string>('');\n /** Used to debounce the Search emissions */\n private searchEmitQueue = new Subject<SearchCriteria | undefined>();\n private readonly destroyRef = inject(DestroyRef);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly translateService = injectSiTranslateService();\n private readonly locale = inject(LOCALE_ID).toString();\n /**\n * The cache is used to control when the interceptDisplayedCriteria event needs to be called.\n * Every time a criteria gain the focus we have to reset the cache to call the interceptor.\n */\n private allowedCriteriaCache?: string[];\n\n // Angular also calls ngOnChanges if we emitted a change and then two-way-databinding writes back our own change.\n // We use this to ensure that we do not write our own change back to the input.\n private lastEmittedSearchCriteria?: SearchCriteria;\n\n protected readonly isStrictOrOnlySelectValue = computed(() => {\n return this.strictValue() || this.onlySelectValue();\n });\n\n private readonly strictCriterionOrValue = computed(() => {\n return this.strictCriterion() || this.isStrictOrOnlySelectValue();\n });\n\n private readonly lazyLoadedCriteria = signal<Criterion[] | CriterionDefinition[] | undefined>(\n undefined\n );\n private readonly loadedCriteria = computed(() => {\n const lazyLoadedCriteria = this.lazyLoadedCriteria();\n if (lazyLoadedCriteria) {\n return lazyLoadedCriteria;\n } else {\n return this.criteria() ?? [];\n }\n });\n\n private readonly isReadOnly = computed(() => this.readonly() || this.disabled());\n\n constructor() {\n this.dataSource = this.typeaheadInputChange.pipe(\n switchMap(value => {\n if (this.lazyCriterionProvider()) {\n return this.lazyCriterionProvider()!(value, this.searchCriteria()).pipe(\n debounceTime(this.lazyLoadingDebounceTime()),\n map(result => this.getCriteriaToDisplayFromSubscription(result))\n );\n } else {\n return of(this.getFilteredTypeaheadCriteria(value));\n }\n }),\n switchMap(criteria => {\n return this.translateService.translateAsync(criteria.map(c => c.label)).pipe(\n map(translations => {\n criteria.forEach(c => (c.translatedLabel = translations[c.label] ?? c.label ?? c.name));\n return criteria;\n })\n );\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.criteria) {\n this.initCriteria();\n }\n if (\n (changes.searchCriteria && this.searchCriteria() !== this.lastEmittedSearchCriteria) ||\n changes.criteria\n ) {\n this.initValue();\n // Update typeahead since the criteria input can change while the free text input is focused.\n // This is necessary since the criteria are set as a result of an API call response.\n this.typeaheadInputChange.next(this.freeTextInputElement().nativeElement.value ?? '');\n }\n }\n\n ngOnInit(): void {\n if (this.strictCriterionOrValue() && this.internalCriterionDefinitions.length === 0) {\n throw new Error('strict criterion mode activated without predefined criteria!');\n }\n\n this.searchEmitQueue\n .pipe(debounceTime(this.searchDebounceTime()), takeUntilDestroyed(this.destroyRef))\n .subscribe(searchCriteria => this.doSearch.emit(searchCriteria!));\n }\n\n private initCriteria(): void {\n this.internalCriterionDefinitions = this.loadedCriteria().map(c => toInternalCriteria(c));\n }\n\n private initValue(): void {\n this.autoEditCriteria = false;\n this.searchValue = this.searchCriteria()?.value ?? '';\n this.values =\n this.searchCriteria()?.criteria.map(c => {\n const config =\n this.internalCriterionDefinitions.find(ic => ic.name === c.name) ??\n ({\n name: c.name,\n label: c.label ?? c.name,\n translatedLabel: c.label ?? c.name\n } as InternalCriterionDefinition);\n\n let value = c.value ?? '';\n // Fix input, in case the user provided the value as string for the multi-select use case.\n if (config.multiSelect && typeof value === 'string') {\n value = value !== '' ? [value] : [];\n }\n\n let dateValue: Date | undefined;\n if (config.validationType === 'date' || config.validationType === 'date-time') {\n dateValue = value ? new Date(value.toString()) : new Date();\n value ??= getISODateString(\n dateValue,\n config.validationType === 'date' || config.datepickerConfig?.disabledTime\n ? 'date'\n : 'date-time',\n this.locale\n );\n }\n\n return {\n value: {\n name: c.name,\n value,\n ...(dateValue ? { dateValue } : {}),\n ...(c.operator ? { operator: c.operator } : {})\n },\n config\n };\n }) ?? [];\n this.lastEmittedSearchCriteria = this.searchCriteria();\n this.allowedCriteriaCache = undefined;\n }\n\n /**\n * Deletes all currently selected criteria and effectively resets the filtered search.\n */\n deleteAllCriteria(event?: MouseEvent): void {\n if (this.isReadOnly()) {\n return;\n }\n event?.stopPropagation();\n\n // Reset search criteria\n this.values = [];\n this.searchValue = '';\n this.emitChangeEvent();\n this.allowedCriteriaCache = undefined;\n this.typeaheadInputChange.next(this.searchValue);\n this.submit();\n }\n\n protected deleteCriterion(\n criterion: CriterionValue,\n index: number,\n event: { triggerSearch: boolean } | void\n ): void {\n if (this.isReadOnly()) {\n return;\n }\n\n // Close any active overlays before deleting the criterion\n // This could happen in case when user has opened a multiselect pill\n // and then clicks on clear button of other pill.\n this.valueComponents().forEach(component => {\n component.closeOverlay();\n });\n this.cdRef.detectChanges();\n\n this.values = this.values.filter(v => v.value !== criterion);\n this.emitChangeEvent();\n this.allowedCriteriaCache = undefined;\n if (this.values.length !== index) {\n this.valueComponents()[index + 1].edit('value');\n } else {\n this.freeTextInputElement().nativeElement.focus();\n }\n this.typeaheadInputChange.next(this.searchValue);\n if (event?.triggerSearch) {\n this.submit();\n }\n }\n\n protected submit(): void {\n if (!this.doSearchOnInputChange()) {\n this.doSearch.emit(this.searchCriteria()!);\n }\n }\n\n protected typeaheadOnSelectCriterion(event: TypeaheadOption): void {\n const criterion = event as InternalCriterionDefinition;\n\n // Timeout is needed otherwise siTypeahead will overwrite the value\n setTimeout(() => {\n // Removes the focus border before creating a new criterion to prevent the impression of jumping content.\n this.freeTextInputElement().nativeElement.blur();\n this.searchValue = '';\n this.addCriterion(criterion);\n // The user selected a criterion so we remove the free text search value and add the criterion.\n this.allowedCriteriaCache = undefined;\n this.typeaheadInputChange.next('');\n }, 0);\n }\n\n protected validateCriterionLabel(criterion: InternalCriterionDefinition): boolean {\n if (!this.strictCriterionOrValue()) {\n return true;\n }\n return this.internalCriterionDefinitions.includes(criterion);\n }\n\n /**\n * Converts the internally used data model to the external model.\n * In case options for Criterion is Option[] map to the value from the label.\n */\n private convertToExternalModel(): SearchCriteria {\n const correctedCriteria: SearchCriteria = {\n value: this.searchValue,\n criteria: this.values.map(v => v.value)\n };\n if (this.disableFreeTextSearch()) {\n correctedCriteria.value = '';\n }\n return correctedCriteria;\n }\n\n private addCriterion(config: InternalCriterionDefinition, value?: string): void {\n if (config.multiSelect) {\n this.values = [...this.values, { value: { value: [], name: config.name }, config }];\n } else if (config.validationType === 'date' || config.validationType === 'date-time') {\n this.values = [\n ...this.values,\n {\n value: {\n dateValue: new Date(),\n value: getISODateString(new Date(), config.validationType, this.locale),\n name: config.name\n },\n config\n }\n ];\n } else {\n this.values = [...this.values, { value: { value: value ?? '', name: config.name }, config }];\n }\n\n this.autoEditCriteria = true;\n this.emitChangeEvent();\n }\n\n /**\n * Get criteria list to be shown in typeahead.\n * @param token - input field value.\n * @returns list of criteria to be shown in typeahead.\n */\n private getFilteredTypeaheadCriteria(token: string): InternalCriterionDefinition[] {\n if (this.maxCriteria() === undefined || this.values.length < this.maxCriteria()!) {\n const allowedCriteria = !this.exclusiveCriteria()\n ? this.internalCriterionDefinitions\n : differenceByName(this.internalCriterionDefinitions, this.values);\n\n if (allowedCriteria.length > 0 && !this.allowedCriteriaCache) {\n // Call interceptor to allow applications to customize the list of available criteria\n const available = allowedCriteria.map(c => c.name);\n // Ensure that all entries are allowed in case the consumer doesn't use the allow callback\n this.allowedCriteriaCache = available;\n this.interceptDisplayedCriteria.emit({\n criteria: available,\n searchCriteria: this.convertToExternalModel(),\n allow: criteriaNamesToDisplay => {\n if (criteriaNamesToDisplay) {\n this.allowedCriteriaCache = criteriaNamesToDisplay;\n }\n }\n });\n }\n\n return allowedCriteria.filter(c => this.allowedCriteriaCache?.includes(c.name));\n } else {\n return [];\n }\n }\n\n private getCriteriaToDisplayFromSubscription(\n result: CriterionDefinition[]\n ): InternalCriterionDefinition[] {\n this.lazyLoadedCriteria.set(result);\n this.internalCriterionDefinitions = this.loadedCriteria().map(c => toInternalCriteria(c));\n // It's necessary to update the criteria configuration since consuming applications may change the options.\n // A common case are criteria which depend on each other like Country, Site and Building. If the user change\n // the site the building options might become invalid.\n // KEEP THE REFERENCE, otherwise CD is broken\n this.values = this.values.map(v =>\n Object.assign(v, {\n value: v.value,\n config: this.internalCriterionDefinitions.find(ic => ic.name === v.config.name) ?? v.config\n })\n );\n\n if (this.maxCriteria() === undefined || this.values.length < this.maxCriteria()!) {\n return !this.exclusiveCriteria()\n ? this.internalCriterionDefinitions\n : differenceByName(this.internalCriterionDefinitions, this.values);\n }\n\n return [];\n }\n\n protected freeTextFocus(): void {\n // Ensure that the free text input is fully visible in the scroll container\n const scrollDirection = isRTL() ? -1 : 1;\n const position = scrollDirection * this.scrollContainer().nativeElement.scrollWidth;\n this.scrollContainer().nativeElement.scrollLeft = position;\n this.typeaheadInputChange.next(this.freeTextInputElement().nativeElement.value);\n }\n\n protected freeTextBackspace(event: Event): void {\n if (!(event.target as HTMLInputElement).value) {\n // edit last criterion if a user presses backspace in empty search input.\n const valueComponents = this.valueComponents();\n if (valueComponents.length) {\n valueComponents[valueComponents.length - 1].edit('value');\n }\n }\n }\n\n protected freeTextInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n\n const match = value.match(SiFilteredSearchComponent.criterionRegex);\n if (!this.disableSelectionByColonAndSemicolon() && !this.onlySelectValue() && match) {\n const criterionName = match[1];\n if (this.searchValue === '') {\n // The value was empty before, so we must make angular detect a change here.\n // Otherwise, the entire value which was pasted will remain in the input.\n // This happens if the user pasts something like: 'key:value'\n this.searchValue = value;\n this.cdRef.detectChanges();\n }\n this.searchValue = '';\n this.allowedCriteriaCache = undefined;\n\n const nameLowerCase = criterionName.toLocaleLowerCase();\n const criterion = this.internalCriterionDefinitions.find(\n ic => ic.translatedLabel.toLocaleLowerCase() === nameLowerCase\n ) ?? {\n name: criterionName,\n label: criterionName,\n translatedLabel: criterionName\n };\n\n this.typeaheadInputChange.next('');\n this.addCriterion(criterion, match[2]);\n } else {\n this.searchValue = value;\n\n if (!this.disableFreeTextSearch()) {\n this.emitChangeEvent();\n }\n\n this.typeaheadInputChange.next(value);\n }\n }\n\n protected valueChange(\n value: CriterionValue,\n criterion: { config: InternalCriterionDefinition; value: CriterionValue }\n ): void {\n criterion.value = value;\n this.emitChangeEvent();\n }\n\n protected focusNext(index: number, event: { freeText: string } | void): void {\n const next = this.valueComponents()[index + 1];\n if (next) {\n next.edit();\n } else {\n this.searchValue = event?.freeText ?? this.searchValue;\n this.freeTextInputElement().nativeElement.focus();\n }\n }\n\n private updateAndEmitSearchCriteria(): void {\n this.searchCriteria.set(this.convertToExternalModel());\n this.lastEmittedSearchCriteria = this.searchCriteria();\n }\n\n private emitChangeEvent(): void {\n this.updateAndEmitSearchCriteria();\n if (this.doSearchOnInputChange()) {\n this.searchEmitQueue.next(this.searchCriteria());\n }\n }\n}\n","<div\n #scrollContainer\n class=\"search-container d-flex align-items-center overflow-auto py-2 w-100 ps-2 pe-2\"\n>\n @for (criterion of values; track criterion) {\n <si-filtered-search-value\n [editOnCreation]=\"autoEditCriteria\"\n [definition]=\"criterion.config\"\n [value]=\"criterion.value\"\n [invalidCriterion]=\"!validateCriterionLabel(criterion.config)\"\n [disabled]=\"disabled()\"\n [clearButtonLabel]=\"clearButtonLabel()\"\n [disableSelectionByColonAndSemicolon]=\"disableSelectionByColonAndSemicolon()\"\n [isStrictOrOnlySelectValue]=\"isStrictOrOnlySelectValue()\"\n [itemCountText]=\"itemCountText()\"\n [lazyValueProvider]=\"lazyValueProvider()\"\n [maxCriteriaOptions]=\"maxCriteriaOptions()\"\n [optionsInScrollableView]=\"optionsInScrollableView()\"\n [readonly]=\"readonly()\"\n [searchLabel]=\"searchLabel()\"\n [onlySelectValue]=\"onlySelectValue()\"\n [searchDebounceTime]=\"searchDebounceTime()\"\n (submitCriterion)=\"focusNext($index, $event)\"\n (deleteCriterion)=\"deleteCriterion(criterion.value, $index, $event)\"\n (valueChange)=\"valueChange($event, criterion)\"\n />\n }\n <!-- criterion input -->\n <input\n #freeTextInputElement\n type=\"text\"\n class=\"value-input ps-2 me-2 flex-grow-1\"\n typeaheadOptionField=\"translatedLabel\"\n [siTypeahead]=\"dataSource\"\n [typeaheadMinLength]=\"readonly() ? 1 : 0\"\n [typeaheadOptionsLimit]=\"typeaheadOptionsLimit()\"\n [typeaheadScrollable]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionsInScrollableView()\"\n [typeaheadAutoSelectIndex]=\"searchValue ? 0 : -1\"\n [readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"searchLabel() | translate\"\n [value]=\"searchValue\"\n (focus)=\"freeTextFocus()\"\n (input)=\"freeTextInput($event)\"\n (keydown.backspace)=\"freeTextBackspace($event)\"\n (keydown.enter)=\"submit()\"\n (typeaheadOnSelect)=\"typeaheadOnSelectCriterion($event.option)\"\n />\n</div>\n<!-- clear all searchCriteria -->\n@if ((values.length || searchValue.length) && !readonly()) {\n <div class=\"clear-button-container\">\n <button\n type=\"button\"\n class=\"btn btn-circle btn-xs btn-ghost mx-2\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"clearButtonLabel() | translate\"\n (click)=\"deleteAllCriteria($event)\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n </div>\n}\n\n@if (!disabled()) {\n <button\n type=\"button\"\n class=\"search-button btn btn-circle btn-xs btn-secondary focus-inside\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"submitButtonLabel() | translate\"\n (click)=\"submit()\"\n >\n <si-icon [icon]=\"icons.elementSearch\" />\n </button>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiFilteredSearchComponent } from './si-filtered-search.component';\n\n@NgModule({\n imports: [SiFilteredSearchComponent],\n exports: [SiFilteredSearchComponent]\n})\nexport class SiFilteredSearchModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-filtered-search.component';\nexport * from './si-filtered-search.model';\nexport * from './si-filtered-search.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -311,6 +311,8 @@ const elementAlarmFilled = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.or
|
|
|
311
311
|
const elementAlarmTick = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M427.72 116.64 279.19 277.47l-73.9-73.9a12 12 0 0 0-17 17l82.73 82.73a12 12 0 0 0 8.48 3.51h.24a12 12 0 0 0 8.58-3.86l157-170a12 12 0 0 0-17.63-16.28Z'/></svg>";
|
|
312
312
|
const elementUser = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M256 252a76 76 0 1 0-76-76 76.08 76.08 0 0 0 76 76Zm0-128a52 52 0 1 1-52 52 52.06 52.06 0 0 1 52-52ZM124 360.14a12 12 0 0 0 6.71-2.06c.61-.41 61.54-41.08 126.14-41.08 75.3 0 122.86 39.84 123.3 40.23a12 12 0 0 0 15.68-18.18c-2.19-1.88-54.39-46.05-139-46.05C185 293 120 336.35 117.28 338.19a12 12 0 0 0 6.72 21.95Z'/></svg>";
|
|
313
313
|
const elementHelp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M256 64C150.13 64 64 150.13 64 256s86.13 192 192 192 192-86.13 192-192S361.87 64 256 64Zm0 360c-92.64 0-168-75.36-168-168S163.36 88 256 88s168 75.36 168 168-75.36 168-168 168Z'/><path d='M256 305a12 12 0 0 1-12-12v-29.22a12 12 0 0 1 6.51-10.67 11.63 11.63 0 0 1 1.67-.71c1.14-.4 38.54-14.05 38.54-36.4a36 36 0 0 0-70-12 12 12 0 1 1-22.64-8 60 60 0 0 1 116.6 20c0 31-31.39 48.92-46.72 55.84V293A12 12 0 0 1 256 305ZM256.11 360h-.22a16 16 0 0 1 0-32h.22a16 16 0 0 1 0 32Z'/></svg>";
|
|
314
|
+
const elementPinch = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M248.46 275.15c0-.19-.05-.37-.07-.55s-.06-.41-.1-.61a6 6 0 0 0-.15-.61c0-.18-.08-.36-.13-.53s-.14-.39-.2-.58-.13-.36-.2-.53-.16-.35-.24-.53-.17-.36-.26-.53-.19-.33-.29-.49-.2-.35-.32-.52-.25-.35-.38-.52-.2-.29-.32-.43c-.24-.29-.5-.58-.77-.85-.28-.27-.56-.52-.86-.77-.14-.12-.29-.22-.44-.33l-.5-.37-.53-.32-.48-.28c-.18-.1-.37-.18-.55-.27l-.51-.23c-.18-.08-.37-.14-.55-.21l-.56-.19-.56-.15-.58-.14-.66-.1-.5-.07a11.85 11.85 0 0 0-1.19-.06h-120a12 12 0 0 0 0 24h91L108 387.84a12 12 0 1 0 17 17l99.51-99.51v91a12 12 0 0 0 24 0v-120a10.88 10.88 0 0 0-.05-1.18ZM405.1 106.75a12 12 0 0 0-17 0l-99.51 99.51v-91a12 12 0 0 0-24 0v120a10.88 10.88 0 0 0 .06 1.14c0 .18.05.36.08.54s.05.41.09.62.1.4.15.6.08.36.14.54.13.38.2.58.12.35.19.52.17.36.25.53.16.36.26.54.19.33.29.49.2.35.31.52l.38.51.32.43c.25.3.5.58.77.86.27.27.56.53.85.77l.44.33a6 6 0 0 0 .51.37 5.74 5.74 0 0 0 .53.32l.47.29.55.26c.17.08.34.17.52.24l.54.2c.19.07.37.14.57.2l.54.14.6.14.63.1c.17 0 .35.06.53.07a11.66 11.66 0 0 0 1.18.06h120a12 12 0 0 0 0-24h-91l99.51-99.51a12 12 0 0 0 .05-16.91Z'/></svg>";
|
|
315
|
+
const elementZoom = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M423.94 98.82c0-.19-.05-.37-.08-.55s-.05-.41-.09-.61-.1-.41-.15-.61a4.58 4.58 0 0 0-.14-.53c-.06-.2-.13-.39-.2-.58s-.12-.36-.19-.53-.16-.35-.25-.53-.16-.36-.26-.54-.19-.32-.29-.48-.2-.35-.31-.52-.25-.35-.38-.52l-.32-.43c-.24-.29-.5-.58-.77-.85s-.56-.53-.85-.77l-.44-.33c-.17-.12-.33-.25-.51-.37l-.53-.32-.47-.28c-.18-.1-.37-.18-.56-.27l-.51-.24-.55-.2-.55-.19c-.19-.06-.38-.1-.57-.15l-.57-.14-.67-.1-.49-.07q-.6-.06-1.2-.06H308a12 12 0 0 0 0 24h75l-100.82 100.8a12 12 0 0 0 17 17L400 129v75a12 12 0 0 0 24 0V100a10.88 10.88 0 0 0-.06-1.18ZM212.85 282.18 112 383v-75a12 12 0 0 0-24 0v104a10.88 10.88 0 0 0 .06 1.14c0 .19 0 .37.08.55s0 .41.09.61.1.41.15.61a4.58 4.58 0 0 0 .14.53c.06.2.13.39.2.58s.12.36.19.53.17.35.25.53.16.36.26.54.19.32.29.48.2.35.31.52.25.35.38.52l.32.43c.24.29.5.58.77.85s.56.53.85.77l.44.33c.17.12.33.25.51.37l.52.32.48.28c.18.1.37.18.55.27l.52.24.54.19c.19.07.37.14.57.2a5.36 5.36 0 0 0 .54.14c.2.05.39.11.6.15s.42.06.63.09l.53.08a11.51 11.51 0 0 0 1.23.15h104a12 12 0 0 0 0-24h-75l100.82-100.85a12 12 0 1 0-17-17Z'/></svg>";
|
|
314
316
|
|
|
315
317
|
/**
|
|
316
318
|
* Copyright (c) Siemens 2016 - 2025
|
|
@@ -468,5 +470,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
468
470
|
* Generated bundle index. Do not edit.
|
|
469
471
|
*/
|
|
470
472
|
|
|
471
|
-
export { STATUS_ICON_CONFIG, SiIconComponent, SiIconLegacyComponent, SiIconModule, SiStatusIconComponent, addIcons, element2dEditor, elementAlarmFilled, elementAlarmTick, elementBreadcrumbRoot, elementCalendar, elementCancel, elementChecked, elementCheckedFilled, elementCircleFilled, elementDelete, elementDocument, elementDoubleLeft, elementDoubleRight, elementDown2, elementExport, elementFavorites, elementFavoritesFilled, elementHelp, elementHide, elementLeft2, elementLeft3, elementLeft4, elementLock, elementMenu, elementMinus, elementNotChecked, elementOctagonFilled, elementOk, elementOptionsVertical, elementOutOfService, elementPlus, elementRadioChecked, elementRecordFilled, elementRedo, elementRight2, elementRight3, elementRight4, elementSearch, elementShow, elementSortDown, elementSortUp, elementSoundMute, elementSoundOn, elementSquare45Filled, elementSquareFilled, elementStateExclamationMark, elementStateInfo, elementStatePause, elementStateProgress, elementStateQuestionMark, elementStateTick, elementThumbnails, elementTriangleFilled, elementUpload, elementUser, elementWarningFilled, provideIconConfig };
|
|
473
|
+
export { STATUS_ICON_CONFIG, SiIconComponent, SiIconLegacyComponent, SiIconModule, SiStatusIconComponent, addIcons, element2dEditor, elementAlarmFilled, elementAlarmTick, elementBreadcrumbRoot, elementCalendar, elementCancel, elementChecked, elementCheckedFilled, elementCircleFilled, elementDelete, elementDocument, elementDoubleLeft, elementDoubleRight, elementDown2, elementExport, elementFavorites, elementFavoritesFilled, elementHelp, elementHide, elementLeft2, elementLeft3, elementLeft4, elementLock, elementMenu, elementMinus, elementNotChecked, elementOctagonFilled, elementOk, elementOptionsVertical, elementOutOfService, elementPinch, elementPlus, elementRadioChecked, elementRecordFilled, elementRedo, elementRight2, elementRight3, elementRight4, elementSearch, elementShow, elementSortDown, elementSortUp, elementSoundMute, elementSoundOn, elementSquare45Filled, elementSquareFilled, elementStateExclamationMark, elementStateInfo, elementStatePause, elementStateProgress, elementStateQuestionMark, elementStateTick, elementThumbnails, elementTriangleFilled, elementUpload, elementUser, elementWarningFilled, elementZoom, provideIconConfig };
|
|
472
474
|
//# sourceMappingURL=siemens-element-ng-icon.mjs.map
|