@eo-sdk/client 11.12.0-rc.1 → 11.12.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.
@@ -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, StoredQueriesService, SortOption, 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, SortOption, StoredQueriesService, SearchResult } from '@eo-sdk/core';
11
11
  import * as i3 from '@ngx-translate/core';
12
12
  import * as i2$1 from '@angular/router';
13
13
  import { NavigationStart, Router, RouterModule, NavigationEnd } from '@angular/router';
@@ -9384,7 +9384,7 @@ let FormElementTableComponent = class FormElementTableComponent {
9384
9384
  this.overlayGrid.api.ensureNodeVisible(rowNode);
9385
9385
  }
9386
9386
  onCellClicked($event) {
9387
- if ($event.colDef.cellClass === 'router-link-cell' && $event.rowIndex !== null && !this.pendingChanges.check()) {
9387
+ if ($event.colDef.cellClass === 'router-link-cell' && $event.rowIndex !== null) {
9388
9388
  if (!$event.node.group && $event.data) {
9389
9389
  this.gridApi.openRouterLink($event.event, 'ag-row');
9390
9390
  }
@@ -19429,6 +19429,96 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
19429
19429
  args: ['attr.data-type']
19430
19430
  }] } });
19431
19431
 
19432
+ let FavoriteIconComponent = class FavoriteIconComponent {
19433
+ set item(item) {
19434
+ this._item = item;
19435
+ this.tooltip = this.translate.instant('eo.favorite.icon.tooltip.' + (item.isFavorite ? 'remove' : 'add'));
19436
+ }
19437
+ get item() {
19438
+ return this._item;
19439
+ }
19440
+ constructor(userService, eventService, toasty, translate) {
19441
+ this.userService = userService;
19442
+ this.eventService = eventService;
19443
+ this.toasty = toasty;
19444
+ this.translate = translate;
19445
+ this.display = false;
19446
+ this.value = '';
19447
+ this.eventService
19448
+ .on(EnaioEvent.DMS_OBJECT_FAVORITE_ON).pipe(untilDestroyed(this))
19449
+ .subscribe((event) => event.data === this.item.id && this.onSave());
19450
+ this.eventService
19451
+ .on(EnaioEvent.DMS_OBJECT_FAVORITE_OFF).pipe(untilDestroyed(this))
19452
+ .subscribe((event) => event.data === this.item.id && this.onRemove());
19453
+ }
19454
+ toggle(event, hide) {
19455
+ this.display = hide || this.item.isFavorite ? false : !this.display;
19456
+ if (!hide && this.item.isFavorite) {
19457
+ this.remove();
19458
+ }
19459
+ else {
19460
+ this.value = this.generateSuggestedName(this.item);
19461
+ }
19462
+ if (hide && this.value.length > 0) {
19463
+ this.value = '';
19464
+ }
19465
+ if (this.display) {
19466
+ setTimeout(() => {
19467
+ this.favNameInputElement.nativeElement.select();
19468
+ });
19469
+ }
19470
+ event.preventDefault();
19471
+ event.stopPropagation();
19472
+ }
19473
+ generateSuggestedName(item) {
19474
+ const pre = (!item.isContextFolder && item.contextFolder) ? item.contextFolder.title + ' > ' : '';
19475
+ const title = pre + item.title;
19476
+ return title; //.substring(0, 250);
19477
+ }
19478
+ onError(error) {
19479
+ let { key, callerinput } = error.error;
19480
+ callerinput = callerinput.match(/\d+/)[0];
19481
+ if (key === EnaioErrorKeys.FAVORITE_TITLE_TOO_LONG) {
19482
+ this.toasty
19483
+ .error(this.translate.instant('eo.favorite.dialog.input.error.title'), this.translate.instant('eo.favorite.dialog.input.error.message', { val1: callerinput }));
19484
+ }
19485
+ }
19486
+ save() {
19487
+ const title = this.value || this.generateSuggestedName(this.item.title);
19488
+ this.userService
19489
+ .createFavorite(this.item.id, this.item.typeName, title)
19490
+ .subscribe(() => this.onSave(), (error) => this.onError(error));
19491
+ }
19492
+ remove() {
19493
+ this.userService
19494
+ .removeFavoritesForTarget(this.item.id)
19495
+ .subscribe(() => this.onRemove());
19496
+ }
19497
+ onRemove() {
19498
+ this.item.isFavorite = false;
19499
+ this.tooltip = this.translate.instant('eo.favorite.icon.tooltip.add');
19500
+ }
19501
+ onSave() {
19502
+ this.item.isFavorite = true;
19503
+ this.display = false;
19504
+ this.tooltip = this.translate.instant('eo.favorite.icon.tooltip.remove');
19505
+ }
19506
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FavoriteIconComponent, deps: [{ token: i1.UserService }, { token: i1.EventService }, { token: i1.NotificationsService }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
19507
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: FavoriteIconComponent, selector: "eo-favorite-icon", inputs: { item: "item" }, viewQueries: [{ propertyName: "favNameInputElement", first: true, predicate: ["favName"], descendants: true }], ngImport: i0, template: "<eo-icon class=\"button favorite\"\n [ngClass]=\"{active: item.isFavorite}\"\n [iconTitle]=\"tooltip\"\n [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n (click)=\"toggle($event)\">\n</eo-icon>\n\n<eo-dialog\n [title]=\"('eo.favorite.icon.dialog.title' | translate)\"\n [(visible)]=\"display\"\n [minWidth]=\"400\"\n [styleClass]=\"'favorite-form__dialog'\">\n\n <form name=\"favoriteForm\" (ngSubmit)=\"save()\">\n <eo-form-input [label]=\" 'eo.favorite.icon.dialog.input.label' | translate\">\n <input [(ngModel)]=\"value\" maxlength=\"250\" [ngModelOptions]=\"{standalone: true}\" #favName />\n </eo-form-input>\n <div class=\"action-buttons favorite-form__dialog--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"toggle($event, true)\" translate>eo.cta.button.cancel</button>\n <button type=\"submit\" [disabled]=\"!value\" class=\"button primary\" translate>eo.favorite.icon.dialog.save</button>\n </div>\n </form>\n</eo-dialog>\n", styles: [":host eo-icon.active{color:var(--color-favorite)}::ng-deep .favorite-form__dialog{padding:8px;min-height:unset!important}::ng-deep .favorite-form__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 .favorite-form__dialog .eo-dialog-content{overflow:hidden}::ng-deep .favorite-form__dialog .eo-dialog-content input{border:0;width:100%}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "directive", type: i3.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: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
19508
+ };
19509
+ FavoriteIconComponent = __decorate([
19510
+ UntilDestroy()
19511
+ ], FavoriteIconComponent);
19512
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FavoriteIconComponent, decorators: [{
19513
+ type: Component,
19514
+ args: [{ selector: 'eo-favorite-icon', template: "<eo-icon class=\"button favorite\"\n [ngClass]=\"{active: item.isFavorite}\"\n [iconTitle]=\"tooltip\"\n [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n (click)=\"toggle($event)\">\n</eo-icon>\n\n<eo-dialog\n [title]=\"('eo.favorite.icon.dialog.title' | translate)\"\n [(visible)]=\"display\"\n [minWidth]=\"400\"\n [styleClass]=\"'favorite-form__dialog'\">\n\n <form name=\"favoriteForm\" (ngSubmit)=\"save()\">\n <eo-form-input [label]=\" 'eo.favorite.icon.dialog.input.label' | translate\">\n <input [(ngModel)]=\"value\" maxlength=\"250\" [ngModelOptions]=\"{standalone: true}\" #favName />\n </eo-form-input>\n <div class=\"action-buttons favorite-form__dialog--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"toggle($event, true)\" translate>eo.cta.button.cancel</button>\n <button type=\"submit\" [disabled]=\"!value\" class=\"button primary\" translate>eo.favorite.icon.dialog.save</button>\n </div>\n </form>\n</eo-dialog>\n", styles: [":host eo-icon.active{color:var(--color-favorite)}::ng-deep .favorite-form__dialog{padding:8px;min-height:unset!important}::ng-deep .favorite-form__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 .favorite-form__dialog .eo-dialog-content{overflow:hidden}::ng-deep .favorite-form__dialog .eo-dialog-content input{border:0;width:100%}\n"] }]
19515
+ }], ctorParameters: () => [{ type: i1.UserService }, { type: i1.EventService }, { type: i1.NotificationsService }, { type: i1.TranslateService }], propDecorators: { item: [{
19516
+ type: Input
19517
+ }], favNameInputElement: [{
19518
+ type: ViewChild,
19519
+ args: ['favName']
19520
+ }] } });
19521
+
19432
19522
  class HistoryFilterComponent {
19433
19523
  constructor() {
19434
19524
  this.visibleFilter = { select: true, input: true };
@@ -19684,96 +19774,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
19684
19774
  args: ['dmsObject']
19685
19775
  }] } });
