@eo-sdk/client 11.12.1 → 11.13.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
  2. package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts +1 -0
  3. package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts.map +1 -1
  4. package/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.d.ts +6 -3
  5. package/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.d.ts.map +1 -1
  6. package/app/eo-framework/actions/actions/download-action/download-action.d.ts +7 -3
  7. package/app/eo-framework/actions/actions/download-action/download-action.d.ts.map +1 -1
  8. package/app/eo-framework/actions/actions/email/email/email.component.d.ts +7 -4
  9. package/app/eo-framework/actions/actions/email/email/email.component.d.ts.map +1 -1
  10. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts +10 -2
  11. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
  12. package/app/eo-framework/form-elements/form-elements.module.d.ts.map +1 -1
  13. package/app/eo-framework/grid/filters/dynamic-list-filter.component.d.ts +2 -2
  14. package/app/eo-framework/grid/filters/dynamic-list-filter.component.d.ts.map +1 -1
  15. package/app/eo-framework/list-container/list-container.component.d.ts +2 -2
  16. package/app/eo-framework/list-container/list-container.component.d.ts.map +1 -1
  17. package/app/eo-framework/object-details/object-details.component.d.ts +33 -35
  18. package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
  19. package/app/eo-framework/result-list/result-list.component.d.ts +10 -3
  20. package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
  21. package/app/eo-framework/result-list/result-list.module.d.ts +3 -1
  22. package/app/eo-framework/result-list/result-list.module.d.ts.map +1 -1
  23. package/app/eo-framework/settings/permissions/permissions.component.d.ts +3 -1
  24. package/app/eo-framework/settings/permissions/permissions.component.d.ts.map +1 -1
  25. package/assets/_default/i18n/de.json +3 -2
  26. package/assets/_default/i18n/en.json +3 -2
  27. package/esm2022/app/eo-client/about-state/about-state.component.mjs +6 -5
  28. package/esm2022/app/eo-client/favorite-state/favorite-state.component.mjs +1 -1
  29. package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +18 -10
  30. package/esm2022/app/eo-client/notifications-state/notifications-state.component.mjs +1 -1
  31. package/esm2022/app/eo-client/object-state/object-state/object-state.component.mjs +1 -1
  32. package/esm2022/app/eo-client/process-state/process-state.component.mjs +1 -1
  33. package/esm2022/app/eo-client/result-state/result-state.component.mjs +1 -1
  34. package/esm2022/app/eo-client/version-state/version-state.component.mjs +1 -1
  35. package/esm2022/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.mjs +16 -8
  36. package/esm2022/app/eo-framework/actions/actions/download-action/download-action.mjs +11 -7
  37. package/esm2022/app/eo-framework/actions/actions/email/email/email.component.mjs +21 -12
  38. package/esm2022/app/eo-framework/eo-framework.module.mjs +2 -2
  39. package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +23 -4
  40. package/esm2022/app/eo-framework/form-elements/form-elements.module.mjs +1 -28
  41. package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +5 -5
  42. package/esm2022/app/eo-framework/list-container/list-container.component.mjs +5 -5
  43. package/esm2022/app/eo-framework/object-details/object-details.component.mjs +219 -216
  44. package/esm2022/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +2 -2
  45. package/esm2022/app/eo-framework/result-list/result-list.component.mjs +46 -25
  46. package/esm2022/app/eo-framework/result-list/result-list.module.mjs +12 -4
  47. package/esm2022/app/eo-framework/settings/permissions/permissions.component.mjs +10 -2
  48. package/fesm2022/eo-sdk-client.mjs +1308 -1254
  49. package/fesm2022/eo-sdk-client.mjs.map +1 -1
  50. package/misc/scripts/prebuild-about-state.js +7 -5
  51. 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';
@@ -7061,10 +7061,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
7061
7061
  }], ctorParameters: () => [{ type: i1.AutocompleteService }, { type: ObjectFormHelperService }] });
7062
7062
 
7063
7063
  class DynamicListComponent {
7064
- constructor(dynamicListService, localStorageService, objectFormHelperService) {
7064
+ // eslint-disable-next-line max-len
7065
+ constructor(dynamicListService, localStorageService, objectFormHelperService, eventService) {
7065
7066
  this.dynamicListService = dynamicListService;
7066
7067
  this.localStorageService = localStorageService;
7067
7068
  this.objectFormHelperService = objectFormHelperService;
7069
+ this.eventService = eventService;
7068
7070
  this.hasAutocompleteUrl = false;
7069
7071
  this.hasAutocompleteValuesCached = false;
7070
7072
  this.autocompleteUrlValue = null;
@@ -7268,6 +7270,12 @@ class DynamicListComponent {
7268
7270
  if (this.situation === 'SEARCH') {
7269
7271
  this.multiselect = true;
7270
7272
  }
7273
+ this.eventService.on(EnaioEvent.CLIENT_LOCALE_CHANGED).subscribe(() => {
7274
+ this.resetCachedValues();
7275
+ });
7276
+ this.eventService.on(EnaioEvent.SCHEMA_LOCALE_CHANGED).subscribe(() => {
7277
+ this.resetCachedValues();
7278
+ });
7271
7279
  }
7272
7280
  validate(c) {
7273
7281
  return (this.isValid) ? null : {
@@ -7440,7 +7448,17 @@ class DynamicListComponent {
7440
7448
  (acNode.data[this.descriptionField] && acNode.data[this.descriptionField].toString().toLowerCase().indexOf(term?.toString().toLowerCase()) !== -1);
7441
7449
  }).slice(0, 10);
7442
7450
  }
7443
- 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 }); }
7451
+ /**
7452
+ * Resets the cached autocomplete values.
7453
+ *
7454
+ * This method sets the `hasAutocompleteValuesCached` flag to `false` and removes
7455
+ * the cached autocomplete values from local storage using the `formControlName`.
7456
+ */
7457
+ resetCachedValues() {
7458
+ this.hasAutocompleteValuesCached = false;
7459
+ this.localStorageService.removeItem('autocomplete_' + this.formControlName);
7460
+ }
7461
+ 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 }); }
7444
7462
  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: [
7445
7463
  {
7446
7464
  provide: NG_VALUE_ACCESSOR,
@@ -7468,7 +7486,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
7468
7486
  multi: true,
7469
7487
  }
7470
7488
  ], 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"] }]
7471
- }], ctorParameters: () => [{ type: DynamicListService }, { type: i1.LocalStorageService }, { type: ObjectFormHelperService }], propDecorators: { autoCompleteInput: [{
7489
+ }], ctorParameters: () => [{ type: DynamicListService }, { type: i1.LocalStorageService }, { type: ObjectFormHelperService }, { type: i1.EventService }], propDecorators: { autoCompleteInput: [{
7472
7490
  type: ViewChild,
7473
7491
  args: ['autocomplete']
7474
7492
  }], autoCompleteButton: [{
@@ -8839,7 +8857,7 @@ let RowEditComponent = class RowEditComponent {
8839
8857
  this.onSave.emit({
8840
8858
  index: this._row.index,
8841
8859
  rowData: this._getFormData(),
8842
- createNewRow: this.createNewRow
8860
+ createNewRow: this.isNewRow && this.createNewRow
8843
8861
  });
8844
8862
  }
8845
8863
  this.saving = false;
@@ -11408,9 +11426,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
11408
11426
  }] } });
11409
11427
 
11410
11428
  class DownloadActionComponent extends DmsObjectTarget {
11411
- constructor(translate) {
11429
+ constructor(translate, config, userService) {
11412
11430
  super();
11413
11431
  this.translate = translate;
11432
+ this.config = config;
11433
+ this.userService = userService;
11414
11434
  this.priority = 2;
11415
11435
  this.iconSrc = 'assets/_default/svg/ic_content-download.svg';
11416
11436
  this.group = 'common';
@@ -11419,20 +11439,22 @@ class DownloadActionComponent extends DmsObjectTarget {
11419
11439
  this.label = this.translate.instant('eo.action.download.dms.object.content.label');
11420
11440
  this.description = this.translate.instant('eo.action.download.dms.object.content.description');
11421
11441
  this.header = this.translate.instant('eo.export.title');
11442
+ this.requiredRoles = this.config.getRaw('requiredRolesExport');
11422
11443
  }
11423
11444
  isExecutable(element) {
11424
- return of(!!element.content?.id);
11445
+ const isAllowed = !this.requiredRoles || this.userService.getCurrentUser().roles.some(role => this.requiredRoles.includes(role.name));
11446
+ return of(!!element.content?.id && isAllowed);
11425
11447
  }
11426
- 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 }); }
11427
- 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 }); }
11448
+ 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 }); }
11449
+ 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 }); }
11428
11450
  }
11429
11451
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DownloadActionComponent, decorators: [{
11430
11452
  type: Component,
11431
11453
  args: [{
11432
11454
  selector: 'eo-download-content',
11433
- template: ``
11455
+ template: ''
11434
11456
  }]
11435
- }], ctorParameters: () => [{ type: i1.TranslateService }] });
11457
+ }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i1.Config }, { type: i1.UserService }] });
11436
11458
 
11437
11459
  class OpenDocumentComponent {
11438
11460
  constructor(userService, agentService, translate, objectFormHelperService) {
@@ -11645,16 +11667,7 @@ class FormElementsModule {
11645
11667
  ReactiveFormsModule,
11646
11668
  UiModule,
11647
11669
  TreeModule,
11648
- // InputTextModule,
11649
- // DialogModule,
11650
- // InputMaskModule,
11651
- // CheckboxModule,
11652
- // TriStateCheckboxModule,
11653
- // InputTextareaModule,
11654
- // ChipsModule,
11655
- // DropdownModule,
11656
11670
  RouterModule,
11657
- // SharedModule,
11658
11671
  AccordionModule,
11659
11672
  YvcChipsModule,
11660
11673
  YvcCheckboxModule,
@@ -11680,16 +11693,7 @@ class FormElementsModule {
11680
11693
  ReactiveFormsModule,
11681
11694
  UiModule,
11682
11695
  TreeModule,
11683
- // InputTextModule,
11684
- // DialogModule,
11685
- // InputMaskModule,
11686
- // CheckboxModule,
11687
- // TriStateCheckboxModule,
11688
- // InputTextareaModule,
11689
- // ChipsModule,
11690
- // DropdownModule,
11691
11696
  RouterModule,
11692
- // SharedModule,
11693
11697
  AccordionModule,
11694
11698
  YvcChipsModule,
11695
11699
  YvcCheckboxModule,
@@ -11707,16 +11711,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
11707
11711
  ReactiveFormsModule,
11708
11712
  UiModule,
11709
11713
  TreeModule,
11710
- // InputTextModule,
11711
- // DialogModule,
11712
- // InputMaskModule,
11713
- // CheckboxModule,
11714
- // TriStateCheckboxModule,
11715
- // InputTextareaModule,
11716
- // ChipsModule,
11717
- // DropdownModule,
11718
11714
  RouterModule,
11719
- // SharedModule,
11720
11715
  AccordionModule,
11721
11716
  YvcChipsModule,
11722
11717
  YvcCheckboxModule,
@@ -11873,8 +11868,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
11873
11868
  }] } });
11874
11869
 
11875
11870
  class DynamicListFilterComponent extends DynamicListComponent {
11876
- constructor(localStorageService, objectFormHelperService, dynamicListService) {
11877
- super(dynamicListService, localStorageService, objectFormHelperService);
11871
+ constructor(localStorageService, objectFormHelperService, dynamicListService, eventService) {
11872
+ super(dynamicListService, localStorageService, objectFormHelperService, eventService);
11878
11873
  this.params = {};
11879
11874
  this.multiselect = true;
11880
11875
  this.situation = 'SEARCH';
@@ -11921,13 +11916,13 @@ class DynamicListFilterComponent extends DynamicListComponent {
11921
11916
  this.listObject = { entries: (this.params.colDef.filterParams.values || []).map(value => ({ value })) };
11922
11917
  this.pickerTitle = this.params.colDef.headerName;
11923
11918
  }
11924
- 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 }); }
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 }, { token: i1.EventService }], target: i0.ɵɵFactoryTarget.Component }); }
11925
11920
  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"] }] }); }
11926
11921
  }
11927
11922
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DynamicListFilterComponent, decorators: [{
11928
11923
  type: Component,
11929
11924
  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"] }]
11930
- }], ctorParameters: () => [{ type: i1.LocalStorageService }, { type: ObjectFormHelperService }, { type: DynamicListService }], propDecorators: { eoDialog: [{
11925
+ }], ctorParameters: () => [{ type: i1.LocalStorageService }, { type: ObjectFormHelperService }, { type: DynamicListService }, { type: i1.EventService }], propDecorators: { eoDialog: [{
11931
11926
  type: ViewChild,
11932
11927
  args: [EoDialogComponent]
11933
11928
  }] } });
@@ -13336,10 +13331,10 @@ class ListContainerComponent {
13336
13331
  .find(this.applySelection.out)
13337
13332
  .focus(data);
13338
13333
  }
13339
- onDoubleClick(event) {
13334
+ onDoubleClick(event, forceOpenObject = false) {
13340
13335
  const { id, type, version, intent } = this.parseDmsParams(event.data);
13341
13336
  if (id) {
13342
- return this.openObject(id, type, version, intent, event.event.ctrlKey);
13337
+ return this.openObject(id, type, version, intent, event.event.ctrlKey, forceOpenObject);
13343
13338
  }
13344
13339
  }
13345
13340
  onSelectionChanged(selectedData) {
@@ -13348,8 +13343,8 @@ class ListContainerComponent {
13348
13343
  onContextMenu(selectedData, target) {
13349
13344
  this.showActions(selectedData, target);
13350
13345
  }
13351
- openObject(id, _type, version, intent, newTab = false) {
13352
- if (this.router.url.startsWith('/object')) {
13346
+ openObject(id, _type, version, intent, newTab = false, forceOpenObject = false) {
13347
+ if (this.router.url.startsWith('/object') && !forceOpenObject) {
13353
13348
  return;
13354
13349
  }
13355
13350
  version = this.applyVersion ? version : undefined;
@@ -14068,17 +14063,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
14068
14063
  }] });
14069
14064
 
14070
14065
  class EmailComponent {
14071
- constructor(location, agentService, elemRef) {
14066
+ constructor(location, agentService, elemRef, config, userService) {
14072
14067
  this.location = location;
14073
14068
  this.agentService = agentService;
14074
14069
  this.elemRef = elemRef;
14070
+ this.config = config;
14071
+ this.userService = userService;
14075
14072
  this.finished = new EventEmitter();
14076
14073
  this.canceled = new EventEmitter();
14074
+ this.requiredRoles = this.config.getRaw('requiredRolesExport');
14077
14075
  }
14078
14076
  ngAfterViewInit() {
14079
14077
  setTimeout(() => {
14080
14078
  this.elemRef.nativeElement.querySelector('[tabindex="0"]').focus();
14081
- this.isExecutable = this.agentService.isConnected && !this.selection[0].isFolder && this.selection[0].content && (this.selection[0].content.count !== 0 || this.selection[0].content.linked);
14079
+ const isAllowed = !this.requiredRoles || this.userService.getCurrentUser().roles.some(role => this.requiredRoles.includes(role.name));
14080
+ this.isExecutable = isAllowed
14081
+ && this.agentService.isConnected
14082
+ && !this.selection[0].isFolder
14083
+ && this.selection[0].content
14084
+ && (this.selection[0].content.count !== 0 || this.selection[0].content.linked);
14082
14085
  });
14083
14086
  }
14084
14087
  runLink() {
@@ -14134,22 +14137,22 @@ class EmailComponent {
14134
14137
  }
14135
14138
  showDescription(i, event) {
14136
14139
  this.actionDescription = i === this.actionDescription ? null : i;
14137
- this.showDescriptionOrginal = this.actionDescription != null && this.actionDescription == 'original' ? true : false;
14138
- this.showDescriptionPdf = this.actionDescription != null && this.actionDescription == 'pdf' ? true : false;
14139
- this.showDescriptionLink = this.actionDescription != null && this.actionDescription == 'link' ? true : false;
14140
+ this.showDescriptionOrginal = this.actionDescription && this.actionDescription === 'original';
14141
+ this.showDescriptionPdf = this.actionDescription && this.actionDescription === 'pdf';
14142
+ this.showDescriptionLink = this.actionDescription && this.actionDescription === 'link';
14140
14143
  event.stopPropagation();
14141
14144
  event.preventDefault();
14142
14145
  }
14143
14146
  cancel() {
14144
14147
  this.canceled.emit();
14145
14148
  }
14146
- 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 }); }
14149
+ 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 }); }
14147
14150
  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" }] }); }
14148
14151
  }
14149
14152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: EmailComponent, decorators: [{
14150
14153
  type: Component,
14151
14154
  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"] }]
14152
- }], ctorParameters: () => [{ type: i1$2.Location }, { type: AgentService }, { type: i0.ElementRef }], propDecorators: { selection: [{
14155
+ }], ctorParameters: () => [{ type: i1$2.Location }, { type: AgentService }, { type: i0.ElementRef }, { type: i1.Config }, { type: i1.UserService }], propDecorators: { selection: [{
14153
14156
  type: Input
14154
14157
  }], finished: [{
14155
14158
  type: Output
@@ -14186,19 +14189,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
14186
14189
  }], ctorParameters: () => [{ type: i1.TranslateService }] });
14187
14190
 
14188
14191
  class ClipboardObjectActionComponent {
14189
- constructor(translate, toast, location, agentService, elemRef) {
14192
+ constructor(translate, toast, location, agentService, elemRef, config, userService) {
14190
14193
  this.translate = translate;
14191
14194
  this.toast = toast;
14192
14195
  this.location = location;
14193
14196
  this.agentService = agentService;
14194
14197
  this.elemRef = elemRef;
14198
+ this.config = config;
14199
+ this.userService = userService;
14195
14200
  this.finished = new EventEmitter();
14196
14201
  this.canceled = new EventEmitter();
14202
+ this.requiredRoles = this.config.getRaw('requiredRolesExport');
14197
14203
  }
14198
14204
  ngAfterViewInit() {
14199
14205
  setTimeout(() => {
14200
14206
  this.elemRef.nativeElement.querySelector('[tabindex="0"]').focus();
14201
- this.isExecutable = this.agentService.isConnected && !this.selection[0].isFolder && this.selection[0].content && (this.selection[0].content.count !== 0 || this.selection[0].content.linked);
14207
+ const isAllowed = !this.requiredRoles || this.userService.getCurrentUser().roles.some(role => this.requiredRoles.includes(role.name));
14208
+ this.isExecutable = isAllowed
14209
+ && this.agentService.isConnected
14210
+ && !this.selection[0].isFolder
14211
+ && this.selection[0].content
14212
+ && (this.selection[0].content.count !== 0 || this.selection[0].content.linked);
14202
14213
  });
14203
14214
  }
14204
14215
  runLink() {
@@ -14249,22 +14260,22 @@ class ClipboardObjectActionComponent {
14249
14260
  }
14250
14261
  showDescription(i, event) {
14251
14262
  this.actionDescription = i === this.actionDescription ? null : i;
14252
- this.showDescriptionOrginal = this.actionDescription != null && this.actionDescription == 'original' ? true : false;
14253
- this.showDescriptionPdf = this.actionDescription != null && this.actionDescription == 'pdf' ? true : false;
14254
- this.showDescriptionLink = this.actionDescription != null && this.actionDescription == 'link' ? true : false;
14263
+ this.showDescriptionOrginal = this.actionDescription && this.actionDescription === 'original';
14264
+ this.showDescriptionPdf = this.actionDescription && this.actionDescription === 'pdf';
14265
+ this.showDescriptionLink = this.actionDescription && this.actionDescription === 'link';
14255
14266
  event.stopPropagation();
14256
14267
  event.preventDefault();
14257
14268
  }
14258
14269
  cancel() {
14259
14270
  this.canceled.emit();
14260
14271
  }
14261
- 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 }); }
14272
+ 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 }); }
14262
14273
  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" }] }); }
14263
14274
  }
14264
14275
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipboardObjectActionComponent, decorators: [{
14265
14276
  type: Component,
14266
14277
  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"] }]
14267
- }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i1.NotificationsService }, { type: i1$2.Location }, { type: AgentService }, { type: i0.ElementRef }], propDecorators: { selection: [{
14278
+ }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i1.NotificationsService }, { type: i1$2.Location }, { type: AgentService }, { type: i0.ElementRef }, { type: i1.Config }, { type: i1.UserService }], propDecorators: { selection: [{
14268
14279
  type: Input
14269
14280
  }], finished: [{
14270
14281
  type: Output
@@ -19816,76 +19827,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
19816
19827
  }] } });
