@yuuvis/client-framework 2.4.4 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/lib/components/busy-overlay/busy-overlay.component.d.ts +10 -0
- package/common/lib/components/busy-overlay/busy-overlay.interface.d.ts +4 -0
- package/common/lib/components/dialog/dialog.component.d.ts +5 -1
- package/common/lib/components/index.d.ts +1 -0
- package/common/lib/directives/busy-overlay.directive.d.ts +51 -13
- package/fesm2022/yuuvis-client-framework-actions.mjs +1 -1
- package/fesm2022/yuuvis-client-framework-actions.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-common.mjs +166 -74
- package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-forms.mjs +97 -76
- package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-details.mjs +28 -32
- package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs +2 -2
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-relationship.mjs +3 -3
- package/fesm2022/yuuvis-client-framework-object-relationship.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-summary.mjs +1 -1
- package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-versions.mjs +1 -1
- package/fesm2022/yuuvis-client-framework-object-versions.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-tile-list.mjs +1 -1
- package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-widget-grid.mjs +2 -2
- package/fesm2022/yuuvis-client-framework-widget-grid.mjs.map +1 -1
- package/forms/lib/elements/catalog/catalog.component.d.ts +4 -1
- package/forms/lib/elements/data-grid/model/data-grid.interface.d.ts +6 -0
- package/forms/lib/elements/organization/organization.component.d.ts +6 -10
- package/object-details/lib/object-details-header/object-details-header.component.d.ts +9 -7
- package/object-details/lib/object-details-shell/object-details-shell.component.d.ts +3 -1
- package/object-details/lib/object-details.component.d.ts +3 -1
- package/object-details/lib/object-metadata/object-metadata.component.d.ts +2 -2
- package/package.json +16 -16
|
@@ -13,7 +13,7 @@ import { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';
|
|
|
13
13
|
import * as i4 from '@angular/material/table';
|
|
14
14
|
import { MatTableModule } from '@angular/material/table';
|
|
15
15
|
import * as i2 from '@yuuvis/client-core';
|
|
16
|
-
import { SystemService, Situation, TranslateModule, TranslateService, Operator, OperatorLabel, Utils, LocaleNumberPipe, FileSizePipe, Classification,
|
|
16
|
+
import { SystemService, Situation, TranslateModule, TranslateService, Operator, OperatorLabel, Utils, LocaleNumberPipe, FileSizePipe, Classification, IdmService, UserService, SearchUtils, LocaleDatePipe, ClassificationPrefix } from '@yuuvis/client-core';
|
|
17
17
|
import { YUV_ICONS } from '@yuuvis/client-framework/icons';
|
|
18
18
|
import { MetadataFormFieldComponent, ObjectMetadataElementLabelDirective } from '@yuuvis/client-framework/metadata-form';
|
|
19
19
|
import { RendererDirective } from '@yuuvis/client-framework/renderer';
|
|
@@ -119,7 +119,7 @@ class EditTableDataComponent {
|
|
|
119
119
|
useExisting: forwardRef(() => EditTableDataComponent),
|
|
120
120
|
multi: true
|
|
121
121
|
}
|
|
122
|
-
], ngImport: i0, template: "<yuv-dialog [headertitel]=\"'yuv.form.element.data.grid.edit.headline' | translate: { headline: header }\">\n <main>\n <div [formGroup]=\"tableForm\">\n <div class=\"fields\">\n @for (element of columns; track $index) {\n <div [attr.data-name]=\"element.name\" class=\"form-field\">\n <yuv-metadata-form-field [field]=\"element\" [formControlName]=\"element.name\" [situation]=\"situation\"></yuv-metadata-form-field>\n </div>\n }\n </div>\n </div>\n </main>\n\n <footer>\n <button ymtButton=\"secondary\" (click)=\"cancel()\">{{ 'yuv.form.element.data.grid.edit.cancel' | translate }}</button>\n <button ymtButton=\"primary\" (click)=\"submit()\" [disabled]=\"!tableForm.dirty || !tableForm.valid\">\n @if (adding) {\n {{ 'yuv.form.element.data.grid.edit.add' | translate }}\n } @else {\n {{ 'yuv.object-metadata.button.save' | translate }}\n }\n </button>\n </footer>\n</yuv-dialog>\n", styles: [":host .fields{padding:var(--ymt-spacing-m)}:host .fields .form-field:not(:last-child){margin-block-end:var(--ymt-spacing-s)}:host .err-msg{font:var(--ymt-font-body-subtle);color:var(--ymt-danger);padding:var(--ymt-spacing-2xs) 0;border:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: DialogComponent, selector: "yuv-dialog", inputs: ["headertitel"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: MetadataFormFieldComponent, selector: "yuv-metadata-form-field", inputs: ["formChangedSubject", "field", "situation"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: YmtButtonDirective, selector: "button[ymtButton], a[ymtButton]", inputs: ["ymtButton", "disabled", "aria-disabled", "disableRipple", "disabledInteractive", "button-size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
122
|
+
], ngImport: i0, template: "<yuv-dialog [headertitel]=\"'yuv.form.element.data.grid.edit.headline' | translate: { headline: header }\">\n <main>\n <div [formGroup]=\"tableForm\">\n <div class=\"fields\">\n @for (element of columns; track $index) {\n <div [attr.data-name]=\"element.name\" class=\"form-field\">\n <yuv-metadata-form-field [field]=\"element\" [formControlName]=\"element.name\" [situation]=\"situation\"></yuv-metadata-form-field>\n </div>\n }\n </div>\n </div>\n </main>\n\n <footer>\n <button ymtButton=\"secondary\" (click)=\"cancel()\">{{ 'yuv.form.element.data.grid.edit.cancel' | translate }}</button>\n <button ymtButton=\"primary\" (click)=\"submit()\" [disabled]=\"!tableForm.dirty || !tableForm.valid\">\n @if (adding) {\n {{ 'yuv.form.element.data.grid.edit.add' | translate }}\n } @else {\n {{ 'yuv.object-metadata.button.save' | translate }}\n }\n </button>\n </footer>\n</yuv-dialog>\n", styles: [":host .fields{padding:var(--ymt-spacing-m)}:host .fields .form-field:not(:last-child){margin-block-end:var(--ymt-spacing-s)}:host .err-msg{font:var(--ymt-font-body-subtle);color:var(--ymt-danger);padding:var(--ymt-spacing-2xs) 0;border:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: DialogComponent, selector: "yuv-dialog", inputs: ["headertitle", "headertitel"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: MetadataFormFieldComponent, selector: "yuv-metadata-form-field", inputs: ["formChangedSubject", "field", "situation"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: YmtButtonDirective, selector: "button[ymtButton], a[ymtButton]", inputs: ["ymtButton", "disabled", "aria-disabled", "disableRipple", "disabledInteractive", "button-size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
123
123
|
}
|
|
124
124
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EditTableDataComponent, decorators: [{
|
|
125
125
|
type: Component,
|
|
@@ -197,7 +197,17 @@ class DataGridComponent {
|
|
|
197
197
|
});
|
|
198
198
|
this.#loadData = effect(() => {
|
|
199
199
|
const formElement = this.formElement();
|
|
200
|
-
|
|
200
|
+
const elements = formElement ? formElement['elements'] : [];
|
|
201
|
+
let data = formElement ? formElement['value'] || [] : [];
|
|
202
|
+
const columns = elements.map((e) => e.name);
|
|
203
|
+
data = data.map((row) => {
|
|
204
|
+
const obj = {};
|
|
205
|
+
for (let i = 0; i < columns.length; i++) {
|
|
206
|
+
obj[columns[i]] = row[i];
|
|
207
|
+
}
|
|
208
|
+
return obj;
|
|
209
|
+
});
|
|
210
|
+
untracked(() => formElement && this.#updateTable(elements, data));
|
|
201
211
|
});
|
|
202
212
|
this.#sourceData = effect(() => {
|
|
203
213
|
const dataSource = this.dataSource();
|
|
@@ -285,6 +295,7 @@ class DataGridComponent {
|
|
|
285
295
|
}
|
|
286
296
|
const displayedColumns = [...this.displayedColumns().map((col) => col.columnDef)];
|
|
287
297
|
this.displayedColumnsWithActions.set(displayedColumns);
|
|
298
|
+
const cleandColumns = displayedColumns.filter((col) => col !== 'actions');
|
|
288
299
|
this.dataSource.set(data);
|
|
289
300
|
}
|
|
290
301
|
writeValue(obj) {
|
|
@@ -999,16 +1010,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
999
1010
|
type: Input
|
|
1000
1011
|
}] } });
|
|
1001
1012
|
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1013
|
+
const mapOrganizationNode = (innerValue) => map$1((node) => node
|
|
1014
|
+
.filter((e) => !innerValue?.some((value) => value?.id === e.id))
|
|
1015
|
+
.map((e) => ({
|
|
1016
|
+
label: e.title,
|
|
1017
|
+
value: {
|
|
1018
|
+
id: e.id,
|
|
1019
|
+
title: e.title,
|
|
1020
|
+
type: 'user' in e ? 'user' : 'role'
|
|
1021
|
+
}
|
|
1022
|
+
})));
|
|
1010
1023
|
/**
|
|
1011
|
-
* Creates form input for
|
|
1024
|
+
* Creates form input for organization values.
|
|
1012
1025
|
*
|
|
1013
1026
|
* @example
|
|
1014
1027
|
* <yuv-organization [multiselect]="true"></yuv-organization>
|
|
@@ -1017,8 +1030,8 @@ class OrganizationComponent extends AbstractMatFormField {
|
|
|
1017
1030
|
constructor() {
|
|
1018
1031
|
super(...arguments);
|
|
1019
1032
|
this.#system = inject(SystemService);
|
|
1020
|
-
this.#userService = inject(UserService);
|
|
1021
1033
|
this.#idmService = inject(IdmService);
|
|
1034
|
+
this.#userService = inject(UserService);
|
|
1022
1035
|
this.#dRef = inject(DestroyRef);
|
|
1023
1036
|
this.translate = inject(TranslateService);
|
|
1024
1037
|
this.minLength = 2;
|
|
@@ -1038,25 +1051,31 @@ class OrganizationComponent extends AbstractMatFormField {
|
|
|
1038
1051
|
/**
|
|
1039
1052
|
* Additional semantics for the form element.
|
|
1040
1053
|
*/
|
|
1041
|
-
|
|
1054
|
+
// #organizationType: Classification = Classification.STRING_ORGANIZATION;
|
|
1055
|
+
this.#organizationType = computed(() => {
|
|
1056
|
+
const c = this.classifications();
|
|
1057
|
+
if (c?.length) {
|
|
1058
|
+
const classifications = this.#system.getClassifications(c);
|
|
1059
|
+
if (classifications.has(Classification.STRING_ORGANIZATION_SET)) {
|
|
1060
|
+
return Classification.STRING_ORGANIZATION_SET;
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
1063
|
+
return Classification.STRING_ORGANIZATION;
|
|
1064
|
+
});
|
|
1042
1065
|
this.classifications = input(undefined);
|
|
1043
1066
|
this.#filterRoles = computed(() => {
|
|
1067
|
+
const t = this.#organizationType();
|
|
1044
1068
|
const c = this.classifications();
|
|
1045
1069
|
if (c?.length) {
|
|
1046
1070
|
const classifications = this.#system.getClassifications(c);
|
|
1047
|
-
if (
|
|
1048
|
-
this.#organizationType = Classification.STRING_ORGANIZATION;
|
|
1071
|
+
if (t === Classification.STRING_ORGANIZATION) {
|
|
1049
1072
|
return classifications.get(Classification.STRING_ORGANIZATION).options;
|
|
1050
1073
|
}
|
|
1051
|
-
else if (
|
|
1052
|
-
this.#organizationType = Classification.STRING_ORGANIZATION_SET;
|
|
1074
|
+
else if (t === Classification.STRING_ORGANIZATION_SET) {
|
|
1053
1075
|
return classifications.get(Classification.STRING_ORGANIZATION_SET).options;
|
|
1054
1076
|
}
|
|
1055
|
-
return [];
|
|
1056
|
-
}
|
|
1057
|
-
else {
|
|
1058
|
-
return [];
|
|
1059
1077
|
}
|
|
1078
|
+
return [];
|
|
1060
1079
|
});
|
|
1061
1080
|
/**
|
|
1062
1081
|
* Will prevent the input from being changed (default: false)
|
|
@@ -1075,8 +1094,8 @@ class OrganizationComponent extends AbstractMatFormField {
|
|
|
1075
1094
|
this.propagateChange = (_) => { };
|
|
1076
1095
|
}
|
|
1077
1096
|
#system;
|
|
1078
|
-
#userService;
|
|
1079
1097
|
#idmService;
|
|
1098
|
+
#userService;
|
|
1080
1099
|
#dRef;
|
|
1081
1100
|
set innerValue(iv) {
|
|
1082
1101
|
this._innerValue = iv || [];
|
|
@@ -1087,13 +1106,14 @@ class OrganizationComponent extends AbstractMatFormField {
|
|
|
1087
1106
|
/**
|
|
1088
1107
|
* Additional semantics for the form element.
|
|
1089
1108
|
*/
|
|
1109
|
+
// #organizationType: Classification = Classification.STRING_ORGANIZATION;
|
|
1090
1110
|
#organizationType;
|
|
1091
1111
|
#filterRoles;
|
|
1092
1112
|
writeValue(value) {
|
|
1093
|
-
if (this.#organizationType === Classification.STRING_ORGANIZATION) {
|
|
1113
|
+
if (this.#organizationType() === Classification.STRING_ORGANIZATION) {
|
|
1094
1114
|
if (value) {
|
|
1095
1115
|
this.value = value;
|
|
1096
|
-
this.resolveFn(value);
|
|
1116
|
+
this.resolveFn(Array.isArray(value) ? value : [value]);
|
|
1097
1117
|
}
|
|
1098
1118
|
else {
|
|
1099
1119
|
this.value = null;
|
|
@@ -1101,12 +1121,8 @@ class OrganizationComponent extends AbstractMatFormField {
|
|
|
1101
1121
|
}
|
|
1102
1122
|
}
|
|
1103
1123
|
else {
|
|
1104
|
-
|
|
1105
|
-
this.
|
|
1106
|
-
this.value = val.map((v) => JSON.stringify(v));
|
|
1107
|
-
if (!this.multiselect) {
|
|
1108
|
-
this.value = this.value[0] || null;
|
|
1109
|
-
}
|
|
1124
|
+
this.value = value;
|
|
1125
|
+
this.resolveFn(Array.isArray(value) ? value : [value]);
|
|
1110
1126
|
}
|
|
1111
1127
|
}
|
|
1112
1128
|
registerOnChange(fn) {
|
|
@@ -1127,52 +1143,54 @@ class OrganizationComponent extends AbstractMatFormField {
|
|
|
1127
1143
|
}
|
|
1128
1144
|
}
|
|
1129
1145
|
#getPropagateValue() {
|
|
1130
|
-
const value = this.innerValue.map((v) => (this.withMetadata() ? { id: v.
|
|
1146
|
+
const value = this.innerValue.map((v) => (this.withMetadata() ? { id: v.id, title: v.title } : v.id));
|
|
1131
1147
|
return this.multiselect() ? value : value[0];
|
|
1132
1148
|
}
|
|
1133
1149
|
resolveFn(value) {
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1150
|
+
// check if entry is a user
|
|
1151
|
+
const userRegExp = new RegExp('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$');
|
|
1152
|
+
const tasks = value.map((v) => v.match(userRegExp)
|
|
1153
|
+
? this.#idmService.getUserById(v).pipe(map$1((res) => {
|
|
1154
|
+
return res
|
|
1155
|
+
? {
|
|
1156
|
+
id: res.id,
|
|
1157
|
+
title: res.title,
|
|
1158
|
+
type: 'user'
|
|
1159
|
+
}
|
|
1160
|
+
: {
|
|
1161
|
+
id: v,
|
|
1162
|
+
title: v,
|
|
1163
|
+
type: 'user',
|
|
1164
|
+
notFound: true
|
|
1165
|
+
};
|
|
1166
|
+
}))
|
|
1167
|
+
: of({
|
|
1168
|
+
id: v,
|
|
1169
|
+
title: v,
|
|
1170
|
+
type: 'role'
|
|
1171
|
+
}));
|
|
1172
|
+
forkJoin(tasks).subscribe((data) => {
|
|
1155
1173
|
this.innerValue = data;
|
|
1156
|
-
const mapped = this.innerValue.map((
|
|
1157
|
-
label:
|
|
1158
|
-
value:
|
|
1174
|
+
const mapped = this.innerValue.map((n) => ({
|
|
1175
|
+
label: n.title,
|
|
1176
|
+
value: n
|
|
1159
1177
|
}));
|
|
1160
1178
|
this.acFormControl.setValue(this.multiselect() ? mapped : [mapped[0]], { emitEvent: false });
|
|
1161
1179
|
this.acFormControl.updateValueAndValidity({ emitEvent: false });
|
|
1162
1180
|
});
|
|
1163
1181
|
}
|
|
1164
|
-
#
|
|
1165
|
-
return this.#userService.queryUser(query, excludeMe, filterRoles).pipe(
|
|
1182
|
+
#resolveOrganization(query, excludeMe, filterRoles) {
|
|
1183
|
+
return this.#userService.queryUser(query, excludeMe, filterRoles).pipe(mapOrganizationNode(this.innerValue), catchError(() => of([])));
|
|
1166
1184
|
}
|
|
1167
|
-
#
|
|
1168
|
-
return this.#idmService.queryOrganizationEntity(query, filterRoles).pipe(
|
|
1185
|
+
#resolveOrganizationSet(query, filterRoles) {
|
|
1186
|
+
return this.#idmService.queryOrganizationEntity(query, filterRoles).pipe(mapOrganizationNode(this.innerValue), catchError(() => of([])));
|
|
1169
1187
|
}
|
|
1170
1188
|
autocompleteFn(query) {
|
|
1171
1189
|
if (query.length >= this.minLength) {
|
|
1172
1190
|
this.busy.set(true);
|
|
1173
|
-
(this.#organizationType === Classification.STRING_ORGANIZATION
|
|
1174
|
-
? this.#
|
|
1175
|
-
: this.#
|
|
1191
|
+
(this.#organizationType() === Classification.STRING_ORGANIZATION
|
|
1192
|
+
? this.#resolveOrganization(query, this.excludeMe(), this.#filterRoles())
|
|
1193
|
+
: this.#resolveOrganizationSet(query, this.#filterRoles())).subscribe({
|
|
1176
1194
|
next: (res) => {
|
|
1177
1195
|
this.busy.set(false);
|
|
1178
1196
|
this.autocompleteRes = res;
|
|
@@ -1205,11 +1223,11 @@ class OrganizationComponent extends AbstractMatFormField {
|
|
|
1205
1223
|
super.onNgOnDestroy();
|
|
1206
1224
|
}
|
|
1207
1225
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: OrganizationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1208
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: OrganizationComponent, isStandalone: true, selector: "yuv-organization", inputs: { situation: { classPropertyName: "situation", publicName: "situation", isSignal: true, isRequired: false, transformFunction: null }, multiselect: { classPropertyName: "multiselect", publicName: "multiselect", isSignal: true, isRequired: false, transformFunction: null }, classifications: { classPropertyName: "classifications", publicName: "classifications", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, excludeMe: { classPropertyName: "excludeMe", publicName: "excludeMe", isSignal: true, isRequired: false, transformFunction: null }, withMetadata: { classPropertyName: "withMetadata", publicName: "withMetadata", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: MatFormFieldControl, useExisting: OrganizationComponent }], usesInheritance: true, ngImport: i0, template: "<yuv-autocomplete\n [required]=\"required\"\n [busy]=\"busy()\"\n [formControl]=\"acFormControl\"\n #autocomplete\n [placeholder]=\"placeholder\"\n [disabled]=\"readonly()\"\n [autocompleteValues]=\"autocompleteRes\"\n [forceSelection]=\"true\"\n [distinctValues]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"true\"\n [maxItems]=\"multiselect() ? -1 : 1\"\n>\n <!-- template for item inside the dropdown -->\n <ng-template #optionTemplate let-item>\n @if (item.value
|
|
1226
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: OrganizationComponent, isStandalone: true, selector: "yuv-organization", inputs: { situation: { classPropertyName: "situation", publicName: "situation", isSignal: true, isRequired: false, transformFunction: null }, multiselect: { classPropertyName: "multiselect", publicName: "multiselect", isSignal: true, isRequired: false, transformFunction: null }, classifications: { classPropertyName: "classifications", publicName: "classifications", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, excludeMe: { classPropertyName: "excludeMe", publicName: "excludeMe", isSignal: true, isRequired: false, transformFunction: null }, withMetadata: { classPropertyName: "withMetadata", publicName: "withMetadata", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: MatFormFieldControl, useExisting: OrganizationComponent }], usesInheritance: true, ngImport: i0, template: "<yuv-autocomplete\n [required]=\"required\"\n [busy]=\"busy()\"\n [formControl]=\"acFormControl\"\n #autocomplete\n [placeholder]=\"placeholder\"\n [disabled]=\"readonly()\"\n [autocompleteValues]=\"autocompleteRes\"\n [forceSelection]=\"true\"\n [distinctValues]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"true\"\n [maxItems]=\"multiselect() ? -1 : 1\"\n>\n <!-- template for item inside the dropdown -->\n <ng-template #optionTemplate let-item>\n @if (item.value) {\n <span class=\"chip\">{{ item.value.title }}</span>\n }\n </ng-template>\n\n <!-- template for chip -->\n <ng-template #chipTemplate let-item>\n @if (item.value) {\n <span class=\"chip\" [ngClass]=\"{ notFound: item.value.notFound }\" [matTooltip]=\"item.value.titleString\">\n {{ item.value.title || '...' }}\n </span>\n }\n </ng-template>\n</yuv-autocomplete>\n\n<mat-icon class=\"ymt-icon--size-s\" [matTooltip]=\"'yuv.form.element.organization.classify.icon.title' | translate\">\n {{ multiselect() ? 'group' : 'person' }}\n</mat-icon>\n", styles: [":host{display:flex;align-items:center}:host .chip.notFound{color:var(--ymt-on-danger-container);text-decoration:line-through}:host .chip.notFound:before{content:\"!\";display:inline-block;background-color:var(--ymt-danger-container);color:#fff;border-radius:2px;padding-inline:.3em;text-decoration:none;margin-inline-end:.75em}:host yuv-autocomplete{flex:1}:host mat-icon{color:var(--ymt-text-color-subtle)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: YuvAutocompleteModule }, { kind: "component", type: i3$1.AutocompleteComponent, selector: "yuv-autocomplete", inputs: ["ariaLabel", "busy", "multiple", "distinctValues", "addOnBlur", "minLength", "maxItems", "forceSelection", "autocompleteValues"], outputs: ["autocompleteFnc", "acBlur"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
|
|
1209
1227
|
}
|
|
1210
1228
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: OrganizationComponent, decorators: [{
|
|
1211
1229
|
type: Component,
|
|
1212
|
-
args: [{ selector: 'yuv-organization', standalone: true, imports: [CommonModule, FormsModule, YuvAutocompleteModule, MatTooltipModule, MatIconModule, ReactiveFormsModule, TranslateModule], providers: [{ provide: MatFormFieldControl, useExisting: OrganizationComponent }], template: "<yuv-autocomplete\n [required]=\"required\"\n [busy]=\"busy()\"\n [formControl]=\"acFormControl\"\n #autocomplete\n [placeholder]=\"placeholder\"\n [disabled]=\"readonly()\"\n [autocompleteValues]=\"autocompleteRes\"\n [forceSelection]=\"true\"\n [distinctValues]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"true\"\n [maxItems]=\"multiselect() ? -1 : 1\"\n>\n <!-- template for item inside the dropdown -->\n <ng-template #optionTemplate let-item>\n @if (item.value
|
|
1230
|
+
args: [{ selector: 'yuv-organization', standalone: true, imports: [CommonModule, FormsModule, YuvAutocompleteModule, MatTooltipModule, MatIconModule, ReactiveFormsModule, TranslateModule], providers: [{ provide: MatFormFieldControl, useExisting: OrganizationComponent }], template: "<yuv-autocomplete\n [required]=\"required\"\n [busy]=\"busy()\"\n [formControl]=\"acFormControl\"\n #autocomplete\n [placeholder]=\"placeholder\"\n [disabled]=\"readonly()\"\n [autocompleteValues]=\"autocompleteRes\"\n [forceSelection]=\"true\"\n [distinctValues]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"true\"\n [maxItems]=\"multiselect() ? -1 : 1\"\n>\n <!-- template for item inside the dropdown -->\n <ng-template #optionTemplate let-item>\n @if (item.value) {\n <span class=\"chip\">{{ item.value.title }}</span>\n }\n </ng-template>\n\n <!-- template for chip -->\n <ng-template #chipTemplate let-item>\n @if (item.value) {\n <span class=\"chip\" [ngClass]=\"{ notFound: item.value.notFound }\" [matTooltip]=\"item.value.titleString\">\n {{ item.value.title || '...' }}\n </span>\n }\n </ng-template>\n</yuv-autocomplete>\n\n<mat-icon class=\"ymt-icon--size-s\" [matTooltip]=\"'yuv.form.element.organization.classify.icon.title' | translate\">\n {{ multiselect() ? 'group' : 'person' }}\n</mat-icon>\n", styles: [":host{display:flex;align-items:center}:host .chip.notFound{color:var(--ymt-on-danger-container);text-decoration:line-through}:host .chip.notFound:before{content:\"!\";display:inline-block;background-color:var(--ymt-danger-container);color:#fff;border-radius:2px;padding-inline:.3em;text-decoration:none;margin-inline-end:.75em}:host yuv-autocomplete{flex:1}:host mat-icon{color:var(--ymt-text-color-subtle)}\n"] }]
|
|
1213
1231
|
}] });
|
|
1214
1232
|
|
|
1215
1233
|
/**
|
|
@@ -1391,7 +1409,7 @@ class DateRangePickerComponent {
|
|
|
1391
1409
|
this.#dialogRef.close(this.form.value.range);
|
|
1392
1410
|
}
|
|
1393
1411
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1394
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: DateRangePickerComponent, isStandalone: true, selector: "yuv-date-range-picker", inputs: { range: { classPropertyName: "range", publicName: "range", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rangeChange: "rangeChange" }, ngImport: i0, template: "<yuv-dialog [headertitel]=\"'yuv.form.element.range-select-date.custom.overlay.title' | translate\">\n <main>\n <form id=\"date-range-picker-form\" [formGroup]=\"form\" (ngSubmit)=\"apply()\">\n <yuv-datetime-range [withTime]=\"false\" formControlName=\"range\"></yuv-datetime-range>\n </form>\n </main>\n <footer>\n <button form=\"date-range-picker-form\" ymtButton=\"primary\" [disabled]=\"form.invalid\">\n {{ 'yuv.form.element.range-select-date.custom.overlay.button.apply' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n", styles: [":host form{display:grid;grid-template-columns:1fr auto;grid-template-rows:repeat(3,auto);grid-template-areas:\"title title\" \"input input\" \". button\";gap:var(--ymt-spacing-m);padding:var(--ymt-spacing-m)}:host form h2{grid-area:title;margin:0}:host form yuv-datetime-range{grid-area:input;border:1px solid var(--ymt-text-color-subtle);padding:1px 2px;border-radius:2px}:host form button{grid-area:button}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: DatetimeRangeComponent, selector: "yuv-datetime-range", inputs: ["withTime", "readonly", "operator", "situation"] }, { kind: "directive", type: YmtButtonDirective, selector: "button[ymtButton], a[ymtButton]", inputs: ["ymtButton", "disabled", "aria-disabled", "disableRipple", "disabledInteractive", "button-size"] }, { kind: "component", type: DialogComponent, selector: "yuv-dialog", inputs: ["headertitel"] }] }); }
|
|
1412
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: DateRangePickerComponent, isStandalone: true, selector: "yuv-date-range-picker", inputs: { range: { classPropertyName: "range", publicName: "range", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rangeChange: "rangeChange" }, ngImport: i0, template: "<yuv-dialog [headertitel]=\"'yuv.form.element.range-select-date.custom.overlay.title' | translate\">\n <main>\n <form id=\"date-range-picker-form\" [formGroup]=\"form\" (ngSubmit)=\"apply()\">\n <yuv-datetime-range [withTime]=\"false\" formControlName=\"range\"></yuv-datetime-range>\n </form>\n </main>\n <footer>\n <button form=\"date-range-picker-form\" ymtButton=\"primary\" [disabled]=\"form.invalid\">\n {{ 'yuv.form.element.range-select-date.custom.overlay.button.apply' | translate }}\n </button>\n </footer>\n</yuv-dialog>\n", styles: [":host form{display:grid;grid-template-columns:1fr auto;grid-template-rows:repeat(3,auto);grid-template-areas:\"title title\" \"input input\" \". button\";gap:var(--ymt-spacing-m);padding:var(--ymt-spacing-m)}:host form h2{grid-area:title;margin:0}:host form yuv-datetime-range{grid-area:input;border:1px solid var(--ymt-text-color-subtle);padding:1px 2px;border-radius:2px}:host form button{grid-area:button}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: DatetimeRangeComponent, selector: "yuv-datetime-range", inputs: ["withTime", "readonly", "operator", "situation"] }, { kind: "directive", type: YmtButtonDirective, selector: "button[ymtButton], a[ymtButton]", inputs: ["ymtButton", "disabled", "aria-disabled", "disableRipple", "disabledInteractive", "button-size"] }, { kind: "component", type: DialogComponent, selector: "yuv-dialog", inputs: ["headertitle", "headertitel"] }] }); }
|
|
1395
1413
|
}
|
|
1396
1414
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
1397
1415
|
type: Component,
|
|
@@ -1946,7 +1964,7 @@ class CatalogComponent extends AbstractMatFormField {
|
|
|
1946
1964
|
this.options = input([]);
|
|
1947
1965
|
this.#optionsEffect = effect(() => {
|
|
1948
1966
|
untracked(() => {
|
|
1949
|
-
this
|
|
1967
|
+
this.#setOptions(this.options() || [], false);
|
|
1950
1968
|
});
|
|
1951
1969
|
});
|
|
1952
1970
|
/**
|
|
@@ -1957,14 +1975,9 @@ class CatalogComponent extends AbstractMatFormField {
|
|
|
1957
1975
|
const cls = this.classifications();
|
|
1958
1976
|
untracked(() => {
|
|
1959
1977
|
const ce = this.#system.getClassifications(cls).get(Classification.STRING_CATALOG);
|
|
1960
|
-
const ceTranslate = this.#system.getClassifications(cls).get(Classification.STRING_CATALOG_I18N);
|
|
1961
1978
|
if (ce && ce.options) {
|
|
1962
1979
|
this.#setOptions(ce.options, false);
|
|
1963
1980
|
}
|
|
1964
|
-
// i18n catalog
|
|
1965
|
-
if (ceTranslate && ceTranslate.options) {
|
|
1966
|
-
this.#setOptions(ceTranslate.options, true);
|
|
1967
|
-
}
|
|
1968
1981
|
});
|
|
1969
1982
|
});
|
|
1970
1983
|
/**
|
|
@@ -1986,14 +1999,21 @@ class CatalogComponent extends AbstractMatFormField {
|
|
|
1986
1999
|
}
|
|
1987
2000
|
#setOptions(options, translate) {
|
|
1988
2001
|
if (translate) {
|
|
1989
|
-
this._options.set(options.map((o) =>
|
|
2002
|
+
this._options.set(options.map((o) => ({
|
|
2003
|
+
label: this.translate.instant(o),
|
|
2004
|
+
value: o
|
|
2005
|
+
})));
|
|
1990
2006
|
}
|
|
1991
2007
|
else {
|
|
1992
|
-
this._options.set(options)
|
|
2008
|
+
this._options.set(options.map((o) => ({
|
|
2009
|
+
label: o,
|
|
2010
|
+
value: o
|
|
2011
|
+
})));
|
|
1993
2012
|
}
|
|
1994
2013
|
}
|
|
1995
2014
|
writeValue(value) {
|
|
1996
2015
|
this.value = value;
|
|
2016
|
+
this.fc.setValue(value, { emitEvent: false });
|
|
1997
2017
|
}
|
|
1998
2018
|
registerOnChange(fn) {
|
|
1999
2019
|
this.propagateChange = fn;
|
|
@@ -2024,11 +2044,11 @@ class CatalogComponent extends AbstractMatFormField {
|
|
|
2024
2044
|
super.onNgOnDestroy();
|
|
2025
2045
|
}
|
|
2026
2046
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CatalogComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
2027
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CatalogComponent, isStandalone: true, selector: "yuv-catalog", inputs: { readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, classifications: { classPropertyName: "classifications", publicName: "classifications", isSignal: true, isRequired: false, transformFunction: null }, situation: { classPropertyName: "situation", publicName: "situation", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: MatFormFieldControl, useExisting: CatalogComponent }], usesInheritance: true, ngImport: i0, template: "<mat-select [multiple]=\"multiple()\" [disabled]=\"readonly()\" [formControl]=\"fc\">\n @for (o of _options(); track o) {\n <mat-option [value]=\"o\">{{ o }}</mat-option>\n }\n</mat-select>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i1$1.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: i1$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
2047
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CatalogComponent, isStandalone: true, selector: "yuv-catalog", inputs: { readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, classifications: { classPropertyName: "classifications", publicName: "classifications", isSignal: true, isRequired: false, transformFunction: null }, situation: { classPropertyName: "situation", publicName: "situation", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: MatFormFieldControl, useExisting: CatalogComponent }], usesInheritance: true, ngImport: i0, template: "<mat-select [multiple]=\"multiple()\" [disabled]=\"readonly()\" [formControl]=\"fc\">\n @for (o of _options(); track o) {\n <mat-option [value]=\"o.value\">{{ o.label }}</mat-option>\n }\n</mat-select>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i1$1.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: i1$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
2028
2048
|
}
|
|
2029
2049
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CatalogComponent, decorators: [{
|
|
2030
2050
|
type: Component,
|
|
2031
|
-
args: [{ selector: 'yuv-catalog', imports: [CommonModule, MatSelectModule, ReactiveFormsModule], providers: [{ provide: MatFormFieldControl, useExisting: CatalogComponent }], template: "<mat-select [multiple]=\"multiple()\" [disabled]=\"readonly()\" [formControl]=\"fc\">\n @for (o of _options(); track o) {\n <mat-option [value]=\"o\">{{ o }}</mat-option>\n }\n</mat-select>\n" }]
|
|
2051
|
+
args: [{ selector: 'yuv-catalog', imports: [CommonModule, MatSelectModule, ReactiveFormsModule], providers: [{ provide: MatFormFieldControl, useExisting: CatalogComponent }], template: "<mat-select [multiple]=\"multiple()\" [disabled]=\"readonly()\" [formControl]=\"fc\">\n @for (o of _options(); track o) {\n <mat-option [value]=\"o.value\">{{ o.label }}</mat-option>\n }\n</mat-select>\n" }]
|
|
2032
2052
|
}] });
|
|
2033
2053
|
|
|
2034
2054
|
/**
|
|
@@ -2101,6 +2121,7 @@ class I18nCatalogComponent extends AbstractMatFormField {
|
|
|
2101
2121
|
}
|
|
2102
2122
|
writeValue(value) {
|
|
2103
2123
|
this.value = value;
|
|
2124
|
+
this.fc.setValue(value, { emitEvent: false });
|
|
2104
2125
|
}
|
|
2105
2126
|
registerOnChange(fn) {
|
|
2106
2127
|
this.propagateChange = fn;
|