19686
19776
 
19687
- let FavoriteIconComponent = class FavoriteIconComponent {
19688
- set item(item) {
19689
- this._item = item;
19690
- this.tooltip = this.translate.instant('eo.favorite.icon.tooltip.' + (item.isFavorite ? 'remove' : 'add'));
19691
- }
19692
- get item() {
19693
- return this._item;
19694
- }
19695
- constructor(userService, eventService, toasty, translate) {
19696
- this.userService = userService;
19697
- this.eventService = eventService;
19698
- this.toasty = toasty;
19699
- this.translate = translate;
19700
- this.display = false;
19701
- this.value = '';
19702
- this.eventService
19703
- .on(EnaioEvent.DMS_OBJECT_FAVORITE_ON).pipe(untilDestroyed(this))
19704
- .subscribe((event) => event.data === this.item.id && this.onSave());
19705
- this.eventService
19706
- .on(EnaioEvent.DMS_OBJECT_FAVORITE_OFF).pipe(untilDestroyed(this))
19707
- .subscribe((event) => event.data === this.item.id && this.onRemove());
19708
- }
19709
- toggle(event, hide) {
19710
- this.display = hide || this.item.isFavorite ? false : !this.display;
19711
- if (!hide && this.item.isFavorite) {
19712
- this.remove();
19713
- }
19714
- else {
19715
- this.value = this.generateSuggestedName(this.item);
19716
- }
19717
- if (hide && this.value.length > 0) {
19718
- this.value = '';
19719
- }
19720
- if (this.display) {
19721
- setTimeout(() => {
19722
- this.favNameInputElement.nativeElement.select();
19723
- });
19724
- }
19725
- event.preventDefault();
19726
- event.stopPropagation();
19727
- }
19728
- generateSuggestedName(item) {
19729
- const pre = (!item.isContextFolder && item.contextFolder) ? item.contextFolder.title + ' > ' : '';
19730
- const title = pre + item.title;
19731
- return title; //.substring(0, 250);
19732
- }
19733
- onError(error) {
19734
- let { key, callerinput } = error.error;
19735
- callerinput = callerinput.match(/\d+/)[0];
19736
- if (key === EnaioErrorKeys.FAVORITE_TITLE_TOO_LONG) {
19737
- this.toasty
19738
- .error(this.translate.instant('eo.favorite.dialog.input.error.title'), this.translate.instant('eo.favorite.dialog.input.error.message', { val1: callerinput }));
19739
- }
19740
- }
19741
- save() {
19742
- const title = this.value || this.generateSuggestedName(this.item.title);
19743
- this.userService
19744
- .createFavorite(this.item.id, this.item.typeName, title)
19745
- .subscribe(() => this.onSave(), (error) => this.onError(error));
19746
- }
19747
- remove() {
19748
- this.userService
19749
- .removeFavoritesForTarget(this.item.id)
19750
- .subscribe(() => this.onRemove());
19751
- }
19752
- onRemove() {
19753
- this.item.isFavorite = false;
19754
- this.tooltip = this.translate.instant('eo.favorite.icon.tooltip.add');
19755
- }
19756
- onSave() {
19757
- this.item.isFavorite = true;
19758
- this.display = false;
19759
- this.tooltip = this.translate.instant('eo.favorite.icon.tooltip.remove');
19760
- }
19761
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FavoriteIconComponent, deps: [{ token: i1.UserService }, { token: i1.EventService }, { token: i1.NotificationsService }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
19762
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: FavoriteIconComponent, selector: "eo-favorite-icon", inputs: { item: "item" }, viewQueries: [{ propertyName: "favNameInputElement", first: true, predicate: ["favName"], descendants: true }], ngImport: i0, template: "<eo-icon class=\"button favorite\"\n [ngClass]=\"{active: item.isFavorite}\"\n [iconTitle]=\"tooltip\"\n [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n (click)=\"toggle($event)\">\n</eo-icon>\n\n<eo-dialog\n [title]=\"('eo.favorite.icon.dialog.title' | translate)\"\n [(visible)]=\"display\"\n [minWidth]=\"400\"\n [styleClass]=\"'favorite-form__dialog'\">\n\n <form name=\"favoriteForm\" (ngSubmit)=\"save()\">\n <eo-form-input [label]=\" 'eo.favorite.icon.dialog.input.label' | translate\">\n <input [(ngModel)]=\"value\" maxlength=\"250\" [ngModelOptions]=\"{standalone: true}\" #favName />\n </eo-form-input>\n <div class=\"action-buttons favorite-form__dialog--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"toggle($event, true)\" translate>eo.cta.button.cancel</button>\n <button type=\"submit\" [disabled]=\"!value\" class=\"button primary\" translate>eo.favorite.icon.dialog.save</button>\n </div>\n </form>\n</eo-dialog>\n", styles: [":host eo-icon.active{color:var(--color-favorite)}::ng-deep .favorite-form__dialog{padding:8px;min-height:unset!important}::ng-deep .favorite-form__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 .favorite-form__dialog .eo-dialog-content{overflow:hidden}::ng-deep .favorite-form__dialog .eo-dialog-content input{border:0;width:100%}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "component", type: FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "directive", type: i3.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: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
19763
- };
19764
- FavoriteIconComponent = __decorate([
19765
- UntilDestroy()
19766
- ], FavoriteIconComponent);
19767
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FavoriteIconComponent, decorators: [{
19768
- type: Component,
19769
- args: [{ selector: 'eo-favorite-icon', template: "<eo-icon class=\"button favorite\"\n [ngClass]=\"{active: item.isFavorite}\"\n [iconTitle]=\"tooltip\"\n [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n (click)=\"toggle($event)\">\n</eo-icon>\n\n<eo-dialog\n [title]=\"('eo.favorite.icon.dialog.title' | translate)\"\n [(visible)]=\"display\"\n [minWidth]=\"400\"\n [styleClass]=\"'favorite-form__dialog'\">\n\n <form name=\"favoriteForm\" (ngSubmit)=\"save()\">\n <eo-form-input [label]=\" 'eo.favorite.icon.dialog.input.label' | translate\">\n <input [(ngModel)]=\"value\" maxlength=\"250\" [ngModelOptions]=\"{standalone: true}\" #favName />\n </eo-form-input>\n <div class=\"action-buttons favorite-form__dialog--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"toggle($event, true)\" translate>eo.cta.button.cancel</button>\n <button type=\"submit\" [disabled]=\"!value\" class=\"button primary\" translate>eo.favorite.icon.dialog.save</button>\n </div>\n </form>\n</eo-dialog>\n", styles: [":host eo-icon.active{color:var(--color-favorite)}::ng-deep .favorite-form__dialog{padding:8px;min-height:unset!important}::ng-deep .favorite-form__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 .favorite-form__dialog .eo-dialog-content{overflow:hidden}::ng-deep .favorite-form__dialog .eo-dialog-content input{border:0;width:100%}\n"] }]
19770
- }], ctorParameters: () => [{ type: i1.UserService }, { type: i1.EventService }, { type: i1.NotificationsService }, { type: i1.TranslateService }], propDecorators: { item: [{
19771
- type: Input
19772
- }], favNameInputElement: [{
19773
- type: ViewChild,
19774
- args: ['favName']
19775
- }] } });
19776
-
19777
19777
  var LockSettings;