19817
19828
 
19818
19829
  let ObjectDetailsComponent = class ObjectDetailsComponent {
19819
- set reference(isRef) {
19820
- this.isReference = isRef;
19821
- }
19822
- set emptyState(e) {
19823
- this._emptyState = e || EmptyStateService.defaultEmptyState();
19824
- }
19825
- get emptyState() {
19826
- return this._emptyState;
19827
- }
19828
- set dmsParams(params) {
19829
- this.loadDmsObject(params).subscribe((res) => {
19830
- this.dmsObject = res;
19831
- }, Utils.throw(() => this.onHasError(true, true, false)));
19832
- }
19833
- set dmsParams2(params) {
19834
- this.loadDmsObject(params)
19835
- .subscribe((res) => {
19836
- this.dmsObject2 = res;
19837
- }, Utils.throw(() => this.onHasError(true, true, false)));
19838
- }
19839
- set dmsObject(v) {
19840
- // show loader if object is different and force change detection to show loader
19841
- this.showLoader = true;
19842
- this.cdr.detectChanges();
19843
- const isDifferent = this.item?.id !== v?.id;
19844
- this.item = v;
19845
- this.onHasError();
19846
- this.setupCapabilities();
19847
- if (this.item?.id) {
19848
- this.fetchAtiveProcessData(this.item?.id);
19849
- }
19850
- // prepare indexdata preview
19851
- this.onIndexDataSaved(null, this.item);
19852
- this.eventService.trigger(EnaioEvent.DMS_OBJECT_LOADED, this.item);
19853
- if (this.item) {
19854
- if (isDifferent && this.item.isActiveVersion && !this.enableCompare) {
19855
- this.uploadTarget.referenceObject = this.item;
19856
- this.uploadTarget.onUploadSuccess = () => this.dmsParams = { id: v.id, type: v.typeName };
19857
- this.uploadRegistry.register(this.uploadTarget);
19858
- }
19859
- else {
19860
- this.uploadRegistry.unregister(this.uploadTarget.id);
19861
- this.uploadTarget.referenceObject = this.item;
19862
- this.uploadTarget.onUploadSuccess = () => this.dmsParams = { id: v.id, type: v.typeName };
19863
- this.uploadRegistry.register(this.uploadTarget);
19864
- }
19865
- if (this.item.lock) {
19866
- this.lockTooltip = this.translate.instant('eo.object.lock') + ' '
19867
- + (new LocaleDatePipe(this.translate).transform(this.item.lock.on))
19868
- + ', ' + this.item.lock.by.label + ' (' + this.item.lock.by.name + ')';
19869
- }
19870
- }
19871
- else {
19872
- this.emptyState = this.empty.getEmptyState(0);
19873
- }
19874
- if (this.item?.subscriptions.length) {
19875
- this.subscriptionIconTooltip = this.createSubscriptionIconTooltip(this.item);
19876
- }
19877
- }
19878
- set dmsObject2(v) {
19879
- this.item2 = v;
19880
- this.enableSync = !!this.item2?.version;
19881
- this.onHasError();
19882
- this.onIndexDataSaved(null, this.item2);
19883
- }
19884
- get dataType() {
19885
- return this.item ? this.item.typeName : 'none';
19886
- }
19887
- // undockWinActive = false;
19888
- constructor(router, route, system, empty, agentService, backend, dmsService, selection, actionService, capabilityService, uploadRegistry, eventService, configService, bpmService, translate, cdr) {
19830
+ constructor(router, route, system, empty, agentService, backend, dmsService, selection, actionService, capabilityService, uploadRegistry, eventService, configService, bpmService, translate, cdr, userService) {
19889
19831
  this.router = router;
19890
19832
  this.route = route;
19891
19833
  this.system = system;
@@ -19902,8 +19844,14 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
19902
19844
  this.bpmService = bpmService;
19903
19845
  this.translate = translate;
19904
19846
  this.cdr = cdr;
19905
- // generate unique id to pass to upload registry
19906
- this.uploadTarget = new UploadTarget(Utils.uuid(), UploadTarget.OBJECT);
19847
+ this.userService = userService;
19848
+ this.enableCompare = false;
19849
+ this.recyclebinTabs = false;
19850
+ this.versionComponentTabs = false;
19851
+ this.enableDiff = true;
19852
+ this.enableSync = false;
19853
+ this.parseDmsParams = this.getDmsParams;
19854
+ this.hasContent = new EventEmitter();
19907
19855
  this.hasError = false;
19908
19856
  this.nodmsobject = false;
19909
19857
  this.showLoader = false;
@@ -19911,14 +19859,8 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
19911
19859
  this.panelOrder = { 'master': ['summary', 'indexdata', 'history', 'links', 'signature'], 'slave': ['preview'] };
19912
19860
  this.agentIsConnected$ = this.agentService.isConnected$;
19913
19861
  this.split = false;
19914
- this.enableCompare = false;
19915
- this.recyclebinTabs = false;
19916
- this.versionComponentTabs = false;
19917
- this.enableDiff = true;
19918
- this.enableSync = false;
19919
19862
  this.onEnableSync = true;
19920
19863
  this.tabs = [];
19921
- this._emptyState = { icon: 'ic_no-file.svg', text: '', className: '' };
19922
19864
  this.preventClickThrough = false;
19923
19865
  // shortcut actions
19924
19866
  this.shortcuts = {
@@ -19956,7 +19898,7 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
19956
19898
  this.downloadOriginalContent();
19957
19899
  },
19958
19900
  isHidden: () => {
19959
- return !this.enableCompare && this.item.content?.id ? false : true;
19901
+ return !(!this.enableCompare && this.item.content?.id);
19960
19902
  }
19961
19903
  },
19962
19904
  {
@@ -19983,51 +19925,85 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
19983
19925
  }
19984
19926
  ]
19985
19927
  };
19986
- this.parseDmsParams = this.getDmsParams;
19987
- this.hasContent = new EventEmitter();
19928
+ // generate unique id to pass to upload registry
19929
+ this.uploadTarget = new UploadTarget(Utils.uuid(), UploadTarget.OBJECT);
19930
+ this._emptyState = { icon: 'ic_no-file.svg', text: '', className: '' };
19988
19931
  this.panelOrder = this.configService.getRaw('objectDetailsTabs') || this.panelOrder;
19932
+ const requiredRoles = this.configService.getRaw('requiredRolesExport');
19933
+ this.downloadAllowed = !requiredRoles || this.userService.getCurrentUser().roles.some(role => requiredRoles.includes(role.name));
19989
19934
  this.agentService.setAgentStatus(this.route.snapshot.queryParams['connectagent']).subscribe((hasStatus) => {
19990
19935
  if (hasStatus) {
19991
- this.router.navigate([], { queryParams: { connectagent: null }, queryParamsHandling: 'merge' });
19936
+ this.router.navigate([], { queryParams: { connectagent: null }, queryParamsHandling: 'merge' }).then();
19992
19937
  }
19993
19938
  });
19994
19939
  }
19995
- getDmsParams(data) {
19996
- return data ? { ...data, type: data.typeName || data.type } : null;
19940
+ get dataType() {
19941
+ return this.item ? this.item.typeName : 'none';
19997
19942
  }
19998
- updateContent() {
19999
- if (this.applySelection) {
20000
- if (this.enableCompare) {
20001
- this.selection
20002
- .find(this.applySelection.in)
20003
- .selection$
20004
- .pipe(untilDestroyed(this), throttleTime(500))
20005
- .subscribe((res) => {
20006
- this.dmsParams = this.parseDmsParams(res[0]);
20007
- this.dmsParams2 = this.parseDmsParams(res[1]);
20008
- });
20009
- return;
19943
+ get emptyState() {
19944
+ return this._emptyState;
19945
+ }
19946
+ set reference(isRef) {
19947
+ this.isReference = isRef;
19948
+ }
19949
+ set emptyState(e) {
19950
+ this._emptyState = e || EmptyStateService.defaultEmptyState();
19951
+ }
19952
+ set dmsParams(params) {
19953
+ this.loadDmsObject(params).subscribe((res) => {
19954
+ this.dmsObject = res;
19955
+ }, Utils.throw(() => this.onHasError(true, true, false)));
19956
+ }
19957
+ set dmsParams2(params) {
19958
+ this.loadDmsObject(params)
19959
+ .subscribe((res) => {
19960
+ this.dmsObject2 = res;
19961
+ }, Utils.throw(() => this.onHasError(true, true, false)));
19962
+ }
19963
+ set dmsObject(v) {
19964
+ // show loader if object is different and force change detection to show loader
19965
+ this.showLoader = true;
19966
+ this.cdr.detectChanges();
19967
+ const isDifferent = this.item?.id !== v?.id;
19968
+ this.item = v;
19969
+ this.onHasError();
19970
+ this.setupCapabilities();
19971
+ if (this.item?.id) {
19972
+ this.fetchAtiveProcessData(this.item?.id);
19973
+ }
19974
+ // prepare indexdata preview
19975
+ this.onIndexDataSaved(null, this.item);
19976
+ this.eventService.trigger(EnaioEvent.DMS_OBJECT_LOADED, this.item);
19977
+ if (this.item) {
19978
+ if (isDifferent && this.item.isActiveVersion && !this.enableCompare) {
19979
+ this.uploadTarget.referenceObject = this.item;
19980
+ this.uploadTarget.onUploadSuccess = () => this.dmsParams = { id: v.id, type: v.typeName };
19981
+ this.uploadRegistry.register(this.uploadTarget);
20010
19982
  }
20011
19983
  else {
20012
- this.selection
20013
- .find(this.applySelection.in)
20014
- .focus$
20015
- .pipe(untilDestroyed(this))
20016
- .subscribe(res => {
20017
- this.loadDmsObject(this.parseDmsParams(res)).subscribe((res) => {
20018
- // refreshing object details may result in an updated version of the object
20019
- // so we'll use this trigger to also emitt those changes to other listening components
20020
- if (this.item && res && (this.item.id === res.id)) {
20021
- this.eventService.trigger(EnaioEvent.DMS_OBJECT_UPDATED, res);
20022
- }
20023
- this.dmsObject = res;
20024
- }, Utils.throw((error) => {
20025
- this.uploadRegistry.unregister(this.uploadTarget.id);
20026
- return this.onHasError(true, true, false);
20027
- }));
20028
- });
19984
+ this.uploadRegistry.unregister(this.uploadTarget.id);
19985
+ this.uploadTarget.referenceObject = this.item;
19986
+ this.uploadTarget.onUploadSuccess = () => this.dmsParams = { id: v.id, type: v.typeName };
19987
+ this.uploadRegistry.register(this.uploadTarget);
19988
+ }
19989
+ if (this.item.lock) {
19990
+ this.lockTooltip = this.translate.instant('eo.object.lock') + ' '
19991
+ + (new LocaleDatePipe(this.translate).transform(this.item.lock.on))
19992
+ + ', ' + this.item.lock.by.label + ' (' + this.item.lock.by.name + ')';
20029
19993
  }
20030
19994
  }
19995
+ else {
19996
+ this.emptyState = this.empty.getEmptyState(0);
19997
+ }
19998
+ if (this.item?.subscriptions.length) {
19999
+ this.subscriptionIconTooltip = this.createSubscriptionIconTooltip();
20000
+ }
20001
+ }
20002
+ set dmsObject2(v) {
20003
+ this.item2 = v;
20004
+ this.enableSync = !!this.item2?.version;
20005
+ this.onHasError();
20006
+ this.onIndexDataSaved(null, this.item2);
20031
20007
  }
20032
20008
  refreshContent() {
20033
20009
  if (!this.preventClickThrough) {
@@ -20038,39 +20014,6 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
20038
20014
  this.preventClickThrough = false;
20039
20015
  }, 5000);
20040
20016
  }
20041
- prepareIndexDataPreview(item, formData) {
20042
- const { id, data, type, created, modified, content, contentFileName, contentFileSize, version } = item;
20043
- return this.system
20044
- .getObjectTypeForm(type.name, 'EDIT')
20045
- .pipe(map(form => {
20046
- let indexDataPreview = {
20047
- form,
20048
- data: formData || data
20049
- };
20050
- let baseparams = {
20051
- id,
20052
- type: type.name,
20053
- createdOn: new Date(created.on),
20054
- modifiedOn: new Date(modified.on),
20055
- createdBy: `${created.by.title} (${created.by.name})`,
20056
- modifiedBy: `${modified.by.title} (${modified.by.name})`,
20057
- contentFileName: contentFileName ? contentFileName : null,
20058
- contentFileSize: contentFileSize ? Number(contentFileSize) : null,
20059
- version: version || 0,
20060
- mimeGroup: content ? content.contents ? content.contents[0].mimegroup : null : null,
20061
- digest: content ? content.contents ? content.contents[0].digest : null : null,
20062
- contentId: content ? content.contents ? content.id : null : null,
20063
- mimeType: content ? content.contents ? content.contents[0].mimetype : null : null,
20064
- };
20065
- return { indexDataPreview, baseparams };
20066
- }));
20067
- }
20068
- onHasError(hasError = false, nodmsobject = false, showLoader = false) {
20069
- this.hasError = hasError;
20070
- this.nodmsobject = nodmsobject;
20071
- this.showLoader = showLoader;
20072
- this.hasContent.emit(!hasError);
20073
- }
20074
20017
  loadDmsObject(params) {
20075
20018
  if (!this.enableCompare && params) {
20076
20019
  delete params.version;
@@ -20140,63 +20083,14 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
20140
20083
  });
20141
20084
  }
20142
20085
  }
20143
- get referenceTitle() {
20144
- return this.item.contextFolder ? this.item.contextFolder.title : this.item.title;
20145
- }
20146
20086
  isJournalObject(item) {
20147
20087
  return item.type.supertypes.find(sT => sT === 'sysjournalobject');
20148
20088
  }
20149
- createSubscriptionIconTooltip(item) {
20150
- let tooltip = '';
20151
- const modes = this.item.subscriptions.map(subscription => subscription.mode);
20152
- const subscribedToAllChanges = modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED) || (modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED) && modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED));
20153
- const subscribedToMetaChangesOnly = modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED) && !modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED) && !modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED);
20154
- const subscribedToContentChangesOnly = modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED) && !modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED) && !modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED);
20155
- if (subscribedToAllChanges) {
20156
- tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.allChanges');
20157
- }
20158
- else if (subscribedToMetaChangesOnly) {
20159
- tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.meta');
20160
- }
20161
- else if (subscribedToContentChangesOnly) {
20162
- tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.content');
20089
+ // custom event handler for layout settings to make sure plugin tabs are saved
20090
+ onLayoutSettingsChanged(event) {
20091
+ if (this.cacheLayout) {
20092
+ localStorage.setItem(this.cacheLayout, JSON.stringify(event));
20163
20093
  }
20164
- return tooltip;
20165
- }
20166
- setupCapabilities() {
20167
- const block = this.capabilities && !this.capabilities.signing ? ['signature'] : [];
20168
- const cachedOrder = this.cacheLayout && JSON.parse(localStorage.getItem(this.cacheLayout));
20169
- const primary = cachedOrder?.primary?.tabs;
20170
- const secondary = cachedOrder?.secondary?.tabs;
20171
- const _primary = this.panelOrder.master || [];
20172
- const _secondary = this.panelOrder.slave || [];
20173
- const plugins = this.plugins?.map(p => p.id) || [];
20174
- this.tabs = [..._primary, ..._secondary, ...plugins].filter(t => !block.includes(t));
20175
- if (this.versionComponentTabs) {
20176
- if (this.item?.isFolder) {
20177
- this.tabs = this.tabs.filter(tab => ['summary', 'indexdata'].includes(tab));
20178
- }
20179
- else {
20180
- this.tabs = this.tabs.filter(tab => ['summary', 'indexdata', 'preview', 'signature'].includes(tab));
20181
- }
20182
- }
20183
- const diff = this.tabs.filter(t => !primary?.includes(t) && !secondary?.includes(t));
20184
- const _pTabs = [..._primary, ...plugins.filter(p => !_primary.includes(p))];
20185
- const pTabs = primary ? [...primary, ...diff] : _pTabs;
20186
- const sTabs = secondary || _secondary;
20187
- const p = pTabs.filter(t => this.tabs.includes(t));
20188
- const s = sTabs.filter(t => this.tabs.includes(t));
20189
- this.splitTabConfig = {
20190
- primary: { tabs: p, active: p.includes(cachedOrder?.primary?.active) ? cachedOrder?.primary?.active : p[0] || '' },
20191
- secondary: { tabs: s, active: s.includes(cachedOrder?.secondary?.active) ? cachedOrder?.secondary?.active : s[0] || '' },
20192
- split: cachedOrder?.split
20193
- };
20194
- // force save of layout settings to include plugin tabs
20195
- this.onLayoutSettingsChanged(this.splitTabConfig);
20196
- }
20197
- // custom event handler for layout settings to make sure plugin tabs are saved
20198
- onLayoutSettingsChanged(event) {
20199
- this.cacheLayout && localStorage.setItem(this.cacheLayout, JSON.stringify(event));
20200
20094
  }
20201
20095
  ngOnInit() {
20202
20096
  this.capabilities = this.capabilityService.getCapabilities();
@@ -20224,26 +20118,146 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
20224
20118
  /**
20225
20119
  * Handles the `hasContentLoaded` event emitted by the `eo-media` component.
20226
20120
  * It sets the `showLoader` property to false, indicating that the content has finished loading.
20227
- *
20228
- * @param event - A boolean value representing the loading state of the content.
20229
- * It is expected to be `true` when the content is fully loaded.
20230
20121
  */
20231
- hasContentLoaded(event) {
20122
+ hasContentLoaded() {
20232
20123
  this.showLoader = false;
20233
20124
  }
20234
20125
  ngOnDestroy() {
20235
20126
  this.uploadRegistry.unregister(this.uploadTarget.id);
20236
20127
  }
20237
- 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 }); }
20238
- 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" }] }); }
20128
+ getDmsParams(data) {
20129
+ return data ? { ...data, type: data.typeName || data.type } : null;
20130
+ }
20131
+ updateContent() {
20132
+ if (this.applySelection) {
20133
+ if (this.enableCompare) {
20134
+ this.selection
20135
+ .find(this.applySelection.in)
20136
+ .selection$
20137
+ .pipe(untilDestroyed(this), throttleTime(500))
20138
+ .subscribe((res) => {
20139
+ this.dmsParams = this.parseDmsParams(res[0]);
20140
+ this.dmsParams2 = this.parseDmsParams(res[1]);
20141
+ });
20142
+ return;
20143
+ }
20144
+ else {
20145
+ this.selection
20146
+ .find(this.applySelection.in)
20147
+ .focus$
20148
+ .pipe(untilDestroyed(this))
20149
+ .subscribe(res => {
20150
+ this.loadDmsObject(this.parseDmsParams(res)).subscribe((res2) => {
20151
+ // refreshing object details may result in an updated version of the object
20152
+ // so we'll use this trigger to also emitt those changes to other listening components
20153
+ if (this.item && res2 && (this.item.id === res2.id)) {
20154
+ this.eventService.trigger(EnaioEvent.DMS_OBJECT_UPDATED, res2);
20155
+ }
20156
+ this.dmsObject = res2;
20157
+ }, Utils.throw((error) => {
20158
+ this.uploadRegistry.unregister(this.uploadTarget.id);
20159
+ return this.onHasError(true, true, false);
20160
+ }));
20161
+ });
20162
+ }
20163
+ }
20164
+ }
20165
+ prepareIndexDataPreview(item, formData) {
20166
+ const { id, data, type, created, modified, content, contentFileName, contentFileSize, version } = item;
20167
+ return this.system
20168
+ .getObjectTypeForm(type.name, 'EDIT')
20169
+ .pipe(map(form => {
20170
+ let indexDataPreview = {
20171
+ form,
20172
+ data: formData || data
20173
+ };
20174
+ let baseparams = {
20175
+ id,
20176
+ type: type.name,
20177
+ createdOn: new Date(created.on),
20178
+ modifiedOn: new Date(modified.on),
20179
+ createdBy: `${created.by.title} (${created.by.name})`,
20180
+ modifiedBy: `${modified.by.title} (${modified.by.name})`,
20181
+ contentFileName: contentFileName ? contentFileName : null,
20182
+ contentFileSize: contentFileSize ? Number(contentFileSize) : null,
20183
+ version: version || 0,
20184
+ mimeGroup: content ? content.contents ? content.contents[0].mimegroup : null : null,
20185
+ digest: content ? content.contents ? content.contents[0].digest : null : null,
20186
+ contentId: content ? content.contents ? content.id : null : null,
20187
+ mimeType: content ? content.contents ? content.contents[0].mimetype : null : null,
20188
+ };
20189
+ return { indexDataPreview, baseparams };
20190
+ }));
20191
+ }
20192
+ onHasError(hasError = false, nodmsobject = false, showLoader = false) {
20193
+ this.hasError = hasError;
20194
+ this.nodmsobject = nodmsobject;
20195
+ this.showLoader = showLoader;
20196
+ this.hasContent.emit(!hasError);
20197
+ }
20198
+ createSubscriptionIconTooltip() {
20199
+ let tooltip = '';
20200
+ const modes = this.item.subscriptions.map(subscription => subscription.mode);
20201
+ const subscribedToAllChanges = modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED)
20202
+ || (modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED) && modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED));
20203
+ const subscribedToMetaChangesOnly = modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED)
20204
+ && !modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED)
20205
+ && !modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED);
20206
+ const subscribedToContentChangesOnly = modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED)
20207
+ && !modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED)
20208
+ && !modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED);
20209
+ if (subscribedToAllChanges) {
20210
+ tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.allChanges');
20211
+ }
20212
+ else if (subscribedToMetaChangesOnly) {
20213
+ tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.meta');
20214
+ }
20215
+ else if (subscribedToContentChangesOnly) {
20216
+ tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.content');
20217
+ }
20218
+ return tooltip;
20219
+ }
20220
+ setupCapabilities() {
20221
+ const block = this.capabilities && !this.capabilities.signing ? ['signature'] : [];
20222
+ const cachedOrder = this.cacheLayout && JSON.parse(localStorage.getItem(this.cacheLayout));
20223
+ const primary = cachedOrder?.primary?.tabs;
20224
+ const secondary = cachedOrder?.secondary?.tabs;
20225
+ const pri = this.panelOrder.master || [];
20226
+ const sec = this.panelOrder.slave || [];
20227
+ const plugins = this.plugins?.map(pl => pl.id) || [];
20228
+ this.tabs = [...pri, ...sec, ...plugins].filter(t => !block.includes(t));
20229
+ if (this.versionComponentTabs) {
20230
+ if (this.item?.isFolder) {
20231
+ this.tabs = this.tabs.filter(tab => ['summary', 'indexdata'].includes(tab));
20232
+ }
20233
+ else {
20234
+ this.tabs = this.tabs.filter(tab => ['summary', 'indexdata', 'preview', 'signature'].includes(tab));
20235
+ }
20236
+ }
20237
+ const diff = this.tabs.filter(t => !primary?.includes(t) && !secondary?.includes(t));
20238
+ const pTabsTemp = [...pri, ...plugins.filter(pl => !pri.includes(pl))];
20239
+ const pTabs = primary ? [...primary, ...diff] : pTabsTemp;
20240
+ const sTabs = secondary || sec;
20241
+ const p = pTabs.filter(t => this.tabs.includes(t));
20242
+ const s = sTabs.filter(t => this.tabs.includes(t));
20243
+ this.splitTabConfig = {
20244
+ primary: { tabs: p, active: p.includes(cachedOrder?.primary?.active) ? cachedOrder?.primary?.active : p[0] || '' },
20245
+ secondary: { tabs: s, active: s.includes(cachedOrder?.secondary?.active) ? cachedOrder?.secondary?.active : s[0] || '' },
20246
+ split: cachedOrder?.split
20247
+ };
20248
+ // force save of layout settings to include plugin tabs
20249
+ this.onLayoutSettingsChanged(this.splitTabConfig);
20250
+ }
20251
+ 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 }); }
20252
+ 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" }] }); }
20239
20253
  };
