@eo-sdk/client 11.7.0-rc.1 → 11.8.0-rc.2
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/about-state/about-state.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/dashboard.component.d.ts +3 -2
- package/app/eo-client/dashboard/dashboard.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-setup/signature-statistics-setup.component.d.ts +30 -0
- package/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-setup/signature-statistics-setup.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-widget.component.d.ts +23 -0
- package/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-widget.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics.interface.d.ts +20 -0
- package/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics.interface.d.ts.map +1 -0
- package/app/eo-client/eo-client.module.d.ts +32 -29
- package/app/eo-client/eo-client.module.d.ts.map +1 -1
- package/app/eo-client/settings/settings.component.d.ts +15 -16
- package/app/eo-client/settings/settings.component.d.ts.map +1 -1
- package/app/eo-client/settings/settings.interface.d.ts +25 -0
- package/app/eo-client/settings/settings.interface.d.ts.map +1 -0
- package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +0 -1
- package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts +78 -23
- package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/dynamic-list/dynamic-list.service.d.ts +24 -0
- package/app/eo-framework/form-elements/dynamic-list/dynamic-list.service.d.ts.map +1 -0
- package/app/eo-framework/grid/filters/dynamic-list-filter.component.d.ts +5 -5
- package/app/eo-framework/grid/filters/dynamic-list-filter.component.d.ts.map +1 -1
- package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form-helper.service.d.ts +31 -11
- package/app/eo-framework/object-form/object-form-helper.service.d.ts.map +1 -1
- package/app/eo-framework/upload-overlay/upload-overlay.component.d.ts +51 -26
- package/app/eo-framework/upload-overlay/upload-overlay.component.d.ts.map +1 -1
- package/app/eo-framework-core/agent/agent.service.d.ts +7 -2
- package/app/eo-framework-core/agent/agent.service.d.ts.map +1 -1
- package/assets/_default/i18n/de.json +21 -3
- package/assets/_default/i18n/en.json +21 -3
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/dashboard.component.mjs +20 -6
- package/esm2022/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-setup/signature-statistics-setup.component.mjs +114 -0
- package/esm2022/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-widget.component.mjs +80 -0
- package/esm2022/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics.interface.mjs +2 -0
- package/esm2022/app/eo-client/eo-client.module.mjs +11 -1
- package/esm2022/app/eo-client/process-state/process-state.component.mjs +1 -1
- package/esm2022/app/eo-client/settings/settings.component.mjs +42 -24
- package/esm2022/app/eo-client/settings/settings.interface.mjs +2 -0
- package/esm2022/app/eo-framework/actions/actions/open-document-action/open-document-action.mjs +2 -2
- package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +7 -9
- package/esm2022/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +3 -2
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +215 -94
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.service.mjs +39 -0
- package/esm2022/app/eo-framework/form-elements/string/string.component.mjs +2 -2
- package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +16 -22
- package/esm2022/app/eo-framework/inbox-details/inbox-details.component.mjs +8 -3
- package/esm2022/app/eo-framework/object-details/object-history/object-history.component.mjs +2 -2
- package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form-helper.service.mjs +43 -16
- package/esm2022/app/eo-framework/stored-query/stored-query-details/dynamic-property-switch/dynamic-property-switch.component.mjs +4 -3
- package/esm2022/app/eo-framework/upload-overlay/upload-overlay.component.mjs +163 -92
- package/esm2022/app/eo-framework-core/agent/agent.service.mjs +13 -2
- package/fesm2022/eo-sdk-client.mjs +727 -266
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/package.json +3 -2
|
@@ -4,7 +4,7 @@ import * as i1$2 from '@angular/common';
|
|
|
4
4
|
import { DecimalPipe, PercentPipe, CurrencyPipe, DatePipe, getLocaleDateTimeFormat, FormatWidth, getLocaleTimeFormat, getLocaleDateFormat, CommonModule } from '@angular/common';
|
|
5
5
|
import * as i2 from '@angular/common/http';
|
|
6
6
|
import { HttpResponse, HttpErrorResponse, HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi, HttpHeaders } from '@angular/common/http';
|
|
7
|
-
import { ReplaySubject, BehaviorSubject, from, forkJoin, of, Subject, fromEvent, firstValueFrom, AsyncSubject, tap as tap$1, Observable,
|
|
7
|
+
import { ReplaySubject, BehaviorSubject, from, forkJoin, of, Subject, debounceTime as debounceTime$1, fromEvent, firstValueFrom, AsyncSubject, tap as tap$1, Observable, EMPTY, map as map$2, skip, switchMap as switchMap$1, catchError as catchError$1 } from 'rxjs';
|
|
8
8
|
import { groupBy, mergeMap, reduce, tap, catchError, map, debounceTime, throttleTime, filter as filter$1, switchMap, take as take$1, delay, combineLatest, finalize, pluck, withLatestFrom, first as first$1 } from 'rxjs/operators';
|
|
9
9
|
import * as i1 from '@eo-sdk/core';
|
|
10
10
|
import { SearchQuery, SearchState, EnaioEvent, Utils, CORE_CONFIG, UploadTarget, DmsObject, EnvironmentEnaio, SearchFilter, RangeValue, AuthService, Logger, NotificationsService, TranslateService, EoError, SearchService, InboxItem, Process, PreparedItem, WorkItem, StoredQuery, ClipboardAction, QueryScope, EoSharedModule, FieldDefinition, SubscriptionMode, TranslateModule, UploadFileItem, StoredQueriesService, SortOption, SearchResult } from '@eo-sdk/core';
|
|
@@ -26,7 +26,7 @@ import { YvcOverlayModule } from '@yuuvis/components/overlay';
|
|
|
26
26
|
import * as i5 from '@angular/cdk/a11y';
|
|
27
27
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
28
28
|
import moment from 'moment';
|
|
29
|
-
import * as
|
|
29
|
+
import * as i10 from '@yuuvis/components/autocomplete';
|
|
30
30
|
import { YvcAutocompleteModule } from '@yuuvis/components/autocomplete';
|
|
31
31
|
import * as i3 from '@yuuvis/components/datepicker';
|
|
32
32
|
import { YvcDatepickerModule } from '@yuuvis/components/datepicker';
|
|
@@ -44,7 +44,7 @@ import { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-mod
|
|
|
44
44
|
import { CsvExportModule } from '@ag-grid-community/csv-export';
|
|
45
45
|
import * as i8 from '@ag-grid-community/angular';
|
|
46
46
|
import { AgGridModule } from '@ag-grid-community/angular';
|
|
47
|
-
import * as i7
|
|
47
|
+
import * as i7 from '@yuuvis/components/popout';
|
|
48
48
|
import { PopoutTriggerPosition, YvcPopoutModule } from '@yuuvis/components/popout';
|
|
49
49
|
import * as i20 from '@yuuvis/components/split-view';
|
|
50
50
|
import { YvcSplitViewModule } from '@yuuvis/components/split-view';
|
|
@@ -57,6 +57,8 @@ import * as i3$1 from '@yuuvis/components/common';
|
|
|
57
57
|
import { YvcAutofocusChild } from '@yuuvis/components/common';
|
|
58
58
|
import * as i19 from '@yuuvis/components/split-tabs';
|
|
59
59
|
import { SplitTabsComponent, YvcSplitTabsModule } from '@yuuvis/components/split-tabs';
|
|
60
|
+
import * as i2$6 from '@angular/cdk/clipboard';
|
|
61
|
+
import { ClipboardModule } from '@angular/cdk/clipboard';
|
|
60
62
|
import * as i8$2 from '@yuuvis/components/master-details';
|
|
61
63
|
import { YvcMasterDetailsModule } from '@yuuvis/components/master-details';
|
|
62
64
|
import * as i8$1 from '@carbon/charts-angular';
|
|
@@ -549,7 +551,10 @@ class AgentService {
|
|
|
549
551
|
title: title,
|
|
550
552
|
type: contextFolder.type.name,
|
|
551
553
|
childType: (treeNode && treeNode.data) ? treeNode.data.type : undefined,
|
|
552
|
-
data:
|
|
554
|
+
data: {
|
|
555
|
+
'description': contextFolder?.description ?? undefined,
|
|
556
|
+
'treeNode': treeNode?.data?.data ?? undefined
|
|
557
|
+
}
|
|
553
558
|
}, this.backendService.getAgentBase()).subscribe(r => {
|
|
554
559
|
this.logger.debug(`added location '${title}' to agent service`);
|
|
555
560
|
});
|
|
@@ -605,6 +610,14 @@ class AgentService {
|
|
|
605
610
|
this.sendMessage('copyToClipboard', documents);
|
|
606
611
|
}
|
|
607
612
|
}
|
|
613
|
+
/**
|
|
614
|
+
* Gives the setup informations about the last opened folders
|
|
615
|
+
* @returns Observable<any>
|
|
616
|
+
*/
|
|
617
|
+
getLastOpenedFoldersInfo() {
|
|
618
|
+
const uri = '/locations';
|
|
619
|
+
return this.backendService.get(uri, '/agent');
|
|
620
|
+
}
|
|
608
621
|
/**
|
|
609
622
|
* Send items as email.
|
|
610
623
|
*
|
|
@@ -3997,8 +4010,20 @@ class ObjectFormHelperService {
|
|
|
3997
4010
|
this.systemService = systemService;
|
|
3998
4011
|
this.datePipe = new DatePipe('en');
|
|
3999
4012
|
this.TEMP_STORAGE_ENTRIES_KEY = 'eo.cmp.objectform.tmpstorage.entries';
|
|
4013
|
+
this._latestFormElementChanges = new BehaviorSubject({});
|
|
4000
4014
|
this._clearTemporaryStorageEntries();
|
|
4001
4015
|
}
|
|
4016
|
+
/**
|
|
4017
|
+
* Getter for retrieving the latest form element changes as an observable.
|
|
4018
|
+
*
|
|
4019
|
+
* This getter returns an observable that emits the latest changes to the form elements.
|
|
4020
|
+
* It allows subscribers to react to changes in the form elements in real-time.
|
|
4021
|
+
*
|
|
4022
|
+
* @returns {Observable<SearchParams>} - An observable emitting the latest form element changes.
|
|
4023
|
+
*/
|
|
4024
|
+
get latestFormElementChanges$() {
|
|
4025
|
+
return this._latestFormElementChanges.asObservable();
|
|
4026
|
+
}
|
|
4002
4027
|
/**
|
|
4003
4028
|
* Generates a reactive form based on a form model that may also include form scripts.
|
|
4004
4029
|
* @param formOptions `ObjectFormOptions` defining the form
|
|
@@ -4116,6 +4141,34 @@ class ObjectFormHelperService {
|
|
|
4116
4141
|
this.getElementValues(extractedData, form, situation || 'EDIT', initialData, isTableRowEditForm);
|
|
4117
4142
|
return extractedData;
|
|
4118
4143
|
}
|
|
4144
|
+
/**
|
|
4145
|
+
* Add a reference to a temporary localstorage entry that should be cleared when a
|
|
4146
|
+
* new browser session starts. In context of forms this will be used to cleanup the
|
|
4147
|
+
* layout state of forms (selected tabs etc.) that are stored locally but should only
|
|
4148
|
+
* be pesisted for one browser session.
|
|
4149
|
+
* @param storageKey Key of the localstorage item
|
|
4150
|
+
*/
|
|
4151
|
+
addTemporaryStorageEntry(storageKey) {
|
|
4152
|
+
// entries will themselves be stored in localstorage so we can check for entries
|
|
4153
|
+
// to be removed once the application starts
|
|
4154
|
+
const current = this._getTemporaryStorageEntries();
|
|
4155
|
+
if (!current.includes(storageKey))
|
|
4156
|
+
localStorage.setItem(this.TEMP_STORAGE_ENTRIES_KEY, JSON.stringify([...current, storageKey]));
|
|
4157
|
+
}
|
|
4158
|
+
/**
|
|
4159
|
+
* Updates the latest form element changes with the provided value.
|
|
4160
|
+
*
|
|
4161
|
+
* This method merges the current form element changes with the new value
|
|
4162
|
+
* and emits the updated changes to the `_latestFormElementChanges` subject.
|
|
4163
|
+
*
|
|
4164
|
+
* @param {SearchParams} value - The new form element changes to be merged.
|
|
4165
|
+
* @returns {void}
|
|
4166
|
+
*/
|
|
4167
|
+
updateFormElementChanges(value) {
|
|
4168
|
+
const currentChanges = this._latestFormElementChanges.value;
|
|
4169
|
+
const updatedChanges = { ...currentChanges, ...value };
|
|
4170
|
+
this._latestFormElementChanges.next(updatedChanges);
|
|
4171
|
+
}
|
|
4119
4172
|
// Recursive method to get the values from each form control.
|
|
4120
4173
|
getElementValues(data, formControl, situation, initialData, isTableRowEditForm) {
|
|
4121
4174
|
if (!formControl || !formControl.controls) {
|
|
@@ -4329,6 +4382,7 @@ class ObjectFormHelperService {
|
|
|
4329
4382
|
}
|
|
4330
4383
|
});
|
|
4331
4384
|
}
|
|
4385
|
+
this.updateFormElementChanges(v);
|
|
4332
4386
|
if (scope.formGenResult.scriptingScope) {
|
|
4333
4387
|
scope.formGenResult.scriptingScope.modelChanged(v);
|
|
4334
4388
|
}
|
|
@@ -4657,20 +4711,6 @@ class ObjectFormHelperService {
|
|
|
4657
4711
|
fc.updateValueAndValidity();
|
|
4658
4712
|
fc.markAsDirty();
|
|
4659
4713
|
}
|
|
4660
|
-
/**
|
|
4661
|
-
* Add a reference to a temporary localstorage entry that should be cleared when a
|
|
4662
|
-
* new browser session starts. In context of forms this will be used to cleanup the
|
|
4663
|
-
* layout state of forms (selected tabs etc.) that are stored locally but should only
|
|
4664
|
-
* be pesisted for one browser session.
|
|
4665
|
-
* @param storageKey Key of the localstorage item
|
|
4666
|
-
*/
|
|
4667
|
-
addTemporaryStorageEntry(storageKey) {
|
|
4668
|
-
// entries will themselves be stored in localstorage so we can check for entries
|
|
4669
|
-
// to be removed once the application starts
|
|
4670
|
-
const current = this._getTemporaryStorageEntries();
|
|
4671
|
-
if (!current.includes(storageKey))
|
|
4672
|
-
localStorage.setItem(this.TEMP_STORAGE_ENTRIES_KEY, JSON.stringify([...current, storageKey]));
|
|
4673
|
-
}
|
|
4674
4714
|
_clearTemporaryStorageEntries() {
|
|
4675
4715
|
this._getTemporaryStorageEntries().forEach(e => localStorage.removeItem(e));
|
|
4676
4716
|
localStorage.removeItem(this.TEMP_STORAGE_ENTRIES_KEY);
|
|
@@ -5374,7 +5414,7 @@ class CodesystemComponent {
|
|
|
5374
5414
|
useExisting: forwardRef(() => CodesystemComponent),
|
|
5375
5415
|
multi: true
|
|
5376
5416
|
}
|
|
5377
|
-
], 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\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [autocompleteValues]=\"autocompleteRes\" field=\"name\"\n [disabled]=\"readonly\" [placeholder]=\"placeholder\" [forceSelection]=\"true\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\" (ngModelChange)=\"onAutocompleteValueChange($event)\" [(ngModel)]=\"selectedNodes\">\n </yvc-autocomplete>\n <button type=\"button\" #button *ngIf=\"!readonly\"\n (click)=\"setDialogVisible(true, $event)\" \n (keydown.enter)=\"setDialogVisible(true, $event)\" \n >\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div>\n\n<eo-dialog [title]=\"pickerTitle || ''\" [visible]=\"display\" (hide)=\"display = false\">\n <eo-tree [tree]=\"tree\" [isDisplayed]=\"display\" *ngIf=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" [readonly]=\"readonly\"\n [emptyMessage]=\"emptyMessage\">\n </eo-tree>\n</eo-dialog>", 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}.eo-codesystem>button eo-icon{width:16px;height:16px;margin:auto}.eo-codesystem.full ::ng-deep yvc-autocomplete .inputToken{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", "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:
|
|
5417
|
+
], 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\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [autocompleteValues]=\"autocompleteRes\" field=\"name\"\n [disabled]=\"readonly\" [placeholder]=\"placeholder\" [forceSelection]=\"true\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\" (ngModelChange)=\"onAutocompleteValueChange($event)\" [(ngModel)]=\"selectedNodes\">\n </yvc-autocomplete>\n <button type=\"button\" #button *ngIf=\"!readonly\"\n (click)=\"setDialogVisible(true, $event)\" \n (keydown.enter)=\"setDialogVisible(true, $event)\" \n >\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div>\n\n<eo-dialog [title]=\"pickerTitle || ''\" [visible]=\"display\" (hide)=\"display = false\">\n <eo-tree [tree]=\"tree\" [isDisplayed]=\"display\" *ngIf=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" [readonly]=\"readonly\"\n [emptyMessage]=\"emptyMessage\">\n </eo-tree>\n</eo-dialog>", 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}.eo-codesystem>button eo-icon{width:16px;height:16px;margin:auto}.eo-codesystem.full ::ng-deep yvc-autocomplete .inputToken{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", "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: i10.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] }); }
|
|
5378
5418
|
}
|
|
5379
5419
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: CodesystemComponent, decorators: [{
|
|
5380
5420
|
type: Component,
|
|
@@ -5584,8 +5624,9 @@ class DatetimeRangeComponent {
|
|
|
5584
5624
|
dateValue = newDateValue.toISOString();
|
|
5585
5625
|
}
|
|
5586
5626
|
if (this.isValid) {
|
|
5627
|
+
const oldSearchOption = this.searchOption;
|
|
5587
5628
|
this._setValue(!dateValue ? null : new RangeValue(searchOption, dateValue));
|
|
5588
|
-
if (this.previousDateValue !== dateValue ||
|
|
5629
|
+
if (this.previousDateValue !== dateValue || oldSearchOption !== searchOption) {
|
|
5589
5630
|
this.propagateChange(this.value);
|
|
5590
5631
|
this.previousDateValue = dateValue;
|
|
5591
5632
|
}
|
|
@@ -6161,7 +6202,7 @@ class OrganizationComponent {
|
|
|
6161
6202
|
useExisting: forwardRef(() => OrganizationComponent),
|
|
6162
6203
|
multi: true
|
|
6163
6204
|
}
|
|
6164
|
-
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<div class=\"eo-organization\" [ngClass]=\"{acInputHidden: !multiselect && innerValue.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n [placeholder]=\"placeholder\" (suggestionUnselect)=\"onUnselect($event)\" (blur)=\"onAutoCompleteBlur()\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" field=\"id\"\n [forceSelection]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"true\">\n\n <ng-template #autocompleteOptionTemplate let-item>\n <div class=\"org-item\">\n <yvc-icon [svg]=\"item.type === 'group' ? icon.group : icon.user\"></yvc-icon>\n <span *ngIf=\"(item.firstname?.length && item.lastname?.length) || item.type === 'group'\">{{item.title}}\n ({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.type !== 'group'\">({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\">{{item.lastname}} ({{item.name}})</span>\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\">{{item.firstname}} ({{item.name}})</span>\n </div>\n </ng-template>\n\n <ng-template #chipTemplate let-item>\n <div class=\"org-item\">\n <yvc-icon [svg]=\"item.type === 'group' ? icon.group : icon.user\"></yvc-icon>\n <span\n *ngIf=\"(item.firstname?.length && item.lastname?.length && item.active) || item.type === 'group'\">{{item.title}}\n ({{item.name}})</span>\n <span class=\"inactive\"\n *ngIf=\"(item.firstname?.length && item.lastname?.length && !item.active)\">{{item.title}}\n ({{item.name}})</span>\n <span *ngIf=\"(!item.firstname?.length && !item.lastname?.length && !item.active && !item.type)\"\n class=\"deleted-user-label\">{{'eo.form.property.organization.error.usernotfound'|translate}}</span>\n <span\n *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.active && item.type !== 'group'\">({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\">{{item.lastname}} ({{item.name}})</span>\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\">{{item.firstname}} ({{item.name}})</span>\n </div>\n </ng-template>\n\n </yvc-autocomplete>\n</div>\n", styles: [".eo-organization yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-organization .org-item{display:flex;align-items:center}.eo-organization .inactive{text-decoration:line-through}:host.readonly ::ng-deep .ui-autocomplete-token-icon{display:none}:host ::ng-deep .chip yvc-icon{flex:0 0 auto;width:18px;height:18px;color:var(--text-color-caption)}:host ::ng-deep .deleted-user-label{color:var(--color-error)}:host ::ng-deep .eo-organization.acInputHidden .inputToken{width:0!important;margin:0;padding:0}:host ::ng-deep .eo-organization.acInputHidden .inputToken input{width:0!important}:host ::ng-deep .ui-autocomplete-panel{left:0!important}\n"], dependencies: [{ kind: "component", type: i2$3.Icon, selector: "yvc-icon", inputs: ["svg", "svgSrc"] }, { 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:
|
|
6205
|
+
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<div class=\"eo-organization\" [ngClass]=\"{acInputHidden: !multiselect && innerValue.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n [placeholder]=\"placeholder\" (suggestionUnselect)=\"onUnselect($event)\" (blur)=\"onAutoCompleteBlur()\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" field=\"id\"\n [forceSelection]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"true\">\n\n <ng-template #autocompleteOptionTemplate let-item>\n <div class=\"org-item\">\n <yvc-icon [svg]=\"item.type === 'group' ? icon.group : icon.user\"></yvc-icon>\n <span *ngIf=\"(item.firstname?.length && item.lastname?.length) || item.type === 'group'\">{{item.title}}\n ({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.type !== 'group'\">({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\">{{item.lastname}} ({{item.name}})</span>\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\">{{item.firstname}} ({{item.name}})</span>\n </div>\n </ng-template>\n\n <ng-template #chipTemplate let-item>\n <div class=\"org-item\">\n <yvc-icon [svg]=\"item.type === 'group' ? icon.group : icon.user\"></yvc-icon>\n <span\n *ngIf=\"(item.firstname?.length && item.lastname?.length && item.active) || item.type === 'group'\">{{item.title}}\n ({{item.name}})</span>\n <span class=\"inactive\"\n *ngIf=\"(item.firstname?.length && item.lastname?.length && !item.active)\">{{item.title}}\n ({{item.name}})</span>\n <span *ngIf=\"(!item.firstname?.length && !item.lastname?.length && !item.active && !item.type)\"\n class=\"deleted-user-label\">{{'eo.form.property.organization.error.usernotfound'|translate}}</span>\n <span\n *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.active && item.type !== 'group'\">({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\">{{item.lastname}} ({{item.name}})</span>\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\">{{item.firstname}} ({{item.name}})</span>\n </div>\n </ng-template>\n\n </yvc-autocomplete>\n</div>\n", styles: [".eo-organization yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-organization .org-item{display:flex;align-items:center}.eo-organization .inactive{text-decoration:line-through}:host.readonly ::ng-deep .ui-autocomplete-token-icon{display:none}:host ::ng-deep .chip yvc-icon{flex:0 0 auto;width:18px;height:18px;color:var(--text-color-caption)}:host ::ng-deep .deleted-user-label{color:var(--color-error)}:host ::ng-deep .eo-organization.acInputHidden .inputToken{width:0!important;margin:0;padding:0}:host ::ng-deep .eo-organization.acInputHidden .inputToken input{width:0!important}:host ::ng-deep .ui-autocomplete-panel{left:0!important}\n"], dependencies: [{ kind: "component", type: i2$3.Icon, selector: "yvc-icon", inputs: ["svg", "svgSrc"] }, { 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: i10.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
6165
6206
|
}
|
|
6166
6207
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: OrganizationComponent, decorators: [{
|
|
6167
6208
|
type: Component,
|
|
@@ -6467,7 +6508,7 @@ class StringComponent {
|
|
|
6467
6508
|
useExisting: forwardRef(() => StringComponent),
|
|
6468
6509
|
multi: true
|
|
6469
6510
|
}
|
|
6470
|
-
], ngImport: i0, template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\" type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\"\n [disabled]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n\n <!-- single line input with autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && !multiselect && autocomplete\" #autocomplete [(ngModel)]=\"value\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" (blur)=\"onBlur()\"\n (suggestionSelect)=\"onValueChange($event)\" (ngModelChange)=\"onValueChange($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n </yvc-autocomplete>\n\n <!-- single line input with multiselect-->\n <yvc-chips *ngIf=\"!multiline && multiselect && !autocomplete\" [(ngModel)]=\"value\" [disabled]=\"readonly\"\n (blur)=\"onBlur()\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-chips>\n\n <!-- single line input with multiselect and autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && multiselect && autocomplete\" [autocompleteValues]=\"autocompleteRes\"\n [multiple]=\"true\" [disabled]=\"readonly\" (blur)=\"onBlur()\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-autocomplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" *ngIf=\"multiline\" (blur)=\"onBlur()\" [(ngModel)]=\"value\"\n [readonly]=\"readonly\" [disabled]=\"readonly\" (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a target=\"_blank\" href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M180.309-212.001q-27.008 0-45.658-18.662-18.65-18.662-18.65-45.686v-407.626q0-27.024 18.65-45.524t45.658-18.5h599.382q27.008 0 45.658 18.662 18.65 18.662 18.65 45.686v407.626q0 27.024-18.65 45.524t-45.658 18.5H180.309ZM480-449.694 168-633.309v357q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462h599.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-357L480-449.694ZM480-517l305.846-179H174.154L480-517ZM168-633.309V-696-276.309q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462H168v-369.309Z\" />\n </svg>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M480-116.001q-75.154 0-141.499-28.462-66.346-28.461-115.962-78.076-49.615-49.616-78.076-115.962Q116.001-404.846 116.001-480q0-75.769 28.462-141.807 28.461-66.038 78.076-115.654 49.616-49.615 115.962-78.076Q404.846-843.999 480-843.999q75.769 0 141.807 28.462 66.038 28.461 115.654 78.076 49.615 49.616 78.076 115.654Q843.999-555.769 843.999-480q0 75.154-28.462 141.499-28.461 66.346-78.076 115.962-49.616 49.615-115.654 78.076Q555.769-116.001 480-116.001Zm0-53.845q21.616-21.616 40.539-70.424 18.923-48.808 29.077-108.808H410.384q10.923 61.539 29.462 110.347 18.538 48.808 40.154 68.885Zm-64.46-5q-19-30-34.308-75.539t-23.462-98.693H197.076q31.693 69.309 89.501 115.194 57.809 45.885 128.963 59.038Zm128.92 0q71.154-13.153 128.963-59.038 57.808-45.885 89.501-115.194H602.23Q592.153-295.539 576.845-250q-15.308 45.539-32.385 75.154Zm79.463-226.23h173.693q4.231-21.308 6.039-40.731 1.808-19.424 1.808-38.193t-1.808-38.693q-1.808-19.923-6.039-40.231H623.923q1.231 19.385 1.154 40.385-.077 21-.077 40.539t.077 39.539q.077 20-1.154 37.385Zm-218.308 0h148.77q2.769-22.308 3.462-41.347.692-19.038.692-37.577 0-18.539-.692-38.077-.693-19.539-3.462-40.847h-148.77q-2.769 21.308-3.462 40.847-.692 19.538-.692 38.077 0 18.539.692 38.077.693 19.539 3.462 40.847Zm-243.231 0h173.693q-1.231-19.385-1.154-40.385.077-21 .077-40.539t-.077-39.539q-.077-20 1.154-37.385H162.384q-4.231 21.308-6.039 40.731-1.808 19.424-1.808 38.193t1.808 38.193q1.808 19.423 6.039 40.731ZM602.23-610.922h160.694Q730.846-681 674-726.116q-56.847-45.115-129.54-59.423 19 31.923 33.923 76.885 14.924 44.962 23.847 97.732Zm-191.846 0h139.232q-10.923-61.154-30.039-110.924-19.115-49.769-39.577-68.308-20.462 18.539-39.577 68.308-19.116 49.77-30.039 110.924Zm-213.308 0H357.77q8.923-52.77 23.847-97.732 14.923-44.962 33.923-76.885-73.077 14.308-129.732 59.616-56.654 45.308-88.732 115.001Z\" />\n </svg>\n </a>\n </div>\n\n</div>", styles: [".eo-form-string{display:flex;flex-flow:row nowrap;align-items:center}.eo-form-string yvc-chips,.eo-form-string yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-form-string .classify a{color:var(--text-color-hint);display:flex;flex-flow:column;align-items:center;justify-content:center}.eo-form-string .classify a:hover,.eo-form-string .classify a:focus,.eo-form-string .classify a:focus-visible{color:var(--color-accent);outline:0}.eo-form-string .classify a svg{fill:currentColor}.eo-form-string .classify.empty{display:none}.eo-form-string .input-textarea{width:100%;resize:vertical;border:0;background-color:transparent;color:var(--text-color-body)}.eo-form-string .input-textarea.size-small{height:4em}.eo-form-string .input-textarea.size-medium{height:6em}.eo-form-string .input-textarea.size-large{height:8em}:host ::ng-deep input{width:100%;background:transparent;border:0;padding:.25em}\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.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: 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: i4$1.Chips, selector: "yvc-chips", inputs: ["field", "placeholder", "max", "disabled"] }, { kind: "component", type:
|
|
6511
|
+
], ngImport: i0, template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\" type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\"\n [disabled]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n\n <!-- single line input with autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && !multiselect && autocomplete\" #autocomplete [(ngModel)]=\"value\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" (blur)=\"onBlur()\"\n (suggestionSelect)=\"onValueChange($event)\" (ngModelChange)=\"onValueChange($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n </yvc-autocomplete>\n\n <!-- single line input with multiselect-->\n <yvc-chips *ngIf=\"!multiline && multiselect && !autocomplete\" [(ngModel)]=\"value\" [disabled]=\"readonly\"\n (blur)=\"onBlur()\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-chips>\n\n <!-- single line input with multiselect and autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && multiselect && autocomplete\" [autocompleteValues]=\"autocompleteRes\"\n [multiple]=\"true\" [disabled]=\"readonly\" (blur)=\"onBlur()\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-autocomplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" *ngIf=\"multiline\" (blur)=\"onBlur()\" [(ngModel)]=\"value\"\n [readonly]=\"readonly\" [disabled]=\"readonly\" (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a target=\"_blank\" href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M180.309-212.001q-27.008 0-45.658-18.662-18.65-18.662-18.65-45.686v-407.626q0-27.024 18.65-45.524t45.658-18.5h599.382q27.008 0 45.658 18.662 18.65 18.662 18.65 45.686v407.626q0 27.024-18.65 45.524t-45.658 18.5H180.309ZM480-449.694 168-633.309v357q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462h599.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-357L480-449.694ZM480-517l305.846-179H174.154L480-517ZM168-633.309V-696-276.309q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462H168v-369.309Z\" />\n </svg>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M480-116.001q-75.154 0-141.499-28.462-66.346-28.461-115.962-78.076-49.615-49.616-78.076-115.962Q116.001-404.846 116.001-480q0-75.769 28.462-141.807 28.461-66.038 78.076-115.654 49.616-49.615 115.962-78.076Q404.846-843.999 480-843.999q75.769 0 141.807 28.462 66.038 28.461 115.654 78.076 49.615 49.616 78.076 115.654Q843.999-555.769 843.999-480q0 75.154-28.462 141.499-28.461 66.346-78.076 115.962-49.616 49.615-115.654 78.076Q555.769-116.001 480-116.001Zm0-53.845q21.616-21.616 40.539-70.424 18.923-48.808 29.077-108.808H410.384q10.923 61.539 29.462 110.347 18.538 48.808 40.154 68.885Zm-64.46-5q-19-30-34.308-75.539t-23.462-98.693H197.076q31.693 69.309 89.501 115.194 57.809 45.885 128.963 59.038Zm128.92 0q71.154-13.153 128.963-59.038 57.808-45.885 89.501-115.194H602.23Q592.153-295.539 576.845-250q-15.308 45.539-32.385 75.154Zm79.463-226.23h173.693q4.231-21.308 6.039-40.731 1.808-19.424 1.808-38.193t-1.808-38.693q-1.808-19.923-6.039-40.231H623.923q1.231 19.385 1.154 40.385-.077 21-.077 40.539t.077 39.539q.077 20-1.154 37.385Zm-218.308 0h148.77q2.769-22.308 3.462-41.347.692-19.038.692-37.577 0-18.539-.692-38.077-.693-19.539-3.462-40.847h-148.77q-2.769 21.308-3.462 40.847-.692 19.538-.692 38.077 0 18.539.692 38.077.693 19.539 3.462 40.847Zm-243.231 0h173.693q-1.231-19.385-1.154-40.385.077-21 .077-40.539t-.077-39.539q-.077-20 1.154-37.385H162.384q-4.231 21.308-6.039 40.731-1.808 19.424-1.808 38.193t1.808 38.193q1.808 19.423 6.039 40.731ZM602.23-610.922h160.694Q730.846-681 674-726.116q-56.847-45.115-129.54-59.423 19 31.923 33.923 76.885 14.924 44.962 23.847 97.732Zm-191.846 0h139.232q-10.923-61.154-30.039-110.924-19.115-49.769-39.577-68.308-20.462 18.539-39.577 68.308-19.116 49.77-30.039 110.924Zm-213.308 0H357.77q8.923-52.77 23.847-97.732 14.923-44.962 33.923-76.885-73.077 14.308-129.732 59.616-56.654 45.308-88.732 115.001Z\" />\n </svg>\n </a>\n </div>\n\n</div>", styles: [".eo-form-string{display:flex;flex-flow:row nowrap;align-items:center}.eo-form-string yvc-chips,.eo-form-string yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-form-string .classify a{color:var(--text-color-hint);display:flex;flex-flow:column;align-items:center;justify-content:center}.eo-form-string .classify a:hover,.eo-form-string .classify a:focus,.eo-form-string .classify a:focus-visible{color:var(--color-accent);outline:0}.eo-form-string .classify a svg{fill:currentColor}.eo-form-string .classify.empty{display:none}.eo-form-string .input-textarea{width:100%;resize:vertical;border:0;background-color:transparent;color:var(--text-color-body)}.eo-form-string .input-textarea.size-small{height:4em}.eo-form-string .input-textarea.size-medium{height:6em}.eo-form-string .input-textarea.size-large{height:8em}:host ::ng-deep input{width:100%;background:transparent;border:0;padding:.25em}:host ::ng-deep .yvc-typeahead-input.yvc-typeahead-input{padding:0}\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.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: 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: i4$1.Chips, selector: "yvc-chips", inputs: ["field", "placeholder", "max", "disabled"] }, { kind: "component", type: i10.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] }); }
|
|
6471
6512
|
}
|
|
6472
6513
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: StringComponent, decorators: [{
|
|
6473
6514
|
type: Component,
|
|
@@ -6482,7 +6523,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
|
|
|
6482
6523
|
useExisting: forwardRef(() => StringComponent),
|
|
6483
6524
|
multi: true
|
|
6484
6525
|
}
|
|
6485
|
-
], template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\" type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\"\n [disabled]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n\n <!-- single line input with autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && !multiselect && autocomplete\" #autocomplete [(ngModel)]=\"value\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" (blur)=\"onBlur()\"\n (suggestionSelect)=\"onValueChange($event)\" (ngModelChange)=\"onValueChange($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n </yvc-autocomplete>\n\n <!-- single line input with multiselect-->\n <yvc-chips *ngIf=\"!multiline && multiselect && !autocomplete\" [(ngModel)]=\"value\" [disabled]=\"readonly\"\n (blur)=\"onBlur()\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-chips>\n\n <!-- single line input with multiselect and autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && multiselect && autocomplete\" [autocompleteValues]=\"autocompleteRes\"\n [multiple]=\"true\" [disabled]=\"readonly\" (blur)=\"onBlur()\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-autocomplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" *ngIf=\"multiline\" (blur)=\"onBlur()\" [(ngModel)]=\"value\"\n [readonly]=\"readonly\" [disabled]=\"readonly\" (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a target=\"_blank\" href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M180.309-212.001q-27.008 0-45.658-18.662-18.65-18.662-18.65-45.686v-407.626q0-27.024 18.65-45.524t45.658-18.5h599.382q27.008 0 45.658 18.662 18.65 18.662 18.65 45.686v407.626q0 27.024-18.65 45.524t-45.658 18.5H180.309ZM480-449.694 168-633.309v357q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462h599.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-357L480-449.694ZM480-517l305.846-179H174.154L480-517ZM168-633.309V-696-276.309q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462H168v-369.309Z\" />\n </svg>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M480-116.001q-75.154 0-141.499-28.462-66.346-28.461-115.962-78.076-49.615-49.616-78.076-115.962Q116.001-404.846 116.001-480q0-75.769 28.462-141.807 28.461-66.038 78.076-115.654 49.616-49.615 115.962-78.076Q404.846-843.999 480-843.999q75.769 0 141.807 28.462 66.038 28.461 115.654 78.076 49.615 49.616 78.076 115.654Q843.999-555.769 843.999-480q0 75.154-28.462 141.499-28.461 66.346-78.076 115.962-49.616 49.615-115.654 78.076Q555.769-116.001 480-116.001Zm0-53.845q21.616-21.616 40.539-70.424 18.923-48.808 29.077-108.808H410.384q10.923 61.539 29.462 110.347 18.538 48.808 40.154 68.885Zm-64.46-5q-19-30-34.308-75.539t-23.462-98.693H197.076q31.693 69.309 89.501 115.194 57.809 45.885 128.963 59.038Zm128.92 0q71.154-13.153 128.963-59.038 57.808-45.885 89.501-115.194H602.23Q592.153-295.539 576.845-250q-15.308 45.539-32.385 75.154Zm79.463-226.23h173.693q4.231-21.308 6.039-40.731 1.808-19.424 1.808-38.193t-1.808-38.693q-1.808-19.923-6.039-40.231H623.923q1.231 19.385 1.154 40.385-.077 21-.077 40.539t.077 39.539q.077 20-1.154 37.385Zm-218.308 0h148.77q2.769-22.308 3.462-41.347.692-19.038.692-37.577 0-18.539-.692-38.077-.693-19.539-3.462-40.847h-148.77q-2.769 21.308-3.462 40.847-.692 19.538-.692 38.077 0 18.539.692 38.077.693 19.539 3.462 40.847Zm-243.231 0h173.693q-1.231-19.385-1.154-40.385.077-21 .077-40.539t-.077-39.539q-.077-20 1.154-37.385H162.384q-4.231 21.308-6.039 40.731-1.808 19.424-1.808 38.193t1.808 38.193q1.808 19.423 6.039 40.731ZM602.23-610.922h160.694Q730.846-681 674-726.116q-56.847-45.115-129.54-59.423 19 31.923 33.923 76.885 14.924 44.962 23.847 97.732Zm-191.846 0h139.232q-10.923-61.154-30.039-110.924-19.115-49.769-39.577-68.308-20.462 18.539-39.577 68.308-19.116 49.77-30.039 110.924Zm-213.308 0H357.77q8.923-52.77 23.847-97.732 14.923-44.962 33.923-76.885-73.077 14.308-129.732 59.616-56.654 45.308-88.732 115.001Z\" />\n </svg>\n </a>\n </div>\n\n</div>", styles: [".eo-form-string{display:flex;flex-flow:row nowrap;align-items:center}.eo-form-string yvc-chips,.eo-form-string yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-form-string .classify a{color:var(--text-color-hint);display:flex;flex-flow:column;align-items:center;justify-content:center}.eo-form-string .classify a:hover,.eo-form-string .classify a:focus,.eo-form-string .classify a:focus-visible{color:var(--color-accent);outline:0}.eo-form-string .classify a svg{fill:currentColor}.eo-form-string .classify.empty{display:none}.eo-form-string .input-textarea{width:100%;resize:vertical;border:0;background-color:transparent;color:var(--text-color-body)}.eo-form-string .input-textarea.size-small{height:4em}.eo-form-string .input-textarea.size-medium{height:6em}.eo-form-string .input-textarea.size-large{height:8em}:host ::ng-deep input{width:100%;background:transparent;border:0;padding:.25em}\n"] }]
|
|
6526
|
+
], template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\" type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\"\n [disabled]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n\n <!-- single line input with autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && !multiselect && autocomplete\" #autocomplete [(ngModel)]=\"value\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" (blur)=\"onBlur()\"\n (suggestionSelect)=\"onValueChange($event)\" (ngModelChange)=\"onValueChange($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n </yvc-autocomplete>\n\n <!-- single line input with multiselect-->\n <yvc-chips *ngIf=\"!multiline && multiselect && !autocomplete\" [(ngModel)]=\"value\" [disabled]=\"readonly\"\n (blur)=\"onBlur()\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-chips>\n\n <!-- single line input with multiselect and autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && multiselect && autocomplete\" [autocompleteValues]=\"autocompleteRes\"\n [multiple]=\"true\" [disabled]=\"readonly\" (blur)=\"onBlur()\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-autocomplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" *ngIf=\"multiline\" (blur)=\"onBlur()\" [(ngModel)]=\"value\"\n [readonly]=\"readonly\" [disabled]=\"readonly\" (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a target=\"_blank\" href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M180.309-212.001q-27.008 0-45.658-18.662-18.65-18.662-18.65-45.686v-407.626q0-27.024 18.65-45.524t45.658-18.5h599.382q27.008 0 45.658 18.662 18.65 18.662 18.65 45.686v407.626q0 27.024-18.65 45.524t-45.658 18.5H180.309ZM480-449.694 168-633.309v357q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462h599.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-357L480-449.694ZM480-517l305.846-179H174.154L480-517ZM168-633.309V-696-276.309q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462H168v-369.309Z\" />\n </svg>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M480-116.001q-75.154 0-141.499-28.462-66.346-28.461-115.962-78.076-49.615-49.616-78.076-115.962Q116.001-404.846 116.001-480q0-75.769 28.462-141.807 28.461-66.038 78.076-115.654 49.616-49.615 115.962-78.076Q404.846-843.999 480-843.999q75.769 0 141.807 28.462 66.038 28.461 115.654 78.076 49.615 49.616 78.076 115.654Q843.999-555.769 843.999-480q0 75.154-28.462 141.499-28.461 66.346-78.076 115.962-49.616 49.615-115.654 78.076Q555.769-116.001 480-116.001Zm0-53.845q21.616-21.616 40.539-70.424 18.923-48.808 29.077-108.808H410.384q10.923 61.539 29.462 110.347 18.538 48.808 40.154 68.885Zm-64.46-5q-19-30-34.308-75.539t-23.462-98.693H197.076q31.693 69.309 89.501 115.194 57.809 45.885 128.963 59.038Zm128.92 0q71.154-13.153 128.963-59.038 57.808-45.885 89.501-115.194H602.23Q592.153-295.539 576.845-250q-15.308 45.539-32.385 75.154Zm79.463-226.23h173.693q4.231-21.308 6.039-40.731 1.808-19.424 1.808-38.193t-1.808-38.693q-1.808-19.923-6.039-40.231H623.923q1.231 19.385 1.154 40.385-.077 21-.077 40.539t.077 39.539q.077 20-1.154 37.385Zm-218.308 0h148.77q2.769-22.308 3.462-41.347.692-19.038.692-37.577 0-18.539-.692-38.077-.693-19.539-3.462-40.847h-148.77q-2.769 21.308-3.462 40.847-.692 19.538-.692 38.077 0 18.539.692 38.077.693 19.539 3.462 40.847Zm-243.231 0h173.693q-1.231-19.385-1.154-40.385.077-21 .077-40.539t-.077-39.539q-.077-20 1.154-37.385H162.384q-4.231 21.308-6.039 40.731-1.808 19.424-1.808 38.193t1.808 38.193q1.808 19.423 6.039 40.731ZM602.23-610.922h160.694Q730.846-681 674-726.116q-56.847-45.115-129.54-59.423 19 31.923 33.923 76.885 14.924 44.962 23.847 97.732Zm-191.846 0h139.232q-10.923-61.154-30.039-110.924-19.115-49.769-39.577-68.308-20.462 18.539-39.577 68.308-19.116 49.77-30.039 110.924Zm-213.308 0H357.77q8.923-52.77 23.847-97.732 14.923-44.962 33.923-76.885-73.077 14.308-129.732 59.616-56.654 45.308-88.732 115.001Z\" />\n </svg>\n </a>\n </div>\n\n</div>", styles: [".eo-form-string{display:flex;flex-flow:row nowrap;align-items:center}.eo-form-string yvc-chips,.eo-form-string yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-form-string .classify a{color:var(--text-color-hint);display:flex;flex-flow:column;align-items:center;justify-content:center}.eo-form-string .classify a:hover,.eo-form-string .classify a:focus,.eo-form-string .classify a:focus-visible{color:var(--color-accent);outline:0}.eo-form-string .classify a svg{fill:currentColor}.eo-form-string .classify.empty{display:none}.eo-form-string .input-textarea{width:100%;resize:vertical;border:0;background-color:transparent;color:var(--text-color-body)}.eo-form-string .input-textarea.size-small{height:4em}.eo-form-string .input-textarea.size-medium{height:6em}.eo-form-string .input-textarea.size-large{height:8em}:host ::ng-deep input{width:100%;background:transparent;border:0;padding:.25em}:host ::ng-deep .yvc-typeahead-input.yvc-typeahead-input{padding:0}\n"] }]
|
|
6486
6527
|
}], ctorParameters: () => [{ type: i1.BackendService }], propDecorators: { autocomplete: [{
|
|
6487
6528
|
type: Input
|
|
6488
6529
|
}], multiselect: [{
|
|
@@ -6713,7 +6754,7 @@ class ReferenceComponent {
|
|
|
6713
6754
|
useExisting: forwardRef(() => ReferenceComponent),
|
|
6714
6755
|
multi: true
|
|
6715
6756
|
}
|
|
6716
|
-
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<div class=\"eo-form-reference\" [ngClass]=\"{acInputHidden: !multiselect && !!innerValue.length}\">\n\n <yvc-autocomplete [ngModel]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n (suggestionUnselect)=\"onUnselect($event)\" [disabled]=\"readonly\" [multiple]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" [field]=\"'value'\" [forceSelection]=\"true\" (blur)=\"onAutoCompleteBlur()\"\n (keyup.enter)=\"onKeyUpEnter($event)\" (autocompleteFnc)=\"autocompleteFn($event)\">\n\n <!-- template for the suggest list -->\n <ng-template let-item #autocompleteOptionTemplate>\n <span class=\"yvc-autocomplete-token-label\" title=\"{{item.value}} ({{item.title}})\">\n <strong>{{item.value}}</strong>\n <span>{{item.title}}</span>\n </span>\n </ng-template>\n\n <!-- template for the selected items -->\n <ng-template let-item #chipTemplate>\n <a class=\"link router-link\" [routerLink]=\"['/result']\" [queryParams]=\"getItemLinkParams(item)\">\n <svg focusable=\"false\" class=\"ref-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8\n 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\">\n </path>\n </svg>\n </a>\n <span class=\"yvc-autocomplete-token-label\">{{item.value}}</span>\n\n </ng-template>\n </yvc-autocomplete>\n</div>", styles: [".eo-form-reference{display:flex;align-items:center;justify-content:space-between}.eo-form-reference yvc-autocomplete{flex:1 1 auto;border:0;outline:0}.eo-form-reference a.link eo-icon{width:18px;height:18px}.yvc-autocomplete-token-label{display:flex;flex-flow:column}.yvc-autocomplete-token-label>span{font-size:var(--font-hint)}:host ::ng-deep .eo-form-reference.acInputHidden .inputToken{width:0!important;margin:0;padding:0}:host ::ng-deep .eo-form-reference.acInputHidden .inputToken input{width:0!important}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: RouterLinkDirective, selector: "a[routerLink]" }, { kind: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type:
|
|
6757
|
+
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<div class=\"eo-form-reference\" [ngClass]=\"{acInputHidden: !multiselect && !!innerValue.length}\">\n\n <yvc-autocomplete [ngModel]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n (suggestionUnselect)=\"onUnselect($event)\" [disabled]=\"readonly\" [multiple]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" [field]=\"'value'\" [forceSelection]=\"true\" (blur)=\"onAutoCompleteBlur()\"\n (keyup.enter)=\"onKeyUpEnter($event)\" (autocompleteFnc)=\"autocompleteFn($event)\">\n\n <!-- template for the suggest list -->\n <ng-template let-item #autocompleteOptionTemplate>\n <span class=\"yvc-autocomplete-token-label\" title=\"{{item.value}} ({{item.title}})\">\n <strong>{{item.value}}</strong>\n <span>{{item.title}}</span>\n </span>\n </ng-template>\n\n <!-- template for the selected items -->\n <ng-template let-item #chipTemplate>\n <a class=\"link router-link\" [routerLink]=\"['/result']\" [queryParams]=\"getItemLinkParams(item)\">\n <svg focusable=\"false\" class=\"ref-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8\n 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\">\n </path>\n </svg>\n </a>\n <span class=\"yvc-autocomplete-token-label\">{{item.value}}</span>\n\n </ng-template>\n </yvc-autocomplete>\n</div>", styles: [".eo-form-reference{display:flex;align-items:center;justify-content:space-between}.eo-form-reference yvc-autocomplete{flex:1 1 auto;border:0;outline:0}.eo-form-reference a.link eo-icon{width:18px;height:18px}.yvc-autocomplete-token-label{display:flex;flex-flow:column}.yvc-autocomplete-token-label>span{font-size:var(--font-hint)}:host ::ng-deep .eo-form-reference.acInputHidden .inputToken{width:0!important;margin:0;padding:0}:host ::ng-deep .eo-form-reference.acInputHidden .inputToken input{width:0!important}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: RouterLinkDirective, selector: "a[routerLink]" }, { kind: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i10.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] }); }
|
|
6717
6758
|
}
|
|
6718
6759
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ReferenceComponent, decorators: [{
|
|
6719
6760
|
type: Component,
|
|
@@ -6746,43 +6787,95 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
|
|
|
6746
6787
|
type: Output
|
|
6747
6788
|
}] } });
|
|
6748
6789
|
|
|
6790
|
+
class DynamicListService {
|
|
6791
|
+
constructor(autocompleteService, objectFormHelperService) {
|
|
6792
|
+
this.autocompleteService = autocompleteService;
|
|
6793
|
+
this.objectFormHelperService = objectFormHelperService;
|
|
6794
|
+
this.formElements = {};
|
|
6795
|
+
// Subscribe to the latest form element changes observable and update the form elements with the latest changes.
|
|
6796
|
+
this.objectFormHelperService.latestFormElementChanges$
|
|
6797
|
+
.subscribe(latestChanges => {
|
|
6798
|
+
this.formElements = latestChanges;
|
|
6799
|
+
});
|
|
6800
|
+
}
|
|
6801
|
+
/**
|
|
6802
|
+
* Fetches autocomplete data from the given URL with the specified search parameters.
|
|
6803
|
+
*
|
|
6804
|
+
* This method processes the URL with the provided parameters and form elements,
|
|
6805
|
+
* then makes an HTTP request to fetch the autocomplete data.
|
|
6806
|
+
*
|
|
6807
|
+
* @param {string} url - The base URL for the autocomplete request.
|
|
6808
|
+
* @param {SearchParams} params - The search parameters to be included in the request.
|
|
6809
|
+
* @returns {Observable<AutocompleteResponse>} - An observable containing the autocomplete response data.
|
|
6810
|
+
*/
|
|
6811
|
+
getAutocompleteData(url, params) {
|
|
6812
|
+
const processedUrl = this.autocompleteService.getProcessedUrl(url, params, this.formElements);
|
|
6813
|
+
return this.autocompleteService.getAutocompleteUrlData(processedUrl);
|
|
6814
|
+
}
|
|
6815
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DynamicListService, deps: [{ token: i1.AutocompleteService }, { token: ObjectFormHelperService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6816
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DynamicListService, providedIn: 'root' }); }
|
|
6817
|
+
}
|
|
6818
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DynamicListService, decorators: [{
|
|
6819
|
+
type: Injectable,
|
|
6820
|
+
args: [{
|
|
6821
|
+
providedIn: 'root'
|
|
6822
|
+
}]
|
|
6823
|
+
}], ctorParameters: () => [{ type: i1.AutocompleteService }, { type: ObjectFormHelperService }] });
|
|
6824
|
+
|
|
6749
6825
|
class DynamicListComponent {
|
|
6826
|
+
constructor(dynamicListService, localStorageService, objectFormHelperService) {
|
|
6827
|
+
this.dynamicListService = dynamicListService;
|
|
6828
|
+
this.localStorageService = localStorageService;
|
|
6829
|
+
this.objectFormHelperService = objectFormHelperService;
|
|
6830
|
+
this.hasAutocompleteUrl = false;
|
|
6831
|
+
this.hasAutocompleteValuesCached = false;
|
|
6832
|
+
this.autocompleteUrlValue = null;
|
|
6833
|
+
this.valueField = 'value';
|
|
6834
|
+
this.subEntriesField = 'entries';
|
|
6835
|
+
this.projectsEntriesField = 'projects';
|
|
6836
|
+
this.descriptionField = 'description';
|
|
6837
|
+
this.display = false;
|
|
6838
|
+
this.autocompleteValues = [];
|
|
6839
|
+
this.previousSearchValue = "";
|
|
6840
|
+
this.hasFormElementChanged = false;
|
|
6841
|
+
this.autocompleteSearchValue$ = new Subject();
|
|
6842
|
+
this.isValid = true;
|
|
6843
|
+
this.propagateChange = (_) => {
|
|
6844
|
+
};
|
|
6845
|
+
// Check if the new search value is different from the previous search value and the current value.
|
|
6846
|
+
this.autocompleteSearchValue$.pipe(debounceTime$1(300)).subscribe(value => {
|
|
6847
|
+
if (value !== this.previousSearchValue && value !== this.value) {
|
|
6848
|
+
this.previousSearchValue = value;
|
|
6849
|
+
this.fetchAutocompleteData(value);
|
|
6850
|
+
}
|
|
6851
|
+
});
|
|
6852
|
+
// Subscribe to the latest form element changes observable and the flag indicating that the form element has changed.
|
|
6853
|
+
this.objectFormHelperService.latestFormElementChanges$
|
|
6854
|
+
.subscribe(latestChanges => {
|
|
6855
|
+
this.hasFormElementChanged = true;
|
|
6856
|
+
});
|
|
6857
|
+
}
|
|
6858
|
+
get list() {
|
|
6859
|
+
return this._list;
|
|
6860
|
+
}
|
|
6861
|
+
get selectedNodes() {
|
|
6862
|
+
return this._selectedNodes;
|
|
6863
|
+
}
|
|
6750
6864
|
set filterFunction(func) {
|
|
6751
|
-
this._filterFunc = func;
|
|
6752
6865
|
if (this._list) {
|
|
6753
6866
|
this.buildTree();
|
|
6754
6867
|
}
|
|
6755
6868
|
}
|
|
6756
6869
|
set listObject(lo) {
|
|
6757
6870
|
if (lo) {
|
|
6758
|
-
this.
|
|
6759
|
-
if (lo.config && lo.config.valueField) {
|
|
6760
|
-
if (this.selectedNodes) {
|
|
6761
|
-
if (this.multiselect) {
|
|
6762
|
-
this.selectedNodes = this.selectedNodes.map(sn => {
|
|
6763
|
-
sn[lo.config.valueField] = sn[this.valueField];
|
|
6764
|
-
sn['value'] = sn[this.valueField];
|
|
6765
|
-
return sn;
|
|
6766
|
-
});
|
|
6767
|
-
}
|
|
6768
|
-
else {
|
|
6769
|
-
this.selectedNodes[lo.config.valueField] = this.selectedNodes[this.valueField];
|
|
6770
|
-
this.selectedNodes['value'] = this.selectedNodes[this.valueField];
|
|
6771
|
-
}
|
|
6772
|
-
}
|
|
6773
|
-
this.valueField = lo.config.valueField;
|
|
6774
|
-
}
|
|
6775
|
-
if (lo.config && lo.config.descriptionField) {
|
|
6776
|
-
this.descriptionField = lo.config.descriptionField;
|
|
6777
|
-
}
|
|
6778
|
-
if (lo.config && lo.config.subEntriesField) {
|
|
6779
|
-
this.subEntriesField = lo.config.subEntriesField;
|
|
6780
|
-
}
|
|
6781
|
-
this.buildTree();
|
|
6871
|
+
this.processListObject(lo);
|
|
6782
6872
|
}
|
|
6783
6873
|
}
|
|
6784
|
-
|
|
6785
|
-
|
|
6874
|
+
set autocompleteUrl(url) {
|
|
6875
|
+
if (url) {
|
|
6876
|
+
this.hasAutocompleteUrl = true;
|
|
6877
|
+
this.autocompleteUrlValue = url;
|
|
6878
|
+
}
|
|
6786
6879
|
}
|
|
6787
6880
|
set selectedNodes(n) {
|
|
6788
6881
|
if (n && !Array.isArray(n)) {
|
|
@@ -6790,23 +6883,46 @@ class DynamicListComponent {
|
|
|
6790
6883
|
}
|
|
6791
6884
|
this._selectedNodes = structuredClone(n);
|
|
6792
6885
|
}
|
|
6793
|
-
|
|
6794
|
-
|
|
6795
|
-
|
|
6796
|
-
|
|
6797
|
-
|
|
6798
|
-
|
|
6799
|
-
|
|
6800
|
-
|
|
6801
|
-
|
|
6802
|
-
|
|
6803
|
-
|
|
6804
|
-
|
|
6805
|
-
|
|
6806
|
-
|
|
6886
|
+
/**
|
|
6887
|
+
* Fetches autocomplete data based on the provided search value.
|
|
6888
|
+
*
|
|
6889
|
+
* If the autocomplete values are cached and there is no search value or form element change,
|
|
6890
|
+
* it retrieves the cached values from local storage. Otherwise, it makes an HTTP request to fetch
|
|
6891
|
+
* the autocomplete data.
|
|
6892
|
+
*
|
|
6893
|
+
* @param {string} [searchValue=null] - The search value used to filter the autocomplete results.
|
|
6894
|
+
* @returns {void}
|
|
6895
|
+
*/
|
|
6896
|
+
fetchAutocompleteData(searchValue = null) {
|
|
6897
|
+
let autocompelteListValues = {};
|
|
6898
|
+
let url = this.autocompleteUrlValue;
|
|
6899
|
+
if (this.hasAutocompleteValuesCached && !searchValue && !this.hasFormElementChanged) {
|
|
6900
|
+
autocompelteListValues = this.localStorageService.getItem('autocomplete_' + this.formControlName);
|
|
6901
|
+
this.processListObject(autocompelteListValues);
|
|
6902
|
+
}
|
|
6903
|
+
else {
|
|
6904
|
+
let params = {};
|
|
6905
|
+
if (searchValue) {
|
|
6906
|
+
params['query'] = searchValue;
|
|
6907
|
+
}
|
|
6908
|
+
if (this.situation) {
|
|
6909
|
+
params['situation'] = this.situation;
|
|
6910
|
+
}
|
|
6911
|
+
this.dynamicListService.getAutocompleteData(url, params).subscribe((data) => {
|
|
6912
|
+
this.setFormControlValue();
|
|
6913
|
+
if (!searchValue) {
|
|
6914
|
+
this.hasAutocompleteValuesCached = true;
|
|
6915
|
+
this.localStorageService.setItem('autocomplete_' + this.formControlName, data);
|
|
6916
|
+
}
|
|
6917
|
+
this.processListObject(data);
|
|
6918
|
+
if (searchValue) {
|
|
6919
|
+
this.filterAutocompleteResults(searchValue);
|
|
6920
|
+
}
|
|
6921
|
+
this.hasFormElementChanged = false;
|
|
6922
|
+
});
|
|
6923
|
+
}
|
|
6807
6924
|
}
|
|
6808
6925
|
writeValue(value) {
|
|
6809
|
-
this.dirty = false;
|
|
6810
6926
|
this.value = value || null;
|
|
6811
6927
|
const values = !this.value || Array.isArray(this.value) ? this.value || [] : [this.value];
|
|
6812
6928
|
if (value === null || value === undefined) {
|
|
@@ -6860,11 +6976,97 @@ class DynamicListComponent {
|
|
|
6860
6976
|
this.isValid = true;
|
|
6861
6977
|
this.setFormControlValue(wasInvalid);
|
|
6862
6978
|
}
|
|
6863
|
-
|
|
6864
|
-
|
|
6979
|
+
/**
|
|
6980
|
+
* Handles the autocomplete functionality based on the provided search term.
|
|
6981
|
+
*
|
|
6982
|
+
* If `selectedNodes` is set, it resets and updates `selectedNodes` with the search term.
|
|
6983
|
+
* If `hasAutocompleteUrl` is true, it triggers an autocomplete search via an observable.
|
|
6984
|
+
* Otherwise, it filters the autocomplete results locally.
|
|
6985
|
+
*
|
|
6986
|
+
* @param {string} term - The search term used for autocomplete.
|
|
6987
|
+
* @returns {void}
|
|
6988
|
+
*/
|
|
6989
|
+
autocompleteFn(term) {
|
|
6990
|
+
if (this.selectedNodes) {
|
|
6865
6991
|
this.selectedNodes = null;
|
|
6992
|
+
this.selectedNodes = {
|
|
6993
|
+
value: term,
|
|
6994
|
+
data: {}
|
|
6995
|
+
};
|
|
6996
|
+
}
|
|
6997
|
+
if (this.hasAutocompleteUrl) {
|
|
6998
|
+
this.autocompleteSearchValue$.next(term);
|
|
6999
|
+
}
|
|
7000
|
+
else {
|
|
7001
|
+
this.filterAutocompleteResults(term);
|
|
7002
|
+
}
|
|
7003
|
+
}
|
|
7004
|
+
showDialog(event, display = true) {
|
|
7005
|
+
if (event) {
|
|
7006
|
+
event.stopPropagation();
|
|
7007
|
+
event.preventDefault();
|
|
7008
|
+
//ignore synthetized events on enter
|
|
7009
|
+
if (event.type === 'click' && event.detail === 0) {
|
|
7010
|
+
return;
|
|
7011
|
+
}
|
|
7012
|
+
if (this.hasAutocompleteUrl) {
|
|
7013
|
+
this.fetchAutocompleteData();
|
|
7014
|
+
}
|
|
7015
|
+
}
|
|
7016
|
+
this.display = !!display;
|
|
7017
|
+
}
|
|
7018
|
+
ngOnInit() {
|
|
7019
|
+
if (this.situation === 'SEARCH' && !this.hasAutocompleteUrl) {
|
|
7020
|
+
this.multiselect = true;
|
|
7021
|
+
}
|
|
7022
|
+
}
|
|
7023
|
+
validate(c) {
|
|
7024
|
+
return (this.isValid) ? null : {
|
|
7025
|
+
dynamiclist: {
|
|
7026
|
+
valid: false,
|
|
7027
|
+
},
|
|
7028
|
+
};
|
|
7029
|
+
}
|
|
7030
|
+
ngOnDestroy() {
|
|
7031
|
+
this.localStorageService.removeItem('autocomplete_' + this.formControlName);
|
|
7032
|
+
if (this.formElementChangesSubscription) {
|
|
7033
|
+
this.formElementChangesSubscription.unsubscribe();
|
|
6866
7034
|
}
|
|
6867
|
-
|
|
7035
|
+
}
|
|
7036
|
+
/**
|
|
7037
|
+
* Processes the given list object and updates the component's state accordingly.
|
|
7038
|
+
*
|
|
7039
|
+
* This method updates the internal list, selected nodes, and various configuration fields
|
|
7040
|
+
* based on the provided list object. It also triggers the building of the tree structure.
|
|
7041
|
+
*
|
|
7042
|
+
* @param {AutocompleteResponse} listObject - The list object containing configuration and data.
|
|
7043
|
+
* @private
|
|
7044
|
+
*/
|
|
7045
|
+
processListObject(listObject) {
|
|
7046
|
+
this._list = listObject;
|
|
7047
|
+
if (listObject.config && listObject.config.valueField) {
|
|
7048
|
+
if (this.selectedNodes) {
|
|
7049
|
+
if (this.multiselect) {
|
|
7050
|
+
this.selectedNodes = this.selectedNodes.map(sn => {
|
|
7051
|
+
sn[listObject.config.valueField] = sn[this.valueField];
|
|
7052
|
+
sn['value'] = sn[this.valueField];
|
|
7053
|
+
return sn;
|
|
7054
|
+
});
|
|
7055
|
+
}
|
|
7056
|
+
else {
|
|
7057
|
+
this.selectedNodes[listObject.config.valueField] = this.selectedNodes[this.valueField];
|
|
7058
|
+
this.selectedNodes['value'] = this.selectedNodes[this.valueField];
|
|
7059
|
+
}
|
|
7060
|
+
}
|
|
7061
|
+
this.valueField = listObject.config.valueField;
|
|
7062
|
+
}
|
|
7063
|
+
if (listObject.config && listObject.config.descriptionField) {
|
|
7064
|
+
this.descriptionField = listObject.config.descriptionField;
|
|
7065
|
+
}
|
|
7066
|
+
if (listObject.config && listObject.config.subEntriesField) {
|
|
7067
|
+
this.subEntriesField = listObject.config.subEntriesField;
|
|
7068
|
+
}
|
|
7069
|
+
this.buildTree();
|
|
6868
7070
|
}
|
|
6869
7071
|
/**
|
|
6870
7072
|
* Sets and propagates the form controls value based on the components inner values. Propagates only
|
|
@@ -6943,22 +7145,8 @@ class DynamicListComponent {
|
|
|
6943
7145
|
}
|
|
6944
7146
|
}
|
|
6945
7147
|
}
|
|
6946
|
-
autocompleteFn(term) {
|
|
6947
|
-
this.autocompleteRes = this.autocompleteValues.filter((acNode) => {
|
|
6948
|
-
if (this.filterFunction && !this.filterFunction(acNode.data)) {
|
|
6949
|
-
return false;
|
|
6950
|
-
}
|
|
6951
|
-
if (this.multiselect) {
|
|
6952
|
-
if (this.selectedNodes.find((node) => acNode.data[this.valueField] === node.data[this.valueField])) {
|
|
6953
|
-
return false;
|
|
6954
|
-
}
|
|
6955
|
-
}
|
|
6956
|
-
return acNode.data[this.valueField].toString().toLowerCase().indexOf(term.toString().toLowerCase()) !== -1 ||
|
|
6957
|
-
(acNode.data[this.descriptionField] && acNode.data[this.descriptionField].toString().toLowerCase().indexOf(term.toString().toLowerCase()) !== -1);
|
|
6958
|
-
}).slice(0, 10);
|
|
6959
|
-
}
|
|
6960
7148
|
listEntryToTreeNode(listEntry) {
|
|
6961
|
-
let selectable
|
|
7149
|
+
let selectable;
|
|
6962
7150
|
if (this._list && this._list.config && this._list.config.allelementsselectable) {
|
|
6963
7151
|
selectable = true;
|
|
6964
7152
|
}
|
|
@@ -6980,31 +7168,30 @@ class DynamicListComponent {
|
|
|
6980
7168
|
treeNode[this.subEntriesField] = listEntry[this.subEntriesField];
|
|
6981
7169
|
return treeNode;
|
|
6982
7170
|
}
|
|
6983
|
-
|
|
6984
|
-
|
|
6985
|
-
|
|
6986
|
-
|
|
6987
|
-
|
|
6988
|
-
|
|
6989
|
-
|
|
7171
|
+
/**
|
|
7172
|
+
* Filters the autocomplete results based on the provided search term.
|
|
7173
|
+
*
|
|
7174
|
+
* The method filters the `autocompleteValues` array to find nodes that match the search term.
|
|
7175
|
+
* It also applies additional filtering based on the `filterFunction` and `multiselect` properties.
|
|
7176
|
+
*
|
|
7177
|
+
* @param {string} term - The search term used to filter the autocomplete results.
|
|
7178
|
+
*/
|
|
7179
|
+
filterAutocompleteResults(term) {
|
|
7180
|
+
this.autocompleteRes = this.autocompleteValues.filter((acNode) => {
|
|
7181
|
+
if (this.filterFunction && !this.filterFunction(acNode.data)) {
|
|
7182
|
+
return false;
|
|
6990
7183
|
}
|
|
6991
|
-
|
|
6992
|
-
|
|
6993
|
-
|
|
6994
|
-
|
|
6995
|
-
|
|
6996
|
-
this.
|
|
6997
|
-
|
|
6998
|
-
|
|
6999
|
-
validate(c) {
|
|
7000
|
-
return (this.isValid) ? null : {
|
|
7001
|
-
dynamiclist: {
|
|
7002
|
-
valid: false,
|
|
7003
|
-
},
|
|
7004
|
-
};
|
|
7184
|
+
if (this.multiselect) {
|
|
7185
|
+
if (this.selectedNodes.find((node) => acNode.data[this.valueField] === node.data[this.valueField])) {
|
|
7186
|
+
return false;
|
|
7187
|
+
}
|
|
7188
|
+
}
|
|
7189
|
+
return acNode.data[this.valueField].toString().toLowerCase().indexOf(term.toString().toLowerCase()) !== -1 ||
|
|
7190
|
+
(acNode.data[this.descriptionField] && acNode.data[this.descriptionField].toString().toLowerCase().indexOf(term.toString().toLowerCase()) !== -1);
|
|
7191
|
+
}).slice(0, 10);
|
|
7005
7192
|
}
|
|
7006
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DynamicListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7007
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: DynamicListComponent, selector: "eo-dynamic-list", inputs: { situation: "situation", multiselect: "multiselect", pickerTitle: "pickerTitle", readonly: "readonly", filterFunction: "filterFunction", listObject: "listObject" }, providers: [
|
|
7193
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DynamicListComponent, deps: [{ token: DynamicListService }, { token: i1.LocalStorageService }, { token: ObjectFormHelperService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7194
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: DynamicListComponent, selector: "eo-dynamic-list", inputs: { situation: "situation", multiselect: "multiselect", pickerTitle: "pickerTitle", readonly: "readonly", formControlName: "formControlName", formElementChanges: "formElementChanges", filterFunction: "filterFunction", listObject: "listObject", autocompleteUrl: "autocompleteUrl" }, providers: [
|
|
7008
7195
|
{
|
|
7009
7196
|
provide: NG_VALUE_ACCESSOR,
|
|
7010
7197
|
useExisting: forwardRef(() => DynamicListComponent),
|
|
@@ -7015,7 +7202,7 @@ class DynamicListComponent {
|
|
|
7015
7202
|
useExisting: forwardRef(() => DynamicListComponent),
|
|
7016
7203
|
multi: true,
|
|
7017
7204
|
}
|
|
7018
|
-
], 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)}\"\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 <div class=\"empty\" *ngIf=\"!(list?.entries?.length)\">\n <div translate>eo.form.property.dynamic.list.empty</div>\n </div>\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n [disabled]=\"readonly\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [forceSelection]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" field=\"{{valueField}}\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\">\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,
|
|
7205
|
+
], 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)}\"\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 <div class=\"empty\" *ngIf=\"!(list?.entries?.length)\">\n <div translate>eo.form.property.dynamic.list.empty</div>\n </div>\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n [disabled]=\"readonly\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [forceSelection]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" field=\"{{valueField}}\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\">\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 .inputToken{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: EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "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: i10.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] }); }
|
|
7019
7206
|
}
|
|
7020
7207
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DynamicListComponent, decorators: [{
|
|
7021
7208
|
type: Component,
|
|
@@ -7030,8 +7217,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
|
|
|
7030
7217
|
useExisting: forwardRef(() => DynamicListComponent),
|
|
7031
7218
|
multi: true,
|
|
7032
7219
|
}
|
|
7033
|
-
], template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [visible]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length)}\"\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 <div class=\"empty\" *ngIf=\"!(list?.entries?.length)\">\n <div translate>eo.form.property.dynamic.list.empty</div>\n </div>\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n [disabled]=\"readonly\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [forceSelection]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" field=\"{{valueField}}\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\">\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,
|
|
7034
|
-
}], ctorParameters: () => [], propDecorators: { autoCompleteInput: [{
|
|
7220
|
+
], template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [visible]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length)}\"\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 <div class=\"empty\" *ngIf=\"!(list?.entries?.length)\">\n <div translate>eo.form.property.dynamic.list.empty</div>\n </div>\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n [disabled]=\"readonly\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [forceSelection]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" field=\"{{valueField}}\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\">\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 .inputToken{display:none}\n"] }]
|
|
7221
|
+
}], ctorParameters: () => [{ type: DynamicListService }, { type: i1.LocalStorageService }, { type: ObjectFormHelperService }], propDecorators: { autoCompleteInput: [{
|
|
7035
7222
|
type: ViewChild,
|
|
7036
7223
|
args: ['autocomplete']
|
|
7037
7224
|
}], autoCompleteButton: [{
|
|
@@ -7045,12 +7232,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
|
|
|
7045
7232
|
type: Input
|
|
7046
7233
|
}], readonly: [{
|
|
7047
7234
|
type: Input
|
|
7235
|
+
}], formControlName: [{
|
|
7236
|
+
type: Input
|
|
7237
|
+
}], formElementChanges: [{
|
|
7238
|
+
type: Input
|
|
7048
7239
|
}], filterFunction: [{
|
|
7049
7240
|
type: Input,
|
|
7050
7241
|
args: ['filterFunction']
|
|
7051
7242
|
}], listObject: [{
|
|
7052
7243
|
type: Input,
|
|
7053
7244
|
args: ['listObject']
|
|
7245
|
+
}], autocompleteUrl: [{
|
|
7246
|
+
type: Input
|
|
7054
7247
|
}] } });
|
|
7055
7248
|
|
|
7056
7249
|
const fadeInOut = trigger('fadeInOut', [
|
|
@@ -7652,7 +7845,7 @@ class IdReferenceComponent {
|
|
|
7652
7845
|
useExisting: forwardRef(() => IdReferenceComponent),
|
|
7653
7846
|
multi: true
|
|
7654
7847
|
}
|
|
7655
|
-
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<div class=\"eo-id-reference\" [ngClass]=\"{acInputHidden: !multiselect && _innerValues.length}\">\n <yvc-autocomplete [(ngModel)]=\"innerValues\" [minLength]=\"1\" #autocomplete\n (suggestionSelect)=\"onAutoCompleteSelect($event)\" (suggestionUnselect)=\"removeItem($event)\"\n (blur)=\"onAutoCompleteBlur()\" [autocompleteValues]=\"autocompleteRes\" field=\"title\" [disabled]=\"readonly\"\n [forceSelection]=\"true\" (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"true\">\n\n <!-- [styleClass]=\"!multiselect && innerValues.length === 1 ? 'xxx' : ''\"> -->\n\n <ng-template #chipTemplate let-item>\n <a *ngIf=\"!item.state || item.state === 'OK'\" class=\"link router-link\"\n [routerLink]=\"['/object', item.id, {outlets: {modal: null}}]\" [queryParams]=\"{type: referenceType.qname}\">\n <svg focusable=\"false\" class=\"ref-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8\n 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\">\n </path>\n </svg>\n </a>\n <eo-icon [objectType]=\"referenceType\" title=\"{{referenceType?.label}}\" class=\"ref-type-icon\" [ngClass]=\"{'deleted-reference-label': item.state && (item.state === 'RECYCLED' || item.state === 'GONE')}\"></eo-icon>\n <span *ngIf=\"!(item.state && (item.state === 'RECYCLED' || item.state === 'GONE')); else deleted\" class=\"label\" eoRtlAware=\"full\">\n <span *ngIf=\"item.title || referenceType?.label; else noAccess\">\n {{item.title || referenceType?.label}}\n </span>\n </span>\n <ng-template #noAccess>\n <span class=\"label no-access-reference-label\">{{('eo.references.noAccess' | translate)}}</span>\n </ng-template>\n <ng-template #deleted>\n <span class=\"label deleted-reference-label\">{{('eo.references.deleted' | translate)}}</span>\n </ng-template>\n </ng-template>\n </yvc-autocomplete>\n\n <ng-template #notFound><span class=\"label\">{{innerValues && innerValues.length ? ('eo.references.not.available' |\n translate) : ''}}</span></ng-template>\n\n <button #button class=\"ui-button\" *ngIf=\"!readonly\"\n title=\"{{('eo.references.search' | translate) + ' ' + tooltipTypeHint}}\" [disabled]=\"selectionDisabled\"\n (click)=\"showDialog()\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_none.svg'\"></eo-icon>\n </button>\n</div>\n\n<eo-dialog [title]=\"('eo.references.add' | translate)\" [subtitle]=\"referenceType?.label\" [(visible)]=\"visibleDialog\"\n [minHeight]=\"590\" [styleClass]=\"'reference-field-dialog'\" #dialog>\n\n <eo-reference-finder *ngIf=\"dialog.visible\" [isDisabled]=\"isDisabled\" [types]=\"referenceType.qname\"\n [multiselect]=\"multiselect\" [currentSelection]=\"innerValues\" [clipboard]=\"clipboard\" [contextId]=\"contextId\"\n [exceptionIDs]=\"exceptionIDs\" [queryFilters]=\"queryFilters\" (addDmsObjects)=\"paste($event)\">\n </eo-reference-finder>\n</eo-dialog>\n", styles: [".eo-id-reference{display:flex;align-items:center}.eo-id-reference__element{display:flex;align-self:center;flex-wrap:wrap}.eo-id-reference>button{padding:0}.eo-id-reference>button eo-icon{width:16px;height:16px;margin:auto}::ng-deep .eo-id-reference.acInputHidden .inputToken{width:0!important;margin:0;padding:0}::ng-deep .eo-id-reference.acInputHidden .inputToken input{width:0!important}::ng-deep .reference-field-dialog{width:100%;height:100%}::ng-deep .eo-dialog-content{display:contents!important}::ng-deep .cdk-overlay-pane:has(.reference-field-dialog){height:60%;width:577px}::ng-deep .deleted-reference-label,::ng-deep .no-access-reference-label{color:var(--color-error)}::ng-deep .label{display:flex;flex-flow:column;display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::ng-deep .label>span{font-size:var(--font-hint)}::ng-deep .label.rtl{margin-left:1em;margin-right:4px}::ng-deep a.link{color:var(--text-color-caption);pointer-events:all;display:flex}::ng-deep a.link:hover{color:var(--color-accent)}::ng-deep .ref-icon,::ng-deep .ref-type-icon{width:16px;height:16px;color:var(--text-color-caption)}::ng-deep .remove-icon{color:var(--text-color-hint);height:14px;width:14px;flex:0 0 auto}::ng-deep .remove-icon:hover{color:var(--text-color-caption);cursor:pointer}yvc-autocomplete{width:100%;border:0;outline:0!important}\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: "directive", type: RouterLinkDirective, selector: "a[routerLink]" }, { kind: "directive", type: RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type:
|
|
7848
|
+
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<div class=\"eo-id-reference\" [ngClass]=\"{acInputHidden: !multiselect && _innerValues.length}\">\n <yvc-autocomplete [(ngModel)]=\"innerValues\" [minLength]=\"1\" #autocomplete\n (suggestionSelect)=\"onAutoCompleteSelect($event)\" (suggestionUnselect)=\"removeItem($event)\"\n (blur)=\"onAutoCompleteBlur()\" [autocompleteValues]=\"autocompleteRes\" field=\"title\" [disabled]=\"readonly\"\n [forceSelection]=\"true\" (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"true\">\n\n <!-- [styleClass]=\"!multiselect && innerValues.length === 1 ? 'xxx' : ''\"> -->\n\n <ng-template #chipTemplate let-item>\n <a *ngIf=\"!item.state || item.state === 'OK'\" class=\"link router-link\"\n [routerLink]=\"['/object', item.id, {outlets: {modal: null}}]\" [queryParams]=\"{type: referenceType.qname}\">\n <svg focusable=\"false\" class=\"ref-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8\n 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\">\n </path>\n </svg>\n </a>\n <eo-icon [objectType]=\"referenceType\" title=\"{{referenceType?.label}}\" class=\"ref-type-icon\" [ngClass]=\"{'deleted-reference-label': item.state && (item.state === 'RECYCLED' || item.state === 'GONE')}\"></eo-icon>\n <span *ngIf=\"!(item.state && (item.state === 'RECYCLED' || item.state === 'GONE')); else deleted\" class=\"label\" eoRtlAware=\"full\">\n <span *ngIf=\"item.title || referenceType?.label; else noAccess\">\n {{item.title || referenceType?.label}}\n </span>\n </span>\n <ng-template #noAccess>\n <span class=\"label no-access-reference-label\">{{('eo.references.noAccess' | translate)}}</span>\n </ng-template>\n <ng-template #deleted>\n <span class=\"label deleted-reference-label\">{{('eo.references.deleted' | translate)}}</span>\n </ng-template>\n </ng-template>\n </yvc-autocomplete>\n\n <ng-template #notFound><span class=\"label\">{{innerValues && innerValues.length ? ('eo.references.not.available' |\n translate) : ''}}</span></ng-template>\n\n <button #button class=\"ui-button\" *ngIf=\"!readonly\"\n title=\"{{('eo.references.search' | translate) + ' ' + tooltipTypeHint}}\" [disabled]=\"selectionDisabled\"\n (click)=\"showDialog()\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_none.svg'\"></eo-icon>\n </button>\n</div>\n\n<eo-dialog [title]=\"('eo.references.add' | translate)\" [subtitle]=\"referenceType?.label\" [(visible)]=\"visibleDialog\"\n [minHeight]=\"590\" [styleClass]=\"'reference-field-dialog'\" #dialog>\n\n <eo-reference-finder *ngIf=\"dialog.visible\" [isDisabled]=\"isDisabled\" [types]=\"referenceType.qname\"\n [multiselect]=\"multiselect\" [currentSelection]=\"innerValues\" [clipboard]=\"clipboard\" [contextId]=\"contextId\"\n [exceptionIDs]=\"exceptionIDs\" [queryFilters]=\"queryFilters\" (addDmsObjects)=\"paste($event)\">\n </eo-reference-finder>\n</eo-dialog>\n", styles: [".eo-id-reference{display:flex;align-items:center}.eo-id-reference__element{display:flex;align-self:center;flex-wrap:wrap}.eo-id-reference>button{padding:0}.eo-id-reference>button eo-icon{width:16px;height:16px;margin:auto}::ng-deep .eo-id-reference.acInputHidden .inputToken{width:0!important;margin:0;padding:0}::ng-deep .eo-id-reference.acInputHidden .inputToken input{width:0!important}::ng-deep .reference-field-dialog{width:100%;height:100%}::ng-deep .eo-dialog-content{display:contents!important}::ng-deep .cdk-overlay-pane:has(.reference-field-dialog){height:60%;width:577px}::ng-deep .deleted-reference-label,::ng-deep .no-access-reference-label{color:var(--color-error)}::ng-deep .label{display:flex;flex-flow:column;display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::ng-deep .label>span{font-size:var(--font-hint)}::ng-deep .label.rtl{margin-left:1em;margin-right:4px}::ng-deep a.link{color:var(--text-color-caption);pointer-events:all;display:flex}::ng-deep a.link:hover{color:var(--color-accent)}::ng-deep .ref-icon,::ng-deep .ref-type-icon{width:16px;height:16px;color:var(--text-color-caption)}::ng-deep .remove-icon{color:var(--text-color-hint);height:14px;width:14px;flex:0 0 auto}::ng-deep .remove-icon:hover{color:var(--text-color-caption);cursor:pointer}yvc-autocomplete{width:100%;border:0;outline:0!important}\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: "directive", type: RouterLinkDirective, selector: "a[routerLink]" }, { kind: "directive", type: RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i10.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { kind: "component", type: ReferenceFinderComponent, selector: "eo-reference-finder", inputs: ["isDisabled", "types", "multiselect", "contextId", "exceptionIDs", "queryFilters", "currentSelection", "clipboard"], outputs: ["addDmsObjects"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
7656
7849
|
}
|
|
7657
7850
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: IdReferenceComponent, decorators: [{
|
|
7658
7851
|
type: Component,
|
|
@@ -7771,11 +7964,11 @@ class FormElementComponent {
|
|
|
7771
7964
|
});
|
|
7772
7965
|
}
|
|
7773
7966
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: FormElementComponent, deps: [{ token: i1.TranslateService }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7774
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: FormElementComponent, selector: "eo-form-element", inputs: { situation: "situation", skipToggle: "skipToggle", elementSetter: ["element", "elementSetter"] }, queries: [{ propertyName: "contentElementTemplates", predicate: FormElementTemplate }], viewQueries: [{ propertyName: "formField", first: true, predicate: ["formField"], descendants: true }, { propertyName: "elementTemplates", predicate: FormElementTemplate, descendants: true }], ngImport: i0, template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification === 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"formElementRef._eoFormElement.withtime\"\n [operator]=\"element?.value[element._eoFormControlWrapper.controlName] ? element.value[element._eoFormControlWrapper.controlName]?.operator: 'eq'\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\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$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { 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: 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", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: DateComponent, selector: "eo-date", inputs: ["withTime", "readonly", "onlyFutureDates"] }, { kind: "component", type: DatetimeRangeComponent, selector: "eo-datetime-range", inputs: ["withTime", "pickerTitle", "operator"] }, { kind: "component", type: NumberComponent, selector: "eo-number", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: NumberRangeComponent, selector: "eo-number-range", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "component", type: ReferenceComponent, selector: "eo-reference", inputs: ["readonly", "multiselect", "reference", "minLength", "maxLength"], outputs: ["onReferenceClicked"] }, { kind: "component", type: DynamicListComponent, selector: "eo-dynamic-list", inputs: ["situation", "multiselect", "pickerTitle", "readonly", "filterFunction", "listObject"] }, { kind: "component", type: IdReferenceComponent, selector: "eo-id-reference", inputs: ["readonly", "multiselect", "situation", "contextId", "exceptionIDs", "dataToRender", "reference", "queryFilters", "objectTypesFilter"] }, { kind: "directive", type: FormElementTemplate, selector: "[eoFormElementTemplate]", inputs: ["propertyType"] }] }); }
|
|
7967
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: FormElementComponent, selector: "eo-form-element", inputs: { situation: "situation", skipToggle: "skipToggle", elementSetter: ["element", "elementSetter"] }, queries: [{ propertyName: "contentElementTemplates", predicate: FormElementTemplate }], viewQueries: [{ propertyName: "formField", first: true, predicate: ["formField"], descendants: true }, { propertyName: "elementTemplates", predicate: FormElementTemplate, descendants: true }], ngImport: i0, template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector' && !formElementRef._eoFormElement.autocompleteurl\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && (formElementRef._eoFormElement.classification === 'selector' || formElementRef._eoFormElement.autocompleteurl)\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocompleteUrl]=\"formElementRef._eoFormElement.autocompleteurl\"\n [formElementChanges]=\"element.valueChanges\">\n ></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"formElementRef._eoFormElement.withtime\"\n [operator]=\"element?.value[element._eoFormControlWrapper.controlName] ? element.value[element._eoFormControlWrapper.controlName]?.operator: 'eq'\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\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$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { 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: 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", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: DateComponent, selector: "eo-date", inputs: ["withTime", "readonly", "onlyFutureDates"] }, { kind: "component", type: DatetimeRangeComponent, selector: "eo-datetime-range", inputs: ["withTime", "pickerTitle", "operator"] }, { kind: "component", type: NumberComponent, selector: "eo-number", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: NumberRangeComponent, selector: "eo-number-range", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "component", type: ReferenceComponent, selector: "eo-reference", inputs: ["readonly", "multiselect", "reference", "minLength", "maxLength"], outputs: ["onReferenceClicked"] }, { kind: "component", type: DynamicListComponent, selector: "eo-dynamic-list", inputs: ["situation", "multiselect", "pickerTitle", "readonly", "formControlName", "formElementChanges", "filterFunction", "listObject", "autocompleteUrl"] }, { kind: "component", type: IdReferenceComponent, selector: "eo-id-reference", inputs: ["readonly", "multiselect", "situation", "contextId", "exceptionIDs", "dataToRender", "reference", "queryFilters", "objectTypesFilter"] }, { kind: "directive", type: FormElementTemplate, selector: "[eoFormElementTemplate]", inputs: ["propertyType"] }] }); }
|
|
7775
7968
|
}
|
|
7776
7969
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: FormElementComponent, decorators: [{
|
|
7777
7970
|
type: Component,
|
|
7778
|
-
args: [{ selector: 'eo-form-element', template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification === 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"formElementRef._eoFormElement.withtime\"\n [operator]=\"element?.value[element._eoFormControlWrapper.controlName] ? element.value[element._eoFormControlWrapper.controlName]?.operator: 'eq'\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"] }]
|
|
7971
|
+
args: [{ selector: 'eo-form-element', template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector' && !formElementRef._eoFormElement.autocompleteurl\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && (formElementRef._eoFormElement.classification === 'selector' || formElementRef._eoFormElement.autocompleteurl)\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocompleteUrl]=\"formElementRef._eoFormElement.autocompleteurl\"\n [formElementChanges]=\"element.valueChanges\">\n ></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"formElementRef._eoFormElement.withtime\"\n [operator]=\"element?.value[element._eoFormControlWrapper.controlName] ? element.value[element._eoFormControlWrapper.controlName]?.operator: 'eq'\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"] }]
|
|
7779
7972
|
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { elementTemplates: [{
|
|
7780
7973
|
type: ViewChildren,
|
|
7781
7974
|
args: [FormElementTemplate, { emitDistinctChangesOnly: true }]
|
|
@@ -8203,7 +8396,7 @@ let MediaComponent = class MediaComponent {
|
|
|
8203
8396
|
ngOnDestroy() {
|
|
8204
8397
|
}
|
|
8205
8398
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: MediaComponent, deps: [{ token: i1.TranslateService }, { token: i1.DmsService }, { token: i0.Renderer2 }, { token: i1.SystemService }, { token: i1.Config }, { token: PluginsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8206
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: MediaComponent, selector: "eo-media", inputs: { undockDisabled: "undockDisabled", enableCloseBtn: "enableCloseBtn", useVersion: "useVersion", setAttachments: ["attachments", "setAttachments"], setSearchTerm: ["searchTerm", "setSearchTerm"], previewUri: "previewUri", previewFile: "previewFile", dmsObject: "dmsObject" }, outputs: { hasContentLoaded: "hasContentLoaded" }, host: { properties: { "class.open": "this.open" } }, providers: [ContentPreviewService], viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true, static: true }], ngImport: i0, template: "<div [hidden]=\"!open\">\n <!-- attachments overlay -->\n <div class=\"attachments\" *ngIf=\"attachments?.length\"\n [ngClass]=\"{notmain: latestUri !== previewUri && !attachmentsShown, active: attachmentsShown}\"\n (eoOutsideClick)=\"attachmentsShown = false\">\n <div class=\"attachments-list\" *ngIf=\"attachmentsShown\">\n <div class=\"attachment main\" (click)=\"selectAttachment(null)\" [ngClass]=\"{current: latestUri === previewUri}\">{{dmsObjectTitle}}</div>\n <div class=\"attachment\" *ngFor=\"let a of attachments\" (click)=\"selectAttachment(a)\" [ngClass]=\"{current: latestUri === a.previewUri}\">\n {{a.name}}\n </div>\n </div>\n\n <eo-icon class=\"button\" [badge]=\"attachments?.length\" (click)=\"attachmentsShown = !attachmentsShown\"\n [iconSrc]=\"attachmentsShown ? 'assets/_default/svg/ic_clear.svg' : 'assets/_default/svg/ic_attachment.svg'\"></eo-icon>\n </div>\n\n <yvc-popout\n [popoutWindowConfig]=\"popoutWindowConfig\"\n [triggerPosition]=\"popoutTriggerPosition\" [triggerTooltip]=\"('eo.object.details.content.undock'| translate)\" [disabled]=\"undockDisabled\">\n\n <div class=\"preview-container\" [style.overflow]=\"'hidden'\">\n <iframe [hidden]=\"isUndocked || loading\" #iframe height=\"100%\" width=\"100%\" frameborder=\"0\"></iframe>\n <div class=\"loader-overlay__mask\" *ngIf=\"loading\">\n <eo-loading-spinner class=\"iframe__loader\"></eo-loading-spinner>\n </div>\n <div class=\"slide\" *ngIf=\"isUndocked\">\n <eo-icon *ngIf=\"mediaType\" [objectType]=\"mediaType\"></eo-icon>\n </div>\n </div>\n </yvc-popout>\n</div>\n\n<div [hidden]=\"open\" class=\"empty-container\">\n <eo-icon class=\"nofile\" [iconSrc]=\"'assets/_default/svg/ic_no-file.svg'\"></eo-icon>\n</div>\n", styles: [":host>div{height:100%}:host ::ng-deep .popoutWrapper{height:100%}:host ::ng-deep .popoutWrapper button.trigger{z-index:100}:host ::ng-deep .popoutWrapper button.trigger .yvc-icon{width:100%;height:100%}:host .empty-container{display:flex;justify-content:center;align-items:center;height:100%}:host .empty-container .nofile{width:128px;height:128px;opacity:.09}:host .preview-container{position:absolute;inset:0;overflow:hidden}:host .preview-container .slide{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;height:100%;align-items:center;justify-content:center}:host .preview-container .slide .large-content{position:absolute;top:0;cursor:pointer;display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;justify-content:center;width:100%;padding:var(--app-pane-padding);color:var(--color-white);background-color:rgba(var(--color-primary-rgb),.5)}:host .preview-container .slide .large-content.not-supported,:host .preview-container .slide .large-content:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .preview-container .slide .large-content.not-supported{cursor:inherit}:host .preview-container .slide img{padding:var(--app-pane-padding);width:100%}:host .preview-container .slide eo-icon{width:128px;height:128px;opacity:.2}:host .attachments{position:absolute;z-index:5;color:var(--color-white);background-color:rgba(var(--color-primary-rgb),.6);right:calc(var(--app-pane-padding) / 2);bottom:calc(var(--app-pane-padding) * 3.2);display:flex;flex-flow:row;align-items:flex-end;border-radius:2px;max-width:calc(100% - 16px)}:host .attachments:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .attachments eo-icon{flex:0 0 auto;margin:calc(var(--app-pane-padding) / 2)}:host .attachments .attachments-list{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;overflow:auto;max-height:150px;padding:calc(var(--app-pane-padding) / 2);flex-flow:wrap}:host .attachments .attachments-list .attachment{border-radius:4px;background-color:rgba(var(--color-white-rgb),.1);padding:calc(var(--app-pane-padding) / 4);margin:calc(var(--app-pane-padding) / 8);cursor:pointer;border:1px solid rgba(var(--color-white-rgb),0);transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .attachments .attachments-list .attachment:hover{border-color:rgba(var(--color-white-rgb),.5)}:host .attachments .attachments-list .attachment.current{background-color:var(--color-accent)}:host .attachments .attachments-list .attachment.main{background-color:var(--color-primary);order:100;flex:1 1 100%}:host .attachments .attachments-list .attachment:not(.main){font-style:italic}:host .attachments.notmain{background-color:var(--color-accent)}:host .attachments.active{background-color:rgba(var(--color-primary-rgb),.9);align-items:center;bottom:calc(var(--app-pane-padding) / .3)}:host .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}:host .loader-overlay__mask .iframe__loader{margin:auto}::ng-deep button.trigger{bottom:4%!important}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: OutsideClickDirective, selector: "[eoOutsideClick]", outputs: ["eoOutsideClick"] }, { kind: "component", type: LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i7
|
|
8399
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: MediaComponent, selector: "eo-media", inputs: { undockDisabled: "undockDisabled", enableCloseBtn: "enableCloseBtn", useVersion: "useVersion", setAttachments: ["attachments", "setAttachments"], setSearchTerm: ["searchTerm", "setSearchTerm"], previewUri: "previewUri", previewFile: "previewFile", dmsObject: "dmsObject" }, outputs: { hasContentLoaded: "hasContentLoaded" }, host: { properties: { "class.open": "this.open" } }, providers: [ContentPreviewService], viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true, static: true }], ngImport: i0, template: "<div [hidden]=\"!open\">\n <!-- attachments overlay -->\n <div class=\"attachments\" *ngIf=\"attachments?.length\"\n [ngClass]=\"{notmain: latestUri !== previewUri && !attachmentsShown, active: attachmentsShown}\"\n (eoOutsideClick)=\"attachmentsShown = false\">\n <div class=\"attachments-list\" *ngIf=\"attachmentsShown\">\n <div class=\"attachment main\" (click)=\"selectAttachment(null)\" [ngClass]=\"{current: latestUri === previewUri}\">{{dmsObjectTitle}}</div>\n <div class=\"attachment\" *ngFor=\"let a of attachments\" (click)=\"selectAttachment(a)\" [ngClass]=\"{current: latestUri === a.previewUri}\">\n {{a.name}}\n </div>\n </div>\n\n <eo-icon class=\"button\" [badge]=\"attachments?.length\" (click)=\"attachmentsShown = !attachmentsShown\"\n [iconSrc]=\"attachmentsShown ? 'assets/_default/svg/ic_clear.svg' : 'assets/_default/svg/ic_attachment.svg'\"></eo-icon>\n </div>\n\n <yvc-popout\n [popoutWindowConfig]=\"popoutWindowConfig\"\n [triggerPosition]=\"popoutTriggerPosition\" [triggerTooltip]=\"('eo.object.details.content.undock'| translate)\" [disabled]=\"undockDisabled\">\n\n <div class=\"preview-container\" [style.overflow]=\"'hidden'\">\n <iframe [hidden]=\"isUndocked || loading\" #iframe height=\"100%\" width=\"100%\" frameborder=\"0\"></iframe>\n <div class=\"loader-overlay__mask\" *ngIf=\"loading\">\n <eo-loading-spinner class=\"iframe__loader\"></eo-loading-spinner>\n </div>\n <div class=\"slide\" *ngIf=\"isUndocked\">\n <eo-icon *ngIf=\"mediaType\" [objectType]=\"mediaType\"></eo-icon>\n </div>\n </div>\n </yvc-popout>\n</div>\n\n<div [hidden]=\"open\" class=\"empty-container\">\n <eo-icon class=\"nofile\" [iconSrc]=\"'assets/_default/svg/ic_no-file.svg'\"></eo-icon>\n</div>\n", styles: [":host>div{height:100%}:host ::ng-deep .popoutWrapper{height:100%}:host ::ng-deep .popoutWrapper button.trigger{z-index:100}:host ::ng-deep .popoutWrapper button.trigger .yvc-icon{width:100%;height:100%}:host .empty-container{display:flex;justify-content:center;align-items:center;height:100%}:host .empty-container .nofile{width:128px;height:128px;opacity:.09}:host .preview-container{position:absolute;inset:0;overflow:hidden}:host .preview-container .slide{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;height:100%;align-items:center;justify-content:center}:host .preview-container .slide .large-content{position:absolute;top:0;cursor:pointer;display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;justify-content:center;width:100%;padding:var(--app-pane-padding);color:var(--color-white);background-color:rgba(var(--color-primary-rgb),.5)}:host .preview-container .slide .large-content.not-supported,:host .preview-container .slide .large-content:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .preview-container .slide .large-content.not-supported{cursor:inherit}:host .preview-container .slide img{padding:var(--app-pane-padding);width:100%}:host .preview-container .slide eo-icon{width:128px;height:128px;opacity:.2}:host .attachments{position:absolute;z-index:5;color:var(--color-white);background-color:rgba(var(--color-primary-rgb),.6);right:calc(var(--app-pane-padding) / 2);bottom:calc(var(--app-pane-padding) * 3.2);display:flex;flex-flow:row;align-items:flex-end;border-radius:2px;max-width:calc(100% - 16px)}:host .attachments:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .attachments eo-icon{flex:0 0 auto;margin:calc(var(--app-pane-padding) / 2)}:host .attachments .attachments-list{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;overflow:auto;max-height:150px;padding:calc(var(--app-pane-padding) / 2);flex-flow:wrap}:host .attachments .attachments-list .attachment{border-radius:4px;background-color:rgba(var(--color-white-rgb),.1);padding:calc(var(--app-pane-padding) / 4);margin:calc(var(--app-pane-padding) / 8);cursor:pointer;border:1px solid rgba(var(--color-white-rgb),0);transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .attachments .attachments-list .attachment:hover{border-color:rgba(var(--color-white-rgb),.5)}:host .attachments .attachments-list .attachment.current{background-color:var(--color-accent)}:host .attachments .attachments-list .attachment.main{background-color:var(--color-primary);order:100;flex:1 1 100%}:host .attachments .attachments-list .attachment:not(.main){font-style:italic}:host .attachments.notmain{background-color:var(--color-accent)}:host .attachments.active{background-color:rgba(var(--color-primary-rgb),.9);align-items:center;bottom:calc(var(--app-pane-padding) / .3)}:host .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}:host .loader-overlay__mask .iframe__loader{margin:auto}::ng-deep button.trigger{bottom:4%!important}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: OutsideClickDirective, selector: "[eoOutsideClick]", outputs: ["eoOutsideClick"] }, { kind: "component", type: LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i7.PopoutComponent, selector: "yvc-popout", inputs: ["triggerPosition", "triggerIconSVG", "triggerTooltip", "popoutWindowConfig", "disabled"], outputs: ["popOut", "popIn"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
8207
8400
|
};
|
|
8208
8401
|
MediaComponent = MediaComponent_1 = __decorate([
|
|
8209
8402
|
UntilDestroy()
|
|
@@ -9121,11 +9314,11 @@ class ObjectFormGroupComponent {
|
|
|
9121
9314
|
return parentFormElement && parentFormElement.type === 'o2mGroupStack';
|
|
9122
9315
|
}
|
|
9123
9316
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ObjectFormGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9124
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: ObjectFormGroupComponent, selector: "eo-form-group", inputs: { situation: "situation", skipToggle: "skipToggle", groupd: ["group", "groupd"], noGroupLabels: "noGroupLabels" }, ngImport: i0, template: "<div *ngIf=\"group\" [ngSwitch]=\"groupType\"\n class=\"form-element {{group._eoFormGroup ? group._eoFormGroup.type : 'o2mControlWrap'}} align-{{(group._eoFormGroup && group._eoFormGroup.layout) ? group._eoFormGroup.layout.align : ''}}\"\n [formGroup]=\"group\">\n\n <!-- group stacks (tabs) -->\n <yvc-tabs *ngSwitchCase=\"'stack'\" [layoutSettingsID]=\"layoutSettingsID\">\n <ng-template *ngFor=\"let key of group.controls | keys; index as i;\" [yvcTab]=\"{id: 't' + i
|
|
9317
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: ObjectFormGroupComponent, selector: "eo-form-group", inputs: { situation: "situation", skipToggle: "skipToggle", groupd: ["group", "groupd"], noGroupLabels: "noGroupLabels" }, ngImport: i0, template: "<div *ngIf=\"group\" [ngSwitch]=\"groupType\"\n class=\"form-element {{group._eoFormGroup ? group._eoFormGroup.type : 'o2mControlWrap'}} align-{{(group._eoFormGroup && group._eoFormGroup.layout) ? group._eoFormGroup.layout.align : ''}}\"\n [formGroup]=\"group\">\n\n <!-- group stacks (tabs) -->\n <yvc-tabs *ngSwitchCase=\"'stack'\" [layoutSettingsID]=\"layoutSettingsID\">\n <ng-template *ngFor=\"let key of group.controls | keys; index as i;\" [yvcTab]=\"{id: 't' + i,\n headerStyleClass: 'dirty-' + group.controls[key].dirty + ' invalid-' + group.controls[key].invalid,\n label: getObjectFormGroup(group.controls[key]).label}\">\n <div class=\"stack\" [ngClass]=\"{stackBase: group._eoFormGroup.label === 'data'}\">\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else stkgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n </eo-form-element>\n <ng-template #stkgroup>\n <eo-form-group [group]=\"group.controls[key]\" [noGroupLabels]=\"true\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </div>\n </ng-template>\n </yvc-tabs>\n\n <!-- group with legend -->\n <div *ngSwitchCase=\"'fieldset'\" class=\"om-group fieldset\">\n <div class=\"legend\"><span>{{group._eoFormGroup.label}}</span></div>\n\n <div>\n <ng-container *ngFor=\"let key of group.controls | keys\">\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else fsgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n </eo-form-element>\n <ng-template #fsgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </div>\n </div>\n\n <!-- group -->\n <ng-container class=\"om-group\" *ngSwitchCase=\"'group'\">\n <ng-container *ngFor=\"let key of group.controls | keys\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else omgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n\n </eo-form-element>\n <ng-template #omgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\" [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </ng-container>\n\n</div>\n\n\n<ng-template #tplFormElementTable let-element=\"element\" let-formElementRef=\"formElementRef\">\n <div class=\"table\">\n <eo-table [params]=\"{\nsituation: element._eoFormControlWrapper.situation,\nelement: formElementRef._eoFormElement,\nsize: formElementRef._eoFormElement.size,\nobject: formElementRef._eoFormElement.object\n}\" [formControl]=\"element.get(element._eoFormControlWrapper.controlName)\"></eo-table>\n </div>\n</ng-template>\n", styles: [":host{flex:1 1 auto}.dark .form-element .ui-tabview.ui-tabview-top>.ui-tabview-nav{border-color:rgba(var(--color-white-rgb),.2)}.dark .form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav li.ui-state-active{border-color:rgba(var(--color-white-rgb),1)}.dark .form-element .ui-widget-header .ui-state-active a,.dark .form-element .ui-widget-content .ui-state-active a,.dark .form-element .ui-state-active a{color:var(--color-white)}.dark .form-element .ui-widget-header .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-widget-content .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-state-default:not(.ui-state-active) a{color:rgba(var(--color-white-rgb),.3)}.form-element{box-sizing:border-box}.form-element.o2mGroupStack{background:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1)}.form-element.o2mGroupStack p-tabview{width:100%}.form-element.o2mGroupStack a[role=tab].invalid-true .label{background-color:var(--color-error);color:var(--color-white)}.form-element.o2mGroupStack a[role=tab].invalid-true .label:after{content:\"!\";margin-inline-start:calc(var(--app-pane-padding) / 2)}.form-element.o2mGroupStack a[role=tab].dirty-true:not(.invalid-true) .label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)}.form-element.o2mGroupStack.data{border:0}.form-element.align-column{display:flex;flex-flow:column nowrap;justify-content:flex-start;align-content:stretch;align-items:stretch}.form-element.align-column>*{flex:1 1 auto}.form-element.align-row{display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>*{flex:1 1 auto}.form-element.align-row>.fieldset>:not(.legend){display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>.fieldset>:not(.legend) eo-form-group{flex:1 1 auto;min-width:200px}.form-element .stackBase{padding:var(--app-pane-padding)}.form-element .stackBase>eo-form-group>.form-element>.fieldset{margin:0;padding:0;border:0;background-color:transparent}.form-element .stackBase>eo-form-group>.form-element>.fieldset>.legend{display:none}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i12.Tabs, selector: "yvc-tabs", inputs: ["tabs", "layoutSettingsID", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i12.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: ObjectFormGroupComponent, selector: "eo-form-group", inputs: ["situation", "skipToggle", "group", "noGroupLabels"] }, { kind: "component", type: FormElementComponent, selector: "eo-form-element", inputs: ["situation", "skipToggle", "element"] }, { kind: "component", type: FormElementTableComponent, selector: "eo-table", inputs: ["limit", "hasPreviewFile", "minWidth", "height", "params"] }, { kind: "directive", type: FormElementTemplate, selector: "[eoFormElementTemplate]", inputs: ["propertyType"] }, { kind: "pipe", type: KeysPipe, name: "keys" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
9125
9318
|
}
|
|
9126
9319
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ObjectFormGroupComponent, decorators: [{
|
|
9127
9320
|
type: Component,
|
|
9128
|
-
args: [{ selector: 'eo-form-group', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"group\" [ngSwitch]=\"groupType\"\n class=\"form-element {{group._eoFormGroup ? group._eoFormGroup.type : 'o2mControlWrap'}} align-{{(group._eoFormGroup && group._eoFormGroup.layout) ? group._eoFormGroup.layout.align : ''}}\"\n [formGroup]=\"group\">\n\n <!-- group stacks (tabs) -->\n <yvc-tabs *ngSwitchCase=\"'stack'\" [layoutSettingsID]=\"layoutSettingsID\">\n <ng-template *ngFor=\"let key of group.controls | keys; index as i;\" [yvcTab]=\"{id: 't' + i
|
|
9321
|
+
args: [{ selector: 'eo-form-group', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"group\" [ngSwitch]=\"groupType\"\n class=\"form-element {{group._eoFormGroup ? group._eoFormGroup.type : 'o2mControlWrap'}} align-{{(group._eoFormGroup && group._eoFormGroup.layout) ? group._eoFormGroup.layout.align : ''}}\"\n [formGroup]=\"group\">\n\n <!-- group stacks (tabs) -->\n <yvc-tabs *ngSwitchCase=\"'stack'\" [layoutSettingsID]=\"layoutSettingsID\">\n <ng-template *ngFor=\"let key of group.controls | keys; index as i;\" [yvcTab]=\"{id: 't' + i,\n headerStyleClass: 'dirty-' + group.controls[key].dirty + ' invalid-' + group.controls[key].invalid,\n label: getObjectFormGroup(group.controls[key]).label}\">\n <div class=\"stack\" [ngClass]=\"{stackBase: group._eoFormGroup.label === 'data'}\">\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else stkgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n </eo-form-element>\n <ng-template #stkgroup>\n <eo-form-group [group]=\"group.controls[key]\" [noGroupLabels]=\"true\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </div>\n </ng-template>\n </yvc-tabs>\n\n <!-- group with legend -->\n <div *ngSwitchCase=\"'fieldset'\" class=\"om-group fieldset\">\n <div class=\"legend\"><span>{{group._eoFormGroup.label}}</span></div>\n\n <div>\n <ng-container *ngFor=\"let key of group.controls | keys\">\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else fsgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n </eo-form-element>\n <ng-template #fsgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </div>\n </div>\n\n <!-- group -->\n <ng-container class=\"om-group\" *ngSwitchCase=\"'group'\">\n <ng-container *ngFor=\"let key of group.controls | keys\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else omgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n\n </eo-form-element>\n <ng-template #omgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\" [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </ng-container>\n\n</div>\n\n\n<ng-template #tplFormElementTable let-element=\"element\" let-formElementRef=\"formElementRef\">\n <div class=\"table\">\n <eo-table [params]=\"{\nsituation: element._eoFormControlWrapper.situation,\nelement: formElementRef._eoFormElement,\nsize: formElementRef._eoFormElement.size,\nobject: formElementRef._eoFormElement.object\n}\" [formControl]=\"element.get(element._eoFormControlWrapper.controlName)\"></eo-table>\n </div>\n</ng-template>\n", styles: [":host{flex:1 1 auto}.dark .form-element .ui-tabview.ui-tabview-top>.ui-tabview-nav{border-color:rgba(var(--color-white-rgb),.2)}.dark .form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav li.ui-state-active{border-color:rgba(var(--color-white-rgb),1)}.dark .form-element .ui-widget-header .ui-state-active a,.dark .form-element .ui-widget-content .ui-state-active a,.dark .form-element .ui-state-active a{color:var(--color-white)}.dark .form-element .ui-widget-header .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-widget-content .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-state-default:not(.ui-state-active) a{color:rgba(var(--color-white-rgb),.3)}.form-element{box-sizing:border-box}.form-element.o2mGroupStack{background:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1)}.form-element.o2mGroupStack p-tabview{width:100%}.form-element.o2mGroupStack a[role=tab].invalid-true .label{background-color:var(--color-error);color:var(--color-white)}.form-element.o2mGroupStack a[role=tab].invalid-true .label:after{content:\"!\";margin-inline-start:calc(var(--app-pane-padding) / 2)}.form-element.o2mGroupStack a[role=tab].dirty-true:not(.invalid-true) .label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)}.form-element.o2mGroupStack.data{border:0}.form-element.align-column{display:flex;flex-flow:column nowrap;justify-content:flex-start;align-content:stretch;align-items:stretch}.form-element.align-column>*{flex:1 1 auto}.form-element.align-row{display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>*{flex:1 1 auto}.form-element.align-row>.fieldset>:not(.legend){display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>.fieldset>:not(.legend) eo-form-group{flex:1 1 auto;min-width:200px}.form-element .stackBase{padding:var(--app-pane-padding)}.form-element .stackBase>eo-form-group>.form-element>.fieldset{margin:0;padding:0;border:0;background-color:transparent}.form-element .stackBase>eo-form-group>.form-element>.fieldset>.legend{display:none}\n"] }]
|
|
9129
9322
|
}], propDecorators: { situation: [{
|
|
9130
9323
|
type: Input
|
|
9131
9324
|
}], skipToggle: [{
|
|
@@ -10982,7 +11175,7 @@ class OpenDocumentActionComponent extends DmsObjectTarget {
|
|
|
10982
11175
|
isExecutable(item) {
|
|
10983
11176
|
const { isFinalized, content, rights, lock } = item;
|
|
10984
11177
|
const itemConditions = (item && (isFinalized || !(content && content.count) || content.count === 0 || !rights.edit || (lock && lock.by.other)));
|
|
10985
|
-
const isExecutable = this.agentService.isConnected && this.isAllowedState() && !itemConditions;
|
|
11178
|
+
const isExecutable = this.agentService.isConnected && this.isAllowedState() && !itemConditions && !lock;
|
|
10986
11179
|
return of(isExecutable);
|
|
10987
11180
|
}
|
|
10988
11181
|
isAllowedState() {
|
|
@@ -11291,7 +11484,7 @@ class CodesystemFilterComponent extends CodesystemComponent {
|
|
|
11291
11484
|
// this.autoCompleteInput.multiInputEL.nativeElement.focus();
|
|
11292
11485
|
}
|
|
11293
11486
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: CodesystemFilterComponent, deps: [{ token: i1.SystemService }, { token: i1.TranslateService }, { token: i1.EventService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11294
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", 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\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [autocompleteValues]=\"autocompleteRes\" field=\"name\"\n [disabled]=\"readonly\" [placeholder]=\"placeholder\" [forceSelection]=\"true\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\" (ngModelChange)=\"onAutocompleteValueChange($event)\" [(ngModel)]=\"selectedNodes\">\n </yvc-autocomplete>\n <button type=\"button\" #button *ngIf=\"!readonly\"\n (click)=\"setDialogVisible(true, $event)\" \n (keydown.enter)=\"setDialogVisible(true, $event)\" \n >\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div>\n\n<eo-dialog [title]=\"pickerTitle || ''\" [visible]=\"display\" (hide)=\"display = false\">\n <eo-tree [tree]=\"tree\" [isDisplayed]=\"display\" *ngIf=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" [readonly]=\"readonly\"\n [emptyMessage]=\"emptyMessage\">\n </eo-tree>\n</eo-dialog>", 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}.eo-codesystem>button eo-icon{width:16px;height:16px;margin:auto}.eo-codesystem.full ::ng-deep yvc-autocomplete .inputToken{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", "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:
|
|
11487
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", 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\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [autocompleteValues]=\"autocompleteRes\" field=\"name\"\n [disabled]=\"readonly\" [placeholder]=\"placeholder\" [forceSelection]=\"true\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\" (ngModelChange)=\"onAutocompleteValueChange($event)\" [(ngModel)]=\"selectedNodes\">\n </yvc-autocomplete>\n <button type=\"button\" #button *ngIf=\"!readonly\"\n (click)=\"setDialogVisible(true, $event)\" \n (keydown.enter)=\"setDialogVisible(true, $event)\" \n >\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div>\n\n<eo-dialog [title]=\"pickerTitle || ''\" [visible]=\"display\" (hide)=\"display = false\">\n <eo-tree [tree]=\"tree\" [isDisplayed]=\"display\" *ngIf=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" [readonly]=\"readonly\"\n [emptyMessage]=\"emptyMessage\">\n </eo-tree>\n</eo-dialog>", 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}.eo-codesystem>button eo-icon{width:16px;height:16px;margin:auto}.eo-codesystem.full ::ng-deep yvc-autocomplete .inputToken{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", "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: i10.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] }); }
|
|
11295
11488
|
}
|
|
11296
11489
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: CodesystemFilterComponent, decorators: [{
|
|
11297
11490
|
type: Component,
|
|
@@ -11342,9 +11535,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
|
|
|
11342
11535
|
}] } });
|
|
11343
11536
|
|
|
11344
11537
|
class DynamicListFilterComponent extends DynamicListComponent {
|
|
11345
|
-
constructor(
|
|
11346
|
-
super();
|
|
11347
|
-
this.eventService = eventService;
|
|
11538
|
+
constructor(localStorageService, objectFormHelperService, dynamicListService) {
|
|
11539
|
+
super(dynamicListService, localStorageService, objectFormHelperService);
|
|
11348
11540
|
this.params = {};
|
|
11349
11541
|
this.multiselect = true;
|
|
11350
11542
|
this.situation = 'SEARCH';
|
|
@@ -11352,10 +11544,6 @@ class DynamicListFilterComponent extends DynamicListComponent {
|
|
|
11352
11544
|
onValueChange() {
|
|
11353
11545
|
if (!this.params.filterParams || !this.params.filterParams.applyButton) {
|
|
11354
11546
|
this.params.api.onFilterChanged();
|
|
11355
|
-
// TODO: still necessary?
|
|
11356
|
-
// setTimeout(() => {
|
|
11357
|
-
// this.autoCompleteButton.nativeElement.style.top = this.autoCompleteInput.multiInputEL.nativeElement.offsetTop + 'px';
|
|
11358
|
-
// }, 0);
|
|
11359
11547
|
}
|
|
11360
11548
|
}
|
|
11361
11549
|
onAutoCompleteSelect(node) {
|
|
@@ -11395,16 +11583,13 @@ class DynamicListFilterComponent extends DynamicListComponent {
|
|
|
11395
11583
|
this.listObject = { entries: (this.params.colDef.filterParams.values || []).map(value => ({ value })) };
|
|
11396
11584
|
this.pickerTitle = this.params.colDef.headerName;
|
|
11397
11585
|
}
|
|
11398
|
-
|
|
11399
|
-
|
|
11400
|
-
}
|
|
11401
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DynamicListFilterComponent, deps: [{ token: i1.TranslateService }, { token: i1.EventService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11402
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", 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)}\"\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 <div class=\"empty\" *ngIf=\"!(list?.entries?.length)\">\n <div translate>eo.form.property.dynamic.list.empty</div>\n </div>\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n [disabled]=\"readonly\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [forceSelection]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" field=\"{{valueField}}\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\">\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>", 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 .inputToken{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: EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "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: i7.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] }); }
|
|
11586
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DynamicListFilterComponent, deps: [{ token: i1.LocalStorageService }, { token: ObjectFormHelperService }, { token: DynamicListService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11587
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", 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)}\"\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 <div class=\"empty\" *ngIf=\"!(list?.entries?.length)\">\n <div translate>eo.form.property.dynamic.list.empty</div>\n </div>\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n [disabled]=\"readonly\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [forceSelection]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" field=\"{{valueField}}\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\">\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 .inputToken{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: EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "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: i10.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] }); }
|
|
11403
11588
|
}
|
|
11404
11589
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DynamicListFilterComponent, decorators: [{
|
|
11405
11590
|
type: Component,
|
|
11406
|
-
args: [{ selector: 'eo-dynamic-list-filter', template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [visible]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length)}\"\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 <div class=\"empty\" *ngIf=\"!(list?.entries?.length)\">\n <div translate>eo.form.property.dynamic.list.empty</div>\n </div>\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n [disabled]=\"readonly\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [forceSelection]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" field=\"{{valueField}}\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\">\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,
|
|
11407
|
-
}], ctorParameters: () => [{ type: i1.
|
|
11591
|
+
args: [{ selector: 'eo-dynamic-list-filter', template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [visible]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length)}\"\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 <div class=\"empty\" *ngIf=\"!(list?.entries?.length)\">\n <div translate>eo.form.property.dynamic.list.empty</div>\n </div>\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n [disabled]=\"readonly\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [forceSelection]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" field=\"{{valueField}}\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\">\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 .inputToken{display:none}\n"] }]
|
|
11592
|
+
}], ctorParameters: () => [{ type: i1.LocalStorageService }, { type: ObjectFormHelperService }, { type: DynamicListService }], propDecorators: { eoDialog: [{
|
|
11408
11593
|
type: ViewChild,
|
|
11409
11594
|
args: [EoDialogComponent]
|
|
11410
11595
|
}] } });
|
|
@@ -11675,7 +11860,7 @@ class OrganizationFilterComponent extends OrganizationComponent {
|
|
|
11675
11860
|
// this.autoCompleteInput.multiInputEL.nativeElement.focus();
|
|
11676
11861
|
}
|
|
11677
11862
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: OrganizationFilterComponent, deps: [{ token: i1.BackendService }, { token: i1.SystemService }, { token: i1.TranslateService }, { token: i1.UserService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11678
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: OrganizationFilterComponent, selector: "eo-organization-filter", usesInheritance: true, ngImport: i0, template: "<div class=\"eo-organization\" [ngClass]=\"{acInputHidden: !multiselect && innerValue.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n [placeholder]=\"placeholder\" (suggestionUnselect)=\"onUnselect($event)\" (blur)=\"onAutoCompleteBlur()\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" field=\"id\"\n [forceSelection]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"true\">\n\n <ng-template #autocompleteOptionTemplate let-item>\n <div class=\"org-item\">\n <yvc-icon [svg]=\"item.type === 'group' ? icon.group : icon.user\"></yvc-icon>\n <span *ngIf=\"(item.firstname?.length && item.lastname?.length) || item.type === 'group'\">{{item.title}}\n ({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.type !== 'group'\">({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\">{{item.lastname}} ({{item.name}})</span>\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\">{{item.firstname}} ({{item.name}})</span>\n </div>\n </ng-template>\n\n <ng-template #chipTemplate let-item>\n <div class=\"org-item\">\n <yvc-icon [svg]=\"item.type === 'group' ? icon.group : icon.user\"></yvc-icon>\n <span\n *ngIf=\"(item.firstname?.length && item.lastname?.length && item.active) || item.type === 'group'\">{{item.title}}\n ({{item.name}})</span>\n <span class=\"inactive\"\n *ngIf=\"(item.firstname?.length && item.lastname?.length && !item.active)\">{{item.title}}\n ({{item.name}})</span>\n <span *ngIf=\"(!item.firstname?.length && !item.lastname?.length && !item.active && !item.type)\"\n class=\"deleted-user-label\">{{'eo.form.property.organization.error.usernotfound'|translate}}</span>\n <span\n *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.active && item.type !== 'group'\">({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\">{{item.lastname}} ({{item.name}})</span>\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\">{{item.firstname}} ({{item.name}})</span>\n </div>\n </ng-template>\n\n </yvc-autocomplete>\n</div>\n", styles: [".eo-organization yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-organization .org-item{display:flex;align-items:center}.eo-organization .inactive{text-decoration:line-through}:host.readonly ::ng-deep .ui-autocomplete-token-icon{display:none}:host ::ng-deep .chip yvc-icon{flex:0 0 auto;width:18px;height:18px;color:var(--text-color-caption)}:host ::ng-deep .deleted-user-label{color:var(--color-error)}:host ::ng-deep .eo-organization.acInputHidden .inputToken{width:0!important;margin:0;padding:0}:host ::ng-deep .eo-organization.acInputHidden .inputToken input{width:0!important}:host ::ng-deep .ui-autocomplete-panel{left:0!important}\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:
|
|
11863
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: OrganizationFilterComponent, selector: "eo-organization-filter", usesInheritance: true, ngImport: i0, template: "<div class=\"eo-organization\" [ngClass]=\"{acInputHidden: !multiselect && innerValue.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n [placeholder]=\"placeholder\" (suggestionUnselect)=\"onUnselect($event)\" (blur)=\"onAutoCompleteBlur()\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" field=\"id\"\n [forceSelection]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"true\">\n\n <ng-template #autocompleteOptionTemplate let-item>\n <div class=\"org-item\">\n <yvc-icon [svg]=\"item.type === 'group' ? icon.group : icon.user\"></yvc-icon>\n <span *ngIf=\"(item.firstname?.length && item.lastname?.length) || item.type === 'group'\">{{item.title}}\n ({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.type !== 'group'\">({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\">{{item.lastname}} ({{item.name}})</span>\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\">{{item.firstname}} ({{item.name}})</span>\n </div>\n </ng-template>\n\n <ng-template #chipTemplate let-item>\n <div class=\"org-item\">\n <yvc-icon [svg]=\"item.type === 'group' ? icon.group : icon.user\"></yvc-icon>\n <span\n *ngIf=\"(item.firstname?.length && item.lastname?.length && item.active) || item.type === 'group'\">{{item.title}}\n ({{item.name}})</span>\n <span class=\"inactive\"\n *ngIf=\"(item.firstname?.length && item.lastname?.length && !item.active)\">{{item.title}}\n ({{item.name}})</span>\n <span *ngIf=\"(!item.firstname?.length && !item.lastname?.length && !item.active && !item.type)\"\n class=\"deleted-user-label\">{{'eo.form.property.organization.error.usernotfound'|translate}}</span>\n <span\n *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.active && item.type !== 'group'\">({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\">{{item.lastname}} ({{item.name}})</span>\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\">{{item.firstname}} ({{item.name}})</span>\n </div>\n </ng-template>\n\n </yvc-autocomplete>\n</div>\n", styles: [".eo-organization yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-organization .org-item{display:flex;align-items:center}.eo-organization .inactive{text-decoration:line-through}:host.readonly ::ng-deep .ui-autocomplete-token-icon{display:none}:host ::ng-deep .chip yvc-icon{flex:0 0 auto;width:18px;height:18px;color:var(--text-color-caption)}:host ::ng-deep .deleted-user-label{color:var(--color-error)}:host ::ng-deep .eo-organization.acInputHidden .inputToken{width:0!important;margin:0;padding:0}:host ::ng-deep .eo-organization.acInputHidden .inputToken input{width:0!important}:host ::ng-deep .ui-autocomplete-panel{left:0!important}\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: i10.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { kind: "component", type: i2$3.Icon, selector: "yvc-icon", inputs: ["svg", "svgSrc"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
11679
11864
|
}
|
|
11680
11865
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: OrganizationFilterComponent, decorators: [{
|
|
11681
11866
|
type: Component,
|
|
@@ -13425,11 +13610,11 @@ class ObjectFormEditComponent {
|
|
|
13425
13610
|
return dmsObject.hasOwnProperty('rights') && dmsObject.rights.edit && !dmsObject.isFinalized;
|
|
13426
13611
|
}
|
|
13427
13612
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ObjectFormEditComponent, deps: [{ token: i1.SystemService }, { token: i1.DmsService }, { token: i0.ElementRef }, { token: i1.NotificationsService }, { token: PendingChangesService }, { token: i2$1.Router }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13428
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: ObjectFormEditComponent, selector: "eo-object-form-edit", inputs: { formDisabled: "formDisabled", dmsObject: "dmsObject" }, outputs: { indexDataSaved: "indexDataSaved" }, viewQueries: [{ propertyName: "objectForm", first: true, predicate: ObjectFormComponent, descendants: true }], ngImport: i0, template: "<div class=\"object-form-edit\" [ngClass]=\"{invalid: formState?.invalid === true}\" [eoShortcuts]=\"shortcuts\">\n <eo-object-form [formOptions]=\"formOptions\" *ngIf=\"formOptions\"\n (statusChanged)=\"onFormStatusChanged($event)\"></eo-object-form>\n
|
|
13613
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: ObjectFormEditComponent, selector: "eo-object-form-edit", inputs: { formDisabled: "formDisabled", dmsObject: "dmsObject" }, outputs: { indexDataSaved: "indexDataSaved" }, viewQueries: [{ propertyName: "objectForm", first: true, predicate: ObjectFormComponent, descendants: true }], ngImport: i0, template: "<div class=\"object-form-edit\" [ngClass]=\"{invalid: formState?.invalid === true}\" [eoShortcuts]=\"shortcuts\">\n <eo-object-form [formOptions]=\"formOptions\" *ngIf=\"formOptions\"\n (statusChanged)=\"onFormStatusChanged($event)\"></eo-object-form>\n <div class=\"form-controls\" *ngIf=\"controls.visible\">\n <div class=\"err-msg\" *ngIf=\"formState?.invalid\" translate>eo.object.indexdata.form.invalid</div>\n\n <div class=\"buttons\">\n\n <button class=\"secondary\" (click)=\"reset()\" [disabled]=\"controls.saving\" translate>eo.object.indexdata.reset</button>\n <button class=\"primary\" [ngClass]=\"{spinner: controls.saving}\"\n [disabled]=\"formState?.invalid || controls.saving\"\n (click)=\"save()\" translate>eo.object.indexdata.save</button>\n </div>\n </div>\n</div>\n\n<eo-dialog [title]=\"('eo.object.indexdata.save.conflict.dialog.title' | translate : {modifier: conflictError?.dmsobject.modified.by.firstname + ' ' + conflictError?.dmsobject.modified.by.lastname})\"\n (hide)=\"controls.saving = false;\" [(visible)]=\"showConflictDialog\" [minWidth]=\"400\" [styleClass]=\"'conflict__dialog'\">\n\n <div class=\"action-buttons conflict--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"cancelSaving()\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" class=\"button cancel\" (click)=\"showConflictChanges()\"\n translate>eo.object.indexdata.save.changes</button>\n <button type=\"button\" (click)=\"save(true); closeConflictDialog();\" class=\"button primary\"\n translate>eo.object.indexdata.save</button>\n </div>\n</eo-dialog>\n", styles: [".object-form-edit{background:var(--color-white);min-width:300px;display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"form\" \"buttons\"}.object-form-edit eo-object-form{grid-area:form}.object-form-edit .form-controls{grid-area:buttons;box-sizing:border-box}.object-form-edit .form-controls .err-msg{order:0;flex:1 1 auto;display:none;background-color:var(--color-error);color:#fff;padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)}.object-form-edit .form-controls .buttons{order:1;flex:1 1 auto;display:flex;flex-flow:row wrap;align-items:center;justify-content:flex-end;padding:var(--app-pane-padding) calc(var(--app-pane-padding) * .875)}.object-form-edit .form-controls .buttons button{flex:0 0 auto;margin:0 calc(var(--app-pane-padding) * .125)}.object-form-edit .form-controls .buttons .loader{flex:1 1 auto}.object-form-edit .form-controls .buttons .loader eo-icon{display:none}.object-form-edit .form-controls .buttons .loader.saving eo-icon{display:block}.object-form-edit.invalid .form-controls .err-msg{display:block}::ng-deep .conflict__dialog{padding:8px;min-height:unset!important}::ng-deep .conflict__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\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: EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "directive", type: ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "component", type: ObjectFormComponent, selector: "eo-object-form", inputs: ["isInnerTableForm", "formOptions"], outputs: ["statusChanged", "onFormReady"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
13429
13614
|
}
|
|
13430
13615
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ObjectFormEditComponent, decorators: [{
|
|
13431
13616
|
type: Component,
|
|
13432
|
-
args: [{ selector: 'eo-object-form-edit', template: "<div class=\"object-form-edit\" [ngClass]=\"{invalid: formState?.invalid === true}\" [eoShortcuts]=\"shortcuts\">\n <eo-object-form [formOptions]=\"formOptions\" *ngIf=\"formOptions\"\n (statusChanged)=\"onFormStatusChanged($event)\"></eo-object-form>\n
|
|
13617
|
+
args: [{ selector: 'eo-object-form-edit', template: "<div class=\"object-form-edit\" [ngClass]=\"{invalid: formState?.invalid === true}\" [eoShortcuts]=\"shortcuts\">\n <eo-object-form [formOptions]=\"formOptions\" *ngIf=\"formOptions\"\n (statusChanged)=\"onFormStatusChanged($event)\"></eo-object-form>\n <div class=\"form-controls\" *ngIf=\"controls.visible\">\n <div class=\"err-msg\" *ngIf=\"formState?.invalid\" translate>eo.object.indexdata.form.invalid</div>\n\n <div class=\"buttons\">\n\n <button class=\"secondary\" (click)=\"reset()\" [disabled]=\"controls.saving\" translate>eo.object.indexdata.reset</button>\n <button class=\"primary\" [ngClass]=\"{spinner: controls.saving}\"\n [disabled]=\"formState?.invalid || controls.saving\"\n (click)=\"save()\" translate>eo.object.indexdata.save</button>\n </div>\n </div>\n</div>\n\n<eo-dialog [title]=\"('eo.object.indexdata.save.conflict.dialog.title' | translate : {modifier: conflictError?.dmsobject.modified.by.firstname + ' ' + conflictError?.dmsobject.modified.by.lastname})\"\n (hide)=\"controls.saving = false;\" [(visible)]=\"showConflictDialog\" [minWidth]=\"400\" [styleClass]=\"'conflict__dialog'\">\n\n <div class=\"action-buttons conflict--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"cancelSaving()\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" class=\"button cancel\" (click)=\"showConflictChanges()\"\n translate>eo.object.indexdata.save.changes</button>\n <button type=\"button\" (click)=\"save(true); closeConflictDialog();\" class=\"button primary\"\n translate>eo.object.indexdata.save</button>\n </div>\n</eo-dialog>\n", styles: [".object-form-edit{background:var(--color-white);min-width:300px;display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"form\" \"buttons\"}.object-form-edit eo-object-form{grid-area:form}.object-form-edit .form-controls{grid-area:buttons;box-sizing:border-box}.object-form-edit .form-controls .err-msg{order:0;flex:1 1 auto;display:none;background-color:var(--color-error);color:#fff;padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)}.object-form-edit .form-controls .buttons{order:1;flex:1 1 auto;display:flex;flex-flow:row wrap;align-items:center;justify-content:flex-end;padding:var(--app-pane-padding) calc(var(--app-pane-padding) * .875)}.object-form-edit .form-controls .buttons button{flex:0 0 auto;margin:0 calc(var(--app-pane-padding) * .125)}.object-form-edit .form-controls .buttons .loader{flex:1 1 auto}.object-form-edit .form-controls .buttons .loader eo-icon{display:none}.object-form-edit .form-controls .buttons .loader.saving eo-icon{display:block}.object-form-edit.invalid .form-controls .err-msg{display:block}::ng-deep .conflict__dialog{padding:8px;min-height:unset!important}::ng-deep .conflict__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"] }]
|
|
13433
13618
|
}], ctorParameters: () => [{ type: i1.SystemService }, { type: i1.DmsService }, { type: i0.ElementRef }, { type: i1.NotificationsService }, { type: PendingChangesService }, { type: i2$1.Router }, { type: i1.TranslateService }], propDecorators: { objectForm: [{
|
|
13434
13619
|
type: ViewChild,
|
|
13435
13620
|
args: [ObjectFormComponent]
|
|
@@ -16201,8 +16386,9 @@ let AppSearchComponent = class AppSearchComponent {
|
|
|
16201
16386
|
}, 0);
|
|
16202
16387
|
}
|
|
16203
16388
|
// decide whether or not to setup an indexdata search
|
|
16204
|
-
const
|
|
16205
|
-
|
|
16389
|
+
const activateIndexdataSearch = this.query.__updateCause === SearchQuery.UPDATE_CAUSE.TYPES_SET
|
|
16390
|
+
|| this.query.__updateCause === SearchQuery.UPDATE_CAUSE.CONTEXT_FOLDER_SET;
|
|
16391
|
+
if (activateIndexdataSearch) {
|
|
16206
16392
|
// having just one target type and a context type setup means, that we are using indexdata search
|
|
16207
16393
|
this.indexdataSearch(this.query.types[0], this.query.contextFolderTypes.length > 0 ? this.query.contextFolderTypes[0] : null);
|
|
16208
16394
|
}
|
|
@@ -16463,11 +16649,8 @@ let AppSearchComponent = class AppSearchComponent {
|
|
|
16463
16649
|
isTypeActive(_type) {
|
|
16464
16650
|
return !!this.query.types.find(t => t.id === _type.id);
|
|
16465
16651
|
}
|
|
16466
|
-
isTypeSaved(_type) {
|
|
16467
|
-
return (!this.queryState.aggregations.type.get(_type.name) && this.queryState.lastChange === SearchQuery.BASE_PARAMS.TYPE);
|
|
16468
|
-
}
|
|
16469
16652
|
getAggregationCount(_type) {
|
|
16470
|
-
return
|
|
16653
|
+
return this.queryState.aggregations.type.get(_type.name) || '';
|
|
16471
16654
|
}
|
|
16472
16655
|
buildFilter(filterType, operator, key) {
|
|
16473
16656
|
if (key instanceof RangeValue) {
|
|
@@ -16827,14 +17010,14 @@ let AppSearchComponent = class AppSearchComponent {
|
|
|
16827
17010
|
this.queryStateSubscription.unsubscribe();
|
|
16828
17011
|
}
|
|
16829
17012
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AppSearchComponent, deps: [{ token: AppSearchService }, { token: i2$2.YvcOverlayService }, { token: i1.SearchService }, { token: i1.SystemService }, { token: i1.NotificationsService }, { token: i1.TranslateService }, { token: i2$1.Router }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.StoredQueriesService }, { token: i1.CapabilitiesService }, { token: i1.UserService }, { token: i1.Logger }, { token: i1.LocalStorageService }, { token: i1$3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16830
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: AppSearchComponent, selector: "eo-app-search", outputs: { onExecuteSearch: "onExecuteSearch" }, viewQueries: [{ propertyName: "tplSearch", first: true, predicate: ["tplSearch"], descendants: true, read: TemplateRef }, { propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "expertInput", first: true, predicate: ["xpinput"], descendants: true }, { propertyName: "indexdataForm", first: true, predicate: ["idxform"], descendants: true }, { propertyName: "contextForm", first: true, predicate: ["ctxform"], descendants: true }], ngImport: i0, template: "<!-- <eo-dialog [visible]=\"true\" [styleClass]=\"'eo-app-search-dialog'\" [align]=\"'start'\" [minWidth]=\"'80vw'\"\n [minHeight]=\"'100vh'\" (hide)=\"closeSearchMenu($event)\"> -->\n<!-- <yvc-dialog [options]=\"{lightDismiss: true}\" [template]=\"tplSearch\" (closed)=\"closeSearchMenu()\"></yvc-dialog> -->\n<ng-template #tplSearch>\n\n <div class=\"eo-app-search\" [ngClass]=\"{expert: query.expertMode}\" eoRtlAware=\"full\" *ngIf=\"query\">\n\n <div class=\"head\">\n\n <div class=\"search\">\n <form (submit)=\"executeSearch()\">\n <div class=\"title\" translate>eo.search</div>\n\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\n\n <div class=\"search-box\" [formGroup]=\"termForm\">\n\n <yvc-autocomplete *ngIf=\"!query.expertMode; else expertInput\" #searchInput formControlName=\"term\" [autocompleteValues]=\"autocompleteResults\"\n (suggestionSelect)=\"autocompleteSelect()\" (keydown.enter)=\"executeSearch()\" (paste)=\"autocompletePaste($event)\">\n </yvc-autocomplete>\n\n <ng-template #expertInput>\n <input autofocus=\"autofocus\" class=\"expert-search__input\" #xpinput type=\"text\"\n (ngModelChange)=\"expertTermChanged()\" [(ngModel)]=\"query.term\" [ngModelOptions]=\"{standalone: true}\">\n </ng-template>\n\n <button class=\"btn expert-mode\" type=\"button\" (click)=\"toggleExpertMode()\">\n <!--<span translate>eo.search.mode.expert</span>-->\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_expert-search.svg'\"\n [iconTitle]=\"('eo.search.mode.expert' | translate)\" *ngIf=\"!query?.expertMode; else close\"></eo-icon>\n <ng-template #close>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_expert-search.svg'\"\n [iconTitle]=\"('eo.search.mode.expert.close' | translate)\"></eo-icon>\n </ng-template>\n </button>\n\n <button type=\"button\" class=\"btn expert-mode expert-mode__reset\" [ngClass]=\"{active: query.term}\"\n (click)=\"resetExpertModeInput()\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"\n [iconTitle]=\"('eo.search.clear.search' | translate)\"></eo-icon>\n </button>\n\n <button class=\"btn btn-default\" type=\"submit\" [disabled]=\"queryState.isEmpty\"\n translate>eo.search.submit</button>\n </div>\n </form>\n </div>\n\n <div class=\"result\" *ngIf=\"!loading; else spinner\">{{queryState.totalCount | localeDecimal}}</div>\n <ng-template #spinner>\n <eo-loading-spinner class=\"search-aggregator__loader\" [size]=\"'medium'\" [mode]=\"'dark'\"></eo-loading-spinner>\n </ng-template>\n <eo-icon class=\"button white close\" [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"\n [iconTitle]=\"('eo.search.close' | translate)\" (click)=\"closeSearchMenu()\"></eo-icon>\n\n </div>\n\n <div class=\"body\" *ngIf=\"!query.expertMode; else expert\">\n\n <yvc-tabs (tabChange)=\"onTabChange($event)\" layoutSettingsID=\"eo.search.dialog.tabs\">\n\n <!-- object type select -->\n <ng-template [yvcTab]=\"{id: 'restrictType', label: 'eo.search.restrict.type' | translate}\">\n\n <div class=\"object-types rest-box-container\" [ngClass]=\"{idxenabled: query.types.length < 1}\"\n *ngIf=\"objectTypeGroups && !idxSearch\">\n <div class=\"group rest-box\" *ngFor=\"let group of objectTypeGroups; let i = index\">\n <div class=\"group-header\">\n <h3 *ngIf=\"group.label !== '0'\">{{group.label}}</h3>\n <h3 *ngIf=\"group.label === '0'\" translate>{{'eo.search.group.general'}}</h3>\n <div class=\"move-icons\">\n <eo-icon *ngIf=\"i !== 0\" class=\"move-left-first\" (click)=\"moveObjectTypeGroup(group.label, 'first')\" [iconSrc]=\"'assets/_default/svg/ic_arrow_last.svg'\"></eo-icon>\n <eo-icon *ngIf=\"i !== 0\" class=\"move-left-icon\" (click)=\"moveObjectTypeGroup(group.label, 'left')\" [iconSrc]=\"'assets/_default/svg/ic_arrow_left.svg'\"></eo-icon>\n <eo-icon *ngIf=\"i !== objectTypeGroups.length - 1\" class=\"move-right-icon\" (click)=\"moveObjectTypeGroup(group.label, 'right')\" [iconSrc]=\"'assets/_default/svg/ic_arrow_right.svg'\"></eo-icon>\n <eo-icon *ngIf=\"i !== objectTypeGroups.length - 1\" class=\"move-right-last\" (click)=\"moveObjectTypeGroup(group.label, 'last')\" [iconSrc]=\"'assets/_default/svg/ic_arrow_last.svg'\"></eo-icon>\n\n </div>\n </div>\n <div class=\"type\" *ngFor=\"let type of group.types\"\n [ngClass]=\"{context: type.isContextFolder, folder: type.isFolder, abstract: type.isAbstract, selected: isTypeActive(type), saved: isTypeSaved(type)}\">\n\n <div class=\"checkbox\" (click)=\"toggleType(type)\">\n <svg fill=\"#ffffff\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />\n </svg>\n </div>\n <div class=\"item\" (click)=\"selectObjectType(type)\">\n <eo-icon [objectType]=\"type\"></eo-icon>\n <div class=\"label\">{{type.label}} {{type.isAbstract ? '('+ ('eo.search.type.abstract' | translate) +\n ')' : ''}}</div>\n <div class=\"count\">{{getAggregationCount(type) | localeDecimal}}</div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"indexdata-search\" *ngIf=\"idxSearch\">\n <h2>\n <eo-icon class=\"button\" [iconSrc]=\"'assets/_default/svg/ic_arrow_back.svg'\"\n (click)=\"exitIndexdataSearch()\"></eo-icon>\n <span translate [translateParams]=\"{type: idxSearch.type.label}\">eo.search.objecttype.form</span>\n </h2>\n\n <div class=\"context\" *ngIf=\"idxSearch.contextModels.length\">\n\n <div class=\"context-select\">\n <div translate>eo.search.objecttype.form.context</div>\n <div class=\"spacer\"></div>\n\n <eo-context-search *ngFor=\"let ctx of idxSearch.contextModels; index as i\" [ctx]=\"ctx\" [query]=\"query\"\n [selected]=\"currentContextFolderName === ctx.name\"\n [disabled]=\"(currentContextFolderName && currentContextFolderName !== ctx.name)\"\n [idxSearch]=\"idxSearch\" (setContext)=\"setContext($event)\">\n </eo-context-search>\n </div>\n\n <section class=\"context form\">\n <eo-object-form class=\"dark\" #ctxform\n *ngIf=\"idxSearch.contextFormOptions && idxSearch.contextFormOptions?.formModel?.elements?.length\"\n [formOptions]=\"idxSearch.contextFormOptions\" (statusChanged)=\"onIndexDataChanged($event)\">\n </eo-object-form>\n </section>\n </div>\n\n\n <section class=\"object-type form\" *ngIf=\"idxSearch.formOptions\">\n <eo-object-form #idxform [formOptions]=\"idxSearch.formOptions\"\n (statusChanged)=\"onIndexDataChanged($event)\" (onFormReady)=\"idxform.focusForm()\">\n </eo-object-form>\n </section>\n </div>\n </ng-template>\n\n <!-- created tab -->\n <ng-template [yvcTab]=\"{id: 'restrictCreated', label: 'eo.search.restrict.creation' | translate }\">\n <div class=\"created rest-box-container\" *ngIf=\"queryState.aggregations\">\n\n <div class=\"rest-box box-timespan\">\n <h3 translate>eo.search.agg.time.span</h3>\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.CREATED]\"\n (click)=\"toggleFilter(PARAMS.CREATED, OPERATOR.RANGE, agg.key, agg.selected)\"\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\n <div class=\"label\">{{agg.label}}</div>\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\n </div>\n </div>\n\n <div class=\"rest-box box-timespan-custom\">\n <h3 translate>eo.search.agg.time.span.custom</h3>\n <form #createdForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.agg.time.span' | translate\">\n <eo-datetime-range #createdField [(ngModel)]=\"filtersModel[PARAMS.CREATED].value\" name=\"range\"\n [operator]=\"filtersModel[PARAMS.CREATED].value ? filtersModel[PARAMS.CREATED].value.operator : OPERATOR.EQUAL\"\n [withTime]=\"createdField.searchOption && createdField.searchOption !== OPERATOR.EQUAL\"\n (ngModelChange)=\"setFilter(PARAMS.CREATED, OPERATOR.EQUAL, $event, createdForm)\">\n </eo-datetime-range>\n </eo-form-input>\n </form>\n </div>\n\n <div class=\"rest-box box-creator\">\n <h3 translate>eo.search.agg.creator</h3>\n <form #creatorForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.agg.createdby' | translate\">\n <eo-organization [multiselect]=\"true\" [(ngModel)]=\"filtersModel[PARAMS.CREATOR].value\" name=\"creator\"\n (onValueResolved)=\"resolveLabel(filtersModel[PARAMS.CREATOR], $event)\" [situation]=\"'SEARCH'\"\n (ngModelChange)=\"setFilter(PARAMS.CREATOR, OPERATOR.IN, $event, creatorForm)\"></eo-organization>\n </eo-form-input>\n </form>\n </div>\n\n </div>\n </ng-template>\n\n <ng-template [yvcTab]=\"{id: 'restrictModification', label: 'eo.search.restrict.modification' | translate}\">\n <div class=\"modified rest-box-container\" *ngIf=\"queryState.aggregations\">\n\n <div class=\"rest-box box-timespan\">\n <h3 translate>eo.search.agg.time.span</h3>\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.MODIFIED]\"\n (click)=\"toggleFilter(PARAMS.MODIFIED, OPERATOR.RANGE, agg.key, agg.selected)\"\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\n <div class=\"label\">{{agg.label}}</div>\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\n </div>\n </div>\n\n <div class=\"rest-box box-timespan-custom\">\n <h3 translate>eo.search.agg.time.span.custom</h3>\n <form #modifiedForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.agg.time.span' | translate\">\n <eo-datetime-range #modifiedField [(ngModel)]=\"filtersModel[PARAMS.MODIFIED].value\" name=\"range\"\n [operator]=\"filtersModel[PARAMS.MODIFIED].value ? filtersModel[PARAMS.MODIFIED].value.operator : OPERATOR.EQUAL\"\n [withTime]=\"modifiedField.searchOption && modifiedField.searchOption !== OPERATOR.EQUAL\"\n (ngModelChange)=\"setFilter(PARAMS.MODIFIED, OPERATOR.EQUAL, $event, modifiedForm)\">\n </eo-datetime-range>\n </eo-form-input>\n </form>\n </div>\n\n <div class=\"rest-box box-modifier\">\n <h3 translate>eo.search.agg.modifier</h3>\n <form #modifierForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.agg.modifiedby' | translate\">\n <eo-organization [multiselect]=\"true\" [(ngModel)]=\"filtersModel[PARAMS.MODIFIER].value\"\n name=\"modifier\" (onValueResolved)=\"resolveLabel(filtersModel[PARAMS.MODIFIER], $event)\"\n [situation]=\"'SEARCH'\"\n (ngModelChange)=\"setFilter(PARAMS.MODIFIER, OPERATOR.IN, $event, modifierForm)\"></eo-organization>\n </eo-form-input>\n </form>\n </div>\n </div>\n </ng-template>\n\n <ng-template [yvcTab]=\"{id: 'restrictFile', label: 'eo.search.restrict.file' | translate}\">\n <div class=\"file rest-box-container\" *ngIf=\"queryState.aggregations\">\n\n <div class=\"rest-box box-mimetype-group\">\n <h3 translate>eo.search.restrict.mimetypegroup</h3>\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.MIMETYPEGROUP]\"\n (click)=\"setFilter(PARAMS.MIMETYPEGROUP, OPERATOR.IN, resolveSelection(aggregationsModel[PARAMS.MIMETYPEGROUP], agg.key, agg.selected))\"\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\n <div class=\"checkbox\">\n <svg fill=\"#ffffff\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />\n </svg>\n </div>\n <div class=\"label\">{{agg.label}}</div>\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\n </div>\n </div>\n\n <div class=\"rest-box box-filesize\">\n <h3 translate>eo.search.restrict.filesize</h3>\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.FILESIZE]\"\n (click)=\"toggleFilter(PARAMS.FILESIZE, OPERATOR.RANGE, agg.key, agg.selected)\"\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\n <div class=\"label\">{{agg.label}}</div>\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\n </div>\n </div>\n\n <div class=\"rest-box box-filename\">\n <h3 translate>eo.search.restrict.filename</h3>\n <form #filenameForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.restrict.filename' | translate\">\n <eo-string [autocomplete]=\"true\" [qname]=\"'filename'\"\n [(ngModel)]=\"filtersModel[PARAMS.FILENAME].value\" name=\"filename\"\n (ngModelChange)=\"setFilter(PARAMS.FILENAME, OPERATOR.EQUAL, $event, filenameForm)\"></eo-string>\n </eo-form-input>\n </form>\n </div>\n </div>\n </ng-template>\n </yvc-tabs>\n\n <!-- summary of the current search filters -->\n <div class=\"summary-panel\">\n\n <div class=\"headline stored-query\" *ngIf=\"isStoredQuery; else reghead\">\n <div class=\"spaceInbetwen\">\n <div class=\"savedSearchIcon\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_saved_search.svg'\"></eo-icon>\n </div>\n <div class=\"store\">\n <div class=\"pre\" translate>eo.search.aside.summary.storedquery</div>\n <div class=\"stored-query-name\">{{storedQuery.name}}</div>\n </div>\n </div>\n </div>\n\n <ng-template #reghead>\n <div class=\"headline\" translate>eo.search.aside.summary</div>\n </ng-template>\n\n <section class=\"query-types\">\n <div class=\"section section-searchterm\" *ngIf=\"query.term\">\n <div class=\"title\" translate>eo.search.aside.summary.term</div>\n <div class=\"filter\">\n <div class=\"label\">{{query.term}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeTerm()\"></eo-icon>\n </div>\n </div>\n\n <div class=\"section section-contexttype\" *ngIf=\"query.contextFolderTypes.length\">\n <div class=\"title\" translate>eo.search.aside.summary.contextfoldertypes</div>\n <div class=\"filter\" *ngFor=\"let type of query.contextFolderTypes\">\n <div class=\"label\">{{type.label}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeContextType()\"></eo-icon>\n </div>\n </div>\n\n <div class=\"section section-objecttype\" *ngIf=\"query.types.length\">\n <div class=\"title\" translate>eo.search.aside.summary.types</div>\n <div class=\"filter\" *ngFor=\"let type of query.types\">\n <div class=\"label\">{{type.label}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeType(type)\"></eo-icon>\n </div>\n </div>\n\n <ng-template #filterTemplate let-filter let-translate>\n <ng-container *ngIf=\"filter.innerValue.length\">\n <div class=\"filter\" *ngFor=\"let val of filter.innerValue; index as i\">\n <div class=\"label\">{{filter.label[i] | async}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"resetFilter(filter, val)\"></eo-icon>\n </div>\n </ng-container>\n </ng-template>\n\n <div class=\"section section-creation\"\n *ngIf=\"filtersModel[PARAMS.CREATED].innerValue?.length || filtersModel[PARAMS.CREATOR].innerValue?.length\">\n <div class=\"title\" translate>eo.search.restrict.creation</div>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.CREATED] }\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.CREATOR] }\"></ng-template>\n </div>\n\n <div class=\"section section-modification\"\n *ngIf=\"filtersModel[PARAMS.MODIFIED].innerValue?.length || filtersModel[PARAMS.MODIFIER].innerValue?.length\">\n <div class=\"title\" translate>eo.search.restrict.modification</div>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MODIFIED] }\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MODIFIER] }\"></ng-template>\n </div>\n\n <div class=\"section section-mimetypegroup\"\n *ngIf=\"filtersModel[PARAMS.MIMETYPEGROUP].innerValue.length || filtersModel[PARAMS.FILESIZE].innerValue.length || filtersModel[PARAMS.FILENAME].innerValue.length\">\n <div class=\"title\" translate>eo.search.restrict.file</div>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MIMETYPEGROUP] }\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.FILESIZE] }\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.FILENAME] }\"></ng-template>\n </div>\n </section>\n\n <div class=\"actions\" *ngIf=\"query.term || query.filters.length || query.types.length; else emptySearch\">\n\n <ng-container *ngIf=\"isStoredQuery; else regactions\">\n <button class=\"secondary btn-reset\" (click)=\"resetQuery()\" translate>eo.search.storedquery.close</button>\n <button class=\"primary grey btn-update\" (click)=\"updateStoredQuery()\"\n *ngIf=\"capabilities.storedqueries && isOwnQuery\" translate>eo.search.storedquery.update</button>\n <button class=\"primary grey btn-save\" (click)=\"saveQuery()\"\n *ngIf=\"capabilities.storedqueries && !isOwnQuery\" translate>eo.search.save</button>\n <button class=\"primary btn-submit\" (click)=\"executeSearch()\" [disabled]=\"queryState.isEmpty\"\n translate>eo.search.submit</button>\n </ng-container>\n\n <ng-template #regactions>\n <button class=\"primary grey btn-reset\" (click)=\"resetQuery()\" translate>eo.search.reset</button>\n <button class=\"primary grey btn-save\" (click)=\"saveQuery()\"\n *ngIf=\"capabilities.storedqueries && !isOwnQuery\" translate>eo.search.save</button>\n <button class=\"primary btn-submit\" (click)=\"executeSearch()\" [disabled]=\"queryState.isEmpty\"\n translate>eo.search.submit</button>\n </ng-template>\n\n\n </div>\n\n <ng-template #emptySearch>\n <div class=\"empty-search\" translate>eo.search.summary.empty</div>\n </ng-template>\n\n </div>\n\n\n </div>\n\n <!-- expert mode body panel containing explanations -->\n <ng-template #expert>\n <div class=\"body expert\">\n\n <div class=\"empty\" *ngIf=\"expertModeQueryEmpty\"><span translate>eo.search.mode.expert.result.empty</span></div>\n\n <!--\n <h2><span translate>eo.search.mode.expert</span></h2>\n <div class=\"intro\" translate>eo.search.mode.expert.intro</div>\n\n <div class=\"base-params fields\">\n <h2 translate>eo.search.mode.expert.support.baseparams</h2>\n <div class=\"items\">\n <div class=\"item\" *ngFor=\"let el of expertModeSupport.baseParams\" (click)=\"xpAddToTerm(el.data)\">\n <div class=\"label\"><span>{{el.label}}</span></div>\n <div class=\"data\">{{el.data}}</div>\n </div>\n </div>\n </div>\n\n <div class=\"system-types fields\">\n\n <div class=\"column column-group\">\n <h2 translate>eo.search.mode.expert.support.group</h2>\n <div class=\"items\">\n <div class=\"item\" *ngFor=\"let group of typeGroupTree\"\n [ngClass]=\"{selected: expertModeSupport.selectedGroup && group.id === expertModeSupport.selectedGroup.id}\"\n (click)=\"xpSelectGroup(group)\">\n <div *ngIf=\"group.label !== '0'\">{{group.label}}</div>\n <div *ngIf=\"group.label === '0'\">{{'eo.search.group.general' | translate}}</div>\n </div>\n </div>\n </div>\n\n <div class=\"column column-type\" *ngIf=\"expertModeSupport.selectedGroup\">\n <h2 translate>eo.search.mode.expert.support.type</h2>\n <div class=\"items\">\n <div class=\"item\" *ngFor=\"let type of expertModeSupport.selectedGroup.tree\"\n [ngClass]=\"{selected: expertModeSupport.selectedType && type.id === expertModeSupport.selectedType.id}\"\n (click)=\"xpSelectType(type)\">\n <div>{{type.label}}</div>\n </div>\n </div>\n </div>\n\n <div class=\"column section-field\" *ngIf=\"expertModeSupport.selectedType\">\n <h2 translate>eo.search.mode.expert.support.field</h2>\n <div class=\"items\">\n <div class=\"item\" *ngFor=\"let el of expertModeSupport.selectedType.children\" (click)=\"xpAddToTerm(el.data)\">\n <div class=\"label\"><span>{{el.label}}</span><span class=\"type\">{{el.type}}</span></div>\n <div class=\"data\">{{el.data}}</div>\n </div>\n </div>\n </div>\n\n </div>\n\n -->\n </div>\n </ng-template>\n </div>\n <!-- </eo-dialog> -->\n</ng-template>\n", styles: ["eo-app-search dialog{height:100vh;margin:0!important;max-height:100vh;max-block-size:100%!important;min-width:500px;width:80%}@media screen and (max-width: 500px){.eo-app-search-dialog{width:100%!important;min-width:inherit}}.eo-app-search-dialog .eo-dialog-content{overflow:inherit;max-height:100%}.eo-app-search-dialog .eo-dialog-header{display:none}.eo-app-search.rtl .head .close{right:auto;left:var(--app-pane-padding)}.eo-app-search.rtl .body .indexdata-search h2 eo-icon{transform:rotate(180deg)}.eo-app-search{--search-min-width: 500px;--search-box-max-width: 600px;--search-summary-width: 350px;width:80vw;height:100vh;background:var(--panel-background-grey);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}.eo-app-search .head{background:var(--color-primary-2);flex:0 0 auto;color:var(--color-white);position:relative;display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) calc(var(--app-pane-padding) / 2) 0 calc(var(--app-pane-padding) / 2)}.eo-app-search .head .search{flex:1 1 auto;justify-content:space-between;margin:0 calc(var(--app-pane-padding) / 2);z-index:2;min-width:fill-available;min-width:-webkit-fill-available;min-width:-moz-available}.eo-app-search .head .search .title{font-size:var(--font-display);font-weight:var(--font-weight-light);min-height:1em;line-height:1em}@media screen and (max-width: 480px){.eo-app-search .head .search .title{font-size:var(--font-title)}}.eo-app-search .head .search .query-scope{margin:calc(var(--app-pane-padding) * 2) 0 0 0;min-width:var(--search-min-width);max-width:var(--search-box-max-width)}.eo-app-search .head .search .search-box{margin-bottom:var(--app-pane-padding);display:flex;flex-flow:row nowrap;align-items:stretch;background:var(--color-white);max-width:var(--search-box-max-width);box-shadow:0 2px 2px rgba(var(--color-black-rgb),.2)}@media screen and (max-width: 480px){.eo-app-search .head .search .search-box{margin-top:var(--app-pane-padding)}}.eo-app-search .head .search .search-box yvc-autocomplete{flex:1 1 auto;background:transparent;outline:0;border:0}.eo-app-search .head .search .search-box yvc-autocomplete span.ui-autocomplete{width:100%}.eo-app-search .head .search .search-box input{width:100%;border:0;box-sizing:border-box;padding:calc(var(--app-pane-padding) / 2);font-size:var(--font-title)}.eo-app-search .head .search .search-box input::-ms-clear{display:none}.eo-app-search .head .search .search-box button[type=submit]{background:var(--color-accent);color:var(--color-white);border:0;padding:0 var(--app-pane-padding);font-size:var(--font-subhead)}.eo-app-search .head .search .search-box button.expert-mode{padding:0 calc(var(--app-pane-padding) / 2);background:transparent;border:0;color:var(--text-color-hint);display:flex;align-items:center}.eo-app-search .head .search .search-box button.expert-mode:focus{color:var(--color-accent)}.eo-app-search .head .search .search-box button.expert-mode__reset{opacity:0;width:0;padding:0;transition:all .2s ease-in-out}.eo-app-search .head .search .search-box button.expert-mode__reset.active{opacity:1;width:40px;padding:0 8px}.eo-app-search .head .search .search-box button.expert-mode span{display:none;padding:calc(var(--app-pane-padding) / 4);white-space:nowrap;animation:eoFadeIn var(--app-default-transition-duration)}.eo-app-search .head .search .search-box button.expert-mode:hover{color:var(--color-accent)}.eo-app-search .head .search .search-box button.expert-mode:hover span{display:block}.eo-app-search .head .result{position:absolute;right:var(--app-pane-padding);top:calc(var(--app-pane-padding) * 2.5);z-index:1;font-size:7em;line-height:1em;opacity:.1}@media screen and (max-width: 900px){.eo-app-search .head .result{font-size:3em;right:calc(var(--app-pane-padding) * 3);top:var(--app-pane-padding)}}.eo-app-search .head .search-aggregator__loader{z-index:11;position:absolute;right:13%;top:30%;-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}@media screen and (max-width: 900px){.eo-app-search .head .search-aggregator__loader{top:5%}}.eo-app-search .head .close{position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding);z-index:2}.eo-app-search .body{background:rgba(var(--color-white-rgb),.2);flex:1 1 auto;position:relative}@media screen and (max-width: 1000px){.eo-app-search .body .summary-panel{bottom:0;right:0!important;left:0!important;top:auto!important;width:auto!important;display:flex;flex-flow:row nowrap}.eo-app-search .body .summary-panel .headline:not(.stored-query),.eo-app-search .body .summary-panel .section{display:none}.eo-app-search .body .summary-panel .headline.stored-query{margin-bottom:0;display:flex;align-items:center;padding:0 var(--app-pane-padding)}.eo-app-search .body .summary-panel .headline.stored-query .pre{display:none}.eo-app-search .body .summary-panel .headline.stored-query .stored-query-name{font-size:var(--font-subhead)!important}.eo-app-search .body .summary-panel .actions{flex:1 1 auto}.eo-app-search .body yvc-tabs>section[role=tabpanel]{padding-right:0!important;padding-left:0!important}}.eo-app-search .body>yvc-tabs{position:absolute;inset:0}.eo-app-search .body>yvc-tabs>header{--text-color-body: #fff;--text-color-hint: rgba(255,255,255,.7);background:var(--color-primary-2)}.eo-app-search .body>yvc-tabs>section[role=tabpanel]{padding:calc(var(--app-pane-padding) - var(--app-pane-padding) / 2) calc(var(--app-pane-padding) * 2 + var(--search-summary-width)) 0 calc(var(--app-pane-padding) - 2px)}.eo-app-search .body .summary-panel{background:rgba(var(--color-black-rgb),.06);width:var(--search-summary-width);position:absolute;top:calc(var(--app-pane-padding) + var(--eo-tab-nav-height));right:var(--app-pane-padding);box-sizing:border-box}.eo-app-search .body .summary-panel .query-types{overflow:auto;max-height:calc(100vh - 290px)}.eo-app-search .body .summary-panel .headline{line-height:1em;font-size:var(--font-subhead);font-weight:var(--font-weight-light);color:var(--text-color-caption);margin-bottom:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 2)}.eo-app-search .body .summary-panel .headline .spaceInbetwen{display:flex;align-items:center}.eo-app-search .body .summary-panel .headline .spaceInbetwen .savedSearchIcon{display:block;padding:calc(var(--app-pane-padding) / 4) 0}.eo-app-search .body .summary-panel .headline .spaceInbetwen .savedSearchIcon eo-icon{--eoSvgIcon-size: 44px}.eo-app-search .body .summary-panel .headline .spaceInbetwen .store{display:block;min-height:0;min-width:0;padding-left:12px}.eo-app-search .body .summary-panel .headline .spaceInbetwen .store .pre{padding:calc(var(--app-pane-padding) / 2) 0}.eo-app-search .body .summary-panel .headline .spaceInbetwen .store .stored-query-name{font-size:var(--font-title);padding:calc(var(--app-pane-padding) / 2) 0;line-height:1.2em}.eo-app-search .body .summary-panel .headline.stored-query{background:var(--color-primary-3);color:var(--color-white);font-size:var(--font-body)}.eo-app-search .body .summary-panel .empty-search{padding:var(--app-pane-padding) calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-app-search .body .summary-panel .section{padding:calc(var(--app-pane-padding) / 2);max-height:calc(100vh - 280px);overflow-y:auto}.eo-app-search .body .summary-panel .section .title{border-bottom:1px solid rgba(var(--color-black-rgb),.1);padding-bottom:calc(var(--app-pane-padding) / 4);color:var(--text-color-caption)}.eo-app-search .body .summary-panel .filter{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;background:rgba(var(--color-white-rgb),.6);margin-top:4px;align-items:center}.eo-app-search .body .summary-panel .filter .label{display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;padding:0 0 0 calc(var(--app-pane-padding) / 4)}.eo-app-search .body .summary-panel .filter eo-icon{flex:0 0 auto;padding:calc(var(--app-pane-padding) / 4);box-sizing:border-box;cursor:pointer;color:var(--text-color-hint)}.eo-app-search .body .summary-panel .filter eo-icon:hover{color:var(--text-color-caption)}.eo-app-search .body .summary-panel .actions{display:flex;justify-content:flex-end;padding:calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2 - 2px)}.eo-app-search .body .summary-panel .actions button{margin:0 2px;line-height:1em;font-size:var(--font-hint)}.eo-app-search .body .ui-tabview .ui-tabview-panel{padding:calc(var(--app-pane-padding) / 2)}.eo-app-search .body .ui-tabview .ui-tabview-panel h2{margin:0 0 calc(var(--app-pane-padding) * 1.5) 0;padding:0;font-weight:var(--font-weight-light);font-size:var(--font-title);color:var(--text-color-caption)}.eo-app-search .body .rest-box-container{display:flex;flex-flow:row wrap;align-items:stretch}.eo-app-search .body .rest-box-container .rest-box{margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 2);background:var(--color-white);flex:1 1 auto}.eo-app-search .body .rest-box-container .rest-box h3{margin:0 0 var(--app-pane-padding) 0;padding:0;font-size:var(--font-caption);font-weight:var(--font-weight-normal);color:var(--text-color-caption)}.eo-app-search .body .rest-box-container .rest-box .rest-item{display:flex;flex:1 1 auto;flex-flow:row nowrap;align-items:center;padding:calc(var(--app-pane-padding) / 2);margin:0 calc(var(--app-pane-padding) / 4);color:var(--text-color-body)}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected{background:var(--color-primary-3);color:var(--color-white)}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover{background:var(--list-item-hover-background)}.eo-app-search .body .rest-box-container .rest-box .label{flex:1 1 auto;padding:0 calc(var(--app-pane-padding) / 2)}.eo-app-search .body .rest-box-container .rest-box .count{font-size:var(--font-caption);min-width:30px;text-align:right;font-weight:var(--font-weight-bold)}.eo-app-search .body .object-types .group .group-header .move-icons{display:none}.eo-app-search .body .object-types .group .type{display:flex;flex-flow:row nowrap;align-items:center;padding:1px 0}.eo-app-search .body .object-types .group .type.context{font-weight:var(--font-weight-bold)}.eo-app-search .body .object-types .group .type.folder .item eo-icon{background:rgba(var(--color-black-rgb),.15)}.eo-app-search .body .object-types .group .type.folder .item:hover eo-icon{background:rgba(var(--color-white-rgb),.3)}.eo-app-search .body .object-types .group .type.abstract .item{color:var(--text-color-caption)}.eo-app-search .body .object-types .group .type.abstract .item:hover{background:var(--color-primary-3);color:var(--panel-background)}.eo-app-search .body .object-types .group .type .item{display:flex;flex:1 1 auto;border-radius:2px;flex-flow:row nowrap;align-items:center;padding:calc(var(--app-pane-padding) / 2);margin:0 calc(var(--app-pane-padding) / 4);cursor:default;color:var(--text-color-body)}.eo-app-search .body .object-types .group .type .item eo-icon{color:var(--text-color-caption);width:16px;height:16px;box-sizing:content-box;padding:2px;border-radius:2px;transition:none;-webkit-transition:none;-moz-transition:none;-o-transition:none}.eo-app-search .body .object-types .group:hover .group-header{display:flex;justify-content:space-between}.eo-app-search .body .object-types .group:hover .group-header .move-icons{display:flex}.eo-app-search .body .object-types .group:hover .group-header .move-left-icon,.eo-app-search .body .object-types .group:hover .group-header .move-right-icon,.eo-app-search .body .object-types .group:hover .group-header .move-left-first,.eo-app-search .body .object-types .group:hover .group-header .move-right-last{cursor:pointer;color:var(--text-color-caption)}.eo-app-search .body .object-types .group:hover .group-header .move-left-first{transform:rotate(180deg)}.eo-app-search .body .object-types .type .item{cursor:pointer}.eo-app-search .body .object-types .type .item:hover{background:var(--color-primary-3);color:var(--panel-background)}.eo-app-search .body .object-types .type .item:hover eo-icon{color:var(--panel-background)}.eo-app-search .body .indexdata-search{padding:calc(var(--app-pane-padding) / 2) 0 0 calc(var(--app-pane-padding) / 2)}.eo-app-search .body .indexdata-search h2{display:flex;flex-flow:row;align-items:center}.eo-app-search .body .indexdata-search h2 eo-icon{margin:0 calc(var(--app-pane-padding) / 2)}.eo-app-search .body .indexdata-search h2 span{padding:0 calc(var(--app-pane-padding) / 4)}.eo-app-search .body .indexdata-search .context{margin-bottom:var(--app-pane-padding)}.eo-app-search .body .indexdata-search .context .context-select{display:flex;align-items:center;flex-flow:row wrap;padding-bottom:1px}.eo-app-search .body .indexdata-search .context .context-select .spacer{width:var(--app-pane-padding)}.eo-app-search .body .indexdata-search eo-object-form{border:1px solid rgba(var(--color-black-rgb),.1)}.eo-app-search .body .indexdata-search eo-object-form.dark{display:block;background-color:var(--color-primary-2)}.eo-app-search.rtl{left:0;right:0;animation:appSearchAppearRTL var(--app-default-transition-duration)}.eo-app-search.rtl .head .result,.eo-app-search.rtl .body .summary-panel{right:auto;left:var(--app-pane-padding)}.eo-app-search.rtl .body yvc-tabs{padding-right:0;padding-left:calc(var(--app-pane-padding) * 2 + var(--search-summary-width));padding-bottom:0;padding-top:0}.eo-app-search.expert .head .result{display:none}.eo-app-search.expert .head .search .search-box{max-width:100%}.eo-app-search.expert .head .search .search-box button.expert-mode{color:var(--color-accent)}.eo-app-search.expert .body{background:var(--color-primary-2);color:var(--color-white);display:flex;flex-flow:column}.eo-app-search.expert .body h2{flex:0 0 auto;padding:0;margin:var(--app-pane-padding) 0;font-size:var(--font-title);font-weight:var(--font-weight-light)}.eo-app-search.expert .body h2 span{padding:calc(var(--app-pane-padding) / 2) 0 calc(var(--app-pane-padding) / 2) var(--app-pane-padding);border-bottom:4px solid var(--color-accent)}.eo-app-search.expert .body .intro{flex:0 0 auto;padding:var(--app-pane-padding)}.eo-app-search.expert .body .empty{flex:0 0 auto;padding:0 var(--app-pane-padding)}.eo-app-search.expert .body .empty span{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px;background:var(--color-error);color:var(--color-white)}.eo-app-search.expert .body .fields h2{margin:calc(var(--app-pane-padding) / 2);flex:0 0 auto;padding:calc(var(--app-pane-padding) / 2);border-bottom:1px solid rgba(var(--color-white-rgb),.3)}.eo-app-search.expert .body .fields .item{padding:calc(var(--app-pane-padding) / 2);cursor:pointer;border-radius:2px;background:rgba(var(--color-white-rgb),.06);margin-bottom:4px;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-app-search.expert .body .fields .item:hover,.eo-app-search.expert .body .fields .item.selected{background:rgba(var(--color-white-rgb),.2)}.eo-app-search.expert .body .fields .item .label{font-weight:var(--font-weight-bold);display:flex;justify-content:space-between}.eo-app-search.expert .body .fields .item .label .type{font-size:var(--font-hint);opacity:.5}.eo-app-search.expert .body .fields .item .data{opacity:.75}.eo-app-search.expert .body .base-params{padding:calc(var(--app-pane-padding) / 2)}.eo-app-search.expert .body .base-params .items{display:flex;flex-flow:row wrap;padding:calc(var(--app-pane-padding) / 4)}.eo-app-search.expert .body .base-params .items .item{margin:calc(var(--app-pane-padding) / 4)}.eo-app-search.expert .body .system-types{flex:1 1 auto;display:flex;flex-flow:row;justify-content:flex-start;align-items:stretch;padding:calc(var(--app-pane-padding) / 2)}.eo-app-search.expert .body .system-types .column{flex:0 0 33%;box-sizing:border-box;display:flex;flex-flow:column}.eo-app-search.expert .body .system-types .column .items{padding:calc(var(--app-pane-padding) / 2);flex:1 1 auto;overflow-y:auto}.eo-app-search.expert .body .system-types .column .items::-webkit-scrollbar-thumb{background-color:rgba(var(--color-white-rgb),.1)}.eo-app-search .body .rest-box-container .rest-box .rest-item .checkbox,.eo-app-search .body .rest-box-container .rest-box .type .checkbox{width:20px;height:20px;cursor:pointer;border:1px solid var(--text-color-hint);border-radius:2px;margin:0 calc(var(--app-pane-padding) / 2)}.eo-app-search .body .rest-box-container .rest-box .rest-item .checkbox svg,.eo-app-search .body .rest-box-container .rest-box .type .checkbox svg{opacity:0}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover .checkbox:hover,.eo-app-search .body .rest-box-container .rest-box .type:not(.selected):hover .checkbox:hover{border-color:var(--text-color-caption)}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover .checkbox:hover svg,.eo-app-search .body .rest-box-container .rest-box .type:not(.selected):hover .checkbox:hover svg{fill:var(--text-color-body);opacity:.3}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected .checkbox,.eo-app-search .body .rest-box-container .rest-box .type.selected .checkbox{background:var(--color-primary-3);border-color:var(--color-primary-3)}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected .checkbox svg,.eo-app-search .body .rest-box-container .rest-box .type.selected .checkbox svg{fill:var(--color-white)!important;opacity:1}.eo-app-search .body .rest-box-container .rest-box .rest-item.saved .count,.eo-app-search .body .rest-box-container .rest-box .type.saved .count{font-weight:var(--font-weight-normal)}@keyframes appSearchAppear{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes appSearchAppearRTL{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { 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: "directive", type: RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: QueryScopeSelectComponent, selector: "eo-query-scope-select", inputs: ["selection"], outputs: ["select"] }, { kind: "component", type: i12.Tabs, selector: "yvc-tabs", inputs: ["tabs", "layoutSettingsID", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i12.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: DatetimeRangeComponent, selector: "eo-datetime-range", inputs: ["withTime", "pickerTitle", "operator"] }, { kind: "component", type: OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "component", type: ObjectFormComponent, selector: "eo-object-form", inputs: ["isInnerTableForm", "formOptions"], outputs: ["statusChanged", "onFormReady"] }, { kind: "component", type: i7.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { 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: "component", type: ContextSearchComponent, selector: "eo-context-search", inputs: ["ctx", "query", "idxSearch", "selected", "disabled"], outputs: ["setContext"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: LocaleDecimalPipe, name: "localeDecimal" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
17013
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: AppSearchComponent, selector: "eo-app-search", outputs: { onExecuteSearch: "onExecuteSearch" }, viewQueries: [{ propertyName: "tplSearch", first: true, predicate: ["tplSearch"], descendants: true, read: TemplateRef }, { propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "expertInput", first: true, predicate: ["xpinput"], descendants: true }, { propertyName: "indexdataForm", first: true, predicate: ["idxform"], descendants: true }, { propertyName: "contextForm", first: true, predicate: ["ctxform"], descendants: true }], ngImport: i0, template: "<!-- <eo-dialog [visible]=\"true\" [styleClass]=\"'eo-app-search-dialog'\" [align]=\"'start'\" [minWidth]=\"'80vw'\"\n [minHeight]=\"'100vh'\" (hide)=\"closeSearchMenu($event)\"> -->\n<!-- <yvc-dialog [options]=\"{lightDismiss: true}\" [template]=\"tplSearch\" (closed)=\"closeSearchMenu()\"></yvc-dialog> -->\n<ng-template #tplSearch>\n\n <div class=\"eo-app-search\" [ngClass]=\"{expert: query.expertMode}\" eoRtlAware=\"full\" *ngIf=\"query\">\n\n <div class=\"head\">\n\n <div class=\"search\">\n <form (submit)=\"executeSearch()\">\n <div class=\"title\" translate>eo.search</div>\n\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\n\n <div class=\"search-box\" [formGroup]=\"termForm\">\n\n <yvc-autocomplete *ngIf=\"!query.expertMode; else expertInput\" #searchInput formControlName=\"term\" [autocompleteValues]=\"autocompleteResults\"\n (suggestionSelect)=\"autocompleteSelect()\" (keydown.enter)=\"executeSearch()\" (paste)=\"autocompletePaste($event)\">\n </yvc-autocomplete>\n\n <ng-template #expertInput>\n <input autofocus=\"autofocus\" class=\"expert-search__input\" #xpinput type=\"text\"\n (ngModelChange)=\"expertTermChanged()\" [(ngModel)]=\"query.term\" [ngModelOptions]=\"{standalone: true}\">\n </ng-template>\n\n <button class=\"btn expert-mode\" type=\"button\" (click)=\"toggleExpertMode()\">\n <!--<span translate>eo.search.mode.expert</span>-->\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_expert-search.svg'\"\n [iconTitle]=\"('eo.search.mode.expert' | translate)\" *ngIf=\"!query?.expertMode; else close\"></eo-icon>\n <ng-template #close>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_expert-search.svg'\"\n [iconTitle]=\"('eo.search.mode.expert.close' | translate)\"></eo-icon>\n </ng-template>\n </button>\n\n <button type=\"button\" class=\"btn expert-mode expert-mode__reset\" [ngClass]=\"{active: query.term}\"\n (click)=\"resetExpertModeInput()\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"\n [iconTitle]=\"('eo.search.clear.search' | translate)\"></eo-icon>\n </button>\n\n <button class=\"btn btn-default\" type=\"submit\" [disabled]=\"queryState.isEmpty\"\n translate>eo.search.submit</button>\n </div>\n </form>\n </div>\n\n <div class=\"result\" *ngIf=\"!loading; else spinner\">{{queryState.totalCount | localeDecimal}}</div>\n <ng-template #spinner>\n <eo-loading-spinner class=\"search-aggregator__loader\" [size]=\"'medium'\" [mode]=\"'dark'\"></eo-loading-spinner>\n </ng-template>\n <eo-icon class=\"button white close\" [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"\n [iconTitle]=\"('eo.search.close' | translate)\" (click)=\"closeSearchMenu()\"></eo-icon>\n\n </div>\n\n <div class=\"body\" *ngIf=\"!query.expertMode; else expert\">\n\n <yvc-tabs (tabChange)=\"onTabChange($event)\" layoutSettingsID=\"eo.search.dialog.tabs\">\n\n <!-- object type select -->\n <ng-template [yvcTab]=\"{id: 'restrictType', label: 'eo.search.restrict.type' | translate}\">\n\n <div class=\"object-types rest-box-container\" [ngClass]=\"{idxenabled: query.types.length < 1}\"\n *ngIf=\"objectTypeGroups && !idxSearch\">\n <div class=\"group rest-box\" *ngFor=\"let group of objectTypeGroups; let i = index\">\n <div class=\"group-header\">\n <h3 *ngIf=\"group.label !== '0'\">{{group.label}}</h3>\n <h3 *ngIf=\"group.label === '0'\" translate>{{'eo.search.group.general'}}</h3>\n <div class=\"move-icons\">\n <eo-icon *ngIf=\"i !== 0\" class=\"move-left-first\" (click)=\"moveObjectTypeGroup(group.label, 'first')\" [iconSrc]=\"'assets/_default/svg/ic_arrow_last.svg'\"></eo-icon>\n <eo-icon *ngIf=\"i !== 0\" class=\"move-left-icon\" (click)=\"moveObjectTypeGroup(group.label, 'left')\" [iconSrc]=\"'assets/_default/svg/ic_arrow_left.svg'\"></eo-icon>\n <eo-icon *ngIf=\"i !== objectTypeGroups.length - 1\" class=\"move-right-icon\" (click)=\"moveObjectTypeGroup(group.label, 'right')\" [iconSrc]=\"'assets/_default/svg/ic_arrow_right.svg'\"></eo-icon>\n <eo-icon *ngIf=\"i !== objectTypeGroups.length - 1\" class=\"move-right-last\" (click)=\"moveObjectTypeGroup(group.label, 'last')\" [iconSrc]=\"'assets/_default/svg/ic_arrow_last.svg'\"></eo-icon>\n\n </div>\n </div>\n <div class=\"type\" *ngFor=\"let type of group.types\"\n [ngClass]=\"{context: type.isContextFolder, folder: type.isFolder, abstract: type.isAbstract, selected: isTypeActive(type)}\">\n\n <div class=\"checkbox\" (click)=\"toggleType(type)\">\n <svg fill=\"#ffffff\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />\n </svg>\n </div>\n <div class=\"item\" (click)=\"selectObjectType(type)\">\n <eo-icon [objectType]=\"type\"></eo-icon>\n <div class=\"label\">{{type.label}} {{type.isAbstract ? '('+ ('eo.search.type.abstract' | translate) +\n ')' : ''}}</div>\n <div class=\"count\">{{getAggregationCount(type) | localeDecimal}}</div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"indexdata-search\" *ngIf=\"idxSearch\">\n <h2>\n <eo-icon class=\"button\" [iconSrc]=\"'assets/_default/svg/ic_arrow_back.svg'\"\n (click)=\"exitIndexdataSearch()\"></eo-icon>\n <span translate [translateParams]=\"{type: idxSearch.type.label}\">eo.search.objecttype.form</span>\n </h2>\n\n <div class=\"context\" *ngIf=\"idxSearch.contextModels.length\">\n\n <div class=\"context-select\">\n <div translate>eo.search.objecttype.form.context</div>\n <div class=\"spacer\"></div>\n\n <eo-context-search *ngFor=\"let ctx of idxSearch.contextModels; index as i\" [ctx]=\"ctx\" [query]=\"query\"\n [selected]=\"currentContextFolderName === ctx.name\"\n [disabled]=\"(currentContextFolderName && currentContextFolderName !== ctx.name)\"\n [idxSearch]=\"idxSearch\" (setContext)=\"setContext($event)\">\n </eo-context-search>\n </div>\n\n <section class=\"context form\">\n <eo-object-form class=\"dark\" #ctxform\n *ngIf=\"idxSearch.contextFormOptions && idxSearch.contextFormOptions?.formModel?.elements?.length\"\n [formOptions]=\"idxSearch.contextFormOptions\" (statusChanged)=\"onIndexDataChanged($event)\">\n </eo-object-form>\n </section>\n </div>\n\n\n <section class=\"object-type form\" *ngIf=\"idxSearch.formOptions\">\n <eo-object-form #idxform [formOptions]=\"idxSearch.formOptions\"\n (statusChanged)=\"onIndexDataChanged($event)\" (onFormReady)=\"idxform.focusForm()\">\n </eo-object-form>\n </section>\n </div>\n </ng-template>\n\n <!-- created tab -->\n <ng-template [yvcTab]=\"{id: 'restrictCreated', label: 'eo.search.restrict.creation' | translate }\">\n <div class=\"created rest-box-container\" *ngIf=\"queryState.aggregations\">\n\n <div class=\"rest-box box-timespan\">\n <h3 translate>eo.search.agg.time.span</h3>\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.CREATED]\"\n (click)=\"toggleFilter(PARAMS.CREATED, OPERATOR.RANGE, agg.key, agg.selected)\"\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\n <div class=\"label\">{{agg.label}}</div>\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\n </div>\n </div>\n\n <div class=\"rest-box box-timespan-custom\">\n <h3 translate>eo.search.agg.time.span.custom</h3>\n <form #createdForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.agg.time.span' | translate\">\n <eo-datetime-range #createdField [(ngModel)]=\"filtersModel[PARAMS.CREATED].value\" name=\"range\"\n [operator]=\"filtersModel[PARAMS.CREATED].value ? filtersModel[PARAMS.CREATED].value.operator : OPERATOR.EQUAL\"\n [withTime]=\"createdField.searchOption && createdField.searchOption !== OPERATOR.EQUAL\"\n (ngModelChange)=\"setFilter(PARAMS.CREATED, OPERATOR.EQUAL, $event, createdForm)\">\n </eo-datetime-range>\n </eo-form-input>\n </form>\n </div>\n\n <div class=\"rest-box box-creator\">\n <h3 translate>eo.search.agg.creator</h3>\n <form #creatorForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.agg.createdby' | translate\">\n <eo-organization [multiselect]=\"true\" [(ngModel)]=\"filtersModel[PARAMS.CREATOR].value\" name=\"creator\"\n (onValueResolved)=\"resolveLabel(filtersModel[PARAMS.CREATOR], $event)\" [situation]=\"'SEARCH'\"\n (ngModelChange)=\"setFilter(PARAMS.CREATOR, OPERATOR.IN, $event, creatorForm)\"></eo-organization>\n </eo-form-input>\n </form>\n </div>\n\n </div>\n </ng-template>\n\n <ng-template [yvcTab]=\"{id: 'restrictModification', label: 'eo.search.restrict.modification' | translate}\">\n <div class=\"modified rest-box-container\" *ngIf=\"queryState.aggregations\">\n\n <div class=\"rest-box box-timespan\">\n <h3 translate>eo.search.agg.time.span</h3>\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.MODIFIED]\"\n (click)=\"toggleFilter(PARAMS.MODIFIED, OPERATOR.RANGE, agg.key, agg.selected)\"\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\n <div class=\"label\">{{agg.label}}</div>\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\n </div>\n </div>\n\n <div class=\"rest-box box-timespan-custom\">\n <h3 translate>eo.search.agg.time.span.custom</h3>\n <form #modifiedForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.agg.time.span' | translate\">\n <eo-datetime-range #modifiedField [(ngModel)]=\"filtersModel[PARAMS.MODIFIED].value\" name=\"range\"\n [operator]=\"filtersModel[PARAMS.MODIFIED].value ? filtersModel[PARAMS.MODIFIED].value.operator : OPERATOR.EQUAL\"\n [withTime]=\"modifiedField.searchOption && modifiedField.searchOption !== OPERATOR.EQUAL\"\n (ngModelChange)=\"setFilter(PARAMS.MODIFIED, OPERATOR.EQUAL, $event, modifiedForm)\">\n </eo-datetime-range>\n </eo-form-input>\n </form>\n </div>\n\n <div class=\"rest-box box-modifier\">\n <h3 translate>eo.search.agg.modifier</h3>\n <form #modifierForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.agg.modifiedby' | translate\">\n <eo-organization [multiselect]=\"true\" [(ngModel)]=\"filtersModel[PARAMS.MODIFIER].value\"\n name=\"modifier\" (onValueResolved)=\"resolveLabel(filtersModel[PARAMS.MODIFIER], $event)\"\n [situation]=\"'SEARCH'\"\n (ngModelChange)=\"setFilter(PARAMS.MODIFIER, OPERATOR.IN, $event, modifierForm)\"></eo-organization>\n </eo-form-input>\n </form>\n </div>\n </div>\n </ng-template>\n\n <ng-template [yvcTab]=\"{id: 'restrictFile', label: 'eo.search.restrict.file' | translate}\">\n <div class=\"file rest-box-container\" *ngIf=\"queryState.aggregations\">\n\n <div class=\"rest-box box-mimetype-group\">\n <h3 translate>eo.search.restrict.mimetypegroup</h3>\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.MIMETYPEGROUP]\"\n (click)=\"setFilter(PARAMS.MIMETYPEGROUP, OPERATOR.IN, resolveSelection(aggregationsModel[PARAMS.MIMETYPEGROUP], agg.key, agg.selected))\"\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\n <div class=\"checkbox\">\n <svg fill=\"#ffffff\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />\n </svg>\n </div>\n <div class=\"label\">{{agg.label}}</div>\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\n </div>\n </div>\n\n <div class=\"rest-box box-filesize\">\n <h3 translate>eo.search.restrict.filesize</h3>\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.FILESIZE]\"\n (click)=\"toggleFilter(PARAMS.FILESIZE, OPERATOR.RANGE, agg.key, agg.selected)\"\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\n <div class=\"label\">{{agg.label}}</div>\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\n </div>\n </div>\n\n <div class=\"rest-box box-filename\">\n <h3 translate>eo.search.restrict.filename</h3>\n <form #filenameForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.restrict.filename' | translate\">\n <eo-string [autocomplete]=\"true\" [qname]=\"'filename'\"\n [(ngModel)]=\"filtersModel[PARAMS.FILENAME].value\" name=\"filename\"\n (ngModelChange)=\"setFilter(PARAMS.FILENAME, OPERATOR.EQUAL, $event, filenameForm)\"></eo-string>\n </eo-form-input>\n </form>\n </div>\n </div>\n </ng-template>\n </yvc-tabs>\n\n <!-- summary of the current search filters -->\n <div class=\"summary-panel\">\n\n <div class=\"headline stored-query\" *ngIf=\"isStoredQuery; else reghead\">\n <div class=\"spaceInbetwen\">\n <div class=\"savedSearchIcon\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_saved_search.svg'\"></eo-icon>\n </div>\n <div class=\"store\">\n <div class=\"pre\" translate>eo.search.aside.summary.storedquery</div>\n <div class=\"stored-query-name\">{{storedQuery.name}}</div>\n </div>\n </div>\n </div>\n\n <ng-template #reghead>\n <div class=\"headline\" translate>eo.search.aside.summary</div>\n </ng-template>\n\n <section class=\"query-types\">\n <div class=\"section section-searchterm\" *ngIf=\"query.term\">\n <div class=\"title\" translate>eo.search.aside.summary.term</div>\n <div class=\"filter\">\n <div class=\"label\">{{query.term}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeTerm()\"></eo-icon>\n </div>\n </div>\n\n <div class=\"section section-contexttype\" *ngIf=\"query.contextFolderTypes.length\">\n <div class=\"title\" translate>eo.search.aside.summary.contextfoldertypes</div>\n <div class=\"filter\" *ngFor=\"let type of query.contextFolderTypes\">\n <div class=\"label\">{{type.label}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeContextType()\"></eo-icon>\n </div>\n </div>\n\n <div class=\"section section-objecttype\" *ngIf=\"query.types.length\">\n <div class=\"title\" translate>eo.search.aside.summary.types</div>\n <div class=\"filter\" *ngFor=\"let type of query.types\">\n <div class=\"label\">{{type.label}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeType(type)\"></eo-icon>\n </div>\n </div>\n\n <ng-template #filterTemplate let-filter let-translate>\n <ng-container *ngIf=\"filter.innerValue.length\">\n <div class=\"filter\" *ngFor=\"let val of filter.innerValue; index as i\">\n <div class=\"label\">{{filter.label[i] | async}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"resetFilter(filter, val)\"></eo-icon>\n </div>\n </ng-container>\n </ng-template>\n\n <div class=\"section section-creation\"\n *ngIf=\"filtersModel[PARAMS.CREATED].innerValue?.length || filtersModel[PARAMS.CREATOR].innerValue?.length\">\n <div class=\"title\" translate>eo.search.restrict.creation</div>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.CREATED] }\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.CREATOR] }\"></ng-template>\n </div>\n\n <div class=\"section section-modification\"\n *ngIf=\"filtersModel[PARAMS.MODIFIED].innerValue?.length || filtersModel[PARAMS.MODIFIER].innerValue?.length\">\n <div class=\"title\" translate>eo.search.restrict.modification</div>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MODIFIED] }\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MODIFIER] }\"></ng-template>\n </div>\n\n <div class=\"section section-mimetypegroup\"\n *ngIf=\"filtersModel[PARAMS.MIMETYPEGROUP].innerValue.length || filtersModel[PARAMS.FILESIZE].innerValue.length || filtersModel[PARAMS.FILENAME].innerValue.length\">\n <div class=\"title\" translate>eo.search.restrict.file</div>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MIMETYPEGROUP] }\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.FILESIZE] }\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.FILENAME] }\"></ng-template>\n </div>\n </section>\n\n <div class=\"actions\" *ngIf=\"query.term || query.filters.length || query.types.length; else emptySearch\">\n\n <ng-container *ngIf=\"isStoredQuery; else regactions\">\n <button class=\"secondary btn-reset\" (click)=\"resetQuery()\" translate>eo.search.storedquery.close</button>\n <button class=\"primary grey btn-update\" (click)=\"updateStoredQuery()\"\n *ngIf=\"capabilities.storedqueries && isOwnQuery\" translate>eo.search.storedquery.update</button>\n <button class=\"primary grey btn-save\" (click)=\"saveQuery()\"\n *ngIf=\"capabilities.storedqueries && !isOwnQuery\" translate>eo.search.save</button>\n <button class=\"primary btn-submit\" (click)=\"executeSearch()\" [disabled]=\"queryState.isEmpty\"\n translate>eo.search.submit</button>\n </ng-container>\n\n <ng-template #regactions>\n <button class=\"primary grey btn-reset\" (click)=\"resetQuery()\" translate>eo.search.reset</button>\n <button class=\"primary grey btn-save\" (click)=\"saveQuery()\"\n *ngIf=\"capabilities.storedqueries && !isOwnQuery\" translate>eo.search.save</button>\n <button class=\"primary btn-submit\" (click)=\"executeSearch()\" [disabled]=\"queryState.isEmpty\"\n translate>eo.search.submit</button>\n </ng-template>\n\n\n </div>\n\n <ng-template #emptySearch>\n <div class=\"empty-search\" translate>eo.search.summary.empty</div>\n </ng-template>\n\n </div>\n\n\n </div>\n\n <!-- expert mode body panel containing explanations -->\n <ng-template #expert>\n <div class=\"body expert\">\n\n <div class=\"empty\" *ngIf=\"expertModeQueryEmpty\"><span translate>eo.search.mode.expert.result.empty</span></div>\n\n <!--\n <h2><span translate>eo.search.mode.expert</span></h2>\n <div class=\"intro\" translate>eo.search.mode.expert.intro</div>\n\n <div class=\"base-params fields\">\n <h2 translate>eo.search.mode.expert.support.baseparams</h2>\n <div class=\"items\">\n <div class=\"item\" *ngFor=\"let el of expertModeSupport.baseParams\" (click)=\"xpAddToTerm(el.data)\">\n <div class=\"label\"><span>{{el.label}}</span></div>\n <div class=\"data\">{{el.data}}</div>\n </div>\n </div>\n </div>\n\n <div class=\"system-types fields\">\n\n <div class=\"column column-group\">\n <h2 translate>eo.search.mode.expert.support.group</h2>\n <div class=\"items\">\n <div class=\"item\" *ngFor=\"let group of typeGroupTree\"\n [ngClass]=\"{selected: expertModeSupport.selectedGroup && group.id === expertModeSupport.selectedGroup.id}\"\n (click)=\"xpSelectGroup(group)\">\n <div *ngIf=\"group.label !== '0'\">{{group.label}}</div>\n <div *ngIf=\"group.label === '0'\">{{'eo.search.group.general' | translate}}</div>\n </div>\n </div>\n </div>\n\n <div class=\"column column-type\" *ngIf=\"expertModeSupport.selectedGroup\">\n <h2 translate>eo.search.mode.expert.support.type</h2>\n <div class=\"items\">\n <div class=\"item\" *ngFor=\"let type of expertModeSupport.selectedGroup.tree\"\n [ngClass]=\"{selected: expertModeSupport.selectedType && type.id === expertModeSupport.selectedType.id}\"\n (click)=\"xpSelectType(type)\">\n <div>{{type.label}}</div>\n </div>\n </div>\n </div>\n\n <div class=\"column section-field\" *ngIf=\"expertModeSupport.selectedType\">\n <h2 translate>eo.search.mode.expert.support.field</h2>\n <div class=\"items\">\n <div class=\"item\" *ngFor=\"let el of expertModeSupport.selectedType.children\" (click)=\"xpAddToTerm(el.data)\">\n <div class=\"label\"><span>{{el.label}}</span><span class=\"type\">{{el.type}}</span></div>\n <div class=\"data\">{{el.data}}</div>\n </div>\n </div>\n </div>\n\n </div>\n\n -->\n </div>\n </ng-template>\n </div>\n <!-- </eo-dialog> -->\n</ng-template>\n", styles: ["eo-app-search dialog{height:100vh;margin:0!important;max-height:100vh;max-block-size:100%!important;min-width:500px;width:80%}@media screen and (max-width: 500px){.eo-app-search-dialog{width:100%!important;min-width:inherit}}.eo-app-search-dialog .eo-dialog-content{overflow:inherit;max-height:100%}.eo-app-search-dialog .eo-dialog-header{display:none}.eo-app-search.rtl .head .close{right:auto;left:var(--app-pane-padding)}.eo-app-search.rtl .body .indexdata-search h2 eo-icon{transform:rotate(180deg)}.eo-app-search{--search-min-width: 500px;--search-box-max-width: 600px;--search-summary-width: 350px;width:80vw;height:100vh;background:var(--panel-background-grey);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}.eo-app-search .head{background:var(--color-primary-2);flex:0 0 auto;color:var(--color-white);position:relative;display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) calc(var(--app-pane-padding) / 2) 0 calc(var(--app-pane-padding) / 2)}.eo-app-search .head .search{flex:1 1 auto;justify-content:space-between;margin:0 calc(var(--app-pane-padding) / 2);z-index:2;min-width:fill-available;min-width:-webkit-fill-available;min-width:-moz-available}.eo-app-search .head .search .title{font-size:var(--font-display);font-weight:var(--font-weight-light);min-height:1em;line-height:1em}@media screen and (max-width: 480px){.eo-app-search .head .search .title{font-size:var(--font-title)}}.eo-app-search .head .search .query-scope{margin:calc(var(--app-pane-padding) * 2) 0 0 0;min-width:var(--search-min-width);max-width:var(--search-box-max-width)}.eo-app-search .head .search .search-box{margin-bottom:var(--app-pane-padding);display:flex;flex-flow:row nowrap;align-items:stretch;background:var(--color-white);max-width:var(--search-box-max-width);box-shadow:0 2px 2px rgba(var(--color-black-rgb),.2)}@media screen and (max-width: 480px){.eo-app-search .head .search .search-box{margin-top:var(--app-pane-padding)}}.eo-app-search .head .search .search-box yvc-autocomplete{flex:1 1 auto;background:transparent;outline:0;border:0}.eo-app-search .head .search .search-box yvc-autocomplete span.ui-autocomplete{width:100%}.eo-app-search .head .search .search-box input{width:100%;border:0;box-sizing:border-box;padding:calc(var(--app-pane-padding) / 2);font-size:var(--font-title)}.eo-app-search .head .search .search-box input::-ms-clear{display:none}.eo-app-search .head .search .search-box button[type=submit]{background:var(--color-accent);color:var(--color-white);border:0;padding:0 var(--app-pane-padding);font-size:var(--font-subhead)}.eo-app-search .head .search .search-box button.expert-mode{padding:0 calc(var(--app-pane-padding) / 2);background:transparent;border:0;color:var(--text-color-hint);display:flex;align-items:center}.eo-app-search .head .search .search-box button.expert-mode:focus{color:var(--color-accent)}.eo-app-search .head .search .search-box button.expert-mode__reset{opacity:0;width:0;padding:0;transition:all .2s ease-in-out}.eo-app-search .head .search .search-box button.expert-mode__reset.active{opacity:1;width:40px;padding:0 8px}.eo-app-search .head .search .search-box button.expert-mode span{display:none;padding:calc(var(--app-pane-padding) / 4);white-space:nowrap;animation:eoFadeIn var(--app-default-transition-duration)}.eo-app-search .head .search .search-box button.expert-mode:hover{color:var(--color-accent)}.eo-app-search .head .search .search-box button.expert-mode:hover span{display:block}.eo-app-search .head .result{position:absolute;right:var(--app-pane-padding);top:calc(var(--app-pane-padding) * 2.5);z-index:1;font-size:7em;line-height:1em;opacity:.1}@media screen and (max-width: 900px){.eo-app-search .head .result{font-size:3em;right:calc(var(--app-pane-padding) * 3);top:var(--app-pane-padding)}}.eo-app-search .head .search-aggregator__loader{z-index:11;position:absolute;right:13%;top:30%;-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}@media screen and (max-width: 900px){.eo-app-search .head .search-aggregator__loader{top:5%}}.eo-app-search .head .close{position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding);z-index:2}.eo-app-search .body{background:rgba(var(--color-white-rgb),.2);flex:1 1 auto;position:relative}@media screen and (max-width: 1000px){.eo-app-search .body .summary-panel{bottom:0;right:0!important;left:0!important;top:auto!important;width:auto!important;display:flex;flex-flow:row nowrap}.eo-app-search .body .summary-panel .headline:not(.stored-query),.eo-app-search .body .summary-panel .section{display:none}.eo-app-search .body .summary-panel .headline.stored-query{margin-bottom:0;display:flex;align-items:center;padding:0 var(--app-pane-padding)}.eo-app-search .body .summary-panel .headline.stored-query .pre{display:none}.eo-app-search .body .summary-panel .headline.stored-query .stored-query-name{font-size:var(--font-subhead)!important}.eo-app-search .body .summary-panel .actions{flex:1 1 auto}.eo-app-search .body yvc-tabs>section[role=tabpanel]{padding-right:0!important;padding-left:0!important}}.eo-app-search .body>yvc-tabs{position:absolute;inset:0}.eo-app-search .body>yvc-tabs>header{--text-color-body: #fff;--text-color-hint: rgba(255,255,255,.7);background:var(--color-primary-2)}.eo-app-search .body>yvc-tabs>section[role=tabpanel]{padding:calc(var(--app-pane-padding) - var(--app-pane-padding) / 2) calc(var(--app-pane-padding) * 2 + var(--search-summary-width)) 0 calc(var(--app-pane-padding) - 2px)}.eo-app-search .body .summary-panel{background:rgba(var(--color-black-rgb),.06);width:var(--search-summary-width);position:absolute;top:calc(var(--app-pane-padding) + var(--eo-tab-nav-height));right:var(--app-pane-padding);box-sizing:border-box}.eo-app-search .body .summary-panel .query-types{overflow:auto;max-height:calc(100vh - 290px)}.eo-app-search .body .summary-panel .headline{line-height:1em;font-size:var(--font-subhead);font-weight:var(--font-weight-light);color:var(--text-color-caption);margin-bottom:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 2)}.eo-app-search .body .summary-panel .headline .spaceInbetwen{display:flex;align-items:center}.eo-app-search .body .summary-panel .headline .spaceInbetwen .savedSearchIcon{display:block;padding:calc(var(--app-pane-padding) / 4) 0}.eo-app-search .body .summary-panel .headline .spaceInbetwen .savedSearchIcon eo-icon{--eoSvgIcon-size: 44px}.eo-app-search .body .summary-panel .headline .spaceInbetwen .store{display:block;min-height:0;min-width:0;padding-left:12px}.eo-app-search .body .summary-panel .headline .spaceInbetwen .store .pre{padding:calc(var(--app-pane-padding) / 2) 0}.eo-app-search .body .summary-panel .headline .spaceInbetwen .store .stored-query-name{font-size:var(--font-title);padding:calc(var(--app-pane-padding) / 2) 0;line-height:1.2em}.eo-app-search .body .summary-panel .headline.stored-query{background:var(--color-primary-3);color:var(--color-white);font-size:var(--font-body)}.eo-app-search .body .summary-panel .empty-search{padding:var(--app-pane-padding) calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-app-search .body .summary-panel .section{padding:calc(var(--app-pane-padding) / 2);max-height:calc(100vh - 280px);overflow-y:auto}.eo-app-search .body .summary-panel .section .title{border-bottom:1px solid rgba(var(--color-black-rgb),.1);padding-bottom:calc(var(--app-pane-padding) / 4);color:var(--text-color-caption)}.eo-app-search .body .summary-panel .filter{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;background:rgba(var(--color-white-rgb),.6);margin-top:4px;align-items:center}.eo-app-search .body .summary-panel .filter .label{display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;padding:0 0 0 calc(var(--app-pane-padding) / 4)}.eo-app-search .body .summary-panel .filter eo-icon{flex:0 0 auto;padding:calc(var(--app-pane-padding) / 4);box-sizing:border-box;cursor:pointer;color:var(--text-color-hint)}.eo-app-search .body .summary-panel .filter eo-icon:hover{color:var(--text-color-caption)}.eo-app-search .body .summary-panel .actions{display:flex;justify-content:flex-end;padding:calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2 - 2px)}.eo-app-search .body .summary-panel .actions button{margin:0 2px;line-height:1em;font-size:var(--font-hint)}.eo-app-search .body .ui-tabview .ui-tabview-panel{padding:calc(var(--app-pane-padding) / 2)}.eo-app-search .body .ui-tabview .ui-tabview-panel h2{margin:0 0 calc(var(--app-pane-padding) * 1.5) 0;padding:0;font-weight:var(--font-weight-light);font-size:var(--font-title);color:var(--text-color-caption)}.eo-app-search .body .rest-box-container{display:flex;flex-flow:row wrap;align-items:stretch}.eo-app-search .body .rest-box-container .rest-box{margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 2);background:var(--color-white);flex:1 1 auto}.eo-app-search .body .rest-box-container .rest-box h3{margin:0 0 var(--app-pane-padding) 0;padding:0;font-size:var(--font-caption);font-weight:var(--font-weight-normal);color:var(--text-color-caption)}.eo-app-search .body .rest-box-container .rest-box .rest-item{display:flex;flex:1 1 auto;flex-flow:row nowrap;align-items:center;padding:calc(var(--app-pane-padding) / 2);margin:0 calc(var(--app-pane-padding) / 4);color:var(--text-color-body)}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected{background:var(--color-primary-3);color:var(--color-white)}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover{background:var(--list-item-hover-background)}.eo-app-search .body .rest-box-container .rest-box .label{flex:1 1 auto;padding:0 calc(var(--app-pane-padding) / 2)}.eo-app-search .body .rest-box-container .rest-box .count{font-size:var(--font-caption);min-width:30px;text-align:right;font-weight:var(--font-weight-bold)}.eo-app-search .body .object-types .group .group-header .move-icons{display:none}.eo-app-search .body .object-types .group .type{display:flex;flex-flow:row nowrap;align-items:center;padding:1px 0}.eo-app-search .body .object-types .group .type.context{font-weight:var(--font-weight-bold)}.eo-app-search .body .object-types .group .type.folder .item eo-icon{background:rgba(var(--color-black-rgb),.15)}.eo-app-search .body .object-types .group .type.folder .item:hover eo-icon{background:rgba(var(--color-white-rgb),.3)}.eo-app-search .body .object-types .group .type.abstract .item{color:var(--text-color-caption)}.eo-app-search .body .object-types .group .type.abstract .item:hover{background:var(--color-primary-3);color:var(--panel-background)}.eo-app-search .body .object-types .group .type .item{display:flex;flex:1 1 auto;border-radius:2px;flex-flow:row nowrap;align-items:center;padding:calc(var(--app-pane-padding) / 2);margin:0 calc(var(--app-pane-padding) / 4);cursor:default;color:var(--text-color-body)}.eo-app-search .body .object-types .group .type .item eo-icon{color:var(--text-color-caption);width:16px;height:16px;box-sizing:content-box;padding:2px;border-radius:2px;transition:none;-webkit-transition:none;-moz-transition:none;-o-transition:none}.eo-app-search .body .object-types .group:hover .group-header{display:flex;justify-content:space-between}.eo-app-search .body .object-types .group:hover .group-header .move-icons{display:flex}.eo-app-search .body .object-types .group:hover .group-header .move-left-icon,.eo-app-search .body .object-types .group:hover .group-header .move-right-icon,.eo-app-search .body .object-types .group:hover .group-header .move-left-first,.eo-app-search .body .object-types .group:hover .group-header .move-right-last{cursor:pointer;color:var(--text-color-caption)}.eo-app-search .body .object-types .group:hover .group-header .move-left-first{transform:rotate(180deg)}.eo-app-search .body .object-types .type .item{cursor:pointer}.eo-app-search .body .object-types .type .item:hover{background:var(--color-primary-3);color:var(--panel-background)}.eo-app-search .body .object-types .type .item:hover eo-icon{color:var(--panel-background)}.eo-app-search .body .indexdata-search{padding:calc(var(--app-pane-padding) / 2) 0 0 calc(var(--app-pane-padding) / 2)}.eo-app-search .body .indexdata-search h2{display:flex;flex-flow:row;align-items:center}.eo-app-search .body .indexdata-search h2 eo-icon{margin:0 calc(var(--app-pane-padding) / 2)}.eo-app-search .body .indexdata-search h2 span{padding:0 calc(var(--app-pane-padding) / 4)}.eo-app-search .body .indexdata-search .context{margin-bottom:var(--app-pane-padding)}.eo-app-search .body .indexdata-search .context .context-select{display:flex;align-items:center;flex-flow:row wrap;padding-bottom:1px}.eo-app-search .body .indexdata-search .context .context-select .spacer{width:var(--app-pane-padding)}.eo-app-search .body .indexdata-search eo-object-form{border:1px solid rgba(var(--color-black-rgb),.1)}.eo-app-search .body .indexdata-search eo-object-form.dark{display:block;background-color:var(--color-primary-2)}.eo-app-search.rtl{left:0;right:0;animation:appSearchAppearRTL var(--app-default-transition-duration)}.eo-app-search.rtl .head .result,.eo-app-search.rtl .body .summary-panel{right:auto;left:var(--app-pane-padding)}.eo-app-search.rtl .body yvc-tabs{padding-right:0;padding-left:calc(var(--app-pane-padding) * 2 + var(--search-summary-width));padding-bottom:0;padding-top:0}.eo-app-search.expert .head .result{display:none}.eo-app-search.expert .head .search .search-box{max-width:100%}.eo-app-search.expert .head .search .search-box button.expert-mode{color:var(--color-accent)}.eo-app-search.expert .body{background:var(--color-primary-2);color:var(--color-white);display:flex;flex-flow:column}.eo-app-search.expert .body h2{flex:0 0 auto;padding:0;margin:var(--app-pane-padding) 0;font-size:var(--font-title);font-weight:var(--font-weight-light)}.eo-app-search.expert .body h2 span{padding:calc(var(--app-pane-padding) / 2) 0 calc(var(--app-pane-padding) / 2) var(--app-pane-padding);border-bottom:4px solid var(--color-accent)}.eo-app-search.expert .body .intro{flex:0 0 auto;padding:var(--app-pane-padding)}.eo-app-search.expert .body .empty{flex:0 0 auto;padding:0 var(--app-pane-padding)}.eo-app-search.expert .body .empty span{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px;background:var(--color-error);color:var(--color-white)}.eo-app-search.expert .body .fields h2{margin:calc(var(--app-pane-padding) / 2);flex:0 0 auto;padding:calc(var(--app-pane-padding) / 2);border-bottom:1px solid rgba(var(--color-white-rgb),.3)}.eo-app-search.expert .body .fields .item{padding:calc(var(--app-pane-padding) / 2);cursor:pointer;border-radius:2px;background:rgba(var(--color-white-rgb),.06);margin-bottom:4px;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-app-search.expert .body .fields .item:hover,.eo-app-search.expert .body .fields .item.selected{background:rgba(var(--color-white-rgb),.2)}.eo-app-search.expert .body .fields .item .label{font-weight:var(--font-weight-bold);display:flex;justify-content:space-between}.eo-app-search.expert .body .fields .item .label .type{font-size:var(--font-hint);opacity:.5}.eo-app-search.expert .body .fields .item .data{opacity:.75}.eo-app-search.expert .body .base-params{padding:calc(var(--app-pane-padding) / 2)}.eo-app-search.expert .body .base-params .items{display:flex;flex-flow:row wrap;padding:calc(var(--app-pane-padding) / 4)}.eo-app-search.expert .body .base-params .items .item{margin:calc(var(--app-pane-padding) / 4)}.eo-app-search.expert .body .system-types{flex:1 1 auto;display:flex;flex-flow:row;justify-content:flex-start;align-items:stretch;padding:calc(var(--app-pane-padding) / 2)}.eo-app-search.expert .body .system-types .column{flex:0 0 33%;box-sizing:border-box;display:flex;flex-flow:column}.eo-app-search.expert .body .system-types .column .items{padding:calc(var(--app-pane-padding) / 2);flex:1 1 auto;overflow-y:auto}.eo-app-search.expert .body .system-types .column .items::-webkit-scrollbar-thumb{background-color:rgba(var(--color-white-rgb),.1)}.eo-app-search .body .rest-box-container .rest-box .rest-item .checkbox,.eo-app-search .body .rest-box-container .rest-box .type .checkbox{width:20px;height:20px;cursor:pointer;border:1px solid var(--text-color-hint);border-radius:2px;margin:0 calc(var(--app-pane-padding) / 2)}.eo-app-search .body .rest-box-container .rest-box .rest-item .checkbox svg,.eo-app-search .body .rest-box-container .rest-box .type .checkbox svg{opacity:0}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover .checkbox:hover,.eo-app-search .body .rest-box-container .rest-box .type:not(.selected):hover .checkbox:hover{border-color:var(--text-color-caption)}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover .checkbox:hover svg,.eo-app-search .body .rest-box-container .rest-box .type:not(.selected):hover .checkbox:hover svg{fill:var(--text-color-body);opacity:.3}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected .checkbox,.eo-app-search .body .rest-box-container .rest-box .type.selected .checkbox{background:var(--color-primary-3);border-color:var(--color-primary-3)}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected .checkbox svg,.eo-app-search .body .rest-box-container .rest-box .type.selected .checkbox svg{fill:var(--color-white)!important;opacity:1}.eo-app-search .body .rest-box-container .rest-box .rest-item .count,.eo-app-search .body .rest-box-container .rest-box .type .count{font-weight:var(--font-weight-normal)}@keyframes appSearchAppear{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes appSearchAppearRTL{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { 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: "directive", type: RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: QueryScopeSelectComponent, selector: "eo-query-scope-select", inputs: ["selection"], outputs: ["select"] }, { kind: "component", type: i12.Tabs, selector: "yvc-tabs", inputs: ["tabs", "layoutSettingsID", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i12.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: DatetimeRangeComponent, selector: "eo-datetime-range", inputs: ["withTime", "pickerTitle", "operator"] }, { kind: "component", type: OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "component", type: ObjectFormComponent, selector: "eo-object-form", inputs: ["isInnerTableForm", "formOptions"], outputs: ["statusChanged", "onFormReady"] }, { kind: "component", type: i10.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { 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: "component", type: ContextSearchComponent, selector: "eo-context-search", inputs: ["ctx", "query", "idxSearch", "selected", "disabled"], outputs: ["setContext"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: LocaleDecimalPipe, name: "localeDecimal" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
16831
17014
|
};
|
|
16832
17015
|
AppSearchComponent = __decorate([
|
|
16833
17016
|
UntilDestroy()
|
|
16834
17017
|
], AppSearchComponent);
|
|
16835
17018
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AppSearchComponent, decorators: [{
|
|
16836
17019
|
type: Component,
|
|
16837
|
-
args: [{ selector: 'eo-app-search', encapsulation: ViewEncapsulation.None, template: "<!-- <eo-dialog [visible]=\"true\" [styleClass]=\"'eo-app-search-dialog'\" [align]=\"'start'\" [minWidth]=\"'80vw'\"\n [minHeight]=\"'100vh'\" (hide)=\"closeSearchMenu($event)\"> -->\n<!-- <yvc-dialog [options]=\"{lightDismiss: true}\" [template]=\"tplSearch\" (closed)=\"closeSearchMenu()\"></yvc-dialog> -->\n<ng-template #tplSearch>\n\n <div class=\"eo-app-search\" [ngClass]=\"{expert: query.expertMode}\" eoRtlAware=\"full\" *ngIf=\"query\">\n\n <div class=\"head\">\n\n <div class=\"search\">\n <form (submit)=\"executeSearch()\">\n <div class=\"title\" translate>eo.search</div>\n\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\n\n <div class=\"search-box\" [formGroup]=\"termForm\">\n\n <yvc-autocomplete *ngIf=\"!query.expertMode; else expertInput\" #searchInput formControlName=\"term\" [autocompleteValues]=\"autocompleteResults\"\n (suggestionSelect)=\"autocompleteSelect()\" (keydown.enter)=\"executeSearch()\" (paste)=\"autocompletePaste($event)\">\n </yvc-autocomplete>\n\n <ng-template #expertInput>\n <input autofocus=\"autofocus\" class=\"expert-search__input\" #xpinput type=\"text\"\n (ngModelChange)=\"expertTermChanged()\" [(ngModel)]=\"query.term\" [ngModelOptions]=\"{standalone: true}\">\n </ng-template>\n\n <button class=\"btn expert-mode\" type=\"button\" (click)=\"toggleExpertMode()\">\n <!--<span translate>eo.search.mode.expert</span>-->\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_expert-search.svg'\"\n [iconTitle]=\"('eo.search.mode.expert' | translate)\" *ngIf=\"!query?.expertMode; else close\"></eo-icon>\n <ng-template #close>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_expert-search.svg'\"\n [iconTitle]=\"('eo.search.mode.expert.close' | translate)\"></eo-icon>\n </ng-template>\n </button>\n\n <button type=\"button\" class=\"btn expert-mode expert-mode__reset\" [ngClass]=\"{active: query.term}\"\n (click)=\"resetExpertModeInput()\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"\n [iconTitle]=\"('eo.search.clear.search' | translate)\"></eo-icon>\n </button>\n\n <button class=\"btn btn-default\" type=\"submit\" [disabled]=\"queryState.isEmpty\"\n translate>eo.search.submit</button>\n </div>\n </form>\n </div>\n\n <div class=\"result\" *ngIf=\"!loading; else spinner\">{{queryState.totalCount | localeDecimal}}</div>\n <ng-template #spinner>\n <eo-loading-spinner class=\"search-aggregator__loader\" [size]=\"'medium'\" [mode]=\"'dark'\"></eo-loading-spinner>\n </ng-template>\n <eo-icon class=\"button white close\" [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"\n [iconTitle]=\"('eo.search.close' | translate)\" (click)=\"closeSearchMenu()\"></eo-icon>\n\n </div>\n\n <div class=\"body\" *ngIf=\"!query.expertMode; else expert\">\n\n <yvc-tabs (tabChange)=\"onTabChange($event)\" layoutSettingsID=\"eo.search.dialog.tabs\">\n\n <!-- object type select -->\n <ng-template [yvcTab]=\"{id: 'restrictType', label: 'eo.search.restrict.type' | translate}\">\n\n <div class=\"object-types rest-box-container\" [ngClass]=\"{idxenabled: query.types.length < 1}\"\n *ngIf=\"objectTypeGroups && !idxSearch\">\n <div class=\"group rest-box\" *ngFor=\"let group of objectTypeGroups; let i = index\">\n <div class=\"group-header\">\n <h3 *ngIf=\"group.label !== '0'\">{{group.label}}</h3>\n <h3 *ngIf=\"group.label === '0'\" translate>{{'eo.search.group.general'}}</h3>\n <div class=\"move-icons\">\n <eo-icon *ngIf=\"i !== 0\" class=\"move-left-first\" (click)=\"moveObjectTypeGroup(group.label, 'first')\" [iconSrc]=\"'assets/_default/svg/ic_arrow_last.svg'\"></eo-icon>\n <eo-icon *ngIf=\"i !== 0\" class=\"move-left-icon\" (click)=\"moveObjectTypeGroup(group.label, 'left')\" [iconSrc]=\"'assets/_default/svg/ic_arrow_left.svg'\"></eo-icon>\n <eo-icon *ngIf=\"i !== objectTypeGroups.length - 1\" class=\"move-right-icon\" (click)=\"moveObjectTypeGroup(group.label, 'right')\" [iconSrc]=\"'assets/_default/svg/ic_arrow_right.svg'\"></eo-icon>\n <eo-icon *ngIf=\"i !== objectTypeGroups.length - 1\" class=\"move-right-last\" (click)=\"moveObjectTypeGroup(group.label, 'last')\" [iconSrc]=\"'assets/_default/svg/ic_arrow_last.svg'\"></eo-icon>\n\n </div>\n </div>\n <div class=\"type\" *ngFor=\"let type of group.types\"\n [ngClass]=\"{context: type.isContextFolder, folder: type.isFolder, abstract: type.isAbstract, selected: isTypeActive(type), saved: isTypeSaved(type)}\">\n\n <div class=\"checkbox\" (click)=\"toggleType(type)\">\n <svg fill=\"#ffffff\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />\n </svg>\n </div>\n <div class=\"item\" (click)=\"selectObjectType(type)\">\n <eo-icon [objectType]=\"type\"></eo-icon>\n <div class=\"label\">{{type.label}} {{type.isAbstract ? '('+ ('eo.search.type.abstract' | translate) +\n ')' : ''}}</div>\n <div class=\"count\">{{getAggregationCount(type) | localeDecimal}}</div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"indexdata-search\" *ngIf=\"idxSearch\">\n <h2>\n <eo-icon class=\"button\" [iconSrc]=\"'assets/_default/svg/ic_arrow_back.svg'\"\n (click)=\"exitIndexdataSearch()\"></eo-icon>\n <span translate [translateParams]=\"{type: idxSearch.type.label}\">eo.search.objecttype.form</span>\n </h2>\n\n <div class=\"context\" *ngIf=\"idxSearch.contextModels.length\">\n\n <div class=\"context-select\">\n <div translate>eo.search.objecttype.form.context</div>\n <div class=\"spacer\"></div>\n\n <eo-context-search *ngFor=\"let ctx of idxSearch.contextModels; index as i\" [ctx]=\"ctx\" [query]=\"query\"\n [selected]=\"currentContextFolderName === ctx.name\"\n [disabled]=\"(currentContextFolderName && currentContextFolderName !== ctx.name)\"\n [idxSearch]=\"idxSearch\" (setContext)=\"setContext($event)\">\n </eo-context-search>\n </div>\n\n <section class=\"context form\">\n <eo-object-form class=\"dark\" #ctxform\n *ngIf=\"idxSearch.contextFormOptions && idxSearch.contextFormOptions?.formModel?.elements?.length\"\n [formOptions]=\"idxSearch.contextFormOptions\" (statusChanged)=\"onIndexDataChanged($event)\">\n </eo-object-form>\n </section>\n </div>\n\n\n <section class=\"object-type form\" *ngIf=\"idxSearch.formOptions\">\n <eo-object-form #idxform [formOptions]=\"idxSearch.formOptions\"\n (statusChanged)=\"onIndexDataChanged($event)\" (onFormReady)=\"idxform.focusForm()\">\n </eo-object-form>\n </section>\n </div>\n </ng-template>\n\n <!-- created tab -->\n <ng-template [yvcTab]=\"{id: 'restrictCreated', label: 'eo.search.restrict.creation' | translate }\">\n <div class=\"created rest-box-container\" *ngIf=\"queryState.aggregations\">\n\n <div class=\"rest-box box-timespan\">\n <h3 translate>eo.search.agg.time.span</h3>\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.CREATED]\"\n (click)=\"toggleFilter(PARAMS.CREATED, OPERATOR.RANGE, agg.key, agg.selected)\"\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\n <div class=\"label\">{{agg.label}}</div>\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\n </div>\n </div>\n\n <div class=\"rest-box box-timespan-custom\">\n <h3 translate>eo.search.agg.time.span.custom</h3>\n <form #createdForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.agg.time.span' | translate\">\n <eo-datetime-range #createdField [(ngModel)]=\"filtersModel[PARAMS.CREATED].value\" name=\"range\"\n [operator]=\"filtersModel[PARAMS.CREATED].value ? filtersModel[PARAMS.CREATED].value.operator : OPERATOR.EQUAL\"\n [withTime]=\"createdField.searchOption && createdField.searchOption !== OPERATOR.EQUAL\"\n (ngModelChange)=\"setFilter(PARAMS.CREATED, OPERATOR.EQUAL, $event, createdForm)\">\n </eo-datetime-range>\n </eo-form-input>\n </form>\n </div>\n\n <div class=\"rest-box box-creator\">\n <h3 translate>eo.search.agg.creator</h3>\n <form #creatorForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.agg.createdby' | translate\">\n <eo-organization [multiselect]=\"true\" [(ngModel)]=\"filtersModel[PARAMS.CREATOR].value\" name=\"creator\"\n (onValueResolved)=\"resolveLabel(filtersModel[PARAMS.CREATOR], $event)\" [situation]=\"'SEARCH'\"\n (ngModelChange)=\"setFilter(PARAMS.CREATOR, OPERATOR.IN, $event, creatorForm)\"></eo-organization>\n </eo-form-input>\n </form>\n </div>\n\n </div>\n </ng-template>\n\n <ng-template [yvcTab]=\"{id: 'restrictModification', label: 'eo.search.restrict.modification' | translate}\">\n <div class=\"modified rest-box-container\" *ngIf=\"queryState.aggregations\">\n\n <div class=\"rest-box box-timespan\">\n <h3 translate>eo.search.agg.time.span</h3>\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.MODIFIED]\"\n (click)=\"toggleFilter(PARAMS.MODIFIED, OPERATOR.RANGE, agg.key, agg.selected)\"\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\n <div class=\"label\">{{agg.label}}</div>\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\n </div>\n </div>\n\n <div class=\"rest-box box-timespan-custom\">\n <h3 translate>eo.search.agg.time.span.custom</h3>\n <form #modifiedForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.agg.time.span' | translate\">\n <eo-datetime-range #modifiedField [(ngModel)]=\"filtersModel[PARAMS.MODIFIED].value\" name=\"range\"\n [operator]=\"filtersModel[PARAMS.MODIFIED].value ? filtersModel[PARAMS.MODIFIED].value.operator : OPERATOR.EQUAL\"\n [withTime]=\"modifiedField.searchOption && modifiedField.searchOption !== OPERATOR.EQUAL\"\n (ngModelChange)=\"setFilter(PARAMS.MODIFIED, OPERATOR.EQUAL, $event, modifiedForm)\">\n </eo-datetime-range>\n </eo-form-input>\n </form>\n </div>\n\n <div class=\"rest-box box-modifier\">\n <h3 translate>eo.search.agg.modifier</h3>\n <form #modifierForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.agg.modifiedby' | translate\">\n <eo-organization [multiselect]=\"true\" [(ngModel)]=\"filtersModel[PARAMS.MODIFIER].value\"\n name=\"modifier\" (onValueResolved)=\"resolveLabel(filtersModel[PARAMS.MODIFIER], $event)\"\n [situation]=\"'SEARCH'\"\n (ngModelChange)=\"setFilter(PARAMS.MODIFIER, OPERATOR.IN, $event, modifierForm)\"></eo-organization>\n </eo-form-input>\n </form>\n </div>\n </div>\n </ng-template>\n\n <ng-template [yvcTab]=\"{id: 'restrictFile', label: 'eo.search.restrict.file' | translate}\">\n <div class=\"file rest-box-container\" *ngIf=\"queryState.aggregations\">\n\n <div class=\"rest-box box-mimetype-group\">\n <h3 translate>eo.search.restrict.mimetypegroup</h3>\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.MIMETYPEGROUP]\"\n (click)=\"setFilter(PARAMS.MIMETYPEGROUP, OPERATOR.IN, resolveSelection(aggregationsModel[PARAMS.MIMETYPEGROUP], agg.key, agg.selected))\"\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\n <div class=\"checkbox\">\n <svg fill=\"#ffffff\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />\n </svg>\n </div>\n <div class=\"label\">{{agg.label}}</div>\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\n </div>\n </div>\n\n <div class=\"rest-box box-filesize\">\n <h3 translate>eo.search.restrict.filesize</h3>\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.FILESIZE]\"\n (click)=\"toggleFilter(PARAMS.FILESIZE, OPERATOR.RANGE, agg.key, agg.selected)\"\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\n <div class=\"label\">{{agg.label}}</div>\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\n </div>\n </div>\n\n <div class=\"rest-box box-filename\">\n <h3 translate>eo.search.restrict.filename</h3>\n <form #filenameForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.restrict.filename' | translate\">\n <eo-string [autocomplete]=\"true\" [qname]=\"'filename'\"\n [(ngModel)]=\"filtersModel[PARAMS.FILENAME].value\" name=\"filename\"\n (ngModelChange)=\"setFilter(PARAMS.FILENAME, OPERATOR.EQUAL, $event, filenameForm)\"></eo-string>\n </eo-form-input>\n </form>\n </div>\n </div>\n </ng-template>\n </yvc-tabs>\n\n <!-- summary of the current search filters -->\n <div class=\"summary-panel\">\n\n <div class=\"headline stored-query\" *ngIf=\"isStoredQuery; else reghead\">\n <div class=\"spaceInbetwen\">\n <div class=\"savedSearchIcon\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_saved_search.svg'\"></eo-icon>\n </div>\n <div class=\"store\">\n <div class=\"pre\" translate>eo.search.aside.summary.storedquery</div>\n <div class=\"stored-query-name\">{{storedQuery.name}}</div>\n </div>\n </div>\n </div>\n\n <ng-template #reghead>\n <div class=\"headline\" translate>eo.search.aside.summary</div>\n </ng-template>\n\n <section class=\"query-types\">\n <div class=\"section section-searchterm\" *ngIf=\"query.term\">\n <div class=\"title\" translate>eo.search.aside.summary.term</div>\n <div class=\"filter\">\n <div class=\"label\">{{query.term}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeTerm()\"></eo-icon>\n </div>\n </div>\n\n <div class=\"section section-contexttype\" *ngIf=\"query.contextFolderTypes.length\">\n <div class=\"title\" translate>eo.search.aside.summary.contextfoldertypes</div>\n <div class=\"filter\" *ngFor=\"let type of query.contextFolderTypes\">\n <div class=\"label\">{{type.label}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeContextType()\"></eo-icon>\n </div>\n </div>\n\n <div class=\"section section-objecttype\" *ngIf=\"query.types.length\">\n <div class=\"title\" translate>eo.search.aside.summary.types</div>\n <div class=\"filter\" *ngFor=\"let type of query.types\">\n <div class=\"label\">{{type.label}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeType(type)\"></eo-icon>\n </div>\n </div>\n\n <ng-template #filterTemplate let-filter let-translate>\n <ng-container *ngIf=\"filter.innerValue.length\">\n <div class=\"filter\" *ngFor=\"let val of filter.innerValue; index as i\">\n <div class=\"label\">{{filter.label[i] | async}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"resetFilter(filter, val)\"></eo-icon>\n </div>\n </ng-container>\n </ng-template>\n\n <div class=\"section section-creation\"\n *ngIf=\"filtersModel[PARAMS.CREATED].innerValue?.length || filtersModel[PARAMS.CREATOR].innerValue?.length\">\n <div class=\"title\" translate>eo.search.restrict.creation</div>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.CREATED] }\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.CREATOR] }\"></ng-template>\n </div>\n\n <div class=\"section section-modification\"\n *ngIf=\"filtersModel[PARAMS.MODIFIED].innerValue?.length || filtersModel[PARAMS.MODIFIER].innerValue?.length\">\n <div class=\"title\" translate>eo.search.restrict.modification</div>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MODIFIED] }\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MODIFIER] }\"></ng-template>\n </div>\n\n <div class=\"section section-mimetypegroup\"\n *ngIf=\"filtersModel[PARAMS.MIMETYPEGROUP].innerValue.length || filtersModel[PARAMS.FILESIZE].innerValue.length || filtersModel[PARAMS.FILENAME].innerValue.length\">\n <div class=\"title\" translate>eo.search.restrict.file</div>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MIMETYPEGROUP] }\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.FILESIZE] }\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.FILENAME] }\"></ng-template>\n </div>\n </section>\n\n <div class=\"actions\" *ngIf=\"query.term || query.filters.length || query.types.length; else emptySearch\">\n\n <ng-container *ngIf=\"isStoredQuery; else regactions\">\n <button class=\"secondary btn-reset\" (click)=\"resetQuery()\" translate>eo.search.storedquery.close</button>\n <button class=\"primary grey btn-update\" (click)=\"updateStoredQuery()\"\n *ngIf=\"capabilities.storedqueries && isOwnQuery\" translate>eo.search.storedquery.update</button>\n <button class=\"primary grey btn-save\" (click)=\"saveQuery()\"\n *ngIf=\"capabilities.storedqueries && !isOwnQuery\" translate>eo.search.save</button>\n <button class=\"primary btn-submit\" (click)=\"executeSearch()\" [disabled]=\"queryState.isEmpty\"\n translate>eo.search.submit</button>\n </ng-container>\n\n <ng-template #regactions>\n <button class=\"primary grey btn-reset\" (click)=\"resetQuery()\" translate>eo.search.reset</button>\n <button class=\"primary grey btn-save\" (click)=\"saveQuery()\"\n *ngIf=\"capabilities.storedqueries && !isOwnQuery\" translate>eo.search.save</button>\n <button class=\"primary btn-submit\" (click)=\"executeSearch()\" [disabled]=\"queryState.isEmpty\"\n translate>eo.search.submit</button>\n </ng-template>\n\n\n </div>\n\n <ng-template #emptySearch>\n <div class=\"empty-search\" translate>eo.search.summary.empty</div>\n </ng-template>\n\n </div>\n\n\n </div>\n\n <!-- expert mode body panel containing explanations -->\n <ng-template #expert>\n <div class=\"body expert\">\n\n <div class=\"empty\" *ngIf=\"expertModeQueryEmpty\"><span translate>eo.search.mode.expert.result.empty</span></div>\n\n <!--\n <h2><span translate>eo.search.mode.expert</span></h2>\n <div class=\"intro\" translate>eo.search.mode.expert.intro</div>\n\n <div class=\"base-params fields\">\n <h2 translate>eo.search.mode.expert.support.baseparams</h2>\n <div class=\"items\">\n <div class=\"item\" *ngFor=\"let el of expertModeSupport.baseParams\" (click)=\"xpAddToTerm(el.data)\">\n <div class=\"label\"><span>{{el.label}}</span></div>\n <div class=\"data\">{{el.data}}</div>\n </div>\n </div>\n </div>\n\n <div class=\"system-types fields\">\n\n <div class=\"column column-group\">\n <h2 translate>eo.search.mode.expert.support.group</h2>\n <div class=\"items\">\n <div class=\"item\" *ngFor=\"let group of typeGroupTree\"\n [ngClass]=\"{selected: expertModeSupport.selectedGroup && group.id === expertModeSupport.selectedGroup.id}\"\n (click)=\"xpSelectGroup(group)\">\n <div *ngIf=\"group.label !== '0'\">{{group.label}}</div>\n <div *ngIf=\"group.label === '0'\">{{'eo.search.group.general' | translate}}</div>\n </div>\n </div>\n </div>\n\n <div class=\"column column-type\" *ngIf=\"expertModeSupport.selectedGroup\">\n <h2 translate>eo.search.mode.expert.support.type</h2>\n <div class=\"items\">\n <div class=\"item\" *ngFor=\"let type of expertModeSupport.selectedGroup.tree\"\n [ngClass]=\"{selected: expertModeSupport.selectedType && type.id === expertModeSupport.selectedType.id}\"\n (click)=\"xpSelectType(type)\">\n <div>{{type.label}}</div>\n </div>\n </div>\n </div>\n\n <div class=\"column section-field\" *ngIf=\"expertModeSupport.selectedType\">\n <h2 translate>eo.search.mode.expert.support.field</h2>\n <div class=\"items\">\n <div class=\"item\" *ngFor=\"let el of expertModeSupport.selectedType.children\" (click)=\"xpAddToTerm(el.data)\">\n <div class=\"label\"><span>{{el.label}}</span><span class=\"type\">{{el.type}}</span></div>\n <div class=\"data\">{{el.data}}</div>\n </div>\n </div>\n </div>\n\n </div>\n\n -->\n </div>\n </ng-template>\n </div>\n <!-- </eo-dialog> -->\n</ng-template>\n", styles: ["eo-app-search dialog{height:100vh;margin:0!important;max-height:100vh;max-block-size:100%!important;min-width:500px;width:80%}@media screen and (max-width: 500px){.eo-app-search-dialog{width:100%!important;min-width:inherit}}.eo-app-search-dialog .eo-dialog-content{overflow:inherit;max-height:100%}.eo-app-search-dialog .eo-dialog-header{display:none}.eo-app-search.rtl .head .close{right:auto;left:var(--app-pane-padding)}.eo-app-search.rtl .body .indexdata-search h2 eo-icon{transform:rotate(180deg)}.eo-app-search{--search-min-width: 500px;--search-box-max-width: 600px;--search-summary-width: 350px;width:80vw;height:100vh;background:var(--panel-background-grey);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}.eo-app-search .head{background:var(--color-primary-2);flex:0 0 auto;color:var(--color-white);position:relative;display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) calc(var(--app-pane-padding) / 2) 0 calc(var(--app-pane-padding) / 2)}.eo-app-search .head .search{flex:1 1 auto;justify-content:space-between;margin:0 calc(var(--app-pane-padding) / 2);z-index:2;min-width:fill-available;min-width:-webkit-fill-available;min-width:-moz-available}.eo-app-search .head .search .title{font-size:var(--font-display);font-weight:var(--font-weight-light);min-height:1em;line-height:1em}@media screen and (max-width: 480px){.eo-app-search .head .search .title{font-size:var(--font-title)}}.eo-app-search .head .search .query-scope{margin:calc(var(--app-pane-padding) * 2) 0 0 0;min-width:var(--search-min-width);max-width:var(--search-box-max-width)}.eo-app-search .head .search .search-box{margin-bottom:var(--app-pane-padding);display:flex;flex-flow:row nowrap;align-items:stretch;background:var(--color-white);max-width:var(--search-box-max-width);box-shadow:0 2px 2px rgba(var(--color-black-rgb),.2)}@media screen and (max-width: 480px){.eo-app-search .head .search .search-box{margin-top:var(--app-pane-padding)}}.eo-app-search .head .search .search-box yvc-autocomplete{flex:1 1 auto;background:transparent;outline:0;border:0}.eo-app-search .head .search .search-box yvc-autocomplete span.ui-autocomplete{width:100%}.eo-app-search .head .search .search-box input{width:100%;border:0;box-sizing:border-box;padding:calc(var(--app-pane-padding) / 2);font-size:var(--font-title)}.eo-app-search .head .search .search-box input::-ms-clear{display:none}.eo-app-search .head .search .search-box button[type=submit]{background:var(--color-accent);color:var(--color-white);border:0;padding:0 var(--app-pane-padding);font-size:var(--font-subhead)}.eo-app-search .head .search .search-box button.expert-mode{padding:0 calc(var(--app-pane-padding) / 2);background:transparent;border:0;color:var(--text-color-hint);display:flex;align-items:center}.eo-app-search .head .search .search-box button.expert-mode:focus{color:var(--color-accent)}.eo-app-search .head .search .search-box button.expert-mode__reset{opacity:0;width:0;padding:0;transition:all .2s ease-in-out}.eo-app-search .head .search .search-box button.expert-mode__reset.active{opacity:1;width:40px;padding:0 8px}.eo-app-search .head .search .search-box button.expert-mode span{display:none;padding:calc(var(--app-pane-padding) / 4);white-space:nowrap;animation:eoFadeIn var(--app-default-transition-duration)}.eo-app-search .head .search .search-box button.expert-mode:hover{color:var(--color-accent)}.eo-app-search .head .search .search-box button.expert-mode:hover span{display:block}.eo-app-search .head .result{position:absolute;right:var(--app-pane-padding);top:calc(var(--app-pane-padding) * 2.5);z-index:1;font-size:7em;line-height:1em;opacity:.1}@media screen and (max-width: 900px){.eo-app-search .head .result{font-size:3em;right:calc(var(--app-pane-padding) * 3);top:var(--app-pane-padding)}}.eo-app-search .head .search-aggregator__loader{z-index:11;position:absolute;right:13%;top:30%;-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}@media screen and (max-width: 900px){.eo-app-search .head .search-aggregator__loader{top:5%}}.eo-app-search .head .close{position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding);z-index:2}.eo-app-search .body{background:rgba(var(--color-white-rgb),.2);flex:1 1 auto;position:relative}@media screen and (max-width: 1000px){.eo-app-search .body .summary-panel{bottom:0;right:0!important;left:0!important;top:auto!important;width:auto!important;display:flex;flex-flow:row nowrap}.eo-app-search .body .summary-panel .headline:not(.stored-query),.eo-app-search .body .summary-panel .section{display:none}.eo-app-search .body .summary-panel .headline.stored-query{margin-bottom:0;display:flex;align-items:center;padding:0 var(--app-pane-padding)}.eo-app-search .body .summary-panel .headline.stored-query .pre{display:none}.eo-app-search .body .summary-panel .headline.stored-query .stored-query-name{font-size:var(--font-subhead)!important}.eo-app-search .body .summary-panel .actions{flex:1 1 auto}.eo-app-search .body yvc-tabs>section[role=tabpanel]{padding-right:0!important;padding-left:0!important}}.eo-app-search .body>yvc-tabs{position:absolute;inset:0}.eo-app-search .body>yvc-tabs>header{--text-color-body: #fff;--text-color-hint: rgba(255,255,255,.7);background:var(--color-primary-2)}.eo-app-search .body>yvc-tabs>section[role=tabpanel]{padding:calc(var(--app-pane-padding) - var(--app-pane-padding) / 2) calc(var(--app-pane-padding) * 2 + var(--search-summary-width)) 0 calc(var(--app-pane-padding) - 2px)}.eo-app-search .body .summary-panel{background:rgba(var(--color-black-rgb),.06);width:var(--search-summary-width);position:absolute;top:calc(var(--app-pane-padding) + var(--eo-tab-nav-height));right:var(--app-pane-padding);box-sizing:border-box}.eo-app-search .body .summary-panel .query-types{overflow:auto;max-height:calc(100vh - 290px)}.eo-app-search .body .summary-panel .headline{line-height:1em;font-size:var(--font-subhead);font-weight:var(--font-weight-light);color:var(--text-color-caption);margin-bottom:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 2)}.eo-app-search .body .summary-panel .headline .spaceInbetwen{display:flex;align-items:center}.eo-app-search .body .summary-panel .headline .spaceInbetwen .savedSearchIcon{display:block;padding:calc(var(--app-pane-padding) / 4) 0}.eo-app-search .body .summary-panel .headline .spaceInbetwen .savedSearchIcon eo-icon{--eoSvgIcon-size: 44px}.eo-app-search .body .summary-panel .headline .spaceInbetwen .store{display:block;min-height:0;min-width:0;padding-left:12px}.eo-app-search .body .summary-panel .headline .spaceInbetwen .store .pre{padding:calc(var(--app-pane-padding) / 2) 0}.eo-app-search .body .summary-panel .headline .spaceInbetwen .store .stored-query-name{font-size:var(--font-title);padding:calc(var(--app-pane-padding) / 2) 0;line-height:1.2em}.eo-app-search .body .summary-panel .headline.stored-query{background:var(--color-primary-3);color:var(--color-white);font-size:var(--font-body)}.eo-app-search .body .summary-panel .empty-search{padding:var(--app-pane-padding) calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-app-search .body .summary-panel .section{padding:calc(var(--app-pane-padding) / 2);max-height:calc(100vh - 280px);overflow-y:auto}.eo-app-search .body .summary-panel .section .title{border-bottom:1px solid rgba(var(--color-black-rgb),.1);padding-bottom:calc(var(--app-pane-padding) / 4);color:var(--text-color-caption)}.eo-app-search .body .summary-panel .filter{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;background:rgba(var(--color-white-rgb),.6);margin-top:4px;align-items:center}.eo-app-search .body .summary-panel .filter .label{display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;padding:0 0 0 calc(var(--app-pane-padding) / 4)}.eo-app-search .body .summary-panel .filter eo-icon{flex:0 0 auto;padding:calc(var(--app-pane-padding) / 4);box-sizing:border-box;cursor:pointer;color:var(--text-color-hint)}.eo-app-search .body .summary-panel .filter eo-icon:hover{color:var(--text-color-caption)}.eo-app-search .body .summary-panel .actions{display:flex;justify-content:flex-end;padding:calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2 - 2px)}.eo-app-search .body .summary-panel .actions button{margin:0 2px;line-height:1em;font-size:var(--font-hint)}.eo-app-search .body .ui-tabview .ui-tabview-panel{padding:calc(var(--app-pane-padding) / 2)}.eo-app-search .body .ui-tabview .ui-tabview-panel h2{margin:0 0 calc(var(--app-pane-padding) * 1.5) 0;padding:0;font-weight:var(--font-weight-light);font-size:var(--font-title);color:var(--text-color-caption)}.eo-app-search .body .rest-box-container{display:flex;flex-flow:row wrap;align-items:stretch}.eo-app-search .body .rest-box-container .rest-box{margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 2);background:var(--color-white);flex:1 1 auto}.eo-app-search .body .rest-box-container .rest-box h3{margin:0 0 var(--app-pane-padding) 0;padding:0;font-size:var(--font-caption);font-weight:var(--font-weight-normal);color:var(--text-color-caption)}.eo-app-search .body .rest-box-container .rest-box .rest-item{display:flex;flex:1 1 auto;flex-flow:row nowrap;align-items:center;padding:calc(var(--app-pane-padding) / 2);margin:0 calc(var(--app-pane-padding) / 4);color:var(--text-color-body)}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected{background:var(--color-primary-3);color:var(--color-white)}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover{background:var(--list-item-hover-background)}.eo-app-search .body .rest-box-container .rest-box .label{flex:1 1 auto;padding:0 calc(var(--app-pane-padding) / 2)}.eo-app-search .body .rest-box-container .rest-box .count{font-size:var(--font-caption);min-width:30px;text-align:right;font-weight:var(--font-weight-bold)}.eo-app-search .body .object-types .group .group-header .move-icons{display:none}.eo-app-search .body .object-types .group .type{display:flex;flex-flow:row nowrap;align-items:center;padding:1px 0}.eo-app-search .body .object-types .group .type.context{font-weight:var(--font-weight-bold)}.eo-app-search .body .object-types .group .type.folder .item eo-icon{background:rgba(var(--color-black-rgb),.15)}.eo-app-search .body .object-types .group .type.folder .item:hover eo-icon{background:rgba(var(--color-white-rgb),.3)}.eo-app-search .body .object-types .group .type.abstract .item{color:var(--text-color-caption)}.eo-app-search .body .object-types .group .type.abstract .item:hover{background:var(--color-primary-3);color:var(--panel-background)}.eo-app-search .body .object-types .group .type .item{display:flex;flex:1 1 auto;border-radius:2px;flex-flow:row nowrap;align-items:center;padding:calc(var(--app-pane-padding) / 2);margin:0 calc(var(--app-pane-padding) / 4);cursor:default;color:var(--text-color-body)}.eo-app-search .body .object-types .group .type .item eo-icon{color:var(--text-color-caption);width:16px;height:16px;box-sizing:content-box;padding:2px;border-radius:2px;transition:none;-webkit-transition:none;-moz-transition:none;-o-transition:none}.eo-app-search .body .object-types .group:hover .group-header{display:flex;justify-content:space-between}.eo-app-search .body .object-types .group:hover .group-header .move-icons{display:flex}.eo-app-search .body .object-types .group:hover .group-header .move-left-icon,.eo-app-search .body .object-types .group:hover .group-header .move-right-icon,.eo-app-search .body .object-types .group:hover .group-header .move-left-first,.eo-app-search .body .object-types .group:hover .group-header .move-right-last{cursor:pointer;color:var(--text-color-caption)}.eo-app-search .body .object-types .group:hover .group-header .move-left-first{transform:rotate(180deg)}.eo-app-search .body .object-types .type .item{cursor:pointer}.eo-app-search .body .object-types .type .item:hover{background:var(--color-primary-3);color:var(--panel-background)}.eo-app-search .body .object-types .type .item:hover eo-icon{color:var(--panel-background)}.eo-app-search .body .indexdata-search{padding:calc(var(--app-pane-padding) / 2) 0 0 calc(var(--app-pane-padding) / 2)}.eo-app-search .body .indexdata-search h2{display:flex;flex-flow:row;align-items:center}.eo-app-search .body .indexdata-search h2 eo-icon{margin:0 calc(var(--app-pane-padding) / 2)}.eo-app-search .body .indexdata-search h2 span{padding:0 calc(var(--app-pane-padding) / 4)}.eo-app-search .body .indexdata-search .context{margin-bottom:var(--app-pane-padding)}.eo-app-search .body .indexdata-search .context .context-select{display:flex;align-items:center;flex-flow:row wrap;padding-bottom:1px}.eo-app-search .body .indexdata-search .context .context-select .spacer{width:var(--app-pane-padding)}.eo-app-search .body .indexdata-search eo-object-form{border:1px solid rgba(var(--color-black-rgb),.1)}.eo-app-search .body .indexdata-search eo-object-form.dark{display:block;background-color:var(--color-primary-2)}.eo-app-search.rtl{left:0;right:0;animation:appSearchAppearRTL var(--app-default-transition-duration)}.eo-app-search.rtl .head .result,.eo-app-search.rtl .body .summary-panel{right:auto;left:var(--app-pane-padding)}.eo-app-search.rtl .body yvc-tabs{padding-right:0;padding-left:calc(var(--app-pane-padding) * 2 + var(--search-summary-width));padding-bottom:0;padding-top:0}.eo-app-search.expert .head .result{display:none}.eo-app-search.expert .head .search .search-box{max-width:100%}.eo-app-search.expert .head .search .search-box button.expert-mode{color:var(--color-accent)}.eo-app-search.expert .body{background:var(--color-primary-2);color:var(--color-white);display:flex;flex-flow:column}.eo-app-search.expert .body h2{flex:0 0 auto;padding:0;margin:var(--app-pane-padding) 0;font-size:var(--font-title);font-weight:var(--font-weight-light)}.eo-app-search.expert .body h2 span{padding:calc(var(--app-pane-padding) / 2) 0 calc(var(--app-pane-padding) / 2) var(--app-pane-padding);border-bottom:4px solid var(--color-accent)}.eo-app-search.expert .body .intro{flex:0 0 auto;padding:var(--app-pane-padding)}.eo-app-search.expert .body .empty{flex:0 0 auto;padding:0 var(--app-pane-padding)}.eo-app-search.expert .body .empty span{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px;background:var(--color-error);color:var(--color-white)}.eo-app-search.expert .body .fields h2{margin:calc(var(--app-pane-padding) / 2);flex:0 0 auto;padding:calc(var(--app-pane-padding) / 2);border-bottom:1px solid rgba(var(--color-white-rgb),.3)}.eo-app-search.expert .body .fields .item{padding:calc(var(--app-pane-padding) / 2);cursor:pointer;border-radius:2px;background:rgba(var(--color-white-rgb),.06);margin-bottom:4px;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-app-search.expert .body .fields .item:hover,.eo-app-search.expert .body .fields .item.selected{background:rgba(var(--color-white-rgb),.2)}.eo-app-search.expert .body .fields .item .label{font-weight:var(--font-weight-bold);display:flex;justify-content:space-between}.eo-app-search.expert .body .fields .item .label .type{font-size:var(--font-hint);opacity:.5}.eo-app-search.expert .body .fields .item .data{opacity:.75}.eo-app-search.expert .body .base-params{padding:calc(var(--app-pane-padding) / 2)}.eo-app-search.expert .body .base-params .items{display:flex;flex-flow:row wrap;padding:calc(var(--app-pane-padding) / 4)}.eo-app-search.expert .body .base-params .items .item{margin:calc(var(--app-pane-padding) / 4)}.eo-app-search.expert .body .system-types{flex:1 1 auto;display:flex;flex-flow:row;justify-content:flex-start;align-items:stretch;padding:calc(var(--app-pane-padding) / 2)}.eo-app-search.expert .body .system-types .column{flex:0 0 33%;box-sizing:border-box;display:flex;flex-flow:column}.eo-app-search.expert .body .system-types .column .items{padding:calc(var(--app-pane-padding) / 2);flex:1 1 auto;overflow-y:auto}.eo-app-search.expert .body .system-types .column .items::-webkit-scrollbar-thumb{background-color:rgba(var(--color-white-rgb),.1)}.eo-app-search .body .rest-box-container .rest-box .rest-item .checkbox,.eo-app-search .body .rest-box-container .rest-box .type .checkbox{width:20px;height:20px;cursor:pointer;border:1px solid var(--text-color-hint);border-radius:2px;margin:0 calc(var(--app-pane-padding) / 2)}.eo-app-search .body .rest-box-container .rest-box .rest-item .checkbox svg,.eo-app-search .body .rest-box-container .rest-box .type .checkbox svg{opacity:0}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover .checkbox:hover,.eo-app-search .body .rest-box-container .rest-box .type:not(.selected):hover .checkbox:hover{border-color:var(--text-color-caption)}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover .checkbox:hover svg,.eo-app-search .body .rest-box-container .rest-box .type:not(.selected):hover .checkbox:hover svg{fill:var(--text-color-body);opacity:.3}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected .checkbox,.eo-app-search .body .rest-box-container .rest-box .type.selected .checkbox{background:var(--color-primary-3);border-color:var(--color-primary-3)}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected .checkbox svg,.eo-app-search .body .rest-box-container .rest-box .type.selected .checkbox svg{fill:var(--color-white)!important;opacity:1}.eo-app-search .body .rest-box-container .rest-box .rest-item.saved .count,.eo-app-search .body .rest-box-container .rest-box .type.saved .count{font-weight:var(--font-weight-normal)}@keyframes appSearchAppear{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes appSearchAppearRTL{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}\n"] }]
|
|
17020
|
+
args: [{ selector: 'eo-app-search', encapsulation: ViewEncapsulation.None, template: "<!-- <eo-dialog [visible]=\"true\" [styleClass]=\"'eo-app-search-dialog'\" [align]=\"'start'\" [minWidth]=\"'80vw'\"\n [minHeight]=\"'100vh'\" (hide)=\"closeSearchMenu($event)\"> -->\n<!-- <yvc-dialog [options]=\"{lightDismiss: true}\" [template]=\"tplSearch\" (closed)=\"closeSearchMenu()\"></yvc-dialog> -->\n<ng-template #tplSearch>\n\n <div class=\"eo-app-search\" [ngClass]=\"{expert: query.expertMode}\" eoRtlAware=\"full\" *ngIf=\"query\">\n\n <div class=\"head\">\n\n <div class=\"search\">\n <form (submit)=\"executeSearch()\">\n <div class=\"title\" translate>eo.search</div>\n\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\n\n <div class=\"search-box\" [formGroup]=\"termForm\">\n\n <yvc-autocomplete *ngIf=\"!query.expertMode; else expertInput\" #searchInput formControlName=\"term\" [autocompleteValues]=\"autocompleteResults\"\n (suggestionSelect)=\"autocompleteSelect()\" (keydown.enter)=\"executeSearch()\" (paste)=\"autocompletePaste($event)\">\n </yvc-autocomplete>\n\n <ng-template #expertInput>\n <input autofocus=\"autofocus\" class=\"expert-search__input\" #xpinput type=\"text\"\n (ngModelChange)=\"expertTermChanged()\" [(ngModel)]=\"query.term\" [ngModelOptions]=\"{standalone: true}\">\n </ng-template>\n\n <button class=\"btn expert-mode\" type=\"button\" (click)=\"toggleExpertMode()\">\n <!--<span translate>eo.search.mode.expert</span>-->\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_expert-search.svg'\"\n [iconTitle]=\"('eo.search.mode.expert' | translate)\" *ngIf=\"!query?.expertMode; else close\"></eo-icon>\n <ng-template #close>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_expert-search.svg'\"\n [iconTitle]=\"('eo.search.mode.expert.close' | translate)\"></eo-icon>\n </ng-template>\n </button>\n\n <button type=\"button\" class=\"btn expert-mode expert-mode__reset\" [ngClass]=\"{active: query.term}\"\n (click)=\"resetExpertModeInput()\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"\n [iconTitle]=\"('eo.search.clear.search' | translate)\"></eo-icon>\n </button>\n\n <button class=\"btn btn-default\" type=\"submit\" [disabled]=\"queryState.isEmpty\"\n translate>eo.search.submit</button>\n </div>\n </form>\n </div>\n\n <div class=\"result\" *ngIf=\"!loading; else spinner\">{{queryState.totalCount | localeDecimal}}</div>\n <ng-template #spinner>\n <eo-loading-spinner class=\"search-aggregator__loader\" [size]=\"'medium'\" [mode]=\"'dark'\"></eo-loading-spinner>\n </ng-template>\n <eo-icon class=\"button white close\" [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"\n [iconTitle]=\"('eo.search.close' | translate)\" (click)=\"closeSearchMenu()\"></eo-icon>\n\n </div>\n\n <div class=\"body\" *ngIf=\"!query.expertMode; else expert\">\n\n <yvc-tabs (tabChange)=\"onTabChange($event)\" layoutSettingsID=\"eo.search.dialog.tabs\">\n\n <!-- object type select -->\n <ng-template [yvcTab]=\"{id: 'restrictType', label: 'eo.search.restrict.type' | translate}\">\n\n <div class=\"object-types rest-box-container\" [ngClass]=\"{idxenabled: query.types.length < 1}\"\n *ngIf=\"objectTypeGroups && !idxSearch\">\n <div class=\"group rest-box\" *ngFor=\"let group of objectTypeGroups; let i = index\">\n <div class=\"group-header\">\n <h3 *ngIf=\"group.label !== '0'\">{{group.label}}</h3>\n <h3 *ngIf=\"group.label === '0'\" translate>{{'eo.search.group.general'}}</h3>\n <div class=\"move-icons\">\n <eo-icon *ngIf=\"i !== 0\" class=\"move-left-first\" (click)=\"moveObjectTypeGroup(group.label, 'first')\" [iconSrc]=\"'assets/_default/svg/ic_arrow_last.svg'\"></eo-icon>\n <eo-icon *ngIf=\"i !== 0\" class=\"move-left-icon\" (click)=\"moveObjectTypeGroup(group.label, 'left')\" [iconSrc]=\"'assets/_default/svg/ic_arrow_left.svg'\"></eo-icon>\n <eo-icon *ngIf=\"i !== objectTypeGroups.length - 1\" class=\"move-right-icon\" (click)=\"moveObjectTypeGroup(group.label, 'right')\" [iconSrc]=\"'assets/_default/svg/ic_arrow_right.svg'\"></eo-icon>\n <eo-icon *ngIf=\"i !== objectTypeGroups.length - 1\" class=\"move-right-last\" (click)=\"moveObjectTypeGroup(group.label, 'last')\" [iconSrc]=\"'assets/_default/svg/ic_arrow_last.svg'\"></eo-icon>\n\n </div>\n </div>\n <div class=\"type\" *ngFor=\"let type of group.types\"\n [ngClass]=\"{context: type.isContextFolder, folder: type.isFolder, abstract: type.isAbstract, selected: isTypeActive(type)}\">\n\n <div class=\"checkbox\" (click)=\"toggleType(type)\">\n <svg fill=\"#ffffff\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />\n </svg>\n </div>\n <div class=\"item\" (click)=\"selectObjectType(type)\">\n <eo-icon [objectType]=\"type\"></eo-icon>\n <div class=\"label\">{{type.label}} {{type.isAbstract ? '('+ ('eo.search.type.abstract' | translate) +\n ')' : ''}}</div>\n <div class=\"count\">{{getAggregationCount(type) | localeDecimal}}</div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"indexdata-search\" *ngIf=\"idxSearch\">\n <h2>\n <eo-icon class=\"button\" [iconSrc]=\"'assets/_default/svg/ic_arrow_back.svg'\"\n (click)=\"exitIndexdataSearch()\"></eo-icon>\n <span translate [translateParams]=\"{type: idxSearch.type.label}\">eo.search.objecttype.form</span>\n </h2>\n\n <div class=\"context\" *ngIf=\"idxSearch.contextModels.length\">\n\n <div class=\"context-select\">\n <div translate>eo.search.objecttype.form.context</div>\n <div class=\"spacer\"></div>\n\n <eo-context-search *ngFor=\"let ctx of idxSearch.contextModels; index as i\" [ctx]=\"ctx\" [query]=\"query\"\n [selected]=\"currentContextFolderName === ctx.name\"\n [disabled]=\"(currentContextFolderName && currentContextFolderName !== ctx.name)\"\n [idxSearch]=\"idxSearch\" (setContext)=\"setContext($event)\">\n </eo-context-search>\n </div>\n\n <section class=\"context form\">\n <eo-object-form class=\"dark\" #ctxform\n *ngIf=\"idxSearch.contextFormOptions && idxSearch.contextFormOptions?.formModel?.elements?.length\"\n [formOptions]=\"idxSearch.contextFormOptions\" (statusChanged)=\"onIndexDataChanged($event)\">\n </eo-object-form>\n </section>\n </div>\n\n\n <section class=\"object-type form\" *ngIf=\"idxSearch.formOptions\">\n <eo-object-form #idxform [formOptions]=\"idxSearch.formOptions\"\n (statusChanged)=\"onIndexDataChanged($event)\" (onFormReady)=\"idxform.focusForm()\">\n </eo-object-form>\n </section>\n </div>\n </ng-template>\n\n <!-- created tab -->\n <ng-template [yvcTab]=\"{id: 'restrictCreated', label: 'eo.search.restrict.creation' | translate }\">\n <div class=\"created rest-box-container\" *ngIf=\"queryState.aggregations\">\n\n <div class=\"rest-box box-timespan\">\n <h3 translate>eo.search.agg.time.span</h3>\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.CREATED]\"\n (click)=\"toggleFilter(PARAMS.CREATED, OPERATOR.RANGE, agg.key, agg.selected)\"\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\n <div class=\"label\">{{agg.label}}</div>\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\n </div>\n </div>\n\n <div class=\"rest-box box-timespan-custom\">\n <h3 translate>eo.search.agg.time.span.custom</h3>\n <form #createdForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.agg.time.span' | translate\">\n <eo-datetime-range #createdField [(ngModel)]=\"filtersModel[PARAMS.CREATED].value\" name=\"range\"\n [operator]=\"filtersModel[PARAMS.CREATED].value ? filtersModel[PARAMS.CREATED].value.operator : OPERATOR.EQUAL\"\n [withTime]=\"createdField.searchOption && createdField.searchOption !== OPERATOR.EQUAL\"\n (ngModelChange)=\"setFilter(PARAMS.CREATED, OPERATOR.EQUAL, $event, createdForm)\">\n </eo-datetime-range>\n </eo-form-input>\n </form>\n </div>\n\n <div class=\"rest-box box-creator\">\n <h3 translate>eo.search.agg.creator</h3>\n <form #creatorForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.agg.createdby' | translate\">\n <eo-organization [multiselect]=\"true\" [(ngModel)]=\"filtersModel[PARAMS.CREATOR].value\" name=\"creator\"\n (onValueResolved)=\"resolveLabel(filtersModel[PARAMS.CREATOR], $event)\" [situation]=\"'SEARCH'\"\n (ngModelChange)=\"setFilter(PARAMS.CREATOR, OPERATOR.IN, $event, creatorForm)\"></eo-organization>\n </eo-form-input>\n </form>\n </div>\n\n </div>\n </ng-template>\n\n <ng-template [yvcTab]=\"{id: 'restrictModification', label: 'eo.search.restrict.modification' | translate}\">\n <div class=\"modified rest-box-container\" *ngIf=\"queryState.aggregations\">\n\n <div class=\"rest-box box-timespan\">\n <h3 translate>eo.search.agg.time.span</h3>\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.MODIFIED]\"\n (click)=\"toggleFilter(PARAMS.MODIFIED, OPERATOR.RANGE, agg.key, agg.selected)\"\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\n <div class=\"label\">{{agg.label}}</div>\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\n </div>\n </div>\n\n <div class=\"rest-box box-timespan-custom\">\n <h3 translate>eo.search.agg.time.span.custom</h3>\n <form #modifiedForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.agg.time.span' | translate\">\n <eo-datetime-range #modifiedField [(ngModel)]=\"filtersModel[PARAMS.MODIFIED].value\" name=\"range\"\n [operator]=\"filtersModel[PARAMS.MODIFIED].value ? filtersModel[PARAMS.MODIFIED].value.operator : OPERATOR.EQUAL\"\n [withTime]=\"modifiedField.searchOption && modifiedField.searchOption !== OPERATOR.EQUAL\"\n (ngModelChange)=\"setFilter(PARAMS.MODIFIED, OPERATOR.EQUAL, $event, modifiedForm)\">\n </eo-datetime-range>\n </eo-form-input>\n </form>\n </div>\n\n <div class=\"rest-box box-modifier\">\n <h3 translate>eo.search.agg.modifier</h3>\n <form #modifierForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.agg.modifiedby' | translate\">\n <eo-organization [multiselect]=\"true\" [(ngModel)]=\"filtersModel[PARAMS.MODIFIER].value\"\n name=\"modifier\" (onValueResolved)=\"resolveLabel(filtersModel[PARAMS.MODIFIER], $event)\"\n [situation]=\"'SEARCH'\"\n (ngModelChange)=\"setFilter(PARAMS.MODIFIER, OPERATOR.IN, $event, modifierForm)\"></eo-organization>\n </eo-form-input>\n </form>\n </div>\n </div>\n </ng-template>\n\n <ng-template [yvcTab]=\"{id: 'restrictFile', label: 'eo.search.restrict.file' | translate}\">\n <div class=\"file rest-box-container\" *ngIf=\"queryState.aggregations\">\n\n <div class=\"rest-box box-mimetype-group\">\n <h3 translate>eo.search.restrict.mimetypegroup</h3>\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.MIMETYPEGROUP]\"\n (click)=\"setFilter(PARAMS.MIMETYPEGROUP, OPERATOR.IN, resolveSelection(aggregationsModel[PARAMS.MIMETYPEGROUP], agg.key, agg.selected))\"\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\n <div class=\"checkbox\">\n <svg fill=\"#ffffff\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />\n </svg>\n </div>\n <div class=\"label\">{{agg.label}}</div>\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\n </div>\n </div>\n\n <div class=\"rest-box box-filesize\">\n <h3 translate>eo.search.restrict.filesize</h3>\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.FILESIZE]\"\n (click)=\"toggleFilter(PARAMS.FILESIZE, OPERATOR.RANGE, agg.key, agg.selected)\"\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\n <div class=\"label\">{{agg.label}}</div>\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\n </div>\n </div>\n\n <div class=\"rest-box box-filename\">\n <h3 translate>eo.search.restrict.filename</h3>\n <form #filenameForm=\"ngForm\">\n <eo-form-input [label]=\"'eo.search.restrict.filename' | translate\">\n <eo-string [autocomplete]=\"true\" [qname]=\"'filename'\"\n [(ngModel)]=\"filtersModel[PARAMS.FILENAME].value\" name=\"filename\"\n (ngModelChange)=\"setFilter(PARAMS.FILENAME, OPERATOR.EQUAL, $event, filenameForm)\"></eo-string>\n </eo-form-input>\n </form>\n </div>\n </div>\n </ng-template>\n </yvc-tabs>\n\n <!-- summary of the current search filters -->\n <div class=\"summary-panel\">\n\n <div class=\"headline stored-query\" *ngIf=\"isStoredQuery; else reghead\">\n <div class=\"spaceInbetwen\">\n <div class=\"savedSearchIcon\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_saved_search.svg'\"></eo-icon>\n </div>\n <div class=\"store\">\n <div class=\"pre\" translate>eo.search.aside.summary.storedquery</div>\n <div class=\"stored-query-name\">{{storedQuery.name}}</div>\n </div>\n </div>\n </div>\n\n <ng-template #reghead>\n <div class=\"headline\" translate>eo.search.aside.summary</div>\n </ng-template>\n\n <section class=\"query-types\">\n <div class=\"section section-searchterm\" *ngIf=\"query.term\">\n <div class=\"title\" translate>eo.search.aside.summary.term</div>\n <div class=\"filter\">\n <div class=\"label\">{{query.term}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeTerm()\"></eo-icon>\n </div>\n </div>\n\n <div class=\"section section-contexttype\" *ngIf=\"query.contextFolderTypes.length\">\n <div class=\"title\" translate>eo.search.aside.summary.contextfoldertypes</div>\n <div class=\"filter\" *ngFor=\"let type of query.contextFolderTypes\">\n <div class=\"label\">{{type.label}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeContextType()\"></eo-icon>\n </div>\n </div>\n\n <div class=\"section section-objecttype\" *ngIf=\"query.types.length\">\n <div class=\"title\" translate>eo.search.aside.summary.types</div>\n <div class=\"filter\" *ngFor=\"let type of query.types\">\n <div class=\"label\">{{type.label}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeType(type)\"></eo-icon>\n </div>\n </div>\n\n <ng-template #filterTemplate let-filter let-translate>\n <ng-container *ngIf=\"filter.innerValue.length\">\n <div class=\"filter\" *ngFor=\"let val of filter.innerValue; index as i\">\n <div class=\"label\">{{filter.label[i] | async}}</div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"resetFilter(filter, val)\"></eo-icon>\n </div>\n </ng-container>\n </ng-template>\n\n <div class=\"section section-creation\"\n *ngIf=\"filtersModel[PARAMS.CREATED].innerValue?.length || filtersModel[PARAMS.CREATOR].innerValue?.length\">\n <div class=\"title\" translate>eo.search.restrict.creation</div>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.CREATED] }\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.CREATOR] }\"></ng-template>\n </div>\n\n <div class=\"section section-modification\"\n *ngIf=\"filtersModel[PARAMS.MODIFIED].innerValue?.length || filtersModel[PARAMS.MODIFIER].innerValue?.length\">\n <div class=\"title\" translate>eo.search.restrict.modification</div>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MODIFIED] }\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MODIFIER] }\"></ng-template>\n </div>\n\n <div class=\"section section-mimetypegroup\"\n *ngIf=\"filtersModel[PARAMS.MIMETYPEGROUP].innerValue.length || filtersModel[PARAMS.FILESIZE].innerValue.length || filtersModel[PARAMS.FILENAME].innerValue.length\">\n <div class=\"title\" translate>eo.search.restrict.file</div>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MIMETYPEGROUP] }\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.FILESIZE] }\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.FILENAME] }\"></ng-template>\n </div>\n </section>\n\n <div class=\"actions\" *ngIf=\"query.term || query.filters.length || query.types.length; else emptySearch\">\n\n <ng-container *ngIf=\"isStoredQuery; else regactions\">\n <button class=\"secondary btn-reset\" (click)=\"resetQuery()\" translate>eo.search.storedquery.close</button>\n <button class=\"primary grey btn-update\" (click)=\"updateStoredQuery()\"\n *ngIf=\"capabilities.storedqueries && isOwnQuery\" translate>eo.search.storedquery.update</button>\n <button class=\"primary grey btn-save\" (click)=\"saveQuery()\"\n *ngIf=\"capabilities.storedqueries && !isOwnQuery\" translate>eo.search.save</button>\n <button class=\"primary btn-submit\" (click)=\"executeSearch()\" [disabled]=\"queryState.isEmpty\"\n translate>eo.search.submit</button>\n </ng-container>\n\n <ng-template #regactions>\n <button class=\"primary grey btn-reset\" (click)=\"resetQuery()\" translate>eo.search.reset</button>\n <button class=\"primary grey btn-save\" (click)=\"saveQuery()\"\n *ngIf=\"capabilities.storedqueries && !isOwnQuery\" translate>eo.search.save</button>\n <button class=\"primary btn-submit\" (click)=\"executeSearch()\" [disabled]=\"queryState.isEmpty\"\n translate>eo.search.submit</button>\n </ng-template>\n\n\n </div>\n\n <ng-template #emptySearch>\n <div class=\"empty-search\" translate>eo.search.summary.empty</div>\n </ng-template>\n\n </div>\n\n\n </div>\n\n <!-- expert mode body panel containing explanations -->\n <ng-template #expert>\n <div class=\"body expert\">\n\n <div class=\"empty\" *ngIf=\"expertModeQueryEmpty\"><span translate>eo.search.mode.expert.result.empty</span></div>\n\n <!--\n <h2><span translate>eo.search.mode.expert</span></h2>\n <div class=\"intro\" translate>eo.search.mode.expert.intro</div>\n\n <div class=\"base-params fields\">\n <h2 translate>eo.search.mode.expert.support.baseparams</h2>\n <div class=\"items\">\n <div class=\"item\" *ngFor=\"let el of expertModeSupport.baseParams\" (click)=\"xpAddToTerm(el.data)\">\n <div class=\"label\"><span>{{el.label}}</span></div>\n <div class=\"data\">{{el.data}}</div>\n </div>\n </div>\n </div>\n\n <div class=\"system-types fields\">\n\n <div class=\"column column-group\">\n <h2 translate>eo.search.mode.expert.support.group</h2>\n <div class=\"items\">\n <div class=\"item\" *ngFor=\"let group of typeGroupTree\"\n [ngClass]=\"{selected: expertModeSupport.selectedGroup && group.id === expertModeSupport.selectedGroup.id}\"\n (click)=\"xpSelectGroup(group)\">\n <div *ngIf=\"group.label !== '0'\">{{group.label}}</div>\n <div *ngIf=\"group.label === '0'\">{{'eo.search.group.general' | translate}}</div>\n </div>\n </div>\n </div>\n\n <div class=\"column column-type\" *ngIf=\"expertModeSupport.selectedGroup\">\n <h2 translate>eo.search.mode.expert.support.type</h2>\n <div class=\"items\">\n <div class=\"item\" *ngFor=\"let type of expertModeSupport.selectedGroup.tree\"\n [ngClass]=\"{selected: expertModeSupport.selectedType && type.id === expertModeSupport.selectedType.id}\"\n (click)=\"xpSelectType(type)\">\n <div>{{type.label}}</div>\n </div>\n </div>\n </div>\n\n <div class=\"column section-field\" *ngIf=\"expertModeSupport.selectedType\">\n <h2 translate>eo.search.mode.expert.support.field</h2>\n <div class=\"items\">\n <div class=\"item\" *ngFor=\"let el of expertModeSupport.selectedType.children\" (click)=\"xpAddToTerm(el.data)\">\n <div class=\"label\"><span>{{el.label}}</span><span class=\"type\">{{el.type}}</span></div>\n <div class=\"data\">{{el.data}}</div>\n </div>\n </div>\n </div>\n\n </div>\n\n -->\n </div>\n </ng-template>\n </div>\n <!-- </eo-dialog> -->\n</ng-template>\n", styles: ["eo-app-search dialog{height:100vh;margin:0!important;max-height:100vh;max-block-size:100%!important;min-width:500px;width:80%}@media screen and (max-width: 500px){.eo-app-search-dialog{width:100%!important;min-width:inherit}}.eo-app-search-dialog .eo-dialog-content{overflow:inherit;max-height:100%}.eo-app-search-dialog .eo-dialog-header{display:none}.eo-app-search.rtl .head .close{right:auto;left:var(--app-pane-padding)}.eo-app-search.rtl .body .indexdata-search h2 eo-icon{transform:rotate(180deg)}.eo-app-search{--search-min-width: 500px;--search-box-max-width: 600px;--search-summary-width: 350px;width:80vw;height:100vh;background:var(--panel-background-grey);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}.eo-app-search .head{background:var(--color-primary-2);flex:0 0 auto;color:var(--color-white);position:relative;display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) calc(var(--app-pane-padding) / 2) 0 calc(var(--app-pane-padding) / 2)}.eo-app-search .head .search{flex:1 1 auto;justify-content:space-between;margin:0 calc(var(--app-pane-padding) / 2);z-index:2;min-width:fill-available;min-width:-webkit-fill-available;min-width:-moz-available}.eo-app-search .head .search .title{font-size:var(--font-display);font-weight:var(--font-weight-light);min-height:1em;line-height:1em}@media screen and (max-width: 480px){.eo-app-search .head .search .title{font-size:var(--font-title)}}.eo-app-search .head .search .query-scope{margin:calc(var(--app-pane-padding) * 2) 0 0 0;min-width:var(--search-min-width);max-width:var(--search-box-max-width)}.eo-app-search .head .search .search-box{margin-bottom:var(--app-pane-padding);display:flex;flex-flow:row nowrap;align-items:stretch;background:var(--color-white);max-width:var(--search-box-max-width);box-shadow:0 2px 2px rgba(var(--color-black-rgb),.2)}@media screen and (max-width: 480px){.eo-app-search .head .search .search-box{margin-top:var(--app-pane-padding)}}.eo-app-search .head .search .search-box yvc-autocomplete{flex:1 1 auto;background:transparent;outline:0;border:0}.eo-app-search .head .search .search-box yvc-autocomplete span.ui-autocomplete{width:100%}.eo-app-search .head .search .search-box input{width:100%;border:0;box-sizing:border-box;padding:calc(var(--app-pane-padding) / 2);font-size:var(--font-title)}.eo-app-search .head .search .search-box input::-ms-clear{display:none}.eo-app-search .head .search .search-box button[type=submit]{background:var(--color-accent);color:var(--color-white);border:0;padding:0 var(--app-pane-padding);font-size:var(--font-subhead)}.eo-app-search .head .search .search-box button.expert-mode{padding:0 calc(var(--app-pane-padding) / 2);background:transparent;border:0;color:var(--text-color-hint);display:flex;align-items:center}.eo-app-search .head .search .search-box button.expert-mode:focus{color:var(--color-accent)}.eo-app-search .head .search .search-box button.expert-mode__reset{opacity:0;width:0;padding:0;transition:all .2s ease-in-out}.eo-app-search .head .search .search-box button.expert-mode__reset.active{opacity:1;width:40px;padding:0 8px}.eo-app-search .head .search .search-box button.expert-mode span{display:none;padding:calc(var(--app-pane-padding) / 4);white-space:nowrap;animation:eoFadeIn var(--app-default-transition-duration)}.eo-app-search .head .search .search-box button.expert-mode:hover{color:var(--color-accent)}.eo-app-search .head .search .search-box button.expert-mode:hover span{display:block}.eo-app-search .head .result{position:absolute;right:var(--app-pane-padding);top:calc(var(--app-pane-padding) * 2.5);z-index:1;font-size:7em;line-height:1em;opacity:.1}@media screen and (max-width: 900px){.eo-app-search .head .result{font-size:3em;right:calc(var(--app-pane-padding) * 3);top:var(--app-pane-padding)}}.eo-app-search .head .search-aggregator__loader{z-index:11;position:absolute;right:13%;top:30%;-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}@media screen and (max-width: 900px){.eo-app-search .head .search-aggregator__loader{top:5%}}.eo-app-search .head .close{position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding);z-index:2}.eo-app-search .body{background:rgba(var(--color-white-rgb),.2);flex:1 1 auto;position:relative}@media screen and (max-width: 1000px){.eo-app-search .body .summary-panel{bottom:0;right:0!important;left:0!important;top:auto!important;width:auto!important;display:flex;flex-flow:row nowrap}.eo-app-search .body .summary-panel .headline:not(.stored-query),.eo-app-search .body .summary-panel .section{display:none}.eo-app-search .body .summary-panel .headline.stored-query{margin-bottom:0;display:flex;align-items:center;padding:0 var(--app-pane-padding)}.eo-app-search .body .summary-panel .headline.stored-query .pre{display:none}.eo-app-search .body .summary-panel .headline.stored-query .stored-query-name{font-size:var(--font-subhead)!important}.eo-app-search .body .summary-panel .actions{flex:1 1 auto}.eo-app-search .body yvc-tabs>section[role=tabpanel]{padding-right:0!important;padding-left:0!important}}.eo-app-search .body>yvc-tabs{position:absolute;inset:0}.eo-app-search .body>yvc-tabs>header{--text-color-body: #fff;--text-color-hint: rgba(255,255,255,.7);background:var(--color-primary-2)}.eo-app-search .body>yvc-tabs>section[role=tabpanel]{padding:calc(var(--app-pane-padding) - var(--app-pane-padding) / 2) calc(var(--app-pane-padding) * 2 + var(--search-summary-width)) 0 calc(var(--app-pane-padding) - 2px)}.eo-app-search .body .summary-panel{background:rgba(var(--color-black-rgb),.06);width:var(--search-summary-width);position:absolute;top:calc(var(--app-pane-padding) + var(--eo-tab-nav-height));right:var(--app-pane-padding);box-sizing:border-box}.eo-app-search .body .summary-panel .query-types{overflow:auto;max-height:calc(100vh - 290px)}.eo-app-search .body .summary-panel .headline{line-height:1em;font-size:var(--font-subhead);font-weight:var(--font-weight-light);color:var(--text-color-caption);margin-bottom:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 2)}.eo-app-search .body .summary-panel .headline .spaceInbetwen{display:flex;align-items:center}.eo-app-search .body .summary-panel .headline .spaceInbetwen .savedSearchIcon{display:block;padding:calc(var(--app-pane-padding) / 4) 0}.eo-app-search .body .summary-panel .headline .spaceInbetwen .savedSearchIcon eo-icon{--eoSvgIcon-size: 44px}.eo-app-search .body .summary-panel .headline .spaceInbetwen .store{display:block;min-height:0;min-width:0;padding-left:12px}.eo-app-search .body .summary-panel .headline .spaceInbetwen .store .pre{padding:calc(var(--app-pane-padding) / 2) 0}.eo-app-search .body .summary-panel .headline .spaceInbetwen .store .stored-query-name{font-size:var(--font-title);padding:calc(var(--app-pane-padding) / 2) 0;line-height:1.2em}.eo-app-search .body .summary-panel .headline.stored-query{background:var(--color-primary-3);color:var(--color-white);font-size:var(--font-body)}.eo-app-search .body .summary-panel .empty-search{padding:var(--app-pane-padding) calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-app-search .body .summary-panel .section{padding:calc(var(--app-pane-padding) / 2);max-height:calc(100vh - 280px);overflow-y:auto}.eo-app-search .body .summary-panel .section .title{border-bottom:1px solid rgba(var(--color-black-rgb),.1);padding-bottom:calc(var(--app-pane-padding) / 4);color:var(--text-color-caption)}.eo-app-search .body .summary-panel .filter{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;background:rgba(var(--color-white-rgb),.6);margin-top:4px;align-items:center}.eo-app-search .body .summary-panel .filter .label{display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;padding:0 0 0 calc(var(--app-pane-padding) / 4)}.eo-app-search .body .summary-panel .filter eo-icon{flex:0 0 auto;padding:calc(var(--app-pane-padding) / 4);box-sizing:border-box;cursor:pointer;color:var(--text-color-hint)}.eo-app-search .body .summary-panel .filter eo-icon:hover{color:var(--text-color-caption)}.eo-app-search .body .summary-panel .actions{display:flex;justify-content:flex-end;padding:calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2 - 2px)}.eo-app-search .body .summary-panel .actions button{margin:0 2px;line-height:1em;font-size:var(--font-hint)}.eo-app-search .body .ui-tabview .ui-tabview-panel{padding:calc(var(--app-pane-padding) / 2)}.eo-app-search .body .ui-tabview .ui-tabview-panel h2{margin:0 0 calc(var(--app-pane-padding) * 1.5) 0;padding:0;font-weight:var(--font-weight-light);font-size:var(--font-title);color:var(--text-color-caption)}.eo-app-search .body .rest-box-container{display:flex;flex-flow:row wrap;align-items:stretch}.eo-app-search .body .rest-box-container .rest-box{margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 2);background:var(--color-white);flex:1 1 auto}.eo-app-search .body .rest-box-container .rest-box h3{margin:0 0 var(--app-pane-padding) 0;padding:0;font-size:var(--font-caption);font-weight:var(--font-weight-normal);color:var(--text-color-caption)}.eo-app-search .body .rest-box-container .rest-box .rest-item{display:flex;flex:1 1 auto;flex-flow:row nowrap;align-items:center;padding:calc(var(--app-pane-padding) / 2);margin:0 calc(var(--app-pane-padding) / 4);color:var(--text-color-body)}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected{background:var(--color-primary-3);color:var(--color-white)}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover{background:var(--list-item-hover-background)}.eo-app-search .body .rest-box-container .rest-box .label{flex:1 1 auto;padding:0 calc(var(--app-pane-padding) / 2)}.eo-app-search .body .rest-box-container .rest-box .count{font-size:var(--font-caption);min-width:30px;text-align:right;font-weight:var(--font-weight-bold)}.eo-app-search .body .object-types .group .group-header .move-icons{display:none}.eo-app-search .body .object-types .group .type{display:flex;flex-flow:row nowrap;align-items:center;padding:1px 0}.eo-app-search .body .object-types .group .type.context{font-weight:var(--font-weight-bold)}.eo-app-search .body .object-types .group .type.folder .item eo-icon{background:rgba(var(--color-black-rgb),.15)}.eo-app-search .body .object-types .group .type.folder .item:hover eo-icon{background:rgba(var(--color-white-rgb),.3)}.eo-app-search .body .object-types .group .type.abstract .item{color:var(--text-color-caption)}.eo-app-search .body .object-types .group .type.abstract .item:hover{background:var(--color-primary-3);color:var(--panel-background)}.eo-app-search .body .object-types .group .type .item{display:flex;flex:1 1 auto;border-radius:2px;flex-flow:row nowrap;align-items:center;padding:calc(var(--app-pane-padding) / 2);margin:0 calc(var(--app-pane-padding) / 4);cursor:default;color:var(--text-color-body)}.eo-app-search .body .object-types .group .type .item eo-icon{color:var(--text-color-caption);width:16px;height:16px;box-sizing:content-box;padding:2px;border-radius:2px;transition:none;-webkit-transition:none;-moz-transition:none;-o-transition:none}.eo-app-search .body .object-types .group:hover .group-header{display:flex;justify-content:space-between}.eo-app-search .body .object-types .group:hover .group-header .move-icons{display:flex}.eo-app-search .body .object-types .group:hover .group-header .move-left-icon,.eo-app-search .body .object-types .group:hover .group-header .move-right-icon,.eo-app-search .body .object-types .group:hover .group-header .move-left-first,.eo-app-search .body .object-types .group:hover .group-header .move-right-last{cursor:pointer;color:var(--text-color-caption)}.eo-app-search .body .object-types .group:hover .group-header .move-left-first{transform:rotate(180deg)}.eo-app-search .body .object-types .type .item{cursor:pointer}.eo-app-search .body .object-types .type .item:hover{background:var(--color-primary-3);color:var(--panel-background)}.eo-app-search .body .object-types .type .item:hover eo-icon{color:var(--panel-background)}.eo-app-search .body .indexdata-search{padding:calc(var(--app-pane-padding) / 2) 0 0 calc(var(--app-pane-padding) / 2)}.eo-app-search .body .indexdata-search h2{display:flex;flex-flow:row;align-items:center}.eo-app-search .body .indexdata-search h2 eo-icon{margin:0 calc(var(--app-pane-padding) / 2)}.eo-app-search .body .indexdata-search h2 span{padding:0 calc(var(--app-pane-padding) / 4)}.eo-app-search .body .indexdata-search .context{margin-bottom:var(--app-pane-padding)}.eo-app-search .body .indexdata-search .context .context-select{display:flex;align-items:center;flex-flow:row wrap;padding-bottom:1px}.eo-app-search .body .indexdata-search .context .context-select .spacer{width:var(--app-pane-padding)}.eo-app-search .body .indexdata-search eo-object-form{border:1px solid rgba(var(--color-black-rgb),.1)}.eo-app-search .body .indexdata-search eo-object-form.dark{display:block;background-color:var(--color-primary-2)}.eo-app-search.rtl{left:0;right:0;animation:appSearchAppearRTL var(--app-default-transition-duration)}.eo-app-search.rtl .head .result,.eo-app-search.rtl .body .summary-panel{right:auto;left:var(--app-pane-padding)}.eo-app-search.rtl .body yvc-tabs{padding-right:0;padding-left:calc(var(--app-pane-padding) * 2 + var(--search-summary-width));padding-bottom:0;padding-top:0}.eo-app-search.expert .head .result{display:none}.eo-app-search.expert .head .search .search-box{max-width:100%}.eo-app-search.expert .head .search .search-box button.expert-mode{color:var(--color-accent)}.eo-app-search.expert .body{background:var(--color-primary-2);color:var(--color-white);display:flex;flex-flow:column}.eo-app-search.expert .body h2{flex:0 0 auto;padding:0;margin:var(--app-pane-padding) 0;font-size:var(--font-title);font-weight:var(--font-weight-light)}.eo-app-search.expert .body h2 span{padding:calc(var(--app-pane-padding) / 2) 0 calc(var(--app-pane-padding) / 2) var(--app-pane-padding);border-bottom:4px solid var(--color-accent)}.eo-app-search.expert .body .intro{flex:0 0 auto;padding:var(--app-pane-padding)}.eo-app-search.expert .body .empty{flex:0 0 auto;padding:0 var(--app-pane-padding)}.eo-app-search.expert .body .empty span{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px;background:var(--color-error);color:var(--color-white)}.eo-app-search.expert .body .fields h2{margin:calc(var(--app-pane-padding) / 2);flex:0 0 auto;padding:calc(var(--app-pane-padding) / 2);border-bottom:1px solid rgba(var(--color-white-rgb),.3)}.eo-app-search.expert .body .fields .item{padding:calc(var(--app-pane-padding) / 2);cursor:pointer;border-radius:2px;background:rgba(var(--color-white-rgb),.06);margin-bottom:4px;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-app-search.expert .body .fields .item:hover,.eo-app-search.expert .body .fields .item.selected{background:rgba(var(--color-white-rgb),.2)}.eo-app-search.expert .body .fields .item .label{font-weight:var(--font-weight-bold);display:flex;justify-content:space-between}.eo-app-search.expert .body .fields .item .label .type{font-size:var(--font-hint);opacity:.5}.eo-app-search.expert .body .fields .item .data{opacity:.75}.eo-app-search.expert .body .base-params{padding:calc(var(--app-pane-padding) / 2)}.eo-app-search.expert .body .base-params .items{display:flex;flex-flow:row wrap;padding:calc(var(--app-pane-padding) / 4)}.eo-app-search.expert .body .base-params .items .item{margin:calc(var(--app-pane-padding) / 4)}.eo-app-search.expert .body .system-types{flex:1 1 auto;display:flex;flex-flow:row;justify-content:flex-start;align-items:stretch;padding:calc(var(--app-pane-padding) / 2)}.eo-app-search.expert .body .system-types .column{flex:0 0 33%;box-sizing:border-box;display:flex;flex-flow:column}.eo-app-search.expert .body .system-types .column .items{padding:calc(var(--app-pane-padding) / 2);flex:1 1 auto;overflow-y:auto}.eo-app-search.expert .body .system-types .column .items::-webkit-scrollbar-thumb{background-color:rgba(var(--color-white-rgb),.1)}.eo-app-search .body .rest-box-container .rest-box .rest-item .checkbox,.eo-app-search .body .rest-box-container .rest-box .type .checkbox{width:20px;height:20px;cursor:pointer;border:1px solid var(--text-color-hint);border-radius:2px;margin:0 calc(var(--app-pane-padding) / 2)}.eo-app-search .body .rest-box-container .rest-box .rest-item .checkbox svg,.eo-app-search .body .rest-box-container .rest-box .type .checkbox svg{opacity:0}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover .checkbox:hover,.eo-app-search .body .rest-box-container .rest-box .type:not(.selected):hover .checkbox:hover{border-color:var(--text-color-caption)}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover .checkbox:hover svg,.eo-app-search .body .rest-box-container .rest-box .type:not(.selected):hover .checkbox:hover svg{fill:var(--text-color-body);opacity:.3}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected .checkbox,.eo-app-search .body .rest-box-container .rest-box .type.selected .checkbox{background:var(--color-primary-3);border-color:var(--color-primary-3)}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected .checkbox svg,.eo-app-search .body .rest-box-container .rest-box .type.selected .checkbox svg{fill:var(--color-white)!important;opacity:1}.eo-app-search .body .rest-box-container .rest-box .rest-item .count,.eo-app-search .body .rest-box-container .rest-box .type .count{font-weight:var(--font-weight-normal)}@keyframes appSearchAppear{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes appSearchAppearRTL{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}\n"] }]
|
|
16838
17021
|
}], ctorParameters: () => [{ type: AppSearchService }, { type: i2$2.YvcOverlayService }, { type: i1.SearchService }, { type: i1.SystemService }, { type: i1.NotificationsService }, { type: i1.TranslateService }, { type: i2$1.Router }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.StoredQueriesService }, { type: i1.CapabilitiesService }, { type: i1.UserService }, { type: i1.Logger }, { type: i1.LocalStorageService }, { type: i1$3.FormBuilder }], propDecorators: { tplSearch: [{
|
|
16839
17022
|
type: ViewChild,
|
|
16840
17023
|
args: ['tplSearch', { read: TemplateRef }]
|
|
@@ -17005,7 +17188,7 @@ class AppAddDialogComponent {
|
|
|
17005
17188
|
return index;
|
|
17006
17189
|
}
|
|
17007
17190
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AppAddDialogComponent, deps: [{ token: i1.PrepareService }, { token: i2$1.Router }, { token: i1.SystemService }, { token: i1.TranslateService }, { token: PendingChangesService }, { token: LocationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17008
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: AppAddDialogComponent, selector: "eo-app-add-dialog", outputs: { onClose: "onClose" }, ngImport: i0, template: "<section class=\"autocomplete\">\n <yvc-autocomplete [(ngModel)]=\"selectedNode\" \n #autocomplete\n [autocompleteValues]=\"autocompleteRes\" field=\"label\"\n [forceSelection]=\"true\"\n (suggestionSelect)=\"onSelect($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n \n <ng-template let-item #chipTemplate>\n <span class=\"ui-autocomplete-token-label\" title=\"{{item.label}} ({{item.location}})\">\n <strong>{{item.label}}</strong>\n <span>{{item.location}}</span>\n </span>\n </ng-template>\n </yvc-autocomplete>\n</section>\n\n<section class=\"type-lists\">\n <section class=\"section location\" *ngIf=\"locationParent\">\n <div class=\"subhead\"><span translate>eo.add.title.location</span><span> \"{{locationParent.title}}\"</span></div>\n <div class=\"type sub\" (click)=\"addToSubfolder()\" *ngIf=\"subfolder\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_create_new_folder.svg'\"></eo-icon>\n <div>\n <div class=\"label\">{{'eo.add.title.location.subfolder'|translate: ({folder: subfolder.title})}}</div>\n <div class=\"group\">{{subFolderDescription}}</div>\n </div>\n </div>\n <div class=\"type\" *ngFor=\"let type of locationTypes; trackBy: trackByFn\" (click)=\"prepare(type)\">\n <eo-icon [objectType]=\"type\"></eo-icon>\n <div>\n <div class=\"label\">{{type.label}}</div>\n <div class=\"group\">{{type.group}}</div>\n </div>\n </div>\n </section>\n \n <section class=\"section general\" *ngIf=\"rootTypes.length; else noRootTypes\">\n <div class=\"subhead\"><span translate>eo.add.title.location.common</span></div>\n <div class=\"type\" *ngFor=\"let type of rootTypes; trackBy: trackByFn\"\n [ngClass]=\"{context: type.isContextFolder}\"\n (click)=\"prepare(type, true)\">\n <eo-icon [objectType]=\"type\"></eo-icon>\n <div tabindex=\"0\" (keydown.enter)=\"prepare(type, true)\">\n <div class=\"label\">{{type.label}}</div>\n <div class=\"group\">{{type.group}}</div>\n </div>\n </div>\n </section>\n</section>\n\n<ng-template #noRootTypes>\n <div *ngIf=\"!locationParent\">\n <span class=\"empty__root-types\" translate>eo.add.empty.root.types</span>\n </div>\n</ng-template>\n", styles: ["::ng-deep .eo-dialog-content.add--content{max-height:620px;overflow:hidden}:host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}:host ::ng-deep yvc-autocomplete{width:100%}:host ::ng-deep yvc-autocomplete input{border:0;padding:calc(var(--app-pane-padding) / 2);font-size:var(--font-title);box-shadow:0 2px 2px #0003;background-color:#fff;width:100%;box-sizing:border-box}:host .autocomplete{display:flex;background-color:var(--color-accent);padding:var(--app-pane-padding)}:host .type-lists{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;padding:var(--app-pane-padding) 0;overflow-y:auto}:host .type-lists .section{padding:0 var(--app-pane-padding)}:host .type-lists .section .subhead{padding:calc(var(--app-pane-padding) / 2);margin:0;font-weight:var(--font-weight-normal);color:var(--color-accent);font-size:var(--font-subhead)}:host .type-lists .section .type{display:flex;align-items:center;flex-flow:row nowrap;transition:background-color var(--app-default-transition-duration) ease-in-out;-webkit-transition:background-color var(--app-default-transition-duration) ease-in-out;-moz-transition:background-color var(--app-default-transition-duration) ease-in-out;-o-transition:background-color var(--app-default-transition-duration) ease-in-out;padding:calc(var(--app-pane-padding) / 4) var(--app-pane-padding);border-top:1px solid rgba(var(--color-black-rgb),.06);cursor:pointer}:host .type-lists .section .type.context>div:focus{background-color:var(--panel-background-grey)}:host .type-lists .section .type.context>div .label{font-weight:var(--font-weight-bold)}:host .type-lists .section .type.context>div eo-icon{background-color:rgba(var(--color-black-rgb),.15)}:host .type-lists .section .type.sub{padding-top:calc(var(--app-pane-padding) / 2);padding-bottom:calc(var(--app-pane-padding) / 2)}:host .type-lists .section .type.sub>div .label{font-weight:var(--font-weight-bold)}:host .type-lists .section .type eo-icon{flex:0 0 auto;width:18px;height:18px;box-sizing:content-box;padding:2px;border-radius:2px;color:var(--text-color-caption)}:host .type-lists .section .type>div{flex:1 1 auto;padding:0 var(--app-pane-padding)}:host .type-lists .section .type>div:focus{background-color:var(--panel-background-grey)}:host .type-lists .section .type>div .label{color:var(--text-color-body)}:host .type-lists .section .type>div .group{color:var(--text-color-caption);font-size:var(--font-hint)}:host .type-lists .section .type:hover{background-color:var(--panel-background-grey)}:host .type-lists .empty__root-types{padding:8px}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "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:
|
|
17191
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: AppAddDialogComponent, selector: "eo-app-add-dialog", outputs: { onClose: "onClose" }, ngImport: i0, template: "<section class=\"autocomplete\">\n <yvc-autocomplete [(ngModel)]=\"selectedNode\" \n #autocomplete\n [autocompleteValues]=\"autocompleteRes\" field=\"label\"\n [forceSelection]=\"true\"\n (suggestionSelect)=\"onSelect($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n \n <ng-template let-item #chipTemplate>\n <span class=\"ui-autocomplete-token-label\" title=\"{{item.label}} ({{item.location}})\">\n <strong>{{item.label}}</strong>\n <span>{{item.location}}</span>\n </span>\n </ng-template>\n </yvc-autocomplete>\n</section>\n\n<section class=\"type-lists\">\n <section class=\"section location\" *ngIf=\"locationParent\">\n <div class=\"subhead\"><span translate>eo.add.title.location</span><span> \"{{locationParent.title}}\"</span></div>\n <div class=\"type sub\" (click)=\"addToSubfolder()\" *ngIf=\"subfolder\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_create_new_folder.svg'\"></eo-icon>\n <div>\n <div class=\"label\">{{'eo.add.title.location.subfolder'|translate: ({folder: subfolder.title})}}</div>\n <div class=\"group\">{{subFolderDescription}}</div>\n </div>\n </div>\n <div class=\"type\" *ngFor=\"let type of locationTypes; trackBy: trackByFn\" (click)=\"prepare(type)\">\n <eo-icon [objectType]=\"type\"></eo-icon>\n <div>\n <div class=\"label\">{{type.label}}</div>\n <div class=\"group\">{{type.group}}</div>\n </div>\n </div>\n </section>\n \n <section class=\"section general\" *ngIf=\"rootTypes.length; else noRootTypes\">\n <div class=\"subhead\"><span translate>eo.add.title.location.common</span></div>\n <div class=\"type\" *ngFor=\"let type of rootTypes; trackBy: trackByFn\"\n [ngClass]=\"{context: type.isContextFolder}\"\n (click)=\"prepare(type, true)\">\n <eo-icon [objectType]=\"type\"></eo-icon>\n <div tabindex=\"0\" (keydown.enter)=\"prepare(type, true)\">\n <div class=\"label\">{{type.label}}</div>\n <div class=\"group\">{{type.group}}</div>\n </div>\n </div>\n </section>\n</section>\n\n<ng-template #noRootTypes>\n <div *ngIf=\"!locationParent\">\n <span class=\"empty__root-types\" translate>eo.add.empty.root.types</span>\n </div>\n</ng-template>\n", styles: ["::ng-deep .eo-dialog-content.add--content{max-height:620px;overflow:hidden}:host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}:host ::ng-deep yvc-autocomplete{width:100%}:host ::ng-deep yvc-autocomplete input{border:0;padding:calc(var(--app-pane-padding) / 2);font-size:var(--font-title);box-shadow:0 2px 2px #0003;background-color:#fff;width:100%;box-sizing:border-box}:host .autocomplete{display:flex;background-color:var(--color-accent);padding:var(--app-pane-padding)}:host .type-lists{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;padding:var(--app-pane-padding) 0;overflow-y:auto}:host .type-lists .section{padding:0 var(--app-pane-padding)}:host .type-lists .section .subhead{padding:calc(var(--app-pane-padding) / 2);margin:0;font-weight:var(--font-weight-normal);color:var(--color-accent);font-size:var(--font-subhead)}:host .type-lists .section .type{display:flex;align-items:center;flex-flow:row nowrap;transition:background-color var(--app-default-transition-duration) ease-in-out;-webkit-transition:background-color var(--app-default-transition-duration) ease-in-out;-moz-transition:background-color var(--app-default-transition-duration) ease-in-out;-o-transition:background-color var(--app-default-transition-duration) ease-in-out;padding:calc(var(--app-pane-padding) / 4) var(--app-pane-padding);border-top:1px solid rgba(var(--color-black-rgb),.06);cursor:pointer}:host .type-lists .section .type.context>div:focus{background-color:var(--panel-background-grey)}:host .type-lists .section .type.context>div .label{font-weight:var(--font-weight-bold)}:host .type-lists .section .type.context>div eo-icon{background-color:rgba(var(--color-black-rgb),.15)}:host .type-lists .section .type.sub{padding-top:calc(var(--app-pane-padding) / 2);padding-bottom:calc(var(--app-pane-padding) / 2)}:host .type-lists .section .type.sub>div .label{font-weight:var(--font-weight-bold)}:host .type-lists .section .type eo-icon{flex:0 0 auto;width:18px;height:18px;box-sizing:content-box;padding:2px;border-radius:2px;color:var(--text-color-caption)}:host .type-lists .section .type>div{flex:1 1 auto;padding:0 var(--app-pane-padding)}:host .type-lists .section .type>div:focus{background-color:var(--panel-background-grey)}:host .type-lists .section .type>div .label{color:var(--text-color-body)}:host .type-lists .section .type>div .group{color:var(--text-color-caption);font-size:var(--font-hint)}:host .type-lists .section .type:hover{background-color:var(--panel-background-grey)}:host .type-lists .empty__root-types{padding:8px}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "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: i10.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
17009
17192
|
}
|
|
17010
17193
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AppAddDialogComponent, decorators: [{
|
|
17011
17194
|
type: Component,
|
|
@@ -17438,20 +17621,158 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
|
|
|
17438
17621
|
}] } });
|
|
17439
17622
|
|
|
17440
17623
|
class UploadOverlayComponent {
|
|
17441
|
-
constructor(router, renderer, prepareService, translate, systemService, eventService, uploadRegistry) {
|
|
17624
|
+
constructor(router, renderer, prepareService, translate, userService, agentService, systemService, eventService, storageService, uploadRegistry) {
|
|
17442
17625
|
this.router = router;
|
|
17443
17626
|
this.renderer = renderer;
|
|
17444
17627
|
this.prepareService = prepareService;
|
|
17445
17628
|
this.translate = translate;
|
|
17629
|
+
this.userService = userService;
|
|
17630
|
+
this.agentService = agentService;
|
|
17446
17631
|
this.systemService = systemService;
|
|
17447
17632
|
this.eventService = eventService;
|
|
17633
|
+
this.storageService = storageService;
|
|
17448
17634
|
this.uploadRegistry = uploadRegistry;
|
|
17449
17635
|
this.queue = [];
|
|
17450
17636
|
this.validUploadTargets = [];
|
|
17637
|
+
this.folderFavorites = [];
|
|
17638
|
+
this.lastOpenedFolder = [];
|
|
17639
|
+
this.targetTypes = [
|
|
17640
|
+
{
|
|
17641
|
+
type: 'root',
|
|
17642
|
+
iconSrc: 'assets/_default/svg/ic_create_document.svg',
|
|
17643
|
+
targetClass: 'upload-target-general',
|
|
17644
|
+
name: 'eo.upload.global.root.title',
|
|
17645
|
+
description: 'eo.upload.global.root.description'
|
|
17646
|
+
},
|
|
17647
|
+
{
|
|
17648
|
+
type: 'object',
|
|
17649
|
+
iconSrc: 'assets/_default/svg/ic_document_file.svg',
|
|
17650
|
+
targetClass: 'upload-target-replace',
|
|
17651
|
+
name: 'eo.upload.global.object.title'
|
|
17652
|
+
},
|
|
17653
|
+
{
|
|
17654
|
+
type: 'context',
|
|
17655
|
+
iconSrc: 'assets/_default/svg/ic_create_document_in_folder.svg',
|
|
17656
|
+
targetClass: 'upload-target-context',
|
|
17657
|
+
name: 'eo.upload.global.context.title',
|
|
17658
|
+
},
|
|
17659
|
+
{
|
|
17660
|
+
type: 'contexttree',
|
|
17661
|
+
iconSrc: 'assets/_default/svg/ic_create_document_in_folder.svg',
|
|
17662
|
+
targetClass: 'upload-target-contexttree',
|
|
17663
|
+
name: 'eo.add.title.location.subfolder'
|
|
17664
|
+
},
|
|
17665
|
+
{
|
|
17666
|
+
type: 'custom',
|
|
17667
|
+
iconSrc: 'assets/_default/svg/ic_upload.svg',
|
|
17668
|
+
targetClass: 'upload-target-custom',
|
|
17669
|
+
name: '',
|
|
17670
|
+
}
|
|
17671
|
+
];
|
|
17451
17672
|
this.uploadTargets = [];
|
|
17452
17673
|
this.dragEventCount = 0;
|
|
17674
|
+
this.cacheKey = 'accordion.state--';
|
|
17675
|
+
this.datePipe = new LocaleDatePipe(translate);
|
|
17676
|
+
}
|
|
17677
|
+
ngOnInit() {
|
|
17678
|
+
this.init();
|
|
17679
|
+
}
|
|
17680
|
+
ngOnDestroy() {
|
|
17681
|
+
if (this.dragEnterListener) {
|
|
17682
|
+
this.dragEnterListener();
|
|
17683
|
+
}
|
|
17684
|
+
}
|
|
17685
|
+
/**
|
|
17686
|
+
* Proceed upload with a selected upload target.
|
|
17687
|
+
* @param uploadTarget - the target to upload files to
|
|
17688
|
+
*/
|
|
17689
|
+
proceedWithUpload(uploadTarget) {
|
|
17690
|
+
if (uploadTarget.type !== UploadTarget.CUSTOM && this.queue.length > 1) {
|
|
17691
|
+
// For more than one file to be uploaded to a none custom target, we let the user decide if
|
|
17692
|
+
// batch upload should be used or not ...
|
|
17693
|
+
this.selectedUploadTarget = uploadTarget;
|
|
17694
|
+
}
|
|
17695
|
+
else if (uploadTarget.type === UploadTarget.OBJECT) {
|
|
17696
|
+
// ... otherwise upload is started immediately
|
|
17697
|
+
this.startUpload(uploadTarget, [null, this.getStateRoute()]);
|
|
17698
|
+
}
|
|
17699
|
+
else {
|
|
17700
|
+
this.startUpload(uploadTarget, [null, '/prepare']);
|
|
17701
|
+
}
|
|
17702
|
+
}
|
|
17703
|
+
/**
|
|
17704
|
+
* Proceed upload using the selected upload target.
|
|
17705
|
+
* @param useBatchUpload - flag indicating whether or not to use batch upload
|
|
17706
|
+
*/
|
|
17707
|
+
proceedWithSelectedTarget(useBatchUpload) {
|
|
17708
|
+
this.startUpload(this.selectedUploadTarget, [useBatchUpload, '/prepare']);
|
|
17709
|
+
}
|
|
17710
|
+
/**
|
|
17711
|
+
* Resets the selected upload target.
|
|
17712
|
+
*/
|
|
17713
|
+
resetSelectedUploadTarget() {
|
|
17714
|
+
this.selectedUploadTarget = null;
|
|
17715
|
+
}
|
|
17716
|
+
/**
|
|
17717
|
+
* Removes a file from the list of files to be uploaded.
|
|
17718
|
+
* @param fileItem - the file item to be removed
|
|
17719
|
+
*/
|
|
17720
|
+
removeFileItem(fileItem) {
|
|
17721
|
+
this.queue = this.queue.filter((f) => f.id !== fileItem.id);
|
|
17722
|
+
if (!this.queue.length) {
|
|
17723
|
+
this.close();
|
|
17724
|
+
}
|
|
17725
|
+
else {
|
|
17726
|
+
// update available upload targets because their validity
|
|
17727
|
+
// may be based on the queue size
|
|
17728
|
+
this.validateUploadTargets();
|
|
17729
|
+
this.setQueueSize();
|
|
17730
|
+
}
|
|
17731
|
+
}
|
|
17732
|
+
getStateRoute() {
|
|
17733
|
+
return this.router.url;
|
|
17734
|
+
}
|
|
17735
|
+
onAgentToggle(info) {
|
|
17736
|
+
this.storageService.setItem(this.cacheKey + 'agent-folder', JSON.stringify(info));
|
|
17737
|
+
}
|
|
17738
|
+
onFavoriteToggle(info) {
|
|
17739
|
+
this.storageService.setItem(this.cacheKey + 'favorite-folder', JSON.stringify(info));
|
|
17740
|
+
}
|
|
17741
|
+
getFolder() {
|
|
17742
|
+
//folder from agent
|
|
17743
|
+
this.agentService.getLastOpenedFoldersInfo().subscribe((res) => {
|
|
17744
|
+
this.lastOpenedFolder = res.map((item) => {
|
|
17745
|
+
let target = new UploadTarget(item.id, 'agent', item?.title, this.systemService.getObjectType(item.type).iconId, item.type);
|
|
17746
|
+
target.description = item?.data?.description;
|
|
17747
|
+
return target;
|
|
17748
|
+
});
|
|
17749
|
+
this.lastOpenedFolder.forEach(target => target.onUploadSuccess = () => this.router.navigate(['/prepare']));
|
|
17750
|
+
});
|
|
17751
|
+
// Folder from favorite
|
|
17752
|
+
this.userService.getFavorites().subscribe((res) => {
|
|
17753
|
+
const favoritesFiltered = res.filter((item) => item.target.folder === true);
|
|
17754
|
+
this.folderFavorites = favoritesFiltered.map(item => {
|
|
17755
|
+
let target = new UploadTarget(item.target.id, 'favorite', item.title, item.target.icon.id, item.target.type);
|
|
17756
|
+
target.description = this.datePipe.transform(item.created);
|
|
17757
|
+
return target;
|
|
17758
|
+
});
|
|
17759
|
+
this.folderFavorites.forEach(target => target.onUploadSuccess = () => this.router.navigate(['/prepare']));
|
|
17760
|
+
});
|
|
17761
|
+
}
|
|
17762
|
+
/**
|
|
17763
|
+
* Close the upload overlay and release all bound resources.
|
|
17764
|
+
*/
|
|
17765
|
+
close() {
|
|
17766
|
+
// unbind bound event listener, when they are not needed anymore
|
|
17767
|
+
this.unbindListeners();
|
|
17768
|
+
// clear upload queue
|
|
17769
|
+
this.queue = [];
|
|
17770
|
+
// hide the overlay
|
|
17771
|
+
this.setFileOver(false);
|
|
17772
|
+
this.invalidInput = false;
|
|
17453
17773
|
}
|
|
17454
17774
|
init() {
|
|
17775
|
+
this.getFolder();
|
|
17455
17776
|
// global drag&drop upload will only be available on desktop (web or electron)
|
|
17456
17777
|
if (EnvironmentEnaio.isMobileEnvironment()) {
|
|
17457
17778
|
return false;
|
|
@@ -17511,7 +17832,7 @@ class UploadOverlayComponent {
|
|
|
17511
17832
|
// todo: replace by renderer solution when available (https://github.com/angular/angular/issues/15674)
|
|
17512
17833
|
this.overlayEl.nativeElement.focus();
|
|
17513
17834
|
// bind late (only, when needed) to dragleave event to avoid heavy processing on every drag event
|
|
17514
|
-
this.dragLeaveListener = this.renderer.listen(this.overlayEl.nativeElement, 'dragleave', (
|
|
17835
|
+
this.dragLeaveListener = this.renderer.listen(this.overlayEl.nativeElement, 'dragleave', () => {
|
|
17515
17836
|
this.dragEventCount--;
|
|
17516
17837
|
if (this.dragEventCount === 0) {
|
|
17517
17838
|
this.close();
|
|
@@ -17556,6 +17877,8 @@ class UploadOverlayComponent {
|
|
|
17556
17877
|
event.stopPropagation();
|
|
17557
17878
|
}
|
|
17558
17879
|
onFilesDropped(fileItems) {
|
|
17880
|
+
this.getFolder();
|
|
17881
|
+
this.getCachedAccordionState();
|
|
17559
17882
|
// clear queue when new files are added
|
|
17560
17883
|
// todo: remove in future releases to support collective file adding
|
|
17561
17884
|
this.queue = [];
|
|
@@ -17581,12 +17904,14 @@ class UploadOverlayComponent {
|
|
|
17581
17904
|
*/
|
|
17582
17905
|
validateUploadTargets() {
|
|
17583
17906
|
this.hasValidUploadTargets = true;
|
|
17907
|
+
this.getFolder();
|
|
17584
17908
|
forkJoin(this.uploadTargets.map(t => this.validateUploadTarget(t)))
|
|
17585
17909
|
.subscribe((res) => {
|
|
17586
17910
|
this.validUploadTargets = res.filter(r => r.valid).map(filtered => filtered.target).reverse().sort((a, b) => {
|
|
17587
17911
|
return a.type === 'context' ? -1 : b.type === 'context' ? 1 : 0; // Context should be on top
|
|
17588
17912
|
});
|
|
17589
|
-
|
|
17913
|
+
this.validUploadTargets = [...this.validUploadTargets, ...this.folderFavorites, ...this.lastOpenedFolder];
|
|
17914
|
+
}, () => {
|
|
17590
17915
|
this.validUploadTargets = [];
|
|
17591
17916
|
}, () => {
|
|
17592
17917
|
this.hasValidUploadTargets = this.validUploadTargets.length > 0;
|
|
@@ -17605,7 +17930,7 @@ class UploadOverlayComponent {
|
|
|
17605
17930
|
valid = this.queue.length > 0 && res.types.length > 0;
|
|
17606
17931
|
o.next({ target: target, valid: valid });
|
|
17607
17932
|
o.complete();
|
|
17608
|
-
},
|
|
17933
|
+
}, () => {
|
|
17609
17934
|
o.next({ target: target, valid: false });
|
|
17610
17935
|
o.complete();
|
|
17611
17936
|
});
|
|
@@ -17636,7 +17961,7 @@ class UploadOverlayComponent {
|
|
|
17636
17961
|
}
|
|
17637
17962
|
o.next({ target: target, valid: valid });
|
|
17638
17963
|
o.complete();
|
|
17639
|
-
},
|
|
17964
|
+
}, () => {
|
|
17640
17965
|
o.next({ target: target, valid: false });
|
|
17641
17966
|
o.complete();
|
|
17642
17967
|
});
|
|
@@ -17647,55 +17972,9 @@ class UploadOverlayComponent {
|
|
|
17647
17972
|
}
|
|
17648
17973
|
});
|
|
17649
17974
|
}
|
|
17650
|
-
|
|
17651
|
-
|
|
17652
|
-
|
|
17653
|
-
*/
|
|
17654
|
-
removeFileItem(fileItem) {
|
|
17655
|
-
this.queue = this.queue.filter((f) => f.id !== fileItem.id);
|
|
17656
|
-
if (!this.queue.length) {
|
|
17657
|
-
this.close();
|
|
17658
|
-
}
|
|
17659
|
-
else {
|
|
17660
|
-
// update available upload targets because their validity
|
|
17661
|
-
// may be based on the queue size
|
|
17662
|
-
this.validateUploadTargets();
|
|
17663
|
-
this.setQueueSize();
|
|
17664
|
-
}
|
|
17665
|
-
}
|
|
17666
|
-
/**
|
|
17667
|
-
* Proceed upload with a selected upload target.
|
|
17668
|
-
* @param uploadTarget - the target to upload files to
|
|
17669
|
-
*/
|
|
17670
|
-
proceedWithUpload(uploadTarget) {
|
|
17671
|
-
if (uploadTarget.type !== UploadTarget.CUSTOM && this.queue.length > 1) {
|
|
17672
|
-
// For more than one file to be uploaded to a none custom target, we let the user decide if
|
|
17673
|
-
// batch upload should be used or not ...
|
|
17674
|
-
this.selectedUploadTarget = uploadTarget;
|
|
17675
|
-
}
|
|
17676
|
-
else if (uploadTarget.type === UploadTarget.OBJECT) {
|
|
17677
|
-
// ... otherwise upload is started immediately
|
|
17678
|
-
this.startUpload(uploadTarget, [null, this.getStateRoute()]);
|
|
17679
|
-
}
|
|
17680
|
-
else {
|
|
17681
|
-
this.startUpload(uploadTarget, [null, '/prepare']);
|
|
17682
|
-
}
|
|
17683
|
-
}
|
|
17684
|
-
/**
|
|
17685
|
-
* Proceed upload using the selected upload target.
|
|
17686
|
-
* @param useBatchUpload - flag indicating whether or not to use batch upload
|
|
17687
|
-
*/
|
|
17688
|
-
proceedWithSelectedTarget(useBatchUpload) {
|
|
17689
|
-
this.startUpload(this.selectedUploadTarget, [useBatchUpload, '/prepare']);
|
|
17690
|
-
}
|
|
17691
|
-
/**
|
|
17692
|
-
* Resets the selected upload target.
|
|
17693
|
-
*/
|
|
17694
|
-
resetSelectedUploadTarget() {
|
|
17695
|
-
this.selectedUploadTarget = null;
|
|
17696
|
-
}
|
|
17697
|
-
getStateRoute() {
|
|
17698
|
-
return this.router.url;
|
|
17975
|
+
getCachedAccordionState() {
|
|
17976
|
+
this.agentAccSelected = JSON.parse(this.storageService.getItem(this.cacheKey + 'agent-folder'));
|
|
17977
|
+
this.favoritesAccSelected = JSON.parse(this.storageService.getItem(this.cacheKey + 'favorite-folder'));
|
|
17699
17978
|
}
|
|
17700
17979
|
successfulUpload(target, uploadTarget) {
|
|
17701
17980
|
this.eventService.trigger(EnaioEvent.DMS_OBJECT_UPDATED, uploadTarget.referenceObject);
|
|
@@ -17746,18 +18025,6 @@ class UploadOverlayComponent {
|
|
|
17746
18025
|
}
|
|
17747
18026
|
this.queueSize = s;
|
|
17748
18027
|
}
|
|
17749
|
-
/**
|
|
17750
|
-
* Close the upload overlay and release all bound resources.
|
|
17751
|
-
*/
|
|
17752
|
-
close() {
|
|
17753
|
-
// unbind bound event listener, when they are not needed anymore
|
|
17754
|
-
this.unbindListeners();
|
|
17755
|
-
// clear upload queue
|
|
17756
|
-
this.queue = [];
|
|
17757
|
-
// hide the overlay
|
|
17758
|
-
this.setFileOver(false);
|
|
17759
|
-
this.invalidInput = false;
|
|
17760
|
-
}
|
|
17761
18028
|
setFileOver(value) {
|
|
17762
18029
|
this.fileOver = value;
|
|
17763
18030
|
this.uploadRegistry.setOverlayActive(value);
|
|
@@ -17796,29 +18063,13 @@ class UploadOverlayComponent {
|
|
|
17796
18063
|
pasteContainsFiles(event) {
|
|
17797
18064
|
return Array.from(event.clipboardData.items || []).filter(i => i.kind === 'file').length;
|
|
17798
18065
|
}
|
|
17799
|
-
|
|
17800
|
-
targetTrackByFn(index, item) {
|
|
17801
|
-
return item.id;
|
|
17802
|
-
}
|
|
17803
|
-
// ngFor tracking function for file items
|
|
17804
|
-
trackByFn(index, item) {
|
|
17805
|
-
return index;
|
|
17806
|
-
}
|
|
17807
|
-
ngOnInit() {
|
|
17808
|
-
this.init();
|
|
17809
|
-
}
|
|
17810
|
-
ngOnDestroy() {
|
|
17811
|
-
if (this.dragEnterListener) {
|
|
17812
|
-
this.dragEnterListener();
|
|
17813
|
-
}
|
|
17814
|
-
}
|
|
17815
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: UploadOverlayComponent, deps: [{ token: i2$1.Router }, { token: i0.Renderer2 }, { token: i1.PrepareService }, { token: i1.TranslateService }, { token: i1.SystemService }, { token: i1.EventService }, { token: i1.UploadRegistryService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17816
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: UploadOverlayComponent, selector: "eo-upload-overlay", viewQueries: [{ propertyName: "overlayEl", first: true, predicate: ["overlay"], descendants: true }], ngImport: i0, template: "<div id=\"eo-upload-overlay\" #overlay class=\"dark\" *ngIf=\"fileOver\" tabindex=\"1\"\n [ngClass]=\"{hasFiles: queue.length, invalid: invalidInput, singleFile: queue.length === 1, uploading: isUploading}\">\n\n <eo-icon class=\"button white close\" [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"close()\"></eo-icon>\n\n <div class=\"count\">\n <div>{{queue.length}}</div>\n <div class=\"queueSize\">{{queueSize | fileSize}}</div>\n </div>\n\n <h1 translate>eo.upload.global.headline</h1>\n <eo-icon class=\"uploady\" [iconSrc]=\"'assets/_default/svg/ic_upload.svg'\"></eo-icon>\n\n <!-- batch upload dialog -->\n <div class=\"batch-dialog\" *ngIf=\"!invalidInput && selectedUploadTarget && !isUploading\">\n\n <h2 translate>eo.upload.global.choose.title</h2>\n <p translate>eo.upload.global.choose.message</p>\n <div class=\"actions\">\n <button (click)=\"resetSelectedUploadTarget()\" translate>eo.cta.button.cancel</button>\n <button (click)=\"proceedWithSelectedTarget(false)\" class=\"primary\" translate>eo.upload.global.choose.single</button>\n <button (click)=\"proceedWithSelectedTarget(true)\" class=\"primary\" translate>eo.upload.global.choose.multi</button>\n </div>\n </div>\n\n <!-- invalid input dialog -->\n <div class=\"batch-dialog\" *ngIf=\"hasValidUploadTargets && invalidInput\">\n\n <h2 translate>eo.upload.global.invalid.title</h2>\n <p translate>eo.upload.global.invalid.message</p>\n <div class=\"actions\">\n <button (click)=\"close()\" translate>eo.upload.global.close</button>\n </div>\n </div>\n\n <!-- no upload targets available -->\n <div class=\"batch-dialog\" *ngIf=\"!hasValidUploadTargets\">\n\n <h2 translate>eo.upload.global.notarget.title</h2>\n <p translate>eo.upload.global.notarget.message</p>\n <div class=\"actions\">\n <button (click)=\"close()\" translate>eo.upload.global.close</button>\n </div>\n </div>\n\n <div class=\"contents\" *ngIf=\"hasValidUploadTargets && !invalidInput && !selectedUploadTarget && !isUploading\">\n\n <!-- list of available upload targets -->\n <div class=\"targets\">\n\n <div class=\"target-list\">\n\n <div class=\"upload-target\" *ngFor=\"let t of validUploadTargets; trackBy: targetTrackByFn\"\n (click)=\"proceedWithUpload(t)\"\n [ngSwitch]=\"t.type\">\n\n <!-- upload to root -->\n <ng-container *ngSwitchCase=\"'root'\" >\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_create_document.svg'\"></eo-icon>\n <div class=\"upload-target-general\">\n <div class=\"name\" translate>eo.upload.global.root.title</div>\n <div class=\"description\" translate>eo.upload.global.root.description</div>\n </div>\n </ng-container>\n\n <!-- replace file of a specific dms object -->\n <ng-container *ngSwitchCase=\"'object'\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_document_file.svg'\"></eo-icon>\n <div class=\"upload-target-replace\">\n <div class=\"name\" translate>eo.upload.global.object.title</div>\n <div class=\"description\">{{t.description}}</div>\n </div>\n </ng-container>\n\n <!-- add new files to a context folder -->\n <ng-container *ngSwitchCase=\"'context'\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_create_document_in_folder.svg'\"></eo-icon>\n <div class=\"upload-target-context\">\n <div class=\"name\">{{'eo.upload.global.context.title'|translate:({context:t.referenceObject.type.label})}}</div>\n <div class=\"description\">{{t.description}}</div>\n </div>\n </ng-container>\n\n <!-- add new files to a context folder structure tree entry -->\n <ng-container *ngSwitchCase=\"'contexttree'\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_create_document_in_folder.svg'\"></eo-icon>\n <div class=\"upload-target-contexttree\">\n <div class=\"name\">{{'eo.add.title.location.subfolder'|translate: ({folder: t.subFolder.name})}}</div>\n </div>\n </ng-container>\n\n <!-- custom upload target (e.g. from plugin component) -->\n <ng-container *ngSwitchCase=\"'custom'\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_upload.svg'\"></eo-icon>\n <div class=\"upload-target-custom\">\n <div class=\"name\">{{t.name}}</div>\n <div class=\"description\">{{t.description}}</div>\n </div>\n </ng-container>\n </div>\n\n </div>\n\n </div>\n\n <!-- list of files dragged to the component -->\n <div class=\"files\">\n <div class=\"files-list\">\n <div class=\"file-item\" *ngFor=\"let i of queue; trackBy: trackByFn\">\n <div>\n <div class=\"name\">{{i.name}}</div>\n <div class=\"desc\"><span class=\"size\">{{i.size | fileSize}}</span><span class=\"desc-text\"> {{i.type}}</span></div>\n </div>\n <eo-icon class=\"button white\" (click)=\"removeFileItem(i)\" [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n </div>\n </div>\n </div>\n\n </div>\n\n <div class=\"loading\" *ngIf=\"isUploading\"><eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner></div>\n\n\n</div>\n", styles: [":host #eo-upload-overlay{position:absolute;inset:0;z-index:9900;background-color:rgba(var(--color-black-rgb),.85);animation:eoFadeIn var(--app-default-transition-duration);display:flex;flex-flow:column;align-items:center;justify-content:center;color:var(--color-white);overflow:auto}:host #eo-upload-overlay h1{font-size:4em;font-weight:300;color:rgba(var(--color-white-rgb),.5);animation:eoFadeInDown var(--app-default-transition-duration)}:host #eo-upload-overlay .uploady{animation:uploady 2s linear infinite;width:20vw;height:20vw;display:block}:host #eo-upload-overlay .close{position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding)}:host #eo-upload-overlay .count{position:absolute;display:none;right:calc(var(--app-pane-padding) * 3);top:calc(var(--app-pane-padding) * 3);font-size:10vh;flex-flow:column;align-items:flex-end;line-height:1em;animation:eoFadeInDown var(--app-default-transition-duration)}:host #eo-upload-overlay .count .queueSize{font-size:var(--font-caption);line-height:var(--font-caption);margin-top:calc(var(--app-pane-padding) / 2);border-radius:2px;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);background-color:rgba(var(--color-white-rgb),.2)}:host #eo-upload-overlay .batch-dialog{max-width:350px}:host #eo-upload-overlay .batch-dialog .actions{display:flex;padding-top:var(--app-pane-padding);justify-content:flex-end}:host #eo-upload-overlay .batch-dialog .actions button{margin:0 calc(var(--app-pane-padding) / 4)}:host #eo-upload-overlay .contents{display:none;flex-flow:row wrap;max-height:100%;margin:var(--app-pane-padding)}:host #eo-upload-overlay .targets{order:1;margin:0 calc(var(--app-pane-padding) / 2);display:flex;flex-flow:column;justify-content:center;position:relative}:host #eo-upload-overlay .targets .target-list{animation:eoFadeInRight var(--app-default-transition-duration);overflow-y:auto}:host #eo-upload-overlay .targets .target-list h2{font-size:var(--font-subhead);font-weight:400}:host #eo-upload-overlay .targets .target-list .upload-target{background:rgba(var(--color-accent),.6);border:1px solid rgba(var(--color-white-rgb),.4);margin:calc(var(--app-pane-padding) / 2) 0;padding:calc(var(--app-pane-padding) / 2);border-radius:2px;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;display:flex;cursor:pointer;flex-flow:row nowrap;align-items:center}:host #eo-upload-overlay .targets .target-list .upload-target eo-icon{flex:0 0 auto;margin:0 calc(var(--app-pane-padding) / 2)}:host #eo-upload-overlay .targets .target-list .upload-target>div{flex:1 1 auto;margin:0 calc(var(--app-pane-padding) / 2)}:host #eo-upload-overlay .targets .target-list .upload-target>div .name{font-size:var(--font-subhead)}:host #eo-upload-overlay .targets .target-list .upload-target>div .description{font-size:var(--font-caption);opacity:.7}:host #eo-upload-overlay .targets .target-list .upload-target:hover{background-color:var(--color-accent)}:host #eo-upload-overlay .files{order:0;padding:calc(var(--app-pane-padding) / 4);margin:0 calc(var(--app-pane-padding) / 2);overflow-y:auto;border-radius:2px;animation:eoFadeInLeft var(--app-default-transition-duration);display:flex;flex-flow:column;justify-content:center}:host #eo-upload-overlay .files .files-list{height:100%}:host #eo-upload-overlay .files .files-list .file-item{display:flex;flex-flow:row nowrap;align-items:center;cursor:default;padding:calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 4);margin-bottom:calc(var(--app-pane-padding) / 4);background-color:rgba(var(--color-white-rgb),.1);-webkit-user-select:none;user-select:none}:host #eo-upload-overlay .files .files-list .file-item>div{flex:1 1 auto;padding:0 calc(var(--app-pane-padding) / 2)}:host #eo-upload-overlay .files .files-list .file-item>div .desc{color:rgba(var(--color-white-rgb),.75);font-size:var(--font-hint);margin-top:calc(var(--app-pane-padding) / 4)}:host #eo-upload-overlay .files .files-list .file-item>div .size{border-radius:2px;display:inline-block;padding:0 4px;background-color:rgba(var(--color-white-rgb),.2)}:host #eo-upload-overlay .files .files-list .file-item eo-icon{flex:0 0 auto;width:18px;height:18px;padding:calc(var(--app-pane-padding) / 2)}:host #eo-upload-overlay.invalid>h1,:host #eo-upload-overlay.invalid .uploady{display:none}:host #eo-upload-overlay.hasFiles .uploady{display:none}:host #eo-upload-overlay.hasFiles .count{display:flex}:host #eo-upload-overlay.hasFiles .contents{display:flex}:host #eo-upload-overlay.singleFile .contents{flex-flow:column}:host #eo-upload-overlay.singleFile .contents .files{padding:0;order:1}:host #eo-upload-overlay.singleFile .contents .targets{order:0;margin-bottom:var(--app-pane-padding)}:host #eo-upload-overlay.uploading h1,:host #eo-upload-overlay.uploading .close{display:none}@keyframes uploady{0%{transform:translateY(0);opacity:.1}50%{transform:translateY(-40px);opacity:.3}to{transform:translateY(0);opacity:.1}}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { 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: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: FileSizePipe, name: "fileSize" }] }); }
|
|
18066
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: UploadOverlayComponent, deps: [{ token: i2$1.Router }, { token: i0.Renderer2 }, { token: i1.PrepareService }, { token: i1.TranslateService }, { token: i1.UserService }, { token: AgentService }, { token: i1.SystemService }, { token: i1.EventService }, { token: i1.LocalStorageService }, { token: i1.UploadRegistryService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18067
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.4", type: UploadOverlayComponent, selector: "eo-upload-overlay", viewQueries: [{ propertyName: "overlayEl", first: true, predicate: ["overlay"], descendants: true }], ngImport: i0, template: "<div id=\"eo-upload-overlay\" #overlay class=\"dark\" *ngIf=\"fileOver\" tabindex=\"1\"\n [ngClass]=\"{file: queue.length, invalid: invalidInput, uploading: isUploading}\">\n\n <eo-icon class=\"button white close\" [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"close()\"></eo-icon>\n\n <div class=\"count\">\n <div>{{queue.length}}</div>\n <div class=\"queueSize\">{{queueSize | fileSize}}</div>\n </div>\n\n <div class=\"headline\">\n <h1 translate>eo.upload.global.headline</h1>\n </div>\n \n <eo-icon class=\"uploady\" [iconSrc]=\"'assets/_default/svg/ic_upload.svg'\"></eo-icon>\n\n <!-- batch upload dialog -->\n <div class=\"batch-dialog\" *ngIf=\"!invalidInput && selectedUploadTarget && !isUploading\">\n\n <h2 translate>eo.upload.global.choose.title</h2>\n <p translate>eo.upload.global.choose.message</p>\n <div class=\"actions\">\n <button (click)=\"resetSelectedUploadTarget()\" translate>eo.cta.button.cancel</button>\n <button (click)=\"proceedWithSelectedTarget(false)\" class=\"primary\"\n translate>eo.upload.global.choose.single</button>\n <button (click)=\"proceedWithSelectedTarget(true)\" class=\"primary\" translate>eo.upload.global.choose.multi</button>\n </div>\n </div>\n\n <!-- invalid input dialog -->\n <div class=\"batch-dialog\" *ngIf=\"hasValidUploadTargets && invalidInput\">\n\n <h2 translate>eo.upload.global.invalid.title</h2>\n <p translate>eo.upload.global.invalid.message</p>\n <div class=\"actions\">\n <button (click)=\"close()\" translate>eo.upload.global.close</button>\n </div>\n </div>\n\n <!-- no upload targets available -->\n <div class=\"batch-dialog\" *ngIf=\"!hasValidUploadTargets\">\n\n <h2 translate>eo.upload.global.notarget.title</h2>\n <p translate>eo.upload.global.notarget.message</p>\n <div class=\"actions\">\n <button (click)=\"close()\" translate>eo.upload.global.close</button>\n </div>\n </div>\n\n <div class=\"contents\" *ngIf=\"hasValidUploadTargets && !invalidInput && !selectedUploadTarget && !isUploading\">\n\n <div class=\"section\">\n <!-- list of available upload targets -->\n <div class=\"targets\">\n <div class=\"target-list\">\n @for (targetType of targetTypes; track targetType.type) {\n @for (t of validUploadTargets; track t.id) {\n @if (t.type === targetType.type) {\n <ng-container *ngTemplateOutlet=\"uploadTargetTemplate; context: {\n iconSrc: targetType.iconSrc,\n targetClass: targetType.targetClass,\n name: targetType.type === 'custom' ? t.name : (targetType.type === 'context' ? (targetType.name | translate : { context: t.referenceObject.type.label }) : (targetType. name | translate)),\n description: targetType.type === 'custom' || targetType.type === 'object' || targetType. type === 'context' ? t.description : (targetType.description | translate),\n targets: t\n }\">\n </ng-container>\n }\n }\n }\n </div>\n </div>\n\n <!-- upload to favorite -->\n @if (folderFavorites.length > 0) {\n <eo-simple-accordion [selected]=\"favoritesAccSelected\" [header]=\"'eo.upload.global.context.favorite' | translate\"\n (selectChange)=\"onFavoriteToggle($event)\">\n <div class=\"targets\">\n <div class=\"target-list\">\n @for (t of validUploadTargets; track $index) {\n @if (t.type === 'favorite') {\n <div class=\"upload-target\" (click)=\"proceedWithUpload(t)\">\n <ng-container>\n <eo-icon [iconId]=\"t.iconId\"></eo-icon>\n <div class=\"upload-target-favorite\">\n <div class=\"name\">{{t.title}}\n <div class=\"description\">{{t.description}}</div>\n </div>\n </div>\n </ng-container>\n </div>\n }\n }\n </div>\n </div>\n </eo-simple-accordion>\n }\n\n @if(lastOpenedFolder.length > 0){\n <eo-simple-accordion [selected]=\"agentAccSelected\" [header]=\"'eo.upload.global.context.agent' | translate\"\n (selectChange)=\"onAgentToggle($event)\">\n <!-- upload to last opened folder -->\n <div class=\"targets\">\n <div class=\"target-list\">\n @for (t of validUploadTargets; track $index) {\n @if (t.type === 'agent') {\n <div class=\"upload-target\" (click)=\"proceedWithUpload(t)\">\n <ng-container>\n <eo-icon [iconId]=\"t.iconId\"></eo-icon>\n <div class=\"upload-target-agent\">\n <div class=\"name\">{{t?.title}}\n <div class=\"description\">{{t?.description}}</div>\n </div>\n </div>\n </ng-container>\n </div>\n }\n }\n </div>\n </div>\n </eo-simple-accordion>\n }\n </div>\n <!-- list of files dragged to the component -->\n <div class=\"files\" [ngClass]=\"{file: queue.length, invalid: invalidInput, uploading: isUploading}\">\n <div class=\"files-list\">\n @for (i of queue; track $index) {\n <div class=\"file-item\">\n <div>\n <div class=\"name\">{{i.name}}</div>\n <div class=\"desc\"><span class=\"size\">{{i.size | fileSize}}</span>\n <span class=\"desc-text\"> {{i.type}}</span></div>\n </div>\n <eo-icon class=\"button white\" (click)=\"removeFileItem(i)\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n </div>\n }\n </div>\n </div>\n </div>\n\n @if (isUploading) {\n <div class=\"loading\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </div>\n }\n</div>\n\n<ng-template #uploadTargetTemplate let-iconSrc=\"iconSrc\" let-targetClass=\"targetClass\" let-name=\"name\"\n let-description=\"description\" let-targets=\"targets\">\n <div class=\"upload-target\" (click)=\"proceedWithUpload(targets)\">\n <ng-container>\n <eo-icon [iconSrc]=\"iconSrc\"></eo-icon>\n <div [ngClass]=\"targetClass\">\n <div class=\"name\">{{ name }}</div>\n <div class=\"description\">{{ description }}</div>\n </div>\n </ng-container>\n </div>\n</ng-template>\n", styles: [":host #eo-upload-overlay{position:absolute;inset:0;z-index:9900;background-color:rgba(var(--color-black-rgb),.85);animation:eoFadeIn var(--app-default-transition-duration);display:flex;flex-flow:column;align-items:center;justify-content:center;color:var(--color-white);overflow:hidden}:host #eo-upload-overlay .headline{display:flex;width:100%;min-width:200px;justify-content:center;overflow:hidden;align-content:center;flex-wrap:wrap}:host #eo-upload-overlay .headline h1{font-size:4em;font-weight:var(--font-weight-light);color:rgba(var(--color-white-rgb),.5);animation:eoFadeInDown var(--app-default-transition-duration);overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}:host #eo-upload-overlay .uploady{animation:uploady 2s linear infinite;width:20vw;height:20vw;display:block}:host #eo-upload-overlay .close{position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding)}:host #eo-upload-overlay .count{position:absolute;display:none;right:calc(var(--app-pane-padding) * 3);top:calc(var(--app-pane-padding) * 3);font-size:10vh;flex-flow:column;align-items:flex-end;line-height:1em;animation:eoFadeInDown var(--app-default-transition-duration)}:host #eo-upload-overlay .count .queueSize{font-size:var(--font-caption);line-height:var(--font-caption);margin-top:calc(var(--app-pane-padding) / 2);border-radius:2px;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);background-color:rgba(var(--color-white-rgb),.2)}:host #eo-upload-overlay .batch-dialog{max-width:350px}:host #eo-upload-overlay .batch-dialog .actions{display:flex;padding-top:var(--app-pane-padding);justify-content:flex-end}:host #eo-upload-overlay .batch-dialog .actions button{margin:0 calc(var(--app-pane-padding) / 4)}:host #eo-upload-overlay .contents{display:none;flex-flow:row wrap;margin:var(--app-pane-padding);max-width:100%;max-height:100%;width:100%;height:100%}:host #eo-upload-overlay .targets{order:1;margin:0 calc(var(--app-pane-padding) / 2);display:flex;flex-flow:column;justify-content:center;position:relative}:host #eo-upload-overlay .targets .target-list{animation:eoFadeInRight var(--app-default-transition-duration);overflow-y:auto}:host #eo-upload-overlay .targets .target-list h2{font-size:var(--font-subhead);font-weight:400}:host #eo-upload-overlay .targets .target-list .upload-target{background:rgba(var(--color-accent),.6);border:1px solid rgba(var(--color-white-rgb),.4);margin:calc(var(--app-pane-padding) / 2) 0;padding:calc(var(--app-pane-padding) / 2);border-radius:2px;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;display:flex;cursor:pointer;flex-flow:row nowrap;align-items:center}:host #eo-upload-overlay .targets .target-list .upload-target eo-icon{flex:0 0 auto;margin:0 calc(var(--app-pane-padding) / 2)}:host #eo-upload-overlay .targets .target-list .upload-target>div{flex:1 1 auto;margin:0 calc(var(--app-pane-padding) / 2);overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 calc(var(--app-pane-padding) / 2)}:host #eo-upload-overlay .targets .target-list .upload-target>div .name{font-size:var(--font-subhead);overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}:host #eo-upload-overlay .targets .target-list .upload-target>div .description{width:100%;max-width:250px;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-caption);opacity:.7}:host #eo-upload-overlay .targets .target-list .upload-target:hover{background-color:var(--color-accent)}:host #eo-upload-overlay .files{padding:calc(var(--app-pane-padding) / 4);margin:0 calc(var(--app-pane-padding) / 2);overflow-y:auto;border-radius:2px;max-width:150px;width:95%;min-width:25%;animation:eoFadeInLeft var(--app-default-transition-duration);display:flex;flex-flow:column;justify-content:center}:host #eo-upload-overlay .files .files-list{height:100%;width:100%}:host #eo-upload-overlay .files .files-list .file-item{display:flex;align-items:center;cursor:default;padding:calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 4);margin-bottom:calc(var(--app-pane-padding) / 4);background-color:rgba(var(--color-white-rgb),.1);-webkit-user-select:none;user-select:none}:host #eo-upload-overlay .files .files-list .file-item>div{flex:1 1 auto;padding:0 calc(var(--app-pane-padding) / 2);overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}:host #eo-upload-overlay .files .files-list .file-item>div .name{font-size:var(--font-subhead);overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}:host #eo-upload-overlay .files .files-list .file-item>div .desc{color:rgba(var(--color-white-rgb),.75);font-size:var(--font-hint);margin-top:calc(var(--app-pane-padding) / 4)}:host #eo-upload-overlay .files .files-list .file-item>div .size{border-radius:2px;display:inline-block;padding:0 4px;background-color:rgba(var(--color-white-rgb),.2)}:host #eo-upload-overlay .files .files-list .file-item eo-icon{flex:0 0 auto;width:18px;height:18px;padding:calc(var(--app-pane-padding) / 2)}:host #eo-upload-overlay.invalid>h1,:host #eo-upload-overlay.invalid .uploady{display:none}:host #eo-upload-overlay.file .uploady{display:none}:host #eo-upload-overlay.file .contents{flex-flow:row-reverse;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;flex:1 1;flex-direction:row-reverse}:host #eo-upload-overlay.file .contents .section{display:flow-root;width:25%;min-width:200px;flex:0 0 auto;max-height:fit-content;overflow:hidden;box-sizing:content-box}:host #eo-upload-overlay.file .contents .targets{order:0;margin-bottom:var(--app-pane-padding)}:host #eo-upload-overlay.uploading h1,:host #eo-upload-overlay.uploading .close{display:none}@keyframes uploady{0%{transform:translateY(0);opacity:.1}50%{transform:translateY(-40px);opacity:.3}to{transform:translateY(0);opacity:.1}}::ng-deep eo-simple-accordion{display:flex;flex-flow:column;flex:0 0 auto}::ng-deep eo-simple-accordion:not(.selected){margin-bottom:var(--app-pane-padding)}::ng-deep eo-simple-accordion>section{min-height:50px;max-height:190px;overflow-y:auto;overflow-x:hidden}\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$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: SimpleAccordionComponent, selector: "eo-simple-accordion", inputs: ["header", "item", "styles", "headerClass", "selected"], outputs: ["selectChange"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: FileSizePipe, name: "fileSize" }] }); }
|
|
17817
18068
|
}
|
|
17818
18069
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: UploadOverlayComponent, decorators: [{
|
|
17819
18070
|
type: Component,
|
|
17820
|
-
args: [{ selector: 'eo-upload-overlay', template: "<div id=\"eo-upload-overlay\" #overlay class=\"dark\" *ngIf=\"fileOver\" tabindex=\"1\"\n [ngClass]=\"{hasFiles: queue.length, invalid: invalidInput, singleFile: queue.length === 1, uploading: isUploading}\">\n\n <eo-icon class=\"button white close\" [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"close()\"></eo-icon>\n\n <div class=\"count\">\n <div>{{queue.length}}</div>\n <div class=\"queueSize\">{{queueSize | fileSize}}</div>\n </div>\n\n <h1 translate>eo.upload.global.headline</h1>\n <eo-icon class=\"uploady\" [iconSrc]=\"'assets/_default/svg/ic_upload.svg'\"></eo-icon>\n\n <!-- batch upload dialog -->\n <div class=\"batch-dialog\" *ngIf=\"!invalidInput && selectedUploadTarget && !isUploading\">\n\n <h2 translate>eo.upload.global.choose.title</h2>\n <p translate>eo.upload.global.choose.message</p>\n <div class=\"actions\">\n <button (click)=\"resetSelectedUploadTarget()\" translate>eo.cta.button.cancel</button>\n <button (click)=\"proceedWithSelectedTarget(false)\" class=\"primary\" translate>eo.upload.global.choose.single</button>\n <button (click)=\"proceedWithSelectedTarget(true)\" class=\"primary\" translate>eo.upload.global.choose.multi</button>\n </div>\n </div>\n\n <!-- invalid input dialog -->\n <div class=\"batch-dialog\" *ngIf=\"hasValidUploadTargets && invalidInput\">\n\n <h2 translate>eo.upload.global.invalid.title</h2>\n <p translate>eo.upload.global.invalid.message</p>\n <div class=\"actions\">\n <button (click)=\"close()\" translate>eo.upload.global.close</button>\n </div>\n </div>\n\n <!-- no upload targets available -->\n <div class=\"batch-dialog\" *ngIf=\"!hasValidUploadTargets\">\n\n <h2 translate>eo.upload.global.notarget.title</h2>\n <p translate>eo.upload.global.notarget.message</p>\n <div class=\"actions\">\n <button (click)=\"close()\" translate>eo.upload.global.close</button>\n </div>\n </div>\n\n <div class=\"contents\" *ngIf=\"hasValidUploadTargets && !invalidInput && !selectedUploadTarget && !isUploading\">\n\n <!-- list of available upload targets -->\n <div class=\"targets\">\n\n <div class=\"target-list\">\n\n <div class=\"upload-target\" *ngFor=\"let t of validUploadTargets; trackBy: targetTrackByFn\"\n (click)=\"proceedWithUpload(t)\"\n [ngSwitch]=\"t.type\">\n\n <!-- upload to root -->\n <ng-container *ngSwitchCase=\"'root'\" >\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_create_document.svg'\"></eo-icon>\n <div class=\"upload-target-general\">\n <div class=\"name\" translate>eo.upload.global.root.title</div>\n <div class=\"description\" translate>eo.upload.global.root.description</div>\n </div>\n </ng-container>\n\n <!-- replace file of a specific dms object -->\n <ng-container *ngSwitchCase=\"'object'\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_document_file.svg'\"></eo-icon>\n <div class=\"upload-target-replace\">\n <div class=\"name\" translate>eo.upload.global.object.title</div>\n <div class=\"description\">{{t.description}}</div>\n </div>\n </ng-container>\n\n <!-- add new files to a context folder -->\n <ng-container *ngSwitchCase=\"'context'\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_create_document_in_folder.svg'\"></eo-icon>\n <div class=\"upload-target-context\">\n <div class=\"name\">{{'eo.upload.global.context.title'|translate:({context:t.referenceObject.type.label})}}</div>\n <div class=\"description\">{{t.description}}</div>\n </div>\n </ng-container>\n\n <!-- add new files to a context folder structure tree entry -->\n <ng-container *ngSwitchCase=\"'contexttree'\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_create_document_in_folder.svg'\"></eo-icon>\n <div class=\"upload-target-contexttree\">\n <div class=\"name\">{{'eo.add.title.location.subfolder'|translate: ({folder: t.subFolder.name})}}</div>\n </div>\n </ng-container>\n\n <!-- custom upload target (e.g. from plugin component) -->\n <ng-container *ngSwitchCase=\"'custom'\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_upload.svg'\"></eo-icon>\n <div class=\"upload-target-custom\">\n <div class=\"name\">{{t.name}}</div>\n <div class=\"description\">{{t.description}}</div>\n </div>\n </ng-container>\n </div>\n\n </div>\n\n </div>\n\n <!-- list of files dragged to the component -->\n <div class=\"files\">\n <div class=\"files-list\">\n <div class=\"file-item\" *ngFor=\"let i of queue; trackBy: trackByFn\">\n <div>\n <div class=\"name\">{{i.name}}</div>\n <div class=\"desc\"><span class=\"size\">{{i.size | fileSize}}</span><span class=\"desc-text\"> {{i.type}}</span></div>\n </div>\n <eo-icon class=\"button white\" (click)=\"removeFileItem(i)\" [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n </div>\n </div>\n </div>\n\n </div>\n\n <div class=\"loading\" *ngIf=\"isUploading\"><eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner></div>\n\n\n</div>\n", styles: [":host #eo-upload-overlay{position:absolute;inset:0;z-index:9900;background-color:rgba(var(--color-black-rgb),.85);animation:eoFadeIn var(--app-default-transition-duration);display:flex;flex-flow:column;align-items:center;justify-content:center;color:var(--color-white);overflow:auto}:host #eo-upload-overlay h1{font-size:4em;font-weight:300;color:rgba(var(--color-white-rgb),.5);animation:eoFadeInDown var(--app-default-transition-duration)}:host #eo-upload-overlay .uploady{animation:uploady 2s linear infinite;width:20vw;height:20vw;display:block}:host #eo-upload-overlay .close{position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding)}:host #eo-upload-overlay .count{position:absolute;display:none;right:calc(var(--app-pane-padding) * 3);top:calc(var(--app-pane-padding) * 3);font-size:10vh;flex-flow:column;align-items:flex-end;line-height:1em;animation:eoFadeInDown var(--app-default-transition-duration)}:host #eo-upload-overlay .count .queueSize{font-size:var(--font-caption);line-height:var(--font-caption);margin-top:calc(var(--app-pane-padding) / 2);border-radius:2px;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);background-color:rgba(var(--color-white-rgb),.2)}:host #eo-upload-overlay .batch-dialog{max-width:350px}:host #eo-upload-overlay .batch-dialog .actions{display:flex;padding-top:var(--app-pane-padding);justify-content:flex-end}:host #eo-upload-overlay .batch-dialog .actions button{margin:0 calc(var(--app-pane-padding) / 4)}:host #eo-upload-overlay .contents{display:none;flex-flow:row wrap;max-height:100%;margin:var(--app-pane-padding)}:host #eo-upload-overlay .targets{order:1;margin:0 calc(var(--app-pane-padding) / 2);display:flex;flex-flow:column;justify-content:center;position:relative}:host #eo-upload-overlay .targets .target-list{animation:eoFadeInRight var(--app-default-transition-duration);overflow-y:auto}:host #eo-upload-overlay .targets .target-list h2{font-size:var(--font-subhead);font-weight:400}:host #eo-upload-overlay .targets .target-list .upload-target{background:rgba(var(--color-accent),.6);border:1px solid rgba(var(--color-white-rgb),.4);margin:calc(var(--app-pane-padding) / 2) 0;padding:calc(var(--app-pane-padding) / 2);border-radius:2px;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;display:flex;cursor:pointer;flex-flow:row nowrap;align-items:center}:host #eo-upload-overlay .targets .target-list .upload-target eo-icon{flex:0 0 auto;margin:0 calc(var(--app-pane-padding) / 2)}:host #eo-upload-overlay .targets .target-list .upload-target>div{flex:1 1 auto;margin:0 calc(var(--app-pane-padding) / 2)}:host #eo-upload-overlay .targets .target-list .upload-target>div .name{font-size:var(--font-subhead)}:host #eo-upload-overlay .targets .target-list .upload-target>div .description{font-size:var(--font-caption);opacity:.7}:host #eo-upload-overlay .targets .target-list .upload-target:hover{background-color:var(--color-accent)}:host #eo-upload-overlay .files{order:0;padding:calc(var(--app-pane-padding) / 4);margin:0 calc(var(--app-pane-padding) / 2);overflow-y:auto;border-radius:2px;animation:eoFadeInLeft var(--app-default-transition-duration);display:flex;flex-flow:column;justify-content:center}:host #eo-upload-overlay .files .files-list{height:100%}:host #eo-upload-overlay .files .files-list .file-item{display:flex;flex-flow:row nowrap;align-items:center;cursor:default;padding:calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 4);margin-bottom:calc(var(--app-pane-padding) / 4);background-color:rgba(var(--color-white-rgb),.1);-webkit-user-select:none;user-select:none}:host #eo-upload-overlay .files .files-list .file-item>div{flex:1 1 auto;padding:0 calc(var(--app-pane-padding) / 2)}:host #eo-upload-overlay .files .files-list .file-item>div .desc{color:rgba(var(--color-white-rgb),.75);font-size:var(--font-hint);margin-top:calc(var(--app-pane-padding) / 4)}:host #eo-upload-overlay .files .files-list .file-item>div .size{border-radius:2px;display:inline-block;padding:0 4px;background-color:rgba(var(--color-white-rgb),.2)}:host #eo-upload-overlay .files .files-list .file-item eo-icon{flex:0 0 auto;width:18px;height:18px;padding:calc(var(--app-pane-padding) / 2)}:host #eo-upload-overlay.invalid>h1,:host #eo-upload-overlay.invalid .uploady{display:none}:host #eo-upload-overlay.hasFiles .uploady{display:none}:host #eo-upload-overlay.hasFiles .count{display:flex}:host #eo-upload-overlay.hasFiles .contents{display:flex}:host #eo-upload-overlay.singleFile .contents{flex-flow:column}:host #eo-upload-overlay.singleFile .contents .files{padding:0;order:1}:host #eo-upload-overlay.singleFile .contents .targets{order:0;margin-bottom:var(--app-pane-padding)}:host #eo-upload-overlay.uploading h1,:host #eo-upload-overlay.uploading .close{display:none}@keyframes uploady{0%{transform:translateY(0);opacity:.1}50%{transform:translateY(-40px);opacity:.3}to{transform:translateY(0);opacity:.1}}\n"] }]
|
|
17821
|
-
}], ctorParameters: () => [{ type: i2$1.Router }, { type: i0.Renderer2 }, { type: i1.PrepareService }, { type: i1.TranslateService }, { type: i1.SystemService }, { type: i1.EventService }, { type: i1.UploadRegistryService }], propDecorators: { overlayEl: [{
|
|
18071
|
+
args: [{ selector: 'eo-upload-overlay', template: "<div id=\"eo-upload-overlay\" #overlay class=\"dark\" *ngIf=\"fileOver\" tabindex=\"1\"\n [ngClass]=\"{file: queue.length, invalid: invalidInput, uploading: isUploading}\">\n\n <eo-icon class=\"button white close\" [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"close()\"></eo-icon>\n\n <div class=\"count\">\n <div>{{queue.length}}</div>\n <div class=\"queueSize\">{{queueSize | fileSize}}</div>\n </div>\n\n <div class=\"headline\">\n <h1 translate>eo.upload.global.headline</h1>\n </div>\n \n <eo-icon class=\"uploady\" [iconSrc]=\"'assets/_default/svg/ic_upload.svg'\"></eo-icon>\n\n <!-- batch upload dialog -->\n <div class=\"batch-dialog\" *ngIf=\"!invalidInput && selectedUploadTarget && !isUploading\">\n\n <h2 translate>eo.upload.global.choose.title</h2>\n <p translate>eo.upload.global.choose.message</p>\n <div class=\"actions\">\n <button (click)=\"resetSelectedUploadTarget()\" translate>eo.cta.button.cancel</button>\n <button (click)=\"proceedWithSelectedTarget(false)\" class=\"primary\"\n translate>eo.upload.global.choose.single</button>\n <button (click)=\"proceedWithSelectedTarget(true)\" class=\"primary\" translate>eo.upload.global.choose.multi</button>\n </div>\n </div>\n\n <!-- invalid input dialog -->\n <div class=\"batch-dialog\" *ngIf=\"hasValidUploadTargets && invalidInput\">\n\n <h2 translate>eo.upload.global.invalid.title</h2>\n <p translate>eo.upload.global.invalid.message</p>\n <div class=\"actions\">\n <button (click)=\"close()\" translate>eo.upload.global.close</button>\n </div>\n </div>\n\n <!-- no upload targets available -->\n <div class=\"batch-dialog\" *ngIf=\"!hasValidUploadTargets\">\n\n <h2 translate>eo.upload.global.notarget.title</h2>\n <p translate>eo.upload.global.notarget.message</p>\n <div class=\"actions\">\n <button (click)=\"close()\" translate>eo.upload.global.close</button>\n </div>\n </div>\n\n <div class=\"contents\" *ngIf=\"hasValidUploadTargets && !invalidInput && !selectedUploadTarget && !isUploading\">\n\n <div class=\"section\">\n <!-- list of available upload targets -->\n <div class=\"targets\">\n <div class=\"target-list\">\n @for (targetType of targetTypes; track targetType.type) {\n @for (t of validUploadTargets; track t.id) {\n @if (t.type === targetType.type) {\n <ng-container *ngTemplateOutlet=\"uploadTargetTemplate; context: {\n iconSrc: targetType.iconSrc,\n targetClass: targetType.targetClass,\n name: targetType.type === 'custom' ? t.name : (targetType.type === 'context' ? (targetType.name | translate : { context: t.referenceObject.type.label }) : (targetType. name | translate)),\n description: targetType.type === 'custom' || targetType.type === 'object' || targetType. type === 'context' ? t.description : (targetType.description | translate),\n targets: t\n }\">\n </ng-container>\n }\n }\n }\n </div>\n </div>\n\n <!-- upload to favorite -->\n @if (folderFavorites.length > 0) {\n <eo-simple-accordion [selected]=\"favoritesAccSelected\" [header]=\"'eo.upload.global.context.favorite' | translate\"\n (selectChange)=\"onFavoriteToggle($event)\">\n <div class=\"targets\">\n <div class=\"target-list\">\n @for (t of validUploadTargets; track $index) {\n @if (t.type === 'favorite') {\n <div class=\"upload-target\" (click)=\"proceedWithUpload(t)\">\n <ng-container>\n <eo-icon [iconId]=\"t.iconId\"></eo-icon>\n <div class=\"upload-target-favorite\">\n <div class=\"name\">{{t.title}}\n <div class=\"description\">{{t.description}}</div>\n </div>\n </div>\n </ng-container>\n </div>\n }\n }\n </div>\n </div>\n </eo-simple-accordion>\n }\n\n @if(lastOpenedFolder.length > 0){\n <eo-simple-accordion [selected]=\"agentAccSelected\" [header]=\"'eo.upload.global.context.agent' | translate\"\n (selectChange)=\"onAgentToggle($event)\">\n <!-- upload to last opened folder -->\n <div class=\"targets\">\n <div class=\"target-list\">\n @for (t of validUploadTargets; track $index) {\n @if (t.type === 'agent') {\n <div class=\"upload-target\" (click)=\"proceedWithUpload(t)\">\n <ng-container>\n <eo-icon [iconId]=\"t.iconId\"></eo-icon>\n <div class=\"upload-target-agent\">\n <div class=\"name\">{{t?.title}}\n <div class=\"description\">{{t?.description}}</div>\n </div>\n </div>\n </ng-container>\n </div>\n }\n }\n </div>\n </div>\n </eo-simple-accordion>\n }\n </div>\n <!-- list of files dragged to the component -->\n <div class=\"files\" [ngClass]=\"{file: queue.length, invalid: invalidInput, uploading: isUploading}\">\n <div class=\"files-list\">\n @for (i of queue; track $index) {\n <div class=\"file-item\">\n <div>\n <div class=\"name\">{{i.name}}</div>\n <div class=\"desc\"><span class=\"size\">{{i.size | fileSize}}</span>\n <span class=\"desc-text\"> {{i.type}}</span></div>\n </div>\n <eo-icon class=\"button white\" (click)=\"removeFileItem(i)\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n </div>\n }\n </div>\n </div>\n </div>\n\n @if (isUploading) {\n <div class=\"loading\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </div>\n }\n</div>\n\n<ng-template #uploadTargetTemplate let-iconSrc=\"iconSrc\" let-targetClass=\"targetClass\" let-name=\"name\"\n let-description=\"description\" let-targets=\"targets\">\n <div class=\"upload-target\" (click)=\"proceedWithUpload(targets)\">\n <ng-container>\n <eo-icon [iconSrc]=\"iconSrc\"></eo-icon>\n <div [ngClass]=\"targetClass\">\n <div class=\"name\">{{ name }}</div>\n <div class=\"description\">{{ description }}</div>\n </div>\n </ng-container>\n </div>\n</ng-template>\n", styles: [":host #eo-upload-overlay{position:absolute;inset:0;z-index:9900;background-color:rgba(var(--color-black-rgb),.85);animation:eoFadeIn var(--app-default-transition-duration);display:flex;flex-flow:column;align-items:center;justify-content:center;color:var(--color-white);overflow:hidden}:host #eo-upload-overlay .headline{display:flex;width:100%;min-width:200px;justify-content:center;overflow:hidden;align-content:center;flex-wrap:wrap}:host #eo-upload-overlay .headline h1{font-size:4em;font-weight:var(--font-weight-light);color:rgba(var(--color-white-rgb),.5);animation:eoFadeInDown var(--app-default-transition-duration);overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}:host #eo-upload-overlay .uploady{animation:uploady 2s linear infinite;width:20vw;height:20vw;display:block}:host #eo-upload-overlay .close{position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding)}:host #eo-upload-overlay .count{position:absolute;display:none;right:calc(var(--app-pane-padding) * 3);top:calc(var(--app-pane-padding) * 3);font-size:10vh;flex-flow:column;align-items:flex-end;line-height:1em;animation:eoFadeInDown var(--app-default-transition-duration)}:host #eo-upload-overlay .count .queueSize{font-size:var(--font-caption);line-height:var(--font-caption);margin-top:calc(var(--app-pane-padding) / 2);border-radius:2px;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);background-color:rgba(var(--color-white-rgb),.2)}:host #eo-upload-overlay .batch-dialog{max-width:350px}:host #eo-upload-overlay .batch-dialog .actions{display:flex;padding-top:var(--app-pane-padding);justify-content:flex-end}:host #eo-upload-overlay .batch-dialog .actions button{margin:0 calc(var(--app-pane-padding) / 4)}:host #eo-upload-overlay .contents{display:none;flex-flow:row wrap;margin:var(--app-pane-padding);max-width:100%;max-height:100%;width:100%;height:100%}:host #eo-upload-overlay .targets{order:1;margin:0 calc(var(--app-pane-padding) / 2);display:flex;flex-flow:column;justify-content:center;position:relative}:host #eo-upload-overlay .targets .target-list{animation:eoFadeInRight var(--app-default-transition-duration);overflow-y:auto}:host #eo-upload-overlay .targets .target-list h2{font-size:var(--font-subhead);font-weight:400}:host #eo-upload-overlay .targets .target-list .upload-target{background:rgba(var(--color-accent),.6);border:1px solid rgba(var(--color-white-rgb),.4);margin:calc(var(--app-pane-padding) / 2) 0;padding:calc(var(--app-pane-padding) / 2);border-radius:2px;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;display:flex;cursor:pointer;flex-flow:row nowrap;align-items:center}:host #eo-upload-overlay .targets .target-list .upload-target eo-icon{flex:0 0 auto;margin:0 calc(var(--app-pane-padding) / 2)}:host #eo-upload-overlay .targets .target-list .upload-target>div{flex:1 1 auto;margin:0 calc(var(--app-pane-padding) / 2);overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 calc(var(--app-pane-padding) / 2)}:host #eo-upload-overlay .targets .target-list .upload-target>div .name{font-size:var(--font-subhead);overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}:host #eo-upload-overlay .targets .target-list .upload-target>div .description{width:100%;max-width:250px;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-caption);opacity:.7}:host #eo-upload-overlay .targets .target-list .upload-target:hover{background-color:var(--color-accent)}:host #eo-upload-overlay .files{padding:calc(var(--app-pane-padding) / 4);margin:0 calc(var(--app-pane-padding) / 2);overflow-y:auto;border-radius:2px;max-width:150px;width:95%;min-width:25%;animation:eoFadeInLeft var(--app-default-transition-duration);display:flex;flex-flow:column;justify-content:center}:host #eo-upload-overlay .files .files-list{height:100%;width:100%}:host #eo-upload-overlay .files .files-list .file-item{display:flex;align-items:center;cursor:default;padding:calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 4);margin-bottom:calc(var(--app-pane-padding) / 4);background-color:rgba(var(--color-white-rgb),.1);-webkit-user-select:none;user-select:none}:host #eo-upload-overlay .files .files-list .file-item>div{flex:1 1 auto;padding:0 calc(var(--app-pane-padding) / 2);overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}:host #eo-upload-overlay .files .files-list .file-item>div .name{font-size:var(--font-subhead);overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}:host #eo-upload-overlay .files .files-list .file-item>div .desc{color:rgba(var(--color-white-rgb),.75);font-size:var(--font-hint);margin-top:calc(var(--app-pane-padding) / 4)}:host #eo-upload-overlay .files .files-list .file-item>div .size{border-radius:2px;display:inline-block;padding:0 4px;background-color:rgba(var(--color-white-rgb),.2)}:host #eo-upload-overlay .files .files-list .file-item eo-icon{flex:0 0 auto;width:18px;height:18px;padding:calc(var(--app-pane-padding) / 2)}:host #eo-upload-overlay.invalid>h1,:host #eo-upload-overlay.invalid .uploady{display:none}:host #eo-upload-overlay.file .uploady{display:none}:host #eo-upload-overlay.file .contents{flex-flow:row-reverse;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;flex:1 1;flex-direction:row-reverse}:host #eo-upload-overlay.file .contents .section{display:flow-root;width:25%;min-width:200px;flex:0 0 auto;max-height:fit-content;overflow:hidden;box-sizing:content-box}:host #eo-upload-overlay.file .contents .targets{order:0;margin-bottom:var(--app-pane-padding)}:host #eo-upload-overlay.uploading h1,:host #eo-upload-overlay.uploading .close{display:none}@keyframes uploady{0%{transform:translateY(0);opacity:.1}50%{transform:translateY(-40px);opacity:.3}to{transform:translateY(0);opacity:.1}}::ng-deep eo-simple-accordion{display:flex;flex-flow:column;flex:0 0 auto}::ng-deep eo-simple-accordion:not(.selected){margin-bottom:var(--app-pane-padding)}::ng-deep eo-simple-accordion>section{min-height:50px;max-height:190px;overflow-y:auto;overflow-x:hidden}\n"] }]
|
|
18072
|
+
}], ctorParameters: () => [{ type: i2$1.Router }, { type: i0.Renderer2 }, { type: i1.PrepareService }, { type: i1.TranslateService }, { type: i1.UserService }, { type: AgentService }, { type: i1.SystemService }, { type: i1.EventService }, { type: i1.LocalStorageService }, { type: i1.UploadRegistryService }], propDecorators: { overlayEl: [{
|
|
17822
18073
|
type: ViewChild,
|
|
17823
18074
|
args: ['overlay']
|
|
17824
18075
|
}] } });
|
|
@@ -18382,10 +18633,15 @@ let InboxDetailsComponent = class InboxDetailsComponent {
|
|
|
18382
18633
|
this.eventService.trigger(EnaioEvent.INBOX_ITEM_LOCKED);
|
|
18383
18634
|
}, error => {
|
|
18384
18635
|
if (error.status === 409) {
|
|
18385
|
-
|
|
18636
|
+
if (error.error.key === 'BPM_CANNOT_PERSONALIZE_WORKITEM') {
|
|
18637
|
+
this.notify.warning(this.workItem.title, this.translate.instant('eo.process.activity.lock.denied'));
|
|
18638
|
+
}
|
|
18639
|
+
else if (error.error.key === 'BPM_EVENT_SCRIPT_EXECUTION_ERROR') {
|
|
18640
|
+
this.notify.error(this.workItem.title, this.translate.instant('eo.bpm.event.script.execution.error'));
|
|
18641
|
+
}
|
|
18386
18642
|
}
|
|
18387
18643
|
else {
|
|
18388
|
-
|
|
18644
|
+
this.notify.error(this.workItem.title, this.translate.instant('eo.process.general.error'));
|
|
18389
18645
|
}
|
|
18390
18646
|
});
|
|
18391
18647
|
}
|
|
@@ -18745,7 +19001,7 @@ let ObjectHistoryComponent = class ObjectHistoryComponent {
|
|
|
18745
19001
|
const reversedRes = res.reverse();
|
|
18746
19002
|
reversedRes.forEach(res => {
|
|
18747
19003
|
res.title = this.translate.instant('eo.object.history.entry.type.' + res.type + '.title');
|
|
18748
|
-
res.description = this.translate.instant('eo.object.history.entry.type.' + (res.intent ? res.intent : res.type) + '.description');
|
|
19004
|
+
res.description = this.translate.instant('eo.object.history.entry.type.' + (res.intent ? res.intent : res.type) + '.description', res.parameter);
|
|
18749
19005
|
});
|
|
18750
19006
|
this.completeHistory = reversedRes;
|
|
18751
19007
|
this.history = reversedRes;
|
|
@@ -21617,11 +21873,11 @@ class DynamicPropertySwitchComponent {
|
|
|
21617
21873
|
}
|
|
21618
21874
|
}
|
|
21619
21875
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DynamicPropertySwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21620
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: DynamicPropertySwitchComponent, selector: "eo-dynamic-property-switch", inputs: { parentFormControl: "parentFormControl" }, outputs: { onPropertyChanged: "onPropertyChanged" }, host: { properties: { "class.disabled": "this.disabled" } }, ngImport: i0, template: "<eo-icon [ngClass]=\"{active: value}\"\n [iconSrc]=\"'assets/_default/svg/ic_input.svg'\"\n (click)=\"toggleValue()\" >\n</eo-icon>\n", styles: [":host{display:block;color:var(--text-color-caption);cursor:pointer;background-color:rgba(var(--color-black-rgb),.06)}:host.disabled{background-color:transparent;cursor:default}:host.disabled eo-icon{opacity:.1;pointer-events:none}:host eo-icon{padding:calc(var(--app-pane-padding) / 4);border-radius:2px;opacity:.5}:host eo-icon.active{color:var(--color-white);opacity:1;background-color:var(--color-accent)}:host eo-icon:hover{opacity:1}:host-context(.dark){color:var(--color-white);background-color:rgba(var(--color-white-rgb),.1)}\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"] }] }); }
|
|
21876
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: DynamicPropertySwitchComponent, selector: "eo-dynamic-property-switch", inputs: { parentFormControl: "parentFormControl" }, outputs: { onPropertyChanged: "onPropertyChanged" }, host: { properties: { "class.disabled": "this.disabled" } }, ngImport: i0, template: "<eo-icon [ngClass]=\"{active: value}\"\n [iconSrc]=\"'assets/_default/svg/ic_input.svg'\"\n (click)=\"toggleValue()\" \n [iconTitle]=\"('eo.storedquery.search.term.button' | translate)\">\n</eo-icon>\n", styles: [":host{display:block;color:var(--text-color-caption);cursor:pointer;background-color:rgba(var(--color-black-rgb),.06)}:host.disabled{background-color:transparent;cursor:default}:host.disabled eo-icon{opacity:.1;pointer-events:none}:host eo-icon{padding:calc(var(--app-pane-padding) / 4);border-radius:2px;opacity:.5}:host eo-icon.active{color:var(--color-white);opacity:1;background-color:var(--color-accent)}:host eo-icon:hover{opacity:1}:host-context(.dark){color:var(--color-white);background-color:rgba(var(--color-white-rgb),.1)}\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: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
21621
21877
|
}
|
|
21622
21878
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DynamicPropertySwitchComponent, decorators: [{
|
|
21623
21879
|
type: Component,
|
|
21624
|
-
args: [{ selector: 'eo-dynamic-property-switch', template: "<eo-icon [ngClass]=\"{active: value}\"\n [iconSrc]=\"'assets/_default/svg/ic_input.svg'\"\n (click)=\"toggleValue()\" >\n</eo-icon>\n", styles: [":host{display:block;color:var(--text-color-caption);cursor:pointer;background-color:rgba(var(--color-black-rgb),.06)}:host.disabled{background-color:transparent;cursor:default}:host.disabled eo-icon{opacity:.1;pointer-events:none}:host eo-icon{padding:calc(var(--app-pane-padding) / 4);border-radius:2px;opacity:.5}:host eo-icon.active{color:var(--color-white);opacity:1;background-color:var(--color-accent)}:host eo-icon:hover{opacity:1}:host-context(.dark){color:var(--color-white);background-color:rgba(var(--color-white-rgb),.1)}\n"] }]
|
|
21880
|
+
args: [{ selector: 'eo-dynamic-property-switch', template: "<eo-icon [ngClass]=\"{active: value}\"\n [iconSrc]=\"'assets/_default/svg/ic_input.svg'\"\n (click)=\"toggleValue()\" \n [iconTitle]=\"('eo.storedquery.search.term.button' | translate)\">\n</eo-icon>\n", styles: [":host{display:block;color:var(--text-color-caption);cursor:pointer;background-color:rgba(var(--color-black-rgb),.06)}:host.disabled{background-color:transparent;cursor:default}:host.disabled eo-icon{opacity:.1;pointer-events:none}:host eo-icon{padding:calc(var(--app-pane-padding) / 4);border-radius:2px;opacity:.5}:host eo-icon.active{color:var(--color-white);opacity:1;background-color:var(--color-accent)}:host eo-icon:hover{opacity:1}:host-context(.dark){color:var(--color-white);background-color:rgba(var(--color-white-rgb),.1)}\n"] }]
|
|
21625
21881
|
}], ctorParameters: () => [], propDecorators: { disabled: [{
|
|
21626
21882
|
type: HostBinding,
|
|
21627
21883
|
args: ['class.disabled']
|
|
@@ -22600,10 +22856,10 @@ class AboutStateComponent {
|
|
|
22600
22856
|
this.backend = backend;
|
|
22601
22857
|
this.userService = userService;
|
|
22602
22858
|
this.config = config;
|
|
22603
|
-
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.0.4", "license": "MIT" }, { "name": "@angular/cdk", "version": "18.0.4", "license": "MIT" }, { "name": "@angular/common", "version": "18.0.4", "license": "MIT" }, { "name": "@angular/compiler", "version": "18.0.4", "license": "MIT" }, { "name": "@angular/core", "version": "18.0.4", "license": "MIT" }, { "name": "@angular/forms", "version": "18.0.4", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "18.0.4", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "18.0.4", "license": "MIT" }, { "name": "@angular/router", "version": "18.0.4", "license": "MIT" }, { "name": "@carbon/charts-angular", "version": "1.16.3", "license": "Apache-2.0" }, { "name": "@eo-sdk/core", "version": "11.
|
|
22859
|
+
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.0.4", "license": "MIT" }, { "name": "@angular/cdk", "version": "18.0.4", "license": "MIT" }, { "name": "@angular/common", "version": "18.0.4", "license": "MIT" }, { "name": "@angular/compiler", "version": "18.0.4", "license": "MIT" }, { "name": "@angular/core", "version": "18.0.4", "license": "MIT" }, { "name": "@angular/forms", "version": "18.0.4", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "18.0.4", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "18.0.4", "license": "MIT" }, { "name": "@angular/router", "version": "18.0.4", "license": "MIT" }, { "name": "@carbon/charts-angular", "version": "1.16.3", "license": "Apache-2.0" }, { "name": "@eo-sdk/core", "version": "11.8.0-rc.1", "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.0.6", "license": "MIT" }, { "name": "@yuuvis/widget-grid", "version": "18.0.0", "license": "MIT" }, { "name": "core-js", "version": "2.6.12", "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" }];
|
|
22604
22860
|
this.ctrl = {
|
|
22605
22861
|
componentName: 'yuuvis® RAD client',
|
|
22606
|
-
componentVersion: '11.
|
|
22862
|
+
componentVersion: '11.8.0-rc.2',
|
|
22607
22863
|
productName: '',
|
|
22608
22864
|
productVersion: ''
|
|
22609
22865
|
};
|
|
@@ -24914,8 +25170,176 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
|
|
|
24914
25170
|
type: Output
|
|
24915
25171
|
}] } });
|
|
24916
25172
|
|
|
25173
|
+
let SignatureStatisticsWidgetComponent = class SignatureStatisticsWidgetComponent {
|
|
25174
|
+
constructor(signingService, clipboard, translate) {
|
|
25175
|
+
this.signingService = signingService;
|
|
25176
|
+
this.clipboard = clipboard;
|
|
25177
|
+
this.translate = translate;
|
|
25178
|
+
this.statisticsResult = { signaturesAmount: null, documentsAmount: null, aggregations: [] };
|
|
25179
|
+
this.refreshingRequest = false;
|
|
25180
|
+
this._widgetConfig = {};
|
|
25181
|
+
}
|
|
25182
|
+
get widgetConfig() {
|
|
25183
|
+
return this._widgetConfig;
|
|
25184
|
+
}
|
|
25185
|
+
set widgetConfig(statisticsConfig) {
|
|
25186
|
+
if (statisticsConfig) {
|
|
25187
|
+
this._widgetConfig = statisticsConfig;
|
|
25188
|
+
}
|
|
25189
|
+
this.getStatistics();
|
|
25190
|
+
}
|
|
25191
|
+
ngOnInit() { }
|
|
25192
|
+
getStatistics() {
|
|
25193
|
+
this.refreshingRequest = true;
|
|
25194
|
+
this.statisticsResult = {};
|
|
25195
|
+
this.signingService.getSignatureStatistics(this.widgetConfig).subscribe(data => {
|
|
25196
|
+
this.statisticsResult.signaturesAmount = data.countSignatures;
|
|
25197
|
+
this.statisticsResult.documentsAmount = data.countObjects;
|
|
25198
|
+
if (data.aggregations) {
|
|
25199
|
+
this.statisticsResult.aggregations = [];
|
|
25200
|
+
for (const [key, value] of Object.entries(data.aggregations)) {
|
|
25201
|
+
this.statisticsResult.aggregations.push({ key: key, value: value });
|
|
25202
|
+
}
|
|
25203
|
+
}
|
|
25204
|
+
this.refreshingRequest = false;
|
|
25205
|
+
}, err => {
|
|
25206
|
+
this.statisticsResult = {};
|
|
25207
|
+
this.refreshingRequest = false;
|
|
25208
|
+
});
|
|
25209
|
+
}
|
|
25210
|
+
copyToClipboard() {
|
|
25211
|
+
let table = `<table>
|
|
25212
|
+
<tr>
|
|
25213
|
+
<td translate>${this.translate.instant('eo.workspace.widget.signature.statistics.totalDocuments')}</td>
|
|
25214
|
+
<td>${this.statisticsResult.documentsAmount}</td>
|
|
25215
|
+
</tr>
|
|
25216
|
+
<br>
|
|
25217
|
+
<tr>
|
|
25218
|
+
<td translate>${this.translate.instant('eo.workspace.widget.signature.statistics.totalSignatures')}</td>
|
|
25219
|
+
<td>${this.statisticsResult.signaturesAmount}</td>
|
|
25220
|
+
</tr>`;
|
|
25221
|
+
for (let agg of this.statisticsResult.aggregations) {
|
|
25222
|
+
table += `<tr>
|
|
25223
|
+
<td>${agg.key}</td>
|
|
25224
|
+
<td>${agg.value}</td>
|
|
25225
|
+
</tr>`;
|
|
25226
|
+
}
|
|
25227
|
+
table += '</table>';
|
|
25228
|
+
this.clipboard.copy(table);
|
|
25229
|
+
}
|
|
25230
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SignatureStatisticsWidgetComponent, deps: [{ token: i1.SigningService }, { token: i2$6.Clipboard }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25231
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.4", type: SignatureStatisticsWidgetComponent, selector: "eo-signature-statistics-widget", inputs: { widgetConfig: "widgetConfig" }, ngImport: i0, template: "<header>\n <div class=\"header-title\">\n @if (widgetConfig.title) {\n <div class=\"title\">\n {{ widgetConfig.title }}\n </div>\n }\n <div class=\"icons-title\">\n <eo-icon class=\"button primary\" [iconSrc]=\"'assets/_default/svg/ic_content-copy.svg'\" (click)=\"copyToClipboard()\"\n [iconTitle]=\"('eo.clipboard.title'| translate)\"></eo-icon>\n <eo-icon class=\"button primary\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" (click)=\"getStatistics()\"\n [iconTitle]=\"('eo.widget.hitlist.tooltip.refresh'| translate)\"></eo-icon>\n </div>\n </div>\n</header>\n\n@if (refreshingRequest) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n} @else if (statisticsResult && !refreshingRequest) {\n <main class=\"info\">\n <div>\n <table>\n <tr class=\"total\">\n <td translate>eo.workspace.widget.signature.statistics.totalDocuments</td>\n <td>{{ statisticsResult.documentsAmount }}</td>\n </tr>\n <br>\n <tr class=\"total\">\n <td translate>eo.workspace.widget.signature.statistics.totalSignatures</td>\n <td>{{ statisticsResult.signaturesAmount }}</td>\n </tr>\n @for (agg of statisticsResult.aggregations; track $index) {\n <tr>\n <td>{{ agg.key }}</td>\n <td class=\"count-value\">{{ agg.value }}</td>\n </tr>\n }\n </table>\n </div>\n </main>\n}\n", styles: [":host-context(.editMode) .info:not(.visible){opacity:1}:host{height:100%;display:grid;grid-template-rows:auto 1fr;grid-template-areas:\"header\" \"main\";background-color:var(--panel-background);color:var(--text-color-body)}:host header{height:40px;display:inline-grid;color:#fff}:host header .header-title{background-color:var(--color-primary-2);display:flex;justify-content:space-between;align-items:center}:host header .title{text-align:center;flex-grow:1;justify-content:center}:host header .icons-title{justify-content:flex-end;display:flex;gap:3px;position:relative;align-items:center;right:13px}:host header .icons-title eo-icon.button.primary{color:rgba(var(--color-white-rgb),.5)}:host header .icons-title eo-icon.button.primary:hover{cursor:pointer;color:var(--color-white)}:host main{grid-area:main}:host 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}:host main div{display:flex;justify-content:center;padding-top:12px}:host main div table .total{font-weight:700}:host main div table .count-value{text-align:right}:host main.info{overflow-y:auto}\n"], dependencies: [{ 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: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
25232
|
+
};
|
|
25233
|
+
SignatureStatisticsWidgetComponent = __decorate([
|
|
25234
|
+
UntilDestroy()
|
|
25235
|
+
], SignatureStatisticsWidgetComponent);
|
|
25236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SignatureStatisticsWidgetComponent, decorators: [{
|
|
25237
|
+
type: Component,
|
|
25238
|
+
args: [{ selector: 'eo-signature-statistics-widget', template: "<header>\n <div class=\"header-title\">\n @if (widgetConfig.title) {\n <div class=\"title\">\n {{ widgetConfig.title }}\n </div>\n }\n <div class=\"icons-title\">\n <eo-icon class=\"button primary\" [iconSrc]=\"'assets/_default/svg/ic_content-copy.svg'\" (click)=\"copyToClipboard()\"\n [iconTitle]=\"('eo.clipboard.title'| translate)\"></eo-icon>\n <eo-icon class=\"button primary\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" (click)=\"getStatistics()\"\n [iconTitle]=\"('eo.widget.hitlist.tooltip.refresh'| translate)\"></eo-icon>\n </div>\n </div>\n</header>\n\n@if (refreshingRequest) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n} @else if (statisticsResult && !refreshingRequest) {\n <main class=\"info\">\n <div>\n <table>\n <tr class=\"total\">\n <td translate>eo.workspace.widget.signature.statistics.totalDocuments</td>\n <td>{{ statisticsResult.documentsAmount }}</td>\n </tr>\n <br>\n <tr class=\"total\">\n <td translate>eo.workspace.widget.signature.statistics.totalSignatures</td>\n <td>{{ statisticsResult.signaturesAmount }}</td>\n </tr>\n @for (agg of statisticsResult.aggregations; track $index) {\n <tr>\n <td>{{ agg.key }}</td>\n <td class=\"count-value\">{{ agg.value }}</td>\n </tr>\n }\n </table>\n </div>\n </main>\n}\n", styles: [":host-context(.editMode) .info:not(.visible){opacity:1}:host{height:100%;display:grid;grid-template-rows:auto 1fr;grid-template-areas:\"header\" \"main\";background-color:var(--panel-background);color:var(--text-color-body)}:host header{height:40px;display:inline-grid;color:#fff}:host header .header-title{background-color:var(--color-primary-2);display:flex;justify-content:space-between;align-items:center}:host header .title{text-align:center;flex-grow:1;justify-content:center}:host header .icons-title{justify-content:flex-end;display:flex;gap:3px;position:relative;align-items:center;right:13px}:host header .icons-title eo-icon.button.primary{color:rgba(var(--color-white-rgb),.5)}:host header .icons-title eo-icon.button.primary:hover{cursor:pointer;color:var(--color-white)}:host main{grid-area:main}:host 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}:host main div{display:flex;justify-content:center;padding-top:12px}:host main div table .total{font-weight:700}:host main div table .count-value{text-align:right}:host main.info{overflow-y:auto}\n"] }]
|
|
25239
|
+
}], ctorParameters: () => [{ type: i1.SigningService }, { type: i2$6.Clipboard }, { type: i1.TranslateService }], propDecorators: { widgetConfig: [{
|
|
25240
|
+
type: Input
|
|
25241
|
+
}] } });
|
|
25242
|
+
|
|
25243
|
+
let SignatureStatisticsSetupComponent = class SignatureStatisticsSetupComponent {
|
|
25244
|
+
constructor(fb, translate, systemService) {
|
|
25245
|
+
this.fb = fb;
|
|
25246
|
+
this.translate = translate;
|
|
25247
|
+
this.systemService = systemService;
|
|
25248
|
+
this.widgetConfigChange = new EventEmitter();
|
|
25249
|
+
this.widgetConfigStateChange = new EventEmitter();
|
|
25250
|
+
this.setupForm = this.fb.group({
|
|
25251
|
+
title: [this.translate.instant('eo.workspace.widget.signature.statistics.title'), [Validators.maxLength(50)]],
|
|
25252
|
+
documentTypes: [[]],
|
|
25253
|
+
aggregationField: [''],
|
|
25254
|
+
status: [['signed']],
|
|
25255
|
+
type: [[]],
|
|
25256
|
+
from: [null],
|
|
25257
|
+
to: [null],
|
|
25258
|
+
});
|
|
25259
|
+
this.yuvsigtypeCodesystem = {
|
|
25260
|
+
id: '1291BAB91B0D49D1A9A4DFCCF49A1666',
|
|
25261
|
+
name: 'yuvsigtype',
|
|
25262
|
+
entries: [],
|
|
25263
|
+
title: this.translate.instant('eo.workspace.widget.signature.statistics.type')
|
|
25264
|
+
};
|
|
25265
|
+
this.yuvsigstatusCodesystem = {
|
|
25266
|
+
id: '2AD7397495F64B8C927BC952C0D77276',
|
|
25267
|
+
name: 'yuvsigstatus',
|
|
25268
|
+
entries: [],
|
|
25269
|
+
title: this.translate.instant('eo.workspace.widget.signature.statistics.status')
|
|
25270
|
+
};
|
|
25271
|
+
this.documentTypesPicker = {
|
|
25272
|
+
title: this.translate.instant('eo.workspace.widget.signature.statistics.documentTypes.title'),
|
|
25273
|
+
codesystem: {},
|
|
25274
|
+
};
|
|
25275
|
+
this._widgetConfig = {};
|
|
25276
|
+
this.setupForm.valueChanges.pipe(debounceTime$1(1000), untilDestroyed(this)).subscribe((_) => {
|
|
25277
|
+
this.setWidgetConfig();
|
|
25278
|
+
});
|
|
25279
|
+
this.setupForm.statusChanges.pipe(untilDestroyed(this)).subscribe((v) => {
|
|
25280
|
+
this.widgetConfigStateChange.emit(v);
|
|
25281
|
+
});
|
|
25282
|
+
this.documentTypesPicker.codesystem = this.getObjectTypes();
|
|
25283
|
+
this.yuvsigstatusCodesystem.entries = this.systemService.getCodesystem(this.yuvsigstatusCodesystem.id).entries;
|
|
25284
|
+
this.yuvsigtypeCodesystem.entries = this.systemService.getCodesystem(this.yuvsigtypeCodesystem.id).entries;
|
|
25285
|
+
}
|
|
25286
|
+
get widgetConfig() {
|
|
25287
|
+
return this._widgetConfig;
|
|
25288
|
+
}
|
|
25289
|
+
set widgetConfig(wc) {
|
|
25290
|
+
this._widgetConfig = wc;
|
|
25291
|
+
this.setupForm.patchValue({
|
|
25292
|
+
title: wc?.title ? wc.title : '',
|
|
25293
|
+
documentTypes: wc?.documentTypes ? wc.documentTypes : [],
|
|
25294
|
+
aggregationField: wc?.aggregationField ? wc.aggregationField : '',
|
|
25295
|
+
status: wc?.status ? wc.status : ['signed'],
|
|
25296
|
+
type: wc?.type ? wc.type : [],
|
|
25297
|
+
from: wc?.from ? new Date(wc.from) : null,
|
|
25298
|
+
to: wc?.to ? new Date(wc.to) : null
|
|
25299
|
+
});
|
|
25300
|
+
}
|
|
25301
|
+
ngOnInit() {
|
|
25302
|
+
this.setWidgetConfig();
|
|
25303
|
+
}
|
|
25304
|
+
getObjectTypes() {
|
|
25305
|
+
const filteredObjectTypes = this.systemService.getObjectTypes().filter(objectType => objectType.supertypes.includes('yuvsigning'));
|
|
25306
|
+
return {
|
|
25307
|
+
entries: filteredObjectTypes.map(objectType => {
|
|
25308
|
+
return {
|
|
25309
|
+
id: objectType.qname,
|
|
25310
|
+
defaultrepresentation: objectType.label,
|
|
25311
|
+
data: objectType.qname
|
|
25312
|
+
};
|
|
25313
|
+
}).sort(Utils.sortValues('defaultrepresentation')),
|
|
25314
|
+
};
|
|
25315
|
+
}
|
|
25316
|
+
setWidgetConfig() {
|
|
25317
|
+
if (this.setupForm.valid) {
|
|
25318
|
+
this._widgetConfig = {
|
|
25319
|
+
...this.setupForm.value,
|
|
25320
|
+
};
|
|
25321
|
+
this.widgetConfigChange.emit(this._widgetConfig);
|
|
25322
|
+
}
|
|
25323
|
+
}
|
|
25324
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SignatureStatisticsSetupComponent, deps: [{ token: i1$3.UntypedFormBuilder }, { token: i1.TranslateService }, { token: i1.SystemService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25325
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.4", type: SignatureStatisticsSetupComponent, selector: "eo-signature-statistics-setup", inputs: { widgetConfig: "widgetConfig" }, outputs: { widgetConfigChange: "widgetConfigChange", widgetConfigStateChange: "widgetConfigStateChange" }, ngImport: i0, template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n <eo-form-input tabindex=\"0\" [label]=\"'eo.workspace.widget.setup.title' | translate\" [skipToggle]=\"true\"\n description=\"eo.workspace.widget.signature.statistics.title\">\n <eo-string [autocomplete]=\"true\" formControlName=\"title\"></eo-string>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('title')?.errors) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>\n eo.form.property.maxlength\n </div>\n }\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.signature.statistics.documentTypes' | translate\">\n <eo-codesystem formControlName=\"documentTypes\" [pickerTitle]=\"documentTypesPicker.title\"\n [codesystem]=\"documentTypesPicker.codesystem\" [multiselect]=\"true\"></eo-codesystem>\n </eo-form-input>\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.signature.statistics.aggregationField' | translate\">\n <eo-string formControlName=\"aggregationField\">\n </eo-string>\n </eo-form-input>\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.signature.statistics.status' | translate\">\n <eo-codesystem formControlName=\"status\" [pickerTitle]=\"yuvsigstatusCodesystem.title || ''\"\n [codesystem]=\"yuvsigstatusCodesystem\" [multiselect]=\"true\"></eo-codesystem>\n </eo-form-input>\n\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.signature.statistics.type' | translate\">\n <eo-codesystem formControlName=\"type\" [pickerTitle]=\"yuvsigtypeCodesystem.title || ''\"\n [codesystem]=\"yuvsigtypeCodesystem\" [multiselect]=\"true\"></eo-codesystem>\n </eo-form-input>\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.signature.statistics.from.label' | translate\"\n [description]=\"'eo.workspace.widget.signature.statistics.from.description'\">\n <eo-date formControlName=\"from\"></eo-date>\n </eo-form-input>\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.signature.statistics.to.label' | translate\"\n [description]=\"'eo.workspace.widget.signature.statistics.to.description'\">\n <eo-date formControlName=\"to\"></eo-date>\n </eo-form-input>\n </form>\n</div>\n<div class=\"preview\">\n <eo-signature-statistics-widget [widgetConfig]=\"widgetConfig\"></eo-signature-statistics-widget>\n</div>\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-bottom:var(--app-pane-padding)}:host .setup .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .preview{padding:var(--app-pane-padding);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: 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", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: DateComponent, selector: "eo-date", inputs: ["withTime", "readonly", "onlyFutureDates"] }, { kind: "component", type: StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "component", type: SignatureStatisticsWidgetComponent, selector: "eo-signature-statistics-widget", inputs: ["widgetConfig"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
25326
|
+
};
|
|
25327
|
+
SignatureStatisticsSetupComponent = __decorate([
|
|
25328
|
+
UntilDestroy()
|
|
25329
|
+
], SignatureStatisticsSetupComponent);
|
|
25330
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SignatureStatisticsSetupComponent, decorators: [{
|
|
25331
|
+
type: Component,
|
|
25332
|
+
args: [{ selector: 'eo-signature-statistics-setup', template: "<div class=\"setup\">\n <form [formGroup]=\"setupForm\">\n <eo-form-input tabindex=\"0\" [label]=\"'eo.workspace.widget.setup.title' | translate\" [skipToggle]=\"true\"\n description=\"eo.workspace.widget.signature.statistics.title\">\n <eo-string [autocomplete]=\"true\" formControlName=\"title\"></eo-string>\n </eo-form-input>\n @if (setupForm.dirty && setupForm.get('title')?.errors) {\n <div class=\"err-msg\" [translateParams]=\"{maxlength: 50}\" translate>\n eo.form.property.maxlength\n </div>\n }\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.signature.statistics.documentTypes' | translate\">\n <eo-codesystem formControlName=\"documentTypes\" [pickerTitle]=\"documentTypesPicker.title\"\n [codesystem]=\"documentTypesPicker.codesystem\" [multiselect]=\"true\"></eo-codesystem>\n </eo-form-input>\n <eo-form-input [skipToggle]=\"true\"\n [label]=\"'eo.workspace.widget.signature.statistics.aggregationField' | translate\">\n <eo-string formControlName=\"aggregationField\">\n </eo-string>\n </eo-form-input>\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.signature.statistics.status' | translate\">\n <eo-codesystem formControlName=\"status\" [pickerTitle]=\"yuvsigstatusCodesystem.title || ''\"\n [codesystem]=\"yuvsigstatusCodesystem\" [multiselect]=\"true\"></eo-codesystem>\n </eo-form-input>\n\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.signature.statistics.type' | translate\">\n <eo-codesystem formControlName=\"type\" [pickerTitle]=\"yuvsigtypeCodesystem.title || ''\"\n [codesystem]=\"yuvsigtypeCodesystem\" [multiselect]=\"true\"></eo-codesystem>\n </eo-form-input>\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.signature.statistics.from.label' | translate\"\n [description]=\"'eo.workspace.widget.signature.statistics.from.description'\">\n <eo-date formControlName=\"from\"></eo-date>\n </eo-form-input>\n <eo-form-input [skipToggle]=\"true\" [label]=\"'eo.workspace.widget.signature.statistics.to.label' | translate\"\n [description]=\"'eo.workspace.widget.signature.statistics.to.description'\">\n <eo-date formControlName=\"to\"></eo-date>\n </eo-form-input>\n </form>\n</div>\n<div class=\"preview\">\n <eo-signature-statistics-widget [widgetConfig]=\"widgetConfig\"></eo-signature-statistics-widget>\n</div>\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-bottom:var(--app-pane-padding)}:host .setup .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host .preview{padding:var(--app-pane-padding);pointer-events:none}\n"] }]
|
|
25333
|
+
}], ctorParameters: () => [{ type: i1$3.UntypedFormBuilder }, { type: i1.TranslateService }, { type: i1.SystemService }], propDecorators: { widgetConfigChange: [{
|
|
25334
|
+
type: Output
|
|
25335
|
+
}], widgetConfigStateChange: [{
|
|
25336
|
+
type: Output
|
|
25337
|
+
}], widgetConfig: [{
|
|
25338
|
+
type: Input
|
|
25339
|
+
}] } });
|
|
25340
|
+
|
|
24917
25341
|
let DashboardComponent = class DashboardComponent {
|
|
24918
|
-
constructor(userService, widgetGridRegistry, titleService, http, config, storageService, translate, pendingChanges) {
|
|
25342
|
+
constructor(userService, widgetGridRegistry, titleService, http, config, storageService, translate, pendingChanges, signingService) {
|
|
24919
25343
|
this.userService = userService;
|
|
24920
25344
|
this.widgetGridRegistry = widgetGridRegistry;
|
|
24921
25345
|
this.titleService = titleService;
|
|
@@ -24924,6 +25348,7 @@ let DashboardComponent = class DashboardComponent {
|
|
|
24924
25348
|
this.storageService = storageService;
|
|
24925
25349
|
this.translate = translate;
|
|
24926
25350
|
this.pendingChanges = pendingChanges;
|
|
25351
|
+
this.signingService = signingService;
|
|
24927
25352
|
this.workspaceOptions = {
|
|
24928
25353
|
gridConfig: {
|
|
24929
25354
|
rows: 30,
|
|
@@ -24955,6 +25380,7 @@ let DashboardComponent = class DashboardComponent {
|
|
|
24955
25380
|
"yuv.widget.hitlist": this.translate.instant('eo.workspace.widget.hitlist.label'),
|
|
24956
25381
|
"yuv.widget.countObjects": this.translate.instant('eo.workspace.widget.countObject.label'),
|
|
24957
25382
|
"yuv.widget.chart": this.translate.instant('eo.workspace.widget.chart.label'),
|
|
25383
|
+
"yuv.widget.signatureStatistics": this.translate.instant('eo.workspace.widget.signature.statistics.title'),
|
|
24958
25384
|
});
|
|
24959
25385
|
this.widgetGridRegistry.updateWidgetGridLabels({
|
|
24960
25386
|
widgetPickerTitle: this.translate.instant('eo.workspace.widgetGrid.widgetPickerTitle'),
|
|
@@ -24975,7 +25401,7 @@ let DashboardComponent = class DashboardComponent {
|
|
|
24975
25401
|
});
|
|
24976
25402
|
}
|
|
24977
25403
|
registerWidgets() {
|
|
24978
|
-
|
|
25404
|
+
const widgets = [
|
|
24979
25405
|
{
|
|
24980
25406
|
name: 'yuv.widget.picture',
|
|
24981
25407
|
label: this.translate.instant('eo.workspace.widget.picture.label'),
|
|
@@ -25035,7 +25461,17 @@ let DashboardComponent = class DashboardComponent {
|
|
|
25035
25461
|
setupComponent: ChartsSetupComponent,
|
|
25036
25462
|
widgetComponent: ChartsWidgetComponent,
|
|
25037
25463
|
}
|
|
25038
|
-
]
|
|
25464
|
+
];
|
|
25465
|
+
if (this.signingService.canSign() && this.userService.getCurrentUser().roles.find(role => role.name === 'Use signature statistics')) {
|
|
25466
|
+
widgets.push({
|
|
25467
|
+
name: 'yuv.widget.signatureStatistics',
|
|
25468
|
+
label: this.translate.instant('eo.workspace.widget.signature.statistics.title'),
|
|
25469
|
+
widgetComponent: SignatureStatisticsWidgetComponent,
|
|
25470
|
+
setupComponent: SignatureStatisticsSetupComponent
|
|
25471
|
+
});
|
|
25472
|
+
}
|
|
25473
|
+
widgets.sort(Utils.sortValues('label'));
|
|
25474
|
+
this.widgetGridRegistry.registerGridWidgets(widgets);
|
|
25039
25475
|
}
|
|
25040
25476
|
ngOnInit() {
|
|
25041
25477
|
this.loadWorkspacesConfig();
|
|
@@ -25123,7 +25559,7 @@ let DashboardComponent = class DashboardComponent {
|
|
|
25123
25559
|
this.pendingChanges.finishTask(this.pendingTaskID);
|
|
25124
25560
|
}
|
|
25125
25561
|
}
|
|
25126
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DashboardComponent, deps: [{ token: i1.UserService }, { token: i2$5.WidgetGridRegistry }, { token: PageTitleService }, { token: i2.HttpClient }, { token: i1.Config }, { token: i1.LocalStorageService }, { token: i1.TranslateService }, { token: PendingChangesService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25562
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DashboardComponent, deps: [{ token: i1.UserService }, { token: i2$5.WidgetGridRegistry }, { token: PageTitleService }, { token: i2.HttpClient }, { token: i1.Config }, { token: i1.LocalStorageService }, { token: i1.TranslateService }, { token: PendingChangesService }, { token: i1.SigningService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25127
25563
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: DashboardComponent, selector: "eo-dashboard", ngImport: i0, template: "<ng-container>\n <div class=\"fade\"></div>\n <div class=\"dashboard\" [style.background-image]=\"backgroundImage\">\n <div class=\"footerButton\" eoRtlAware=\"full\">\n <eo-icon id=\"dashboardButton\" [iconSrc]=\"toolbarIconSrc\" [iconTitle]=\"toolbarIconTooltip | translate\"></eo-icon>\n </div>\n <yuv-widget-grid-workspaces *ngIf=\"workspaceConfig\"\n [workspaceLabelMaxLength]=\"50\"\n [workspaceConfig]=\"workspaceConfig\"\n (configChange)=\"onWorkspacesConfigChange($event)\" (editModeChange)=\"onWorkspaceEditMode($event)\" [options]=\"workspaceOptions\">\n </yuv-widget-grid-workspaces>\n </div>\n</ng-container>\n", styles: [".fade{position:absolute;opacity:.3;left:0;right:0;top:0;z-index:1;height:500px;background:linear-gradient(to bottom,rgba(var(--color-black-rgb),1) 0,transparent 100%)}.dashboard{position:absolute;inset:0;background-size:cover;background-position:center center}.footerButton{position:absolute;z-index:1000;bottom:10px;cursor:pointer;right:5px}.footerButton.rtl{left:5px;right:unset}.footerButton:hover{color:var(--list-item-hover-background)}.footerButton:hover eo-icon{background-color:var(--list-item-hover-background)}.footerButton #dashboardButton{color:var(--text-color-caption)}::ng-deep .cds--cc--title p.title,::ng-deep .yuv-widget-headline{font-size:var(--font-body);font-weight:700;color:var(--text-color-caption);font-style:italic;margin:0;padding:0}::ng-deep svg{width:24px;height:24px}::ng-deep .legend-item svg{width:11px;height:11px}::ng-deep yuv-widget-grid{top:60px;height:92%!important;--color-admin-primary: var(--color-primary)}::ng-deep yuv-widget-grid.editMode gridster-item{outline:2px dotted var(--color-admin-primary);border-radius:2px}::ng-deep yuv-widget-grid-workspaces{background-size:cover;background-position:center center;--wgw-background: transparent !important}::ng-deep yuv-widget-grid-workspaces>.confirm{align-items:center!important;justify-content:center!important}::ng-deep yuv-widget-grid-workspaces button.fab{border-radius:2.5em!important}::ng-deep yuv-widget-grid-workspaces>.toolbar{padding-inline-end:36px!important;background-color:#d3d3d380!important}::ng-deep yuv-widget-grid-workspaces>.toolbar>.workspace-edit input{position:relative;left:6px;width:230px}::ng-deep yuv-widget-grid-workspaces yuv-picture-widget{box-sizing:border-box}::ng-deep gridster{background:none!important}::ng-deep gridster .yuv-widget{border:1px solid var(--panel-divider-color)}::ng-deep gridster .gridster-row,::ng-deep gridster .gridster-column{border-color:#0003}.dark ::ng-deep gridster .gridster-row,.dark ::ng-deep gridster .gridster-column{border-color:var(--panel-divider-color)}\n"], dependencies: [{ 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: RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: i2$5.WidgetGridWorkspacesComponent, selector: "yuv-widget-grid-workspaces", inputs: ["options", "workspaceConfig", "preventAdd", "workspaceLabelMaxLength", "buckets"], outputs: ["configChange", "gridItemEvent", "editModeChange"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], animations: [
|
|
25128
25564
|
listAnimation
|
|
25129
25565
|
] }); }
|
|
@@ -25136,7 +25572,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
|
|
|
25136
25572
|
args: [{ selector: 'eo-dashboard', animations: [
|
|
25137
25573
|
listAnimation
|
|
25138
25574
|
], template: "<ng-container>\n <div class=\"fade\"></div>\n <div class=\"dashboard\" [style.background-image]=\"backgroundImage\">\n <div class=\"footerButton\" eoRtlAware=\"full\">\n <eo-icon id=\"dashboardButton\" [iconSrc]=\"toolbarIconSrc\" [iconTitle]=\"toolbarIconTooltip | translate\"></eo-icon>\n </div>\n <yuv-widget-grid-workspaces *ngIf=\"workspaceConfig\"\n [workspaceLabelMaxLength]=\"50\"\n [workspaceConfig]=\"workspaceConfig\"\n (configChange)=\"onWorkspacesConfigChange($event)\" (editModeChange)=\"onWorkspaceEditMode($event)\" [options]=\"workspaceOptions\">\n </yuv-widget-grid-workspaces>\n </div>\n</ng-container>\n", styles: [".fade{position:absolute;opacity:.3;left:0;right:0;top:0;z-index:1;height:500px;background:linear-gradient(to bottom,rgba(var(--color-black-rgb),1) 0,transparent 100%)}.dashboard{position:absolute;inset:0;background-size:cover;background-position:center center}.footerButton{position:absolute;z-index:1000;bottom:10px;cursor:pointer;right:5px}.footerButton.rtl{left:5px;right:unset}.footerButton:hover{color:var(--list-item-hover-background)}.footerButton:hover eo-icon{background-color:var(--list-item-hover-background)}.footerButton #dashboardButton{color:var(--text-color-caption)}::ng-deep .cds--cc--title p.title,::ng-deep .yuv-widget-headline{font-size:var(--font-body);font-weight:700;color:var(--text-color-caption);font-style:italic;margin:0;padding:0}::ng-deep svg{width:24px;height:24px}::ng-deep .legend-item svg{width:11px;height:11px}::ng-deep yuv-widget-grid{top:60px;height:92%!important;--color-admin-primary: var(--color-primary)}::ng-deep yuv-widget-grid.editMode gridster-item{outline:2px dotted var(--color-admin-primary);border-radius:2px}::ng-deep yuv-widget-grid-workspaces{background-size:cover;background-position:center center;--wgw-background: transparent !important}::ng-deep yuv-widget-grid-workspaces>.confirm{align-items:center!important;justify-content:center!important}::ng-deep yuv-widget-grid-workspaces button.fab{border-radius:2.5em!important}::ng-deep yuv-widget-grid-workspaces>.toolbar{padding-inline-end:36px!important;background-color:#d3d3d380!important}::ng-deep yuv-widget-grid-workspaces>.toolbar>.workspace-edit input{position:relative;left:6px;width:230px}::ng-deep yuv-widget-grid-workspaces yuv-picture-widget{box-sizing:border-box}::ng-deep gridster{background:none!important}::ng-deep gridster .yuv-widget{border:1px solid var(--panel-divider-color)}::ng-deep gridster .gridster-row,::ng-deep gridster .gridster-column{border-color:#0003}.dark ::ng-deep gridster .gridster-row,.dark ::ng-deep gridster .gridster-column{border-color:var(--panel-divider-color)}\n"] }]
|
|
25139
|
-
}], ctorParameters: () => [{ type: i1.UserService }, { type: i2$5.WidgetGridRegistry }, { type: PageTitleService }, { type: i2.HttpClient }, { type: i1.Config }, { type: i1.LocalStorageService }, { type: i1.TranslateService }, { type: PendingChangesService }] });
|
|
25575
|
+
}], ctorParameters: () => [{ type: i1.UserService }, { type: i2$5.WidgetGridRegistry }, { type: PageTitleService }, { type: i2.HttpClient }, { type: i1.Config }, { type: i1.LocalStorageService }, { type: i1.TranslateService }, { type: PendingChangesService }, { type: i1.SigningService }] });
|
|
25140
25576
|
|
|
25141
25577
|
let SettingsComponent = class SettingsComponent {
|
|
25142
25578
|
constructor(renderer, userService, config, notify, systemService, eventService, capabilitiesService, titleService, agentService, fb, cacheService, storageService, translate, elemRef, notification) {
|
|
@@ -25155,6 +25591,12 @@ let SettingsComponent = class SettingsComponent {
|
|
|
25155
25591
|
this.translate = translate;
|
|
25156
25592
|
this.elemRef = elemRef;
|
|
25157
25593
|
this.notification = notification;
|
|
25594
|
+
this.files = {};
|
|
25595
|
+
this.user = {};
|
|
25596
|
+
this.deputies = { data: [], dataMeta: [] };
|
|
25597
|
+
this.showChangePasswordForm = false;
|
|
25598
|
+
this.clientLocales = [];
|
|
25599
|
+
this.schemaLocales = [];
|
|
25158
25600
|
this.LockSettings = LockSettings;
|
|
25159
25601
|
this.showAgentConfig = true;
|
|
25160
25602
|
this.defaultLockSetting = false;
|
|
@@ -25162,30 +25604,34 @@ let SettingsComponent = class SettingsComponent {
|
|
|
25162
25604
|
this.userId = '';
|
|
25163
25605
|
this.showDeleteIconTrash = true;
|
|
25164
25606
|
this.userImageUri = '';
|
|
25607
|
+
this.preview = '';
|
|
25608
|
+
this.file = null;
|
|
25165
25609
|
this.hoverSelector = false;
|
|
25166
25610
|
this.showPreviewDialog = false;
|
|
25167
25611
|
this.showDeleteDialog = false;
|
|
25168
25612
|
this.showErrorDialog = false;
|
|
25169
25613
|
this.MAX_FILE_SIZE = 524288;
|
|
25170
25614
|
this.viewMode = '';
|
|
25171
|
-
this.
|
|
25615
|
+
this.fileName = '';
|
|
25616
|
+
this.deleteConfigDashboard = false;
|
|
25172
25617
|
this.titleService.setBaseTitle(this.translate.instant('eo.bar.button.settings.title'));
|
|
25173
25618
|
this.clientLocales = config.getClientLocales();
|
|
25174
25619
|
this.capabilities = this.capabilitiesService.getCapabilities();
|
|
25175
25620
|
this.getSchemaLocales();
|
|
25176
25621
|
this.getUserData();
|
|
25177
|
-
this.agentLockSettings = userService.getCurrentUser()
|
|
25178
|
-
this.agentService.isConnected$.pipe(take$1(1), withLatestFrom(this.agentService.agentConfig$)).subscribe(([isConnected,
|
|
25622
|
+
this.agentLockSettings = userService.getCurrentUser()?.userSettings?.alwayslock;
|
|
25623
|
+
this.agentService.isConnected$.pipe(take$1(1), withLatestFrom(this.agentService.agentConfig$)).subscribe(([isConnected, configuration]) => {
|
|
25179
25624
|
this.useAgentControl = this.fb.control(isConnected);
|
|
25180
|
-
if (
|
|
25181
|
-
this.showAgentConfig =
|
|
25625
|
+
if (configuration.hasOwnProperty(agentConfigKeys.AUTOCONNECT)) {
|
|
25626
|
+
this.showAgentConfig = configuration[agentConfigKeys.AUTOCONNECT] || false;
|
|
25182
25627
|
this.useAgentControl.disable();
|
|
25183
25628
|
}
|
|
25184
|
-
|
|
25629
|
+
const agentConfigLockSettings = configuration[agentConfigKeys.LOCKSETTINGS];
|
|
25630
|
+
if (configuration.hasOwnProperty(agentConfigKeys.LOCKSETTINGS) && agentConfigLockSettings && Object.values(LockSettings).includes(agentConfigLockSettings)) {
|
|
25185
25631
|
this.defaultLockSetting = true;
|
|
25186
|
-
this.agentLockSettings =
|
|
25632
|
+
this.agentLockSettings = configuration[agentConfigKeys.LOCKSETTINGS] || LockSettings.ask;
|
|
25187
25633
|
}
|
|
25188
|
-
this.useAgentControl
|
|
25634
|
+
this.useAgentControl?.valueChanges.pipe(untilDestroyed(this)).subscribe(() => this.agentService.isConnected = this.useAgentControl?.value);
|
|
25189
25635
|
});
|
|
25190
25636
|
}
|
|
25191
25637
|
get agentStatus() {
|
|
@@ -25202,7 +25648,9 @@ let SettingsComponent = class SettingsComponent {
|
|
|
25202
25648
|
}
|
|
25203
25649
|
getSchemaLocales() {
|
|
25204
25650
|
this.systemService.system$.subscribe((systemDefinition) => {
|
|
25205
|
-
|
|
25651
|
+
if (systemDefinition.locales.length > 0) {
|
|
25652
|
+
this.schemaLocales = systemDefinition.locales?.sort(Utils.sortValues('displayname'));
|
|
25653
|
+
}
|
|
25206
25654
|
});
|
|
25207
25655
|
}
|
|
25208
25656
|
saveDeputies() {
|
|
@@ -25236,11 +25684,11 @@ let SettingsComponent = class SettingsComponent {
|
|
|
25236
25684
|
}
|
|
25237
25685
|
changeSchemaLocale(iso) {
|
|
25238
25686
|
if (this.user.schemaLocale !== iso) {
|
|
25239
|
-
this.userService.changeSchemaLocale(iso).subscribe(_ => Utils.throw(
|
|
25687
|
+
this.userService.changeSchemaLocale(iso).subscribe(() => { }, _ => Utils.throw(() => { }, this.translate.instant('eo.user.service.schema.locale.error.title'), this.translate.instant('eo.user.service.schema.locale.error.description')));
|
|
25240
25688
|
}
|
|
25241
25689
|
}
|
|
25242
25690
|
ngAfterViewInit() {
|
|
25243
|
-
this.elemRef.nativeElement.querySelector('#presence')
|
|
25691
|
+
this.elemRef.nativeElement.querySelector('#presence')?.focus();
|
|
25244
25692
|
this.user$.subscribe(user => {
|
|
25245
25693
|
this.userId = user.id;
|
|
25246
25694
|
this.userImageUri = this.userService.getUserImageUri(this.userId);
|
|
@@ -25251,7 +25699,7 @@ let SettingsComponent = class SettingsComponent {
|
|
|
25251
25699
|
setPresence(b) {
|
|
25252
25700
|
this.userService.setPresence(b)
|
|
25253
25701
|
.subscribe(_ => {
|
|
25254
|
-
}, Utils.throw(
|
|
25702
|
+
}, Utils.throw(() => { }, this.translate.instant('eo.state.settings.presence.error.title'), this.translate.instant('eo.state.settings.presence.error.description')));
|
|
25255
25703
|
}
|
|
25256
25704
|
closePreviewDialog() {
|
|
25257
25705
|
this.showPreviewDialog = false;
|
|
@@ -25259,7 +25707,7 @@ let SettingsComponent = class SettingsComponent {
|
|
|
25259
25707
|
}
|
|
25260
25708
|
deleteUserImage() {
|
|
25261
25709
|
this.userService
|
|
25262
|
-
.setUserImage(
|
|
25710
|
+
.setUserImage({}).subscribe({
|
|
25263
25711
|
next: () => {
|
|
25264
25712
|
this.refreshUserImageHeaderBackground(this.userImageUri);
|
|
25265
25713
|
this.eventService.trigger(EnaioEvent.SYSTEM_STATUS_IMAGE_CHANGE);
|
|
@@ -25274,9 +25722,10 @@ let SettingsComponent = class SettingsComponent {
|
|
|
25274
25722
|
},
|
|
25275
25723
|
});
|
|
25276
25724
|
}
|
|
25277
|
-
selectImage(
|
|
25278
|
-
|
|
25279
|
-
if (
|
|
25725
|
+
selectImage(eventTarget) {
|
|
25726
|
+
const event = eventTarget;
|
|
25727
|
+
if (event.files && event.files.length > 0) {
|
|
25728
|
+
this.file = event.files[0];
|
|
25280
25729
|
this.fileName = this.file.name;
|
|
25281
25730
|
switch (false) {
|
|
25282
25731
|
case (this.file.type.includes('image/') && this.file.type.includes('jpeg') || this.file.type.includes('png')):
|
|
@@ -25303,7 +25752,7 @@ let SettingsComponent = class SettingsComponent {
|
|
|
25303
25752
|
this.userService
|
|
25304
25753
|
.setUserImage(this.file).subscribe({
|
|
25305
25754
|
next: () => {
|
|
25306
|
-
this.profileImageOverlay.nativeElement
|
|
25755
|
+
this.profileImageOverlay.nativeElement?.focus();
|
|
25307
25756
|
this.refreshUserImageHeaderBackground(this.userImageUri);
|
|
25308
25757
|
this.eventService.trigger(EnaioEvent.SYSTEM_STATUS_IMAGE_CHANGE);
|
|
25309
25758
|
this.closePreviewDialog();
|
|
@@ -25317,8 +25766,9 @@ let SettingsComponent = class SettingsComponent {
|
|
|
25317
25766
|
},
|
|
25318
25767
|
});
|
|
25319
25768
|
}
|
|
25320
|
-
tabAction(
|
|
25321
|
-
|
|
25769
|
+
tabAction(eventTarget) {
|
|
25770
|
+
const element = eventTarget;
|
|
25771
|
+
element.blur();
|
|
25322
25772
|
this.hoverSelector = false;
|
|
25323
25773
|
}
|
|
25324
25774
|
mouseEnter() {
|
|
@@ -25333,7 +25783,7 @@ let SettingsComponent = class SettingsComponent {
|
|
|
25333
25783
|
refreshUserImageHeaderBackground(imageUri) {
|
|
25334
25784
|
if (imageUri) {
|
|
25335
25785
|
const timestamp = new Date().getTime().toString();
|
|
25336
|
-
this.renderer.setStyle(this.headerBg
|
|
25786
|
+
this.renderer.setStyle(this.headerBg?.nativeElement, 'background-image', `url(${imageUri + '&t=' + timestamp})`);
|
|
25337
25787
|
}
|
|
25338
25788
|
}
|
|
25339
25789
|
clearLocalSettings() {
|
|
@@ -25359,20 +25809,24 @@ let SettingsComponent = class SettingsComponent {
|
|
|
25359
25809
|
});
|
|
25360
25810
|
}
|
|
25361
25811
|
defaultDashboard() {
|
|
25362
|
-
this.userService.saveChangeWorkspace(
|
|
25812
|
+
this.userService.saveChangeWorkspace({}).subscribe(() => {
|
|
25363
25813
|
this.notify.success(this.translate.instant('eo.state.settings.dashboard.clear.success'));
|
|
25364
25814
|
this.saveLocalSettings().then();
|
|
25365
25815
|
});
|
|
25366
25816
|
}
|
|
25817
|
+
resetImageTarget(event) {
|
|
25818
|
+
const element = event.target;
|
|
25819
|
+
element.value = null;
|
|
25820
|
+
}
|
|
25367
25821
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SettingsComponent, deps: [{ token: i0.Renderer2 }, { token: i1.UserService }, { token: i1.Config }, { token: i1.NotificationsService }, { token: i1.SystemService }, { token: i1.EventService }, { token: i1.CapabilitiesService }, { token: PageTitleService }, { token: AgentService }, { token: i1$3.UntypedFormBuilder }, { token: i1.AppCacheService }, { token: i1.LocalStorageService }, { token: i1.TranslateService }, { token: i0.ElementRef }, { token: i1.NotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25368
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: SettingsComponent, selector: "eo-settings", viewQueries: [{ propertyName: "files", first: true, predicate: ["files"], descendants: true }, { propertyName: "headerBg", first: true, predicate: ["headerBg"], descendants: true }, { propertyName: "userAvatar", first: true, predicate: ["userAvatar"], descendants: true }, { propertyName: "confirmDeleteBtn", first: true, predicate: ["confirmDeleteBtn"], descendants: true }, { propertyName: "profileImageOverlay", first: true, predicate: ["profileImageOverlay"], descendants: true }, { propertyName: "deputiesForm", first: true, predicate: NgForm, descendants: true }], ngImport: i0, template: "<div class=\"eo-settings\" *ngIf=\"user\" eoRtlAware>\n\n <div class=\"header\">\n\n <div #headerBg class=\"bg\"></div>\n <div class=\"fill\">\n <div class=\"meta username\">{{user.name}}</div>\n <h1>{{user.firstname}} {{user.lastname}}</h1>\n <div class=\"meta email\">{{user.email}}</div>\n\n <div class=\"presence\" *ngIf=\"capabilities.inbox\">\n <button class=\"toggle dark present\" id=\"presence\" (click)=\"setPresence(true)\" [ngClass]=\"{active: user.present}\"\n translate>eo.state.settings.presence.present</button>\n <button class=\"toggle dark absent\" (click)=\"setPresence(false)\" (keydown.tab)=\"tabAction($event.target)\" [ngClass]=\"{active: !user.present}\"\n translate>eo.state.settings.presence.absent</button>\n </div>\n </div>\n <div (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (keydown.tab)=\"mouseEnter()\">\n\n <eo-user-avatar #userAvatar class=\"userImage\" tabindex=\"-1\" eoRtlAware=\"full\">\n <input type=\"file\" accept=\".jpg, .png\" style=\"display:none;\" #files (change)=\"selectImage($event.target)\" (click)=\"$event.target.value=null\">\n </eo-user-avatar>\n <eo-dialog [styleClass]=\"'view'\" [minWidth]=\"'300px'\" [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\"\n [(visible)]=\"showPreviewDialog\" [focusOnShow]=\"false\">\n <ng-container>\n <div class=\"contain\">\n <div class=\"attachments\">\n <div class=\"atta\">\n <img loading=\"lazy\" [src]=\"preview\">\n </div>\n <div class=\"user-avatar\" *ngIf=\"preview\">\n <eo-user-avatar class=\"preview-round\" [previewUri]=\"preview\"></eo-user-avatar>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button type=\"button\" (click)=\"closePreviewDialog()\" class=\"button danger\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"uploadNewUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.dialog.save</button>\n </div>\n </ng-container>\n </eo-dialog>\n\n <div class=\"overlay\" #profileImageOverlay tabindex=\"0\" eoRtlAware=\"full\">\n <span class=\"updateMessage\" *ngIf=\"hoverSelector\">\n <eo-icon tabindex=\"0\" (keydown.enter)=\"files.click()\" [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"files.click()\"></eo-icon>\n <eo-icon tabindex=\"0\" (keydown.enter)=\"trashIconClick()\" *ngIf=\"showDeleteIconTrash\"\n [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\" aria-disabled=\"true\" (click)=\"trashIconClick()\"></eo-icon>\n </span>\n </div>\n </div>\n\n </div>\n\n <div class=\"body\" (keydown.tab)=\"tabAction($event.target)\">\n\n <div class=\"body-wrap\">\n\n <div class=\"section section-deputies\" *ngIf=\"capabilities.bpm && hasPrivilege('MANAGE_DEPUTY_LIST')\">\n <h3 translate>eo.state.settings.deputies</h3>\n\n <!-- deputies -->\n <div class=\"entry deputies\">\n <div class=\"label\" translate>eo.state.settings.deputies.label</div>\n <div class=\"values\">\n <form #deputiesForm=\"ngForm\" [ngClass]=\"{dirty: deputiesForm.dirty}\">\n <eo-organization name=\"deputies\" [dataMeta]=\"deputies.dataMeta\" [filterObject]=\"{type: 'USER'}\"\n [exceptions]=\"[user.name]\" [multiselect]=\"true\" tabindex=\"0\" [(ngModel)]=\"deputies.data\"></eo-organization>\n <div class=\"actions\" *ngIf=\"deputiesForm.valid && deputiesForm.dirty\">\n <button class=\"secondary\" (click)=\"resetDeputies()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary\" (click)=\"saveDeputies()\" translate>eo.state.settings.deputies.save</button>\n </div>\n </form>\n </div>\n </div>\n\n <!-- substitute of -->\n <div class=\"entry substitute\">\n <div class=\"label\" translate>eo.state.settings.deputies.subsituteof.label</div>\n <div class=\"values\">\n <span class=\"chip\" *ngFor=\"let sub of user.substitutesOf\" [ngClass]=\"{present: sub.present}\">\n <eo-icon class=\"chip substitute substitute--present\" *ngIf=\"sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_done.svg'\"></eo-icon>\n <eo-icon class=\"chip substitute substitute--away\" *ngIf=\"!sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n <span>{{sub.title}} ({{sub.name}})</span>\n </span>\n </div>\n </div>\n </div>\n\n <!-- password -->\n <section class=\"section section-password\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.password.reset</div>\n <div class=\"values\">\n <eo-simple-accordion #simpleAcc [header]=\"('eo.password.reset' | translate)\"\n [styles]=\"'setting__change-password'\" [headerClass]=\"'setting__change-password-header'\">\n\n <eo-change-password-form (onFormSumbit)=\"simpleAcc.selected = false\"></eo-change-password-form>\n </eo-simple-accordion>\n </div>\n </div>\n </section>\n\n <!-- language -->\n <div class=\"section section-lang\">\n <h3 translate>eo.state.settings.language</h3>\n <div class=\"entry lang-app\">\n <div class=\"label\" translate>eo.state.settings.language.client</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeClientLocale(locale.iso)\"\n [ngClass]=\"{active: translate.currentLang === locale.iso}\"\n *ngFor=\"let locale of clientLocales\">{{locale.label}}\n </button>\n </div>\n </div>\n\n <div class=\"entry lang-def\">\n <div class=\"label\" translate>eo.state.settings.language.schema</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeSchemaLocale(locale.code)\"\n [ngClass]=\"{active: activeSchema === locale.code}\"\n *ngFor=\"let locale of schemaLocales\">{{locale.displayname}}</button>\n </div>\n </div>\n </div>\n\n <!-- permissions -->\n <div class=\"section section-perm\">\n <h3 translate>eo.state.settings.permission</h3>\n <div class=\"entry perm-roles\">\n <div class=\"label\" translate>eo.state.settings.roles</div>\n <div class=\"values roles\">\n <eo-simple-accordion [header]=\"('eo.state.settings.roles' | translate)\">\n <eo-permissions [roles]=\"user.roles\"></eo-permissions>\n </eo-simple-accordion>\n </div>\n </div>\n </div>\n\n <!-- agent -->\n <div class=\"section section-others\">\n <h3 translate>eo.state.settings.others</h3>\n <ng-container *ngIf=\"showAgentConfig\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.agent</div>\n <div class=\"values\">\n <div class=\"use-agent\">\n <eo-checkbox [formControl]=\"useAgentControl\" [readonly]=\"useAgentControl.disabled\"\n *ngIf=\"useAgentControl\"></eo-checkbox>\n <span class=\"use-agent-label\" translate>eo.state.settings.agent.use</span>\n <!-- <a href=\"https://help.optimal-systems.com/yuuvisRAD/v60/user/client/de/client/integration/cln_tsk_agent_global.htm?Highlight=agent\">\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"></eo-icon>\n </a> -->\n </div>\n </div>\n </div>\n\n\n <div class=\"entry lock-settings\" [ngClass]=\"{'lock-settings--show': (agentStatus | async)}\">\n <div class=\"label\" translate>eo.state.settings.lock</div>\n <div class=\"values\">\n <button class=\"toggle button-enabled\" (click)=\"changeLockSettings(LockSettings.always)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.always}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.enable</button>\n <button class=\"toggle button-disabled\" (click)=\"changeLockSettings(LockSettings.never)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.never}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.disable</button>\n <button class=\"toggle button-ask\" (click)=\"changeLockSettings(LockSettings.ask)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.ask}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.ask</button>\n </div>\n </div>\n\n\n </ng-container>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.localSettings</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"saveLocalSettings()\">eo.state.settings.localSettings.save</button>\n <button translate (click)=\"loadLocalSettings()\">eo.state.settings.localSettings.load</button>\n <button translate (click)=\"clearLocalSettings()\">eo.state.settings.localSettings.clear</button>\n </div>\n </div>\n </div>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.dashboard.defaut</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"deleteConfigDashboard = true\">eo.state.settings.dashboard.button.clear</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <eo-dialog [title]=\"'eo.state.settings.dashboard.default.dialog.title' | translate\" [(visible)]=\"deleteConfigDashboard\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.dashboard.default.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"deleteConfigDashboard = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"defaultDashboard(); deleteConfigDashboard = false\" class=\"button primary\"\n translate>eo.state.settings.dashboard.button.reset</button>\n </div>\n</eo-dialog>\n <eo-dialog [title]=\"'eo.state.settings.details.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.details.delete.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"deleteUserImage()\" class=\"button primary\"\n translate>eo.cta.button.delete</button>\n </div>\n </eo-dialog>\n\n <eo-dialog [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n\n <div>\n <p>{{fileName}}</p>\n <p *ngIf=\"viewMode ==='size'\" translate>eo.state.settings.details.upload.dialog.sizeError</p>\n <p *ngIf=\"viewMode ==='image'\" translate>eo.state.settings.details.upload.dialog.fileError </p>\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"files.click(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back</button>\n </div>\n </eo-dialog>\n</div>\n", styles: [":host{position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center}:host .cache{display:flex;flex-flow:row;margin:0 var(--app-pane-padding)}.eo-settings{margin:var(--app-pane-padding);box-sizing:border-box;width:800px;background:var(--color-white);display:flex;flex-flow:column;box-shadow:0 2px 5px #0003}@media screen and (max-width: 832px){.eo-settings{margin:0;min-width:inherit;width:100%}}.eo-settings .header{min-height:200px;max-height:300px;position:relative;flex:1 1}@media screen and (max-width: 480px){.eo-settings .header{min-height:210px}}.eo-settings .header h1{margin:0;padding:0;font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em}.eo-settings .header .meta{margin:calc(var(--app-pane-padding) / 2) 0}.eo-settings .header .presence{margin-top:calc(var(--app-pane-padding) * 2)}.eo-settings .header .bg{position:absolute;inset:0;background-size:cover;background-position:center center;filter:grayscale(1)}.eo-settings .header .fill{position:absolute;inset:0;background:rgba(var(--color-primary-rgb),.85);color:var(--color-white);padding:var(--app-pane-padding)}.eo-settings .header .userImage{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);background-size:cover;width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .userImage{width:105px;height:105px}}.eo-settings .header .userImage.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .overlay{width:105px;height:105px}}.eo-settings .header .overlay.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay:focus{border-color:var(--color-accent);opacity:2}.eo-settings .header .overlay:hover{border-color:var(--color-accent);opacity:100}.eo-settings .header .overlay .updateMessage{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#c0bcbcf1;background-clip:border-box}.eo-settings .header .overlay .updateMessage eo-icon{color:var(--color-white);width:48px;height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-settings .header .overlay .updateMessage eo-icon:focus,.eo-settings .header .overlay .updateMessage eo-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body{flex:1 1 auto;position:relative}.eo-settings .body .body-wrap{padding:var(--app-pane-padding);box-sizing:border-box;position:absolute;inset:0;overflow-y:auto;overflow-x:hidden}.eo-settings .body .section{margin-top:var(--app-pane-padding)}.eo-settings .body .section.section-deputies form{border-radius:2px}.eo-settings .body .section.section-deputies form .actions{display:flex;justify-content:flex-end;padding-top:calc(var(--app-pane-padding) / 4)}.eo-settings .body .section.section-deputies form .actions button{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px}.eo-settings .body .section.section-deputies form.dirty{padding:2px;background-color:rgba(var(--color-black-rgb),.06)}.eo-settings .body .section.section-deputies .entry.deputies .values{padding:0 2px;border:1px solid var(--eo-chips-border-color);border-radius:2px}.eo-settings .body .section.section-deputies .entry.substitute .values{display:flex;flex-flow:row wrap}.eo-settings .body .section.section-deputies .entry.substitute .values .chip{display:flex;align-items:center;font-size:.9em;padding:2px 4px}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute{width:calc(var(--app-pane-padding) * .75);height:calc(var(--app-pane-padding) * .6);border-radius:4px;border:0;color:var(--color-white)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--present{background-color:var(--color-success)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--away{background-color:var(--color-error)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip>span{margin:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-default{background-color:var(--color-white);border-color:rgba(var(--color-black-rgb),.1);border-radius:2px;padding:0 0 2px 2px;min-height:27px}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-disabled{opacity:1;border-color:transparent}.eo-settings .body .section p{line-height:1.7em}.eo-settings .body .section h3{margin:0;padding:0 0 0 150px;color:var(--text-color-caption);font-weight:var(--font-weight-normal);font-size:var(--font-subhead)}@media screen and (max-width: 480px){.eo-settings .body .section h3{padding:0}}.eo-settings .body .section .entry{display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) 0 0 0}.eo-settings .body .section .entry.lock-settings{overflow:hidden;opacity:0;height:0;transition:all .5s ease-in-out}.eo-settings .body .section .entry.lock-settings--show{opacity:1;height:100%}@media screen and (max-width: 480px){.eo-settings .body .section .entry{flex-flow:column}}.eo-settings .body .section .entry .label{flex:0 0 150px;color:var(--text-color-caption)}@media screen and (max-width: 480px){.eo-settings .body .section .entry .label{margin-bottom:calc(var(--app-pane-padding) / 2);flex:0 0 auto}}.eo-settings .body .section .entry .values{flex:1 1 auto}.eo-settings .body .section .entry .values button{margin:0 4px 4px 0;cursor:pointer}.eo-settings .body .section .entry .values button.active{cursor:default}.eo-settings .body .section .entry .values button.toggle:disabled{cursor:default}.eo-settings .body .section .entry .use-agent{display:flex;align-items:center}.eo-settings .body .section .entry .use-agent .use-agent-label{margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon{margin:0;padding:3px;box-sizing:border-box;border-radius:50%;color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body .section .values.roles{display:flex;flex-flow:column;align-items:flex-start}.eo-settings .body .section .values.roles .role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.eo-settings .body .section .values.roles .role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.eo-settings .body .section .values.roles .role>div{padding:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section .values.roles .role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}.eo-settings .body .toggle-btn{display:inline-block;padding:2px 5px;border-radius:2px;-webkit-border-radius:2px;background:rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);cursor:pointer;margin-right:3px;text-decoration:none}.eo-settings.rtl .header .userImage{right:auto;left:var(--app-pane-padding)}.eo-settings.rtl .body .section h3{padding:0 150px 0 0}::ng-deep .view{width:100%;height:100%}::ng-deep .view .eo-dialog-content{overflow:hidden}::ng-deep .view .contain{display:flex;flex-flow:column}@media screen and (max-width: 480px){::ng-deep .view .contain{min-height:210px}}::ng-deep .view .contain .attachments{width:100%;height:100%;display:flex;align-items:center;justify-content:space-around;margin:5px 60px 0}::ng-deep .view .contain .attachments .atta{position:relative;display:block;padding:0;margin-inline:10px;margin-top:10px}::ng-deep .view .contain .attachments .atta img{max-width:200px;max-height:200px;min-width:80px;min-height:80px;border:2px solid #5c5959;box-sizing:border-box}::ng-deep .view .contain .attachments .user-avatar{display:flex;margin-right:109px;align-items:center}::ng-deep .view .contain .attachments .user-avatar .preview-round{width:90px;height:90px;border-radius:50%;border:2px solid #5c5959}::ng-deep .view .button-block{display:flex;margin:8px;justify-content:right}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { 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: "directive", type: RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: UserAvatarComponent, selector: "eo-user-avatar", inputs: ["showPresence", "previewUri"] }, { kind: "component", type: EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: ChangePasswordFormComponent, selector: "eo-change-password-form", inputs: ["userRegex"], outputs: ["onFormSumbit"] }, { kind: "component", type: PermissionsComponent, selector: "eo-permissions", inputs: ["roles"] }, { kind: "component", type: SimpleAccordionComponent, selector: "eo-simple-accordion", inputs: ["header", "item", "styles", "headerClass", "selected"], outputs: ["selectChange"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
25822
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: SettingsComponent, selector: "eo-settings", viewQueries: [{ propertyName: "files", first: true, predicate: ["files"], descendants: true }, { propertyName: "headerBg", first: true, predicate: ["headerBg"], descendants: true }, { propertyName: "userAvatar", first: true, predicate: ["userAvatar"], descendants: true }, { propertyName: "confirmDeleteBtn", first: true, predicate: ["confirmDeleteBtn"], descendants: true }, { propertyName: "profileImageOverlay", first: true, predicate: ["profileImageOverlay"], descendants: true }, { propertyName: "deputiesForm", first: true, predicate: NgForm, descendants: true }], ngImport: i0, template: "<div class=\"eo-settings\" *ngIf=\"user\" eoRtlAware>\n\n <div class=\"header\">\n\n <div #headerBg class=\"bg\"></div>\n <div class=\"fill\">\n <div class=\"meta username\">{{user.name}}</div>\n <h1>{{user.firstname}} {{user.lastname}}</h1>\n <div class=\"meta email\">{{user.email}}</div>\n\n <div class=\"presence\" *ngIf=\"capabilities.inbox\">\n <button class=\"toggle dark present\" id=\"presence\" (click)=\"setPresence(true)\" [ngClass]=\"{active: user.present}\"\n translate>eo.state.settings.presence.present</button>\n <button class=\"toggle dark absent\" (click)=\"setPresence(false)\" (keydown.tab)=\"tabAction($event.target)\" [ngClass]=\"{active: !user.present}\"\n translate>eo.state.settings.presence.absent</button>\n </div>\n </div>\n <div (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (keydown.tab)=\"mouseEnter()\">\n\n <eo-user-avatar #userAvatar class=\"userImage\" tabindex=\"-1\" eoRtlAware=\"full\">\n <input type=\"file\" accept=\".jpg, .png\" style=\"display:none;\" #files (change)=\"selectImage($event.target)\" (click)=\"resetImageTarget($event)\">\n </eo-user-avatar>\n <eo-dialog [styleClass]=\"'view'\" [minWidth]=\"'300px'\" [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\"\n [(visible)]=\"showPreviewDialog\" [focusOnShow]=\"false\">\n <ng-container>\n <div class=\"contain\">\n <div class=\"attachments\">\n <div class=\"atta\">\n <img loading=\"lazy\" [src]=\"preview\">\n </div>\n <div class=\"user-avatar\" *ngIf=\"preview\">\n <eo-user-avatar class=\"preview-round\" [previewUri]=\"preview\"></eo-user-avatar>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button type=\"button\" (click)=\"closePreviewDialog()\" class=\"button danger\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"uploadNewUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.dialog.save</button>\n </div>\n </ng-container>\n </eo-dialog>\n\n <div class=\"overlay\" #profileImageOverlay tabindex=\"0\" eoRtlAware=\"full\">\n <span class=\"updateMessage\" *ngIf=\"hoverSelector\">\n <eo-icon tabindex=\"0\" (keydown.enter)=\"files.click()\" [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"files.click()\"></eo-icon>\n <eo-icon tabindex=\"0\" (keydown.enter)=\"trashIconClick()\" *ngIf=\"showDeleteIconTrash\"\n [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\" aria-disabled=\"true\" (click)=\"trashIconClick()\"></eo-icon>\n </span>\n </div>\n </div>\n\n </div>\n\n <div class=\"body\" (keydown.tab)=\"tabAction($event.target)\">\n\n <div class=\"body-wrap\">\n\n <div class=\"section section-deputies\" *ngIf=\"capabilities.bpm && hasPrivilege('MANAGE_DEPUTY_LIST')\">\n <h3 translate>eo.state.settings.deputies</h3>\n\n <!-- deputies -->\n <div class=\"entry deputies\">\n <div class=\"label\" translate>eo.state.settings.deputies.label</div>\n <div class=\"values\">\n <form #deputiesForm=\"ngForm\" [ngClass]=\"{dirty: deputiesForm.dirty}\">\n <eo-organization name=\"deputies\" [dataMeta]=\"deputies.dataMeta\" [filterObject]=\"{type: 'USER'}\"\n [exceptions]=\"[user.name]\" [multiselect]=\"true\" tabindex=\"0\" [(ngModel)]=\"deputies.data\"></eo-organization>\n <div class=\"actions\" *ngIf=\"deputiesForm.valid && deputiesForm.dirty\">\n <button class=\"secondary\" (click)=\"resetDeputies()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary\" (click)=\"saveDeputies()\" translate>eo.state.settings.deputies.save</button>\n </div>\n </form>\n </div>\n </div>\n\n <!-- substitute of -->\n <div class=\"entry substitute\">\n <div class=\"label\" translate>eo.state.settings.deputies.subsituteof.label</div>\n <div class=\"values\">\n <span class=\"chip\" *ngFor=\"let sub of user.substitutesOf\" [ngClass]=\"{present: sub.present}\">\n <eo-icon class=\"chip substitute substitute--present\" *ngIf=\"sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_done.svg'\"></eo-icon>\n <eo-icon class=\"chip substitute substitute--away\" *ngIf=\"!sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n <span>{{sub.title}} ({{sub.name}})</span>\n </span>\n </div>\n </div>\n </div>\n\n <!-- password -->\n <section class=\"section section-password\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.password.reset</div>\n <div class=\"values\">\n <eo-simple-accordion #simpleAcc [header]=\"('eo.password.reset' | translate)\"\n [styles]=\"'setting__change-password'\" [headerClass]=\"'setting__change-password-header'\">\n\n <eo-change-password-form (onFormSumbit)=\"simpleAcc.selected = false\"></eo-change-password-form>\n </eo-simple-accordion>\n </div>\n </div>\n </section>\n\n <!-- language -->\n <div class=\"section section-lang\">\n <h3 translate>eo.state.settings.language</h3>\n <div class=\"entry lang-app\">\n <div class=\"label\" translate>eo.state.settings.language.client</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeClientLocale(locale.iso)\"\n [ngClass]=\"{active: translate.currentLang === locale.iso}\"\n *ngFor=\"let locale of clientLocales\">{{locale.label}}\n </button>\n </div>\n </div>\n\n <div class=\"entry lang-def\">\n <div class=\"label\" translate>eo.state.settings.language.schema</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeSchemaLocale(locale.code)\"\n [ngClass]=\"{active: activeSchema === locale.code}\"\n *ngFor=\"let locale of schemaLocales\">{{locale.displayname}}</button>\n </div>\n </div>\n </div>\n\n <!-- permissions -->\n <div class=\"section section-perm\" [ngClass]=\"{undisplay: !user?.roles}\">\n <h3 translate>eo.state.settings.permission</h3>\n <div class=\"entry perm-roles\">\n <div class=\"label\" translate>eo.state.settings.roles</div>\n <div class=\"values roles\">\n <eo-simple-accordion [header]=\"('eo.state.settings.roles' | translate)\">\n <eo-permissions [roles]=\"user.roles\"></eo-permissions>\n </eo-simple-accordion>\n </div>\n </div>\n </div>\n\n <!-- agent -->\n <div class=\"section section-others\">\n <h3 translate>eo.state.settings.others</h3>\n <ng-container *ngIf=\"showAgentConfig\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.agent</div>\n <div class=\"values\">\n <div class=\"use-agent\">\n <eo-checkbox [formControl]=\"useAgentControl\" [readonly]=\"useAgentControl.disabled\"\n *ngIf=\"useAgentControl\"></eo-checkbox>\n <span class=\"use-agent-label\" translate>eo.state.settings.agent.use</span>\n <!-- <a href=\"https://help.optimal-systems.com/yuuvisRAD/v60/user/client/de/client/integration/cln_tsk_agent_global.htm?Highlight=agent\">\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"></eo-icon>\n </a> -->\n </div>\n </div>\n </div>\n\n\n <div class=\"entry lock-settings\" [ngClass]=\"{'lock-settings--show': (agentStatus | async)}\">\n <div class=\"label\" translate>eo.state.settings.lock</div>\n <div class=\"values\">\n <button class=\"toggle button-enabled\" (click)=\"changeLockSettings(LockSettings.always)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.always}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.enable</button>\n <button class=\"toggle button-disabled\" (click)=\"changeLockSettings(LockSettings.never)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.never}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.disable</button>\n <button class=\"toggle button-ask\" (click)=\"changeLockSettings(LockSettings.ask)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.ask}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.ask</button>\n </div>\n </div>\n\n\n </ng-container>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.localSettings</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"saveLocalSettings()\">eo.state.settings.localSettings.save</button>\n <button translate (click)=\"loadLocalSettings()\">eo.state.settings.localSettings.load</button>\n <button translate (click)=\"clearLocalSettings()\">eo.state.settings.localSettings.clear</button>\n </div>\n </div>\n </div>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.dashboard.defaut</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"deleteConfigDashboard = true\">eo.state.settings.dashboard.button.clear</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <eo-dialog [title]=\"'eo.state.settings.dashboard.default.dialog.title' | translate\" [(visible)]=\"deleteConfigDashboard\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.dashboard.default.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"deleteConfigDashboard = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"defaultDashboard(); deleteConfigDashboard = false\" class=\"button primary\"\n translate>eo.state.settings.dashboard.button.reset</button>\n </div>\n</eo-dialog>\n <eo-dialog [title]=\"'eo.state.settings.details.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.details.delete.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"deleteUserImage()\" class=\"button primary\"\n translate>eo.cta.button.delete</button>\n </div>\n </eo-dialog>\n\n <eo-dialog [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n\n <div>\n <p>{{fileName}}</p>\n <p *ngIf=\"viewMode ==='size'\" translate>eo.state.settings.details.upload.dialog.sizeError</p>\n <p *ngIf=\"viewMode ==='image'\" translate>eo.state.settings.details.upload.dialog.fileError </p>\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"files.click(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back</button>\n </div>\n </eo-dialog>\n</div>\n", styles: [":host{position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center}:host .cache{display:flex;flex-flow:row;margin:0 var(--app-pane-padding)}.eo-settings{margin:var(--app-pane-padding);box-sizing:border-box;width:800px;background:var(--color-white);display:flex;flex-flow:column;box-shadow:0 2px 5px #0003}@media screen and (max-width: 832px){.eo-settings{margin:0;min-width:inherit;width:100%}}.eo-settings .header{min-height:200px;max-height:300px;position:relative;flex:1 1}@media screen and (max-width: 480px){.eo-settings .header{min-height:210px}}.eo-settings .header h1{margin:0;padding:0;font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em}.eo-settings .header .meta{margin:calc(var(--app-pane-padding) / 2) 0}.eo-settings .header .presence{margin-top:calc(var(--app-pane-padding) * 2)}.eo-settings .header .bg{position:absolute;inset:0;background-size:cover;background-position:center center;filter:grayscale(1)}.eo-settings .header .fill{position:absolute;inset:0;background:rgba(var(--color-primary-rgb),.85);color:var(--color-white);padding:var(--app-pane-padding)}.eo-settings .header .userImage{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);background-size:cover;width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .userImage{width:105px;height:105px}}.eo-settings .header .userImage.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .overlay{width:105px;height:105px}}.eo-settings .header .overlay.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay:focus{border-color:var(--color-accent);opacity:2}.eo-settings .header .overlay:hover{border-color:var(--color-accent);opacity:100}.eo-settings .header .overlay .updateMessage{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#c0bcbcf1;background-clip:border-box}.eo-settings .header .overlay .updateMessage eo-icon{color:var(--color-white);width:48px;height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-settings .header .overlay .updateMessage eo-icon:focus,.eo-settings .header .overlay .updateMessage eo-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body{flex:1 1 auto;position:relative}.eo-settings .body .body-wrap{padding:var(--app-pane-padding);box-sizing:border-box;position:absolute;inset:0;overflow-y:auto;overflow-x:hidden}.eo-settings .body .section{margin-top:var(--app-pane-padding)}.eo-settings .body .section.section-deputies form{border-radius:2px}.eo-settings .body .section.section-deputies form .actions{display:flex;justify-content:flex-end;padding-top:calc(var(--app-pane-padding) / 4)}.eo-settings .body .section.section-deputies form .actions button{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px}.eo-settings .body .section.section-deputies form.dirty{padding:2px;background-color:rgba(var(--color-black-rgb),.06)}.eo-settings .body .section.section-deputies .entry.deputies .values{padding:0 2px;border:1px solid var(--eo-chips-border-color);border-radius:2px}.eo-settings .body .section.section-deputies .entry.substitute .values{display:flex;flex-flow:row wrap}.eo-settings .body .section.section-deputies .entry.substitute .values .chip{display:flex;align-items:center;font-size:.9em;padding:2px 4px}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute{width:calc(var(--app-pane-padding) * .75);height:calc(var(--app-pane-padding) * .6);border-radius:4px;border:0;color:var(--color-white)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--present{background-color:var(--color-success)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--away{background-color:var(--color-error)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip>span{margin:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-default{background-color:var(--color-white);border-color:rgba(var(--color-black-rgb),.1);border-radius:2px;padding:0 0 2px 2px;min-height:27px}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-disabled{opacity:1;border-color:transparent}.eo-settings .body .section.undisplay{display:none}.eo-settings .body .section p{line-height:1.7em}.eo-settings .body .section h3{margin:0;padding:0 0 0 150px;color:var(--text-color-caption);font-weight:var(--font-weight-normal);font-size:var(--font-subhead)}@media screen and (max-width: 480px){.eo-settings .body .section h3{padding:0}}.eo-settings .body .section .entry{display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) 0 0 0}.eo-settings .body .section .entry.lock-settings{overflow:hidden;opacity:0;height:0;transition:all .5s ease-in-out}.eo-settings .body .section .entry.lock-settings--show{opacity:1;height:100%}@media screen and (max-width: 480px){.eo-settings .body .section .entry{flex-flow:column}}.eo-settings .body .section .entry .label{flex:0 0 150px;color:var(--text-color-caption)}@media screen and (max-width: 480px){.eo-settings .body .section .entry .label{margin-bottom:calc(var(--app-pane-padding) / 2);flex:0 0 auto}}.eo-settings .body .section .entry .values{flex:1 1 auto}.eo-settings .body .section .entry .values button{margin:0 4px 4px 0;cursor:pointer}.eo-settings .body .section .entry .values button.active{cursor:default}.eo-settings .body .section .entry .values button.toggle:disabled{cursor:default}.eo-settings .body .section .entry .use-agent{display:flex;align-items:center}.eo-settings .body .section .entry .use-agent .use-agent-label{margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon{margin:0;padding:3px;box-sizing:border-box;border-radius:50%;color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body .section .values.roles{display:flex;flex-flow:column;align-items:flex-start}.eo-settings .body .section .values.roles .role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.eo-settings .body .section .values.roles .role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.eo-settings .body .section .values.roles .role>div{padding:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section .values.roles .role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}.eo-settings .body .toggle-btn{display:inline-block;padding:2px 5px;border-radius:2px;-webkit-border-radius:2px;background:rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);cursor:pointer;margin-right:3px;text-decoration:none}.eo-settings.rtl .header .userImage{right:auto;left:var(--app-pane-padding)}.eo-settings.rtl .body .section h3{padding:0 150px 0 0}::ng-deep .view{width:100%;height:100%}::ng-deep .view .eo-dialog-content{overflow:hidden}::ng-deep .view .contain{display:flex;flex-flow:column}@media screen and (max-width: 480px){::ng-deep .view .contain{min-height:210px}}::ng-deep .view .contain .attachments{width:100%;height:100%;display:flex;align-items:center;justify-content:space-around;margin:5px 60px 0}::ng-deep .view .contain .attachments .atta{position:relative;display:block;padding:0;margin-inline:10px;margin-top:10px}::ng-deep .view .contain .attachments .atta img{max-width:200px;max-height:200px;min-width:80px;min-height:80px;border:2px solid #5c5959;box-sizing:border-box}::ng-deep .view .contain .attachments .user-avatar{display:flex;margin-right:109px;align-items:center}::ng-deep .view .contain .attachments .user-avatar .preview-round{width:90px;height:90px;border-radius:50%;border:2px solid #5c5959}::ng-deep .view .button-block{display:flex;margin:8px;justify-content:right}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { 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: "directive", type: RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: UserAvatarComponent, selector: "eo-user-avatar", inputs: ["showPresence", "previewUri"] }, { kind: "component", type: EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: ChangePasswordFormComponent, selector: "eo-change-password-form", inputs: ["userRegex"], outputs: ["onFormSumbit"] }, { kind: "component", type: PermissionsComponent, selector: "eo-permissions", inputs: ["roles"] }, { kind: "component", type: SimpleAccordionComponent, selector: "eo-simple-accordion", inputs: ["header", "item", "styles", "headerClass", "selected"], outputs: ["selectChange"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
25369
25823
|
};
|
|
25370
25824
|
SettingsComponent = __decorate([
|
|
25371
25825
|
UntilDestroy()
|
|
25372
25826
|
], SettingsComponent);
|
|
25373
25827
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SettingsComponent, decorators: [{
|
|
25374
25828
|
type: Component,
|
|
25375
|
-
args: [{ selector: 'eo-settings', template: "<div class=\"eo-settings\" *ngIf=\"user\" eoRtlAware>\n\n <div class=\"header\">\n\n <div #headerBg class=\"bg\"></div>\n <div class=\"fill\">\n <div class=\"meta username\">{{user.name}}</div>\n <h1>{{user.firstname}} {{user.lastname}}</h1>\n <div class=\"meta email\">{{user.email}}</div>\n\n <div class=\"presence\" *ngIf=\"capabilities.inbox\">\n <button class=\"toggle dark present\" id=\"presence\" (click)=\"setPresence(true)\" [ngClass]=\"{active: user.present}\"\n translate>eo.state.settings.presence.present</button>\n <button class=\"toggle dark absent\" (click)=\"setPresence(false)\" (keydown.tab)=\"tabAction($event.target)\" [ngClass]=\"{active: !user.present}\"\n translate>eo.state.settings.presence.absent</button>\n </div>\n </div>\n <div (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (keydown.tab)=\"mouseEnter()\">\n\n <eo-user-avatar #userAvatar class=\"userImage\" tabindex=\"-1\" eoRtlAware=\"full\">\n <input type=\"file\" accept=\".jpg, .png\" style=\"display:none;\" #files (change)=\"selectImage($event.target)\" (click)=\"$event.target.value=null\">\n </eo-user-avatar>\n <eo-dialog [styleClass]=\"'view'\" [minWidth]=\"'300px'\" [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\"\n [(visible)]=\"showPreviewDialog\" [focusOnShow]=\"false\">\n <ng-container>\n <div class=\"contain\">\n <div class=\"attachments\">\n <div class=\"atta\">\n <img loading=\"lazy\" [src]=\"preview\">\n </div>\n <div class=\"user-avatar\" *ngIf=\"preview\">\n <eo-user-avatar class=\"preview-round\" [previewUri]=\"preview\"></eo-user-avatar>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button type=\"button\" (click)=\"closePreviewDialog()\" class=\"button danger\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"uploadNewUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.dialog.save</button>\n </div>\n </ng-container>\n </eo-dialog>\n\n <div class=\"overlay\" #profileImageOverlay tabindex=\"0\" eoRtlAware=\"full\">\n <span class=\"updateMessage\" *ngIf=\"hoverSelector\">\n <eo-icon tabindex=\"0\" (keydown.enter)=\"files.click()\" [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"files.click()\"></eo-icon>\n <eo-icon tabindex=\"0\" (keydown.enter)=\"trashIconClick()\" *ngIf=\"showDeleteIconTrash\"\n [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\" aria-disabled=\"true\" (click)=\"trashIconClick()\"></eo-icon>\n </span>\n </div>\n </div>\n\n </div>\n\n <div class=\"body\" (keydown.tab)=\"tabAction($event.target)\">\n\n <div class=\"body-wrap\">\n\n <div class=\"section section-deputies\" *ngIf=\"capabilities.bpm && hasPrivilege('MANAGE_DEPUTY_LIST')\">\n <h3 translate>eo.state.settings.deputies</h3>\n\n <!-- deputies -->\n <div class=\"entry deputies\">\n <div class=\"label\" translate>eo.state.settings.deputies.label</div>\n <div class=\"values\">\n <form #deputiesForm=\"ngForm\" [ngClass]=\"{dirty: deputiesForm.dirty}\">\n <eo-organization name=\"deputies\" [dataMeta]=\"deputies.dataMeta\" [filterObject]=\"{type: 'USER'}\"\n [exceptions]=\"[user.name]\" [multiselect]=\"true\" tabindex=\"0\" [(ngModel)]=\"deputies.data\"></eo-organization>\n <div class=\"actions\" *ngIf=\"deputiesForm.valid && deputiesForm.dirty\">\n <button class=\"secondary\" (click)=\"resetDeputies()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary\" (click)=\"saveDeputies()\" translate>eo.state.settings.deputies.save</button>\n </div>\n </form>\n </div>\n </div>\n\n <!-- substitute of -->\n <div class=\"entry substitute\">\n <div class=\"label\" translate>eo.state.settings.deputies.subsituteof.label</div>\n <div class=\"values\">\n <span class=\"chip\" *ngFor=\"let sub of user.substitutesOf\" [ngClass]=\"{present: sub.present}\">\n <eo-icon class=\"chip substitute substitute--present\" *ngIf=\"sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_done.svg'\"></eo-icon>\n <eo-icon class=\"chip substitute substitute--away\" *ngIf=\"!sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n <span>{{sub.title}} ({{sub.name}})</span>\n </span>\n </div>\n </div>\n </div>\n\n <!-- password -->\n <section class=\"section section-password\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.password.reset</div>\n <div class=\"values\">\n <eo-simple-accordion #simpleAcc [header]=\"('eo.password.reset' | translate)\"\n [styles]=\"'setting__change-password'\" [headerClass]=\"'setting__change-password-header'\">\n\n <eo-change-password-form (onFormSumbit)=\"simpleAcc.selected = false\"></eo-change-password-form>\n </eo-simple-accordion>\n </div>\n </div>\n </section>\n\n <!-- language -->\n <div class=\"section section-lang\">\n <h3 translate>eo.state.settings.language</h3>\n <div class=\"entry lang-app\">\n <div class=\"label\" translate>eo.state.settings.language.client</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeClientLocale(locale.iso)\"\n [ngClass]=\"{active: translate.currentLang === locale.iso}\"\n *ngFor=\"let locale of clientLocales\">{{locale.label}}\n </button>\n </div>\n </div>\n\n <div class=\"entry lang-def\">\n <div class=\"label\" translate>eo.state.settings.language.schema</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeSchemaLocale(locale.code)\"\n [ngClass]=\"{active: activeSchema === locale.code}\"\n *ngFor=\"let locale of schemaLocales\">{{locale.displayname}}</button>\n </div>\n </div>\n </div>\n\n <!-- permissions -->\n <div class=\"section section-perm\">\n <h3 translate>eo.state.settings.permission</h3>\n <div class=\"entry perm-roles\">\n <div class=\"label\" translate>eo.state.settings.roles</div>\n <div class=\"values roles\">\n <eo-simple-accordion [header]=\"('eo.state.settings.roles' | translate)\">\n <eo-permissions [roles]=\"user.roles\"></eo-permissions>\n </eo-simple-accordion>\n </div>\n </div>\n </div>\n\n <!-- agent -->\n <div class=\"section section-others\">\n <h3 translate>eo.state.settings.others</h3>\n <ng-container *ngIf=\"showAgentConfig\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.agent</div>\n <div class=\"values\">\n <div class=\"use-agent\">\n <eo-checkbox [formControl]=\"useAgentControl\" [readonly]=\"useAgentControl.disabled\"\n *ngIf=\"useAgentControl\"></eo-checkbox>\n <span class=\"use-agent-label\" translate>eo.state.settings.agent.use</span>\n <!-- <a href=\"https://help.optimal-systems.com/yuuvisRAD/v60/user/client/de/client/integration/cln_tsk_agent_global.htm?Highlight=agent\">\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"></eo-icon>\n </a> -->\n </div>\n </div>\n </div>\n\n\n <div class=\"entry lock-settings\" [ngClass]=\"{'lock-settings--show': (agentStatus | async)}\">\n <div class=\"label\" translate>eo.state.settings.lock</div>\n <div class=\"values\">\n <button class=\"toggle button-enabled\" (click)=\"changeLockSettings(LockSettings.always)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.always}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.enable</button>\n <button class=\"toggle button-disabled\" (click)=\"changeLockSettings(LockSettings.never)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.never}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.disable</button>\n <button class=\"toggle button-ask\" (click)=\"changeLockSettings(LockSettings.ask)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.ask}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.ask</button>\n </div>\n </div>\n\n\n </ng-container>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.localSettings</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"saveLocalSettings()\">eo.state.settings.localSettings.save</button>\n <button translate (click)=\"loadLocalSettings()\">eo.state.settings.localSettings.load</button>\n <button translate (click)=\"clearLocalSettings()\">eo.state.settings.localSettings.clear</button>\n </div>\n </div>\n </div>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.dashboard.defaut</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"deleteConfigDashboard = true\">eo.state.settings.dashboard.button.clear</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <eo-dialog [title]=\"'eo.state.settings.dashboard.default.dialog.title' | translate\" [(visible)]=\"deleteConfigDashboard\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.dashboard.default.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"deleteConfigDashboard = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"defaultDashboard(); deleteConfigDashboard = false\" class=\"button primary\"\n translate>eo.state.settings.dashboard.button.reset</button>\n </div>\n</eo-dialog>\n <eo-dialog [title]=\"'eo.state.settings.details.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.details.delete.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"deleteUserImage()\" class=\"button primary\"\n translate>eo.cta.button.delete</button>\n </div>\n </eo-dialog>\n\n <eo-dialog [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n\n <div>\n <p>{{fileName}}</p>\n <p *ngIf=\"viewMode ==='size'\" translate>eo.state.settings.details.upload.dialog.sizeError</p>\n <p *ngIf=\"viewMode ==='image'\" translate>eo.state.settings.details.upload.dialog.fileError </p>\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"files.click(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back</button>\n </div>\n </eo-dialog>\n</div>\n", styles: [":host{position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center}:host .cache{display:flex;flex-flow:row;margin:0 var(--app-pane-padding)}.eo-settings{margin:var(--app-pane-padding);box-sizing:border-box;width:800px;background:var(--color-white);display:flex;flex-flow:column;box-shadow:0 2px 5px #0003}@media screen and (max-width: 832px){.eo-settings{margin:0;min-width:inherit;width:100%}}.eo-settings .header{min-height:200px;max-height:300px;position:relative;flex:1 1}@media screen and (max-width: 480px){.eo-settings .header{min-height:210px}}.eo-settings .header h1{margin:0;padding:0;font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em}.eo-settings .header .meta{margin:calc(var(--app-pane-padding) / 2) 0}.eo-settings .header .presence{margin-top:calc(var(--app-pane-padding) * 2)}.eo-settings .header .bg{position:absolute;inset:0;background-size:cover;background-position:center center;filter:grayscale(1)}.eo-settings .header .fill{position:absolute;inset:0;background:rgba(var(--color-primary-rgb),.85);color:var(--color-white);padding:var(--app-pane-padding)}.eo-settings .header .userImage{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);background-size:cover;width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .userImage{width:105px;height:105px}}.eo-settings .header .userImage.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .overlay{width:105px;height:105px}}.eo-settings .header .overlay.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay:focus{border-color:var(--color-accent);opacity:2}.eo-settings .header .overlay:hover{border-color:var(--color-accent);opacity:100}.eo-settings .header .overlay .updateMessage{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#c0bcbcf1;background-clip:border-box}.eo-settings .header .overlay .updateMessage eo-icon{color:var(--color-white);width:48px;height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-settings .header .overlay .updateMessage eo-icon:focus,.eo-settings .header .overlay .updateMessage eo-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body{flex:1 1 auto;position:relative}.eo-settings .body .body-wrap{padding:var(--app-pane-padding);box-sizing:border-box;position:absolute;inset:0;overflow-y:auto;overflow-x:hidden}.eo-settings .body .section{margin-top:var(--app-pane-padding)}.eo-settings .body .section.section-deputies form{border-radius:2px}.eo-settings .body .section.section-deputies form .actions{display:flex;justify-content:flex-end;padding-top:calc(var(--app-pane-padding) / 4)}.eo-settings .body .section.section-deputies form .actions button{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px}.eo-settings .body .section.section-deputies form.dirty{padding:2px;background-color:rgba(var(--color-black-rgb),.06)}.eo-settings .body .section.section-deputies .entry.deputies .values{padding:0 2px;border:1px solid var(--eo-chips-border-color);border-radius:2px}.eo-settings .body .section.section-deputies .entry.substitute .values{display:flex;flex-flow:row wrap}.eo-settings .body .section.section-deputies .entry.substitute .values .chip{display:flex;align-items:center;font-size:.9em;padding:2px 4px}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute{width:calc(var(--app-pane-padding) * .75);height:calc(var(--app-pane-padding) * .6);border-radius:4px;border:0;color:var(--color-white)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--present{background-color:var(--color-success)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--away{background-color:var(--color-error)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip>span{margin:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-default{background-color:var(--color-white);border-color:rgba(var(--color-black-rgb),.1);border-radius:2px;padding:0 0 2px 2px;min-height:27px}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-disabled{opacity:1;border-color:transparent}.eo-settings .body .section p{line-height:1.7em}.eo-settings .body .section h3{margin:0;padding:0 0 0 150px;color:var(--text-color-caption);font-weight:var(--font-weight-normal);font-size:var(--font-subhead)}@media screen and (max-width: 480px){.eo-settings .body .section h3{padding:0}}.eo-settings .body .section .entry{display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) 0 0 0}.eo-settings .body .section .entry.lock-settings{overflow:hidden;opacity:0;height:0;transition:all .5s ease-in-out}.eo-settings .body .section .entry.lock-settings--show{opacity:1;height:100%}@media screen and (max-width: 480px){.eo-settings .body .section .entry{flex-flow:column}}.eo-settings .body .section .entry .label{flex:0 0 150px;color:var(--text-color-caption)}@media screen and (max-width: 480px){.eo-settings .body .section .entry .label{margin-bottom:calc(var(--app-pane-padding) / 2);flex:0 0 auto}}.eo-settings .body .section .entry .values{flex:1 1 auto}.eo-settings .body .section .entry .values button{margin:0 4px 4px 0;cursor:pointer}.eo-settings .body .section .entry .values button.active{cursor:default}.eo-settings .body .section .entry .values button.toggle:disabled{cursor:default}.eo-settings .body .section .entry .use-agent{display:flex;align-items:center}.eo-settings .body .section .entry .use-agent .use-agent-label{margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon{margin:0;padding:3px;box-sizing:border-box;border-radius:50%;color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body .section .values.roles{display:flex;flex-flow:column;align-items:flex-start}.eo-settings .body .section .values.roles .role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.eo-settings .body .section .values.roles .role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.eo-settings .body .section .values.roles .role>div{padding:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section .values.roles .role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}.eo-settings .body .toggle-btn{display:inline-block;padding:2px 5px;border-radius:2px;-webkit-border-radius:2px;background:rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);cursor:pointer;margin-right:3px;text-decoration:none}.eo-settings.rtl .header .userImage{right:auto;left:var(--app-pane-padding)}.eo-settings.rtl .body .section h3{padding:0 150px 0 0}::ng-deep .view{width:100%;height:100%}::ng-deep .view .eo-dialog-content{overflow:hidden}::ng-deep .view .contain{display:flex;flex-flow:column}@media screen and (max-width: 480px){::ng-deep .view .contain{min-height:210px}}::ng-deep .view .contain .attachments{width:100%;height:100%;display:flex;align-items:center;justify-content:space-around;margin:5px 60px 0}::ng-deep .view .contain .attachments .atta{position:relative;display:block;padding:0;margin-inline:10px;margin-top:10px}::ng-deep .view .contain .attachments .atta img{max-width:200px;max-height:200px;min-width:80px;min-height:80px;border:2px solid #5c5959;box-sizing:border-box}::ng-deep .view .contain .attachments .user-avatar{display:flex;margin-right:109px;align-items:center}::ng-deep .view .contain .attachments .user-avatar .preview-round{width:90px;height:90px;border-radius:50%;border:2px solid #5c5959}::ng-deep .view .button-block{display:flex;margin:8px;justify-content:right}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"] }]
|
|
25829
|
+
args: [{ selector: 'eo-settings', template: "<div class=\"eo-settings\" *ngIf=\"user\" eoRtlAware>\n\n <div class=\"header\">\n\n <div #headerBg class=\"bg\"></div>\n <div class=\"fill\">\n <div class=\"meta username\">{{user.name}}</div>\n <h1>{{user.firstname}} {{user.lastname}}</h1>\n <div class=\"meta email\">{{user.email}}</div>\n\n <div class=\"presence\" *ngIf=\"capabilities.inbox\">\n <button class=\"toggle dark present\" id=\"presence\" (click)=\"setPresence(true)\" [ngClass]=\"{active: user.present}\"\n translate>eo.state.settings.presence.present</button>\n <button class=\"toggle dark absent\" (click)=\"setPresence(false)\" (keydown.tab)=\"tabAction($event.target)\" [ngClass]=\"{active: !user.present}\"\n translate>eo.state.settings.presence.absent</button>\n </div>\n </div>\n <div (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (keydown.tab)=\"mouseEnter()\">\n\n <eo-user-avatar #userAvatar class=\"userImage\" tabindex=\"-1\" eoRtlAware=\"full\">\n <input type=\"file\" accept=\".jpg, .png\" style=\"display:none;\" #files (change)=\"selectImage($event.target)\" (click)=\"resetImageTarget($event)\">\n </eo-user-avatar>\n <eo-dialog [styleClass]=\"'view'\" [minWidth]=\"'300px'\" [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\"\n [(visible)]=\"showPreviewDialog\" [focusOnShow]=\"false\">\n <ng-container>\n <div class=\"contain\">\n <div class=\"attachments\">\n <div class=\"atta\">\n <img loading=\"lazy\" [src]=\"preview\">\n </div>\n <div class=\"user-avatar\" *ngIf=\"preview\">\n <eo-user-avatar class=\"preview-round\" [previewUri]=\"preview\"></eo-user-avatar>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button type=\"button\" (click)=\"closePreviewDialog()\" class=\"button danger\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"uploadNewUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.dialog.save</button>\n </div>\n </ng-container>\n </eo-dialog>\n\n <div class=\"overlay\" #profileImageOverlay tabindex=\"0\" eoRtlAware=\"full\">\n <span class=\"updateMessage\" *ngIf=\"hoverSelector\">\n <eo-icon tabindex=\"0\" (keydown.enter)=\"files.click()\" [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"files.click()\"></eo-icon>\n <eo-icon tabindex=\"0\" (keydown.enter)=\"trashIconClick()\" *ngIf=\"showDeleteIconTrash\"\n [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\" aria-disabled=\"true\" (click)=\"trashIconClick()\"></eo-icon>\n </span>\n </div>\n </div>\n\n </div>\n\n <div class=\"body\" (keydown.tab)=\"tabAction($event.target)\">\n\n <div class=\"body-wrap\">\n\n <div class=\"section section-deputies\" *ngIf=\"capabilities.bpm && hasPrivilege('MANAGE_DEPUTY_LIST')\">\n <h3 translate>eo.state.settings.deputies</h3>\n\n <!-- deputies -->\n <div class=\"entry deputies\">\n <div class=\"label\" translate>eo.state.settings.deputies.label</div>\n <div class=\"values\">\n <form #deputiesForm=\"ngForm\" [ngClass]=\"{dirty: deputiesForm.dirty}\">\n <eo-organization name=\"deputies\" [dataMeta]=\"deputies.dataMeta\" [filterObject]=\"{type: 'USER'}\"\n [exceptions]=\"[user.name]\" [multiselect]=\"true\" tabindex=\"0\" [(ngModel)]=\"deputies.data\"></eo-organization>\n <div class=\"actions\" *ngIf=\"deputiesForm.valid && deputiesForm.dirty\">\n <button class=\"secondary\" (click)=\"resetDeputies()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary\" (click)=\"saveDeputies()\" translate>eo.state.settings.deputies.save</button>\n </div>\n </form>\n </div>\n </div>\n\n <!-- substitute of -->\n <div class=\"entry substitute\">\n <div class=\"label\" translate>eo.state.settings.deputies.subsituteof.label</div>\n <div class=\"values\">\n <span class=\"chip\" *ngFor=\"let sub of user.substitutesOf\" [ngClass]=\"{present: sub.present}\">\n <eo-icon class=\"chip substitute substitute--present\" *ngIf=\"sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_done.svg'\"></eo-icon>\n <eo-icon class=\"chip substitute substitute--away\" *ngIf=\"!sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n <span>{{sub.title}} ({{sub.name}})</span>\n </span>\n </div>\n </div>\n </div>\n\n <!-- password -->\n <section class=\"section section-password\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.password.reset</div>\n <div class=\"values\">\n <eo-simple-accordion #simpleAcc [header]=\"('eo.password.reset' | translate)\"\n [styles]=\"'setting__change-password'\" [headerClass]=\"'setting__change-password-header'\">\n\n <eo-change-password-form (onFormSumbit)=\"simpleAcc.selected = false\"></eo-change-password-form>\n </eo-simple-accordion>\n </div>\n </div>\n </section>\n\n <!-- language -->\n <div class=\"section section-lang\">\n <h3 translate>eo.state.settings.language</h3>\n <div class=\"entry lang-app\">\n <div class=\"label\" translate>eo.state.settings.language.client</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeClientLocale(locale.iso)\"\n [ngClass]=\"{active: translate.currentLang === locale.iso}\"\n *ngFor=\"let locale of clientLocales\">{{locale.label}}\n </button>\n </div>\n </div>\n\n <div class=\"entry lang-def\">\n <div class=\"label\" translate>eo.state.settings.language.schema</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeSchemaLocale(locale.code)\"\n [ngClass]=\"{active: activeSchema === locale.code}\"\n *ngFor=\"let locale of schemaLocales\">{{locale.displayname}}</button>\n </div>\n </div>\n </div>\n\n <!-- permissions -->\n <div class=\"section section-perm\" [ngClass]=\"{undisplay: !user?.roles}\">\n <h3 translate>eo.state.settings.permission</h3>\n <div class=\"entry perm-roles\">\n <div class=\"label\" translate>eo.state.settings.roles</div>\n <div class=\"values roles\">\n <eo-simple-accordion [header]=\"('eo.state.settings.roles' | translate)\">\n <eo-permissions [roles]=\"user.roles\"></eo-permissions>\n </eo-simple-accordion>\n </div>\n </div>\n </div>\n\n <!-- agent -->\n <div class=\"section section-others\">\n <h3 translate>eo.state.settings.others</h3>\n <ng-container *ngIf=\"showAgentConfig\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.agent</div>\n <div class=\"values\">\n <div class=\"use-agent\">\n <eo-checkbox [formControl]=\"useAgentControl\" [readonly]=\"useAgentControl.disabled\"\n *ngIf=\"useAgentControl\"></eo-checkbox>\n <span class=\"use-agent-label\" translate>eo.state.settings.agent.use</span>\n <!-- <a href=\"https://help.optimal-systems.com/yuuvisRAD/v60/user/client/de/client/integration/cln_tsk_agent_global.htm?Highlight=agent\">\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"></eo-icon>\n </a> -->\n </div>\n </div>\n </div>\n\n\n <div class=\"entry lock-settings\" [ngClass]=\"{'lock-settings--show': (agentStatus | async)}\">\n <div class=\"label\" translate>eo.state.settings.lock</div>\n <div class=\"values\">\n <button class=\"toggle button-enabled\" (click)=\"changeLockSettings(LockSettings.always)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.always}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.enable</button>\n <button class=\"toggle button-disabled\" (click)=\"changeLockSettings(LockSettings.never)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.never}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.disable</button>\n <button class=\"toggle button-ask\" (click)=\"changeLockSettings(LockSettings.ask)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.ask}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.ask</button>\n </div>\n </div>\n\n\n </ng-container>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.localSettings</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"saveLocalSettings()\">eo.state.settings.localSettings.save</button>\n <button translate (click)=\"loadLocalSettings()\">eo.state.settings.localSettings.load</button>\n <button translate (click)=\"clearLocalSettings()\">eo.state.settings.localSettings.clear</button>\n </div>\n </div>\n </div>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.dashboard.defaut</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"deleteConfigDashboard = true\">eo.state.settings.dashboard.button.clear</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <eo-dialog [title]=\"'eo.state.settings.dashboard.default.dialog.title' | translate\" [(visible)]=\"deleteConfigDashboard\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.dashboard.default.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"deleteConfigDashboard = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"defaultDashboard(); deleteConfigDashboard = false\" class=\"button primary\"\n translate>eo.state.settings.dashboard.button.reset</button>\n </div>\n</eo-dialog>\n <eo-dialog [title]=\"'eo.state.settings.details.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.details.delete.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"deleteUserImage()\" class=\"button primary\"\n translate>eo.cta.button.delete</button>\n </div>\n </eo-dialog>\n\n <eo-dialog [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n\n <div>\n <p>{{fileName}}</p>\n <p *ngIf=\"viewMode ==='size'\" translate>eo.state.settings.details.upload.dialog.sizeError</p>\n <p *ngIf=\"viewMode ==='image'\" translate>eo.state.settings.details.upload.dialog.fileError </p>\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"files.click(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back</button>\n </div>\n </eo-dialog>\n</div>\n", styles: [":host{position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center}:host .cache{display:flex;flex-flow:row;margin:0 var(--app-pane-padding)}.eo-settings{margin:var(--app-pane-padding);box-sizing:border-box;width:800px;background:var(--color-white);display:flex;flex-flow:column;box-shadow:0 2px 5px #0003}@media screen and (max-width: 832px){.eo-settings{margin:0;min-width:inherit;width:100%}}.eo-settings .header{min-height:200px;max-height:300px;position:relative;flex:1 1}@media screen and (max-width: 480px){.eo-settings .header{min-height:210px}}.eo-settings .header h1{margin:0;padding:0;font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em}.eo-settings .header .meta{margin:calc(var(--app-pane-padding) / 2) 0}.eo-settings .header .presence{margin-top:calc(var(--app-pane-padding) * 2)}.eo-settings .header .bg{position:absolute;inset:0;background-size:cover;background-position:center center;filter:grayscale(1)}.eo-settings .header .fill{position:absolute;inset:0;background:rgba(var(--color-primary-rgb),.85);color:var(--color-white);padding:var(--app-pane-padding)}.eo-settings .header .userImage{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);background-size:cover;width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .userImage{width:105px;height:105px}}.eo-settings .header .userImage.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .overlay{width:105px;height:105px}}.eo-settings .header .overlay.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay:focus{border-color:var(--color-accent);opacity:2}.eo-settings .header .overlay:hover{border-color:var(--color-accent);opacity:100}.eo-settings .header .overlay .updateMessage{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#c0bcbcf1;background-clip:border-box}.eo-settings .header .overlay .updateMessage eo-icon{color:var(--color-white);width:48px;height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-settings .header .overlay .updateMessage eo-icon:focus,.eo-settings .header .overlay .updateMessage eo-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body{flex:1 1 auto;position:relative}.eo-settings .body .body-wrap{padding:var(--app-pane-padding);box-sizing:border-box;position:absolute;inset:0;overflow-y:auto;overflow-x:hidden}.eo-settings .body .section{margin-top:var(--app-pane-padding)}.eo-settings .body .section.section-deputies form{border-radius:2px}.eo-settings .body .section.section-deputies form .actions{display:flex;justify-content:flex-end;padding-top:calc(var(--app-pane-padding) / 4)}.eo-settings .body .section.section-deputies form .actions button{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px}.eo-settings .body .section.section-deputies form.dirty{padding:2px;background-color:rgba(var(--color-black-rgb),.06)}.eo-settings .body .section.section-deputies .entry.deputies .values{padding:0 2px;border:1px solid var(--eo-chips-border-color);border-radius:2px}.eo-settings .body .section.section-deputies .entry.substitute .values{display:flex;flex-flow:row wrap}.eo-settings .body .section.section-deputies .entry.substitute .values .chip{display:flex;align-items:center;font-size:.9em;padding:2px 4px}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute{width:calc(var(--app-pane-padding) * .75);height:calc(var(--app-pane-padding) * .6);border-radius:4px;border:0;color:var(--color-white)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--present{background-color:var(--color-success)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--away{background-color:var(--color-error)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip>span{margin:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-default{background-color:var(--color-white);border-color:rgba(var(--color-black-rgb),.1);border-radius:2px;padding:0 0 2px 2px;min-height:27px}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-disabled{opacity:1;border-color:transparent}.eo-settings .body .section.undisplay{display:none}.eo-settings .body .section p{line-height:1.7em}.eo-settings .body .section h3{margin:0;padding:0 0 0 150px;color:var(--text-color-caption);font-weight:var(--font-weight-normal);font-size:var(--font-subhead)}@media screen and (max-width: 480px){.eo-settings .body .section h3{padding:0}}.eo-settings .body .section .entry{display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) 0 0 0}.eo-settings .body .section .entry.lock-settings{overflow:hidden;opacity:0;height:0;transition:all .5s ease-in-out}.eo-settings .body .section .entry.lock-settings--show{opacity:1;height:100%}@media screen and (max-width: 480px){.eo-settings .body .section .entry{flex-flow:column}}.eo-settings .body .section .entry .label{flex:0 0 150px;color:var(--text-color-caption)}@media screen and (max-width: 480px){.eo-settings .body .section .entry .label{margin-bottom:calc(var(--app-pane-padding) / 2);flex:0 0 auto}}.eo-settings .body .section .entry .values{flex:1 1 auto}.eo-settings .body .section .entry .values button{margin:0 4px 4px 0;cursor:pointer}.eo-settings .body .section .entry .values button.active{cursor:default}.eo-settings .body .section .entry .values button.toggle:disabled{cursor:default}.eo-settings .body .section .entry .use-agent{display:flex;align-items:center}.eo-settings .body .section .entry .use-agent .use-agent-label{margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon{margin:0;padding:3px;box-sizing:border-box;border-radius:50%;color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body .section .values.roles{display:flex;flex-flow:column;align-items:flex-start}.eo-settings .body .section .values.roles .role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.eo-settings .body .section .values.roles .role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.eo-settings .body .section .values.roles .role>div{padding:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section .values.roles .role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}.eo-settings .body .toggle-btn{display:inline-block;padding:2px 5px;border-radius:2px;-webkit-border-radius:2px;background:rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);cursor:pointer;margin-right:3px;text-decoration:none}.eo-settings.rtl .header .userImage{right:auto;left:var(--app-pane-padding)}.eo-settings.rtl .body .section h3{padding:0 150px 0 0}::ng-deep .view{width:100%;height:100%}::ng-deep .view .eo-dialog-content{overflow:hidden}::ng-deep .view .contain{display:flex;flex-flow:column}@media screen and (max-width: 480px){::ng-deep .view .contain{min-height:210px}}::ng-deep .view .contain .attachments{width:100%;height:100%;display:flex;align-items:center;justify-content:space-around;margin:5px 60px 0}::ng-deep .view .contain .attachments .atta{position:relative;display:block;padding:0;margin-inline:10px;margin-top:10px}::ng-deep .view .contain .attachments .atta img{max-width:200px;max-height:200px;min-width:80px;min-height:80px;border:2px solid #5c5959;box-sizing:border-box}::ng-deep .view .contain .attachments .user-avatar{display:flex;margin-right:109px;align-items:center}::ng-deep .view .contain .attachments .user-avatar .preview-round{width:90px;height:90px;border-radius:50%;border:2px solid #5c5959}::ng-deep .view .button-block{display:flex;margin:8px;justify-content:right}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"] }]
|
|
25376
25830
|
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i1.UserService }, { type: i1.Config }, { type: i1.NotificationsService }, { type: i1.SystemService }, { type: i1.EventService }, { type: i1.CapabilitiesService }, { type: PageTitleService }, { type: AgentService }, { type: i1$3.UntypedFormBuilder }, { type: i1.AppCacheService }, { type: i1.LocalStorageService }, { type: i1.TranslateService }, { type: i0.ElementRef }, { type: i1.NotificationsService }], propDecorators: { files: [{
|
|
25377
25831
|
type: ViewChild,
|
|
25378
25832
|
args: ['files']
|
|
@@ -26140,7 +26594,7 @@ class ProcessStateComponent {
|
|
|
26140
26594
|
return this.pendingChanges.hasPendingTask();
|
|
26141
26595
|
}
|
|
26142
26596
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ProcessStateComponent, deps: [{ token: i1.TranslateService }, { token: i1.BpmService }, { token: SelectionService }, { token: EmptyStateService }, { token: i1.BackendService }, { token: i1$3.UntypedFormBuilder }, { token: PageTitleService }, { token: i1.AppCacheService }, { token: PendingChangesService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26143
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: ProcessStateComponent, selector: "eo-process-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'inbox.state'\">\n <!-- list -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-list-container #eoList [applySelection]=\"{out: processSelectionId}\">\n <div class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_bpm.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.state.process</div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n (click)=\"refreshList()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"\n class=\"overlay-filter\"\n [iconTitle]=\"'eo.list.filter' | translate\"\n [active]=\"hasChanged(defaultFilterFormValue, filterForm?.value)\">\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\">\n <div class=\"filter-title\" translate>eo.filter.by</div>\n <form [formGroup]=\"filterForm\" *ngIf='filterForm'>\n <eo-form-input [label]=\"('eo.state.process.filter.labels.model' | translate)\" *ngIf=\"processModelsListObject.entries.length\">\n <eo-dynamic-list formControlName=\"modelFCN\" [pickerTitle]=\"'Models'\" [listObject]=\"processModelsListObject\"></eo-dynamic-list>\n </eo-form-input>\n <eo-form-input [label]=\"('eo.state.process.filter.labels.running' | translate)\">\n <eo-checkbox formControlName=\"runningFCN\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input [label]=\"('eo.state.process.filter.labels.paused' | translate)\">\n <eo-checkbox formControlName=\"pausedFCN\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input [label]=\"('eo.state.process.filter.labels.created' | translate)\">\n <eo-checkbox formControlName=\"createdFCN\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input [label]=\"('eo.state.process.filter.labels.canceled' | translate)\">\n <eo-checkbox formControlName=\"canceledFCN\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input [label]=\"('eo.state.process.filter.labels.failed' | translate)\">\n <eo-checkbox formControlName=\"failedFCN\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input [label]=\"('eo.state.process.filter.labels.completed' | translate)\">\n <eo-checkbox formControlName=\"completedFCN\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input [label]=\"('eo.state.process.filter.labels.starttime' | translate)\">\n <eo-datetime-range formControlName=\"startTimeFCN\" [withTime]=\"false\"></eo-datetime-range>\n </eo-form-input>\n </form>\n <button class=\"reset-filter\" (click)=\"resetFilters()\" *ngIf=\"hasChanged(defaultFilterFormValue, filterForm?.value)\">Reset filter</button>\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort\n class=\"overlay-sort\"\n [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\"\n [iconTitle]=\"'eo.list.sort' | translate\"\n [active]=\"hasChanged(defaultSortParams, sortParams)\">\n <eo-custom-sort [id]=\"'process.sort'\" (change)=\"sort($event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid\n *ngIf=\"gridOptions\"\n [gridOptions]=\"gridOptions\"\n [fullWidth]=\"true\"\n [showHeader]=\"true\"\n [showFooter]=\"true\"\n [selectFirst]=\"true\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n <div class=\"header\">\n </div>\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n <eo-pagination [settings]=\"settings\" (pageChanged)=\"onPageChanged($event)\"></eo-pagination>\n </div>\n\n <div class=\"empty\">\n <eo-error-message [emptyState]=\"{icon: 'ic_bpm.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.process.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active\" (click)=\"resetFilters()\"></eo-reset-filter>\n </div>\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n\n <!-- process details -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-process-details [applySelection]=\"{in: processSelectionId}\" [emptyState]=\"emptyState1\"\n [plugins]=\"'process-details-tab.process' | plugins\">\n </eo-process-details>\n </ng-template>\n\n <!-- object details -->\n <ng-template yvcSplitArea [size]=\"40\">\n <eo-object-details [applySelection]=\"{}\"\n [cacheLayout]=\"'process.state.object-details'\"\n [emptyState]=\"emptyState2\"\n [plugins]=\"'object-details-tab.process' | plugins\">\n </eo-object-details>\n </ng-template>\n</yvc-split-view>\n", styles: [":host{position:absolute;left:var(--app-pane-padding);right:var(--app-pane-padding);top:var(--app-pane-padding);bottom:var(--app-pane-padding);overflow:hidden}:host .error .button{margin:1em}:host yvc-split-view{height:100%}:host::ng-deep .list-item{display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host::ng-deep .list-item[unselectable]{-webkit-user-select:none;user-select:none}:host::ng-deep .list-item .content{flex:1;padding:16px;display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host::ng-deep .list-item .content .title{font-weight:700;font-size:13px}:host::ng-deep .list-item .content .description{font-size:12px;color:rgba(var(--color-black-rgb),.54)}:host::ng-deep .list-item .meta{padding:0 8px;display:flex;flex-flow:column;align-items:flex-end}:host::ng-deep .list-item .meta .datelabel{display:flex;flex-flow:column}:host::ng-deep .list-item .meta .date{display:flex;font-size:var(--font-hint);color:var(--text-color-caption);flex-direction:row;border-radius:2px;padding:2px;line-height:1em}:host::ng-deep .list-item .meta .date.end{background-color:rgba(var(--color-success),.3)}:host::ng-deep .list-item .meta .time{padding-left:2px}:host::ng-deep .list-item.notstarted{opacity:.5}:host::ng-deep .list-item.error .content .title,:host::ng-deep .list-item.error .content .description{color:var(--color-error)}:host::ng-deep .list-item.error .meta .datelabel{color:var(--color-error)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "reference", "searchTerm", "enableCompare", "recyclebinTabs", "versionComponentTabs", "enableDiff", "enableSync", "cacheLayout", "emptyState", "params", "params2", "item", "item2", "applySelection", "parseDmsParams"], outputs: ["hasContent"] }, { kind: "component", type: GridComponent, selector: "eo-grid", inputs: ["selectFirst", "selectionLimit", "sizeToFit", "fullWidth", "showHeader", "showFooter", "loaderContent", "options", "gridOptions"], outputs: ["eoGridCountChanged", "eoGridSelectionChanged", "eoGridFocusChanged", "eoGridCellClick", "eoGridDoubleClick", "eoGridContextMenuClick", "eoGridColumnResized"] }, { kind: "component", type: TotalCountComponent, selector: "eo-total-count", inputs: ["eoGrid", "outsideGrid", "gridCount"] }, { kind: "component", type: CustomSortComponent, selector: "eo-custom-sort", inputs: ["eoGrid", "overlay", "id", "sortFields"], outputs: ["change", "active"] }, { kind: "component", type: CustomFilterComponent, selector: "eo-custom-filter", inputs: ["overlay", "eoGrid", "activeFilter", "isFilterActive"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "component", type: PaginationComponent, selector: "eo-pagination", inputs: ["settings"], outputs: ["pageChanged"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: DatetimeRangeComponent, selector: "eo-datetime-range", inputs: ["withTime", "pickerTitle", "operator"] }, { kind: "component", type: CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: DynamicListComponent, selector: "eo-dynamic-list", inputs: ["situation", "multiselect", "pickerTitle", "readonly", "filterFunction", "listObject"] }, { kind: "component", type: ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: ProcessDetailsComponent, selector: "eo-process-details", inputs: ["plugins", "emptyState", "applySelection", "item"], outputs: ["onDmsItemSelected"] }, { kind: "component", type: i20.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i20.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: PluginPipe, name: "plugins" }] }); }
|
|
26597
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: ProcessStateComponent, selector: "eo-process-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'inbox.state'\">\n <!-- list -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-list-container #eoList [applySelection]=\"{out: processSelectionId}\">\n <div class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_bpm.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.state.process</div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n (click)=\"refreshList()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"\n class=\"overlay-filter\"\n [iconTitle]=\"'eo.list.filter' | translate\"\n [active]=\"hasChanged(defaultFilterFormValue, filterForm?.value)\">\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\">\n <div class=\"filter-title\" translate>eo.filter.by</div>\n <form [formGroup]=\"filterForm\" *ngIf='filterForm'>\n <eo-form-input [label]=\"('eo.state.process.filter.labels.model' | translate)\" *ngIf=\"processModelsListObject.entries.length\">\n <eo-dynamic-list formControlName=\"modelFCN\" [pickerTitle]=\"'Models'\" [listObject]=\"processModelsListObject\"></eo-dynamic-list>\n </eo-form-input>\n <eo-form-input [label]=\"('eo.state.process.filter.labels.running' | translate)\">\n <eo-checkbox formControlName=\"runningFCN\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input [label]=\"('eo.state.process.filter.labels.paused' | translate)\">\n <eo-checkbox formControlName=\"pausedFCN\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input [label]=\"('eo.state.process.filter.labels.created' | translate)\">\n <eo-checkbox formControlName=\"createdFCN\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input [label]=\"('eo.state.process.filter.labels.canceled' | translate)\">\n <eo-checkbox formControlName=\"canceledFCN\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input [label]=\"('eo.state.process.filter.labels.failed' | translate)\">\n <eo-checkbox formControlName=\"failedFCN\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input [label]=\"('eo.state.process.filter.labels.completed' | translate)\">\n <eo-checkbox formControlName=\"completedFCN\" [tristate]=\"false\"></eo-checkbox>\n </eo-form-input>\n <eo-form-input [label]=\"('eo.state.process.filter.labels.starttime' | translate)\">\n <eo-datetime-range formControlName=\"startTimeFCN\" [withTime]=\"false\"></eo-datetime-range>\n </eo-form-input>\n </form>\n <button class=\"reset-filter\" (click)=\"resetFilters()\" *ngIf=\"hasChanged(defaultFilterFormValue, filterForm?.value)\">Reset filter</button>\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort\n class=\"overlay-sort\"\n [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\"\n [iconTitle]=\"'eo.list.sort' | translate\"\n [active]=\"hasChanged(defaultSortParams, sortParams)\">\n <eo-custom-sort [id]=\"'process.sort'\" (change)=\"sort($event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid\n *ngIf=\"gridOptions\"\n [gridOptions]=\"gridOptions\"\n [fullWidth]=\"true\"\n [showHeader]=\"true\"\n [showFooter]=\"true\"\n [selectFirst]=\"true\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n <div class=\"header\">\n </div>\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n <eo-pagination [settings]=\"settings\" (pageChanged)=\"onPageChanged($event)\"></eo-pagination>\n </div>\n\n <div class=\"empty\">\n <eo-error-message [emptyState]=\"{icon: 'ic_bpm.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.process.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active\" (click)=\"resetFilters()\"></eo-reset-filter>\n </div>\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n\n <!-- process details -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-process-details [applySelection]=\"{in: processSelectionId}\" [emptyState]=\"emptyState1\"\n [plugins]=\"'process-details-tab.process' | plugins\">\n </eo-process-details>\n </ng-template>\n\n <!-- object details -->\n <ng-template yvcSplitArea [size]=\"40\">\n <eo-object-details [applySelection]=\"{}\"\n [cacheLayout]=\"'process.state.object-details'\"\n [emptyState]=\"emptyState2\"\n [plugins]=\"'object-details-tab.process' | plugins\">\n </eo-object-details>\n </ng-template>\n</yvc-split-view>\n", styles: [":host{position:absolute;left:var(--app-pane-padding);right:var(--app-pane-padding);top:var(--app-pane-padding);bottom:var(--app-pane-padding);overflow:hidden}:host .error .button{margin:1em}:host yvc-split-view{height:100%}:host::ng-deep .list-item{display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host::ng-deep .list-item[unselectable]{-webkit-user-select:none;user-select:none}:host::ng-deep .list-item .content{flex:1;padding:16px;display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host::ng-deep .list-item .content .title{font-weight:700;font-size:13px}:host::ng-deep .list-item .content .description{font-size:12px;color:rgba(var(--color-black-rgb),.54)}:host::ng-deep .list-item .meta{padding:0 8px;display:flex;flex-flow:column;align-items:flex-end}:host::ng-deep .list-item .meta .datelabel{display:flex;flex-flow:column}:host::ng-deep .list-item .meta .date{display:flex;font-size:var(--font-hint);color:var(--text-color-caption);flex-direction:row;border-radius:2px;padding:2px;line-height:1em}:host::ng-deep .list-item .meta .date.end{background-color:rgba(var(--color-success),.3)}:host::ng-deep .list-item .meta .time{padding-left:2px}:host::ng-deep .list-item.notstarted{opacity:.5}:host::ng-deep .list-item.error .content .title,:host::ng-deep .list-item.error .content .description{color:var(--color-error)}:host::ng-deep .list-item.error .meta .datelabel{color:var(--color-error)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "reference", "searchTerm", "enableCompare", "recyclebinTabs", "versionComponentTabs", "enableDiff", "enableSync", "cacheLayout", "emptyState", "params", "params2", "item", "item2", "applySelection", "parseDmsParams"], outputs: ["hasContent"] }, { kind: "component", type: GridComponent, selector: "eo-grid", inputs: ["selectFirst", "selectionLimit", "sizeToFit", "fullWidth", "showHeader", "showFooter", "loaderContent", "options", "gridOptions"], outputs: ["eoGridCountChanged", "eoGridSelectionChanged", "eoGridFocusChanged", "eoGridCellClick", "eoGridDoubleClick", "eoGridContextMenuClick", "eoGridColumnResized"] }, { kind: "component", type: TotalCountComponent, selector: "eo-total-count", inputs: ["eoGrid", "outsideGrid", "gridCount"] }, { kind: "component", type: CustomSortComponent, selector: "eo-custom-sort", inputs: ["eoGrid", "overlay", "id", "sortFields"], outputs: ["change", "active"] }, { kind: "component", type: CustomFilterComponent, selector: "eo-custom-filter", inputs: ["overlay", "eoGrid", "activeFilter", "isFilterActive"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "component", type: PaginationComponent, selector: "eo-pagination", inputs: ["settings"], outputs: ["pageChanged"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: DatetimeRangeComponent, selector: "eo-datetime-range", inputs: ["withTime", "pickerTitle", "operator"] }, { kind: "component", type: CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: DynamicListComponent, selector: "eo-dynamic-list", inputs: ["situation", "multiselect", "pickerTitle", "readonly", "formControlName", "formElementChanges", "filterFunction", "listObject", "autocompleteUrl"] }, { kind: "component", type: ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: ProcessDetailsComponent, selector: "eo-process-details", inputs: ["plugins", "emptyState", "applySelection", "item"], outputs: ["onDmsItemSelected"] }, { kind: "component", type: i20.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i20.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: PluginPipe, name: "plugins" }] }); }
|
|
26144
26598
|
}
|
|
26145
26599
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ProcessStateComponent, decorators: [{
|
|
26146
26600
|
type: Component,
|
|
@@ -27570,6 +28024,8 @@ class EoClientModule {
|
|
|
27570
28024
|
InfoInboxWidgetComponent,
|
|
27571
28025
|
InfoIntrayWidgetComponent,
|
|
27572
28026
|
SearchWidgetComponent,
|
|
28027
|
+
SignatureStatisticsWidgetComponent,
|
|
28028
|
+
SignatureStatisticsSetupComponent,
|
|
27573
28029
|
SafeUrlPipe,
|
|
27574
28030
|
LastEditedAndCreatedComponent,
|
|
27575
28031
|
LastEditedAndCreatedSetupComponent,
|
|
@@ -27583,6 +28039,7 @@ class EoClientModule {
|
|
|
27583
28039
|
TodoSetupComponent,
|
|
27584
28040
|
PictureWidgetComponent,
|
|
27585
28041
|
PictureWidgetSetupComponent], imports: [CommonModule,
|
|
28042
|
+
ClipboardModule,
|
|
27586
28043
|
FormsModule,
|
|
27587
28044
|
ReactiveFormsModule,
|
|
27588
28045
|
ObjectStateModule,
|
|
@@ -27599,6 +28056,7 @@ class EoClientModule {
|
|
|
27599
28056
|
ChartsModule,
|
|
27600
28057
|
DragDropModule], exports: [RouterModule, EoFrameworkModule] }); }
|
|
27601
28058
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: EoClientModule, providers: [provideHttpClient(withInterceptorsFromDi())], imports: [CommonModule,
|
|
28059
|
+
ClipboardModule,
|
|
27602
28060
|
FormsModule,
|
|
27603
28061
|
ReactiveFormsModule,
|
|
27604
28062
|
ObjectStateModule,
|
|
@@ -27637,6 +28095,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
|
|
|
27637
28095
|
InfoInboxWidgetComponent,
|
|
27638
28096
|
InfoIntrayWidgetComponent,
|
|
27639
28097
|
SearchWidgetComponent,
|
|
28098
|
+
SignatureStatisticsWidgetComponent,
|
|
28099
|
+
SignatureStatisticsSetupComponent,
|
|
27640
28100
|
SafeUrlPipe,
|
|
27641
28101
|
LastEditedAndCreatedComponent,
|
|
27642
28102
|
LastEditedAndCreatedSetupComponent,
|
|
@@ -27654,6 +28114,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
|
|
|
27654
28114
|
exports: [RouterModule, EoFrameworkModule],
|
|
27655
28115
|
imports: [
|
|
27656
28116
|
CommonModule,
|
|
28117
|
+
ClipboardModule,
|
|
27657
28118
|
FormsModule,
|
|
27658
28119
|
ReactiveFormsModule,
|
|
27659
28120
|
ObjectStateModule,
|