@alfresco/adf-core 8.4.0-20032496569 → 8.4.0-20091691691

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Input, ChangeDetectionStrategy, ViewEncapsulation, Component, inject, Injectable, TemplateRef, ContentChild, Directive, ContentChildren, RendererFactory2, effect, Optional, Inject, NgModule, HostBinding, Pipe, InjectionToken, provideAppInitializer, EventEmitter, HostListener, ViewChild, Output, ViewChildren, DestroyRef, QueryList, Self, signal, computed, DEFAULT_CURRENCY_CODE, SecurityContext, ElementRef, ViewContainerRef, forwardRef, Compiler, ChangeDetectorRef, Injector } from '@angular/core';
2
+ import { Input, ChangeDetectionStrategy, ViewEncapsulation, Component, inject, Injectable, TemplateRef, ContentChild, Directive, ContentChildren, RendererFactory2, effect, Optional, Inject, NgModule, HostBinding, Pipe, InjectionToken, provideAppInitializer, EventEmitter, HostListener, ViewChild, Output, ViewChildren, DestroyRef, QueryList, Self, signal, computed, DEFAULT_CURRENCY_CODE, SecurityContext, ElementRef, forwardRef, ViewContainerRef, Compiler, ChangeDetectorRef, Injector } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule, DOCUMENT, NgIf, NgClass, NgForOf, AsyncPipe, NgTemplateOutlet, NgStyle, DecimalPipe, DatePipe, CurrencyPipe, NgFor } from '@angular/common';
5
5
  import * as i2 from '@angular/material/table';
@@ -43,9 +43,9 @@ import { MatToolbarModule } from '@angular/material/toolbar';
43
43
  import * as i1$7 from '@angular/material/dialog';
44
44
  import { MAT_DIALOG_DATA, MatDialogModule, MatDialog } from '@angular/material/dialog';
45
45
  import * as i4 from '@angular/forms';