20240
20254
  ObjectDetailsComponent = __decorate([
20241
20255
  UntilDestroy()
20242
20256
  ], ObjectDetailsComponent);
20243
20257
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectDetailsComponent, decorators: [{
20244
20258
  type: Component,
20245
- 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"] }]
20246
- }], 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: [{
20259
+ 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"] }]
20260
+ }], 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: [{
20247
20261
  type: ViewChild,
20248
20262
  args: ['viewer']
20249
20263
  }], eoSplitTabs: [{
@@ -20260,8 +20274,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
20260
20274
  }], isReference: [{
20261
20275
  type: HostBinding,
20262
20276
  args: ['class.reference']
20263
- }], reference: [{
20264
- type: Input
20265
20277
  }], searchTerm: [{
20266
20278
  type: Input
20267
20279
  }], enableCompare: [{
@@ -20276,6 +20288,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
20276
20288
  type: Input
20277
20289
  }], cacheLayout: [{
20278
20290
  type: Input
20291
+ }], applySelection: [{
20292
+ type: Input
20293
+ }], parseDmsParams: [{
20294
+ type: Input
20295
+ }], hasContent: [{
20296
+ type: Output
20297
+ }], dataType: [{
20298
+ type: HostBinding,
20299
+ args: ['attr.data-type']
20300
+ }], reference: [{
20301
+ type: Input
20279
20302
  }], emptyState: [{
20280
20303
  type: Input
20281
20304
  }], dmsParams: [{
@@ -20290,15 +20313,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
20290
20313
  }], dmsObject2: [{
20291
20314
  type: Input,
20292
20315
  args: ['item2']
20293
- }], applySelection: [{
20294
- type: Input
20295
- }], parseDmsParams: [{
20296
- type: Input
20297
- }], hasContent: [{
20298
- type: Output
20299
- }], dataType: [{
20300
- type: HostBinding,
20301
- args: ['attr.data-type']
20302
20316
  }] } });
20303
20317
 
20304
20318
  let RecyclebinDetailsComponent = class RecyclebinDetailsComponent {
@@ -21792,456 +21806,170 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
21792
21806
  }]
21793
21807
  }] });
21794
21808
 
