@eo-sdk/client 11.14.19 → 11.14.21
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-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts +2 -1
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts.map +1 -1
- 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/app/eo-framework/object-details/object-links/object-links.component.d.ts.map +1 -1
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +7 -4
- 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 +14 -3
- package/esm2022/app/eo-framework-core/api/grid.service.mjs +6 -6
- package/fesm2022/eo-sdk-client.mjs +329 -46
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -2224,14 +2224,14 @@ class CellRenderer {
|
|
|
2224
2224
|
if (param.value === null && CellRenderer.situation === 'SEARCH') {
|
|
2225
2225
|
return CellRenderer.noValueRenderer(param);
|
|
2226
2226
|
}
|
|
2227
|
-
let val =
|
|
2228
|
-
|
|
2227
|
+
let val = '<path class="outline" d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14z"/>' +
|
|
2228
|
+
'<path d="M 5,19 L 19,5" stroke="rgba(0, 0, 0, 0.54)" stroke-width="2"/>';
|
|
2229
2229
|
if (param.value === true || param.value === 'true') {
|
|
2230
|
-
val =
|
|
2231
|
-
|
|
2230
|
+
val = '<path class="outline" d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14z"/>' +
|
|
2231
|
+
'<polyline class="checkmark" points="6.3,11.8 7.8,10.3 10.8,13.3 16.3,7.8 17.8,9.3 10.8,16.3 6.3,11.8"/>';
|
|
2232
2232
|
}
|
|
2233
2233
|
else if (param.value === false || param.value === 'false') {
|
|
2234
|
-
val =
|
|
2234
|
+
val = '<path class="outline" d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14z"/>';
|
|
2235
2235
|
}
|
|
2236
2236
|
return `<svg class="checkbox" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">${val}</svg>`;
|
|
2237
2237
|
}
|
|
@@ -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,9 +20509,20 @@ 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
|
});
|
|
20515
|
+
let superQuery = {
|
|
20516
|
+
term: '',
|
|
20517
|
+
options: {
|
|
20518
|
+
expertmode: true
|
|
20519
|
+
}
|
|
20520
|
+
};
|
|
20521
|
+
Object.keys(query.filters)
|
|
20522
|
+
.forEach(filterName => superQuery.term += this.createSuperQueryTermPart(query, filterName));
|
|
20523
|
+
superQuery.term = superQuery.term.replace(new RegExp(',', 'g'), ' '); // replace all ',' with ' '
|
|
20524
|
+
superQuery.term = superQuery.term.replace(new RegExp(' OR ' + '$'), ''); // remove last ' OR '
|
|
20525
|
+
return `result?query=${encodeURIComponent(JSON.stringify(superQuery))}`;
|
|
20246
20526
|
}
|
|
20247
20527
|
else {
|
|
20248
20528
|
query.options.expertmode = true;
|
|
@@ -20252,8 +20532,8 @@ class ObjectLinksComponent {
|
|
|
20252
20532
|
query.term += ' || ';
|
|
20253
20533
|
}
|
|
20254
20534
|
}
|
|
20535
|
+
return `result?query=${encodeURIComponent(JSON.stringify(query))}`;
|
|
20255
20536
|
}
|
|
20256
|
-
return `result?query=${encodeURIComponent(JSON.stringify(query))}`;
|
|
20257
20537
|
}
|
|
20258
20538
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectLinksComponent, deps: [{ token: ReferenceService }, { token: i1.AppCacheService }, { token: i1.SystemService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20259
20539
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ObjectLinksComponent, selector: "eo-object-links", inputs: { dmsObject: "dmsObject" }, ngImport: i0, template: "<div class=\"eo-references\">\n <div class=\"object-not-found\" *ngIf=\"!inReferences?.length && !outReferences?.length; else refContainer\">\n <div>{{'eo.references.object.notfound' | translate}}</div>\n </div>\n\n <ng-template #refContainer>\n <div class=\"form-buttons\">\n <div class=\"gridlabels\">\n <div class=\"gridlabel\" [ngClass]=\"{'active': showInReferences}\" (click)=\"switchListVisibilityTo('in')\"\n title=\"{{'eo.references.to.label' | translate}}\">\n <span>{{'eo.references.to.label' | translate}}</span>\n </div>\n <div class=\"gridlabel\" [ngClass]=\"{'active': showOutReferences}\" (click)=\"switchListVisibilityTo('out')\"\n title=\"{{'eo.references.from.label' | translate}}\">\n <span>{{'eo.references.from.label' | translate}}</span>\n </div>\n </div>\n <a class=\"result-list-link\" [routerLink]=\"'/result'\" [queryParams]=\"superQueryParams\">\n <eo-icon class=\"icon\" [iconSrc]=\"'assets/_default/svg/ic_open_tab.svg'\" [iconTitle]=\"('eo.references.open.resultlist' | translate)\"></eo-icon>\n </a>\n </div>\n\n <div class=\"eo-references-lists\">\n\n <!-- list of inReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showInReferences}\">\n @if (loading) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n } @else if (inReferences?.length) {\n <div class=\"referenceList\">\n @for (entry1Layer of inReferences; track entry1Layer) {\n <eo-simple-accordion\n [header]=\"entry1Layer.title\"\n [iconObjectType]=\"getObjectType(entry1Layer.type)\"\n [itemAmount]=\"entry1Layer.count\"\n [resultListLink]=\"getSearchLink(entry1Layer)\">\n @for (entry2Layer of entry1Layer.folder; track entry2Layer) {\n @for (entry3Layer of entry2Layer.folder; track entry3Layer) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry3Layer)\">\n <div class=\"flex-row\">\n <div class=\"title\">\n {{entry3Layer?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry3Layer?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry2Layer.title}}\n </div>\n </div>\n }\n }\n </eo-simple-accordion>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n\n <!-- list of outReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showOutReferences}\">\n @if (loading) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n } @else if (outReferences?.length) {\n <div class=\"referenceList\">\n @for (entry1Layer of outReferences; track entry1Layer) {\n <eo-simple-accordion\n [header]=\"entry1Layer.title\"\n [iconObjectType]=\"entry1Layer.objectType\"\n [itemAmount]=\"entry1Layer.folder.length\"\n [resultListLink]=\"getSearchLink(entry1Layer)\">\n @for (entry2Layer of entry1Layer.folder; track entry2Layer) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry2Layer)\">\n <div class=\"flex-row\">\n <div class=\"title\">\n {{entry2Layer?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry2Layer?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry2Layer.fieldLabel}}\n </div>\n </div>\n }\n </eo-simple-accordion>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n </div>\n </ng-template>\n</div>\n", styles: [".eo-references{background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1);margin:var(--app-pane-padding);height:calc(100% - var(--app-pane-padding) * 2);box-sizing:border-box;display:flex;flex-flow:column}.eo-references .hidden{display:none!important}.eo-references .object-not-found{height:100%;display:flex;justify-content:center;align-items:center}.eo-references .object-not-found div{color:var(--text-color-caption)}.eo-references .form-buttons{width:100%;padding:calc(var(--app-pane-padding) / 2);height:44px;display:flex;justify-content:space-between;background:var(--color-white);box-sizing:border-box}.eo-references .form-buttons .result-list-link{text-decoration:none;color:inherit}.eo-references .form-buttons .result-list-link:hover{color:var(--color-accent)}.eo-references .form-buttons .gridlabels{display:flex;width:60%}.eo-references .form-buttons .gridlabel{border:1px solid var(--list-item-border-color);border-radius:4px;padding:0 calc(var(--app-pane-padding) / 2);display:flex;align-items:center;color:var(--text-color-caption);cursor:pointer;margin-right:calc(var(--app-pane-padding) / 2);transition:all var(--app-default-transition-duration) ease-in-out;overflow:hidden}.eo-references .form-buttons .gridlabel span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .form-buttons .gridlabel:hover{color:var(--text-color-body);border-color:#0003}.eo-references .form-buttons .active{color:var(--text-color-body);border-color:#0003;background-color:var(--panel-background-grey)}.eo-references .form-buttons a.button{display:flex;align-items:center;overflow:hidden}.eo-references .form-buttons a.button span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .eo-references-lists{flex:1;overflow:hidden;border-top:4px solid rgba(var(--color-black-rgb),.2)}.eo-references .eo-references-lists main{grid-area:main}.eo-references .eo-references-lists main.loader-overlay__mask{display:flex;width:100%;height:100%;flex-flow:column;align-items:center;justify-content:center;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .2s;animation:eoFadeIn .2s}.eo-references .eo-references-lists .resultlist-container{display:flex;flex-flow:column;height:100%;width:100%;overflow:auto}.eo-references .eo-references-lists .resultlist-container .notfound{color:var(--text-color-caption);display:flex;align-items:center;justify-content:center;height:100%}.eo-references .eo-references-lists .ag-result{position:absolute;inset:0}.eo-references .eo-references-lists .grid-wrapper{position:relative;flex:1}.referenceList{display:flex;flex-direction:column;border-radius:2px}.referenceList eo-simple-accordion{margin-top:var(--app-pane-padding);margin-left:calc(var(--app-pane-padding) / 2);margin-right:calc(var(--app-pane-padding) / 2)}.referenceList .content{cursor:pointer;margin-top:var(--app-pane-padding);margin-left:calc(var(--app-pane-padding) / 2);margin-bottom:calc(var(--app-pane-padding) / 2)}.referenceList .content:hover{background-color:var(--main-background-light)}.referenceList .title{padding-left:calc(var(--app-pane-padding) / 2);font-weight:var(--font-weight-bold)}.referenceList .description,.referenceList .remote-element{padding-left:calc(var(--app-pane-padding) / 2)}.referenceList .title,.referenceList .description,.referenceList .icon,.referenceList .remote-element{color:var(--text-color-caption)}\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: "directive", type: RouterLinkDirective, selector: "a[routerLink]" }, { 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: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
@@ -24447,10 +24727,10 @@ class AboutStateComponent {
|
|
|
24447
24727
|
this.config = config;
|
|
24448
24728
|
this.titleService = titleService;
|
|
24449
24729
|
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.
|
|
24730
|
+
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.20", "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
24731
|
this.ctrl = {
|
|
24452
24732
|
componentName: 'yuuvis® RAD client',
|
|
24453
|
-
componentVersion: '11.14.
|
|
24733
|
+
componentVersion: '11.14.21',
|
|
24454
24734
|
productName: '',
|
|
24455
24735
|
productVersion: ''
|
|
24456
24736
|
};
|
|
@@ -26306,6 +26586,7 @@ let CountObjectsWidgetComponent = class CountObjectsWidgetComponent {
|
|
|
26306
26586
|
this.searchService = searchService;
|
|
26307
26587
|
this.systemService = systemService;
|
|
26308
26588
|
this.storedQueriesService = storedQueriesService;
|
|
26589
|
+
this.preview = false;
|
|
26309
26590
|
this.defaultIconId = '852786D8DA774B3487C5C63D5DEE6628';
|
|
26310
26591
|
}
|
|
26311
26592
|
set widgetConfig(c) {
|
|
@@ -26399,15 +26680,17 @@ let CountObjectsWidgetComponent = class CountObjectsWidgetComponent {
|
|
|
26399
26680
|
window.open(url);
|
|
26400
26681
|
}
|
|
26401
26682
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CountObjectsWidgetComponent, deps: [{ token: i0.ElementRef }, { token: i1.SearchService }, { token: i1.SystemService }, { token: i1.StoredQueriesService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26402
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: CountObjectsWidgetComponent, selector: "eo-count-objects-widget", inputs: { widgetConfig: "widgetConfig" }, ngImport: i0, template: "@if (hitlistResult && !refreshingRequest) {\n <a class=\"info\" [ngClass]=\"{visible: isVisible, disabled:
|
|
26683
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: CountObjectsWidgetComponent, selector: "eo-count-objects-widget", inputs: { preview: "preview", widgetConfig: "widgetConfig" }, ngImport: i0, template: "@if (hitlistResult && !refreshingRequest) {\n <a class=\"info\" [ngClass]=\"{visible: isVisible, disabled: preview}\"\n (click)=\"onEmitQueryClick()\">\n <div class=\"clr\">\n @if (hitlistResult[0]?.type) {\n <eo-icon [objectType]=\"hitlistResult[0]?.type\"></eo-icon>\n } @else {\n <eo-icon [iconId]=\"defaultIconId\"></eo-icon>\n }\n <div class=\"count\">{{ countTileResult?.count }}</div>\n </div>\n <div class=\"msg\">{{ widgetConfig?.formValue.storedQuery }}</div>\n </a>\n} @else if (refreshingRequest) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.configuration.notOk'}\"></eo-error-message>\n </div>\n}\n", styles: [":host-context(.editMode) .info:not(.visible){opacity:1}:host{z-index:1}:host .info{color:var(--color-primary-2);padding:0 var(--app-pane-padding);margin-bottom:calc(var(--app-pane-padding) * 2);text-decoration:none;cursor:pointer}:host .info:not(.visible){opacity:0;pointer-events:none}:host .info.disabled{cursor:default;pointer-events:none}:host .info:focus,:host .info:hover{color:var(--color-accent)}:host .info:focus eo-icon,:host .info:hover eo-icon{background-color:var(--color-accent)}:host .info>div{display:flex;flex:0 0 auto;align-items:center}:host .info eo-icon{flex:0 0 auto;border-radius:2px;background-color:var(--color-primary-2);color:rgba(var(--color-white-rgb),.7);padding:2px}:host .info .count{font-size:2.5rem;line-height:1em;padding:0 var(--app-pane-padding);text-align:right}:host .info .clr.success{color:var(--color-success)}:host .info .clr.warning{color:var(--color-warning)}:host .info .clr.error{color:var(--color-error)}:host .empty{display:contents}::ng-deep eo-icon.error__icon{max-width:fit-content;max-height:fit-content}::ng-deep eo-error-message{overflow-y:auto}::ng-deep .error__message{display:contents;max-width:fit-content;max-height:fit-content}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }] }); }
|
|
26403
26684
|
};
|
|
26404
26685
|
CountObjectsWidgetComponent = __decorate([
|
|
26405
26686
|
UntilDestroy()
|
|
26406
26687
|
], CountObjectsWidgetComponent);
|
|
26407
26688
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CountObjectsWidgetComponent, decorators: [{
|
|
26408
26689
|
type: Component,
|
|
26409
|
-
args: [{ selector: 'eo-count-objects-widget', template: "@if (hitlistResult && !refreshingRequest) {\n <a class=\"info\" [ngClass]=\"{visible: isVisible, disabled:
|
|
26410
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SearchService }, { type: i1.SystemService }, { type: i1.StoredQueriesService }], propDecorators: {
|
|
26690
|
+
args: [{ selector: 'eo-count-objects-widget', template: "@if (hitlistResult && !refreshingRequest) {\n <a class=\"info\" [ngClass]=\"{visible: isVisible, disabled: preview}\"\n (click)=\"onEmitQueryClick()\">\n <div class=\"clr\">\n @if (hitlistResult[0]?.type) {\n <eo-icon [objectType]=\"hitlistResult[0]?.type\"></eo-icon>\n } @else {\n <eo-icon [iconId]=\"defaultIconId\"></eo-icon>\n }\n <div class=\"count\">{{ countTileResult?.count }}</div>\n </div>\n <div class=\"msg\">{{ widgetConfig?.formValue.storedQuery }}</div>\n </a>\n} @else if (refreshingRequest) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.configuration.notOk'}\"></eo-error-message>\n </div>\n}\n", styles: [":host-context(.editMode) .info:not(.visible){opacity:1}:host{z-index:1}:host .info{color:var(--color-primary-2);padding:0 var(--app-pane-padding);margin-bottom:calc(var(--app-pane-padding) * 2);text-decoration:none;cursor:pointer}:host .info:not(.visible){opacity:0;pointer-events:none}:host .info.disabled{cursor:default;pointer-events:none}:host .info:focus,:host .info:hover{color:var(--color-accent)}:host .info:focus eo-icon,:host .info:hover eo-icon{background-color:var(--color-accent)}:host .info>div{display:flex;flex:0 0 auto;align-items:center}:host .info eo-icon{flex:0 0 auto;border-radius:2px;background-color:var(--color-primary-2);color:rgba(var(--color-white-rgb),.7);padding:2px}:host .info .count{font-size:2.5rem;line-height:1em;padding:0 var(--app-pane-padding);text-align:right}:host .info .clr.success{color:var(--color-success)}:host .info .clr.warning{color:var(--color-warning)}:host .info .clr.error{color:var(--color-error)}:host .empty{display:contents}::ng-deep eo-icon.error__icon{max-width:fit-content;max-height:fit-content}::ng-deep eo-error-message{overflow-y:auto}::ng-deep .error__message{display:contents;max-width:fit-content;max-height:fit-content}\n"] }]
|
|
26691
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SearchService }, { type: i1.SystemService }, { type: i1.StoredQueriesService }], propDecorators: { preview: [{
|
|
26692
|
+
type: Input
|
|
26693
|
+
}], widgetConfig: [{
|
|
26411
26694
|
type: Input
|
|
26412
26695
|
}] } });
|
|
26413
26696
|
|
|
@@ -26509,14 +26792,14 @@ let CountObjectsSetupComponent = class CountObjectsSetupComponent {
|
|
|
26509
26792
|
}
|
|
26510
26793
|
}
|
|
26511
26794
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CountObjectsSetupComponent, deps: [{ token: i1$3.UntypedFormBuilder }, { token: i4.TranslateService }, { token: i1.StoredQueriesService }, { token: WidgetsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26512
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: CountObjectsSetupComponent, selector: "eo-count-objects-setup", inputs: { widgetConfig: "widgetConfig" }, outputs: { widgetConfigChange: "widgetConfigChange", widgetConfigStateChange: "widgetConfigStateChange" }, ngImport: i0, template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n @if (storedQueriesPicker?.codesystem?.entries) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.label.storedquery' | translate\" [required]=\"true\"\n [description]=\"'eo.workspace.widget.stored.queries.description'\"\n [invalid]=\"setupForm.dirty && setupForm.get('storedQuery').invalid\">\n <eo-codesystem formControlName=\"storedQuery\" [pickerTitle]=\"storedQueriesPicker.title\"\n [codesystem]=\"storedQueriesPicker.codesystem\"\n [emptyMessage]=\"'eo.workspace.widget.stored.queries.list.notAvailable'\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('storedQuery').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n }\n\n @if(widgetConfig?.storedQuery){\n\n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.showZero' | translate\">\n <eo-checkbox formControlName=\"showZero\">\n </eo-checkbox>\n </eo-form-input>\n
|
|
26795
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: CountObjectsSetupComponent, selector: "eo-count-objects-setup", inputs: { widgetConfig: "widgetConfig" }, outputs: { widgetConfigChange: "widgetConfigChange", widgetConfigStateChange: "widgetConfigStateChange" }, ngImport: i0, template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n @if (storedQueriesPicker?.codesystem?.entries) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.label.storedquery' | translate\" [required]=\"true\"\n [description]=\"'eo.workspace.widget.stored.queries.description'\"\n [invalid]=\"setupForm.dirty && setupForm.get('storedQuery').invalid\">\n <eo-codesystem formControlName=\"storedQuery\" [pickerTitle]=\"storedQueriesPicker.title\"\n [codesystem]=\"storedQueriesPicker.codesystem\"\n [emptyMessage]=\"'eo.workspace.widget.stored.queries.list.notAvailable'\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('storedQuery').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n }\n\n @if(widgetConfig?.storedQuery){\n\n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.showZero' | translate\">\n <eo-checkbox formControlName=\"showZero\">\n </eo-checkbox>\n </eo-form-input>\n\n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.countTileThresholdInvert' | translate\">\n <eo-checkbox formControlName=\"countTileThresholdInvert\">\n </eo-checkbox>\n </eo-form-input>\n <div class=\"desc\">{{ countTileThresholdDesc }}</div>\n\n <eo-form-input class=\"threshold-success\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.success' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileSuccessThreshold\">\n </eo-number>\n </eo-form-input>\n\n <eo-form-input class=\"threshold-warning\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.warning' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileWarningThreshold\">\n </eo-number>\n </eo-form-input>\n\n <eo-form-input class=\"threshold-error\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.error' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileErrorThreshold\">\n </eo-number>\n </eo-form-input>\n }\n </form>\n</div>\n@if (setupForm.valid) {\n <div class=\"preview\">\n <eo-count-objects-widget [preview]=\"true\" [widgetConfig]=\"widgetConfig\"></eo-count-objects-widget>\n </div>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.stored.queries.list.empty'}\"></eo-error-message>\n </div>\n}\n", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color)}:host .setup eo-form-input{display:block;margin-top:var(--app-pane-padding)}:host .setup .checkboxCountTitle{padding-bottom:30px;padding-top:30px}:host .setup .err-msg{color:var(--color-error)}:host .setup .desc{color:var(--text-color-caption)}:host .preview{background-color:var(--main-background);padding:var(--app-pane-padding);display:flex;justify-content:center;align-items:center;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: CodesystemComponent, selector: "eo-codesystem", inputs: ["situation", "pickerTitle", "placeholder", "codesystem", "multiselect", "readonly", "inputStyleClass", "emptyMessage", "isTableElement", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: NumberComponent, selector: "eo-number", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: CountObjectsWidgetComponent, selector: "eo-count-objects-widget", inputs: ["preview", "widgetConfig"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
26513
26796
|
};
|
|
26514
26797
|
CountObjectsSetupComponent = __decorate([
|
|
26515
26798
|
UntilDestroy()
|
|
26516
26799
|
], CountObjectsSetupComponent);
|
|
26517
26800
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CountObjectsSetupComponent, decorators: [{
|
|
26518
26801
|
type: Component,
|
|
26519
|
-
args: [{ selector: 'eo-count-objects-setup', template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n @if (storedQueriesPicker?.codesystem?.entries) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.label.storedquery' | translate\" [required]=\"true\"\n [description]=\"'eo.workspace.widget.stored.queries.description'\"\n [invalid]=\"setupForm.dirty && setupForm.get('storedQuery').invalid\">\n <eo-codesystem formControlName=\"storedQuery\" [pickerTitle]=\"storedQueriesPicker.title\"\n [codesystem]=\"storedQueriesPicker.codesystem\"\n [emptyMessage]=\"'eo.workspace.widget.stored.queries.list.notAvailable'\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('storedQuery').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n }\n\n @if(widgetConfig?.storedQuery){\n\n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.showZero' | translate\">\n <eo-checkbox formControlName=\"showZero\">\n </eo-checkbox>\n </eo-form-input>\n
|
|
26802
|
+
args: [{ selector: 'eo-count-objects-setup', template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n @if (storedQueriesPicker?.codesystem?.entries) {\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.label.storedquery' | translate\" [required]=\"true\"\n [description]=\"'eo.workspace.widget.stored.queries.description'\"\n [invalid]=\"setupForm.dirty && setupForm.get('storedQuery').invalid\">\n <eo-codesystem formControlName=\"storedQuery\" [pickerTitle]=\"storedQueriesPicker.title\"\n [codesystem]=\"storedQueriesPicker.codesystem\"\n [emptyMessage]=\"'eo.workspace.widget.stored.queries.list.notAvailable'\"></eo-codesystem>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('storedQuery').hasError('required')) {\n <div class=\"err-msg\" translate>\n eo.form.property.required\n </div>\n }\n }\n\n @if(widgetConfig?.storedQuery){\n\n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.showZero' | translate\">\n <eo-checkbox formControlName=\"showZero\">\n </eo-checkbox>\n </eo-form-input>\n\n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.countTileThresholdInvert' | translate\">\n <eo-checkbox formControlName=\"countTileThresholdInvert\">\n </eo-checkbox>\n </eo-form-input>\n <div class=\"desc\">{{ countTileThresholdDesc }}</div>\n\n <eo-form-input class=\"threshold-success\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.success' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileSuccessThreshold\">\n </eo-number>\n </eo-form-input>\n\n <eo-form-input class=\"threshold-warning\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.warning' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileWarningThreshold\">\n </eo-number>\n </eo-form-input>\n\n <eo-form-input class=\"threshold-error\" [skipToggle]=\"true\"\n [label]=\"'eo.widget.hitcount.form.label.threshold.error' | translate\">\n <eo-number [scale]=\"0\" formControlName=\"countTileErrorThreshold\">\n </eo-number>\n </eo-form-input>\n }\n </form>\n</div>\n@if (setupForm.valid) {\n <div class=\"preview\">\n <eo-count-objects-widget [preview]=\"true\" [widgetConfig]=\"widgetConfig\"></eo-count-objects-widget>\n </div>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.stored.queries.list.empty'}\"></eo-error-message>\n </div>\n}\n", styles: [":host{display:grid;grid-template-rows:1fr;grid-template-columns:minmax(200px,400px) 1fr;grid-template-areas:\"setup preview\";height:100%}:host .setup{grid-area:setup;padding:var(--app-pane-padding);border-right:1px solid var(--panel-divider-color)}:host .setup eo-form-input{display:block;margin-top:var(--app-pane-padding)}:host .setup .checkboxCountTitle{padding-bottom:30px;padding-top:30px}:host .setup .err-msg{color:var(--color-error)}:host .setup .desc{color:var(--text-color-caption)}:host .preview{background-color:var(--main-background);padding:var(--app-pane-padding);display:flex;justify-content:center;align-items:center;pointer-events:none}\n"] }]
|
|
26520
26803
|
}], ctorParameters: () => [{ type: i1$3.UntypedFormBuilder }, { type: i4.TranslateService }, { type: i1.StoredQueriesService }, { type: WidgetsService }], propDecorators: { widgetConfigChange: [{
|
|
26521
26804
|
type: Output
|
|
26522
26805
|
}], widgetConfigStateChange: [{
|