46
- import { UntypedFormControl, Validators, ReactiveFormsModule, FormsModule, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';
46
+ import { UntypedFormControl, Validators, ReactiveFormsModule, FormsModule, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
47
47
  import * as i2$4 from '@angular/material/form-field';
48
- import { MatFormFieldModule } from '@angular/material/form-field';
48
+ import { MatFormFieldModule, MatError } from '@angular/material/form-field';
49
49
  import * as i3$1 from '@angular/material/input';
50
50
  import { MatInputModule } from '@angular/material/input';
51
51
  import * as i3$2 from '@angular/cdk/a11y';
@@ -18187,7 +18187,7 @@ class CardViewTextItemComponent extends BaseCardView {
18187
18187
  return String(Math.trunc(Number(value)));
18188
18188
  }
18189
18189
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: CardViewTextItemComponent, deps: [{ token: ClipboardService }, { token: TranslationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
18190
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: CardViewTextItemComponent, isStandalone: true, selector: "adf-card-view-textitem", inputs: { displayEmpty: "displayEmpty", copyToClipboardAction: "copyToClipboardAction", useChipsForMultiValueProperty: "useChipsForMultiValueProperty", multiValueSeparator: "multiValueSeparator", displayLabelForChips: "displayLabelForChips" }, host: { classAttribute: "adf-card-view-textitem" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngSwitch]=\"templateType\">\n <div *ngSwitchDefault>\n <mat-form-field\n subscriptSizing=\"dynamic\"\n [floatLabel]=\"'always'\"\n class=\"adf-property-field adf-card-textitem-field\"\n [ngClass]=\"{\n 'adf-property-read-only': !isEditable\n }\"\n >\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >\n {{ property.label | translate }}\n </mat-label>\n\n <input\n matInput\n *ngIf=\"!property.multiline\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty,\n 'adf-property-value-has-error': isEditable && hasErrors,\n 'adf-property-value-not-editable': !editable\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"textInput\"\n (dblclick)=\"copyToClipboard(property.displayValue)\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n (keydown)=\"undoText($event)\"\n />\n <textarea\n matInput\n *ngIf=\"property.multiline\"\n title=\"{{ property.label | translate }}\"\n [cdkTextareaAutosize]=\"true\"\n [cdkAutosizeMinRows]=\"1\"\n [cdkAutosizeMaxRows]=\"5\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"textInput\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n >\n </textarea>\n </mat-form-field>\n </div>\n\n <div\n *ngSwitchCase=\"'chipsTemplate'\"\n class=\"adf-property-field adf-textitem-chip-list-container\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n >\n <mat-label\n *ngIf=\"showLabelForChips\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <mat-chip-grid #chipElement class=\"adf-textitem-chip-list\">\n <mat-chip-row *ngFor=\"let propertyValue of editedValue; let idx = index\" [removable]=\"isEditable\" (removed)=\"removeValueFromList(idx)\">\n {{ propertyValue }}\n <mat-icon *ngIf=\"isEditable\" matChipRemove>cancel</mat-icon>\n </mat-chip-row>\n </mat-chip-grid>\n\n <mat-form-field\n *ngIf=\"isEditable\"\n [floatLabel]=\"'always'\"\n class=\"adf-property-field adf-textitem-chip-list-input\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n >\n <input\n matInput\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"editedValue ? '' : (property.default | translate)\"\n [attr.aria-label]=\"property.label | translate\"\n [matChipInputFor]=\"chipElement\"\n [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"addValueToList($event)\"\n [attr.data-automation-id]=\"'card-textitem-editchipinput-' + property.key\"\n />\n </mat-form-field>\n </div>\n\n <div\n *ngSwitchCase=\"'clickableTemplate'\"\n role=\"button\"\n class=\"adf-textitem-clickable\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n [attr.data-automation-id]=\"'card-textitem-toggle-' + property.key\"\n tabindex=\"0\"\n (keyup.enter)=\"clicked()\"\n (click)=\"clicked()\"\n >\n <mat-form-field class=\"adf-property-field adf-card-textitem-field\" [floatLabel]=\"'always'\">\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <input\n matInput\n [type]=\"property.inputType\"\n class=\"adf-property-value\"\n title=\"{{ property.label | translate }}\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-textitem-clickable-value': isClickable,\n 'adf-property-readonly-value': isReadonlyProperty,\n 'adf-property-value-has-error': isEditable && hasErrors,\n 'adf-property-value-has-icon-suffix': showClickableIcon\n }\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [(ngModel)]=\"editedValue\"\n (blur)=\"update()\"\n (keydown.enter)=\"update()\"\n [readonly]=\"!isEditable\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n />\n <button\n mat-icon-button\n matSuffix\n *ngIf=\"showClickableIcon\"\n class=\"adf-textitem-action\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.data-automation-id]=\"'card-textitem-clickable-icon-' + property.key\"\n >\n <mat-icon class=\"adf-textitem-icon\">{{ property?.icon }}</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'emptyTemplate'\">\n <span class=\"adf-textitem-default-value\">{{ property.default | translate }}</span>\n </div>\n\n <mat-error *ngIf=\"isEditable && hasErrors\" class=\"adf-textitem-error\" [attr.data-automation-id]=\"'card-textitem-error-' + property.key\">\n <ul>\n <li *ngFor=\"let error of errors\">{{ error.message | translate : error }}</li>\n </ul>\n </mat-error>\n</div>\n", styles: [".adf-card-view-textitem .adf-textitem-error{font-size:var(--theme-caption-font-size);padding-top:6px}.adf-card-view-textitem .adf-textitem-error:before{display:none}.adf-card-view-textitem .adf-textitem-error ul{margin:0;padding:0;list-style-type:none}.adf-card-view-textitem .adf-textitem-error ul li{margin:0;padding:0}.adf-card-view-textitem .adf-textitem-action{width:30px;height:30px;padding:0;line-height:20px;color:var(--adf-theme-foreground-text-color-025)}.adf-card-view-textitem .adf-textitem-action:hover,.adf-card-view-textitem .adf-textitem-action:focus{color:var(--adf-theme-foreground-text-color)}.adf-card-view-textitem .adf-textitem-action .mat-mdc-button-touch-target{width:30px;height:30px}.adf-card-view-textitem .mat-mdc-form-field-icon-suffix{position:absolute;right:1px;bottom:7px}.adf-card-view-textitem .adf-textitem-chip-list-container .mat-mdc-floating-label{margin-top:6px}.adf-card-view-textitem .adf-textitem-chip-list-container .mat-mdc-form-field-infix{padding-top:0}.adf-card-view-textitem .adf-textitem-chip-list-container .mat-mdc-form-field-infix .adf-property-value{margin-left:0}.adf-card-view-textitem .adf-textitem-clickable{cursor:pointer;padding-top:3px}.adf-card-view-textitem .adf-textitem-clickable .adf-textitem-action:hover{color:var(--adf-theme-foreground-text-color)}.adf-card-view-textitem .adf-textitem-clickable .adf-property-field .mat-mdc-input-element{color:var(--theme-primary-color);cursor:pointer}.adf-card-view-textitem .adf-textitem-default-value{color:var(--adf-theme-foreground-text-color-064)}.adf-card-view-textitem .adf-property-value-not-editable{color:var(--adf-metadata-property-panel-title-color)}.adf-card-view-textitem .adf-property-value-has-icon-suffix{padding-right:34px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i6.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i8.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i8.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i8.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i8.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatSnackBarModule }], encapsulation: i0.ViewEncapsulation.None }); }
18190
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: CardViewTextItemComponent, isStandalone: true, selector: "adf-card-view-textitem", inputs: { displayEmpty: "displayEmpty", copyToClipboardAction: "copyToClipboardAction", useChipsForMultiValueProperty: "useChipsForMultiValueProperty", multiValueSeparator: "multiValueSeparator", displayLabelForChips: "displayLabelForChips" }, host: { classAttribute: "adf-card-view-textitem" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngSwitch]=\"templateType\">\n <div *ngSwitchDefault>\n <mat-form-field\n subscriptSizing=\"dynamic\"\n [floatLabel]=\"'always'\"\n class=\"adf-property-field adf-card-textitem-field\"\n [ngClass]=\"{\n 'adf-property-read-only': !isEditable\n }\"\n >\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >\n {{ property.label | translate }}\n </mat-label>\n\n <input\n matInput\n *ngIf=\"!property.multiline\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty,\n 'adf-property-value-has-error': isEditable && hasErrors,\n 'adf-property-value-not-editable': !editable\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"textInput\"\n (dblclick)=\"copyToClipboard(property.displayValue)\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n (keydown)=\"undoText($event)\"\n (blur)=\"update()\"\n [aria-describedby]=\"'adf-card-textitem-error-' + property.key\"\n />\n <textarea\n matInput\n *ngIf=\"property.multiline\"\n title=\"{{ property.label | translate }}\"\n [cdkTextareaAutosize]=\"true\"\n [cdkAutosizeMinRows]=\"1\"\n [cdkAutosizeMaxRows]=\"5\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"textInput\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n >\n </textarea>\n </mat-form-field>\n </div>\n\n <div\n *ngSwitchCase=\"'chipsTemplate'\"\n class=\"adf-property-field adf-textitem-chip-list-container\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n >\n <mat-label\n *ngIf=\"showLabelForChips\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <mat-chip-grid #chipElement class=\"adf-textitem-chip-list\">\n <mat-chip-row *ngFor=\"let propertyValue of editedValue; let idx = index\" [removable]=\"isEditable\" (removed)=\"removeValueFromList(idx)\">\n {{ propertyValue }}\n <mat-icon *ngIf=\"isEditable\" matChipRemove>cancel</mat-icon>\n </mat-chip-row>\n </mat-chip-grid>\n\n <mat-form-field\n *ngIf=\"isEditable\"\n [floatLabel]=\"'always'\"\n class=\"adf-property-field adf-textitem-chip-list-input\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n >\n <input\n matInput\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"editedValue ? '' : (property.default | translate)\"\n [attr.aria-label]=\"property.label | translate\"\n [matChipInputFor]=\"chipElement\"\n [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"addValueToList($event)\"\n [attr.data-automation-id]=\"'card-textitem-editchipinput-' + property.key\"\n />\n </mat-form-field>\n </div>\n\n <div\n *ngSwitchCase=\"'clickableTemplate'\"\n role=\"button\"\n class=\"adf-textitem-clickable\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n [attr.data-automation-id]=\"'card-textitem-toggle-' + property.key\"\n tabindex=\"0\"\n (keyup.enter)=\"clicked()\"\n (click)=\"clicked()\"\n >\n <mat-form-field class=\"adf-property-field adf-card-textitem-field\" [floatLabel]=\"'always'\">\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <input\n matInput\n [type]=\"property.inputType\"\n class=\"adf-property-value\"\n title=\"{{ property.label | translate }}\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-textitem-clickable-value': isClickable,\n 'adf-property-readonly-value': isReadonlyProperty,\n 'adf-property-value-has-error': isEditable && hasErrors,\n 'adf-property-value-has-icon-suffix': showClickableIcon\n }\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [(ngModel)]=\"editedValue\"\n (blur)=\"update()\"\n (keydown.enter)=\"update()\"\n [readonly]=\"!isEditable\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n [aria-describedby]=\"'adf-card-textitem-error-' + property.key\"\n />\n <button\n mat-icon-button\n matSuffix\n *ngIf=\"showClickableIcon\"\n class=\"adf-textitem-action\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.data-automation-id]=\"'card-textitem-clickable-icon-' + property.key\"\n >\n <mat-icon class=\"adf-textitem-icon\">{{ property?.icon }}</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'emptyTemplate'\">\n <span class=\"adf-textitem-default-value\">{{ property.default | translate }}</span>\n </div>\n\n <mat-error\n *ngIf=\"isEditable && hasErrors\"\n class=\"adf-textitem-error\"\n [attr.data-automation-id]=\"'card-textitem-error-' + property.key\"\n [id]=\"'adf-card-textitem-error-' + property.key\"\n role=\"alert\"\n aria-live=\"polite\">\n <ul>\n <li *ngFor=\"let error of errors\">{{ error.message | translate : error }}</li>\n </ul>\n </mat-error>\n</div>\n", styles: [".adf-card-view-textitem .adf-textitem-error{font-size:var(--theme-caption-font-size);padding-top:6px}.adf-card-view-textitem .adf-textitem-error:before{display:none}.adf-card-view-textitem .adf-textitem-error ul{margin:0;padding:0;list-style-type:none}.adf-card-view-textitem .adf-textitem-error ul li{margin:0;padding:0}.adf-card-view-textitem .adf-textitem-action{width:30px;height:30px;padding:0;line-height:20px;color:var(--adf-theme-foreground-text-color-025)}.adf-card-view-textitem .adf-textitem-action:hover,.adf-card-view-textitem .adf-textitem-action:focus{color:var(--adf-theme-foreground-text-color)}.adf-card-view-textitem .adf-textitem-action .mat-mdc-button-touch-target{width:30px;height:30px}.adf-card-view-textitem .mat-mdc-form-field-icon-suffix{position:absolute;right:1px;bottom:7px}.adf-card-view-textitem .adf-textitem-chip-list-container .mat-mdc-floating-label{margin-top:6px}.adf-card-view-textitem .adf-textitem-chip-list-container .mat-mdc-form-field-infix{padding-top:0}.adf-card-view-textitem .adf-textitem-chip-list-container .mat-mdc-form-field-infix .adf-property-value{margin-left:0}.adf-card-view-textitem .adf-textitem-clickable{cursor:pointer;padding-top:3px}.adf-card-view-textitem .adf-textitem-clickable .adf-textitem-action:hover{color:var(--adf-theme-foreground-text-color)}.adf-card-view-textitem .adf-textitem-clickable .adf-property-field .mat-mdc-input-element{color:var(--theme-primary-color);cursor:pointer}.adf-card-view-textitem .adf-textitem-default-value{color:var(--adf-theme-foreground-text-color-064)}.adf-card-view-textitem .adf-property-value-not-editable{color:var(--adf-metadata-property-panel-title-color)}.adf-card-view-textitem .adf-property-value-has-icon-suffix{padding-right:34px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i6.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i8.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i8.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i8.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i8.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatSnackBarModule }], encapsulation: i0.ViewEncapsulation.None }); }
18191
18191
  }
18192
18192
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: CardViewTextItemComponent, decorators: [{
18193
18193
  type: Component,
@@ -18202,7 +18202,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
18202
18202
  FormsModule,
18203
18203
  MatButtonModule,
18204
18204
  MatSnackBarModule
18205
- ], encapsulation: ViewEncapsulation.None, host: { class: 'adf-card-view-textitem' }, template: "<div [ngSwitch]=\"templateType\">\n <div *ngSwitchDefault>\n <mat-form-field\n subscriptSizing=\"dynamic\"\n [floatLabel]=\"'always'\"\n class=\"adf-property-field adf-card-textitem-field\"\n [ngClass]=\"{\n 'adf-property-read-only': !isEditable\n }\"\n >\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >\n {{ property.label | translate }}\n </mat-label>\n\n <input\n matInput\n *ngIf=\"!property.multiline\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty,\n 'adf-property-value-has-error': isEditable && hasErrors,\n 'adf-property-value-not-editable': !editable\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"textInput\"\n (dblclick)=\"copyToClipboard(property.displayValue)\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n (keydown)=\"undoText($event)\"\n />\n <textarea\n matInput\n *ngIf=\"property.multiline\"\n title=\"{{ property.label | translate }}\"\n [cdkTextareaAutosize]=\"true\"\n [cdkAutosizeMinRows]=\"1\"\n [cdkAutosizeMaxRows]=\"5\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"textInput\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n >\n </textarea>\n </mat-form-field>\n </div>\n\n <div\n *ngSwitchCase=\"'chipsTemplate'\"\n class=\"adf-property-field adf-textitem-chip-list-container\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n >\n <mat-label\n *ngIf=\"showLabelForChips\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <mat-chip-grid #chipElement class=\"adf-textitem-chip-list\">\n <mat-chip-row *ngFor=\"let propertyValue of editedValue; let idx = index\" [removable]=\"isEditable\" (removed)=\"removeValueFromList(idx)\">\n {{ propertyValue }}\n <mat-icon *ngIf=\"isEditable\" matChipRemove>cancel</mat-icon>\n </mat-chip-row>\n </mat-chip-grid>\n\n <mat-form-field\n *ngIf=\"isEditable\"\n [floatLabel]=\"'always'\"\n class=\"adf-property-field adf-textitem-chip-list-input\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n >\n <input\n matInput\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"editedValue ? '' : (property.default | translate)\"\n [attr.aria-label]=\"property.label | translate\"\n [matChipInputFor]=\"chipElement\"\n [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"addValueToList($event)\"\n [attr.data-automation-id]=\"'card-textitem-editchipinput-' + property.key\"\n />\n </mat-form-field>\n </div>\n\n <div\n *ngSwitchCase=\"'clickableTemplate'\"\n role=\"button\"\n class=\"adf-textitem-clickable\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n [attr.data-automation-id]=\"'card-textitem-toggle-' + property.key\"\n tabindex=\"0\"\n (keyup.enter)=\"clicked()\"\n (click)=\"clicked()\"\n >\n <mat-form-field class=\"adf-property-field adf-card-textitem-field\" [floatLabel]=\"'always'\">\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <input\n matInput\n [type]=\"property.inputType\"\n class=\"adf-property-value\"\n title=\"{{ property.label | translate }}\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-textitem-clickable-value': isClickable,\n 'adf-property-readonly-value': isReadonlyProperty,\n 'adf-property-value-has-error': isEditable && hasErrors,\n 'adf-property-value-has-icon-suffix': showClickableIcon\n }\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [(ngModel)]=\"editedValue\"\n (blur)=\"update()\"\n (keydown.enter)=\"update()\"\n [readonly]=\"!isEditable\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n />\n <button\n mat-icon-button\n matSuffix\n *ngIf=\"showClickableIcon\"\n class=\"adf-textitem-action\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.data-automation-id]=\"'card-textitem-clickable-icon-' + property.key\"\n >\n <mat-icon class=\"adf-textitem-icon\">{{ property?.icon }}</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'emptyTemplate'\">\n <span class=\"adf-textitem-default-value\">{{ property.default | translate }}</span>\n </div>\n\n <mat-error *ngIf=\"isEditable && hasErrors\" class=\"adf-textitem-error\" [attr.data-automation-id]=\"'card-textitem-error-' + property.key\">\n <ul>\n <li *ngFor=\"let error of errors\">{{ error.message | translate : error }}</li>\n </ul>\n </mat-error>\n</div>\n", styles: [".adf-card-view-textitem .adf-textitem-error{font-size:var(--theme-caption-font-size);padding-top:6px}.adf-card-view-textitem .adf-textitem-error:before{display:none}.adf-card-view-textitem .adf-textitem-error ul{margin:0;padding:0;list-style-type:none}.adf-card-view-textitem .adf-textitem-error ul li{margin:0;padding:0}.adf-card-view-textitem .adf-textitem-action{width:30px;height:30px;padding:0;line-height:20px;color:var(--adf-theme-foreground-text-color-025)}.adf-card-view-textitem .adf-textitem-action:hover,.adf-card-view-textitem .adf-textitem-action:focus{color:var(--adf-theme-foreground-text-color)}.adf-card-view-textitem .adf-textitem-action .mat-mdc-button-touch-target{width:30px;height:30px}.adf-card-view-textitem .mat-mdc-form-field-icon-suffix{position:absolute;right:1px;bottom:7px}.adf-card-view-textitem .adf-textitem-chip-list-container .mat-mdc-floating-label{margin-top:6px}.adf-card-view-textitem .adf-textitem-chip-list-container .mat-mdc-form-field-infix{padding-top:0}.adf-card-view-textitem .adf-textitem-chip-list-container .mat-mdc-form-field-infix .adf-property-value{margin-left:0}.adf-card-view-textitem .adf-textitem-clickable{cursor:pointer;padding-top:3px}.adf-card-view-textitem .adf-textitem-clickable .adf-textitem-action:hover{color:var(--adf-theme-foreground-text-color)}.adf-card-view-textitem .adf-textitem-clickable .adf-property-field .mat-mdc-input-element{color:var(--theme-primary-color);cursor:pointer}.adf-card-view-textitem .adf-textitem-default-value{color:var(--adf-theme-foreground-text-color-064)}.adf-card-view-textitem .adf-property-value-not-editable{color:var(--adf-metadata-property-panel-title-color)}.adf-card-view-textitem .adf-property-value-has-icon-suffix{padding-right:34px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"] }]
18205
+ ], encapsulation: ViewEncapsulation.None, host: { class: 'adf-card-view-textitem' }, template: "<div [ngSwitch]=\"templateType\">\n <div *ngSwitchDefault>\n <mat-form-field\n subscriptSizing=\"dynamic\"\n [floatLabel]=\"'always'\"\n class=\"adf-property-field adf-card-textitem-field\"\n [ngClass]=\"{\n 'adf-property-read-only': !isEditable\n }\"\n >\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >\n {{ property.label | translate }}\n </mat-label>\n\n <input\n matInput\n *ngIf=\"!property.multiline\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty,\n 'adf-property-value-has-error': isEditable && hasErrors,\n 'adf-property-value-not-editable': !editable\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"textInput\"\n (dblclick)=\"copyToClipboard(property.displayValue)\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n (keydown)=\"undoText($event)\"\n (blur)=\"update()\"\n [aria-describedby]=\"'adf-card-textitem-error-' + property.key\"\n />\n <textarea\n matInput\n *ngIf=\"property.multiline\"\n title=\"{{ property.label | translate }}\"\n [cdkTextareaAutosize]=\"true\"\n [cdkAutosizeMinRows]=\"1\"\n [cdkAutosizeMaxRows]=\"5\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"textInput\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n >\n </textarea>\n </mat-form-field>\n </div>\n\n <div\n *ngSwitchCase=\"'chipsTemplate'\"\n class=\"adf-property-field adf-textitem-chip-list-container\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n >\n <mat-label\n *ngIf=\"showLabelForChips\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <mat-chip-grid #chipElement class=\"adf-textitem-chip-list\">\n <mat-chip-row *ngFor=\"let propertyValue of editedValue; let idx = index\" [removable]=\"isEditable\" (removed)=\"removeValueFromList(idx)\">\n {{ propertyValue }}\n <mat-icon *ngIf=\"isEditable\" matChipRemove>cancel</mat-icon>\n </mat-chip-row>\n </mat-chip-grid>\n\n <mat-form-field\n *ngIf=\"isEditable\"\n [floatLabel]=\"'always'\"\n class=\"adf-property-field adf-textitem-chip-list-input\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n >\n <input\n matInput\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"editedValue ? '' : (property.default | translate)\"\n [attr.aria-label]=\"property.label | translate\"\n [matChipInputFor]=\"chipElement\"\n [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"addValueToList($event)\"\n [attr.data-automation-id]=\"'card-textitem-editchipinput-' + property.key\"\n />\n </mat-form-field>\n </div>\n\n <div\n *ngSwitchCase=\"'clickableTemplate'\"\n role=\"button\"\n class=\"adf-textitem-clickable\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n [attr.data-automation-id]=\"'card-textitem-toggle-' + property.key\"\n tabindex=\"0\"\n (keyup.enter)=\"clicked()\"\n (click)=\"clicked()\"\n >\n <mat-form-field class=\"adf-property-field adf-card-textitem-field\" [floatLabel]=\"'always'\">\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <input\n matInput\n [type]=\"property.inputType\"\n class=\"adf-property-value\"\n title=\"{{ property.label | translate }}\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-textitem-clickable-value': isClickable,\n 'adf-property-readonly-value': isReadonlyProperty,\n 'adf-property-value-has-error': isEditable && hasErrors,\n 'adf-property-value-has-icon-suffix': showClickableIcon\n }\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [(ngModel)]=\"editedValue\"\n (blur)=\"update()\"\n (keydown.enter)=\"update()\"\n [readonly]=\"!isEditable\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n [aria-describedby]=\"'adf-card-textitem-error-' + property.key\"\n />\n <button\n mat-icon-button\n matSuffix\n *ngIf=\"showClickableIcon\"\n class=\"adf-textitem-action\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.data-automation-id]=\"'card-textitem-clickable-icon-' + property.key\"\n >\n <mat-icon class=\"adf-textitem-icon\">{{ property?.icon }}</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'emptyTemplate'\">\n <span class=\"adf-textitem-default-value\">{{ property.default | translate }}</span>\n </div>\n\n <mat-error\n *ngIf=\"isEditable && hasErrors\"\n class=\"adf-textitem-error\"\n [attr.data-automation-id]=\"'card-textitem-error-' + property.key\"\n [id]=\"'adf-card-textitem-error-' + property.key\"\n role=\"alert\"\n aria-live=\"polite\">\n <ul>\n <li *ngFor=\"let error of errors\">{{ error.message | translate : error }}</li>\n </ul>\n </mat-error>\n</div>\n", styles: [".adf-card-view-textitem .adf-textitem-error{font-size:var(--theme-caption-font-size);padding-top:6px}.adf-card-view-textitem .adf-textitem-error:before{display:none}.adf-card-view-textitem .adf-textitem-error ul{margin:0;padding:0;list-style-type:none}.adf-card-view-textitem .adf-textitem-error ul li{margin:0;padding:0}.adf-card-view-textitem .adf-textitem-action{width:30px;height:30px;padding:0;line-height:20px;color:var(--adf-theme-foreground-text-color-025)}.adf-card-view-textitem .adf-textitem-action:hover,.adf-card-view-textitem .adf-textitem-action:focus{color:var(--adf-theme-foreground-text-color)}.adf-card-view-textitem .adf-textitem-action .mat-mdc-button-touch-target{width:30px;height:30px}.adf-card-view-textitem .mat-mdc-form-field-icon-suffix{position:absolute;right:1px;bottom:7px}.adf-card-view-textitem .adf-textitem-chip-list-container .mat-mdc-floating-label{margin-top:6px}.adf-card-view-textitem .adf-textitem-chip-list-container .mat-mdc-form-field-infix{padding-top:0}.adf-card-view-textitem .adf-textitem-chip-list-container .mat-mdc-form-field-infix .adf-property-value{margin-left:0}.adf-card-view-textitem .adf-textitem-clickable{cursor:pointer;padding-top:3px}.adf-card-view-textitem .adf-textitem-clickable .adf-textitem-action:hover{color:var(--adf-theme-foreground-text-color)}.adf-card-view-textitem .adf-textitem-clickable .adf-property-field .mat-mdc-input-element{color:var(--theme-primary-color);cursor:pointer}.adf-card-view-textitem .adf-textitem-default-value{color:var(--adf-theme-foreground-text-color-064)}.adf-card-view-textitem .adf-property-value-not-editable{color:var(--adf-metadata-property-panel-title-color)}.adf-card-view-textitem .adf-property-value-has-icon-suffix{padding-right:34px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"] }]
18206
18206
  }], ctorParameters: () => [{ type: ClipboardService }, { type: TranslationService }, { type: i0.ChangeDetectorRef }], propDecorators: { displayEmpty: [{
18207
18207
  type: Input
18208
18208
  }], copyToClipboardAction: [{
@@ -18497,6 +18497,284 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
18497
18497
  type: Output
18498
18498
  }] } });