21795
- class GridFilter {
21796
- static operator(property, filter) {
21797
- let firstValue = Array.isArray(filter) ? filter : (filter.filter || filter.dateFrom);
21798
- const secondValue = filter.filterTo || filter.dateTo;
21799
- const op = Array.isArray(firstValue) ? SearchFilter.OPERATOR.IN :
21800
- filter.type === SimpleFilter.GREATER_THAN ? SearchFilter.OPERATOR.GREATER_THAN :
21801
- filter.type === SimpleFilter.GREATER_THAN_OR_EQUAL ? SearchFilter.OPERATOR.GREATER_OR_EQUAL :
21802
- filter.type === SimpleFilter.LESS_THAN ? SearchFilter.OPERATOR.LESS_THAN :
21803
- filter.type === SimpleFilter.LESS_THAN_OR_EQUAL ? SearchFilter.OPERATOR.LESS_OR_EQUAL :
21804
- filter.type === SimpleFilter.IN_RANGE ? SearchFilter.OPERATOR.INTERVAL_INCLUDE_BOTH :
21805
- SearchFilter.OPERATOR.EQUAL;
21806
- firstValue = firstValue && typeof firstValue === 'string' ? firstValue.replace(/\*/g, '\\*') : firstValue; // wildcard needs to be escaped
21807
- firstValue = filter.type === SimpleFilter.CONTAINS ? `*${firstValue}*` :
21808
- filter.type === SimpleFilter.STARTS_WITH ? `${firstValue}*` :
21809
- filter.type === SimpleFilter.ENDS_WITH ? `*${firstValue}` :
21810
- op === SearchFilter.OPERATOR.IN ? firstValue.filter(f => f !== '') :
21811
- firstValue;
21812
- return new SearchFilter(property, op, firstValue, secondValue, filter.filterType === 'date' ? { time: !!filter.withTime } : undefined);
21809
+ class ChangePasswordFormComponent {
21810
+ constructor(fb, userService, translate, toaster) {
21811
+ this.fb = fb;
21812
+ this.userService = userService;
21813
+ this.translate = translate;
21814
+ this.toaster = toaster;
21815
+ this.userRegex = '';
21816
+ this.onFormSumbit = new EventEmitter();
21817
+ this.passwordIsVisible = false;
21818
+ this.passwordValidation = { type: 'valid', amount: null };
21819
+ this.generateForm();
21813
21820
  }
21814
- }
21815
-
21816
- var ResultListComponent_1;
21817
- let ResultListComponent = class ResultListComponent {
21818
- static { ResultListComponent_1 = this; }
21819
- static { this.COLUMNS_DEFINITION = 'eo.framework.cache.columns.definition'; }
21820
- set query(query) {
21821
- this.storedQuery = undefined;
21822
- if (!query) {
21823
- this.invalidQuery();
21824
- }
21825
- else {
21826
- if (query.name) {
21827
- this.storedQueriesService.getStoredQueries$()
21828
- .pipe(untilDestroyed(this))
21829
- .subscribe((queriesSubscription) => {
21830
- this.storedQuery = queriesSubscription.queries.filter(q => q.name === query.name)[0];
21831
- });
21832
- }
21833
- this._query = this.searchService.buildQuery(query);
21834
- if (this._query) {
21835
- this.defaultQuery = this.searchService.buildQuery(this._query.getQueryJson());
21836
- this.appSearchService.setQuery(this.defaultQuery);
21837
- this.appSearchService.aggregate();
21838
- const config = this.searchService.getResultFieldDefinitionConfig(this.query);
21839
- this.configType = config.type;
21840
- this.configContext = config.contextType;
21841
- this.showLoader = true;
21842
- this.searchService
21843
- .getChunkedResult(this._query, 0, this.VIRTUAL_LIST_CHUNK_SIZE)
21844
- .subscribe(result => {
21845
- this.showLoader = false;
21846
- this.clearQuery(this.clearAfterExecute);
21847
- this.searchResult = result;
21848
- }, Utils.throw(() => {
21849
- this.showLoader = false;
21850
- this.clearQuery(true);
21851
- this.invalidQuery();
21852
- }));
21853
- this.querySubtitle = '';
21854
- for (let i = 0; i < this.query.types.length; i++) {
21855
- this.querySubtitle += this.query.types[i].label;
21856
- if (i !== this.query.types.length - 1) {
21857
- this.querySubtitle += ', ';
21858
- }
21859
- }
21860
- }
21861
- else {
21862
- this.invalidQuery();
21821
+ generateForm() {
21822
+ const { compose, required, minLength } = Validators;
21823
+ this.changePasswordForm = this.fb.group({
21824
+ currentPassword: ['', compose([required, minLength(1)])],
21825
+ password: ['', compose([required, minLength(1)])],
21826
+ confirmPassword: ['', compose([required, minLength(1)])]
21827
+ }, {
21828
+ validator: compose([
21829
+ this.newPasswordValidator('currentPassword', 'password'),
21830
+ this.matchingPasswordsValidator('password', 'confirmPassword')
21831
+ ])
21832
+ });
21833
+ this.onChanges();
21834
+ }
21835
+ newPasswordValidator(current, password) {
21836
+ return (group) => {
21837
+ if (group.controls[current].value !== group.controls[password].value) {
21838
+ return null;
21863
21839
  }
21864
- }
21840
+ return { 'SAME_PASSWORD': true };
21841
+ };
21865
21842
  }
21866
- get query() {
21867
- return this._query;
21843
+ matchingPasswordsValidator(password, confirm) {
21844
+ return (group) => {
21845
+ if (group.controls[password].value === group.controls[confirm].value) {
21846
+ return null;
21847
+ }
21848
+ return { 'matchingPasswords': true };
21849
+ };
21868
21850
  }
21869
- set searchResult(result) {
21870
- // todo: backend should resolve query.fields and return config in specific order
21871
- const _fields = result.fields ? of(result.fields) :
21872
- this.searchService.fetchResultFieldDefinition(this.configType, this.configContext, 'ALL');
21873
- _fields.subscribe(fields => {
21874
- if (fields && this.query && this.query.fields && this.query.fields.length) {
21875
- fields.elements = this.query.fields.map(f => fields.elements.find(e => f === e.hitname));
21851
+ onChanges() {
21852
+ this.changePasswordForm.valueChanges
21853
+ .subscribe(value => {
21854
+ if (value.password) {
21855
+ this.passwordValidation = this.userService.validatePassword(value.password);
21876
21856
  }
21877
- result.fields = fields || new FieldDefinition();
21878
- this._result = result;
21879
- this.processResults(this._result);
21857
+ return this.matchingPasswords;
21880
21858
  });
21881
21859
  }
21882
- get searchResult() {
21883
- return this._result;
21884
- }
21885
- constructor(config, translate, gridApi, backend, appSearchService, searchService, eventService, storageService, storedQueriesService, router) {
21886
- this.config = config;
21887
- this.translate = translate;
21888
- this.gridApi = gridApi;
21889
- this.backend = backend;
21890
- this.appSearchService = appSearchService;
21891
- this.searchService = searchService;
21892
- this.eventService = eventService;
21893
- this.storageService = storageService;
21894
- this.storedQueriesService = storedQueriesService;
21895
- this.router = router;
21896
- this.csvLoadingSpinnerVisibility = false;
21897
- this.visibleConfig = false;
21898
- this.showLoader = false;
21899
- this.limitedList = false;
21900
- this.resultGridOptions = {};
21901
- this.settings = {};
21902
- this.querySubtitle = '';
21903
- this.savedSearchClicked = false;
21904
- this.showWarnExportCSVThresholdDialog = false;
21905
- this.title = '';
21906
- this.emptyMessage = '';
21907
- this.selectFirst = true;
21908
- this.hasIcon = false;
21909
- this.reference = false;
21910
- this.onSelectionChanged = new EventEmitter();
21911
- this.onFocusChanged = new EventEmitter();
21912
- this.onDoubleClick = new EventEmitter();
21913
- this.onContextMenu = new EventEmitter();
21914
- this.onCountChanged = new EventEmitter();
21915
- this.onRefresh = new EventEmitter();
21916
- this.onResult = new EventEmitter();
21917
- this.onQueryInvalid = new EventEmitter();
21918
- // shortcut actions
21919
- this.shortcuts = {
21920
- id: 'eo.workspace.widget.hitlist.label',
21921
- label: this.translate.instant('eo.workspace.widget.hitlist.label'),
21922
- labelKey: 'eo.workspace.widget.hitlist.label',
21923
- actions: [{
21924
- name: this.translate.instant('eo.column.config.title'),
21925
- nameKey: 'eo.column.config.title',
21926
- shortcut: new Shortcut('P', false, false),
21927
- onExecuteAction: () => {
21928
- this.visibleConfig = !this.visibleConfig;
21929
- },
21930
- isHidden: () => {
21931
- return false;
21932
- }
21933
- },
21934
- {
21935
- name: this.translate.instant('eo.resultlist.export.csv'),
21936
- nameKey: 'eo.resultlist.export.csv',
21937
- shortcut: new Shortcut('X', false, false),
21938
- onExecuteAction: () => {
21939
- this.exportCSV();
21940
- },
21941
- isHidden: () => {
21942
- return false;
21943
- }
21944
- },
21945
- {
21946
- name: this.translate.instant('eo.object.actions.title'),
21947
- nameKey: 'eo.object.actions.title',
21948
- shortcut: new Shortcut('M', false, false),
21949
- onExecuteAction: () => {
21950
- this.list.showActions();
21951
- },
21952
- isHidden: () => {
21953
- return false;
21954
- }
21955
- },
21956
- {
21957
- name: this.translate.instant('eo.list.refresh'),
21958
- nameKey: 'eo.list.refresh',
21959
- shortcut: new Shortcut('R', false, false),
21960
- onExecuteAction: () => {
21961
- this.refreshGrid();
21962
- },
21963
- isHidden: () => {
21964
- return false;
21965
- }
21966
- }]
21967
- };
21968
- this.VIRTUAL_LIST_CHUNK_SIZE = this.config.getRaw('search.limit');
21969
- this.resolveReferencesCsv = this.config.getRaw('search.resolveReferencesCSV') || false;
21970
- this.resolveReferencesCsvThreshold = this.config.getRaw('search.resolveReferencesCSVThreshold') || 10000;
21971
- this._cachedColumns = this.storageService.getItem(ResultListComponent_1.COLUMNS_DEFINITION) || [];
21860
+ showPasswords() {
21861
+ this.passwordIsVisible = !this.passwordIsVisible;
21972
21862
  }
21973
- clearQuery(clearAfterExecute) {
21974
- if (clearAfterExecute) {
21975
- this.appSearchService.clearQuery();
21863
+ get passwordIsNew() {
21864
+ const { errors, controls } = this.changePasswordForm;
21865
+ let passwordIsNewError = false;
21866
+ if (errors) {
21867
+ const currentPassword = controls.currentPassword.touched && controls.currentPassword.dirty;
21868
+ const password = controls.password.touched && controls.password.dirty;
21869
+ passwordIsNewError = errors.SAME_PASSWORD && currentPassword && password;
21976
21870
  }
21871
+ return passwordIsNewError;
21977
21872
  }
21978
- invalidQuery() {
21979
- this.onQueryInvalid.emit();
21980
- }
21981
- ngOnInit() {
21982
- this.eventService
21983
- .on(EnaioEvent.DMS_OBJECT_DELETED)
21984
- .pipe(untilDestroyed(this))
21985
- .subscribe((res) => {
21986
- if (this.grid) {
21987
- this.grid.updateRows(this.backend.update([res.data], [{ id: res.data.id }]));
21988
- }
21989
- });
21990
- this.eventService
21991
- .on(EnaioEvent.DMS_OBJECT_UPDATED)
21992
- .pipe(untilDestroyed(this))
21993
- .subscribe((res) => {
21994
- if (this.grid) {
21995
- this.updateRow(res.data.id, res.data.data);
21996
- }
21997
- });
21998
- }
21999
- ngAfterViewInit() {
22000
- setTimeout(() => {
22001
- if (this.grid && this._query) {
22002
- this._query.sortOptions = (this.grid.api.getColumnState() || [])
22003
- .map(model => new SortOption(GridService.qnameFormatter(model.colId + this.postfixSort(model.colId)), model.sort));
22004
- this.query = this._query;
22005
- }
22006
- }, 200);
22007
- }
22008
- updateRow(id, data) {
22009
- const matchRow = this.resultGridOptions.rowData.find((r) => r.id === id);
22010
- const systemFields = ['created', 'creatortitle', 'modified', 'modifiertitle', 'title', 'description', 'type', 'version', 'filesize', 'filename', 'mimetypegroup', 'mimetype'];
22011
- let missingColumns = this.resultGridOptions.columnDefs;
22012
- if (matchRow) {
22013
- Object.keys(matchRow).forEach((k) => {
22014
- if (data.hasOwnProperty(k)) {
22015
- if (data.hasOwnProperty(k + '_meta')) {
22016
- // if it is an org field, it will have a title to show, otherwise it is a codesystem and we show the label
22017
- matchRow[k] = data[k + '_meta'].title ? data[k + '_meta'].title : data[k + '_meta'].label;
22018
- }
22019
- else {
22020
- matchRow[k] = data[k];
22021
- }
22022
- missingColumns = missingColumns.filter((column) => column.field !== k);
22023
- }
22024
- else if (data.hasOwnProperty(k.split('.')[1])) {
22025
- // some technical names have the object type as a prefix, we have to get rid of it
22026
- const kSplit = k.split('.')[1];
22027
- if (data.hasOwnProperty(kSplit + '_meta')) {
22028
- matchRow[k] = data[kSplit + '_meta'].title ? data[kSplit + '_meta'].title : data[kSplit + '_meta'].label;
22029
- }
22030
- else {
22031
- matchRow[k] = data[kSplit];
22032
- }
22033
- missingColumns = missingColumns.filter((column) => column.field !== k);
22034
- }
22035
- });
22036
- // we need to iterate through the not already applied columns, which were changed from null or to null
22037
- missingColumns.forEach((column) => {
22038
- if (data.hasOwnProperty(column.field)) {
22039
- matchRow[column.field] = data[column.field];
22040
- }
22041
- else if (data.hasOwnProperty(column.field.split('.')[1])) {
22042
- matchRow[column.field] = data[column.field.split('.')[1]];
22043
- }
22044
- else {
22045
- if (!systemFields.includes(column.field)) {
22046
- matchRow[column.field] = null;
22047
- }
22048
- }
22049
- });
22050
- matchRow.id = id;
22051
- const rowNode = this.grid.api.getRowNode(id);
22052
- rowNode && rowNode.setData(matchRow);
21873
+ get matchingPasswords() {
21874
+ const { errors, controls } = this.changePasswordForm;
21875
+ let matchingPasswordsError = false;
21876
+ if (errors) {
21877
+ const password = controls.password.touched && controls.password.dirty;
21878
+ const confirmPassword = controls.confirmPassword.touched && controls.confirmPassword.dirty;
21879
+ matchingPasswordsError = errors.matchingPasswords && password && confirmPassword;
22053
21880
  }
21881
+ return matchingPasswordsError;
22054
21882
  }
22055
- refreshGrid() {
22056
- if (this.query) {
22057
- this._query.sortOptions = (this.grid.api.getColumnState() || [])
22058
- .map(model => new SortOption(GridService.qnameFormatter(model.colId + this.postfixSort(model.colId)), model.sort));
22059
- this.query = this._query;
22060
- }
22061
- this.onRefresh.emit(this.query);
21883
+ changePasswordOnSuccess() {
21884
+ this.changePasswordForm.reset();
21885
+ this.changePasswordForm.markAsPristine();
21886
+ this.changePasswordForm.markAsUntouched();
21887
+ this.onFormSumbit.emit(true);
21888
+ this.toaster.success(this.translate.instant('eo.password.reset.success'));
22062
21889
  }
22063
- onColumnResized(column) {
22064
- let col = this._cachedColumns.find(c => c.qname === column.colDef.refData.qname);
22065
- if (col) {
22066
- col.width = column.actualWidth;
21890
+ changePasswordOnError(error) {
21891
+ const errorTitle = this.translate.instant('eo.password.reset.error.password.title');
21892
+ if (error.error.key === 'USER_OLD_PASSWORD_WRONG') {
21893
+ this.toaster.error(errorTitle, this.translate.instant('eo.password.reset.error.old.password.message'));
21894
+ }
21895
+ else if (error.error.key === 'USER_NEW_PASSWORD_INVALID') {
21896
+ this.toaster.error(errorTitle, this.translate.instant('eo.password.reset.error.new.password.message'));
22067
21897
  }
22068
21898
  else {
22069
- this._cachedColumns.push({ qname: column.colDef.refData.qname, width: column.actualWidth });
21899
+ this.toaster.error(errorTitle);
22070
21900
  }
22071
- this.storageService.setItem(ResultListComponent_1.COLUMNS_DEFINITION, this._cachedColumns);
22072
21901
  }
22073
- /**
22074
- * Event handler for grid configuration
22075
- * @param $event
22076
- */
22077
- onConfigChanged(refresh) {
22078
- if (refresh) {
22079
- this.refreshGrid();
22080
- }
21902
+ onSubmit() {
21903
+ const { currentPassword, password } = this.changePasswordForm.value;
21904
+ const payload = {
21905
+ old: currentPassword,
21906
+ new: password
21907
+ };
21908
+ this.userService
21909
+ .changePassword(payload)
21910
+ .subscribe(() => this.changePasswordOnSuccess(), (error) => this.changePasswordOnError(error));
22081
21911
  }
22082
- /**
22083
- * Process Search result & generate column definitions
22084
- * @param result
22085
- */
22086
- processResults(result) {
22087
- this.visibleConfig = false;
22088
- this.onResult.emit(result);
22089
- this.totalHits = result.count.value;
22090
- this.limitedList = this.totalHits > result.hits.length;
22091
- let gridOptions = { context: {}, onSortChanged: () => this.onPageChanged(), onFilterChanged: () => this.onPageChanged() };
22092
- const searchMode = result.fields.mode ? result.fields.mode : null;
22093
- this.settings = this.limitedList && this.query ? { total: this.totalHits, size: this.VIRTUAL_LIST_CHUNK_SIZE, relation: result.count.relation } : null;
22094
- gridOptions.rowData = result.hits;
22095
- const { elements, sortorder, grouporder, pinned, alignmentx } = result.fields;
22096
- gridOptions.context.count = result.count;
22097
- gridOptions.columnDefs = this.gridApi.getColumnDefs(elements, sortorder, grouporder, pinned, alignmentx, false, this._cachedColumns, searchMode);
22098
- const refreshGrid = this.hasGridOptions;
22099
- Object.assign(this.resultGridOptions, gridOptions, this.gridOptions);
22100
- if (refreshGrid) {
22101
- // reload grid component
22102
- this.resultGridOptions = {};
22103
- setTimeout(() => Object.assign(this.resultGridOptions, gridOptions, this.gridOptions), 0);
22104
- }
22105
- }
22106
- postfixSort(id) {
22107
- // todo: remove when it's fixed on backend
22108
- return id.match(/(^sysobject\.|^sysdocument\.)(creator$|modifier$)/) ? 'title' : '';
22109
- }
22110
- onPageChanged(page = 1) {
22111
- if (this.limitedList && this.query) {
22112
- this.fetchRowData({
22113
- startRow: this.VIRTUAL_LIST_CHUNK_SIZE * (page - 1),
22114
- sortModel: this.grid.api.getColumnState(),
22115
- filterModel: this.grid.api.getFilterModel(),
22116
- successCallback: (rows, total, relation) => {
22117
- this.settings = { total, relation, size: this.VIRTUAL_LIST_CHUNK_SIZE, page };
22118
- this.grid.api.setGridOption('rowData', rows);
22119
- this.grid.selectRow(0);
22120
- }
22121
- });
22122
- }
22123
- }
22124
- /**
22125
- * Function for fetching the items to be displayed with a virtual row model.
22126
- *
22127
- * @param params - row model params (incl. startRow, endRow, sortModel and filterModel)
22128
- */
22129
- fetchRowData(params) {
22130
- if (this.query) {
22131
- this.updateQuery(params);
22132
- this.searchService
22133
- .getChunkedResult(this.query, params.startRow, this.VIRTUAL_LIST_CHUNK_SIZE)
22134
- .subscribe(result => {
22135
- this.totalHits = this.grid.gridOptions.context.rowCount = result.count.value;
22136
- this.grid.gridOptions.context.count = result.count;
22137
- params.successCallback(result.hits, this.totalHits, result.count.relation);
22138
- });
22139
- }
22140
- }
22141
- updateQuery(params) {
22142
- this.query.sortOptions = (params.sortModel || this.grid.api.getColumnState() || [])
22143
- .map(model => new SortOption(GridService.qnameFormatter(model.colId + this.postfixSort(model.colId)), model.sort));
22144
- this.query.filters = this.defaultQuery.filters
22145
- .concat((Object.keys(params.filterModel || this.grid.api.getFilterModel()) || [])
22146
- .map(key => GridFilter.operator(GridService.qnameFormatter(key), (params.filterModel || this.grid.api.getFilterModel())[key])));
22147
- this.query.searchMode = SearchQuery.DEFAULT_SEARCH_MODE;
22148
- }
22149
- executeSuggestSearch() {
22150
- // todo: implement
22151
- }
22152
- resultHasReferences() {
22153
- return this._result.fields.elements.some(element => element.type === 'ORGANIZATION' || element.type === 'REFERENCE');
22154
- }
22155
- exportCSV(ignoreThreshold = false) {
22156
- if (!ignoreThreshold && this.resolveReferencesCsv
22157
- && (this.list.gridCount.totalCount > this.resolveReferencesCsvThreshold || this.list.gridCount.relation === 'gte')
22158
- && this.resultHasReferences()) {
22159
- this.showWarnExportCSVThresholdDialog = true;
22160
- return;
22161
- }
22162
- this.csvLoadingSpinnerVisibility = true;
22163
- this.updateQuery({});
22164
- this.showWarnExportCSVThresholdDialog = false;
22165
- const queryJson = this.query.getQueryJson(this.resolveReferencesCsv);
22166
- queryJson.fields = [];
22167
- this.resultGridOptions?.columnDefs.forEach(colDef => {
22168
- queryJson.fields.push(colDef['field'] + ' ' + colDef.headerName);
22169
- });
22170
- this.searchService.downloadCsvFromQuery(queryJson).subscribe(() => {
22171
- this.csvLoadingSpinnerVisibility = false;
22172
- });
22173
- }
22174
- parseDmsParams(data) {
22175
- return { id: data && data.id ? data.id : null, type: data && data.type ? data.type : null };
22176
- }
22177
- get hasGridOptions() {
22178
- return !!(this.resultGridOptions.datasource || this.resultGridOptions.rowData);
21912
+ 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 }); }
21913
+ 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" }] }); }
21914
+ }
21915
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ChangePasswordFormComponent, decorators: [{
21916
+ type: Component,
21917
+ 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"] }]
21918
+ }], ctorParameters: () => [{ type: i1$3.UntypedFormBuilder }, { type: i1.UserService }, { type: i1.TranslateService }, { type: i1.NotificationsService }], propDecorators: { userRegex: [{
21919
+ type: Input
21920
+ }], onFormSumbit: [{
21921
+ type: Output
21922
+ }] } });
21923
+
21924
+ class PermissionsComponent {
21925
+ constructor() {
21926
+ this._roles = [];
22179
21927
  }
22180
- onStoredQueryLoaded() {
22181
- this.savedSearchClicked = false;
22182
- this.router.navigate([{ outlets: { modal: 'search' } }]);
21928
+ set roles(roles) {
21929
+ this._roles = roles.sort(Utils.sortValues('name'));
22183
21930
  }
22184
- onStoredQueryExecute(evt) {
22185
- this.savedSearchClicked = false;
22186
- const uriParam = encodeURIComponent(JSON.stringify(evt.queryJson));
22187
- const uriParamQuery = { queryParams: { 'query': uriParam } };
22188
- this.router.navigate(['/result'], uriParamQuery);
21931
+ ;
21932
+ get roles() {
21933
+ return this._roles;
22189
21934
  }
22190
- 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 }); }
22191
- 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" }] }); }
22192
- };
22193
- ResultListComponent = ResultListComponent_1 = __decorate([
22194
- UntilDestroy()
22195
- ], ResultListComponent);
22196
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListComponent, decorators: [{
21935
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PermissionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21936
+ 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"] }] }); }
21937
+ }
21938
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PermissionsComponent, decorators: [{
22197
21939
  type: Component,
22198
- 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"] }]
22199
- }], 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: [{
22200
- type: ViewChild,
22201
- args: ['eoGrid']
22202
- }], list: [{
22203
- type: ViewChild,
22204
- args: ['eoList']
22205
- }], title: [{
22206
- type: Input
22207
- }], configType: [{
22208
- type: Input
22209
- }], configContext: [{
22210
- type: Input
22211
- }], clearAfterExecute: [{
22212
- type: Input
22213
- }], emptyMessage: [{
22214
- type: Input
22215
- }], selectFirst: [{
22216
- type: Input
22217
- }], gridOptions: [{
22218
- type: Input
22219
- }], hasIcon: [{
22220
- type: Input
22221
- }], reference: [{
22222
- type: Input
22223
- }], onSelectionChanged: [{
22224
- type: Output
22225
- }], onFocusChanged: [{
22226
- type: Output
22227
- }], onDoubleClick: [{
22228
- type: Output
22229
- }], onContextMenu: [{
22230
- type: Output
22231
- }], onCountChanged: [{
22232
- type: Output
22233
- }], onRefresh: [{
22234
- type: Output
22235
- }], onResult: [{
22236
- type: Output
22237
- }], onQueryInvalid: [{
22238
- type: Output
22239
- }], query: [{
22240
- type: Input
22241
- }], searchResult: [{
21940
+ 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"] }]
21941
+ }], propDecorators: { roles: [{
22242
21942
  type: Input
22243
21943
  }] } });
22244
21944
 
21945
+ class SettingsModule {
21946
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SettingsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
21947
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: SettingsModule, declarations: [ChangePasswordFormComponent, PermissionsComponent], imports: [CommonModule,
21948
+ ReactiveFormsModule,
21949
+ FormElementsModule,
21950
+ EoSharedModule,
21951
+ UiModule], exports: [ChangePasswordFormComponent, PermissionsComponent] }); }
21952
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SettingsModule, imports: [CommonModule,
21953
+ ReactiveFormsModule,
21954
+ FormElementsModule,
21955
+ EoSharedModule,
21956
+ UiModule] }); }
21957
+ }
21958
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SettingsModule, decorators: [{
21959
+ type: NgModule,
21960
+ args: [{
21961
+ imports: [
21962
+ CommonModule,
21963
+ ReactiveFormsModule,
21964
+ FormElementsModule,
21965
+ EoSharedModule,
21966
+ UiModule
21967
+ ],
21968
+ declarations: [ChangePasswordFormComponent, PermissionsComponent],
21969
+ exports: [ChangePasswordFormComponent, PermissionsComponent]
21970
+ }]
21971
+ }] });
21972
+
22245
21973
  class StoredQueryComponent {
22246
21974
  set query(storedQuery) {
22247
21975
  if (storedQuery instanceof StoredQuery) {
@@ -22614,434 +22342,906 @@ let StoredQueryDetailsComponent = class StoredQueryDetailsComponent {
22614
22342
  this.eventService.trigger(EnaioEvent.STORED_OBJECT_FAVORISED);
22615
22343
  }, Utils.throw(null, this.translate.instant('eo.search.storedquery.save.error')));
22616
22344
  }
22617
- cancelEdit() {
22618
- this.resetEditForm();
22619
- this.finishPending();
22620
- if (this.storedQuery.isNew()) {
22621
- this.query = null;
22345
+ cancelEdit() {
22346
+ this.resetEditForm();
22347
+ this.finishPending();
22348
+ if (this.storedQuery.isNew()) {
22349
+ this.query = null;
22350
+ }
22351
+ this.notifyList.emit({ unselect: false, update: false, payload: this.storedQuery });
22352
+ }
22353
+ setQueryToAppSearch() {
22354
+ this.storedQueryForm.load();
22355
+ }
22356
+ executeQuery() {
22357
+ this.storedQueryForm.execute();
22358
+ }
22359
+ // Save the current stored query
22360
+ updateStoredQuery() {
22361
+ const formData = this.getFormData();
22362
+ this.storedQuery.filters = this.storedQuery.filters.filter(f => ~this.BASE_PARAMS_FIELDS.indexOf(f.property));
22363
+ Object.keys(formData)
22364
+ .forEach(k => {
22365
+ if (k === this.FORM_INPUT_TITLE) {
22366
+ this.storedQuery.name = formData[k];
22367
+ }
22368
+ else if (k === this.FORM_INPUT_FULLTEXT) {
22369
+ this.storedQuery.term = formData[k];
22370
+ }
22371
+ else {
22372
+ let filters = this.searchService.getSearchFilter(this.storedQuery.types, k, formData[k]);
22373
+ filters.forEach(f => this.storedQuery.addFilter(f));
22374
+ }
22375
+ });
22376
+ this.storedQueriesService
22377
+ .saveStoredQuery(this.storedQuery)
22378
+ .subscribe(updatedStoredQuery => {
22379
+ this.query = updatedStoredQuery;
22380
+ this.resetEditForm();
22381
+ this.finishPending();
22382
+ this.notifyList.emit({ unselect: false, update: false, payload: updatedStoredQuery });
22383
+ }, Utils.throw(null, this.translate.instant('eo.search.storedquery.save.error')));
22384
+ }
22385
+ /**
22386
+ * Toggle form elements to be a dynamic parameter or not
22387
+ * @param event
22388
+ */
22389
+ parameterChanged(event) {
22390
+ let m = this.storedQuery.parameter.find(p => p.qname === event.control);
22391
+ if (m && !event.value) {
22392
+ // remove existing parameter
22393
+ this.storedQuery.parameter = this.storedQuery.parameter.filter(p => p.qname !== event.control);
22394
+ }
22395
+ else if (!m && event.value) {
22396
+ // add parameter element
22397
+ let param = this.formFieldToParameter(event.control);
22398
+ if (param) {
22399
+ this.storedQuery.parameter.push(param);
22400
+ }
22401
+ }
22402
+ }
22403
+ getFormData() {
22404
+ const properties = Object.keys(this.editForm.form.value);
22405
+ let data = {};
22406
+ properties.forEach(property => {
22407
+ const fc = this.editForm.form.controls[property];
22408
+ let formElement;
22409
+ if (fc.controls && fc.controls[property]) {
22410
+ const fe = fc.controls[property];
22411
+ formElement = fe._eoFormElement;
22412
+ }
22413
+ if (formElement && formElement.isNotSetValue) {
22414
+ data[property] = null;
22415
+ }
22416
+ else {
22417
+ switch (property) {
22418
+ case this.FORM_INPUT_TITLE: {
22419
+ data[property] = this.editForm.form.value[property] || '';
22420
+ break;
22421
+ }
22422
+ case this.FORM_INPUT_FULLTEXT: {
22423
+ data[property] = this.editForm.form.value[property][StoredQueriesService.FULLTEXT] || '';
22424
+ break;
22425
+ }
22426
+ default: {
22427
+ const v = this.editForm.form.value[property][property];
22428
+ if (!UtilitiesService.isEmpty(v)) {
22429
+ data[property] = v;
22430
+ }
22431
+ }
22432
+ }
22433
+ }
22434
+ });
22435
+ return data;
22436
+ }
22437
+ /**
22438
+ * Create a dynamic stored query parameter for a form element
22439
+ * @param qname The form elements qname
22440
+ * @returns
22441
+ */
22442
+ formFieldToParameter(qname) {
22443
+ try {
22444
+ let param;
22445
+ // special handling for fulltext fields
22446
+ if (qname === StoredQueriesService.FULLTEXT) {
22447
+ param = {
22448
+ qname: qname,
22449
+ type: qname,
22450
+ };
22451
+ }
22452
+ else {
22453
+ const fc = this.editForm.form.controls[qname].controls[qname];
22454
+ const fe = fc._eoFormElement;
22455
+ param = {
22456
+ qname: fe.qname,
22457
+ type: fe.type
22458
+ };
22459
+ }
22460
+ return param;
22461
+ }
22462
+ catch (e) {
22463
+ return null;
22464
+ }
22465
+ }
22466
+ resetEditForm() {
22467
+ this.editForm = {
22468
+ form: null,
22469
+ fulltextFormControl: null,
22470
+ controls: [],
22471
+ contextControls: []
22472
+ };
22473
+ }
22474
+ onFormChanges() {
22475
+ this.editForm
22476
+ .form
22477
+ .valueChanges
22478
+ .subscribe(() => this.onFormStatusChanged(this.editForm.form));
22479
+ }
22480
+ createEditForm() {
22481
+ this.resetEditForm();
22482
+ this.setupFormControls().subscribe(_ => {
22483
+ let form = new ObjectFormGroup({});
22484
+ let fcTitle = new UntypedFormControl('', Validators.required);
22485
+ fcTitle.setValue(this.storedQuery.name);
22486
+ let fcFulltext = this.toFormControl(this.storedQueriesService.getFulltextFormElement(this.translate.instant('eo.storedquery.search.term'), this.storedQuery.term));
22487
+ this.editForm.fulltextFormControl = fcFulltext;
22488
+ // add title and fulltext field
22489
+ form.addControl(this.FORM_INPUT_TITLE, fcTitle);
22490
+ form.addControl(this.FORM_INPUT_FULLTEXT, fcFulltext);
22491
+ if (this.editForm.controls.length || this.editForm.contextControls.length) {
22492
+ this.editForm.controls
22493
+ .forEach((c) => form.addControl(c._eoFormControlWrapper.controlName, c));
22494
+ this.editForm.contextControls
22495
+ .forEach((c) => form.addControl(c._eoFormControlWrapper.controlName, c));
22496
+ }
22497
+ this.editForm.form = form;
22498
+ this.onFormChanges();
22499
+ });
22500
+ }
22501
+ setupFormControls() {
22502
+ const tasks = [];
22503
+ // setting up object type form only makes sense with one target type
22504
+ if (this.storedQuery.types.length === 1) {
22505
+ tasks.push(this.systemService.getFormElementsFromFormModel(this.storedQuery.types[0].qname, 'SEARCH').pipe(tap((elements) => {
22506
+ elements.forEach(e => {
22507
+ // prevent tables and binary types from being rendered in the stored query form
22508
+ if (e.type !== 'BINARY') {
22509
+ if (e.required) {
22510
+ e.required = false;
22511
+ }
22512
+ if (e.readonly) {
22513
+ e.readonly = false;
22514
+ }
22515
+ const fc = this.toFormControl(e);
22516
+ if (fc) {
22517
+ this.editForm.controls.push(fc);
22518
+ }
22519
+ }
22520
+ });
22521
+ })));
22522
+ }
22523
+ // add context form controls as well
22524
+ if (this.storedQuery.contextFolderTypes.length) {
22525
+ tasks.push(this.systemService.getFormElementsFromFormModel(this.storedQuery.contextFolderTypes[0].qname, 'SEARCH', true).pipe(tap((elements) => {
22526
+ elements.forEach(e => {
22527
+ const fc = this.toFormControl(e);
22528
+ if (fc) {
22529
+ this.editForm.contextControls.push(fc);
22530
+ }
22531
+ });
22532
+ })));
22533
+ }
22534
+ return tasks.length ? forkJoin(tasks) : of(tasks);
22535
+ }
22536
+ fetchRoles() {
22537
+ if (!this.systemRoles || this.systemRoles.length === 0) {
22538
+ this.systemService
22539
+ .getRoles()
22540
+ .subscribe(res => {
22541
+ this.systemRoles = res;
22542
+ this.rolesPicker.codesystem = {
22543
+ entries: this.systemRoles.map(role => ({
22544
+ id: role.id,
22545
+ label: role.name,
22546
+ defaultrepresentation: role.name,
22547
+ data: role.name
22548
+ })).sort(Utils.sortValues('label'))
22549
+ };
22550
+ });
22551
+ }
22552
+ }
22553
+ getRestrictions() {
22554
+ let restrictions = [];
22555
+ // type restriction
22556
+ if (this.storedQuery.types && this.storedQuery.types.length) {
22557
+ restrictions.push({
22558
+ field: SearchQuery.BASE_PARAMS.TYPE,
22559
+ label: this.translate.instant('eo.storedquery.restriction.type'),
22560
+ items: this.storedQuery.types.map(t => t.label)
22561
+ });
22562
+ }
22563
+ // add base params restrictions
22564
+ (this.storedQuery.filters || []).forEach(filter => {
22565
+ if (filter && ~this.BASE_PARAMS_FIELDS.indexOf(filter.property)) {
22566
+ const field = filter.property;
22567
+ const label = this.translate.instant('eo.storedquery.restriction.' + field);
22568
+ switch (field) {
22569
+ case SearchQuery.BASE_PARAMS.MIMETYPEGROUP:
22570
+ restrictions.push({
22571
+ field, label, items: Array.isArray(filter.firstValue) ? filter.firstValue : [filter.firstValue]
22572
+ });
22573
+ break;
22574
+ case SearchQuery.BASE_PARAMS.FILENAME:
22575
+ restrictions.push({
22576
+ field, label, items: [filter.firstValue]
22577
+ });
22578
+ break;
22579
+ case SearchQuery.BASE_PARAMS.FILESIZE:
22580
+ restrictions.push({
22581
+ field, label, items: [this.translate.instant('eo.search.agg.filesize.' + filter.firstValue)]
22582
+ });
22583
+ break;
22584
+ case SearchQuery.BASE_PARAMS.CREATED:
22585
+ case SearchQuery.BASE_PARAMS.MODIFIED:
22586
+ restrictions.push({
22587
+ field, label, items: [this.createDateRestriction(filter)]
22588
+ });
22589
+ break;
22590
+ case SearchQuery.BASE_PARAMS.CREATOR:
22591
+ case SearchQuery.BASE_PARAMS.MODIFIER:
22592
+ this.systemService.getOrganizationObjects(filter.firstValue)
22593
+ .subscribe(orgUsers => restrictions.push({
22594
+ field, label, items: orgUsers.map(u => u.title)
22595
+ }));
22596
+ break;
22597
+ }
22598
+ }
22599
+ });
22600
+ return restrictions;
22601
+ }
22602
+ createDateRestriction(filter) {
22603
+ switch (filter.operator) {
22604
+ case SearchFilter.OPERATOR.RANGE:
22605
+ return this.translate.instant(`eo.search.agg.time.${filter.firstValue}`);
22606
+ case SearchFilter.OPERATOR.EQUAL:
22607
+ return `= ${this.datePipe.transform(filter.firstValue, 'eoShortDate')}`;
22608
+ case SearchFilter.OPERATOR.INTERVAL_INCLUDE_BOTH:
22609
+ return `${this.datePipe.transform(filter.firstValue, 'eoShortDate')} - ${this.datePipe.transform(filter.secondValue, 'eoShortDate')}`;
22610
+ case SearchFilter.OPERATOR.GREATER_OR_EQUAL:
22611
+ return `${this.translate.instant('eo.search.agg.time.span.since')} ${this.datePipe.transform(filter.firstValue, 'eoShortDate')}`;
22612
+ case SearchFilter.OPERATOR.LESS_OR_EQUAL:
22613
+ return `${this.translate.instant('eo.search.agg.time.span.until')} ${this.datePipe.transform(filter.firstValue, 'eoShortDate')}`;
22614
+ default:
22615
+ return `(${filter.operator}) ${this.datePipe.transform(filter.firstValue, 'eoShortDate')}`;
22616
+ }
22617
+ }
22618
+ /**
22619
+ * Creates a form control from a given form element
22620
+ * @param formElement
22621
+ * @returns
22622
+ */
22623
+ toFormControl(formElement) {
22624
+ // the `name` property of stored query form element has to be `qname` of form element,
22625
+ // because we may combine multiple forms (context form) and in this case there may
22626
+ // be conflicts in namings
22627
+ formElement.name = formElement.qname;
22628
+ if (formElement.type === 'TABLE') {
22629
+ let filters = this.storedQuery.getTableFilters(formElement.qname);
22630
+ if (filters && filters.length) {
22631
+ formElement.value = this.searchService.tableFiltersToElementValue(filters, formElement.elements);
22632
+ }
22633
+ else {
22634
+ formElement.value = [{}];
22635
+ delete formElement.isNotSetValue;
22636
+ }
22637
+ }
22638
+ else {
22639
+ // grab value for the control from corresponding query filters
22640
+ let filter = this.storedQuery.getFilter(formElement.qname);
22641
+ // we may have params that are not part of the queries filters. This may be the
22642
+ // case when we mark form elements as dynamic fields without providing a value
22643
+ if (filter) {
22644
+ // filter to have no value
22645
+ if (filter.operator === SearchFilter.OPERATOR.EQUAL && filter.firstValue === null) {
22646
+ formElement.isNotSetValue = true;
22647
+ }
22648
+ else {
22649
+ delete formElement.isNotSetValue;
22650
+ }
22651
+ formElement.value = this.searchService.filterToElementValue(this.storedQuery.getFilter(formElement.qname), formElement.type);
22652
+ }
22653
+ else if (formElement.qname !== StoredQueriesService.FULLTEXT) {
22654
+ formElement.value = undefined;
22655
+ delete formElement.isNotSetValue;
22656
+ }
22657
+ }
22658
+ // sync with params
22659
+ const match = this.storedQuery.parameter.find(param => {
22660
+ return (param.qname === formElement.qname) || (param.type === StoredQueriesService.FULLTEXT && formElement.qname === StoredQueriesService.FULLTEXT);
22661
+ });
22662
+ // every field that is part of the params is supposed to be dynamic
22663
+ formElement._dynamic = !!match;
22664
+ // create actual form control that could be used with
22665
+ // FormElementComponent to then render for elements
22666
+ // wrapper may be null in case of an error
22667
+ return this.formHelperService.elementToFormControl(formElement, 'SEARCH');
22668
+ }
22669
+ onStoredQueryLoaded() {
22670
+ this.router.navigate([{ outlets: { modal: 'search' } }]);
22671
+ }
22672
+ onStoredQueryExecute(evt) {
22673
+ const uriParam = encodeURIComponent(JSON.stringify(evt.queryJson));
22674
+ const uriParamQuery = { queryParams: { 'query': uriParam } };
22675
+ this.router.navigate(['/result'], uriParamQuery);
22676
+ }
22677
+ setIconTitles() {
22678
+ this.iconTitles = {
22679
+ share: this.translate.instant('eo.storedquery.share.title'),
22680
+ shared: this.translate.instant('eo.storedquery.sharedfor.title'),
22681
+ favor: this.translate.instant('eo.storedquery.favor.title'),
22682
+ favored: this.translate.instant('eo.storedquery.favoredfor.title')
22683
+ };
22684
+ }
22685
+ ngOnInit() {
22686
+ this.selection.focus$
22687
+ .pipe(untilDestroyed(this))
22688
+ .subscribe(q => {
22689
+ this.query = q;
22690
+ });
22691
+ this.setIconTitles();
22692
+ }
22693
+ trackByQName(index, item) {
22694
+ return item.qname;
22695
+ }
22696
+ trackByIndex(index, item) {
22697
+ return index;
22698
+ }
22699
+ 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 }); }
22700
+ 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" }] }); }
22701
+ };
22702
+ StoredQueryDetailsComponent = __decorate([
22703
+ UntilDestroy()
22704
+ ], StoredQueryDetailsComponent);
22705
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryDetailsComponent, decorators: [{
22706
+ type: Component,
22707
+ 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"] }]
22708
+ }], 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: [{
22709
+ type: ViewChild,
22710
+ args: ['storedQueryForm']
22711
+ }], query: [{
22712
+ type: Input
22713
+ }], notifyList: [{
22714
+ type: Output
22715
+ }] } });
22716
+
22717
+ class StoredQueryModule {
22718
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
22719
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryModule, declarations: [StoredQueryComponent,
22720
+ StoredQueryDetailsComponent,
22721
+ DynamicPropertySwitchComponent], imports: [CommonModule,
22722
+ ObjectFormModule,
22723
+ UiModule,
22724
+ GridModule,
22725
+ FormsModule,
22726
+ ReactiveFormsModule,
22727
+ FormElementsModule], exports: [StoredQueryComponent,
22728
+ StoredQueryDetailsComponent] }); }
22729
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryModule, imports: [CommonModule,
22730
+ ObjectFormModule,
22731
+ UiModule,
22732
+ GridModule,
22733
+ FormsModule,
22734
+ ReactiveFormsModule,
22735
+ FormElementsModule] }); }
22736
+ }
22737
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryModule, decorators: [{
22738
+ type: NgModule,
22739
+ args: [{
22740
+ imports: [
22741
+ CommonModule,
22742
+ ObjectFormModule,
22743
+ UiModule,
22744
+ GridModule,
22745
+ FormsModule,
22746
+ ReactiveFormsModule,
22747
+ FormElementsModule
22748
+ ],
22749
+ declarations: [
22750
+ StoredQueryComponent,
22751
+ StoredQueryDetailsComponent,
22752
+ DynamicPropertySwitchComponent
22753
+ ],
22754
+ exports: [
22755
+ StoredQueryComponent,
22756
+ StoredQueryDetailsComponent
22757
+ ]
22758
+ }]
22759
+ }] });
22760
+
22761
+ class GridFilter {
22762
+ static operator(property, filter) {
22763
+ let firstValue = Array.isArray(filter) ? filter : (filter.filter || filter.dateFrom);
22764
+ const secondValue = filter.filterTo || filter.dateTo;
22765
+ const op = Array.isArray(firstValue) ? SearchFilter.OPERATOR.IN :
22766
+ filter.type === SimpleFilter.GREATER_THAN ? SearchFilter.OPERATOR.GREATER_THAN :
22767
+ filter.type === SimpleFilter.GREATER_THAN_OR_EQUAL ? SearchFilter.OPERATOR.GREATER_OR_EQUAL :
22768
+ filter.type === SimpleFilter.LESS_THAN ? SearchFilter.OPERATOR.LESS_THAN :
22769
+ filter.type === SimpleFilter.LESS_THAN_OR_EQUAL ? SearchFilter.OPERATOR.LESS_OR_EQUAL :
22770
+ filter.type === SimpleFilter.IN_RANGE ? SearchFilter.OPERATOR.INTERVAL_INCLUDE_BOTH :
22771
+ SearchFilter.OPERATOR.EQUAL;
22772
+ firstValue = firstValue && typeof firstValue === 'string' ? firstValue.replace(/\*/g, '\\*') : firstValue; // wildcard needs to be escaped
22773
+ firstValue = filter.type === SimpleFilter.CONTAINS ? `*${firstValue}*` :
22774
+ filter.type === SimpleFilter.STARTS_WITH ? `${firstValue}*` :
22775
+ filter.type === SimpleFilter.ENDS_WITH ? `*${firstValue}` :
22776
+ op === SearchFilter.OPERATOR.IN ? firstValue.filter(f => f !== '') :
22777
+ firstValue;
22778
+ return new SearchFilter(property, op, firstValue, secondValue, filter.filterType === 'date' ? { time: !!filter.withTime } : undefined);
22779
+ }
22780
+ }
22781
+
22782
+ var ResultListComponent_1;
22783
+ let ResultListComponent = class ResultListComponent {
22784
+ static { ResultListComponent_1 = this; }
22785
+ static { this.COLUMNS_DEFINITION = 'eo.framework.cache.columns.definition'; }
22786
+ set query(query) {
22787
+ this.storedQuery = undefined;
22788
+ if (!query) {
22789
+ this.invalidQuery();
22790
+ }
22791
+ else {
22792
+ if (query.name) {
22793
+ this.storedQueriesService.getStoredQueries$()
22794
+ .pipe(untilDestroyed(this))
22795
+ .subscribe((queriesSubscription) => {
22796
+ this.storedQuery = queriesSubscription.queries.filter(q => q.name === query.name)[0];
22797
+ });
22798
+ }
22799
+ this._query = this.searchService.buildQuery(query);
22800
+ if (this._query) {
22801
+ this.defaultQuery = this.searchService.buildQuery(this._query.getQueryJson());
22802
+ this.appSearchService.setQuery(this.defaultQuery);
22803
+ this.appSearchService.aggregate();
22804
+ const config = this.searchService.getResultFieldDefinitionConfig(this.query);
22805
+ this.configType = config.type;
22806
+ this.configContext = config.contextType;
22807
+ this.showLoader = true;
22808
+ this.searchService
22809
+ .getChunkedResult(this._query, 0, this.VIRTUAL_LIST_CHUNK_SIZE)
22810
+ .subscribe(result => {
22811
+ this.showLoader = false;
22812
+ this.clearQuery(this.clearAfterExecute);
22813
+ this.searchResult = result;
22814
+ }, Utils.throw(() => {
22815
+ this.showLoader = false;
22816
+ this.clearQuery(true);
22817
+ this.invalidQuery();
22818
+ }));
22819
+ this.querySubtitle = '';
22820
+ for (let i = 0; i < this.query.types.length; i++) {
22821
+ this.querySubtitle += this.query.types[i].label;
22822
+ if (i !== this.query.types.length - 1) {
22823
+ this.querySubtitle += ', ';
22824
+ }
22825
+ }
22826
+ }
22827
+ else {
22828
+ this.invalidQuery();
22829
+ }
22830
+ }
22831
+ }
22832
+ get query() {
22833
+ return this._query;
22834
+ }
22835
+ set searchResult(result) {
22836
+ // todo: backend should resolve query.fields and return config in specific order
22837
+ const _fields = result.fields ? of(result.fields) :
22838
+ this.searchService.fetchResultFieldDefinition(this.configType, this.configContext, 'ALL');
22839
+ _fields.subscribe(fields => {
22840
+ if (fields && this.query && this.query.fields && this.query.fields.length) {
22841
+ fields.elements = this.query.fields.map(f => fields.elements.find(e => f === e.hitname));
22842
+ }
22843
+ result.fields = fields || new FieldDefinition();
22844
+ this._result = result;
22845
+ this.processResults(this._result);
22846
+ });
22847
+ }
22848
+ get searchResult() {
22849
+ return this._result;
22850
+ }
22851
+ constructor(config, translate, gridApi, backend, appSearchService, searchService, eventService, storageService, storedQueriesService, router, fb) {
22852
+ this.config = config;
22853
+ this.translate = translate;
22854
+ this.gridApi = gridApi;
22855
+ this.backend = backend;
22856
+ this.appSearchService = appSearchService;
22857
+ this.searchService = searchService;
22858
+ this.eventService = eventService;
22859
+ this.storageService = storageService;
22860
+ this.storedQueriesService = storedQueriesService;
22861
+ this.router = router;
22862
+ this.fb = fb;
22863
+ this.setupForm = this.fb.group({
22864
+ exportCSVwithUrl: [false],
22865
+ });
22866
+ this.exportCSVwithUrlKey = 'eo.resultlist.cache.withUrl';
22867
+ this._exportCSVwithUrl = false;
22868
+ this.csvLoadingSpinnerVisibility = false;
22869
+ this.visibleConfig = false;
22870
+ this.showLoader = false;
22871
+ this.limitedList = false;
22872
+ this.resultGridOptions = {};
22873
+ this.settings = {};
22874
+ this.querySubtitle = '';
22875
+ this.savedSearchClicked = false;
22876
+ this.showDialogExport = false;
22877
+ this.showWarnExportCSVThreshold = false;
22878
+ this.title = '';
22879
+ this.emptyMessage = '';
22880
+ this.selectFirst = true;
22881
+ this.hasIcon = false;
22882
+ this.reference = false;
22883
+ this.onSelectionChanged = new EventEmitter();
22884
+ this.onFocusChanged = new EventEmitter();
22885
+ this.onDoubleClick = new EventEmitter();
22886
+ this.onContextMenu = new EventEmitter();
22887
+ this.onCountChanged = new EventEmitter();
22888
+ this.onRefresh = new EventEmitter();
22889
+ this.onResult = new EventEmitter();
22890
+ this.onQueryInvalid = new EventEmitter();
22891
+ // shortcut actions
22892
+ this.shortcuts = {
22893
+ id: 'eo.workspace.widget.hitlist.label',
22894
+ label: this.translate.instant('eo.workspace.widget.hitlist.label'),
22895
+ labelKey: 'eo.workspace.widget.hitlist.label',
22896
+ actions: [{
22897
+ name: this.translate.instant('eo.column.config.title'),
22898
+ nameKey: 'eo.column.config.title',
22899
+ shortcut: new Shortcut('P', false, false),
22900
+ onExecuteAction: () => {
22901
+ this.visibleConfig = !this.visibleConfig;
22902
+ },
22903
+ isHidden: () => {
22904
+ return false;
22905
+ }
22906
+ },
22907
+ {
22908
+ name: this.translate.instant('eo.resultlist.export.csv'),
22909
+ nameKey: 'eo.resultlist.export.csv',
22910
+ shortcut: new Shortcut('X', false, false),
22911
+ onExecuteAction: () => {
22912
+ this.exportCSV();
22913
+ },
22914
+ isHidden: () => {
22915
+ return false;
22916
+ }
22917
+ },
22918
+ {
22919
+ name: this.translate.instant('eo.object.actions.title'),
22920
+ nameKey: 'eo.object.actions.title',
22921
+ shortcut: new Shortcut('M', false, false),
22922
+ onExecuteAction: () => {
22923
+ this.list.showActions();
22924
+ },
22925
+ isHidden: () => {
22926
+ return false;
22927
+ }
22928
+ },
22929
+ {
22930
+ name: this.translate.instant('eo.list.refresh'),
22931
+ nameKey: 'eo.list.refresh',
22932
+ shortcut: new Shortcut('R', false, false),
22933
+ onExecuteAction: () => {
22934
+ this.refreshGrid();
22935
+ },
22936
+ isHidden: () => {
22937
+ return false;
22938
+ }
22939
+ }]
22940
+ };
22941
+ this.VIRTUAL_LIST_CHUNK_SIZE = this.config.getRaw('search.limit');
22942
+ this.resolveReferencesCsv = this.config.getRaw('search.resolveReferencesCSV') || false;
22943
+ this.resolveReferencesCsvThreshold = this.config.getRaw('search.resolveReferencesCSVThreshold') || 10000;
22944
+ this._cachedColumns = this.storageService.getItem(ResultListComponent_1.COLUMNS_DEFINITION) || [];
22945
+ this.setupForm.valueChanges.pipe(untilDestroyed(this)).subscribe((_) => {
22946
+ this._exportCSVwithUrl = this.setupForm.get('exportCSVwithUrl').value;
22947
+ this.storageService.setItem(this.exportCSVwithUrlKey, this.setupForm.get('exportCSVwithUrl').value);
22948
+ });
22949
+ }
22950
+ clearQuery(clearAfterExecute) {
22951
+ if (clearAfterExecute) {
22952
+ this.appSearchService.clearQuery();
22622
22953
  }
22623
- this.notifyList.emit({ unselect: false, update: false, payload: this.storedQuery });
22624
- }
22625
- setQueryToAppSearch() {
22626
- this.storedQueryForm.load();
22627
22954
  }
22628
- executeQuery() {
22629
- this.storedQueryForm.execute();
22955
+ invalidQuery() {
22956
+ this.onQueryInvalid.emit();
22630
22957
  }
22631
- // Save the current stored query
22632
- updateStoredQuery() {
22633
- const formData = this.getFormData();
22634
- this.storedQuery.filters = this.storedQuery.filters.filter(f => ~this.BASE_PARAMS_FIELDS.indexOf(f.property));
22635
- Object.keys(formData)
22636
- .forEach(k => {
22637
- if (k === this.FORM_INPUT_TITLE) {
22638
- this.storedQuery.name = formData[k];
22639
- }
22640
- else if (k === this.FORM_INPUT_FULLTEXT) {
22641
- this.storedQuery.term = formData[k];
22958
+ ngOnInit() {
22959
+ this.eventService
22960
+ .on(EnaioEvent.DMS_OBJECT_DELETED)
22961
+ .pipe(untilDestroyed(this))
22962
+ .subscribe((res) => {
22963
+ if (this.grid) {
22964
+ this.grid.updateRows(this.backend.update([res.data], [{ id: res.data.id }]));
22642
22965
  }
22643
- else {
22644
- let filters = this.searchService.getSearchFilter(this.storedQuery.types, k, formData[k]);
22645
- filters.forEach(f => this.storedQuery.addFilter(f));
22966
+ });
22967
+ this._exportCSVwithUrl = this.storageService.getItem(this.exportCSVwithUrlKey) || this.setupForm.get('exportCSVwithUrl').value;
22968
+ this.setupForm.patchValue({
22969
+ exportCSVwithUrl: this._exportCSVwithUrl
22970
+ });
22971
+ this.eventService
22972
+ .on(EnaioEvent.DMS_OBJECT_UPDATED)
22973
+ .pipe(untilDestroyed(this))
22974
+ .subscribe((res) => {
22975
+ if (this.grid) {
22976
+ this.updateRow(res.data.id, res.data.data);
22646
22977
  }
22647
22978
  });
22648
- this.storedQueriesService
22649
- .saveStoredQuery(this.storedQuery)
22650
- .subscribe(updatedStoredQuery => {
22651
- this.query = updatedStoredQuery;
22652
- this.resetEditForm();
22653
- this.finishPending();
22654
- this.notifyList.emit({ unselect: false, update: false, payload: updatedStoredQuery });
22655
- }, Utils.throw(null, this.translate.instant('eo.search.storedquery.save.error')));
22656
22979
  }
22657
- /**
22658
- * Toggle form elements to be a dynamic parameter or not
22659
- * @param event
22660
- */
22661
- parameterChanged(event) {
22662
- let m = this.storedQuery.parameter.find(p => p.qname === event.control);
22663
- if (m && !event.value) {
22664
- // remove existing parameter
22665
- this.storedQuery.parameter = this.storedQuery.parameter.filter(p => p.qname !== event.control);
22666
- }
22667
- else if (!m && event.value) {
22668
- // add parameter element
22669
- let param = this.formFieldToParameter(event.control);
22670
- if (param) {
22671
- this.storedQuery.parameter.push(param);
22980
+ ngAfterViewInit() {
22981
+ setTimeout(() => {
22982
+ if (this.grid && this._query) {
22983
+ this._query.sortOptions = (this.grid.api.getColumnState() || [])
22984
+ .map(model => new SortOption(GridService.qnameFormatter(model.colId + this.postfixSort(model.colId)), model.sort));
22985
+ this.query = this._query;
22672
22986
  }
22673
- }
22987
+ }, 200);
22674
22988
  }
22675
- getFormData() {
22676
- const properties = Object.keys(this.editForm.form.value);
22677
- let data = {};
22678
- properties.forEach(property => {
22679
- const fc = this.editForm.form.controls[property];
22680
- let formElement;
22681
- if (fc.controls && fc.controls[property]) {
22682
- const fe = fc.controls[property];
22683
- formElement = fe._eoFormElement;
22684
- }
22685
- if (formElement && formElement.isNotSetValue) {
22686
- data[property] = null;
22687
- }
22688
- else {
22689
- switch (property) {
22690
- case this.FORM_INPUT_TITLE: {
22691
- data[property] = this.editForm.form.value[property] || '';
22692
- break;
22693
- }
22694
- case this.FORM_INPUT_FULLTEXT: {
22695
- data[property] = this.editForm.form.value[property][StoredQueriesService.FULLTEXT] || '';
22696
- break;
22989
+ updateRow(id, data) {
22990
+ const matchRow = this.resultGridOptions.rowData.find((r) => r.id === id);
22991
+ const systemFields = ['created', 'creatortitle', 'modified', 'modifiertitle', 'title', 'description', 'type', 'version', 'filesize', 'filename', 'mimetypegroup', 'mimetype'];
22992
+ let missingColumns = this.resultGridOptions.columnDefs;
22993
+ if (matchRow) {
22994
+ Object.keys(matchRow).forEach((k) => {
22995
+ if (data.hasOwnProperty(k)) {
22996
+ if (data.hasOwnProperty(k + '_meta')) {
22997
+ // if it is an org field, it will have a title to show, otherwise it is a codesystem and we show the label
22998
+ matchRow[k] = data[k + '_meta'].title ? data[k + '_meta'].title : data[k + '_meta'].label;
22697
22999
  }
22698
- default: {
22699
- const v = this.editForm.form.value[property][property];
22700
- if (!UtilitiesService.isEmpty(v)) {
22701
- data[property] = v;
22702
- }
23000
+ else {
23001
+ matchRow[k] = data[k];
22703
23002
  }
23003
+ missingColumns = missingColumns.filter((column) => column.field !== k);
22704
23004
  }
22705
- }
22706
- });
22707
- return data;
22708
- }
22709
- /**
22710
- * Create a dynamic stored query parameter for a form element
22711
- * @param qname The form elements qname
22712
- * @returns
22713
- */
22714
- formFieldToParameter(qname) {
22715
- try {
22716
- let param;
22717
- // special handling for fulltext fields
22718
- if (qname === StoredQueriesService.FULLTEXT) {
22719
- param = {
22720
- qname: qname,
22721
- type: qname,
22722
- };
22723
- }
22724
- else {
22725
- const fc = this.editForm.form.controls[qname].controls[qname];
22726
- const fe = fc._eoFormElement;
22727
- param = {
22728
- qname: fe.qname,
22729
- type: fe.type
22730
- };
22731
- }
22732
- return param;
22733
- }
22734
- catch (e) {
22735
- return null;
22736
- }
22737
- }
22738
- resetEditForm() {
22739
- this.editForm = {
22740
- form: null,
22741
- fulltextFormControl: null,
22742
- controls: [],
22743
- contextControls: []
22744
- };
22745
- }
22746
- onFormChanges() {
22747
- this.editForm
22748
- .form
22749
- .valueChanges
22750
- .subscribe(() => this.onFormStatusChanged(this.editForm.form));
22751
- }
22752
- createEditForm() {
22753
- this.resetEditForm();
22754
- this.setupFormControls().subscribe(_ => {
22755
- let form = new ObjectFormGroup({});
22756
- let fcTitle = new UntypedFormControl('', Validators.required);
22757
- fcTitle.setValue(this.storedQuery.name);
22758
- let fcFulltext = this.toFormControl(this.storedQueriesService.getFulltextFormElement(this.translate.instant('eo.storedquery.search.term'), this.storedQuery.term));
22759
- this.editForm.fulltextFormControl = fcFulltext;
22760
- // add title and fulltext field
22761
- form.addControl(this.FORM_INPUT_TITLE, fcTitle);
22762
- form.addControl(this.FORM_INPUT_FULLTEXT, fcFulltext);
22763
- if (this.editForm.controls.length || this.editForm.contextControls.length) {
22764
- this.editForm.controls
22765
- .forEach((c) => form.addControl(c._eoFormControlWrapper.controlName, c));
22766
- this.editForm.contextControls
22767
- .forEach((c) => form.addControl(c._eoFormControlWrapper.controlName, c));
22768
- }
22769
- this.editForm.form = form;
22770
- this.onFormChanges();
22771
- });
22772
- }
22773
- setupFormControls() {
22774
- const tasks = [];
22775
- // setting up object type form only makes sense with one target type
22776
- if (this.storedQuery.types.length === 1) {
22777
- tasks.push(this.systemService.getFormElementsFromFormModel(this.storedQuery.types[0].qname, 'SEARCH').pipe(tap((elements) => {
22778
- elements.forEach(e => {
22779
- // prevent tables and binary types from being rendered in the stored query form
22780
- if (e.type !== 'BINARY') {
22781
- if (e.required) {
22782
- e.required = false;
22783
- }
22784
- if (e.readonly) {
22785
- e.readonly = false;
22786
- }
22787
- const fc = this.toFormControl(e);
22788
- if (fc) {
22789
- this.editForm.controls.push(fc);
22790
- }
23005
+ else if (data.hasOwnProperty(k.split('.')[1])) {
23006
+ // some technical names have the object type as a prefix, we have to get rid of it
23007
+ const kSplit = k.split('.')[1];
23008
+ if (data.hasOwnProperty(kSplit + '_meta')) {
23009
+ matchRow[k] = data[kSplit + '_meta'].title ? data[kSplit + '_meta'].title : data[kSplit + '_meta'].label;
22791
23010
  }
22792
- });
22793
- })));
22794
- }
22795
- // add context form controls as well
22796
- if (this.storedQuery.contextFolderTypes.length) {
22797
- tasks.push(this.systemService.getFormElementsFromFormModel(this.storedQuery.contextFolderTypes[0].qname, 'SEARCH', true).pipe(tap((elements) => {
22798
- elements.forEach(e => {
22799
- const fc = this.toFormControl(e);
22800
- if (fc) {
22801
- this.editForm.contextControls.push(fc);
23011
+ else {
23012
+ matchRow[k] = data[kSplit];
22802
23013
  }
22803
- });
22804
- })));
22805
- }
22806
- return tasks.length ? forkJoin(tasks) : of(tasks);
22807
- }
22808
- fetchRoles() {
22809
- if (!this.systemRoles || this.systemRoles.length === 0) {
22810
- this.systemService
22811
- .getRoles()
22812
- .subscribe(res => {
22813
- this.systemRoles = res;
22814
- this.rolesPicker.codesystem = {
22815
- entries: this.systemRoles.map(role => ({
22816
- id: role.id,
22817
- label: role.name,
22818
- defaultrepresentation: role.name,
22819
- data: role.name
22820
- })).sort(Utils.sortValues('label'))
22821
- };
23014
+ missingColumns = missingColumns.filter((column) => column.field !== k);
23015
+ }
23016
+ });
23017
+ // we need to iterate through the not already applied columns, which were changed from null or to null
23018
+ missingColumns.forEach((column) => {
23019
+ if (data.hasOwnProperty(column.field)) {
23020
+ matchRow[column.field] = data[column.field];
23021
+ }
23022
+ else if (data.hasOwnProperty(column.field.split('.')[1])) {
23023
+ matchRow[column.field] = data[column.field.split('.')[1]];
23024
+ }
23025
+ else {
23026
+ if (!systemFields.includes(column.field)) {
23027
+ matchRow[column.field] = null;
23028
+ }
23029
+ }
22822
23030
  });
23031
+ matchRow.id = id;
23032
+ const rowNode = this.grid.api.getRowNode(id);
23033
+ rowNode && rowNode.setData(matchRow);
22823
23034
  }
22824
23035
  }
22825
- getRestrictions() {
22826
- let restrictions = [];
22827
- // type restriction
22828
- if (this.storedQuery.types && this.storedQuery.types.length) {
22829
- restrictions.push({
22830
- field: SearchQuery.BASE_PARAMS.TYPE,
22831
- label: this.translate.instant('eo.storedquery.restriction.type'),
22832
- items: this.storedQuery.types.map(t => t.label)
22833
- });
23036
+ refreshGrid() {
23037
+ if (this.query) {
23038
+ this._query.sortOptions = (this.grid.api.getColumnState() || [])
23039
+ .map(model => new SortOption(GridService.qnameFormatter(model.colId + this.postfixSort(model.colId)), model.sort));
23040
+ this.query = this._query;
22834
23041
  }
22835
- // add base params restrictions
22836
- (this.storedQuery.filters || []).forEach(filter => {
22837
- if (filter && ~this.BASE_PARAMS_FIELDS.indexOf(filter.property)) {
22838
- const field = filter.property;
22839
- const label = this.translate.instant('eo.storedquery.restriction.' + field);
22840
- switch (field) {
22841
- case SearchQuery.BASE_PARAMS.MIMETYPEGROUP:
22842
- restrictions.push({
22843
- field, label, items: Array.isArray(filter.firstValue) ? filter.firstValue : [filter.firstValue]
22844
- });
22845
- break;
22846
- case SearchQuery.BASE_PARAMS.FILENAME:
22847
- restrictions.push({
22848
- field, label, items: [filter.firstValue]
22849
- });
22850
- break;
22851
- case SearchQuery.BASE_PARAMS.FILESIZE:
22852
- restrictions.push({
22853
- field, label, items: [this.translate.instant('eo.search.agg.filesize.' + filter.firstValue)]
22854
- });
22855
- break;
22856
- case SearchQuery.BASE_PARAMS.CREATED:
22857
- case SearchQuery.BASE_PARAMS.MODIFIED:
22858
- restrictions.push({
22859
- field, label, items: [this.createDateRestriction(filter)]
22860
- });
22861
- break;
22862
- case SearchQuery.BASE_PARAMS.CREATOR:
22863
- case SearchQuery.BASE_PARAMS.MODIFIER:
22864
- this.systemService.getOrganizationObjects(filter.firstValue)
22865
- .subscribe(orgUsers => restrictions.push({
22866
- field, label, items: orgUsers.map(u => u.title)
22867
- }));
22868
- break;
22869
- }
22870
- }
22871
- });
22872
- return restrictions;
23042
+ this.onRefresh.emit(this.query);
22873
23043
  }
22874
- createDateRestriction(filter) {
22875
- switch (filter.operator) {
22876
- case SearchFilter.OPERATOR.RANGE:
22877
- return this.translate.instant(`eo.search.agg.time.${filter.firstValue}`);
22878
- case SearchFilter.OPERATOR.EQUAL:
22879
- return `= ${this.datePipe.transform(filter.firstValue, 'eoShortDate')}`;
22880
- case SearchFilter.OPERATOR.INTERVAL_INCLUDE_BOTH:
22881
- return `${this.datePipe.transform(filter.firstValue, 'eoShortDate')} - ${this.datePipe.transform(filter.secondValue, 'eoShortDate')}`;
22882
- case SearchFilter.OPERATOR.GREATER_OR_EQUAL:
22883
- return `${this.translate.instant('eo.search.agg.time.span.since')} ${this.datePipe.transform(filter.firstValue, 'eoShortDate')}`;
22884
- case SearchFilter.OPERATOR.LESS_OR_EQUAL:
22885
- return `${this.translate.instant('eo.search.agg.time.span.until')} ${this.datePipe.transform(filter.firstValue, 'eoShortDate')}`;
22886
- default:
22887
- return `(${filter.operator}) ${this.datePipe.transform(filter.firstValue, 'eoShortDate')}`;
23044
+ onColumnResized(column) {
23045
+ let col = this._cachedColumns.find(c => c.qname === column.colDef.refData.qname);
23046
+ if (col) {
23047
+ col.width = column.actualWidth;
23048
+ }
23049
+ else {
23050
+ this._cachedColumns.push({ qname: column.colDef.refData.qname, width: column.actualWidth });
22888
23051
  }
23052
+ this.storageService.setItem(ResultListComponent_1.COLUMNS_DEFINITION, this._cachedColumns);
22889
23053
  }
22890
23054
  /**
22891
- * Creates a form control from a given form element
22892
- * @param formElement
22893
- * @returns
23055
+ * Event handler for grid configuration
23056
+ * @param $event
22894
23057
  */
22895
- toFormControl(formElement) {
22896
- // the `name` property of stored query form element has to be `qname` of form element,
22897
- // because we may combine multiple forms (context form) and in this case there may
22898
- // be conflicts in namings
22899
- formElement.name = formElement.qname;
22900
- if (formElement.type === 'TABLE') {
22901
- let filters = this.storedQuery.getTableFilters(formElement.qname);
22902
- if (filters && filters.length) {
22903
- formElement.value = this.searchService.tableFiltersToElementValue(filters, formElement.elements);
22904
- }
22905
- else {
22906
- formElement.value = [{}];
22907
- delete formElement.isNotSetValue;
22908
- }
23058
+ onConfigChanged(refresh) {
23059
+ if (refresh) {
23060
+ this.refreshGrid();
22909
23061
  }
22910
- else {
22911
- // grab value for the control from corresponding query filters
22912
- let filter = this.storedQuery.getFilter(formElement.qname);
22913
- // we may have params that are not part of the queries filters. This may be the
22914
- // case when we mark form elements as dynamic fields without providing a value
22915
- if (filter) {
22916
- // filter to have no value
22917
- if (filter.operator === SearchFilter.OPERATOR.EQUAL && filter.firstValue === null) {
22918
- formElement.isNotSetValue = true;
22919
- }
22920
- else {
22921
- delete formElement.isNotSetValue;
23062
+ }
23063
+ /**
23064
+ * Process Search result & generate column definitions
23065
+ * @param result
23066
+ */
23067
+ processResults(result) {
23068
+ this.visibleConfig = false;
23069
+ this.onResult.emit(result);
23070
+ this.totalHits = result.count.value;
23071
+ this.limitedList = this.totalHits > result.hits.length;
23072
+ let gridOptions = { context: {}, onSortChanged: () => this.onPageChanged(), onFilterChanged: () => this.onPageChanged() };
23073
+ const searchMode = result.fields.mode ? result.fields.mode : null;
23074
+ this.settings = this.limitedList && this.query ? { total: this.totalHits, size: this.VIRTUAL_LIST_CHUNK_SIZE, relation: result.count.relation } : null;
23075
+ gridOptions.rowData = result.hits;
23076
+ const { elements, sortorder, grouporder, pinned, alignmentx } = result.fields;
23077
+ gridOptions.context.count = result.count;
23078
+ gridOptions.columnDefs = this.gridApi.getColumnDefs(elements, sortorder, grouporder, pinned, alignmentx, false, this._cachedColumns, searchMode);
23079
+ const refreshGrid = this.hasGridOptions;
23080
+ Object.assign(this.resultGridOptions, gridOptions, this.gridOptions);
23081
+ if (refreshGrid) {
23082
+ // reload grid component
23083
+ this.resultGridOptions = {};
23084
+ setTimeout(() => Object.assign(this.resultGridOptions, gridOptions, this.gridOptions), 0);
23085
+ }
23086
+ }
23087
+ postfixSort(id) {
23088
+ // todo: remove when it's fixed on backend
23089
+ return id.match(/(^sysobject\.|^sysdocument\.)(creator$|modifier$)/) ? 'title' : '';
23090
+ }
23091
+ onPageChanged(page = 1) {
23092
+ if (this.limitedList && this.query) {
23093
+ this.fetchRowData({
23094
+ startRow: this.VIRTUAL_LIST_CHUNK_SIZE * (page - 1),
23095
+ sortModel: this.grid.api.getColumnState(),
23096
+ filterModel: this.grid.api.getFilterModel(),
23097
+ successCallback: (rows, total, relation) => {
23098
+ this.settings = { total, relation, size: this.VIRTUAL_LIST_CHUNK_SIZE, page };
23099
+ this.grid.api.setGridOption('rowData', rows);
23100
+ this.grid.selectRow(0);
22922
23101
  }
22923
- formElement.value = this.searchService.filterToElementValue(this.storedQuery.getFilter(formElement.qname), formElement.type);
22924
- }
22925
- else if (formElement.qname !== StoredQueriesService.FULLTEXT) {
22926
- formElement.value = undefined;
22927
- delete formElement.isNotSetValue;
22928
- }
23102
+ });
22929
23103
  }
22930
- // sync with params
22931
- const match = this.storedQuery.parameter.find(param => {
22932
- return (param.qname === formElement.qname) || (param.type === StoredQueriesService.FULLTEXT && formElement.qname === StoredQueriesService.FULLTEXT);
23104
+ }
23105
+ /**
23106
+ * Function for fetching the items to be displayed with a virtual row model.
23107
+ *
23108
+ * @param params - row model params (incl. startRow, endRow, sortModel and filterModel)
23109
+ */
23110
+ fetchRowData(params) {
23111
+ if (this.query) {
23112
+ this.updateQuery(params);
23113
+ this.searchService
23114
+ .getChunkedResult(this.query, params.startRow, this.VIRTUAL_LIST_CHUNK_SIZE)
23115
+ .subscribe(result => {
23116
+ this.totalHits = this.grid.gridOptions.context.rowCount = result.count.value;
23117
+ this.grid.gridOptions.context.count = result.count;
23118
+ params.successCallback(result.hits, this.totalHits, result.count.relation);
23119
+ });
23120
+ }
23121
+ }
23122
+ updateQuery(params) {
23123
+ this.query.sortOptions = (params.sortModel || this.grid.api.getColumnState() || [])
23124
+ .map(model => new SortOption(GridService.qnameFormatter(model.colId + this.postfixSort(model.colId)), model.sort));
23125
+ this.query.filters = this.defaultQuery.filters
23126
+ .concat((Object.keys(params.filterModel || this.grid.api.getFilterModel()) || [])
23127
+ .map(key => GridFilter.operator(GridService.qnameFormatter(key), (params.filterModel || this.grid.api.getFilterModel())[key])));
23128
+ this.query.searchMode = SearchQuery.DEFAULT_SEARCH_MODE;
23129
+ }
23130
+ executeSuggestSearch() {
23131
+ // todo: implement
23132
+ }
23133
+ resultHasReferences() {
23134
+ return this._result.fields.elements.some(element => element.type === 'ORGANIZATION' || element.type === 'REFERENCE');
23135
+ }
23136
+ openDialogExport() {
23137
+ this.showDialogExport = true;
23138
+ if (this.resolveReferencesCsv
23139
+ && (this.list.gridCount.totalCount > this.resolveReferencesCsvThreshold || this.list.gridCount.relation === 'gte')
23140
+ && this.resultHasReferences()) {
23141
+ this.showWarnExportCSVThreshold = true;
23142
+ }
23143
+ }
23144
+ exportCSV() {
23145
+ this.csvLoadingSpinnerVisibility = true;
23146
+ this.updateQuery({});
23147
+ this.showWarnExportCSVThreshold = false;
23148
+ this.showDialogExport = false;
23149
+ const queryJson = this.query.getQueryJson(this.resolveReferencesCsv);
23150
+ queryJson.fields = [];
23151
+ this.resultGridOptions?.columnDefs.forEach(colDef => {
23152
+ queryJson.fields.push(colDef['field'] + ' ' + colDef.headerName);
22933
23153
  });
22934
- // every field that is part of the params is supposed to be dynamic
22935
- formElement._dynamic = !!match;
22936
- // create actual form control that could be used with
22937
- // FormElementComponent to then render for elements
22938
- // wrapper may be null in case of an error
22939
- return this.formHelperService.elementToFormControl(formElement, 'SEARCH');
23154
+ this.searchService.downloadCsvFromQuery(queryJson, this._exportCSVwithUrl).subscribe(() => {
23155
+ this.csvLoadingSpinnerVisibility = false;
23156
+ });
23157
+ }
23158
+ parseDmsParams(data) {
23159
+ return { id: data && data.id ? data.id : null, type: data && data.type ? data.type : null };
23160
+ }
23161
+ get hasGridOptions() {
23162
+ return !!(this.resultGridOptions.datasource || this.resultGridOptions.rowData);
22940
23163
  }
22941
23164
  onStoredQueryLoaded() {
23165
+ this.savedSearchClicked = false;
22942
23166
  this.router.navigate([{ outlets: { modal: 'search' } }]);
22943
23167
  }
22944
23168
  onStoredQueryExecute(evt) {
23169
+ this.savedSearchClicked = false;
22945
23170
  const uriParam = encodeURIComponent(JSON.stringify(evt.queryJson));
22946
23171
  const uriParamQuery = { queryParams: { 'query': uriParam } };
22947
23172
  this.router.navigate(['/result'], uriParamQuery);
22948
23173
  }
22949
- setIconTitles() {
22950
- this.iconTitles = {
22951
- share: this.translate.instant('eo.storedquery.share.title'),
22952
- shared: this.translate.instant('eo.storedquery.sharedfor.title'),
22953
- favor: this.translate.instant('eo.storedquery.favor.title'),
22954
- favored: this.translate.instant('eo.storedquery.favoredfor.title')
22955
- };
22956
- }
22957
- ngOnInit() {
22958
- this.selection.focus$
22959
- .pipe(untilDestroyed(this))
22960
- .subscribe(q => {
22961
- this.query = q;
22962
- });
22963
- this.setIconTitles();
22964
- }
22965
- trackByQName(index, item) {
22966
- return item.qname;
22967
- }
22968
- trackByIndex(index, item) {
22969
- return index;
22970
- }
22971
- 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 }); }
22972
- 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" }] }); }
23174
+ 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 }); }
23175
+ 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" }] }); }
22973
23176
  };
22974
- StoredQueryDetailsComponent = __decorate([
23177
+ ResultListComponent = ResultListComponent_1 = __decorate([
22975
23178
  UntilDestroy()
22976
- ], StoredQueryDetailsComponent);
22977
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryDetailsComponent, decorators: [{
23179
+ ], ResultListComponent);
23180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListComponent, decorators: [{
22978
23181
  type: Component,
22979
- 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"] }]
22980
- }], 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: [{
23182
+ 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"] }]
23183
+ }], 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: [{
22981
23184
  type: ViewChild,
22982
- args: ['storedQueryForm']
22983
- }], query: [{
23185
+ args: ['eoGrid']
23186
+ }], list: [{
23187
+ type: ViewChild,
23188
+ args: ['eoList']
23189
+ }], title: [{
22984
23190
  type: Input
22985
- }], notifyList: [{
23191
+ }], configType: [{
23192
+ type: Input
23193
+ }], configContext: [{
23194
+ type: Input
23195
+ }], clearAfterExecute: [{
23196
+ type: Input
23197
+ }], emptyMessage: [{
23198
+ type: Input
23199
+ }], selectFirst: [{
23200
+ type: Input
23201
+ }], gridOptions: [{
23202
+ type: Input
23203
+ }], hasIcon: [{
23204
+ type: Input
23205
+ }], reference: [{
23206
+ type: Input
23207
+ }], onSelectionChanged: [{
23208
+ type: Output
23209
+ }], onFocusChanged: [{
23210
+ type: Output
23211
+ }], onDoubleClick: [{
23212
+ type: Output
23213
+ }], onContextMenu: [{
23214
+ type: Output
23215
+ }], onCountChanged: [{
23216
+ type: Output
23217
+ }], onRefresh: [{
23218
+ type: Output
23219
+ }], onResult: [{
23220
+ type: Output
23221
+ }], onQueryInvalid: [{
22986
23222
  type: Output
23223
+ }], query: [{
23224
+ type: Input
23225
+ }], searchResult: [{
23226
+ type: Input
22987
23227
  }] } });
22988
23228
 
22989
- class StoredQueryModule {
22990
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
22991
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryModule, declarations: [StoredQueryComponent,
22992
- StoredQueryDetailsComponent,
22993
- DynamicPropertySwitchComponent], imports: [CommonModule,
22994
- ObjectFormModule,
22995
- UiModule,
22996
- GridModule,
22997
- FormsModule,
22998
- ReactiveFormsModule,
22999
- FormElementsModule], exports: [StoredQueryComponent,
23000
- StoredQueryDetailsComponent] }); }
23001
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryModule, imports: [CommonModule,
23002
- ObjectFormModule,
23003
- UiModule,
23004
- GridModule,
23005
- FormsModule,
23006
- ReactiveFormsModule,
23007
- FormElementsModule] }); }
23008
- }
23009
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryModule, decorators: [{
23010
- type: NgModule,
23011
- args: [{
23012
- imports: [
23013
- CommonModule,
23014
- ObjectFormModule,
23015
- UiModule,
23016
- GridModule,
23017
- FormsModule,
23018
- ReactiveFormsModule,
23019
- FormElementsModule
23020
- ],
23021
- declarations: [
23022
- StoredQueryComponent,
23023
- StoredQueryDetailsComponent,
23024
- DynamicPropertySwitchComponent
23025
- ],
23026
- exports: [
23027
- StoredQueryComponent,
23028
- StoredQueryDetailsComponent
23029
- ]
23030
- }]
23031
- }] });
23032
-
23033
23229
  class ResultListModule {
23034
23230
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
23035
23231
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: ResultListModule, declarations: [ResultListComponent], imports: [UiModule,
23036
23232
  ListContainerModule,
23037
23233
  GridModule,
23038
23234
  ShortcutsModule,
23039
- StoredQueryModule], exports: [ResultListComponent] }); }
23235
+ StoredQueryModule,
23236
+ FormElementsModule,
23237
+ ReactiveFormsModule], exports: [ResultListComponent] }); }
23040
23238
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListModule, imports: [UiModule,
23041
23239
  ListContainerModule,
23042
23240
  GridModule,
23043
23241
  ShortcutsModule,
23044
- StoredQueryModule] }); }
23242
+ StoredQueryModule,
23243
+ FormElementsModule,
23244
+ ReactiveFormsModule] }); }
23045
23245
  }
