@yuuvis/client-framework 2.3.16 → 2.3.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/fesm2022/yuuvis-client-framework-forms.mjs +1 -1
  2. package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
  3. package/fesm2022/yuuvis-client-framework-master-details.mjs +7 -174
  4. package/fesm2022/yuuvis-client-framework-master-details.mjs.map +1 -1
  5. package/fesm2022/yuuvis-client-framework-object-summary.mjs +19 -3
  6. package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -1
  7. package/fesm2022/yuuvis-client-framework-renderer.mjs +46 -23
  8. package/fesm2022/yuuvis-client-framework-renderer.mjs.map +1 -1
  9. package/fesm2022/yuuvis-client-framework-sort.mjs +16 -23
  10. package/fesm2022/yuuvis-client-framework-sort.mjs.map +1 -1
  11. package/fesm2022/yuuvis-client-framework-split-view.mjs +1 -6
  12. package/fesm2022/yuuvis-client-framework-split-view.mjs.map +1 -1
  13. package/fesm2022/yuuvis-client-framework-tile-list.mjs +2 -2
  14. package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
  15. package/master-details/index.d.ts +0 -3
  16. package/master-details/lib/master-details.module.d.ts +1 -3
  17. package/object-summary/lib/object-summary-data/object-summary-data.component.d.ts +9 -8
  18. package/package.json +16 -16
  19. package/renderer/lib/property-renderer/table.renderer.component.d.ts +6 -2
  20. package/sort/lib/sort/sort.component.d.ts +1 -0
  21. package/split-view/lib/split-area.directive.d.ts +0 -1
  22. package/master-details/lib/master-details-pane/master-details-pane.component.d.ts +0 -34
  23. package/master-details/lib/master-details-pane/master-details-pane.interface.d.ts +0 -17
  24. package/master-details/lib/master-details-pane/pane.directive.d.ts +0 -15
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-client-framework-forms.mjs","sources":["../../../../../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/forms.utils.ts","../../../../../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/organization.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/organization/organization.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/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/elements/catalog/catalog.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/catalog/catalog.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 { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, inject, input, OnInit, signal } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule, ValidationErrors, Validators } 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, TranslateModule } 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 CommonModule,\n ReactiveFormsModule,\n DialogComponent,\n MatDialogModule,\n MatButtonModule,\n MatFormFieldModule,\n MetadataFormFieldComponent,\n TranslateModule,\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)\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) => ({ [key]: this.#errorMessage.getErrorLabel(k, key) }))\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 [headertitel]=\"'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\n [field]=\"element\" [formControlName]=\"element.name\" [situation]=\"situation\"></yuv-metadata-form-field>\n\n @let errorsGroup = errorMessage();\n @if (errorsGroup && tableForm.errors) {\n <div class=\"err-msg\">\n @for (errors of errorsGroup; track $index) {\n @for (error of errors; track $index) {\n {{ error[element.name] }}\n }\n }\n </div>\n }\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","import { DatePipe, DecimalPipe, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\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 { ClipboardService, ObjectFormControl, Situation, SystemService, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { MetadataFormFieldContext, ObjectMetadataElementLabelDirective } from '@yuuvis/client-framework/metadata-form';\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];\n\n@Component({\n selector: 'yuv-data-grid',\n standalone: true,\n imports: [NgClass, TranslateModule, ...MATERIAL, ObjectMetadataElementLabelDirective, YmtIconButtonDirective],\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 DecimalPipe,\n DatePipe\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 #clipboardService = inject(ClipboardService);\n readonly #systemService = inject(SystemService);\n readonly #decimalPipe = inject(DecimalPipe);\n readonly #datePipe = inject(DatePipe);\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 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 displayedColumns = signal<any[]>([]);\n displayedColumnsWithActions = signal<string[]>([]);\n dataSource = signal<any[]>([]);\n\n tableLabel = computed(() => {\n const formElement = this.formElement();\n return formElement ? this.#systemService.getLocalizedResource(`${formElement['name']}_label`) : 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 #readOnlyUpdateEffect = effect(() => {\n const readonly = this.readonly();\n untracked(() => {\n this.displayedColumnsWithActions.update((cols) => {\n if (readonly) {\n const idx = cols.findIndex((c) => c === 'actions');\n if (idx > -1) cols.splice(idx, 1);\n }\n return cols;\n });\n this.displayedColumns.update((cols) => (readonly ? cols.filter((c: any) => c.columnDef !== 'actions') : cols));\n });\n });\n\n #loadData = effect(() => {\n const formElement = this.formElement();\n untracked(() => formElement && this.#updateTable(formElement['elements'], formElement['value'] || []));\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.formElement()\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 copyLine(element: unknown) {\n this.#clipboardService.addToNavigatorClipBoard(JSON.stringify(element));\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) => (JSON.stringify(item) === JSON.stringify(element) ? result : item));\n const formElement = this.formElement();\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.formElement();\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.formElement();\n formElement && this.#updateTable(formElement['elements'], updatedData);\n }\n\n #cellValue(element: any, value: string) {\n switch (element.type) {\n case 'datetime':\n return this.#datePipe.transform(value, 'short', undefined, this.translate.currentLang);\n case 'string':\n return value;\n case 'decimal':\n return this.#decimalPipe.transform(value, '1.2-4', this.translate.currentLang);\n default:\n return value;\n }\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) => (element.isAddRow ? '' : this.#cellValue(el, element[el.name]))\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\n this.displayedColumnsWithActions.set(displayedColumns);\n this.dataSource.set(data);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars\n propagateChange = (fn: () => void) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\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\">\n <mat-icon>add</mat-icon>\n </button>\n }\n </header>\n\n @let displayedCol = displayedColumns();\n @let displayedColActions = displayedColumnsWithActions();\n\n <div class=\"yuv-data-grid__table\" [ngClass]=\"size()\">\n <table mat-table [dataSource]=\"dataSource()\" 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)\">\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 {{ column.cell(element) }}\n </td>\n </ng-container>\n }\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 </div>\n</fieldset>\n<mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"copyLine(selectedRow())\">{{ 'yuv.form.element.data.grid.copy' | translate }}</button>\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, OnInit, effect, inject, input, signal, viewChild } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n ReactiveFormsModule\n} 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';\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 extends AbstractMatFormField<Date | null> implements ControlValueAccessor, OnInit {\n private translate = inject(TranslateService);\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.currentLang);\n locale = input<string>(this.translate.currentLang);\n #localeEffect = effect(() => {\n this._locale.set(this.locale() || this.translate.currentLang);\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 constructor() {\n super();\n this.fc.valueChanges.subscribe((v) => this.onValueChange(v));\n this.fc.statusChanges.subscribe((v) => {\n this.errorState = v === 'INVALID';\n this.ngControl?.control?.setErrors(this.errorState ? { invalid: true } : null);\n });\n }\n\n #setLabels() {\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 openCalendar() {\n this.pickerCmp().openCalendar();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n propagateChange = (_: any) => {};\n\n writeValue(value: any): 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 }\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 propagateValue = `${propagateValue.getFullYear()}-${(propagateValue.getMonth() + 1).toString().padStart(2, '0')}-${propagateValue.getDate().toString().padStart(2, '0')}`;\n }\n this.propagateChange(propagateValue);\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 onValueChange(e: any) {\n this.#propagate(e);\n }\n\n ngOnInit(): void {\n this.focusHandled.set(true);\n this.#setLabels();\n this.translate.onLangChange.subscribe((e: LangChangeEvent) => this._locale.set(e.lang));\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","import { CommonModule } from '@angular/common';\nimport { Component, DestroyRef, Input, OnDestroy, OnInit, inject } 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: [CommonModule, 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 * Enables setting time as well (default: false)\n */\n @Input() withTime = false;\n /**\n * Will prevent the input from being changed (default: false)\n */\n @Input() readonly = false;\n @Input() operator = 'eq';\n @Input() situation?: 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 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 { 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, 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 }\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 { CommonModule } from '@angular/common';\nimport { Component, DestroyRef, inject, input, 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 { NumberComponent } from '../number/number.component';\nimport { FormUtils } from '../../forms.utils';\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: [CommonModule, 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 extends AbstractMatFormField<RangeValue> implements ControlValueAccessor, OnInit, OnDestroy {\n #dRef = inject(DestroyRef);\n\n /**\n * Number of decimal places\n */\n @Input() scale?: number;\n /**\n * Overall amount of digits allowed (including decimal places)\n */\n @Input() precision?: number;\n /**\n * Set to true to group number by pattern\n */\n @Input() grouping = false;\n /**\n * The pattern to group number value by\n */\n @Input() pattern?: string;\n /**\n * Will prevent the input from being changed (default: false)\n */\n @Input() readonly = 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 @Input() classifications: string[] = [];\n /**\n * set minimum input value\n */\n @Input() minValue?: number;\n /**\n * set maximum input value\n *\n */\n @Input() maxValue?: number;\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, { nonNullable: true, validators: [Validators.required] }),\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 numberValueFrom: Number(value.firstValue) || undefined,\n operator: match ? match.value : this.availableSearchOptions[0].value,\n numberValue: Number(value.secondValue) || undefined\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 = this.rangeForm.valid && this.rangeForm.value.numberValueFrom != null && 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 { CommonModule } from '@angular/common';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Component, DestroyRef, inject, input, 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 { Classification, SystemService, TranslateModule, TranslateService, UserService, YuvUser } 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, finalize, map } from 'rxjs/operators';\nimport { FormUtils } from '../../forms.utils';\n\ninterface UserNode {\n user: YuvUser;\n state: {\n notFound?: boolean;\n };\n titleString?: string;\n}\n\ntype FormControlValue =\n | string\n | {\n id: string;\n title: string;\n };\n\n/**\n * Creates form input for organisation values.\n *\n * @example\n * <yuv-organization [multiselect]=\"true\"></yuv-organization>\n */\n\n@Component({\n selector: 'yuv-organization',\n standalone: true,\n imports: [CommonModule, FormsModule, YuvAutocompleteModule, MatTooltipModule, MatIconModule, ReactiveFormsModule, TranslateModule],\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 #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: UserNode[] = [];\n set innerValue(iv: UserNode[]) {\n this._innerValue = iv || [];\n }\n get innerValue() {\n return this._innerValue;\n }\n autocompleteRes: AutocompleteItem[] = [];\n #filterRoles: string[] = [];\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 private _classifications?: string[];\n @Input() set classifications(c: string[] | undefined) {\n this._classifications = c;\n if (c?.length) {\n const classifications = this.#system.getClassifications(c);\n if (classifications.has(Classification.STRING_ORGANIZATION)) {\n const options = classifications.get(Classification.STRING_ORGANIZATION)!.options;\n this.#filterRoles = options;\n }\n } else {\n this.#filterRoles = [];\n }\n }\n get classifications() {\n return this._classifications;\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 if (value) {\n this.value = value;\n this.resolveFn(value);\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 }\n\n #getPropagateValue(): FormControlValue | FormControlValue[] | undefined {\n if (this.multiselect()) {\n return this.innerValue.map((v) => (this.withMetadata() ? { id: v.user.id, title: v.user.title } : v.user.id));\n } else if (this.innerValue.length) {\n return this.withMetadata() ? { id: this.innerValue[0].user.id, title: this.innerValue[0].user.title } : this.innerValue[0].user.id;\n } else return undefined;\n }\n\n resolveFn(value: any) {\n const obs: Observable<UserNode>[] = (value instanceof Array ? value : [value]).map((v) => {\n const valueID = typeof v === 'string' ? v : v.id;\n\n const match: UserNode | undefined = this.innerValue.find((iv) => iv.user.id === valueID);\n return match\n ? of(match)\n : this.#userService.getUserById(valueID).pipe(\n map((res: YuvUser) => ({\n user: res,\n state: {}\n })),\n catchError((e: HttpErrorResponse) => {\n const user = new YuvUser({\n id: typeof v === 'string' ? v : v.id\n });\n user.title = typeof v === 'string' ? v : v.title;\n return of({\n user,\n state: {\n notFound: e.status === 404\n },\n titleString: e.status === 404 ? this.translate.instant('yuv.form.element.organization.user.not-found') : undefined\n });\n })\n );\n });\n return forkJoin(obs).subscribe((data) => {\n this.innerValue = data;\n const mapped = this.innerValue.map((u) => ({\n label: u.user.title,\n value: u\n }));\n this.acFormControl.setValue(this.multiselect() ? mapped : [mapped[0]], { emitEvent: false });\n this.acFormControl.updateValueAndValidity({ emitEvent: false });\n });\n }\n\n autocompleteFn(query: string) {\n if (query.length >= this.minLength) {\n this.busy.set(true);\n this.#userService\n .queryUser(query, this.excludeMe(), this.#filterRoles)\n .pipe(\n finalize(() => {\n this.busy.set(false);\n })\n )\n .subscribe({\n next: (users: YuvUser[]) => {\n this.autocompleteRes = users\n .filter((user) => !this.innerValue.some((value) => value.user.id === user.id))\n .map(\n (user) =>\n ({\n label: user.title,\n value: {\n user,\n state: {}\n }\n }) as AutocompleteItem\n );\n },\n error: () => {\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({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 UserNode);\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 (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.user.title }}</span>\n </ng-template>\n\n <!-- template for chip -->\n <ng-template #chipTemplate let-item>\n <span class=\"chip\" [ngClass]=\"{ notFound: item.value.state.notFound }\" [matTooltip]=\"item.value.titleString\">\n {{ item.value.user.title || '...' }}\n </span>\n </ng-template>\n</yuv-autocomplete>\n\n<mat-icon class=\"ymt-icon--size-s\" [matTooltip]=\"'yuv.form.element.organization.classify.icon.title' | translate\">{{ multiselect() ? 'group' : 'person' }}</mat-icon>\n","import { CommonModule } from '@angular/common';\nimport { Component, DestroyRef, effect, inject, Input, input, OnDestroy, OnInit, signal, untracked } 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 { TranslateModule } 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: [CommonModule, FormsModule, YuvAutocompleteModule, MatTooltipModule, MatIconModule, ReactiveFormsModule, TranslateModule],\n templateUrl: './organization-set.component.html',\n styleUrl: './organization-set.component.scss',\n providers: [{ provide: MatFormFieldControl, useExisting: OrganizationSetComponent }]\n})\nexport class OrganizationSetComponent extends AbstractMatFormField<string | string[] | undefined> implements ControlValueAccessor, OnDestroy, OnInit {\n #system = inject(SystemService);\n #idmService = inject(IdmService);\n #dRef = inject(DestroyRef);\n\n\n types = input<string[] | undefined>(undefined);\n #typesEffect = effect(() => {\n const types = this.types();\n untracked(() => {\n if (types) this.#targetTypes.set(types);\n });\n });\n #targetTypes = signal<string[]>([]);\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 private _classifications?: string[];\n @Input() set classifications(c: string[] | undefined) {\n this._classifications = c;\n if (c?.length) {\n const classifications = this.#system.getClassifications(c);\n this.#targetTypes.set(\n classifications.has(Classification.STRING_ORGANIZATION_SET) ? classifications.get(Classification.STRING_ORGANIZATION_SET)!.options : []\n );\n }\n }\n get classifications() {\n return this._classifications;\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) ? value.map((v) => (typeof v === 'string' ? JSON.parse(v) : v)) : value ? [JSON.parse(value)] : [];\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 }\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 [matTooltip]=\"'yuv.form.element.organization-set.classify.icon.title' | translate\">{{ multiselect() ? 'group' : 'person' }}</mat-icon>\n\n","import { CommonModule } from '@angular/common';\nimport { 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, TranslateModule } from '@yuuvis/client-core';\nimport { DatetimeRangeComponent } from '../../datetime-range/datetime-range.component';\nimport { DialogComponent } from '@yuuvis/client-framework/common';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'yuv-date-range-picker',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, TranslateModule, 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","import { CommonModule } from '@angular/common';\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 { marker } from '@colsen1991/ngx-translate-extract-marker';\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: [CommonModule, 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);\n } else {\n this.#customDateRange = value.rangeValue;\n this.fc.patchValue(this.#CUSTOM_OPTION);\n }\n } else {\n this.fc.patchValue(this.#ANY_OPTION);\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","import { CommonModule } from '@angular/common';\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 { marker } from '@colsen1991/ngx-translate-extract-marker';\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: [CommonModule, 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);\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';\nimport { CommonModule } from '@angular/common';\nimport { AfterViewInit, Component, DestroyRef, ElementRef, inject, Input, OnDestroy, OnInit } 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 } 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: [CommonModule, MatChipsModule, MatIconModule, ReactiveFormsModule, FormsModule],\n templateUrl: './string.component.html',\n styleUrls: ['./string.component.scss'],\n providers: [{ provide: MatFormFieldControl, useExisting: StringComponent }]\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 @Input() multiselect = 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 @Input() readonly = false;\n /**\n * Enable autofucus for the input (default: false)\n */\n @Input() autofocus = 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 @Input() situation?: string;\n\n /**\n * Regular expression to validate the input value against\n */\n @Input() regex?: string;\n /**\n * Minimal number of characters\n */\n @Input() minLength?: number;\n /**\n * Maximum number of characters\n */\n @Input() maxLength?: number;\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);\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 }\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 // validate min length\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (!Utils.isEmpty(this.minLength) && multiCheck((v) => v.length < this.minLength!)) {\n this.validationErrors.push({ key: 'minlength', params: { minLength: this.minLength } });\n }\n\n // validate max length\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (!Utils.isEmpty(this.maxLength) && multiCheck((v) => v.length > this.maxLength!)) {\n this.validationErrors.push({ key: 'maxlength', params: { maxLength: this.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()\" [disabled]=\"disabled\" [readonly]=\"readonly\" [formControl]=\"fc\" />\n} @else if ((!rows || rows <= 1) && multiselect) {\n <!-- single line input with multiselect-->\n <mat-chip-grid #chipGrid [formControl]=\"fc\" [disabled]=\"disabled\">\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 [disabled]=\"disabled\"\n [matChipInputFor]=\"chipGrid\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"chipsAdd($event)\"\n />\n </mat-chip-grid>\n} @else if (rows && rows > 1) {\n <!-- multi line text inputs -->\n <textarea\n matInput\n class=\"input-textarea\"\n (blur)=\"onBlur()\"\n [rows]=\"rows\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [formControl]=\"fc\"\n ></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 { Component, DestroyRef, effect, inject, Input, input, OnDestroy, OnInit, signal, untracked } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatSelectModule } from '@angular/material/select';\nimport { ControlValueAccessor, FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { AbstractMatFormField, injectNgControl } from '@yuuvis/client-framework/common';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { Classification, ClassificationEntry, SystemService } from '@yuuvis/client-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormUtils } from '../../forms.utils';\n\n@Component({\n selector: 'yuv-catalog',\n imports: [CommonModule, MatSelectModule, ReactiveFormsModule],\n templateUrl: './catalog.component.html',\n styleUrl: './catalog.component.scss',\n providers: [{ provide: MatFormFieldControl, useExisting: CatalogComponent }]\n})\nexport class CatalogComponent extends AbstractMatFormField<string | string[]> implements ControlValueAccessor, OnInit, OnDestroy {\n #system = inject(SystemService);\n #dRef = inject(DestroyRef);\n\n readonly = input<boolean>(false);\n\n multiple = input<boolean>(false);\n\n _options = signal<string[]>([]);\n options = input<string[]>([]);\n #optionsEffect = effect(() => {\n untracked(() => {\n this._options.set(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);\n if (ce && ce.options) {\n this._options.set(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 #onValueChange(val: any) {\n this.value = val;\n this.propagateChange(this.value);\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 }\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 }\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\">{{ o }}</mat-option>\n }\n</mat-select>\n","import { NgModule } from '@angular/core';\nimport { DatetimeComponent, DatetimeRangeComponent, NumberRangeComponent, OrganizationComponent } 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];\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","TranslateService","i1","map","i3","i4","i5","i6","TranslateModule"],"mappings":"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"}
1
+ {"version":3,"file":"yuuvis-client-framework-forms.mjs","sources":["../../../../../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/forms.utils.ts","../../../../../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/organization.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/organization/organization.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/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/elements/catalog/catalog.component.ts","../../../../../libs/yuuvis/client-framework/forms/src/lib/elements/catalog/catalog.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 { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, inject, input, OnInit, signal } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule, ValidationErrors, Validators } 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, TranslateModule } 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 CommonModule,\n ReactiveFormsModule,\n DialogComponent,\n MatDialogModule,\n MatButtonModule,\n MatFormFieldModule,\n MetadataFormFieldComponent,\n TranslateModule,\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)\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) => ({ [key]: this.#errorMessage.getErrorLabel(k, key) }))\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 [headertitel]=\"'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\n [field]=\"element\" [formControlName]=\"element.name\" [situation]=\"situation\"></yuv-metadata-form-field>\n\n @let errorsGroup = errorMessage();\n @if (errorsGroup && tableForm.errors) {\n <div class=\"err-msg\">\n @for (errors of errorsGroup; track $index) {\n @for (error of errors; track $index) {\n {{ error[element.name] }}\n }\n }\n </div>\n }\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","import { DatePipe, DecimalPipe, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\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 { ClipboardService, ObjectFormControl, Situation, SystemService, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { MetadataFormFieldContext, ObjectMetadataElementLabelDirective } from '@yuuvis/client-framework/metadata-form';\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];\n\n@Component({\n selector: 'yuv-data-grid',\n standalone: true,\n imports: [NgClass, TranslateModule, ...MATERIAL, ObjectMetadataElementLabelDirective, YmtIconButtonDirective],\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 DecimalPipe,\n DatePipe\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 #clipboardService = inject(ClipboardService);\n readonly #systemService = inject(SystemService);\n readonly #decimalPipe = inject(DecimalPipe);\n readonly #datePipe = inject(DatePipe);\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 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 displayedColumns = signal<any[]>([]);\n displayedColumnsWithActions = signal<string[]>([]);\n dataSource = signal<any[]>([]);\n\n tableLabel = computed(() => {\n const formElement = this.formElement();\n return formElement ? this.#systemService.getLocalizedResource(`${formElement['name']}_label`) : 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 #readOnlyUpdateEffect = effect(() => {\n const readonly = this.readonly();\n untracked(() => {\n this.displayedColumnsWithActions.update((cols) => {\n if (readonly) {\n const idx = cols.findIndex((c) => c === 'actions');\n if (idx > -1) cols.splice(idx, 1);\n }\n return cols;\n });\n this.displayedColumns.update((cols) => (readonly ? cols.filter((c: any) => c.columnDef !== 'actions') : cols));\n });\n });\n\n #loadData = effect(() => {\n const formElement = this.formElement();\n untracked(() => formElement && this.#updateTable(formElement['elements'], formElement['value'] || []));\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.formElement()\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 copyLine(element: unknown) {\n this.#clipboardService.addToNavigatorClipBoard(JSON.stringify(element));\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) => (JSON.stringify(item) === JSON.stringify(element) ? result : item));\n const formElement = this.formElement();\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.formElement();\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.formElement();\n formElement && this.#updateTable(formElement['elements'], updatedData);\n }\n\n #cellValue(element: any, value: string) {\n switch (element.type) {\n case 'datetime':\n return this.#datePipe.transform(value, 'short', undefined, this.translate.currentLang);\n case 'string':\n return value;\n case 'decimal':\n return this.#decimalPipe.transform(value, '1.2-4', this.translate.currentLang);\n default:\n return value;\n }\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) => (element.isAddRow ? '' : this.#cellValue(el, element[el.name]))\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\n this.displayedColumnsWithActions.set(displayedColumns);\n this.dataSource.set(data);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars\n propagateChange = (fn: () => void) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\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\">\n <mat-icon>add</mat-icon>\n </button>\n }\n </header>\n\n @let displayedCol = displayedColumns();\n @let displayedColActions = displayedColumnsWithActions();\n\n <div class=\"yuv-data-grid__table\" [ngClass]=\"size()\">\n <table mat-table [dataSource]=\"dataSource()\" 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)\">\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 {{ column.cell(element) }}\n </td>\n </ng-container>\n }\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 </div>\n</fieldset>\n<mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"copyLine(selectedRow())\">{{ 'yuv.form.element.data.grid.copy' | translate }}</button>\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, OnInit, effect, inject, input, signal, viewChild } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n ReactiveFormsModule\n} 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';\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 extends AbstractMatFormField<Date | null> implements ControlValueAccessor, OnInit {\n private translate = inject(TranslateService);\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.currentLang);\n locale = input<string>(this.translate.currentLang);\n #localeEffect = effect(() => {\n this._locale.set(this.locale() || this.translate.currentLang);\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 constructor() {\n super();\n this.fc.valueChanges.subscribe((v) => this.onValueChange(v));\n this.fc.statusChanges.subscribe((v) => {\n this.errorState = v === 'INVALID';\n this.ngControl?.control?.setErrors(this.errorState ? { datecontrol: true } : null);\n });\n }\n\n #setLabels() {\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 openCalendar() {\n this.pickerCmp().openCalendar();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n propagateChange = (_: any) => {};\n\n writeValue(value: any): 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 }\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 propagateValue = `${propagateValue.getFullYear()}-${(propagateValue.getMonth() + 1).toString().padStart(2, '0')}-${propagateValue.getDate().toString().padStart(2, '0')}`;\n }\n this.propagateChange(propagateValue);\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 onValueChange(e: any) {\n this.#propagate(e);\n }\n\n ngOnInit(): void {\n this.focusHandled.set(true);\n this.#setLabels();\n this.translate.onLangChange.subscribe((e: LangChangeEvent) => this._locale.set(e.lang));\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","import { CommonModule } from '@angular/common';\nimport { Component, DestroyRef, Input, OnDestroy, OnInit, inject } 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: [CommonModule, 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 * Enables setting time as well (default: false)\n */\n @Input() withTime = false;\n /**\n * Will prevent the input from being changed (default: false)\n */\n @Input() readonly = false;\n @Input() operator = 'eq';\n @Input() situation?: 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 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 { 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, 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 }\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 { CommonModule } from '@angular/common';\nimport { Component, DestroyRef, inject, input, 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 { NumberComponent } from '../number/number.component';\nimport { FormUtils } from '../../forms.utils';\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: [CommonModule, 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 extends AbstractMatFormField<RangeValue> implements ControlValueAccessor, OnInit, OnDestroy {\n #dRef = inject(DestroyRef);\n\n /**\n * Number of decimal places\n */\n @Input() scale?: number;\n /**\n * Overall amount of digits allowed (including decimal places)\n */\n @Input() precision?: number;\n /**\n * Set to true to group number by pattern\n */\n @Input() grouping = false;\n /**\n * The pattern to group number value by\n */\n @Input() pattern?: string;\n /**\n * Will prevent the input from being changed (default: false)\n */\n @Input() readonly = 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 @Input() classifications: string[] = [];\n /**\n * set minimum input value\n */\n @Input() minValue?: number;\n /**\n * set maximum input value\n *\n */\n @Input() maxValue?: number;\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, { nonNullable: true, validators: [Validators.required] }),\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 numberValueFrom: Number(value.firstValue) || undefined,\n operator: match ? match.value : this.availableSearchOptions[0].value,\n numberValue: Number(value.secondValue) || undefined\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 = this.rangeForm.valid && this.rangeForm.value.numberValueFrom != null && 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 { CommonModule } from '@angular/common';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Component, DestroyRef, inject, input, 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 { Classification, SystemService, TranslateModule, TranslateService, UserService, YuvUser } 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, finalize, map } from 'rxjs/operators';\nimport { FormUtils } from '../../forms.utils';\n\ninterface UserNode {\n user: YuvUser;\n state: {\n notFound?: boolean;\n };\n titleString?: string;\n}\n\ntype FormControlValue =\n | string\n | {\n id: string;\n title: string;\n };\n\n/**\n * Creates form input for organisation values.\n *\n * @example\n * <yuv-organization [multiselect]=\"true\"></yuv-organization>\n */\n\n@Component({\n selector: 'yuv-organization',\n standalone: true,\n imports: [CommonModule, FormsModule, YuvAutocompleteModule, MatTooltipModule, MatIconModule, ReactiveFormsModule, TranslateModule],\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 #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: UserNode[] = [];\n set innerValue(iv: UserNode[]) {\n this._innerValue = iv || [];\n }\n get innerValue() {\n return this._innerValue;\n }\n autocompleteRes: AutocompleteItem[] = [];\n #filterRoles: string[] = [];\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 private _classifications?: string[];\n @Input() set classifications(c: string[] | undefined) {\n this._classifications = c;\n if (c?.length) {\n const classifications = this.#system.getClassifications(c);\n if (classifications.has(Classification.STRING_ORGANIZATION)) {\n const options = classifications.get(Classification.STRING_ORGANIZATION)!.options;\n this.#filterRoles = options;\n }\n } else {\n this.#filterRoles = [];\n }\n }\n get classifications() {\n return this._classifications;\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 if (value) {\n this.value = value;\n this.resolveFn(value);\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 }\n\n #getPropagateValue(): FormControlValue | FormControlValue[] | undefined {\n if (this.multiselect()) {\n return this.innerValue.map((v) => (this.withMetadata() ? { id: v.user.id, title: v.user.title } : v.user.id));\n } else if (this.innerValue.length) {\n return this.withMetadata() ? { id: this.innerValue[0].user.id, title: this.innerValue[0].user.title } : this.innerValue[0].user.id;\n } else return undefined;\n }\n\n resolveFn(value: any) {\n const obs: Observable<UserNode>[] = (value instanceof Array ? value : [value]).map((v) => {\n const valueID = typeof v === 'string' ? v : v.id;\n\n const match: UserNode | undefined = this.innerValue.find((iv) => iv.user.id === valueID);\n return match\n ? of(match)\n : this.#userService.getUserById(valueID).pipe(\n map((res: YuvUser) => ({\n user: res,\n state: {}\n })),\n catchError((e: HttpErrorResponse) => {\n const user = new YuvUser({\n id: typeof v === 'string' ? v : v.id\n });\n user.title = typeof v === 'string' ? v : v.title;\n return of({\n user,\n state: {\n notFound: e.status === 404\n },\n titleString: e.status === 404 ? this.translate.instant('yuv.form.element.organization.user.not-found') : undefined\n });\n })\n );\n });\n return forkJoin(obs).subscribe((data) => {\n this.innerValue = data;\n const mapped = this.innerValue.map((u) => ({\n label: u.user.title,\n value: u\n }));\n this.acFormControl.setValue(this.multiselect() ? mapped : [mapped[0]], { emitEvent: false });\n this.acFormControl.updateValueAndValidity({ emitEvent: false });\n });\n }\n\n autocompleteFn(query: string) {\n if (query.length >= this.minLength) {\n this.busy.set(true);\n this.#userService\n .queryUser(query, this.excludeMe(), this.#filterRoles)\n .pipe(\n finalize(() => {\n this.busy.set(false);\n })\n )\n .subscribe({\n next: (users: YuvUser[]) => {\n this.autocompleteRes = users\n .filter((user) => !this.innerValue.some((value) => value.user.id === user.id))\n .map(\n (user) =>\n ({\n label: user.title,\n value: {\n user,\n state: {}\n }\n }) as AutocompleteItem\n );\n },\n error: () => {\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({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 UserNode);\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 (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.user.title }}</span>\n </ng-template>\n\n <!-- template for chip -->\n <ng-template #chipTemplate let-item>\n <span class=\"chip\" [ngClass]=\"{ notFound: item.value.state.notFound }\" [matTooltip]=\"item.value.titleString\">\n {{ item.value.user.title || '...' }}\n </span>\n </ng-template>\n</yuv-autocomplete>\n\n<mat-icon class=\"ymt-icon--size-s\" [matTooltip]=\"'yuv.form.element.organization.classify.icon.title' | translate\">{{ multiselect() ? 'group' : 'person' }}</mat-icon>\n","import { CommonModule } from '@angular/common';\nimport { Component, DestroyRef, effect, inject, Input, input, OnDestroy, OnInit, signal, untracked } 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 { TranslateModule } 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: [CommonModule, FormsModule, YuvAutocompleteModule, MatTooltipModule, MatIconModule, ReactiveFormsModule, TranslateModule],\n templateUrl: './organization-set.component.html',\n styleUrl: './organization-set.component.scss',\n providers: [{ provide: MatFormFieldControl, useExisting: OrganizationSetComponent }]\n})\nexport class OrganizationSetComponent extends AbstractMatFormField<string | string[] | undefined> implements ControlValueAccessor, OnDestroy, OnInit {\n #system = inject(SystemService);\n #idmService = inject(IdmService);\n #dRef = inject(DestroyRef);\n\n\n types = input<string[] | undefined>(undefined);\n #typesEffect = effect(() => {\n const types = this.types();\n untracked(() => {\n if (types) this.#targetTypes.set(types);\n });\n });\n #targetTypes = signal<string[]>([]);\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 private _classifications?: string[];\n @Input() set classifications(c: string[] | undefined) {\n this._classifications = c;\n if (c?.length) {\n const classifications = this.#system.getClassifications(c);\n this.#targetTypes.set(\n classifications.has(Classification.STRING_ORGANIZATION_SET) ? classifications.get(Classification.STRING_ORGANIZATION_SET)!.options : []\n );\n }\n }\n get classifications() {\n return this._classifications;\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) ? value.map((v) => (typeof v === 'string' ? JSON.parse(v) : v)) : value ? [JSON.parse(value)] : [];\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 }\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 [matTooltip]=\"'yuv.form.element.organization-set.classify.icon.title' | translate\">{{ multiselect() ? 'group' : 'person' }}</mat-icon>\n\n","import { CommonModule } from '@angular/common';\nimport { 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, TranslateModule } from '@yuuvis/client-core';\nimport { DatetimeRangeComponent } from '../../datetime-range/datetime-range.component';\nimport { DialogComponent } from '@yuuvis/client-framework/common';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'yuv-date-range-picker',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, TranslateModule, 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","import { CommonModule } from '@angular/common';\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 { marker } from '@colsen1991/ngx-translate-extract-marker';\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: [CommonModule, 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);\n } else {\n this.#customDateRange = value.rangeValue;\n this.fc.patchValue(this.#CUSTOM_OPTION);\n }\n } else {\n this.fc.patchValue(this.#ANY_OPTION);\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","import { CommonModule } from '@angular/common';\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 { marker } from '@colsen1991/ngx-translate-extract-marker';\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: [CommonModule, 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);\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';\nimport { CommonModule } from '@angular/common';\nimport { AfterViewInit, Component, DestroyRef, ElementRef, inject, Input, OnDestroy, OnInit } 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 } 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: [CommonModule, MatChipsModule, MatIconModule, ReactiveFormsModule, FormsModule],\n templateUrl: './string.component.html',\n styleUrls: ['./string.component.scss'],\n providers: [{ provide: MatFormFieldControl, useExisting: StringComponent }]\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 @Input() multiselect = 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 @Input() readonly = false;\n /**\n * Enable autofucus for the input (default: false)\n */\n @Input() autofocus = 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 @Input() situation?: string;\n\n /**\n * Regular expression to validate the input value against\n */\n @Input() regex?: string;\n /**\n * Minimal number of characters\n */\n @Input() minLength?: number;\n /**\n * Maximum number of characters\n */\n @Input() maxLength?: number;\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);\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 }\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 // validate min length\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (!Utils.isEmpty(this.minLength) && multiCheck((v) => v.length < this.minLength!)) {\n this.validationErrors.push({ key: 'minlength', params: { minLength: this.minLength } });\n }\n\n // validate max length\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (!Utils.isEmpty(this.maxLength) && multiCheck((v) => v.length > this.maxLength!)) {\n this.validationErrors.push({ key: 'maxlength', params: { maxLength: this.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()\" [disabled]=\"disabled\" [readonly]=\"readonly\" [formControl]=\"fc\" />\n} @else if ((!rows || rows <= 1) && multiselect) {\n <!-- single line input with multiselect-->\n <mat-chip-grid #chipGrid [formControl]=\"fc\" [disabled]=\"disabled\">\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 [disabled]=\"disabled\"\n [matChipInputFor]=\"chipGrid\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"chipsAdd($event)\"\n />\n </mat-chip-grid>\n} @else if (rows && rows > 1) {\n <!-- multi line text inputs -->\n <textarea\n matInput\n class=\"input-textarea\"\n (blur)=\"onBlur()\"\n [rows]=\"rows\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [formControl]=\"fc\"\n ></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 { Component, DestroyRef, effect, inject, Input, input, OnDestroy, OnInit, signal, untracked } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatSelectModule } from '@angular/material/select';\nimport { ControlValueAccessor, FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { AbstractMatFormField, injectNgControl } from '@yuuvis/client-framework/common';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { Classification, ClassificationEntry, SystemService } from '@yuuvis/client-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormUtils } from '../../forms.utils';\n\n@Component({\n selector: 'yuv-catalog',\n imports: [CommonModule, MatSelectModule, ReactiveFormsModule],\n templateUrl: './catalog.component.html',\n styleUrl: './catalog.component.scss',\n providers: [{ provide: MatFormFieldControl, useExisting: CatalogComponent }]\n})\nexport class CatalogComponent extends AbstractMatFormField<string | string[]> implements ControlValueAccessor, OnInit, OnDestroy {\n #system = inject(SystemService);\n #dRef = inject(DestroyRef);\n\n readonly = input<boolean>(false);\n\n multiple = input<boolean>(false);\n\n _options = signal<string[]>([]);\n options = input<string[]>([]);\n #optionsEffect = effect(() => {\n untracked(() => {\n this._options.set(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);\n if (ce && ce.options) {\n this._options.set(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 #onValueChange(val: any) {\n this.value = val;\n this.propagateChange(this.value);\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 }\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 }\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\">{{ o }}</mat-option>\n }\n</mat-select>\n","import { NgModule } from '@angular/core';\nimport { DatetimeComponent, DatetimeRangeComponent, NumberRangeComponent, OrganizationComponent } 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];\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","TranslateService","i1","map","i3","i4","i5","i6","TranslateModule"],"mappings":"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"}