18499
18499
 
18500
+ /*!
18501
+ * @license
18502
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
18503
+ *
18504
+ * Licensed under the Apache License, Version 2.0 (the "License");
18505
+ * you may not use this file except in compliance with the License.
18506
+ * You may obtain a copy of the License at
18507
+ *
18508
+ * http://www.apache.org/licenses/LICENSE-2.0
18509
+ *
18510
+ * Unless required by applicable law or agreed to in writing, software
18511
+ * distributed under the License is distributed on an "AS IS" BASIS,
18512
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18513
+ * See the License for the specific language governing permissions and
18514
+ * limitations under the License.
18515
+ */
18516
+ class CardViewItemMatchValidator {
18517
+ constructor(expression, flags, requiresMatch) {
18518
+ this.expression = expression;
18519
+ this.flags = flags;
18520
+ this.requiresMatch = requiresMatch;
18521
+ this.message = 'CORE.CARDVIEW.VALIDATORS.MATCH_VALIDATION_ERROR';
18522
+ }
18523
+ isValid(value) {
18524
+ const regex = new RegExp(this.expression, this?.flags);
18525
+ if (Array.isArray(value)) {
18526
+ return value.every((val) => (this.requiresMatch ? this.matchRegex(val, regex) : !this.matchRegex(val, regex)));
18527
+ }
18528
+ return value === '' || (this.requiresMatch ? this.matchRegex(value, regex) : !this.matchRegex(value, regex));
18529
+ }
18530
+ matchRegex(value, regex) {
18531
+ return regex.test(value);
18532
+ }
18533
+ }
18534
+
18535
+ /*!
18536
+ * @license
18537
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
18538
+ *
18539
+ * Licensed under the Apache License, Version 2.0 (the "License");
18540
+ * you may not use this file except in compliance with the License.
18541
+ * You may obtain a copy of the License at
18542
+ *
18543
+ * http://www.apache.org/licenses/LICENSE-2.0
18544
+ *
18545
+ * Unless required by applicable law or agreed to in writing, software
18546
+ * distributed under the License is distributed on an "AS IS" BASIS,
18547
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18548
+ * See the License for the specific language governing permissions and
18549
+ * limitations under the License.
18550
+ */
18551
+ class CardViewItemIntValidator {
18552
+ constructor() {
18553
+ this.message = 'CORE.CARDVIEW.VALIDATORS.INT_VALIDATION_ERROR';
18554
+ }
18555
+ isValid(value) {
18556
+ if (Array.isArray(value)) {
18557
+ return value.every(this.isIntegerNumber);
18558
+ }
18559
+ return value === '' || (!isNaN(value) && this.isIntegerNumber(value) && this.isNotOnlySpace(value));
18560
+ }
18561
+ isIntegerNumber(value) {
18562
+ const parsedNumber = Number(value);
18563
+ return (parsedNumber | 0) === parsedNumber;
18564
+ }
18565
+ isNotOnlySpace(value) {
18566
+ return String(value).trim() !== '';
18567
+ }
18568
+ }
18569
+
18570
+ /*!
18571
+ * @license
18572
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
18573
+ *
18574
+ * Licensed under the Apache License, Version 2.0 (the "License");
18575
+ * you may not use this file except in compliance with the License.
18576
+ * You may obtain a copy of the License at
18577
+ *
18578
+ * http://www.apache.org/licenses/LICENSE-2.0
18579
+ *
18580
+ * Unless required by applicable law or agreed to in writing, software
18581
+ * distributed under the License is distributed on an "AS IS" BASIS,
18582
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18583
+ * See the License for the specific language governing permissions and
18584
+ * limitations under the License.
18585
+ */
18586
+ class CardViewItemMinMaxValidator {
18587
+ constructor(minValue, maxValue) {
18588
+ this.minValue = minValue;
18589
+ this.maxValue = maxValue;
18590
+ this.message = 'CORE.CARDVIEW.VALIDATORS.MINMAX_VALIDATION_ERROR';
18591
+ this.intValidator = new CardViewItemIntValidator();
18592
+ }
18593
+ isValid(value) {
18594
+ if (Array.isArray(value)) {
18595
+ return value.every((val) => this.isInRange(val, this.minValue, this.maxValue));
18596
+ }
18597
+ return value === '' || (this.intValidator.isValid(value) && this.isInRange(value, this.minValue, this.maxValue));
18598
+ }
18599
+ isInRange(value, min, max) {
18600
+ return value >= min && value <= max;
18601
+ }
18602
+ }
18603
+
18604
+ /*!
18605
+ * @license
18606
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
18607
+ *
18608
+ * Licensed under the Apache License, Version 2.0 (the "License");
18609
+ * you may not use this file except in compliance with the License.
18610
+ * You may obtain a copy of the License at
18611
+ *
18612
+ * http://www.apache.org/licenses/LICENSE-2.0
18613
+ *
18614
+ * Unless required by applicable law or agreed to in writing, software
18615
+ * distributed under the License is distributed on an "AS IS" BASIS,
18616
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18617
+ * See the License for the specific language governing permissions and
18618
+ * limitations under the License.
18619
+ */
18620
+ class CardViewItemLengthValidator {
18621
+ constructor(minLength, maxLength) {
18622
+ this.minLength = minLength;
18623
+ this.maxLength = maxLength;
18624
+ this.message = 'CORE.CARDVIEW.VALIDATORS.LENGTH_VALIDATION_ERROR';
18625
+ }
18626
+ isValid(value) {
18627
+ if (Array.isArray(value)) {
18628
+ return value.every((val) => this.isCorrectLength(val, this.minLength, this.maxLength));
18629
+ }
18630
+ return value === '' || this.isCorrectLength(value, this.minLength, this.maxLength);
18631
+ }
18632
+ isCorrectLength(value, min, max) {
18633
+ const length = value.length;
18634
+ return length >= min && length <= max;
18635
+ }
18636
+ }
18637
+
18638
+ /*!
18639
+ * @license
18640
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
18641
+ *
18642
+ * Licensed under the Apache License, Version 2.0 (the "License");
18643
+ * you may not use this file except in compliance with the License.
18644
+ * You may obtain a copy of the License at
18645
+ *
18646
+ * http://www.apache.org/licenses/LICENSE-2.0
18647
+ *
18648
+ * Unless required by applicable law or agreed to in writing, software
18649
+ * distributed under the License is distributed on an "AS IS" BASIS,
18650
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18651
+ * See the License for the specific language governing permissions and
18652
+ * limitations under the License.
18653
+ */
18654
+ const validators = {
18655
+ minmax: (parameters) => new CardViewItemMinMaxValidator(parameters.minValue, parameters.maxValue),
18656
+ regex: (parameters) => new CardViewItemMatchValidator(parameters.expression, parameters.flags, parameters.requiresMatch),
18657
+ length: (parameters) => new CardViewItemLengthValidator(parameters.minLength, parameters.maxLength)
18658
+ };
18659
+
18660
+ /*!
18661
+ * @license
18662
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
18663
+ *
18664
+ * Licensed under the Apache License, Version 2.0 (the "License");
18665
+ * you may not use this file except in compliance with the License.
18666
+ * You may obtain a copy of the License at
18667
+ *
18668
+ * http://www.apache.org/licenses/LICENSE-2.0
18669
+ *
18670
+ * Unless required by applicable law or agreed to in writing, software
18671
+ * distributed under the License is distributed on an "AS IS" BASIS,
18672
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18673
+ * See the License for the specific language governing permissions and
18674
+ * limitations under the License.
18675
+ */
18676
+ class CardViewBaseItemModel {
18677
+ constructor(props) {
18678
+ this.label = props.label || '';
18679
+ this.value = props.value?.displayName || props.value;
18680
+ this.key = props.key;
18681
+ this.default = props.default;
18682
+ this.editable = !!props.editable;
18683
+ this.clickable = !!props.clickable;
18684
+ this.icon = props.icon || '';
18685
+ this.hint = props.hint || '';
18686
+ this.validators = props.validators || [];
18687
+ this.data = props.data || null;
18688
+ this.multivalued = !!props.multivalued;
18689
+ if (props?.constraints?.length ?? 0) {
18690
+ for (const constraint of props.constraints) {
18691
+ if (constraint.type !== 'LIST') {
18692
+ const validatorFactory = validators[constraint.type.toLowerCase()];
18693
+ if (validatorFactory !== undefined) {
18694
+ this.validators.push(validatorFactory(constraint.parameters));
18695
+ }
18696
+ else {
18697
+ console.warn(`Validator for type ${constraint.type} is not supported`);
18698
+ }
18699
+ }
18700
+ }
18701
+ }
18702
+ }
18703
+ isEmpty() {
18704
+ return (this.value === undefined ||
18705
+ this.value === null ||
18706
+ (typeof this.value === 'string' && this.value.length === 0) ||
18707
+ (Array.isArray(this.value) && this.value.length === 0));
18708
+ }
18709
+ isValid(newValue) {
18710
+ if (!this.validators.length) {
18711
+ return true;
18712
+ }
18713
+ return this.validators.map((validator) => validator.isValid(newValue)).reduce((isValidUntilNow, isValid) => isValidUntilNow && isValid, true);
18714
+ }
18715
+ getValidationErrors(value) {
18716
+ if (!this.validators.length) {
18717
+ return [];
18718
+ }
18719
+ return this.validators.filter((validator) => !validator.isValid(value)).map((validator) => validator);
18720
+ }
18721
+ }
18722
+
18723
+ /*!
18724
+ * @license
18725
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
18726
+ *
18727
+ * Licensed under the Apache License, Version 2.0 (the "License");
18728
+ * you may not use this file except in compliance with the License.
18729
+ * You may obtain a copy of the License at
18730
+ *
18731
+ * http://www.apache.org/licenses/LICENSE-2.0
18732
+ *
18733
+ * Unless required by applicable law or agreed to in writing, software
18734
+ * distributed under the License is distributed on an "AS IS" BASIS,
18735
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18736
+ * See the License for the specific language governing permissions and
18737
+ * limitations under the License.
18738
+ */
18739
+ class CardViewPropertyValidatorDirective {
18740
+ constructor(translateService) {
18741
+ this.translateService = translateService;
18742
+ this.validated = new EventEmitter();
18743
+ }
18744
+ validate(control) {
18745
+ const errors = this.property.isValid(control.value)
18746
+ ? null
18747
+ : Object.fromEntries(this.property.validators.map((validator) => [validator.message, this.translateService.instant(validator.message)]));
18748
+ this.validated.emit(errors ? Object.values(errors) : []);
18749
+ return errors;
18750
+ }
18751
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: CardViewPropertyValidatorDirective, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Directive }); }
18752
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: CardViewPropertyValidatorDirective, isStandalone: true, selector: "[adf-card-view-property-validator]", inputs: { property: "property" }, outputs: { validated: "validated" }, providers: [
18753
+ {
18754
+ provide: NG_VALIDATORS,
18755
+ useExisting: forwardRef(() => CardViewPropertyValidatorDirective),
18756
+ multi: true
18757
+ }
18758
+ ], ngImport: i0 }); }
18759
+ }
18760
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: CardViewPropertyValidatorDirective, decorators: [{
18761
+ type: Directive,
18762
+ args: [{
18763
+ selector: '[adf-card-view-property-validator]',
18764
+ providers: [
18765
+ {
18766
+ provide: NG_VALIDATORS,
18767
+ useExisting: forwardRef(() => CardViewPropertyValidatorDirective),
18768
+ multi: true
18769
+ }
18770
+ ]
18771
+ }]
18772
+ }], ctorParameters: () => [{ type: i1$1.TranslateService }], propDecorators: { property: [{
18773
+ type: Input
18774
+ }], validated: [{
18775
+ type: Output
18776
+ }] } });
18777
+
18500
18778
  /*!
18501
18779
  * @license
18502
18780
  * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
@@ -18516,7 +18794,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
18516
18794
  class CardViewSelectItemComponent extends BaseCardView {
18517
18795
  constructor() {
18518
18796
  super(...arguments);
18519
- this.appConfig = inject(AppConfigService);
18520
18797
  this.displayNoneOption = true;
18521
18798
  this.displayEmpty = true;
18522
18799
  this.filter$ = new BehaviorSubject('');
@@ -18525,8 +18802,13 @@ class CardViewSelectItemComponent extends BaseCardView {
18525
18802
  this.templateType = '';
18526
18803
  this.autocompleteControl = new UntypedFormControl();
18527
18804
  this.destroyRef = inject(DestroyRef);
18805
+ this.appConfig = inject(AppConfigService);
18806
+ this._error = '';
18528
18807
  }
18529
18808
  static { this.HIDE_FILTER_LIMIT = 5; }
18809
+ get error() {
18810
+ return this._error;
18811
+ }
18530
18812
  ngOnChanges(changes) {
18531
18813
  this.value = this.property.value;
18532
18814
  if (changes.property?.firstChange) {
@@ -18583,6 +18865,9 @@ class CardViewSelectItemComponent extends BaseCardView {
18583
18865
  this.cardViewUpdateService.update({ ...this.property }, selectedOption);
18584
18866
  this.property.value = selectedOption;
18585
18867
  }
18868
+ onValidation(errors) {
18869
+ this._error = errors.join('<br>');
18870
+ }
18586
18871
  get showProperty() {
18587
18872
  return this.displayEmpty || !this.property.isEmpty();
18588
18873
  }
@@ -18590,7 +18875,7 @@ class CardViewSelectItemComponent extends BaseCardView {
18590
18875
  return this.appConfig.get('content-metadata.selectFilterLimit', CardViewSelectItemComponent.HIDE_FILTER_LIMIT);
18591
18876
  }
18592
18877
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: CardViewSelectItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
18593
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: CardViewSelectItemComponent, isStandalone: true, selector: "adf-card-view-selectitem", inputs: { options$: "options$", displayNoneOption: "displayNoneOption", displayEmpty: "displayEmpty" }, host: { classAttribute: "adf-card-view-selectitem" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!property.isEmpty() || isEditable\">\n <div [ngSwitch]=\"templateType\">\n <div *ngSwitchDefault>\n <div *ngIf=\"!isEditable\"\n [attr.data-automation-id]=\"'card-select-label-' + property.key\"\n class=\"adf-property-label adf-property-label-non-editable\"\n >{{ property.label | translate }}\n </div>\n <div class=\"adf-property-field\">\n <div\n *ngIf=\"!isEditable\"\n class=\"adf-property-value adf-property-read-only\"\n [attr.data-automation-id]=\"'select-readonly-value-' + property.key\"\n data-automation-class=\"read-only-value\"\n [title]=\"property.displayValue | async | translate\"\n >\n {{ property.displayValue | async | translate }}\n </div>\n <div *ngIf=\"isEditable\">\n <mat-form-field class=\"adf-property-value\">\n <mat-label\n [attr.data-automation-id]=\"'card-select-label-' + property.key\"\n class=\"adf-property-label adf-property-value-editable\"\n [ngClass]=\"{\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >{{ property.label | translate }}\n </mat-label>\n <mat-select\n [(value)]=\"value\"\n [ngClass]=\"{ 'adf-property-readonly-value': isReadonlyProperty }\"\n panelClass=\"adf-select-filter\"\n (selectionChange)=\"onChange($event)\"\n data-automation-class=\"select-box\"\n [aria-label]=\"property.label | translate\"\n >\n <adf-select-filter-input *ngIf=\"showInputFilter\" (change)=\"onFilterInputChange($event)\" />\n <mat-option *ngIf=\"displayNoneOption\">{{ 'CORE.CARDVIEW.NONE' | translate }}</mat-option>\n <mat-option *ngFor=\"let option of list$ | async\" [value]=\"option.key\">\n {{ option.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </div>\n <div *ngSwitchCase=\"'autocompleteBased'\">\n <mat-form-field\n class=\"adf-property-field adf-card-selectitem-autocomplete \"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n [floatLabel]=\"property.default ? 'always' : null\"\n >\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <input\n matInput\n [matAutocomplete]=\"auto\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"autocompleteControl\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-value-' + property.key\"\n />\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onOptionSelected($event)\">\n <mat-option\n *ngFor=\"let option of property.options$ | async\"\n [value]=\"option.key\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-option-' + property.key\"\n >\n {{ option.label }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n </div>\n</ng-container>\n", styles: [".adf-card-view-selectitem .adf-property-value{width:100%}.adf-card-view-selectitem .adf-select-filter-input{background:var(--adf-theme-background-card-color);position:sticky;top:0;left:0;right:0;z-index:1}.adf-card-view-selectitem .adf-property-value-editable{padding-left:0}.adf-card-view-selectitem .adf-property-value-editable .mdc-text-field--no-label .mat-mdc-form-field-infix{padding:0}.adf-card-view-selectitem .adf-property-value-editable .mat-mdc-text-field-wrapper{background-color:unset}.adf-card-view-selectitem .adf-property-value-editable .mat-mdc-select{margin-top:0;border-radius:6px}.adf-card-view-selectitem .adf-property-value-editable .mat-mdc-select .mat-mdc-select-value{color:var(--adf-metadata-action-button-clear-color)}.adf-card-view-selectitem .adf-property-value-editable .mat-mdc-select .mat-mdc-select-trigger{padding-left:6px;padding-right:6px}.adf-card-view-selectitem .adf-card-selectitem-autocomplete .adf-property-value-editable{padding-left:10px}.adf-card-view-selectitem .mat-mdc-form-field-subscript-wrapper{display:none}.adf-card-view-selectitem .adf-property-read-only{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:default;padding:6px 0}.adf-card-view-selectitem .mdc-line-ripple{display:none}.adf-card-view-selectitem .adf-property-readonly-value{color:var(--adf-metadata-property-panel-label-color)}.adf-card-view-selectitem .adf-property-label-non-editable{cursor:default;font-size:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$4.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3$3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i3$3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: SelectFilterInputComponent, selector: "adf-select-filter-input", outputs: ["change"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i4$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i4$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], encapsulation: i0.ViewEncapsulation.None }); }
18878
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: CardViewSelectItemComponent, isStandalone: true, selector: "adf-card-view-selectitem", inputs: { options$: "options$", displayNoneOption: "displayNoneOption", displayEmpty: "displayEmpty" }, host: { classAttribute: "adf-card-view-selectitem" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!property.isEmpty() || isEditable\">\n <div [ngSwitch]=\"templateType\">\n <div *ngSwitchDefault>\n <div *ngIf=\"!isEditable\"\n [attr.data-automation-id]=\"'card-select-label-' + property.key\"\n class=\"adf-property-label adf-property-label-non-editable\"\n >{{ property.label | translate }}\n </div>\n <div class=\"adf-property-field\">\n <div\n *ngIf=\"!isEditable\"\n class=\"adf-property-value adf-property-read-only\"\n [attr.data-automation-id]=\"'select-readonly-value-' + property.key\"\n data-automation-class=\"read-only-value\"\n [title]=\"property.displayValue | async | translate\"\n >\n {{ property.displayValue | async | translate }}\n </div>\n <div *ngIf=\"isEditable\">\n <mat-form-field class=\"adf-property-value\">\n <mat-label\n [attr.data-automation-id]=\"'card-select-label-' + property.key\"\n class=\"adf-property-label adf-property-value-editable\"\n [ngClass]=\"{\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >{{ property.label | translate }}\n </mat-label>\n <mat-select\n [(ngModel)]=\"value\"\n [ngClass]=\"{ 'adf-property-readonly-value': isReadonlyProperty }\"\n panelClass=\"adf-select-filter\"\n (selectionChange)=\"onChange($event)\"\n data-automation-class=\"select-box\"\n [aria-label]=\"property.label | translate\"\n adf-card-view-property-validator\n [property]=\"property\"\n (validated)=\"onValidation($event)\"\n >\n <adf-select-filter-input *ngIf=\"showInputFilter\" (change)=\"onFilterInputChange($event)\" />\n <mat-option *ngIf=\"displayNoneOption\">{{ 'CORE.CARDVIEW.NONE' | translate }}</mat-option>\n <mat-option *ngFor=\"let option of list$ | async\" [value]=\"option.key\">\n {{ option.label | translate }}\n </mat-option>\n </mat-select>\n <mat-error [innerHTML]=\"error\" />\n </mat-form-field>\n </div>\n </div>\n </div>\n <div *ngSwitchCase=\"'autocompleteBased'\">\n <mat-form-field\n class=\"adf-property-field adf-card-selectitem-autocomplete \"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n [floatLabel]=\"property.default ? 'always' : null\"\n >\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <input\n matInput\n [matAutocomplete]=\"auto\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"autocompleteControl\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-value-' + property.key\"\n />\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onOptionSelected($event)\">\n <mat-option\n *ngFor=\"let option of property.options$ | async\"\n [value]=\"option.key\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-option-' + property.key\"\n >\n {{ option.label }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n </div>\n</ng-container>\n", styles: [".adf-card-view-selectitem .adf-property-value{width:100%}.adf-card-view-selectitem .adf-select-filter-input{background:var(--adf-theme-background-card-color);position:sticky;top:0;left:0;right:0;z-index:1}.adf-card-view-selectitem .adf-property-value-editable{padding-left:0}.adf-card-view-selectitem .adf-property-value-editable .mdc-text-field--no-label .mat-mdc-form-field-infix{padding:0}.adf-card-view-selectitem .adf-property-value-editable .mat-mdc-text-field-wrapper{background-color:unset}.adf-card-view-selectitem .adf-property-value-editable .mat-mdc-select{margin-top:0;border-radius:6px}.adf-card-view-selectitem .adf-property-value-editable .mat-mdc-select .mat-mdc-select-value{color:var(--adf-metadata-action-button-clear-color)}.adf-card-view-selectitem .adf-property-value-editable .mat-mdc-select .mat-mdc-select-trigger{padding-left:6px;padding-right:6px}.adf-card-view-selectitem .adf-card-selectitem-autocomplete .adf-property-value-editable{padding-left:10px}.adf-card-view-selectitem .mat-mdc-form-field-subscript-wrapper{display:block}.adf-card-view-selectitem .adf-property-read-only{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:default;padding:6px 0}.adf-card-view-selectitem .mdc-line-ripple{display:none}.adf-card-view-selectitem .adf-property-readonly-value{color:var(--adf-metadata-property-panel-label-color)}.adf-card-view-selectitem .adf-property-label-non-editable{cursor:default;font-size:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3$3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i3$3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: SelectFilterInputComponent, selector: "adf-select-filter-input", outputs: ["change"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i4$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i4$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: CardViewPropertyValidatorDirective, selector: "[adf-card-view-property-validator]", inputs: ["property"], outputs: ["validated"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None }); }
18594
18879
  }
18595
18880
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: CardViewSelectItemComponent, decorators: [{
18596
18881
  type: Component,
@@ -18602,8 +18887,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
18602
18887
  SelectFilterInputComponent,
18603
18888
  MatAutocompleteModule,
18604
18889
  MatInputModule,
18605
- ReactiveFormsModule
18606
- ], encapsulation: ViewEncapsulation.None, host: { class: 'adf-card-view-selectitem' }, template: "<ng-container *ngIf=\"!property.isEmpty() || isEditable\">\n <div [ngSwitch]=\"templateType\">\n <div *ngSwitchDefault>\n <div *ngIf=\"!isEditable\"\n [attr.data-automation-id]=\"'card-select-label-' + property.key\"\n class=\"adf-property-label adf-property-label-non-editable\"\n >{{ property.label | translate }}\n </div>\n <div class=\"adf-property-field\">\n <div\n *ngIf=\"!isEditable\"\n class=\"adf-property-value adf-property-read-only\"\n [attr.data-automation-id]=\"'select-readonly-value-' + property.key\"\n data-automation-class=\"read-only-value\"\n [title]=\"property.displayValue | async | translate\"\n >\n {{ property.displayValue | async | translate }}\n </div>\n <div *ngIf=\"isEditable\">\n <mat-form-field class=\"adf-property-value\">\n <mat-label\n [attr.data-automation-id]=\"'card-select-label-' + property.key\"\n class=\"adf-property-label adf-property-value-editable\"\n [ngClass]=\"{\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >{{ property.label | translate }}\n </mat-label>\n <mat-select\n [(value)]=\"value\"\n [ngClass]=\"{ 'adf-property-readonly-value': isReadonlyProperty }\"\n panelClass=\"adf-select-filter\"\n (selectionChange)=\"onChange($event)\"\n data-automation-class=\"select-box\"\n [aria-label]=\"property.label | translate\"\n >\n <adf-select-filter-input *ngIf=\"showInputFilter\" (change)=\"onFilterInputChange($event)\" />\n <mat-option *ngIf=\"displayNoneOption\">{{ 'CORE.CARDVIEW.NONE' | translate }}</mat-option>\n <mat-option *ngFor=\"let option of list$ | async\" [value]=\"option.key\">\n {{ option.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </div>\n <div *ngSwitchCase=\"'autocompleteBased'\">\n <mat-form-field\n class=\"adf-property-field adf-card-selectitem-autocomplete \"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n [floatLabel]=\"property.default ? 'always' : null\"\n >\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <input\n matInput\n [matAutocomplete]=\"auto\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"autocompleteControl\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-value-' + property.key\"\n />\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onOptionSelected($event)\">\n <mat-option\n *ngFor=\"let option of property.options$ | async\"\n [value]=\"option.key\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-option-' + property.key\"\n >\n {{ option.label }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n </div>\n</ng-container>\n", styles: [".adf-card-view-selectitem .adf-property-value{width:100%}.adf-card-view-selectitem .adf-select-filter-input{background:var(--adf-theme-background-card-color);position:sticky;top:0;left:0;right:0;z-index:1}.adf-card-view-selectitem .adf-property-value-editable{padding-left:0}.adf-card-view-selectitem .adf-property-value-editable .mdc-text-field--no-label .mat-mdc-form-field-infix{padding:0}.adf-card-view-selectitem .adf-property-value-editable .mat-mdc-text-field-wrapper{background-color:unset}.adf-card-view-selectitem .adf-property-value-editable .mat-mdc-select{margin-top:0;border-radius:6px}.adf-card-view-selectitem .adf-property-value-editable .mat-mdc-select .mat-mdc-select-value{color:var(--adf-metadata-action-button-clear-color)}.adf-card-view-selectitem .adf-property-value-editable .mat-mdc-select .mat-mdc-select-trigger{padding-left:6px;padding-right:6px}.adf-card-view-selectitem .adf-card-selectitem-autocomplete .adf-property-value-editable{padding-left:10px}.adf-card-view-selectitem .mat-mdc-form-field-subscript-wrapper{display:none}.adf-card-view-selectitem .adf-property-read-only{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:default;padding:6px 0}.adf-card-view-selectitem .mdc-line-ripple{display:none}.adf-card-view-selectitem .adf-property-readonly-value{color:var(--adf-metadata-property-panel-label-color)}.adf-card-view-selectitem .adf-property-label-non-editable{cursor:default;font-size:10px}\n"] }]
18890
+ ReactiveFormsModule,
18891
+ CardViewPropertyValidatorDirective,
18892
+ FormsModule
18893
+ ], encapsulation: ViewEncapsulation.None, host: { class: 'adf-card-view-selectitem' }, template: "<ng-container *ngIf=\"!property.isEmpty() || isEditable\">\n <div [ngSwitch]=\"templateType\">\n <div *ngSwitchDefault>\n <div *ngIf=\"!isEditable\"\n [attr.data-automation-id]=\"'card-select-label-' + property.key\"\n class=\"adf-property-label adf-property-label-non-editable\"\n >{{ property.label | translate }}\n </div>\n <div class=\"adf-property-field\">\n <div\n *ngIf=\"!isEditable\"\n class=\"adf-property-value adf-property-read-only\"\n [attr.data-automation-id]=\"'select-readonly-value-' + property.key\"\n data-automation-class=\"read-only-value\"\n [title]=\"property.displayValue | async | translate\"\n >\n {{ property.displayValue | async | translate }}\n </div>\n <div *ngIf=\"isEditable\">\n <mat-form-field class=\"adf-property-value\">\n <mat-label\n [attr.data-automation-id]=\"'card-select-label-' + property.key\"\n class=\"adf-property-label adf-property-value-editable\"\n [ngClass]=\"{\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >{{ property.label | translate }}\n </mat-label>\n <mat-select\n [(ngModel)]=\"value\"\n [ngClass]=\"{ 'adf-property-readonly-value': isReadonlyProperty }\"\n panelClass=\"adf-select-filter\"\n (selectionChange)=\"onChange($event)\"\n data-automation-class=\"select-box\"\n [aria-label]=\"property.label | translate\"\n adf-card-view-property-validator\n [property]=\"property\"\n (validated)=\"onValidation($event)\"\n >\n <adf-select-filter-input *ngIf=\"showInputFilter\" (change)=\"onFilterInputChange($event)\" />\n <mat-option *ngIf=\"displayNoneOption\">{{ 'CORE.CARDVIEW.NONE' | translate }}</mat-option>\n <mat-option *ngFor=\"let option of list$ | async\" [value]=\"option.key\">\n {{ option.label | translate }}\n </mat-option>\n </mat-select>\n <mat-error [innerHTML]=\"error\" />\n </mat-form-field>\n </div>\n </div>\n </div>\n <div *ngSwitchCase=\"'autocompleteBased'\">\n <mat-form-field\n class=\"adf-property-field adf-card-selectitem-autocomplete \"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n [floatLabel]=\"property.default ? 'always' : null\"\n >\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <input\n matInput\n [matAutocomplete]=\"auto\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"autocompleteControl\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-value-' + property.key\"\n />\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onOptionSelected($event)\">\n <mat-option\n *ngFor=\"let option of property.options$ | async\"\n [value]=\"option.key\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-option-' + property.key\"\n >\n {{ option.label }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n </div>\n</ng-container>\n", styles: [".adf-card-view-selectitem .adf-property-value{width:100%}.adf-card-view-selectitem .adf-select-filter-input{background:var(--adf-theme-background-card-color);position:sticky;top:0;left:0;right:0;z-index:1}.adf-card-view-selectitem .adf-property-value-editable{padding-left:0}.adf-card-view-selectitem .adf-property-value-editable .mdc-text-field--no-label .mat-mdc-form-field-infix{padding:0}.adf-card-view-selectitem .adf-property-value-editable .mat-mdc-text-field-wrapper{background-color:unset}.adf-card-view-selectitem .adf-property-value-editable .mat-mdc-select{margin-top:0;border-radius:6px}.adf-card-view-selectitem .adf-property-value-editable .mat-mdc-select .mat-mdc-select-value{color:var(--adf-metadata-action-button-clear-color)}.adf-card-view-selectitem .adf-property-value-editable .mat-mdc-select .mat-mdc-select-trigger{padding-left:6px;padding-right:6px}.adf-card-view-selectitem .adf-card-selectitem-autocomplete .adf-property-value-editable{padding-left:10px}.adf-card-view-selectitem .mat-mdc-form-field-subscript-wrapper{display:block}.adf-card-view-selectitem .adf-property-read-only{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:default;padding:6px 0}.adf-card-view-selectitem .mdc-line-ripple{display:none}.adf-card-view-selectitem .adf-property-readonly-value{color:var(--adf-metadata-property-panel-label-color)}.adf-card-view-selectitem .adf-property-label-non-editable{cursor:default;font-size:10px}\n"] }]
18607
18894
  }], propDecorators: { options$: [{
18608
18895
  type: Input
18609
18896
  }], displayNoneOption: [{
@@ -18629,16 +18916,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
18629
18916
  * limitations under the License.
18630
18917
  */