23046
23246
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListModule, decorators: [{
23047
23247
  type: NgModule,
@@ -23051,170 +23251,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
23051
23251
  ListContainerModule,
23052
23252
  GridModule,
23053
23253
  ShortcutsModule,
23054
- StoredQueryModule
23254
+ StoredQueryModule,
23255
+ FormElementsModule,
23256
+ ReactiveFormsModule
23055
23257
  ],
23056
23258
  exports: [ResultListComponent],
23057
23259
  declarations: [ResultListComponent]
23058
23260
  }]
23059
23261
  }] });
23060
23262
 
23061
- class ChangePasswordFormComponent {
23062
- constructor(fb, userService, translate, toaster) {
23063
- this.fb = fb;
23064
- this.userService = userService;
23065
- this.translate = translate;
23066
- this.toaster = toaster;
23067
- this.userRegex = '';
23068
- this.onFormSumbit = new EventEmitter();
23069
- this.passwordIsVisible = false;
23070
- this.passwordValidation = { type: 'valid', amount: null };
23071
- this.generateForm();
23072
- }
23073
- generateForm() {
23074
- const { compose, required, minLength } = Validators;
23075
- this.changePasswordForm = this.fb.group({
23076
- currentPassword: ['', compose([required, minLength(1)])],
23077
- password: ['', compose([required, minLength(1)])],
23078
- confirmPassword: ['', compose([required, minLength(1)])]
23079
- }, {
23080
- validator: compose([
23081
- this.newPasswordValidator('currentPassword', 'password'),
23082
- this.matchingPasswordsValidator('password', 'confirmPassword')
23083
- ])
23084
- });
23085
- this.onChanges();
23086
- }
23087
- newPasswordValidator(current, password) {
23088
- return (group) => {
23089
- if (group.controls[current].value !== group.controls[password].value) {
23090
- return null;
23091
- }
23092
- return { 'SAME_PASSWORD': true };
23093
- };
23094
- }
23095
- matchingPasswordsValidator(password, confirm) {
23096
- return (group) => {
23097
- if (group.controls[password].value === group.controls[confirm].value) {
23098
- return null;
23099
- }
23100
- return { 'matchingPasswords': true };
23101
- };
23102
- }
23103
- onChanges() {
23104
- this.changePasswordForm.valueChanges
23105
- .subscribe(value => {
23106
- if (value.password) {
23107
- this.passwordValidation = this.userService.validatePassword(value.password);
23108
- }
23109
- return this.matchingPasswords;
23110
- });
23111
- }
23112
- showPasswords() {
23113
- this.passwordIsVisible = !this.passwordIsVisible;
23114
- }
23115
- get passwordIsNew() {
23116
- const { errors, controls } = this.changePasswordForm;
23117
- let passwordIsNewError = false;
23118
- if (errors) {
23119
- const currentPassword = controls.currentPassword.touched && controls.currentPassword.dirty;
23120
- const password = controls.password.touched && controls.password.dirty;
23121
- passwordIsNewError = errors.SAME_PASSWORD && currentPassword && password;
23122
- }
23123
- return passwordIsNewError;
23124
- }
23125
- get matchingPasswords() {
23126
- const { errors, controls } = this.changePasswordForm;
23127
- let matchingPasswordsError = false;
23128
- if (errors) {
23129
- const password = controls.password.touched && controls.password.dirty;
23130
- const confirmPassword = controls.confirmPassword.touched && controls.confirmPassword.dirty;
23131
- matchingPasswordsError = errors.matchingPasswords && password && confirmPassword;
23132
- }
23133
- return matchingPasswordsError;
23134
- }
23135
- changePasswordOnSuccess() {
23136
- this.changePasswordForm.reset();
23137
- this.changePasswordForm.markAsPristine();
23138
- this.changePasswordForm.markAsUntouched();
23139
- this.onFormSumbit.emit(true);
23140
- this.toaster.success(this.translate.instant('eo.password.reset.success'));
23141
- }
23142
- changePasswordOnError(error) {
23143
- const errorTitle = this.translate.instant('eo.password.reset.error.password.title');
23144
- if (error.error.key === 'USER_OLD_PASSWORD_WRONG') {
23145
- this.toaster.error(errorTitle, this.translate.instant('eo.password.reset.error.old.password.message'));
23146
- }
23147
- else if (error.error.key === 'USER_NEW_PASSWORD_INVALID') {
23148
- this.toaster.error(errorTitle, this.translate.instant('eo.password.reset.error.new.password.message'));
23149
- }
23150
- else {
23151
- this.toaster.error(errorTitle);
23152
- }
23153
- }
23154
- onSubmit() {
23155
- const { currentPassword, password } = this.changePasswordForm.value;
23156
- const payload = {
23157
- old: currentPassword,
23158
- new: password
23159
- };
23160
- this.userService
23161
- .changePassword(payload)
23162
- .subscribe(() => this.changePasswordOnSuccess(), (error) => this.changePasswordOnError(error));
23163
- }
23164
- 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 }); }
23165
- 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" }] }); }
23166
- }
23167
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ChangePasswordFormComponent, decorators: [{
23168
- type: Component,
23169
- 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"] }]
23170
- }], ctorParameters: () => [{ type: i1$3.UntypedFormBuilder }, { type: i1.UserService }, { type: i1.TranslateService }, { type: i1.NotificationsService }], propDecorators: { userRegex: [{
23171
- type: Input
23172
- }], onFormSumbit: [{
23173
- type: Output
23174
- }] } });
23175
-
23176
- class PermissionsComponent {
23177
- constructor() {
23178
- this.roles = [];
23179
- }
23180
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PermissionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23181
- 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"] }] }); }
23182
- }
23183
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PermissionsComponent, decorators: [{
23184
- type: Component,
23185
- 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"] }]
23186
- }], propDecorators: { roles: [{
23187
- type: Input
23188
- }] } });
23189
-
23190
- class SettingsModule {
23191
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SettingsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
23192
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: SettingsModule, declarations: [ChangePasswordFormComponent, PermissionsComponent], imports: [CommonModule,
23193
- ReactiveFormsModule,
23194
- FormElementsModule,
23195
- EoSharedModule,
23196
- UiModule], exports: [ChangePasswordFormComponent, PermissionsComponent] }); }
23197
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SettingsModule, imports: [CommonModule,
23198
- ReactiveFormsModule,
23199
- FormElementsModule,
23200
- EoSharedModule,
23201
- UiModule] }); }
23202
- }
23203
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SettingsModule, decorators: [{
23204
- type: NgModule,
23205
- args: [{
23206
- imports: [
23207
- CommonModule,
23208
- ReactiveFormsModule,
23209
- FormElementsModule,
23210
- EoSharedModule,
23211
- UiModule
23212
- ],
23213
- declarations: [ChangePasswordFormComponent, PermissionsComponent],
23214
- exports: [ChangePasswordFormComponent, PermissionsComponent]
23215
- }]
23216
- }] });
23217
-
23218
23263
  class EoFrameworkModule {
23219
23264
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: EoFrameworkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
23220
23265
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: EoFrameworkModule, declarations: [UploadOverlayComponent,
@@ -23465,10 +23510,10 @@ class AboutStateComponent {
23465
23510
  this.backend = backend;
23466
23511
  this.userService = userService;
23467
23512
  this.config = config;
23468
- 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", "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" }];
23513
+ 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.13.0-rc.1", "license": "MIT" }, { "name": "@ngneat/until-destroy", "version": "10.0.0", "license": "MIT" }, { "name": "@ngx-pwa/local-storage", "version": "18.0.0", "license": "MIT" }, { "name": "@ngx-translate/core", "version": "15.0.0", "license": "SEE LICENSE IN LICENSE" }, { "name": "@yuuvis/components", "version": "18.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" }];
23469
23514
  this.ctrl = {
23470
23515
  componentName: 'yuuvis® RAD client',
23471
- componentVersion: '11.12.1',
23516
+ componentVersion: '11.13.0-rc.2',
23472
23517
  productName: '',
23473
23518
  productVersion: ''
23474
23519
  };
@@ -23509,6 +23554,7 @@ class AboutStateComponent {
23509
23554
  'url': 'http://opensource.org/licenses/0BSD'
23510
23555
  }
23511
23556
  };
23557
+ this.__libraries__ = this.__libraries__.filter(lib => this.licenses[lib.license]);
23512
23558
  this.getUserLang();
23513
23559
  this.backgroundImage = `url(${this.config.getDashboardBackgroundImage()})`;
23514
23560
  this.headerLogo = this.config.getRaw('about.headerLogo');
@@ -23529,11 +23575,11 @@ class AboutStateComponent {
23529
23575
  return index;
23530
23576
  }
23531
23577
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AboutStateComponent, deps: [{ token: i1.BackendService }, { token: i1.UserService }, { token: i1.Config }], target: i0.ɵɵFactoryTarget.Component }); }
23532
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: AboutStateComponent, selector: "eo-about-state", ngImport: i0, template: "<div class=\"eo-about-state\">\n\n <div class=\"about\">\n <div class=\"header\" [style.background-image]=\"backgroundImage\">\n <img [src]=\"headerLogo\"/>\n </div>\n\n <div class=\"body\">\n <div class=\"claim\" translate>eo.help.about.claim</div>\n\n <div class=\"wrap\">\n <table>\n <tbody>\n <tr>\n <th translate>eo.help.about.component.label</th>\n <td>{{ctrl.componentName}}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.component.version.label</th>\n <td>{{ctrl.componentVersion}}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.product.label</th>\n <td>{{ ctrl.productName }}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.product.version.label</th>\n <td>{{ ctrl.productVersion }}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.producer.label</th>\n <td translate>eo.help.about.producer.text</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n\n <h2 translate>eo.help.license.title</h2>\n <p translate>eo.help.license.intro</p>\n <div class=\"showLic\" (click)=\"licenseShow = !licenseShow\">\n <span class=\"toggle\"><span translate>eo.help.license.title</span><span class=\"toggle-indicator\">{{licenseShow ? '-' : '+'}}</span></span></div>\n <div class=\"licenses\" *ngIf=\"licenseShow\">\n <div class=\"lib\" *ngFor=\"let lib of __libraries__; trackBy: trackByFn\">\n <div class=\"name\">{{lib.name}}</div>\n <div class=\"lic\" *ngIf=\"licenses[lib.license]\">\n <a href=\"{{licenses[lib.license].url}}\" target=\"_blank\" *ngIf=\"licenses[lib.license].url\">{{licenses[lib.license].label}}</a>\n <span *ngIf=\"!licenses[lib.license].url\">{{licenses[lib.license].label}}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n", styles: [":host{--about-header-height: 300px;position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center;overflow-y:auto}.eo-about-state{box-sizing:border-box;width:800px;display:flex;flex-flow:column}@media screen and (max-width: 832px){.eo-about-state{margin:0;min-width:inherit;width:100%}}.eo-about-state .about{box-shadow:0 2px 5px #0003;background:var(--panel-background);margin:var(--app-pane-padding)}.eo-about-state .about .header{position:relative;height:var(--about-header-height);background-size:cover}.eo-about-state .about .header:after{content:\"\";position:absolute;inset:0;background-color:rgba(var(--color-accent-rgb),.8)}.eo-about-state .about .header img{right:8%;bottom:18%;position:absolute;z-index:20;width:40%}.eo-about-state .about .body{padding:var(--app-pane-padding)}.eo-about-state .about .body .claim{padding:var(--app-pane-padding) 0}.eo-about-state .about .body h2{margin:1.5em 0 0;color:var(--text-color-caption);font-weight:var(--font-weight-light);font-size:var(--font-title)}.eo-about-state .about .body .wrap{display:flex;flex-flow:row wrap}.eo-about-state .about .body ul.links{color:var(--color-accent);list-style-type:none}.eo-about-state .about .body ul.links li{padding:2px 0}.eo-about-state .about .body ul.links a{text-decoration:none;color:var(--color-accent)}.eo-about-state .about .body ul.links a:hover{text-decoration:underline}.eo-about-state .about .body table{margin:var(--app-pane-padding);padding:calc(var(--app-pane-padding) / 4) 0;background-color:rgba(var(--color-black-rgb),.06);border-radius:2px}.eo-about-state .about .body table th{display:flex;flex-flow:column;align-items:flex-start;justify-content:center;font-size:var(--font-hint);color:var(--text-color-caption)}.eo-about-state .about .body table th,.eo-about-state .about .body table td{padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 2)}.eo-about-state .about .body .showLic span.toggle{color:var(--color-accent);display:inline-block;padding:0 4px 2px;border-radius:4px;border:1px solid var(--color-accent);cursor:pointer}.eo-about-state .about .body .showLic .toggle-indicator{padding:0 4px}.eo-about-state .about .body .licenses{padding-top:var(--app-pane-padding)}.eo-about-state .about .body .licenses .lib{display:flex;flex-flow:row nowrap;padding:calc(var(--app-pane-padding) / 4);border-top:1px solid var(--list-item-border-color)}.eo-about-state .about .body .licenses .lib .name{flex:1 1 auto}.eo-about-state .about .body .licenses .lib .lic{flex:0 0 auto;font-size:var(--font-hint);color:var(--text-color-caption)}.eo-about-state .about .body .licenses .lib .lic a{text-decoration:none;border-radius:2px;border:1px solid var(--color-accent);color:var(--color-accent);display:inline-block;padding:2px 4px;background-color:rgba(var(--color-black-rgb),.06);line-height:1em}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
23578
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: AboutStateComponent, selector: "eo-about-state", ngImport: i0, template: "<div class=\"eo-about-state\">\n\n <div class=\"about\">\n <div class=\"header\" [style.background-image]=\"backgroundImage\">\n <img [src]=\"headerLogo\"/>\n </div>\n\n <div class=\"body\">\n <div class=\"claim\" translate>eo.help.about.claim</div>\n\n <div class=\"wrap\">\n <table>\n <tbody>\n <tr>\n <th translate>eo.help.about.component.label</th>\n <td>{{ctrl.componentName}}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.component.version.label</th>\n <td>{{ctrl.componentVersion}}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.product.label</th>\n <td>{{ ctrl.productName }}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.product.version.label</th>\n <td>{{ ctrl.productVersion }}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.producer.label</th>\n <td translate>eo.help.about.producer.text</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n\n <h2 translate>eo.help.license.title</h2>\n <p translate>eo.help.license.intro</p>\n <div class=\"showLic\" (click)=\"licenseShow = !licenseShow\">\n <span class=\"toggle\"><span translate>eo.help.license.title</span><span class=\"toggle-indicator\">{{licenseShow ? '-' : '+'}}</span></span></div>\n <div class=\"licenses\" *ngIf=\"licenseShow\">\n <div class=\"lib\" *ngFor=\"let lib of __libraries__; trackBy: trackByFn\">\n <div class=\"name\">{{lib.name}}</div>\n <div class=\"lic\">\n <a href=\"{{licenses[lib.license].url}}\" target=\"_blank\" *ngIf=\"licenses[lib.license].url\">{{licenses[lib.license].label}}</a>\n <span *ngIf=\"!licenses[lib.license].url\">{{licenses[lib.license].label}}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n", styles: [":host{--about-header-height: 300px;position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center;overflow-y:auto}.eo-about-state{box-sizing:border-box;width:800px;display:flex;flex-flow:column}@media screen and (max-width: 832px){.eo-about-state{margin:0;min-width:inherit;width:100%}}.eo-about-state .about{box-shadow:0 2px 5px #0003;background:var(--panel-background);margin:var(--app-pane-padding)}.eo-about-state .about .header{position:relative;height:var(--about-header-height);background-size:cover}.eo-about-state .about .header:after{content:\"\";position:absolute;inset:0;background-color:rgba(var(--color-accent-rgb),.8)}.eo-about-state .about .header img{right:8%;bottom:18%;position:absolute;z-index:20;width:40%}.eo-about-state .about .body{padding:var(--app-pane-padding)}.eo-about-state .about .body .claim{padding:var(--app-pane-padding) 0}.eo-about-state .about .body h2{margin:1.5em 0 0;color:var(--text-color-caption);font-weight:var(--font-weight-light);font-size:var(--font-title)}.eo-about-state .about .body .wrap{display:flex;flex-flow:row wrap}.eo-about-state .about .body ul.links{color:var(--color-accent);list-style-type:none}.eo-about-state .about .body ul.links li{padding:2px 0}.eo-about-state .about .body ul.links a{text-decoration:none;color:var(--color-accent)}.eo-about-state .about .body ul.links a:hover{text-decoration:underline}.eo-about-state .about .body table{margin:var(--app-pane-padding);padding:calc(var(--app-pane-padding) / 4) 0;background-color:rgba(var(--color-black-rgb),.06);border-radius:2px}.eo-about-state .about .body table th{display:flex;flex-flow:column;align-items:flex-start;justify-content:center;font-size:var(--font-hint);color:var(--text-color-caption)}.eo-about-state .about .body table th,.eo-about-state .about .body table td{padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 2)}.eo-about-state .about .body .showLic span.toggle{color:var(--color-accent);display:inline-block;padding:0 4px 2px;border-radius:4px;border:1px solid var(--color-accent);cursor:pointer}.eo-about-state .about .body .showLic .toggle-indicator{padding:0 4px}.eo-about-state .about .body .licenses{padding-top:var(--app-pane-padding)}.eo-about-state .about .body .licenses .lib{display:flex;flex-flow:row nowrap;padding:calc(var(--app-pane-padding) / 4);border-top:1px solid var(--list-item-border-color)}.eo-about-state .about .body .licenses .lib .name{flex:1 1 auto}.eo-about-state .about .body .licenses .lib .lic{flex:0 0 auto;font-size:var(--font-hint);color:var(--text-color-caption)}.eo-about-state .about .body .licenses .lib .lic a{text-decoration:none;border-radius:2px;border:1px solid var(--color-accent);color:var(--color-accent);display:inline-block;padding:2px 4px;background-color:rgba(var(--color-black-rgb),.06);line-height:1em}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
23533
23579
  }
23534
23580
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AboutStateComponent, decorators: [{
23535
23581
  type: Component,
23536
- args: [{ selector: 'eo-about-state', template: "<div class=\"eo-about-state\">\n\n <div class=\"about\">\n <div class=\"header\" [style.background-image]=\"backgroundImage\">\n <img [src]=\"headerLogo\"/>\n </div>\n\n <div class=\"body\">\n <div class=\"claim\" translate>eo.help.about.claim</div>\n\n <div class=\"wrap\">\n <table>\n <tbody>\n <tr>\n <th translate>eo.help.about.component.label</th>\n <td>{{ctrl.componentName}}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.component.version.label</th>\n <td>{{ctrl.componentVersion}}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.product.label</th>\n <td>{{ ctrl.productName }}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.product.version.label</th>\n <td>{{ ctrl.productVersion }}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.producer.label</th>\n <td translate>eo.help.about.producer.text</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n\n <h2 translate>eo.help.license.title</h2>\n <p translate>eo.help.license.intro</p>\n <div class=\"showLic\" (click)=\"licenseShow = !licenseShow\">\n <span class=\"toggle\"><span translate>eo.help.license.title</span><span class=\"toggle-indicator\">{{licenseShow ? '-' : '+'}}</span></span></div>\n <div class=\"licenses\" *ngIf=\"licenseShow\">\n <div class=\"lib\" *ngFor=\"let lib of __libraries__; trackBy: trackByFn\">\n <div class=\"name\">{{lib.name}}</div>\n <div class=\"lic\" *ngIf=\"licenses[lib.license]\">\n <a href=\"{{licenses[lib.license].url}}\" target=\"_blank\" *ngIf=\"licenses[lib.license].url\">{{licenses[lib.license].label}}</a>\n <span *ngIf=\"!licenses[lib.license].url\">{{licenses[lib.license].label}}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n", styles: [":host{--about-header-height: 300px;position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center;overflow-y:auto}.eo-about-state{box-sizing:border-box;width:800px;display:flex;flex-flow:column}@media screen and (max-width: 832px){.eo-about-state{margin:0;min-width:inherit;width:100%}}.eo-about-state .about{box-shadow:0 2px 5px #0003;background:var(--panel-background);margin:var(--app-pane-padding)}.eo-about-state .about .header{position:relative;height:var(--about-header-height);background-size:cover}.eo-about-state .about .header:after{content:\"\";position:absolute;inset:0;background-color:rgba(var(--color-accent-rgb),.8)}.eo-about-state .about .header img{right:8%;bottom:18%;position:absolute;z-index:20;width:40%}.eo-about-state .about .body{padding:var(--app-pane-padding)}.eo-about-state .about .body .claim{padding:var(--app-pane-padding) 0}.eo-about-state .about .body h2{margin:1.5em 0 0;color:var(--text-color-caption);font-weight:var(--font-weight-light);font-size:var(--font-title)}.eo-about-state .about .body .wrap{display:flex;flex-flow:row wrap}.eo-about-state .about .body ul.links{color:var(--color-accent);list-style-type:none}.eo-about-state .about .body ul.links li{padding:2px 0}.eo-about-state .about .body ul.links a{text-decoration:none;color:var(--color-accent)}.eo-about-state .about .body ul.links a:hover{text-decoration:underline}.eo-about-state .about .body table{margin:var(--app-pane-padding);padding:calc(var(--app-pane-padding) / 4) 0;background-color:rgba(var(--color-black-rgb),.06);border-radius:2px}.eo-about-state .about .body table th{display:flex;flex-flow:column;align-items:flex-start;justify-content:center;font-size:var(--font-hint);color:var(--text-color-caption)}.eo-about-state .about .body table th,.eo-about-state .about .body table td{padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 2)}.eo-about-state .about .body .showLic span.toggle{color:var(--color-accent);display:inline-block;padding:0 4px 2px;border-radius:4px;border:1px solid var(--color-accent);cursor:pointer}.eo-about-state .about .body .showLic .toggle-indicator{padding:0 4px}.eo-about-state .about .body .licenses{padding-top:var(--app-pane-padding)}.eo-about-state .about .body .licenses .lib{display:flex;flex-flow:row nowrap;padding:calc(var(--app-pane-padding) / 4);border-top:1px solid var(--list-item-border-color)}.eo-about-state .about .body .licenses .lib .name{flex:1 1 auto}.eo-about-state .about .body .licenses .lib .lic{flex:0 0 auto;font-size:var(--font-hint);color:var(--text-color-caption)}.eo-about-state .about .body .licenses .lib .lic a{text-decoration:none;border-radius:2px;border:1px solid var(--color-accent);color:var(--color-accent);display:inline-block;padding:2px 4px;background-color:rgba(var(--color-black-rgb),.06);line-height:1em}\n"] }]
23582
+ args: [{ selector: 'eo-about-state', template: "<div class=\"eo-about-state\">\n\n <div class=\"about\">\n <div class=\"header\" [style.background-image]=\"backgroundImage\">\n <img [src]=\"headerLogo\"/>\n </div>\n\n <div class=\"body\">\n <div class=\"claim\" translate>eo.help.about.claim</div>\n\n <div class=\"wrap\">\n <table>\n <tbody>\n <tr>\n <th translate>eo.help.about.component.label</th>\n <td>{{ctrl.componentName}}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.component.version.label</th>\n <td>{{ctrl.componentVersion}}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.product.label</th>\n <td>{{ ctrl.productName }}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.product.version.label</th>\n <td>{{ ctrl.productVersion }}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.producer.label</th>\n <td translate>eo.help.about.producer.text</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n\n <h2 translate>eo.help.license.title</h2>\n <p translate>eo.help.license.intro</p>\n <div class=\"showLic\" (click)=\"licenseShow = !licenseShow\">\n <span class=\"toggle\"><span translate>eo.help.license.title</span><span class=\"toggle-indicator\">{{licenseShow ? '-' : '+'}}</span></span></div>\n <div class=\"licenses\" *ngIf=\"licenseShow\">\n <div class=\"lib\" *ngFor=\"let lib of __libraries__; trackBy: trackByFn\">\n <div class=\"name\">{{lib.name}}</div>\n <div class=\"lic\">\n <a href=\"{{licenses[lib.license].url}}\" target=\"_blank\" *ngIf=\"licenses[lib.license].url\">{{licenses[lib.license].label}}</a>\n <span *ngIf=\"!licenses[lib.license].url\">{{licenses[lib.license].label}}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n", styles: [":host{--about-header-height: 300px;position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center;overflow-y:auto}.eo-about-state{box-sizing:border-box;width:800px;display:flex;flex-flow:column}@media screen and (max-width: 832px){.eo-about-state{margin:0;min-width:inherit;width:100%}}.eo-about-state .about{box-shadow:0 2px 5px #0003;background:var(--panel-background);margin:var(--app-pane-padding)}.eo-about-state .about .header{position:relative;height:var(--about-header-height);background-size:cover}.eo-about-state .about .header:after{content:\"\";position:absolute;inset:0;background-color:rgba(var(--color-accent-rgb),.8)}.eo-about-state .about .header img{right:8%;bottom:18%;position:absolute;z-index:20;width:40%}.eo-about-state .about .body{padding:var(--app-pane-padding)}.eo-about-state .about .body .claim{padding:var(--app-pane-padding) 0}.eo-about-state .about .body h2{margin:1.5em 0 0;color:var(--text-color-caption);font-weight:var(--font-weight-light);font-size:var(--font-title)}.eo-about-state .about .body .wrap{display:flex;flex-flow:row wrap}.eo-about-state .about .body ul.links{color:var(--color-accent);list-style-type:none}.eo-about-state .about .body ul.links li{padding:2px 0}.eo-about-state .about .body ul.links a{text-decoration:none;color:var(--color-accent)}.eo-about-state .about .body ul.links a:hover{text-decoration:underline}.eo-about-state .about .body table{margin:var(--app-pane-padding);padding:calc(var(--app-pane-padding) / 4) 0;background-color:rgba(var(--color-black-rgb),.06);border-radius:2px}.eo-about-state .about .body table th{display:flex;flex-flow:column;align-items:flex-start;justify-content:center;font-size:var(--font-hint);color:var(--text-color-caption)}.eo-about-state .about .body table th,.eo-about-state .about .body table td{padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 2)}.eo-about-state .about .body .showLic span.toggle{color:var(--color-accent);display:inline-block;padding:0 4px 2px;border-radius:4px;border:1px solid var(--color-accent);cursor:pointer}.eo-about-state .about .body .showLic .toggle-indicator{padding:0 4px}.eo-about-state .about .body .licenses{padding-top:var(--app-pane-padding)}.eo-about-state .about .body .licenses .lib{display:flex;flex-flow:row nowrap;padding:calc(var(--app-pane-padding) / 4);border-top:1px solid var(--list-item-border-color)}.eo-about-state .about .body .licenses .lib .name{flex:1 1 auto}.eo-about-state .about .body .licenses .lib .lic{flex:0 0 auto;font-size:var(--font-hint);color:var(--text-color-caption)}.eo-about-state .about .body .licenses .lib .lic a{text-decoration:none;border-radius:2px;border:1px solid var(--color-accent);color:var(--color-accent);display:inline-block;padding:2px 4px;background-color:rgba(var(--color-black-rgb),.06);line-height:1em}\n"] }]
23537
23583
  }], ctorParameters: () => [{ type: i1.BackendService }, { type: i1.UserService }, { type: i1.Config }] });