19778
19778
  (function (LockSettings) {
19779
19779
  LockSettings["always"] = "always";
@@ -19951,6 +19951,39 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
19951
19951
  isHidden: () => {
19952
19952
  return false;
19953
19953
  }
19954
+ },
19955
+ {
19956
+ name: this.translate.instant('eo.action.download.dms.object.content.label'),
19957
+ nameKey: 'eo.action.download.dms.object.content.label',
19958
+ shortcut: new Shortcut('H', false, false),
19959
+ onExecuteAction: () => {
19960
+ this.downloadOriginalContent();
19961
+ },
19962
+ isHidden: () => {
19963
+ return !this.enableCompare && this.item.content?.id ? false : true;
19964
+ }
19965
+ },
19966
+ {
19967
+ name: this.translate.instant('eo.favorite.icon.dialog.title'),
19968
+ nameKey: 'eo.favorite.icon.dialog.title',
19969
+ shortcut: new Shortcut('N', false, false),
19970
+ onExecuteAction: () => {
19971
+ this.favoriteIcon.toggle();
19972
+ },
19973
+ isHidden: () => {
19974
+ return false;
19975
+ }
19976
+ },
19977
+ {
19978
+ name: this.translate.instant('eo.list.refresh'),
19979
+ nameKey: 'eo.list.refresh',
19980
+ shortcut: new Shortcut('B', false, false),
19981
+ onExecuteAction: () => {
19982
+ this.refreshContent();
19983
+ },
19984
+ isHidden: () => {
19985
+ return false;
19986
+ }
19954
19987
  }
19955
19988
  ]
19956
19989
  };
@@ -20157,8 +20190,6 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
20157
20190
  const sTabs = secondary || _secondary;
20158
20191
  const p = pTabs.filter(t => this.tabs.includes(t));
20159
20192
  const s = sTabs.filter(t => this.tabs.includes(t));
20160
- // reset primary tabs order if no secondary tabs are available
20161
- !s.length && p.sort((a, b) => this.tabs.indexOf(a) - this.tabs.indexOf(b));
20162
20193
  this.splitTabConfig = {
20163
20194
  primary: { tabs: p, active: p.includes(cachedOrder?.primary?.active) ? cachedOrder?.primary?.active : p[0] || '' },
20164
20195
  secondary: { tabs: s, active: s.includes(cachedOrder?.secondary?.active) ? cachedOrder?.secondary?.active : s[0] || '' },
@@ -20208,7 +20239,7 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
20208
20239
  this.uploadRegistry.unregister(this.uploadTarget.id);
20209
20240
  }
20210
20241
  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 }); }
20211
- 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: "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: i3.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: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: LocaleDatePipe, name: "localeDate" }] }); }
20242
+ 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: i3.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: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: LocaleDatePipe, name: "localeDate" }] }); }
20212
20243
  };
