@eo-sdk/client 11.14.19 → 11.14.20
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/app/eo-framework/form-elements/codesystem/codesystem.component.d.ts +9 -1
- package/app/eo-framework/form-elements/codesystem/codesystem.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts +18 -0
- package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.d.ts +5 -2
- package/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.d.ts.map +1 -1
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +80 -9
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +193 -11
- package/esm2022/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.mjs +31 -14
- package/esm2022/app/eo-framework/grid/filters/codesystem-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-details/object-links/object-links.component.mjs +2 -2
- package/fesm2022/eo-sdk-client.mjs +304 -35
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -5243,6 +5243,11 @@ class CodesystemComponent {
|
|
|
5243
5243
|
this.isTableFilter = false;
|
|
5244
5244
|
this.autocompleteValues = [];
|
|
5245
5245
|
this.isSearch = false;
|
|
5246
|
+
// Properties to prevent accidental value loss when user clicks in/out of autocomplete
|
|
5247
|
+
this.userIntentionallyClearedValue = false;
|
|
5248
|
+
this.lastValidSelectedNodes = null;
|
|
5249
|
+
this.isRestoringValue = false;
|
|
5250
|
+
this.hasFocused = false;
|
|
5246
5251
|
this.inputStyleClass = '';
|
|
5247
5252
|
this.emptyMessage = 'eo.error.structure.tree.not.available';
|
|
5248
5253
|
this.isTableElement = false;
|
|
@@ -5318,21 +5323,34 @@ class CodesystemComponent {
|
|
|
5318
5323
|
const wasInvalid = !this.isValid;
|
|
5319
5324
|
this.isValid = true;
|
|
5320
5325
|
//this.updateTree();
|
|
5326
|
+
this.userIntentionallyClearedValue = false;
|
|
5327
|
+
this.storeLastValidSelection();
|
|
5321
5328
|
this.setFormControlValue(wasInvalid);
|
|
5322
5329
|
}
|
|
5323
|
-
|
|
5324
|
-
|
|
5325
|
-
|
|
5330
|
+
// handler invoked when autocomplete value changes
|
|
5331
|
+
onAutocompleteValueChange(newValue) {
|
|
5332
|
+
// Prevent interference when restoring values
|
|
5333
|
+
if (this.isRestoringValue) {
|
|
5334
|
+
return;
|
|
5335
|
+
}
|
|
5336
|
+
// Handle value clearing
|
|
5337
|
+
if (newValue === undefined) {
|
|
5338
|
+
this.selectedNodes = this.multiselect ? [] : null;
|
|
5326
5339
|
this.setFormControlValue();
|
|
5340
|
+
return;
|
|
5327
5341
|
}
|
|
5342
|
+
// Normal value changes
|
|
5343
|
+
this.userIntentionallyClearedValue = false;
|
|
5344
|
+
this.storeLastValidSelection();
|
|
5328
5345
|
}
|
|
5329
5346
|
// handler invoked when an entry was deselected using the autocomplete input
|
|
5330
5347
|
onAutoCompleteUnselect(node) {
|
|
5331
5348
|
this.selectedNodes = this.selectedNodes.filter(sNode => sNode.id !== node.id);
|
|
5332
5349
|
//this.updateTree();
|
|
5333
|
-
this.
|
|
5350
|
+
this.storeLastValidSelection();
|
|
5351
|
+
this.setFormControlValue(true);
|
|
5334
5352
|
}
|
|
5335
|
-
// triggered when the selection was changed by
|
|
5353
|
+
// triggered when the selection was changed by tree component
|
|
5336
5354
|
onTreeSelectionChanged(evt) {
|
|
5337
5355
|
if (!this.multiselect) {
|
|
5338
5356
|
// hide the dialog
|
|
@@ -5340,13 +5358,44 @@ class CodesystemComponent {
|
|
|
5340
5358
|
}
|
|
5341
5359
|
const wasInvalid = !this.isValid;
|
|
5342
5360
|
this.isValid = true;
|
|
5361
|
+
this.userIntentionallyClearedValue = false;
|
|
5362
|
+
this.storeLastValidSelection();
|
|
5343
5363
|
this.setFormControlValue(wasInvalid);
|
|
5344
5364
|
}
|
|
5345
5365
|
onClear() {
|
|
5366
|
+
this.userIntentionallyClearedValue = true;
|
|
5367
|
+
this.lastValidSelectedNodes = null;
|
|
5346
5368
|
if (!this.multiselect) {
|
|
5347
5369
|
this.selectedNodes = null;
|
|
5348
5370
|
}
|
|
5349
|
-
this.setFormControlValue();
|
|
5371
|
+
this.setFormControlValue(true);
|
|
5372
|
+
}
|
|
5373
|
+
// handler invoked when autocomplete gains focus
|
|
5374
|
+
onAutocompleteFocus() {
|
|
5375
|
+
this.hasFocused = true;
|
|
5376
|
+
this.userIntentionallyClearedValue = false;
|
|
5377
|
+
// Store current selection as backup
|
|
5378
|
+
if (this.selectedNodes) {
|
|
5379
|
+
this.lastValidSelectedNodes = structuredClone(this.selectedNodes);
|
|
5380
|
+
}
|
|
5381
|
+
}
|
|
5382
|
+
// handler invoked when autocomplete loses focus
|
|
5383
|
+
onAutocompleteBlur() {
|
|
5384
|
+
// Skip if not properly focused or currently restoring
|
|
5385
|
+
if (!this.hasFocused || this.isRestoringValue) {
|
|
5386
|
+
return;
|
|
5387
|
+
}
|
|
5388
|
+
// Check if value was accidentally cleared (by component behavior)
|
|
5389
|
+
const wasAccidentallyCleared = (!this.selectedNodes || (Array.isArray(this.selectedNodes) && this.selectedNodes.length === 0))
|
|
5390
|
+
&& this.lastValidSelectedNodes
|
|
5391
|
+
&& !this.userIntentionallyClearedValue;
|
|
5392
|
+
if (wasAccidentallyCleared) {
|
|
5393
|
+
this.restoreValue();
|
|
5394
|
+
}
|
|
5395
|
+
else if (this.userIntentionallyClearedValue) {
|
|
5396
|
+
this.setFormControlValue(true);
|
|
5397
|
+
}
|
|
5398
|
+
this.hasFocused = false;
|
|
5350
5399
|
}
|
|
5351
5400
|
/**
|
|
5352
5401
|
* Sets and propagates the form controls value based on the components inner values. Propagates only
|
|
@@ -5508,6 +5557,28 @@ class CodesystemComponent {
|
|
|
5508
5557
|
}
|
|
5509
5558
|
};
|
|
5510
5559
|
}
|
|
5560
|
+
// Store the last valid selection for restoration purposes
|
|
5561
|
+
storeLastValidSelection() {
|
|
5562
|
+
if (this.selectedNodes) {
|
|
5563
|
+
this.lastValidSelectedNodes = structuredClone(this.selectedNodes);
|
|
5564
|
+
}
|
|
5565
|
+
}
|
|
5566
|
+
// Restore accidentally cleared values
|
|
5567
|
+
restoreValue() {
|
|
5568
|
+
if (!this.lastValidSelectedNodes) {
|
|
5569
|
+
return;
|
|
5570
|
+
}
|
|
5571
|
+
this.isRestoringValue = true;
|
|
5572
|
+
this.selectedNodes = structuredClone(this.lastValidSelectedNodes);
|
|
5573
|
+
// Update the autocomplete component
|
|
5574
|
+
setTimeout(() => {
|
|
5575
|
+
if (this.autoCompleteInput) {
|
|
5576
|
+
this.autoCompleteInput.writeValue(this.selectedNodes);
|
|
5577
|
+
this.setFormControlValue(false);
|
|
5578
|
+
}
|
|
5579
|
+
this.isRestoringValue = false;
|
|
5580
|
+
}, 10);
|
|
5581
|
+
}
|
|
5511
5582
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CodesystemComponent, deps: [{ token: i1.SystemService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5512
5583
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: CodesystemComponent, selector: "eo-codesystem", inputs: { situation: "situation", pickerTitle: "pickerTitle", placeholder: "placeholder", codesystem: "codesystem", multiselect: "multiselect", readonly: "readonly", inputStyleClass: "inputStyleClass", emptyMessage: "emptyMessage", isTableElement: "isTableElement", filterFunction: "filterFunction", disablingFilterFunction: "disablingFilterFunction" }, providers: [
|
|
5513
5584
|
{
|
|
@@ -5520,7 +5591,7 @@ class CodesystemComponent {
|
|
|
5520
5591
|
useExisting: forwardRef(() => CodesystemComponent),
|
|
5521
5592
|
multi: true
|
|
5522
5593
|
}
|
|
5523
|
-
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }, { propertyName: "autoCompleteButton", first: true, predicate: ["button"], descendants: true }], ngImport: i0, template: "<div class=\"eo-codesystem\" *ngIf=\"codesystem\"\n [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length, readonly: readonly}\">\n @if (isSearch && !isTableFilter && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [autocompleteValues]=\"autocompleteRes\" field=\"name\"\n [disabled]=\"readonly\" [placeholder]=\"placeholder\" [forceSelection]=\"
|
|
5594
|
+
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }, { propertyName: "autoCompleteButton", first: true, predicate: ["button"], descendants: true }], ngImport: i0, template: "<div class=\"eo-codesystem\" *ngIf=\"codesystem\"\n [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length, readonly: readonly}\">\n @if (isSearch && !isTableFilter && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [autocompleteValues]=\"autocompleteRes\" field=\"name\"\n [disabled]=\"readonly\" [placeholder]=\"placeholder\" [forceSelection]=\"false\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\" (ngModelChange)=\"onAutocompleteValueChange($event)\" [(ngModel)]=\"selectedNodes\"(focus)=\"onAutocompleteFocus()\" (blur)=\"onAutocompleteBlur()\">\n </yvc-autocomplete>\n @if (!readonly) {\n <button type=\"button\" #button (click)=\"setDialogVisible(true, $event)\" (keydown.enter)=\"setDialogVisible(true, $event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n }\n</div>\n\n<eo-dialog [title]=\"pickerTitle || ''\" [visible]=\"display\" (hide)=\"display = false\">\n @if (display) {\n <eo-tree [tree]=\"tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" [readonly]=\"readonly\"\n [emptyMessage]=\"emptyMessage\">\n </eo-tree>\n }\n</eo-dialog>\n", styles: [".eo-codesystem{display:flex;align-items:center;justify-content:space-between}.eo-codesystem yvc-autocomplete{display:flex;flex:1;border:0;outline:0}.eo-codesystem>button{padding:0;z-index:9}.eo-codesystem>button eo-icon{width:16px;height:16px;margin:auto}.eo-codesystem.readonly ::ng-deep .chip yvc-icon{display:none}.eo-codesystem.full ::ng-deep yvc-autocomplete .inputToken{display:none}.eo-codesystem yvc-dropdown{min-width:min-content;border:0;cursor:pointer;border-radius:2px;outline:1px solid rgba(0,0,0,.2);background-color:var(--list-item-hover-background);margin-right:4px}.eo-codesystem yvc-dropdown:hover{background-color:var(--list-item-selected-background)}.eo-codesystem yvc-dropdown ::ng-deep yvc-icon{display:none}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "closeOnCancelOnly", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: TreeComponent, selector: "eo-tree", inputs: ["options", "isDisplayed", "readonly", "emptyMessage", "selectionKey", "highlightedNodes", "tree", "treeUpdate"], outputs: ["expandedNodesChanged", "onSelected"] }, { kind: "component", type: i11.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { kind: "component", type: i8.Dropdown, selector: "yvc-dropdown", inputs: ["options", "filter", "disabled", "multiple", "disableClearButton"], outputs: ["onDropdownOptionsClose"] }] }); }
|
|
5524
5595
|
}
|
|
5525
5596
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CodesystemComponent, decorators: [{
|
|
5526
5597
|
type: Component,
|
|
@@ -5535,7 +5606,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
5535
5606
|
useExisting: forwardRef(() => CodesystemComponent),
|
|
5536
5607
|
multi: true
|
|
5537
5608
|
}
|
|
5538
|
-
], template: "<div class=\"eo-codesystem\" *ngIf=\"codesystem\"\n [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length, readonly: readonly}\">\n @if (isSearch && !isTableFilter && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [autocompleteValues]=\"autocompleteRes\" field=\"name\"\n [disabled]=\"readonly\" [placeholder]=\"placeholder\" [forceSelection]=\"
|
|
5609
|
+
], template: "<div class=\"eo-codesystem\" *ngIf=\"codesystem\"\n [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length, readonly: readonly}\">\n @if (isSearch && !isTableFilter && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [autocompleteValues]=\"autocompleteRes\" field=\"name\"\n [disabled]=\"readonly\" [placeholder]=\"placeholder\" [forceSelection]=\"false\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\" (ngModelChange)=\"onAutocompleteValueChange($event)\" [(ngModel)]=\"selectedNodes\"(focus)=\"onAutocompleteFocus()\" (blur)=\"onAutocompleteBlur()\">\n </yvc-autocomplete>\n @if (!readonly) {\n <button type=\"button\" #button (click)=\"setDialogVisible(true, $event)\" (keydown.enter)=\"setDialogVisible(true, $event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n }\n</div>\n\n<eo-dialog [title]=\"pickerTitle || ''\" [visible]=\"display\" (hide)=\"display = false\">\n @if (display) {\n <eo-tree [tree]=\"tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" [readonly]=\"readonly\"\n [emptyMessage]=\"emptyMessage\">\n </eo-tree>\n }\n</eo-dialog>\n", styles: [".eo-codesystem{display:flex;align-items:center;justify-content:space-between}.eo-codesystem yvc-autocomplete{display:flex;flex:1;border:0;outline:0}.eo-codesystem>button{padding:0;z-index:9}.eo-codesystem>button eo-icon{width:16px;height:16px;margin:auto}.eo-codesystem.readonly ::ng-deep .chip yvc-icon{display:none}.eo-codesystem.full ::ng-deep yvc-autocomplete .inputToken{display:none}.eo-codesystem yvc-dropdown{min-width:min-content;border:0;cursor:pointer;border-radius:2px;outline:1px solid rgba(0,0,0,.2);background-color:var(--list-item-hover-background);margin-right:4px}.eo-codesystem yvc-dropdown:hover{background-color:var(--list-item-selected-background)}.eo-codesystem yvc-dropdown ::ng-deep yvc-icon{display:none}\n"] }]
|
|
5539
5610
|
}], ctorParameters: () => [{ type: i1.SystemService }], propDecorators: { autoCompleteInput: [{
|
|
5540
5611
|
type: ViewChild,
|
|
5541
5612
|
args: ['autocomplete']
|
|
@@ -7216,7 +7287,7 @@ class DynamicListComponent {
|
|
|
7216
7287
|
this.hasFormElementChanged = false;
|
|
7217
7288
|
this.isSearch = false;
|
|
7218
7289
|
this.isPropagatingChange = false;
|
|
7219
|
-
|
|
7290
|
+
this.initialValueOnFocus = null;
|
|
7220
7291
|
this.availableSearchOptions = [
|
|
7221
7292
|
{ label: RangeValue.getOperatorLabel(SearchFilter.OPERATOR.EQUAL), value: SearchFilter.OPERATOR.IN },
|
|
7222
7293
|
{ label: RangeValue.getOperatorLabel(SearchFilter.OPERATOR.USE_NOT), value: SearchFilter.OPERATOR.USE_NOT, actualOperator: SearchFilter.OPERATOR.IN },
|
|
@@ -7226,6 +7297,13 @@ class DynamicListComponent {
|
|
|
7226
7297
|
this.isValid = true;
|
|
7227
7298
|
this.propagateChange = (_) => {
|
|
7228
7299
|
};
|
|
7300
|
+
// Prevent autocomplete from losing values when user clicks in/out
|
|
7301
|
+
this.userIntentionallyClearedValue = false;
|
|
7302
|
+
this.hasFocusedInput = false;
|
|
7303
|
+
this.hasUserInput = false;
|
|
7304
|
+
this.inputFieldValue = '';
|
|
7305
|
+
this.lastValidSelectedNodes = null;
|
|
7306
|
+
this.onTouchedCallback = () => { };
|
|
7229
7307
|
// Check if the new search value is different from the previous search value and the current value.
|
|
7230
7308
|
this.autocompleteSearchValue$.pipe(debounceTime$1(300)).subscribe(value => {
|
|
7231
7309
|
if (value !== this.previousSearchValue && value !== this.value) {
|
|
@@ -7311,6 +7389,7 @@ class DynamicListComponent {
|
|
|
7311
7389
|
}
|
|
7312
7390
|
}
|
|
7313
7391
|
writeValue(value) {
|
|
7392
|
+
this.isPropagatingChange = true;
|
|
7314
7393
|
this.value = value?.value || value || null;
|
|
7315
7394
|
const values = !this.value || Array.isArray(this.value) ? this.value || [] : [this.value];
|
|
7316
7395
|
if (value && value.operator) {
|
|
@@ -7325,6 +7404,7 @@ class DynamicListComponent {
|
|
|
7325
7404
|
else {
|
|
7326
7405
|
this.selectedNodes = null;
|
|
7327
7406
|
}
|
|
7407
|
+
this.lastValidSelectedNodes = null;
|
|
7328
7408
|
}
|
|
7329
7409
|
else {
|
|
7330
7410
|
if (this.multiselect) {
|
|
@@ -7349,11 +7429,13 @@ class DynamicListComponent {
|
|
|
7349
7429
|
}
|
|
7350
7430
|
this.selectedNodes = node;
|
|
7351
7431
|
}
|
|
7432
|
+
this.storeLastValidSelection();
|
|
7352
7433
|
}
|
|
7353
7434
|
const nodes = !this.selectedNodes || Array.isArray(this.selectedNodes) ? this.selectedNodes || [] : [this.selectedNodes];
|
|
7354
7435
|
if (this._list && (nodes.length !== values.length || nodes.some((n, i) => n[this.title ? this.title : this.valueField] !== values[i]))) {
|
|
7355
7436
|
this.buildTree();
|
|
7356
7437
|
}
|
|
7438
|
+
this.isPropagatingChange = false;
|
|
7357
7439
|
}
|
|
7358
7440
|
onValueChange() {
|
|
7359
7441
|
this.setFormControlValue(true);
|
|
@@ -7366,6 +7448,7 @@ class DynamicListComponent {
|
|
|
7366
7448
|
onAutoCompleteSelect(node) {
|
|
7367
7449
|
const wasInvalid = !this.isValid;
|
|
7368
7450
|
this.isValid = true;
|
|
7451
|
+
this.storeLastValidSelection();
|
|
7369
7452
|
this.setFormControlValue(wasInvalid);
|
|
7370
7453
|
if (this.hasAutocompleteUrl) {
|
|
7371
7454
|
this.fetchAutocompleteData();
|
|
@@ -7375,13 +7458,181 @@ class DynamicListComponent {
|
|
|
7375
7458
|
this.selectedNodes = this.selectedNodes.filter((sNode) => sNode.value !== node.value);
|
|
7376
7459
|
this.setFormControlValue();
|
|
7377
7460
|
}
|
|
7461
|
+
onAutocompleteModelChange(newValue) {
|
|
7462
|
+
if (!newValue || (Array.isArray(newValue) && newValue.length === 0)) {
|
|
7463
|
+
if (this.selectedNodes && this.inputFieldValue === '') {
|
|
7464
|
+
this.userIntentionallyClearedValue = true;
|
|
7465
|
+
this.lastValidSelectedNodes = null;
|
|
7466
|
+
this.selectedNodes = null;
|
|
7467
|
+
this.value = null;
|
|
7468
|
+
this.setFormControlValue(true);
|
|
7469
|
+
return;
|
|
7470
|
+
}
|
|
7471
|
+
}
|
|
7472
|
+
else {
|
|
7473
|
+
this.userIntentionallyClearedValue = false;
|
|
7474
|
+
}
|
|
7475
|
+
// Restore selection if autocomplete accidentally clears it
|
|
7476
|
+
if (!this.isSearch && !this.userIntentionallyClearedValue &&
|
|
7477
|
+
((!newValue || (Array.isArray(newValue) && newValue.length === 0)) && this.lastValidSelectedNodes)) {
|
|
7478
|
+
setTimeout(() => {
|
|
7479
|
+
this.selectedNodes = structuredClone(this.lastValidSelectedNodes);
|
|
7480
|
+
});
|
|
7481
|
+
return;
|
|
7482
|
+
}
|
|
7483
|
+
this.onTreeSelectionChanged(newValue);
|
|
7484
|
+
}
|
|
7485
|
+
onAutocompleteFocus() {
|
|
7486
|
+
this.hasFocusedInput = true;
|
|
7487
|
+
this.hasUserInput = false;
|
|
7488
|
+
this.userIntentionallyClearedValue = false;
|
|
7489
|
+
// Store initial value to detect actual changes later
|
|
7490
|
+
if (this.value !== null && this.value !== undefined) {
|
|
7491
|
+
this.initialValueOnFocus = this.value ? structuredClone(this.value) : this.value;
|
|
7492
|
+
}
|
|
7493
|
+
else if (this.selectedNodes) {
|
|
7494
|
+
if (Array.isArray(this.selectedNodes)) {
|
|
7495
|
+
this.initialValueOnFocus = this.selectedNodes.map(node => node[this.valueField]);
|
|
7496
|
+
}
|
|
7497
|
+
else {
|
|
7498
|
+
this.initialValueOnFocus = this.selectedNodes[this.valueField] || this.selectedNodes.value;
|
|
7499
|
+
}
|
|
7500
|
+
}
|
|
7501
|
+
else {
|
|
7502
|
+
this.initialValueOnFocus = null;
|
|
7503
|
+
}
|
|
7504
|
+
}
|
|
7505
|
+
onAutocompleteInput(event) {
|
|
7506
|
+
this.hasUserInput = true;
|
|
7507
|
+
const newInputValue = event.target.value || '';
|
|
7508
|
+
if (newInputValue.length > 0) {
|
|
7509
|
+
this.userIntentionallyClearedValue = false;
|
|
7510
|
+
}
|
|
7511
|
+
else if (newInputValue === '' && this.selectedNodes) {
|
|
7512
|
+
this.userIntentionallyClearedValue = true;
|
|
7513
|
+
}
|
|
7514
|
+
this.inputFieldValue = newInputValue;
|
|
7515
|
+
}
|
|
7516
|
+
onAutocompleteKeydown(event) {
|
|
7517
|
+
if ((event.key === 'Delete' || event.key === 'Backspace')) {
|
|
7518
|
+
if (this.selectedNodes && (this.inputFieldValue === '' || this.inputFieldValue.length <= 1)) {
|
|
7519
|
+
this.userIntentionallyClearedValue = true;
|
|
7520
|
+
this.setFormControlValue(true);
|
|
7521
|
+
}
|
|
7522
|
+
}
|
|
7523
|
+
}
|
|
7524
|
+
onAutocompleteBlur() {
|
|
7525
|
+
// Skip form updates if user just clicked in/out without changes
|
|
7526
|
+
if (!this.hasUserInput && !this.userIntentionallyClearedValue) {
|
|
7527
|
+
this.onTouchedCallback();
|
|
7528
|
+
this.resetTrackingFlags();
|
|
7529
|
+
return;
|
|
7530
|
+
}
|
|
7531
|
+
if (this.inputFieldValue === '' && this.selectedNodes && this.hasUserInput) {
|
|
7532
|
+
this.userIntentionallyClearedValue = true;
|
|
7533
|
+
}
|
|
7534
|
+
let shouldPropagateChange = false;
|
|
7535
|
+
let finalValue = this.value;
|
|
7536
|
+
if (this.userIntentionallyClearedValue) {
|
|
7537
|
+
// Check if there was actually a value to clear
|
|
7538
|
+
const hadValueBefore = (this.initialValueOnFocus !== null && this.initialValueOnFocus !== undefined) ||
|
|
7539
|
+
(this.selectedNodes !== null && this.selectedNodes !== undefined);
|
|
7540
|
+
this.selectedNodes = null;
|
|
7541
|
+
this.value = null;
|
|
7542
|
+
this.lastValidSelectedNodes = null;
|
|
7543
|
+
finalValue = null;
|
|
7544
|
+
if (hadValueBefore) {
|
|
7545
|
+
shouldPropagateChange = true;
|
|
7546
|
+
}
|
|
7547
|
+
}
|
|
7548
|
+
else {
|
|
7549
|
+
// Check if restoration is needed (accidental clearing)
|
|
7550
|
+
const needsRestoration = (!this.selectedNodes || (Array.isArray(this.selectedNodes) && this.selectedNodes.length === 0))
|
|
7551
|
+
&& this.lastValidSelectedNodes;
|
|
7552
|
+
if (needsRestoration) {
|
|
7553
|
+
this.restoreSelectionIfNeeded();
|
|
7554
|
+
finalValue = this.selectedNodes && this.selectedNodes.data ? this.selectedNodes.data[this.valueField] :
|
|
7555
|
+
(this.selectedNodes ? this.selectedNodes[this.valueField] : null);
|
|
7556
|
+
if (!this.valuesAreEqual(finalValue, this.initialValueOnFocus)) {
|
|
7557
|
+
shouldPropagateChange = true;
|
|
7558
|
+
}
|
|
7559
|
+
}
|
|
7560
|
+
}
|
|
7561
|
+
this.onTouchedCallback();
|
|
7562
|
+
if (shouldPropagateChange) {
|
|
7563
|
+
this.setFormControlValue(true);
|
|
7564
|
+
}
|
|
7565
|
+
this.resetTrackingFlags();
|
|
7566
|
+
}
|
|
7567
|
+
resetTrackingFlags() {
|
|
7568
|
+
this.hasFocusedInput = false;
|
|
7569
|
+
this.hasUserInput = false;
|
|
7570
|
+
this.userIntentionallyClearedValue = false;
|
|
7571
|
+
this.inputFieldValue = '';
|
|
7572
|
+
this.initialValueOnFocus = null;
|
|
7573
|
+
}
|
|
7574
|
+
valuesAreEqual(value1, value2) {
|
|
7575
|
+
if (value1 === value2)
|
|
7576
|
+
return true;
|
|
7577
|
+
if (value1 === null || value2 === null)
|
|
7578
|
+
return false;
|
|
7579
|
+
if (value1 === undefined || value2 === undefined)
|
|
7580
|
+
return false;
|
|
7581
|
+
if (Array.isArray(value1) && Array.isArray(value2)) {
|
|
7582
|
+
if (value1.length !== value2.length)
|
|
7583
|
+
return false;
|
|
7584
|
+
return value1.every((val, index) => val === value2[index]);
|
|
7585
|
+
}
|
|
7586
|
+
if (typeof value1 === 'object' && typeof value2 === 'object') {
|
|
7587
|
+
if (value1.operator !== value2.operator)
|
|
7588
|
+
return false;
|
|
7589
|
+
if (Array.isArray(value1.value) && Array.isArray(value2.value)) {
|
|
7590
|
+
return this.valuesAreEqual(value1.value, value2.value);
|
|
7591
|
+
}
|
|
7592
|
+
return value1.value === value2.value;
|
|
7593
|
+
}
|
|
7594
|
+
return false;
|
|
7595
|
+
}
|
|
7378
7596
|
onTreeSelectionChanged(evt) {
|
|
7379
|
-
if (
|
|
7380
|
-
this.
|
|
7597
|
+
if (evt !== undefined && evt !== null) {
|
|
7598
|
+
if (!this.multiselect) {
|
|
7599
|
+
this.display = false;
|
|
7600
|
+
}
|
|
7601
|
+
const wasInvalid = !this.isValid;
|
|
7602
|
+
this.isValid = true;
|
|
7603
|
+
this.storeLastValidSelection();
|
|
7604
|
+
this.setFormControlValue(wasInvalid);
|
|
7605
|
+
}
|
|
7606
|
+
else {
|
|
7607
|
+
this.restoreSelectionIfNeeded();
|
|
7608
|
+
}
|
|
7609
|
+
}
|
|
7610
|
+
onAutocompleteClear() {
|
|
7611
|
+
this.userIntentionallyClearedValue = true;
|
|
7612
|
+
this.lastValidSelectedNodes = null;
|
|
7613
|
+
this.selectedNodes = null;
|
|
7614
|
+
this.value = null;
|
|
7615
|
+
this.setFormControlValue(true);
|
|
7616
|
+
}
|
|
7617
|
+
storeLastValidSelection() {
|
|
7618
|
+
if (this.selectedNodes) {
|
|
7619
|
+
this.lastValidSelectedNodes = structuredClone(this.selectedNodes);
|
|
7620
|
+
}
|
|
7621
|
+
}
|
|
7622
|
+
restoreSelectionIfNeeded() {
|
|
7623
|
+
if ((!this.selectedNodes || (Array.isArray(this.selectedNodes) && this.selectedNodes.length === 0))
|
|
7624
|
+
&& this.lastValidSelectedNodes && !this.userIntentionallyClearedValue) {
|
|
7625
|
+
this.selectedNodes = structuredClone(this.lastValidSelectedNodes);
|
|
7626
|
+
}
|
|
7627
|
+
}
|
|
7628
|
+
maintainSelection() {
|
|
7629
|
+
if (this.selectedNodes && this.value) {
|
|
7630
|
+
setTimeout(() => {
|
|
7631
|
+
if (this.autoCompleteInput && this.selectedNodes) {
|
|
7632
|
+
this.autoCompleteInput.writeValue(this.selectedNodes);
|
|
7633
|
+
}
|
|
7634
|
+
});
|
|
7381
7635
|
}
|
|
7382
|
-
const wasInvalid = !this.isValid;
|
|
7383
|
-
this.isValid = true;
|
|
7384
|
-
this.setFormControlValue(wasInvalid);
|
|
7385
7636
|
}
|
|
7386
7637
|
/**
|
|
7387
7638
|
* Handles the autocomplete functionality based on the provided search term.
|
|
@@ -7403,7 +7654,6 @@ class DynamicListComponent {
|
|
|
7403
7654
|
if (event) {
|
|
7404
7655
|
event.stopPropagation();
|
|
7405
7656
|
event.preventDefault();
|
|
7406
|
-
//ignore synthetized events on enter
|
|
7407
7657
|
if (event.type === 'click' && event.detail === 0) {
|
|
7408
7658
|
return;
|
|
7409
7659
|
}
|
|
@@ -7480,6 +7730,7 @@ class DynamicListComponent {
|
|
|
7480
7730
|
* @param forcePropagation - forces propagation even if the value hasn't been changed
|
|
7481
7731
|
*/
|
|
7482
7732
|
setFormControlValue(forcePropagation) {
|
|
7733
|
+
this.isPropagatingChange = true;
|
|
7483
7734
|
let v;
|
|
7484
7735
|
let changed;
|
|
7485
7736
|
if (this.multiselect && Array.isArray(this.selectedNodes)) {
|
|
@@ -7487,7 +7738,8 @@ class DynamicListComponent {
|
|
|
7487
7738
|
changed = !this.value || !(v.length === this.value.length && v.every((val) => this.value.some((curVal) => curVal === val)));
|
|
7488
7739
|
}
|
|
7489
7740
|
else {
|
|
7490
|
-
v = this.selectedNodes && this.selectedNodes.data ? this.selectedNodes?.data[this.valueField] :
|
|
7741
|
+
v = this.selectedNodes && this.selectedNodes.data ? this.selectedNodes?.data[this.valueField] :
|
|
7742
|
+
(this.selectedNodes ? this.selectedNodes[this.valueField] : null);
|
|
7491
7743
|
changed = v !== this.value;
|
|
7492
7744
|
}
|
|
7493
7745
|
if (changed || forcePropagation) {
|
|
@@ -7502,6 +7754,7 @@ class DynamicListComponent {
|
|
|
7502
7754
|
}
|
|
7503
7755
|
this.propagateChange(this.value);
|
|
7504
7756
|
}
|
|
7757
|
+
this.isPropagatingChange = false;
|
|
7505
7758
|
}
|
|
7506
7759
|
buildTree() {
|
|
7507
7760
|
this.autocompleteValues = [];
|
|
@@ -7656,7 +7909,7 @@ class DynamicListComponent {
|
|
|
7656
7909
|
useExisting: forwardRef(() => DynamicListComponent),
|
|
7657
7910
|
multi: true,
|
|
7658
7911
|
}
|
|
7659
|
-
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }, { propertyName: "autoCompleteButton", first: true, predicate: ["button"], descendants: true }], ngImport: i0, template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [visible]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length) && display}\"\n [styleClass]=\"'dynlist-dialog'\" (hide)=\"display = false\">\n\n <eo-tree [tree]=\"tree\" *ngIf=\"display && tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (keyup.enter)=\"showDialog($event, false)\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\">\n </eo-tree>\n\n @if (!(list?.entries?.length)) {\n <div class=\"empty\">\n @if (isAutocompleteLoading) {\n <eo-loading-spinner [size]=\"'small'\"></eo-loading-spinner>\n } @else {\n <div translate>eo.form.property.dynamic.list.empty</div>\n }\n </div>\n }\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n @if (isSearch && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n
|
|
7912
|
+
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }, { propertyName: "autoCompleteButton", first: true, predicate: ["button"], descendants: true }], ngImport: i0, template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [visible]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length) && display}\"\n [styleClass]=\"'dynlist-dialog'\" (hide)=\"display = false\">\n\n <eo-tree [tree]=\"tree\" *ngIf=\"display && tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (keyup.enter)=\"showDialog($event, false)\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\">\n </eo-tree>\n\n @if (!(list?.entries?.length)) {\n <div class=\"empty\">\n @if (isAutocompleteLoading) {\n <eo-loading-spinner [size]=\"'small'\"></eo-loading-spinner>\n } @else {\n <div translate>eo.form.property.dynamic.list.empty</div>\n }\n </div>\n }\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n @if (isSearch && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" (focus)=\"onAutocompleteFocus()\" (input)=\"onAutocompleteInput($event)\" (keydown)=\"onAutocompleteKeydown($event)\" (blur)=\"onAutocompleteBlur()\" [disabled]=\"readonly\" [forceSelection]=\"true\" [autocompleteValues]=\"autocompleteRes\" (ngModelChange)=\"onAutocompleteModelChange($event)\" field=\"{{ valueField }}\" (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"multiselect\" [ngClass]=\"{ 'hide-inputToken': !hasAutocompleteUrl }\"\n >\n\n <ng-template let-item #chipTemplate>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n </div>\n </ng-template>\n\n <ng-template #autocompleteOptionTemplate let-item>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n <div class=\"description\" style=\"font-style: italic; color: var(--text-color-caption)\">{{item[descriptionField]}}</div>\n </div>\n </ng-template>\n </yvc-autocomplete>\n\n <button #button class=\"ui-button\" *ngIf=\"!readonly\" [disabled]=\"readonly\" (click)=\"showDialog($event, !!$event.detail)\"\n (keyup.arrowDown)=\"showDialog($event)\" (keyup.enter)=\"showDialog($event)\" (keyup.space)=\"showDialog($event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div>\n", styles: [".rtl .form-element .form-field>div label{text-align:left!important}:host .eo-dynamic-list{display:flex;align-items:center;justify-content:space-between}:host .eo-dynamic-list .description{padding-left:0!important}:host .eo-dynamic-list yvc-autocomplete{flex:1 1 auto;border:0;outline:0}:host .eo-dynamic-list>button{flex:0 0 auto;padding:0}:host .eo-dynamic-list>button eo-icon{width:16px;height:16px;margin:auto}:host .eo-dynamic-list.full ::ng-deep yvc-autocomplete.hide-inputToken .inputToken{display:none}:host yvc-dropdown{min-width:min-content;border:0;cursor:pointer;border-radius:2px;outline:1px solid rgba(0,0,0,.2);background-color:var(--list-item-hover-background);margin-right:4px}:host yvc-dropdown:hover{background-color:var(--list-item-selected-background)}:host yvc-dropdown ::ng-deep yvc-icon{display:none}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "closeOnCancelOnly", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: TreeComponent, selector: "eo-tree", inputs: ["options", "isDisplayed", "readonly", "emptyMessage", "selectionKey", "highlightedNodes", "tree", "treeUpdate"], outputs: ["expandedNodesChanged", "onSelected"] }, { kind: "component", type: i11.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { kind: "component", type: i8.Dropdown, selector: "yvc-dropdown", inputs: ["options", "filter", "disabled", "multiple", "disableClearButton"], outputs: ["onDropdownOptionsClose"] }] }); }
|
|
7660
7913
|
}
|
|
7661
7914
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DynamicListComponent, decorators: [{
|
|
7662
7915
|
type: Component,
|
|
@@ -7671,7 +7924,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
7671
7924
|
useExisting: forwardRef(() => DynamicListComponent),
|
|
7672
7925
|
multi: true,
|
|
7673
7926
|
}
|
|
7674
|
-
], template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [visible]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length) && display}\"\n [styleClass]=\"'dynlist-dialog'\" (hide)=\"display = false\">\n\n <eo-tree [tree]=\"tree\" *ngIf=\"display && tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (keyup.enter)=\"showDialog($event, false)\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\">\n </eo-tree>\n\n @if (!(list?.entries?.length)) {\n <div class=\"empty\">\n @if (isAutocompleteLoading) {\n <eo-loading-spinner [size]=\"'small'\"></eo-loading-spinner>\n } @else {\n <div translate>eo.form.property.dynamic.list.empty</div>\n }\n </div>\n }\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n @if (isSearch && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n
|
|
7927
|
+
], template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [visible]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length) && display}\"\n [styleClass]=\"'dynlist-dialog'\" (hide)=\"display = false\">\n\n <eo-tree [tree]=\"tree\" *ngIf=\"display && tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (keyup.enter)=\"showDialog($event, false)\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\">\n </eo-tree>\n\n @if (!(list?.entries?.length)) {\n <div class=\"empty\">\n @if (isAutocompleteLoading) {\n <eo-loading-spinner [size]=\"'small'\"></eo-loading-spinner>\n } @else {\n <div translate>eo.form.property.dynamic.list.empty</div>\n }\n </div>\n }\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n @if (isSearch && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" (focus)=\"onAutocompleteFocus()\" (input)=\"onAutocompleteInput($event)\" (keydown)=\"onAutocompleteKeydown($event)\" (blur)=\"onAutocompleteBlur()\" [disabled]=\"readonly\" [forceSelection]=\"true\" [autocompleteValues]=\"autocompleteRes\" (ngModelChange)=\"onAutocompleteModelChange($event)\" field=\"{{ valueField }}\" (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"multiselect\" [ngClass]=\"{ 'hide-inputToken': !hasAutocompleteUrl }\"\n >\n\n <ng-template let-item #chipTemplate>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n </div>\n </ng-template>\n\n <ng-template #autocompleteOptionTemplate let-item>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n <div class=\"description\" style=\"font-style: italic; color: var(--text-color-caption)\">{{item[descriptionField]}}</div>\n </div>\n </ng-template>\n </yvc-autocomplete>\n\n <button #button class=\"ui-button\" *ngIf=\"!readonly\" [disabled]=\"readonly\" (click)=\"showDialog($event, !!$event.detail)\"\n (keyup.arrowDown)=\"showDialog($event)\" (keyup.enter)=\"showDialog($event)\" (keyup.space)=\"showDialog($event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div>\n", styles: [".rtl .form-element .form-field>div label{text-align:left!important}:host .eo-dynamic-list{display:flex;align-items:center;justify-content:space-between}:host .eo-dynamic-list .description{padding-left:0!important}:host .eo-dynamic-list yvc-autocomplete{flex:1 1 auto;border:0;outline:0}:host .eo-dynamic-list>button{flex:0 0 auto;padding:0}:host .eo-dynamic-list>button eo-icon{width:16px;height:16px;margin:auto}:host .eo-dynamic-list.full ::ng-deep yvc-autocomplete.hide-inputToken .inputToken{display:none}:host yvc-dropdown{min-width:min-content;border:0;cursor:pointer;border-radius:2px;outline:1px solid rgba(0,0,0,.2);background-color:var(--list-item-hover-background);margin-right:4px}:host yvc-dropdown:hover{background-color:var(--list-item-selected-background)}:host yvc-dropdown ::ng-deep yvc-icon{display:none}\n"] }]
|
|
7675
7928
|
}], ctorParameters: () => [{ type: DynamicListService }, { type: i1.LocalStorageService }, { type: ObjectFormHelperService }, { type: i1.EventService }], propDecorators: { autoCompleteInput: [{
|
|
7676
7929
|
type: ViewChild,
|
|
7677
7930
|
args: ['autocomplete']
|
|
@@ -8072,14 +8325,16 @@ class ReferenceFinderComponent {
|
|
|
8072
8325
|
}
|
|
8073
8326
|
}
|
|
8074
8327
|
}
|
|
8075
|
-
constructor(referenceFinderService) {
|
|
8328
|
+
constructor(referenceFinderService, elemRef) {
|
|
8076
8329
|
this.referenceFinderService = referenceFinderService;
|
|
8330
|
+
this.elemRef = elemRef;
|
|
8077
8331
|
this.searchTerm$ = new Subject();
|
|
8078
8332
|
this.selectedItems = [];
|
|
8079
8333
|
this.resultList = [];
|
|
8080
8334
|
this.clipboardItems = [];
|
|
8081
8335
|
this.clipboardOpen = true;
|
|
8082
8336
|
this.searching = false;
|
|
8337
|
+
this.autocompleteValues = [];
|
|
8083
8338
|
this.addDmsObjects = new EventEmitter();
|
|
8084
8339
|
this.searching = true;
|
|
8085
8340
|
this.searchTerm$.pipe(debounceTime(500)).subscribe(searchTerm => {
|
|
@@ -8087,11 +8342,21 @@ class ReferenceFinderComponent {
|
|
|
8087
8342
|
.subscribe((searchResult) => {
|
|
8088
8343
|
const hits = (this.exceptionIDs && searchResult.hits) ? searchResult.hits.filter(hit => !this.exceptionIDs.includes(hit.id)) : searchResult.hits;
|
|
8089
8344
|
if (hits && hits.length) {
|
|
8345
|
+
if (searchTerm === '*') {
|
|
8346
|
+
this.autocompleteValues = hits.map(hit => {
|
|
8347
|
+
return { title: hit.title, description: hit.description, type: hit.type };
|
|
8348
|
+
});
|
|
8349
|
+
}
|
|
8090
8350
|
this.clipboardOpen = false;
|
|
8091
8351
|
this.resultList = this.referenceFinderService.generateResults(this.clipboardItems, hits, this.currentSelection, this.types);
|
|
8092
8352
|
}
|
|
8093
8353
|
else {
|
|
8094
|
-
|
|
8354
|
+
if (!searchTerm) {
|
|
8355
|
+
this.searchTerm$.next('*');
|
|
8356
|
+
}
|
|
8357
|
+
else {
|
|
8358
|
+
this.resultList = [];
|
|
8359
|
+
}
|
|
8095
8360
|
this.clipboardOpen = true;
|
|
8096
8361
|
}
|
|
8097
8362
|
this.markedItem = null;
|
|
@@ -8156,23 +8421,27 @@ class ReferenceFinderComponent {
|
|
|
8156
8421
|
this.entries.toArray()[0].nativeElement.scrollIntoView(false);
|
|
8157
8422
|
}
|
|
8158
8423
|
}
|
|
8424
|
+
autocompleteFn(term) {
|
|
8425
|
+
this.autocompleteRes = this.autocompleteValues.filter(value => {
|
|
8426
|
+
return value.title.toLowerCase().indexOf(term.toLowerCase()) !== -1;
|
|
8427
|
+
}).slice(0, 10).map(value => value.title);
|
|
8428
|
+
}
|
|
8159
8429
|
ngAfterViewInit() {
|
|
8160
8430
|
// initially load everything and focus into the search field
|
|
8161
8431
|
this.searchTerm$.next('*');
|
|
8162
|
-
|
|
8432
|
+
setTimeout(() => {
|
|
8433
|
+
this.elemRef.nativeElement.querySelector('input:not(.ghost)')?.focus();
|
|
8434
|
+
}, 200);
|
|
8163
8435
|
}
|
|
8164
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ReferenceFinderComponent, deps: [{ token: ReferenceFinderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8165
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ReferenceFinderComponent, selector: "eo-reference-finder", inputs: { isDisabled: "isDisabled", types: "types", multiselect: "multiselect", contextId: "contextId", exceptionIDs: "exceptionIDs", queryFilters: "queryFilters", currentSelection: "currentSelection", clipboard: "clipboard" }, outputs: { addDmsObjects: "addDmsObjects" }, host: { listeners: { "keydown": "onKey($event)" } }, viewQueries: [{ propertyName: "
|
|
8436
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ReferenceFinderComponent, deps: [{ token: ReferenceFinderService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8437
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ReferenceFinderComponent, selector: "eo-reference-finder", inputs: { isDisabled: "isDisabled", types: "types", multiselect: "multiselect", contextId: "contextId", exceptionIDs: "exceptionIDs", queryFilters: "queryFilters", currentSelection: "currentSelection", clipboard: "clipboard" }, outputs: { addDmsObjects: "addDmsObjects" }, host: { listeners: { "keydown": "onKey($event)" } }, viewQueries: [{ propertyName: "entries", predicate: ["entry"], descendants: true, read: ElementRef }], ngImport: i0, template: "\n<section class=\"reference-finder-search--input\">\n <yvc-autocomplete class=\"search\" tabindex=\"0\" (suggestionSelect)=\"searchTerm$.next($event)\" [autocompleteValues]=\"autocompleteRes\"\n [placeholder]=\"'eo.search.result.term' | translate\" [forceSelection]=\"false\" (autocompleteFnc)=\"autocompleteFn($event)\"\n (input)=\"searchTerm$.next($event.target.value)\">\n </yvc-autocomplete>\n</section>\n\n<section class=\"reference-finder--content\" *ngIf=\"!searching; else loading\">\n <div class=\"results\">\n <eo-simple-accordion *ngIf=\"clipboardItems.length && !copyOnly\"\n [header]=\"'eo.clipboard.type.copy' | translate\"\n [selected]=\"true\"\n (selectChange)=\"clipboardOpen = $event;\"\n class=\"results-accordion\">\n <eo-reference-finder-entry *ngFor=\"let list of clipboardItems\" #entry\n [@fadeInOut]\n [list]=\"list\"\n [multiselect]=\"multiselect\"\n (selectReference)=\"selectReference($event)\"\n [marked]=\"list.id === markedItem?.id\"\n >\n </eo-reference-finder-entry>\n </eo-simple-accordion>\n\n <section *ngIf=\"clipboardItems.length && copyOnly\">\n <eo-reference-finder-entry *ngFor=\"let list of clipboardItems\" #entry\n [@fadeInOut]\n [list]=\"list\"\n [multiselect]=\"multiselect\"\n (selectReference)=\"selectReference($event)\"\n [marked]=\"list.id === markedItem?.id\"\n >\n </eo-reference-finder-entry>\n </section>\n <div class=\"padding\"></div>\n\n <eo-simple-accordion *ngIf=\"resultList.length && !searchOnly\" [selected]=\"true\" [header]=\"'eo.search.title' | translate\" class=\"results-accordion\">\n <eo-reference-finder-entry *ngFor=\"let list of resultList\" #entry\n [@fadeInOut]\n [list]=\"list\"\n [multiselect]=\"multiselect\"\n (selectReference)=\"selectReference($event)\"\n [marked]=\"list.id === markedItem?.id\"\n >\n </eo-reference-finder-entry>\n </eo-simple-accordion>\n\n <section *ngIf=\"resultList.length && searchOnly\">\n <eo-reference-finder-entry *ngFor=\"let list of resultList\" #entry\n [@fadeInOut]\n [list]=\"list\"\n [multiselect]=\"multiselect\"\n (selectReference)=\"selectReference($event)\"\n [marked]=\"list.id === markedItem?.id\"\n >\n </eo-reference-finder-entry>\n </section>\n </div>\n\n <div class=\"cta\">\n <div>\n <button type=\"button\" *ngIf=\"multiselect\" (click)=\"selectAllEntries()\">{{('eo.cta.button.select.all' | translate)}}</button>\n <button type=\"button\" *ngIf=\"multiselect && !searchOnly\" [disabled]=\"isDisabled\" (click)=\"selectCopiedEntries()\">{{('eo.cta.button.select.copy' | translate)}}</button>\n </div>\n <button type=\"button\" class=\"add\" (click)=\"addItems()\" *ngIf=\"!disableAdd\" [@fadeInOut] [class.active]=\"!disableAdd\" [disabled]=\"disableAdd\" [title]=\"'eo.cta.button.add' | translate\">\n {{('eo.cta.button.add' | translate)}}\n </button>\n </div>\n</section>\n\n<ng-template #loading>\n <div class=\"loader-overlay__mask\">\n <eo-loading-spinner class=\"reference__loader\" [size]=\"'large'\"></eo-loading-spinner>\n </div>\n</ng-template>\n", styles: [":host{display:contents}.reference-finder-search--input{background-color:var(--color-accent);padding:var(--app-pane-padding);display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;grid-template-areas:\"search\"}.reference-finder--content{display:contents;align-self:center;justify-items:center}.search{grid-area:search;width:100%;border:0;box-sizing:border-box;padding:calc(var(--app-pane-padding) / 2);font-size:var(--font-title);border:1px var(--panel-background-grey) solid;box-shadow:0 2px 2px #0003;background:#fff}.search-result--hint{font-size:var(--font-caption)}.results{overflow:auto;height:100%;margin:calc(var(--app-pane-padding) / 2);overflow-x:hidden}.results-accordion:nth-child(odd){margin-bottom:10px}.cta{display:flex;align-items:center;justify-content:space-between;padding:var(--app-pane-padding);border-top:1px solid rgba(var(--color-black-rgb),.1)}.add{grid-area:add}.add.active{color:var(--color-white);background-color:var(--color-accent)}.padding{padding:5px}:host ::-webkit-scrollbar{width:5px}:host ::ng-deep .ui-accordion-content{padding:1em 0}.loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}.loader-overlay__mask .reference__loader{margin:auto}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: SimpleAccordionComponent, selector: "eo-simple-accordion", inputs: ["header", "styles", "headerClass", "iconObjectType", "itemAmount", "resultListLink", "selected", "item"], outputs: ["selectChange"] }, { kind: "component", type: i11.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { kind: "component", type: ReferenceFinderEntryComponent, selector: "eo-reference-finder-entry", inputs: ["list", "multiselect", "marked"], outputs: ["selectReference"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], animations: [fadeInOut] }); }
|
|
8166
8438
|
}
|
|
8167
8439
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ReferenceFinderComponent, decorators: [{
|
|
8168
8440
|
type: Component,
|
|
8169
|
-
args: [{ selector: 'eo-reference-finder', animations: [fadeInOut], template: "\n<section class=\"reference-finder-search--input\">\n <
|
|
8170
|
-
}], ctorParameters: () => [{ type: ReferenceFinderService }], propDecorators: { entries: [{
|
|
8441
|
+
args: [{ selector: 'eo-reference-finder', animations: [fadeInOut], template: "\n<section class=\"reference-finder-search--input\">\n <yvc-autocomplete class=\"search\" tabindex=\"0\" (suggestionSelect)=\"searchTerm$.next($event)\" [autocompleteValues]=\"autocompleteRes\"\n [placeholder]=\"'eo.search.result.term' | translate\" [forceSelection]=\"false\" (autocompleteFnc)=\"autocompleteFn($event)\"\n (input)=\"searchTerm$.next($event.target.value)\">\n </yvc-autocomplete>\n</section>\n\n<section class=\"reference-finder--content\" *ngIf=\"!searching; else loading\">\n <div class=\"results\">\n <eo-simple-accordion *ngIf=\"clipboardItems.length && !copyOnly\"\n [header]=\"'eo.clipboard.type.copy' | translate\"\n [selected]=\"true\"\n (selectChange)=\"clipboardOpen = $event;\"\n class=\"results-accordion\">\n <eo-reference-finder-entry *ngFor=\"let list of clipboardItems\" #entry\n [@fadeInOut]\n [list]=\"list\"\n [multiselect]=\"multiselect\"\n (selectReference)=\"selectReference($event)\"\n [marked]=\"list.id === markedItem?.id\"\n >\n </eo-reference-finder-entry>\n </eo-simple-accordion>\n\n <section *ngIf=\"clipboardItems.length && copyOnly\">\n <eo-reference-finder-entry *ngFor=\"let list of clipboardItems\" #entry\n [@fadeInOut]\n [list]=\"list\"\n [multiselect]=\"multiselect\"\n (selectReference)=\"selectReference($event)\"\n [marked]=\"list.id === markedItem?.id\"\n >\n </eo-reference-finder-entry>\n </section>\n <div class=\"padding\"></div>\n\n <eo-simple-accordion *ngIf=\"resultList.length && !searchOnly\" [selected]=\"true\" [header]=\"'eo.search.title' | translate\" class=\"results-accordion\">\n <eo-reference-finder-entry *ngFor=\"let list of resultList\" #entry\n [@fadeInOut]\n [list]=\"list\"\n [multiselect]=\"multiselect\"\n (selectReference)=\"selectReference($event)\"\n [marked]=\"list.id === markedItem?.id\"\n >\n </eo-reference-finder-entry>\n </eo-simple-accordion>\n\n <section *ngIf=\"resultList.length && searchOnly\">\n <eo-reference-finder-entry *ngFor=\"let list of resultList\" #entry\n [@fadeInOut]\n [list]=\"list\"\n [multiselect]=\"multiselect\"\n (selectReference)=\"selectReference($event)\"\n [marked]=\"list.id === markedItem?.id\"\n >\n </eo-reference-finder-entry>\n </section>\n </div>\n\n <div class=\"cta\">\n <div>\n <button type=\"button\" *ngIf=\"multiselect\" (click)=\"selectAllEntries()\">{{('eo.cta.button.select.all' | translate)}}</button>\n <button type=\"button\" *ngIf=\"multiselect && !searchOnly\" [disabled]=\"isDisabled\" (click)=\"selectCopiedEntries()\">{{('eo.cta.button.select.copy' | translate)}}</button>\n </div>\n <button type=\"button\" class=\"add\" (click)=\"addItems()\" *ngIf=\"!disableAdd\" [@fadeInOut] [class.active]=\"!disableAdd\" [disabled]=\"disableAdd\" [title]=\"'eo.cta.button.add' | translate\">\n {{('eo.cta.button.add' | translate)}}\n </button>\n </div>\n</section>\n\n<ng-template #loading>\n <div class=\"loader-overlay__mask\">\n <eo-loading-spinner class=\"reference__loader\" [size]=\"'large'\"></eo-loading-spinner>\n </div>\n</ng-template>\n", styles: [":host{display:contents}.reference-finder-search--input{background-color:var(--color-accent);padding:var(--app-pane-padding);display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;grid-template-areas:\"search\"}.reference-finder--content{display:contents;align-self:center;justify-items:center}.search{grid-area:search;width:100%;border:0;box-sizing:border-box;padding:calc(var(--app-pane-padding) / 2);font-size:var(--font-title);border:1px var(--panel-background-grey) solid;box-shadow:0 2px 2px #0003;background:#fff}.search-result--hint{font-size:var(--font-caption)}.results{overflow:auto;height:100%;margin:calc(var(--app-pane-padding) / 2);overflow-x:hidden}.results-accordion:nth-child(odd){margin-bottom:10px}.cta{display:flex;align-items:center;justify-content:space-between;padding:var(--app-pane-padding);border-top:1px solid rgba(var(--color-black-rgb),.1)}.add{grid-area:add}.add.active{color:var(--color-white);background-color:var(--color-accent)}.padding{padding:5px}:host ::-webkit-scrollbar{width:5px}:host ::ng-deep .ui-accordion-content{padding:1em 0}.loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}.loader-overlay__mask .reference__loader{margin:auto}\n"] }]
|
|
8442
|
+
}], ctorParameters: () => [{ type: ReferenceFinderService }, { type: i0.ElementRef }], propDecorators: { entries: [{
|
|
8171
8443
|
type: ViewChildren,
|
|
8172
8444
|
args: ['entry', { read: ElementRef }]
|
|
8173
|
-
}], searchInput: [{
|
|
8174
|
-
type: ViewChild,
|
|
8175
|
-
args: ['searchInput']
|
|
8176
8445
|
}], isDisabled: [{
|
|
8177
8446
|
type: Input
|
|
8178
8447
|
}], types: [{
|
|
@@ -12231,11 +12500,11 @@ class CodesystemFilterComponent extends CodesystemComponent {
|
|
|
12231
12500
|
// this.autoCompleteInput.multiInputEL.nativeElement.focus();
|
|
12232
12501
|
}
|
|
12233
12502
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CodesystemFilterComponent, deps: [{ token: i1.SystemService }, { token: i1.TranslateService }, { token: i1.EventService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12234
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: CodesystemFilterComponent, selector: "eo-codesystem-filter", viewQueries: [{ propertyName: "eoDialog", first: true, predicate: EoDialogComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"eo-codesystem\" *ngIf=\"codesystem\"\n [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length, readonly: readonly}\">\n @if (isSearch && !isTableFilter && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [autocompleteValues]=\"autocompleteRes\" field=\"name\"\n [disabled]=\"readonly\" [placeholder]=\"placeholder\" [forceSelection]=\"
|
|
12503
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: CodesystemFilterComponent, selector: "eo-codesystem-filter", viewQueries: [{ propertyName: "eoDialog", first: true, predicate: EoDialogComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"eo-codesystem\" *ngIf=\"codesystem\"\n [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length, readonly: readonly}\">\n @if (isSearch && !isTableFilter && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [autocompleteValues]=\"autocompleteRes\" field=\"name\"\n [disabled]=\"readonly\" [placeholder]=\"placeholder\" [forceSelection]=\"false\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\" (ngModelChange)=\"onAutocompleteValueChange($event)\" [(ngModel)]=\"selectedNodes\"(focus)=\"onAutocompleteFocus()\" (blur)=\"onAutocompleteBlur()\">\n </yvc-autocomplete>\n @if (!readonly) {\n <button type=\"button\" #button (click)=\"setDialogVisible(true, $event)\" (keydown.enter)=\"setDialogVisible(true, $event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n }\n</div>\n\n<eo-dialog [title]=\"pickerTitle || ''\" [visible]=\"display\" (hide)=\"display = false\">\n @if (display) {\n <eo-tree [tree]=\"tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" [readonly]=\"readonly\"\n [emptyMessage]=\"emptyMessage\">\n </eo-tree>\n }\n</eo-dialog>\n", styles: [".eo-codesystem{display:flex;align-items:center;justify-content:space-between}.eo-codesystem yvc-autocomplete{display:flex;flex:1;border:0;outline:0}.eo-codesystem>button{padding:0;z-index:9}.eo-codesystem>button eo-icon{width:16px;height:16px;margin:auto}.eo-codesystem.readonly ::ng-deep .chip yvc-icon{display:none}.eo-codesystem.full ::ng-deep yvc-autocomplete .inputToken{display:none}.eo-codesystem yvc-dropdown{min-width:min-content;border:0;cursor:pointer;border-radius:2px;outline:1px solid rgba(0,0,0,.2);background-color:var(--list-item-hover-background);margin-right:4px}.eo-codesystem yvc-dropdown:hover{background-color:var(--list-item-selected-background)}.eo-codesystem yvc-dropdown ::ng-deep yvc-icon{display:none}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "closeOnCancelOnly", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TreeComponent, selector: "eo-tree", inputs: ["options", "isDisplayed", "readonly", "emptyMessage", "selectionKey", "highlightedNodes", "tree", "treeUpdate"], outputs: ["expandedNodesChanged", "onSelected"] }, { kind: "component", type: i11.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { kind: "component", type: i8.Dropdown, selector: "yvc-dropdown", inputs: ["options", "filter", "disabled", "multiple", "disableClearButton"], outputs: ["onDropdownOptionsClose"] }] }); }
|
|
12235
12504
|
}
|
|
12236
12505
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CodesystemFilterComponent, decorators: [{
|
|
12237
12506
|
type: Component,
|
|
12238
|
-
args: [{ selector: 'eo-codesystem-filter', template: "<div class=\"eo-codesystem\" *ngIf=\"codesystem\"\n [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length, readonly: readonly}\">\n @if (isSearch && !isTableFilter && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [autocompleteValues]=\"autocompleteRes\" field=\"name\"\n [disabled]=\"readonly\" [placeholder]=\"placeholder\" [forceSelection]=\"
|
|
12507
|
+
args: [{ selector: 'eo-codesystem-filter', template: "<div class=\"eo-codesystem\" *ngIf=\"codesystem\"\n [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length, readonly: readonly}\">\n @if (isSearch && !isTableFilter && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [autocompleteValues]=\"autocompleteRes\" field=\"name\"\n [disabled]=\"readonly\" [placeholder]=\"placeholder\" [forceSelection]=\"false\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\" (ngModelChange)=\"onAutocompleteValueChange($event)\" [(ngModel)]=\"selectedNodes\"(focus)=\"onAutocompleteFocus()\" (blur)=\"onAutocompleteBlur()\">\n </yvc-autocomplete>\n @if (!readonly) {\n <button type=\"button\" #button (click)=\"setDialogVisible(true, $event)\" (keydown.enter)=\"setDialogVisible(true, $event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n }\n</div>\n\n<eo-dialog [title]=\"pickerTitle || ''\" [visible]=\"display\" (hide)=\"display = false\">\n @if (display) {\n <eo-tree [tree]=\"tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" [readonly]=\"readonly\"\n [emptyMessage]=\"emptyMessage\">\n </eo-tree>\n }\n</eo-dialog>\n", styles: [".eo-codesystem{display:flex;align-items:center;justify-content:space-between}.eo-codesystem yvc-autocomplete{display:flex;flex:1;border:0;outline:0}.eo-codesystem>button{padding:0;z-index:9}.eo-codesystem>button eo-icon{width:16px;height:16px;margin:auto}.eo-codesystem.readonly ::ng-deep .chip yvc-icon{display:none}.eo-codesystem.full ::ng-deep yvc-autocomplete .inputToken{display:none}.eo-codesystem yvc-dropdown{min-width:min-content;border:0;cursor:pointer;border-radius:2px;outline:1px solid rgba(0,0,0,.2);background-color:var(--list-item-hover-background);margin-right:4px}.eo-codesystem yvc-dropdown:hover{background-color:var(--list-item-selected-background)}.eo-codesystem yvc-dropdown ::ng-deep yvc-icon{display:none}\n"] }]
|
|
12239
12508
|
}], ctorParameters: () => [{ type: i1.SystemService }, { type: i1.TranslateService }, { type: i1.EventService }], propDecorators: { eoDialog: [{
|
|
12240
12509
|
type: ViewChild,
|
|
12241
12510
|
args: [EoDialogComponent]
|
|
@@ -12331,11 +12600,11 @@ class DynamicListFilterComponent extends DynamicListComponent {
|
|
|
12331
12600
|
this.pickerTitle = this.params.colDef.headerName;
|
|
12332
12601
|
}
|
|
12333
12602
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DynamicListFilterComponent, deps: [{ token: i1.LocalStorageService }, { token: ObjectFormHelperService }, { token: DynamicListService }, { token: i1.EventService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12334
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: DynamicListFilterComponent, selector: "eo-dynamic-list-filter", viewQueries: [{ propertyName: "eoDialog", first: true, predicate: EoDialogComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [visible]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length) && display}\"\n [styleClass]=\"'dynlist-dialog'\" (hide)=\"display = false\">\n\n <eo-tree [tree]=\"tree\" *ngIf=\"display && tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (keyup.enter)=\"showDialog($event, false)\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\">\n </eo-tree>\n\n @if (!(list?.entries?.length)) {\n <div class=\"empty\">\n @if (isAutocompleteLoading) {\n <eo-loading-spinner [size]=\"'small'\"></eo-loading-spinner>\n } @else {\n <div translate>eo.form.property.dynamic.list.empty</div>\n }\n </div>\n }\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n @if (isSearch && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n
|
|
12603
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: DynamicListFilterComponent, selector: "eo-dynamic-list-filter", viewQueries: [{ propertyName: "eoDialog", first: true, predicate: EoDialogComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [visible]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length) && display}\"\n [styleClass]=\"'dynlist-dialog'\" (hide)=\"display = false\">\n\n <eo-tree [tree]=\"tree\" *ngIf=\"display && tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (keyup.enter)=\"showDialog($event, false)\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\">\n </eo-tree>\n\n @if (!(list?.entries?.length)) {\n <div class=\"empty\">\n @if (isAutocompleteLoading) {\n <eo-loading-spinner [size]=\"'small'\"></eo-loading-spinner>\n } @else {\n <div translate>eo.form.property.dynamic.list.empty</div>\n }\n </div>\n }\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n @if (isSearch && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" (focus)=\"onAutocompleteFocus()\" (input)=\"onAutocompleteInput($event)\" (keydown)=\"onAutocompleteKeydown($event)\" (blur)=\"onAutocompleteBlur()\" [disabled]=\"readonly\" [forceSelection]=\"true\" [autocompleteValues]=\"autocompleteRes\" (ngModelChange)=\"onAutocompleteModelChange($event)\" field=\"{{ valueField }}\" (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"multiselect\" [ngClass]=\"{ 'hide-inputToken': !hasAutocompleteUrl }\"\n >\n\n <ng-template let-item #chipTemplate>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n </div>\n </ng-template>\n\n <ng-template #autocompleteOptionTemplate let-item>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n <div class=\"description\" style=\"font-style: italic; color: var(--text-color-caption)\">{{item[descriptionField]}}</div>\n </div>\n </ng-template>\n </yvc-autocomplete>\n\n <button #button class=\"ui-button\" *ngIf=\"!readonly\" [disabled]=\"readonly\" (click)=\"showDialog($event, !!$event.detail)\"\n (keyup.arrowDown)=\"showDialog($event)\" (keyup.enter)=\"showDialog($event)\" (keyup.space)=\"showDialog($event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div>\n", styles: [".rtl .form-element .form-field>div label{text-align:left!important}:host .eo-dynamic-list{display:flex;align-items:center;justify-content:space-between}:host .eo-dynamic-list .description{padding-left:0!important}:host .eo-dynamic-list yvc-autocomplete{flex:1 1 auto;border:0;outline:0}:host .eo-dynamic-list>button{flex:0 0 auto;padding:0}:host .eo-dynamic-list>button eo-icon{width:16px;height:16px;margin:auto}:host .eo-dynamic-list.full ::ng-deep yvc-autocomplete.hide-inputToken .inputToken{display:none}:host yvc-dropdown{min-width:min-content;border:0;cursor:pointer;border-radius:2px;outline:1px solid rgba(0,0,0,.2);background-color:var(--list-item-hover-background);margin-right:4px}:host yvc-dropdown:hover{background-color:var(--list-item-selected-background)}:host yvc-dropdown ::ng-deep yvc-icon{display:none}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "closeOnCancelOnly", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TreeComponent, selector: "eo-tree", inputs: ["options", "isDisplayed", "readonly", "emptyMessage", "selectionKey", "highlightedNodes", "tree", "treeUpdate"], outputs: ["expandedNodesChanged", "onSelected"] }, { kind: "component", type: i11.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { kind: "component", type: i8.Dropdown, selector: "yvc-dropdown", inputs: ["options", "filter", "disabled", "multiple", "disableClearButton"], outputs: ["onDropdownOptionsClose"] }] }); }
|
|
12335
12604
|
}
|
|
12336
12605
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DynamicListFilterComponent, decorators: [{
|
|
12337
12606
|
type: Component,
|
|
12338
|
-
args: [{ selector: 'eo-dynamic-list-filter', template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [visible]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length) && display}\"\n [styleClass]=\"'dynlist-dialog'\" (hide)=\"display = false\">\n\n <eo-tree [tree]=\"tree\" *ngIf=\"display && tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (keyup.enter)=\"showDialog($event, false)\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\">\n </eo-tree>\n\n @if (!(list?.entries?.length)) {\n <div class=\"empty\">\n @if (isAutocompleteLoading) {\n <eo-loading-spinner [size]=\"'small'\"></eo-loading-spinner>\n } @else {\n <div translate>eo.form.property.dynamic.list.empty</div>\n }\n </div>\n }\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n @if (isSearch && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n
|
|
12607
|
+
args: [{ selector: 'eo-dynamic-list-filter', template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [visible]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length) && display}\"\n [styleClass]=\"'dynlist-dialog'\" (hide)=\"display = false\">\n\n <eo-tree [tree]=\"tree\" *ngIf=\"display && tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (keyup.enter)=\"showDialog($event, false)\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\">\n </eo-tree>\n\n @if (!(list?.entries?.length)) {\n <div class=\"empty\">\n @if (isAutocompleteLoading) {\n <eo-loading-spinner [size]=\"'small'\"></eo-loading-spinner>\n } @else {\n <div translate>eo.form.property.dynamic.list.empty</div>\n }\n </div>\n }\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n @if (isSearch && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" (focus)=\"onAutocompleteFocus()\" (input)=\"onAutocompleteInput($event)\" (keydown)=\"onAutocompleteKeydown($event)\" (blur)=\"onAutocompleteBlur()\" [disabled]=\"readonly\" [forceSelection]=\"true\" [autocompleteValues]=\"autocompleteRes\" (ngModelChange)=\"onAutocompleteModelChange($event)\" field=\"{{ valueField }}\" (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"multiselect\" [ngClass]=\"{ 'hide-inputToken': !hasAutocompleteUrl }\"\n >\n\n <ng-template let-item #chipTemplate>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n </div>\n </ng-template>\n\n <ng-template #autocompleteOptionTemplate let-item>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n <div class=\"description\" style=\"font-style: italic; color: var(--text-color-caption)\">{{item[descriptionField]}}</div>\n </div>\n </ng-template>\n </yvc-autocomplete>\n\n <button #button class=\"ui-button\" *ngIf=\"!readonly\" [disabled]=\"readonly\" (click)=\"showDialog($event, !!$event.detail)\"\n (keyup.arrowDown)=\"showDialog($event)\" (keyup.enter)=\"showDialog($event)\" (keyup.space)=\"showDialog($event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div>\n", styles: [".rtl .form-element .form-field>div label{text-align:left!important}:host .eo-dynamic-list{display:flex;align-items:center;justify-content:space-between}:host .eo-dynamic-list .description{padding-left:0!important}:host .eo-dynamic-list yvc-autocomplete{flex:1 1 auto;border:0;outline:0}:host .eo-dynamic-list>button{flex:0 0 auto;padding:0}:host .eo-dynamic-list>button eo-icon{width:16px;height:16px;margin:auto}:host .eo-dynamic-list.full ::ng-deep yvc-autocomplete.hide-inputToken .inputToken{display:none}:host yvc-dropdown{min-width:min-content;border:0;cursor:pointer;border-radius:2px;outline:1px solid rgba(0,0,0,.2);background-color:var(--list-item-hover-background);margin-right:4px}:host yvc-dropdown:hover{background-color:var(--list-item-selected-background)}:host yvc-dropdown ::ng-deep yvc-icon{display:none}\n"] }]
|
|
12339
12608
|
}], ctorParameters: () => [{ type: i1.LocalStorageService }, { type: ObjectFormHelperService }, { type: DynamicListService }, { type: i1.EventService }], propDecorators: { eoDialog: [{
|
|
12340
12609
|
type: ViewChild,
|
|
12341
12610
|
args: [EoDialogComponent]
|
|
@@ -20240,7 +20509,7 @@ class ObjectLinksComponent {
|
|
|
20240
20509
|
entry.folder.forEach(entry2Layer => {
|
|
20241
20510
|
query.filters[entry2Layer.referencefield] = {
|
|
20242
20511
|
o: 'in',
|
|
20243
|
-
v1: [
|
|
20512
|
+
v1: Array.isArray(entry2Layer.referencevalue) ? entry2Layer.referencevalue : [entry2Layer.referencevalue]
|
|
20244
20513
|
};
|
|
20245
20514
|
});
|
|
20246
20515
|
}
|
|
@@ -24447,10 +24716,10 @@ class AboutStateComponent {
|
|
|
24447
24716
|
this.config = config;
|
|
24448
24717
|
this.titleService = titleService;
|
|
24449
24718
|
this.translate = translate;
|
|
24450
|
-
this.__libraries__ = [{ "name": "@ag-grid-community/angular", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/client-side-row-model", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/core", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/csv-export", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/styles", "version": "31.3.2", "license": "MIT" }, { "name": "@angular/animations", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/cdk", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/common", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/compiler", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/core", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/forms", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/router", "version": "18.1.0", "license": "MIT" }, { "name": "@carbon/charts-angular", "version": "1.16.3", "license": "Apache-2.0" }, { "name": "@eo-sdk/core", "version": "11.14.
|
|
24719
|
+
this.__libraries__ = [{ "name": "@ag-grid-community/angular", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/client-side-row-model", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/core", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/csv-export", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/styles", "version": "31.3.2", "license": "MIT" }, { "name": "@angular/animations", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/cdk", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/common", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/compiler", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/core", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/forms", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/router", "version": "18.1.0", "license": "MIT" }, { "name": "@carbon/charts-angular", "version": "1.16.3", "license": "Apache-2.0" }, { "name": "@eo-sdk/core", "version": "11.14.19", "license": "MIT" }, { "name": "@ngneat/until-destroy", "version": "10.0.0", "license": "MIT" }, { "name": "@ngx-pwa/local-storage", "version": "18.0.0", "license": "MIT" }, { "name": "@ngx-translate/core", "version": "15.0.0", "license": "SEE LICENSE IN LICENSE" }, { "name": "@yuuvis/components", "version": "18.1.23", "license": "MIT" }, { "name": "@yuuvis/widget-grid", "version": "18.0.0", "license": "MIT" }, { "name": "core-js", "version": "2.6.12", "license": "MIT" }, { "name": "fast-xml-parser", "version": "4.5.3", "license": "MIT" }, { "name": "file-saver", "version": "2.0.5", "license": "MIT" }, { "name": "font-awesome", "version": "4.7.0", "license": "(OFL-1.1 AND MIT)" }, { "name": "karma-coverage-istanbul-reporter", "version": "3.0.3", "license": "MIT" }, { "name": "lodash-es", "version": "4.17.21", "license": "MIT" }, { "name": "moment", "version": "2.30.1", "license": "MIT" }, { "name": "ngx-toastr", "version": "19.0.0", "license": "MIT" }, { "name": "rxjs", "version": "7.8.1", "license": "Apache-2.0" }, { "name": "tslib", "version": "2.6.3", "license": "0BSD" }, { "name": "zone.js", "version": "0.14.7", "license": "MIT" }];
|
|
24451
24720
|
this.ctrl = {
|
|
24452
24721
|
componentName: 'yuuvis® RAD client',
|
|
24453
|
-
componentVersion: '11.14.
|
|
24722
|
+
componentVersion: '11.14.20',
|
|
24454
24723
|
productName: '',
|
|
24455
24724
|
productVersion: ''
|
|
24456
24725
|
};
|