23538
23584
 
23539
23585
  let SearchWidgetComponent = class SearchWidgetComponent {
@@ -26618,7 +26664,7 @@ let ResultStateComponent = class ResultStateComponent {
26618
26664
  this.selection.clear();
26619
26665
  }
26620
26666
  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 }); }
26621
- 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" }] }); }
26667
+ 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" }] }); }
26622
26668
  };
26623
26669
  ResultStateComponent = __decorate([
26624
26670
  UntilDestroy()
@@ -26736,7 +26782,7 @@ let FavoriteStateComponent = class FavoriteStateComponent {
26736
26782
  this.selection.clear();
26737
26783
  }
26738
26784
  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 }); }
26739
- 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" }] }); }
26785
+ 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" }] }); }
26740
26786
  };
26741
26787
  FavoriteStateComponent = __decorate([
26742
26788
  UntilDestroy()
@@ -27227,7 +27273,7 @@ class ProcessStateComponent {
27227
27273
  return this.pendingChanges.hasPendingTask();
27228
27274
  }
27229
27275
  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 }); }
27230
- 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" }] }); }
27276
+ 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" }] }); }
27231
27277
  }
27232
27278
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ProcessStateComponent, decorators: [{
27233
27279
  type: Component,
@@ -27426,7 +27472,7 @@ let NotificationsStateComponent = class NotificationsStateComponent {
27426
27472
  this.selection.clear();
27427
27473
  }
27428
27474
  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 }); }