18631
18918
  class CardViewBoolItemComponent extends BaseCardView {
18632
- changed(change) {
18633
- this.cardViewUpdateService.update({ ...this.property }, change.checked);
18634
- this.property.value = change.checked;
18919
+ get error() {
18920
+ return this._error;
18921
+ }
18922
+ changed(checked) {
18923
+ this.cardViewUpdateService.update({ ...this.property }, checked);
18924
+ this.property.value = checked;
18925
+ }
18926
+ onValidation(errors) {
18927
+ this._error = errors.join('<br>');
18635
18928
  }
18636
18929
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: CardViewBoolItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
18637
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: CardViewBoolItemComponent, isStandalone: true, selector: "adf-card-view-boolitem", inputs: { editable: "editable" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!property.isEmpty() || isEditable\">\n <div class=\"adf-property-value\">\n <mat-checkbox [attr.data-automation-id]=\"'card-boolean-' + property.key\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.TOGGLE' | translate\"\n [checked]=\"property.displayValue\"\n [disabled]=\"!isEditable\"\n color=\"primary\"\n (change)=\"changed($event)\">\n <div [attr.data-automation-id]=\"'card-boolean-label-' + property.key\"\n class=\"adf-property-label\">{{ property.label | translate }}</div>\n </mat-checkbox>\n </div>\n</ng-container>\n", styles: [".adf-property-value{padding:15px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i2$6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
18930
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: CardViewBoolItemComponent, isStandalone: true, selector: "adf-card-view-boolitem", inputs: { editable: "editable" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!property.isEmpty() || isEditable\">\n <div class=\"adf-property-value\">\n <mat-checkbox [attr.data-automation-id]=\"'card-boolean-' + property.key\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.TOGGLE' | translate\"\n [ngModel]=\"property.displayValue\"\n [checked]=\"property.displayValue\"\n [disabled]=\"!isEditable\"\n color=\"primary\"\n (ngModelChange)=\"changed($event)\"\n adf-card-view-property-validator\n [property]=\"property\"\n (validated)=\"onValidation($event)\"\n #checkbox=\"ngModel\" >\n <div [attr.data-automation-id]=\"'card-boolean-label-' + property.key\"\n class=\"adf-property-label\">{{ property.label | translate }}</div>\n <mat-error *ngIf=\"checkbox.touched\" [innerHTML]=\"error\" />\n </mat-checkbox>\n </div>\n</ng-container>\n", styles: [".adf-property-value{padding:15px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i2$6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: CardViewPropertyValidatorDirective, selector: "[adf-card-view-property-validator]", inputs: ["property"], outputs: ["validated"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }] }); }
18638
18931
  }
18639
18932
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: CardViewBoolItemComponent, decorators: [{
18640
18933
  type: Component,
18641
- args: [{ selector: 'adf-card-view-boolitem', imports: [CommonModule, MatCheckboxModule, TranslatePipe], template: "<ng-container *ngIf=\"!property.isEmpty() || isEditable\">\n <div class=\"adf-property-value\">\n <mat-checkbox [attr.data-automation-id]=\"'card-boolean-' + property.key\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.TOGGLE' | translate\"\n [checked]=\"property.displayValue\"\n [disabled]=\"!isEditable\"\n color=\"primary\"\n (change)=\"changed($event)\">\n <div [attr.data-automation-id]=\"'card-boolean-label-' + property.key\"\n class=\"adf-property-label\">{{ property.label | translate }}</div>\n </mat-checkbox>\n </div>\n</ng-container>\n", styles: [".adf-property-value{padding:15px 0}\n"] }]
18934
+ args: [{ selector: 'adf-card-view-boolitem', imports: [CommonModule, MatCheckboxModule, TranslatePipe, CardViewPropertyValidatorDirective, FormsModule, MatError], template: "<ng-container *ngIf=\"!property.isEmpty() || isEditable\">\n <div class=\"adf-property-value\">\n <mat-checkbox [attr.data-automation-id]=\"'card-boolean-' + property.key\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.TOGGLE' | translate\"\n [ngModel]=\"property.displayValue\"\n [checked]=\"property.displayValue\"\n [disabled]=\"!isEditable\"\n color=\"primary\"\n (ngModelChange)=\"changed($event)\"\n adf-card-view-property-validator\n [property]=\"property\"\n (validated)=\"onValidation($event)\"\n #checkbox=\"ngModel\" >\n <div [attr.data-automation-id]=\"'card-boolean-label-' + property.key\"\n class=\"adf-property-label\">{{ property.label | translate }}</div>\n <mat-error *ngIf=\"checkbox.touched\" [innerHTML]=\"error\" />\n </mat-checkbox>\n </div>\n</ng-container>\n", styles: [".adf-property-value{padding:15px 0}\n"] }]
18642
18935
  }], propDecorators: { editable: [{
18643
18936
  type: Input
18644
18937
  }] } });
@@ -19174,41 +19467,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
19174
19467
  * limitations under the License.
19175
19468
  */
19176
19469
 
19177
- /*!
19178
- * @license
19179
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
19180
- *
19181
- * Licensed under the Apache License, Version 2.0 (the "License");
19182
- * you may not use this file except in compliance with the License.
19183
- * You may obtain a copy of the License at
19184
- *
19185
- * http://www.apache.org/licenses/LICENSE-2.0
19186
- *
19187
- * Unless required by applicable law or agreed to in writing, software
19188
- * distributed under the License is distributed on an "AS IS" BASIS,
19189
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19190
- * See the License for the specific language governing permissions and
19191
- * limitations under the License.
19192
- */
19193
- class CardViewItemIntValidator {
19194
- constructor() {
19195
- this.message = 'CORE.CARDVIEW.VALIDATORS.INT_VALIDATION_ERROR';
19196
- }
19197
- isValid(value) {
19198
- if (Array.isArray(value)) {
19199
- return value.every(this.isIntegerNumber);
19200
- }
19201
- return value === '' || (!isNaN(value) && this.isIntegerNumber(value) && this.isNotOnlySpace(value));
19202
- }
19203
- isIntegerNumber(value) {
19204
- const parsedNumber = Number(value);
19205
- return (parsedNumber | 0) === parsedNumber;
19206
- }
19207
- isNotOnlySpace(value) {
19208
- return String(value).trim() !== '';
19209
- }
19210
- }
19211
-
19212
19470
  /*!
19213
19471
  * @license
19214
19472
  * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
@@ -19354,194 +19612,6 @@ class CardViewItemPositiveLongValidator {
19354
19612
  * See the License for the specific language governing permissions and
19355
19613
  * limitations under the License.
19356
19614
  */
19357
- class CardViewItemMatchValidator {
19358
- constructor(expression, flags, requiresMatch) {
19359
- this.expression = expression;
19360
- this.flags = flags;
19361
- this.requiresMatch = requiresMatch;
19362
- this.message = 'CORE.CARDVIEW.VALIDATORS.MATCH_VALIDATION_ERROR';
19363
- }
19364
- isValid(value) {
19365
- const regex = new RegExp(this.expression, this?.flags);
19366
- if (Array.isArray(value)) {
19367
- return value.every((val) => (this.requiresMatch ? this.matchRegex(val, regex) : !this.matchRegex(val, regex)));
19368
- }
19369
- return value === '' || (this.requiresMatch ? this.matchRegex(value, regex) : !this.matchRegex(value, regex));
19370
- }
19371
- matchRegex(value, regex) {
19372
- return regex.test(value);
19373
- }
19374
- }
19375
-
19376
- /*!
19377
- * @license
19378
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
19379
- *
19380
- * Licensed under the Apache License, Version 2.0 (the "License");
19381
- * you may not use this file except in compliance with the License.
19382
- * You may obtain a copy of the License at
19383
- *
19384
- * http://www.apache.org/licenses/LICENSE-2.0
19385
- *
19386
- * Unless required by applicable law or agreed to in writing, software
19387
- * distributed under the License is distributed on an "AS IS" BASIS,
19388
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19389
- * See the License for the specific language governing permissions and
19390
- * limitations under the License.
19391
- */
19392
- class CardViewItemMinMaxValidator {
19393
- constructor(minValue, maxValue) {
19394
- this.minValue = minValue;
19395
- this.maxValue = maxValue;
19396
- this.message = 'CORE.CARDVIEW.VALIDATORS.MINMAX_VALIDATION_ERROR';
19397
- this.intValidator = new CardViewItemIntValidator();
19398
- }
19399
- isValid(value) {
19400
- if (Array.isArray(value)) {
19401
- return value.every((val) => this.isInRange(val, this.minValue, this.maxValue));
19402
- }
19403
- return value === '' || (this.intValidator.isValid(value) && this.isInRange(value, this.minValue, this.maxValue));
19404
- }
19405
- isInRange(value, min, max) {
19406
- return value >= min && value <= max;
19407
- }
19408
- }
19409
-
19410
- /*!
19411
- * @license
19412
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
19413
- *
19414
- * Licensed under the Apache License, Version 2.0 (the "License");
19415
- * you may not use this file except in compliance with the License.
19416
- * You may obtain a copy of the License at
19417
- *
19418
- * http://www.apache.org/licenses/LICENSE-2.0
19419
- *
19420
- * Unless required by applicable law or agreed to in writing, software
19421
- * distributed under the License is distributed on an "AS IS" BASIS,
19422
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19423
- * See the License for the specific language governing permissions and
19424
- * limitations under the License.
19425
- */
19426
- class CardViewItemLengthValidator {
19427
- constructor(minLength, maxLength) {
19428
- this.minLength = minLength;
19429
- this.maxLength = maxLength;
19430
- this.message = 'CORE.CARDVIEW.VALIDATORS.LENGTH_VALIDATION_ERROR';
19431
- }
19432
- isValid(value) {
19433
- if (Array.isArray(value)) {
19434
- return value.every((val) => this.isCorrectLength(val, this.minLength, this.maxLength));
19435
- }
19436
- return value === '' || this.isCorrectLength(value, this.minLength, this.maxLength);
19437
- }
19438
- isCorrectLength(value, min, max) {
19439
- const length = value.length;
19440
- return length >= min && length <= max;
19441
- }
19442
- }
19443
-
19444
- /*!
19445
- * @license
19446
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
19447
- *
19448
- * Licensed under the Apache License, Version 2.0 (the "License");
19449
- * you may not use this file except in compliance with the License.
19450
- * You may obtain a copy of the License at
19451
- *
19452
- * http://www.apache.org/licenses/LICENSE-2.0
19453
- *
19454
- * Unless required by applicable law or agreed to in writing, software
19455
- * distributed under the License is distributed on an "AS IS" BASIS,
19456
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19457
- * See the License for the specific language governing permissions and
19458
- * limitations under the License.
19459
- */
19460
- const validators = {
19461
- minmax: (parameters) => new CardViewItemMinMaxValidator(parameters.minValue, parameters.maxValue),
19462
- regex: (parameters) => new CardViewItemMatchValidator(parameters.expression, parameters.flags, parameters.requiresMatch),
19463
- length: (parameters) => new CardViewItemLengthValidator(parameters.minLength, parameters.maxLength)
19464
- };
19465
-
19466
- /*!
19467
- * @license
19468
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
19469
- *
19470
- * Licensed under the Apache License, Version 2.0 (the "License");
19471
- * you may not use this file except in compliance with the License.
19472
- * You may obtain a copy of the License at
19473
- *
19474
- * http://www.apache.org/licenses/LICENSE-2.0
19475
- *
19476
- * Unless required by applicable law or agreed to in writing, software
19477
- * distributed under the License is distributed on an "AS IS" BASIS,
19478
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19479
- * See the License for the specific language governing permissions and
19480
- * limitations under the License.
19481
- */
19482
-
19483
- /*!
19484
- * @license
19485
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
19486
- *
19487
- * Licensed under the Apache License, Version 2.0 (the "License");
19488
- * you may not use this file except in compliance with the License.
19489
- * You may obtain a copy of the License at
19490
- *
19491
- * http://www.apache.org/licenses/LICENSE-2.0
19492
- *
19493
- * Unless required by applicable law or agreed to in writing, software
19494
- * distributed under the License is distributed on an "AS IS" BASIS,
19495
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19496
- * See the License for the specific language governing permissions and
19497
- * limitations under the License.
19498
- */
19499
- class CardViewBaseItemModel {
19500
- constructor(props) {
19501
- this.label = props.label || '';
19502
- this.value = props.value?.displayName || props.value;
19503
- this.key = props.key;
19504
- this.default = props.default;
19505
- this.editable = !!props.editable;
19506
- this.clickable = !!props.clickable;
19507
- this.icon = props.icon || '';
19508
- this.hint = props.hint || '';
19509
- this.validators = props.validators || [];
19510
- this.data = props.data || null;
19511
- this.multivalued = !!props.multivalued;
19512
- if (props?.constraints?.length ?? 0) {
19513
- for (const constraint of props.constraints) {
19514
- if (constraint.type !== 'LIST') {
19515
- const validatorFactory = validators[constraint.type.toLowerCase()];
19516
- if (validatorFactory !== undefined) {
19517
- this.validators.push(validatorFactory(constraint.parameters));
19518
- }
19519
- else {
19520
- console.warn(`Validator for type ${constraint.type} is not supported`);
19521
- }
19522
- }
19523
- }
19524
- }
19525
- }
19526
- isEmpty() {
19527
- return (this.value === undefined ||
19528
- this.value === null ||
19529
- (typeof this.value === 'string' && this.value.length === 0) ||
19530
- (Array.isArray(this.value) && this.value.length === 0));
19531
- }
19532
- isValid(newValue) {
19533
- if (!this.validators.length) {
19534
- return true;
19535
- }
19536
- return this.validators.map((validator) => validator.isValid(newValue)).reduce((isValidUntilNow, isValid) => isValidUntilNow && isValid, true);
19537
- }
19538
- getValidationErrors(value) {
19539
- if (!this.validators.length) {
19540
- return [];
19541
- }
19542
- return this.validators.filter((validator) => !validator.isValid(value)).map((validator) => validator);
19543
- }
19544
- }
19545
19615
 
19546
19616
  /*!
19547
19617
  * @license