@eo-sdk/client 11.12.0-rc.3 → 11.13.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.d.ts +6 -3
  2. package/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.d.ts.map +1 -1
  3. package/app/eo-framework/actions/actions/download-action/download-action.d.ts +7 -3
  4. package/app/eo-framework/actions/actions/download-action/download-action.d.ts.map +1 -1
  5. package/app/eo-framework/actions/actions/email/email/email.component.d.ts +7 -4
  6. package/app/eo-framework/actions/actions/email/email/email.component.d.ts.map +1 -1
  7. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts +10 -2
  8. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
  9. package/app/eo-framework/form-elements/form-elements.module.d.ts.map +1 -1
  10. package/app/eo-framework/grid/filters/dynamic-list-filter.component.d.ts +2 -2
  11. package/app/eo-framework/grid/filters/dynamic-list-filter.component.d.ts.map +1 -1
  12. package/app/eo-framework/object-details/object-details.component.d.ts +33 -35
  13. package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
  14. package/app/eo-framework/result-list/result-list.component.d.ts +10 -3
  15. package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
  16. package/app/eo-framework/result-list/result-list.module.d.ts +3 -1
  17. package/app/eo-framework/result-list/result-list.module.d.ts.map +1 -1
  18. package/assets/_default/i18n/de.json +3 -2
  19. package/assets/_default/i18n/en.json +3 -2
  20. package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
  21. package/esm2022/app/eo-client/favorite-state/favorite-state.component.mjs +1 -1
  22. package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +1 -1
  23. package/esm2022/app/eo-client/notifications-state/notifications-state.component.mjs +1 -1
  24. package/esm2022/app/eo-client/object-state/object-state/object-state.component.mjs +1 -1
  25. package/esm2022/app/eo-client/process-state/process-state.component.mjs +1 -1
  26. package/esm2022/app/eo-client/result-state/result-state.component.mjs +1 -1
  27. package/esm2022/app/eo-client/version-state/version-state.component.mjs +1 -1
  28. package/esm2022/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.mjs +16 -8
  29. package/esm2022/app/eo-framework/actions/actions/download-action/download-action.mjs +11 -7
  30. package/esm2022/app/eo-framework/actions/actions/email/email/email.component.mjs +21 -12
  31. package/esm2022/app/eo-framework/eo-framework.module.mjs +2 -2
  32. package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +23 -4
  33. package/esm2022/app/eo-framework/form-elements/form-elements.module.mjs +1 -28
  34. package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +5 -5
  35. package/esm2022/app/eo-framework/object-details/object-details.component.mjs +219 -216
  36. package/esm2022/app/eo-framework/result-list/result-list.component.mjs +46 -25
  37. package/esm2022/app/eo-framework/result-list/result-list.module.mjs +12 -4
  38. package/fesm2022/eo-sdk-client.mjs +1281 -1243
  39. package/fesm2022/eo-sdk-client.mjs.map +1 -1
  40. package/package.json +2 -2
@@ -7,7 +7,7 @@ import { HttpResponse, HttpErrorResponse, HTTP_INTERCEPTORS, provideHttpClient,
7
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
- 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, SortOption, StoredQueriesService, SearchResult } from '@eo-sdk/core';
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';
11
11
  import * as i4 from '@ngx-translate/core';
12
12
  import * as i2$1 from '@angular/router';
13
13
  import { NavigationStart, Router, RouterModule, NavigationEnd } from '@angular/router';
@@ -7056,10 +7056,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
7056
7056
  }], ctorParameters: () => [{ type: i1.AutocompleteService }, { type: ObjectFormHelperService }] });
7057
7057
 
7058
7058
  class DynamicListComponent {
7059
- constructor(dynamicListService, localStorageService, objectFormHelperService) {
7059
+ // eslint-disable-next-line max-len
7060
+ constructor(dynamicListService, localStorageService, objectFormHelperService, eventService) {
7060
7061
  this.dynamicListService = dynamicListService;
7061
7062
  this.localStorageService = localStorageService;
7062
7063
  this.objectFormHelperService = objectFormHelperService;
7064
+ this.eventService = eventService;
7063
7065
  this.hasAutocompleteUrl = false;
7064
7066
  this.hasAutocompleteValuesCached = false;
7065
7067
  this.autocompleteUrlValue = null;
@@ -7263,6 +7265,12 @@ class DynamicListComponent {
7263
7265
  if (this.situation === 'SEARCH') {
7264
7266
  this.multiselect = true;
7265
7267
  }
7268
+ this.eventService.on(EnaioEvent.CLIENT_LOCALE_CHANGED).subscribe(() => {
7269
+ this.resetCachedValues();
7270
+ });
7271
+ this.eventService.on(EnaioEvent.SCHEMA_LOCALE_CHANGED).subscribe(() => {
7272
+ this.resetCachedValues();
7273
+ });
7266
7274
  }
7267
7275
  validate(c) {
7268
7276
  return (this.isValid) ? null : {
@@ -7435,7 +7443,17 @@ class DynamicListComponent {
7435
7443
  (acNode.data[this.descriptionField] && acNode.data[this.descriptionField].toString().toLowerCase().indexOf(term?.toString().toLowerCase()) !== -1);
7436
7444
  }).slice(0, 10);
7437
7445
  }
7438
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DynamicListComponent, deps: [{ token: DynamicListService }, { token: i1.LocalStorageService }, { token: ObjectFormHelperService }], target: i0.ɵɵFactoryTarget.Component }); }
7446
+ /**
7447
+ * Resets the cached autocomplete values.
7448
+ *
7449
+ * This method sets the `hasAutocompleteValuesCached` flag to `false` and removes
7450
+ * the cached autocomplete values from local storage using the `formControlName`.
7451
+ */
7452
+ resetCachedValues() {
7453
+ this.hasAutocompleteValuesCached = false;
7454
+ this.localStorageService.removeItem('autocomplete_' + this.formControlName);
7455
+ }
7456
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DynamicListComponent, deps: [{ token: DynamicListService }, { token: i1.LocalStorageService }, { token: ObjectFormHelperService }, { token: i1.EventService }], target: i0.ɵɵFactoryTarget.Component }); }
7439
7457
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", 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: [
7440
7458
  {
7441
7459
  provide: NG_VALUE_ACCESSOR,
@@ -7463,7 +7481,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
7463
7481
  multi: true,
7464
7482
  }
7465
7483
  ], 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=\"{{selectedNodes?.title ? title : 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"] }]
7466
- }], ctorParameters: () => [{ type: DynamicListService }, { type: i1.LocalStorageService }, { type: ObjectFormHelperService }], propDecorators: { autoCompleteInput: [{
7484
+ }], ctorParameters: () => [{ type: DynamicListService }, { type: i1.LocalStorageService }, { type: ObjectFormHelperService }, { type: i1.EventService }], propDecorators: { autoCompleteInput: [{
7467
7485
  type: ViewChild,
7468
7486
  args: ['autocomplete']
7469
7487
  }], autoCompleteButton: [{
@@ -11403,9 +11421,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
11403
11421
  }] } });
11404
11422
 
11405
11423
  class DownloadActionComponent extends DmsObjectTarget {
11406
- constructor(translate) {
11424
+ constructor(translate, config, userService) {
11407
11425
  super();
11408
11426
  this.translate = translate;
11427
+ this.config = config;
11428
+ this.userService = userService;
11409
11429
  this.priority = 2;
11410
11430
  this.iconSrc = 'assets/_default/svg/ic_content-download.svg';
11411
11431
  this.group = 'common';
@@ -11414,20 +11434,22 @@ class DownloadActionComponent extends DmsObjectTarget {
11414
11434
  this.label = this.translate.instant('eo.action.download.dms.object.content.label');
11415
11435
  this.description = this.translate.instant('eo.action.download.dms.object.content.description');
11416
11436
  this.header = this.translate.instant('eo.export.title');
11437
+ this.requiredRoles = this.config.getRaw('requiredRolesExport');
11417
11438
  }
11418
11439
  isExecutable(element) {
11419
- return of(!!element.content?.id);
11440
+ const isAllowed = !this.requiredRoles || this.userService.getCurrentUser().roles.some(role => this.requiredRoles.includes(role.name));
11441
+ return of(!!element.content?.id && isAllowed);
11420
11442
  }
11421
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DownloadActionComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
11422
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: DownloadActionComponent, selector: "eo-download-content", usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }
11443
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DownloadActionComponent, deps: [{ token: i1.TranslateService }, { token: i1.Config }, { token: i1.UserService }], target: i0.ɵɵFactoryTarget.Component }); }
11444
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: DownloadActionComponent, selector: "eo-download-content", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
11423
11445
  }
11424
11446
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DownloadActionComponent, decorators: [{
11425
11447
  type: Component,
11426
11448
  args: [{
11427
11449
  selector: 'eo-download-content',
11428
- template: ``
11450
+ template: ''
11429
11451
  }]
11430
- }], ctorParameters: () => [{ type: i1.TranslateService }] });
11452
+ }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i1.Config }, { type: i1.UserService }] });
11431
11453
 
11432
11454
  class OpenDocumentComponent {
11433
11455
  constructor(userService, agentService, translate, objectFormHelperService) {
@@ -11640,16 +11662,7 @@ class FormElementsModule {
11640
11662
  ReactiveFormsModule,
11641
11663
  UiModule,
11642
11664
  TreeModule,
11643
- // InputTextModule,
11644
- // DialogModule,
11645
- // InputMaskModule,
11646
- // CheckboxModule,
11647
- // TriStateCheckboxModule,
11648
- // InputTextareaModule,
11649
- // ChipsModule,
11650
- // DropdownModule,
11651
11665
  RouterModule,
11652
- // SharedModule,
11653
11666
  AccordionModule,
11654
11667
  YvcChipsModule,
11655
11668
  YvcCheckboxModule,
@@ -11675,16 +11688,7 @@ class FormElementsModule {
11675
11688
  ReactiveFormsModule,
11676
11689
  UiModule,
11677
11690
  TreeModule,
11678
- // InputTextModule,
11679
- // DialogModule,
11680
- // InputMaskModule,
11681
- // CheckboxModule,
11682
- // TriStateCheckboxModule,
11683
- // InputTextareaModule,
11684
- // ChipsModule,
11685
- // DropdownModule,
11686
11691
  RouterModule,
11687
- // SharedModule,
11688
11692
  AccordionModule,
11689
11693
  YvcChipsModule,
11690
11694
  YvcCheckboxModule,
@@ -11702,16 +11706,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
11702
11706
  ReactiveFormsModule,
11703
11707
  UiModule,
11704
11708
  TreeModule,
11705
- // InputTextModule,
11706
- // DialogModule,
11707
- // InputMaskModule,
11708
- // CheckboxModule,
11709
- // TriStateCheckboxModule,
11710
- // InputTextareaModule,
11711
- // ChipsModule,
11712
- // DropdownModule,
11713
11709
  RouterModule,
11714
- // SharedModule,
11715
11710
  AccordionModule,
11716
11711
  YvcChipsModule,
11717
11712
  YvcCheckboxModule,
@@ -11868,8 +11863,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
11868
11863
  }] } });
11869
11864
 
11870
11865
  class DynamicListFilterComponent extends DynamicListComponent {
11871
- constructor(localStorageService, objectFormHelperService, dynamicListService) {
11872
- super(dynamicListService, localStorageService, objectFormHelperService);
11866
+ constructor(localStorageService, objectFormHelperService, dynamicListService, eventService) {
11867
+ super(dynamicListService, localStorageService, objectFormHelperService, eventService);
11873
11868
  this.params = {};
11874
11869
  this.multiselect = true;
11875
11870
  this.situation = 'SEARCH';
@@ -11916,13 +11911,13 @@ class DynamicListFilterComponent extends DynamicListComponent {
11916
11911
  this.listObject = { entries: (this.params.colDef.filterParams.values || []).map(value => ({ value })) };
11917
11912
  this.pickerTitle = this.params.colDef.headerName;
11918
11913
  }
11919
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DynamicListFilterComponent, deps: [{ token: i1.LocalStorageService }, { token: ObjectFormHelperService }, { token: DynamicListService }], target: i0.ɵɵFactoryTarget.Component }); }
11914
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DynamicListFilterComponent, deps: [{ token: i1.LocalStorageService }, { token: ObjectFormHelperService }, { token: DynamicListService }, { token: i1.EventService }], target: i0.ɵɵFactoryTarget.Component }); }
11920
11915
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: DynamicListFilterComponent, selector: "eo-dynamic-list-filter", viewQueries: [{ propertyName: "eoDialog", first: true, predicate: EoDialogComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [visible]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length)}\"\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=\"{{selectedNodes?.title ? title : 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: i5.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] }); }
11921
11916
  }
11922
11917
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DynamicListFilterComponent, decorators: [{
11923
11918
  type: Component,
11924
11919
  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=\"{{selectedNodes?.title ? title : 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"] }]
11925
- }], ctorParameters: () => [{ type: i1.LocalStorageService }, { type: ObjectFormHelperService }, { type: DynamicListService }], propDecorators: { eoDialog: [{
11920
+ }], ctorParameters: () => [{ type: i1.LocalStorageService }, { type: ObjectFormHelperService }, { type: DynamicListService }, { type: i1.EventService }], propDecorators: { eoDialog: [{
11926
11921
  type: ViewChild,
11927
11922
  args: [EoDialogComponent]
11928
11923
  }] } });
@@ -14066,17 +14061,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
14066
14061
  }] });
14067
14062
 
14068
14063
  class EmailComponent {
14069
- constructor(location, agentService, elemRef) {
14064
+ constructor(location, agentService, elemRef, config, userService) {
14070
14065
  this.location = location;
14071
14066
  this.agentService = agentService;
14072
14067
  this.elemRef = elemRef;
14068
+ this.config = config;
14069
+ this.userService = userService;
14073
14070
  this.finished = new EventEmitter();
14074
14071
  this.canceled = new EventEmitter();
14072
+ this.requiredRoles = this.config.getRaw('requiredRolesExport');
14075
14073
  }
14076
14074
  ngAfterViewInit() {
14077
14075
  setTimeout(() => {
14078
14076
  this.elemRef.nativeElement.querySelector('[tabindex="0"]').focus();
14079
- this.isExecutable = this.agentService.isConnected && !this.selection[0].isFolder && this.selection[0].content && (this.selection[0].content.count !== 0 || this.selection[0].content.linked);
14077
+ const isAllowed = !this.requiredRoles || this.userService.getCurrentUser().roles.some(role => this.requiredRoles.includes(role.name));
14078
+ this.isExecutable = isAllowed
14079
+ && this.agentService.isConnected
14080
+ && !this.selection[0].isFolder
14081
+ && this.selection[0].content
14082
+ && (this.selection[0].content.count !== 0 || this.selection[0].content.linked);
14080
14083
  });
14081
14084
  }
14082
14085
  runLink() {
@@ -14132,22 +14135,22 @@ class EmailComponent {
14132
14135
  }
14133
14136
  showDescription(i, event) {
14134
14137
  this.actionDescription = i === this.actionDescription ? null : i;
14135
- this.showDescriptionOrginal = this.actionDescription != null && this.actionDescription == 'original' ? true : false;
14136
- this.showDescriptionPdf = this.actionDescription != null && this.actionDescription == 'pdf' ? true : false;
14137
- this.showDescriptionLink = this.actionDescription != null && this.actionDescription == 'link' ? true : false;
14138
+ this.showDescriptionOrginal = this.actionDescription && this.actionDescription === 'original';
14139
+ this.showDescriptionPdf = this.actionDescription && this.actionDescription === 'pdf';
14140
+ this.showDescriptionLink = this.actionDescription && this.actionDescription === 'link';
14138
14141
  event.stopPropagation();
14139
14142
  event.preventDefault();
14140
14143
  }
14141
14144
  cancel() {
14142
14145
  this.canceled.emit();
14143
14146
  }
14144
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: EmailComponent, deps: [{ token: i1$2.Location }, { token: AgentService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
14147
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: EmailComponent, deps: [{ token: i1$2.Location }, { token: AgentService }, { token: i0.ElementRef }, { token: i1.Config }, { token: i1.UserService }], target: i0.ɵɵFactoryTarget.Component }); }
14145
14148
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: EmailComponent, selector: "eo-email", inputs: { selection: "selection" }, outputs: { finished: "finished", canceled: "canceled" }, ngImport: i0, template: "<div class=\"body\" eoTrapFocus>\n <div class=\"navigation\">\n <div class=\"group-title\" translate>eo.email.title</div>\n <div class=\"nav-item\">\n <a tabindex=\"0\" (keydown.enter)=\"runLink()\" (click)=\"runLink()\">{{'eo.action.menu.send.email.link.label'|\n translate}}</a>\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"\n (click)=\"showDescription('link', $event)\"></eo-icon>\n <div class=\"description\" *ngIf=\"showDescriptionLink\" translate>eo.action.menu.send.email.link.description\n </div>\n </div>\n <div class=\"nav-item\" *ngIf=\"isExecutable\">\n <a tabindex=\"0\" (keydown.enter)=\"runOriginal()\" (click)=\"runOriginal()\">{{'eo.action.menu.send.email.file.label'|\n translate}}</a>\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"\n (click)=\"showDescription('original', $event)\"></eo-icon>\n <div class=\"description\" *ngIf=\"showDescriptionOrginal\" translate>eo.action.menu.send.email.file.description</div>\n </div>\n <div class=\"nav-item\" *ngIf=\"isExecutable\">\n <a tabindex=\"0\" (keydown.enter)=\"runPdf()\" (click)=\"runPdf()\">{{'eo.action.menu.send.email.file.pdf.label' |\n translate}}</a>\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"\n (click)=\"showDescription('pdf', $event)\"></eo-icon>\n <div class=\"description\" *ngIf=\"showDescriptionPdf\" translate>eo.action.menu.send.email.file.pdf.description</div>\n </div>\n </div>\n <div class=\"form-buttons\">\n <button (click)=\"cancel()\" translate>eo.cta.button.cancel</button>\n </div>\n</div>", styles: [".body{padding:var(--app-pane-padding);min-width:200px;display:inline-block;width:90%}.body .group-title{background:rgba(var(--color-white-rgb),.1);margin-bottom:calc(var(--app-pane-padding) / 4);padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);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}.body .nav-item{position:relative;top:0;right:0;min-width:100px;z-index:100;padding-bottom:9px;border-bottom:1px solid rgba(var(--color-white-rgb),.2)}.body .nav-item .description{border-radius:2px;-webkit-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;color:rgba(var(--color-white-rgb),.54);font-style:italic;padding:calc(var(--app-pane-padding) / 4) var(--app-pane-padding) calc(var(--app-pane-padding) / 2) var(--app-pane-padding)}.body .nav-item eo-icon{margin:0 calc(var(--app-pane-padding) / 2)}.body .nav-item eo-icon.info-icon{margin-left:auto;margin-bottom:7px;margin-top:-38px;border-radius:50%;color:rgba(var(--color-white-rgb),.3);cursor:pointer}.body .nav-item eo-icon.info-icon:hover{background-color:var(--color-primary)}.body .nav-item a{padding:var(--app-pane-padding);text-decoration:none;color:inherit;display:block;cursor:pointer;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}.body .nav-item a.active-link{background:rgba(var(--color-white-rgb),.1);cursor:default}.body .nav-item a:not(.active-link):focus,.body .nav-item a:not(.active-link):hover{background:rgba(var(--color-white-rgb),.1)}.body .form-buttons{padding:5px 0;text-align:right}.body .form-buttons button:nth-child(2n):not(:last-child){margin:0 calc(var(--app-pane-padding) / 2);background-color:#ffffff1a!important}.body .form-buttons button:nth-child(2n):last-child{margin-left:calc(var(--app-pane-padding) / 2);background-color:#ffffff1a!important;margin-right:0}\n"], dependencies: [{ 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: "directive", type: TrapFocusDirective, selector: "[eoTrapFocus]" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
14146
14149
  }
14147
14150
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: EmailComponent, decorators: [{
14148
14151
  type: Component,
14149
14152
  args: [{ selector: 'eo-email', template: "<div class=\"body\" eoTrapFocus>\n <div class=\"navigation\">\n <div class=\"group-title\" translate>eo.email.title</div>\n <div class=\"nav-item\">\n <a tabindex=\"0\" (keydown.enter)=\"runLink()\" (click)=\"runLink()\">{{'eo.action.menu.send.email.link.label'|\n translate}}</a>\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"\n (click)=\"showDescription('link', $event)\"></eo-icon>\n <div class=\"description\" *ngIf=\"showDescriptionLink\" translate>eo.action.menu.send.email.link.description\n </div>\n </div>\n <div class=\"nav-item\" *ngIf=\"isExecutable\">\n <a tabindex=\"0\" (keydown.enter)=\"runOriginal()\" (click)=\"runOriginal()\">{{'eo.action.menu.send.email.file.label'|\n translate}}</a>\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"\n (click)=\"showDescription('original', $event)\"></eo-icon>\n <div class=\"description\" *ngIf=\"showDescriptionOrginal\" translate>eo.action.menu.send.email.file.description</div>\n </div>\n <div class=\"nav-item\" *ngIf=\"isExecutable\">\n <a tabindex=\"0\" (keydown.enter)=\"runPdf()\" (click)=\"runPdf()\">{{'eo.action.menu.send.email.file.pdf.label' |\n translate}}</a>\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"\n (click)=\"showDescription('pdf', $event)\"></eo-icon>\n <div class=\"description\" *ngIf=\"showDescriptionPdf\" translate>eo.action.menu.send.email.file.pdf.description</div>\n </div>\n </div>\n <div class=\"form-buttons\">\n <button (click)=\"cancel()\" translate>eo.cta.button.cancel</button>\n </div>\n</div>", styles: [".body{padding:var(--app-pane-padding);min-width:200px;display:inline-block;width:90%}.body .group-title{background:rgba(var(--color-white-rgb),.1);margin-bottom:calc(var(--app-pane-padding) / 4);padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);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}.body .nav-item{position:relative;top:0;right:0;min-width:100px;z-index:100;padding-bottom:9px;border-bottom:1px solid rgba(var(--color-white-rgb),.2)}.body .nav-item .description{border-radius:2px;-webkit-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;color:rgba(var(--color-white-rgb),.54);font-style:italic;padding:calc(var(--app-pane-padding) / 4) var(--app-pane-padding) calc(var(--app-pane-padding) / 2) var(--app-pane-padding)}.body .nav-item eo-icon{margin:0 calc(var(--app-pane-padding) / 2)}.body .nav-item eo-icon.info-icon{margin-left:auto;margin-bottom:7px;margin-top:-38px;border-radius:50%;color:rgba(var(--color-white-rgb),.3);cursor:pointer}.body .nav-item eo-icon.info-icon:hover{background-color:var(--color-primary)}.body .nav-item a{padding:var(--app-pane-padding);text-decoration:none;color:inherit;display:block;cursor:pointer;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}.body .nav-item a.active-link{background:rgba(var(--color-white-rgb),.1);cursor:default}.body .nav-item a:not(.active-link):focus,.body .nav-item a:not(.active-link):hover{background:rgba(var(--color-white-rgb),.1)}.body .form-buttons{padding:5px 0;text-align:right}.body .form-buttons button:nth-child(2n):not(:last-child){margin:0 calc(var(--app-pane-padding) / 2);background-color:#ffffff1a!important}.body .form-buttons button:nth-child(2n):last-child{margin-left:calc(var(--app-pane-padding) / 2);background-color:#ffffff1a!important;margin-right:0}\n"] }]
14150
- }], ctorParameters: () => [{ type: i1$2.Location }, { type: AgentService }, { type: i0.ElementRef }], propDecorators: { selection: [{
14153
+ }], ctorParameters: () => [{ type: i1$2.Location }, { type: AgentService }, { type: i0.ElementRef }, { type: i1.Config }, { type: i1.UserService }], propDecorators: { selection: [{
14151
14154
  type: Input
14152
14155
  }], finished: [{
14153
14156
  type: Output
@@ -14184,19 +14187,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
14184
14187
  }], ctorParameters: () => [{ type: i1.TranslateService }] });
14185
14188
 
14186
14189
  class ClipboardObjectActionComponent {
14187
- constructor(translate, toast, location, agentService, elemRef) {
14190
+ constructor(translate, toast, location, agentService, elemRef, config, userService) {
14188
14191
  this.translate = translate;
14189
14192
  this.toast = toast;
14190
14193
  this.location = location;
14191
14194
  this.agentService = agentService;
14192
14195
  this.elemRef = elemRef;
14196
+ this.config = config;
14197
+ this.userService = userService;
14193
14198
  this.finished = new EventEmitter();
14194
14199
  this.canceled = new EventEmitter();
14200
+ this.requiredRoles = this.config.getRaw('requiredRolesExport');
14195
14201
  }
14196
14202
  ngAfterViewInit() {
14197
14203
  setTimeout(() => {
14198
14204
  this.elemRef.nativeElement.querySelector('[tabindex="0"]').focus();
14199
- this.isExecutable = this.agentService.isConnected && !this.selection[0].isFolder && this.selection[0].content && (this.selection[0].content.count !== 0 || this.selection[0].content.linked);
14205
+ const isAllowed = !this.requiredRoles || this.userService.getCurrentUser().roles.some(role => this.requiredRoles.includes(role.name));
14206
+ this.isExecutable = isAllowed
14207
+ && this.agentService.isConnected
14208
+ && !this.selection[0].isFolder
14209
+ && this.selection[0].content
14210
+ && (this.selection[0].content.count !== 0 || this.selection[0].content.linked);
14200
14211
  });
14201
14212
  }
14202
14213
  runLink() {
@@ -14247,22 +14258,22 @@ class ClipboardObjectActionComponent {
14247
14258
  }
14248
14259
  showDescription(i, event) {
14249
14260
  this.actionDescription = i === this.actionDescription ? null : i;
14250
- this.showDescriptionOrginal = this.actionDescription != null && this.actionDescription == 'original' ? true : false;
14251
- this.showDescriptionPdf = this.actionDescription != null && this.actionDescription == 'pdf' ? true : false;
14252
- this.showDescriptionLink = this.actionDescription != null && this.actionDescription == 'link' ? true : false;
14261
+ this.showDescriptionOrginal = this.actionDescription && this.actionDescription === 'original';
14262
+ this.showDescriptionPdf = this.actionDescription && this.actionDescription === 'pdf';
14263
+ this.showDescriptionLink = this.actionDescription && this.actionDescription === 'link';
14253
14264
  event.stopPropagation();
14254
14265
  event.preventDefault();
14255
14266
  }
14256
14267
  cancel() {
14257
14268
  this.canceled.emit();
14258
14269
  }
14259
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipboardObjectActionComponent, deps: [{ token: i1.TranslateService }, { token: i1.NotificationsService }, { token: i1$2.Location }, { token: AgentService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
14270
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipboardObjectActionComponent, deps: [{ token: i1.TranslateService }, { token: i1.NotificationsService }, { token: i1$2.Location }, { token: AgentService }, { token: i0.ElementRef }, { token: i1.Config }, { token: i1.UserService }], target: i0.ɵɵFactoryTarget.Component }); }
14260
14271
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ClipboardObjectActionComponent, selector: "eo-clipboard-object-action", inputs: { selection: "selection" }, outputs: { finished: "finished", canceled: "canceled" }, ngImport: i0, template: "<div class=\"body\" eoTrapFocus>\n <div class=\"navigation\">\n <div class=\"group-title\" translate>eo.action.menu.clipboard.label</div>\n <div class=\"nav-item\">\n <a tabindex=\"0\" (keydown.enter)=\"runLink()\" (click)=\"runLink()\">{{'eo.action.menu.clipboard.link.label'|\n translate}}</a>\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"\n (click)=\"showDescription('link', $event)\"></eo-icon>\n <div class=\"description\" *ngIf=\"showDescriptionLink\" translate>eo.action.menu.clipboard.link.description\n </div>\n </div>\n <div class=\"nav-item\" *ngIf=\"isExecutable\">\n <a tabindex=\"0\" (keydown.enter)=\"runOriginal()\" (click)=\"runOriginal()\">{{'eo.action.menu.clipboard.file.label'|\n translate}}</a>\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"\n (click)=\"showDescription('original', $event)\"></eo-icon>\n <div class=\"description\" *ngIf=\"showDescriptionOrginal\" translate>eo.action.menu.clipboard.file.description</div>\n </div>\n <div class=\"nav-item\" *ngIf=\"isExecutable\">\n <a tabindex=\"0\" (keydown.enter)=\"runPdf()\" (click)=\"runPdf()\">{{'eo.action.menu.clipboard.file.pdf.label' |\n translate}}</a>\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"\n (click)=\"showDescription('pdf', $event)\"></eo-icon>\n <div class=\"description\" *ngIf=\"showDescriptionPdf\" translate>eo.action.menu.clipboard.file.pdf.description </div>\n </div>\n </div>\n <div class=\"form-buttons\">\n <button (click)=\"cancel()\" translate>eo.cta.button.cancel</button>\n </div>\n</div>", styles: [".body{padding:var(--app-pane-padding);min-width:200px;display:inline-block;width:90%}.body .group-title{background:rgba(var(--color-white-rgb),.1);margin-bottom:calc(var(--app-pane-padding) / 4);padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);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}.body .nav-item{position:relative;top:0;right:0;min-width:100px;z-index:100;padding-bottom:8px;border-bottom:1px solid rgba(var(--color-white-rgb),.2)}.body .nav-item .description{border-radius:2px;-webkit-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;color:rgba(var(--color-white-rgb),.54);font-style:italic;padding:calc(var(--app-pane-padding) / 4) var(--app-pane-padding) calc(var(--app-pane-padding) / 2) var(--app-pane-padding)}.body .nav-item eo-icon{margin:0 calc(var(--app-pane-padding) / 2)}.body .nav-item eo-icon.info-icon{margin-left:auto;margin-bottom:7px;margin-top:-38px;border-radius:50%;color:rgba(var(--color-white-rgb),.3);cursor:pointer}.body .nav-item eo-icon.info-icon:hover{background-color:var(--color-primary)}.body .nav-item a{padding:var(--app-pane-padding);text-decoration:none;color:inherit;display:block;cursor:pointer;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}.body .nav-item a.active-link{background:rgba(var(--color-white-rgb),.1);cursor:default}.body .nav-item a:not(.active-link):focus,.body .nav-item a:not(.active-link):hover{background:rgba(var(--color-white-rgb),.1)}.body .form-buttons{padding:5px 0;text-align:right}.body .form-buttons button:nth-child(2n):not(:last-child){margin:0 calc(var(--app-pane-padding) / 2);background-color:#ffffff1a!important}.body .form-buttons button:nth-child(2n):last-child{margin-left:calc(var(--app-pane-padding) / 2);background-color:#ffffff1a!important;margin-right:0}\n"], dependencies: [{ 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: "directive", type: TrapFocusDirective, selector: "[eoTrapFocus]" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
14261
14272
  }
14262
14273
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipboardObjectActionComponent, decorators: [{
14263
14274
  type: Component,
14264
14275
  args: [{ selector: 'eo-clipboard-object-action', template: "<div class=\"body\" eoTrapFocus>\n <div class=\"navigation\">\n <div class=\"group-title\" translate>eo.action.menu.clipboard.label</div>\n <div class=\"nav-item\">\n <a tabindex=\"0\" (keydown.enter)=\"runLink()\" (click)=\"runLink()\">{{'eo.action.menu.clipboard.link.label'|\n translate}}</a>\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"\n (click)=\"showDescription('link', $event)\"></eo-icon>\n <div class=\"description\" *ngIf=\"showDescriptionLink\" translate>eo.action.menu.clipboard.link.description\n </div>\n </div>\n <div class=\"nav-item\" *ngIf=\"isExecutable\">\n <a tabindex=\"0\" (keydown.enter)=\"runOriginal()\" (click)=\"runOriginal()\">{{'eo.action.menu.clipboard.file.label'|\n translate}}</a>\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"\n (click)=\"showDescription('original', $event)\"></eo-icon>\n <div class=\"description\" *ngIf=\"showDescriptionOrginal\" translate>eo.action.menu.clipboard.file.description</div>\n </div>\n <div class=\"nav-item\" *ngIf=\"isExecutable\">\n <a tabindex=\"0\" (keydown.enter)=\"runPdf()\" (click)=\"runPdf()\">{{'eo.action.menu.clipboard.file.pdf.label' |\n translate}}</a>\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"\n (click)=\"showDescription('pdf', $event)\"></eo-icon>\n <div class=\"description\" *ngIf=\"showDescriptionPdf\" translate>eo.action.menu.clipboard.file.pdf.description </div>\n </div>\n </div>\n <div class=\"form-buttons\">\n <button (click)=\"cancel()\" translate>eo.cta.button.cancel</button>\n </div>\n</div>", styles: [".body{padding:var(--app-pane-padding);min-width:200px;display:inline-block;width:90%}.body .group-title{background:rgba(var(--color-white-rgb),.1);margin-bottom:calc(var(--app-pane-padding) / 4);padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);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}.body .nav-item{position:relative;top:0;right:0;min-width:100px;z-index:100;padding-bottom:8px;border-bottom:1px solid rgba(var(--color-white-rgb),.2)}.body .nav-item .description{border-radius:2px;-webkit-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;color:rgba(var(--color-white-rgb),.54);font-style:italic;padding:calc(var(--app-pane-padding) / 4) var(--app-pane-padding) calc(var(--app-pane-padding) / 2) var(--app-pane-padding)}.body .nav-item eo-icon{margin:0 calc(var(--app-pane-padding) / 2)}.body .nav-item eo-icon.info-icon{margin-left:auto;margin-bottom:7px;margin-top:-38px;border-radius:50%;color:rgba(var(--color-white-rgb),.3);cursor:pointer}.body .nav-item eo-icon.info-icon:hover{background-color:var(--color-primary)}.body .nav-item a{padding:var(--app-pane-padding);text-decoration:none;color:inherit;display:block;cursor:pointer;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}.body .nav-item a.active-link{background:rgba(var(--color-white-rgb),.1);cursor:default}.body .nav-item a:not(.active-link):focus,.body .nav-item a:not(.active-link):hover{background:rgba(var(--color-white-rgb),.1)}.body .form-buttons{padding:5px 0;text-align:right}.body .form-buttons button:nth-child(2n):not(:last-child){margin:0 calc(var(--app-pane-padding) / 2);background-color:#ffffff1a!important}.body .form-buttons button:nth-child(2n):last-child{margin-left:calc(var(--app-pane-padding) / 2);background-color:#ffffff1a!important;margin-right:0}\n"] }]
14265
- }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i1.NotificationsService }, { type: i1$2.Location }, { type: AgentService }, { type: i0.ElementRef }], propDecorators: { selection: [{
14276
+ }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i1.NotificationsService }, { type: i1$2.Location }, { type: AgentService }, { type: i0.ElementRef }, { type: i1.Config }, { type: i1.UserService }], propDecorators: { selection: [{
14266
14277
  type: Input
14267
14278
  }], finished: [{
14268
14279
  type: Output
@@ -19819,76 +19830,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
19819
19830
  }] } });
19820
19831
 
19821
19832
  let ObjectDetailsComponent = class ObjectDetailsComponent {
19822
- set reference(isRef) {
19823
- this.isReference = isRef;
19824
- }
19825
- set emptyState(e) {
19826
- this._emptyState = e || EmptyStateService.defaultEmptyState();
19827
- }
19828
- get emptyState() {
19829
- return this._emptyState;
19830
- }
19831
- set dmsParams(params) {
19832
- this.loadDmsObject(params).subscribe((res) => {
19833
- this.dmsObject = res;
19834
- }, Utils.throw(() => this.onHasError(true, true, false)));
19835
- }
19836
- set dmsParams2(params) {
19837
- this.loadDmsObject(params)
19838
- .subscribe((res) => {
19839
- this.dmsObject2 = res;
19840
- }, Utils.throw(() => this.onHasError(true, true, false)));
19841
- }
19842
- set dmsObject(v) {
19843
- // show loader if object is different and force change detection to show loader
19844
- this.showLoader = true;
19845
- this.cdr.detectChanges();
19846
- const isDifferent = this.item?.id !== v?.id;
19847
- this.item = v;
19848
- this.onHasError();
19849
- this.setupCapabilities();
19850
- if (this.item?.id) {
19851
- this.fetchAtiveProcessData(this.item?.id);
19852
- }
19853
- // prepare indexdata preview
19854
- this.onIndexDataSaved(null, this.item);
19855
- this.eventService.trigger(EnaioEvent.DMS_OBJECT_LOADED, this.item);
19856
- if (this.item) {
19857
- if (isDifferent && this.item.isActiveVersion && !this.enableCompare) {
19858
- this.uploadTarget.referenceObject = this.item;
19859
- this.uploadTarget.onUploadSuccess = () => this.dmsParams = { id: v.id, type: v.typeName };
19860
- this.uploadRegistry.register(this.uploadTarget);
19861
- }
19862
- else {
19863
- this.uploadRegistry.unregister(this.uploadTarget.id);
19864
- this.uploadTarget.referenceObject = this.item;
19865
- this.uploadTarget.onUploadSuccess = () => this.dmsParams = { id: v.id, type: v.typeName };
19866
- this.uploadRegistry.register(this.uploadTarget);
19867
- }
19868
- if (this.item.lock) {
19869
- this.lockTooltip = this.translate.instant('eo.object.lock') + ' '
19870
- + (new LocaleDatePipe(this.translate).transform(this.item.lock.on))
19871
- + ', ' + this.item.lock.by.label + ' (' + this.item.lock.by.name + ')';
19872
- }
19873
- }
19874
- else {
19875
- this.emptyState = this.empty.getEmptyState(0);
19876
- }
19877
- if (this.item?.subscriptions.length) {
19878
- this.subscriptionIconTooltip = this.createSubscriptionIconTooltip(this.item);
19879
- }
19880
- }
19881
- set dmsObject2(v) {
19882
- this.item2 = v;
19883
- this.enableSync = !!this.item2?.version;
19884
- this.onHasError();
19885
- this.onIndexDataSaved(null, this.item2);
19886
- }
19887
- get dataType() {
19888
- return this.item ? this.item.typeName : 'none';
19889
- }
19890
- // undockWinActive = false;
19891
- constructor(router, route, system, empty, agentService, backend, dmsService, selection, actionService, capabilityService, uploadRegistry, eventService, configService, bpmService, translate, cdr) {
19833
+ constructor(router, route, system, empty, agentService, backend, dmsService, selection, actionService, capabilityService, uploadRegistry, eventService, configService, bpmService, translate, cdr, userService) {
19892
19834
  this.router = router;
19893
19835
  this.route = route;
19894
19836
  this.system = system;
@@ -19905,8 +19847,14 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
19905
19847
  this.bpmService = bpmService;
19906
19848
  this.translate = translate;
19907
19849
  this.cdr = cdr;
19908
- // generate unique id to pass to upload registry
19909
- this.uploadTarget = new UploadTarget(Utils.uuid(), UploadTarget.OBJECT);
19850
+ this.userService = userService;
19851
+ this.enableCompare = false;
19852
+ this.recyclebinTabs = false;
19853
+ this.versionComponentTabs = false;
19854
+ this.enableDiff = true;
19855
+ this.enableSync = false;
19856
+ this.parseDmsParams = this.getDmsParams;
19857
+ this.hasContent = new EventEmitter();
19910
19858
  this.hasError = false;
19911
19859
  this.nodmsobject = false;
19912
19860
  this.showLoader = false;
@@ -19914,14 +19862,8 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
19914
19862
  this.panelOrder = { 'master': ['summary', 'indexdata', 'history', 'links', 'signature'], 'slave': ['preview'] };
19915
19863
  this.agentIsConnected$ = this.agentService.isConnected$;
19916
19864
  this.split = false;
19917
- this.enableCompare = false;
19918
- this.recyclebinTabs = false;
19919
- this.versionComponentTabs = false;
19920
- this.enableDiff = true;
19921
- this.enableSync = false;
19922
19865
  this.onEnableSync = true;
19923
19866
  this.tabs = [];
19924
- this._emptyState = { icon: 'ic_no-file.svg', text: '', className: '' };
19925
19867
  this.preventClickThrough = false;
19926
19868
  // shortcut actions
19927
19869
  this.shortcuts = {
@@ -19959,7 +19901,7 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
19959
19901
  this.downloadOriginalContent();
19960
19902
  },
19961
19903
  isHidden: () => {
19962
- return !this.enableCompare && this.item.content?.id ? false : true;
19904
+ return !(!this.enableCompare && this.item.content?.id);
19963
19905
  }
19964
19906
  },
19965
19907
  {
@@ -19986,51 +19928,85 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
19986
19928
  }
19987
19929
  ]
19988
19930
  };
19989
- this.parseDmsParams = this.getDmsParams;
19990
- this.hasContent = new EventEmitter();
19931
+ // generate unique id to pass to upload registry
19932
+ this.uploadTarget = new UploadTarget(Utils.uuid(), UploadTarget.OBJECT);
19933
+ this._emptyState = { icon: 'ic_no-file.svg', text: '', className: '' };
19991
19934
  this.panelOrder = this.configService.getRaw('objectDetailsTabs') || this.panelOrder;
19935
+ const requiredRoles = this.configService.getRaw('requiredRolesExport');
19936
+ this.downloadAllowed = !requiredRoles || this.userService.getCurrentUser().roles.some(role => requiredRoles.includes(role.name));
19992
19937
  this.agentService.setAgentStatus(this.route.snapshot.queryParams['connectagent']).subscribe((hasStatus) => {
19993
19938
  if (hasStatus) {
19994
- this.router.navigate([], { queryParams: { connectagent: null }, queryParamsHandling: 'merge' });
19939
+ this.router.navigate([], { queryParams: { connectagent: null }, queryParamsHandling: 'merge' }).then();
19995
19940
  }
19996
19941
  });
19997
19942
  }
19998
- getDmsParams(data) {
19999
- return data ? { ...data, type: data.typeName || data.type } : null;
19943
+ get dataType() {
19944
+ return this.item ? this.item.typeName : 'none';
20000
19945
  }
20001
- updateContent() {
20002
- if (this.applySelection) {
20003
- if (this.enableCompare) {
20004
- this.selection
20005
- .find(this.applySelection.in)
20006
- .selection$
20007
- .pipe(untilDestroyed(this), throttleTime(500))
20008
- .subscribe((res) => {
20009
- this.dmsParams = this.parseDmsParams(res[0]);
20010
- this.dmsParams2 = this.parseDmsParams(res[1]);
20011
- });
20012
- return;
19946
+ get emptyState() {
19947
+ return this._emptyState;
19948
+ }
19949
+ set reference(isRef) {
19950
+ this.isReference = isRef;
19951
+ }
19952
+ set emptyState(e) {
19953
+ this._emptyState = e || EmptyStateService.defaultEmptyState();
19954
+ }
19955
+ set dmsParams(params) {
19956
+ this.loadDmsObject(params).subscribe((res) => {
19957
+ this.dmsObject = res;
19958
+ }, Utils.throw(() => this.onHasError(true, true, false)));
19959
+ }
19960
+ set dmsParams2(params) {
19961
+ this.loadDmsObject(params)
19962
+ .subscribe((res) => {
19963
+ this.dmsObject2 = res;
19964
+ }, Utils.throw(() => this.onHasError(true, true, false)));
19965
+ }
19966
+ set dmsObject(v) {
19967
+ // show loader if object is different and force change detection to show loader
19968
+ this.showLoader = true;
19969
+ this.cdr.detectChanges();
19970
+ const isDifferent = this.item?.id !== v?.id;
19971
+ this.item = v;
19972
+ this.onHasError();
19973
+ this.setupCapabilities();
19974
+ if (this.item?.id) {
19975
+ this.fetchAtiveProcessData(this.item?.id);
19976
+ }
19977
+ // prepare indexdata preview
19978
+ this.onIndexDataSaved(null, this.item);
19979
+ this.eventService.trigger(EnaioEvent.DMS_OBJECT_LOADED, this.item);
19980
+ if (this.item) {
19981
+ if (isDifferent && this.item.isActiveVersion && !this.enableCompare) {
19982
+ this.uploadTarget.referenceObject = this.item;
19983
+ this.uploadTarget.onUploadSuccess = () => this.dmsParams = { id: v.id, type: v.typeName };
19984
+ this.uploadRegistry.register(this.uploadTarget);
20013
19985
  }
20014
19986
  else {
20015
- this.selection
20016
- .find(this.applySelection.in)
20017
- .focus$
20018
- .pipe(untilDestroyed(this))
20019
- .subscribe(res => {
20020
- this.loadDmsObject(this.parseDmsParams(res)).subscribe((res) => {
20021
- // refreshing object details may result in an updated version of the object
20022
- // so we'll use this trigger to also emitt those changes to other listening components
20023
- if (this.item && res && (this.item.id === res.id)) {
20024
- this.eventService.trigger(EnaioEvent.DMS_OBJECT_UPDATED, res);
20025
- }
20026
- this.dmsObject = res;
20027
- }, Utils.throw((error) => {
20028
- this.uploadRegistry.unregister(this.uploadTarget.id);
20029
- return this.onHasError(true, true, false);
20030
- }));
20031
- });
19987
+ this.uploadRegistry.unregister(this.uploadTarget.id);
19988
+ this.uploadTarget.referenceObject = this.item;
19989
+ this.uploadTarget.onUploadSuccess = () => this.dmsParams = { id: v.id, type: v.typeName };
19990
+ this.uploadRegistry.register(this.uploadTarget);
20032
19991
  }
19992
+ if (this.item.lock) {
19993
+ this.lockTooltip = this.translate.instant('eo.object.lock') + ' '
19994
+ + (new LocaleDatePipe(this.translate).transform(this.item.lock.on))
19995
+ + ', ' + this.item.lock.by.label + ' (' + this.item.lock.by.name + ')';
19996
+ }
19997
+ }
19998
+ else {
19999
+ this.emptyState = this.empty.getEmptyState(0);
20033
20000
  }
20001
+ if (this.item?.subscriptions.length) {
20002
+ this.subscriptionIconTooltip = this.createSubscriptionIconTooltip();
20003
+ }
20004
+ }
20005
+ set dmsObject2(v) {
20006
+ this.item2 = v;
20007
+ this.enableSync = !!this.item2?.version;
20008
+ this.onHasError();
20009
+ this.onIndexDataSaved(null, this.item2);
20034
20010
  }
20035
20011
  refreshContent() {
20036
20012
  if (!this.preventClickThrough) {
@@ -20041,39 +20017,6 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
20041
20017
  this.preventClickThrough = false;
20042
20018
  }, 5000);
20043
20019
  }
20044
- prepareIndexDataPreview(item, formData) {
20045
- const { id, data, type, created, modified, content, contentFileName, contentFileSize, version } = item;
20046
- return this.system
20047
- .getObjectTypeForm(type.name, 'EDIT')
20048
- .pipe(map(form => {
20049
- let indexDataPreview = {
20050
- form,
20051
- data: formData || data
20052
- };
20053
- let baseparams = {
20054
- id,
20055
- type: type.name,
20056
- createdOn: new Date(created.on),
20057
- modifiedOn: new Date(modified.on),
20058
- createdBy: `${created.by.title} (${created.by.name})`,
20059
- modifiedBy: `${modified.by.title} (${modified.by.name})`,
20060
- contentFileName: contentFileName ? contentFileName : null,
20061
- contentFileSize: contentFileSize ? Number(contentFileSize) : null,
20062
- version: version || 0,
20063
- mimeGroup: content ? content.contents ? content.contents[0].mimegroup : null : null,
20064
- digest: content ? content.contents ? content.contents[0].digest : null : null,
20065
- contentId: content ? content.contents ? content.id : null : null,
20066
- mimeType: content ? content.contents ? content.contents[0].mimetype : null : null,
20067
- };
20068
- return { indexDataPreview, baseparams };
20069
- }));
20070
- }
20071
- onHasError(hasError = false, nodmsobject = false, showLoader = false) {
20072
- this.hasError = hasError;
20073
- this.nodmsobject = nodmsobject;
20074
- this.showLoader = showLoader;
20075
- this.hasContent.emit(!hasError);
20076
- }
20077
20020
  loadDmsObject(params) {
20078
20021
  if (!this.enableCompare && params) {
20079
20022
  delete params.version;
@@ -20143,63 +20086,14 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
20143
20086
  });
20144
20087
  }
20145
20088
  }
20146
- get referenceTitle() {
20147
- return this.item.contextFolder ? this.item.contextFolder.title : this.item.title;
20148
- }
20149
20089
  isJournalObject(item) {
20150
20090
  return item.type.supertypes.find(sT => sT === 'sysjournalobject');
20151
20091
  }
20152
- createSubscriptionIconTooltip(item) {
20153
- let tooltip = '';
20154
- const modes = this.item.subscriptions.map(subscription => subscription.mode);
20155
- const subscribedToAllChanges = modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED) || (modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED) && modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED));
20156
- const subscribedToMetaChangesOnly = modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED) && !modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED) && !modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED);
20157
- const subscribedToContentChangesOnly = modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED) && !modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED) && !modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED);
20158
- if (subscribedToAllChanges) {
20159
- tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.allChanges');
20160
- }
20161
- else if (subscribedToMetaChangesOnly) {
20162
- tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.meta');
20163
- }
20164
- else if (subscribedToContentChangesOnly) {
20165
- tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.content');
20092
+ // custom event handler for layout settings to make sure plugin tabs are saved
20093
+ onLayoutSettingsChanged(event) {
20094
+ if (this.cacheLayout) {
20095
+ localStorage.setItem(this.cacheLayout, JSON.stringify(event));
20166
20096
  }
20167
- return tooltip;
20168
- }
20169
- setupCapabilities() {
20170
- const block = this.capabilities && !this.capabilities.signing ? ['signature'] : [];
20171
- const cachedOrder = this.cacheLayout && JSON.parse(localStorage.getItem(this.cacheLayout));
20172
- const primary = cachedOrder?.primary?.tabs;
20173
- const secondary = cachedOrder?.secondary?.tabs;
20174
- const _primary = this.panelOrder.master || [];
20175
- const _secondary = this.panelOrder.slave || [];
20176
- const plugins = this.plugins?.map(p => p.id) || [];
20177
- this.tabs = [..._primary, ..._secondary, ...plugins].filter(t => !block.includes(t));
20178
- if (this.versionComponentTabs) {
20179
- if (this.item?.isFolder) {
20180
- this.tabs = this.tabs.filter(tab => ['summary', 'indexdata'].includes(tab));
20181
- }
20182
- else {
20183
- this.tabs = this.tabs.filter(tab => ['summary', 'indexdata', 'preview', 'signature'].includes(tab));
20184
- }
20185
- }
20186
- const diff = this.tabs.filter(t => !primary?.includes(t) && !secondary?.includes(t));
20187
- const _pTabs = [..._primary, ...plugins.filter(p => !_primary.includes(p))];
20188
- const pTabs = primary ? [...primary, ...diff] : _pTabs;
20189
- const sTabs = secondary || _secondary;
20190
- const p = pTabs.filter(t => this.tabs.includes(t));
20191
- const s = sTabs.filter(t => this.tabs.includes(t));
20192
- this.splitTabConfig = {
20193
- primary: { tabs: p, active: p.includes(cachedOrder?.primary?.active) ? cachedOrder?.primary?.active : p[0] || '' },
20194
- secondary: { tabs: s, active: s.includes(cachedOrder?.secondary?.active) ? cachedOrder?.secondary?.active : s[0] || '' },
20195
- split: cachedOrder?.split
20196
- };
20197
- // force save of layout settings to include plugin tabs
20198
- this.onLayoutSettingsChanged(this.splitTabConfig);
20199
- }
20200
- // custom event handler for layout settings to make sure plugin tabs are saved
20201
- onLayoutSettingsChanged(event) {
20202
- this.cacheLayout && localStorage.setItem(this.cacheLayout, JSON.stringify(event));
20203
20097
  }
20204
20098
  ngOnInit() {
20205
20099
  this.capabilities = this.capabilityService.getCapabilities();
@@ -20227,26 +20121,146 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
20227
20121
  /**
20228
20122
  * Handles the `hasContentLoaded` event emitted by the `eo-media` component.
20229
20123
  * It sets the `showLoader` property to false, indicating that the content has finished loading.
20230
- *
20231
- * @param event - A boolean value representing the loading state of the content.
20232
- * It is expected to be `true` when the content is fully loaded.
20233
20124
  */
20234
- hasContentLoaded(event) {
20125
+ hasContentLoaded() {
20235
20126
  this.showLoader = false;
20236
20127
  }
20237
20128
  ngOnDestroy() {
20238
20129
  this.uploadRegistry.unregister(this.uploadTarget.id);
20239
20130
  }
20240
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectDetailsComponent, deps: [{ token: i2$1.Router }, { token: i2$1.ActivatedRoute }, { token: i1.SystemService }, { token: EmptyStateService }, { token: AgentService }, { token: i1.BackendService }, { token: i1.DmsService }, { token: SelectionService }, { token: ActionService }, { token: i1.CapabilitiesService }, { token: i1.UploadRegistryService }, { token: i1.EventService }, { token: i1.Config }, { token: i1.BpmService }, { token: i1.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
20241
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: { plugins: "plugins", reference: "reference", searchTerm: "searchTerm", enableCompare: "enableCompare", recyclebinTabs: "recyclebinTabs", versionComponentTabs: "versionComponentTabs", enableDiff: "enableDiff", enableSync: "enableSync", cacheLayout: "cacheLayout", emptyState: "emptyState", dmsParams: ["params", "dmsParams"], dmsParams2: ["params2", "dmsParams2"], dmsObject: ["item", "dmsObject"], dmsObject2: ["item2", "dmsObject2"], applySelection: "applySelection", parseDmsParams: "parseDmsParams" }, outputs: { hasContent: "hasContent" }, host: { properties: { "class.reference": "this.isReference", "attr.data-type": "this.dataType" } }, providers: [ContentPreviewService], viewQueries: [{ propertyName: "preview", first: true, predicate: ["viewer"], descendants: true }, { propertyName: "eoSplitTabs", first: true, predicate: SplitTabsComponent, descendants: true }, { propertyName: "favoriteIcon", first: true, predicate: FavoriteIconComponent, descendants: true }, { propertyName: "tabContainers", predicate: Tabs, descendants: true }], ngImport: i0, template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container>\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" [iconTitle]=\"('eo.list.refresh' | translate)\"\n [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\"\n [ngClass]=\"{'enabled': onEnableSync,'disable': !enableSync}\" [iconSrc]=\"'assets/_default/svg/ic_link.svg'\"\n [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\" (click)=\"onEnableSync = !onEnableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"!enableCompare && item.content?.id\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && item.content?.id && item.rights.edit && (agentIsConnected$ | async)\n && !item.isFinalized && item.data.yuvsigstatus !== 'signed' && item.data.yuvsigstatus !== 'inprocess' && !item.lock\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate: {due: item.resubmissions[0].due | localeDate, info: item.resubmissions[0].info}\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data?.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data?.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon stopped\"\n *ngIf=\"item.data?.yuvsigstatus === 'canceled'\n || item.data?.yuvsigstatus === 'revised' || item.data?.yuvsigstatus === 'error' || item.data?.yuvsigstatus === 'expired'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.stopped' | translate\"></eo-icon>\n @if (item.processcount > 0) {\n <eo-icon class=\"resubmission-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_bpm.svg'\"\n [iconTitle]=\"'eo.object.processcount.tooltip' | translate : {processcount: item?.processcount, text: processTooltip}\"></eo-icon>\n }\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [layoutSettingsID]=\"cacheLayout\" [config]=\"splitTabConfig\" *ngIf=\"!item2; else tplCompare\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" (hasContentLoaded)=\"hasContentLoaded($event)\"\n #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n\n <!-- plugin tabs -->\n <ng-template *ngFor=\"let p of plugins\" [yvcTab]=\"{id: p.id, label: p.id | translate}\">\n <eo-plugin [id]=\"p.id\" [parent]=\"this\"></eo-plugin>\n </ng-template>\n\n </yvc-split-tabs>\n\n <ng-template #tplCompare>\n <yvc-split-view>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item, baseparams, indexdata: indexDataPreview, searchTerm}\"></ng-container>\n </div>\n\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item2.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item: item2, baseparams: baseparams2, indexdata: indexDataPreview2, searchTerm, diff: {baseparams, baseparams2, indexdata: indexDataPreview, indexdata2: indexDataPreview2}}\"></ng-container>\n </div>\n </ng-template>\n\n </yvc-split-view>\n </ng-template>\n\n <ng-template #tplTabs let-item=\"item\" let-indexdata=\"indexdata\" let-baseparams=\"baseparams\"\n let-searchTerm=\"searchTerm\" let-diff=\"diff\">\n <yvc-tabs (tabChange)=\"onCompareTabChange($event)\" layoutSettingsID=\"{{'eo.object.details.compare.tabs' + (diff ? '.0' : '.1')}}\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexdata\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\" [formDisabled]=\"enableCompare\"></eo-object-form-edit>\n </ng-template>\n @if (!item?.isFolder){\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"true\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" #viewer></eo-media>\n </ng-template>\n <!-- signature -->\n @if (capabilities.signing){\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n }\n }\n <!-- changes -->\n <ng-template *ngIf=\"diff\"\n [yvcTab]=\"{id: 'changes', label: 'eo.object.changes.title' | translate}\">\n <eo-indexdata-summary [diff]=\"diff\" [enableVersions]=\"false\" [isChangesTab]=\"versionComponentTabs\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n\n\n </yvc-tabs>\n </ng-template>\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body .cmp-wrapper{height:100%;flex-flow:column;display:flex}:host .eo-body .cmp-wrapper .cmp-info{background-color:var(--panel-background);padding:2px}:host .eo-body .cmp-wrapper .cmp-info .version{margin:2px;border-radius:2px;background-color:var(--panel-background-lightgrey);border:1px dashed var(--panel-divider-color);color:var(--text-color-caption);text-align:center}:host .eo-body .cmp-wrapper .cmp-info .version>span{margin-inline-start:.5em;font-weight:700}:host .eo-body yvc-split-view,:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .sync-tab-btn.disable{display:none}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.stopped{background-color:var(--color-error)}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}: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 .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{flex:1;height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\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: "component", type: ObjectFormEditComponent, selector: "eo-object-form-edit", inputs: ["formDisabled", "dmsObject"], outputs: ["indexDataSaved"] }, { kind: "component", type: MediaComponent, selector: "eo-media", inputs: ["undockDisabled", "enableCloseBtn", "useVersion", "attachments", "searchTerm", "previewUri", "previewFile", "dmsObject"], outputs: ["hasContentLoaded"] }, { kind: "directive", type: ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { 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: RouterLinkDirective, selector: "a[routerLink]" }, { kind: "component", type: LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: IndexdataSummaryComponent, selector: "eo-indexdata-summary", inputs: ["baseparams", "enableVersions", "isChangesTab", "indexdata", "dmsObject", "diff"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: SignatureTabComponent, selector: "eo-signature-tab", inputs: ["dmsObject"] }, { kind: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { 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: i19.SplitTabsComponent, selector: "yvc-split-tabs", inputs: ["layoutSettingsID", "config", "panelOrder"], outputs: ["layoutSettingsChange"] }, { 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: "component", type: PluginComponent, selector: "eo-plugin", inputs: ["type", "id", "parent"] }, { kind: "component", type: ObjectHistoryComponent, selector: "eo-object-history", inputs: ["params"] }, { kind: "component", type: ObjectLinksComponent, selector: "eo-object-links", inputs: ["dmsObject"] }, { kind: "component", type: FavoriteIconComponent, selector: "eo-favorite-icon", inputs: ["item"] }, { kind: "component", type: EditIconComponent, selector: "eo-edit-icon", inputs: ["item"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: LocaleDatePipe, name: "localeDate" }] }); }
20131
+ getDmsParams(data) {
20132
+ return data ? { ...data, type: data.typeName || data.type } : null;
20133
+ }
20134
+ updateContent() {
20135
+ if (this.applySelection) {
20136
+ if (this.enableCompare) {
20137
+ this.selection
20138
+ .find(this.applySelection.in)
20139
+ .selection$
20140
+ .pipe(untilDestroyed(this), throttleTime(500))
20141
+ .subscribe((res) => {
20142
+ this.dmsParams = this.parseDmsParams(res[0]);
20143
+ this.dmsParams2 = this.parseDmsParams(res[1]);
20144
+ });
20145
+ return;
20146
+ }
20147
+ else {
20148
+ this.selection
20149
+ .find(this.applySelection.in)
20150
+ .focus$
20151
+ .pipe(untilDestroyed(this))
20152
+ .subscribe(res => {
20153
+ this.loadDmsObject(this.parseDmsParams(res)).subscribe((res2) => {
20154
+ // refreshing object details may result in an updated version of the object
20155
+ // so we'll use this trigger to also emitt those changes to other listening components
20156
+ if (this.item && res2 && (this.item.id === res2.id)) {
20157
+ this.eventService.trigger(EnaioEvent.DMS_OBJECT_UPDATED, res2);
20158
+ }
20159
+ this.dmsObject = res2;
20160
+ }, Utils.throw((error) => {
20161
+ this.uploadRegistry.unregister(this.uploadTarget.id);
20162
+ return this.onHasError(true, true, false);
20163
+ }));
20164
+ });
20165
+ }
20166
+ }
20167
+ }
20168
+ prepareIndexDataPreview(item, formData) {
20169
+ const { id, data, type, created, modified, content, contentFileName, contentFileSize, version } = item;
20170
+ return this.system
20171
+ .getObjectTypeForm(type.name, 'EDIT')
20172
+ .pipe(map(form => {
20173
+ let indexDataPreview = {
20174
+ form,
20175
+ data: formData || data
20176
+ };
20177
+ let baseparams = {
20178
+ id,
20179
+ type: type.name,
20180
+ createdOn: new Date(created.on),
20181
+ modifiedOn: new Date(modified.on),
20182
+ createdBy: `${created.by.title} (${created.by.name})`,
20183
+ modifiedBy: `${modified.by.title} (${modified.by.name})`,
20184
+ contentFileName: contentFileName ? contentFileName : null,
20185
+ contentFileSize: contentFileSize ? Number(contentFileSize) : null,
20186
+ version: version || 0,
20187
+ mimeGroup: content ? content.contents ? content.contents[0].mimegroup : null : null,
20188
+ digest: content ? content.contents ? content.contents[0].digest : null : null,
20189
+ contentId: content ? content.contents ? content.id : null : null,
20190
+ mimeType: content ? content.contents ? content.contents[0].mimetype : null : null,
20191
+ };
20192
+ return { indexDataPreview, baseparams };
20193
+ }));
20194
+ }
20195
+ onHasError(hasError = false, nodmsobject = false, showLoader = false) {
20196
+ this.hasError = hasError;
20197
+ this.nodmsobject = nodmsobject;
20198
+ this.showLoader = showLoader;
20199
+ this.hasContent.emit(!hasError);
20200
+ }
20201
+ createSubscriptionIconTooltip() {
20202
+ let tooltip = '';
20203
+ const modes = this.item.subscriptions.map(subscription => subscription.mode);
20204
+ const subscribedToAllChanges = modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED)
20205
+ || (modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED) && modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED));
20206
+ const subscribedToMetaChangesOnly = modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED)
20207
+ && !modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED)
20208
+ && !modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED);
20209
+ const subscribedToContentChangesOnly = modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED)
20210
+ && !modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED)
20211
+ && !modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED);
20212
+ if (subscribedToAllChanges) {
20213
+ tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.allChanges');
20214
+ }
20215
+ else if (subscribedToMetaChangesOnly) {
20216
+ tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.meta');
20217
+ }
20218
+ else if (subscribedToContentChangesOnly) {
20219
+ tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.content');
20220
+ }
20221
+ return tooltip;
20222
+ }
20223
+ setupCapabilities() {
20224
+ const block = this.capabilities && !this.capabilities.signing ? ['signature'] : [];
20225
+ const cachedOrder = this.cacheLayout && JSON.parse(localStorage.getItem(this.cacheLayout));
20226
+ const primary = cachedOrder?.primary?.tabs;
20227
+ const secondary = cachedOrder?.secondary?.tabs;
20228
+ const pri = this.panelOrder.master || [];
20229
+ const sec = this.panelOrder.slave || [];
20230
+ const plugins = this.plugins?.map(pl => pl.id) || [];
20231
+ this.tabs = [...pri, ...sec, ...plugins].filter(t => !block.includes(t));
20232
+ if (this.versionComponentTabs) {
20233
+ if (this.item?.isFolder) {
20234
+ this.tabs = this.tabs.filter(tab => ['summary', 'indexdata'].includes(tab));
20235
+ }
20236
+ else {
20237
+ this.tabs = this.tabs.filter(tab => ['summary', 'indexdata', 'preview', 'signature'].includes(tab));
20238
+ }
20239
+ }
20240
+ const diff = this.tabs.filter(t => !primary?.includes(t) && !secondary?.includes(t));
20241
+ const pTabsTemp = [...pri, ...plugins.filter(pl => !pri.includes(pl))];
20242
+ const pTabs = primary ? [...primary, ...diff] : pTabsTemp;
20243
+ const sTabs = secondary || sec;
20244
+ const p = pTabs.filter(t => this.tabs.includes(t));
20245
+ const s = sTabs.filter(t => this.tabs.includes(t));
20246
+ this.splitTabConfig = {
20247
+ primary: { tabs: p, active: p.includes(cachedOrder?.primary?.active) ? cachedOrder?.primary?.active : p[0] || '' },
20248
+ secondary: { tabs: s, active: s.includes(cachedOrder?.secondary?.active) ? cachedOrder?.secondary?.active : s[0] || '' },
20249
+ split: cachedOrder?.split
20250
+ };
20251
+ // force save of layout settings to include plugin tabs
20252
+ this.onLayoutSettingsChanged(this.splitTabConfig);
20253
+ }
20254
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectDetailsComponent, deps: [{ token: i2$1.Router }, { token: i2$1.ActivatedRoute }, { token: i1.SystemService }, { token: EmptyStateService }, { token: AgentService }, { token: i1.BackendService }, { token: i1.DmsService }, { token: SelectionService }, { token: ActionService }, { token: i1.CapabilitiesService }, { token: i1.UploadRegistryService }, { token: i1.EventService }, { token: i1.Config }, { token: i1.BpmService }, { token: i1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: i1.UserService }], target: i0.ɵɵFactoryTarget.Component }); }
20255
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: { plugins: "plugins", searchTerm: "searchTerm", enableCompare: "enableCompare", recyclebinTabs: "recyclebinTabs", versionComponentTabs: "versionComponentTabs", enableDiff: "enableDiff", enableSync: "enableSync", cacheLayout: "cacheLayout", applySelection: "applySelection", parseDmsParams: "parseDmsParams", reference: "reference", emptyState: "emptyState", dmsParams: ["params", "dmsParams"], dmsParams2: ["params2", "dmsParams2"], dmsObject: ["item", "dmsObject"], dmsObject2: ["item2", "dmsObject2"] }, outputs: { hasContent: "hasContent" }, host: { properties: { "class.reference": "this.isReference", "attr.data-type": "this.dataType" } }, providers: [ContentPreviewService], viewQueries: [{ propertyName: "preview", first: true, predicate: ["viewer"], descendants: true }, { propertyName: "eoSplitTabs", first: true, predicate: SplitTabsComponent, descendants: true }, { propertyName: "favoriteIcon", first: true, predicate: FavoriteIconComponent, descendants: true }, { propertyName: "tabContainers", predicate: Tabs, descendants: true }], ngImport: i0, template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container>\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" [iconTitle]=\"('eo.list.refresh' | translate)\"\n [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\"\n [ngClass]=\"{'enabled': onEnableSync,'disable': !enableSync}\" [iconSrc]=\"'assets/_default/svg/ic_link.svg'\"\n [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\" (click)=\"onEnableSync = !onEnableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"downloadAllowed && !enableCompare && item.content?.id\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && item.content?.id && item.rights.edit && (agentIsConnected$ | async)\n && !item.isFinalized && item.data.yuvsigstatus !== 'signed' && item.data.yuvsigstatus !== 'inprocess' && !item.lock\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate: {due: item.resubmissions[0].due | localeDate, info: item.resubmissions[0].info}\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data?.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data?.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon stopped\"\n *ngIf=\"item.data?.yuvsigstatus === 'canceled'\n || item.data?.yuvsigstatus === 'revised' || item.data?.yuvsigstatus === 'error' || item.data?.yuvsigstatus === 'expired'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.stopped' | translate\"></eo-icon>\n @if (item.processcount > 0) {\n <eo-icon class=\"resubmission-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_bpm.svg'\"\n [iconTitle]=\"'eo.object.processcount.tooltip' | translate : {processcount: item?.processcount, text: processTooltip}\"></eo-icon>\n }\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [layoutSettingsID]=\"cacheLayout\" [config]=\"splitTabConfig\" *ngIf=\"!item2; else tplCompare\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" (hasContentLoaded)=\"hasContentLoaded()\"\n #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n\n <!-- plugin tabs -->\n <ng-template *ngFor=\"let p of plugins\" [yvcTab]=\"{id: p.id, label: p.id | translate}\">\n <eo-plugin [id]=\"p.id\" [parent]=\"this\"></eo-plugin>\n </ng-template>\n\n </yvc-split-tabs>\n\n <ng-template #tplCompare>\n <yvc-split-view>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item, baseparams, indexdata: indexDataPreview, searchTerm}\"></ng-container>\n </div>\n\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item2.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item: item2, baseparams: baseparams2, indexdata: indexDataPreview2, searchTerm, diff: {baseparams, baseparams2, indexdata: indexDataPreview, indexdata2: indexDataPreview2}}\"></ng-container>\n </div>\n </ng-template>\n\n </yvc-split-view>\n </ng-template>\n\n <ng-template #tplTabs let-item=\"item\" let-indexdata=\"indexdata\" let-baseparams=\"baseparams\"\n let-searchTerm=\"searchTerm\" let-diff=\"diff\">\n <yvc-tabs (tabChange)=\"onCompareTabChange($event)\" layoutSettingsID=\"{{'eo.object.details.compare.tabs' + (diff ? '.0' : '.1')}}\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexdata\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\" [formDisabled]=\"enableCompare\"></eo-object-form-edit>\n </ng-template>\n @if (!item?.isFolder){\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"true\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" #viewer></eo-media>\n </ng-template>\n <!-- signature -->\n @if (capabilities.signing){\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n }\n }\n <!-- changes -->\n <ng-template *ngIf=\"diff\"\n [yvcTab]=\"{id: 'changes', label: 'eo.object.changes.title' | translate}\">\n <eo-indexdata-summary [diff]=\"diff\" [enableVersions]=\"false\" [isChangesTab]=\"versionComponentTabs\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n\n\n </yvc-tabs>\n </ng-template>\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body .cmp-wrapper{height:100%;flex-flow:column;display:flex}:host .eo-body .cmp-wrapper .cmp-info{background-color:var(--panel-background);padding:2px}:host .eo-body .cmp-wrapper .cmp-info .version{margin:2px;border-radius:2px;background-color:var(--panel-background-lightgrey);border:1px dashed var(--panel-divider-color);color:var(--text-color-caption);text-align:center}:host .eo-body .cmp-wrapper .cmp-info .version>span{margin-inline-start:.5em;font-weight:700}:host .eo-body yvc-split-view,:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .sync-tab-btn.disable{display:none}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.stopped{background-color:var(--color-error)}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}: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 .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{flex:1;height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\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: "component", type: ObjectFormEditComponent, selector: "eo-object-form-edit", inputs: ["formDisabled", "dmsObject"], outputs: ["indexDataSaved"] }, { kind: "component", type: MediaComponent, selector: "eo-media", inputs: ["undockDisabled", "enableCloseBtn", "useVersion", "attachments", "searchTerm", "previewUri", "previewFile", "dmsObject"], outputs: ["hasContentLoaded"] }, { kind: "directive", type: ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { 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: RouterLinkDirective, selector: "a[routerLink]" }, { kind: "component", type: LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: IndexdataSummaryComponent, selector: "eo-indexdata-summary", inputs: ["baseparams", "enableVersions", "isChangesTab", "indexdata", "dmsObject", "diff"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: SignatureTabComponent, selector: "eo-signature-tab", inputs: ["dmsObject"] }, { kind: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { 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: i19.SplitTabsComponent, selector: "yvc-split-tabs", inputs: ["layoutSettingsID", "config", "panelOrder"], outputs: ["layoutSettingsChange"] }, { 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: "component", type: PluginComponent, selector: "eo-plugin", inputs: ["type", "id", "parent"] }, { kind: "component", type: ObjectHistoryComponent, selector: "eo-object-history", inputs: ["params"] }, { kind: "component", type: ObjectLinksComponent, selector: "eo-object-links", inputs: ["dmsObject"] }, { kind: "component", type: FavoriteIconComponent, selector: "eo-favorite-icon", inputs: ["item"] }, { kind: "component", type: EditIconComponent, selector: "eo-edit-icon", inputs: ["item"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: LocaleDatePipe, name: "localeDate" }] }); }
20242
20256
  };
20243
20257
  ObjectDetailsComponent = __decorate([
20244
20258
  UntilDestroy()
20245
20259
  ], ObjectDetailsComponent);
20246
20260
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectDetailsComponent, decorators: [{
20247
20261
  type: Component,
20248
- args: [{ selector: 'eo-object-details', providers: [ContentPreviewService], template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container>\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" [iconTitle]=\"('eo.list.refresh' | translate)\"\n [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\"\n [ngClass]=\"{'enabled': onEnableSync,'disable': !enableSync}\" [iconSrc]=\"'assets/_default/svg/ic_link.svg'\"\n [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\" (click)=\"onEnableSync = !onEnableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"!enableCompare && item.content?.id\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && item.content?.id && item.rights.edit && (agentIsConnected$ | async)\n && !item.isFinalized && item.data.yuvsigstatus !== 'signed' && item.data.yuvsigstatus !== 'inprocess' && !item.lock\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate: {due: item.resubmissions[0].due | localeDate, info: item.resubmissions[0].info}\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data?.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data?.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon stopped\"\n *ngIf=\"item.data?.yuvsigstatus === 'canceled'\n || item.data?.yuvsigstatus === 'revised' || item.data?.yuvsigstatus === 'error' || item.data?.yuvsigstatus === 'expired'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.stopped' | translate\"></eo-icon>\n @if (item.processcount > 0) {\n <eo-icon class=\"resubmission-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_bpm.svg'\"\n [iconTitle]=\"'eo.object.processcount.tooltip' | translate : {processcount: item?.processcount, text: processTooltip}\"></eo-icon>\n }\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [layoutSettingsID]=\"cacheLayout\" [config]=\"splitTabConfig\" *ngIf=\"!item2; else tplCompare\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" (hasContentLoaded)=\"hasContentLoaded($event)\"\n #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n\n <!-- plugin tabs -->\n <ng-template *ngFor=\"let p of plugins\" [yvcTab]=\"{id: p.id, label: p.id | translate}\">\n <eo-plugin [id]=\"p.id\" [parent]=\"this\"></eo-plugin>\n </ng-template>\n\n </yvc-split-tabs>\n\n <ng-template #tplCompare>\n <yvc-split-view>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item, baseparams, indexdata: indexDataPreview, searchTerm}\"></ng-container>\n </div>\n\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item2.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item: item2, baseparams: baseparams2, indexdata: indexDataPreview2, searchTerm, diff: {baseparams, baseparams2, indexdata: indexDataPreview, indexdata2: indexDataPreview2}}\"></ng-container>\n </div>\n </ng-template>\n\n </yvc-split-view>\n </ng-template>\n\n <ng-template #tplTabs let-item=\"item\" let-indexdata=\"indexdata\" let-baseparams=\"baseparams\"\n let-searchTerm=\"searchTerm\" let-diff=\"diff\">\n <yvc-tabs (tabChange)=\"onCompareTabChange($event)\" layoutSettingsID=\"{{'eo.object.details.compare.tabs' + (diff ? '.0' : '.1')}}\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexdata\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\" [formDisabled]=\"enableCompare\"></eo-object-form-edit>\n </ng-template>\n @if (!item?.isFolder){\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"true\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" #viewer></eo-media>\n </ng-template>\n <!-- signature -->\n @if (capabilities.signing){\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n }\n }\n <!-- changes -->\n <ng-template *ngIf=\"diff\"\n [yvcTab]=\"{id: 'changes', label: 'eo.object.changes.title' | translate}\">\n <eo-indexdata-summary [diff]=\"diff\" [enableVersions]=\"false\" [isChangesTab]=\"versionComponentTabs\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n\n\n </yvc-tabs>\n </ng-template>\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body .cmp-wrapper{height:100%;flex-flow:column;display:flex}:host .eo-body .cmp-wrapper .cmp-info{background-color:var(--panel-background);padding:2px}:host .eo-body .cmp-wrapper .cmp-info .version{margin:2px;border-radius:2px;background-color:var(--panel-background-lightgrey);border:1px dashed var(--panel-divider-color);color:var(--text-color-caption);text-align:center}:host .eo-body .cmp-wrapper .cmp-info .version>span{margin-inline-start:.5em;font-weight:700}:host .eo-body yvc-split-view,:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .sync-tab-btn.disable{display:none}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.stopped{background-color:var(--color-error)}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}: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 .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{flex:1;height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\n"] }]
20249
- }], ctorParameters: () => [{ type: i2$1.Router }, { type: i2$1.ActivatedRoute }, { type: i1.SystemService }, { type: EmptyStateService }, { type: AgentService }, { type: i1.BackendService }, { type: i1.DmsService }, { type: SelectionService }, { type: ActionService }, { type: i1.CapabilitiesService }, { type: i1.UploadRegistryService }, { type: i1.EventService }, { type: i1.Config }, { type: i1.BpmService }, { type: i1.TranslateService }, { type: i0.ChangeDetectorRef }], propDecorators: { preview: [{
20262
+ args: [{ selector: 'eo-object-details', providers: [ContentPreviewService], template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container>\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" [iconTitle]=\"('eo.list.refresh' | translate)\"\n [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\"\n [ngClass]=\"{'enabled': onEnableSync,'disable': !enableSync}\" [iconSrc]=\"'assets/_default/svg/ic_link.svg'\"\n [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\" (click)=\"onEnableSync = !onEnableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"downloadAllowed && !enableCompare && item.content?.id\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && item.content?.id && item.rights.edit && (agentIsConnected$ | async)\n && !item.isFinalized && item.data.yuvsigstatus !== 'signed' && item.data.yuvsigstatus !== 'inprocess' && !item.lock\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate: {due: item.resubmissions[0].due | localeDate, info: item.resubmissions[0].info}\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data?.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data?.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon stopped\"\n *ngIf=\"item.data?.yuvsigstatus === 'canceled'\n || item.data?.yuvsigstatus === 'revised' || item.data?.yuvsigstatus === 'error' || item.data?.yuvsigstatus === 'expired'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.stopped' | translate\"></eo-icon>\n @if (item.processcount > 0) {\n <eo-icon class=\"resubmission-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_bpm.svg'\"\n [iconTitle]=\"'eo.object.processcount.tooltip' | translate : {processcount: item?.processcount, text: processTooltip}\"></eo-icon>\n }\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [layoutSettingsID]=\"cacheLayout\" [config]=\"splitTabConfig\" *ngIf=\"!item2; else tplCompare\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" (hasContentLoaded)=\"hasContentLoaded()\"\n #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n\n <!-- plugin tabs -->\n <ng-template *ngFor=\"let p of plugins\" [yvcTab]=\"{id: p.id, label: p.id | translate}\">\n <eo-plugin [id]=\"p.id\" [parent]=\"this\"></eo-plugin>\n </ng-template>\n\n </yvc-split-tabs>\n\n <ng-template #tplCompare>\n <yvc-split-view>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item, baseparams, indexdata: indexDataPreview, searchTerm}\"></ng-container>\n </div>\n\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item2.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item: item2, baseparams: baseparams2, indexdata: indexDataPreview2, searchTerm, diff: {baseparams, baseparams2, indexdata: indexDataPreview, indexdata2: indexDataPreview2}}\"></ng-container>\n </div>\n </ng-template>\n\n </yvc-split-view>\n </ng-template>\n\n <ng-template #tplTabs let-item=\"item\" let-indexdata=\"indexdata\" let-baseparams=\"baseparams\"\n let-searchTerm=\"searchTerm\" let-diff=\"diff\">\n <yvc-tabs (tabChange)=\"onCompareTabChange($event)\" layoutSettingsID=\"{{'eo.object.details.compare.tabs' + (diff ? '.0' : '.1')}}\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexdata\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\" [formDisabled]=\"enableCompare\"></eo-object-form-edit>\n </ng-template>\n @if (!item?.isFolder){\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"true\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" #viewer></eo-media>\n </ng-template>\n <!-- signature -->\n @if (capabilities.signing){\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n }\n }\n <!-- changes -->\n <ng-template *ngIf=\"diff\"\n [yvcTab]=\"{id: 'changes', label: 'eo.object.changes.title' | translate}\">\n <eo-indexdata-summary [diff]=\"diff\" [enableVersions]=\"false\" [isChangesTab]=\"versionComponentTabs\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n\n\n </yvc-tabs>\n </ng-template>\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body .cmp-wrapper{height:100%;flex-flow:column;display:flex}:host .eo-body .cmp-wrapper .cmp-info{background-color:var(--panel-background);padding:2px}:host .eo-body .cmp-wrapper .cmp-info .version{margin:2px;border-radius:2px;background-color:var(--panel-background-lightgrey);border:1px dashed var(--panel-divider-color);color:var(--text-color-caption);text-align:center}:host .eo-body .cmp-wrapper .cmp-info .version>span{margin-inline-start:.5em;font-weight:700}:host .eo-body yvc-split-view,:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .sync-tab-btn.disable{display:none}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.stopped{background-color:var(--color-error)}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}: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 .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{flex:1;height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\n"] }]
20263
+ }], ctorParameters: () => [{ type: i2$1.Router }, { type: i2$1.ActivatedRoute }, { type: i1.SystemService }, { type: EmptyStateService }, { type: AgentService }, { type: i1.BackendService }, { type: i1.DmsService }, { type: SelectionService }, { type: ActionService }, { type: i1.CapabilitiesService }, { type: i1.UploadRegistryService }, { type: i1.EventService }, { type: i1.Config }, { type: i1.BpmService }, { type: i1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: i1.UserService }], propDecorators: { preview: [{
20250
20264
  type: ViewChild,
20251
20265
  args: ['viewer']
20252
20266
  }], eoSplitTabs: [{
@@ -20263,8 +20277,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
20263
20277
  }], isReference: [{
20264
20278
  type: HostBinding,
20265
20279
  args: ['class.reference']
20266
- }], reference: [{
20267
- type: Input
20268
20280
  }], searchTerm: [{
20269
20281
  type: Input
20270
20282
  }], enableCompare: [{
@@ -20279,6 +20291,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
20279
20291
  type: Input
20280
20292
  }], cacheLayout: [{
20281
20293
  type: Input
20294
+ }], applySelection: [{
20295
+ type: Input
20296
+ }], parseDmsParams: [{
20297
+ type: Input
20298
+ }], hasContent: [{
20299
+ type: Output
20300
+ }], dataType: [{
20301
+ type: HostBinding,
20302
+ args: ['attr.data-type']
20303
+ }], reference: [{
20304
+ type: Input
20282
20305
  }], emptyState: [{
20283
20306
  type: Input
20284
20307
  }], dmsParams: [{
@@ -20293,15 +20316,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
20293
20316
  }], dmsObject2: [{
20294
20317
  type: Input,
20295
20318
  args: ['item2']
20296
- }], applySelection: [{
20297
- type: Input
20298
- }], parseDmsParams: [{
20299
- type: Input
20300
- }], hasContent: [{
20301
- type: Output
20302
- }], dataType: [{
20303
- type: HostBinding,
20304
- args: ['attr.data-type']
20305
20319
  }] } });
20306
20320
 
20307
20321
  let RecyclebinDetailsComponent = class RecyclebinDetailsComponent {
@@ -21795,456 +21809,163 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
21795
21809
  }]
21796
21810
  }] });
21797
21811
 
21798
- class GridFilter {
21799
- static operator(property, filter) {
21800
- let firstValue = Array.isArray(filter) ? filter : (filter.filter || filter.dateFrom);
21801
- const secondValue = filter.filterTo || filter.dateTo;
21802
- const op = Array.isArray(firstValue) ? SearchFilter.OPERATOR.IN :
21803
- filter.type === SimpleFilter.GREATER_THAN ? SearchFilter.OPERATOR.GREATER_THAN :
21804
- filter.type === SimpleFilter.GREATER_THAN_OR_EQUAL ? SearchFilter.OPERATOR.GREATER_OR_EQUAL :
21805
- filter.type === SimpleFilter.LESS_THAN ? SearchFilter.OPERATOR.LESS_THAN :
21806
- filter.type === SimpleFilter.LESS_THAN_OR_EQUAL ? SearchFilter.OPERATOR.LESS_OR_EQUAL :
21807
- filter.type === SimpleFilter.IN_RANGE ? SearchFilter.OPERATOR.INTERVAL_INCLUDE_BOTH :
21808
- SearchFilter.OPERATOR.EQUAL;
21809
- firstValue = firstValue && typeof firstValue === 'string' ? firstValue.replace(/\*/g, '\\*') : firstValue; // wildcard needs to be escaped
21810
- firstValue = filter.type === SimpleFilter.CONTAINS ? `*${firstValue}*` :
21811
- filter.type === SimpleFilter.STARTS_WITH ? `${firstValue}*` :
21812
- filter.type === SimpleFilter.ENDS_WITH ? `*${firstValue}` :
21813
- op === SearchFilter.OPERATOR.IN ? firstValue.filter(f => f !== '') :
21814
- firstValue;
21815
- return new SearchFilter(property, op, firstValue, secondValue, filter.filterType === 'date' ? { time: !!filter.withTime } : undefined);
21812
+ class ChangePasswordFormComponent {
21813
+ constructor(fb, userService, translate, toaster) {
21814
+ this.fb = fb;
21815
+ this.userService = userService;
21816
+ this.translate = translate;
21817
+ this.toaster = toaster;
21818
+ this.userRegex = '';
21819
+ this.onFormSumbit = new EventEmitter();
21820
+ this.passwordIsVisible = false;
21821
+ this.passwordValidation = { type: 'valid', amount: null };
21822
+ this.generateForm();
21816
21823
  }
21817
- }
21818
-
21819
- var ResultListComponent_1;
21820
- let ResultListComponent = class ResultListComponent {
21821
- static { ResultListComponent_1 = this; }
21822
- static { this.COLUMNS_DEFINITION = 'eo.framework.cache.columns.definition'; }
21823
- set query(query) {
21824
- this.storedQuery = undefined;
21825
- if (!query) {
21826
- this.invalidQuery();
21827
- }
21828
- else {
21829
- if (query.name) {
21830
- this.storedQueriesService.getStoredQueries$()
21831
- .pipe(untilDestroyed(this))
21832
- .subscribe((queriesSubscription) => {
21833
- this.storedQuery = queriesSubscription.queries.filter(q => q.name === query.name)[0];
21834
- });
21824
+ generateForm() {
21825
+ const { compose, required, minLength } = Validators;
21826
+ this.changePasswordForm = this.fb.group({
21827
+ currentPassword: ['', compose([required, minLength(1)])],
21828
+ password: ['', compose([required, minLength(1)])],
21829
+ confirmPassword: ['', compose([required, minLength(1)])]
21830
+ }, {
21831
+ validator: compose([
21832
+ this.newPasswordValidator('currentPassword', 'password'),
21833
+ this.matchingPasswordsValidator('password', 'confirmPassword')
21834
+ ])
21835
+ });
21836
+ this.onChanges();
21837
+ }
21838
+ newPasswordValidator(current, password) {
21839
+ return (group) => {
21840
+ if (group.controls[current].value !== group.controls[password].value) {
21841
+ return null;
21835
21842
  }
21836
- this._query = this.searchService.buildQuery(query);
21837
- if (this._query) {
21838
- this.defaultQuery = this.searchService.buildQuery(this._query.getQueryJson());
21839
- this.appSearchService.setQuery(this.defaultQuery);
21840
- this.appSearchService.aggregate();
21841
- const config = this.searchService.getResultFieldDefinitionConfig(this.query);
21842
- this.configType = config.type;
21843
- this.configContext = config.contextType;
21844
- this.showLoader = true;
21845
- this.searchService
21846
- .getChunkedResult(this._query, 0, this.VIRTUAL_LIST_CHUNK_SIZE)
21847
- .subscribe(result => {
21848
- this.showLoader = false;
21849
- this.clearQuery(this.clearAfterExecute);
21850
- this.searchResult = result;
21851
- }, Utils.throw(() => {
21852
- this.showLoader = false;
21853
- this.clearQuery(true);
21854
- this.invalidQuery();
21855
- }));
21856
- this.querySubtitle = '';
21857
- for (let i = 0; i < this.query.types.length; i++) {
21858
- this.querySubtitle += this.query.types[i].label;
21859
- if (i !== this.query.types.length - 1) {
21860
- this.querySubtitle += ', ';
21861
- }
21862
- }
21843
+ return { 'SAME_PASSWORD': true };
21844
+ };
21845
+ }
21846
+ matchingPasswordsValidator(password, confirm) {
21847
+ return (group) => {
21848
+ if (group.controls[password].value === group.controls[confirm].value) {
21849
+ return null;
21863
21850
  }
21864
- else {
21865
- this.invalidQuery();
21851
+ return { 'matchingPasswords': true };
21852
+ };
21853
+ }
21854
+ onChanges() {
21855
+ this.changePasswordForm.valueChanges
21856
+ .subscribe(value => {
21857
+ if (value.password) {
21858
+ this.passwordValidation = this.userService.validatePassword(value.password);
21866
21859
  }
21867
- }
21860
+ return this.matchingPasswords;
21861
+ });
21868
21862
  }
21869
- get query() {
21870
- return this._query;
21871
- }
21872
- set searchResult(result) {
21873
- // todo: backend should resolve query.fields and return config in specific order
21874
- const _fields = result.fields ? of(result.fields) :
21875
- this.searchService.fetchResultFieldDefinition(this.configType, this.configContext, 'ALL');
21876
- _fields.subscribe(fields => {
21877
- if (fields && this.query && this.query.fields && this.query.fields.length) {
21878
- fields.elements = this.query.fields.map(f => fields.elements.find(e => f === e.hitname));
21879
- }
21880
- result.fields = fields || new FieldDefinition();
21881
- this._result = result;
21882
- this.processResults(this._result);
21883
- });
21884
- }
21885
- get searchResult() {
21886
- return this._result;
21887
- }
21888
- constructor(config, translate, gridApi, backend, appSearchService, searchService, eventService, storageService, storedQueriesService, router) {
21889
- this.config = config;
21890
- this.translate = translate;
21891
- this.gridApi = gridApi;
21892
- this.backend = backend;
21893
- this.appSearchService = appSearchService;
21894
- this.searchService = searchService;
21895
- this.eventService = eventService;
21896
- this.storageService = storageService;
21897
- this.storedQueriesService = storedQueriesService;
21898
- this.router = router;
21899
- this.csvLoadingSpinnerVisibility = false;
21900
- this.visibleConfig = false;
21901
- this.showLoader = false;
21902
- this.limitedList = false;
21903
- this.resultGridOptions = {};
21904
- this.settings = {};
21905
- this.querySubtitle = '';
21906
- this.savedSearchClicked = false;
21907
- this.showWarnExportCSVThresholdDialog = false;
21908
- this.title = '';
21909
- this.emptyMessage = '';
21910
- this.selectFirst = true;
21911
- this.hasIcon = false;
21912
- this.reference = false;
21913
- this.onSelectionChanged = new EventEmitter();
21914
- this.onFocusChanged = new EventEmitter();
21915
- this.onDoubleClick = new EventEmitter();
21916
- this.onContextMenu = new EventEmitter();
21917
- this.onCountChanged = new EventEmitter();
21918
- this.onRefresh = new EventEmitter();
21919
- this.onResult = new EventEmitter();
21920
- this.onQueryInvalid = new EventEmitter();
21921
- // shortcut actions
21922
- this.shortcuts = {
21923
- id: 'eo.workspace.widget.hitlist.label',
21924
- label: this.translate.instant('eo.workspace.widget.hitlist.label'),
21925
- labelKey: 'eo.workspace.widget.hitlist.label',
21926
- actions: [{
21927
- name: this.translate.instant('eo.column.config.title'),
21928
- nameKey: 'eo.column.config.title',
21929
- shortcut: new Shortcut('P', false, false),
21930
- onExecuteAction: () => {
21931
- this.visibleConfig = !this.visibleConfig;
21932
- },
21933
- isHidden: () => {
21934
- return false;
21935
- }
21936
- },
21937
- {
21938
- name: this.translate.instant('eo.resultlist.export.csv'),
21939
- nameKey: 'eo.resultlist.export.csv',
21940
- shortcut: new Shortcut('X', false, false),
21941
- onExecuteAction: () => {
21942
- this.exportCSV();
21943
- },
21944
- isHidden: () => {
21945
- return false;
21946
- }
21947
- },
21948
- {
21949
- name: this.translate.instant('eo.object.actions.title'),
21950
- nameKey: 'eo.object.actions.title',
21951
- shortcut: new Shortcut('M', false, false),
21952
- onExecuteAction: () => {
21953
- this.list.showActions();
21954
- },
21955
- isHidden: () => {
21956
- return false;
21957
- }
21958
- },
21959
- {
21960
- name: this.translate.instant('eo.list.refresh'),
21961
- nameKey: 'eo.list.refresh',
21962
- shortcut: new Shortcut('R', false, false),
21963
- onExecuteAction: () => {
21964
- this.refreshGrid();
21965
- },
21966
- isHidden: () => {
21967
- return false;
21968
- }
21969
- }]
21970
- };
21971
- this.VIRTUAL_LIST_CHUNK_SIZE = this.config.getRaw('search.limit');
21972
- this.resolveReferencesCsv = this.config.getRaw('search.resolveReferencesCSV') || false;
21973
- this.resolveReferencesCsvThreshold = this.config.getRaw('search.resolveReferencesCSVThreshold') || 10000;
21974
- this._cachedColumns = this.storageService.getItem(ResultListComponent_1.COLUMNS_DEFINITION) || [];
21863
+ showPasswords() {
21864
+ this.passwordIsVisible = !this.passwordIsVisible;
21975
21865
  }
21976
- clearQuery(clearAfterExecute) {
21977
- if (clearAfterExecute) {
21978
- this.appSearchService.clearQuery();
21866
+ get passwordIsNew() {
21867
+ const { errors, controls } = this.changePasswordForm;
21868
+ let passwordIsNewError = false;
21869
+ if (errors) {
21870
+ const currentPassword = controls.currentPassword.touched && controls.currentPassword.dirty;
21871
+ const password = controls.password.touched && controls.password.dirty;
21872
+ passwordIsNewError = errors.SAME_PASSWORD && currentPassword && password;
21979
21873
  }
21874
+ return passwordIsNewError;
21980
21875
  }
21981
- invalidQuery() {
21982
- this.onQueryInvalid.emit();
21983
- }
21984
- ngOnInit() {
21985
- this.eventService
21986
- .on(EnaioEvent.DMS_OBJECT_DELETED)
21987
- .pipe(untilDestroyed(this))
21988
- .subscribe((res) => {
21989
- if (this.grid) {
21990
- this.grid.updateRows(this.backend.update([res.data], [{ id: res.data.id }]));
21991
- }
21992
- });
21993
- this.eventService
21994
- .on(EnaioEvent.DMS_OBJECT_UPDATED)
21995
- .pipe(untilDestroyed(this))
21996
- .subscribe((res) => {
21997
- if (this.grid) {
21998
- this.updateRow(res.data.id, res.data.data);
21999
- }
22000
- });
22001
- }
22002
- ngAfterViewInit() {
22003
- setTimeout(() => {
22004
- if (this.grid && this._query) {
22005
- this._query.sortOptions = (this.grid.api.getColumnState() || [])
22006
- .map(model => new SortOption(GridService.qnameFormatter(model.colId + this.postfixSort(model.colId)), model.sort));
22007
- this.query = this._query;
22008
- }
22009
- }, 200);
22010
- }
22011
- updateRow(id, data) {
22012
- const matchRow = this.resultGridOptions.rowData.find((r) => r.id === id);
22013
- const systemFields = ['created', 'creatortitle', 'modified', 'modifiertitle', 'title', 'description', 'type', 'version', 'filesize', 'filename', 'mimetypegroup', 'mimetype'];
22014
- let missingColumns = this.resultGridOptions.columnDefs;
22015
- if (matchRow) {
22016
- Object.keys(matchRow).forEach((k) => {
22017
- if (data.hasOwnProperty(k)) {
22018
- if (data.hasOwnProperty(k + '_meta')) {
22019
- // if it is an org field, it will have a title to show, otherwise it is a codesystem and we show the label
22020
- matchRow[k] = data[k + '_meta'].title ? data[k + '_meta'].title : data[k + '_meta'].label;
22021
- }
22022
- else {
22023
- matchRow[k] = data[k];
22024
- }
22025
- missingColumns = missingColumns.filter((column) => column.field !== k);
22026
- }
22027
- else if (data.hasOwnProperty(k.split('.')[1])) {
22028
- // some technical names have the object type as a prefix, we have to get rid of it
22029
- const kSplit = k.split('.')[1];
22030
- if (data.hasOwnProperty(kSplit + '_meta')) {
22031
- matchRow[k] = data[kSplit + '_meta'].title ? data[kSplit + '_meta'].title : data[kSplit + '_meta'].label;
22032
- }
22033
- else {
22034
- matchRow[k] = data[kSplit];
22035
- }
22036
- missingColumns = missingColumns.filter((column) => column.field !== k);
22037
- }
22038
- });
22039
- // we need to iterate through the not already applied columns, which were changed from null or to null
22040
- missingColumns.forEach((column) => {
22041
- if (data.hasOwnProperty(column.field)) {
22042
- matchRow[column.field] = data[column.field];
22043
- }
22044
- else if (data.hasOwnProperty(column.field.split('.')[1])) {
22045
- matchRow[column.field] = data[column.field.split('.')[1]];
22046
- }
22047
- else {
22048
- if (!systemFields.includes(column.field)) {
22049
- matchRow[column.field] = null;
22050
- }
22051
- }
22052
- });
22053
- matchRow.id = id;
22054
- const rowNode = this.grid.api.getRowNode(id);
22055
- rowNode && rowNode.setData(matchRow);
21876
+ get matchingPasswords() {
21877
+ const { errors, controls } = this.changePasswordForm;
21878
+ let matchingPasswordsError = false;
21879
+ if (errors) {
21880
+ const password = controls.password.touched && controls.password.dirty;
21881
+ const confirmPassword = controls.confirmPassword.touched && controls.confirmPassword.dirty;
21882
+ matchingPasswordsError = errors.matchingPasswords && password && confirmPassword;
22056
21883
  }
21884
+ return matchingPasswordsError;
22057
21885
  }
22058
- refreshGrid() {
22059
- if (this.query) {
22060
- this._query.sortOptions = (this.grid.api.getColumnState() || [])
22061
- .map(model => new SortOption(GridService.qnameFormatter(model.colId + this.postfixSort(model.colId)), model.sort));
22062
- this.query = this._query;
22063
- }
22064
- this.onRefresh.emit(this.query);
21886
+ changePasswordOnSuccess() {
21887
+ this.changePasswordForm.reset();
21888
+ this.changePasswordForm.markAsPristine();
21889
+ this.changePasswordForm.markAsUntouched();
21890
+ this.onFormSumbit.emit(true);
21891
+ this.toaster.success(this.translate.instant('eo.password.reset.success'));
22065
21892
  }
22066
- onColumnResized(column) {
22067
- let col = this._cachedColumns.find(c => c.qname === column.colDef.refData.qname);
22068
- if (col) {
22069
- col.width = column.actualWidth;
21893
+ changePasswordOnError(error) {
21894
+ const errorTitle = this.translate.instant('eo.password.reset.error.password.title');
21895
+ if (error.error.key === 'USER_OLD_PASSWORD_WRONG') {
21896
+ this.toaster.error(errorTitle, this.translate.instant('eo.password.reset.error.old.password.message'));
21897
+ }
21898
+ else if (error.error.key === 'USER_NEW_PASSWORD_INVALID') {
21899
+ this.toaster.error(errorTitle, this.translate.instant('eo.password.reset.error.new.password.message'));
22070
21900
  }
22071
21901
  else {
22072
- this._cachedColumns.push({ qname: column.colDef.refData.qname, width: column.actualWidth });
21902
+ this.toaster.error(errorTitle);
22073
21903
  }
22074
- this.storageService.setItem(ResultListComponent_1.COLUMNS_DEFINITION, this._cachedColumns);
22075
21904
  }
22076
- /**
22077
- * Event handler for grid configuration
22078
- * @param $event
22079
- */
22080
- onConfigChanged(refresh) {
22081
- if (refresh) {
22082
- this.refreshGrid();
22083
- }
21905
+ onSubmit() {
21906
+ const { currentPassword, password } = this.changePasswordForm.value;
21907
+ const payload = {
21908
+ old: currentPassword,
21909
+ new: password
21910
+ };
21911
+ this.userService
21912
+ .changePassword(payload)
21913
+ .subscribe(() => this.changePasswordOnSuccess(), (error) => this.changePasswordOnError(error));
22084
21914
  }
22085
- /**
22086
- * Process Search result & generate column definitions
22087
- * @param result
22088
- */
22089
- processResults(result) {
22090
- this.visibleConfig = false;
22091
- this.onResult.emit(result);
22092
- this.totalHits = result.count.value;
22093
- this.limitedList = this.totalHits > result.hits.length;
22094
- let gridOptions = { context: {}, onSortChanged: () => this.onPageChanged(), onFilterChanged: () => this.onPageChanged() };
22095
- const searchMode = result.fields.mode ? result.fields.mode : null;
22096
- this.settings = this.limitedList && this.query ? { total: this.totalHits, size: this.VIRTUAL_LIST_CHUNK_SIZE, relation: result.count.relation } : null;
22097
- gridOptions.rowData = result.hits;
22098
- const { elements, sortorder, grouporder, pinned, alignmentx } = result.fields;
22099
- gridOptions.context.count = result.count;
22100
- gridOptions.columnDefs = this.gridApi.getColumnDefs(elements, sortorder, grouporder, pinned, alignmentx, false, this._cachedColumns, searchMode);
22101
- const refreshGrid = this.hasGridOptions;
22102
- Object.assign(this.resultGridOptions, gridOptions, this.gridOptions);
22103
- if (refreshGrid) {
22104
- // reload grid component
22105
- this.resultGridOptions = {};
22106
- setTimeout(() => Object.assign(this.resultGridOptions, gridOptions, this.gridOptions), 0);
22107
- }
22108
- }
22109
- postfixSort(id) {
22110
- // todo: remove when it's fixed on backend
22111
- return id.match(/(^sysobject\.|^sysdocument\.)(creator$|modifier$)/) ? 'title' : '';
22112
- }
22113
- onPageChanged(page = 1) {
22114
- if (this.limitedList && this.query) {
22115
- this.fetchRowData({
22116
- startRow: this.VIRTUAL_LIST_CHUNK_SIZE * (page - 1),
22117
- sortModel: this.grid.api.getColumnState(),
22118
- filterModel: this.grid.api.getFilterModel(),
22119
- successCallback: (rows, total, relation) => {
22120
- this.settings = { total, relation, size: this.VIRTUAL_LIST_CHUNK_SIZE, page };
22121
- this.grid.api.setGridOption('rowData', rows);
22122
- this.grid.selectRow(0);
22123
- }
22124
- });
22125
- }
22126
- }
22127
- /**
22128
- * Function for fetching the items to be displayed with a virtual row model.
22129
- *
22130
- * @param params - row model params (incl. startRow, endRow, sortModel and filterModel)
22131
- */
22132
- fetchRowData(params) {
22133
- if (this.query) {
22134
- this.updateQuery(params);
22135
- this.searchService
22136
- .getChunkedResult(this.query, params.startRow, this.VIRTUAL_LIST_CHUNK_SIZE)
22137
- .subscribe(result => {
22138
- this.totalHits = this.grid.gridOptions.context.rowCount = result.count.value;
22139
- this.grid.gridOptions.context.count = result.count;
22140
- params.successCallback(result.hits, this.totalHits, result.count.relation);
22141
- });
22142
- }
22143
- }
22144
- updateQuery(params) {
22145
- this.query.sortOptions = (params.sortModel || this.grid.api.getColumnState() || [])
22146
- .map(model => new SortOption(GridService.qnameFormatter(model.colId + this.postfixSort(model.colId)), model.sort));
22147
- this.query.filters = this.defaultQuery.filters
22148
- .concat((Object.keys(params.filterModel || this.grid.api.getFilterModel()) || [])
22149
- .map(key => GridFilter.operator(GridService.qnameFormatter(key), (params.filterModel || this.grid.api.getFilterModel())[key])));
22150
- this.query.searchMode = SearchQuery.DEFAULT_SEARCH_MODE;
22151
- }
22152
- executeSuggestSearch() {
22153
- // todo: implement
22154
- }
22155
- resultHasReferences() {
22156
- return this._result.fields.elements.some(element => element.type === 'ORGANIZATION' || element.type === 'REFERENCE');
22157
- }
22158
- exportCSV(ignoreThreshold = false) {
22159
- if (!ignoreThreshold && this.resolveReferencesCsv
22160
- && (this.list.gridCount.totalCount > this.resolveReferencesCsvThreshold || this.list.gridCount.relation === 'gte')
22161
- && this.resultHasReferences()) {
22162
- this.showWarnExportCSVThresholdDialog = true;
22163
- return;
22164
- }
22165
- this.csvLoadingSpinnerVisibility = true;
22166
- this.updateQuery({});
22167
- this.showWarnExportCSVThresholdDialog = false;
22168
- const queryJson = this.query.getQueryJson(this.resolveReferencesCsv);
22169
- queryJson.fields = [];
22170
- this.resultGridOptions?.columnDefs.forEach(colDef => {
22171
- queryJson.fields.push(colDef['field'] + ' ' + colDef.headerName);
22172
- });
22173
- this.searchService.downloadCsvFromQuery(queryJson).subscribe(() => {
22174
- this.csvLoadingSpinnerVisibility = false;
22175
- });
22176
- }
22177
- parseDmsParams(data) {
22178
- return { id: data && data.id ? data.id : null, type: data && data.type ? data.type : null };
22179
- }
22180
- get hasGridOptions() {
22181
- return !!(this.resultGridOptions.datasource || this.resultGridOptions.rowData);
22182
- }
22183
- onStoredQueryLoaded() {
22184
- this.savedSearchClicked = false;
22185
- this.router.navigate([{ outlets: { modal: 'search' } }]);
22186
- }
22187
- onStoredQueryExecute(evt) {
22188
- this.savedSearchClicked = false;
22189
- const uriParam = encodeURIComponent(JSON.stringify(evt.queryJson));
22190
- const uriParamQuery = { queryParams: { 'query': uriParam } };
22191
- this.router.navigate(['/result'], uriParamQuery);
22192
- }
22193
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListComponent, deps: [{ token: i1.Config }, { token: i1.TranslateService }, { token: GridService }, { token: i1.BackendService }, { token: AppSearchService }, { token: i1.SearchService }, { token: i1.EventService }, { token: i1.LocalStorageService }, { token: i1.StoredQueriesService }, { token: i2$1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
22194
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ResultListComponent, selector: "eo-result-list", inputs: { title: "title", configType: "configType", configContext: "configContext", clearAfterExecute: "clearAfterExecute", emptyMessage: "emptyMessage", selectFirst: "selectFirst", gridOptions: "gridOptions", hasIcon: "hasIcon", reference: "reference", query: "query", searchResult: "searchResult" }, outputs: { onSelectionChanged: "onSelectionChanged", onFocusChanged: "onFocusChanged", onDoubleClick: "onDoubleClick", onContextMenu: "onContextMenu", onCountChanged: "onCountChanged", onRefresh: "onRefresh", onResult: "onResult", onQueryInvalid: "onQueryInvalid" }, viewQueries: [{ propertyName: "grid", first: true, predicate: ["eoGrid"], descendants: true }, { propertyName: "list", first: true, predicate: ["eoList"], descendants: true }], ngImport: i0, template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"result-list__loader\" [size]=\"'medium'\"></eo-loading-spinner>\n</div>\n<eo-column-configurator *ngIf=\"visibleConfig\" [visible]=\"visibleConfig\"\n [configType]=\"configType\" [configContext]=\"configContext\" [eoGrid]=\"grid\"\n (onConfigChanged)=\"visibleConfig = false; onConfigChanged($event)\" ></eo-column-configurator>\n\n<eo-list-container #eoList [applySelection]=\"{}\" [loading]=\"false\" [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\" [eoShortcuts]=\"shortcuts\">\n <eo-icon class=\"eo-header-icon\" *ngIf=\"hasIcon\" [iconSrc]=\"'assets/_default/svg/ic_search.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\">{{title || ('eo.search.title' | translate)}}</div>\n <div class=\"eo-header-subtitle\">\n <span *ngIf=\"!storedQuery; else storedQueryText\" class=\"eo-header-subtitle__label\" [title]=\"querySubtitle\">{{querySubtitle}}</span>\n <ng-template #storedQueryText>\n <ng-container *ngIf=\"storedQuery.parameter.length === 0; else storedQueryDialog\">\n <span class=\"eo-header-subtitle__label\" [title]=\"('eo.search.aside.summary.storedquery' | translate) + ': ' + storedQuery.name\">\n {{'eo.search.aside.summary.storedquery' | translate}}: {{storedQuery.name}}\n </span>\n </ng-container>\n </ng-template>\n <ng-template #storedQueryDialog>\n <div class=\"stored-query\">\n <span>\n {{'eo.search.aside.summary.storedquery' | translate}}:\n </span>\n <button class=\"sq\" (click)=\"savedSearchClicked = true\" (keyup.enter)=\"savedSearchClicked = true\" tabindex=\"0\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_stored_query.svg'\"></eo-icon>\n <span>{{storedQuery.name}}</span>\n </button>\n </div>\n </ng-template>\n <span *ngIf=\"query?.contextFolderTypes.length === 1\" translate\n [translateParams]=\"{type: query.contextFolderTypes[0].label}\">eo.search.objecttype.form.context</span>\n <span class=\"term\" *ngIf=\"!storedQuery && query?.term && !clearAfterExecute\" [title]=\"('eo.search.result.term' | translate) + ': ' + query.term\">{{'eo.search.result.term' | translate}} : \"{{query.term}}\"</span>\n <div class=\"suggest\" *ngIf=\"searchResult?.suggests\">{{'eo.search.suggest' | translate}}<a href=\"javascript:void(0)\" (click)=\"executeSuggestSearch()\">{{searchResult.suggests[0]}}</a> ?\n </div>\n </div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" (click)=\"refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n <eo-icon class=\"button export-button\" [hidden]=\"!query\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\" [iconTitle]=\"('eo.resultlist.export.csv' | translate)\"\n (click)=\"exportCSV()\" *ngIf=\"!csvLoadingSpinnerVisibility\"></eo-icon>\n <eo-loading-spinner [size]=\"'small'\" *ngIf=\"csvLoadingSpinnerVisibility\" class=\"spinner\"></eo-loading-spinner>\n <eo-icon class=\"button config-button\" [iconSrc]=\"'assets/_default/svg/ic_settings.svg'\" [iconTitle]=\"('eo.column.config.title' | translate)\"\n (click)=\"visibleConfig = !visibleConfig\"></eo-icon>\n <eo-icon class=\"button actions-button\" (click)=\"eoList.showActions()\" [iconTitle]=\"('eo.object.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\" *ngIf=\"!reference\"></eo-icon>\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid [gridOptions]=\"resultGridOptions\" *ngIf=\"hasGridOptions; else error\"\n [showFooter]=\"true\" (eoGridColumnResized)=\"onColumnResized($event)\" [selectFirst]=\"selectFirst\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event);onCountChanged.emit($event);\"\n (eoGridContextMenuClick)=\"eoList.onContextMenu($event);onContextMenu.emit($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event);onSelectionChanged.emit($event)\"\n (eoGridDoubleClick)=\"eoList.onDoubleClick($event);onDoubleClick.emit($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event);onFocusChanged.emit($event)\">\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n <!--<eo-quick-filter [eoGrid]=\"eoGrid\"></eo-quick-filter>-->\n <eo-pagination [settings]=\"settings\" (pageChanged)=\"onPageChanged($event)\"></eo-pagination>\n </div>\n\n <div class=\"empty\">\n <eo-error-message [emptyState]=\"{text: emptyMessage || 'eo.search.result.expired'}\"></eo-error-message>\n </div>\n </eo-grid>\n </div>\n <ng-template #error>\n\n <eo-error-message *ngIf=\"hasGridOptions\" [emptyState]=\"{text:'eo.search.mode.expert.result.empty'}\">\n </eo-error-message>\n\n </ng-template>\n</eo-list-container>\n\n<eo-dialog [visible]=\"savedSearchClicked\" (hide)=\"savedSearchClicked = false\" [title]=\"'eo.search.aside.summary.storedquery' | translate\">\n\n</eo-dialog>\n\n<eo-dialog [title]=\"'eo.resultlist.export.csv.threshold.dialog.title' | translate\"\n [(visible)]=\"showWarnExportCSVThresholdDialog\" [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'threshold__dialog'\">\n\n <div>{{'eo.resultlist.export.csv.threshold.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showWarnExportCSVThresholdDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"exportCSV(true)\" class=\"button primary\"\n translate>eo.resultlist.export.csv.threshold.dialog.export</button>\n </div>\n</eo-dialog>\n\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background);height:100%}:host .spinner{padding:calc(var(--app-pane-padding) / 4)}:host .result-head{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0}:host .result-head .header-info{flex:1}:host .result-head .header-info .header-sub-title .term{margin:0 var(--app-pane-padding)}:host .result-head .header-info .header-title{padding-bottom:calc(var(--app-pane-padding) / 4);font-size:20px;-webkit-user-select:none;user-select:none}:host .result-head .header-info .status{display:flex}:host .result-head .header-info .status .term{flex:1}:host .result-head .actions eo-icon{padding:calc(var(--app-pane-padding) / 4);cursor:pointer}: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 .result-list__loader{margin:auto}:host .stored-query{display:flex;max-height:45vh}:host .stored-query span{padding-right:calc(var(--app-pane-padding) / 2)}:host .stored-query>div{background-color:var(--color-white);padding:calc(var(--app-pane-padding) / 2);margin:0 1px;border-radius:2px 0 0 2px}:host .stored-query>div eo-icon{padding:calc(var(--app-pane-padding) / 4);color:var(--text-color-caption)}:host .stored-query .sq{overflow:hidden;border-radius:2px;padding:calc(var(--app-pane-padding) / 100);background-color:var(--color-white);color:var(--text-color-caption);text-decoration:none;cursor:pointer;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;flex-flow:row;align-items:center;background-color:var(--list-item-hover-background)}:host .stored-query .sq>eo-icon{color:var(--text-color-hint);flex-shrink:0}:host .stored-query .sq>span{text-overflow:ellipsis;overflow:hidden;padding:0 calc(var(--app-pane-padding) / 2)}eo-stored-query{border-radius:0 2px 2px 0;background-color:var(--color-white);padding:var(--app-pane-padding);overflow-y:auto}::ng-deep .threshold__dialog{padding:8px;min-height:unset!important}::ng-deep .threshold__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.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { 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: ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { 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: ColumnConfiguratorComponent, selector: "eo-column-configurator", inputs: ["configType", "configContext", "visible", "eoGrid"], outputs: ["onConfigChanged"] }, { kind: "component", type: TotalCountComponent, selector: "eo-total-count", inputs: ["eoGrid", "outsideGrid", "gridCount"] }, { kind: "component", type: PaginationComponent, selector: "eo-pagination", inputs: ["settings"], outputs: ["pageChanged"] }, { kind: "directive", type: ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
22195
- };
22196
- ResultListComponent = ResultListComponent_1 = __decorate([
22197
- UntilDestroy()
22198
- ], ResultListComponent);
22199
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListComponent, decorators: [{
21915
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ChangePasswordFormComponent, deps: [{ token: i1$3.UntypedFormBuilder }, { token: i1.UserService }, { token: i1.TranslateService }, { token: i1.NotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
21916
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ChangePasswordFormComponent, selector: "eo-change-password-form", inputs: { userRegex: "userRegex" }, outputs: { onFormSumbit: "onFormSumbit" }, ngImport: i0, template: "<section class=\"change-password\">\n <form #changePasswordFormElement [formGroup]=\"changePasswordForm\" (ngSubmit)=\"onSubmit()\" autocomplete=\"off\">\n <div class=\"form-item\">\n\n <eo-form-input [label]=\"('eo.password.reset.current-password' | translate)\" [required]=\"true\" [invalid]=\"passwordIsNew\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'currentPassword'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.current-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <eo-form-input [label]=\"('eo.password.reset.new-password' | translate)\" [required]=\"true\" [invalid]=\"matchingPasswords || passwordIsNew\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'password'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.new-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <eo-form-input [label]=\"('eo.password.reset.confirm-password' | translate)\" [required]=\"true\" [invalid]=\"matchingPasswords\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'confirmPassword'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.confirm-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <div class=\"invalid error\" *ngIf=\"passwordIsNew\">\n {{'eo.password.reset.error.same.password' | translate}}\n </div>\n\n <div class=\"invalid error\" *ngIf=\"matchingPasswords\">\n {{'eo.password.reset.error.matiching.password' | translate}}\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'short'\">\n eo.password.reset.error.new.password.short\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'number'\">\n eo.password.reset.error.new.password.number\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'specialchars'\">\n eo.password.reset.error.new.password.specialchars\n </div>\n\n <section class=\"change-password__cta\">\n <button class=\"change-password__submit-button\" type=\"submit\"\n [disabled]=\"changePasswordForm.invalid || passwordValidation.type !== 'valid'\" translate>eo.password.reset.confirm-button</button>\n\n <a (click)=\"showPasswords()\" tabindex=\"0\" (keydown.enter)=\"showPasswords()\" >\n <eo-icon class=\"change-password__icon-show\"\n [iconSrc]=\"'assets/_default/svg/ic_eye.svg'\"\n [iconTitle]=\"('eo.password.reset.toogle.icon' | translate)\"\n [ngClass]=\"{'visible': passwordIsVisible}\"></eo-icon>\n </a>\n </section>\n </div>\n </form>\n\n</section>\n", styles: [".change-password .invalid.error{color:var(--color-error);padding:5px 0}.change-password :focus{outline:2px solid var(--text-color-caption)}.change-password__cta{margin-top:10px;display:flex;align-items:center}.change-password__submit-button{margin-right:10px}.change-password__icon-show{cursor:pointer;color:var(--text-color-caption)}.change-password__icon-show:hover{color:var(--color-accent)}.change-password__icon-show.visible{color:var(--color-primary-3)}\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.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: PasswordComponent, selector: "eo-password", inputs: ["pattern", "parent", "element", "placeholder", "canChangepasswordVisiblety", "passwordVisible"] }, { 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: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
21917
+ }
21918
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ChangePasswordFormComponent, decorators: [{
22200
21919
  type: Component,
22201
- args: [{ selector: 'eo-result-list', template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"result-list__loader\" [size]=\"'medium'\"></eo-loading-spinner>\n</div>\n<eo-column-configurator *ngIf=\"visibleConfig\" [visible]=\"visibleConfig\"\n [configType]=\"configType\" [configContext]=\"configContext\" [eoGrid]=\"grid\"\n (onConfigChanged)=\"visibleConfig = false; onConfigChanged($event)\" ></eo-column-configurator>\n\n<eo-list-container #eoList [applySelection]=\"{}\" [loading]=\"false\" [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\" [eoShortcuts]=\"shortcuts\">\n <eo-icon class=\"eo-header-icon\" *ngIf=\"hasIcon\" [iconSrc]=\"'assets/_default/svg/ic_search.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\">{{title || ('eo.search.title' | translate)}}</div>\n <div class=\"eo-header-subtitle\">\n <span *ngIf=\"!storedQuery; else storedQueryText\" class=\"eo-header-subtitle__label\" [title]=\"querySubtitle\">{{querySubtitle}}</span>\n <ng-template #storedQueryText>\n <ng-container *ngIf=\"storedQuery.parameter.length === 0; else storedQueryDialog\">\n <span class=\"eo-header-subtitle__label\" [title]=\"('eo.search.aside.summary.storedquery' | translate) + ': ' + storedQuery.name\">\n {{'eo.search.aside.summary.storedquery' | translate}}: {{storedQuery.name}}\n </span>\n </ng-container>\n </ng-template>\n <ng-template #storedQueryDialog>\n <div class=\"stored-query\">\n <span>\n {{'eo.search.aside.summary.storedquery' | translate}}:\n </span>\n <button class=\"sq\" (click)=\"savedSearchClicked = true\" (keyup.enter)=\"savedSearchClicked = true\" tabindex=\"0\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_stored_query.svg'\"></eo-icon>\n <span>{{storedQuery.name}}</span>\n </button>\n </div>\n </ng-template>\n <span *ngIf=\"query?.contextFolderTypes.length === 1\" translate\n [translateParams]=\"{type: query.contextFolderTypes[0].label}\">eo.search.objecttype.form.context</span>\n <span class=\"term\" *ngIf=\"!storedQuery && query?.term && !clearAfterExecute\" [title]=\"('eo.search.result.term' | translate) + ': ' + query.term\">{{'eo.search.result.term' | translate}} : \"{{query.term}}\"</span>\n <div class=\"suggest\" *ngIf=\"searchResult?.suggests\">{{'eo.search.suggest' | translate}}<a href=\"javascript:void(0)\" (click)=\"executeSuggestSearch()\">{{searchResult.suggests[0]}}</a> ?\n </div>\n </div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" (click)=\"refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n <eo-icon class=\"button export-button\" [hidden]=\"!query\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\" [iconTitle]=\"('eo.resultlist.export.csv' | translate)\"\n (click)=\"exportCSV()\" *ngIf=\"!csvLoadingSpinnerVisibility\"></eo-icon>\n <eo-loading-spinner [size]=\"'small'\" *ngIf=\"csvLoadingSpinnerVisibility\" class=\"spinner\"></eo-loading-spinner>\n <eo-icon class=\"button config-button\" [iconSrc]=\"'assets/_default/svg/ic_settings.svg'\" [iconTitle]=\"('eo.column.config.title' | translate)\"\n (click)=\"visibleConfig = !visibleConfig\"></eo-icon>\n <eo-icon class=\"button actions-button\" (click)=\"eoList.showActions()\" [iconTitle]=\"('eo.object.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\" *ngIf=\"!reference\"></eo-icon>\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid [gridOptions]=\"resultGridOptions\" *ngIf=\"hasGridOptions; else error\"\n [showFooter]=\"true\" (eoGridColumnResized)=\"onColumnResized($event)\" [selectFirst]=\"selectFirst\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event);onCountChanged.emit($event);\"\n (eoGridContextMenuClick)=\"eoList.onContextMenu($event);onContextMenu.emit($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event);onSelectionChanged.emit($event)\"\n (eoGridDoubleClick)=\"eoList.onDoubleClick($event);onDoubleClick.emit($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event);onFocusChanged.emit($event)\">\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n <!--<eo-quick-filter [eoGrid]=\"eoGrid\"></eo-quick-filter>-->\n <eo-pagination [settings]=\"settings\" (pageChanged)=\"onPageChanged($event)\"></eo-pagination>\n </div>\n\n <div class=\"empty\">\n <eo-error-message [emptyState]=\"{text: emptyMessage || 'eo.search.result.expired'}\"></eo-error-message>\n </div>\n </eo-grid>\n </div>\n <ng-template #error>\n\n <eo-error-message *ngIf=\"hasGridOptions\" [emptyState]=\"{text:'eo.search.mode.expert.result.empty'}\">\n </eo-error-message>\n\n </ng-template>\n</eo-list-container>\n\n<eo-dialog [visible]=\"savedSearchClicked\" (hide)=\"savedSearchClicked = false\" [title]=\"'eo.search.aside.summary.storedquery' | translate\">\n\n</eo-dialog>\n\n<eo-dialog [title]=\"'eo.resultlist.export.csv.threshold.dialog.title' | translate\"\n [(visible)]=\"showWarnExportCSVThresholdDialog\" [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'threshold__dialog'\">\n\n <div>{{'eo.resultlist.export.csv.threshold.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showWarnExportCSVThresholdDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"exportCSV(true)\" class=\"button primary\"\n translate>eo.resultlist.export.csv.threshold.dialog.export</button>\n </div>\n</eo-dialog>\n\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background);height:100%}:host .spinner{padding:calc(var(--app-pane-padding) / 4)}:host .result-head{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0}:host .result-head .header-info{flex:1}:host .result-head .header-info .header-sub-title .term{margin:0 var(--app-pane-padding)}:host .result-head .header-info .header-title{padding-bottom:calc(var(--app-pane-padding) / 4);font-size:20px;-webkit-user-select:none;user-select:none}:host .result-head .header-info .status{display:flex}:host .result-head .header-info .status .term{flex:1}:host .result-head .actions eo-icon{padding:calc(var(--app-pane-padding) / 4);cursor:pointer}: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 .result-list__loader{margin:auto}:host .stored-query{display:flex;max-height:45vh}:host .stored-query span{padding-right:calc(var(--app-pane-padding) / 2)}:host .stored-query>div{background-color:var(--color-white);padding:calc(var(--app-pane-padding) / 2);margin:0 1px;border-radius:2px 0 0 2px}:host .stored-query>div eo-icon{padding:calc(var(--app-pane-padding) / 4);color:var(--text-color-caption)}:host .stored-query .sq{overflow:hidden;border-radius:2px;padding:calc(var(--app-pane-padding) / 100);background-color:var(--color-white);color:var(--text-color-caption);text-decoration:none;cursor:pointer;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;flex-flow:row;align-items:center;background-color:var(--list-item-hover-background)}:host .stored-query .sq>eo-icon{color:var(--text-color-hint);flex-shrink:0}:host .stored-query .sq>span{text-overflow:ellipsis;overflow:hidden;padding:0 calc(var(--app-pane-padding) / 2)}eo-stored-query{border-radius:0 2px 2px 0;background-color:var(--color-white);padding:var(--app-pane-padding);overflow-y:auto}::ng-deep .threshold__dialog{padding:8px;min-height:unset!important}::ng-deep .threshold__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"] }]
22202
- }], ctorParameters: () => [{ type: i1.Config }, { type: i1.TranslateService }, { type: GridService }, { type: i1.BackendService }, { type: AppSearchService }, { type: i1.SearchService }, { type: i1.EventService }, { type: i1.LocalStorageService }, { type: i1.StoredQueriesService }, { type: i2$1.Router }], propDecorators: { grid: [{
22203
- type: ViewChild,
22204
- args: ['eoGrid']
22205
- }], list: [{
22206
- type: ViewChild,
22207
- args: ['eoList']
22208
- }], title: [{
22209
- type: Input
22210
- }], configType: [{
22211
- type: Input
22212
- }], configContext: [{
22213
- type: Input
22214
- }], clearAfterExecute: [{
22215
- type: Input
22216
- }], emptyMessage: [{
22217
- type: Input
22218
- }], selectFirst: [{
22219
- type: Input
22220
- }], gridOptions: [{
22221
- type: Input
22222
- }], hasIcon: [{
22223
- type: Input
22224
- }], reference: [{
21920
+ args: [{ selector: 'eo-change-password-form', template: "<section class=\"change-password\">\n <form #changePasswordFormElement [formGroup]=\"changePasswordForm\" (ngSubmit)=\"onSubmit()\" autocomplete=\"off\">\n <div class=\"form-item\">\n\n <eo-form-input [label]=\"('eo.password.reset.current-password' | translate)\" [required]=\"true\" [invalid]=\"passwordIsNew\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'currentPassword'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.current-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <eo-form-input [label]=\"('eo.password.reset.new-password' | translate)\" [required]=\"true\" [invalid]=\"matchingPasswords || passwordIsNew\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'password'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.new-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <eo-form-input [label]=\"('eo.password.reset.confirm-password' | translate)\" [required]=\"true\" [invalid]=\"matchingPasswords\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'confirmPassword'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.confirm-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <div class=\"invalid error\" *ngIf=\"passwordIsNew\">\n {{'eo.password.reset.error.same.password' | translate}}\n </div>\n\n <div class=\"invalid error\" *ngIf=\"matchingPasswords\">\n {{'eo.password.reset.error.matiching.password' | translate}}\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'short'\">\n eo.password.reset.error.new.password.short\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'number'\">\n eo.password.reset.error.new.password.number\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'specialchars'\">\n eo.password.reset.error.new.password.specialchars\n </div>\n\n <section class=\"change-password__cta\">\n <button class=\"change-password__submit-button\" type=\"submit\"\n [disabled]=\"changePasswordForm.invalid || passwordValidation.type !== 'valid'\" translate>eo.password.reset.confirm-button</button>\n\n <a (click)=\"showPasswords()\" tabindex=\"0\" (keydown.enter)=\"showPasswords()\" >\n <eo-icon class=\"change-password__icon-show\"\n [iconSrc]=\"'assets/_default/svg/ic_eye.svg'\"\n [iconTitle]=\"('eo.password.reset.toogle.icon' | translate)\"\n [ngClass]=\"{'visible': passwordIsVisible}\"></eo-icon>\n </a>\n </section>\n </div>\n </form>\n\n</section>\n", styles: [".change-password .invalid.error{color:var(--color-error);padding:5px 0}.change-password :focus{outline:2px solid var(--text-color-caption)}.change-password__cta{margin-top:10px;display:flex;align-items:center}.change-password__submit-button{margin-right:10px}.change-password__icon-show{cursor:pointer;color:var(--text-color-caption)}.change-password__icon-show:hover{color:var(--color-accent)}.change-password__icon-show.visible{color:var(--color-primary-3)}\n"] }]
21921
+ }], ctorParameters: () => [{ type: i1$3.UntypedFormBuilder }, { type: i1.UserService }, { type: i1.TranslateService }, { type: i1.NotificationsService }], propDecorators: { userRegex: [{
22225
21922
  type: Input
22226
- }], onSelectionChanged: [{
22227
- type: Output
22228
- }], onFocusChanged: [{
22229
- type: Output
22230
- }], onDoubleClick: [{
22231
- type: Output
22232
- }], onContextMenu: [{
22233
- type: Output
22234
- }], onCountChanged: [{
22235
- type: Output
22236
- }], onRefresh: [{
22237
- type: Output
22238
- }], onResult: [{
22239
- type: Output
22240
- }], onQueryInvalid: [{
21923
+ }], onFormSumbit: [{
22241
21924
  type: Output
22242
- }], query: [{
22243
- type: Input
22244
- }], searchResult: [{
21925
+ }] } });
21926
+
21927
+ class PermissionsComponent {
21928
+ constructor() {
21929
+ this.roles = [];
21930
+ }
21931
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PermissionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21932
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: PermissionsComponent, selector: "eo-permissions", inputs: { roles: "roles" }, ngImport: i0, template: "<div class=\"role\" *ngFor=\"let role of roles\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_shield.svg'\"></eo-icon>\n <div>\n <div class=\"name\">{{role.name}}</div>\n <div class=\"description\">{{role.description}}</div>\n </div>\n</div>\n", styles: [".role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.role>div{padding:0 calc(var(--app-pane-padding) / 2)}.role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }] }); }
21933
+ }
21934
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PermissionsComponent, decorators: [{
21935
+ type: Component,
21936
+ args: [{ selector: 'eo-permissions', template: "<div class=\"role\" *ngFor=\"let role of roles\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_shield.svg'\"></eo-icon>\n <div>\n <div class=\"name\">{{role.name}}</div>\n <div class=\"description\">{{role.description}}</div>\n </div>\n</div>\n", styles: [".role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.role>div{padding:0 calc(var(--app-pane-padding) / 2)}.role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}\n"] }]
21937
+ }], propDecorators: { roles: [{
22245
21938
  type: Input
22246
21939
  }] } });
22247
21940
 
21941
+ class SettingsModule {
21942
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SettingsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
21943
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: SettingsModule, declarations: [ChangePasswordFormComponent, PermissionsComponent], imports: [CommonModule,
21944
+ ReactiveFormsModule,
21945
+ FormElementsModule,
21946
+ EoSharedModule,
21947
+ UiModule], exports: [ChangePasswordFormComponent, PermissionsComponent] }); }
21948
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SettingsModule, imports: [CommonModule,
21949
+ ReactiveFormsModule,
21950
+ FormElementsModule,
21951
+ EoSharedModule,
21952
+ UiModule] }); }
21953
+ }
21954
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SettingsModule, decorators: [{
21955
+ type: NgModule,
21956
+ args: [{
21957
+ imports: [
21958
+ CommonModule,
21959
+ ReactiveFormsModule,
21960
+ FormElementsModule,
21961
+ EoSharedModule,
21962
+ UiModule
21963
+ ],
21964
+ declarations: [ChangePasswordFormComponent, PermissionsComponent],
21965
+ exports: [ChangePasswordFormComponent, PermissionsComponent]
21966
+ }]
21967
+ }] });
21968
+
22248
21969
  class StoredQueryComponent {
22249
21970
  set query(storedQuery) {
22250
21971
  if (storedQuery instanceof StoredQuery) {
@@ -22617,434 +22338,906 @@ let StoredQueryDetailsComponent = class StoredQueryDetailsComponent {
22617
22338
  this.eventService.trigger(EnaioEvent.STORED_OBJECT_FAVORISED);
22618
22339
  }, Utils.throw(null, this.translate.instant('eo.search.storedquery.save.error')));
22619
22340
  }
22620
- cancelEdit() {
22621
- this.resetEditForm();
22622
- this.finishPending();
22623
- if (this.storedQuery.isNew()) {
22624
- this.query = null;
22341
+ cancelEdit() {
22342
+ this.resetEditForm();
22343
+ this.finishPending();
22344
+ if (this.storedQuery.isNew()) {
22345
+ this.query = null;
22346
+ }
22347
+ this.notifyList.emit({ unselect: false, update: false, payload: this.storedQuery });
22348
+ }
22349
+ setQueryToAppSearch() {
22350
+ this.storedQueryForm.load();
22351
+ }
22352
+ executeQuery() {
22353
+ this.storedQueryForm.execute();
22354
+ }
22355
+ // Save the current stored query
22356
+ updateStoredQuery() {
22357
+ const formData = this.getFormData();
22358
+ this.storedQuery.filters = this.storedQuery.filters.filter(f => ~this.BASE_PARAMS_FIELDS.indexOf(f.property));
22359
+ Object.keys(formData)
22360
+ .forEach(k => {
22361
+ if (k === this.FORM_INPUT_TITLE) {
22362
+ this.storedQuery.name = formData[k];
22363
+ }
22364
+ else if (k === this.FORM_INPUT_FULLTEXT) {
22365
+ this.storedQuery.term = formData[k];
22366
+ }
22367
+ else {
22368
+ let filters = this.searchService.getSearchFilter(this.storedQuery.types, k, formData[k]);
22369
+ filters.forEach(f => this.storedQuery.addFilter(f));
22370
+ }
22371
+ });
22372
+ this.storedQueriesService
22373
+ .saveStoredQuery(this.storedQuery)
22374
+ .subscribe(updatedStoredQuery => {
22375
+ this.query = updatedStoredQuery;
22376
+ this.resetEditForm();
22377
+ this.finishPending();
22378
+ this.notifyList.emit({ unselect: false, update: false, payload: updatedStoredQuery });
22379
+ }, Utils.throw(null, this.translate.instant('eo.search.storedquery.save.error')));
22380
+ }
22381
+ /**
22382
+ * Toggle form elements to be a dynamic parameter or not
22383
+ * @param event
22384
+ */
22385
+ parameterChanged(event) {
22386
+ let m = this.storedQuery.parameter.find(p => p.qname === event.control);
22387
+ if (m && !event.value) {
22388
+ // remove existing parameter
22389
+ this.storedQuery.parameter = this.storedQuery.parameter.filter(p => p.qname !== event.control);
22390
+ }
22391
+ else if (!m && event.value) {
22392
+ // add parameter element
22393
+ let param = this.formFieldToParameter(event.control);
22394
+ if (param) {
22395
+ this.storedQuery.parameter.push(param);
22396
+ }
22397
+ }
22398
+ }
22399
+ getFormData() {
22400
+ const properties = Object.keys(this.editForm.form.value);
22401
+ let data = {};
22402
+ properties.forEach(property => {
22403
+ const fc = this.editForm.form.controls[property];
22404
+ let formElement;
22405
+ if (fc.controls && fc.controls[property]) {
22406
+ const fe = fc.controls[property];
22407
+ formElement = fe._eoFormElement;
22408
+ }
22409
+ if (formElement && formElement.isNotSetValue) {
22410
+ data[property] = null;
22411
+ }
22412
+ else {
22413
+ switch (property) {
22414
+ case this.FORM_INPUT_TITLE: {
22415
+ data[property] = this.editForm.form.value[property] || '';
22416
+ break;
22417
+ }
22418
+ case this.FORM_INPUT_FULLTEXT: {
22419
+ data[property] = this.editForm.form.value[property][StoredQueriesService.FULLTEXT] || '';
22420
+ break;
22421
+ }
22422
+ default: {
22423
+ const v = this.editForm.form.value[property][property];
22424
+ if (!UtilitiesService.isEmpty(v)) {
22425
+ data[property] = v;
22426
+ }
22427
+ }
22428
+ }
22429
+ }
22430
+ });
22431
+ return data;
22432
+ }
22433
+ /**
22434
+ * Create a dynamic stored query parameter for a form element
22435
+ * @param qname The form elements qname
22436
+ * @returns
22437
+ */
22438
+ formFieldToParameter(qname) {
22439
+ try {
22440
+ let param;
22441
+ // special handling for fulltext fields
22442
+ if (qname === StoredQueriesService.FULLTEXT) {
22443
+ param = {
22444
+ qname: qname,
22445
+ type: qname,
22446
+ };
22447
+ }
22448
+ else {
22449
+ const fc = this.editForm.form.controls[qname].controls[qname];
22450
+ const fe = fc._eoFormElement;
22451
+ param = {
22452
+ qname: fe.qname,
22453
+ type: fe.type
22454
+ };
22455
+ }
22456
+ return param;
22457
+ }
22458
+ catch (e) {
22459
+ return null;
22460
+ }
22461
+ }
22462
+ resetEditForm() {
22463
+ this.editForm = {
22464
+ form: null,
22465
+ fulltextFormControl: null,
22466
+ controls: [],
22467
+ contextControls: []
22468
+ };
22469
+ }
22470
+ onFormChanges() {
22471
+ this.editForm
22472
+ .form
22473
+ .valueChanges
22474
+ .subscribe(() => this.onFormStatusChanged(this.editForm.form));
22475
+ }
22476
+ createEditForm() {
22477
+ this.resetEditForm();
22478
+ this.setupFormControls().subscribe(_ => {
22479
+ let form = new ObjectFormGroup({});
22480
+ let fcTitle = new UntypedFormControl('', Validators.required);
22481
+ fcTitle.setValue(this.storedQuery.name);
22482
+ let fcFulltext = this.toFormControl(this.storedQueriesService.getFulltextFormElement(this.translate.instant('eo.storedquery.search.term'), this.storedQuery.term));
22483
+ this.editForm.fulltextFormControl = fcFulltext;
22484
+ // add title and fulltext field
22485
+ form.addControl(this.FORM_INPUT_TITLE, fcTitle);
22486
+ form.addControl(this.FORM_INPUT_FULLTEXT, fcFulltext);
22487
+ if (this.editForm.controls.length || this.editForm.contextControls.length) {
22488
+ this.editForm.controls
22489
+ .forEach((c) => form.addControl(c._eoFormControlWrapper.controlName, c));
22490
+ this.editForm.contextControls
22491
+ .forEach((c) => form.addControl(c._eoFormControlWrapper.controlName, c));
22492
+ }
22493
+ this.editForm.form = form;
22494
+ this.onFormChanges();
22495
+ });
22496
+ }
22497
+ setupFormControls() {
22498
+ const tasks = [];
22499
+ // setting up object type form only makes sense with one target type
22500
+ if (this.storedQuery.types.length === 1) {
22501
+ tasks.push(this.systemService.getFormElementsFromFormModel(this.storedQuery.types[0].qname, 'SEARCH').pipe(tap((elements) => {
22502
+ elements.forEach(e => {
22503
+ // prevent tables and binary types from being rendered in the stored query form
22504
+ if (e.type !== 'BINARY') {
22505
+ if (e.required) {
22506
+ e.required = false;
22507
+ }
22508
+ if (e.readonly) {
22509
+ e.readonly = false;
22510
+ }
22511
+ const fc = this.toFormControl(e);
22512
+ if (fc) {
22513
+ this.editForm.controls.push(fc);
22514
+ }
22515
+ }
22516
+ });
22517
+ })));
22518
+ }
22519
+ // add context form controls as well
22520
+ if (this.storedQuery.contextFolderTypes.length) {
22521
+ tasks.push(this.systemService.getFormElementsFromFormModel(this.storedQuery.contextFolderTypes[0].qname, 'SEARCH', true).pipe(tap((elements) => {
22522
+ elements.forEach(e => {
22523
+ const fc = this.toFormControl(e);
22524
+ if (fc) {
22525
+ this.editForm.contextControls.push(fc);
22526
+ }
22527
+ });
22528
+ })));
22529
+ }
22530
+ return tasks.length ? forkJoin(tasks) : of(tasks);
22531
+ }
22532
+ fetchRoles() {
22533
+ if (!this.systemRoles || this.systemRoles.length === 0) {
22534
+ this.systemService
22535
+ .getRoles()
22536
+ .subscribe(res => {
22537
+ this.systemRoles = res;
22538
+ this.rolesPicker.codesystem = {
22539
+ entries: this.systemRoles.map(role => ({
22540
+ id: role.id,
22541
+ label: role.name,
22542
+ defaultrepresentation: role.name,
22543
+ data: role.name
22544
+ })).sort(Utils.sortValues('label'))
22545
+ };
22546
+ });
22547
+ }
22548
+ }
22549
+ getRestrictions() {
22550
+ let restrictions = [];
22551
+ // type restriction
22552
+ if (this.storedQuery.types && this.storedQuery.types.length) {
22553
+ restrictions.push({
22554
+ field: SearchQuery.BASE_PARAMS.TYPE,
22555
+ label: this.translate.instant('eo.storedquery.restriction.type'),
22556
+ items: this.storedQuery.types.map(t => t.label)
22557
+ });
22558
+ }
22559
+ // add base params restrictions
22560
+ (this.storedQuery.filters || []).forEach(filter => {
22561
+ if (filter && ~this.BASE_PARAMS_FIELDS.indexOf(filter.property)) {
22562
+ const field = filter.property;
22563
+ const label = this.translate.instant('eo.storedquery.restriction.' + field);
22564
+ switch (field) {
22565
+ case SearchQuery.BASE_PARAMS.MIMETYPEGROUP:
22566
+ restrictions.push({
22567
+ field, label, items: Array.isArray(filter.firstValue) ? filter.firstValue : [filter.firstValue]
22568
+ });
22569
+ break;
22570
+ case SearchQuery.BASE_PARAMS.FILENAME:
22571
+ restrictions.push({
22572
+ field, label, items: [filter.firstValue]
22573
+ });
22574
+ break;
22575
+ case SearchQuery.BASE_PARAMS.FILESIZE:
22576
+ restrictions.push({
22577
+ field, label, items: [this.translate.instant('eo.search.agg.filesize.' + filter.firstValue)]
22578
+ });
22579
+ break;
22580
+ case SearchQuery.BASE_PARAMS.CREATED:
22581
+ case SearchQuery.BASE_PARAMS.MODIFIED:
22582
+ restrictions.push({
22583
+ field, label, items: [this.createDateRestriction(filter)]
22584
+ });
22585
+ break;
22586
+ case SearchQuery.BASE_PARAMS.CREATOR:
22587
+ case SearchQuery.BASE_PARAMS.MODIFIER:
22588
+ this.systemService.getOrganizationObjects(filter.firstValue)
22589
+ .subscribe(orgUsers => restrictions.push({
22590
+ field, label, items: orgUsers.map(u => u.title)
22591
+ }));
22592
+ break;
22593
+ }
22594
+ }
22595
+ });
22596
+ return restrictions;
22597
+ }
22598
+ createDateRestriction(filter) {
22599
+ switch (filter.operator) {
22600
+ case SearchFilter.OPERATOR.RANGE:
22601
+ return this.translate.instant(`eo.search.agg.time.${filter.firstValue}`);
22602
+ case SearchFilter.OPERATOR.EQUAL:
22603
+ return `= ${this.datePipe.transform(filter.firstValue, 'eoShortDate')}`;
22604
+ case SearchFilter.OPERATOR.INTERVAL_INCLUDE_BOTH:
22605
+ return `${this.datePipe.transform(filter.firstValue, 'eoShortDate')} - ${this.datePipe.transform(filter.secondValue, 'eoShortDate')}`;
22606
+ case SearchFilter.OPERATOR.GREATER_OR_EQUAL:
22607
+ return `${this.translate.instant('eo.search.agg.time.span.since')} ${this.datePipe.transform(filter.firstValue, 'eoShortDate')}`;
22608
+ case SearchFilter.OPERATOR.LESS_OR_EQUAL:
22609
+ return `${this.translate.instant('eo.search.agg.time.span.until')} ${this.datePipe.transform(filter.firstValue, 'eoShortDate')}`;
22610
+ default:
22611
+ return `(${filter.operator}) ${this.datePipe.transform(filter.firstValue, 'eoShortDate')}`;
22612
+ }
22613
+ }
22614
+ /**
22615
+ * Creates a form control from a given form element
22616
+ * @param formElement
22617
+ * @returns
22618
+ */
22619
+ toFormControl(formElement) {
22620
+ // the `name` property of stored query form element has to be `qname` of form element,
22621
+ // because we may combine multiple forms (context form) and in this case there may
22622
+ // be conflicts in namings
22623
+ formElement.name = formElement.qname;
22624
+ if (formElement.type === 'TABLE') {
22625
+ let filters = this.storedQuery.getTableFilters(formElement.qname);
22626
+ if (filters && filters.length) {
22627
+ formElement.value = this.searchService.tableFiltersToElementValue(filters, formElement.elements);
22628
+ }
22629
+ else {
22630
+ formElement.value = [{}];
22631
+ delete formElement.isNotSetValue;
22632
+ }
22633
+ }
22634
+ else {
22635
+ // grab value for the control from corresponding query filters
22636
+ let filter = this.storedQuery.getFilter(formElement.qname);
22637
+ // we may have params that are not part of the queries filters. This may be the
22638
+ // case when we mark form elements as dynamic fields without providing a value
22639
+ if (filter) {
22640
+ // filter to have no value
22641
+ if (filter.operator === SearchFilter.OPERATOR.EQUAL && filter.firstValue === null) {
22642
+ formElement.isNotSetValue = true;
22643
+ }
22644
+ else {
22645
+ delete formElement.isNotSetValue;
22646
+ }
22647
+ formElement.value = this.searchService.filterToElementValue(this.storedQuery.getFilter(formElement.qname), formElement.type);
22648
+ }
22649
+ else if (formElement.qname !== StoredQueriesService.FULLTEXT) {
22650
+ formElement.value = undefined;
22651
+ delete formElement.isNotSetValue;
22652
+ }
22653
+ }
22654
+ // sync with params
22655
+ const match = this.storedQuery.parameter.find(param => {
22656
+ return (param.qname === formElement.qname) || (param.type === StoredQueriesService.FULLTEXT && formElement.qname === StoredQueriesService.FULLTEXT);
22657
+ });
22658
+ // every field that is part of the params is supposed to be dynamic
22659
+ formElement._dynamic = !!match;
22660
+ // create actual form control that could be used with
22661
+ // FormElementComponent to then render for elements
22662
+ // wrapper may be null in case of an error
22663
+ return this.formHelperService.elementToFormControl(formElement, 'SEARCH');
22664
+ }
22665
+ onStoredQueryLoaded() {
22666
+ this.router.navigate([{ outlets: { modal: 'search' } }]);
22667
+ }
22668
+ onStoredQueryExecute(evt) {
22669
+ const uriParam = encodeURIComponent(JSON.stringify(evt.queryJson));
22670
+ const uriParamQuery = { queryParams: { 'query': uriParam } };
22671
+ this.router.navigate(['/result'], uriParamQuery);
22672
+ }
22673
+ setIconTitles() {
22674
+ this.iconTitles = {
22675
+ share: this.translate.instant('eo.storedquery.share.title'),
22676
+ shared: this.translate.instant('eo.storedquery.sharedfor.title'),
22677
+ favor: this.translate.instant('eo.storedquery.favor.title'),
22678
+ favored: this.translate.instant('eo.storedquery.favoredfor.title')
22679
+ };
22680
+ }
22681
+ ngOnInit() {
22682
+ this.selection.focus$
22683
+ .pipe(untilDestroyed(this))
22684
+ .subscribe(q => {
22685
+ this.query = q;
22686
+ });
22687
+ this.setIconTitles();
22688
+ }
22689
+ trackByQName(index, item) {
22690
+ return item.qname;
22691
+ }
22692
+ trackByIndex(index, item) {
22693
+ return index;
22694
+ }
22695
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryDetailsComponent, deps: [{ token: i2$1.Router }, { token: i1.SearchService }, { token: i1.UserService }, { token: i1.SystemService }, { token: SelectionService }, { token: PendingChangesService }, { token: i1.StoredQueriesService }, { token: ObjectFormHelperService }, { token: i0.ElementRef }, { token: i1.TranslateService }, { token: i1.EventService }], target: i0.ɵɵFactoryTarget.Component }); }
22696
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: StoredQueryDetailsComponent, selector: "eo-stored-query-details", inputs: { query: "query" }, outputs: { notifyList: "notifyList" }, viewQueries: [{ propertyName: "storedQueryForm", first: true, predicate: ["storedQueryForm"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"storedQuery\">\n <div class=\"eo-head\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_saved_search.svg'\"\n [iconTitle]=\"('eo.view.navigation.storedqueries' | translate)\">\n </eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{ storedQuery.name }}</h2>\n <h3 class=\"eo-header-subtitle\" translate>eo.search.title.storedqueries</h3>\n </div>\n </header>\n </div>\n\n <div class=\"eo-body\">\n\n <div class=\"form\">\n\n <ng-template #queryForm>\n <eo-stored-query [query]=\"storedQuery\" [formOnly]=\"true\" #storedQueryForm\n (onQueryLoaded)=\"onStoredQueryLoaded()\"\n (onQueryExecute)=\"onStoredQueryExecute($event)\"></eo-stored-query>\n </ng-template>\n\n <form class=\"edit-form\" [formGroup]=\"editForm.form\" *ngIf=\"editForm.form; else queryForm\">\n\n <div class=\"context dark\">\n\n <!-- title and fulltext term fields -->\n <eo-form-input class=\"title\">\n <input type=\"text\" name=\"storedQueryTitle\" maxlength=\"64\" onfocus=\"this.select()\"\n [formControlName]=\"'storedQueryTitle'\"/>\n </eo-form-input>\n\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\n <div class=\"form-field\">\n <eo-form-element [skipToggle]=\"true\" [element]=\"editForm.fulltextFormControl\"\n [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"editForm.fulltextFormControl\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n\n <!-- context type form controls -->\n <h3>{{ storedQuery.contextFolderTypes[0]?.label }}</h3>\n <div class=\"form-field\" *ngFor=\"let ctxElement of editForm.contextControls; trackBy: trackByQName\">\n <eo-form-element [element]=\"ctxElement\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"ctxElement\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n </div>\n\n <!-- object type form controls -->\n <div class=\"form-fields\" [ngClass]=\"{empty: !editForm.controls?.length}\">\n <div class=\"form-field\" *ngFor=\"let element of editForm.controls; trackBy: trackByQName\">\n <eo-form-element [element]=\"element\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"element\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n </div>\n </form>\n </div>\n\n <aside class=\"aside\">\n\n <!-- favorite and share -->\n <div class=\"meta-actions\" *ngIf=\"!isNewQuery\">\n\n <ng-container *ngIf=\"isOwnQuery; else sharedWithMe\">\n <eo-icon class=\"button btn-share\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\" *ngIf=\"enableSharing\"\n [ngClass]=\"{active: storedQuery.shared || storedQuery.roles.length, editing: editingShare}\"\n (click)=\"toggleShareEdit()\"\n [iconTitle]=\"iconTitles.share\"></eo-icon>\n\n <eo-icon class=\"button btn-fav\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n [ngClass]=\"{active: storedQuery.favorite}\"\n (click)=\"toggleFavoriteState()\"\n [iconTitle]=\"iconTitles.favor\"></eo-icon>\n </ng-container>\n\n <ng-template #sharedWithMe>\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"iconTitles.shared\"></eo-icon>\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n [iconTitle]=\"iconTitles.favored\"></eo-icon>\n </ng-template>\n\n </div>\n\n <!-- roles that share this query -->\n <div class=\"meta-roles\" *ngIf=\"!isNewQuery\" [ngClass]=\"{dark: editingShare, empty: !storedQuery.roles?.length}\">\n\n <div class=\"label\" translate>eo.storedquery.share.sharedwith</div>\n <div class=\"form-field\" *ngIf=\"rolesPicker?.codesystem?.entries\">\n <eo-codesystem [pickerTitle]=\"rolesPicker.title\"\n [codesystem]=\"rolesPicker.codesystem\"\n [multiselect]=\"true\"\n [readonly]=\"!editingShare\"\n [inputStyleClass]=\"'stored-query__share'\"\n [(ngModel)]=\"rolesPicker.value\"></eo-codesystem>\n </div>\n\n <div class=\"share-actions\" *ngIf=\"editingShare\">\n <button class=\"secondary\" (click)=\"cancelShare()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary\" (click)=\"share()\" translate>eo.storedquery.share.ok</button>\n </div>\n </div>\n\n <!-- queries meta info like baseparam settings -->\n <div class=\"meta-data\" *ngIf=\"restrictions?.length\">\n <div class=\"restriction\" *ngFor=\"let restriction of restrictions; trackBy: trackByIndex\">\n <div class=\"label\">{{ restriction.label }}</div>\n <div class=\"items\">\n <div *ngFor=\"let item of restriction.items; trackBy: trackByIndex\">{{ item }}</div>\n </div>\n </div>\n </div>\n\n </aside>\n\n </div>\n\n <div class=\"actions\">\n <ng-container *ngIf=\"!editForm.form; else actionEdit\">\n <button class=\"secondary btn-delete\" (click)=\"isStoredQueryUsed() ? showDeleteDialog = true : delete()\"\n [disabled]=\"!isOwnQuery\" translate>eo.cta.button.delete\n </button>\n <button class=\"secondary btn-open\" (click)=\"setQueryToAppSearch()\" translate>eo.storedquery.load</button>\n <button class=\"primary grey btn-edit\" (click)=\"edit()\" [disabled]=\"!isOwnQuery\" translate>\n eo.storedquery.action.edit\n </button>\n <button class=\"primary btn-search\" [disabled]=\"storedQuery.state?.isEmpty\" (click)=\"executeQuery()\" translate>\n eo.storedquery.run\n </button>\n </ng-container>\n\n <eo-dialog [title]=\"'eo.storedquery.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'storedQuery-delete__dialog'\">\n <div>\n <span>{{'eo.storedquery.delete.dialog.message' | translate: {\n storedquery: this.storedQuery.name,\n name: this.info\n }\n }}\n </span>\n </div>\n <div class=\"action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.cta.button.cancel\n </button>\n <button type=\"button\" #confirmDelete (click)=\"delete(); showDeleteDialog = false\" class=\"button primary\"\n translate>eo.cta.button.delete\n </button>\n </div>\n </eo-dialog>\n\n <ng-template #actionEdit>\n <!-- action while editing the query form -->\n <button class=\"secondary btn-cancel\" (click)=\"cancelEdit()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary btn-save\" (click)=\"updateStoredQuery()\" [disabled]=\"editForm.form.invalid\" translate>\n eo.storedquery.action.save\n </button>\n </ng-template>\n </div>\n\n</ng-container>\n", styles: [":host{--stored-query-aside-width: 300px;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto}:host .eo-head{background-color:var(--color-white);border-bottom:1px solid var(--panel-header-border-bottom-color)}:host .eo-body{overflow-y:hidden}:host .eo-body .form{overflow-y:auto;padding:var(--app-pane-padding);padding-right:calc(var(--stored-query-aside-width) + var(--app-pane-padding) * 2)}:host .eo-body .form eo-stored-query{background-color:var(--color-white);padding:var(--app-pane-padding)}:host .eo-body .aside{width:var(--stored-query-aside-width);position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding);background-color:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1);box-sizing:border-box;padding:var(--app-pane-padding)}:host .eo-body .aside .meta-actions{display:flex;justify-content:flex-end;margin:0 -2px}:host .eo-body .aside .meta-actions eo-icon{margin:0 2px;padding:4px;color:var(--text-color-hint)}:host .eo-body .aside .meta-actions eo-icon.active{color:var(--color-favorite)}:host .eo-body .aside .meta-actions eo-icon.editing{background-color:var(--color-primary-2);color:var(--color-white);border-radius:2px 2px 0 0}:host .eo-body .aside .meta-actions eo-icon.sharedWithMe{background-color:var(--text-color-hint);color:var(--color-white);border-radius:2px}:host .eo-body .aside .meta-roles.dark{background-color:var(--color-primary-2);color:var(--color-white);border-radius:2px;padding:calc(var(--app-pane-padding) / 2);margin-bottom:var(--app-pane-padding)}:host .eo-body .aside .meta-roles.dark .actions{display:flex}:host .eo-body .aside .meta-roles.dark .label{display:none}:host .eo-body .aside .meta-roles.dark .form-field{background-color:rgba(var(--color-white-rgb),.2)}:host .eo-body .aside .meta-roles .form-field{background-color:rgba(var(--color-white-rgb),.2);border:1px solid rgba(var(--color-black-rgb),.1);padding:2px 2px 4px 4px;margin-bottom:calc(var(--app-pane-padding) / 2)}:host .eo-body .aside .meta-roles .label{color:var(--text-color-caption);font-style:italic;margin-bottom:calc(var(--app-pane-padding) / 4)}:host .eo-body .aside .meta-roles .share-actions{display:flex;justify-content:flex-end;margin:0 calc(var(--app-pane-padding) / 8 * -1)}:host .eo-body .aside .meta-roles .share-actions button{margin:0 calc(var(--app-pane-padding) / 8);padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}:host .eo-body .aside .meta-roles.empty:not(.dark) .label,:host .eo-body .aside .meta-roles.empty:not(.dark) .form-field{display:none}:host .eo-body .aside .meta-data{order:1;flex:1 1 40%;margin:0 0 var(--app-pane-padding) 0;display:table;border-collapse:collapse}:host .eo-body .aside .meta-data .restriction{display:table-row}:host .eo-body .aside .meta-data .restriction .label{display:table-cell;padding-right:calc(var(--app-pane-padding) / 2);color:var(--text-color-caption);font-style:italic}:host .eo-body .aside .meta-data .restriction .items{display:table-cell;border-left:1px solid rgba(var(--color-black-rgb),.1);padding:0 0 calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2)}:host .actions{display:flex;flex-flow:row;justify-content:flex-end;padding:var(--app-pane-padding) calc(var(--app-pane-padding) - 2px);background-color:var(--color-white);border-top:1px solid var(--panel-header-border-bottom-color)}:host .actions button{margin:0 2px}:host .edit-form{background-color:var(--color-white);max-width:500px}:host .edit-form .context{background-color:var(--color-primary-2);padding:calc(var(--app-pane-padding) / 2)}:host .edit-form .context h3{padding:var(--app-pane-padding) 0 calc(var(--app-pane-padding) / 2) 0;margin:0;font-weight:var(--font-weight-light);font-size:var(--font-subhead);color:var(--color-white);display:flex;justify-content:flex-end}:host .edit-form .form-fields{padding:calc(var(--app-pane-padding) / 2)}:host .edit-form .form-fields.empty{display:none}:host .edit-form .form-field{display:flex;flex-flow:row nowrap;align-items:center}:host .edit-form .form-field eo-form-element{flex:1 1 auto}:host .edit-form .form-field eo-dynamic-property-switch{flex:0 0 auto}:host eo-stored-query{max-width:500px;display:block}:host ::ng-deep eo-form-input.title{display:block;margin-bottom:var(--app-pane-padding)}:host ::ng-deep eo-form-input.title input{width:100%;font-size:var(--font-title);font-weight:var(--font-weight-light);border:0;background-color:transparent}::ng-deep .storedQuery-delete__dialog{padding:8px;min-height:unset!important}::ng-deep .storedQuery-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}::ng-deep .storedQuery-delete__dialog .storedQuery-delete__dialog_warning{color:var(--color-error)}\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: FormElementComponent, selector: "eo-form-element", inputs: ["situation", "skipToggle", "element"] }, { 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: QueryScopeSelectComponent, selector: "eo-query-scope-select", inputs: ["selection"], outputs: ["select"] }, { 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.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { 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.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: 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: StoredQueryComponent, selector: "eo-stored-query", inputs: ["query", "formOnly"], outputs: ["onQueryLoaded", "onQueryExecute"] }, { kind: "component", type: DynamicPropertySwitchComponent, selector: "eo-dynamic-property-switch", inputs: ["parentFormControl"], outputs: ["onPropertyChanged"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
22697
+ };
22698
+ StoredQueryDetailsComponent = __decorate([
22699
+ UntilDestroy()
22700
+ ], StoredQueryDetailsComponent);
22701
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryDetailsComponent, decorators: [{
22702
+ type: Component,
22703
+ args: [{ selector: 'eo-stored-query-details', template: "<ng-container *ngIf=\"storedQuery\">\n <div class=\"eo-head\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_saved_search.svg'\"\n [iconTitle]=\"('eo.view.navigation.storedqueries' | translate)\">\n </eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{ storedQuery.name }}</h2>\n <h3 class=\"eo-header-subtitle\" translate>eo.search.title.storedqueries</h3>\n </div>\n </header>\n </div>\n\n <div class=\"eo-body\">\n\n <div class=\"form\">\n\n <ng-template #queryForm>\n <eo-stored-query [query]=\"storedQuery\" [formOnly]=\"true\" #storedQueryForm\n (onQueryLoaded)=\"onStoredQueryLoaded()\"\n (onQueryExecute)=\"onStoredQueryExecute($event)\"></eo-stored-query>\n </ng-template>\n\n <form class=\"edit-form\" [formGroup]=\"editForm.form\" *ngIf=\"editForm.form; else queryForm\">\n\n <div class=\"context dark\">\n\n <!-- title and fulltext term fields -->\n <eo-form-input class=\"title\">\n <input type=\"text\" name=\"storedQueryTitle\" maxlength=\"64\" onfocus=\"this.select()\"\n [formControlName]=\"'storedQueryTitle'\"/>\n </eo-form-input>\n\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\n <div class=\"form-field\">\n <eo-form-element [skipToggle]=\"true\" [element]=\"editForm.fulltextFormControl\"\n [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"editForm.fulltextFormControl\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n\n <!-- context type form controls -->\n <h3>{{ storedQuery.contextFolderTypes[0]?.label }}</h3>\n <div class=\"form-field\" *ngFor=\"let ctxElement of editForm.contextControls; trackBy: trackByQName\">\n <eo-form-element [element]=\"ctxElement\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"ctxElement\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n </div>\n\n <!-- object type form controls -->\n <div class=\"form-fields\" [ngClass]=\"{empty: !editForm.controls?.length}\">\n <div class=\"form-field\" *ngFor=\"let element of editForm.controls; trackBy: trackByQName\">\n <eo-form-element [element]=\"element\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"element\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n </div>\n </form>\n </div>\n\n <aside class=\"aside\">\n\n <!-- favorite and share -->\n <div class=\"meta-actions\" *ngIf=\"!isNewQuery\">\n\n <ng-container *ngIf=\"isOwnQuery; else sharedWithMe\">\n <eo-icon class=\"button btn-share\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\" *ngIf=\"enableSharing\"\n [ngClass]=\"{active: storedQuery.shared || storedQuery.roles.length, editing: editingShare}\"\n (click)=\"toggleShareEdit()\"\n [iconTitle]=\"iconTitles.share\"></eo-icon>\n\n <eo-icon class=\"button btn-fav\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n [ngClass]=\"{active: storedQuery.favorite}\"\n (click)=\"toggleFavoriteState()\"\n [iconTitle]=\"iconTitles.favor\"></eo-icon>\n </ng-container>\n\n <ng-template #sharedWithMe>\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"iconTitles.shared\"></eo-icon>\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n [iconTitle]=\"iconTitles.favored\"></eo-icon>\n </ng-template>\n\n </div>\n\n <!-- roles that share this query -->\n <div class=\"meta-roles\" *ngIf=\"!isNewQuery\" [ngClass]=\"{dark: editingShare, empty: !storedQuery.roles?.length}\">\n\n <div class=\"label\" translate>eo.storedquery.share.sharedwith</div>\n <div class=\"form-field\" *ngIf=\"rolesPicker?.codesystem?.entries\">\n <eo-codesystem [pickerTitle]=\"rolesPicker.title\"\n [codesystem]=\"rolesPicker.codesystem\"\n [multiselect]=\"true\"\n [readonly]=\"!editingShare\"\n [inputStyleClass]=\"'stored-query__share'\"\n [(ngModel)]=\"rolesPicker.value\"></eo-codesystem>\n </div>\n\n <div class=\"share-actions\" *ngIf=\"editingShare\">\n <button class=\"secondary\" (click)=\"cancelShare()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary\" (click)=\"share()\" translate>eo.storedquery.share.ok</button>\n </div>\n </div>\n\n <!-- queries meta info like baseparam settings -->\n <div class=\"meta-data\" *ngIf=\"restrictions?.length\">\n <div class=\"restriction\" *ngFor=\"let restriction of restrictions; trackBy: trackByIndex\">\n <div class=\"label\">{{ restriction.label }}</div>\n <div class=\"items\">\n <div *ngFor=\"let item of restriction.items; trackBy: trackByIndex\">{{ item }}</div>\n </div>\n </div>\n </div>\n\n </aside>\n\n </div>\n\n <div class=\"actions\">\n <ng-container *ngIf=\"!editForm.form; else actionEdit\">\n <button class=\"secondary btn-delete\" (click)=\"isStoredQueryUsed() ? showDeleteDialog = true : delete()\"\n [disabled]=\"!isOwnQuery\" translate>eo.cta.button.delete\n </button>\n <button class=\"secondary btn-open\" (click)=\"setQueryToAppSearch()\" translate>eo.storedquery.load</button>\n <button class=\"primary grey btn-edit\" (click)=\"edit()\" [disabled]=\"!isOwnQuery\" translate>\n eo.storedquery.action.edit\n </button>\n <button class=\"primary btn-search\" [disabled]=\"storedQuery.state?.isEmpty\" (click)=\"executeQuery()\" translate>\n eo.storedquery.run\n </button>\n </ng-container>\n\n <eo-dialog [title]=\"'eo.storedquery.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'storedQuery-delete__dialog'\">\n <div>\n <span>{{'eo.storedquery.delete.dialog.message' | translate: {\n storedquery: this.storedQuery.name,\n name: this.info\n }\n }}\n </span>\n </div>\n <div class=\"action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.cta.button.cancel\n </button>\n <button type=\"button\" #confirmDelete (click)=\"delete(); showDeleteDialog = false\" class=\"button primary\"\n translate>eo.cta.button.delete\n </button>\n </div>\n </eo-dialog>\n\n <ng-template #actionEdit>\n <!-- action while editing the query form -->\n <button class=\"secondary btn-cancel\" (click)=\"cancelEdit()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary btn-save\" (click)=\"updateStoredQuery()\" [disabled]=\"editForm.form.invalid\" translate>\n eo.storedquery.action.save\n </button>\n </ng-template>\n </div>\n\n</ng-container>\n", styles: [":host{--stored-query-aside-width: 300px;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto}:host .eo-head{background-color:var(--color-white);border-bottom:1px solid var(--panel-header-border-bottom-color)}:host .eo-body{overflow-y:hidden}:host .eo-body .form{overflow-y:auto;padding:var(--app-pane-padding);padding-right:calc(var(--stored-query-aside-width) + var(--app-pane-padding) * 2)}:host .eo-body .form eo-stored-query{background-color:var(--color-white);padding:var(--app-pane-padding)}:host .eo-body .aside{width:var(--stored-query-aside-width);position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding);background-color:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1);box-sizing:border-box;padding:var(--app-pane-padding)}:host .eo-body .aside .meta-actions{display:flex;justify-content:flex-end;margin:0 -2px}:host .eo-body .aside .meta-actions eo-icon{margin:0 2px;padding:4px;color:var(--text-color-hint)}:host .eo-body .aside .meta-actions eo-icon.active{color:var(--color-favorite)}:host .eo-body .aside .meta-actions eo-icon.editing{background-color:var(--color-primary-2);color:var(--color-white);border-radius:2px 2px 0 0}:host .eo-body .aside .meta-actions eo-icon.sharedWithMe{background-color:var(--text-color-hint);color:var(--color-white);border-radius:2px}:host .eo-body .aside .meta-roles.dark{background-color:var(--color-primary-2);color:var(--color-white);border-radius:2px;padding:calc(var(--app-pane-padding) / 2);margin-bottom:var(--app-pane-padding)}:host .eo-body .aside .meta-roles.dark .actions{display:flex}:host .eo-body .aside .meta-roles.dark .label{display:none}:host .eo-body .aside .meta-roles.dark .form-field{background-color:rgba(var(--color-white-rgb),.2)}:host .eo-body .aside .meta-roles .form-field{background-color:rgba(var(--color-white-rgb),.2);border:1px solid rgba(var(--color-black-rgb),.1);padding:2px 2px 4px 4px;margin-bottom:calc(var(--app-pane-padding) / 2)}:host .eo-body .aside .meta-roles .label{color:var(--text-color-caption);font-style:italic;margin-bottom:calc(var(--app-pane-padding) / 4)}:host .eo-body .aside .meta-roles .share-actions{display:flex;justify-content:flex-end;margin:0 calc(var(--app-pane-padding) / 8 * -1)}:host .eo-body .aside .meta-roles .share-actions button{margin:0 calc(var(--app-pane-padding) / 8);padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}:host .eo-body .aside .meta-roles.empty:not(.dark) .label,:host .eo-body .aside .meta-roles.empty:not(.dark) .form-field{display:none}:host .eo-body .aside .meta-data{order:1;flex:1 1 40%;margin:0 0 var(--app-pane-padding) 0;display:table;border-collapse:collapse}:host .eo-body .aside .meta-data .restriction{display:table-row}:host .eo-body .aside .meta-data .restriction .label{display:table-cell;padding-right:calc(var(--app-pane-padding) / 2);color:var(--text-color-caption);font-style:italic}:host .eo-body .aside .meta-data .restriction .items{display:table-cell;border-left:1px solid rgba(var(--color-black-rgb),.1);padding:0 0 calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2)}:host .actions{display:flex;flex-flow:row;justify-content:flex-end;padding:var(--app-pane-padding) calc(var(--app-pane-padding) - 2px);background-color:var(--color-white);border-top:1px solid var(--panel-header-border-bottom-color)}:host .actions button{margin:0 2px}:host .edit-form{background-color:var(--color-white);max-width:500px}:host .edit-form .context{background-color:var(--color-primary-2);padding:calc(var(--app-pane-padding) / 2)}:host .edit-form .context h3{padding:var(--app-pane-padding) 0 calc(var(--app-pane-padding) / 2) 0;margin:0;font-weight:var(--font-weight-light);font-size:var(--font-subhead);color:var(--color-white);display:flex;justify-content:flex-end}:host .edit-form .form-fields{padding:calc(var(--app-pane-padding) / 2)}:host .edit-form .form-fields.empty{display:none}:host .edit-form .form-field{display:flex;flex-flow:row nowrap;align-items:center}:host .edit-form .form-field eo-form-element{flex:1 1 auto}:host .edit-form .form-field eo-dynamic-property-switch{flex:0 0 auto}:host eo-stored-query{max-width:500px;display:block}:host ::ng-deep eo-form-input.title{display:block;margin-bottom:var(--app-pane-padding)}:host ::ng-deep eo-form-input.title input{width:100%;font-size:var(--font-title);font-weight:var(--font-weight-light);border:0;background-color:transparent}::ng-deep .storedQuery-delete__dialog{padding:8px;min-height:unset!important}::ng-deep .storedQuery-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}::ng-deep .storedQuery-delete__dialog .storedQuery-delete__dialog_warning{color:var(--color-error)}\n"] }]
22704
+ }], ctorParameters: () => [{ type: i2$1.Router }, { type: i1.SearchService }, { type: i1.UserService }, { type: i1.SystemService }, { type: SelectionService }, { type: PendingChangesService }, { type: i1.StoredQueriesService }, { type: ObjectFormHelperService }, { type: i0.ElementRef }, { type: i1.TranslateService }, { type: i1.EventService }], propDecorators: { storedQueryForm: [{
22705
+ type: ViewChild,
22706
+ args: ['storedQueryForm']
22707
+ }], query: [{
22708
+ type: Input
22709
+ }], notifyList: [{
22710
+ type: Output
22711
+ }] } });
22712
+
22713
+ class StoredQueryModule {
22714
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
22715
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryModule, declarations: [StoredQueryComponent,
22716
+ StoredQueryDetailsComponent,
22717
+ DynamicPropertySwitchComponent], imports: [CommonModule,
22718
+ ObjectFormModule,
22719
+ UiModule,
22720
+ GridModule,
22721
+ FormsModule,
22722
+ ReactiveFormsModule,
22723
+ FormElementsModule], exports: [StoredQueryComponent,
22724
+ StoredQueryDetailsComponent] }); }
22725
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryModule, imports: [CommonModule,
22726
+ ObjectFormModule,
22727
+ UiModule,
22728
+ GridModule,
22729
+ FormsModule,
22730
+ ReactiveFormsModule,
22731
+ FormElementsModule] }); }
22732
+ }
22733
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryModule, decorators: [{
22734
+ type: NgModule,
22735
+ args: [{
22736
+ imports: [
22737
+ CommonModule,
22738
+ ObjectFormModule,
22739
+ UiModule,
22740
+ GridModule,
22741
+ FormsModule,
22742
+ ReactiveFormsModule,
22743
+ FormElementsModule
22744
+ ],
22745
+ declarations: [
22746
+ StoredQueryComponent,
22747
+ StoredQueryDetailsComponent,
22748
+ DynamicPropertySwitchComponent
22749
+ ],
22750
+ exports: [
22751
+ StoredQueryComponent,
22752
+ StoredQueryDetailsComponent
22753
+ ]
22754
+ }]
22755
+ }] });
22756
+
22757
+ class GridFilter {
22758
+ static operator(property, filter) {
22759
+ let firstValue = Array.isArray(filter) ? filter : (filter.filter || filter.dateFrom);
22760
+ const secondValue = filter.filterTo || filter.dateTo;
22761
+ const op = Array.isArray(firstValue) ? SearchFilter.OPERATOR.IN :
22762
+ filter.type === SimpleFilter.GREATER_THAN ? SearchFilter.OPERATOR.GREATER_THAN :
22763
+ filter.type === SimpleFilter.GREATER_THAN_OR_EQUAL ? SearchFilter.OPERATOR.GREATER_OR_EQUAL :
22764
+ filter.type === SimpleFilter.LESS_THAN ? SearchFilter.OPERATOR.LESS_THAN :
22765
+ filter.type === SimpleFilter.LESS_THAN_OR_EQUAL ? SearchFilter.OPERATOR.LESS_OR_EQUAL :
22766
+ filter.type === SimpleFilter.IN_RANGE ? SearchFilter.OPERATOR.INTERVAL_INCLUDE_BOTH :
22767
+ SearchFilter.OPERATOR.EQUAL;
22768
+ firstValue = firstValue && typeof firstValue === 'string' ? firstValue.replace(/\*/g, '\\*') : firstValue; // wildcard needs to be escaped
22769
+ firstValue = filter.type === SimpleFilter.CONTAINS ? `*${firstValue}*` :
22770
+ filter.type === SimpleFilter.STARTS_WITH ? `${firstValue}*` :
22771
+ filter.type === SimpleFilter.ENDS_WITH ? `*${firstValue}` :
22772
+ op === SearchFilter.OPERATOR.IN ? firstValue.filter(f => f !== '') :
22773
+ firstValue;
22774
+ return new SearchFilter(property, op, firstValue, secondValue, filter.filterType === 'date' ? { time: !!filter.withTime } : undefined);
22775
+ }
22776
+ }
22777
+
22778
+ var ResultListComponent_1;
22779
+ let ResultListComponent = class ResultListComponent {
22780
+ static { ResultListComponent_1 = this; }
22781
+ static { this.COLUMNS_DEFINITION = 'eo.framework.cache.columns.definition'; }
22782
+ set query(query) {
22783
+ this.storedQuery = undefined;
22784
+ if (!query) {
22785
+ this.invalidQuery();
22786
+ }
22787
+ else {
22788
+ if (query.name) {
22789
+ this.storedQueriesService.getStoredQueries$()
22790
+ .pipe(untilDestroyed(this))
22791
+ .subscribe((queriesSubscription) => {
22792
+ this.storedQuery = queriesSubscription.queries.filter(q => q.name === query.name)[0];
22793
+ });
22794
+ }
22795
+ this._query = this.searchService.buildQuery(query);
22796
+ if (this._query) {
22797
+ this.defaultQuery = this.searchService.buildQuery(this._query.getQueryJson());
22798
+ this.appSearchService.setQuery(this.defaultQuery);
22799
+ this.appSearchService.aggregate();
22800
+ const config = this.searchService.getResultFieldDefinitionConfig(this.query);
22801
+ this.configType = config.type;
22802
+ this.configContext = config.contextType;
22803
+ this.showLoader = true;
22804
+ this.searchService
22805
+ .getChunkedResult(this._query, 0, this.VIRTUAL_LIST_CHUNK_SIZE)
22806
+ .subscribe(result => {
22807
+ this.showLoader = false;
22808
+ this.clearQuery(this.clearAfterExecute);
22809
+ this.searchResult = result;
22810
+ }, Utils.throw(() => {
22811
+ this.showLoader = false;
22812
+ this.clearQuery(true);
22813
+ this.invalidQuery();
22814
+ }));
22815
+ this.querySubtitle = '';
22816
+ for (let i = 0; i < this.query.types.length; i++) {
22817
+ this.querySubtitle += this.query.types[i].label;
22818
+ if (i !== this.query.types.length - 1) {
22819
+ this.querySubtitle += ', ';
22820
+ }
22821
+ }
22822
+ }
22823
+ else {
22824
+ this.invalidQuery();
22825
+ }
22826
+ }
22827
+ }
22828
+ get query() {
22829
+ return this._query;
22830
+ }
22831
+ set searchResult(result) {
22832
+ // todo: backend should resolve query.fields and return config in specific order
22833
+ const _fields = result.fields ? of(result.fields) :
22834
+ this.searchService.fetchResultFieldDefinition(this.configType, this.configContext, 'ALL');
22835
+ _fields.subscribe(fields => {
22836
+ if (fields && this.query && this.query.fields && this.query.fields.length) {
22837
+ fields.elements = this.query.fields.map(f => fields.elements.find(e => f === e.hitname));
22838
+ }
22839
+ result.fields = fields || new FieldDefinition();
22840
+ this._result = result;
22841
+ this.processResults(this._result);
22842
+ });
22843
+ }
22844
+ get searchResult() {
22845
+ return this._result;
22846
+ }
22847
+ constructor(config, translate, gridApi, backend, appSearchService, searchService, eventService, storageService, storedQueriesService, router, fb) {
22848
+ this.config = config;
22849
+ this.translate = translate;
22850
+ this.gridApi = gridApi;
22851
+ this.backend = backend;
22852
+ this.appSearchService = appSearchService;
22853
+ this.searchService = searchService;
22854
+ this.eventService = eventService;
22855
+ this.storageService = storageService;
22856
+ this.storedQueriesService = storedQueriesService;
22857
+ this.router = router;
22858
+ this.fb = fb;
22859
+ this.setupForm = this.fb.group({
22860
+ exportCSVwithUrl: [false],
22861
+ });
22862
+ this.exportCSVwithUrlKey = 'eo.resultlist.cache.withUrl';
22863
+ this._exportCSVwithUrl = false;
22864
+ this.csvLoadingSpinnerVisibility = false;
22865
+ this.visibleConfig = false;
22866
+ this.showLoader = false;
22867
+ this.limitedList = false;
22868
+ this.resultGridOptions = {};
22869
+ this.settings = {};
22870
+ this.querySubtitle = '';
22871
+ this.savedSearchClicked = false;
22872
+ this.showDialogExport = false;
22873
+ this.showWarnExportCSVThreshold = false;
22874
+ this.title = '';
22875
+ this.emptyMessage = '';
22876
+ this.selectFirst = true;
22877
+ this.hasIcon = false;
22878
+ this.reference = false;
22879
+ this.onSelectionChanged = new EventEmitter();
22880
+ this.onFocusChanged = new EventEmitter();
22881
+ this.onDoubleClick = new EventEmitter();
22882
+ this.onContextMenu = new EventEmitter();
22883
+ this.onCountChanged = new EventEmitter();
22884
+ this.onRefresh = new EventEmitter();
22885
+ this.onResult = new EventEmitter();
22886
+ this.onQueryInvalid = new EventEmitter();
22887
+ // shortcut actions
22888
+ this.shortcuts = {
22889
+ id: 'eo.workspace.widget.hitlist.label',
22890
+ label: this.translate.instant('eo.workspace.widget.hitlist.label'),
22891
+ labelKey: 'eo.workspace.widget.hitlist.label',
22892
+ actions: [{
22893
+ name: this.translate.instant('eo.column.config.title'),
22894
+ nameKey: 'eo.column.config.title',
22895
+ shortcut: new Shortcut('P', false, false),
22896
+ onExecuteAction: () => {
22897
+ this.visibleConfig = !this.visibleConfig;
22898
+ },
22899
+ isHidden: () => {
22900
+ return false;
22901
+ }
22902
+ },
22903
+ {
22904
+ name: this.translate.instant('eo.resultlist.export.csv'),
22905
+ nameKey: 'eo.resultlist.export.csv',
22906
+ shortcut: new Shortcut('X', false, false),
22907
+ onExecuteAction: () => {
22908
+ this.exportCSV();
22909
+ },
22910
+ isHidden: () => {
22911
+ return false;
22912
+ }
22913
+ },
22914
+ {
22915
+ name: this.translate.instant('eo.object.actions.title'),
22916
+ nameKey: 'eo.object.actions.title',
22917
+ shortcut: new Shortcut('M', false, false),
22918
+ onExecuteAction: () => {
22919
+ this.list.showActions();
22920
+ },
22921
+ isHidden: () => {
22922
+ return false;
22923
+ }
22924
+ },
22925
+ {
22926
+ name: this.translate.instant('eo.list.refresh'),
22927
+ nameKey: 'eo.list.refresh',
22928
+ shortcut: new Shortcut('R', false, false),
22929
+ onExecuteAction: () => {
22930
+ this.refreshGrid();
22931
+ },
22932
+ isHidden: () => {
22933
+ return false;
22934
+ }
22935
+ }]
22936
+ };
22937
+ this.VIRTUAL_LIST_CHUNK_SIZE = this.config.getRaw('search.limit');
22938
+ this.resolveReferencesCsv = this.config.getRaw('search.resolveReferencesCSV') || false;
22939
+ this.resolveReferencesCsvThreshold = this.config.getRaw('search.resolveReferencesCSVThreshold') || 10000;
22940
+ this._cachedColumns = this.storageService.getItem(ResultListComponent_1.COLUMNS_DEFINITION) || [];
22941
+ this.setupForm.valueChanges.pipe(untilDestroyed(this)).subscribe((_) => {
22942
+ this._exportCSVwithUrl = this.setupForm.get('exportCSVwithUrl').value;
22943
+ this.storageService.setItem(this.exportCSVwithUrlKey, this.setupForm.get('exportCSVwithUrl').value);
22944
+ });
22945
+ }
22946
+ clearQuery(clearAfterExecute) {
22947
+ if (clearAfterExecute) {
22948
+ this.appSearchService.clearQuery();
22625
22949
  }
22626
- this.notifyList.emit({ unselect: false, update: false, payload: this.storedQuery });
22627
- }
22628
- setQueryToAppSearch() {
22629
- this.storedQueryForm.load();
22630
22950
  }
22631
- executeQuery() {
22632
- this.storedQueryForm.execute();
22951
+ invalidQuery() {
22952
+ this.onQueryInvalid.emit();
22633
22953
  }
22634
- // Save the current stored query
22635
- updateStoredQuery() {
22636
- const formData = this.getFormData();
22637
- this.storedQuery.filters = this.storedQuery.filters.filter(f => ~this.BASE_PARAMS_FIELDS.indexOf(f.property));
22638
- Object.keys(formData)
22639
- .forEach(k => {
22640
- if (k === this.FORM_INPUT_TITLE) {
22641
- this.storedQuery.name = formData[k];
22642
- }
22643
- else if (k === this.FORM_INPUT_FULLTEXT) {
22644
- this.storedQuery.term = formData[k];
22954
+ ngOnInit() {
22955
+ this.eventService
22956
+ .on(EnaioEvent.DMS_OBJECT_DELETED)
22957
+ .pipe(untilDestroyed(this))
22958
+ .subscribe((res) => {
22959
+ if (this.grid) {
22960
+ this.grid.updateRows(this.backend.update([res.data], [{ id: res.data.id }]));
22645
22961
  }
22646
- else {
22647
- let filters = this.searchService.getSearchFilter(this.storedQuery.types, k, formData[k]);
22648
- filters.forEach(f => this.storedQuery.addFilter(f));
22962
+ });
22963
+ this._exportCSVwithUrl = this.storageService.getItem(this.exportCSVwithUrlKey) || this.setupForm.get('exportCSVwithUrl').value;
22964
+ this.setupForm.patchValue({
22965
+ exportCSVwithUrl: this._exportCSVwithUrl
22966
+ });
22967
+ this.eventService
22968
+ .on(EnaioEvent.DMS_OBJECT_UPDATED)
22969
+ .pipe(untilDestroyed(this))
22970
+ .subscribe((res) => {
22971
+ if (this.grid) {
22972
+ this.updateRow(res.data.id, res.data.data);
22649
22973
  }
22650
22974
  });
22651
- this.storedQueriesService
22652
- .saveStoredQuery(this.storedQuery)
22653
- .subscribe(updatedStoredQuery => {
22654
- this.query = updatedStoredQuery;
22655
- this.resetEditForm();
22656
- this.finishPending();
22657
- this.notifyList.emit({ unselect: false, update: false, payload: updatedStoredQuery });
22658
- }, Utils.throw(null, this.translate.instant('eo.search.storedquery.save.error')));
22659
22975
  }
22660
- /**
22661
- * Toggle form elements to be a dynamic parameter or not
22662
- * @param event
22663
- */
22664
- parameterChanged(event) {
22665
- let m = this.storedQuery.parameter.find(p => p.qname === event.control);
22666
- if (m && !event.value) {
22667
- // remove existing parameter
22668
- this.storedQuery.parameter = this.storedQuery.parameter.filter(p => p.qname !== event.control);
22669
- }
22670
- else if (!m && event.value) {
22671
- // add parameter element
22672
- let param = this.formFieldToParameter(event.control);
22673
- if (param) {
22674
- this.storedQuery.parameter.push(param);
22976
+ ngAfterViewInit() {
22977
+ setTimeout(() => {
22978
+ if (this.grid && this._query) {
22979
+ this._query.sortOptions = (this.grid.api.getColumnState() || [])
22980
+ .map(model => new SortOption(GridService.qnameFormatter(model.colId + this.postfixSort(model.colId)), model.sort));
22981
+ this.query = this._query;
22675
22982
  }
22676
- }
22983
+ }, 200);
22677
22984
  }
22678
- getFormData() {
22679
- const properties = Object.keys(this.editForm.form.value);
22680
- let data = {};
22681
- properties.forEach(property => {
22682
- const fc = this.editForm.form.controls[property];
22683
- let formElement;
22684
- if (fc.controls && fc.controls[property]) {
22685
- const fe = fc.controls[property];
22686
- formElement = fe._eoFormElement;
22687
- }
22688
- if (formElement && formElement.isNotSetValue) {
22689
- data[property] = null;
22690
- }
22691
- else {
22692
- switch (property) {
22693
- case this.FORM_INPUT_TITLE: {
22694
- data[property] = this.editForm.form.value[property] || '';
22695
- break;
22696
- }
22697
- case this.FORM_INPUT_FULLTEXT: {
22698
- data[property] = this.editForm.form.value[property][StoredQueriesService.FULLTEXT] || '';
22699
- break;
22985
+ updateRow(id, data) {
22986
+ const matchRow = this.resultGridOptions.rowData.find((r) => r.id === id);
22987
+ const systemFields = ['created', 'creatortitle', 'modified', 'modifiertitle', 'title', 'description', 'type', 'version', 'filesize', 'filename', 'mimetypegroup', 'mimetype'];
22988
+ let missingColumns = this.resultGridOptions.columnDefs;
22989
+ if (matchRow) {
22990
+ Object.keys(matchRow).forEach((k) => {
22991
+ if (data.hasOwnProperty(k)) {
22992
+ if (data.hasOwnProperty(k + '_meta')) {
22993
+ // if it is an org field, it will have a title to show, otherwise it is a codesystem and we show the label
22994
+ matchRow[k] = data[k + '_meta'].title ? data[k + '_meta'].title : data[k + '_meta'].label;
22700
22995
  }
22701
- default: {
22702
- const v = this.editForm.form.value[property][property];
22703
- if (!UtilitiesService.isEmpty(v)) {
22704
- data[property] = v;
22705
- }
22996
+ else {
22997
+ matchRow[k] = data[k];
22706
22998
  }
22999
+ missingColumns = missingColumns.filter((column) => column.field !== k);
22707
23000
  }
22708
- }
22709
- });
22710
- return data;
22711
- }
22712
- /**
22713
- * Create a dynamic stored query parameter for a form element
22714
- * @param qname The form elements qname
22715
- * @returns
22716
- */
22717
- formFieldToParameter(qname) {
22718
- try {
22719
- let param;
22720
- // special handling for fulltext fields
22721
- if (qname === StoredQueriesService.FULLTEXT) {
22722
- param = {
22723
- qname: qname,
22724
- type: qname,
22725
- };
22726
- }
22727
- else {
22728
- const fc = this.editForm.form.controls[qname].controls[qname];
22729
- const fe = fc._eoFormElement;
22730
- param = {
22731
- qname: fe.qname,
22732
- type: fe.type
22733
- };
22734
- }
22735
- return param;
22736
- }
22737
- catch (e) {
22738
- return null;
22739
- }
22740
- }
22741
- resetEditForm() {
22742
- this.editForm = {
22743
- form: null,
22744
- fulltextFormControl: null,
22745
- controls: [],
22746
- contextControls: []
22747
- };
22748
- }
22749
- onFormChanges() {
22750
- this.editForm
22751
- .form
22752
- .valueChanges
22753
- .subscribe(() => this.onFormStatusChanged(this.editForm.form));
22754
- }
22755
- createEditForm() {
22756
- this.resetEditForm();
22757
- this.setupFormControls().subscribe(_ => {
22758
- let form = new ObjectFormGroup({});
22759
- let fcTitle = new UntypedFormControl('', Validators.required);
22760
- fcTitle.setValue(this.storedQuery.name);
22761
- let fcFulltext = this.toFormControl(this.storedQueriesService.getFulltextFormElement(this.translate.instant('eo.storedquery.search.term'), this.storedQuery.term));
22762
- this.editForm.fulltextFormControl = fcFulltext;
22763
- // add title and fulltext field
22764
- form.addControl(this.FORM_INPUT_TITLE, fcTitle);
22765
- form.addControl(this.FORM_INPUT_FULLTEXT, fcFulltext);
22766
- if (this.editForm.controls.length || this.editForm.contextControls.length) {
22767
- this.editForm.controls
22768
- .forEach((c) => form.addControl(c._eoFormControlWrapper.controlName, c));
22769
- this.editForm.contextControls
22770
- .forEach((c) => form.addControl(c._eoFormControlWrapper.controlName, c));
22771
- }
22772
- this.editForm.form = form;
22773
- this.onFormChanges();
22774
- });
22775
- }
22776
- setupFormControls() {
22777
- const tasks = [];
22778
- // setting up object type form only makes sense with one target type
22779
- if (this.storedQuery.types.length === 1) {
22780
- tasks.push(this.systemService.getFormElementsFromFormModel(this.storedQuery.types[0].qname, 'SEARCH').pipe(tap((elements) => {
22781
- elements.forEach(e => {
22782
- // prevent tables and binary types from being rendered in the stored query form
22783
- if (e.type !== 'BINARY') {
22784
- if (e.required) {
22785
- e.required = false;
22786
- }
22787
- if (e.readonly) {
22788
- e.readonly = false;
22789
- }
22790
- const fc = this.toFormControl(e);
22791
- if (fc) {
22792
- this.editForm.controls.push(fc);
22793
- }
23001
+ else if (data.hasOwnProperty(k.split('.')[1])) {
23002
+ // some technical names have the object type as a prefix, we have to get rid of it
23003
+ const kSplit = k.split('.')[1];
23004
+ if (data.hasOwnProperty(kSplit + '_meta')) {
23005
+ matchRow[k] = data[kSplit + '_meta'].title ? data[kSplit + '_meta'].title : data[kSplit + '_meta'].label;
22794
23006
  }
22795
- });
22796
- })));
22797
- }
22798
- // add context form controls as well
22799
- if (this.storedQuery.contextFolderTypes.length) {
22800
- tasks.push(this.systemService.getFormElementsFromFormModel(this.storedQuery.contextFolderTypes[0].qname, 'SEARCH', true).pipe(tap((elements) => {
22801
- elements.forEach(e => {
22802
- const fc = this.toFormControl(e);
22803
- if (fc) {
22804
- this.editForm.contextControls.push(fc);
23007
+ else {
23008
+ matchRow[k] = data[kSplit];
22805
23009
  }
22806
- });
22807
- })));
22808
- }
22809
- return tasks.length ? forkJoin(tasks) : of(tasks);
22810
- }
22811
- fetchRoles() {
22812
- if (!this.systemRoles || this.systemRoles.length === 0) {
22813
- this.systemService
22814
- .getRoles()
22815
- .subscribe(res => {
22816
- this.systemRoles = res;
22817
- this.rolesPicker.codesystem = {
22818
- entries: this.systemRoles.map(role => ({
22819
- id: role.id,
22820
- label: role.name,
22821
- defaultrepresentation: role.name,
22822
- data: role.name
22823
- })).sort(Utils.sortValues('label'))
22824
- };
23010
+ missingColumns = missingColumns.filter((column) => column.field !== k);
23011
+ }
23012
+ });
23013
+ // we need to iterate through the not already applied columns, which were changed from null or to null
23014
+ missingColumns.forEach((column) => {
23015
+ if (data.hasOwnProperty(column.field)) {
23016
+ matchRow[column.field] = data[column.field];
23017
+ }
23018
+ else if (data.hasOwnProperty(column.field.split('.')[1])) {
23019
+ matchRow[column.field] = data[column.field.split('.')[1]];
23020
+ }
23021
+ else {
23022
+ if (!systemFields.includes(column.field)) {
23023
+ matchRow[column.field] = null;
23024
+ }
23025
+ }
22825
23026
  });
23027
+ matchRow.id = id;
23028
+ const rowNode = this.grid.api.getRowNode(id);
23029
+ rowNode && rowNode.setData(matchRow);
22826
23030
  }
22827
23031
  }
22828
- getRestrictions() {
22829
- let restrictions = [];
22830
- // type restriction
22831
- if (this.storedQuery.types && this.storedQuery.types.length) {
22832
- restrictions.push({
22833
- field: SearchQuery.BASE_PARAMS.TYPE,
22834
- label: this.translate.instant('eo.storedquery.restriction.type'),
22835
- items: this.storedQuery.types.map(t => t.label)
22836
- });
23032
+ refreshGrid() {
23033
+ if (this.query) {
23034
+ this._query.sortOptions = (this.grid.api.getColumnState() || [])
23035
+ .map(model => new SortOption(GridService.qnameFormatter(model.colId + this.postfixSort(model.colId)), model.sort));
23036
+ this.query = this._query;
22837
23037
  }
22838
- // add base params restrictions
22839
- (this.storedQuery.filters || []).forEach(filter => {
22840
- if (filter && ~this.BASE_PARAMS_FIELDS.indexOf(filter.property)) {
22841
- const field = filter.property;
22842
- const label = this.translate.instant('eo.storedquery.restriction.' + field);
22843
- switch (field) {
22844
- case SearchQuery.BASE_PARAMS.MIMETYPEGROUP:
22845
- restrictions.push({
22846
- field, label, items: Array.isArray(filter.firstValue) ? filter.firstValue : [filter.firstValue]
22847
- });
22848
- break;
22849
- case SearchQuery.BASE_PARAMS.FILENAME:
22850
- restrictions.push({
22851
- field, label, items: [filter.firstValue]
22852
- });
22853
- break;
22854
- case SearchQuery.BASE_PARAMS.FILESIZE:
22855
- restrictions.push({
22856
- field, label, items: [this.translate.instant('eo.search.agg.filesize.' + filter.firstValue)]
22857
- });
22858
- break;
22859
- case SearchQuery.BASE_PARAMS.CREATED:
22860
- case SearchQuery.BASE_PARAMS.MODIFIED:
22861
- restrictions.push({
22862
- field, label, items: [this.createDateRestriction(filter)]
22863
- });
22864
- break;
22865
- case SearchQuery.BASE_PARAMS.CREATOR:
22866
- case SearchQuery.BASE_PARAMS.MODIFIER:
22867
- this.systemService.getOrganizationObjects(filter.firstValue)
22868
- .subscribe(orgUsers => restrictions.push({
22869
- field, label, items: orgUsers.map(u => u.title)
22870
- }));
22871
- break;
22872
- }
22873
- }
22874
- });
22875
- return restrictions;
23038
+ this.onRefresh.emit(this.query);
22876
23039
  }
22877
- createDateRestriction(filter) {
22878
- switch (filter.operator) {
22879
- case SearchFilter.OPERATOR.RANGE:
22880
- return this.translate.instant(`eo.search.agg.time.${filter.firstValue}`);
22881
- case SearchFilter.OPERATOR.EQUAL:
22882
- return `= ${this.datePipe.transform(filter.firstValue, 'eoShortDate')}`;
22883
- case SearchFilter.OPERATOR.INTERVAL_INCLUDE_BOTH:
22884
- return `${this.datePipe.transform(filter.firstValue, 'eoShortDate')} - ${this.datePipe.transform(filter.secondValue, 'eoShortDate')}`;
22885
- case SearchFilter.OPERATOR.GREATER_OR_EQUAL:
22886
- return `${this.translate.instant('eo.search.agg.time.span.since')} ${this.datePipe.transform(filter.firstValue, 'eoShortDate')}`;
22887
- case SearchFilter.OPERATOR.LESS_OR_EQUAL:
22888
- return `${this.translate.instant('eo.search.agg.time.span.until')} ${this.datePipe.transform(filter.firstValue, 'eoShortDate')}`;
22889
- default:
22890
- return `(${filter.operator}) ${this.datePipe.transform(filter.firstValue, 'eoShortDate')}`;
23040
+ onColumnResized(column) {
23041
+ let col = this._cachedColumns.find(c => c.qname === column.colDef.refData.qname);
23042
+ if (col) {
23043
+ col.width = column.actualWidth;
23044
+ }
23045
+ else {
23046
+ this._cachedColumns.push({ qname: column.colDef.refData.qname, width: column.actualWidth });
22891
23047
  }
23048
+ this.storageService.setItem(ResultListComponent_1.COLUMNS_DEFINITION, this._cachedColumns);
22892
23049
  }
22893
23050
  /**
22894
- * Creates a form control from a given form element
22895
- * @param formElement
22896
- * @returns
23051
+ * Event handler for grid configuration
23052
+ * @param $event
22897
23053
  */
22898
- toFormControl(formElement) {
22899
- // the `name` property of stored query form element has to be `qname` of form element,
22900
- // because we may combine multiple forms (context form) and in this case there may
22901
- // be conflicts in namings
22902
- formElement.name = formElement.qname;
22903
- if (formElement.type === 'TABLE') {
22904
- let filters = this.storedQuery.getTableFilters(formElement.qname);
22905
- if (filters && filters.length) {
22906
- formElement.value = this.searchService.tableFiltersToElementValue(filters, formElement.elements);
22907
- }
22908
- else {
22909
- formElement.value = [{}];
22910
- delete formElement.isNotSetValue;
22911
- }
23054
+ onConfigChanged(refresh) {
23055
+ if (refresh) {
23056
+ this.refreshGrid();
22912
23057
  }
22913
- else {
22914
- // grab value for the control from corresponding query filters
22915
- let filter = this.storedQuery.getFilter(formElement.qname);
22916
- // we may have params that are not part of the queries filters. This may be the
22917
- // case when we mark form elements as dynamic fields without providing a value
22918
- if (filter) {
22919
- // filter to have no value
22920
- if (filter.operator === SearchFilter.OPERATOR.EQUAL && filter.firstValue === null) {
22921
- formElement.isNotSetValue = true;
22922
- }
22923
- else {
22924
- delete formElement.isNotSetValue;
23058
+ }
23059
+ /**
23060
+ * Process Search result & generate column definitions
23061
+ * @param result
23062
+ */
23063
+ processResults(result) {
23064
+ this.visibleConfig = false;
23065
+ this.onResult.emit(result);
23066
+ this.totalHits = result.count.value;
23067
+ this.limitedList = this.totalHits > result.hits.length;
23068
+ let gridOptions = { context: {}, onSortChanged: () => this.onPageChanged(), onFilterChanged: () => this.onPageChanged() };
23069
+ const searchMode = result.fields.mode ? result.fields.mode : null;
23070
+ this.settings = this.limitedList && this.query ? { total: this.totalHits, size: this.VIRTUAL_LIST_CHUNK_SIZE, relation: result.count.relation } : null;
23071
+ gridOptions.rowData = result.hits;
23072
+ const { elements, sortorder, grouporder, pinned, alignmentx } = result.fields;
23073
+ gridOptions.context.count = result.count;
23074
+ gridOptions.columnDefs = this.gridApi.getColumnDefs(elements, sortorder, grouporder, pinned, alignmentx, false, this._cachedColumns, searchMode);
23075
+ const refreshGrid = this.hasGridOptions;
23076
+ Object.assign(this.resultGridOptions, gridOptions, this.gridOptions);
23077
+ if (refreshGrid) {
23078
+ // reload grid component
23079
+ this.resultGridOptions = {};
23080
+ setTimeout(() => Object.assign(this.resultGridOptions, gridOptions, this.gridOptions), 0);
23081
+ }
23082
+ }
23083
+ postfixSort(id) {
23084
+ // todo: remove when it's fixed on backend
23085
+ return id.match(/(^sysobject\.|^sysdocument\.)(creator$|modifier$)/) ? 'title' : '';
23086
+ }
23087
+ onPageChanged(page = 1) {
23088
+ if (this.limitedList && this.query) {
23089
+ this.fetchRowData({
23090
+ startRow: this.VIRTUAL_LIST_CHUNK_SIZE * (page - 1),
23091
+ sortModel: this.grid.api.getColumnState(),
23092
+ filterModel: this.grid.api.getFilterModel(),
23093
+ successCallback: (rows, total, relation) => {
23094
+ this.settings = { total, relation, size: this.VIRTUAL_LIST_CHUNK_SIZE, page };
23095
+ this.grid.api.setGridOption('rowData', rows);
23096
+ this.grid.selectRow(0);
22925
23097
  }
22926
- formElement.value = this.searchService.filterToElementValue(this.storedQuery.getFilter(formElement.qname), formElement.type);
22927
- }
22928
- else if (formElement.qname !== StoredQueriesService.FULLTEXT) {
22929
- formElement.value = undefined;
22930
- delete formElement.isNotSetValue;
22931
- }
23098
+ });
22932
23099
  }
22933
- // sync with params
22934
- const match = this.storedQuery.parameter.find(param => {
22935
- return (param.qname === formElement.qname) || (param.type === StoredQueriesService.FULLTEXT && formElement.qname === StoredQueriesService.FULLTEXT);
23100
+ }
23101
+ /**
23102
+ * Function for fetching the items to be displayed with a virtual row model.
23103
+ *
23104
+ * @param params - row model params (incl. startRow, endRow, sortModel and filterModel)
23105
+ */
23106
+ fetchRowData(params) {
23107
+ if (this.query) {
23108
+ this.updateQuery(params);
23109
+ this.searchService
23110
+ .getChunkedResult(this.query, params.startRow, this.VIRTUAL_LIST_CHUNK_SIZE)
23111
+ .subscribe(result => {
23112
+ this.totalHits = this.grid.gridOptions.context.rowCount = result.count.value;
23113
+ this.grid.gridOptions.context.count = result.count;
23114
+ params.successCallback(result.hits, this.totalHits, result.count.relation);
23115
+ });
23116
+ }
23117
+ }
23118
+ updateQuery(params) {
23119
+ this.query.sortOptions = (params.sortModel || this.grid.api.getColumnState() || [])
23120
+ .map(model => new SortOption(GridService.qnameFormatter(model.colId + this.postfixSort(model.colId)), model.sort));
23121
+ this.query.filters = this.defaultQuery.filters
23122
+ .concat((Object.keys(params.filterModel || this.grid.api.getFilterModel()) || [])
23123
+ .map(key => GridFilter.operator(GridService.qnameFormatter(key), (params.filterModel || this.grid.api.getFilterModel())[key])));
23124
+ this.query.searchMode = SearchQuery.DEFAULT_SEARCH_MODE;
23125
+ }
23126
+ executeSuggestSearch() {
23127
+ // todo: implement
23128
+ }
23129
+ resultHasReferences() {
23130
+ return this._result.fields.elements.some(element => element.type === 'ORGANIZATION' || element.type === 'REFERENCE');
23131
+ }
23132
+ openDialogExport() {
23133
+ this.showDialogExport = true;
23134
+ if (this.resolveReferencesCsv
23135
+ && (this.list.gridCount.totalCount > this.resolveReferencesCsvThreshold || this.list.gridCount.relation === 'gte')
23136
+ && this.resultHasReferences()) {
23137
+ this.showWarnExportCSVThreshold = true;
23138
+ }
23139
+ }
23140
+ exportCSV() {
23141
+ this.csvLoadingSpinnerVisibility = true;
23142
+ this.updateQuery({});
23143
+ this.showWarnExportCSVThreshold = false;
23144
+ this.showDialogExport = false;
23145
+ const queryJson = this.query.getQueryJson(this.resolveReferencesCsv);
23146
+ queryJson.fields = [];
23147
+ this.resultGridOptions?.columnDefs.forEach(colDef => {
23148
+ queryJson.fields.push(colDef['field'] + ' ' + colDef.headerName);
22936
23149
  });
22937
- // every field that is part of the params is supposed to be dynamic
22938
- formElement._dynamic = !!match;
22939
- // create actual form control that could be used with
22940
- // FormElementComponent to then render for elements
22941
- // wrapper may be null in case of an error
22942
- return this.formHelperService.elementToFormControl(formElement, 'SEARCH');
23150
+ this.searchService.downloadCsvFromQuery(queryJson, this._exportCSVwithUrl).subscribe(() => {
23151
+ this.csvLoadingSpinnerVisibility = false;
23152
+ });
23153
+ }
23154
+ parseDmsParams(data) {
23155
+ return { id: data && data.id ? data.id : null, type: data && data.type ? data.type : null };
23156
+ }
23157
+ get hasGridOptions() {
23158
+ return !!(this.resultGridOptions.datasource || this.resultGridOptions.rowData);
22943
23159
  }
22944
23160
  onStoredQueryLoaded() {
23161
+ this.savedSearchClicked = false;
22945
23162
  this.router.navigate([{ outlets: { modal: 'search' } }]);
22946
23163
  }
22947
23164
  onStoredQueryExecute(evt) {
23165
+ this.savedSearchClicked = false;
22948
23166
  const uriParam = encodeURIComponent(JSON.stringify(evt.queryJson));
22949
23167
  const uriParamQuery = { queryParams: { 'query': uriParam } };
22950
23168
  this.router.navigate(['/result'], uriParamQuery);
22951
23169
  }
22952
- setIconTitles() {
22953
- this.iconTitles = {
22954
- share: this.translate.instant('eo.storedquery.share.title'),
22955
- shared: this.translate.instant('eo.storedquery.sharedfor.title'),
22956
- favor: this.translate.instant('eo.storedquery.favor.title'),
22957
- favored: this.translate.instant('eo.storedquery.favoredfor.title')
22958
- };
22959
- }
22960
- ngOnInit() {
22961
- this.selection.focus$
22962
- .pipe(untilDestroyed(this))
22963
- .subscribe(q => {
22964
- this.query = q;
22965
- });
22966
- this.setIconTitles();
22967
- }
22968
- trackByQName(index, item) {
22969
- return item.qname;
22970
- }
22971
- trackByIndex(index, item) {
22972
- return index;
22973
- }
22974
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryDetailsComponent, deps: [{ token: i2$1.Router }, { token: i1.SearchService }, { token: i1.UserService }, { token: i1.SystemService }, { token: SelectionService }, { token: PendingChangesService }, { token: i1.StoredQueriesService }, { token: ObjectFormHelperService }, { token: i0.ElementRef }, { token: i1.TranslateService }, { token: i1.EventService }], target: i0.ɵɵFactoryTarget.Component }); }
22975
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: StoredQueryDetailsComponent, selector: "eo-stored-query-details", inputs: { query: "query" }, outputs: { notifyList: "notifyList" }, viewQueries: [{ propertyName: "storedQueryForm", first: true, predicate: ["storedQueryForm"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"storedQuery\">\n <div class=\"eo-head\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_saved_search.svg'\"\n [iconTitle]=\"('eo.view.navigation.storedqueries' | translate)\">\n </eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{ storedQuery.name }}</h2>\n <h3 class=\"eo-header-subtitle\" translate>eo.search.title.storedqueries</h3>\n </div>\n </header>\n </div>\n\n <div class=\"eo-body\">\n\n <div class=\"form\">\n\n <ng-template #queryForm>\n <eo-stored-query [query]=\"storedQuery\" [formOnly]=\"true\" #storedQueryForm\n (onQueryLoaded)=\"onStoredQueryLoaded()\"\n (onQueryExecute)=\"onStoredQueryExecute($event)\"></eo-stored-query>\n </ng-template>\n\n <form class=\"edit-form\" [formGroup]=\"editForm.form\" *ngIf=\"editForm.form; else queryForm\">\n\n <div class=\"context dark\">\n\n <!-- title and fulltext term fields -->\n <eo-form-input class=\"title\">\n <input type=\"text\" name=\"storedQueryTitle\" maxlength=\"64\" onfocus=\"this.select()\"\n [formControlName]=\"'storedQueryTitle'\"/>\n </eo-form-input>\n\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\n <div class=\"form-field\">\n <eo-form-element [skipToggle]=\"true\" [element]=\"editForm.fulltextFormControl\"\n [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"editForm.fulltextFormControl\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n\n <!-- context type form controls -->\n <h3>{{ storedQuery.contextFolderTypes[0]?.label }}</h3>\n <div class=\"form-field\" *ngFor=\"let ctxElement of editForm.contextControls; trackBy: trackByQName\">\n <eo-form-element [element]=\"ctxElement\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"ctxElement\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n </div>\n\n <!-- object type form controls -->\n <div class=\"form-fields\" [ngClass]=\"{empty: !editForm.controls?.length}\">\n <div class=\"form-field\" *ngFor=\"let element of editForm.controls; trackBy: trackByQName\">\n <eo-form-element [element]=\"element\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"element\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n </div>\n </form>\n </div>\n\n <aside class=\"aside\">\n\n <!-- favorite and share -->\n <div class=\"meta-actions\" *ngIf=\"!isNewQuery\">\n\n <ng-container *ngIf=\"isOwnQuery; else sharedWithMe\">\n <eo-icon class=\"button btn-share\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\" *ngIf=\"enableSharing\"\n [ngClass]=\"{active: storedQuery.shared || storedQuery.roles.length, editing: editingShare}\"\n (click)=\"toggleShareEdit()\"\n [iconTitle]=\"iconTitles.share\"></eo-icon>\n\n <eo-icon class=\"button btn-fav\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n [ngClass]=\"{active: storedQuery.favorite}\"\n (click)=\"toggleFavoriteState()\"\n [iconTitle]=\"iconTitles.favor\"></eo-icon>\n </ng-container>\n\n <ng-template #sharedWithMe>\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"iconTitles.shared\"></eo-icon>\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n [iconTitle]=\"iconTitles.favored\"></eo-icon>\n </ng-template>\n\n </div>\n\n <!-- roles that share this query -->\n <div class=\"meta-roles\" *ngIf=\"!isNewQuery\" [ngClass]=\"{dark: editingShare, empty: !storedQuery.roles?.length}\">\n\n <div class=\"label\" translate>eo.storedquery.share.sharedwith</div>\n <div class=\"form-field\" *ngIf=\"rolesPicker?.codesystem?.entries\">\n <eo-codesystem [pickerTitle]=\"rolesPicker.title\"\n [codesystem]=\"rolesPicker.codesystem\"\n [multiselect]=\"true\"\n [readonly]=\"!editingShare\"\n [inputStyleClass]=\"'stored-query__share'\"\n [(ngModel)]=\"rolesPicker.value\"></eo-codesystem>\n </div>\n\n <div class=\"share-actions\" *ngIf=\"editingShare\">\n <button class=\"secondary\" (click)=\"cancelShare()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary\" (click)=\"share()\" translate>eo.storedquery.share.ok</button>\n </div>\n </div>\n\n <!-- queries meta info like baseparam settings -->\n <div class=\"meta-data\" *ngIf=\"restrictions?.length\">\n <div class=\"restriction\" *ngFor=\"let restriction of restrictions; trackBy: trackByIndex\">\n <div class=\"label\">{{ restriction.label }}</div>\n <div class=\"items\">\n <div *ngFor=\"let item of restriction.items; trackBy: trackByIndex\">{{ item }}</div>\n </div>\n </div>\n </div>\n\n </aside>\n\n </div>\n\n <div class=\"actions\">\n <ng-container *ngIf=\"!editForm.form; else actionEdit\">\n <button class=\"secondary btn-delete\" (click)=\"isStoredQueryUsed() ? showDeleteDialog = true : delete()\"\n [disabled]=\"!isOwnQuery\" translate>eo.cta.button.delete\n </button>\n <button class=\"secondary btn-open\" (click)=\"setQueryToAppSearch()\" translate>eo.storedquery.load</button>\n <button class=\"primary grey btn-edit\" (click)=\"edit()\" [disabled]=\"!isOwnQuery\" translate>\n eo.storedquery.action.edit\n </button>\n <button class=\"primary btn-search\" [disabled]=\"storedQuery.state?.isEmpty\" (click)=\"executeQuery()\" translate>\n eo.storedquery.run\n </button>\n </ng-container>\n\n <eo-dialog [title]=\"'eo.storedquery.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'storedQuery-delete__dialog'\">\n <div>\n <span>{{'eo.storedquery.delete.dialog.message' | translate: {\n storedquery: this.storedQuery.name,\n name: this.info\n }\n }}\n </span>\n </div>\n <div class=\"action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.cta.button.cancel\n </button>\n <button type=\"button\" #confirmDelete (click)=\"delete(); showDeleteDialog = false\" class=\"button primary\"\n translate>eo.cta.button.delete\n </button>\n </div>\n </eo-dialog>\n\n <ng-template #actionEdit>\n <!-- action while editing the query form -->\n <button class=\"secondary btn-cancel\" (click)=\"cancelEdit()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary btn-save\" (click)=\"updateStoredQuery()\" [disabled]=\"editForm.form.invalid\" translate>\n eo.storedquery.action.save\n </button>\n </ng-template>\n </div>\n\n</ng-container>\n", styles: [":host{--stored-query-aside-width: 300px;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto}:host .eo-head{background-color:var(--color-white);border-bottom:1px solid var(--panel-header-border-bottom-color)}:host .eo-body{overflow-y:hidden}:host .eo-body .form{overflow-y:auto;padding:var(--app-pane-padding);padding-right:calc(var(--stored-query-aside-width) + var(--app-pane-padding) * 2)}:host .eo-body .form eo-stored-query{background-color:var(--color-white);padding:var(--app-pane-padding)}:host .eo-body .aside{width:var(--stored-query-aside-width);position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding);background-color:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1);box-sizing:border-box;padding:var(--app-pane-padding)}:host .eo-body .aside .meta-actions{display:flex;justify-content:flex-end;margin:0 -2px}:host .eo-body .aside .meta-actions eo-icon{margin:0 2px;padding:4px;color:var(--text-color-hint)}:host .eo-body .aside .meta-actions eo-icon.active{color:var(--color-favorite)}:host .eo-body .aside .meta-actions eo-icon.editing{background-color:var(--color-primary-2);color:var(--color-white);border-radius:2px 2px 0 0}:host .eo-body .aside .meta-actions eo-icon.sharedWithMe{background-color:var(--text-color-hint);color:var(--color-white);border-radius:2px}:host .eo-body .aside .meta-roles.dark{background-color:var(--color-primary-2);color:var(--color-white);border-radius:2px;padding:calc(var(--app-pane-padding) / 2);margin-bottom:var(--app-pane-padding)}:host .eo-body .aside .meta-roles.dark .actions{display:flex}:host .eo-body .aside .meta-roles.dark .label{display:none}:host .eo-body .aside .meta-roles.dark .form-field{background-color:rgba(var(--color-white-rgb),.2)}:host .eo-body .aside .meta-roles .form-field{background-color:rgba(var(--color-white-rgb),.2);border:1px solid rgba(var(--color-black-rgb),.1);padding:2px 2px 4px 4px;margin-bottom:calc(var(--app-pane-padding) / 2)}:host .eo-body .aside .meta-roles .label{color:var(--text-color-caption);font-style:italic;margin-bottom:calc(var(--app-pane-padding) / 4)}:host .eo-body .aside .meta-roles .share-actions{display:flex;justify-content:flex-end;margin:0 calc(var(--app-pane-padding) / 8 * -1)}:host .eo-body .aside .meta-roles .share-actions button{margin:0 calc(var(--app-pane-padding) / 8);padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}:host .eo-body .aside .meta-roles.empty:not(.dark) .label,:host .eo-body .aside .meta-roles.empty:not(.dark) .form-field{display:none}:host .eo-body .aside .meta-data{order:1;flex:1 1 40%;margin:0 0 var(--app-pane-padding) 0;display:table;border-collapse:collapse}:host .eo-body .aside .meta-data .restriction{display:table-row}:host .eo-body .aside .meta-data .restriction .label{display:table-cell;padding-right:calc(var(--app-pane-padding) / 2);color:var(--text-color-caption);font-style:italic}:host .eo-body .aside .meta-data .restriction .items{display:table-cell;border-left:1px solid rgba(var(--color-black-rgb),.1);padding:0 0 calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2)}:host .actions{display:flex;flex-flow:row;justify-content:flex-end;padding:var(--app-pane-padding) calc(var(--app-pane-padding) - 2px);background-color:var(--color-white);border-top:1px solid var(--panel-header-border-bottom-color)}:host .actions button{margin:0 2px}:host .edit-form{background-color:var(--color-white);max-width:500px}:host .edit-form .context{background-color:var(--color-primary-2);padding:calc(var(--app-pane-padding) / 2)}:host .edit-form .context h3{padding:var(--app-pane-padding) 0 calc(var(--app-pane-padding) / 2) 0;margin:0;font-weight:var(--font-weight-light);font-size:var(--font-subhead);color:var(--color-white);display:flex;justify-content:flex-end}:host .edit-form .form-fields{padding:calc(var(--app-pane-padding) / 2)}:host .edit-form .form-fields.empty{display:none}:host .edit-form .form-field{display:flex;flex-flow:row nowrap;align-items:center}:host .edit-form .form-field eo-form-element{flex:1 1 auto}:host .edit-form .form-field eo-dynamic-property-switch{flex:0 0 auto}:host eo-stored-query{max-width:500px;display:block}:host ::ng-deep eo-form-input.title{display:block;margin-bottom:var(--app-pane-padding)}:host ::ng-deep eo-form-input.title input{width:100%;font-size:var(--font-title);font-weight:var(--font-weight-light);border:0;background-color:transparent}::ng-deep .storedQuery-delete__dialog{padding:8px;min-height:unset!important}::ng-deep .storedQuery-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}::ng-deep .storedQuery-delete__dialog .storedQuery-delete__dialog_warning{color:var(--color-error)}\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: FormElementComponent, selector: "eo-form-element", inputs: ["situation", "skipToggle", "element"] }, { 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: QueryScopeSelectComponent, selector: "eo-query-scope-select", inputs: ["selection"], outputs: ["select"] }, { 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.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { 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.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: 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: StoredQueryComponent, selector: "eo-stored-query", inputs: ["query", "formOnly"], outputs: ["onQueryLoaded", "onQueryExecute"] }, { kind: "component", type: DynamicPropertySwitchComponent, selector: "eo-dynamic-property-switch", inputs: ["parentFormControl"], outputs: ["onPropertyChanged"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
23170
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListComponent, deps: [{ token: i1.Config }, { token: i1.TranslateService }, { token: GridService }, { token: i1.BackendService }, { token: AppSearchService }, { token: i1.SearchService }, { token: i1.EventService }, { token: i1.LocalStorageService }, { token: i1.StoredQueriesService }, { token: i2$1.Router }, { token: i1$3.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
23171
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ResultListComponent, selector: "eo-result-list", inputs: { title: "title", configType: "configType", configContext: "configContext", clearAfterExecute: "clearAfterExecute", emptyMessage: "emptyMessage", selectFirst: "selectFirst", gridOptions: "gridOptions", hasIcon: "hasIcon", reference: "reference", query: "query", searchResult: "searchResult" }, outputs: { onSelectionChanged: "onSelectionChanged", onFocusChanged: "onFocusChanged", onDoubleClick: "onDoubleClick", onContextMenu: "onContextMenu", onCountChanged: "onCountChanged", onRefresh: "onRefresh", onResult: "onResult", onQueryInvalid: "onQueryInvalid" }, viewQueries: [{ propertyName: "grid", first: true, predicate: ["eoGrid"], descendants: true }, { propertyName: "list", first: true, predicate: ["eoList"], descendants: true }], ngImport: i0, template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"result-list__loader\" [size]=\"'medium'\"></eo-loading-spinner>\n</div>\n<eo-column-configurator *ngIf=\"visibleConfig\" [visible]=\"visibleConfig\"\n [configType]=\"configType\" [configContext]=\"configContext\" [eoGrid]=\"grid\"\n (onConfigChanged)=\"visibleConfig = false; onConfigChanged($event)\" ></eo-column-configurator>\n\n<eo-list-container #eoList [applySelection]=\"{}\" [loading]=\"false\" [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\" [eoShortcuts]=\"shortcuts\">\n <eo-icon class=\"eo-header-icon\" *ngIf=\"hasIcon\" [iconSrc]=\"'assets/_default/svg/ic_search.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\">{{title || ('eo.search.title' | translate)}}</div>\n <div class=\"eo-header-subtitle\">\n <span *ngIf=\"!storedQuery; else storedQueryText\" class=\"eo-header-subtitle__label\" [title]=\"querySubtitle\">{{querySubtitle}}</span>\n <ng-template #storedQueryText>\n <ng-container *ngIf=\"storedQuery.parameter.length === 0; else storedQueryDialog\">\n <span class=\"eo-header-subtitle__label\" [title]=\"('eo.search.aside.summary.storedquery' | translate) + ': ' + storedQuery.name\">\n {{'eo.search.aside.summary.storedquery' | translate}}: {{storedQuery.name}}\n </span>\n </ng-container>\n </ng-template>\n <ng-template #storedQueryDialog>\n <div class=\"stored-query\">\n <span>\n {{'eo.search.aside.summary.storedquery' | translate}}:\n </span>\n <button class=\"sq\" (click)=\"savedSearchClicked = true\" (keyup.enter)=\"savedSearchClicked = true\" tabindex=\"0\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_stored_query.svg'\"></eo-icon>\n <span>{{storedQuery.name}}</span>\n </button>\n </div>\n </ng-template>\n <span *ngIf=\"query?.contextFolderTypes.length === 1\" translate\n [translateParams]=\"{type: query.contextFolderTypes[0].label}\">eo.search.objecttype.form.context</span>\n <span class=\"term\" *ngIf=\"!storedQuery && query?.term && !clearAfterExecute\" [title]=\"('eo.search.result.term' | translate) + ': ' + query.term\">{{'eo.search.result.term' | translate}} : \"{{query.term}}\"</span>\n <div class=\"suggest\" *ngIf=\"searchResult?.suggests\">{{'eo.search.suggest' | translate}}<a href=\"javascript:void(0)\" (click)=\"executeSuggestSearch()\">{{searchResult.suggests[0]}}</a> ?\n </div>\n </div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" (click)=\"refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n <eo-icon class=\"button export-button\" [hidden]=\"!query\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\" [iconTitle]=\"('eo.resultlist.export.csv' | translate)\"\n (click)=\"openDialogExport()\" *ngIf=\"!csvLoadingSpinnerVisibility\"></eo-icon>\n <eo-loading-spinner [size]=\"'small'\" *ngIf=\"csvLoadingSpinnerVisibility\" class=\"spinner\"></eo-loading-spinner>\n <eo-icon class=\"button config-button\" [iconSrc]=\"'assets/_default/svg/ic_settings.svg'\" [iconTitle]=\"('eo.column.config.title' | translate)\"\n (click)=\"visibleConfig = !visibleConfig\"></eo-icon>\n <eo-icon class=\"button actions-button\" (click)=\"eoList.showActions()\" [iconTitle]=\"('eo.object.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\" *ngIf=\"!reference\"></eo-icon>\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid [gridOptions]=\"resultGridOptions\" *ngIf=\"hasGridOptions; else error\"\n [showFooter]=\"true\" (eoGridColumnResized)=\"onColumnResized($event)\" [selectFirst]=\"selectFirst\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event);onCountChanged.emit($event);\"\n (eoGridContextMenuClick)=\"eoList.onContextMenu($event);onContextMenu.emit($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event);onSelectionChanged.emit($event)\"\n (eoGridDoubleClick)=\"eoList.onDoubleClick($event);onDoubleClick.emit($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event);onFocusChanged.emit($event)\">\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n <!--<eo-quick-filter [eoGrid]=\"eoGrid\"></eo-quick-filter>-->\n <eo-pagination [settings]=\"settings\" (pageChanged)=\"onPageChanged($event)\"></eo-pagination>\n </div>\n\n <div class=\"empty\">\n <eo-error-message [emptyState]=\"{text: emptyMessage || 'eo.search.result.expired'}\"></eo-error-message>\n </div>\n </eo-grid>\n </div>\n <ng-template #error>\n\n <eo-error-message *ngIf=\"hasGridOptions\" [emptyState]=\"{text:'eo.search.mode.expert.result.empty'}\">\n </eo-error-message>\n\n </ng-template>\n</eo-list-container>\n\n<eo-dialog [visible]=\"savedSearchClicked\" (hide)=\"savedSearchClicked = false\" [title]=\"'eo.search.aside.summary.storedquery' | translate\">\n\n</eo-dialog>\n<eo-dialog [title]=\"'eo.resultlist.export.csv.dialog.title' | translate\" [(visible)]=\"showDialogExport\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'export__dialog'\">\n <form [formGroup]=\"setupForm\">\n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.resultlist.export.csv.dialog.objectUrl.label' | translate\">\n <eo-checkbox formControlName=\"exportCSVwithUrl\">\n </eo-checkbox>\n </eo-form-input>\n </form>\n\n @if(showWarnExportCSVThreshold){\n <div class=\"threshold-warning\">{{'eo.resultlist.export.csv.threshold.dialog.message' | translate}}</div>\n }\n\n <div class=\"action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showDialogExport = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"exportCSV()\" class=\"button primary\"\n translate>eo.resultlist.export.csv.dialog.export</button>\n </div>\n</eo-dialog>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background);height:100%}:host .spinner{padding:calc(var(--app-pane-padding) / 4)}:host .result-head{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0}:host .result-head .header-info{flex:1}:host .result-head .header-info .header-sub-title .term{margin:0 var(--app-pane-padding)}:host .result-head .header-info .header-title{padding-bottom:calc(var(--app-pane-padding) / 4);font-size:20px;-webkit-user-select:none;user-select:none}:host .result-head .header-info .status{display:flex}:host .result-head .header-info .status .term{flex:1}:host .result-head .actions eo-icon{padding:calc(var(--app-pane-padding) / 4);cursor:pointer}: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 .result-list__loader{margin:auto}:host .stored-query{display:flex;max-height:45vh}:host .stored-query span{padding-right:calc(var(--app-pane-padding) / 2)}:host .stored-query>div{background-color:var(--color-white);padding:calc(var(--app-pane-padding) / 2);margin:0 1px;border-radius:2px 0 0 2px}:host .stored-query>div eo-icon{padding:calc(var(--app-pane-padding) / 4);color:var(--text-color-caption)}:host .stored-query .sq{overflow:hidden;border-radius:2px;padding:calc(var(--app-pane-padding) / 100);background-color:var(--color-white);color:var(--text-color-caption);text-decoration:none;cursor:pointer;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;flex-flow:row;align-items:center;background-color:var(--list-item-hover-background)}:host .stored-query .sq>eo-icon{color:var(--text-color-hint);flex-shrink:0}:host .stored-query .sq>span{text-overflow:ellipsis;overflow:hidden;padding:0 calc(var(--app-pane-padding) / 2)}eo-stored-query{border-radius:0 2px 2px 0;background-color:var(--color-white);padding:var(--app-pane-padding);overflow-y:auto}::ng-deep .export__dialog{padding:8px;min-height:unset!important}::ng-deep .export__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}.threshold-warning{padding-top:var(--app-pane-padding)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { 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: ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { 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: ColumnConfiguratorComponent, selector: "eo-column-configurator", inputs: ["configType", "configContext", "visible", "eoGrid"], outputs: ["onConfigChanged"] }, { kind: "component", type: TotalCountComponent, selector: "eo-total-count", inputs: ["eoGrid", "outsideGrid", "gridCount"] }, { kind: "component", type: PaginationComponent, selector: "eo-pagination", inputs: ["settings"], outputs: ["pageChanged"] }, { kind: "directive", type: ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { 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: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
22976
23172
  };
22977
- StoredQueryDetailsComponent = __decorate([
22978
- UntilDestroy()
22979
- ], StoredQueryDetailsComponent);
22980
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryDetailsComponent, decorators: [{
23173
+ ResultListComponent = ResultListComponent_1 = __decorate([
23174
+ UntilDestroy()
23175
+ ], ResultListComponent);
23176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListComponent, decorators: [{
22981
23177
  type: Component,
22982
- args: [{ selector: 'eo-stored-query-details', template: "<ng-container *ngIf=\"storedQuery\">\n <div class=\"eo-head\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_saved_search.svg'\"\n [iconTitle]=\"('eo.view.navigation.storedqueries' | translate)\">\n </eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{ storedQuery.name }}</h2>\n <h3 class=\"eo-header-subtitle\" translate>eo.search.title.storedqueries</h3>\n </div>\n </header>\n </div>\n\n <div class=\"eo-body\">\n\n <div class=\"form\">\n\n <ng-template #queryForm>\n <eo-stored-query [query]=\"storedQuery\" [formOnly]=\"true\" #storedQueryForm\n (onQueryLoaded)=\"onStoredQueryLoaded()\"\n (onQueryExecute)=\"onStoredQueryExecute($event)\"></eo-stored-query>\n </ng-template>\n\n <form class=\"edit-form\" [formGroup]=\"editForm.form\" *ngIf=\"editForm.form; else queryForm\">\n\n <div class=\"context dark\">\n\n <!-- title and fulltext term fields -->\n <eo-form-input class=\"title\">\n <input type=\"text\" name=\"storedQueryTitle\" maxlength=\"64\" onfocus=\"this.select()\"\n [formControlName]=\"'storedQueryTitle'\"/>\n </eo-form-input>\n\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\n <div class=\"form-field\">\n <eo-form-element [skipToggle]=\"true\" [element]=\"editForm.fulltextFormControl\"\n [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"editForm.fulltextFormControl\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n\n <!-- context type form controls -->\n <h3>{{ storedQuery.contextFolderTypes[0]?.label }}</h3>\n <div class=\"form-field\" *ngFor=\"let ctxElement of editForm.contextControls; trackBy: trackByQName\">\n <eo-form-element [element]=\"ctxElement\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"ctxElement\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n </div>\n\n <!-- object type form controls -->\n <div class=\"form-fields\" [ngClass]=\"{empty: !editForm.controls?.length}\">\n <div class=\"form-field\" *ngFor=\"let element of editForm.controls; trackBy: trackByQName\">\n <eo-form-element [element]=\"element\" [situation]=\"'SEARCH'\"></eo-form-element>\n <eo-dynamic-property-switch [parentFormControl]=\"element\"\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\n </div>\n </div>\n </form>\n </div>\n\n <aside class=\"aside\">\n\n <!-- favorite and share -->\n <div class=\"meta-actions\" *ngIf=\"!isNewQuery\">\n\n <ng-container *ngIf=\"isOwnQuery; else sharedWithMe\">\n <eo-icon class=\"button btn-share\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\" *ngIf=\"enableSharing\"\n [ngClass]=\"{active: storedQuery.shared || storedQuery.roles.length, editing: editingShare}\"\n (click)=\"toggleShareEdit()\"\n [iconTitle]=\"iconTitles.share\"></eo-icon>\n\n <eo-icon class=\"button btn-fav\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n [ngClass]=\"{active: storedQuery.favorite}\"\n (click)=\"toggleFavoriteState()\"\n [iconTitle]=\"iconTitles.favor\"></eo-icon>\n </ng-container>\n\n <ng-template #sharedWithMe>\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"iconTitles.shared\"></eo-icon>\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n [iconTitle]=\"iconTitles.favored\"></eo-icon>\n </ng-template>\n\n </div>\n\n <!-- roles that share this query -->\n <div class=\"meta-roles\" *ngIf=\"!isNewQuery\" [ngClass]=\"{dark: editingShare, empty: !storedQuery.roles?.length}\">\n\n <div class=\"label\" translate>eo.storedquery.share.sharedwith</div>\n <div class=\"form-field\" *ngIf=\"rolesPicker?.codesystem?.entries\">\n <eo-codesystem [pickerTitle]=\"rolesPicker.title\"\n [codesystem]=\"rolesPicker.codesystem\"\n [multiselect]=\"true\"\n [readonly]=\"!editingShare\"\n [inputStyleClass]=\"'stored-query__share'\"\n [(ngModel)]=\"rolesPicker.value\"></eo-codesystem>\n </div>\n\n <div class=\"share-actions\" *ngIf=\"editingShare\">\n <button class=\"secondary\" (click)=\"cancelShare()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary\" (click)=\"share()\" translate>eo.storedquery.share.ok</button>\n </div>\n </div>\n\n <!-- queries meta info like baseparam settings -->\n <div class=\"meta-data\" *ngIf=\"restrictions?.length\">\n <div class=\"restriction\" *ngFor=\"let restriction of restrictions; trackBy: trackByIndex\">\n <div class=\"label\">{{ restriction.label }}</div>\n <div class=\"items\">\n <div *ngFor=\"let item of restriction.items; trackBy: trackByIndex\">{{ item }}</div>\n </div>\n </div>\n </div>\n\n </aside>\n\n </div>\n\n <div class=\"actions\">\n <ng-container *ngIf=\"!editForm.form; else actionEdit\">\n <button class=\"secondary btn-delete\" (click)=\"isStoredQueryUsed() ? showDeleteDialog = true : delete()\"\n [disabled]=\"!isOwnQuery\" translate>eo.cta.button.delete\n </button>\n <button class=\"secondary btn-open\" (click)=\"setQueryToAppSearch()\" translate>eo.storedquery.load</button>\n <button class=\"primary grey btn-edit\" (click)=\"edit()\" [disabled]=\"!isOwnQuery\" translate>\n eo.storedquery.action.edit\n </button>\n <button class=\"primary btn-search\" [disabled]=\"storedQuery.state?.isEmpty\" (click)=\"executeQuery()\" translate>\n eo.storedquery.run\n </button>\n </ng-container>\n\n <eo-dialog [title]=\"'eo.storedquery.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'storedQuery-delete__dialog'\">\n <div>\n <span>{{'eo.storedquery.delete.dialog.message' | translate: {\n storedquery: this.storedQuery.name,\n name: this.info\n }\n }}\n </span>\n </div>\n <div class=\"action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.cta.button.cancel\n </button>\n <button type=\"button\" #confirmDelete (click)=\"delete(); showDeleteDialog = false\" class=\"button primary\"\n translate>eo.cta.button.delete\n </button>\n </div>\n </eo-dialog>\n\n <ng-template #actionEdit>\n <!-- action while editing the query form -->\n <button class=\"secondary btn-cancel\" (click)=\"cancelEdit()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary btn-save\" (click)=\"updateStoredQuery()\" [disabled]=\"editForm.form.invalid\" translate>\n eo.storedquery.action.save\n </button>\n </ng-template>\n </div>\n\n</ng-container>\n", styles: [":host{--stored-query-aside-width: 300px;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto}:host .eo-head{background-color:var(--color-white);border-bottom:1px solid var(--panel-header-border-bottom-color)}:host .eo-body{overflow-y:hidden}:host .eo-body .form{overflow-y:auto;padding:var(--app-pane-padding);padding-right:calc(var(--stored-query-aside-width) + var(--app-pane-padding) * 2)}:host .eo-body .form eo-stored-query{background-color:var(--color-white);padding:var(--app-pane-padding)}:host .eo-body .aside{width:var(--stored-query-aside-width);position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding);background-color:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1);box-sizing:border-box;padding:var(--app-pane-padding)}:host .eo-body .aside .meta-actions{display:flex;justify-content:flex-end;margin:0 -2px}:host .eo-body .aside .meta-actions eo-icon{margin:0 2px;padding:4px;color:var(--text-color-hint)}:host .eo-body .aside .meta-actions eo-icon.active{color:var(--color-favorite)}:host .eo-body .aside .meta-actions eo-icon.editing{background-color:var(--color-primary-2);color:var(--color-white);border-radius:2px 2px 0 0}:host .eo-body .aside .meta-actions eo-icon.sharedWithMe{background-color:var(--text-color-hint);color:var(--color-white);border-radius:2px}:host .eo-body .aside .meta-roles.dark{background-color:var(--color-primary-2);color:var(--color-white);border-radius:2px;padding:calc(var(--app-pane-padding) / 2);margin-bottom:var(--app-pane-padding)}:host .eo-body .aside .meta-roles.dark .actions{display:flex}:host .eo-body .aside .meta-roles.dark .label{display:none}:host .eo-body .aside .meta-roles.dark .form-field{background-color:rgba(var(--color-white-rgb),.2)}:host .eo-body .aside .meta-roles .form-field{background-color:rgba(var(--color-white-rgb),.2);border:1px solid rgba(var(--color-black-rgb),.1);padding:2px 2px 4px 4px;margin-bottom:calc(var(--app-pane-padding) / 2)}:host .eo-body .aside .meta-roles .label{color:var(--text-color-caption);font-style:italic;margin-bottom:calc(var(--app-pane-padding) / 4)}:host .eo-body .aside .meta-roles .share-actions{display:flex;justify-content:flex-end;margin:0 calc(var(--app-pane-padding) / 8 * -1)}:host .eo-body .aside .meta-roles .share-actions button{margin:0 calc(var(--app-pane-padding) / 8);padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}:host .eo-body .aside .meta-roles.empty:not(.dark) .label,:host .eo-body .aside .meta-roles.empty:not(.dark) .form-field{display:none}:host .eo-body .aside .meta-data{order:1;flex:1 1 40%;margin:0 0 var(--app-pane-padding) 0;display:table;border-collapse:collapse}:host .eo-body .aside .meta-data .restriction{display:table-row}:host .eo-body .aside .meta-data .restriction .label{display:table-cell;padding-right:calc(var(--app-pane-padding) / 2);color:var(--text-color-caption);font-style:italic}:host .eo-body .aside .meta-data .restriction .items{display:table-cell;border-left:1px solid rgba(var(--color-black-rgb),.1);padding:0 0 calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2)}:host .actions{display:flex;flex-flow:row;justify-content:flex-end;padding:var(--app-pane-padding) calc(var(--app-pane-padding) - 2px);background-color:var(--color-white);border-top:1px solid var(--panel-header-border-bottom-color)}:host .actions button{margin:0 2px}:host .edit-form{background-color:var(--color-white);max-width:500px}:host .edit-form .context{background-color:var(--color-primary-2);padding:calc(var(--app-pane-padding) / 2)}:host .edit-form .context h3{padding:var(--app-pane-padding) 0 calc(var(--app-pane-padding) / 2) 0;margin:0;font-weight:var(--font-weight-light);font-size:var(--font-subhead);color:var(--color-white);display:flex;justify-content:flex-end}:host .edit-form .form-fields{padding:calc(var(--app-pane-padding) / 2)}:host .edit-form .form-fields.empty{display:none}:host .edit-form .form-field{display:flex;flex-flow:row nowrap;align-items:center}:host .edit-form .form-field eo-form-element{flex:1 1 auto}:host .edit-form .form-field eo-dynamic-property-switch{flex:0 0 auto}:host eo-stored-query{max-width:500px;display:block}:host ::ng-deep eo-form-input.title{display:block;margin-bottom:var(--app-pane-padding)}:host ::ng-deep eo-form-input.title input{width:100%;font-size:var(--font-title);font-weight:var(--font-weight-light);border:0;background-color:transparent}::ng-deep .storedQuery-delete__dialog{padding:8px;min-height:unset!important}::ng-deep .storedQuery-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}::ng-deep .storedQuery-delete__dialog .storedQuery-delete__dialog_warning{color:var(--color-error)}\n"] }]
22983
- }], ctorParameters: () => [{ type: i2$1.Router }, { type: i1.SearchService }, { type: i1.UserService }, { type: i1.SystemService }, { type: SelectionService }, { type: PendingChangesService }, { type: i1.StoredQueriesService }, { type: ObjectFormHelperService }, { type: i0.ElementRef }, { type: i1.TranslateService }, { type: i1.EventService }], propDecorators: { storedQueryForm: [{
23178
+ args: [{ selector: 'eo-result-list', template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"result-list__loader\" [size]=\"'medium'\"></eo-loading-spinner>\n</div>\n<eo-column-configurator *ngIf=\"visibleConfig\" [visible]=\"visibleConfig\"\n [configType]=\"configType\" [configContext]=\"configContext\" [eoGrid]=\"grid\"\n (onConfigChanged)=\"visibleConfig = false; onConfigChanged($event)\" ></eo-column-configurator>\n\n<eo-list-container #eoList [applySelection]=\"{}\" [loading]=\"false\" [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\" [eoShortcuts]=\"shortcuts\">\n <eo-icon class=\"eo-header-icon\" *ngIf=\"hasIcon\" [iconSrc]=\"'assets/_default/svg/ic_search.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\">{{title || ('eo.search.title' | translate)}}</div>\n <div class=\"eo-header-subtitle\">\n <span *ngIf=\"!storedQuery; else storedQueryText\" class=\"eo-header-subtitle__label\" [title]=\"querySubtitle\">{{querySubtitle}}</span>\n <ng-template #storedQueryText>\n <ng-container *ngIf=\"storedQuery.parameter.length === 0; else storedQueryDialog\">\n <span class=\"eo-header-subtitle__label\" [title]=\"('eo.search.aside.summary.storedquery' | translate) + ': ' + storedQuery.name\">\n {{'eo.search.aside.summary.storedquery' | translate}}: {{storedQuery.name}}\n </span>\n </ng-container>\n </ng-template>\n <ng-template #storedQueryDialog>\n <div class=\"stored-query\">\n <span>\n {{'eo.search.aside.summary.storedquery' | translate}}:\n </span>\n <button class=\"sq\" (click)=\"savedSearchClicked = true\" (keyup.enter)=\"savedSearchClicked = true\" tabindex=\"0\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_stored_query.svg'\"></eo-icon>\n <span>{{storedQuery.name}}</span>\n </button>\n </div>\n </ng-template>\n <span *ngIf=\"query?.contextFolderTypes.length === 1\" translate\n [translateParams]=\"{type: query.contextFolderTypes[0].label}\">eo.search.objecttype.form.context</span>\n <span class=\"term\" *ngIf=\"!storedQuery && query?.term && !clearAfterExecute\" [title]=\"('eo.search.result.term' | translate) + ': ' + query.term\">{{'eo.search.result.term' | translate}} : \"{{query.term}}\"</span>\n <div class=\"suggest\" *ngIf=\"searchResult?.suggests\">{{'eo.search.suggest' | translate}}<a href=\"javascript:void(0)\" (click)=\"executeSuggestSearch()\">{{searchResult.suggests[0]}}</a> ?\n </div>\n </div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" (click)=\"refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n <eo-icon class=\"button export-button\" [hidden]=\"!query\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\" [iconTitle]=\"('eo.resultlist.export.csv' | translate)\"\n (click)=\"openDialogExport()\" *ngIf=\"!csvLoadingSpinnerVisibility\"></eo-icon>\n <eo-loading-spinner [size]=\"'small'\" *ngIf=\"csvLoadingSpinnerVisibility\" class=\"spinner\"></eo-loading-spinner>\n <eo-icon class=\"button config-button\" [iconSrc]=\"'assets/_default/svg/ic_settings.svg'\" [iconTitle]=\"('eo.column.config.title' | translate)\"\n (click)=\"visibleConfig = !visibleConfig\"></eo-icon>\n <eo-icon class=\"button actions-button\" (click)=\"eoList.showActions()\" [iconTitle]=\"('eo.object.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\" *ngIf=\"!reference\"></eo-icon>\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid [gridOptions]=\"resultGridOptions\" *ngIf=\"hasGridOptions; else error\"\n [showFooter]=\"true\" (eoGridColumnResized)=\"onColumnResized($event)\" [selectFirst]=\"selectFirst\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event);onCountChanged.emit($event);\"\n (eoGridContextMenuClick)=\"eoList.onContextMenu($event);onContextMenu.emit($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event);onSelectionChanged.emit($event)\"\n (eoGridDoubleClick)=\"eoList.onDoubleClick($event);onDoubleClick.emit($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event);onFocusChanged.emit($event)\">\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n <!--<eo-quick-filter [eoGrid]=\"eoGrid\"></eo-quick-filter>-->\n <eo-pagination [settings]=\"settings\" (pageChanged)=\"onPageChanged($event)\"></eo-pagination>\n </div>\n\n <div class=\"empty\">\n <eo-error-message [emptyState]=\"{text: emptyMessage || 'eo.search.result.expired'}\"></eo-error-message>\n </div>\n </eo-grid>\n </div>\n <ng-template #error>\n\n <eo-error-message *ngIf=\"hasGridOptions\" [emptyState]=\"{text:'eo.search.mode.expert.result.empty'}\">\n </eo-error-message>\n\n </ng-template>\n</eo-list-container>\n\n<eo-dialog [visible]=\"savedSearchClicked\" (hide)=\"savedSearchClicked = false\" [title]=\"'eo.search.aside.summary.storedquery' | translate\">\n\n</eo-dialog>\n<eo-dialog [title]=\"'eo.resultlist.export.csv.dialog.title' | translate\" [(visible)]=\"showDialogExport\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'export__dialog'\">\n <form [formGroup]=\"setupForm\">\n <eo-form-input class=\"label checkbox\" [skipToggle]=\"true\"\n [label]=\"'eo.resultlist.export.csv.dialog.objectUrl.label' | translate\">\n <eo-checkbox formControlName=\"exportCSVwithUrl\">\n </eo-checkbox>\n </eo-form-input>\n </form>\n\n @if(showWarnExportCSVThreshold){\n <div class=\"threshold-warning\">{{'eo.resultlist.export.csv.threshold.dialog.message' | translate}}</div>\n }\n\n <div class=\"action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showDialogExport = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"exportCSV()\" class=\"button primary\"\n translate>eo.resultlist.export.csv.dialog.export</button>\n </div>\n</eo-dialog>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background);height:100%}:host .spinner{padding:calc(var(--app-pane-padding) / 4)}:host .result-head{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0}:host .result-head .header-info{flex:1}:host .result-head .header-info .header-sub-title .term{margin:0 var(--app-pane-padding)}:host .result-head .header-info .header-title{padding-bottom:calc(var(--app-pane-padding) / 4);font-size:20px;-webkit-user-select:none;user-select:none}:host .result-head .header-info .status{display:flex}:host .result-head .header-info .status .term{flex:1}:host .result-head .actions eo-icon{padding:calc(var(--app-pane-padding) / 4);cursor:pointer}: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 .result-list__loader{margin:auto}:host .stored-query{display:flex;max-height:45vh}:host .stored-query span{padding-right:calc(var(--app-pane-padding) / 2)}:host .stored-query>div{background-color:var(--color-white);padding:calc(var(--app-pane-padding) / 2);margin:0 1px;border-radius:2px 0 0 2px}:host .stored-query>div eo-icon{padding:calc(var(--app-pane-padding) / 4);color:var(--text-color-caption)}:host .stored-query .sq{overflow:hidden;border-radius:2px;padding:calc(var(--app-pane-padding) / 100);background-color:var(--color-white);color:var(--text-color-caption);text-decoration:none;cursor:pointer;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;flex-flow:row;align-items:center;background-color:var(--list-item-hover-background)}:host .stored-query .sq>eo-icon{color:var(--text-color-hint);flex-shrink:0}:host .stored-query .sq>span{text-overflow:ellipsis;overflow:hidden;padding:0 calc(var(--app-pane-padding) / 2)}eo-stored-query{border-radius:0 2px 2px 0;background-color:var(--color-white);padding:var(--app-pane-padding);overflow-y:auto}::ng-deep .export__dialog{padding:8px;min-height:unset!important}::ng-deep .export__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}.threshold-warning{padding-top:var(--app-pane-padding)}\n"] }]
23179
+ }], ctorParameters: () => [{ type: i1.Config }, { type: i1.TranslateService }, { type: GridService }, { type: i1.BackendService }, { type: AppSearchService }, { type: i1.SearchService }, { type: i1.EventService }, { type: i1.LocalStorageService }, { type: i1.StoredQueriesService }, { type: i2$1.Router }, { type: i1$3.UntypedFormBuilder }], propDecorators: { grid: [{
22984
23180
  type: ViewChild,
22985
- args: ['storedQueryForm']
22986
- }], query: [{
23181
+ args: ['eoGrid']
23182
+ }], list: [{
23183
+ type: ViewChild,
23184
+ args: ['eoList']
23185
+ }], title: [{
22987
23186
  type: Input
22988
- }], notifyList: [{
23187
+ }], configType: [{
23188
+ type: Input
23189
+ }], configContext: [{
23190
+ type: Input
23191
+ }], clearAfterExecute: [{
23192
+ type: Input
23193
+ }], emptyMessage: [{
23194
+ type: Input
23195
+ }], selectFirst: [{
23196
+ type: Input
23197
+ }], gridOptions: [{
23198
+ type: Input
23199
+ }], hasIcon: [{
23200
+ type: Input
23201
+ }], reference: [{
23202
+ type: Input
23203
+ }], onSelectionChanged: [{
23204
+ type: Output
23205
+ }], onFocusChanged: [{
22989
23206
  type: Output
23207
+ }], onDoubleClick: [{
23208
+ type: Output
23209
+ }], onContextMenu: [{
23210
+ type: Output
23211
+ }], onCountChanged: [{
23212
+ type: Output
23213
+ }], onRefresh: [{
23214
+ type: Output
23215
+ }], onResult: [{
23216
+ type: Output
23217
+ }], onQueryInvalid: [{
23218
+ type: Output
23219
+ }], query: [{
23220
+ type: Input
23221
+ }], searchResult: [{
23222
+ type: Input
22990
23223
  }] } });
22991
23224
 
22992
- class StoredQueryModule {
22993
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
22994
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryModule, declarations: [StoredQueryComponent,
22995
- StoredQueryDetailsComponent,
22996
- DynamicPropertySwitchComponent], imports: [CommonModule,
22997
- ObjectFormModule,
22998
- UiModule,
22999
- GridModule,
23000
- FormsModule,
23001
- ReactiveFormsModule,
23002
- FormElementsModule], exports: [StoredQueryComponent,
23003
- StoredQueryDetailsComponent] }); }
23004
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryModule, imports: [CommonModule,
23005
- ObjectFormModule,
23006
- UiModule,
23007
- GridModule,
23008
- FormsModule,
23009
- ReactiveFormsModule,
23010
- FormElementsModule] }); }
23011
- }
23012
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryModule, decorators: [{
23013
- type: NgModule,
23014
- args: [{
23015
- imports: [
23016
- CommonModule,
23017
- ObjectFormModule,
23018
- UiModule,
23019
- GridModule,
23020
- FormsModule,
23021
- ReactiveFormsModule,
23022
- FormElementsModule
23023
- ],
23024
- declarations: [
23025
- StoredQueryComponent,
23026
- StoredQueryDetailsComponent,
23027
- DynamicPropertySwitchComponent
23028
- ],
23029
- exports: [
23030
- StoredQueryComponent,
23031
- StoredQueryDetailsComponent
23032
- ]
23033
- }]
23034
- }] });
23035
-
23036
23225
  class ResultListModule {
23037
23226
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
23038
23227
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: ResultListModule, declarations: [ResultListComponent], imports: [UiModule,
23039
23228
  ListContainerModule,
23040
23229
  GridModule,
23041
23230
  ShortcutsModule,
23042
- StoredQueryModule], exports: [ResultListComponent] }); }
23231
+ StoredQueryModule,
23232
+ FormElementsModule,
23233
+ ReactiveFormsModule], exports: [ResultListComponent] }); }
23043
23234
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListModule, imports: [UiModule,
23044
23235
  ListContainerModule,
23045
23236
  GridModule,
23046
23237
  ShortcutsModule,
23047
- StoredQueryModule] }); }
23238
+ StoredQueryModule,
23239
+ FormElementsModule,
23240
+ ReactiveFormsModule] }); }
23048
23241
  }
23049
23242
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListModule, decorators: [{
23050
23243
  type: NgModule,
@@ -23054,170 +23247,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
23054
23247
  ListContainerModule,
23055
23248
  GridModule,
23056
23249
  ShortcutsModule,
23057
- StoredQueryModule
23250
+ StoredQueryModule,
23251
+ FormElementsModule,
23252
+ ReactiveFormsModule
23058
23253
  ],
23059
23254
  exports: [ResultListComponent],
23060
23255
  declarations: [ResultListComponent]
23061
23256
  }]
23062
23257
  }] });
23063
23258
 
23064
- class ChangePasswordFormComponent {
23065
- constructor(fb, userService, translate, toaster) {
23066
- this.fb = fb;
23067
- this.userService = userService;
23068
- this.translate = translate;
23069
- this.toaster = toaster;
23070
- this.userRegex = '';
23071
- this.onFormSumbit = new EventEmitter();
23072
- this.passwordIsVisible = false;
23073
- this.passwordValidation = { type: 'valid', amount: null };
23074
- this.generateForm();
23075
- }
23076
- generateForm() {
23077
- const { compose, required, minLength } = Validators;
23078
- this.changePasswordForm = this.fb.group({
23079
- currentPassword: ['', compose([required, minLength(1)])],
23080
- password: ['', compose([required, minLength(1)])],
23081
- confirmPassword: ['', compose([required, minLength(1)])]
23082
- }, {
23083
- validator: compose([
23084
- this.newPasswordValidator('currentPassword', 'password'),
23085
- this.matchingPasswordsValidator('password', 'confirmPassword')
23086
- ])
23087
- });
23088
- this.onChanges();
23089
- }
23090
- newPasswordValidator(current, password) {
23091
- return (group) => {
23092
- if (group.controls[current].value !== group.controls[password].value) {
23093
- return null;
23094
- }
23095
- return { 'SAME_PASSWORD': true };
23096
- };
23097
- }
23098
- matchingPasswordsValidator(password, confirm) {
23099
- return (group) => {
23100
- if (group.controls[password].value === group.controls[confirm].value) {
23101
- return null;
23102
- }
23103
- return { 'matchingPasswords': true };
23104
- };
23105
- }
23106
- onChanges() {
23107
- this.changePasswordForm.valueChanges
23108
- .subscribe(value => {
23109
- if (value.password) {
23110
- this.passwordValidation = this.userService.validatePassword(value.password);
23111
- }
23112
- return this.matchingPasswords;
23113
- });
23114
- }
23115
- showPasswords() {
23116
- this.passwordIsVisible = !this.passwordIsVisible;
23117
- }
23118
- get passwordIsNew() {
23119
- const { errors, controls } = this.changePasswordForm;
23120
- let passwordIsNewError = false;
23121
- if (errors) {
23122
- const currentPassword = controls.currentPassword.touched && controls.currentPassword.dirty;
23123
- const password = controls.password.touched && controls.password.dirty;
23124
- passwordIsNewError = errors.SAME_PASSWORD && currentPassword && password;
23125
- }
23126
- return passwordIsNewError;
23127
- }
23128
- get matchingPasswords() {
23129
- const { errors, controls } = this.changePasswordForm;
23130
- let matchingPasswordsError = false;
23131
- if (errors) {
23132
- const password = controls.password.touched && controls.password.dirty;
23133
- const confirmPassword = controls.confirmPassword.touched && controls.confirmPassword.dirty;
23134
- matchingPasswordsError = errors.matchingPasswords && password && confirmPassword;
23135
- }
23136
- return matchingPasswordsError;
23137
- }
23138
- changePasswordOnSuccess() {
23139
- this.changePasswordForm.reset();
23140
- this.changePasswordForm.markAsPristine();
23141
- this.changePasswordForm.markAsUntouched();
23142
- this.onFormSumbit.emit(true);
23143
- this.toaster.success(this.translate.instant('eo.password.reset.success'));
23144
- }
23145
- changePasswordOnError(error) {
23146
- const errorTitle = this.translate.instant('eo.password.reset.error.password.title');
23147
- if (error.error.key === 'USER_OLD_PASSWORD_WRONG') {
23148
- this.toaster.error(errorTitle, this.translate.instant('eo.password.reset.error.old.password.message'));
23149
- }
23150
- else if (error.error.key === 'USER_NEW_PASSWORD_INVALID') {
23151
- this.toaster.error(errorTitle, this.translate.instant('eo.password.reset.error.new.password.message'));
23152
- }
23153
- else {
23154
- this.toaster.error(errorTitle);
23155
- }
23156
- }
23157
- onSubmit() {
23158
- const { currentPassword, password } = this.changePasswordForm.value;
23159
- const payload = {
23160
- old: currentPassword,
23161
- new: password
23162
- };
23163
- this.userService
23164
- .changePassword(payload)
23165
- .subscribe(() => this.changePasswordOnSuccess(), (error) => this.changePasswordOnError(error));
23166
- }
23167
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ChangePasswordFormComponent, deps: [{ token: i1$3.UntypedFormBuilder }, { token: i1.UserService }, { token: i1.TranslateService }, { token: i1.NotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
23168
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ChangePasswordFormComponent, selector: "eo-change-password-form", inputs: { userRegex: "userRegex" }, outputs: { onFormSumbit: "onFormSumbit" }, ngImport: i0, template: "<section class=\"change-password\">\n <form #changePasswordFormElement [formGroup]=\"changePasswordForm\" (ngSubmit)=\"onSubmit()\" autocomplete=\"off\">\n <div class=\"form-item\">\n\n <eo-form-input [label]=\"('eo.password.reset.current-password' | translate)\" [required]=\"true\" [invalid]=\"passwordIsNew\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'currentPassword'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.current-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <eo-form-input [label]=\"('eo.password.reset.new-password' | translate)\" [required]=\"true\" [invalid]=\"matchingPasswords || passwordIsNew\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'password'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.new-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <eo-form-input [label]=\"('eo.password.reset.confirm-password' | translate)\" [required]=\"true\" [invalid]=\"matchingPasswords\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'confirmPassword'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.confirm-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <div class=\"invalid error\" *ngIf=\"passwordIsNew\">\n {{'eo.password.reset.error.same.password' | translate}}\n </div>\n\n <div class=\"invalid error\" *ngIf=\"matchingPasswords\">\n {{'eo.password.reset.error.matiching.password' | translate}}\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'short'\">\n eo.password.reset.error.new.password.short\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'number'\">\n eo.password.reset.error.new.password.number\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'specialchars'\">\n eo.password.reset.error.new.password.specialchars\n </div>\n\n <section class=\"change-password__cta\">\n <button class=\"change-password__submit-button\" type=\"submit\"\n [disabled]=\"changePasswordForm.invalid || passwordValidation.type !== 'valid'\" translate>eo.password.reset.confirm-button</button>\n\n <a (click)=\"showPasswords()\" tabindex=\"0\" (keydown.enter)=\"showPasswords()\" >\n <eo-icon class=\"change-password__icon-show\"\n [iconSrc]=\"'assets/_default/svg/ic_eye.svg'\"\n [iconTitle]=\"('eo.password.reset.toogle.icon' | translate)\"\n [ngClass]=\"{'visible': passwordIsVisible}\"></eo-icon>\n </a>\n </section>\n </div>\n </form>\n\n</section>\n", styles: [".change-password .invalid.error{color:var(--color-error);padding:5px 0}.change-password :focus{outline:2px solid var(--text-color-caption)}.change-password__cta{margin-top:10px;display:flex;align-items:center}.change-password__submit-button{margin-right:10px}.change-password__icon-show{cursor:pointer;color:var(--text-color-caption)}.change-password__icon-show:hover{color:var(--color-accent)}.change-password__icon-show.visible{color:var(--color-primary-3)}\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.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: PasswordComponent, selector: "eo-password", inputs: ["pattern", "parent", "element", "placeholder", "canChangepasswordVisiblety", "passwordVisible"] }, { 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: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
23169
- }
23170
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ChangePasswordFormComponent, decorators: [{
23171
- type: Component,
23172
- args: [{ selector: 'eo-change-password-form', template: "<section class=\"change-password\">\n <form #changePasswordFormElement [formGroup]=\"changePasswordForm\" (ngSubmit)=\"onSubmit()\" autocomplete=\"off\">\n <div class=\"form-item\">\n\n <eo-form-input [label]=\"('eo.password.reset.current-password' | translate)\" [required]=\"true\" [invalid]=\"passwordIsNew\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'currentPassword'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.current-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <eo-form-input [label]=\"('eo.password.reset.new-password' | translate)\" [required]=\"true\" [invalid]=\"matchingPasswords || passwordIsNew\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'password'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.new-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <eo-form-input [label]=\"('eo.password.reset.confirm-password' | translate)\" [required]=\"true\" [invalid]=\"matchingPasswords\">\n <eo-password [parent]=\"changePasswordForm\"\n [element]=\"'confirmPassword'\"\n [canChangepasswordVisiblety]=\"false\"\n [passwordVisible]=\"passwordIsVisible\"\n [placeholder]=\"('eo.password.reset.confirm-password' | translate)\"></eo-password>\n </eo-form-input>\n\n <div class=\"invalid error\" *ngIf=\"passwordIsNew\">\n {{'eo.password.reset.error.same.password' | translate}}\n </div>\n\n <div class=\"invalid error\" *ngIf=\"matchingPasswords\">\n {{'eo.password.reset.error.matiching.password' | translate}}\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'short'\">\n eo.password.reset.error.new.password.short\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'number'\">\n eo.password.reset.error.new.password.number\n </div>\n\n <div class=\"invalid error\" translate [translateParams]=\"{amount: passwordValidation.amount}\" *ngIf=\"passwordValidation.type === 'specialchars'\">\n eo.password.reset.error.new.password.specialchars\n </div>\n\n <section class=\"change-password__cta\">\n <button class=\"change-password__submit-button\" type=\"submit\"\n [disabled]=\"changePasswordForm.invalid || passwordValidation.type !== 'valid'\" translate>eo.password.reset.confirm-button</button>\n\n <a (click)=\"showPasswords()\" tabindex=\"0\" (keydown.enter)=\"showPasswords()\" >\n <eo-icon class=\"change-password__icon-show\"\n [iconSrc]=\"'assets/_default/svg/ic_eye.svg'\"\n [iconTitle]=\"('eo.password.reset.toogle.icon' | translate)\"\n [ngClass]=\"{'visible': passwordIsVisible}\"></eo-icon>\n </a>\n </section>\n </div>\n </form>\n\n</section>\n", styles: [".change-password .invalid.error{color:var(--color-error);padding:5px 0}.change-password :focus{outline:2px solid var(--text-color-caption)}.change-password__cta{margin-top:10px;display:flex;align-items:center}.change-password__submit-button{margin-right:10px}.change-password__icon-show{cursor:pointer;color:var(--text-color-caption)}.change-password__icon-show:hover{color:var(--color-accent)}.change-password__icon-show.visible{color:var(--color-primary-3)}\n"] }]
23173
- }], ctorParameters: () => [{ type: i1$3.UntypedFormBuilder }, { type: i1.UserService }, { type: i1.TranslateService }, { type: i1.NotificationsService }], propDecorators: { userRegex: [{
23174
- type: Input
23175
- }], onFormSumbit: [{
23176
- type: Output
23177
- }] } });
23178
-
23179
- class PermissionsComponent {
23180
- constructor() {
23181
- this.roles = [];
23182
- }
23183
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PermissionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23184
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: PermissionsComponent, selector: "eo-permissions", inputs: { roles: "roles" }, ngImport: i0, template: "<div class=\"role\" *ngFor=\"let role of roles\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_shield.svg'\"></eo-icon>\n <div>\n <div class=\"name\">{{role.name}}</div>\n <div class=\"description\">{{role.description}}</div>\n </div>\n</div>\n", styles: [".role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.role>div{padding:0 calc(var(--app-pane-padding) / 2)}.role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }] }); }
23185
- }
23186
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PermissionsComponent, decorators: [{
23187
- type: Component,
23188
- args: [{ selector: 'eo-permissions', template: "<div class=\"role\" *ngFor=\"let role of roles\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_shield.svg'\"></eo-icon>\n <div>\n <div class=\"name\">{{role.name}}</div>\n <div class=\"description\">{{role.description}}</div>\n </div>\n</div>\n", styles: [".role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.role>div{padding:0 calc(var(--app-pane-padding) / 2)}.role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}\n"] }]
23189
- }], propDecorators: { roles: [{
23190
- type: Input
23191
- }] } });
23192
-
23193
- class SettingsModule {
23194
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SettingsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
23195
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: SettingsModule, declarations: [ChangePasswordFormComponent, PermissionsComponent], imports: [CommonModule,
23196
- ReactiveFormsModule,
23197
- FormElementsModule,
23198
- EoSharedModule,
23199
- UiModule], exports: [ChangePasswordFormComponent, PermissionsComponent] }); }
23200
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SettingsModule, imports: [CommonModule,
23201
- ReactiveFormsModule,
23202
- FormElementsModule,
23203
- EoSharedModule,
23204
- UiModule] }); }
23205
- }
23206
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SettingsModule, decorators: [{
23207
- type: NgModule,
23208
- args: [{
23209
- imports: [
23210
- CommonModule,
23211
- ReactiveFormsModule,
23212
- FormElementsModule,
23213
- EoSharedModule,
23214
- UiModule
23215
- ],
23216
- declarations: [ChangePasswordFormComponent, PermissionsComponent],
23217
- exports: [ChangePasswordFormComponent, PermissionsComponent]
23218
- }]
23219
- }] });
23220
-
23221
23259
  class EoFrameworkModule {
23222
23260
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: EoFrameworkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
23223
23261
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: EoFrameworkModule, declarations: [UploadOverlayComponent,
@@ -23468,10 +23506,10 @@ class AboutStateComponent {
23468
23506
  this.backend = backend;
23469
23507
  this.userService = userService;
23470
23508
  this.config = config;
23471
- this.__libraries__ = [{ "name": "@ag-grid-community/angular", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/client-side-row-model", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/core", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/csv-export", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/styles", "version": "31.3.2", "license": "MIT" }, { "name": "@angular/animations", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/cdk", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/common", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/compiler", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/core", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/forms", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/router", "version": "18.1.0", "license": "MIT" }, { "name": "@carbon/charts-angular", "version": "1.16.3", "license": "Apache-2.0" }, { "name": "@eo-sdk/core", "version": "11.12.0-rc.2", "license": "MIT" }, { "name": "@ngneat/until-destroy", "version": "10.0.0", "license": "MIT" }, { "name": "@ngx-pwa/local-storage", "version": "18.0.0", "license": "MIT" }, { "name": "@ngx-translate/core", "version": "15.0.0", "license": "SEE LICENSE IN LICENSE" }, { "name": "@yuuvis/components", "version": "18.1.9", "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" }];
23509
+ this.__libraries__ = [{ "name": "@ag-grid-community/angular", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/client-side-row-model", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/core", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/csv-export", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/styles", "version": "31.3.2", "license": "MIT" }, { "name": "@angular/animations", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/cdk", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/common", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/compiler", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/core", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/forms", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/router", "version": "18.1.0", "license": "MIT" }, { "name": "@carbon/charts-angular", "version": "1.16.3", "license": "Apache-2.0" }, { "name": "@eo-sdk/core", "version": "11.12.0-rc.3", "license": "MIT" }, { "name": "@ngneat/until-destroy", "version": "10.0.0", "license": "MIT" }, { "name": "@ngx-pwa/local-storage", "version": "18.0.0", "license": "MIT" }, { "name": "@ngx-translate/core", "version": "15.0.0", "license": "SEE LICENSE IN LICENSE" }, { "name": "@yuuvis/components", "version": "18.1.9", "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" }];
23472
23510
  this.ctrl = {
23473
23511
  componentName: 'yuuvis® RAD client',
23474
- componentVersion: '11.12.0-rc.3',
23512
+ componentVersion: '11.13.0-rc.1',
23475
23513
  productName: '',
23476
23514
  productVersion: ''
23477
23515
  };
@@ -26621,7 +26659,7 @@ let ResultStateComponent = class ResultStateComponent {
26621
26659
  this.selection.clear();
26622
26660
  }
26623
26661
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultStateComponent, deps: [{ token: PendingChangesService }, { token: i2$1.ActivatedRoute }, { token: PageTitleService }, { token: SelectionService }, { token: i2$1.Router }, { token: i1.NotificationsService }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
26624
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ResultStateComponent, selector: "eo-result-state", ngImport: i0, template: "<yvc-master-details [layoutOptions]=\"{masterSize: 60, detailsSize: 40}\" [layoutSettingsID]=\"'result.state--' + typeName\"\n [detailsActive]=\"true\">\n <!-- master -->\n <ng-template #yvcMasterPane>\n <eo-result-list [query]=\"query\" [hasIcon]=\"true\" [clearAfterExecute]=\"clearAfterExecute\"\n (onResult)=\"onResult($event)\" (onQueryInvalid)=\"onQueryInvalid()\"></eo-result-list>\n </ng-template>\n\n <!-- details -->\n <ng-template #yvcDetailsPane>\n <eo-object-details [searchTerm]=\"searchTerm\" [applySelection]=\"{}\"\n [cacheLayout]=\"'result.state--' + typeName + '.object-details'\" [plugins]=\"'object-details-tab.result' | plugins\">\n </eo-object-details>\n </ng-template>\n</yvc-master-details>", 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;display:block}:host yvc-master-details{height:100%}\n"], dependencies: [{ kind: "component", type: ResultListComponent, selector: "eo-result-list", inputs: ["title", "configType", "configContext", "clearAfterExecute", "emptyMessage", "selectFirst", "gridOptions", "hasIcon", "reference", "query", "searchResult"], outputs: ["onSelectionChanged", "onFocusChanged", "onDoubleClick", "onContextMenu", "onCountChanged", "onRefresh", "onResult", "onQueryInvalid"] }, { 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: i8$3.MasterDetailsComponent, selector: "yvc-master-details", inputs: ["detailsActive", "layoutSettingsID", "layoutOptions", "undockableDetails", "panelStyle", "gutterSize", "mode"] }, { kind: "pipe", type: PluginPipe, name: "plugins" }] }); }
26662
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ResultStateComponent, selector: "eo-result-state", ngImport: i0, template: "<yvc-master-details [layoutOptions]=\"{masterSize: 60, detailsSize: 40}\" [layoutSettingsID]=\"'result.state--' + typeName\"\n [detailsActive]=\"true\">\n <!-- master -->\n <ng-template #yvcMasterPane>\n <eo-result-list [query]=\"query\" [hasIcon]=\"true\" [clearAfterExecute]=\"clearAfterExecute\"\n (onResult)=\"onResult($event)\" (onQueryInvalid)=\"onQueryInvalid()\"></eo-result-list>\n </ng-template>\n\n <!-- details -->\n <ng-template #yvcDetailsPane>\n <eo-object-details [searchTerm]=\"searchTerm\" [applySelection]=\"{}\"\n [cacheLayout]=\"'result.state--' + typeName + '.object-details'\" [plugins]=\"'object-details-tab.result' | plugins\">\n </eo-object-details>\n </ng-template>\n</yvc-master-details>", 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;display:block}:host yvc-master-details{height:100%}\n"], dependencies: [{ kind: "component", type: ResultListComponent, selector: "eo-result-list", inputs: ["title", "configType", "configContext", "clearAfterExecute", "emptyMessage", "selectFirst", "gridOptions", "hasIcon", "reference", "query", "searchResult"], outputs: ["onSelectionChanged", "onFocusChanged", "onDoubleClick", "onContextMenu", "onCountChanged", "onRefresh", "onResult", "onQueryInvalid"] }, { kind: "component", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "searchTerm", "enableCompare", "recyclebinTabs", "versionComponentTabs", "enableDiff", "enableSync", "cacheLayout", "applySelection", "parseDmsParams", "reference", "emptyState", "params", "params2", "item", "item2"], outputs: ["hasContent"] }, { kind: "component", type: i8$3.MasterDetailsComponent, selector: "yvc-master-details", inputs: ["detailsActive", "layoutSettingsID", "layoutOptions", "undockableDetails", "panelStyle", "gutterSize", "mode"] }, { kind: "pipe", type: PluginPipe, name: "plugins" }] }); }
26625
26663
  };
26626
26664
  ResultStateComponent = __decorate([
26627
26665
  UntilDestroy()
@@ -26739,7 +26777,7 @@ let FavoriteStateComponent = class FavoriteStateComponent {
26739
26777
  this.selection.clear();
26740
26778
  }
26741
26779
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FavoriteStateComponent, deps: [{ token: SelectionService }, { token: i1.TranslateService }, { token: i1.SystemService }, { token: EmptyStateService }, { token: PendingChangesService }, { token: PageTitleService }, { token: i1.UserService }], target: i0.ɵɵFactoryTarget.Component }); }
26742
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: FavoriteStateComponent, selector: "eo-favorite-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'favorite.state'\">\n\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-list-container #eoList [applySelection]=\"{}\" [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.favorites.list.title</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)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter class=\"overlay-filter\" [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"\n [iconTitle]=\"'eo.list.filter' | translate\">\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\">\n <eo-text-filter [title]=\"'eo.favorites.filter.title' | translate\" [id]=\"'favorites.text'\"\n [matchFields]=\"['title']\" [filterParams]=\"textFilterParams\">\n </eo-text-filter>\n <eo-set-filter [operator]=\"'OR'\" [id]=\"'favorites.set'\"\n [title]=\"'eo.favorites.filter.section.objecttype' | translate\"\n [options]=\"typeFilterFields\"></eo-set-filter>\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort class=\"overlay-sort\" [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort [id]=\"'favorites.sort'\" (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n <eo-icon class=\"button\" (click)=\"hasContent ? eoList.showActions() : false\"\n [ngClass]=\"{'disabled': !hasContent, 'actions-button': hasContent}\"\n [iconTitle]=\"'eo.object.actions.title' | translate\" [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid *ngIf=\"gridOptions?.rowData\" [gridOptions]=\"gridOptions\" [fullWidth]=\"true\" [showHeader]=\"true\"\n [showFooter]=\"true\" (eoGridCountChanged)=\"eoList.onCountChanged($event)\"\n (eoGridContextMenuClick)=\"eoList.onContextMenu($event, 'DMS_OBJECT')\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridDoubleClick)=\"eoList.onDoubleClick($event)\" (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n\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 </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_favorite.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.favorites.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n\n <ng-template yvcSplitArea [size]=\"70\">\n <eo-object-details [applySelection]=\"{}\" [parseDmsParams]=\"parseDmsParams\" [emptyState]=\"emptyState\"\n [cacheLayout]=\"'favorite.state.object-details'\" (hasContent)=\"hasContent = $event\"\n [plugins]=\"'object-details-tab.favorite' | plugins\">\n <div class=\"error\" *ngIf=\"gridData?.length && !hasContent\">\n <button class=\"button\" (click)=\"remove()\" translate>eo.favorite.details.item.gone.remove</button>\n </div>\n </eo-object-details>\n </ng-template>\n</yvc-split-view>", 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 yvc-split-view{height:100%}:host .error .button{margin:1em;background-color:#d3d3d3}:host ::ng-deep .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-medium);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .description{font-size:var(--font-caption)}:host ::ng-deep .ag-cell .list-item .content .date{color:rgba(var(--color-black-rgb),.4)}\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: OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"], outputs: ["onToggle"] }, { 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", "filterForm"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: TextFilterComponent, selector: "eo-text-filter", inputs: ["title", "placeholder", "enableSave", "filterParams", "matchFields"] }, { kind: "component", type: SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "component", type: ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { 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" }] }); }
26780
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: FavoriteStateComponent, selector: "eo-favorite-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'favorite.state'\">\n\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-list-container #eoList [applySelection]=\"{}\" [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.favorites.list.title</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)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter class=\"overlay-filter\" [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"\n [iconTitle]=\"'eo.list.filter' | translate\">\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\">\n <eo-text-filter [title]=\"'eo.favorites.filter.title' | translate\" [id]=\"'favorites.text'\"\n [matchFields]=\"['title']\" [filterParams]=\"textFilterParams\">\n </eo-text-filter>\n <eo-set-filter [operator]=\"'OR'\" [id]=\"'favorites.set'\"\n [title]=\"'eo.favorites.filter.section.objecttype' | translate\"\n [options]=\"typeFilterFields\"></eo-set-filter>\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort class=\"overlay-sort\" [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort [id]=\"'favorites.sort'\" (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n <eo-icon class=\"button\" (click)=\"hasContent ? eoList.showActions() : false\"\n [ngClass]=\"{'disabled': !hasContent, 'actions-button': hasContent}\"\n [iconTitle]=\"'eo.object.actions.title' | translate\" [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid *ngIf=\"gridOptions?.rowData\" [gridOptions]=\"gridOptions\" [fullWidth]=\"true\" [showHeader]=\"true\"\n [showFooter]=\"true\" (eoGridCountChanged)=\"eoList.onCountChanged($event)\"\n (eoGridContextMenuClick)=\"eoList.onContextMenu($event, 'DMS_OBJECT')\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridDoubleClick)=\"eoList.onDoubleClick($event)\" (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n\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 </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_favorite.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.favorites.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n\n <ng-template yvcSplitArea [size]=\"70\">\n <eo-object-details [applySelection]=\"{}\" [parseDmsParams]=\"parseDmsParams\" [emptyState]=\"emptyState\"\n [cacheLayout]=\"'favorite.state.object-details'\" (hasContent)=\"hasContent = $event\"\n [plugins]=\"'object-details-tab.favorite' | plugins\">\n <div class=\"error\" *ngIf=\"gridData?.length && !hasContent\">\n <button class=\"button\" (click)=\"remove()\" translate>eo.favorite.details.item.gone.remove</button>\n </div>\n </eo-object-details>\n </ng-template>\n</yvc-split-view>", 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 yvc-split-view{height:100%}:host .error .button{margin:1em;background-color:#d3d3d3}:host ::ng-deep .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-medium);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .description{font-size:var(--font-caption)}:host ::ng-deep .ag-cell .list-item .content .date{color:rgba(var(--color-black-rgb),.4)}\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: OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"], outputs: ["onToggle"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "searchTerm", "enableCompare", "recyclebinTabs", "versionComponentTabs", "enableDiff", "enableSync", "cacheLayout", "applySelection", "parseDmsParams", "reference", "emptyState", "params", "params2", "item", "item2"], 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", "filterForm"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: TextFilterComponent, selector: "eo-text-filter", inputs: ["title", "placeholder", "enableSave", "filterParams", "matchFields"] }, { kind: "component", type: SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "component", type: ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { 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" }] }); }
26743
26781
  };
26744
26782
  FavoriteStateComponent = __decorate([
26745
26783
  UntilDestroy()
@@ -27230,7 +27268,7 @@ class ProcessStateComponent {
27230
27268
  return this.pendingChanges.hasPendingTask();
27231
27269
  }
27232
27270
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", 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 }); }
27233
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", 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 (onToggle)=\"onFilterOverlayToggle($event)\">\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]=\"'eo.state.process.filter.title' | translate\" [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"], outputs: ["onToggle"] }, { 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", "filterForm"], 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", "situation"] }, { 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" }] }); }
27271
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", 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 (onToggle)=\"onFilterOverlayToggle($event)\">\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]=\"'eo.state.process.filter.title' | translate\" [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"], outputs: ["onToggle"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "searchTerm", "enableCompare", "recyclebinTabs", "versionComponentTabs", "enableDiff", "enableSync", "cacheLayout", "applySelection", "parseDmsParams", "reference", "emptyState", "params", "params2", "item", "item2"], 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", "filterForm"], 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", "situation"] }, { 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" }] }); }
27234
27272
  }
27235
27273
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ProcessStateComponent, decorators: [{
27236
27274
  type: Component,
@@ -27429,7 +27467,7 @@ let NotificationsStateComponent = class NotificationsStateComponent {
27429
27467
  this.selection.clear();
27430
27468
  }
27431
27469
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NotificationsStateComponent, deps: [{ token: SelectionService }, { token: i1.TranslateService }, { token: i1.SystemService }, { token: PendingChangesService }, { token: EmptyStateService }, { token: i1.BackendService }, { token: i1.EventService }, { token: i1.DmsService }, { token: PageTitleService }, { token: i1.UserService }], target: i0.ɵɵFactoryTarget.Component }); }
27432
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: NotificationsStateComponent, selector: "eo-notifications-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'notification.state'\">\n <ng-template yvcSplitArea [size]=\"25\"><eo-list-container #eoList [applySelection]=\"{}\"\n [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_inbox.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.notifications.list.title</div>\n <div class=\"header-sub-title\" translate>eo.notifications.list.subtitle</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)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"\n class=\"overlay-filter\" [iconTitle]=\"'eo.list.filter' | translate\" (onToggle)=\"onFilterOverlayToggle($event)\">\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\">\n <eo-text-filter [title]=\"'eo.notifications.filter.title' | translate\" [matchFields]=\"['info']\"\n [filterParams]=\"textFilterParams\" [id]=\"'notifications.text'\"></eo-text-filter>\n\n <eo-set-filter [operator]=\"'OR'\" [title]=\"'eo.notifications.filter.section.title' | translate\"\n [options]=\"objectTypeFilterFields\" [id]=\"'notifications.object.type'\"></eo-set-filter>\n\n <eo-set-filter [operator]=\"'OR'\" [title]=\"'eo.notifications.filter.section.objecttype' | translate\"\n [options]=\"typeFilterFields\" [id]=\"'notifications.type'\"></eo-set-filter>\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\" class=\"overlay-sort\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort [id]=\"'notifications.sort'\" (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n <eo-icon class=\"button actions-button\" (click)=\"eoList.showActions()\"\n [iconTitle]=\"'eo.object.actions.title' | translate\" [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </div>\n </div>\n\n <div class=\"eo-body\">\n <eo-grid #eoGrid [gridOptions]=\"gridOptions\" *ngIf=\"gridOptions\" [fullWidth]=\"true\" [showHeader]=\"true\"\n [showFooter]=\"true\" (eoGridCountChanged)=\"eoList.onCountChanged($event)\"\n (eoGridContextMenuClick)=\"eoList.onContextMenu($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridDoubleClick)=\"eoList.onDoubleClick($event)\" (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n\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 </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_inbox.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.notifications.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n\n <ng-template yvcSplitArea [size]=\"75\">\n <eo-object-details [applySelection]=\"{}\" [parseDmsParams]=\"parseDmsParams\"\n [cacheLayout]=\"'notification.state.object-details'\" [emptyState]=\"emptyState\" [plugins]=\"'object-details-tab.notifications' | plugins\">\n <div class=\"error\" *ngIf=\"gridData?.length\">\n <button class=\"button secondary\" (click)=\"remove()\" translate>eo.notifications.details.item.gone.remove</button>\n <button class=\"button secondary\" (click)=\"removeSubscriptionAndResubmissions()\"\n translate>eo.notifications.details.item.gone.remove.subscriptions</button>\n </div>\n </eo-object-details>\n </ng-template>\n\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 .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-medium);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .meta{color:rgba(var(--color-black-rgb),.4)}:host ::ng-deep .ag-cell .list-item .content .meta .description{font-size:var(--font-caption)}:host ::ng-deep .ag-cell .list-item .content .meta .description.date{font-size:var(--font-hint)}\n"], dependencies: [{ 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: OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"], outputs: ["onToggle"] }, { 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", "filterForm"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: TextFilterComponent, selector: "eo-text-filter", inputs: ["title", "placeholder", "enableSave", "filterParams", "matchFields"] }, { kind: "component", type: SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "component", type: ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { 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" }] }); }
27470
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: NotificationsStateComponent, selector: "eo-notifications-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'notification.state'\">\n <ng-template yvcSplitArea [size]=\"25\"><eo-list-container #eoList [applySelection]=\"{}\"\n [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_inbox.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.notifications.list.title</div>\n <div class=\"header-sub-title\" translate>eo.notifications.list.subtitle</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)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"\n class=\"overlay-filter\" [iconTitle]=\"'eo.list.filter' | translate\" (onToggle)=\"onFilterOverlayToggle($event)\">\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\">\n <eo-text-filter [title]=\"'eo.notifications.filter.title' | translate\" [matchFields]=\"['info']\"\n [filterParams]=\"textFilterParams\" [id]=\"'notifications.text'\"></eo-text-filter>\n\n <eo-set-filter [operator]=\"'OR'\" [title]=\"'eo.notifications.filter.section.title' | translate\"\n [options]=\"objectTypeFilterFields\" [id]=\"'notifications.object.type'\"></eo-set-filter>\n\n <eo-set-filter [operator]=\"'OR'\" [title]=\"'eo.notifications.filter.section.objecttype' | translate\"\n [options]=\"typeFilterFields\" [id]=\"'notifications.type'\"></eo-set-filter>\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\" class=\"overlay-sort\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort [id]=\"'notifications.sort'\" (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n <eo-icon class=\"button actions-button\" (click)=\"eoList.showActions()\"\n [iconTitle]=\"'eo.object.actions.title' | translate\" [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </div>\n </div>\n\n <div class=\"eo-body\">\n <eo-grid #eoGrid [gridOptions]=\"gridOptions\" *ngIf=\"gridOptions\" [fullWidth]=\"true\" [showHeader]=\"true\"\n [showFooter]=\"true\" (eoGridCountChanged)=\"eoList.onCountChanged($event)\"\n (eoGridContextMenuClick)=\"eoList.onContextMenu($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridDoubleClick)=\"eoList.onDoubleClick($event)\" (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n\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 </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_inbox.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.notifications.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n\n <ng-template yvcSplitArea [size]=\"75\">\n <eo-object-details [applySelection]=\"{}\" [parseDmsParams]=\"parseDmsParams\"\n [cacheLayout]=\"'notification.state.object-details'\" [emptyState]=\"emptyState\" [plugins]=\"'object-details-tab.notifications' | plugins\">\n <div class=\"error\" *ngIf=\"gridData?.length\">\n <button class=\"button secondary\" (click)=\"remove()\" translate>eo.notifications.details.item.gone.remove</button>\n <button class=\"button secondary\" (click)=\"removeSubscriptionAndResubmissions()\"\n translate>eo.notifications.details.item.gone.remove.subscriptions</button>\n </div>\n </eo-object-details>\n </ng-template>\n\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 .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-medium);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .meta{color:rgba(var(--color-black-rgb),.4)}:host ::ng-deep .ag-cell .list-item .content .meta .description{font-size:var(--font-caption)}:host ::ng-deep .ag-cell .list-item .content .meta .description.date{font-size:var(--font-hint)}\n"], dependencies: [{ 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: OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"], outputs: ["onToggle"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "searchTerm", "enableCompare", "recyclebinTabs", "versionComponentTabs", "enableDiff", "enableSync", "cacheLayout", "applySelection", "parseDmsParams", "reference", "emptyState", "params", "params2", "item", "item2"], 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", "filterForm"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: TextFilterComponent, selector: "eo-text-filter", inputs: ["title", "placeholder", "enableSave", "filterParams", "matchFields"] }, { kind: "component", type: SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "component", type: ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { 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" }] }); }
27433
27471
  };
27434
27472
  NotificationsStateComponent = __decorate([
27435
27473
  UntilDestroy()
@@ -27545,7 +27583,7 @@ let VersionStateComponent = class VersionStateComponent {
27545
27583
  `;
27546
27584
  }
27547
27585
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: VersionStateComponent, deps: [{ token: i2$1.ActivatedRoute }, { token: i1.TranslateService }, { token: PageTitleService }, { token: i1.EventService }, { token: i1.DmsService }], target: i0.ɵɵFactoryTarget.Component }); }
27548
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: VersionStateComponent, selector: "eo-version-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'version.state'\">\n <!-- list of versions -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-list-container #eoList [applySelection]=\"{}\" [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_format_list_numbered.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.versions.list.title</div>\n <div class=\"eo-header-subtitle\">{{versionItem?.title}}</div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button primary refresh-button\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\" [iconClass]=\"'primary'\" class=\"overlay-filter\"\n [iconTitle]=\"'eo.list.filter' | translate\">\n <eo-custom-filter #cFilter\n (change)=\"cFilter.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\">\n <!--<eo-text-filter [title]=\"'eo.versions.filter.title' | translate\" [matchFields]=\"['title']\"></eo-text-filter>-->\n <eo-set-filter [operator]=\"'OR'\" [title]=\"'eo.versions.list.users' | translate\"\n [options]=\"userFilterFields\" [id]=\"'versions.user'\"></eo-set-filter>\n <eo-set-filter [operator]=\"'OR'\" [title]=\"'eo.versions.list.types' | translate\"\n [options]=\"typeFilterFields\" [id]=\"'versions.type'\"></eo-set-filter>\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\" [iconClass]=\"'primary'\" class=\"overlay-sort\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort\n (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\"\n [sortFields]=\"sortFields\" [id]=\"'versions.sort'\"></eo-custom-sort>\n </eo-overlay>\n\n <eo-icon class=\"button actions-button\" (click)=\"eoList.showActions()\" [iconTitle]=\"'eo.object.actions.title' | translate\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid [gridOptions]=\"gridOptions\" *ngIf=\"gridOptions?.rowData\"\n [fullWidth]=\"true\"\n [showHeader]=\"true\"\n [showFooter]=\"true\"\n [selectionLimit]=\"2\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n\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 </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_no-file.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.versions.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active\" (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n\n <!-- version compare/details-->\n <ng-template yvcSplitArea [size]=\"70\">\n <eo-object-details [enableCompare]=\"true\" [applySelection]=\"{}\" [parseDmsParams]=\"parseDmsParams\" [versionComponentTabs]=\"true\"\n [cacheLayout]=\"'version.state--' + typeName + '.object-details'\" [plugins]=\"'object-details-tab.version' | 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 .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px;--version-icon-width: 28px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-bold);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .description{font-size:var(--font-caption)}:host ::ng-deep .ag-cell .list-item .content .date{color:rgba(var(--color-black-rgb),.4)}:host ::ng-deep .ag-cell .list-item .meta{padding:0 calc(var(--app-pane-padding) / 2);display:flex;flex-flow:column;align-items:flex-end}:host ::ng-deep .ag-cell .list-item .meta .date{color:rgba(var(--color-black-rgb),.4)}:host ::ng-deep .ag-cell .list-item .icon.circle{display:flex;width:var(--version-icon-width);height:var(--version-icon-width);font-weight:var(--font-weight-bold);font-size:var(--font-caption);justify-content:center;align-items:center;border-radius:50%;-webkit-border-radius:50%;border:3px solid var(--color-primary-4);color:var(--color-primary-4)}:host ::ng-deep .ag-row-selected .ag-cell .list-item .icon.circle{border-color:var(--color-primary);color:var(--color-primary)}\n"], dependencies: [{ 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: OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"], outputs: ["onToggle"] }, { 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", "filterForm"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "component", type: ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { 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" }] }); }
27586
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: VersionStateComponent, selector: "eo-version-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'version.state'\">\n <!-- list of versions -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-list-container #eoList [applySelection]=\"{}\" [parseDmsParams]=\"parseDmsParams\">\n <div class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_format_list_numbered.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.versions.list.title</div>\n <div class=\"eo-header-subtitle\">{{versionItem?.title}}</div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button primary refresh-button\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\" [iconClass]=\"'primary'\" class=\"overlay-filter\"\n [iconTitle]=\"'eo.list.filter' | translate\">\n <eo-custom-filter #cFilter\n (change)=\"cFilter.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\">\n <!--<eo-text-filter [title]=\"'eo.versions.filter.title' | translate\" [matchFields]=\"['title']\"></eo-text-filter>-->\n <eo-set-filter [operator]=\"'OR'\" [title]=\"'eo.versions.list.users' | translate\"\n [options]=\"userFilterFields\" [id]=\"'versions.user'\"></eo-set-filter>\n <eo-set-filter [operator]=\"'OR'\" [title]=\"'eo.versions.list.types' | translate\"\n [options]=\"typeFilterFields\" [id]=\"'versions.type'\"></eo-set-filter>\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\" [iconClass]=\"'primary'\" class=\"overlay-sort\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort\n (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\"\n [sortFields]=\"sortFields\" [id]=\"'versions.sort'\"></eo-custom-sort>\n </eo-overlay>\n\n <eo-icon class=\"button actions-button\" (click)=\"eoList.showActions()\" [iconTitle]=\"'eo.object.actions.title' | translate\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid [gridOptions]=\"gridOptions\" *ngIf=\"gridOptions?.rowData\"\n [fullWidth]=\"true\"\n [showHeader]=\"true\"\n [showFooter]=\"true\"\n [selectionLimit]=\"2\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n\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 </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_no-file.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.versions.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active\" (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n\n <!-- version compare/details-->\n <ng-template yvcSplitArea [size]=\"70\">\n <eo-object-details [enableCompare]=\"true\" [applySelection]=\"{}\" [parseDmsParams]=\"parseDmsParams\" [versionComponentTabs]=\"true\"\n [cacheLayout]=\"'version.state--' + typeName + '.object-details'\" [plugins]=\"'object-details-tab.version' | 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 .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px;--version-icon-width: 28px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-bold);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .description{font-size:var(--font-caption)}:host ::ng-deep .ag-cell .list-item .content .date{color:rgba(var(--color-black-rgb),.4)}:host ::ng-deep .ag-cell .list-item .meta{padding:0 calc(var(--app-pane-padding) / 2);display:flex;flex-flow:column;align-items:flex-end}:host ::ng-deep .ag-cell .list-item .meta .date{color:rgba(var(--color-black-rgb),.4)}:host ::ng-deep .ag-cell .list-item .icon.circle{display:flex;width:var(--version-icon-width);height:var(--version-icon-width);font-weight:var(--font-weight-bold);font-size:var(--font-caption);justify-content:center;align-items:center;border-radius:50%;-webkit-border-radius:50%;border:3px solid var(--color-primary-4);color:var(--color-primary-4)}:host ::ng-deep .ag-row-selected .ag-cell .list-item .icon.circle{border-color:var(--color-primary);color:var(--color-primary)}\n"], dependencies: [{ 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: OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"], outputs: ["onToggle"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "searchTerm", "enableCompare", "recyclebinTabs", "versionComponentTabs", "enableDiff", "enableSync", "cacheLayout", "applySelection", "parseDmsParams", "reference", "emptyState", "params", "params2", "item", "item2"], 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", "filterForm"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "component", type: ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { 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" }] }); }
27549
27587
  };
27550
27588
  VersionStateComponent = __decorate([
27551
27589
  UntilDestroy()
@@ -28066,7 +28104,7 @@ let InboxStateComponent = class InboxStateComponent {
28066
28104
  this.actionService.showActions([], 'COMPONENT_SPECIFIC_ACTIONS');
28067
28105
  }
28068
28106
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: InboxStateComponent, deps: [{ token: i1.TranslateService }, { token: SelectionService }, { token: PageTitleService }, { token: i1.InboxService }, { token: PendingChangesService }, { token: EmptyStateService }, { token: i1.BpmService }, { token: i1$3.UntypedFormBuilder }, { token: i1.BackendService }, { token: i1.EventService }, { token: i2$1.ActivatedRoute }, { token: i1.LocalStorageService }, { token: ActionService }], target: i0.ɵɵFactoryTarget.Component }); }
28069
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: InboxStateComponent, selector: "eo-inbox-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'inbox.state'\" [eoShortcuts]=\"shortcuts\">\n <!-- list -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-list-container #eoList [applySelection]=\"{out: inboxSelectionId}\">\n <div class=\"eo-header\">\n\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_inbox.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.inbox.list.title</div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [ngClass]=\"{inboxChanged: inboxChanged}\"\n (click)=\"refreshGrid()\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter class=\"overlay-filter\"\n [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"\n [iconTitle]=\"'eo.list.filter' | translate\"\n [active]=\"hasChanged(filterForm?.value)\"\n (onToggle)=\"onFilterOverlayToggle($event)\">\n\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\"\n [filterForm]=\"filterForm\"\n [isFilterActive]=\"oFilter.active || hasChanged(filterForm?.value)\">\n\n <eo-text-filter [title]=\"'eo.inbox.filter.title' | translate\" [filterParams]=\"defaultFilterParams\"\n [id]=\"'inbox.text'\" [matchFields]=\"['title','description','id']\" [enableSave]=\"true\"></eo-text-filter>\n <eo-set-filter class=\"type-filters\" [operator]=\"'OR'\" [id]=\"'inbox.type'\" [filterParams]=\"defaultFilterParams\" [options]=\"typeFilterFields\"></eo-set-filter>\n <eo-set-filter class=\"inbox-filters\" [operator]=\"'AND'\" [id]=\"'inbox.set'\" [filterParams]=\"defaultFilterParams\" [options]=\"inboxFilterFields\"></eo-set-filter>\n\n <form [formGroup]=\"filterForm\">\n @if (processModelsListObject.entries.length) {\n <eo-form-input [label]=\"('eo.state.process.filter.labels.model' | translate)\">\n <eo-dynamic-list formControlName=\"modelFCN\" [pickerTitle]=\"'eo.state.process.filter.title' | translate\" [listObject]=\"processModelsListObject\"></eo-dynamic-list>\n </eo-form-input>\n }\n </form>\n\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort class=\"overlay-sort\" [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort [id]=\"'inbox.sort'\" (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n <eo-icon class=\"button actions-button\" (click)=\"showActions()\" [iconTitle]=\"'eo.shortcuts.action.task' | translate\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid *ngIf=\"gridOptions?.rowData\" [gridOptions]=\"gridOptions\" [fullWidth]=\"true\" [showHeader]=\"true\"\n [showFooter]=\"true\" [selectFirst]=\"selectFirst\" [options]=\"{filterActive: oFilter.active}\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event);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 </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_inbox.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.inbox.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active || hasChanged(filterForm?.value)\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n <!-- inbox details -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-inbox-details [applySelection]=\"{in: inboxSelectionId, out: inboxDmsObjectSelectionId}\"\n [emptyState]=\"emptyState\" [plugins]=\"'inbox-details-tab.inbox' | plugins\">\n </eo-inbox-details>\n </ng-template>\n <!-- object details -->\n <ng-template yvcSplitArea [size]=\"40\">\n <eo-object-details [applySelection]=\"{in: inboxDmsObjectSelectionId}\" [cacheLayout]=\"'inbox.state.object-details'\"\n [plugins]=\"'object-details-tab.inbox' | 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 yvc-split-view{height:100%}:host .inboxChanged{background:var(--color-success);color:#fff}:host .inboxChanged:hover{background:var(--color-success);color:#fff}:host ::ng-deep .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .notes>span{border-radius:2px;-webkit-border-radius:2px;background-color:var(--color-primary-4);color:#fff;font-size:var(--font-hint);padding:1px calc(var(--app-pane-padding) / 4) 0 calc(var(--app-pane-padding) / 4)}:host ::ng-deep .ag-cell .list-item .content .notes.pastDue span.period{background-color:var(--color-error)}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-normal);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .title-bold{font-weight:var(--font-weight-bold);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .description{font-size:var(--font-caption);color:var(--text-color-caption)}:host ::ng-deep .ag-cell .list-item.read .title{font-weight:var(--font-weight-normal)}:host ::ng-deep .ag-cell .list-item .meta{padding:0 calc(var(--app-pane-padding) / 2);display:flex;flex-flow:column;align-items:flex-end}:host ::ng-deep .ag-cell .list-item .meta .date{color:rgba(var(--color-black-rgb),.4)}::ng-deep eo-form-input{width:100%}\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: 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", "filterForm"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: TextFilterComponent, selector: "eo-text-filter", inputs: ["title", "placeholder", "enableSave", "filterParams", "matchFields"] }, { kind: "component", type: SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { 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"], outputs: ["onToggle"] }, { 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: "directive", type: ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: DynamicListComponent, selector: "eo-dynamic-list", inputs: ["situation", "multiselect", "pickerTitle", "readonly", "formControlName", "formElementChanges", "filterFunction", "listObject", "autocompleteUrl"] }, { kind: "component", type: InboxDetailsComponent, selector: "eo-inbox-details", inputs: ["plugins", "emptyState", "applySelection", "item"] }, { kind: "component", type: ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { 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" }] }); }
28107
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: InboxStateComponent, selector: "eo-inbox-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'inbox.state'\" [eoShortcuts]=\"shortcuts\">\n <!-- list -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-list-container #eoList [applySelection]=\"{out: inboxSelectionId}\">\n <div class=\"eo-header\">\n\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_inbox.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.inbox.list.title</div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [ngClass]=\"{inboxChanged: inboxChanged}\"\n (click)=\"refreshGrid()\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter class=\"overlay-filter\"\n [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"\n [iconTitle]=\"'eo.list.filter' | translate\"\n [active]=\"hasChanged(filterForm?.value)\"\n (onToggle)=\"onFilterOverlayToggle($event)\">\n\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\"\n [filterForm]=\"filterForm\"\n [isFilterActive]=\"oFilter.active || hasChanged(filterForm?.value)\">\n\n <eo-text-filter [title]=\"'eo.inbox.filter.title' | translate\" [filterParams]=\"defaultFilterParams\"\n [id]=\"'inbox.text'\" [matchFields]=\"['title','description','id']\" [enableSave]=\"true\"></eo-text-filter>\n <eo-set-filter class=\"type-filters\" [operator]=\"'OR'\" [id]=\"'inbox.type'\" [filterParams]=\"defaultFilterParams\" [options]=\"typeFilterFields\"></eo-set-filter>\n <eo-set-filter class=\"inbox-filters\" [operator]=\"'AND'\" [id]=\"'inbox.set'\" [filterParams]=\"defaultFilterParams\" [options]=\"inboxFilterFields\"></eo-set-filter>\n\n <form [formGroup]=\"filterForm\">\n @if (processModelsListObject.entries.length) {\n <eo-form-input [label]=\"('eo.state.process.filter.labels.model' | translate)\">\n <eo-dynamic-list formControlName=\"modelFCN\" [pickerTitle]=\"'eo.state.process.filter.title' | translate\" [listObject]=\"processModelsListObject\"></eo-dynamic-list>\n </eo-form-input>\n }\n </form>\n\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort class=\"overlay-sort\" [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort [id]=\"'inbox.sort'\" (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n <eo-icon class=\"button actions-button\" (click)=\"showActions()\" [iconTitle]=\"'eo.shortcuts.action.task' | translate\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid *ngIf=\"gridOptions?.rowData\" [gridOptions]=\"gridOptions\" [fullWidth]=\"true\" [showHeader]=\"true\"\n [showFooter]=\"true\" [selectFirst]=\"selectFirst\" [options]=\"{filterActive: oFilter.active}\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event);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 </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_inbox.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.inbox.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active || hasChanged(filterForm?.value)\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n <!-- inbox details -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-inbox-details [applySelection]=\"{in: inboxSelectionId, out: inboxDmsObjectSelectionId}\"\n [emptyState]=\"emptyState\" [plugins]=\"'inbox-details-tab.inbox' | plugins\">\n </eo-inbox-details>\n </ng-template>\n <!-- object details -->\n <ng-template yvcSplitArea [size]=\"40\">\n <eo-object-details [applySelection]=\"{in: inboxDmsObjectSelectionId}\" [cacheLayout]=\"'inbox.state.object-details'\"\n [plugins]=\"'object-details-tab.inbox' | 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 yvc-split-view{height:100%}:host .inboxChanged{background:var(--color-success);color:#fff}:host .inboxChanged:hover{background:var(--color-success);color:#fff}:host ::ng-deep .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .notes>span{border-radius:2px;-webkit-border-radius:2px;background-color:var(--color-primary-4);color:#fff;font-size:var(--font-hint);padding:1px calc(var(--app-pane-padding) / 4) 0 calc(var(--app-pane-padding) / 4)}:host ::ng-deep .ag-cell .list-item .content .notes.pastDue span.period{background-color:var(--color-error)}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-normal);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .title-bold{font-weight:var(--font-weight-bold);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .description{font-size:var(--font-caption);color:var(--text-color-caption)}:host ::ng-deep .ag-cell .list-item.read .title{font-weight:var(--font-weight-normal)}:host ::ng-deep .ag-cell .list-item .meta{padding:0 calc(var(--app-pane-padding) / 2);display:flex;flex-flow:column;align-items:flex-end}:host ::ng-deep .ag-cell .list-item .meta .date{color:rgba(var(--color-black-rgb),.4)}::ng-deep eo-form-input{width:100%}\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: 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", "filterForm"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: TextFilterComponent, selector: "eo-text-filter", inputs: ["title", "placeholder", "enableSave", "filterParams", "matchFields"] }, { kind: "component", type: SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { 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"], outputs: ["onToggle"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "searchTerm", "enableCompare", "recyclebinTabs", "versionComponentTabs", "enableDiff", "enableSync", "cacheLayout", "applySelection", "parseDmsParams", "reference", "emptyState", "params", "params2", "item", "item2"], outputs: ["hasContent"] }, { kind: "directive", type: ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: DynamicListComponent, selector: "eo-dynamic-list", inputs: ["situation", "multiselect", "pickerTitle", "readonly", "formControlName", "formElementChanges", "filterFunction", "listObject", "autocompleteUrl"] }, { kind: "component", type: InboxDetailsComponent, selector: "eo-inbox-details", inputs: ["plugins", "emptyState", "applySelection", "item"] }, { kind: "component", type: ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { 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" }] }); }
28070
28108
  };
28071
28109
  InboxStateComponent = __decorate([
28072
28110
  UntilDestroy()
@@ -28548,7 +28586,7 @@ let ObjectStateComponent = class ObjectStateComponent {
28548
28586
  this.selection.clear();
28549
28587
  }
28550
28588
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectStateComponent, deps: [{ token: i2$1.ActivatedRoute }, { token: PageTitleService }, { token: i1.SystemService }, { token: i1.DmsService }, { token: SelectionService }, { token: i1.TranslateService }, { token: ObjectStateService }, { token: ActionService }, { token: LocationService }, { token: PendingChangesService }, { token: i1.EventService }, { token: GridService }, { token: LayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
28551
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ObjectStateComponent, selector: "eo-object-state", outputs: { onTermFilterChange: "onTermFilterChange" }, providers: [ObjectStateService], viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<div class=\"file\" [ngClass]=\"{ready: context || context === null}\" *ngIf=\"!error; else errorTmpl\">\n\n <div class=\"file-head\" *ngIf=\"context && context.isContextFolder\">\n <div class=\"left\">\n <eo-icon class=\"type-icon\" [objectType]=\"context.type\" [iconTitle]=\"context.type.label\"></eo-icon>\n <div class=\"title\" (click)=\"setupFrontPage()\" (contextmenu)=\"onContextMenuClicked($event)\">\n <div class=\"label\">{{context.title || '&nbsp;'}}</div>\n <div class=\"description\">{{context.description || '&nbsp;'}}</div>\n </div>\n </div>\n <div class=\"right\">\n <div class=\"fold\">\n <span class=\"created-date\">{{context.created.on | localeDate}}</span>\n <span class=\"created-title\">{{context.created.by.title}}</span>\n </div>\n <div class=\"actions\">\n </div>\n </div>\n </div>\n\n <div class=\"file-body\">\n <div class=\"file-body-wrap\">\n\n <ng-container *ngIf=\"context !== null; else tplDetailsOnly\">\n\n <yvc-split-view *ngIf=\"cacheLayout\" [layoutSettingsID]=\"cacheLayout\">\n <ng-template yvcSplitArea [panelClass]=\"'tree'\" [size]=\"20\" [visible]=\"true\">\n <div class=\"tree-panel-error\" *ngIf=\"loadingState.tree.isError(); else tplTree\" translate>\n eo.state.object.tree.error</div>\n\n <ng-template #tplTree>\n\n <eo-list-container #eoList [loading]=\"!contextTree\" [tabs]=\"false\">\n <div class=\"eo-header dark\">\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\" translate>eo.state.object.tree.title</h2>\n <form name=\"structureForm\" class=\"tree-filter-form\" [ngClass]=\"{active: !!termFilter}\">\n <eo-form-input [skipToggle]=\"true\" [label]=\" 'eo.state.object.tree.filter.label' | translate\">\n <input [(ngModel)]=\"termFilter\" maxlength=\"250\" [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onTermFilterChange.emit($event)\" />\n </eo-form-input>\n </form>\n </div>\n </div>\n <div class=\"eo-body tree\">\n <eo-tree [tree]=\"contextTree\" [options]=\"{multiselect: false, disableDeselection: true}\"\n [@panelLoading]=\"loadingState.tree.state\" *ngIf=\"contextTree && (contextTree.length > 1 || (contextTree.length === 1 && contextTree[0].children.length && contextTree[0].name))\" [highlightedNodes]=\"highlightedNodes\"\n [treeUpdate]=\"contextTreeUpdate\" [(ngModel)]=\"selectedNodes\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\"></eo-tree>\n <h3 *ngIf=\"contextTreeRef?.length\" title=\"{{'eo.state.object.tree.references.tooltip'|translate}}\"\n translate>eo.state.object.tree.references</h3>\n <eo-tree [tree]=\"contextTreeRef\" [options]=\"{multiselect: false, disableDeselection: true}\"\n [@panelLoading]=\"loadingState.treeRef.state\" *ngIf=\"contextTreeRef?.length\"\n [highlightedNodes]=\"highlightedNodes\" [treeUpdate]=\"contextTreeRefUpdate\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\"\n class=\"reference\"></eo-tree>\n </div>\n </eo-list-container>\n\n </ng-template>\n </ng-template>\n\n <ng-template yvcSplitArea [panelClass]=\"'tree'\" [size]=\"35\" [visible]=\"true\">\n <eo-object-state-details *ngIf=\"context\" [context]=\"context\" [frontPageData]=\"frontPageData\"\n [visible]=\"frontPage\" (onTabChange)=\"setupFrontPage(true)\" [plugins]=\"'object-state-details-tab.object' | plugins\">\n </eo-object-state-details>\n\n <eo-result-list *ngIf=\"!frontPage && searchResult\" [selectFirst]=\"false\" [title]=\"gridTitle\"\n [reference]=\"selectedNode?.isReference\" [searchResult]=\"searchResult\" [configType]=\"configType\"\n [configContext]=\"\" [emptyMessage]=\"'eo.state.object.list.error'\" (onRefresh)=\"refreshList()\">\n </eo-result-list>\n </ng-template>\n\n <ng-template yvcSplitArea [size]=\"45\" [visible]=\"true\">\n <ng-container *ngTemplateOutlet=\"tplObjectDetails\"></ng-container>\n </ng-template>\n </yvc-split-view>\n\n </ng-container>\n\n <ng-template #tplDetailsOnly><ng-container *ngTemplateOutlet=\"tplObjectDetails\"></ng-container></ng-template>\n\n <ng-template #tplObjectDetails>\n <eo-object-details [applySelection]=\"{}\" [reference]=\"isReferenceActive\"\n [cacheLayout]=\"'object.state--' + typeName + '.object-details'\" [plugins]=\"'object-details-tab.object' | plugins\">\n </eo-object-details>\n </ng-template>\n </div>\n </div>\n</div>\n\n<ng-template #errorTmpl>\n <eo-error404></eo-error404>\n</ng-template>\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)}:host .eo-body.tree h3{margin:0;padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding) 0 var(--app-pane-padding);font-size:var(--font-subhead);font-weight:var(--font-weight-normal);color:var(--text-color-caption);border-top:1px solid var(--list-item-border-color)}:host .file{height:100%;display:flex;flex-flow:column}:host .file .file-head,:host .file .file-body{opacity: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}:host .file.ready .file-head,:host .file.ready .file-body{opacity:1}:host .file .empty-state{background:rgba(var(--color-white-rgb),.3);height:100%;display:flex;flex-flow:column;align-items:center;justify-content:center}:host .file.undocked .empty-state{background:var(--main-background)}:host .file-head{color:var(--text-color-caption);margin-bottom:calc(var(--app-pane-padding) / 4);display:flex;flex-flow:row nowrap;width:100%}:host .file-head eo-icon{padding:var(--app-pane-padding);box-sizing:content-box;flex:none}:host .file-head .left,:host .file-head .right{border-bottom:4px solid var(--color-primary-3);box-sizing:border-box}:host .file-head .left{flex:0 0 auto;display:flex;flex-flow:row nowrap;background:var(--color-white);max-width:calc(100% - 350px)}:host .file-head .left div.title{flex:1;padding:var(--app-pane-padding) 0;display:inline-grid;min-height:0;min-width:0;cursor:pointer}[dir=ltr] :host .file-head .left div.title{padding-right:calc(var(--app-pane-padding) * 2);padding-left:0}[dir=rtl] :host .file-head .left div.title{padding-left:calc(var(--app-pane-padding) * 2);padding-right:0}:host .file-head .left div.title .label,:host .file-head .left div.title .description{display:inline-block;max-width:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host .file-head .left div.title .label{font-size:var(--font-title)}:host .file-head .right{flex:1 1 auto;display:flex;flex-flow:column;min-width:350px}:host .file-head .right .fold{flex:0 0 auto;background:var(--main-background);color:var(--text-color-caption);text-align:right;padding-bottom:calc(var(--app-pane-padding) / 2);display:flex;justify-content:flex-end}[dir=rtl] :host .file-head .right .fold{text-align:right;text-align:left}:host .file-head .right .fold .created-date{padding-right:5px}:host .file-head .right .actions{background:var(--color-white);flex:1 1 auto;display:flex;align-items:center;padding:0 var(--app-pane-padding);justify-content:flex-end;min-height:50px}:host .file-body{flex:1 1 auto;position:relative}:host .file-body .file-body-wrap{position:absolute;inset:0;overflow:hidden}:host .file-body .file-body-wrap .frontPage{position:absolute;inset:0;overflow:hidden}:host ::ng-deep .tree .tree-panel-error{display:flex;height:100%;flex-flow:column;justify-content:center;align-items:center;color:var(--text-color-caption)}:host ::ng-deep .tree .eo-head{background-color:var(--color-primary-3)}:host ::ng-deep .tree .eo-head .eo-header-info{padding:0}:host ::ng-deep .tree .eo-head .eo-header-info h2{flex:1 1 auto;color:var(--color-white)}:host ::ng-deep .tree .eo-head .eo-header-info form.tree-filter-form{width:61%;flex:0 0 auto;margin-bottom:var(--app-pane-padding);min-width:200px;align-self:flex-end}:host ::ng-deep .tree .eo-head .eo-header-info form.tree-filter-form input{background-color:transparent;border:0;outline:0}:host ::ng-deep .tree eo-result-list .eo-head{background-color:var(--panel-background)}:host ::ng-deep yvc-split-view{height:100%}:host ::ng-deep eo-tree{padding:var(--app-pane-padding)}:host ::ng-deep eo-object-details{background:var(--panel-background-grey)}\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.ɵ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.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { 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: "component", type: ResultListComponent, selector: "eo-result-list", inputs: ["title", "configType", "configContext", "clearAfterExecute", "emptyMessage", "selectFirst", "gridOptions", "hasIcon", "reference", "query", "searchResult"], outputs: ["onSelectionChanged", "onFocusChanged", "onDoubleClick", "onContextMenu", "onCountChanged", "onRefresh", "onResult", "onQueryInvalid"] }, { 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: TreeComponent, selector: "eo-tree", inputs: ["options", "isDisplayed", "readonly", "emptyMessage", "selectionKey", "highlightedNodes", "tree", "treeUpdate"], outputs: ["expandedNodesChanged", "onSelected"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: Error404Component, selector: "eo-error404" }, { kind: "component", type: ObjectStateDetailsComponent, selector: "eo-object-state-details", inputs: ["plugins", "context", "selectedItem", "seenItems", "frontPageData", "visible"], outputs: ["onTabChange"] }, { 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: LocaleDatePipe, name: "localeDate" }, { kind: "pipe", type: PluginPipe, name: "plugins" }], animations: [panelLoadingAnimations] }); }
28589
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ObjectStateComponent, selector: "eo-object-state", outputs: { onTermFilterChange: "onTermFilterChange" }, providers: [ObjectStateService], viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<div class=\"file\" [ngClass]=\"{ready: context || context === null}\" *ngIf=\"!error; else errorTmpl\">\n\n <div class=\"file-head\" *ngIf=\"context && context.isContextFolder\">\n <div class=\"left\">\n <eo-icon class=\"type-icon\" [objectType]=\"context.type\" [iconTitle]=\"context.type.label\"></eo-icon>\n <div class=\"title\" (click)=\"setupFrontPage()\" (contextmenu)=\"onContextMenuClicked($event)\">\n <div class=\"label\">{{context.title || '&nbsp;'}}</div>\n <div class=\"description\">{{context.description || '&nbsp;'}}</div>\n </div>\n </div>\n <div class=\"right\">\n <div class=\"fold\">\n <span class=\"created-date\">{{context.created.on | localeDate}}</span>\n <span class=\"created-title\">{{context.created.by.title}}</span>\n </div>\n <div class=\"actions\">\n </div>\n </div>\n </div>\n\n <div class=\"file-body\">\n <div class=\"file-body-wrap\">\n\n <ng-container *ngIf=\"context !== null; else tplDetailsOnly\">\n\n <yvc-split-view *ngIf=\"cacheLayout\" [layoutSettingsID]=\"cacheLayout\">\n <ng-template yvcSplitArea [panelClass]=\"'tree'\" [size]=\"20\" [visible]=\"true\">\n <div class=\"tree-panel-error\" *ngIf=\"loadingState.tree.isError(); else tplTree\" translate>\n eo.state.object.tree.error</div>\n\n <ng-template #tplTree>\n\n <eo-list-container #eoList [loading]=\"!contextTree\" [tabs]=\"false\">\n <div class=\"eo-header dark\">\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\" translate>eo.state.object.tree.title</h2>\n <form name=\"structureForm\" class=\"tree-filter-form\" [ngClass]=\"{active: !!termFilter}\">\n <eo-form-input [skipToggle]=\"true\" [label]=\" 'eo.state.object.tree.filter.label' | translate\">\n <input [(ngModel)]=\"termFilter\" maxlength=\"250\" [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onTermFilterChange.emit($event)\" />\n </eo-form-input>\n </form>\n </div>\n </div>\n <div class=\"eo-body tree\">\n <eo-tree [tree]=\"contextTree\" [options]=\"{multiselect: false, disableDeselection: true}\"\n [@panelLoading]=\"loadingState.tree.state\" *ngIf=\"contextTree && (contextTree.length > 1 || (contextTree.length === 1 && contextTree[0].children.length && contextTree[0].name))\" [highlightedNodes]=\"highlightedNodes\"\n [treeUpdate]=\"contextTreeUpdate\" [(ngModel)]=\"selectedNodes\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\"></eo-tree>\n <h3 *ngIf=\"contextTreeRef?.length\" title=\"{{'eo.state.object.tree.references.tooltip'|translate}}\"\n translate>eo.state.object.tree.references</h3>\n <eo-tree [tree]=\"contextTreeRef\" [options]=\"{multiselect: false, disableDeselection: true}\"\n [@panelLoading]=\"loadingState.treeRef.state\" *ngIf=\"contextTreeRef?.length\"\n [highlightedNodes]=\"highlightedNodes\" [treeUpdate]=\"contextTreeRefUpdate\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\"\n class=\"reference\"></eo-tree>\n </div>\n </eo-list-container>\n\n </ng-template>\n </ng-template>\n\n <ng-template yvcSplitArea [panelClass]=\"'tree'\" [size]=\"35\" [visible]=\"true\">\n <eo-object-state-details *ngIf=\"context\" [context]=\"context\" [frontPageData]=\"frontPageData\"\n [visible]=\"frontPage\" (onTabChange)=\"setupFrontPage(true)\" [plugins]=\"'object-state-details-tab.object' | plugins\">\n </eo-object-state-details>\n\n <eo-result-list *ngIf=\"!frontPage && searchResult\" [selectFirst]=\"false\" [title]=\"gridTitle\"\n [reference]=\"selectedNode?.isReference\" [searchResult]=\"searchResult\" [configType]=\"configType\"\n [configContext]=\"\" [emptyMessage]=\"'eo.state.object.list.error'\" (onRefresh)=\"refreshList()\">\n </eo-result-list>\n </ng-template>\n\n <ng-template yvcSplitArea [size]=\"45\" [visible]=\"true\">\n <ng-container *ngTemplateOutlet=\"tplObjectDetails\"></ng-container>\n </ng-template>\n </yvc-split-view>\n\n </ng-container>\n\n <ng-template #tplDetailsOnly><ng-container *ngTemplateOutlet=\"tplObjectDetails\"></ng-container></ng-template>\n\n <ng-template #tplObjectDetails>\n <eo-object-details [applySelection]=\"{}\" [reference]=\"isReferenceActive\"\n [cacheLayout]=\"'object.state--' + typeName + '.object-details'\" [plugins]=\"'object-details-tab.object' | plugins\">\n </eo-object-details>\n </ng-template>\n </div>\n </div>\n</div>\n\n<ng-template #errorTmpl>\n <eo-error404></eo-error404>\n</ng-template>\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)}:host .eo-body.tree h3{margin:0;padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding) 0 var(--app-pane-padding);font-size:var(--font-subhead);font-weight:var(--font-weight-normal);color:var(--text-color-caption);border-top:1px solid var(--list-item-border-color)}:host .file{height:100%;display:flex;flex-flow:column}:host .file .file-head,:host .file .file-body{opacity: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}:host .file.ready .file-head,:host .file.ready .file-body{opacity:1}:host .file .empty-state{background:rgba(var(--color-white-rgb),.3);height:100%;display:flex;flex-flow:column;align-items:center;justify-content:center}:host .file.undocked .empty-state{background:var(--main-background)}:host .file-head{color:var(--text-color-caption);margin-bottom:calc(var(--app-pane-padding) / 4);display:flex;flex-flow:row nowrap;width:100%}:host .file-head eo-icon{padding:var(--app-pane-padding);box-sizing:content-box;flex:none}:host .file-head .left,:host .file-head .right{border-bottom:4px solid var(--color-primary-3);box-sizing:border-box}:host .file-head .left{flex:0 0 auto;display:flex;flex-flow:row nowrap;background:var(--color-white);max-width:calc(100% - 350px)}:host .file-head .left div.title{flex:1;padding:var(--app-pane-padding) 0;display:inline-grid;min-height:0;min-width:0;cursor:pointer}[dir=ltr] :host .file-head .left div.title{padding-right:calc(var(--app-pane-padding) * 2);padding-left:0}[dir=rtl] :host .file-head .left div.title{padding-left:calc(var(--app-pane-padding) * 2);padding-right:0}:host .file-head .left div.title .label,:host .file-head .left div.title .description{display:inline-block;max-width:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host .file-head .left div.title .label{font-size:var(--font-title)}:host .file-head .right{flex:1 1 auto;display:flex;flex-flow:column;min-width:350px}:host .file-head .right .fold{flex:0 0 auto;background:var(--main-background);color:var(--text-color-caption);text-align:right;padding-bottom:calc(var(--app-pane-padding) / 2);display:flex;justify-content:flex-end}[dir=rtl] :host .file-head .right .fold{text-align:right;text-align:left}:host .file-head .right .fold .created-date{padding-right:5px}:host .file-head .right .actions{background:var(--color-white);flex:1 1 auto;display:flex;align-items:center;padding:0 var(--app-pane-padding);justify-content:flex-end;min-height:50px}:host .file-body{flex:1 1 auto;position:relative}:host .file-body .file-body-wrap{position:absolute;inset:0;overflow:hidden}:host .file-body .file-body-wrap .frontPage{position:absolute;inset:0;overflow:hidden}:host ::ng-deep .tree .tree-panel-error{display:flex;height:100%;flex-flow:column;justify-content:center;align-items:center;color:var(--text-color-caption)}:host ::ng-deep .tree .eo-head{background-color:var(--color-primary-3)}:host ::ng-deep .tree .eo-head .eo-header-info{padding:0}:host ::ng-deep .tree .eo-head .eo-header-info h2{flex:1 1 auto;color:var(--color-white)}:host ::ng-deep .tree .eo-head .eo-header-info form.tree-filter-form{width:61%;flex:0 0 auto;margin-bottom:var(--app-pane-padding);min-width:200px;align-self:flex-end}:host ::ng-deep .tree .eo-head .eo-header-info form.tree-filter-form input{background-color:transparent;border:0;outline:0}:host ::ng-deep .tree eo-result-list .eo-head{background-color:var(--panel-background)}:host ::ng-deep yvc-split-view{height:100%}:host ::ng-deep eo-tree{padding:var(--app-pane-padding)}:host ::ng-deep eo-object-details{background:var(--panel-background-grey)}\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.ɵ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.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { 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: "component", type: ResultListComponent, selector: "eo-result-list", inputs: ["title", "configType", "configContext", "clearAfterExecute", "emptyMessage", "selectFirst", "gridOptions", "hasIcon", "reference", "query", "searchResult"], outputs: ["onSelectionChanged", "onFocusChanged", "onDoubleClick", "onContextMenu", "onCountChanged", "onRefresh", "onResult", "onQueryInvalid"] }, { kind: "component", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "searchTerm", "enableCompare", "recyclebinTabs", "versionComponentTabs", "enableDiff", "enableSync", "cacheLayout", "applySelection", "parseDmsParams", "reference", "emptyState", "params", "params2", "item", "item2"], outputs: ["hasContent"] }, { kind: "component", type: TreeComponent, selector: "eo-tree", inputs: ["options", "isDisplayed", "readonly", "emptyMessage", "selectionKey", "highlightedNodes", "tree", "treeUpdate"], outputs: ["expandedNodesChanged", "onSelected"] }, { kind: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: Error404Component, selector: "eo-error404" }, { kind: "component", type: ObjectStateDetailsComponent, selector: "eo-object-state-details", inputs: ["plugins", "context", "selectedItem", "seenItems", "frontPageData", "visible"], outputs: ["onTabChange"] }, { 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: LocaleDatePipe, name: "localeDate" }, { kind: "pipe", type: PluginPipe, name: "plugins" }], animations: [panelLoadingAnimations] }); }
28552
28590
  };
28553
28591
  ObjectStateComponent = __decorate([
28554
28592
  UntilDestroy()