20213
20244
  ObjectDetailsComponent = __decorate([
20214
20245
  UntilDestroy()
@@ -20222,6 +20253,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
20222
20253
  }], eoSplitTabs: [{
20223
20254
  type: ViewChild,
20224
20255
  args: [SplitTabsComponent]
20256
+ }], favoriteIcon: [{
20257
+ type: ViewChild,
20258
+ args: [FavoriteIconComponent]
20225
20259
  }], tabContainers: [{
20226
20260
  type: ViewChildren,
20227
20261
  args: [Tabs]
@@ -21783,223 +21817,14 @@ class GridFilter {
21783
21817
  }
21784
21818
  }
21785
21819
 
21786
- class StoredQueryComponent {
21787
- set query(storedQuery) {
21788
- if (storedQuery instanceof StoredQuery) {
21789
- this._storedQuery = storedQuery;
21790
- this._storedQuery.state.count = { value: 0 };
21791
- this.queryScope = this._storedQuery.scope;
21792
- this.createQueryForm();
21793
- this.aggregate();
21794
- }
21795
- }
21796
- get query() {
21797
- return this._storedQuery;
21798
- }
21799
- // set to true only the stored query form will be rendered, otherwise
21800
- // we'll get the complete control
21801
- set formOnly(b) {
21802
- this._formOnly = b;
21803
- }
21804
- constructor(searchService, elementRef, translate, systemService, storedQueriesService, formHelperService, appSearchService) {
21805
- this.searchService = searchService;
21806
- this.elementRef = elementRef;
21807
- this.translate = translate;
21808
- this.systemService = systemService;
21809
- this.storedQueriesService = storedQueriesService;
21810
- this.formHelperService = formHelperService;
21811
- this.appSearchService = appSearchService;
21812
- this.onQueryLoaded = new EventEmitter();
21813
- this.onQueryExecute = new EventEmitter();
21814
- this.isOpen = this.formOnly;
21815
- }
21816
- setQueryScope(scope) {
21817
- this._storedQuery.scope = scope;
21818
- this.queryScope = scope;
21819
- this.aggregate();
21820
- }
21821
- // generate the form for the dynamic parts of the stored query
21822
- createQueryForm() {
21823
- this.queryFormControls = [];
21824
- this.fulltextFormControl = null;
21825
- // parameters of a stored query contain the dynamic parts of the query, so
21826
- // these are the fields to be rendered
21827
- if (this._storedQuery.parameter && this._storedQuery.parameter.length > 0) {
21828
- const paramQNames = this._storedQuery.parameter.map(p => p.qname);
21829
- const fulltextParam = this._storedQuery.parameter.find(p => p.type === StoredQueriesService.FULLTEXT);
21830
- // fulltext param get a special handling
21831
- if (fulltextParam) {
21832
- this.fulltextFormControl = this.formHelperService.elementToFormControl(this.storedQueriesService.getFulltextFormElement(this.translate.instant("eo.storedquery.search.term"), this._storedQuery.term), "SEARCH");
21833
- }
21834
- this.getFormElements().subscribe(elements => {
21835
- if (elements.length) {
21836
- let paramElements = elements.filter(e => paramQNames.indexOf(e.qname) !== -1);
21837
- // now, create the actual form controls from the param elements
21838
- paramElements.forEach(paramElement => {
21839
- if (paramElement.type === 'TABLE') {
21840
- let filters = this._storedQuery.getTableFilters(paramElement.qname);
21841
- if (filters && filters.length) {
21842
- paramElement.value = this.searchService.tableFiltersToElementValue(filters, paramElement.elements);
21843
- }
21844
- else {
21845
- paramElement.value = [{}];
21846
- delete paramElement.isNotSetValue;
21847
- }
21848
- }
21849
- else {
21850
- // grab value for the control from corresponding query filters
21851
- let filter = this._storedQuery.getFilter(paramElement.qname);
21852
- // we may have params that are not part of the queries filters. This may be the
21853
- // case when we mark form elements as dynamic fields without providing a value
21854
- if (filter) {
21855
- // filter to have no value
21856
- if (filter.operator === SearchFilter.OPERATOR.EQUAL &&
21857
- filter.firstValue === null) {
21858
- paramElement.isNotSetValue = true;
21859
- }
21860
- else {
21861
- delete paramElement.isNotSetValue;
21862
- }
21863
- paramElement.value = this.searchService.filterToElementValue(this._storedQuery.getFilter(paramElement.qname), paramElement.type);
21864
- }
21865
- else {
21866
- paramElement.value = undefined;
21867
- }
21868
- }
21869
- // name property of stored query param has to be qname of form element
21870
- // because we may combine multiple forms (context form) and in this case name could be not unique
21871
- paramElement.name = paramElement.qname;
21872
- let wrapper = this.formHelperService.elementToFormControl(paramElement, "SEARCH");
21873
- if (wrapper) {
21874
- this.queryFormControls.push(wrapper);
21875
- }
21876
- });
21877
- }
21878
- let form = new ObjectFormGroup({});
21879
- // add fulltext when available
21880
- if (this.fulltextFormControl) {
21881
- form.addControl(this.fulltextFormControl._eoFormControlWrapper.controlName, this.fulltextFormControl);
21882
- }
21883
- this.queryFormControls.forEach(c => form.addControl(c._eoFormControlWrapper.controlName, c));
21884
- // only setup the form if we actually have controls applied to it
21885
- if (Object.keys(form.controls).length) {
21886
- this.queryForm = form;
21887
- this.queryForm.valueChanges.pipe(debounceTime(500)).subscribe(() => {
21888
- // update query based on the form values
21889
- //for (let key of Object.keys(formData)) {
21890
- for (let key of Object.keys(this.queryForm.controls)) {
21891
- //let value = formData[key];
21892
- let value = this.getValue(key);
21893
- if (key === StoredQueriesService.FULLTEXT) {
21894
- this._storedQuery.term = value || "";
21895
- }
21896
- else {
21897
- const wrapper = this.queryForm
21898
- .controls[key];
21899
- const formElementRef = wrapper.controls[wrapper._eoFormControlWrapper.controlName];
21900
- const filters = UtilitiesService.isEmpty(value) &&
21901
- !formElementRef._eoFormElement.isNotSetValue
21902
- ? []
21903
- : this.searchService.getSearchFilter(this._storedQuery.types, key, formElementRef._eoFormElement.isNotSetValue
21904
- ? null
21905
- : value);
21906
- if (formElementRef._eoFormElement.type === 'TABLE') {
21907
- formElementRef._eoFormElement.elements.forEach(el => {
21908
- this._storedQuery.removeFilter(el.qname);
21909
- });
21910
- }
21911
- filters.forEach(f => this._storedQuery.addFilter(f));
21912
- if (!filters.length) {
21913
- this._storedQuery.removeFilter(key);
21914
- }
21915
- }
21916
- }
21917
- // fetch aggregations every time the form data changes
21918
- this.aggregate();
21919
- });
21920
- // set focus to the first input, needs Timeout because form may not have been rendered
21921
- setTimeout(() => {
21922
- const el = this.elementRef.nativeElement.querySelector("input");
21923
- if (el) {
21924
- el.focus();
21925
- }
21926
- }, 100);
21927
- }
21928
- });
21929
- }
21930
- }
21931
- getFormElements() {
21932
- // for form fields we use the qname of the parameter to fetch the corresponding form element
21933
- // from object definition although they may be provided, because they may have
21934
- // changed since the query was persisted
21935
- if (this._storedQuery.types.length === 1) {
21936
- // creating params form only makes sense if we have one single target type ...
21937
- let formElements = [];
21938
- const elementFetchTasks = [];
21939
- elementFetchTasks.push(this.systemService.getFormElementsFromFormModel(this._storedQuery.types[0].qname, "SEARCH"));
21940
- // ... contextfoldertype may also be provided. They will be set up first to be
21941
- // on top of the generated form
21942
- if (this._storedQuery.contextFolderTypes.length === 1) {
21943
- elementFetchTasks.push(this.systemService.getFormElementsFromFormModel(this._storedQuery.contextFolderTypes[0].qname, "SEARCH", true));
21944
- // elements = this._storedQuery.contextFolderTypes[0].elements;
21945
- }
21946
- return forkJoin(elementFetchTasks).pipe(map((res) => {
21947
- formElements = res.length === 2 ? [...res[0], ...res[1]] : res[0];
21948
- return formElements.map(e => ({ ...e }));
21949
- }));
21950
- }
21951
- else {
21952
- return of([]);
21953
- }
21954
- }
21955
- getValue(qname) {
21956
- const control = this.queryForm.controls[qname];
21957
- return control.value && control.value[qname];
21958
- }
21959
- load() {
21960
- this.appSearchService.setQuery(this._storedQuery);
21961
- this.onQueryLoaded.emit();
21962
- }
21963
- execute() {
21964
- this.onQueryExecute.emit({
21965
- queryJson: this._storedQuery.getQueryJson()
21966
- });
21967
- }
21968
- aggregate() {
21969
- this.searchService
21970
- .getSearchState({ aggs: { type: {} }, ...this._storedQuery.getQueryJson() })
21971
- .subscribe((state) => {
21972
- this._storedQuery.state = state;
21973
- });
21974
- }
21975
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryComponent, deps: [{ token: i1.SearchService }, { token: i0.ElementRef }, { token: i1.TranslateService }, { token: i1.SystemService }, { token: i1.StoredQueriesService }, { token: ObjectFormHelperService }, { token: AppSearchService }], target: i0.ɵɵFactoryTarget.Component }); }
21976
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: StoredQueryComponent, selector: "eo-stored-query", inputs: { query: "query", formOnly: "formOnly" }, outputs: { onQueryLoaded: "onQueryLoaded", onQueryExecute: "onQueryExecute" }, host: { properties: { "class.open": "this.isOpen" } }, ngImport: i0, template: "<div *ngIf=\"query\" class=\"eo-stored-query\" [ngClass]=\"{hasForm: queryFormControls?.length > 0}\">\n\n <div class=\"title\" *ngIf=\"!_formOnly\">{{query.name}}</div>\n <div class=\"qform\">\n\n <div class=\"query-form\" [formGroup]=\"queryForm\" *ngIf=\"queryForm\">\n\n <div class=\"form-field fulltext\" *ngIf=\"fulltextFormControl\">\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\n <eo-form-element [element]=\"fulltextFormControl\" [situation]=\"'SEARCH'\"></eo-form-element>\n </div>\n\n <div class=\"form-field\" *ngFor=\"let element of queryFormControls\"\n [ngClass]=\"{sfe: element.controls[element._eoFormControlWrapper.controlName]._eoFormElement.selectedforenrichment}\">\n <eo-form-element [element]=\"element\" [situation]=\"'SEARCH'\"></eo-form-element>\n </div>\n </div>\n\n <div class=\"actions\">\n <div class=\"state\">\n <span class=\"count\">{{query.state?.totalCount | localeDecimal}}</span>\n <span translate>eo.storedquery.res.count.label</span>\n </div>\n <div class=\"buttons\" *ngIf=\"!_formOnly\">\n <button class=\"secondary\" (click)=\"load()\" translate>eo.storedquery.load</button>\n <button class=\"primary\" [disabled]=\"(queryForm && queryForm.invalid) || query.state?.isEmpty\"\n (click)=\"execute()\" translate>eo.storedquery.run</button>\n </div>\n </div>\n\n </div>\n</div>\n", styles: [":host .eo-stored-query{width:100%}:host .eo-stored-query .title{padding:calc(var(--app-pane-padding) / 8) 0;font-size:var(--font-title);color:var(--color-primary-2);margin-bottom:var(--app-pane-padding)}:host .eo-stored-query ::ng-deep eo-query-scope-select .query-scope .query-scope__button{border:0;color:var(--text-color-caption);background-color:#0000001a}:host .eo-stored-query .actions{display:flex;flex-flow:row wrap;align-items:center;margin:0 -2px}:host .eo-stored-query .actions .state{flex:1 1 auto;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}:host .eo-stored-query .actions .state .count{padding-right:5px}:host .eo-stored-query .actions .buttons{display:flex;flex-flow:row wrap;align-items:center;justify-content:flex-end}:host .eo-stored-query .actions .buttons button{flex:0 0 auto;margin:0 2px 2px}:host .eo-stored-query.hasForm .actions{padding-top:var(--app-pane-padding)}:host.open .eo-stored-query .title{font-weight:var(--font-weight-bold)}:host.open .eo-stored-query .title eo-icon{transform:rotate(180deg)}:host::ng-deep .form-field.sfe .fe-wrapper>label:before{content:\"*\";display:inline-block;padding:0 2px;margin:4px;border-radius:2px;background-color:var(--color-primary-3);color:var(--color-white)!important}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormElementComponent, selector: "eo-form-element", inputs: ["situation", "skipToggle", "element"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: QueryScopeSelectComponent, selector: "eo-query-scope-select", inputs: ["selection"], outputs: ["select"] }, { 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: "pipe", type: LocaleDecimalPipe, name: "localeDecimal" }] }); }
21977
- }
21978
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryComponent, decorators: [{
21979
- type: Component,
21980
- args: [{ selector: "eo-stored-query", template: "<div *ngIf=\"query\" class=\"eo-stored-query\" [ngClass]=\"{hasForm: queryFormControls?.length > 0}\">\n\n <div class=\"title\" *ngIf=\"!_formOnly\">{{query.name}}</div>\n <div class=\"qform\">\n\n <div class=\"query-form\" [formGroup]=\"queryForm\" *ngIf=\"queryForm\">\n\n <div class=\"form-field fulltext\" *ngIf=\"fulltextFormControl\">\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\n <eo-form-element [element]=\"fulltextFormControl\" [situation]=\"'SEARCH'\"></eo-form-element>\n </div>\n\n <div class=\"form-field\" *ngFor=\"let element of queryFormControls\"\n [ngClass]=\"{sfe: element.controls[element._eoFormControlWrapper.controlName]._eoFormElement.selectedforenrichment}\">\n <eo-form-element [element]=\"element\" [situation]=\"'SEARCH'\"></eo-form-element>\n </div>\n </div>\n\n <div class=\"actions\">\n <div class=\"state\">\n <span class=\"count\">{{query.state?.totalCount | localeDecimal}}</span>\n <span translate>eo.storedquery.res.count.label</span>\n </div>\n <div class=\"buttons\" *ngIf=\"!_formOnly\">\n <button class=\"secondary\" (click)=\"load()\" translate>eo.storedquery.load</button>\n <button class=\"primary\" [disabled]=\"(queryForm && queryForm.invalid) || query.state?.isEmpty\"\n (click)=\"execute()\" translate>eo.storedquery.run</button>\n </div>\n </div>\n\n </div>\n</div>\n", styles: [":host .eo-stored-query{width:100%}:host .eo-stored-query .title{padding:calc(var(--app-pane-padding) / 8) 0;font-size:var(--font-title);color:var(--color-primary-2);margin-bottom:var(--app-pane-padding)}:host .eo-stored-query ::ng-deep eo-query-scope-select .query-scope .query-scope__button{border:0;color:var(--text-color-caption);background-color:#0000001a}:host .eo-stored-query .actions{display:flex;flex-flow:row wrap;align-items:center;margin:0 -2px}:host .eo-stored-query .actions .state{flex:1 1 auto;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}:host .eo-stored-query .actions .state .count{padding-right:5px}:host .eo-stored-query .actions .buttons{display:flex;flex-flow:row wrap;align-items:center;justify-content:flex-end}:host .eo-stored-query .actions .buttons button{flex:0 0 auto;margin:0 2px 2px}:host .eo-stored-query.hasForm .actions{padding-top:var(--app-pane-padding)}:host.open .eo-stored-query .title{font-weight:var(--font-weight-bold)}:host.open .eo-stored-query .title eo-icon{transform:rotate(180deg)}:host::ng-deep .form-field.sfe .fe-wrapper>label:before{content:\"*\";display:inline-block;padding:0 2px;margin:4px;border-radius:2px;background-color:var(--color-primary-3);color:var(--color-white)!important}\n"] }]
21981
- }], ctorParameters: () => [{ type: i1.SearchService }, { type: i0.ElementRef }, { type: i1.TranslateService }, { type: i1.SystemService }, { type: i1.StoredQueriesService }, { type: ObjectFormHelperService }, { type: AppSearchService }], propDecorators: { query: [{
21982
- type: Input,
21983
- args: ["query"]
21984
- }], formOnly: [{
21985
- type: Input
21986
- }], onQueryLoaded: [{
21987
- type: Output
21988
- }], onQueryExecute: [{
21989
- type: Output
21990
- }], isOpen: [{
21991
- type: HostBinding,
21992
- args: ["class.open"]
21993
- }] } });
21994
-
21995
- var ResultListComponent_1;
21996
- let ResultListComponent = class ResultListComponent {
21997
- static { ResultListComponent_1 = this; }
21998
- static { this.COLUMNS_DEFINITION = 'eo.framework.cache.columns.definition'; }
21999
- set query(query) {
22000
- this.storedQuery = undefined;
22001
- if (!query) {
22002
- this.invalidQuery();
21820
+ var ResultListComponent_1;
21821
+ let ResultListComponent = class ResultListComponent {
21822
+ static { ResultListComponent_1 = this; }
21823
+ static { this.COLUMNS_DEFINITION = 'eo.framework.cache.columns.definition'; }
21824
+ set query(query) {
21825
+ this.storedQuery = undefined;
21826
+ if (!query) {
21827
+ this.invalidQuery();
22003
21828
  }
22004
21829
  else {
22005
21830
  if (query.name) {
@@ -22094,6 +21919,56 @@ let ResultListComponent = class ResultListComponent {
22094
21919
  this.onRefresh = new EventEmitter();
22095
21920
  this.onResult = new EventEmitter();
22096
21921
  this.onQueryInvalid = new EventEmitter();
21922
+ // shortcut actions
21923
+ this.shortcuts = {
21924
+ id: 'eo.workspace.widget.hitlist.label',
21925
+ label: this.translate.instant('eo.workspace.widget.hitlist.label'),
21926
+ labelKey: 'eo.workspace.widget.hitlist.label',
21927
+ actions: [{
21928
+ name: this.translate.instant('eo.column.config.title'),
21929
+ nameKey: 'eo.column.config.title',
21930
+ shortcut: new Shortcut('P ', false, false),
21931
+ onExecuteAction: () => {
21932
+ this.visibleConfig = !this.visibleConfig;
21933
+ },
21934
+ isHidden: () => {
21935
+ return false;
21936
+ }
21937
+ },
21938
+ {
21939
+ name: this.translate.instant('eo.resultlist.export.csv'),
21940
+ nameKey: 'eo.resultlist.export.csv',
21941
+ shortcut: new Shortcut('X', false, false),
21942
+ onExecuteAction: () => {
21943
+ this.exportCSV();
21944
+ },
21945
+ isHidden: () => {
21946
+ return false;
21947
+ }
21948
+ },
21949
+ {
21950
+ name: this.translate.instant('eo.object.actions.title'),
21951
+ nameKey: 'eo.object.actions.title',
21952
+ shortcut: new Shortcut('M', false, false),
21953
+ onExecuteAction: () => {
21954
+ this.list.showActions();
21955
+ },
21956
+ isHidden: () => {
21957
+ return false;
21958
+ }
21959
+ },
21960
+ {
21961
+ name: this.translate.instant('eo.list.refresh'),
21962
+ nameKey: 'eo.list.refresh',
21963
+ shortcut: new Shortcut('R', false, false),
21964
+ onExecuteAction: () => {
21965
+ this.refreshGrid();
21966
+ },
21967
+ isHidden: () => {
21968
+ return false;
21969
+ }
21970
+ }]
21971
+ };
22097
21972
  this.VIRTUAL_LIST_CHUNK_SIZE = this.config.getRaw('search.limit');
22098
21973
  this.resolveReferencesCsv = this.config.getRaw('search.resolveReferencesCSV') || false;
22099
21974
  this.resolveReferencesCsvThreshold = this.config.getRaw('search.resolveReferencesCSVThreshold') || 10000;
@@ -22317,14 +22192,14 @@ let ResultListComponent = class ResultListComponent {
22317
22192
  this.router.navigate(['/result'], uriParamQuery);
22318
22193
  }
22319
22194
  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 }); }
22320
- 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\">\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 <eo-stored-query [query]=\"storedQuery\"\n (onQueryLoaded)=\"onStoredQueryLoaded()\"\n (onQueryExecute)=\"onStoredQueryExecute($event)\"></eo-stored-query>\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: i3.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: "component", type: StoredQueryComponent, selector: "eo-stored-query", inputs: ["query", "formOnly"], outputs: ["onQueryLoaded", "onQueryExecute"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
22195
+ 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: i3.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: i3.TranslatePipe, name: "translate" }] }); }
22321
22196
  };
