{"version":3,"file":"yuuvis-client-framework-forms.mjs","sources":["../../../../../libs/yuuvis/client-framework/forms/src/lib/forms.utils.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/catalog/catalog.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/catalog/catalog.component.html","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/data-grid/edit-table-data/edit-data.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/data-grid/edit-table-data/edit-data.component.html","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/data-grid/model/data-grid.interface.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/data-grid/data-grid/data-grid.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/data-grid/data-grid/data-grid.component.html","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/datetime/datetime.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/datetime/datetime.component.html","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/datetime-range/datetime-range.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/datetime-range/datetime-range.component.html","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/dynamic-catalog/dynamic-catalog.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/dynamic-catalog/dynamic-catalog.component.html","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/i18n-catalog/i18n-catalog.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/i18n-catalog/i18n-catalog.component.html","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/number/number.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/number-range/number-range.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/number-range/number-range.component.html","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/organization-set/organization-set.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/organization-set/organization-set.component.html","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/organization/organization.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/organization/organization.component.html","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/range-select-date/date-range-picker/date-range-picker.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/range-select-date/date-range-picker/date-range-picker.component.html","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/range-select-date/range-select-date.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/range-select-date/range-select-date.component.html","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/range-select-filesize/range-select-filesize.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/range-select-filesize/range-select-filesize.component.html","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/string/string.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/string/string.component.html","../../../../../libs/yuuvis/client-framework/forms/src/lib/forms.module.ts","../../../../../libs/yuuvis/client-framework/forms/src/yuuvis-client-framework-forms.ts"],"sourcesContent":["import { AbstractControl } from \"@angular/forms\";\n\nexport class FormUtils {\n\n    static getErrorState(control: AbstractControl ) {\n        return control.invalid && (control.dirty || control.touched);\n    }\n}","import { Component, DestroyRef, effect, inject, input, OnDestroy, OnInit, signal, untracked } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { Classification, ClassificationEntry, SystemService, TranslateService } from '@yuuvis/client-core';\nimport { AbstractMatFormField, injectNgControl } from '@yuuvis/client-framework/common';\nimport { FormUtils } from '../../forms.utils';\n\n@Component({\n  selector: 'yuv-catalog',\n  imports: [MatSelectModule, ReactiveFormsModule],\n  templateUrl: './catalog.component.html',\n  styleUrl: './catalog.component.scss',\n  providers: [{ provide: MatFormFieldControl, useExisting: CatalogComponent }]\n})\nexport class CatalogComponent\n  extends AbstractMatFormField<string | string[]>\n  implements ControlValueAccessor, OnInit, OnDestroy\n{\n  #system = inject(SystemService);\n  #dRef = inject(DestroyRef);\n  #translate = inject(TranslateService);\n\n  readonly = input<boolean>(false);\n\n  multiple = input<boolean>(false);\n\n  _options = signal<\n    {\n      label: string;\n      value: string;\n    }[]\n  >([]);\n  options = input<string[]>([]);\n  /**\n   * Additional semantics for the form element.\n   */\n  classifications = input<string[]>([]);\n\n  /**\n   * Possibles values are `EDIT` (default),`SEARCH`,`CREATE`. In search situation validation\n   * of the form element will be turned off, so you are able to enter search terms that do not\n   * meet the elements validators.\n   */\n  situation = input<string>();\n\n  override ngControl = injectNgControl(this);\n  readonly formCtrl = new FormControl<string | string[] | undefined>(undefined);\n\n  #optionsEffect = effect(() => {\n    untracked(() => {\n      this.#setOptions(this.options() || [], false);\n    });\n  });\n\n  #classificationEffect = effect(() => {\n    const cls = this.classifications();\n\n    untracked(() => {\n      const cle: ClassificationEntry | undefined = this.#system\n        .getClassifications(cls)\n        .get(Classification.STRING_CATALOG);\n      if (cle?.options) {\n        this.#setOptions(cle.options, false);\n      }\n    });\n  });\n\n  #onValueChange(val: string | string[]): void {\n    this.value = val;\n    this.propagateChange(this.value);\n  }\n\n  #setOptions(options: string[], translate: boolean): void {\n    if (translate) {\n      this._options.set(\n        options.map((opt) => ({\n          label: this.#translate.instant(opt),\n          value: opt\n        }))\n      );\n    } else {\n      this._options.set(\n        options.map((opt) => ({\n          label: opt,\n          value: opt\n        }))\n      );\n    }\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  propagateChange = (_: any): void => {};\n\n  writeValue(value: string | string[]): void {\n    this.value = value;\n    this.formCtrl.setValue(value, { emitEvent: false });\n  }\n\n  // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  registerOnTouched(): void {}\n\n  setDisabledState?(isDisabled: boolean): void {\n    if (isDisabled) {\n      this.formCtrl.disable();\n    } else {\n      this.formCtrl.enable();\n    }\n    this.disabled = isDisabled;\n  }\n\n  ngOnInit(): void {\n    if (this.required) this.formCtrl.setValidators(Validators.required);\n    this.formCtrl.statusChanges.pipe(takeUntilDestroyed(this.#dRef)).subscribe(() => {\n      this.errorState = FormUtils.getErrorState(this.formCtrl);\n      if (this.ngControl?.control) {\n        this.ngControl.control.setErrors(this.formCtrl.errors);\n      }\n    });\n    this.formCtrl.updateValueAndValidity();\n    this.formCtrl.valueChanges\n      .pipe(takeUntilDestroyed(this.#dRef))\n      .subscribe((value) => this.#onValueChange(value as string | string[]));\n  }\n\n  ngOnDestroy(): void {\n    super.onNgOnDestroy();\n  }\n}\n","<mat-select [multiple]=\"multiple()\" [disabled]=\"readonly()\" [formControl]=\"formCtrl\">\n  @for (o of _options(); track o) {\n    <mat-option [value]=\"o.value\">{{ o.label }}</mat-option>\n  }\n</mat-select>\n","import { ChangeDetectionStrategy, Component, forwardRef, inject, input, OnInit, signal } from '@angular/core';\nimport {\n  AbstractControl,\n  FormBuilder,\n  FormGroup,\n  NG_VALUE_ACCESSOR,\n  ReactiveFormsModule,\n  ValidationErrors,\n  Validators\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { ObjectTypeField, Situation, SystemService, TranslatePipe } from '@yuuvis/client-core';\nimport { DialogComponent, FormTranslateService } from '@yuuvis/client-framework/common';\nimport { MetadataFormFieldComponent } from '@yuuvis/client-framework/metadata-form';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\n@Component({\n  selector: 'yuv-edit-table-data',\n  standalone: true,\n  imports: [\n    ReactiveFormsModule,\n    DialogComponent,\n    MatDialogModule,\n    MatButtonModule,\n    MatFormFieldModule,\n    MetadataFormFieldComponent,\n    TranslatePipe,\n    YmtButtonDirective\n  ],\n  templateUrl: './edit-data.component.html',\n  styleUrl: './edit-data.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => EditTableDataComponent),\n      multi: true\n    }\n  ]\n})\nexport class EditTableDataComponent<T = any> implements OnInit {\n  readonly #fb = inject(FormBuilder);\n  readonly #system = inject(SystemService);\n  readonly #errorMessage = inject(FormTranslateService);\n  #dialogData = inject<any>(MAT_DIALOG_DATA);\n  readonly #dialogRef = inject(MatDialogRef<EditTableDataComponent>);\n\n  errorMessage = signal<any[] | null>(null);\n  tableForm: FormGroup = this.#fb.group({});\n\n  isInnerTableForm = input(true);\n\n  formElement: { [key: string]: any } = this.#dialogData.formElement || {};\n  columns: ObjectTypeField[] = (this.formElement['elements'] || []).map((c: any) => ({\n    ...c,\n    propertyType: c.type,\n    _internalType: this.#system.getInternalFormElementType(c.type, c.classifications, c.catalog)\n  }));\n  #elementData: T = this.#dialogData.elementData || ({} as T);\n  situation: Situation = this.#dialogData.situation || Situation.EDIT;\n  header = this.#dialogData.label || '';\n  adding = this.#dialogData.adding;\n\n  cancel() {\n    this.#dialogRef.close(null);\n  }\n\n  submit() {\n    const data = this.tableForm.getRawValue();\n    Object.keys(data).forEach((key) => (data[key] === '' || data[key] === undefined) && (data[key] = null));\n    if (this.tableForm.valid && this.#dialogRef) this.#dialogRef.close(data);\n  }\n\n  ngOnInit() {\n    Object.values(this.formElement['elements']).forEach((element: any) => {\n      return this.tableForm.addControl(\n        element.name,\n        this.#fb.control({ value: '', disabled: element.readonly }, element.required ? Validators.required : null)\n      );\n    });\n    this.tableForm.setValidators(this.#globalErrorValidator());\n    this.#elementData && this.tableForm.patchValue(this.#elementData);\n\n    this.tableForm.valueChanges.subscribe((v) => {\n      this.errorMessage.set(\n        this.tableForm.errors\n          ? Object.keys(this.tableForm.errors).map((key) =>\n              this.tableForm.errors && this.tableForm.errors[key]\n                ? Object.keys(this.tableForm.errors[key]).map((k) => ({\n                    [key]: this.#errorMessage.getErrorLabel(k, key)\n                  }))\n                : null\n            )\n          : null\n      );\n    });\n  }\n\n  #globalErrorValidator() {\n    return (control: AbstractControl): ValidationErrors | null => {\n      const formGroup = control as FormGroup;\n      const errors: ValidationErrors = {};\n\n      Object.keys(formGroup.controls).forEach((key) => {\n        const control = formGroup.get(key);\n        if (control && control.invalid && control.dirty) {\n          const controlErrors = control.errors;\n          if (controlErrors) {\n            // Ignore 'required' error if there are more errors\n            if (Object.keys(controlErrors).length > 1 && controlErrors['required']) {\n              const { required, ...otherErrors } = controlErrors;\n              errors[key] = otherErrors;\n            } else {\n              errors[key] = controlErrors;\n            }\n          }\n        }\n      });\n\n      return Object.keys(errors).length ? errors : null;\n    };\n  }\n}\n","<yuv-dialog [headertitle]=\"(adding ? 'yuv.form.element.data.grid.add.headline' : 'yuv.form.element.data.grid.edit.headline') | translate: { headline: header }\">\n  <main>\n    <div [formGroup]=\"tableForm\">\n      <div class=\"fields\">\n        @for (element of columns; track $index) {\n          <div [attr.data-name]=\"element.name\" class=\"form-field\">\n            <yuv-metadata-form-field [field]=\"element\" [formControlName]=\"element.name\" [situation]=\"situation\"></yuv-metadata-form-field>\n          </div>\n        }\n      </div>\n    </div>\n  </main>\n\n  <footer>\n    <button ymtButton=\"secondary\" (click)=\"cancel()\">{{ 'yuv.form.element.data.grid.edit.cancel' | translate }}</button>\n    <button ymtButton=\"primary\" (click)=\"submit()\" [disabled]=\"!tableForm.dirty || !tableForm.valid\">\n      @if (adding) {\n        {{ 'yuv.form.element.data.grid.edit.add' | translate }}\n      } @else {\n        {{ 'yuv.object-metadata.button.save' | translate }}\n      }\n    </button>\n  </footer>\n</yuv-dialog>\n","export enum DataGridSizeType {\n  SMALL = 'small',\n  MEDIUM = 'medium',\n  LARGE = 'large',\n  XLARGE = 'extra-large',\n  AUTO = 'auto'\n}\n\nexport interface DataGridSize {\n  extralarge: DataGridSizeType.XLARGE;\n  large: DataGridSizeType.LARGE;\n  medium: DataGridSizeType.MEDIUM;\n  small: DataGridSizeType.SMALL;\n  auto: DataGridSizeType.AUTO;\n}\n\nexport interface DataGridData {\n  columnDef: string;\n  header: string;\n  type: string;\n  cell: (element: any) => any;\n}\n","import { NgClass } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  computed,\n  effect,\n  ElementRef,\n  forwardRef,\n  inject,\n  input,\n  linkedSignal,\n  signal,\n  untracked\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ObjectFormControl, Situation, SystemService, TranslatePipe, TranslateService } from '@yuuvis/client-core';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { MetadataFormFieldContext, ObjectMetadataElementLabelDirective } from '@yuuvis/client-framework/metadata-form';\nimport { RendererDirective } from '@yuuvis/client-framework/renderer';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\nimport { map, take, timer } from 'rxjs';\nimport { EditTableDataComponent } from '../edit-table-data/edit-data.component';\nimport { DataGridSizeType } from '../model/data-grid.interface';\n\nconst MATERIAL = [MatMenuModule, MatMenuTrigger, MatIconModule, MatButtonModule, MatTableModule, MatTooltipModule];\n\n@Component({\n  selector: 'yuv-data-grid',\n  standalone: true,\n  imports: [\n    NgClass,\n    TranslatePipe,\n    ...MATERIAL,\n    RendererDirective,\n    ObjectMetadataElementLabelDirective,\n    YmtIconButtonDirective\n  ],\n  templateUrl: './data-grid.component.html',\n  styleUrl: './data-grid.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DataGridComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => DataGridComponent),\n      multi: true\n    }\n  ],\n  host: {\n    class: 'yuv-data-grid',\n    '(focusout)': 'onHostFocusOut($event)'\n  }\n})\nexport class DataGridComponent implements ControlValueAccessor, Validator {\n  readonly #dialog = inject(MatDialog);\n  readonly #systemService = inject(SystemService);\n  readonly translate = inject(TranslateService);\n  readonly #cdRef = inject(ChangeDetectorRef);\n  readonly el = inject(ElementRef<HTMLElement>);\n\n  situation = input<Situation>(Situation.EDIT);\n\n  formElement = input<Record<string, any> | undefined>(undefined);\n  mappedFormElement = signal<Record<string, any> | undefined>(undefined);\n\n  formControl = input<any>(undefined);\n  classifications = input<string[]>([]);\n  readonly = input<boolean>(false);\n\n  // context to also apply form labels state (e.g. dirty, error) to the data grid label\n  formFieldContext = input<MetadataFormFieldContext>();\n\n  size = input<DataGridSizeType>(DataGridSizeType.AUTO);\n\n  dataSource = signal<any[]>([]);\n\n  tableLabel = computed(() => {\n    const formElement = this.formElement();\n    return formElement\n      ? this.#systemService.getLocalizedResource(`${formElement['name']}_label`)\n      : formElement && formElement['label'];\n  });\n\n  selectedRow = signal<unknown | null>(null);\n\n  isRequired = false;\n  isInvalid = false;\n  initalTableUpdate = true;\n\n  icons = {\n    add: YUV_ICONS.add,\n    more: YUV_ICONS.more\n  };\n\n  displayedColumnsWithActions = linkedSignal<boolean, string[]>({\n    source: this.readonly,\n    computation: (readonly, previous) => {\n      if (readonly) {\n        const idx = (previous?.value || []).findIndex((c) => c === 'actions');\n        if (idx && idx > -1) (previous?.value || []).splice(idx, 1);\n      }\n      return previous ? previous.value : [];\n    }\n  });\n\n  displayedColumns = linkedSignal<boolean, any[]>({\n    source: this.readonly,\n    computation: (readonly, previous) =>\n      readonly ? (previous?.value || []).filter((c: any) => c.columnDef !== 'actions') : previous?.value || []\n  });\n\n  #loadData = effect(() => {\n    const formElement = this.formElement();\n\n    // if the form element is created from the ObjectTypeField it contains 'columnDefinitions' instead of 'elements'\n    // therefore we need to map them here for proper table rendering\n    if (formElement && formElement['columnDefinitions']) {\n      // map columnDefinitions to elements for table rendering\n      formElement['elements'] = formElement['columnDefinitions'].map((colDef: any) => ({\n        ...colDef,\n        name: colDef.id,\n        label: this.#systemService.getLocalizedLabel(colDef.id) || colDef.id,\n        type: colDef.propertyType\n      }));\n    }\n    this.mappedFormElement.set(formElement);\n\n    const elements = formElement ? formElement['elements'] || [] : [];\n    let data = formElement ? formElement['value'] || [] : [];\n    const columns = elements.map((e: any) => e.name || e.id);\n\n    data = data.map((row: any) => {\n      if (Array.isArray(row)) {\n        const obj: Record<string, string> = {};\n        for (let i = 0; i < columns.length; i++) {\n          obj[columns[i]] = row[i];\n        }\n        return obj;\n      }\n      return row;\n    });\n    untracked(() => formElement && this.#updateTable(elements, data));\n  });\n\n  #sourceData = effect(() => {\n    const dataSource = this.dataSource();\n    !this.initalTableUpdate && this.writeValue(dataSource.filter((row) => !row.isAddRow));\n    this.initalTableUpdate = false;\n  });\n\n  #openEditOverlay(elementData: any | null, adding = false) {\n    return this.#dialog\n      .open(EditTableDataComponent, {\n        minWidth: '25%',\n        data: {\n          formElement: {\n            ...this.mappedFormElement()\n          },\n          elementData,\n          situation: this.situation(),\n          adding,\n          label: this.tableLabel()\n        }\n      })\n      .afterClosed()\n      .pipe(map((result: Record<string, unknown>) => result));\n  }\n\n  onMenuTrigger(element: unknown | null) {\n    this.selectedRow.set(element);\n  }\n\n  editRow(element: unknown) {\n    if (this.readonly()) return;\n    this.selectedRow.set(element);\n    this.#openEditOverlay(element).subscribe((result: any) => {\n      if (result) {\n        const updatedData = this.dataSource().map((item) =>\n          JSON.stringify(item) === JSON.stringify(element) ? result : item\n        );\n        const formElement = this.mappedFormElement();\n        formElement && this.#updateTable(formElement['elements'], [...updatedData]);\n      }\n      this.selectedRow.set(null);\n    });\n  }\n\n  addRow() {\n    this.#openEditOverlay(null, true).subscribe((result: any) => {\n      const currentData = this.dataSource();\n      const data = [...currentData];\n      if (result) {\n        data.push(result);\n        const formElement = this.mappedFormElement();\n        formElement && this.#updateTable(formElement['elements'], data);\n      }\n    });\n  }\n\n  removeRow(element: any) {\n    const updatedData = this.dataSource().filter((item) => JSON.stringify(item) !== JSON.stringify(element));\n    const formElement = this.mappedFormElement();\n    formElement && this.#updateTable(formElement['elements'], updatedData);\n  }\n\n  #updateTable(elements: any, data: any[] = []) {\n    if (elements.length > 0) {\n      const columns = elements.reduce((acc: any, el: any) => {\n        acc.push({\n          columnDef: el.name,\n          header: this.#systemService.getLocalizedLabel(el.name) || el.name,\n          type: el.type,\n          cell: (element: any) => ({\n            propertyName: el.name,\n            rendererType: this.#systemService.getInternalFormElementType(el.type, el.classifications, el.catalog),\n            value: element[el.name],\n            meta: element[el.name]\n          })\n        });\n        return acc;\n      }, []);\n      !this.readonly() && columns.push({ columnDef: 'actions', header: '', cell: () => '' });\n      this.displayedColumns.set(columns);\n    } else {\n      this.displayedColumns.set([]);\n    }\n\n    const displayedColumns = [...this.displayedColumns().map((col) => col.columnDef)];\n    this.displayedColumnsWithActions.set(displayedColumns);\n    this.dataSource.set(data);\n  }\n\n  propagateChange: (value: any) => void = () => {};\n  onTouched = () => {};\n\n  writeValue(obj: any): void {\n    this.propagateChange(obj);\n  }\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  setDisabledState?(isDisabled: boolean): void {\n    // console.log('setDisabledState: ', isDisabled);\n  }\n  onValueChange(e: any) {\n    this.propagateChange(e);\n  }\n\n  validate(control: ObjectFormControl) {\n    //Has to be delayed here because form init in object-form.component is also delayed\n    timer(300)\n      .pipe(take(1))\n      .subscribe(() => {\n        //There are multiple validators set on a formControl\n        //if there were a function reference available: const isRequired = Validators.required  - we could use control.hasValidator(isRequired)\n        //this.isRequired = control.hasValidator(Validators.required);\n        this.isRequired = !!control._eoFormElement?.required;\n        this.isInvalid = !!control.errors && (control.touched || control.dirty);\n        this.#cdRef.markForCheck();\n      });\n\n    return null;\n  }\n\n  onHostFocusOut(ev: FocusEvent) {\n    const next = ev.relatedTarget as Node | null;\n    const host = this.el.nativeElement;\n    if (next && host.contains(next)) return;\n    this.onTouched();\n  }\n}\n","<fieldset [attr.aria-required]=\"isRequired\" [attr.aria-invalid]=\"isInvalid\">\n  <legend class=\"ymt-hide-sr\">\n    {{ tableLabel() }}\n    @if (isRequired) {\n      *\n    }\n  </legend>\n  <header class=\"yuv-data-grid__header\">\n    <span\n      [yuvObjectMetadataElementLabel]=\"formFieldContext()\"\n      class=\"yuv-data-grid__header-title label\"\n      [ngClass]=\"{ 'yuv-data-grid__header-title--invalid': isInvalid }\"\n      aria-hidden=\"true\"\n    >\n      {{ tableLabel() }}\n      @if (isRequired) {\n        *\n      }\n    </span>\n\n    @if (!readonly()) {\n      <button ymtIconButton (click)=\"addRow()\" class=\"yuv-data-grid__header-action\" [matTooltip]=\"'yuv.form.element.data.grid.add-row.button.tooltip' | translate\">\n        <mat-icon>add</mat-icon>\n      </button>\n    }\n  </header>\n\n  @let displayedCol = displayedColumns();\n  @let displayedColActions = displayedColumnsWithActions();\n  @let data = dataSource();\n\n  <div class=\"yuv-data-grid__table\" [ngClass]=\"size()\">\n    <table mat-table [dataSource]=\"data\" class=\"mat-elevation-z8\">\n      <caption class=\"ymt-hide-sr\">\n        {{\n          tableLabel()\n        }}\n      </caption>\n\n      @for (column of displayedCol; track column) {\n        @if (column.columnDef === 'actions') {\n          <!-- <h1>Actions</h1> -->\n          <ng-container [matColumnDef]=\"column.columnDef\" stickyEnd>\n            <th mat-header-cell *matHeaderCellDef aria-label=\"row actions\"></th>\n            <td class=\"yuv-data-grid__cell--editable\" mat-cell *matCellDef=\"let element\">\n              <div class=\"yuv-data-grid__table-actions\">\n                <!-- Only show the button in the last (empty) row -->\n                <button ymtIconButton icon-button-size=\"small\" class=\"table-options-menu-bar-item\" [matMenuTriggerFor]=\"menu\" (click)=\"onMenuTrigger(element)\" [matTooltip]=\"'yuv.form.element.data.grid.row.button.actions.tooltip' | translate\"  >\n                  <mat-icon>more_vert</mat-icon>\n                </button>\n              </div>\n            </td>\n          </ng-container>\n        } @else {\n          <ng-container [matColumnDef]=\"column.columnDef\">\n            <th mat-header-cell *matHeaderCellDef [attr.aria-label]=\"column.header\" [title]=\"column.header\">{{ column.header }}</th>\n            <td\n              [ngClass]=\"{ 'number-cell': column.type === 'integer' || column.type === 'decimal', 'yuv-data-grid__cell--editable': !readonly() }\"\n              mat-cell\n              *matCellDef=\"let element\"\n            >\n              <ng-template *yuvRenderer=\"column.cell(element)\"></ng-template>\n            </td>\n          </ng-container>\n        }\n\n        <tr class=\"mat-row\" *matNoDataRow>\n          <td class=\"mat-cell no-data-cell\" [attr.colspan]=\"column.length\"></td>\n        </tr>\n      }\n\n      <tr mat-header-row *matHeaderRowDef=\"displayedColActions; sticky: ['header-1']\"></tr>\n\n      <tr (dblclick)=\"editRow(row)\" [class.selected-row]=\"row === selectedRow()\" mat-row *matRowDef=\"let row; columns: displayedColActions\"></tr>\n    </table>\n    @if (data.length === 0) {\n      <span class=\"no-data\">{{ 'yuv.form.element.data.grid.noData' | translate }}</span>\n    }\n  </div>\n</fieldset>\n<mat-menu #menu=\"matMenu\">\n  <button mat-menu-item (click)=\"editRow(selectedRow())\">{{ 'yuv.form.element.data.grid.edit' | translate }}</button>\n  <button mat-menu-item (click)=\"removeRow(selectedRow())\">{{ 'yuv.form.element.data.grid.remove' | translate }}</button>\n</mat-menu>\n","import { Component, DestroyRef, OnInit, effect, inject, input, signal, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { LangChangeEvent, TranslateService } from '@ngx-translate/core';\nimport { AbstractMatFormField, injectNgControl } from '@yuuvis/client-framework/common';\nimport { DatepickerComponent, DatepickerLabels, YuvDatepickerModule } from '@yuuvis/client-framework/datepicker';\nimport { FormUtils } from '../../forms.utils';\n@Component({\n  selector: 'yuv-datetime',\n  standalone: true,\n  imports: [ReactiveFormsModule, YuvDatepickerModule, MatInputModule, MatDatepickerModule],\n  templateUrl: './datetime.component.html',\n  styleUrl: './datetime.component.scss',\n  providers: [{ provide: MatFormFieldControl, useExisting: DatetimeComponent }]\n})\nexport class DatetimeComponent\n  extends AbstractMatFormField<Date | string | null>\n  implements ControlValueAccessor, OnInit\n{\n  private translate = inject(TranslateService);\n  #dRef = inject(DestroyRef);\n\n  pickerCmp = viewChild.required(DatepickerComponent);\n\n  labels?: DatepickerLabels;\n  override ngControl = injectNgControl(this);\n  fc = new FormControl<Date | null>(null);\n\n  _locale = signal<string>(this.translate.getCurrentLang());\n  locale = input<string>(this.translate.getCurrentLang());\n  #localeEffect = effect(() => {\n    this._locale.set(this.locale() || this.translate.getCurrentLang());\n  });\n  /**\n   * Whether or not to allow only values in the future (default: false)\n   */\n  onlyFutureDates = input<boolean>(false);\n  /**\n   * Will prevent the input from being changed (default: false)\n   */\n  readonly = input<boolean>(false);\n  /**\n   * Whether to show the calendar icon that opens the date picker calendar (default: true)\n   */\n  calendar = input<boolean>(true);\n\n  /**\n   * Enables setting time as well (default: false)\n   */\n  withTime = input<boolean>(false);\n\n  openCalendar(): void {\n    this.pickerCmp().openCalendar();\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  propagateChange = (_: any) => {};\n\n  writeValue(value: string | Date): void {\n    if (typeof value === 'string') {\n      value = new Date(value);\n      this.#propagate(value);\n    } else if (value && !this.withTime()) {\n      // for resolution 'date' we have to re-propagate the value as a string\n      // in the format 'yyyy-MM-dd' like expected for resolution date\n      this.#propagate(value);\n    }\n    this.value = value || null;\n    // this.fc.setValue(this.value, { emitEvent: false });\n    this.fc.patchValue(this.value, { emitEvent: false, onlySelf: true });\n  }\n\n  registerOnChange(fn: () => void): void {\n    this.propagateChange = fn;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  registerOnTouched(): void {}\n\n  setDisabledState?(isDisabled: boolean): void {\n    if (isDisabled) {\n      this.fc.disable();\n    } else {\n      this.fc.enable();\n    }\n    this.disabled = isDisabled;\n  }\n\n  onValueChange(e: any): void {\n    this.#propagate(e);\n  }\n\n  ngOnInit(): void {\n    this.focusHandled.set(true);\n    this.#setLabels();\n    this.translate.onLangChange.subscribe((evt: LangChangeEvent) => this._locale.set(evt.lang));\n    this.fc.valueChanges.pipe(takeUntilDestroyed(this.#dRef)).subscribe((value) => this.onValueChange(value));\n    this.fc.statusChanges.pipe(takeUntilDestroyed(this.#dRef)).subscribe(() => {\n      this.errorState = FormUtils.getErrorState(this.fc);\n      if (this.ngControl?.control) {\n        this.ngControl.control.setErrors(this.fc.errors);\n      }\n    });\n  }\n\n  #setLabels(): void {\n    this.labels = {\n      calendarApply: this.translate.instant('yuv.form.element.datetime.calendar.select'),\n      calendarCancel: this.translate.instant('yuv.form.element.datetime.calendar.cancel'),\n      shortcut: { today: this.translate.instant('yuv.form.element.datetime.calendar.today') }\n    };\n  }\n\n  #propagate(value: Date | null): void {\n    let propagateValue: Date | string | null = value;\n    if (propagateValue && !this.withTime()) {\n      // returns a string in the format 'yyyy-MM-dd' like expected for resolution date\n      const month = (propagateValue.getMonth() + 1).toString().padStart(2, '0');\n      const day = propagateValue.getDate().toString().padStart(2, '0');\n      propagateValue = `${propagateValue.getFullYear()}-${month}-${day}`;\n    }\n    this.propagateChange(propagateValue);\n  }\n}\n","<yuv-datepicker\n  [calendar]=\"calendar()\"\n  [disabled]=\"readonly()\"\n  [withTime]=\"withTime()\"\n  [locale]=\"_locale()\"\n  [labels]=\"labels!\"\n  [onlyFutureDates]=\"onlyFutureDates()\"\n  [formControl]=\"fc\"\n></yuv-datepicker>\n","\nimport { Component, DestroyRef, Input, OnDestroy, OnInit, inject, input, linkedSignal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  FormControl,\n  FormGroup,\n  FormsModule,\n  ReactiveFormsModule,\n  ValidationErrors,\n  ValidatorFn,\n  Validators\n} from '@angular/forms';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { Operator, OperatorLabel, RangeValue, Situation, Utils } from '@yuuvis/client-core';\nimport { AbstractMatFormField, injectNgControl } from '@yuuvis/client-framework/common';\nimport { DatetimeComponent } from '../datetime/datetime.component';\n\n@Component({\n  selector: 'yuv-datetime-range',\n  standalone: true,\n  imports: [FormsModule, MatDatepickerModule, MatSelectModule, ReactiveFormsModule, DatetimeComponent],\n  templateUrl: './datetime-range.component.html',\n  styleUrl: './datetime-range.component.scss',\n  providers: [{ provide: MatFormFieldControl, useExisting: DatetimeRangeComponent }]\n})\nexport class DatetimeRangeComponent extends AbstractMatFormField<RangeValue<Date | string>> implements ControlValueAccessor, OnInit, OnDestroy {\n  #dRef = inject(DestroyRef);\n\n  /**\n   * Enables setting time as well (default: false)\n   */\n  withTimeInput = input<boolean>(false, { alias: 'withTime' });\n\n  withTime = linkedSignal(this.withTimeInput);\n  /**\n   * Will prevent the input from being changed (default: false)\n   */\n  readonly = input<boolean>(false);\n  // TODO: this should be set by the form and not by the consumer of the component,\n  // otherwise there would be two sources of truth for the situation (one in the form and one in the component)\n  // also not used!!!!\n  operator = input<Operator>(Operator.EQUAL);\n  situation = input<string>();\n\n  private _isValid = true;\n  override ngControl = injectNgControl(this);\n\n  // options for search situation\n  availableSearchOptions = [\n    { label: OperatorLabel.EQUAL, value: Operator.EQUAL },\n    { label: OperatorLabel.GREATER_OR_EQUAL, value: Operator.GREATER_OR_EQUAL },\n    { label: OperatorLabel.LESS_OR_EQUAL, value: Operator.LESS_OR_EQUAL },\n    { label: OperatorLabel.INTERVAL_INCLUDE_BOTH, value: Operator.INTERVAL_INCLUDE_BOTH }\n  ];\n\n  public rangeForm = new FormGroup({\n    dateValue: new FormControl<Date | string | undefined>(undefined, { nonNullable: true, validators: [Validators.required] }),\n    operator: new FormControl<Operator>(this.availableSearchOptions[1].value, { nonNullable: true }),\n    dateValueFrom: new FormControl<Date | string | undefined>(undefined, { nonNullable: true })\n  });\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n  propagateChange = (_: any) => {};\n\n  #checkForEqualsRange(value: RangeValue<Date>) {\n    const firstDate = value.firstValue;\n    const secondDate = value.secondValue ? new Date(value.secondValue.getTime() - Utils.DEFAULT_TIME_OFFSET_V2) : undefined;\n    if (firstDate.getTime() === secondDate?.getTime()) {\n      return {\n        operator: Operator.EQUAL,\n        firstValue: value.firstValue,\n        secondValue: undefined\n      };\n    }\n    return value;\n  }\n\n  writeValue(value?: RangeValue<Date | string>): void {\n    let _value = value && Utils.getDateRangeFrom(value);\n    if (_value && (_value.firstValue || _value.secondValue)) {\n      _value = this.#checkForEqualsRange(_value);\n      this.value = _value;\n      const match = this.availableSearchOptions.find((o) => o.value === _value?.operator);\n\n      this.rangeForm.patchValue({\n        dateValueFrom: _value.secondValue && _value.firstValue,\n        operator: match ? match.value : this.availableSearchOptions[0].value,\n        dateValue: _value.secondValue || _value.firstValue\n      });\n    } else {\n      this.value = null;\n      this.rangeForm.reset();\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n  registerOnTouched(fn: any): void {}\n\n  #onValueChange() {\n    const dateValue = this.rangeForm.value.dateValue;\n    const operator = this.rangeForm.value.operator as Operator;\n\n    operator === Operator.EQUAL ? this.withTime.set(false) : this.withTime.set(true);\n\n    if (operator === Operator.INTERVAL_INCLUDE_BOTH) {\n      const dateValueFrom = this.rangeForm.value.dateValueFrom;\n\n      if (dateValueFrom && dateValue) {\n        this._isValid = this.rangeForm.valid;\n        this.value = !this._isValid\n          ? null\n          : {\n              operator,\n              firstValue: dateValueFrom,\n              secondValue: dateValue\n            };\n      }\n    } else if (dateValue) {\n      this._isValid = this.rangeForm.valid;\n      this.value = !this._isValid\n        ? null\n        : {\n            operator,\n            firstValue: dateValue,\n            secondValue: undefined\n          };\n    }\n\n    this.propagateChange(this.value);\n  }\n\n  #getValidator(): ValidatorFn {\n    return (control: AbstractControl): ValidationErrors | null => {\n      const operator = control.get('operator')?.value as Operator;\n      const dateValue = Utils.getDateFrom(control.get('dateValue')?.value);\n      const dateValueFrom = Utils.getDateFrom(control.get('dateValueFrom')?.value);\n\n      const singleValueOperators = new Set([Operator.EQUAL, Operator.GREATER_OR_EQUAL, Operator.LESS_OR_EQUAL]);\n      const rangeOperators = new Set([Operator.INTERVAL_INCLUDE_BOTH]);\n      if (this.situation() === Situation.SEARCH && !rangeOperators.has(operator)) return null;\n      if (singleValueOperators.has(operator)) {\n        if (!Utils.isValidDate(dateValue)) {\n          return {\n            datecontrol: {\n              valid: false\n            }\n          };\n        }\n      } else if (rangeOperators.has(operator)) {\n        if (!Utils.isValidDate(dateValue) || !Utils.isValidDate(dateValueFrom)) {\n          this._isValid = (!!dateValueFrom && dateValueFrom.getTime()) < (!!dateValue && dateValue.getTime());\n          if (this._isValid) return null;\n          return {\n            daterange: {\n              valid: false\n            }\n          };\n        }\n        if (dateValue && dateValueFrom && dateValue < dateValueFrom) {\n          return {\n            daterangeorder: {\n              valid: false\n            }\n          };\n        }\n      }\n      return null;\n    };\n  }\n\n  ngOnInit(): void {\n    this.rangeForm.setValidators(this.#getValidator());\n    this.rangeForm.statusChanges.pipe(takeUntilDestroyed(this.#dRef)).subscribe({\n      next: () => {\n        if (this.ngControl?.control) {\n          // this.errorState = this.situation() === Situation.SEARCH || this._isValid;\n          this.errorState = !!this.rangeForm.errors;\n          this.ngControl.control.setErrors(this.rangeForm.errors);\n        }\n      }\n    });\n    this.rangeForm.updateValueAndValidity();\n    this.rangeForm.valueChanges.subscribe(() => this.#onValueChange());\n  }\n\n  ngOnDestroy(): void {\n    super.onNgOnDestroy();\n  }\n}\n","<form [formGroup]=\"rangeForm\">\n  @if (rangeForm.value.operator === 'gtelte') {\n    <yuv-datetime [withTime]=\"withTime()\" formControlName=\"dateValueFrom\"></yuv-datetime>\n  }\n\n  <mat-select [panelWidth]=\"null\" [hideSingleSelectionIndicator]=\"true\" formControlName=\"operator\" [disabled]=\"readonly()\">\n    @for (o of availableSearchOptions; track $index) {\n      <mat-option [value]=\"o.value\">{{ o.label }}</mat-option>\n    }\n  </mat-select>\n\n  <yuv-datetime [withTime]=\"withTime()\" formControlName=\"dateValue\"></yuv-datetime>\n</form>\n","import {\n  Component,\n  computed,\n  DestroyRef,\n  effect,\n  inject,\n  input,\n  OnDestroy,\n  OnInit,\n  signal,\n  WritableSignal\n} from '@angular/core';\nimport { rxResource, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  FormControl,\n  ReactiveFormsModule,\n  ValidationErrors,\n  ValidatorFn,\n  Validators\n} from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { CatalogEntry, CatalogResult, CatalogService, TranslateService } from '@yuuvis/client-core';\nimport { AbstractMatFormField, injectNgControl } from '@yuuvis/client-framework/common';\nimport { map, of } from 'rxjs';\nimport { FormUtils } from '../../forms.utils';\n\ninterface DynamicCatalogOption {\n  value: string;\n  label: string;\n  disabled: boolean;\n  invalid?: boolean;\n}\n\ninterface SelectedDisplay {\n  value: string;\n  label: string;\n  invalid: boolean;\n}\n@Component({\n  selector: 'yuv-dynamic-catalog',\n  imports: [MatSelectModule, ReactiveFormsModule],\n  templateUrl: './dynamic-catalog.component.html',\n  styleUrl: './dynamic-catalog.component.scss',\n  providers: [{ provide: MatFormFieldControl, useExisting: DynamicCatalogComponent }]\n})\nexport class DynamicCatalogComponent\n  extends AbstractMatFormField<string | string[]>\n  implements ControlValueAccessor, OnInit, OnDestroy\n{\n  #catalogService = inject(CatalogService);\n  #dRef = inject(DestroyRef);\n  #translate = inject(TranslateService);\n\n  catalog = input.required<string>();\n  readonly = input<boolean>(false);\n  multiple = input<boolean>(false);\n\n  #currentLang = signal(this.#translate.getCurrentLang());\n  #ctrlValue = signal<string | string[] | null | undefined>(undefined);\n\n  #optionIsActiveValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n    const val = control.value;\n    if (val === null || val === undefined || val === '' || (Array.isArray(val) && val.length === 0)) return null;\n    const opts = this.options();\n    const values = Array.isArray(val) ? val : [val];\n    const hasInvalid = values.some((v) => {\n      const opt = opts.find((o) => o.value === v);\n      return !opt || opt.disabled || opt.invalid;\n    });\n    return hasInvalid ? { invalidValue: true } : null;\n  };\n\n  #optionsResource = rxResource<\n    DynamicCatalogOption[],\n    {\n      catalog: string;\n      situation: string | undefined;\n      locale: string;\n    }\n  >({\n    defaultValue: [],\n    params: computed(() => ({\n      catalog: this.catalog(),\n      situation: this.situation(),\n      locale: this.#currentLang()\n    })),\n    stream: ({ params }) =>\n      this.#catalogService\n        .getEntries(params.catalog, {\n          locale: params.locale,\n          includeInvalidEntries: true //params.situation === 'SEARCH' // include all entries in search situation\n        })\n        .pipe(\n          map((res: CatalogResult) =>\n            res.entries.map((entry) => ({\n              value: entry.name,\n              disabled: entry._state !== 'active', // disable entries that are not active\n              label: this.#resolveLabel(entry, params.locale)\n            }))\n          ),\n          map((res: DynamicCatalogOption[]) => {\n            const current = this.value;\n            const currentValues = Array.isArray(current) ? current : current ? [current as string] : [];\n            // pre-set values that are not part of the entries (e.g. deleted entry)\n            // get appended to the options list and marked as invalid.\n            for (const v of currentValues) {\n              if (!res.find((opt) => opt.value === v)) {\n                res.push({ value: v, disabled: true, invalid: true, label: v });\n              }\n            }\n            return res;\n          })\n        )\n  });\n\n  options: WritableSignal<DynamicCatalogOption[]> = this.#optionsResource.value;\n\n  selectedDisplay = computed<SelectedDisplay[]>(() => {\n    const val = this.#ctrlValue();\n    if (val === null || val === undefined || val === '') return [];\n    const opts = this.options();\n    const values = Array.isArray(val) ? val : [val];\n    return values.map((v) => {\n      const opt = opts.find((o) => o.value === v);\n      if (!opt) return { value: v, label: v, invalid: true };\n      return { value: v, label: opt.label, invalid: !!opt.invalid || !!opt.disabled };\n    });\n  });\n\n  /**\n   * Possibles values are `EDIT` (default),`SEARCH`,`CREATE`. In search situation\n   * validation of the form element will be turned off, so you are able to enter\n   * search terms that do not meet the elements validators.\n   */\n  situation = input<string>();\n\n  override ngControl = injectNgControl(this);\n  readonly ctrl = new FormControl<string | string[] | undefined>(undefined, this.#optionIsActiveValidator);\n\n  constructor() {\n    super();\n    this.#translate.onLangChange.pipe(takeUntilDestroyed()).subscribe((evt) => this.#currentLang.set(evt.lang));\n    // re-run validation once options have resolved (writeValue may run before the catalog response arrives).\n    // statusChanges is suppressed (emitEvent: false) to avoid a spurious value emission, so re-sync the\n    // host control and errorState explicitly — otherwise a stale { invalidValue: true } lingers on the host.\n    effect(() => {\n      this.options();\n      this.ctrl.updateValueAndValidity({ emitEvent: false });\n      this.errorState = FormUtils.getErrorState(this.ctrl);\n      this.ngControl?.control?.setErrors(this.ctrl.errors);\n    });\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/explicit-module-boundary-types\n  propagateChange = (fnc: any) => {};\n\n  writeValue(value: string | string[]): void {\n    this.value = value;\n    this.#ctrlValue.set(value);\n    this.ctrl.setValue(value, { emitEvent: false });\n  }\n\n  // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n  registerOnChange(fnc: any): void {\n    this.propagateChange = fnc;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  registerOnTouched(): void {}\n\n  setDisabledState(isDisabled: boolean): void {\n    if (isDisabled) {\n      this.ctrl.disable();\n    } else {\n      this.ctrl.enable();\n    }\n    this.disabled = isDisabled;\n  }\n\n  ngOnInit(): void {\n    const validators: ValidatorFn[] = [this.#optionIsActiveValidator];\n    if (this.required) validators.push(Validators.required);\n    // Mirror the parent FormControl's validators so the inner ctrl evaluates\n    // the same rules the host's NgControl does. Read lazily — picks up\n    // validators added after init.\n    validators.push((control) => this.ngControl?.control?.validator?.(control) ?? null);\n    this.ctrl.setValidators(validators);\n\n    this.ctrl.setAsyncValidators((control) => this.ngControl?.control?.asyncValidator?.(control) ?? of(null));\n\n    this.ctrl.statusChanges.pipe(takeUntilDestroyed(this.#dRef)).subscribe(() => {\n      this.errorState = FormUtils.getErrorState(this.ctrl);\n      if (this.ngControl?.control) {\n        this.ngControl.control.setErrors(this.ctrl.errors);\n      }\n    });\n    this.ctrl.updateValueAndValidity();\n    this.ctrl.valueChanges.pipe(takeUntilDestroyed(this.#dRef)).subscribe((value: any) => this.#onValueChange(value));\n  }\n\n  ngOnDestroy(): void {\n    super.onNgOnDestroy();\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  #onValueChange(val: any): void {\n    this.value = val;\n    this.#ctrlValue.set(val);\n    this.propagateChange(this.value);\n  }\n\n  #resolveLabel(entry: CatalogEntry, locale: string): string {\n    const locs = entry.localizations;\n    return locs.find((loc) => loc.locale === locale)?.label || locs[0]?.label || entry.name;\n  }\n}\n","<mat-select [multiple]=\"multiple()\" [disabled]=\"readonly()\" [formControl]=\"ctrl\">\n  <mat-select-trigger>\n    @if (multiple()) {\n      @for (s of selectedDisplay(); track s.value; let last = $last) {\n        <span [class.invalid]=\"s.invalid\">{{ s.label }}</span>@if (!last) {<span>, </span>}\n      }\n    } @else {\n      @if (selectedDisplay()[0]; as s) {\n        <span [class.invalid]=\"s.invalid\">{{ s.label }}</span>\n      }\n    }\n  </mat-select-trigger>\n  @for (o of options(); track o.value) {\n    <mat-option [disabled]=\"o.disabled\" [class.invalid]=\"o.invalid\" [value]=\"o.value\">{{ o.label }}</mat-option>\n  }\n</mat-select>\n","\nimport { Component, DestroyRef, effect, inject, input, OnDestroy, OnInit, signal, untracked } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { Classification, ClassificationEntry, SystemService, TranslateService } from '@yuuvis/client-core';\nimport { AbstractMatFormField, injectNgControl } from '@yuuvis/client-framework/common';\nimport { FormUtils } from '../../forms.utils';\n\n/**\n * Form element for selecting one or multiple i18n catalog values.\n * Having a classification of `i18n:catalog[one, two, three]` configured on the metadata field\n * will automatically populate the options from the catalog. The options will be translated\n * using the catalogs static values adding a prefix, the property name an the value itself.\n * E.g. for property name `status` and option value `open` the label key will be `catalog:status:open_label`.\n */\n@Component({\n  selector: 'yuv-i18n-catalog',\n  imports: [MatSelectModule, ReactiveFormsModule],\n  templateUrl: './i18n-catalog.component.html',\n  styleUrl: './i18n-catalog.component.scss',\n  providers: [{ provide: MatFormFieldControl, useExisting: I18nCatalogComponent }]\n})\nexport class I18nCatalogComponent extends AbstractMatFormField<string | string[]> implements ControlValueAccessor, OnInit, OnDestroy {\n  #system = inject(SystemService);\n  #dRef = inject(DestroyRef);\n  private readonly translate = inject(TranslateService);\n\n  readonly = input<boolean>(false);\n\n  multiple = input<boolean>(false);\n  propertyName = input<string | undefined>(undefined);\n\n  _options = signal<{ label: string; value: string }[]>([]);\n  options = input<string[]>([]);\n  #optionsEffect = effect(() => {\n    untracked(() => {\n      this.#setOptions(this.options());\n    });\n  });\n\n  /**\n   * Additional semantics for the form element.\n   */\n  classifications = input<string[]>([]);\n  #classificationEffect = effect(() => {\n    const cls = this.classifications();\n    untracked(() => {\n      const ce: ClassificationEntry | undefined = this.#system.getClassifications(cls).get(Classification.STRING_CATALOG_I18N);\n      if (ce && ce.options) {\n        this.#setOptions(ce.options);\n      }\n    });\n  });\n\n  /**\n   * Possibles values are `EDIT` (default),`SEARCH`,`CREATE`. In search situation validation of the form element will be turned off, so you are able to enter search terms that do not meet the elements validators.\n   */\n  situation = input<string>();\n\n  override ngControl = injectNgControl(this);\n  readonly fc = new FormControl<string | string[] | undefined>(undefined);\n\n  constructor() {\n    super();\n    this.translate.onLangChange.pipe(takeUntilDestroyed()).subscribe(() => {\n      // re-apply options to trigger translation\n      this.#setOptions(this.options());\n    });\n  }\n\n  #onValueChange(val: any) {\n    this.value = val;\n    this.propagateChange(this.value);\n  }\n\n  #setOptions(options: string[]) {\n    this._options.set(\n      options.map((o) => ({\n        label: this.#translateOption(o),\n        value: o\n      }))\n    );\n  }\n\n  #translateOption(option: string): string {\n    // labelkey: 'catalog:status:open_label' for option 'open'\n    // This will be derived fom a prefix the property name if available and this option itself\n    return this.#system.getLocalizedLabel(`catalog:${this.propertyName() || ''}:${option}`) || option;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  propagateChange = (_: any) => {};\n\n  writeValue(value: string | string[]): void {\n    this.value = value;\n    this.fc.setValue(value, { emitEvent: false });\n  }\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  registerOnTouched(fn: any): void {}\n\n  setDisabledState?(isDisabled: boolean) {\n    if (isDisabled) {\n      this.fc.disable();\n    } else {\n      this.fc.enable();\n    }\n    this.disabled = isDisabled;\n  }\n\n  ngOnInit(): void {\n    if (this.required) this.fc.setValidators(Validators.required);\n    this.fc.statusChanges.pipe(takeUntilDestroyed(this.#dRef)).subscribe((v) => {\n      this.errorState = FormUtils.getErrorState(this.fc);\n      if (this.ngControl?.control) {\n        this.ngControl.control.setErrors(this.fc.errors);\n      }\n    });\n    this.fc.updateValueAndValidity();\n    this.fc.valueChanges.pipe(takeUntilDestroyed(this.#dRef)).subscribe((v) => this.#onValueChange(v));\n  }\n\n  ngOnDestroy(): void {\n    super.onNgOnDestroy();\n  }\n}\n","<mat-select [multiple]=\"multiple()\" [disabled]=\"readonly()\" [formControl]=\"fc\">\n  @for (o of _options(); track o) {\n    <mat-option [value]=\"o.value\">{{ o.label }}</mat-option>\n  }\n</mat-select>","import { Component, computed, DestroyRef, effect, inject, input, OnDestroy, OnInit } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractControl, ControlValueAccessor, FormControl, ReactiveFormsModule, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { Classification, FileSizePipe, LocaleNumberPipe, TranslateService, Utils } from '@yuuvis/client-core';\nimport { AbstractMatFormField, injectNgControl } from '@yuuvis/client-framework/common';\nimport { FormUtils } from '../../forms.utils';\n\n/**\n * Creates form input for number values.\n *\n * Implements `ControlValueAccessor` so it can be used within Angular forms.\n *\n * @example\n * <yuv-number [scale]=\"2\"></yuv-number>\n *\n */\n@Component({\n  selector: 'yuv-number',\n  standalone: true,\n  imports: [ReactiveFormsModule],\n  template: '<input type=\"string\" [formControl]=\"innerCtrl\" (focus)=\"unformat()\" (blur)=\"format()\" [readonly]=\"readonly()\" />',\n  styleUrls: ['./number.component.scss'],\n  providers: [{ provide: MatFormFieldControl, useExisting: NumberComponent }]\n})\nexport class NumberComponent extends AbstractMatFormField<number> implements ControlValueAccessor, OnInit, OnDestroy {\n  #dRef = inject(DestroyRef);\n  readonly translate = inject(TranslateService);\n\n  // innerValue: string | null = null;\n  validationErrors: ValidationErrors[] = [];\n  transformPipe: LocaleNumberPipe | FileSizePipe = new LocaleNumberPipe(this.translate);\n  innerCtrl = new FormControl<string | null>(null);\n  override ngControl = injectNgControl(this);\n\n  /**\n   * Number of decimal places\n   */\n  scale = input<number | undefined>(undefined);\n  #scale = computed<number>(() => Math.min(this.scale() || 0, 30));\n\n  /**\n   * Overall amount of digits allowed (including decimal places)\n   */\n  precision = input<number | undefined>(undefined);\n  #precision = computed<number>(() => Math.min(this.precision() || 100, 100));\n\n  /**\n   *  Set to true to group number by pattern\n   */\n  grouping = input<boolean>(false);\n  #grouping = computed(() => this.grouping() ?? true);\n\n  /**\n   * The pattern to group number value by\n   */\n  groupPattern = input<string | undefined>(undefined);\n\n  /**\n   * Will prevent the input from being changed (default: false)\n   */\n  readonly = input<boolean>(false);\n\n  /**\n   * set minimum input value\n   */\n  minValue = input<number | undefined>(undefined);\n\n  /**\n   * set maximum input value\n   *\n   */\n  maxValue = input<number | undefined>(undefined);\n\n  /**\n   * classification property adds some semantics to the value of this component.\n   * If you provide a value of `filesize` numbers typed into the control will be\n   * handled like file sizes (calculates differnt units)\n   */\n  classifications = input<string[]>([]);\n  #classificationsEffect = effect(() => {\n    const classifications = this.classifications();\n    this.transformPipe =\n      classifications && classifications.includes(Classification.NUMBER_FILESIZE) ? new FileSizePipe(this.translate) : new LocaleNumberPipe(this.translate);\n  });\n\n  static betweenTwoNumbers(val: number, minVal: number | undefined, maxVal: number | undefined) {\n    const min = !Utils.isEmpty(minVal) ? minVal : -Infinity;\n    const max = !Utils.isEmpty(maxVal) ? maxVal : Infinity;\n    return val >= (min as number) && val <= (max as number);\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n  propagateChange = (_: any) => {};\n\n  writeValue(value: any): void {\n    this.value = value != null ? value : null;\n    const innerValue = value != null ? this.transformPipe.numberToString(value, this.#grouping(), this.groupPattern(), this.#scale()) : null;\n    this.innerCtrl.setValue(innerValue, { emitEvent: false });\n  }\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  registerOnTouched(): void {}\n\n  setDisabledState?(isDisabled: boolean) {\n    if (isDisabled) {\n      this.innerCtrl.disable();\n    } else {\n      this.innerCtrl.enable();\n    }\n    this.disabled = isDisabled;\n  }\n\n  // called when the input looses focus\n  format() {\n    if (!this.readonly() && typeof this.value === 'number' && this.validationErrors.length === 0) {\n      this.innerCtrl.patchValue(this.transformPipe.numberToString(this.value, this.#grouping(), this.groupPattern(), this.#scale()), { emitEvent: false });\n    }\n  }\n\n  // called when the input get focus\n  unformat() {\n    if (!this.readonly() && typeof this.value === 'number' && this.validationErrors.length === 0) {\n      this.innerCtrl.patchValue(this.transformPipe.transform(this.value, false), {\n        emitEvent: false\n      });\n    }\n  }\n\n  #getValidator(): ValidatorFn {\n    return (control: AbstractControl): ValidationErrors | null => {\n      this.validationErrors = [];\n      if (Utils.isEmpty(control.value)) return null;\n      const val = this.transformPipe.stringToNumber(control.value);\n      // general number validation\n      if (isNaN(val) || typeof val !== 'number') {\n        this.validationErrors.push({ key: 'number' });\n      } else {\n        const split = control.value.replaceAll(this.transformPipe.separator, '').split(this.transformPipe.decimalSeparator);\n        // check precision\n        if (this.#precision() !== undefined) {\n          const prePointDigits = this.#precision() - this.#scale();\n          if (split[0]?.length > prePointDigits) {\n            this.validationErrors.push({ key: 'precision', params: { prePointDigits } });\n          }\n        }\n        // check scale\n        if (this.#scale() && split[1]?.length > this.#scale()) {\n          this.validationErrors.push({ key: 'scale', params: { scale: this.#scale() } });\n        }\n\n        // min max\n        if (!NumberComponent.betweenTwoNumbers(val, this.minValue(), this.maxValue())) {\n          if (Utils.isEmpty(this.minValue())) {\n            this.validationErrors.push({ key: 'maxvalue', params: { maxValue: this.maxValue() } });\n          } else if (Utils.isEmpty(this.maxValue())) {\n            this.validationErrors.push({ key: 'minvalue', params: { minValue: this.minValue() } });\n          } else {\n            this.validationErrors.push({ key: 'minmax', params: { minValue: this.minValue(), maxValue: this.maxValue() } });\n          }\n        }\n      }\n      const e: ValidationErrors = Utils.arrayToObject(this.validationErrors, 'key', (err) => ({ valid: false, ...err }));\n      return this.validationErrors.length ? e : null;\n    };\n  }\n\n  ngOnInit(): void {\n    // set up validators once all inputs are set\n    const validators = [this.#getValidator()];\n    if (this.required) validators.push(Validators.required);\n\n    this.innerCtrl.setValidators(validators);\n    \n    this.innerCtrl.statusChanges.pipe(takeUntilDestroyed(this.#dRef)).subscribe((v) => {\n      this.errorState = FormUtils.getErrorState(this.innerCtrl);\n      if (this.ngControl?.control) {\n        this.ngControl.control.setErrors(this.innerCtrl.errors);\n      }\n    });\n    this.innerCtrl.updateValueAndValidity();\n    this.innerCtrl.valueChanges.pipe(takeUntilDestroyed(this.#dRef)).subscribe((v) => {\n      if (Utils.isEmpty(v)) {\n        this.value = null;\n        this.propagateChange(this.value);\n      } else {\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        const val = this.transformPipe.stringToNumber(v!);\n        if (this.validationErrors.length === 0 && this.value !== val) {\n          this.value = val;\n          this.propagateChange(this.value);\n        }\n      }\n    });\n  }\n\n  ngOnDestroy(): void {\n    super.onNgOnDestroy();\n  }\n}\n","import { Component, DestroyRef, inject, input, OnDestroy, OnInit } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  FormControl,\n  FormGroup,\n  FormsModule,\n  ReactiveFormsModule,\n  ValidationErrors,\n  ValidatorFn,\n  Validators\n} from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { Operator, OperatorLabel, RangeValue, Situation } from '@yuuvis/client-core';\nimport { AbstractMatFormField, injectNgControl } from '@yuuvis/client-framework/common';\nimport { FormUtils } from '../../forms.utils';\nimport { NumberComponent } from '../number/number.component';\n\n/**\n * Creates form input for ranges of numeric values.\n *\n * Implements `ControlValueAccessor` so it can be used within Angular forms.\n *\n * @example\n * <yuv-number-range [scale]=\"2\"></yuv-number-range>\n *\n */\n@Component({\n  selector: 'yuv-number-range',\n  standalone: true,\n  imports: [NumberComponent, MatSelectModule, FormsModule, ReactiveFormsModule],\n  templateUrl: './number-range.component.html',\n  styleUrls: ['./number-range.component.scss'],\n  providers: [{ provide: MatFormFieldControl, useExisting: NumberRangeComponent }]\n})\nexport class NumberRangeComponent\n  extends AbstractMatFormField<RangeValue>\n  implements ControlValueAccessor, OnInit, OnDestroy\n{\n  #dRef = inject(DestroyRef);\n\n  /**\n   * Number of decimal places\n   */\n  readonly scale = input<number | undefined>(undefined);\n  /**\n   * Overall amount of digits allowed (including decimal places)\n   */\n  readonly precision = input<number | undefined>(undefined);\n  /**\n   *  Set to true to group number by pattern\n   */\n  readonly grouping = input(false);\n  /**\n   * The pattern to group number value by\n   */\n  readonly pattern = input<string | undefined>(undefined);\n  /**\n   * Will prevent the input from being changed (default: false)\n   */\n  readonly readonly = input(false);\n\n  /**\n   * classification property adds some semantics to the value of this component.\n   * If you provide a value of `filesize` numbers typed into the control will be\n   * handled like file sizes (calculates differnt units)\n   */\n  readonly classifications = input<string[]>([]);\n  /**\n   * set minimum input value\n   */\n  readonly minValue = input<number | undefined>(undefined);\n  /**\n   * set maximum input value\n   *\n   */\n  readonly maxValue = input<number | undefined>(undefined);\n\n  situation = input<string | null>(Situation.EDIT);\n\n  private isValid = true;\n  override ngControl = injectNgControl(this);\n\n  // options for search situation\n  public availableSearchOptions = [\n    { label: OperatorLabel.EQUAL, value: Operator.EQUAL },\n    { label: OperatorLabel.GREATER_OR_EQUAL, value: Operator.GREATER_OR_EQUAL },\n    { label: OperatorLabel.LESS_OR_EQUAL, value: Operator.LESS_OR_EQUAL },\n    { label: OperatorLabel.INTERVAL_INCLUDE_BOTH, value: Operator.INTERVAL_INCLUDE_BOTH }\n  ];\n\n  public rangeForm = new FormGroup({\n    numberValue: new FormControl<number | undefined>(undefined, {\n      nonNullable: true,\n      validators: [Validators.required]\n    }),\n    operator: new FormControl<Operator>(this.availableSearchOptions[1].value, { nonNullable: true }),\n    numberValueFrom: new FormControl<number | undefined>(undefined, { nonNullable: true })\n  });\n\n  // constructor() {\n  //   this.rangeForm.valueChanges.forEach(() => {\n  //     this.#onValueChange();\n  //   });\n  // }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n  propagateChange = (_: any) => {};\n\n  writeValue(value: RangeValue): void {\n    if (value && (value.firstValue != null || value.secondValue != null)) {\n      const match = this.availableSearchOptions.find((o) => o.value === value.operator);\n      this.value = value;\n      if (value.secondValue == undefined) {\n        this.rangeForm.reset();\n        this.rangeForm.get('operator')?.setValue(match ? match.value : this.availableSearchOptions[0].value);\n        this.rangeForm.get('numberValue')?.setValue(Number(value.firstValue) || undefined);\n      } else {\n        this.rangeForm.setValue(\n          {\n            numberValueFrom: Number(value.firstValue) || undefined,\n            operator: match ? match.value : this.availableSearchOptions[0].value,\n            numberValue: Number(value.secondValue) || undefined\n          },\n          { emitEvent: false }\n        );\n      }\n    } else {\n      this.value = null;\n      this.rangeForm.reset();\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n  registerOnTouched(fn: any): void {}\n\n  #onValueChange() {\n    this.isValid = this.rangeForm.valid;\n    const operator = this.rangeForm.value.operator as Operator;\n    if (operator === Operator.INTERVAL_INCLUDE_BOTH) {\n      this.isValid =\n        this.rangeForm.valid &&\n        this.rangeForm.value.numberValueFrom != null &&\n        this.rangeForm.value.numberValue != null;\n      this.value = !this.isValid\n        ? {\n            operator,\n            firstValue: undefined,\n            secondValue: undefined\n          }\n        : {\n            operator,\n            firstValue: this.rangeForm.value.numberValueFrom,\n            secondValue: this.rangeForm.value.numberValue\n          };\n    } else {\n      this.value = !this.isValid\n        ? {\n            operator,\n            firstValue: undefined,\n            secondValue: undefined\n          }\n        : {\n            operator,\n            firstValue: this.rangeForm.value.numberValue,\n            secondValue: undefined\n          };\n    }\n    this.propagateChange(this.value);\n  }\n\n  #getValidator(): ValidatorFn {\n    return (control: AbstractControl): ValidationErrors | null => {\n      let err: any;\n      const operator = control.get('operator')?.value as Operator;\n      const firstValue = Number(control.get('numberValueFrom')?.value);\n      const secondValue = Number(control.get('numberValue')?.value);\n\n      const singleValueOperators = new Set([Operator.EQUAL]);\n      const rangeOperators = new Set([Operator.INTERVAL_INCLUDE_BOTH]);\n      if (this.situation() === Situation.SEARCH) return null;\n      if (singleValueOperators.has(operator)) {\n        return { number: { valid: false } };\n      } else if (rangeOperators.has(operator)) {\n        if (firstValue && secondValue) {\n          // make sure that on ranges, the first value is earlier than the last\n          this.isValid = firstValue < secondValue;\n          if (this.isValid) return null;\n          return { numberrangeorder: { valid: false } };\n        } else {\n          return { numberrange: { valid: false } };\n        }\n      }\n      return null;\n    };\n  }\n\n  // returns null when valid else the validation object\n  public validate() {\n    let err: any;\n    const operator = this.rangeForm.value.operator;\n    if (operator === Operator.EQUAL) {\n      err = { number: { valid: false } };\n    } else if (operator === Operator.INTERVAL_INCLUDE_BOTH && this.value?.firstValue && this.value?.secondValue) {\n      // make sure that on ranges, the first value is earlier than the last\n      this.isValid = this.value.firstValue < this.value.secondValue;\n      err = { numberrangeorder: { valid: false } };\n    } else {\n      err = { numberrange: { valid: false } };\n    }\n    return this.isValid ? null : err;\n  }\n\n  ngOnInit(): void {\n    this.rangeForm.setValidators(this.#getValidator());\n    this.rangeForm.statusChanges.pipe(takeUntilDestroyed(this.#dRef)).subscribe((v) => {\n      this.errorState = FormUtils.getErrorState(this.rangeForm);\n      if (this.ngControl?.control) {\n        this.ngControl.control.setErrors(this.rangeForm.errors);\n      }\n    });\n    this.rangeForm.updateValueAndValidity();\n    this.rangeForm.valueChanges.subscribe(() => this.#onValueChange());\n  }\n\n  ngOnDestroy(): void {\n    super.onNgOnDestroy();\n  }\n}\n","<form class=\"yuv-number-range\" [formGroup]=\"rangeForm\">\n  @if (rangeForm.value.operator === 'gtelte') {\n    <yuv-number\n      class=\"first\"\n      [readonly]=\"readonly()\"\n      [scale]=\"scale()\"\n      [precision]=\"precision()\"\n      [grouping]=\"grouping()\"\n      [groupPattern]=\"pattern()\"\n      formControlName=\"numberValueFrom\"\n      [classifications]=\"classifications()\"\n      [minValue]=\"minValue()\"\n      [maxValue]=\"maxValue()\"\n    ></yuv-number>\n  }\n\n  <mat-select [panelWidth]=\"null\" [hideSingleSelectionIndicator]=\"true\" formControlName=\"operator\" [disabled]=\"readonly()\">\n    @for (o of availableSearchOptions; track $index) {\n      <mat-option [value]=\"o.value\">{{ o.label }}</mat-option>\n    }\n  </mat-select>\n\n  <yuv-number\n    [scale]=\"scale()\"\n    [readonly]=\"readonly()\"\n    [precision]=\"precision()\"\n    [grouping]=\"grouping()\"\n    [groupPattern]=\"pattern()\"\n    formControlName=\"numberValue\"\n    [classifications]=\"classifications()\"\n    [minValue]=\"minValue()\"\n    [maxValue]=\"maxValue()\"\n  >\n  </yuv-number>\n</form>\n","import { Component, DestroyRef, inject, input, linkedSignal, OnDestroy, OnInit, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Classification, IdmService, OrganizationSetEntry, SystemService } from '@yuuvis/client-core';\nimport { AutocompleteItem, YuvAutocompleteModule } from '@yuuvis/client-framework/autocomplete';\nimport { AbstractMatFormField, injectNgControl } from '@yuuvis/client-framework/common';\nimport { FormUtils } from '../../forms.utils';\n\n/**\n * Creates form input for organization set values. An organization set is\n * either a user or a role. This control will emit a stringified JSON object of\n * a OrganizationSetEntry object.\n *\n * ```json\n * {\n *   \"id:organization:set\": [\n *     \"{\\\"id\\\":\\\"YUUVIS_AI_PREDICT\\\",\\\"title\\\":\\\"YUUVIS_AI_PREDICT\\\",\\\"type\\\":\\\"role\\\"}\"\n *   ]\n * }\n * ```\n */\n@Component({\n  selector: 'yuv-organization-set',\n  imports: [FormsModule, YuvAutocompleteModule, MatTooltipModule, MatIconModule, ReactiveFormsModule, TranslatePipe],\n  templateUrl: './organization-set.component.html',\n  styleUrl: './organization-set.component.scss',\n  providers: [{ provide: MatFormFieldControl, useExisting: OrganizationSetComponent }]\n})\nexport class OrganizationSetComponent\n  extends AbstractMatFormField<string | string[] | undefined>\n  implements ControlValueAccessor, OnDestroy, OnInit\n{\n  #system = inject(SystemService);\n  #idmService = inject(IdmService);\n  #dRef = inject(DestroyRef);\n\n  /**\n   * Possibles values are `EDIT` (default),`SEARCH`,`CREATE`. In search situation validation of the form element will be turned off, so you are able to enter search terms that do not meet the elements validators.\n   */\n  situation = input<string | undefined>(undefined);\n  /**\n   * Indicator that multiple strings could be inserted, they will be rendered as chips (default: false).\n   */\n  multiselect = input<boolean>(false);\n  /**\n   * Will prevent the input from being changed (default: false)\n   */\n  readonly = input<boolean>(false);\n\n  /**\n   * Whether or not the emitted value should be an object containing id and title\n   * or, if set to false only the ID\n   */\n  withMetadata = input<boolean>(false);\n\n  /**\n   * Minimum length of the autocomplete input before a query is sent to the server.\n   */\n  autocompleteMinLength = input<number>(2);\n\n  classifications = input<string[] | undefined>(undefined);\n  types = input<string[] | undefined>(undefined);\n  #targetTypes = linkedSignal<string[]>(() => {\n    const c = this.classifications();\n    const types = this.types();\n    if (c?.length) {\n      const classifications = this.#system.getClassifications(c);\n      return classifications.has(Classification.STRING_ORGANIZATION_SET)\n        ? classifications.get(Classification.STRING_ORGANIZATION_SET)!.options\n        : [];\n    } else if (types) {\n      return types;\n    }\n    return [];\n  });\n\n  busy = signal<boolean>(false);\n\n  acFormControl = new FormControl<AutocompleteItem | AutocompleteItem[] | undefined>(undefined);\n  override ngControl = injectNgControl(this);\n\n  innerValue: OrganizationSetEntry[] = [];\n  autocompleteRes: AutocompleteItem[] = [];\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  propagateChange = (_: any) => {};\n\n  writeValue(value: string | string[]): void {\n    const val = Array.isArray(value)\n      ? value.map((v) => (typeof v === 'string' ? JSON.parse(v) : v))\n      : value\n        ? [JSON.parse(value)]\n        : [];\n    this.innerValue = val;\n    this.value = val.map((v) => JSON.stringify(v));\n    if (!this.multiselect) {\n      this.value = this.value[0] || null;\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  registerOnTouched(fn: any): void {}\n\n  setDisabledState?(isDisabled: boolean) {\n    if (isDisabled) {\n      this.acFormControl.disable();\n    } else {\n      this.acFormControl.enable();\n    }\n    this.disabled = isDisabled;\n  }\n\n  private propagate() {\n    this.value = this.#getPropagateValue();\n    this.propagateChange(this.value);\n  }\n\n  #getPropagateValue(): string | string[] | undefined {\n    if (this.multiselect()) {\n      return this.innerValue.map((v) => JSON.stringify(v));\n    } else if (this.innerValue.length) {\n      return JSON.stringify(this.innerValue[0]);\n    } else return undefined;\n  }\n\n  autocompleteFn(query: string) {\n    if (query.length >= this.autocompleteMinLength()) {\n      this.#idmService.queryOrganizationEntity(query, this.#targetTypes()).subscribe({\n        next: (entries: OrganizationSetEntry[]) => {\n          this.autocompleteRes = entries\n            .filter((e) => !this.innerValue?.some((value) => value.id === e.id))\n            .map((o) => ({\n              label: o.title,\n              value: o\n            }));\n        },\n        error: (e) => {\n          this.autocompleteRes = [];\n        }\n      });\n    } else {\n      this.autocompleteRes = [];\n    }\n  }\n\n  ngOnInit() {\n    if (this.required) this.acFormControl.setValidators(Validators.required);\n    this.acFormControl.statusChanges.pipe(takeUntilDestroyed(this.#dRef)).subscribe((v) => {\n      this.errorState = FormUtils.getErrorState(this.acFormControl);\n      if (this.ngControl?.control) {\n        this.ngControl.control.setErrors(this.acFormControl.errors);\n      }\n    });\n    this.acFormControl.updateValueAndValidity();\n\n    this.acFormControl.valueChanges.subscribe((v) => {\n      if (!Array.isArray(v)) v = v ? [v] : [];\n      this.innerValue = (v as AutocompleteItem[]).map((i: AutocompleteItem) => i.value as OrganizationSetEntry);\n      this.propagate();\n    });\n  }\n\n  ngOnDestroy(): void {\n    super.onNgOnDestroy();\n  }\n}\n","<yuv-autocomplete\n  [busy]=\"busy()\"\n  [formControl]=\"acFormControl\"\n  #autocomplete\n  [placeholder]=\"placeholder\"\n  [disabled]=\"readonly()\"\n  [autocompleteValues]=\"autocompleteRes\"\n  [forceSelection]=\"true\"\n  (autocompleteFnc)=\"autocompleteFn($event)\"\n  [multiple]=\"true\"\n  [maxItems]=\"multiselect() ? -1 : 1\"\n>\n  <!-- template for item inside the dropdown -->\n  <ng-template #optionTemplate let-item>\n    <span class=\"chip\">{{ item.value.title }}</span>\n  </ng-template>\n\n  <!-- template for chip -->\n  <ng-template #chipTemplate let-item>\n    <span class=\"chip\">\n      {{ item.value.title || '...' }}\n    </span>\n  </ng-template>\n</yuv-autocomplete>\n\n<mat-icon class=\"ymt-icon--size-s\" [matTooltip]=\"'yuv.form.element.organization-set.classify.icon.title' | translate\">\n  {{ multiselect() ? 'group' : 'person' }}\n</mat-icon>\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, DestroyRef, inject, input, OnDestroy, OnInit, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport {\n  Classification,\n  IdmService,\n  OrganizationSetEntry,\n  SystemService,\n  TranslatePipe,\n  TranslateService,\n  UserService,\n  YuvUser\n} from '@yuuvis/client-core';\nimport { AutocompleteItem, YuvAutocompleteModule } from '@yuuvis/client-framework/autocomplete';\nimport { AbstractMatFormField, injectNgControl } from '@yuuvis/client-framework/common';\nimport { forkJoin, Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { FormUtils } from '../../forms.utils';\n\ntype OrganizationNode = OrganizationSetEntry & {\n  notFound?: boolean;\n};\n\ntype FormControlValue =\n  | string\n  | {\n      id: string;\n      title: string;\n    };\n\nconst mapOrganizationNode = <T extends { id: string; title: string }>(innerValue: OrganizationNode[]) =>\n  map((node: T[]) =>\n    node\n      .filter((e) => !innerValue?.some((value) => value?.id === e.id))\n      .map(\n        (e) =>\n          ({\n            label: e.title,\n            value: {\n              id: e.id,\n              title: e.title,\n              type: 'user' in e ? 'user' : 'role'\n            }\n          }) as AutocompleteItem\n      )\n  );\n\n/**\n * Creates form input for organization values.\n *\n * @example\n * <yuv-organization [multiselect]=\"true\"></yuv-organization>\n */\n\n@Component({\n  selector: 'yuv-organization',\n  standalone: true,\n  imports: [\n    CommonModule,\n    FormsModule,\n    YuvAutocompleteModule,\n    MatTooltipModule,\n    MatIconModule,\n    ReactiveFormsModule,\n    TranslatePipe\n  ],\n  templateUrl: './organization.component.html',\n  styleUrls: ['./organization.component.scss'],\n  providers: [{ provide: MatFormFieldControl, useExisting: OrganizationComponent }]\n})\nexport class OrganizationComponent\n  extends AbstractMatFormField<FormControlValue | FormControlValue[] | undefined>\n  implements ControlValueAccessor, OnInit, OnDestroy\n{\n  #system = inject(SystemService);\n  #idmService = inject(IdmService);\n  #userService = inject(UserService);\n  #dRef = inject(DestroyRef);\n  readonly translate = inject(TranslateService);\n\n  minLength = 2;\n  busy = signal<boolean>(false);\n\n  acFormControl = new FormControl<AutocompleteItem | AutocompleteItem[] | undefined>(undefined);\n  override ngControl = injectNgControl(this);\n\n  _innerValue: OrganizationNode[] = [];\n  set innerValue(iv: OrganizationNode[]) {\n    this._innerValue = iv || [];\n  }\n  get innerValue() {\n    return this._innerValue;\n  }\n  autocompleteRes: AutocompleteItem[] = [];\n\n  /**\n   * Possibles values are `EDIT` (default),`SEARCH`,`CREATE`. In search situation validation of the form element will be turned off, so you are able to enter search terms that do not meet the elements validators.\n   */\n  situation = input<string | undefined>(undefined);\n  /**\n   * Indicator that multiple strings could be inserted, they will be rendered as chips (default: false).\n   */\n  multiselect = input<boolean>(false);\n\n  /**\n   * Additional semantics for the form element.\n   */\n  // #organizationType: Classification = Classification.STRING_ORGANIZATION;\n  #organizationType = computed<Classification>(() => {\n    const c = this.classifications();\n    if (c?.length) {\n      const classifications = this.#system.getClassifications(c);\n      if (classifications.has(Classification.STRING_ORGANIZATION_SET)) {\n        return Classification.STRING_ORGANIZATION_SET;\n      }\n    }\n    return Classification.STRING_ORGANIZATION;\n  });\n  classifications = input<string[] | undefined>(undefined);\n  #filterRoles = computed<string[]>(() => {\n    const t = this.#organizationType();\n    const c = this.classifications();\n    if (c?.length) {\n      const classifications = this.#system.getClassifications(c);\n      if (t === Classification.STRING_ORGANIZATION) {\n        return classifications.get(Classification.STRING_ORGANIZATION)!.options;\n      } else if (t === Classification.STRING_ORGANIZATION_SET) {\n        return classifications.get(Classification.STRING_ORGANIZATION_SET)!.options;\n      }\n    }\n    return [];\n  });\n\n  /**\n   * Will prevent the input from being changed (default: false)\n   */\n  readonly = input<boolean>(false);\n\n  /**\n   * Whether or not to exclude the current user from autocomplete result\n   */\n  excludeMe = input<boolean>(false);\n\n  /**\n   * Whether or not the emitted value should be an object containing id and title\n   * or, if set to false only the ID\n   */\n  withMetadata = input<boolean>(false);\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  propagateChange = (_: any) => {};\n\n  writeValue(value: string | string[]): void {\n    this.value = value;\n    if (value) {\n      const parsedMetadata = this.#getMetadataString(value);\n      if (parsedMetadata) {\n        this.#updateAutocompleteControl(Array.isArray(parsedMetadata) ? parsedMetadata : [parsedMetadata]);\n      } else {\n        this.resolveFn(Array.isArray(value) ? value : [value]);\n      }\n    } else {\n      this.value = null;\n      this.innerValue = [];\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  registerOnTouched(fn: any): void {}\n\n  private propagate() {\n    this.value = this.#getPropagateValue();\n    this.propagateChange(this.value);\n  }\n\n  setDisabledState?(isDisabled: boolean) {\n    if (isDisabled) {\n      this.acFormControl.disable();\n    } else {\n      this.acFormControl.enable();\n    }\n    this.disabled = isDisabled;\n  }\n\n  #getPropagateValue(): FormControlValue | FormControlValue[] | undefined {\n    const value = this.innerValue.map((v) =>\n      this.withMetadata() ? JSON.stringify({ id: v.id, title: v.title, type: v.type }) : v.id\n    );\n    return this.multiselect() ? value : value[0];\n  }\n\n  resolveFn(value: string[]): void {\n    // check if entry is a user\n    const userRegExp = new RegExp('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$');\n    const tasks: Observable<OrganizationNode>[] = value.map((v) =>\n      v.match(userRegExp)\n        ? this.#idmService.getUserById(v).pipe(\n            map((res: YuvUser | null) => {\n              return res\n                ? ({\n                    id: res.id,\n                    title: res.title,\n                    type: 'user'\n                  } as OrganizationNode)\n                : ({\n                    id: v,\n                    title: v,\n                    type: 'user',\n                    notFound: true\n                  } as OrganizationNode);\n            })\n          )\n        : of({\n            id: v,\n            title: v,\n            type: 'role'\n          } as OrganizationNode)\n    );\n    forkJoin(tasks).subscribe((data) => {\n      this.#updateAutocompleteControl(data);\n    });\n  }\n\n  #updateAutocompleteControl(data: OrganizationNode[]) {\n    this.innerValue = data;\n    const mapped = (this.innerValue as OrganizationNode[]).map((n) => ({\n      label: n.title,\n      value: n\n    }));\n    this.acFormControl.setValue(this.multiselect() ? mapped : [mapped[0]], { emitEvent: false });\n    this.acFormControl.updateValueAndValidity({ emitEvent: false });\n  }\n\n  #resolveOrganization(query: string, excludeMe: boolean, filterRoles: string[]) {\n    return this.#userService.queryUser(query, excludeMe, filterRoles).pipe(\n      mapOrganizationNode<YuvUser>(this.innerValue),\n      catchError(() => of([]))\n    );\n  }\n\n  #resolveOrganizationSet(query: string, filterRoles: string[]) {\n    return this.#idmService.queryOrganizationEntity(query, filterRoles).pipe(\n      mapOrganizationNode<OrganizationSetEntry>(this.innerValue),\n      catchError(() => of([]))\n    );\n  }\n\n  #getMetadataString(value: string | string[]) {\n    try {\n      if (Array.isArray(value)) {\n        return value.map((v) => JSON.parse(v));\n      } else {\n        return JSON.parse(value);\n      }\n    } catch (e) {\n      return undefined;\n    }\n  }\n\n  autocompleteFn(query: string) {\n    if (query.length >= this.minLength) {\n      this.busy.set(true);\n      (this.#organizationType() === Classification.STRING_ORGANIZATION\n        ? this.#resolveOrganization(query, this.excludeMe(), this.#filterRoles())\n        : this.#resolveOrganizationSet(query, this.#filterRoles())\n      ).subscribe({\n        next: (res) => {\n          this.busy.set(false);\n          this.autocompleteRes = res;\n        },\n        error: () => this.busy.set(false)\n      });\n    } else {\n      this.autocompleteRes = [];\n    }\n  }\n\n  ngOnInit() {\n    if (this.required) this.acFormControl.setValidators(Validators.required);\n    this.acFormControl.statusChanges.pipe(takeUntilDestroyed(this.#dRef)).subscribe((v) => {\n      this.errorState = FormUtils.getErrorState(this.acFormControl);\n      if (this.ngControl?.control) {\n        this.ngControl.control.setErrors(this.acFormControl.errors);\n      }\n    });\n    this.acFormControl.updateValueAndValidity({ emitEvent: false });\n\n    this.acFormControl.valueChanges.subscribe((v) => {\n      if (!Array.isArray(v)) v = v ? [v] : [];\n      this.innerValue = (v as AutocompleteItem[]).map((i: AutocompleteItem) => i.value as OrganizationNode);\n      this.propagate();\n    });\n  }\n\n  ngOnDestroy(): void {\n    super.onNgOnDestroy();\n  }\n}\n","<yuv-autocomplete\n  [required]=\"required\"\n  [busy]=\"busy()\"\n  [formControl]=\"acFormControl\"\n  #autocomplete\n  [placeholder]=\"placeholder\"\n  [disabled]=\"readonly()\"\n  [autocompleteValues]=\"autocompleteRes\"\n  [forceSelection]=\"true\"\n  [distinctValues]=\"true\"\n  (autocompleteFnc)=\"autocompleteFn($event)\"\n  [multiple]=\"true\"\n  [maxItems]=\"multiselect() ? -1 : 1\"\n>\n  <!-- template for item inside the dropdown -->\n  <ng-template #optionTemplate let-item>\n    @if (item.value) {\n      <span class=\"chip\">{{ item.value.title }}</span>\n    }\n  </ng-template>\n\n  <!-- template for chip -->\n  <ng-template #chipTemplate let-item>\n    @if (item.value) {\n      <span class=\"chip\" [ngClass]=\"{ notFound: item.value.notFound }\" [matTooltip]=\"item.value.titleString\">\n        {{ item.value.title || '...' }}\n      </span>\n    }\n  </ng-template>\n</yuv-autocomplete>\n\n<mat-icon class=\"ymt-icon--size-s\" [matTooltip]=\"'yuv.form.element.organization.classify.icon.title' | translate\">\n  {{ multiselect() ? 'group' : 'person' }}\n</mat-icon>\n","import { Component, effect, inject, input, output } from '@angular/core';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { RangeValue, TranslatePipe } from '@yuuvis/client-core';\nimport { DialogComponent } from '@yuuvis/client-framework/common';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { DatetimeRangeComponent } from '../../datetime-range/datetime-range.component';\n\n@Component({\n  selector: 'yuv-date-range-picker',\n  standalone: true,\n  imports: [ReactiveFormsModule, TranslatePipe, DatetimeRangeComponent, YmtButtonDirective, DialogComponent],\n  templateUrl: './date-range-picker.component.html',\n  styleUrl: './date-range-picker.component.scss'\n})\nexport class DateRangePickerComponent {\n  #fb = inject(FormBuilder);\n  #dialogData = inject<{ range: RangeValue }>(MAT_DIALOG_DATA);\n  readonly #dialogRef = inject(MatDialogRef<DateRangePickerComponent>);\n\n  form = this.#fb.group({\n    range: this.#fb.control<RangeValue | undefined>(this.#dialogData.range)\n  });\n\n  range = input<RangeValue | undefined>(this.#dialogData.range);\n  rangeChange = output<RangeValue | undefined>();\n  #rangeEffect = effect(() => {\n    const range = this.range();\n\n    if (!range) {\n      this.form.get('range')?.patchValue(null);\n      return;\n    }\n    this.form.patchValue({ range });\n  });\n\n  apply() {\n    this.rangeChange.emit(this.form.value.range || undefined);\n    this.#dialogRef.close(this.form.value.range);\n  }\n}\n","<yuv-dialog [headertitel]=\"'yuv.form.element.range-select-date.custom.overlay.title' | translate\">\n  <main>\n    <form id=\"date-range-picker-form\" [formGroup]=\"form\" (ngSubmit)=\"apply()\">\n      <yuv-datetime-range [withTime]=\"false\" formControlName=\"range\"></yuv-datetime-range>\n    </form>\n  </main>\n  <footer>\n    <button form=\"date-range-picker-form\" ymtButton=\"primary\" [disabled]=\"form.invalid\">\n      {{ 'yuv.form.element.range-select-date.custom.overlay.button.apply' | translate }}\n    </button>\n  </footer>\n</yuv-dialog>\n","\nimport { Component, inject, input, OnDestroy, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { _ as marker } from '@ngx-translate/core';\nimport { DateRange, LocaleDatePipe, Operator, OperatorLabel, RangeValue, SearchUtils, TranslateService } from '@yuuvis/client-core';\nimport { AbstractMatFormField, injectNgControl } from '@yuuvis/client-framework/common';\nimport { DateRangePickerComponent } from './date-range-picker/date-range-picker.component';\nimport { RangeSelectDateValue } from './range-select-date.interface';\n\n// marker for extracting translations for the available date range options\nmarker('yuv.form.element.range-select-date.option.any');\nmarker('yuv.form.element.range-select-date.option.today');\nmarker('yuv.form.element.range-select-date.option.yesterday');\nmarker('yuv.form.element.range-select-date.option.thisWeek');\nmarker('yuv.form.element.range-select-date.option.lastWeek');\nmarker('yuv.form.element.range-select-date.option.thisMonth');\nmarker('yuv.form.element.range-select-date.option.lastMonth');\nmarker('yuv.form.element.range-select-date.option.thisYear');\nmarker('yuv.form.element.range-select-date.option.lastYear');\nmarker('yuv.form.element.range-select-date.option.custom');\n\n/**\n * Component for selecting a date range based on pre-defined ranges like\n * 'today', 'this week', 'this month', etc.\n * It also allows to pick a custom date range.\n */\n@Component({\n  selector: 'yuv-range-select-date',\n  standalone: true,\n  imports: [MatSelectModule, ReactiveFormsModule],\n  templateUrl: './range-select-date.component.html',\n  styleUrl: './range-select-date.component.scss',\n  providers: [{ provide: MatFormFieldControl, useExisting: RangeSelectDateComponent }]\n})\nexport class RangeSelectDateComponent extends AbstractMatFormField<RangeSelectDateValue> implements ControlValueAccessor, OnDestroy {\n  private translate = inject(TranslateService);\n  #dialog = inject(MatDialog);\n\n  #ANY_OPTION = 'any';\n  #CUSTOM_OPTION = 'custom';\n\n  options = signal<{ label: string; value: unknown }[]>([]);\n  #customDateRange?: RangeValue;\n\n  readonly fc = new FormControl<string>(this.#ANY_OPTION, {\n    nonNullable: true\n  });\n\n  override ngControl = injectNgControl(this);\n  override get shouldLabelFloat(): boolean {\n    return true;\n  }\n\n  /**\n   * Range values to be used in the dropdown.\n   */\n  ranges = input<DateRange[]>(['today', 'yesterday', 'thisWeek', 'thisMonth', 'thisYear']);\n  /**\n   * Whether to show the custom date range option.\n   */\n  customRange = input<boolean>(true);\n\n  constructor() {\n    super();\n    this.translate.onLangChange.pipe(takeUntilDestroyed()).subscribe((_) => this.#setupOptions());\n    this.#setupOptions();\n    this.fc.valueChanges.pipe(takeUntilDestroyed()).subscribe((v) => this.#onFormValueChange(v));\n  }\n\n  #onFormValueChange(v: string | DateRange) {\n    if (v === this.#CUSTOM_OPTION) {\n      if (!this.#customDateRange || this.options().find((o) => o.value === this.#CUSTOM_OPTION)?.label === this.#customDateRangeToString()) {\n        this.#openCustomRangeDialog();\n      } else {\n        this.value = {\n          rangeValue: this.#customDateRange,\n          label: this.#customDateRangeToString()\n        };\n        this.propagateChange(this.value);\n      }\n    } else {\n      const { start, end } = SearchUtils.dateRangeStartEnd(v as DateRange);\n      this.value =\n        v !== this.#ANY_OPTION\n          ? {\n              rangeValue: { operator: Operator.INTERVAL_INCLUDE_BOTH, firstValue: start, secondValue: end },\n              label: this.translate.instant(`yuv.form.element.range-select-date.option.${v}`)\n            }\n          : null;\n      this.propagateChange(this.value);\n      this.#customDateRange = undefined;\n      this.#setupOptions();\n    }\n  }\n\n  #openCustomRangeDialog() {\n    // open date range picker\n    const o = this.#dialog.open(DateRangePickerComponent, {\n      data: {\n        range: this.#customDateRange\n      }\n    });\n    o.afterClosed().subscribe((res: RangeValue | undefined) => {\n      this.#customDateRange = res;\n\n      if (!res) {\n        this.fc.patchValue(this.#ANY_OPTION);\n        this.#setupOptions();\n      } else {\n        this.#onFormValueChange(this.fc.value);\n        this.#setupOptions(this.#customDateRangeToString());\n\n        setTimeout(() => {\n          this.fc.patchValue(this.#CUSTOM_OPTION, {\n            emitEvent: false\n          });\n        });\n      }\n    });\n  }\n\n  #setupOptions(custom?: string) {\n    const options = this.ranges().map((value) => ({\n      label: this.translate.instant(`yuv.form.element.range-select-date.option.${value}`),\n      value\n    }));\n    if (this.customRange())\n      options.push({\n        label: custom || this.translate.instant('yuv.form.element.range-select-date.option.custom'),\n        value: this.#CUSTOM_OPTION as DateRange\n      });\n\n    this.options.set([\n      {\n        label: this.translate.instant('yuv.form.element.range-select-date.option.any'),\n        value: this.#ANY_OPTION\n      },\n      ...options\n    ]);\n  }\n\n  #customDateRangeToString(): string | undefined {\n    if (!this.#customDateRange) return undefined;\n    const dp = new LocaleDatePipe(this.translate);\n    switch (this.#customDateRange.operator) {\n      case Operator.EQUAL: {\n        return dp.transform(this.#customDateRange.firstValue as Date, 'shortDate');\n      }\n      case Operator.GREATER_OR_EQUAL: {\n        return `${OperatorLabel.GREATER_OR_EQUAL} ${dp.transform(this.#customDateRange.firstValue as Date, 'shortDate')}`;\n      }\n      case Operator.LESS_OR_EQUAL: {\n        return `${OperatorLabel.LESS_OR_EQUAL} ${dp.transform(this.#customDateRange.firstValue as Date, 'shortDate')}`;\n      }\n      case Operator.INTERVAL_INCLUDE_BOTH: {\n        return `${dp.transform(this.#customDateRange.firstValue as Date, 'shortDate')} ${OperatorLabel.INTERVAL_INCLUDE_BOTH} ${dp.transform(this.#customDateRange.secondValue as Date, 'shortDate')}`;\n      }\n    }\n    return undefined;\n  }\n\n  // ControlValueAccessor implementation\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  propagateChange = (_: any) => {};\n\n  writeValue(value?: RangeSelectDateValue): void {\n    this.value = value || null;\n    if (value?.rangeValue?.operator && value?.rangeValue?.firstValue) {\n      const dr: DateRange | undefined = SearchUtils.getMatchingDateRange(value.rangeValue);\n      if (dr) {\n        this.fc.patchValue(dr, { emitEvent: false });\n      } else {\n        this.#customDateRange = value.rangeValue;\n        this.fc.patchValue(this.#CUSTOM_OPTION, { emitEvent: false });\n      }\n    } else {\n      this.fc.patchValue(this.#ANY_OPTION, { emitEvent: false });\n    }\n  }\n\n  registerOnChange(fn: () => void): void {\n    this.propagateChange = fn;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  registerOnTouched(fn: () => void): void {}\n\n  ngOnDestroy(): void {\n    super.onNgOnDestroy();\n  }\n}\n","<mat-select [formControl]=\"fc\" [panelWidth]=\"null\" [hideSingleSelectionIndicator]=\"true\">\n  @for (o of options(); track $index) {\n    <mat-option [value]=\"o.value\">{{ o.label }}</mat-option>\n  }\n</mat-select>\n","\nimport { Component, inject, input, OnDestroy, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { _ as marker } from '@ngx-translate/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { FilesizeRange, RangeValue, SearchUtils } from '@yuuvis/client-core';\nimport { RangeSelectFilesizeValue } from './range-select-filesize.interface';\nimport { AbstractMatFormField, injectNgControl } from '@yuuvis/client-framework/common';\n\n// marker for extracting translations for the available filesize range options\nmarker('yuv.form.element.range-select-filesize.option.any');\nmarker('yuv.form.element.range-select-filesize.option.small');\nmarker('yuv.form.element.range-select-filesize.option.medium');\nmarker('yuv.form.element.range-select-filesize.option.large');\nmarker('yuv.form.element.range-select-filesize.option.verylarge');\n/**\n * Component for selecting a range of filesizes based on pre-defined ranges like\n * 'today', 'this week', 'this month', etc.\n */\n@Component({\n  selector: 'yuv-range-select-filesize',\n  standalone: true,\n  imports: [MatSelectModule, ReactiveFormsModule],\n  templateUrl: './range-select-filesize.component.html',\n  styleUrl: './range-select-filesize.component.scss',\n  providers: [{ provide: MatFormFieldControl, useExisting: RangeSelectFilesizeComponent }]\n})\nexport class RangeSelectFilesizeComponent extends AbstractMatFormField<RangeSelectFilesizeValue> implements ControlValueAccessor, OnDestroy {\n  private translate = inject(TranslateService);\n\n  #ANY_OPTION = 'any';\n\n  options = signal<{ label: string; value: unknown }[]>([]);\n\n  readonly fc = new FormControl<string>(this.#ANY_OPTION, {\n    nonNullable: true\n  });\n\n  override ngControl = injectNgControl(this);\n  override get shouldLabelFloat(): boolean {\n    return true;\n  }\n\n  /**\n   * Range values to be used in the dropdown.\n   */\n  ranges = input<FilesizeRange[]>(['small', 'medium', 'large', 'verylarge']);\n\n  constructor() {\n    super();\n    this.translate.onLangChange.pipe(takeUntilDestroyed()).subscribe((_) => this.#setupOptions());\n    this.#setupOptions();\n    this.fc.valueChanges.pipe(takeUntilDestroyed()).subscribe((v) => this.#onFormValueChange(v));\n  }\n\n  #onFormValueChange(v: string | FilesizeRange) {\n    const rangeValue: RangeValue | undefined = v !== this.#ANY_OPTION ? SearchUtils.filesizeRangeToRangeValue(v as FilesizeRange) : undefined;\n    const res: RangeSelectFilesizeValue | undefined = rangeValue && {\n      rangeValue,\n      label: this.translate.instant(`yuv.form.element.range-select-filesize.option.${v}`)\n    };\n    this.value = res || null;\n    this.propagateChange(res);\n  }\n\n  #setupOptions() {\n    const options = this.ranges().map((value) => ({\n      label: this.translate.instant(`yuv.form.element.range-select-filesize.option.${value}`),\n      value\n    }));\n\n    this.options.set([\n      {\n        label: this.translate.instant('yuv.form.element.range-select-filesize.option.any'),\n        value: this.#ANY_OPTION\n      },\n      ...options\n    ]);\n  }\n\n  // ControlValueAccessor implementation\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  propagateChange = (_: any) => {};\n\n  writeValue(value?: RangeSelectFilesizeValue): void {\n    this.value = value || null;\n    let patch: FilesizeRange | string = this.#ANY_OPTION;\n    if (value?.rangeValue?.operator && value?.rangeValue?.firstValue) {\n      const range: FilesizeRange | undefined = SearchUtils.getMatchingFilesizeRange(value.rangeValue);\n      if (range) patch = range;\n    }\n    this.fc.patchValue(patch, { emitEvent: false });\n  }\n\n  registerOnChange(fn: () => void): void {\n    this.propagateChange = fn;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  registerOnTouched(fn: () => void): void {}\n\n  ngOnDestroy(): void {\n    super.onNgOnDestroy();\n  }\n}\n","<mat-select [panelWidth]=\"null\" [hideSingleSelectionIndicator]=\"true\" [formControl]=\"fc\">\n  @for (o of options(); track $index) {\n    <mat-option [value]=\"o.value\">{{ o.label }}</mat-option>\n  }\n</mat-select>\n","import { COMMA, ENTER } from '@angular/cdk/keycodes';\n\nimport { AfterViewInit, Component, DestroyRef, ElementRef, inject, Input, OnDestroy, OnInit, input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  FormControl,\n  FormsModule,\n  ReactiveFormsModule,\n  ValidationErrors,\n  ValidatorFn,\n  Validators\n} from '@angular/forms';\nimport { MatChipEditedEvent, MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Classification, ClassificationPrefix, FormattedMailTo, Situation, Utils } from '@yuuvis/client-core';\nimport { AbstractMatFormField, injectNgControl, ScrollButtonsComponent } from '@yuuvis/client-framework/common';\nimport { FormUtils } from '../../forms.utils';\n/**\n * Creates form input for strings. Based on the input values different kinds of inputs will be generated.\n *\n * Implements `ControlValueAccessor` so it can be used within Angular forms.\n *\n * @example\n * <!-- string input validating input to be between 5 and 10 characters -->\n * <yuv-string [minLength]=\"5\" [maxLength]=\"10\"></yuv-string>\n *\n * <!-- string input that only allow digits -->\n * <yuv-string  [regex]=\"[0-9]*\"></yuv-string>\n *\n * <!-- string input rendering a large textarea -->\n * <yuv-string [rows]=\"10\"></yuv-string>\n *\n */\n@Component({\n  selector: 'yuv-string',\n  standalone: true,\n  imports: [MatChipsModule, MatIconModule, ReactiveFormsModule, FormsModule, ScrollButtonsComponent],\n  templateUrl: './string.component.html',\n  styleUrls: ['./string.component.scss'],\n  providers: [{ provide: MatFormFieldControl, useExisting: StringComponent }],\n  host: {\n    '[class.readonly]': 'readonly()'\n  }\n})\nexport class StringComponent extends AbstractMatFormField<string | string[] | undefined> implements ControlValueAccessor, AfterViewInit, OnInit, OnDestroy {\n  #elRef = inject(ElementRef);\n  #dRef = inject(DestroyRef);\n\n  readonly fc = new FormControl<string | string[] | undefined>(undefined);\n\n  readonly separatorKeysCodes = [ENTER, COMMA] as const;\n\n  classifiytionIcons = {\n    email: 'email',\n    url: 'language',\n    phone: 'call'\n  };\n  maxEntryCountIfInvalid?: number;\n\n  /**\n   * Indicator that multiple strings could be inserted, they will be rendered as chips (default: false).\n   */\n  readonly multiselect = input(false);\n  /**\n   * Setting rows to more than 1 will generate a textarea instead of an input tag\n   * and apply the rows property to it\n   */\n  @Input() rows?: number;\n  /**\n   * Will prevent the input from being changed (default: false)\n   */\n  readonly readonly = input(false);\n  /**\n   * Enable autofucus for the input (default: false)\n   */\n  readonly autofocus = input(false);\n  /**\n   * Additional semantics for the form element. Possible values are\n   * `email` (validates and creates a link to send an email once there\n   * is a valid email address) and `url` (validates and creates a link\n   * to an URL typed into the form element).\n   */\n  @Input()\n  set classifications(c: string[]) {\n    this.#classifications = c;\n    if (c && c.length) {\n      if (c.includes(Classification.STRING_EMAIL)) {\n        this.classify = {\n          hrefPrefix: ClassificationPrefix.EMAIL,\n          icon: this.classifiytionIcons.email\n        };\n      } else if (c.includes(Classification.STRING_URL)) {\n        this.classify = {\n          hrefPrefix: ClassificationPrefix.URL,\n          icon: this.classifiytionIcons.url\n        };\n      } else if (c.includes(Classification.STRING_PHONE)) {\n        this.classify = {\n          hrefPrefix: ClassificationPrefix.PHONE,\n          icon: this.classifiytionIcons.phone\n        };\n      }\n    }\n  }\n\n  get classifications() {\n    return this.#classifications;\n  }\n  /**\n   * Possibles values are `EDIT` (default),`SEARCH`,`CREATE`. In search situation validation of the form element will be turned off, so you are able to enter search terms that do not meet the elements validators.\n   */\n  readonly situation = input<string | undefined>(undefined);\n\n  /**\n   * Regular expression to validate the input value against\n   */\n  readonly regex = input<string | undefined>(undefined);\n  /**\n   * Minimal number of characters\n   */\n  readonly minLength = input<number | undefined>(undefined);\n  /**\n   * Maximum number of characters\n   */\n  readonly maxLength = input<number | undefined>(undefined);\n\n  formatedValue?: FormattedMailTo;\n  valid = false;\n  validationErrors: { [key: string]: any }[] = [];\n  classify?: { hrefPrefix: string; icon: string | undefined };\n  #classifications: string[] = [];\n  override ngControl = injectNgControl(this);\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  propagateChange = (_: any) => {};\n\n  private propagate() {\n    this.propagateChange(this.value);\n  }\n\n  writeValue(value: string | string[]): void {\n    if (Array.isArray(value)) {\n      value = value.filter((v) => typeof v === 'string' && v.trim().length > 0);\n    } else {\n      this.formatedValue = Utils.formatMailTo(value, this.classify?.hrefPrefix === ClassificationPrefix.EMAIL);\n    }\n    this.fc.patchValue(value, { emitEvent: false, onlySelf: true });\n    this.value = value || undefined;\n  }\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  registerOnTouched(): void {}\n\n  setDisabledState?(isDisabled: boolean) {\n    if (isDisabled) {\n      this.fc.disable();\n    } else {\n      this.fc.enable();\n    }\n    this.disabled = isDisabled;\n  }\n\n  #onValueChange(val: any) {\n    this.value = val;\n    this.empty = Utils.isEmpty(val);\n    if (this.empty) {\n      this.value = undefined;\n      this.propagate();\n      return;\n    }\n    this.formatedValue = Utils.formatMailTo(val, this.classify?.hrefPrefix === ClassificationPrefix.EMAIL);\n    this.propagate();\n  }\n\n  onBlur() {\n    if (!this.value) return;\n    // only called by single item input\n    const value = this.value as string;\n    const lengthBefore = value.length;\n    this.value = value.trim();\n    if (this.value.length !== lengthBefore) {\n      this.propagate();\n    }\n  }\n\n  // chips for multiselect\n\n  chipsAdd(event: MatChipInputEvent) {\n    const value = (event.value || '').trim();\n    if (value) {\n      this.value = [...((this.value as string[]) || []), value];\n      this.fc.patchValue(this.value);\n    }\n    // Clear the input value\n    event.chipInput.clear();\n  }\n\n  chipsRemove(v: string) {\n    const currValue = this.value as string[];\n    const index = currValue.indexOf(v);\n    if (index !== -1) {\n      currValue.splice(index, 1);\n      this.value = [...currValue];\n      this.fc.patchValue(this.value);\n    }\n  }\n\n  chipsEdit(v: string, event: MatChipEditedEvent) {\n    const value = event.value.trim();\n    if (!value) {\n      this.chipsRemove(v);\n      return;\n    }\n    const currValue = this.value as string[];\n    const index = currValue.indexOf(v);\n    if (index >= 0) {\n      currValue[index] = value;\n      this.value = [...currValue];\n      this.fc.patchValue(this.value);\n    }\n  }\n\n  private validateClassification(string: string, classification: string): boolean {\n    if (this.situation() === Situation.SEARCH) {\n      return true;\n    } else {\n      let pattern;\n      if (classification === Classification.STRING_EMAIL) {\n        pattern =\n          /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n      } else if (classification === Classification.STRING_URL) {\n        pattern = /(http|ftp|https):\\/\\/[\\w-]+(\\.[\\w-]+)?([\\w.,@?^=%&amp;:\\/~+#-]*[\\w@?^=%&amp;\\/~+#-])?/;\n      } else if (classification === Classification.STRING_PHONE) {\n        pattern = /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-x\\s\\./0-9]*$/g;\n      }\n      return pattern ? pattern.test(string) : true;\n    }\n  }\n\n  #getValidator(): ValidatorFn {\n    return (control: AbstractControl): ValidationErrors | null => {\n      this.maxEntryCountIfInvalid = undefined;\n      this.validationErrors = [];\n      const val = control.value;\n      if (!val) return null;\n      const multiCheck = (check: (s: string) => boolean) => !!(this.multiselect() ? val : [val]).find((v: string) => check(v));\n\n      // validate regular expression\n      if (this.regex() && multiCheck((v: string) => !RegExp(this.regex()!).test(v))) {\n        this.validationErrors.push({ key: 'regex' });\n      }\n\n      // validate classification settings\n      if (this.classifications && this.classifications.length) {\n        this.classifications.forEach((c) => {\n          if (multiCheck((v) => !this.validateClassification(v, c))) {\n            this.validationErrors.push({ key: 'classification' + c });\n          }\n        });\n      }\n\n      // validate min length\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      const minLength = this.minLength();\n      if (!Utils.isEmpty(minLength) && multiCheck((v) => v.length < this.minLength()!)) {\n        this.validationErrors.push({ key: 'minlength', params: { minLength: minLength } });\n      }\n\n      // validate max length\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      const maxLength = this.maxLength();\n      if (!Utils.isEmpty(maxLength) && multiCheck((v) => v.length > this.maxLength()!)) {\n        this.validationErrors.push({ key: 'maxlength', params: { maxLength: maxLength } });\n      }\n\n      // validate invalid if only whitespaces\n      if (multiCheck((v) => v.length > 0 && !v.trim().length)) {\n        this.validationErrors.push({ key: 'onlyWhitespaces' });\n      }\n\n      if (this.validationErrors.length && this.multiselect() && this.value) {\n        // Setting maxEntryCountIfInvalid to the actual length of the value array to prevent the user to add more entries.\n        this.maxEntryCountIfInvalid = this.value.length;\n      }\n\n      if (this.validationErrors.length) {\n        this.valid = false;\n        return Utils.arrayToObject(this.validationErrors, 'key', (err) => ({ valid: false, ...err }));\n      } else {\n        this.valid = true;\n        return null;\n      }\n    };\n  }\n\n  ngOnInit(): void {\n    const validators = [this.#getValidator()];\n    if (this.required) validators.push(Validators.required);\n\n    this.fc.setValidators(validators);\n    this.fc.statusChanges.pipe(takeUntilDestroyed(this.#dRef)).subscribe((v) => {\n      this.errorState = FormUtils.getErrorState(this.fc);\n      if (this.ngControl?.control) {\n        this.ngControl.control.setErrors(this.fc.errors);\n      }\n    });\n    this.fc.updateValueAndValidity();\n    this.fc.valueChanges.pipe(takeUntilDestroyed(this.#dRef)).subscribe((v) => this.#onValueChange(v));\n  }\n\n  ngAfterViewInit(): void {\n    if (this.autofocus()) {\n      if (!this.multiselect()) {\n        const el = this.#elRef.nativeElement.querySelector(this.rows && this.rows > 1 ? 'textarea' : 'input');\n        if (el) el.focus();\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n    super.onNgOnDestroy();\n  }\n}\n","@if ((!rows || rows <= 1) && !multiselect()) {\n  <input matInput type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly()\" [formControl]=\"fc\" />\n} @else if ((!rows || rows <= 1) && multiselect()) {\n  <!-- single line input with multiselect-->\n  <yuv-scroll-buttons>\n    <mat-chip-grid #chipGrid [formControl]=\"fc\">\n      @for (v of value; track v) {\n        <mat-chip-row (removed)=\"chipsRemove(v)\" [editable]=\"true\" (edited)=\"chipsEdit(v, $event)\">\n          {{ v }}\n          <button matChipRemove>\n            <mat-icon>cancel</mat-icon>\n          </button>\n        </mat-chip-row>\n      }\n      <input\n        [matChipInputFor]=\"chipGrid\"\n        [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n        [matChipInputAddOnBlur]=\"true\"\n        (matChipInputTokenEnd)=\"chipsAdd($event)\"\n      />\n    </mat-chip-grid>\n  </yuv-scroll-buttons>\n} @else if (rows && rows > 1) {\n  <!-- multi line text inputs -->\n  <textarea matInput class=\"input-textarea\" (blur)=\"onBlur()\" [rows]=\"rows\" [readonly]=\"readonly()\" [formControl]=\"fc\"></textarea>\n}\n\n@if (classify) {\n  <div class=\"classify\">\n    @if (value && !validationErrors.length && (classify.hrefPrefix !== '' || !multiselect() || value.length <= 1)) {\n      <a href=\"{{ classify.hrefPrefix + formatedValue }}\">\n        <mat-icon>{{ classify.icon }}</mat-icon>\n      </a>\n    } @else {\n      <mat-icon>{{ classify.icon }}</mat-icon>\n    }\n  </div>\n}\n","import { NgModule } from '@angular/core';\nimport {\n  DatetimeComponent,\n  DatetimeRangeComponent,\n  DynamicCatalogComponent,\n  I18nCatalogComponent,\n  NumberRangeComponent,\n  OrganizationComponent\n} from './elements';\nimport { CatalogComponent } from './elements/catalog/catalog.component';\nimport { NumberComponent } from './elements/number/number.component';\nimport { StringComponent } from './elements/string/string.component';\n\nconst formElementCmps = [\n  StringComponent,\n  NumberComponent,\n  NumberRangeComponent,\n  DatetimeComponent,\n  DatetimeRangeComponent,\n  OrganizationComponent,\n  StringComponent,\n  CatalogComponent,\n  DynamicCatalogComponent,\n  I18nCatalogComponent\n];\n\n/**\n * Module for the forms library.\n */\n@NgModule({\n  imports: [...formElementCmps],\n  exports: [...formElementCmps]\n})\nexport class YuvFormsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","TranslateService","i3","i4","TranslatePipe","map","i5","marker"],"mappings":"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"}