27429
- 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" }] }); }
27475
+ 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" }] }); }
27430
27476
  };
27431
27477
  NotificationsStateComponent = __decorate([
27432
27478
  UntilDestroy()
@@ -27542,7 +27588,7 @@ let VersionStateComponent = class VersionStateComponent {
27542
27588
  `;
27543
27589
  }
27544
27590
  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 }); }
27545
- 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" }] }); }
27591
+ 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" }] }); }
27546
27592
  };
27547
27593
  VersionStateComponent = __decorate([
27548
27594
  UntilDestroy()
@@ -27798,14 +27844,7 @@ let InboxStateComponent = class InboxStateComponent {
27798
27844
  this.getStorageCache();
27799
27845
  });
27800
27846
  this.filterForm.valueChanges.pipe(untilDestroyed(this)).subscribe((e) => {
27801
- if (e.modelFCN !== null && e.modelFCN?.modelFCN !== null) {
27802
- this.storageService.setItem(this.filterCacheKey, this.filterForm.get('modelFCN').value);
27803
- this.onPageChanged();
27804
- }
27805
- else if (e.modelFCN === null) {
27806
- this.updateGrid(this.gridData);
27807
- this.storageService.setItem(this.filterCacheKey, null);
27808
- }
27847
+ this.setSelectedModel(e);
27809
27848
  });
27810
27849
  this.inboxService.inboxState$
27811
27850
  .pipe(untilDestroyed(this))
@@ -27816,6 +27855,16 @@ let InboxStateComponent = class InboxStateComponent {
27816
27855
  }
27817
27856
  });
27818
27857
  }
27858
+ setSelectedModel(e) {
27859
+ if (e.modelFCN !== null && e.modelFCN?.modelFCN !== null) {
27860
+ this.storageService.setItem(this.filterCacheKey, this.filterForm.get('modelFCN').value);
27861
+ this.onPageChanged();
27862
+ }
27863
+ else if (e.modelFCN === null) {
27864
+ this.updateGrid(this.gridData);
27865
+ this.storageService.setItem(this.filterCacheKey, null);
27866
+ }
27867
+ }
27819
27868
  getStorageCache() {
27820
27869
  this.storageFilterValue = this.storageService.getItem(this.filterCacheKey);
27821
27870
  setTimeout(() => {
@@ -27905,6 +27954,11 @@ let InboxStateComponent = class InboxStateComponent {
27905
27954
  this.inboxSelection.disable(false);
27906
27955
  this.inboxService.getItems().subscribe();
27907
27956
  this.inboxService.refreshInboxState();
27957
+ setTimeout(() => {
27958
+ if (this.filterForm.get('modelFCN').value) {
27959
+ this.setSelectedModel(this.filterForm.get('modelFCN').value);
27960
+ }
27961
+ }, 200);
27908
27962
  }
27909
27963
  itemFilterFields(node, item) {
27910
27964
  const value = node.data[InboxTypesFilter[item]];
@@ -28063,7 +28117,7 @@ let InboxStateComponent = class InboxStateComponent {
28063
28117
  this.actionService.showActions([], 'COMPONENT_SPECIFIC_ACTIONS');
28064
28118
  }
28065
28119
  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 }); }
28066
- 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" }] }); }
28120
+ 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" }] }); }
28067
28121
  };
28068
28122
  InboxStateComponent = __decorate([
28069
28123
  UntilDestroy()
@@ -28545,7 +28599,7 @@ let ObjectStateComponent = class ObjectStateComponent {
28545
28599
  this.selection.clear();
28546
28600
  }
28547
28601
  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 }); }
28548
- 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] }); }
28602
+ 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] }); }
28549
28603
  };
28550
28604
  ObjectStateComponent = __decorate([
28551
28605
  UntilDestroy()