22322
22197
  ResultListComponent = ResultListComponent_1 = __decorate([
22323
22198
  UntilDestroy()
22324
22199
  ], ResultListComponent);
22325
22200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListComponent, decorators: [{
22326
22201
  type: Component,
22327
- 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\">\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 <eo-stored-query [query]=\"storedQuery\"\n (onQueryLoaded)=\"onStoredQueryLoaded()\"\n (onQueryExecute)=\"onStoredQueryExecute($event)\"></eo-stored-query>\n</eo-dialog>\n\n<eo-dialog [title]=\"'eo.resultlist.export.csv.threshold.dialog.title' | translate\"\n [(visible)]=\"showWarnExportCSVThresholdDialog\" [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'threshold__dialog'\">\n\n <div>{{'eo.resultlist.export.csv.threshold.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showWarnExportCSVThresholdDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"exportCSV(true)\" class=\"button primary\"\n translate>eo.resultlist.export.csv.threshold.dialog.export</button>\n </div>\n</eo-dialog>\n\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background);height:100%}:host .spinner{padding:calc(var(--app-pane-padding) / 4)}:host .result-head{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0}:host .result-head .header-info{flex:1}:host .result-head .header-info .header-sub-title .term{margin:0 var(--app-pane-padding)}:host .result-head .header-info .header-title{padding-bottom:calc(var(--app-pane-padding) / 4);font-size:20px;-webkit-user-select:none;user-select:none}:host .result-head .header-info .status{display:flex}:host .result-head .header-info .status .term{flex:1}:host .result-head .actions eo-icon{padding:calc(var(--app-pane-padding) / 4);cursor:pointer}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}:host .loader-overlay__mask .result-list__loader{margin:auto}:host .stored-query{display:flex;max-height:45vh}:host .stored-query span{padding-right:calc(var(--app-pane-padding) / 2)}:host .stored-query>div{background-color:var(--color-white);padding:calc(var(--app-pane-padding) / 2);margin:0 1px;border-radius:2px 0 0 2px}:host .stored-query>div eo-icon{padding:calc(var(--app-pane-padding) / 4);color:var(--text-color-caption)}:host .stored-query .sq{overflow:hidden;border-radius:2px;padding:calc(var(--app-pane-padding) / 100);background-color:var(--color-white);color:var(--text-color-caption);text-decoration:none;cursor:pointer;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;display:flex;flex-flow:row;align-items:center;background-color:var(--list-item-hover-background)}:host .stored-query .sq>eo-icon{color:var(--text-color-hint);flex-shrink:0}:host .stored-query .sq>span{text-overflow:ellipsis;overflow:hidden;padding:0 calc(var(--app-pane-padding) / 2)}eo-stored-query{border-radius:0 2px 2px 0;background-color:var(--color-white);padding:var(--app-pane-padding);overflow-y:auto}::ng-deep .threshold__dialog{padding:8px;min-height:unset!important}::ng-deep .threshold__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"] }]
22202
+ 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"] }]
22328
22203
  }], 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: [{
22329
22204
  type: ViewChild,
22330
22205
  args: ['eoGrid']
@@ -22371,6 +22246,215 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
22371
22246
  type: Input
22372
22247
  }] } });
22373
22248
 
22249
+ class StoredQueryComponent {
22250
+ set query(storedQuery) {
22251
+ if (storedQuery instanceof StoredQuery) {
22252
+ this._storedQuery = storedQuery;
22253
+ this._storedQuery.state.count = { value: 0 };
22254
+ this.queryScope = this._storedQuery.scope;
22255
+ this.createQueryForm();
22256
+ this.aggregate();
22257
+ }
22258
+ }
22259
+ get query() {
22260
+ return this._storedQuery;
22261
+ }
22262
+ // set to true only the stored query form will be rendered, otherwise
22263
+ // we'll get the complete control
22264
+ set formOnly(b) {
22265
+ this._formOnly = b;
22266
+ }
22267
+ constructor(searchService, elementRef, translate, systemService, storedQueriesService, formHelperService, appSearchService) {
22268
+ this.searchService = searchService;
22269
+ this.elementRef = elementRef;
22270
+ this.translate = translate;
22271
+ this.systemService = systemService;
22272
+ this.storedQueriesService = storedQueriesService;
22273
+ this.formHelperService = formHelperService;
22274
+ this.appSearchService = appSearchService;
22275
+ this.onQueryLoaded = new EventEmitter();
22276
+ this.onQueryExecute = new EventEmitter();
22277
+ this.isOpen = this.formOnly;
22278
+ }
22279
+ setQueryScope(scope) {
22280
+ this._storedQuery.scope = scope;
22281
+ this.queryScope = scope;
22282
+ this.aggregate();
22283
+ }
22284
+ // generate the form for the dynamic parts of the stored query
22285
+ createQueryForm() {
22286
+ this.queryFormControls = [];
22287
+ this.fulltextFormControl = null;
22288
+ // parameters of a stored query contain the dynamic parts of the query, so
22289
+ // these are the fields to be rendered
22290
+ if (this._storedQuery.parameter && this._storedQuery.parameter.length > 0) {
22291
+ const paramQNames = this._storedQuery.parameter.map(p => p.qname);
22292
+ const fulltextParam = this._storedQuery.parameter.find(p => p.type === StoredQueriesService.FULLTEXT);
22293
+ // fulltext param get a special handling
22294
+ if (fulltextParam) {
22295
+ this.fulltextFormControl = this.formHelperService.elementToFormControl(this.storedQueriesService.getFulltextFormElement(this.translate.instant("eo.storedquery.search.term"), this._storedQuery.term), "SEARCH");
22296
+ }
22297
+ this.getFormElements().subscribe(elements => {
22298
+ if (elements.length) {
22299
+ let paramElements = elements.filter(e => paramQNames.indexOf(e.qname) !== -1);
22300
+ // now, create the actual form controls from the param elements
22301
+ paramElements.forEach(paramElement => {
22302
+ if (paramElement.type === 'TABLE') {
22303
+ let filters = this._storedQuery.getTableFilters(paramElement.qname);
22304
+ if (filters && filters.length) {
22305
+ paramElement.value = this.searchService.tableFiltersToElementValue(filters, paramElement.elements);
22306
+ }
22307
+ else {
22308
+ paramElement.value = [{}];
22309
+ delete paramElement.isNotSetValue;
22310
+ }
22311
+ }
22312
+ else {
22313
+ // grab value for the control from corresponding query filters
22314
+ let filter = this._storedQuery.getFilter(paramElement.qname);
22315
+ // we may have params that are not part of the queries filters. This may be the
22316
+ // case when we mark form elements as dynamic fields without providing a value
22317
+ if (filter) {
22318
+ // filter to have no value
22319
+ if (filter.operator === SearchFilter.OPERATOR.EQUAL &&
22320
+ filter.firstValue === null) {
22321
+ paramElement.isNotSetValue = true;
22322
+ }
22323
+ else {
22324
+ delete paramElement.isNotSetValue;
22325
+ }
22326
+ paramElement.value = this.searchService.filterToElementValue(this._storedQuery.getFilter(paramElement.qname), paramElement.type);
22327
+ }
22328
+ else {
22329
+ paramElement.value = undefined;
22330
+ }
22331
+ }
22332
+ // name property of stored query param has to be qname of form element
22333
+ // because we may combine multiple forms (context form) and in this case name could be not unique
22334
+ paramElement.name = paramElement.qname;
22335
+ let wrapper = this.formHelperService.elementToFormControl(paramElement, "SEARCH");
22336
+ if (wrapper) {
22337
+ this.queryFormControls.push(wrapper);
22338
+ }
22339
+ });
22340
+ }
22341
+ let form = new ObjectFormGroup({});
22342
+ // add fulltext when available
22343
+ if (this.fulltextFormControl) {
22344
+ form.addControl(this.fulltextFormControl._eoFormControlWrapper.controlName, this.fulltextFormControl);
22345
+ }
22346
+ this.queryFormControls.forEach(c => form.addControl(c._eoFormControlWrapper.controlName, c));
22347
+ // only setup the form if we actually have controls applied to it
22348
+ if (Object.keys(form.controls).length) {
22349
+ this.queryForm = form;
22350
+ this.queryForm.valueChanges.pipe(debounceTime(500)).subscribe(() => {
22351
+ // update query based on the form values
22352
+ //for (let key of Object.keys(formData)) {
22353
+ for (let key of Object.keys(this.queryForm.controls)) {
22354
+ //let value = formData[key];
22355
+ let value = this.getValue(key);
22356
+ if (key === StoredQueriesService.FULLTEXT) {
22357
+ this._storedQuery.term = value || "";
22358
+ }
22359
+ else {
22360
+ const wrapper = this.queryForm
22361
+ .controls[key];
22362
+ const formElementRef = wrapper.controls[wrapper._eoFormControlWrapper.controlName];
22363
+ const filters = UtilitiesService.isEmpty(value) &&
22364
+ !formElementRef._eoFormElement.isNotSetValue
22365
+ ? []
22366
+ : this.searchService.getSearchFilter(this._storedQuery.types, key, formElementRef._eoFormElement.isNotSetValue
22367
+ ? null
22368
+ : value);
22369
+ if (formElementRef._eoFormElement.type === 'TABLE') {
22370
+ formElementRef._eoFormElement.elements.forEach(el => {
22371
+ this._storedQuery.removeFilter(el.qname);
22372
+ });
22373
+ }
22374
+ filters.forEach(f => this._storedQuery.addFilter(f));
22375
+ if (!filters.length) {
22376
+ this._storedQuery.removeFilter(key);
22377
+ }
22378
+ }
22379
+ }
22380
+ // fetch aggregations every time the form data changes
22381
+ this.aggregate();
22382
+ });
22383
+ // set focus to the first input, needs Timeout because form may not have been rendered
22384
+ setTimeout(() => {
22385
+ const el = this.elementRef.nativeElement.querySelector("input");
22386
+ if (el) {
22387
+ el.focus();
22388
+ }
22389
+ }, 100);
22390
+ }
22391
+ });
22392
+ }
22393
+ }
22394
+ getFormElements() {
22395
+ // for form fields we use the qname of the parameter to fetch the corresponding form element
22396
+ // from object definition although they may be provided, because they may have
22397
+ // changed since the query was persisted
22398
+ if (this._storedQuery.types.length === 1) {
22399
+ // creating params form only makes sense if we have one single target type ...
22400
+ let formElements = [];
22401
+ const elementFetchTasks = [];
22402
+ elementFetchTasks.push(this.systemService.getFormElementsFromFormModel(this._storedQuery.types[0].qname, "SEARCH"));
22403
+ // ... contextfoldertype may also be provided. They will be set up first to be
22404
+ // on top of the generated form
22405
+ if (this._storedQuery.contextFolderTypes.length === 1) {
22406
+ elementFetchTasks.push(this.systemService.getFormElementsFromFormModel(this._storedQuery.contextFolderTypes[0].qname, "SEARCH", true));
22407
+ // elements = this._storedQuery.contextFolderTypes[0].elements;
22408
+ }
22409
+ return forkJoin(elementFetchTasks).pipe(map((res) => {
22410
+ formElements = res.length === 2 ? [...res[0], ...res[1]] : res[0];
22411
+ return formElements.map(e => ({ ...e }));
22412
+ }));
22413
+ }
22414
+ else {
22415
+ return of([]);
22416
+ }
22417
+ }
22418
+ getValue(qname) {
22419
+ const control = this.queryForm.controls[qname];
22420
+ return control.value && control.value[qname];
22421
+ }
22422
+ load() {
22423
+ this.appSearchService.setQuery(this._storedQuery);
22424
+ this.onQueryLoaded.emit();
22425
+ }
22426
+ execute() {
22427
+ this.onQueryExecute.emit({
22428
+ queryJson: this._storedQuery.getQueryJson()
22429
+ });
22430
+ }
22431
+ aggregate() {
22432
+ this.searchService
22433
+ .getSearchState({ aggs: { type: {} }, ...this._storedQuery.getQueryJson() })
22434
+ .subscribe((state) => {
22435
+ this._storedQuery.state = state;
22436
+ });
22437
+ }
22438
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryComponent, deps: [{ token: i1.SearchService }, { token: i0.ElementRef }, { token: i1.TranslateService }, { token: i1.SystemService }, { token: i1.StoredQueriesService }, { token: ObjectFormHelperService }, { token: AppSearchService }], target: i0.ɵɵFactoryTarget.Component }); }
22439
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: StoredQueryComponent, selector: "eo-stored-query", inputs: { query: "query", formOnly: "formOnly" }, outputs: { onQueryLoaded: "onQueryLoaded", onQueryExecute: "onQueryExecute" }, host: { properties: { "class.open": "this.isOpen" } }, ngImport: i0, template: "<div *ngIf=\"query\" class=\"eo-stored-query\" [ngClass]=\"{hasForm: queryFormControls?.length > 0}\">\n\n <div class=\"title\" *ngIf=\"!_formOnly\">{{query.name}}</div>\n <div class=\"qform\">\n\n <div class=\"query-form\" [formGroup]=\"queryForm\" *ngIf=\"queryForm\">\n\n <div class=\"form-field fulltext\" *ngIf=\"fulltextFormControl\">\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\n <eo-form-element [element]=\"fulltextFormControl\" [situation]=\"'SEARCH'\"></eo-form-element>\n </div>\n\n <div class=\"form-field\" *ngFor=\"let element of queryFormControls\"\n [ngClass]=\"{sfe: element.controls[element._eoFormControlWrapper.controlName]._eoFormElement.selectedforenrichment}\">\n <eo-form-element [element]=\"element\" [situation]=\"'SEARCH'\"></eo-form-element>\n </div>\n </div>\n\n <div class=\"actions\">\n <div class=\"state\">\n <span class=\"count\">{{query.state?.totalCount | localeDecimal}}</span>\n <span translate>eo.storedquery.res.count.label</span>\n </div>\n <div class=\"buttons\" *ngIf=\"!_formOnly\">\n <button class=\"secondary\" (click)=\"load()\" translate>eo.storedquery.load</button>\n <button class=\"primary\" [disabled]=\"(queryForm && queryForm.invalid) || query.state?.isEmpty\"\n (click)=\"execute()\" translate>eo.storedquery.run</button>\n </div>\n </div>\n\n </div>\n</div>\n", styles: [":host .eo-stored-query{width:100%}:host .eo-stored-query .title{padding:calc(var(--app-pane-padding) / 8) 0;font-size:var(--font-title);color:var(--color-primary-2);margin-bottom:var(--app-pane-padding)}:host .eo-stored-query ::ng-deep eo-query-scope-select .query-scope .query-scope__button{border:0;color:var(--text-color-caption);background-color:#0000001a}:host .eo-stored-query .actions{display:flex;flex-flow:row wrap;align-items:center;margin:0 -2px}:host .eo-stored-query .actions .state{flex:1 1 auto;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}:host .eo-stored-query .actions .state .count{padding-right:5px}:host .eo-stored-query .actions .buttons{display:flex;flex-flow:row wrap;align-items:center;justify-content:flex-end}:host .eo-stored-query .actions .buttons button{flex:0 0 auto;margin:0 2px 2px}:host .eo-stored-query.hasForm .actions{padding-top:var(--app-pane-padding)}:host.open .eo-stored-query .title{font-weight:var(--font-weight-bold)}:host.open .eo-stored-query .title eo-icon{transform:rotate(180deg)}:host::ng-deep .form-field.sfe .fe-wrapper>label:before{content:\"*\";display:inline-block;padding:0 2px;margin:4px;border-radius:2px;background-color:var(--color-primary-3);color:var(--color-white)!important}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormElementComponent, selector: "eo-form-element", inputs: ["situation", "skipToggle", "element"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: QueryScopeSelectComponent, selector: "eo-query-scope-select", inputs: ["selection"], outputs: ["select"] }, { 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: "pipe", type: LocaleDecimalPipe, name: "localeDecimal" }] }); }
22440
+ }
22441
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: StoredQueryComponent, decorators: [{
22442
+ type: Component,
22443
+ args: [{ selector: "eo-stored-query", template: "<div *ngIf=\"query\" class=\"eo-stored-query\" [ngClass]=\"{hasForm: queryFormControls?.length > 0}\">\n\n <div class=\"title\" *ngIf=\"!_formOnly\">{{query.name}}</div>\n <div class=\"qform\">\n\n <div class=\"query-form\" [formGroup]=\"queryForm\" *ngIf=\"queryForm\">\n\n <div class=\"form-field fulltext\" *ngIf=\"fulltextFormControl\">\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\n <eo-form-element [element]=\"fulltextFormControl\" [situation]=\"'SEARCH'\"></eo-form-element>\n </div>\n\n <div class=\"form-field\" *ngFor=\"let element of queryFormControls\"\n [ngClass]=\"{sfe: element.controls[element._eoFormControlWrapper.controlName]._eoFormElement.selectedforenrichment}\">\n <eo-form-element [element]=\"element\" [situation]=\"'SEARCH'\"></eo-form-element>\n </div>\n </div>\n\n <div class=\"actions\">\n <div class=\"state\">\n <span class=\"count\">{{query.state?.totalCount | localeDecimal}}</span>\n <span translate>eo.storedquery.res.count.label</span>\n </div>\n <div class=\"buttons\" *ngIf=\"!_formOnly\">\n <button class=\"secondary\" (click)=\"load()\" translate>eo.storedquery.load</button>\n <button class=\"primary\" [disabled]=\"(queryForm && queryForm.invalid) || query.state?.isEmpty\"\n (click)=\"execute()\" translate>eo.storedquery.run</button>\n </div>\n </div>\n\n </div>\n</div>\n", styles: [":host .eo-stored-query{width:100%}:host .eo-stored-query .title{padding:calc(var(--app-pane-padding) / 8) 0;font-size:var(--font-title);color:var(--color-primary-2);margin-bottom:var(--app-pane-padding)}:host .eo-stored-query ::ng-deep eo-query-scope-select .query-scope .query-scope__button{border:0;color:var(--text-color-caption);background-color:#0000001a}:host .eo-stored-query .actions{display:flex;flex-flow:row wrap;align-items:center;margin:0 -2px}:host .eo-stored-query .actions .state{flex:1 1 auto;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}:host .eo-stored-query .actions .state .count{padding-right:5px}:host .eo-stored-query .actions .buttons{display:flex;flex-flow:row wrap;align-items:center;justify-content:flex-end}:host .eo-stored-query .actions .buttons button{flex:0 0 auto;margin:0 2px 2px}:host .eo-stored-query.hasForm .actions{padding-top:var(--app-pane-padding)}:host.open .eo-stored-query .title{font-weight:var(--font-weight-bold)}:host.open .eo-stored-query .title eo-icon{transform:rotate(180deg)}:host::ng-deep .form-field.sfe .fe-wrapper>label:before{content:\"*\";display:inline-block;padding:0 2px;margin:4px;border-radius:2px;background-color:var(--color-primary-3);color:var(--color-white)!important}\n"] }]
22444
+ }], ctorParameters: () => [{ type: i1.SearchService }, { type: i0.ElementRef }, { type: i1.TranslateService }, { type: i1.SystemService }, { type: i1.StoredQueriesService }, { type: ObjectFormHelperService }, { type: AppSearchService }], propDecorators: { query: [{
22445
+ type: Input,
22446
+ args: ["query"]
22447
+ }], formOnly: [{
22448
+ type: Input
22449
+ }], onQueryLoaded: [{
22450
+ type: Output
22451
+ }], onQueryExecute: [{
22452
+ type: Output
22453
+ }], isOpen: [{
22454
+ type: HostBinding,
22455
+ args: ["class.open"]
22456
+ }] } });
22457
+
22374
22458
  class DynamicPropertySwitchComponent {
22375
22459
  set parentFormControl(fc) {
22376
22460
  if (fc) {
@@ -22955,10 +23039,12 @@ class ResultListModule {
22955
23039
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: ResultListModule, declarations: [ResultListComponent], imports: [UiModule,
22956
23040
  ListContainerModule,
22957
23041
  GridModule,
23042
+ ShortcutsModule,
22958
23043
  StoredQueryModule], exports: [ResultListComponent] }); }
22959
23044
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListModule, imports: [UiModule,
22960
23045
  ListContainerModule,
22961
23046
  GridModule,
23047
+ ShortcutsModule,
22962
23048
  StoredQueryModule] }); }
22963
23049
  }
22964
23050
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ResultListModule, decorators: [{
@@ -22968,6 +23054,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
22968
23054
  UiModule,
22969
23055
  ListContainerModule,
22970
23056
  GridModule,
23057
+ ShortcutsModule,
22971
23058
  StoredQueryModule
22972
23059
  ],
22973
23060
  exports: [ResultListComponent],
@@ -23382,10 +23469,10 @@ class AboutStateComponent {
23382
23469
  this.backend = backend;
23383
23470
  this.userService = userService;
23384
23471
  this.config = config;
23385
- 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.11.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" }];
23472
+ this.__libraries__ = [{ "name": "@ag-grid-community/angular", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/client-side-row-model", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/core", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/csv-export", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/styles", "version": "31.3.2", "license": "MIT" }, { "name": "@angular/animations", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/cdk", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/common", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/compiler", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/core", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/forms", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/router", "version": "18.1.0", "license": "MIT" }, { "name": "@carbon/charts-angular", "version": "1.16.3", "license": "Apache-2.0" }, { "name": "@eo-sdk/core", "version": "11.12.0-rc.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" }];
23386
23473
  this.ctrl = {
23387
23474
  componentName: 'yuuvis® RAD client',
23388
- componentVersion: '11.12.0-rc.1',
23475
+ componentVersion: '11.12.0-rc.2',
23389
23476
  productName: '',
23390
23477
  productVersion: ''
23391
23478
  };
@@ -26149,10 +26236,7 @@ let SettingsComponent = class SettingsComponent {
26149
26236
  label: res.label,
26150
26237
  value: res.iso
26151
26238
  }));
26152
- this.clientOption = this.user.userSettings?.clientlocale
26153
- || this.clientLocaleOptions.find(language => language.value === this.browserLanguage)?.value
26154
- || this.config.getDefaultClientLocale();
26155
- this.changeClientLocale(this.clientOption);
26239
+ this.clientOption = this.user.userSettings?.clientlocale;
26156
26240
  }
26157
26241
  getSchemaLocales() {
26158
26242
  this.systemService.system$.subscribe((systemDefinition) => {
@@ -26163,11 +26247,7 @@ let SettingsComponent = class SettingsComponent {
26163
26247
  }));
26164
26248
  }
26165
26249
  });
26166
- this.schemaOption = this.user.schemaLocale
26167
- || this.schemaLocaleOptions.find(language => language.value === this.browserLanguage)?.value
26168
- || this.schemaLocaleOptions.find(language => language.value === 'en')?.value
26169
- || this.schemaLocaleOptions[0].value;
26170
- this.changeSchemaLocale(this.schemaOption);
26250
+ this.schemaOption = this.user.schemaLocale;
26171
26251
  }
26172
26252
  saveDeputies() {
26173
26253
  this.userService.setDeputies(this.deputies.data)