@eo-sdk/client 8.14.0-rc.2 → 8.15.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/eo-client/about-state/about-state.component.d.ts +1 -0
- package/app/eo-framework/form-elements/datetime/datepicker/datepicker.component.d.ts +2 -1
- package/app/eo-framework/form-elements/datetime/datetime.component.d.ts +5 -1
- package/app/eo-framework/object-form/object-form/form-element/form-element.component.d.ts +2 -1
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +4 -1
- package/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.d.ts +2 -0
- package/app/eo-framework/object-form/object-form/object-form.component.d.ts +2 -1
- package/app/eo-framework/object-form/object-form-edit/object-form-edit.component.d.ts +1 -0
- package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts +22 -11
- package/app/eo-framework/util/directive/trap-focus.directive.d.ts +14 -0
- package/assets/_default/config/main.json +2 -1
- package/assets/_default/i18n/de.json +2 -0
- package/assets/_default/i18n/en.json +3 -1
- package/assets/_default/svg/ic_preview_close.svg +1 -0
- package/assets/_default/svg/ic_preview_show.svg +1 -0
- package/bundles/eo-sdk-client.umd.js +3381 -3262
- package/bundles/eo-sdk-client.umd.js.map +1 -1
- package/bundles/eo-sdk-client.umd.min.js +1 -1
- package/bundles/eo-sdk-client.umd.min.js.map +1 -1
- package/eo-sdk-client.d.ts +67 -63
- package/eo-sdk-client.metadata.json +1 -1
- package/esm2015/app/eo-client/about-state/about-state.component.js +6 -5
- package/esm2015/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.js +1 -1
- package/esm2015/app/eo-framework/app-shell/app-bar/app-search/app-search.component.js +3 -3
- package/esm2015/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.js +2 -2
- package/esm2015/app/eo-framework/app-shell/app-shell.module.js +5 -3
- package/esm2015/app/eo-framework/form-elements/datetime/datepicker/datepicker.component.js +8 -4
- package/esm2015/app/eo-framework/form-elements/datetime/datetime.component.js +13 -8
- package/esm2015/app/eo-framework/grid/filters/datetime-filter.component.js +2 -2
- package/esm2015/app/eo-framework/object-details/favorite-icon/favorite-icon.component.js +2 -2
- package/esm2015/app/eo-framework/object-form/object-form/form-element/form-element.component.js +3 -2
- package/esm2015/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.js +9 -2
- package/esm2015/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.js +3 -2
- package/esm2015/app/eo-framework/object-form/object-form/object-form.component.js +3 -2
- package/esm2015/app/eo-framework/object-form/object-form-edit/object-form-edit.component.js +5 -2
- package/esm2015/app/eo-framework/object-form/object-form.module.js +4 -2
- package/esm2015/app/eo-framework/prepare-details/prepare-details.component.js +2 -2
- package/esm2015/app/eo-framework/ui/eo-dialog/eo-dialog.component.js +78 -42
- package/esm2015/app/eo-framework/ui/ui.module.js +4 -2
- package/esm2015/app/eo-framework/util/directive/trap-focus.directive.js +50 -0
- package/esm2015/eo-sdk-client.js +68 -64
- package/fesm2015/eo-sdk-client.js +1246 -1134
- package/fesm2015/eo-sdk-client.js.map +1 -1
- package/package.json +3 -3
- package/projects/eo-sdk/core/package.json +1 -1
- package/styles.css +1 -0
- package/styles.scss +1 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Injectable, ApplicationRef, NgZone, Pipe, NgModule, EventEmitter, Injector, ɵɵdefineInjectable, ɵɵinject, ErrorHandler, Optional, SkipSelf, Component, Input, Output, ViewEncapsulation, ElementRef, Renderer2, Directive, HostListener, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild, HostBinding, forwardRef, ViewChildren,
|
|
1
|
+
import { Injectable, ApplicationRef, NgZone, Pipe, NgModule, EventEmitter, Injector, ɵɵdefineInjectable, ɵɵinject, ErrorHandler, Optional, SkipSelf, Component, Input, Output, ViewEncapsulation, ElementRef, Renderer2, Directive, HostListener, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild, HostBinding, ViewContainerRef, forwardRef, ViewChildren, ContentChildren, ANALYZE_FOR_ENTRY_COMPONENTS, InjectionToken, Inject, ComponentFactoryResolver, ContentChild, QueryList } from '@angular/core';
|
|
2
2
|
import { DecimalPipe, PercentPipe, CurrencyPipe, DatePipe, getLocaleDateTimeFormat, FormatWidth, getLocaleTimeFormat, getLocaleDateFormat, CommonModule, Location, PlatformLocation } from '@angular/common';
|
|
3
3
|
import { HttpClient, HttpResponse, HttpErrorResponse, HttpClientModule, HTTP_INTERCEPTORS, HttpHeaders } from '@angular/common/http';
|
|
4
4
|
import { ReplaySubject, BehaviorSubject, from, forkJoin, of, Subject, fromEvent, AsyncSubject, Observable } from 'rxjs';
|
|
5
|
-
import { groupBy, mergeMap, reduce, tap, catchError, map, debounceTime, takeUntil, filter, switchMap, pluck, finalize, combineLatest, throttleTime, take,
|
|
5
|
+
import { groupBy, mergeMap, reduce, tap, catchError, map, debounceTime, takeUntil, filter, switchMap, pluck, finalize, combineLatest, takeWhile, throttleTime, take, withLatestFrom, first } from 'rxjs/operators';
|
|
6
6
|
import { SearchQuery, SearchState, EnaioEvent, Utils, SearchService, EventService, SystemService, Logger, BackendService, UserService, TranslateService, NotificationsService, AppCacheService, UploadTarget, UploadRegistryService, DmsObject, ClipboardService, DmsService, EnvironmentEnaio, SearchFilter, RangeValue, AuthService, EoError, CapabilitiesService, Config, ClipboardAction, PrepareService, QueryScope, EoSharedModule, InboxService, BpmService, StoredQuery, StoredQueriesService, EnvironmentService, LocalStorageService, FieldDefinition, SortOption, InboxItem, Process, PreparedItem, WorkItem, SubscriptionMode, TranslateModule, UploadFileItem, SearchResult } from '@eo-sdk/core';
|
|
7
7
|
import { Router, NavigationStart, RouterModule, ActivatedRoute, NavigationEnd } from '@angular/router';
|
|
8
8
|
import { NumberFilter, Utils as Utils$1, SimpleFilter, NumberSequence, _ as _$1, RowNode, Autowired, PostConstruct, Bean, ModuleNames, DateFilter } from '@ag-grid-community/core';
|
|
@@ -10,7 +10,9 @@ import { Title, DomSanitizer } from '@angular/platform-browser';
|
|
|
10
10
|
import { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormBuilder, FormGroup, FormControl, FormsModule, ReactiveFormsModule, Validators, NgForm } from '@angular/forms';
|
|
11
11
|
import { AccordionModule as AccordionModule$1 } from 'primeng/accordion';
|
|
12
12
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
13
|
-
import {
|
|
13
|
+
import { OverlayPanelModule, DialogModule, InputMask, AutoComplete, InputTextModule, InputMaskModule, AutoCompleteModule, CheckboxModule, TriStateCheckboxModule, InputTextareaModule, ChipsModule, DropdownModule, SharedModule, TabPanel, TabViewModule, FieldsetModule, CalendarModule, TabView, TabViewNav, DragDropModule as DragDropModule$1 } from 'primeng/primeng';
|
|
14
|
+
import { Overlay, OverlayModule } from '@angular/cdk/overlay';
|
|
15
|
+
import { TemplatePortal, CdkPortalOutlet } from '@angular/cdk/portal';
|
|
14
16
|
import * as moment_ from 'moment';
|
|
15
17
|
import 'moment/min/locales';
|
|
16
18
|
import * as _ from 'lodash';
|
|
@@ -3560,23 +3562,26 @@ ErrorMessageComponent.propDecorators = {
|
|
|
3560
3562
|
};
|
|
3561
3563
|
|
|
3562
3564
|
class EoDialogComponent extends UnsubscribeOnDestroy {
|
|
3563
|
-
constructor(eventService, pendingChanges, renderer) {
|
|
3565
|
+
constructor(eventService, pendingChanges, renderer, overlay, viewContainerRef) {
|
|
3564
3566
|
super();
|
|
3565
3567
|
this.eventService = eventService;
|
|
3566
3568
|
this.pendingChanges = pendingChanges;
|
|
3567
3569
|
this.renderer = renderer;
|
|
3570
|
+
this.overlay = overlay;
|
|
3571
|
+
this.viewContainerRef = viewContainerRef;
|
|
3568
3572
|
this._visible = false;
|
|
3569
3573
|
this.id = Utils.uuid();
|
|
3570
3574
|
this.parentId = '';
|
|
3571
3575
|
this.styleClass = '';
|
|
3572
3576
|
// array of pendingTask IDs to be checked before the dialog closes
|
|
3573
3577
|
this.dirtyCheck = [];
|
|
3574
|
-
this.appendTo = 'body';
|
|
3575
3578
|
this.minWidth = 200;
|
|
3576
3579
|
this.minHeight = 'auto';
|
|
3577
|
-
this.resizable = false;
|
|
3578
|
-
this.fullscreen = false;
|
|
3579
3580
|
this.focusOnShow = true;
|
|
3581
|
+
this.align = 'center';
|
|
3582
|
+
this.isFormTable = false;
|
|
3583
|
+
this.showPreview = false;
|
|
3584
|
+
this.onTogglePreview = new EventEmitter();
|
|
3580
3585
|
this.visibleChange = new EventEmitter();
|
|
3581
3586
|
this.hide = new EventEmitter();
|
|
3582
3587
|
this.show = new EventEmitter();
|
|
@@ -3611,40 +3616,57 @@ class EoDialogComponent extends UnsubscribeOnDestroy {
|
|
|
3611
3616
|
this.closeDialog();
|
|
3612
3617
|
}
|
|
3613
3618
|
}
|
|
3619
|
+
open() {
|
|
3620
|
+
// We create the overlay
|
|
3621
|
+
this.overlayRef = this.overlay.create({
|
|
3622
|
+
hasBackdrop: true,
|
|
3623
|
+
scrollStrategy: this.overlay.scrollStrategies.reposition(),
|
|
3624
|
+
positionStrategy: this.getPositionStrategy(),
|
|
3625
|
+
minHeight: this.minHeight,
|
|
3626
|
+
minWidth: this.minWidth
|
|
3627
|
+
});
|
|
3628
|
+
//Then we create a portal to render a component
|
|
3629
|
+
const portal = new TemplatePortal(this.dialogContent, this.viewContainerRef);
|
|
3630
|
+
// We add a custom CSS class to our overlay
|
|
3631
|
+
// this.overlayRef.addPanelClass("example-overlay");
|
|
3632
|
+
this.overlayRef.attach(portal);
|
|
3633
|
+
this.overlayRef.backdropClick().subscribe((_) => {
|
|
3634
|
+
this.visible = false;
|
|
3635
|
+
});
|
|
3636
|
+
}
|
|
3637
|
+
getPositionStrategy() {
|
|
3638
|
+
let positionStrategy;
|
|
3639
|
+
if (this.align === 'center') {
|
|
3640
|
+
positionStrategy = this.overlay
|
|
3641
|
+
.position()
|
|
3642
|
+
.global()
|
|
3643
|
+
.centerHorizontally()
|
|
3644
|
+
.centerVertically();
|
|
3645
|
+
}
|
|
3646
|
+
else if (this.align === 'start') {
|
|
3647
|
+
positionStrategy = this.overlay
|
|
3648
|
+
.position()
|
|
3649
|
+
.global()
|
|
3650
|
+
.left()
|
|
3651
|
+
.top();
|
|
3652
|
+
}
|
|
3653
|
+
return positionStrategy;
|
|
3654
|
+
}
|
|
3614
3655
|
toggleActive(active, trigger = true) {
|
|
3615
3656
|
this.active = !!active;
|
|
3657
|
+
if (active && this.ready && !this.overlayRef) {
|
|
3658
|
+
this.open();
|
|
3659
|
+
}
|
|
3660
|
+
if (this.overlayRef && !active) {
|
|
3661
|
+
this.overlayRef.dispose();
|
|
3662
|
+
this.overlayRef = undefined;
|
|
3663
|
+
}
|
|
3616
3664
|
if (trigger) {
|
|
3617
3665
|
this.eventService.trigger(EnaioEvent.EO_DIALOG_STACK_CHANGED, {
|
|
3618
3666
|
id: this.id,
|
|
3619
3667
|
active: this.active
|
|
3620
3668
|
});
|
|
3621
3669
|
}
|
|
3622
|
-
if (this.dialog) {
|
|
3623
|
-
this.renderer[this.active || !this.appendTo ? 'addClass' : 'removeClass'](this.dialog.containerViewChild.nativeElement, 'active');
|
|
3624
|
-
this.renderer[this.fullscreen ? 'addClass' : 'removeClass'](this.dialog.containerViewChild.nativeElement, 'fullscreen');
|
|
3625
|
-
if (this.active) {
|
|
3626
|
-
if (this.minHeight !== 'auto') {
|
|
3627
|
-
setTimeout(() => {
|
|
3628
|
-
this.minHeight = 'auto';
|
|
3629
|
-
if (!!this.dialog) {
|
|
3630
|
-
this.renderer.setStyle(this.dialog.contentViewChild.nativeElement.parentElement, 'minHeight', 'auto');
|
|
3631
|
-
this.renderer.setStyle(this.dialog.contentViewChild.nativeElement.parentElement, 'maxWidth', '50%');
|
|
3632
|
-
}
|
|
3633
|
-
}, 200);
|
|
3634
|
-
}
|
|
3635
|
-
this.dialog.moveOnTop();
|
|
3636
|
-
let focusableElement = this.dialog.contentViewChild.nativeElement.querySelector('[tabindex]');
|
|
3637
|
-
if (focusableElement) {
|
|
3638
|
-
focusableElement.focus();
|
|
3639
|
-
}
|
|
3640
|
-
}
|
|
3641
|
-
else {
|
|
3642
|
-
this._lastFocused.focus();
|
|
3643
|
-
}
|
|
3644
|
-
}
|
|
3645
|
-
else if (this.active && this.visible) {
|
|
3646
|
-
setTimeout(() => this.toggleActive(true, false), 0);
|
|
3647
|
-
}
|
|
3648
3670
|
}
|
|
3649
3671
|
closeDialog() {
|
|
3650
3672
|
if (this.dirtyCheck) {
|
|
@@ -3656,40 +3678,55 @@ class EoDialogComponent extends UnsubscribeOnDestroy {
|
|
|
3656
3678
|
this.visible = false;
|
|
3657
3679
|
}
|
|
3658
3680
|
}
|
|
3681
|
+
togglePreview() {
|
|
3682
|
+
this.showPreview = !this.showPreview;
|
|
3683
|
+
this.onTogglePreview.emit();
|
|
3684
|
+
}
|
|
3659
3685
|
ngOnDestroy() {
|
|
3660
3686
|
if (this.active) {
|
|
3661
3687
|
this.toggleActive(false);
|
|
3662
3688
|
}
|
|
3663
3689
|
}
|
|
3690
|
+
ngAfterViewInit() {
|
|
3691
|
+
// this.open();
|
|
3692
|
+
this.ready = true;
|
|
3693
|
+
if (this._visible) {
|
|
3694
|
+
this.open();
|
|
3695
|
+
}
|
|
3696
|
+
}
|
|
3664
3697
|
}
|
|
3665
3698
|
EoDialogComponent.decorators = [
|
|
3666
3699
|
{ type: Component, args: [{
|
|
3667
3700
|
selector: 'eo-dialog',
|
|
3668
|
-
template: "<
|
|
3701
|
+
template: "<ng-template #dialogContent>\r\n <div class=\"eo-dialog\" [ngClass]=\"styleClass || ''\" eoRtlAware=\"dir\">\r\n <header class=\"eo-dialog-header\" [ngClass]=\"styleClass ? styleClass + '--header ' : ''\">\r\n <h5 class=\"headline\">{{title}}</h5>\r\n <h6 *ngIf=\"subtitle\" class=\"subtitle\">{{subtitle}}</h6>\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"closeDialog()\" class=\"button white eo-dialog-close\"></eo-icon>\r\n <ng-container *ngIf=\"isFormTable\">\r\n <eo-icon *ngIf=\"showPreview\" [iconSrc]=\"'assets/_default/svg/ic_preview_close.svg'\"\r\n [iconTitle]=\"'eo.form.table.dialog.preview.hide' | translate\" (click)=\"togglePreview()\" class=\"button white eo-dialog-preview-toggle\"></eo-icon>\r\n <eo-icon *ngIf=\"!showPreview\" [iconSrc]=\"'assets/_default/svg/ic_preview_show.svg'\"\r\n [iconTitle]=\"'eo.form.table.dialog.preview.show' | translate\" (click)=\"togglePreview()\" class=\"button white eo-dialog-preview-toggle\"></eo-icon>\r\n </ng-container>\r\n </header>\r\n <div class=\"eo-dialog-content\" [ngClass]=\"styleClass ? styleClass + '--content ' : ''\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</ng-template>\r\n",
|
|
3669
3702
|
encapsulation: ViewEncapsulation.None,
|
|
3670
|
-
styles: ["
|
|
3703
|
+
styles: [".eo-dialog{-webkit-animation:none;animation:none;background-color:var(--panel-background);display:flex;flex:1;flex-direction:column;max-height:100%;max-width:100%;min-height:0;min-width:0}.eo-dialog-close{position:absolute;right:5px;top:5px;z-index:2}.eo-dialog-preview-toggle{position:absolute;right:5px;top:50px;z-index:2}.eo-dialog-header{background-color:var(--color-accent);color:var(--color-white);flex:0 0 auto;font-size:var(--font-headline);font-weight:var(--font-weight-light);padding:var(--app-pane-padding) calc(var(--app-pane-padding)*2.5) calc(var(--app-pane-padding)*2) var(--app-pane-padding)}.eo-dialog-header .headline{font-size:24px;font-weight:400;margin:0 25px 0 0}.eo-dialog-header .subtitle{font-size:15px;font-weight:400;margin:0}.eo-dialog-content{display:flex;flex:1;flex-direction:column;height:100%;max-height:520px;min-height:0;min-width:0;overflow:auto;position:relative}.eo-dialog-content>eo-tree{margin:var(--app-pane-padding)}.eo-dialog-content .empty{align-items:center;color:var(--text-color-caption);display:flex;flex:1;flex-direction:column;justify-content:center;min-height:0;min-width:0;padding:var(--app-pane-padding)}.eo-dialog-content .action-buttons{justify-content:flex-end;padding-top:32px}.eo-dialog-content button:not(:last-child){margin-right:5px}.object-form-table-dialog{background-color:var(--panel-background-grey);height:95vh;width:100%}.object-form-table-dialog .body{height:80vh;width:100%}.object-form-table-dialog .edit-body{display:flex;height:100%}.object-form-table-dialog .table-body{background-color:var(--panel-background-grey);display:flex;height:100%;width:100%}.object-form-table-dialog eo-split{padding:var(--app-pane-padding);width:auto!important}.object-form-table-dialog eo-split-area{box-shadow:0 2px 5px 0 rgba(0,0,0,.2)}.object-form-table-dialog eo-row-edit{background-color:var(--color-white);display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}.object-form-table-dialog eo-row-edit .row-edit{display:flex;flex-direction:column;height:100%}.object-form-table-dialog eo-row-edit .row-edit .edit-header{display:flex;justify-content:space-between}.object-form-table-dialog eo-row-edit .row-edit .edit-header .new-indicator{color:var(--text-color-caption);font-size:var(--font-title);margin:8px 16px 0;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.object-form-table-dialog eo-row-edit .row-edit .edit-header .cancel-icon{color:var(--text-color-caption);margin:8px 8px 0}.object-form-table-dialog eo-row-edit .row-edit .edit-header .cancel-icon:hover{background:rgba(var(--color-black-rgb),.1)}.object-form-table-dialog eo-row-edit .row-edit .form{height:100%;overflow:auto}.object-form-table-dialog eo-row-edit .row-edit .actions{align-items:center;border-top:1px solid var(--panel-header-border-bottom-color);display:flex;flex:0;flex-direction:row;justify-content:flex-end;min-height:0;min-height:5em;min-width:0;padding-right:var(--app-pane-padding)}.object-form-table-dialog eo-row-edit .row-edit .actions button{height:3em;margin:0 calc(var(--app-pane-padding)/8);padding:0 calc(var(--app-pane-padding)/2)}.object-form-table-dialog eo-row-edit .row-edit .actions eo-checkbox{margin:0 calc(var(--app-pane-padding)/2)}.object-form-table-dialog eo-row-edit .row-edit .actions .add-label{color:var(--text-color-caption);font-size:var(--font-body);margin-right:var(--app-pane-padding)}.object-form-table-dialog .object-form-table{background-color:#fff;display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;height:100%;width:100%}.object-form-table-dialog .object-form-table .grid-body{height:100%;position:relative;width:100%}.object-form-table-dialog .object-form-table .grid-body .ag-theme-balham .ag-header{background-color:unset!important}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular{background-color:transparent;height:100%;width:100%}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .copy-cell,.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .new-row{-webkit-animation-duration:4s;-webkit-animation-name:new-row;animation-duration:4s;animation-name:new-row}@-webkit-keyframes new-row{0%{background-color:var(--color-accent)}to{background-color:none}}@keyframes new-row{0%{background-color:var(--color-accent)}to{background-color:none}}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell{align-items:center;display:flex;font-size:var(--font-caption);line-height:var(--oft-row-height);padding:0 calc(var(--app-pane-padding)/4)}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.ag-cell-focus{background-color:var(--list-item-hover-background);border-color:transparent!important;outline:0!important}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell svg{pointer-events:none}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.col-boolean,.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.res-ico{justify-content:center}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell.col-number{justify-content:flex-end}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell .action-icon{cursor:pointer;display:flex}.object-form-table-dialog .object-form-table .grid-body ag-grid-angular .ag-cell .action-icon svg{fill:var(--text-color-caption)}.object-form-table-dialog .label{align-items:center;border-bottom:0;display:flex;flex-flow:row nowrap;padding:calc(var(--app-pane-padding)/4) calc(var(--app-pane-padding)/4) calc(var(--app-pane-padding)/2) calc(var(--app-pane-padding)/4)}.object-form-table-dialog .label span{display:block;flex:1 1 auto}.object-form-table-dialog .label eo-icon.stf{color:var(--text-color-caption);cursor:pointer;height:20px;margin:calc(var(--app-pane-padding)/4);width:20px}.object-form-table-dialog .label eo-icon.stf.add-row{background-color:var(--color-accent);border-radius:2px;color:#fff;height:24px;width:24px}.object-form-table-dialog .label button.add{border-radius:2px;padding:calc(var(--app-pane-padding)/2)}.object-form-table-dialog .label button.export{border:1px solid #000;border-radius:2px;color:#000;font-size:var(--font-hint);margin:0 calc(var(--app-pane-padding)/4);padding:calc(var(--app-pane-padding)/8) calc(var(--app-pane-padding)/4)}.object-form-table-dialog .eo-dialog-content{height:100%;max-height:none;overflow:hidden}.object-form-table-dialog .table-area{overflow:unset!important}.cdk-overlay-pane{position:absolute!important}"]
|
|
3671
3704
|
},] }
|
|
3672
3705
|
];
|
|
3673
3706
|
EoDialogComponent.ctorParameters = () => [
|
|
3674
3707
|
{ type: EventService },
|
|
3675
3708
|
{ type: PendingChangesService },
|
|
3676
|
-
{ type: Renderer2 }
|
|
3709
|
+
{ type: Renderer2 },
|
|
3710
|
+
{ type: Overlay },
|
|
3711
|
+
{ type: ViewContainerRef }
|
|
3677
3712
|
];
|
|
3678
3713
|
EoDialogComponent.propDecorators = {
|
|
3714
|
+
portalOutlet: [{ type: ViewChild, args: [CdkPortalOutlet,] }],
|
|
3715
|
+
dialogContent: [{ type: ViewChild, args: ['dialogContent',] }],
|
|
3679
3716
|
title: [{ type: Input }],
|
|
3680
3717
|
subtitle: [{ type: Input }],
|
|
3681
3718
|
styleClass: [{ type: Input }],
|
|
3682
3719
|
dirtyCheck: [{ type: Input }],
|
|
3683
|
-
appendTo: [{ type: Input }],
|
|
3684
3720
|
minWidth: [{ type: Input }],
|
|
3685
3721
|
minHeight: [{ type: Input }],
|
|
3686
|
-
resizable: [{ type: Input }],
|
|
3687
|
-
fullscreen: [{ type: Input }],
|
|
3688
3722
|
focusOnShow: [{ type: Input }],
|
|
3723
|
+
align: [{ type: Input }],
|
|
3724
|
+
isFormTable: [{ type: Input }],
|
|
3725
|
+
showPreview: [{ type: Input }],
|
|
3726
|
+
onTogglePreview: [{ type: Output }],
|
|
3689
3727
|
visibleChange: [{ type: Output }],
|
|
3690
3728
|
hide: [{ type: Output }],
|
|
3691
3729
|
show: [{ type: Output }],
|
|
3692
|
-
dialog: [{ type: ViewChild, args: [Dialog,] }],
|
|
3693
3730
|
visible: [{ type: Input }],
|
|
3694
3731
|
onKeydownHandler: [{ type: HostListener, args: ['document:keydown.escape', ['$event'],] }],
|
|
3695
3732
|
onMousedown: [{ type: HostListener, args: ['document:mousedown', ['$event.target'],] }]
|
|
@@ -3799,7 +3836,8 @@ UiModule.decorators = [
|
|
|
3799
3836
|
OverlayPanelModule,
|
|
3800
3837
|
RouterModule,
|
|
3801
3838
|
DialogModule,
|
|
3802
|
-
AccordionModule
|
|
3839
|
+
AccordionModule,
|
|
3840
|
+
OverlayModule
|
|
3803
3841
|
],
|
|
3804
3842
|
exports: [
|
|
3805
3843
|
CommonModule,
|
|
@@ -4077,7 +4115,7 @@ class SideBarComponent extends UnsubscribeOnDestroy {
|
|
|
4077
4115
|
SideBarComponent.decorators = [
|
|
4078
4116
|
{ type: Component, args: [{
|
|
4079
4117
|
selector: 'eo-side-bar',
|
|
4080
|
-
template: "<div class=\"eo-side-bar\">\r\n <eo-icon (click)=\"close()\" (keydown.enter)=\"close()\" tabindex=\"0\" class=\"button white close\" [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\r\n\r\n <div class=\"head\" [style.background-image]=\"backgroundImage\">\r\n\r\n\r\n </div>\r\n\r\n <div class=\"body\">\r\n <a href=\"{{docu.link}}\" target=\"_blank\">\r\n <eo-icon class=\"button docu\" [iconTitle]=\"docu.label | translate\" [iconSrc]=\"'assets/_default/svg/ic_book.svg'\"></eo-icon>\r\n </a>\r\n <a routerLink=\"/about\"><eo-icon class=\"button about\" [iconTitle]=\"'eo.sidebar.help.about.tooltip' | translate\" [iconSrc]=\"'assets/_default/svg/ic_about.svg'\"></eo-icon></a>\r\n\r\n <p-tabView styleClass=\"tab-sidebar\">\r\n <p-tabPanel header=\"{{'eo.sidebar.navigation.title'|translate}}\" headerStyleClass=\"tab-nav\">\r\n\r\n <div class=\"navigation\">\r\n <div class=\"nav-item\" *ngIf=\"capabilities.favorites\">\r\n <a routerLink=\"/favorites\" routerLinkActive=\"active-link\" translate>eo.sidebar.navigation.favorites</a>\r\n </div>\r\n <div class=\"nav-item\" *ngIf=\"capabilities.inbox\">\r\n <a routerLink=\"/inbox\" routerLinkActive=\"active-link\" translate>eo.sidebar.navigation.inbox</a>\r\n </div>\r\n\r\n <div class=\"nav-item\" *ngIf=\"capabilities.intray\">\r\n <a routerLink=\"/prepare\" routerLinkActive=\"active-link\" translate>eo.sidebar.navigation.prepare</a>\r\n </div>\r\n\r\n <div class=\"nav-item\" *ngIf=\"capabilities.bpm\">\r\n <a routerLink=\"/process\" routerLinkActive=\"active-link\" translate>eo.sidebar.navigation.process</a>\r\n </div>\r\n\r\n <div class=\"nav-item\" *ngIf=\"capabilities.notifications\">\r\n <a routerLink=\"/notifications\" routerLinkActive=\"active-link\" translate>eo.sidebar.navigation.notifications</a>\r\n </div>\r\n\r\n <div class=\"nav-item\" *ngIf=\"capabilities.storedqueries\">\r\n <a routerLink=\"/stored-queries\" routerLinkActive=\"active-link\" translate>eo.sidebar.navigation.storedqueries</a>\r\n </div>\r\n <ng-content select=\".navi\"></ng-content>\r\n </div>\r\n\r\n </p-tabPanel>\r\n </p-tabView>\r\n </div>\r\n\r\n</div>\r\n",
|
|
4118
|
+
template: "<div class=\"eo-side-bar\" eoTrapFocus>\r\n <eo-icon (click)=\"close()\" (keydown.enter)=\"close()\" tabindex=\"0\" class=\"button white close\" [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" focusable></eo-icon>\r\n\r\n <div class=\"head\" [style.background-image]=\"backgroundImage\">\r\n\r\n\r\n </div>\r\n\r\n <div class=\"body\">\r\n <a href=\"{{docu.link}}\" target=\"_blank\">\r\n <eo-icon class=\"button docu\" [iconTitle]=\"docu.label | translate\" [iconSrc]=\"'assets/_default/svg/ic_book.svg'\"></eo-icon>\r\n </a>\r\n <a routerLink=\"/about\"><eo-icon class=\"button about\" [iconTitle]=\"'eo.sidebar.help.about.tooltip' | translate\" [iconSrc]=\"'assets/_default/svg/ic_about.svg'\"></eo-icon></a>\r\n\r\n <p-tabView styleClass=\"tab-sidebar\">\r\n <p-tabPanel header=\"{{'eo.sidebar.navigation.title'|translate}}\" headerStyleClass=\"tab-nav\">\r\n\r\n <div class=\"navigation\">\r\n <div class=\"nav-item\" *ngIf=\"capabilities.favorites\">\r\n <a routerLink=\"/favorites\" routerLinkActive=\"active-link\" translate>eo.sidebar.navigation.favorites</a>\r\n </div>\r\n <div class=\"nav-item\" *ngIf=\"capabilities.inbox\">\r\n <a routerLink=\"/inbox\" routerLinkActive=\"active-link\" translate>eo.sidebar.navigation.inbox</a>\r\n </div>\r\n\r\n <div class=\"nav-item\" *ngIf=\"capabilities.intray\">\r\n <a routerLink=\"/prepare\" routerLinkActive=\"active-link\" translate>eo.sidebar.navigation.prepare</a>\r\n </div>\r\n\r\n <div class=\"nav-item\" *ngIf=\"capabilities.bpm\">\r\n <a routerLink=\"/process\" routerLinkActive=\"active-link\" translate>eo.sidebar.navigation.process</a>\r\n </div>\r\n\r\n <div class=\"nav-item\" *ngIf=\"capabilities.notifications\">\r\n <a routerLink=\"/notifications\" routerLinkActive=\"active-link\" translate>eo.sidebar.navigation.notifications</a>\r\n </div>\r\n\r\n <div class=\"nav-item\" *ngIf=\"capabilities.storedqueries\">\r\n <a routerLink=\"/stored-queries\" routerLinkActive=\"active-link\" translate>eo.sidebar.navigation.storedqueries</a>\r\n </div>\r\n <ng-content select=\".navi\"></ng-content>\r\n </div>\r\n\r\n </p-tabPanel>\r\n </p-tabView>\r\n </div>\r\n\r\n</div>\r\n",
|
|
4081
4119
|
styles: [":host{--sidebar-header-height:250px}:host .eo-side-bar{-webkit-animation-duration:.2s;animation-duration:.2s;background-color:var(--color-primary);bottom:0;box-shadow:0 0 20px 0 rgba(var(--color-black-rgb),.5);position:absolute;top:0;width:300px;z-index:20}[dir=ltr] :host .eo-side-bar{left:0;right:inherit}[dir=rtl] :host .eo-side-bar{left:inherit;right:0}[dir=ltr] :host .eo-side-bar{-webkit-animation-name:sidebarAppearLeft;animation-name:sidebarAppearLeft}[dir=rtl] :host .eo-side-bar{-webkit-animation-name:sidebarAppearRight;animation-name:sidebarAppearRight}:host .eo-side-bar .close{position:absolute;top:var(--app-pane-padding);z-index:22}[dir=ltr] :host .eo-side-bar .close{left:var(--app-pane-padding)}[dir=rtl] :host .eo-side-bar .close{right:var(--app-pane-padding)}:host .eo-side-bar .head{background-position:50%;background-size:cover;height:var(--sidebar-header-height);left:0;position:absolute;right:0;top:0;z-index:21}:host .eo-side-bar .body ::ng-deep{bottom:0;left:0;position:absolute;right:0;top:calc(var(--sidebar-header-height) - 30px);z-index:22}:host .eo-side-bar .body ::ng-deep p-tabView{display:flex;flex:1;flex-direction:row;height:100%;min-height:0;min-width:0}:host .eo-side-bar .body ::ng-deep p-tabView .tab-sidebar{flex:1}:host .eo-side-bar .body ::ng-deep p-tabView .ui-tabview-panels{height:100%;overflow:auto}:host .eo-side-bar .body ::ng-deep .navigation{padding-top:var(--app-pane-padding)}:host .eo-side-bar .body ::ng-deep a:focus eo-icon,:host .eo-side-bar .body ::ng-deep a:hover eo-icon{background:rgba(var(--color-white-rgb),.1)}:host .eo-side-bar .body ::ng-deep eo-icon.about{color:var(--color-white);padding:3px;position:absolute;top:-6px}[dir=ltr] :host .eo-side-bar .body ::ng-deep eo-icon.about{right:8px}[dir=rtl] :host .eo-side-bar .body ::ng-deep eo-icon.about{left:8px}:host .eo-side-bar .body ::ng-deep eo-icon.docu{color:var(--color-white);padding:3px;position:absolute;top:-6px}[dir=ltr] :host .eo-side-bar .body ::ng-deep eo-icon.docu{right:43px}[dir=rtl] :host .eo-side-bar .body ::ng-deep eo-icon.docu{left:43px}:host .eo-side-bar .body ::ng-deep .nav-item{border-bottom:1px solid rgba(var(--color-white-rgb),.1)}:host .eo-side-bar .body ::ng-deep .nav-item a{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;color:var(--color-white);cursor:pointer;display:block;padding:var(--app-pane-padding);text-decoration:none;transition:all var(--app-default-transition-duration) ease-in-out}[dir=ltr] :host .eo-side-bar .body ::ng-deep .nav-item a{border-left:4px solid transparent}[dir=rtl] :host .eo-side-bar .body ::ng-deep .nav-item a{border-right:4px solid transparent}:host .eo-side-bar .body ::ng-deep .nav-item a.active-link{background:rgba(var(--color-white-rgb),.06);border-color:var(--color-accent);cursor:default}:host .eo-side-bar .body ::ng-deep .nav-item a:not(.active-link):focus,:host .eo-side-bar .body ::ng-deep .nav-item a:not(.active-link):hover{background:rgba(var(--color-white-rgb),.1)}@-webkit-keyframes sidebarAppearLeft{0%{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}@keyframes sidebarAppearLeft{0%{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}@-webkit-keyframes sidebarAppearRight{0%{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}@keyframes sidebarAppearRight{0%{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}"]
|
|
4082
4120
|
},] }
|
|
4083
4121
|
];
|
|
@@ -4781,12 +4819,12 @@ class AppSearchComponent {
|
|
|
4781
4819
|
AppSearchComponent.decorators = [
|
|
4782
4820
|
{ type: Component, args: [{
|
|
4783
4821
|
selector: 'eo-app-search',
|
|
4784
|
-
template: "<eo-dialog class=\"eo-app-search-dialog\" [appendTo]=\"''\" [visible]=\"true\" (hide)=\"closeSearchMenu($event)\">\r\n\r\n <div class=\"eo-app-search\" [ngClass]=\"{expert: query.expertMode}\" eoRtlAware=\"full\" *ngIf=\"query\">\r\n\r\n <div class=\"head\">\r\n\r\n <div class=\"search\">\r\n <form (submit)=\"executeSearch()\">\r\n <div class=\"title\" translate>eo.search</div>\r\n\r\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\r\n\r\n <div class=\"search-box\">\r\n <p-autoComplete *ngIf=\"!query.expertMode; else expertInput\" #searchInput class=\"form-control\"\r\n [(ngModel)]=\"query.term\" [ngModelOptions]=\"{standalone: true}\" [suggestions]=\"autocompleteResults\"\r\n (onSelect)=\"autocompleteSelect()\" (completeMethod)=\"autocompleteSuggest($event)\" (paste)=\"autocompletePaste($event)\"\r\n (onClear)=\"autocompleteSuggest()\" [delay]=\"500\" [minLength]=\"3\"></p-autoComplete>\r\n\r\n <ng-template #expertInput>\r\n <input autofocus=\"autofocus\" class=\"expert-search__input\" #xpinput type=\"text\"\r\n (ngModelChange)=\"expertTermChanged()\" [(ngModel)]=\"query.term\" [ngModelOptions]=\"{standalone: true}\">\r\n </ng-template>\r\n\r\n <button class=\"btn expert-mode\" type=\"button\" (click)=\"toggleExpertMode()\">\r\n <!--<span translate>eo.search.mode.expert</span>-->\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_expert-search.svg'\"\r\n [iconTitle]=\"('eo.search.mode.expert' | translate)\" *ngIf=\"!query?.expertMode; else close\"></eo-icon>\r\n <ng-template #close>\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_expert-search.svg'\"\r\n [iconTitle]=\"('eo.search.mode.expert.close' | translate)\"></eo-icon>\r\n </ng-template>\r\n </button>\r\n\r\n <button type=\"button\" class=\"btn expert-mode expert-mode__reset\" [ngClass]=\"{active: query.term}\"\r\n (click)=\"resetExpertModeInput()\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"\r\n [iconTitle]=\"('eo.search.clear.search' | translate)\"></eo-icon>\r\n </button>\r\n\r\n <button class=\"btn btn-default\" type=\"submit\" [disabled]=\"queryState.isEmpty\"\r\n translate>eo.search.submit</button>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <div class=\"result\" *ngIf=\"!loading; else spinner\">{{queryState.totalCount | localeDecimal}}</div>\r\n <ng-template #spinner>\r\n <eo-loading-spinner class=\"search-aggregator__loader\" [size]=\"'medium'\" [mode]=\"'dark'\"></eo-loading-spinner>\r\n </ng-template>\r\n <eo-icon class=\"button white close\" [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"\r\n [iconTitle]=\"('eo.search.close' | translate)\" (click)=\"closeSearchMenu($event)\"></eo-icon>\r\n\r\n </div>\r\n\r\n <div class=\"body\" *ngIf=\"!query.expertMode; else expert\">\r\n\r\n <p-tabView [styleClass]=\"'tab-main'\" (onChange)=\"onTabChange($event.index)\" [activeIndex]=\"activeTabIndex\">\r\n <!-- object type restriction panel -->\r\n <p-tabPanel header=\"{{'eo.search.restrict.type'|translate}}\" headerStyleClass=\"search-tab-objecttype\">\r\n\r\n <!-- object type selection -->\r\n <div class=\"object-types rest-box-container\" [ngClass]=\"{idxenabled: query.types.length < 1}\"\r\n *ngIf=\"objectTypeGroups && !idxSearch\">\r\n <div class=\"group rest-box\" *ngFor=\"let group of objectTypeGroups\">\r\n <h3 *ngIf=\"group.label !== '0'\">{{group.label}}</h3>\r\n <h3 *ngIf=\"group.label === '0'\" translate>{{'eo.search.group.general'}}</h3>\r\n <div class=\"type\" *ngFor=\"let type of group.types\"\r\n [ngClass]=\"{context: type.isContextFolder, folder: type.isFolder, abstract: type.isAbstract, selected: isTypeActive(type), saved: isTypeSaved(type)}\">\r\n\r\n <div class=\"checkbox\" (click)=\"toggleType(type)\">\r\n <svg fill=\"#ffffff\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />\r\n </svg>\r\n </div>\r\n <div class=\"item\" (click)=\"selectObjectType(type)\">\r\n <eo-icon [objectType]=\"type\"></eo-icon>\r\n <div class=\"label\">{{type.label}} {{type.isAbstract ? '('+ ('eo.search.type.abstract' | translate) + ')' : ''}}</div>\r\n <div class=\"count\">{{getAggregationCount(type) | localeDecimal}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- indexdata search -->\r\n <div class=\"indexdata-search\" *ngIf=\"idxSearch\">\r\n <h2>\r\n <eo-icon class=\"button\" [iconSrc]=\"'assets/_default/svg/ic_arrow_back.svg'\"\r\n (click)=\"exitIndexdataSearch()\"></eo-icon>\r\n <span translate [translateParams]=\"{type: idxSearch.type.label}\">eo.search.objecttype.form</span>\r\n </h2>\r\n\r\n <!-- context type selection -->\r\n <div class=\"context\" *ngIf=\"idxSearch.contextModels.length\">\r\n\r\n <div class=\"context-select\">\r\n <div translate>eo.search.objecttype.form.context</div>\r\n <div class=\"spacer\"></div>\r\n\r\n <eo-context-search *ngFor=\"let ctx of idxSearch.contextModels; index as i\" [ctx]=\"ctx\" [query]=\"query\"\r\n [selected]=\"currentContextFolderName === ctx.name\"\r\n [disabled]=\"(currentContextFolderName && currentContextFolderName !== ctx.name)\"\r\n [idxSearch]=\"idxSearch\" (setContext)=\"setContext($event)\">\r\n </eo-context-search>\r\n </div>\r\n\r\n <section class=\"context form\">\r\n <eo-object-form class=\"dark\" #ctxform\r\n *ngIf=\"idxSearch.contextFormOptions && idxSearch.contextFormOptions?.formModel?.elements?.length\"\r\n [formOptions]=\"idxSearch.contextFormOptions\" (statusChanged)=\"onIndexDataChanged($event)\">\r\n </eo-object-form>\r\n </section>\r\n </div>\r\n\r\n\r\n <section class=\"object-type form\" *ngIf=\"idxSearch.formOptions\">\r\n <eo-object-form #idxform [formOptions]=\"idxSearch.formOptions\"\r\n (statusChanged)=\"onIndexDataChanged($event)\" (onFormReady)=\"idxform.focusForm()\">\r\n </eo-object-form>\r\n </section>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <!-- created restriction panel -->\r\n <p-tabPanel header=\"{{'eo.search.restrict.creation' | translate}}\" headerStyleClass=\"search-tab-created\">\r\n\r\n <div class=\"created rest-box-container\" *ngIf=\"queryState.aggregations\">\r\n\r\n <div class=\"rest-box box-timespan\">\r\n <h3 translate>eo.search.agg.time.span</h3>\r\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.CREATED]\"\r\n (click)=\"toggleFilter(PARAMS.CREATED, OPERATOR.RANGE, agg.key, agg.selected)\"\r\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\r\n <div class=\"label\">{{agg.label}}</div>\r\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"rest-box box-timespan-custom\">\r\n <h3 translate>eo.search.agg.time.span.custom</h3>\r\n <form #createdForm=\"ngForm\">\r\n <eo-form-input [label]=\"'eo.search.agg.time.span' | translate\">\r\n <eo-datetime-range #createdField [(ngModel)]=\"filtersModel[PARAMS.CREATED].value\" name=\"range\"\r\n [operator]=\"filtersModel[PARAMS.CREATED].value ? filtersModel[PARAMS.CREATED].value.operator : OPERATOR.EQUAL\"\r\n [withTime]=\"createdField.searchOption && createdField.searchOption !== OPERATOR.EQUAL\"\r\n (ngModelChange)=\"setFilter(PARAMS.CREATED, OPERATOR.EQUAL, $event, createdForm)\">\r\n </eo-datetime-range>\r\n </eo-form-input>\r\n </form>\r\n </div>\r\n\r\n <div class=\"rest-box box-creator\">\r\n <h3 translate>eo.search.agg.creator</h3>\r\n <form #creatorForm=\"ngForm\">\r\n <eo-form-input [label]=\"'eo.search.agg.createdby' | translate\">\r\n <eo-organization [multiselect]=\"true\" [(ngModel)]=\"filtersModel[PARAMS.CREATOR].value\" name=\"creator\"\r\n (onValueResolved)=\"resolveLabel(filtersModel[PARAMS.CREATOR], $event)\" [situation]=\"'SEARCH'\"\r\n (ngModelChange)=\"setFilter(PARAMS.CREATOR, OPERATOR.IN, $event, creatorForm)\"></eo-organization>\r\n </eo-form-input>\r\n </form>\r\n </div>\r\n\r\n </div>\r\n\r\n </p-tabPanel>\r\n <p-tabPanel header=\"{{'eo.search.restrict.modification'|translate}}\" headerStyleClass=\"search-tab-changed\">\r\n\r\n <div class=\"modified rest-box-container\" *ngIf=\"queryState.aggregations\">\r\n\r\n <div class=\"rest-box box-timespan\">\r\n <h3 translate>eo.search.agg.time.span</h3>\r\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.MODIFIED]\"\r\n (click)=\"toggleFilter(PARAMS.MODIFIED, OPERATOR.RANGE, agg.key, agg.selected)\"\r\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\r\n <div class=\"label\">{{agg.label}}</div>\r\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"rest-box box-timespan-custom\">\r\n <h3 translate>eo.search.agg.time.span.custom</h3>\r\n <form #modifiedForm=\"ngForm\">\r\n <eo-form-input [label]=\"'eo.search.agg.time.span' | translate\">\r\n <eo-datetime-range #modifiedField [(ngModel)]=\"filtersModel[PARAMS.MODIFIED].value\" name=\"range\"\r\n [operator]=\"filtersModel[PARAMS.MODIFIED].value ? filtersModel[PARAMS.MODIFIED].value.operator : OPERATOR.EQUAL\"\r\n [withTime]=\"modifiedField.searchOption && modifiedField.searchOption !== OPERATOR.EQUAL\"\r\n (ngModelChange)=\"setFilter(PARAMS.MODIFIED, OPERATOR.EQUAL, $event, modifiedForm)\">\r\n </eo-datetime-range>\r\n </eo-form-input>\r\n </form>\r\n </div>\r\n\r\n <div class=\"rest-box box-modifier\">\r\n <h3 translate>eo.search.agg.modifier</h3>\r\n <form #modifierForm=\"ngForm\">\r\n <eo-form-input [label]=\"'eo.search.agg.modifiedby' | translate\">\r\n <eo-organization [multiselect]=\"true\" [(ngModel)]=\"filtersModel[PARAMS.MODIFIER].value\"\r\n name=\"modifier\" (onValueResolved)=\"resolveLabel(filtersModel[PARAMS.MODIFIER], $event)\"\r\n [situation]=\"'SEARCH'\"\r\n (ngModelChange)=\"setFilter(PARAMS.MODIFIER, OPERATOR.IN, $event, modifierForm)\"></eo-organization>\r\n </eo-form-input>\r\n </form>\r\n </div>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel header=\"{{'eo.search.restrict.file'|translate}}\" headerStyleClass=\"search-tab-docfile\">\r\n <div class=\"file rest-box-container\" *ngIf=\"queryState.aggregations\">\r\n\r\n <div class=\"rest-box box-mimetype-group\">\r\n <h3 translate>eo.search.restrict.mimetypegroup</h3>\r\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.MIMETYPEGROUP]\"\r\n (click)=\"setFilter(PARAMS.MIMETYPEGROUP, OPERATOR.IN, resolveSelection(aggregationsModel[PARAMS.MIMETYPEGROUP], agg.key, agg.selected))\"\r\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\r\n <div class=\"checkbox\">\r\n <svg fill=\"#ffffff\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />\r\n </svg>\r\n </div>\r\n <div class=\"label\">{{agg.label}}</div>\r\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"rest-box box-filesize\">\r\n <h3 translate>eo.search.restrict.filesize</h3>\r\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.FILESIZE]\"\r\n (click)=\"toggleFilter(PARAMS.FILESIZE, OPERATOR.RANGE, agg.key, agg.selected)\"\r\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\r\n <div class=\"label\">{{agg.label}}</div>\r\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"rest-box box-filename\">\r\n <h3 translate>eo.search.restrict.filename</h3>\r\n <form #filenameForm=\"ngForm\">\r\n <eo-form-input [label]=\"'eo.search.restrict.filename' | translate\">\r\n <eo-string [autocomplete]=\"true\" [qname]=\"'filename'\"\r\n [(ngModel)]=\"filtersModel[PARAMS.FILENAME].value\" name=\"filename\"\r\n (ngModelChange)=\"setFilter(PARAMS.FILENAME, OPERATOR.EQUAL, $event, filenameForm)\"></eo-string>\r\n </eo-form-input>\r\n </form>\r\n </div>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n\r\n\r\n <!-- summary of the current search filters -->\r\n <div class=\"summary-panel\">\r\n\r\n <div class=\"headline stored-query\" *ngIf=\"isStoredQuery; else reghead\">\r\n <div class=\"pre\" translate>eo.search.aside.summary.storedquery</div>\r\n <div class=\"stored-query-name\">{{storedQuery.name}}</div>\r\n </div>\r\n\r\n <ng-template #reghead>\r\n <div class=\"headline\" translate>eo.search.aside.summary</div>\r\n </ng-template>\r\n\r\n <section class=\"query-types\">\r\n <!-- search term -->\r\n <div class=\"section section-searchterm\" *ngIf=\"query.term\">\r\n <div class=\"title\" translate>eo.search.aside.summary.term</div>\r\n <div class=\"filter\">\r\n <div class=\"label\">{{query.term}}</div>\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeTerm()\"></eo-icon>\r\n </div>\r\n </div>\r\n\r\n <!-- context type -->\r\n <div class=\"section section-contexttype\" *ngIf=\"query.contextFolderTypes.length\">\r\n <div class=\"title\" translate>eo.search.aside.summary.contextfoldertypes</div>\r\n <div class=\"filter\" *ngFor=\"let type of query.contextFolderTypes\">\r\n <div class=\"label\">{{type.label}}</div>\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeContextType()\"></eo-icon>\r\n </div>\r\n </div>\r\n\r\n <!-- object type -->\r\n <div class=\"section section-objecttype\" *ngIf=\"query.types.length\">\r\n <div class=\"title\" translate>eo.search.aside.summary.types</div>\r\n <div class=\"filter\" *ngFor=\"let type of query.types\">\r\n <div class=\"label\">{{type.label}}</div>\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeType(type)\"></eo-icon>\r\n </div>\r\n </div>\r\n\r\n <ng-template #filterTemplate let-filter let-translate>\r\n <ng-container *ngIf=\"filter.innerValue.length\">\r\n <div class=\"filter\" *ngFor=\"let val of filter.innerValue; index as i\">\r\n <div class=\"label\">{{filter.label[i] | async}}</div>\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"resetFilter(filter, val)\"></eo-icon>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <div class=\"section section-creation\"\r\n *ngIf=\"filtersModel[PARAMS.CREATED].innerValue.length || filtersModel[PARAMS.CREATOR].innerValue.length\">\r\n <div class=\"title\" translate>eo.search.restrict.creation</div>\r\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.CREATED] }\"></ng-template>\r\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.CREATOR] }\"></ng-template>\r\n </div>\r\n\r\n <div class=\"section section-modification\"\r\n *ngIf=\"filtersModel[PARAMS.MODIFIED].innerValue.length || filtersModel[PARAMS.MODIFIER].innerValue.length\">\r\n <div class=\"title\" translate>eo.search.restrict.modification</div>\r\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MODIFIED] }\"></ng-template>\r\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MODIFIER] }\"></ng-template>\r\n </div>\r\n\r\n <div class=\"section section-mimetypegroup\"\r\n *ngIf=\"filtersModel[PARAMS.MIMETYPEGROUP].innerValue.length || filtersModel[PARAMS.FILESIZE].innerValue.length || filtersModel[PARAMS.FILENAME].innerValue.length\">\r\n <div class=\"title\" translate>eo.search.restrict.file</div>\r\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MIMETYPEGROUP] }\"></ng-template>\r\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.FILESIZE] }\"></ng-template>\r\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.FILENAME] }\"></ng-template>\r\n </div>\r\n </section>\r\n\r\n <div class=\"actions\" *ngIf=\"query.term || query.filters.length || query.types.length; else emptySearch\">\r\n\r\n <ng-container *ngIf=\"isStoredQuery; else regactions\">\r\n <button class=\"secondary btn-reset\" (click)=\"resetQuery()\" translate>eo.search.storedquery.close</button>\r\n <button class=\"primary grey btn-update\" (click)=\"updateStoredQuery()\"\r\n *ngIf=\"capabilities.storedqueries && isOwnQuery\" translate>eo.search.storedquery.update</button>\r\n <button class=\"primary grey btn-save\" (click)=\"saveQuery()\"\r\n *ngIf=\"capabilities.storedqueries && !isOwnQuery\" translate>eo.search.save</button>\r\n <button class=\"primary btn-submit\" (click)=\"executeSearch()\" [disabled]=\"queryState.isEmpty\"\r\n translate>eo.search.submit</button>\r\n </ng-container>\r\n\r\n <ng-template #regactions>\r\n <button class=\"primary grey btn-reset\" (click)=\"resetQuery()\" translate>eo.search.reset</button>\r\n <button class=\"primary grey btn-save\" (click)=\"saveQuery()\"\r\n *ngIf=\"capabilities.storedqueries && !isOwnQuery\" translate>eo.search.save</button>\r\n <button class=\"primary btn-submit\" (click)=\"executeSearch()\" [disabled]=\"queryState.isEmpty\"\r\n translate>eo.search.submit</button>\r\n </ng-template>\r\n\r\n\r\n </div>\r\n\r\n <ng-template #emptySearch>\r\n <div class=\"empty-search\" translate>eo.search.summary.empty</div>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <!-- expert mode body panel containing explanations -->\r\n <ng-template #expert>\r\n <div class=\"body expert\">\r\n\r\n <div class=\"empty\" *ngIf=\"expertModeQueryEmpty\"><span translate>eo.search.mode.expert.result.empty</span></div>\r\n\r\n <!--\r\n <h2><span translate>eo.search.mode.expert</span></h2>\r\n <div class=\"intro\" translate>eo.search.mode.expert.intro</div>\r\n\r\n <div class=\"base-params fields\">\r\n <h2 translate>eo.search.mode.expert.support.baseparams</h2>\r\n <div class=\"items\">\r\n <div class=\"item\" *ngFor=\"let el of expertModeSupport.baseParams\" (click)=\"xpAddToTerm(el.data)\">\r\n <div class=\"label\"><span>{{el.label}}</span></div>\r\n <div class=\"data\">{{el.data}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"system-types fields\">\r\n\r\n <div class=\"column column-group\">\r\n <h2 translate>eo.search.mode.expert.support.group</h2>\r\n <div class=\"items\">\r\n <div class=\"item\" *ngFor=\"let group of typeGroupTree\"\r\n [ngClass]=\"{selected: expertModeSupport.selectedGroup && group.id === expertModeSupport.selectedGroup.id}\"\r\n (click)=\"xpSelectGroup(group)\">\r\n <div *ngIf=\"group.label !== '0'\">{{group.label}}</div>\r\n <div *ngIf=\"group.label === '0'\">{{'eo.search.group.general' | translate}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"column column-type\" *ngIf=\"expertModeSupport.selectedGroup\">\r\n <h2 translate>eo.search.mode.expert.support.type</h2>\r\n <div class=\"items\">\r\n <div class=\"item\" *ngFor=\"let type of expertModeSupport.selectedGroup.tree\"\r\n [ngClass]=\"{selected: expertModeSupport.selectedType && type.id === expertModeSupport.selectedType.id}\"\r\n (click)=\"xpSelectType(type)\">\r\n <div>{{type.label}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"column section-field\" *ngIf=\"expertModeSupport.selectedType\">\r\n <h2 translate>eo.search.mode.expert.support.field</h2>\r\n <div class=\"items\">\r\n <div class=\"item\" *ngFor=\"let el of expertModeSupport.selectedType.children\" (click)=\"xpAddToTerm(el.data)\">\r\n <div class=\"label\"><span>{{el.label}}</span><span class=\"type\">{{el.type}}</span></div>\r\n <div class=\"data\">{{el.data}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n -->\r\n </div>\r\n </ng-template>\r\n </div>\r\n</eo-dialog>\r\n",
|
|
4822
|
+
template: "<eo-dialog [visible]=\"true\" [styleClass]=\"'eo-app-search-dialog'\" [align]=\"'start'\" [minWidth]=\"'80vw'\" [minHeight]=\"'100vh'\" (hide)=\"closeSearchMenu($event)\">\r\n\r\n <div class=\"eo-app-search\" [ngClass]=\"{expert: query.expertMode}\" eoRtlAware=\"full\" *ngIf=\"query\">\r\n\r\n <div class=\"head\">\r\n\r\n <div class=\"search\">\r\n <form (submit)=\"executeSearch()\">\r\n <div class=\"title\" translate>eo.search</div>\r\n\r\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\r\n\r\n <div class=\"search-box\">\r\n <p-autoComplete *ngIf=\"!query.expertMode; else expertInput\" #searchInput class=\"form-control\"\r\n [(ngModel)]=\"query.term\" [ngModelOptions]=\"{standalone: true}\" [suggestions]=\"autocompleteResults\"\r\n (onSelect)=\"autocompleteSelect()\" (completeMethod)=\"autocompleteSuggest($event)\" (paste)=\"autocompletePaste($event)\"\r\n (onClear)=\"autocompleteSuggest()\" [delay]=\"500\" [minLength]=\"3\"></p-autoComplete>\r\n\r\n <ng-template #expertInput>\r\n <input autofocus=\"autofocus\" class=\"expert-search__input\" #xpinput type=\"text\"\r\n (ngModelChange)=\"expertTermChanged()\" [(ngModel)]=\"query.term\" [ngModelOptions]=\"{standalone: true}\">\r\n </ng-template>\r\n\r\n <button class=\"btn expert-mode\" type=\"button\" (click)=\"toggleExpertMode()\">\r\n <!--<span translate>eo.search.mode.expert</span>-->\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_expert-search.svg'\"\r\n [iconTitle]=\"('eo.search.mode.expert' | translate)\" *ngIf=\"!query?.expertMode; else close\"></eo-icon>\r\n <ng-template #close>\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_expert-search.svg'\"\r\n [iconTitle]=\"('eo.search.mode.expert.close' | translate)\"></eo-icon>\r\n </ng-template>\r\n </button>\r\n\r\n <button type=\"button\" class=\"btn expert-mode expert-mode__reset\" [ngClass]=\"{active: query.term}\"\r\n (click)=\"resetExpertModeInput()\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"\r\n [iconTitle]=\"('eo.search.clear.search' | translate)\"></eo-icon>\r\n </button>\r\n\r\n <button class=\"btn btn-default\" type=\"submit\" [disabled]=\"queryState.isEmpty\"\r\n translate>eo.search.submit</button>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <div class=\"result\" *ngIf=\"!loading; else spinner\">{{queryState.totalCount | localeDecimal}}</div>\r\n <ng-template #spinner>\r\n <eo-loading-spinner class=\"search-aggregator__loader\" [size]=\"'medium'\" [mode]=\"'dark'\"></eo-loading-spinner>\r\n </ng-template>\r\n <eo-icon class=\"button white close\" [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"\r\n [iconTitle]=\"('eo.search.close' | translate)\" (click)=\"closeSearchMenu($event)\"></eo-icon>\r\n\r\n </div>\r\n\r\n <div class=\"body\" *ngIf=\"!query.expertMode; else expert\">\r\n\r\n <p-tabView [styleClass]=\"'tab-main'\" (onChange)=\"onTabChange($event.index)\" [activeIndex]=\"activeTabIndex\">\r\n <!-- object type restriction panel -->\r\n <p-tabPanel header=\"{{'eo.search.restrict.type'|translate}}\" headerStyleClass=\"search-tab-objecttype\">\r\n\r\n <!-- object type selection -->\r\n <div class=\"object-types rest-box-container\" [ngClass]=\"{idxenabled: query.types.length < 1}\"\r\n *ngIf=\"objectTypeGroups && !idxSearch\">\r\n <div class=\"group rest-box\" *ngFor=\"let group of objectTypeGroups\">\r\n <h3 *ngIf=\"group.label !== '0'\">{{group.label}}</h3>\r\n <h3 *ngIf=\"group.label === '0'\" translate>{{'eo.search.group.general'}}</h3>\r\n <div class=\"type\" *ngFor=\"let type of group.types\"\r\n [ngClass]=\"{context: type.isContextFolder, folder: type.isFolder, abstract: type.isAbstract, selected: isTypeActive(type), saved: isTypeSaved(type)}\">\r\n\r\n <div class=\"checkbox\" (click)=\"toggleType(type)\">\r\n <svg fill=\"#ffffff\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />\r\n </svg>\r\n </div>\r\n <div class=\"item\" (click)=\"selectObjectType(type)\">\r\n <eo-icon [objectType]=\"type\"></eo-icon>\r\n <div class=\"label\">{{type.label}} {{type.isAbstract ? '('+ ('eo.search.type.abstract' | translate) + ')' : ''}}</div>\r\n <div class=\"count\">{{getAggregationCount(type) | localeDecimal}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- indexdata search -->\r\n <div class=\"indexdata-search\" *ngIf=\"idxSearch\">\r\n <h2>\r\n <eo-icon class=\"button\" [iconSrc]=\"'assets/_default/svg/ic_arrow_back.svg'\"\r\n (click)=\"exitIndexdataSearch()\"></eo-icon>\r\n <span translate [translateParams]=\"{type: idxSearch.type.label}\">eo.search.objecttype.form</span>\r\n </h2>\r\n\r\n <!-- context type selection -->\r\n <div class=\"context\" *ngIf=\"idxSearch.contextModels.length\">\r\n\r\n <div class=\"context-select\">\r\n <div translate>eo.search.objecttype.form.context</div>\r\n <div class=\"spacer\"></div>\r\n\r\n <eo-context-search *ngFor=\"let ctx of idxSearch.contextModels; index as i\" [ctx]=\"ctx\" [query]=\"query\"\r\n [selected]=\"currentContextFolderName === ctx.name\"\r\n [disabled]=\"(currentContextFolderName && currentContextFolderName !== ctx.name)\"\r\n [idxSearch]=\"idxSearch\" (setContext)=\"setContext($event)\">\r\n </eo-context-search>\r\n </div>\r\n\r\n <section class=\"context form\">\r\n <eo-object-form class=\"dark\" #ctxform\r\n *ngIf=\"idxSearch.contextFormOptions && idxSearch.contextFormOptions?.formModel?.elements?.length\"\r\n [formOptions]=\"idxSearch.contextFormOptions\" (statusChanged)=\"onIndexDataChanged($event)\">\r\n </eo-object-form>\r\n </section>\r\n </div>\r\n\r\n\r\n <section class=\"object-type form\" *ngIf=\"idxSearch.formOptions\">\r\n <eo-object-form #idxform [formOptions]=\"idxSearch.formOptions\"\r\n (statusChanged)=\"onIndexDataChanged($event)\" (onFormReady)=\"idxform.focusForm()\">\r\n </eo-object-form>\r\n </section>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <!-- created restriction panel -->\r\n <p-tabPanel header=\"{{'eo.search.restrict.creation' | translate}}\" headerStyleClass=\"search-tab-created\">\r\n\r\n <div class=\"created rest-box-container\" *ngIf=\"queryState.aggregations\">\r\n\r\n <div class=\"rest-box box-timespan\">\r\n <h3 translate>eo.search.agg.time.span</h3>\r\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.CREATED]\"\r\n (click)=\"toggleFilter(PARAMS.CREATED, OPERATOR.RANGE, agg.key, agg.selected)\"\r\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\r\n <div class=\"label\">{{agg.label}}</div>\r\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"rest-box box-timespan-custom\">\r\n <h3 translate>eo.search.agg.time.span.custom</h3>\r\n <form #createdForm=\"ngForm\">\r\n <eo-form-input [label]=\"'eo.search.agg.time.span' | translate\">\r\n <eo-datetime-range #createdField [(ngModel)]=\"filtersModel[PARAMS.CREATED].value\" name=\"range\"\r\n [operator]=\"filtersModel[PARAMS.CREATED].value ? filtersModel[PARAMS.CREATED].value.operator : OPERATOR.EQUAL\"\r\n [withTime]=\"createdField.searchOption && createdField.searchOption !== OPERATOR.EQUAL\"\r\n (ngModelChange)=\"setFilter(PARAMS.CREATED, OPERATOR.EQUAL, $event, createdForm)\">\r\n </eo-datetime-range>\r\n </eo-form-input>\r\n </form>\r\n </div>\r\n\r\n <div class=\"rest-box box-creator\">\r\n <h3 translate>eo.search.agg.creator</h3>\r\n <form #creatorForm=\"ngForm\">\r\n <eo-form-input [label]=\"'eo.search.agg.createdby' | translate\">\r\n <eo-organization [multiselect]=\"true\" [(ngModel)]=\"filtersModel[PARAMS.CREATOR].value\" name=\"creator\"\r\n (onValueResolved)=\"resolveLabel(filtersModel[PARAMS.CREATOR], $event)\" [situation]=\"'SEARCH'\"\r\n (ngModelChange)=\"setFilter(PARAMS.CREATOR, OPERATOR.IN, $event, creatorForm)\"></eo-organization>\r\n </eo-form-input>\r\n </form>\r\n </div>\r\n\r\n </div>\r\n\r\n </p-tabPanel>\r\n <p-tabPanel header=\"{{'eo.search.restrict.modification'|translate}}\" headerStyleClass=\"search-tab-changed\">\r\n\r\n <div class=\"modified rest-box-container\" *ngIf=\"queryState.aggregations\">\r\n\r\n <div class=\"rest-box box-timespan\">\r\n <h3 translate>eo.search.agg.time.span</h3>\r\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.MODIFIED]\"\r\n (click)=\"toggleFilter(PARAMS.MODIFIED, OPERATOR.RANGE, agg.key, agg.selected)\"\r\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\r\n <div class=\"label\">{{agg.label}}</div>\r\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"rest-box box-timespan-custom\">\r\n <h3 translate>eo.search.agg.time.span.custom</h3>\r\n <form #modifiedForm=\"ngForm\">\r\n <eo-form-input [label]=\"'eo.search.agg.time.span' | translate\">\r\n <eo-datetime-range #modifiedField [(ngModel)]=\"filtersModel[PARAMS.MODIFIED].value\" name=\"range\"\r\n [operator]=\"filtersModel[PARAMS.MODIFIED].value ? filtersModel[PARAMS.MODIFIED].value.operator : OPERATOR.EQUAL\"\r\n [withTime]=\"modifiedField.searchOption && modifiedField.searchOption !== OPERATOR.EQUAL\"\r\n (ngModelChange)=\"setFilter(PARAMS.MODIFIED, OPERATOR.EQUAL, $event, modifiedForm)\">\r\n </eo-datetime-range>\r\n </eo-form-input>\r\n </form>\r\n </div>\r\n\r\n <div class=\"rest-box box-modifier\">\r\n <h3 translate>eo.search.agg.modifier</h3>\r\n <form #modifierForm=\"ngForm\">\r\n <eo-form-input [label]=\"'eo.search.agg.modifiedby' | translate\">\r\n <eo-organization [multiselect]=\"true\" [(ngModel)]=\"filtersModel[PARAMS.MODIFIER].value\"\r\n name=\"modifier\" (onValueResolved)=\"resolveLabel(filtersModel[PARAMS.MODIFIER], $event)\"\r\n [situation]=\"'SEARCH'\"\r\n (ngModelChange)=\"setFilter(PARAMS.MODIFIER, OPERATOR.IN, $event, modifierForm)\"></eo-organization>\r\n </eo-form-input>\r\n </form>\r\n </div>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel header=\"{{'eo.search.restrict.file'|translate}}\" headerStyleClass=\"search-tab-docfile\">\r\n <div class=\"file rest-box-container\" *ngIf=\"queryState.aggregations\">\r\n\r\n <div class=\"rest-box box-mimetype-group\">\r\n <h3 translate>eo.search.restrict.mimetypegroup</h3>\r\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.MIMETYPEGROUP]\"\r\n (click)=\"setFilter(PARAMS.MIMETYPEGROUP, OPERATOR.IN, resolveSelection(aggregationsModel[PARAMS.MIMETYPEGROUP], agg.key, agg.selected))\"\r\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\r\n <div class=\"checkbox\">\r\n <svg fill=\"#ffffff\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />\r\n </svg>\r\n </div>\r\n <div class=\"label\">{{agg.label}}</div>\r\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"rest-box box-filesize\">\r\n <h3 translate>eo.search.restrict.filesize</h3>\r\n <div class=\"rest-item\" *ngFor=\"let agg of aggregationsModel[PARAMS.FILESIZE]\"\r\n (click)=\"toggleFilter(PARAMS.FILESIZE, OPERATOR.RANGE, agg.key, agg.selected)\"\r\n [ngClass]=\"{selected: agg.selected, saved: agg.saved}\">\r\n <div class=\"label\">{{agg.label}}</div>\r\n <div class=\"count\">{{agg.value | localeDecimal}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"rest-box box-filename\">\r\n <h3 translate>eo.search.restrict.filename</h3>\r\n <form #filenameForm=\"ngForm\">\r\n <eo-form-input [label]=\"'eo.search.restrict.filename' | translate\">\r\n <eo-string [autocomplete]=\"true\" [qname]=\"'filename'\"\r\n [(ngModel)]=\"filtersModel[PARAMS.FILENAME].value\" name=\"filename\"\r\n (ngModelChange)=\"setFilter(PARAMS.FILENAME, OPERATOR.EQUAL, $event, filenameForm)\"></eo-string>\r\n </eo-form-input>\r\n </form>\r\n </div>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n\r\n\r\n <!-- summary of the current search filters -->\r\n <div class=\"summary-panel\">\r\n\r\n <div class=\"headline stored-query\" *ngIf=\"isStoredQuery; else reghead\">\r\n <div class=\"pre\" translate>eo.search.aside.summary.storedquery</div>\r\n <div class=\"stored-query-name\">{{storedQuery.name}}</div>\r\n </div>\r\n\r\n <ng-template #reghead>\r\n <div class=\"headline\" translate>eo.search.aside.summary</div>\r\n </ng-template>\r\n\r\n <section class=\"query-types\">\r\n <!-- search term -->\r\n <div class=\"section section-searchterm\" *ngIf=\"query.term\">\r\n <div class=\"title\" translate>eo.search.aside.summary.term</div>\r\n <div class=\"filter\">\r\n <div class=\"label\">{{query.term}}</div>\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeTerm()\"></eo-icon>\r\n </div>\r\n </div>\r\n\r\n <!-- context type -->\r\n <div class=\"section section-contexttype\" *ngIf=\"query.contextFolderTypes.length\">\r\n <div class=\"title\" translate>eo.search.aside.summary.contextfoldertypes</div>\r\n <div class=\"filter\" *ngFor=\"let type of query.contextFolderTypes\">\r\n <div class=\"label\">{{type.label}}</div>\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeContextType()\"></eo-icon>\r\n </div>\r\n </div>\r\n\r\n <!-- object type -->\r\n <div class=\"section section-objecttype\" *ngIf=\"query.types.length\">\r\n <div class=\"title\" translate>eo.search.aside.summary.types</div>\r\n <div class=\"filter\" *ngFor=\"let type of query.types\">\r\n <div class=\"label\">{{type.label}}</div>\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"removeType(type)\"></eo-icon>\r\n </div>\r\n </div>\r\n\r\n <ng-template #filterTemplate let-filter let-translate>\r\n <ng-container *ngIf=\"filter.innerValue.length\">\r\n <div class=\"filter\" *ngFor=\"let val of filter.innerValue; index as i\">\r\n <div class=\"label\">{{filter.label[i] | async}}</div>\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"resetFilter(filter, val)\"></eo-icon>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <div class=\"section section-creation\"\r\n *ngIf=\"filtersModel[PARAMS.CREATED].innerValue.length || filtersModel[PARAMS.CREATOR].innerValue.length\">\r\n <div class=\"title\" translate>eo.search.restrict.creation</div>\r\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.CREATED] }\"></ng-template>\r\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.CREATOR] }\"></ng-template>\r\n </div>\r\n\r\n <div class=\"section section-modification\"\r\n *ngIf=\"filtersModel[PARAMS.MODIFIED].innerValue.length || filtersModel[PARAMS.MODIFIER].innerValue.length\">\r\n <div class=\"title\" translate>eo.search.restrict.modification</div>\r\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MODIFIED] }\"></ng-template>\r\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MODIFIER] }\"></ng-template>\r\n </div>\r\n\r\n <div class=\"section section-mimetypegroup\"\r\n *ngIf=\"filtersModel[PARAMS.MIMETYPEGROUP].innerValue.length || filtersModel[PARAMS.FILESIZE].innerValue.length || filtersModel[PARAMS.FILENAME].innerValue.length\">\r\n <div class=\"title\" translate>eo.search.restrict.file</div>\r\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.MIMETYPEGROUP] }\"></ng-template>\r\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.FILESIZE] }\"></ng-template>\r\n <ng-template [ngTemplateOutlet]=\"filterTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: filtersModel[PARAMS.FILENAME] }\"></ng-template>\r\n </div>\r\n </section>\r\n\r\n <div class=\"actions\" *ngIf=\"query.term || query.filters.length || query.types.length; else emptySearch\">\r\n\r\n <ng-container *ngIf=\"isStoredQuery; else regactions\">\r\n <button class=\"secondary btn-reset\" (click)=\"resetQuery()\" translate>eo.search.storedquery.close</button>\r\n <button class=\"primary grey btn-update\" (click)=\"updateStoredQuery()\"\r\n *ngIf=\"capabilities.storedqueries && isOwnQuery\" translate>eo.search.storedquery.update</button>\r\n <button class=\"primary grey btn-save\" (click)=\"saveQuery()\"\r\n *ngIf=\"capabilities.storedqueries && !isOwnQuery\" translate>eo.search.save</button>\r\n <button class=\"primary btn-submit\" (click)=\"executeSearch()\" [disabled]=\"queryState.isEmpty\"\r\n translate>eo.search.submit</button>\r\n </ng-container>\r\n\r\n <ng-template #regactions>\r\n <button class=\"primary grey btn-reset\" (click)=\"resetQuery()\" translate>eo.search.reset</button>\r\n <button class=\"primary grey btn-save\" (click)=\"saveQuery()\"\r\n *ngIf=\"capabilities.storedqueries && !isOwnQuery\" translate>eo.search.save</button>\r\n <button class=\"primary btn-submit\" (click)=\"executeSearch()\" [disabled]=\"queryState.isEmpty\"\r\n translate>eo.search.submit</button>\r\n </ng-template>\r\n\r\n\r\n </div>\r\n\r\n <ng-template #emptySearch>\r\n <div class=\"empty-search\" translate>eo.search.summary.empty</div>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <!-- expert mode body panel containing explanations -->\r\n <ng-template #expert>\r\n <div class=\"body expert\">\r\n\r\n <div class=\"empty\" *ngIf=\"expertModeQueryEmpty\"><span translate>eo.search.mode.expert.result.empty</span></div>\r\n\r\n <!--\r\n <h2><span translate>eo.search.mode.expert</span></h2>\r\n <div class=\"intro\" translate>eo.search.mode.expert.intro</div>\r\n\r\n <div class=\"base-params fields\">\r\n <h2 translate>eo.search.mode.expert.support.baseparams</h2>\r\n <div class=\"items\">\r\n <div class=\"item\" *ngFor=\"let el of expertModeSupport.baseParams\" (click)=\"xpAddToTerm(el.data)\">\r\n <div class=\"label\"><span>{{el.label}}</span></div>\r\n <div class=\"data\">{{el.data}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"system-types fields\">\r\n\r\n <div class=\"column column-group\">\r\n <h2 translate>eo.search.mode.expert.support.group</h2>\r\n <div class=\"items\">\r\n <div class=\"item\" *ngFor=\"let group of typeGroupTree\"\r\n [ngClass]=\"{selected: expertModeSupport.selectedGroup && group.id === expertModeSupport.selectedGroup.id}\"\r\n (click)=\"xpSelectGroup(group)\">\r\n <div *ngIf=\"group.label !== '0'\">{{group.label}}</div>\r\n <div *ngIf=\"group.label === '0'\">{{'eo.search.group.general' | translate}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"column column-type\" *ngIf=\"expertModeSupport.selectedGroup\">\r\n <h2 translate>eo.search.mode.expert.support.type</h2>\r\n <div class=\"items\">\r\n <div class=\"item\" *ngFor=\"let type of expertModeSupport.selectedGroup.tree\"\r\n [ngClass]=\"{selected: expertModeSupport.selectedType && type.id === expertModeSupport.selectedType.id}\"\r\n (click)=\"xpSelectType(type)\">\r\n <div>{{type.label}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"column section-field\" *ngIf=\"expertModeSupport.selectedType\">\r\n <h2 translate>eo.search.mode.expert.support.field</h2>\r\n <div class=\"items\">\r\n <div class=\"item\" *ngFor=\"let el of expertModeSupport.selectedType.children\" (click)=\"xpAddToTerm(el.data)\">\r\n <div class=\"label\"><span>{{el.label}}</span><span class=\"type\">{{el.type}}</span></div>\r\n <div class=\"data\">{{el.data}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n -->\r\n </div>\r\n </ng-template>\r\n </div>\r\n</eo-dialog>\r\n",
|
|
4785
4823
|
encapsulation: ViewEncapsulation.None
|
|
4786
4824
|
// todo: apply onPush change detection (agg search result right now doesn't update)
|
|
4787
4825
|
// changeDetection: ChangeDetectionStrategy.OnPush
|
|
4788
4826
|
,
|
|
4789
|
-
styles: [".eo-app-search-dialog>p-dialog>.ui-dialog{bottom:0!important;max-width:100%!important;min-width:500px!important;top:0!important;width:80%!important}[dir=ltr] .eo-app-search-dialog>p-dialog>.ui-dialog{left:0!important}[dir=rtl] .eo-app-search-dialog>p-dialog>.ui-dialog{left:auto!important}[dir=ltr] .eo-app-search-dialog>p-dialog>.ui-dialog{right:auto!important}[dir=rtl] .eo-app-search-dialog>p-dialog>.ui-dialog{right:0!important}[dir=ltr] .eo-app-search-dialog>p-dialog>.ui-dialog{-webkit-animation:appSearchAppear calc(var(--app-default-transition-duration)*2)!important;animation:appSearchAppear calc(var(--app-default-transition-duration)*2)!important}[dir=rtl] .eo-app-search-dialog>p-dialog>.ui-dialog{-webkit-animation:appSearchAppearRTL calc(var(--app-default-transition-duration)*2)!important;animation:appSearchAppearRTL calc(var(--app-default-transition-duration)*2)!important}@media (max-width:500px){.eo-app-search-dialog>p-dialog>.ui-dialog{min-width:inherit;width:100%!important}}.eo-app-search-dialog>p-dialog>.ui-dialog>.ui-dialog-content,.eo-app-search-dialog>p-dialog>.ui-dialog>.ui-dialog-content>.eo-dialog{height:100%}.eo-app-search-dialog>p-dialog>.ui-dialog>.ui-dialog-content>.eo-dialog>.eo-dialog-content{max-height:100%;overflow:inherit}.eo-app-search-dialog>p-dialog>.ui-dialog>.ui-dialog-content>.eo-dialog>.eo-dialog-header{display:none}.eo-app-search.rtl .head .close{left:var(--app-pane-padding);right:auto}.eo-app-search.rtl .body .indexdata-search h2 eo-icon{transform:rotate(180deg)}.eo-app-search{--search-box-max-width:600px;--search-min-width:500px;--search-summary-width:350px;background:var(--panel-background-grey);bottom:0;display:flex;flex:1;flex-direction:column;left:0;min-height:0;min-width:0;position:absolute;right:0;top:0}.eo-app-search .head{background:var(--color-primary-2);color:var(--color-white);display:flex;flex:0 0 auto;flex-flow:row nowrap;padding:var(--app-pane-padding) calc(var(--app-pane-padding)/2) 0 calc(var(--app-pane-padding)/2);position:relative}.eo-app-search .head .search{flex:1 1 auto;justify-content:space-between;margin:0 calc(var(--app-pane-padding)/2);z-index:2}.eo-app-search .head .search .title{font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em;min-height:1em}@media (max-width:480px){.eo-app-search .head .search .title{font-size:var(--font-title)}}.eo-app-search .head .search .query-scope{margin:calc(var(--app-pane-padding)*2) 0 0 0;max-width:var(--search-box-max-width);min-width:var(--search-min-width)}.eo-app-search .head .search .search-box{align-items:stretch;background:var(--color-white);box-shadow:0 2px 2px 0 rgba(var(--color-black-rgb),.2);display:flex;flex-flow:row nowrap;margin-bottom:var(--app-pane-padding);max-width:var(--search-box-max-width)}@media (max-width:480px){.eo-app-search .head .search .search-box{margin-top:var(--app-pane-padding)}}.eo-app-search .head .search .search-box p-autocomplete{background:transparent;border:0;flex:1 1 auto;outline:0}.eo-app-search .head .search .search-box p-autocomplete span.ui-autocomplete{width:100%}.eo-app-search .head .search .search-box input{border:0;box-sizing:border-box;font-size:var(--font-title);padding:calc(var(--app-pane-padding)/2);width:100%}.eo-app-search .head .search .search-box input::-ms-clear{display:none}.eo-app-search .head .search .search-box button[type=submit]{background:var(--color-accent);border:0;color:var(--color-white);font-size:var(--font-subhead);padding:0 var(--app-pane-padding)}.eo-app-search .head .search .search-box button.expert-mode{align-items:center;background:transparent;border:0;color:var(--text-color-hint);display:flex;padding:0 calc(var(--app-pane-padding)/2)}.eo-app-search .head .search .search-box button.expert-mode__reset{opacity:0;padding:0;transition:all .2s ease-in-out;width:0}.eo-app-search .head .search .search-box button.expert-mode__reset.active{opacity:1;padding:0 8px;width:40px}.eo-app-search .head .search .search-box button.expert-mode span{-webkit-animation:eoFadeIn var(--app-default-transition-duration);animation:eoFadeIn var(--app-default-transition-duration);display:none;padding:calc(var(--app-pane-padding)/4);white-space:nowrap}.eo-app-search .head .search .search-box button.expert-mode:hover{color:var(--color-accent)}.eo-app-search .head .search .search-box button.expert-mode:hover span{display:block}.eo-app-search .head .result{font-size:7em;line-height:1em;opacity:.1;position:absolute;right:var(--app-pane-padding);top:calc(var(--app-pane-padding)*2.5);z-index:1}@media (max-width:900px){.eo-app-search .head .result{font-size:3em;right:calc(var(--app-pane-padding)*3);top:var(--app-pane-padding)}}.eo-app-search .head .search-aggregator__loader{-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s;position:absolute;right:13%;top:30%;z-index:11}@media (max-width:900px){.eo-app-search .head .search-aggregator__loader{top:5%}}.eo-app-search .head .close{position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding);z-index:2}.eo-app-search .body{background:rgba(var(--color-white-rgb),.2);flex:1 1 auto;position:relative}@media (max-width:1000px){.eo-app-search .body .summary-panel{bottom:0;display:flex;flex-flow:row nowrap;left:0!important;right:0!important;top:auto!important;width:auto!important}.eo-app-search .body .summary-panel .headline:not(.stored-query),.eo-app-search .body .summary-panel .section{display:none}.eo-app-search .body .summary-panel .headline.stored-query{align-items:center;display:flex;margin-bottom:0;padding:0 var(--app-pane-padding)}.eo-app-search .body .summary-panel .headline.stored-query .pre{display:none}.eo-app-search .body .summary-panel .headline.stored-query .stored-query-name{font-size:var(--font-subhead)!important}.eo-app-search .body .summary-panel .actions{flex:1 1 auto}.eo-app-search .body .ui-tabview .ui-tabview-panels{padding-left:0!important;padding-right:0!important}.eo-app-search .body .ui-tabview.tab-main{bottom:50px!important}}.eo-app-search .body .summary-panel{background:rgba(var(--color-black-rgb),.06);box-sizing:border-box;position:absolute;right:var(--app-pane-padding);top:calc(var(--app-pane-padding) + 35px);width:var(--search-summary-width)}.eo-app-search .body .summary-panel .query-types{max-height:calc(100vh - 290px);overflow:auto}.eo-app-search .body .summary-panel .headline{color:var(--text-color-caption);font-size:var(--font-subhead);font-weight:var(--font-weight-light);line-height:1em;margin-bottom:calc(var(--app-pane-padding)/2);padding:calc(var(--app-pane-padding)/2)}.eo-app-search .body .summary-panel .headline.stored-query{background:var(--color-primary-3);color:var(--color-white);font-size:var(--font-body)}.eo-app-search .body .summary-panel .headline.stored-query .stored-query-name{font-size:var(--font-title);line-height:1.2em;padding:calc(var(--app-pane-padding)/2) 0}.eo-app-search .body .summary-panel .empty-search{color:var(--text-color-caption);padding:var(--app-pane-padding) calc(var(--app-pane-padding)/2) calc(var(--app-pane-padding)/2) calc(var(--app-pane-padding)/2)}.eo-app-search .body .summary-panel .section{max-height:calc(100vh - 280px);overflow-y:auto;padding:calc(var(--app-pane-padding)/2)}.eo-app-search .body .summary-panel .section .title{border-bottom:1px solid rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);padding-bottom:calc(var(--app-pane-padding)/4)}.eo-app-search .body .summary-panel .filter{align-items:center;background:rgba(var(--color-white-rgb),.6);display:flex;flex:1;flex-direction:row;margin-top:4px;min-height:0;min-width:0}.eo-app-search .body .summary-panel .filter .label{display:inline-block;flex:1 1 auto;max-width:none;overflow:hidden;padding:0 0 0 calc(var(--app-pane-padding)/4);text-overflow:ellipsis;white-space:nowrap}.eo-app-search .body .summary-panel .filter eo-icon{box-sizing:border-box;color:var(--text-color-hint);cursor:pointer;flex:0 0 auto;padding:calc(var(--app-pane-padding)/4)}.eo-app-search .body .summary-panel .filter eo-icon:hover{color:var(--text-color-caption)}.eo-app-search .body .summary-panel .actions{display:flex;justify-content:flex-end;padding:calc(var(--app-pane-padding)/2) calc(var(--app-pane-padding)/2 - 2px)}.eo-app-search .body .summary-panel .actions button{font-size:var(--font-hint);line-height:1em;margin:0 2px}.eo-app-search .body .ui-tabview.tab-main{bottom:0;display:flex;flex-flow:column;left:0;position:absolute;right:0;top:0}.eo-app-search .body .ui-tabview.tab-main>.ui-tabview-nav{background:var(--color-primary-2);border-color:transparent;color:var(--color-white);display:flex;flex:0 0 auto;padding:0 calc(var(--app-pane-padding) - 2px)}.eo-app-search .body .ui-tabview.tab-main>.ui-tabview-nav>li a{color:rgba(var(--color-white-rgb),.54)}.eo-app-search .body .ui-tabview.tab-main>.ui-tabview-nav>li.ui-state-active a{color:var(--color-white)}.eo-app-search .body .ui-tabview.tab-main>.ui-tabview-nav li:not(.ui-state-active):not(.ui-state-disabled):hover{border-color:rgba(var(--color-white-rgb),.54)}.eo-app-search .body .ui-tabview.tab-main>.ui-tabview-nav li:not(.ui-state-active):not(.ui-state-disabled):hover a{color:var(--color-white)}.eo-app-search .body .ui-tabview.tab-main>.ui-tabview-panels{flex:1 1 auto;overflow-y:auto;padding-right:calc(var(--app-pane-padding)*2 + var(--search-summary-width));position:relative}.eo-app-search .body .ui-tabview .ui-tabview-panel{padding:calc(var(--app-pane-padding)/2)}.eo-app-search .body .ui-tabview .ui-tabview-panel h2{color:var(--text-color-caption);font-size:var(--font-title);font-weight:var(--font-weight-light);margin:0 0 calc(var(--app-pane-padding)*1.5) 0;padding:0}.eo-app-search .body .rest-box-container{align-items:stretch;display:flex;flex-flow:row wrap}.eo-app-search .body .rest-box-container .rest-box{background:var(--color-white);flex:1 1 auto;margin:calc(var(--app-pane-padding)/2);padding:calc(var(--app-pane-padding)/2)}.eo-app-search .body .rest-box-container .rest-box h3{color:var(--text-color-caption);font-size:var(--font-caption);font-weight:var(--font-weight-normal);margin:0 0 var(--app-pane-padding) 0;padding:0}.eo-app-search .body .rest-box-container .rest-box .rest-item{align-items:center;color:var(--text-color-body);display:flex;flex:1 1 auto;flex-flow:row nowrap;margin:0 calc(var(--app-pane-padding)/4);padding:calc(var(--app-pane-padding)/2)}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected{background:var(--color-primary-3);color:var(--color-white)}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover{background:var(--list-item-hover-background)}.eo-app-search .body .rest-box-container .rest-box .label{flex:1 1 auto;padding:0 calc(var(--app-pane-padding)/2)}.eo-app-search .body .rest-box-container .rest-box .count{font-size:var(--font-caption);font-weight:var(--font-weight-bold);min-width:30px;text-align:right}.eo-app-search .body .object-types .group .type{align-items:center;display:flex;flex-flow:row nowrap;padding:1px 0}.eo-app-search .body .object-types .group .type.context{font-weight:var(--font-weight-bold)}.eo-app-search .body .object-types .group .type.folder .item eo-icon{background:rgba(var(--color-black-rgb),.15)}.eo-app-search .body .object-types .group .type.folder .item:hover eo-icon{background:rgba(var(--color-white-rgb),.3)}.eo-app-search .body .object-types .group .type.abstract .item{color:var(--text-color-caption)}.eo-app-search .body .object-types .group .type.abstract .item:hover{background:var(--color-primary-3);color:var(--panel-background)}.eo-app-search .body .object-types .group .type .item{align-items:center;border-radius:2px;color:var(--text-color-body);cursor:default;display:flex;flex:1 1 auto;flex-flow:row nowrap;margin:0 calc(var(--app-pane-padding)/4);padding:calc(var(--app-pane-padding)/2)}.eo-app-search .body .object-types .group .type .item eo-icon{-moz-transition:none;-o-transition:none;-webkit-transition:none;border-radius:2px;box-sizing:content-box;color:var(--text-color-caption);height:16px;padding:2px;transition:none;width:16px}.eo-app-search .body .object-types .type .item{cursor:pointer}.eo-app-search .body .object-types .type .item:hover{background:var(--color-primary-3);color:var(--panel-background)}.eo-app-search .body .object-types .type .item:hover eo-icon{color:var(--panel-background)}.eo-app-search .body .indexdata-search{padding:calc(var(--app-pane-padding)/2) 0 0 calc(var(--app-pane-padding)/2)}.eo-app-search .body .indexdata-search h2{align-items:center;display:flex;flex-flow:row}.eo-app-search .body .indexdata-search h2 eo-icon{margin:0 calc(var(--app-pane-padding)/2)}.eo-app-search .body .indexdata-search h2 span{padding:0 calc(var(--app-pane-padding)/4)}.eo-app-search .body .indexdata-search .context{margin-bottom:var(--app-pane-padding)}.eo-app-search .body .indexdata-search .context .context-select{align-items:center;display:flex;flex-flow:row wrap;padding-bottom:1px}.eo-app-search .body .indexdata-search .context .context-select .spacer{width:var(--app-pane-padding)}.eo-app-search .body .indexdata-search eo-object-form{border:1px solid rgba(var(--color-black-rgb),.1)}.eo-app-search .body .indexdata-search eo-object-form.dark{background-color:var(--color-primary-2);display:block}.eo-app-search.rtl{-webkit-animation:appSearchAppearRTL var(--app-default-transition-duration);animation:appSearchAppearRTL var(--app-default-transition-duration);left:0;right:0}.eo-app-search.rtl .body .summary-panel,.eo-app-search.rtl .head .result{left:var(--app-pane-padding);right:auto}.eo-app-search.rtl .body .ui-tabview .ui-tabview-panels{padding-bottom:0;padding-left:calc(var(--app-pane-padding)*2 + var(--search-summary-width));padding-right:0;padding-top:0}.eo-app-search.expert .head .result{display:none}.eo-app-search.expert .head .search .search-box{max-width:100%}.eo-app-search.expert .head .search .search-box button.expert-mode{color:var(--color-accent)}.eo-app-search.expert .body{background:var(--color-primary-2);color:var(--color-white);display:flex;flex-flow:column}.eo-app-search.expert .body h2{flex:0 0 auto;font-size:var(--font-title);font-weight:var(--font-weight-light);margin:var(--app-pane-padding) 0;padding:0}.eo-app-search.expert .body h2 span{border-bottom:4px solid var(--color-accent);padding:calc(var(--app-pane-padding)/2) 0 calc(var(--app-pane-padding)/2) var(--app-pane-padding)}.eo-app-search.expert .body .intro{flex:0 0 auto;padding:var(--app-pane-padding)}.eo-app-search.expert .body .empty{flex:0 0 auto;padding:0 var(--app-pane-padding)}.eo-app-search.expert .body .empty span{background:var(--color-error);border-radius:2px;color:var(--color-white);padding:calc(var(--app-pane-padding)/4) calc(var(--app-pane-padding)/2)}.eo-app-search.expert .body .fields h2{border-bottom:1px solid rgba(var(--color-white-rgb),.3);flex:0 0 auto;margin:calc(var(--app-pane-padding)/2);padding:calc(var(--app-pane-padding)/2)}.eo-app-search.expert .body .fields .item{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;background:rgba(var(--color-white-rgb),.06);border-radius:2px;cursor:pointer;margin-bottom:4px;padding:calc(var(--app-pane-padding)/2);transition:all var(--app-default-transition-duration) ease-in-out}.eo-app-search.expert .body .fields .item.selected,.eo-app-search.expert .body .fields .item:hover{background:rgba(var(--color-white-rgb),.2)}.eo-app-search.expert .body .fields .item .label{display:flex;font-weight:var(--font-weight-bold);justify-content:space-between}.eo-app-search.expert .body .fields .item .label .type{font-size:var(--font-hint);opacity:.5}.eo-app-search.expert .body .fields .item .data{opacity:.75}.eo-app-search.expert .body .base-params{padding:calc(var(--app-pane-padding)/2)}.eo-app-search.expert .body .base-params .items{display:flex;flex-flow:row wrap;padding:calc(var(--app-pane-padding)/4)}.eo-app-search.expert .body .base-params .items .item{margin:calc(var(--app-pane-padding)/4)}.eo-app-search.expert .body .system-types{align-items:stretch;display:flex;flex:1 1 auto;flex-flow:row;justify-content:flex-start;padding:calc(var(--app-pane-padding)/2)}.eo-app-search.expert .body .system-types .column{box-sizing:border-box;display:flex;flex:0 0 33%;flex-flow:column}.eo-app-search.expert .body .system-types .column .items{flex:1 1 auto;overflow-y:auto;padding:calc(var(--app-pane-padding)/2)}.eo-app-search.expert .body .system-types .column .items::-webkit-scrollbar-thumb{background-color:rgba(var(--color-white-rgb),.1)}.eo-app-search .body .rest-box-container .rest-box .rest-item .checkbox,.eo-app-search .body .rest-box-container .rest-box .type .checkbox{border:1px solid var(--text-color-hint);border-radius:2px;cursor:pointer;height:20px;margin:0 calc(var(--app-pane-padding)/2);width:20px}.eo-app-search .body .rest-box-container .rest-box .rest-item .checkbox svg,.eo-app-search .body .rest-box-container .rest-box .type .checkbox svg{opacity:0}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover .checkbox:hover,.eo-app-search .body .rest-box-container .rest-box .type:not(.selected):hover .checkbox:hover{border-color:var(--text-color-caption)}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover .checkbox:hover svg,.eo-app-search .body .rest-box-container .rest-box .type:not(.selected):hover .checkbox:hover svg{fill:var(--text-color-body);opacity:.3}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected .checkbox,.eo-app-search .body .rest-box-container .rest-box .type.selected .checkbox{background:var(--color-primary-3);border-color:var(--color-primary-3)}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected .checkbox svg,.eo-app-search .body .rest-box-container .rest-box .type.selected .checkbox svg{fill:var(--color-white)!important;opacity:1}.eo-app-search .body .rest-box-container .rest-box .rest-item.saved .count,.eo-app-search .body .rest-box-container .rest-box .type.saved .count{font-weight:var(--font-weight-normal)}@-webkit-keyframes appSearchAppear{0%{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}@keyframes appSearchAppear{0%{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}@-webkit-keyframes appSearchAppearRTL{0%{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}@keyframes appSearchAppearRTL{0%{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}"]
|
|
4827
|
+
styles: [".eo-app-search-dialog{bottom:0!important;max-width:100%!important;min-width:500px!important;top:0!important;width:80%!important}[dir=ltr] .eo-app-search-dialog{left:0!important}[dir=rtl] .eo-app-search-dialog{left:auto!important}[dir=ltr] .eo-app-search-dialog{right:auto!important}[dir=rtl] .eo-app-search-dialog{right:0!important}[dir=ltr] .eo-app-search-dialog{-webkit-animation:appSearchAppear calc(var(--app-default-transition-duration)*2)!important;animation:appSearchAppear calc(var(--app-default-transition-duration)*2)!important}[dir=rtl] .eo-app-search-dialog{-webkit-animation:appSearchAppearRTL calc(var(--app-default-transition-duration)*2)!important;animation:appSearchAppearRTL calc(var(--app-default-transition-duration)*2)!important}@media (max-width:500px){.eo-app-search-dialog{min-width:inherit;width:100%!important}}.eo-app-search-dialog .eo-dialog-content{max-height:100%;overflow:inherit}.eo-app-search-dialog .eo-dialog-header{display:none}.eo-app-search.rtl .head .close{left:var(--app-pane-padding);right:auto}.eo-app-search.rtl .body .indexdata-search h2 eo-icon{transform:rotate(180deg)}.eo-app-search{--search-box-max-width:600px;--search-min-width:500px;--search-summary-width:350px;background:var(--panel-background-grey);bottom:0;display:flex;flex:1;flex-direction:column;left:0;min-height:0;min-width:0;position:absolute;right:0;top:0}.eo-app-search .head{background:var(--color-primary-2);color:var(--color-white);display:flex;flex:0 0 auto;flex-flow:row nowrap;padding:var(--app-pane-padding) calc(var(--app-pane-padding)/2) 0 calc(var(--app-pane-padding)/2);position:relative}.eo-app-search .head .search{flex:1 1 auto;justify-content:space-between;margin:0 calc(var(--app-pane-padding)/2);z-index:2}.eo-app-search .head .search .title{font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em;min-height:1em}@media (max-width:480px){.eo-app-search .head .search .title{font-size:var(--font-title)}}.eo-app-search .head .search .query-scope{margin:calc(var(--app-pane-padding)*2) 0 0 0;max-width:var(--search-box-max-width);min-width:var(--search-min-width)}.eo-app-search .head .search .search-box{align-items:stretch;background:var(--color-white);box-shadow:0 2px 2px 0 rgba(var(--color-black-rgb),.2);display:flex;flex-flow:row nowrap;margin-bottom:var(--app-pane-padding);max-width:var(--search-box-max-width)}@media (max-width:480px){.eo-app-search .head .search .search-box{margin-top:var(--app-pane-padding)}}.eo-app-search .head .search .search-box p-autocomplete{background:transparent;border:0;flex:1 1 auto;outline:0}.eo-app-search .head .search .search-box p-autocomplete span.ui-autocomplete{width:100%}.eo-app-search .head .search .search-box input{border:0;box-sizing:border-box;font-size:var(--font-title);padding:calc(var(--app-pane-padding)/2);width:100%}.eo-app-search .head .search .search-box input::-ms-clear{display:none}.eo-app-search .head .search .search-box button[type=submit]{background:var(--color-accent);border:0;color:var(--color-white);font-size:var(--font-subhead);padding:0 var(--app-pane-padding)}.eo-app-search .head .search .search-box button.expert-mode{align-items:center;background:transparent;border:0;color:var(--text-color-hint);display:flex;padding:0 calc(var(--app-pane-padding)/2)}.eo-app-search .head .search .search-box button.expert-mode__reset{opacity:0;padding:0;transition:all .2s ease-in-out;width:0}.eo-app-search .head .search .search-box button.expert-mode__reset.active{opacity:1;padding:0 8px;width:40px}.eo-app-search .head .search .search-box button.expert-mode span{-webkit-animation:eoFadeIn var(--app-default-transition-duration);animation:eoFadeIn var(--app-default-transition-duration);display:none;padding:calc(var(--app-pane-padding)/4);white-space:nowrap}.eo-app-search .head .search .search-box button.expert-mode:hover{color:var(--color-accent)}.eo-app-search .head .search .search-box button.expert-mode:hover span{display:block}.eo-app-search .head .result{font-size:7em;line-height:1em;opacity:.1;position:absolute;right:var(--app-pane-padding);top:calc(var(--app-pane-padding)*2.5);z-index:1}@media (max-width:900px){.eo-app-search .head .result{font-size:3em;right:calc(var(--app-pane-padding)*3);top:var(--app-pane-padding)}}.eo-app-search .head .search-aggregator__loader{-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s;position:absolute;right:13%;top:30%;z-index:11}@media (max-width:900px){.eo-app-search .head .search-aggregator__loader{top:5%}}.eo-app-search .head .close{position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding);z-index:2}.eo-app-search .body{background:rgba(var(--color-white-rgb),.2);flex:1 1 auto;position:relative}@media (max-width:1000px){.eo-app-search .body .summary-panel{bottom:0;display:flex;flex-flow:row nowrap;left:0!important;right:0!important;top:auto!important;width:auto!important}.eo-app-search .body .summary-panel .headline:not(.stored-query),.eo-app-search .body .summary-panel .section{display:none}.eo-app-search .body .summary-panel .headline.stored-query{align-items:center;display:flex;margin-bottom:0;padding:0 var(--app-pane-padding)}.eo-app-search .body .summary-panel .headline.stored-query .pre{display:none}.eo-app-search .body .summary-panel .headline.stored-query .stored-query-name{font-size:var(--font-subhead)!important}.eo-app-search .body .summary-panel .actions{flex:1 1 auto}.eo-app-search .body .ui-tabview .ui-tabview-panels{padding-left:0!important;padding-right:0!important}.eo-app-search .body .ui-tabview.tab-main{bottom:50px!important}}.eo-app-search .body .summary-panel{background:rgba(var(--color-black-rgb),.06);box-sizing:border-box;position:absolute;right:var(--app-pane-padding);top:calc(var(--app-pane-padding) + 35px);width:var(--search-summary-width)}.eo-app-search .body .summary-panel .query-types{max-height:calc(100vh - 290px);overflow:auto}.eo-app-search .body .summary-panel .headline{color:var(--text-color-caption);font-size:var(--font-subhead);font-weight:var(--font-weight-light);line-height:1em;margin-bottom:calc(var(--app-pane-padding)/2);padding:calc(var(--app-pane-padding)/2)}.eo-app-search .body .summary-panel .headline.stored-query{background:var(--color-primary-3);color:var(--color-white);font-size:var(--font-body)}.eo-app-search .body .summary-panel .headline.stored-query .stored-query-name{font-size:var(--font-title);line-height:1.2em;padding:calc(var(--app-pane-padding)/2) 0}.eo-app-search .body .summary-panel .empty-search{color:var(--text-color-caption);padding:var(--app-pane-padding) calc(var(--app-pane-padding)/2) calc(var(--app-pane-padding)/2) calc(var(--app-pane-padding)/2)}.eo-app-search .body .summary-panel .section{max-height:calc(100vh - 280px);overflow-y:auto;padding:calc(var(--app-pane-padding)/2)}.eo-app-search .body .summary-panel .section .title{border-bottom:1px solid rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);padding-bottom:calc(var(--app-pane-padding)/4)}.eo-app-search .body .summary-panel .filter{align-items:center;background:rgba(var(--color-white-rgb),.6);display:flex;flex:1;flex-direction:row;margin-top:4px;min-height:0;min-width:0}.eo-app-search .body .summary-panel .filter .label{display:inline-block;flex:1 1 auto;max-width:none;overflow:hidden;padding:0 0 0 calc(var(--app-pane-padding)/4);text-overflow:ellipsis;white-space:nowrap}.eo-app-search .body .summary-panel .filter eo-icon{box-sizing:border-box;color:var(--text-color-hint);cursor:pointer;flex:0 0 auto;padding:calc(var(--app-pane-padding)/4)}.eo-app-search .body .summary-panel .filter eo-icon:hover{color:var(--text-color-caption)}.eo-app-search .body .summary-panel .actions{display:flex;justify-content:flex-end;padding:calc(var(--app-pane-padding)/2) calc(var(--app-pane-padding)/2 - 2px)}.eo-app-search .body .summary-panel .actions button{font-size:var(--font-hint);line-height:1em;margin:0 2px}.eo-app-search .body .ui-tabview.tab-main{bottom:0;display:flex;flex-flow:column;left:0;position:absolute;right:0;top:0}.eo-app-search .body .ui-tabview.tab-main>.ui-tabview-nav{background:var(--color-primary-2);border-color:transparent;color:var(--color-white);display:flex;flex:0 0 auto;padding:0 calc(var(--app-pane-padding) - 2px)}.eo-app-search .body .ui-tabview.tab-main>.ui-tabview-nav>li a{color:rgba(var(--color-white-rgb),.54)}.eo-app-search .body .ui-tabview.tab-main>.ui-tabview-nav>li.ui-state-active a{color:var(--color-white)}.eo-app-search .body .ui-tabview.tab-main>.ui-tabview-nav li:not(.ui-state-active):not(.ui-state-disabled):hover{border-color:rgba(var(--color-white-rgb),.54)}.eo-app-search .body .ui-tabview.tab-main>.ui-tabview-nav li:not(.ui-state-active):not(.ui-state-disabled):hover a{color:var(--color-white)}.eo-app-search .body .ui-tabview.tab-main>.ui-tabview-panels{flex:1 1 auto;overflow-y:auto;padding-right:calc(var(--app-pane-padding)*2 + var(--search-summary-width));position:relative}.eo-app-search .body .ui-tabview .ui-tabview-panel{padding:calc(var(--app-pane-padding)/2)}.eo-app-search .body .ui-tabview .ui-tabview-panel h2{color:var(--text-color-caption);font-size:var(--font-title);font-weight:var(--font-weight-light);margin:0 0 calc(var(--app-pane-padding)*1.5) 0;padding:0}.eo-app-search .body .rest-box-container{align-items:stretch;display:flex;flex-flow:row wrap}.eo-app-search .body .rest-box-container .rest-box{background:var(--color-white);flex:1 1 auto;margin:calc(var(--app-pane-padding)/2);padding:calc(var(--app-pane-padding)/2)}.eo-app-search .body .rest-box-container .rest-box h3{color:var(--text-color-caption);font-size:var(--font-caption);font-weight:var(--font-weight-normal);margin:0 0 var(--app-pane-padding) 0;padding:0}.eo-app-search .body .rest-box-container .rest-box .rest-item{align-items:center;color:var(--text-color-body);display:flex;flex:1 1 auto;flex-flow:row nowrap;margin:0 calc(var(--app-pane-padding)/4);padding:calc(var(--app-pane-padding)/2)}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected{background:var(--color-primary-3);color:var(--color-white)}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover{background:var(--list-item-hover-background)}.eo-app-search .body .rest-box-container .rest-box .label{flex:1 1 auto;padding:0 calc(var(--app-pane-padding)/2)}.eo-app-search .body .rest-box-container .rest-box .count{font-size:var(--font-caption);font-weight:var(--font-weight-bold);min-width:30px;text-align:right}.eo-app-search .body .object-types .group .type{align-items:center;display:flex;flex-flow:row nowrap;padding:1px 0}.eo-app-search .body .object-types .group .type.context{font-weight:var(--font-weight-bold)}.eo-app-search .body .object-types .group .type.folder .item eo-icon{background:rgba(var(--color-black-rgb),.15)}.eo-app-search .body .object-types .group .type.folder .item:hover eo-icon{background:rgba(var(--color-white-rgb),.3)}.eo-app-search .body .object-types .group .type.abstract .item{color:var(--text-color-caption)}.eo-app-search .body .object-types .group .type.abstract .item:hover{background:var(--color-primary-3);color:var(--panel-background)}.eo-app-search .body .object-types .group .type .item{align-items:center;border-radius:2px;color:var(--text-color-body);cursor:default;display:flex;flex:1 1 auto;flex-flow:row nowrap;margin:0 calc(var(--app-pane-padding)/4);padding:calc(var(--app-pane-padding)/2)}.eo-app-search .body .object-types .group .type .item eo-icon{-moz-transition:none;-o-transition:none;-webkit-transition:none;border-radius:2px;box-sizing:content-box;color:var(--text-color-caption);height:16px;padding:2px;transition:none;width:16px}.eo-app-search .body .object-types .type .item{cursor:pointer}.eo-app-search .body .object-types .type .item:hover{background:var(--color-primary-3);color:var(--panel-background)}.eo-app-search .body .object-types .type .item:hover eo-icon{color:var(--panel-background)}.eo-app-search .body .indexdata-search{padding:calc(var(--app-pane-padding)/2) 0 0 calc(var(--app-pane-padding)/2)}.eo-app-search .body .indexdata-search h2{align-items:center;display:flex;flex-flow:row}.eo-app-search .body .indexdata-search h2 eo-icon{margin:0 calc(var(--app-pane-padding)/2)}.eo-app-search .body .indexdata-search h2 span{padding:0 calc(var(--app-pane-padding)/4)}.eo-app-search .body .indexdata-search .context{margin-bottom:var(--app-pane-padding)}.eo-app-search .body .indexdata-search .context .context-select{align-items:center;display:flex;flex-flow:row wrap;padding-bottom:1px}.eo-app-search .body .indexdata-search .context .context-select .spacer{width:var(--app-pane-padding)}.eo-app-search .body .indexdata-search eo-object-form{border:1px solid rgba(var(--color-black-rgb),.1)}.eo-app-search .body .indexdata-search eo-object-form.dark{background-color:var(--color-primary-2);display:block}.eo-app-search.rtl{-webkit-animation:appSearchAppearRTL var(--app-default-transition-duration);animation:appSearchAppearRTL var(--app-default-transition-duration);left:0;right:0}.eo-app-search.rtl .body .summary-panel,.eo-app-search.rtl .head .result{left:var(--app-pane-padding);right:auto}.eo-app-search.rtl .body .ui-tabview .ui-tabview-panels{padding-bottom:0;padding-left:calc(var(--app-pane-padding)*2 + var(--search-summary-width));padding-right:0;padding-top:0}.eo-app-search.expert .head .result{display:none}.eo-app-search.expert .head .search .search-box{max-width:100%}.eo-app-search.expert .head .search .search-box button.expert-mode{color:var(--color-accent)}.eo-app-search.expert .body{background:var(--color-primary-2);color:var(--color-white);display:flex;flex-flow:column}.eo-app-search.expert .body h2{flex:0 0 auto;font-size:var(--font-title);font-weight:var(--font-weight-light);margin:var(--app-pane-padding) 0;padding:0}.eo-app-search.expert .body h2 span{border-bottom:4px solid var(--color-accent);padding:calc(var(--app-pane-padding)/2) 0 calc(var(--app-pane-padding)/2) var(--app-pane-padding)}.eo-app-search.expert .body .intro{flex:0 0 auto;padding:var(--app-pane-padding)}.eo-app-search.expert .body .empty{flex:0 0 auto;padding:0 var(--app-pane-padding)}.eo-app-search.expert .body .empty span{background:var(--color-error);border-radius:2px;color:var(--color-white);padding:calc(var(--app-pane-padding)/4) calc(var(--app-pane-padding)/2)}.eo-app-search.expert .body .fields h2{border-bottom:1px solid rgba(var(--color-white-rgb),.3);flex:0 0 auto;margin:calc(var(--app-pane-padding)/2);padding:calc(var(--app-pane-padding)/2)}.eo-app-search.expert .body .fields .item{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;background:rgba(var(--color-white-rgb),.06);border-radius:2px;cursor:pointer;margin-bottom:4px;padding:calc(var(--app-pane-padding)/2);transition:all var(--app-default-transition-duration) ease-in-out}.eo-app-search.expert .body .fields .item.selected,.eo-app-search.expert .body .fields .item:hover{background:rgba(var(--color-white-rgb),.2)}.eo-app-search.expert .body .fields .item .label{display:flex;font-weight:var(--font-weight-bold);justify-content:space-between}.eo-app-search.expert .body .fields .item .label .type{font-size:var(--font-hint);opacity:.5}.eo-app-search.expert .body .fields .item .data{opacity:.75}.eo-app-search.expert .body .base-params{padding:calc(var(--app-pane-padding)/2)}.eo-app-search.expert .body .base-params .items{display:flex;flex-flow:row wrap;padding:calc(var(--app-pane-padding)/4)}.eo-app-search.expert .body .base-params .items .item{margin:calc(var(--app-pane-padding)/4)}.eo-app-search.expert .body .system-types{align-items:stretch;display:flex;flex:1 1 auto;flex-flow:row;justify-content:flex-start;padding:calc(var(--app-pane-padding)/2)}.eo-app-search.expert .body .system-types .column{box-sizing:border-box;display:flex;flex:0 0 33%;flex-flow:column}.eo-app-search.expert .body .system-types .column .items{flex:1 1 auto;overflow-y:auto;padding:calc(var(--app-pane-padding)/2)}.eo-app-search.expert .body .system-types .column .items::-webkit-scrollbar-thumb{background-color:rgba(var(--color-white-rgb),.1)}.eo-app-search .body .rest-box-container .rest-box .rest-item .checkbox,.eo-app-search .body .rest-box-container .rest-box .type .checkbox{border:1px solid var(--text-color-hint);border-radius:2px;cursor:pointer;height:20px;margin:0 calc(var(--app-pane-padding)/2);width:20px}.eo-app-search .body .rest-box-container .rest-box .rest-item .checkbox svg,.eo-app-search .body .rest-box-container .rest-box .type .checkbox svg{opacity:0}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover .checkbox:hover,.eo-app-search .body .rest-box-container .rest-box .type:not(.selected):hover .checkbox:hover{border-color:var(--text-color-caption)}.eo-app-search .body .rest-box-container .rest-box .rest-item:not(.selected):hover .checkbox:hover svg,.eo-app-search .body .rest-box-container .rest-box .type:not(.selected):hover .checkbox:hover svg{fill:var(--text-color-body);opacity:.3}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected .checkbox,.eo-app-search .body .rest-box-container .rest-box .type.selected .checkbox{background:var(--color-primary-3);border-color:var(--color-primary-3)}.eo-app-search .body .rest-box-container .rest-box .rest-item.selected .checkbox svg,.eo-app-search .body .rest-box-container .rest-box .type.selected .checkbox svg{fill:var(--color-white)!important;opacity:1}.eo-app-search .body .rest-box-container .rest-box .rest-item.saved .count,.eo-app-search .body .rest-box-container .rest-box .type.saved .count{font-weight:var(--font-weight-normal)}@-webkit-keyframes appSearchAppear{0%{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}@keyframes appSearchAppear{0%{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}@-webkit-keyframes appSearchAppearRTL{0%{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}@keyframes appSearchAppearRTL{0%{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}"]
|
|
4790
4828
|
},] }
|
|
4791
4829
|
];
|
|
4792
4830
|
AppSearchComponent.ctorParameters = () => [
|
|
@@ -6125,7 +6163,7 @@ class DatepickerComponent {
|
|
|
6125
6163
|
get year() {
|
|
6126
6164
|
return this.datepickerService.year;
|
|
6127
6165
|
}
|
|
6128
|
-
set
|
|
6166
|
+
set onlyFutureDates(enabled) {
|
|
6129
6167
|
this.datepickerService.futureOnly = enabled ? enabled : false;
|
|
6130
6168
|
}
|
|
6131
6169
|
get futureOnly() {
|
|
@@ -6140,6 +6178,9 @@ class DatepickerComponent {
|
|
|
6140
6178
|
}
|
|
6141
6179
|
}
|
|
6142
6180
|
}
|
|
6181
|
+
set useDatabaseMinimumTime(enabled) {
|
|
6182
|
+
this.minYear = enabled ? 1753 : 0;
|
|
6183
|
+
}
|
|
6143
6184
|
onKeydownHandler(event) {
|
|
6144
6185
|
let newDate;
|
|
6145
6186
|
if (event.keyCode === 13) {
|
|
@@ -6278,7 +6319,7 @@ class DatepickerComponent {
|
|
|
6278
6319
|
DatepickerComponent.decorators = [
|
|
6279
6320
|
{ type: Component, args: [{
|
|
6280
6321
|
selector: 'eo-datepicker',
|
|
6281
|
-
template: "<div class=\"date-picker\">\r\n\r\n <div class=\"select\">\r\n\r\n <div class=\"year\">\r\n <div class=\"back\">\r\n <div class=\"current\" (click)=\"focusSelection()\">\r\n <div class=\"d\">{{selected.date()}}</div>\r\n <div>\r\n <div class=\"m\">{{monthsShort[selected.month()]}}</div>\r\n <div class=\"y\">{{selected.year()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <input (keydown)=\"onInputKeydown($event)\" type=\"number\" eoYearRange [(ngModel)]=\"year\" [max]=\"maxYear\" (ngModelChange)=\"setYear($event)\" [ngModelOptions]=\"{standalone: true}\"/>\r\n <div class=\"controls\">\r\n <button class=\"icon white year-up\" (click)=\"increment(year)\" [disabled]=\"year
|
|
6322
|
+
template: "<div class=\"date-picker\">\r\n\r\n <div class=\"select\">\r\n\r\n <div class=\"year\">\r\n <div class=\"back\">\r\n <div class=\"current\" (click)=\"focusSelection()\">\r\n <div class=\"d\">{{selected.date()}}</div>\r\n <div>\r\n <div class=\"m\">{{monthsShort[selected.month()]}}</div>\r\n <div class=\"y\">{{selected.year()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <input (keydown)=\"onInputKeydown($event)\" type=\"number\" eoYearRange [(ngModel)]=\"year\" [max]=\"maxYear\" (ngModelChange)=\"setYear($event)\" [ngModelOptions]=\"{standalone: true}\"/>\r\n <div class=\"controls\">\r\n <button class=\"icon white year-up\" (click)=\"increment(year)\" [disabled]=\"year >= maxYear\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\r\n </button>\r\n <button class=\"icon white year-down\" (click)=\"decrement(year)\" [disabled]=\"year <= minYear\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"month\">\r\n <span *ngFor=\"let _month of monthsShort; let _i = index\" (click)=\"setMonth(_i)\" [ngClass]=\"{current: monthInfo.month == _i}\" >{{_month}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"calendar\">\r\n <div class=\"week names\">\r\n <div *ngFor=\"let _day of weekdaysShort\"><span class=\"day\">{{_day}}</span></div>\r\n </div>\r\n\r\n <div class=\"week\" *ngFor=\"let week of weeks; trackBy: trackByFn\">\r\n <div *ngFor=\"let day of week.days; trackBy: trackByFn\">\r\n <span class=\"day\" *ngIf=\"!day.disabled\" [ngClass]=\"{ today: day.isToday,\r\n 'different-month': !day.isCurrentMonth, selected: isSelectedDay(day.date) }\"\r\n (click)=\"select(day.date)\" (dblclick)=\"select(day.date)\">{{day.number}}</span>\r\n <span class=\"day disabled\" *ngIf=\"day.disabled\" [ngClass]=\"{ today: day.isToday,\r\n 'different-month': !day.isCurrentMonth, selected: isSelectedDay(day.date) }\">{{day.number}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"time\" *ngIf=\"withTime\">\r\n\r\n <div class=\"value val-h\">{{timeToString(withAmPm && !inRange(time.h, 1, 12) ? time.h - 12 : time.h)}}</div>\r\n <div class=\"controls ctrl-h\">\r\n <button class=\"icon btn-up\" (click)=\"setTime({h: time.h + 1, m: time.m})\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\r\n </button>\r\n <button class=\"icon btn-down\" (click)=\"setTime({h: time.h - 1, m: time.m})\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"value val-sep\">:</div>\r\n <div class=\"value val-min\">{{timeToString(time.m)}}</div>\r\n <div class=\"controls ctrl-min\">\r\n <button class=\"icon btn-up\" (click)=\"setTime({h: time.h, m: time.m + 1})\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\r\n </button>\r\n <button class=\"icon btn-down\" (click)=\"setTime({h: time.h, m: time.m - 1})\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"controls ctrl-am-pm\" *ngIf=\"withAmPm\">\r\n <button class=\"\" [ngClass]=\"{primary: inRange(time.h)}\" (click)=\"setTime({h: inRange(time.h) ? time.h : time.h - 12, m: time.m})\">AM</button>\r\n <button class=\"\" [ngClass]=\"{primary: !inRange(time.h)}\" (click)=\"setTime({h: inRange(time.h) ? time.h + 12 : time.h, m: time.m})\">PM</button>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <button class=\"primary\" (click)=\"selectValue()\" translate>eo.datepicker.calendar.select</button>\r\n </div>\r\n\r\n</div>\r\n",
|
|
6282
6323
|
providers: [DatepickerService],
|
|
6283
6324
|
styles: [".date-picker{background:var(--color-white);box-sizing:border-box;flex:1;flex-direction:column}.date-picker,.date-picker .controls{display:flex;min-height:0;min-width:0}.date-picker .controls{flex:none;flex-direction:column}.date-picker .controls button{border-radius:2px;margin:4px;padding:4px}.date-picker .controls button.icon{background:rgba(var(--color-black-rgb),0);color:var(--color-white);padding:0}.date-picker .controls button.icon:focus{border-color:rgba(var(--color-black-rgb),0)}.date-picker .controls button.icon eo-icon{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;background:rgba(var(--color-white-rgb),.1);border-radius:2px;transition:all var(--app-default-transition-duration) ease-in-out}.date-picker .controls button.icon eo-icon svg{fill:var(--text-color-hint)}.date-picker .controls button.icon:first-child{transform:rotate(180deg)}.date-picker .select{background:var(--color-accent);color:var(--color-white);flex:0 0 auto}.date-picker .select .year{align-items:center;display:flex;flex:none;flex-direction:row;flex-wrap:nowrap;justify-content:flex-end;margin-bottom:var(--app-pane-padding);min-height:0;min-width:0;padding:0 var(--app-pane-padding)}.date-picker .select .year .back{align-items:flex-start;display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}.date-picker .select .year .back .d{font-size:40px;line-height:1em;margin:0 4px}.date-picker .select .year .back .current{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;align-items:center;border-radius:2px;cursor:pointer;display:flex;flex:none;flex-direction:row;min-height:0;min-width:0;padding:0 4px 0 0;transition:all var(--app-default-transition-duration) ease-in-out}.date-picker .select .year .back .current:hover{background:rgba(var(--color-white-rgb),.1)}.date-picker .select .year .back .current>div{align-items:flex-start;display:flex;flex:none;flex-direction:column;min-height:0;min-width:0}.date-picker .select .year input{background:rgba(var(--color-black-rgb),0);border:0;border-bottom:1px solid rgba(var(--color-black-rgb),0);color:var(--color-white);font-family:eoRoboto,sans-serif;font-size:50px;font-weight:var(--font-weight-light);line-height:1em;margin:0 calc(var(--app-pane-padding)/2);text-align:right;width:3em}.date-picker .select .year input::-moz-selection{background:rgba(var(--color-white-rgb),.3)}.date-picker .select .year input::selection{background:rgba(var(--color-white-rgb),.3)}.date-picker .select .year input:focus{border-bottom:1px solid rgba(var(--color-white-rgb),.5)}.date-picker .select .month{padding:0 var(--app-pane-padding)}.date-picker .select .month span{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;border-bottom:2px solid rgba(var(--color-black-rgb),0);box-sizing:border-box;color:rgba(var(--color-white-rgb),.5);cursor:pointer;display:inline-block;font-size:var(--font-hint);font-weight:var(--font-weight-bold);margin-bottom:1px;padding:4px 0;text-align:center;transition:all var(--app-default-transition-duration) ease-in-out;width:3em}.date-picker .select .month span:hover{border-color:rgba(var(--color-white-rgb),.5);color:var(--color-white)}.date-picker .select .month span.current{border-color:var(--color-white);color:var(--color-white)}.date-picker .calendar{box-sizing:content-box;flex:1 1 auto;padding:var(--app-pane-padding)}.date-picker .time{align-items:center;display:flex;flex:none;flex-direction:row;justify-content:flex-start;min-height:0;min-width:0;padding:var(--app-pane-padding)}.date-picker .time .value{color:var(--text-color-caption);cursor:default;font-size:64px;font-weight:var(--font-weight-light);line-height:1em}.date-picker .time .value.val-h,.date-picker .time .value.val-min{min-width:1.2em}.date-picker .time .controls button.icon:focus{border:1px solid var(--color-primary-3)}.date-picker .time .controls button.icon eo-icon{background:rgba(var(--color-black-rgb),.05);color:var(--text-color-hint)}.date-picker .time .controls button.icon eo-icon:hover{background:rgba(var(--color-black-rgb),.1);color:var(--text-color-caption)}.date-picker .actions{display:flex;flex:none;flex-direction:row;justify-content:flex-end;min-height:0;min-width:0;padding:var(--app-pane-padding)}.week.names span:hover{background:rgba(var(--color-black-rgb),0);border-color:rgba(var(--color-black-rgb),0);cursor:default}.week{display:flex;flex:none;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;margin-bottom:3px;min-height:0;min-width:0}.week>div{text-align:center;width:2.5em}.week span{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;border-bottom:1px solid rgba(var(--color-black-rgb),0);box-sizing:border-box;color:var(--text-color-body);cursor:pointer;display:inline-block;padding:.25em 0;text-align:center;transition:all var(--app-default-transition-duration) ease-in-out;width:2em}.week .day.disabled{background-color:rgba(0,0,0,.1);border-radius:2px;color:#fff;cursor:default}.week .day.disabled:hover{border-bottom:0}.week span.today,.week span:hover{border-bottom:1px solid var(--color-accent);color:var(--color-accent)}.week span.today{font-weight:var(--font-weight-bold)}.week span.selected,.week span.selected:hover{-webkit-border-radius:2px;background:var(--color-accent);border-radius:2px;color:var(--color-white)!important}.week span.different-month{color:var(--text-color-hint)}.week.names span{color:var(--color-accent)}"]
|
|
6284
6325
|
},] }
|
|
@@ -6292,8 +6333,9 @@ DatepickerComponent.propDecorators = {
|
|
|
6292
6333
|
onCanceled: [{ type: Output }],
|
|
6293
6334
|
withTime: [{ type: Input }],
|
|
6294
6335
|
withAmPm: [{ type: Input }],
|
|
6295
|
-
|
|
6336
|
+
onlyFutureDates: [{ type: Input }],
|
|
6296
6337
|
date: [{ type: Input, args: ['date',] }],
|
|
6338
|
+
useDatabaseMinimumTime: [{ type: Input }],
|
|
6297
6339
|
onKeydownHandler: [{ type: HostListener, args: ['document:keydown', ['$event'],] }]
|
|
6298
6340
|
};
|
|
6299
6341
|
|
|
@@ -6304,6 +6346,8 @@ class DatetimeComponent {
|
|
|
6304
6346
|
this.showPicker = false;
|
|
6305
6347
|
this.isValid = true;
|
|
6306
6348
|
this.isWebEnv = EnvironmentEnaio.isWebEnvironment();
|
|
6349
|
+
this.databaseMinimumTime = moment$2("1753-01-01T00:00:00");
|
|
6350
|
+
this.validateDatabaseTimeRange = false; //Needed to validate datetime that is stored in a database (January 1, 1753 to December 31, 9999)
|
|
6307
6351
|
this.propagateChange = (_) => {
|
|
6308
6352
|
};
|
|
6309
6353
|
this.datePipe = new LocaleDatePipe(translate);
|
|
@@ -6335,9 +6379,13 @@ class DatetimeComponent {
|
|
|
6335
6379
|
}
|
|
6336
6380
|
registerOnTouched(fn) {
|
|
6337
6381
|
}
|
|
6382
|
+
checkDatabaseTimeRange(m) {
|
|
6383
|
+
return !this.validateDatabaseTimeRange ||
|
|
6384
|
+
!m.isBefore(this.databaseMinimumTime);
|
|
6385
|
+
}
|
|
6338
6386
|
setValueFromMask() {
|
|
6339
6387
|
let m = moment$2(this.innerValue, this.momentDatePattern);
|
|
6340
|
-
this.isValid = m.isValid();
|
|
6388
|
+
this.isValid = m.isValid() && this.checkDatabaseTimeRange(m);
|
|
6341
6389
|
if (this.isValid) {
|
|
6342
6390
|
this.value = m.toDate();
|
|
6343
6391
|
}
|
|
@@ -6359,10 +6407,8 @@ class DatetimeComponent {
|
|
|
6359
6407
|
setInnerValue() {
|
|
6360
6408
|
if (this.value) {
|
|
6361
6409
|
let m = moment$2(this.value);
|
|
6362
|
-
this.isValid = m.isValid();
|
|
6363
|
-
|
|
6364
|
-
this.innerValue = m.format(this.momentDatePattern);
|
|
6365
|
-
}
|
|
6410
|
+
this.isValid = m.isValid() && this.checkDatabaseTimeRange(m);
|
|
6411
|
+
this.innerValue = m.format(this.momentDatePattern);
|
|
6366
6412
|
}
|
|
6367
6413
|
else {
|
|
6368
6414
|
this.innerValue = null;
|
|
@@ -6385,7 +6431,7 @@ class DatetimeComponent {
|
|
|
6385
6431
|
DatetimeComponent.decorators = [
|
|
6386
6432
|
{ type: Component, args: [{
|
|
6387
6433
|
selector: 'eo-datetime',
|
|
6388
|
-
template: "<!-- non web environments use native pickers -->\r\n<div class=\"eo-datepicker native\" lang=\"{{locale}}\" *ngIf=\"!isWebEnv; else web\">\r\n <input type=\"date\" [(ngModel)]=\"value\" *ngIf=\"!withTime\" [readonly]=\"readonly\"/>\r\n <input type=\"datetime-local\" [(ngModel)]=\"value\" [readonly]=\"readonly\" *ngIf=\"withTime\"/>\r\n</div>\r\n\r\n\r\n<ng-template #web>\r\n\r\n <eo-dialog [styleClass]=\"'date-picker'\" [title]=\"pickerTitle\" [(visible)]=\"showPicker\" *ngIf=\"showPicker\">\r\n <eo-datepicker [date]=\"value\" [withTime]=\"withTime\" [withAmPm]=\"withAmPm\"\r\n [
|
|
6434
|
+
template: "<!-- non web environments use native pickers -->\r\n<div class=\"eo-datepicker native\" lang=\"{{locale}}\" *ngIf=\"!isWebEnv; else web\">\r\n <input type=\"date\" [(ngModel)]=\"value\" *ngIf=\"!withTime\" [readonly]=\"readonly\"/>\r\n <input type=\"datetime-local\" [(ngModel)]=\"value\" [readonly]=\"readonly\" *ngIf=\"withTime\"/>\r\n</div>\r\n\r\n\r\n<ng-template #web>\r\n\r\n <eo-dialog [styleClass]=\"'date-picker'\" [title]=\"pickerTitle\" [(visible)]=\"showPicker\" *ngIf=\"showPicker\">\r\n <eo-datepicker [date]=\"value\" [withTime]=\"withTime\" [withAmPm]=\"withAmPm\"\r\n [onlyFutureDates]=\"onlyFutureDates\"\r\n [useDatabaseMinimumTime]=\"validateDatabaseTimeRange\"\r\n (onCanceled)=\"(showPicker = false)\"\r\n (onDateChanged)=\"setValueFromPicker($event)\"></eo-datepicker>\r\n </eo-dialog>\r\n\r\n <div class=\"eo-datepicker\">\r\n <p-inputMask [mask]=\"maskPattern\" [(ngModel)]=\"innerValue\"\r\n (ngModelChange)=\"onMaskValueChange($event)\"\r\n (onComplete)=\"setValueFromMask()\"\r\n [readonly]=\"readonly\"\r\n [autoClear]=\"true\"\r\n [placeholder]=\"datePattern\"></p-inputMask>\r\n\r\n <button class=\"ui-button\" (click)=\"(showPicker = true)\" (keyup.arrowDown)=\"(showPicker = true)\" *ngIf=\"!readonly\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_datepicker.svg'\"></eo-icon>\r\n </button>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n\r\n\r\n\r\n\r\n",
|
|
6389
6435
|
providers: [
|
|
6390
6436
|
{
|
|
6391
6437
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -6407,7 +6453,8 @@ DatetimeComponent.ctorParameters = () => [
|
|
|
6407
6453
|
DatetimeComponent.propDecorators = {
|
|
6408
6454
|
readonly: [{ type: Input }],
|
|
6409
6455
|
pickerTitle: [{ type: Input }],
|
|
6410
|
-
|
|
6456
|
+
onlyFutureDates: [{ type: Input }],
|
|
6457
|
+
validateDatabaseTimeRange: [{ type: Input }],
|
|
6411
6458
|
withTime: [{ type: Input }]
|
|
6412
6459
|
};
|
|
6413
6460
|
|
|
@@ -8366,7 +8413,7 @@ class ObjectFormGroupComponent {
|
|
|
8366
8413
|
ObjectFormGroupComponent.decorators = [
|
|
8367
8414
|
{ type: Component, args: [{
|
|
8368
8415
|
selector: 'eo-form-group',
|
|
8369
|
-
template: "<div *ngIf=\"group\" [ngSwitch]=\"groupType\"\r\n class=\"form-element {{group._eoFormGroup ? group._eoFormGroup.type : 'o2mControlWrap'}} align-{{(group._eoFormGroup && group._eoFormGroup.layout) ? group._eoFormGroup.layout.align : ''}}\"\r\n [formGroup]=\"group\">\r\n\r\n <!-- group stacks (tabs) -->\r\n <p-tabView *ngSwitchCase=\"'stack'\">\r\n <p-tabPanel header=\"{{getObjectFormGroup(group.controls[key]).label}}\"\r\n headerStyleClass=\"dirty-{{group.controls[key].dirty}} invalid-{{group.controls[key].invalid}} \"\r\n *ngFor=\"let key of group.controls | keys; index as i;\"\r\n [selected]=\"i === 0\">\r\n\r\n <div class=\"stack\" [ngClass]=\"{stackBase: group._eoFormGroup.label === 'data'}\">\r\n\r\n <eo-form-element [element]=\"group.controls[key]\"\r\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else stkgroup\"\r\n [situation]=\"situation\"\r\n [skipToggle]=\"skipToggle\"></eo-form-element>\r\n <ng-template #stkgroup>\r\n <eo-form-group [group]=\"group.controls[key]\" [noGroupLabels]=\"true\"\r\n [situation]=\"situation\"\r\n [skipToggle]=\"skipToggle\"></eo-form-group>\r\n </ng-template>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n\r\n <!-- group with legend -->\r\n <div *ngSwitchCase=\"'fieldset'\" class=\"om-group fieldset\">\r\n <div class=\"legend\"><span>{{group._eoFormGroup.label}}</span></div>\r\n\r\n <div>\r\n <ng-container *ngFor=\"let key of group.controls | keys\">\r\n <eo-form-element [element]=\"group.controls[key]\"\r\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else fsgroup\"\r\n [situation]=\"situation\"\r\n [skipToggle]=\"skipToggle\"></eo-form-element>\r\n <ng-template #fsgroup>\r\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\" [skipToggle]=\"skipToggle\"></eo-form-group>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- group -->\r\n <ng-container class=\"om-group\" *ngSwitchCase=\"'group'\">\r\n <ng-container *ngFor=\"let key of group.controls | keys\">\r\n\r\n <eo-form-element [element]=\"group.controls[key]\"\r\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else omgroup\"\r\n [situation]=\"situation\"\r\n [skipToggle]=\"skipToggle\"></eo-form-element>\r\n <ng-template #omgroup>\r\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\" [skipToggle]=\"skipToggle\"></eo-form-group>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n\r\n</div>\r\n",
|
|
8416
|
+
template: "<div *ngIf=\"group\" [ngSwitch]=\"groupType\"\r\n class=\"form-element {{group._eoFormGroup ? group._eoFormGroup.type : 'o2mControlWrap'}} align-{{(group._eoFormGroup && group._eoFormGroup.layout) ? group._eoFormGroup.layout.align : ''}}\"\r\n [formGroup]=\"group\">\r\n\r\n <!-- group stacks (tabs) -->\r\n <p-tabView *ngSwitchCase=\"'stack'\">\r\n <p-tabPanel header=\"{{getObjectFormGroup(group.controls[key]).label}}\"\r\n headerStyleClass=\"dirty-{{group.controls[key].dirty}} invalid-{{group.controls[key].invalid}} \"\r\n *ngFor=\"let key of group.controls | keys; index as i;\"\r\n [selected]=\"i === 0\">\r\n\r\n <div class=\"stack\" [ngClass]=\"{stackBase: group._eoFormGroup.label === 'data'}\">\r\n\r\n <eo-form-element [element]=\"group.controls[key]\"\r\n [dmsObject]=\"dmsObject\"\r\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else stkgroup\"\r\n [situation]=\"situation\"\r\n [skipToggle]=\"skipToggle\"></eo-form-element>\r\n <ng-template #stkgroup>\r\n <eo-form-group [dmsObject]=\"dmsObject\" [group]=\"group.controls[key]\" [noGroupLabels]=\"true\"\r\n [situation]=\"situation\"\r\n [skipToggle]=\"skipToggle\"></eo-form-group>\r\n </ng-template>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n\r\n <!-- group with legend -->\r\n <div *ngSwitchCase=\"'fieldset'\" class=\"om-group fieldset\">\r\n <div class=\"legend\"><span>{{group._eoFormGroup.label}}</span></div>\r\n\r\n <div>\r\n <ng-container *ngFor=\"let key of group.controls | keys\">\r\n <eo-form-element [dmsObject]=\"dmsObject\" [element]=\"group.controls[key]\"\r\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else fsgroup\"\r\n [situation]=\"situation\"\r\n [skipToggle]=\"skipToggle\"></eo-form-element>\r\n <ng-template #fsgroup>\r\n <eo-form-group [dmsObject]=\"dmsObject\" [group]=\"group.controls[key]\" [situation]=\"situation\" [skipToggle]=\"skipToggle\"></eo-form-group>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- group -->\r\n <ng-container class=\"om-group\" *ngSwitchCase=\"'group'\">\r\n <ng-container *ngFor=\"let key of group.controls | keys\">\r\n\r\n <eo-form-element [dmsObject]=\"dmsObject\" [element]=\"group.controls[key]\"\r\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else omgroup\"\r\n [situation]=\"situation\"\r\n [skipToggle]=\"skipToggle\"></eo-form-element>\r\n <ng-template #omgroup>\r\n <eo-form-group [dmsObject]=\"dmsObject\" [group]=\"group.controls[key]\" [situation]=\"situation\" [skipToggle]=\"skipToggle\"></eo-form-group>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n\r\n</div>\r\n",
|
|
8370
8417
|
// changeDetection: ChangeDetectionStrategy.OnPush,
|
|
8371
8418
|
encapsulation: ViewEncapsulation.None,
|
|
8372
8419
|
styles: [":host{flex:1 1 auto}.dark .form-element .ui-tabview.ui-tabview-top>.ui-tabview-nav{border-color:rgba(var(--color-white-rgb),.2)}.dark .form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav li.ui-state-active{border-color:rgba(var(--color-white-rgb),1)}.dark .form-element .ui-state-active a,.dark .form-element .ui-widget-content .ui-state-active a,.dark .form-element .ui-widget-header .ui-state-active a{color:var(--color-white)}.dark .form-element .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-widget-content .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-widget-header .ui-state-default:not(.ui-state-active) a{color:rgba(var(--color-white-rgb),.3)}.form-element{box-sizing:border-box}.form-element.o2mGroupStack{background:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1)}.form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav li.ui-state-active{border-color:rgba(var(--color-black-rgb),.26)}.form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav>li:not(.ui-state-active):not(.ui-state-disabled):hover{border-color:rgba(var(--color-black-rgb),.16)}.dark .form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav>li:not(.ui-state-active):not(.ui-state-disabled):hover{border-color:rgba(var(--color-white-rgb),.16)}.dark .form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav>li:not(.ui-state-active):not(.ui-state-disabled):hover a{color:rgba(var(--color-white-rgb),.7)}.form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav li.dirty-true:not(.invalid-true) a .ui-tabview-title{background-color:var(--color-dirty-background);color:var(--color-dirty-font)}.form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav li.invalid-true a .ui-tabview-title{background-color:var(--color-error);color:var(--color-white)}.form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav li.invalid-true a .ui-tabview-title:after{content:\"!\";margin-left:calc(var(--app-pane-padding)/2)}.form-element.o2mGroupStack p-tabview{width:100%}.form-element.o2mGroupStack.data{border:0}.form-element.align-column{align-content:stretch;align-items:stretch;display:flex;flex-flow:column nowrap;justify-content:flex-start}.form-element.align-column>*{flex:1 1 auto}.form-element.align-row{align-content:flex-start;align-items:flex-start;display:flex;flex-flow:row wrap;justify-content:flex-start}.form-element.align-row>*{flex:1 1 auto}.form-element.align-row>.fieldset>:not(.legend){align-content:flex-start;align-items:flex-start;display:flex;flex-flow:row wrap;justify-content:flex-start}.form-element.align-row>.fieldset>:not(.legend) eo-form-group{flex:1 1 auto;min-width:200px}.form-element .stackBase{padding:var(--app-pane-padding)}.form-element .stackBase>eo-form-group>.form-element>.fieldset{background-color:transparent;border:0;margin:0;padding:0}.form-element .stackBase>eo-form-group>.form-element>.fieldset>.legend{display:none}"]
|
|
@@ -8375,6 +8422,7 @@ ObjectFormGroupComponent.decorators = [
|
|
|
8375
8422
|
ObjectFormGroupComponent.propDecorators = {
|
|
8376
8423
|
situation: [{ type: Input }],
|
|
8377
8424
|
skipToggle: [{ type: Input }],
|
|
8425
|
+
dmsObject: [{ type: Input }],
|
|
8378
8426
|
groupd: [{ type: Input, args: ['group',] }],
|
|
8379
8427
|
noGroupLabels: [{ type: Input }]
|
|
8380
8428
|
};
|
|
@@ -9571,7 +9619,7 @@ class ObjectFormComponent extends UnsubscribeOnDestroy {
|
|
|
9571
9619
|
ObjectFormComponent.decorators = [
|
|
9572
9620
|
{ type: Component, args: [{
|
|
9573
9621
|
selector: 'eo-object-form',
|
|
9574
|
-
template: "<div class=\"eo-object-form\" *ngIf=\"form && formOptions\" [formGroup]=\"form\" eoRtlAware>\r\n <div class=\"form-element-wrap core\">\r\n <eo-form-group [group]=\"form.get('core')\" [situation]=\"formOptions.formModel.situation\"></eo-form-group>\r\n </div>\r\n <div class=\"form-element-wrap data\">\r\n <eo-form-group [group]=\"form.get('data')\" [situation]=\"formOptions.formModel.situation\"></eo-form-group>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n",
|
|
9622
|
+
template: "<div class=\"eo-object-form\" *ngIf=\"form && formOptions\" [formGroup]=\"form\" eoRtlAware>\r\n <div class=\"form-element-wrap core\">\r\n <eo-form-group [group]=\"form.get('core')\" [situation]=\"formOptions.formModel.situation\"></eo-form-group>\r\n </div>\r\n <div class=\"form-element-wrap data\">\r\n <eo-form-group [dmsObject]=\"dmsObject\" [group]=\"form.get('data')\" [situation]=\"formOptions.formModel.situation\"></eo-form-group>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n",
|
|
9575
9623
|
// define 'child only' services for the form without setting it up on the module
|
|
9576
9624
|
// which would cause them to be propagated to the whole application
|
|
9577
9625
|
providers: [ObjectFormScriptService],
|
|
@@ -9593,6 +9641,7 @@ ObjectFormComponent.propDecorators = {
|
|
|
9593
9641
|
isInnerTableForm: [{ type: Input }],
|
|
9594
9642
|
statusChanged: [{ type: Output }],
|
|
9595
9643
|
onFormReady: [{ type: Output }],
|
|
9644
|
+
dmsObject: [{ type: Input }],
|
|
9596
9645
|
options: [{ type: Input, args: ['formOptions',] }]
|
|
9597
9646
|
};
|
|
9598
9647
|
|
|
@@ -9670,6 +9719,9 @@ class ObjectFormEditComponent {
|
|
|
9670
9719
|
this.createObjectForm(dmsObject);
|
|
9671
9720
|
}
|
|
9672
9721
|
}
|
|
9722
|
+
get dmsObject() {
|
|
9723
|
+
return this._dmsObject;
|
|
9724
|
+
}
|
|
9673
9725
|
startPending() {
|
|
9674
9726
|
// because this method will be called every time the form status changes,
|
|
9675
9727
|
// pending task will only be started once until it was finished
|
|
@@ -9778,7 +9830,7 @@ class ObjectFormEditComponent {
|
|
|
9778
9830
|
ObjectFormEditComponent.decorators = [
|
|
9779
9831
|
{ type: Component, args: [{
|
|
9780
9832
|
selector: 'eo-object-form-edit',
|
|
9781
|
-
template: "<div class=\"object-form-edit\" [ngClass]=\"{invalid: formState?.invalid === true}\" [eoShortcuts]=\"shortcuts\">\r\n <eo-object-form [formOptions]=\"formOptions\" *ngIf=\"formOptions\"\r\n (statusChanged)=\"onFormStatusChanged($event)\"></eo-object-form>\r\n\r\n <div class=\"form-controls\" *ngIf=\"controls.visible\">\r\n\r\n <div class=\"err-msg\" *ngIf=\"formState?.invalid\" translate>eo.object.indexdata.form.invalid</div>\r\n\r\n <div class=\"buttons\">\r\n\r\n <button class=\"secondary\" (click)=\"reset()\" [disabled]=\"controls.saving\" translate>eo.object.indexdata.reset</button>\r\n <button class=\"primary\" [ngClass]=\"{spinner: controls.saving}\"\r\n [disabled]=\"formState?.invalid || controls.saving\"\r\n (click)=\"save()\" translate>eo.object.indexdata.save</button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<eo-dialog [title]=\"('eo.object.indexdata.save.conflict.dialog.title' | translate : {modifier: conflictError?.dmsobject.modified.by.firstname + ' ' + conflictError?.dmsobject.modified.by.lastname})\"
|
|
9833
|
+
template: "<div class=\"object-form-edit\" [ngClass]=\"{invalid: formState?.invalid === true}\" [eoShortcuts]=\"shortcuts\">\r\n <eo-object-form [dmsObject]=\"dmsObject\" [formOptions]=\"formOptions\" *ngIf=\"formOptions\"\r\n (statusChanged)=\"onFormStatusChanged($event)\"></eo-object-form>\r\n\r\n <div class=\"form-controls\" *ngIf=\"controls.visible\">\r\n\r\n <div class=\"err-msg\" *ngIf=\"formState?.invalid\" translate>eo.object.indexdata.form.invalid</div>\r\n\r\n <div class=\"buttons\">\r\n\r\n <button class=\"secondary\" (click)=\"reset()\" [disabled]=\"controls.saving\" translate>eo.object.indexdata.reset</button>\r\n <button class=\"primary\" [ngClass]=\"{spinner: controls.saving}\"\r\n [disabled]=\"formState?.invalid || controls.saving\"\r\n (click)=\"save()\" translate>eo.object.indexdata.save</button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<eo-dialog [title]=\"('eo.object.indexdata.save.conflict.dialog.title' | translate : {modifier: conflictError?.dmsobject.modified.by.firstname + ' ' + conflictError?.dmsobject.modified.by.lastname})\"\r\n (hide)=\"controls.saving = false;\" [(visible)]=\"showConflictDialog\" [minWidth]=\"400\" [styleClass]=\"'conflict__dialog'\">\r\n\r\n <div class=\"action-buttons conflict--action-buttons flex-row\">\r\n <button type=\"button\" class=\"button cancel\" (click)=\"cancelSaving()\"\r\n translate>eo.object.indexdata.save.cancel</button>\r\n <button type=\"button\" class=\"button cancel\" (click)=\"showConflictChanges()\"\r\n translate>eo.object.indexdata.save.changes</button>\r\n <button type=\"button\" (click)=\"save(true); closeConflictDialog();\" class=\"button primary\"\r\n translate>eo.object.indexdata.save</button>\r\n </div>\r\n</eo-dialog>\r\n",
|
|
9782
9834
|
styles: [".object-form-edit{background:var(--color-white);display:grid;grid-template-areas:\"form\" \"buttons\";grid-template-columns:1fr;grid-template-rows:1fr auto;min-width:300px}.object-form-edit eo-object-form{-ms-grid-column:1;-ms-grid-row:1;grid-area:form}.object-form-edit .form-controls{-ms-grid-column:1;-ms-grid-row:2;box-sizing:border-box;grid-area:buttons}.object-form-edit .form-controls .err-msg{background-color:var(--color-error);color:#fff;display:none;flex:1 1 auto;order:0;padding:calc(var(--app-pane-padding)/2) var(--app-pane-padding)}.object-form-edit .form-controls .buttons{align-items:center;display:flex;flex:1 1 auto;flex-flow:row wrap;justify-content:flex-end;order:1;padding:var(--app-pane-padding) calc(var(--app-pane-padding)*0.875)}.object-form-edit .form-controls .buttons button{flex:0 0 auto;margin:0 calc(var(--app-pane-padding)*0.125)}.object-form-edit .form-controls .buttons .loader{flex:1 1 auto}.object-form-edit .form-controls .buttons .loader eo-icon{display:none}.object-form-edit .form-controls .buttons .loader.saving eo-icon,.object-form-edit.invalid .form-controls .err-msg{display:block}::ng-deep .conflict__dialog{min-height:unset!important;padding:8px}::ng-deep .conflict__dialog--header{background:#fff!important;color:rgba(var(--color-black-rgb),.54)!important;font-size:1.17em!important;font-weight:400!important;margin:0;padding:0 0 1em!important}"]
|
|
9783
9835
|
},] }
|
|
9784
9836
|
];
|
|
@@ -9871,7 +9923,7 @@ class FormElementComponent {
|
|
|
9871
9923
|
FormElementComponent.decorators = [
|
|
9872
9924
|
{ type: Component, args: [{
|
|
9873
9925
|
selector: 'eo-form-element',
|
|
9874
|
-
template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\r\n\r\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\r\n [ngSwitch]=\"formElementRef._eoFormElement.type\"\r\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\">\r\n\r\n <!-- STRING -->\r\n <eo-form-input *ngSwitchCase=\"'STRING'\" [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\"\r\n [isNull]=\"isNull\"\r\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\"\r\n (onToggleLabel)=\"labelToggled($event)\"\r\n [required]=\"formElementRef._eoFormElement.required\"\r\n [invalid]=\"formElementRef.invalid\">\r\n\r\n <eo-string\r\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector'\"\r\n [situation]=\"element._eoFormControlWrapper.situation\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\r\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\r\n [multiline]=\"formElementRef._eoFormElement.multiline\"\r\n [classification]=\"formElementRef._eoFormElement.classification\"\r\n [regex]=\"formElementRef._eoFormElement.regex\"\r\n [qname]=\"formElementRef._eoFormElement.qname\"\r\n [size]=\"formElementRef._eoFormElement.size\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [minLength]=\"formElementRef._eoFormElement.minlen\"\r\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"\r\n ></eo-string>\r\n\r\n <!-- Dynamic List -->\r\n <eo-dynamic-list\r\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification === 'selector'\"\r\n [situation]=\"element._eoFormControlWrapper.situation\"\r\n [pickerTitle]=\"formElementRef._eoFormElement.label\"\r\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\r\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\r\n [listObject]=\"formElementRef._eoFormElement.list\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-dynamic-list>\r\n\r\n\r\n <!-- Reference -->\r\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [reference]=\"formElementRef._eoFormElement.reference\"\r\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\r\n [minLength]=\"formElementRef._eoFormElement.minlen\"\r\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"\r\n ></eo-reference>\r\n </eo-form-input>\r\n\r\n <!-- ID-Reference -->\r\n <eo-form-input *ngSwitchCase=\"'REFERENCE'\" [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\"\r\n [isNull]=\"isNull\"\r\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\"\r\n (onToggleLabel)=\"labelToggled($event)\"\r\n [required]=\"formElementRef._eoFormElement.required\"\r\n [invalid]=\"formElementRef.invalid\">\r\n\r\n <eo-id-reference\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n [situation]=\"element._eoFormControlWrapper.situation\"\r\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\r\n [reference]=\"formElementRef._eoFormElement.reference\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\r\n [contextId]=\"formElementRef._eoFormElement.contextId\"\r\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\r\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\r\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"\r\n ></eo-id-reference>\r\n </eo-form-input>\r\n\r\n <!-- ID -->\r\n <eo-form-input *ngSwitchCase=\"'ID'\" [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\"\r\n [isNull]=\"isNull\"\r\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\"\r\n (onToggleLabel)=\"labelToggled($event)\"\r\n [required]=\"formElementRef._eoFormElement.required\"\r\n [invalid]=\"formElementRef.invalid\">\r\n\r\n <eo-string\r\n [situation]=\"element._eoFormControlWrapper.situation\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\r\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\r\n [regex]=\"'^[0-9a-fA-F]*$'\"\r\n [qname]=\"formElementRef._eoFormElement.qname\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [minLength]=\"32\"\r\n [maxLength]=\"32\"\r\n ></eo-string>\r\n\r\n </eo-form-input>\r\n\r\n\r\n <!-- BOOLEAN -->\r\n <eo-form-input *ngSwitchCase=\"'BOOLEAN'\" [tag]=\"tag\" class=\"checkbox\" [label]=\"formElementRef._eoFormElement.label\"\r\n [isNull]=\"isNull\"\r\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\"\r\n [required]=\"formElementRef._eoFormElement.required\"\r\n (onToggleLabel)=\"labelToggled($event)\"\r\n [invalid]=\"formElementRef.invalid\">\r\n\r\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [tristate]=\"true\"></eo-checkbox>\r\n </eo-form-input>\r\n\r\n <!-- CODESYSTEM -->\r\n <eo-form-input *ngSwitchCase=\"'CODESYSTEM'\" [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\"\r\n [isNull]=\"isNull\"\r\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\"\r\n (onToggleLabel)=\"labelToggled($event)\"\r\n [required]=\"formElementRef._eoFormElement.required\"\r\n [invalid]=\"formElementRef.invalid\">\r\n\r\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\r\n [pickerTitle]=\"formElementRef._eoFormElement.label\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\r\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\r\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\r\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n ></eo-codesystem>\r\n </eo-form-input>\r\n\r\n <!-- ORGANIZATION -->\r\n <eo-form-input *ngSwitchCase=\"'ORGANIZATION'\" [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\"\r\n [isNull]=\"isNull\"\r\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\"\r\n (onToggleLabel)=\"labelToggled($event)\"\r\n [required]=\"formElementRef._eoFormElement.required\"\r\n [invalid]=\"formElementRef.invalid\">\r\n\r\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\r\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [filterObject]=\"formElementRef._eoFormElement.filter\"\r\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\r\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n ></eo-organization>\r\n </eo-form-input>\r\n\r\n <!-- NUMBER -->\r\n\r\n <eo-form-input *ngSwitchCase=\"'NUMBER'\" [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\"\r\n [isNull]=\"isNull\"\r\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\"\r\n (onToggleLabel)=\"labelToggled($event)\"\r\n [required]=\"formElementRef._eoFormElement.required\"\r\n [invalid]=\"formElementRef.invalid\">\r\n\r\n <eo-number *ngIf=\"situation !== 'SEARCH'\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [precision]=\"formElementRef._eoFormElement.precision\"\r\n [scale]=\"formElementRef._eoFormElement.scale\"\r\n [grouping]=\"formElementRef._eoFormElement.grouping\"\r\n [pattern]=\"formElementRef._eoFormElement.pattern\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\r\n </eo-number>\r\n\r\n <eo-number-range *ngIf=\"situation === 'SEARCH'\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [precision]=\"formElementRef._eoFormElement.precision\"\r\n [scale]=\"formElementRef._eoFormElement.scale\"\r\n [grouping]=\"formElementRef._eoFormElement.grouping\"\r\n [pattern]=\"formElementRef._eoFormElement.pattern\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n ></eo-number-range>\r\n </eo-form-input>\r\n\r\n <!-- TABLE -->\r\n <div class=\"table\" *ngSwitchCase=\"'TABLE'\">\r\n <eo-table [params]=\"{\r\n situation: element._eoFormControlWrapper.situation,\r\n element: formElementRef._eoFormElement,\r\n size: formElementRef._eoFormElement.size\r\n }\" [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-table>\r\n </div>\r\n\r\n <!-- DATE AND DATETIME -->\r\n <eo-form-input *ngSwitchCase=\"'DATETIME'\" [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\"\r\n [isNull]=\"isNull\"\r\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\"\r\n (onToggleLabel)=\"labelToggled($event)\"\r\n [required]=\"formElementRef._eoFormElement.required\"\r\n [invalid]=\"formElementRef.invalid\">\r\n\r\n <eo-datetime *ngIf=\"situation !== 'SEARCH'\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [pickerTitle]=\"formElementRef._eoFormElement.label\"\r\n [withTime]=\"formElementRef._eoFormElement.withtime\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n ></eo-datetime>\r\n\r\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\"\r\n [pickerTitle]=\"formElementRef._eoFormElement.label\"\r\n [withTime]=\"formElementRef._eoFormElement.withtime\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n ></eo-datetime-range>\r\n </eo-form-input>\r\n\r\n\r\n <!-- print out the type if it's not matching anything -->\r\n <div *ngSwitchDefault><b>{{formElementRef._eoFormElement.type}}</b></div>\r\n\r\n\r\n <!-- the fields description -->\r\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\r\n\r\n <!-- error/validation messages -->\r\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\r\n\r\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\r\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\r\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\r\n <div *ngIf=\"formElementRef.errors.precision\" translate\r\n [translateParams]=\"formElementRef.errors.precision.translateValues\">{{formElementRef.errors.precision.translateKey}}</div>\r\n <div *ngIf=\"formElementRef.errors.scale\" translate\r\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}</div>\r\n\r\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>eo.form.property.string.regex.nomatch</div>\r\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>eo.form.property.string.error.classification.email</div>\r\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url</div>\r\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\r\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\r\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\r\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\r\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\r\n <div *ngIf=\"formElementRef.errors.maxlength\" translate [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\r\n <div *ngIf=\"formElementRef.errors.minlength\" translate [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\r\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\r\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n",
|
|
9926
|
+
template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\r\n\r\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\r\n [ngSwitch]=\"formElementRef._eoFormElement.type\"\r\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\">\r\n\r\n <!-- STRING -->\r\n <eo-form-input *ngSwitchCase=\"'STRING'\" [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\"\r\n [isNull]=\"isNull\"\r\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\"\r\n (onToggleLabel)=\"labelToggled($event)\"\r\n [required]=\"formElementRef._eoFormElement.required\"\r\n [invalid]=\"formElementRef.invalid\">\r\n\r\n <eo-string\r\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector'\"\r\n [situation]=\"element._eoFormControlWrapper.situation\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\r\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\r\n [multiline]=\"formElementRef._eoFormElement.multiline\"\r\n [classification]=\"formElementRef._eoFormElement.classification\"\r\n [regex]=\"formElementRef._eoFormElement.regex\"\r\n [qname]=\"formElementRef._eoFormElement.qname\"\r\n [size]=\"formElementRef._eoFormElement.size\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [minLength]=\"formElementRef._eoFormElement.minlen\"\r\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"\r\n ></eo-string>\r\n\r\n <!-- Dynamic List -->\r\n <eo-dynamic-list\r\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification === 'selector'\"\r\n [situation]=\"element._eoFormControlWrapper.situation\"\r\n [pickerTitle]=\"formElementRef._eoFormElement.label\"\r\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\r\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\r\n [listObject]=\"formElementRef._eoFormElement.list\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-dynamic-list>\r\n\r\n\r\n <!-- Reference -->\r\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [reference]=\"formElementRef._eoFormElement.reference\"\r\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\r\n [minLength]=\"formElementRef._eoFormElement.minlen\"\r\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"\r\n ></eo-reference>\r\n </eo-form-input>\r\n\r\n <!-- ID-Reference -->\r\n <eo-form-input *ngSwitchCase=\"'REFERENCE'\" [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\"\r\n [isNull]=\"isNull\"\r\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\"\r\n (onToggleLabel)=\"labelToggled($event)\"\r\n [required]=\"formElementRef._eoFormElement.required\"\r\n [invalid]=\"formElementRef.invalid\">\r\n\r\n <eo-id-reference\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n [situation]=\"element._eoFormControlWrapper.situation\"\r\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\r\n [reference]=\"formElementRef._eoFormElement.reference\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\r\n [contextId]=\"formElementRef._eoFormElement.contextId\"\r\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\r\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\r\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"\r\n ></eo-id-reference>\r\n </eo-form-input>\r\n\r\n <!-- ID -->\r\n <eo-form-input *ngSwitchCase=\"'ID'\" [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\"\r\n [isNull]=\"isNull\"\r\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\"\r\n (onToggleLabel)=\"labelToggled($event)\"\r\n [required]=\"formElementRef._eoFormElement.required\"\r\n [invalid]=\"formElementRef.invalid\">\r\n\r\n <eo-string\r\n [situation]=\"element._eoFormControlWrapper.situation\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\r\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\r\n [regex]=\"'^[0-9a-fA-F]*$'\"\r\n [qname]=\"formElementRef._eoFormElement.qname\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [minLength]=\"32\"\r\n [maxLength]=\"32\"\r\n ></eo-string>\r\n\r\n </eo-form-input>\r\n\r\n\r\n <!-- BOOLEAN -->\r\n <eo-form-input *ngSwitchCase=\"'BOOLEAN'\" [tag]=\"tag\" class=\"checkbox\" [label]=\"formElementRef._eoFormElement.label\"\r\n [isNull]=\"isNull\"\r\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\"\r\n [required]=\"formElementRef._eoFormElement.required\"\r\n (onToggleLabel)=\"labelToggled($event)\"\r\n [invalid]=\"formElementRef.invalid\">\r\n\r\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [tristate]=\"true\"></eo-checkbox>\r\n </eo-form-input>\r\n\r\n <!-- CODESYSTEM -->\r\n <eo-form-input *ngSwitchCase=\"'CODESYSTEM'\" [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\"\r\n [isNull]=\"isNull\"\r\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\"\r\n (onToggleLabel)=\"labelToggled($event)\"\r\n [required]=\"formElementRef._eoFormElement.required\"\r\n [invalid]=\"formElementRef.invalid\">\r\n\r\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\r\n [pickerTitle]=\"formElementRef._eoFormElement.label\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\r\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\r\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\r\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n ></eo-codesystem>\r\n </eo-form-input>\r\n\r\n <!-- ORGANIZATION -->\r\n <eo-form-input *ngSwitchCase=\"'ORGANIZATION'\" [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\"\r\n [isNull]=\"isNull\"\r\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\"\r\n (onToggleLabel)=\"labelToggled($event)\"\r\n [required]=\"formElementRef._eoFormElement.required\"\r\n [invalid]=\"formElementRef.invalid\">\r\n\r\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\r\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [filterObject]=\"formElementRef._eoFormElement.filter\"\r\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\r\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n ></eo-organization>\r\n </eo-form-input>\r\n\r\n <!-- NUMBER -->\r\n\r\n <eo-form-input *ngSwitchCase=\"'NUMBER'\" [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\"\r\n [isNull]=\"isNull\"\r\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\"\r\n (onToggleLabel)=\"labelToggled($event)\"\r\n [required]=\"formElementRef._eoFormElement.required\"\r\n [invalid]=\"formElementRef.invalid\">\r\n\r\n <eo-number *ngIf=\"situation !== 'SEARCH'\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [precision]=\"formElementRef._eoFormElement.precision\"\r\n [scale]=\"formElementRef._eoFormElement.scale\"\r\n [grouping]=\"formElementRef._eoFormElement.grouping\"\r\n [pattern]=\"formElementRef._eoFormElement.pattern\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\r\n </eo-number>\r\n\r\n <eo-number-range *ngIf=\"situation === 'SEARCH'\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [precision]=\"formElementRef._eoFormElement.precision\"\r\n [scale]=\"formElementRef._eoFormElement.scale\"\r\n [grouping]=\"formElementRef._eoFormElement.grouping\"\r\n [pattern]=\"formElementRef._eoFormElement.pattern\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n ></eo-number-range>\r\n </eo-form-input>\r\n\r\n <!-- TABLE -->\r\n <div class=\"table\" *ngSwitchCase=\"'TABLE'\">\r\n <eo-table [dmsObject]=\"dmsObject\" [params]=\"{\r\n situation: element._eoFormControlWrapper.situation,\r\n element: formElementRef._eoFormElement,\r\n size: formElementRef._eoFormElement.size\r\n }\" [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-table>\r\n </div>\r\n\r\n <!-- DATE AND DATETIME -->\r\n <eo-form-input *ngSwitchCase=\"'DATETIME'\" [tag]=\"tag\" [label]=\"formElementRef._eoFormElement.label\"\r\n [isNull]=\"isNull\"\r\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\"\r\n (onToggleLabel)=\"labelToggled($event)\"\r\n [required]=\"formElementRef._eoFormElement.required\"\r\n [invalid]=\"formElementRef.invalid\">\r\n\r\n <eo-datetime *ngIf=\"situation !== 'SEARCH'\"\r\n [readonly]=\"formElementRef._eoFormElement.readonly\"\r\n [pickerTitle]=\"formElementRef._eoFormElement.label\"\r\n [withTime]=\"formElementRef._eoFormElement.withtime\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n [validateDatabaseTimeRange]=\"formElementRef._eoFormElement.withtime\"\r\n ></eo-datetime>\r\n\r\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\"\r\n [pickerTitle]=\"formElementRef._eoFormElement.label\"\r\n [withTime]=\"formElementRef._eoFormElement.withtime\"\r\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\r\n ></eo-datetime-range>\r\n </eo-form-input>\r\n\r\n\r\n <!-- print out the type if it's not matching anything -->\r\n <div *ngSwitchDefault><b>{{formElementRef._eoFormElement.type}}</b></div>\r\n\r\n\r\n <!-- the fields description -->\r\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\r\n\r\n <!-- error/validation messages -->\r\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\r\n\r\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\r\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\r\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\r\n <div *ngIf=\"formElementRef.errors.precision\" translate\r\n [translateParams]=\"formElementRef.errors.precision.translateValues\">{{formElementRef.errors.precision.translateKey}}</div>\r\n <div *ngIf=\"formElementRef.errors.scale\" translate\r\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}</div>\r\n\r\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>eo.form.property.string.regex.nomatch</div>\r\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>eo.form.property.string.error.classification.email</div>\r\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url</div>\r\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\r\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\r\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\r\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\r\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\r\n <div *ngIf=\"formElementRef.errors.maxlength\" translate [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\r\n <div *ngIf=\"formElementRef.errors.minlength\" translate [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\r\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\r\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n",
|
|
9875
9927
|
styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);border:0;border-radius:2px;color:var(--color-white);margin:calc(var(--app-pane-padding)/4) 0;padding:calc(var(--app-pane-padding)/4)}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding)/4) calc(var(--app-pane-padding)/2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding)/8) calc(var(--app-pane-padding)/8) 0 calc(var(--app-pane-padding)/8)}.form-element .form-field .err-msg{border:0;color:var(--color-error);padding:calc(var(--app-pane-padding)/4) 0}.form-element .form-field .table{align-items:flex-start;border-color:transparent;flex-flow:column}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding)/4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}"]
|
|
9876
9928
|
},] }
|
|
9877
9929
|
];
|
|
@@ -9883,6 +9935,7 @@ FormElementComponent.ctorParameters = () => [
|
|
|
9883
9935
|
FormElementComponent.propDecorators = {
|
|
9884
9936
|
situation: [{ type: Input }],
|
|
9885
9937
|
skipToggle: [{ type: Input }],
|
|
9938
|
+
dmsObject: [{ type: Input }],
|
|
9886
9939
|
elementSetter: [{ type: Input, args: ['element',] }],
|
|
9887
9940
|
formField: [{ type: ViewChild, args: ['formField',] }]
|
|
9888
9941
|
};
|
|
@@ -9898,6 +9951,7 @@ class FormElementTableComponent extends UnsubscribeOnDestroy {
|
|
|
9898
9951
|
this.modules = [ClientSideRowModelModule, CsvExportModule];
|
|
9899
9952
|
this.gridReady = false;
|
|
9900
9953
|
this.showDialog = false;
|
|
9954
|
+
this.showPreview = false;
|
|
9901
9955
|
this.propagateChange = (_) => {
|
|
9902
9956
|
};
|
|
9903
9957
|
this.gridOptions = {
|
|
@@ -9953,6 +10007,7 @@ class FormElementTableComponent extends UnsubscribeOnDestroy {
|
|
|
9953
10007
|
});
|
|
9954
10008
|
this._cachedColumns = this.storageService.getItem(FormElementTableComponent.COLUMNS_DEFINITION) || [];
|
|
9955
10009
|
this._cachedColumnsOverlay = this.storageService.getItem(FormElementTableComponent.COLUMNS_DEFINITION_OVERLAY) || [];
|
|
10010
|
+
this.showPreview = !!this.storageService.getItem('showPreview');
|
|
9956
10011
|
}
|
|
9957
10012
|
set params(p) {
|
|
9958
10013
|
if (p) {
|
|
@@ -10288,13 +10343,17 @@ class FormElementTableComponent extends UnsubscribeOnDestroy {
|
|
|
10288
10343
|
}
|
|
10289
10344
|
this.storageService.setItem(columnsDefinition, cachedColumns);
|
|
10290
10345
|
}
|
|
10346
|
+
togglePreview() {
|
|
10347
|
+
this.showPreview = !this.showPreview;
|
|
10348
|
+
this.storageService.setItem('showPreview', this.showPreview);
|
|
10349
|
+
}
|
|
10291
10350
|
}
|
|
10292
10351
|
FormElementTableComponent.COLUMNS_DEFINITION = 'eo.framework.cache.tables.columns.definition';
|
|
10293
10352
|
FormElementTableComponent.COLUMNS_DEFINITION_OVERLAY = 'eo.framework.cache.tables.overlay.columns.definition';
|
|
10294
10353
|
FormElementTableComponent.decorators = [
|
|
10295
10354
|
{ type: Component, args: [{
|
|
10296
10355
|
selector: 'eo-table',
|
|
10297
|
-
template: "<div class=\"object-form-table\" [ngClass]=\"{medium: _params.size === 'medium', large: _params.size === 'large'}\">\r\n <div class=\"label\">\r\n <span>{{_params.element.label}}</span>\r\n <ng-container *ngIf=\"_params.situation !== 'SEARCH'\">\r\n\r\n <eo-icon class=\"stf\" [iconSrc]=\"'assets/_default/svg/ic_expand.svg'\" [iconTitle]=\"('eo.form.table.options.btn.open'| translate)\" (click)=\"openDialog()\"></eo-icon>\r\n <eo-icon class=\"stf\" [iconSrc]=\"'assets/_default/svg/ic_size_to_fit.svg'\" [iconTitle]=\"('eo.form.table.options.btn.fit'| translate)\" (click)=\"sizeToFit()\"></eo-icon>\r\n <eo-icon class=\"stf\" *ngIf=\"gridOptions.rowData.length\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\" [iconTitle]=\"('eo.form.table.options.btn.csv'| translate)\" (click)=\"exportCSV()\"></eo-icon>\r\n <eo-icon class=\"stf add-row\" *ngIf=\"!_params.element.readonly\" [iconSrc]=\"'assets/_default/svg/ic_add.svg'\" [iconTitle]=\"('eo.form.table.options.btn.add'| translate)\" (click)=\"addRow()\"></eo-icon>\r\n\r\n </ng-container>\r\n </div>\r\n <div class=\"grid-body size-{{ params.size }}\">\r\n <ag-grid-angular #agGrid *ngIf=\"gridReady\" class=\"ag-theme-balham\" [modules]=\"modules\"\r\n [gridOptions]=\"gridOptions\"\r\n (rowDoubleClicked)=\"editRow($event)\"\r\n (cellClicked)=\"onCellClicked($event)\"\r\n (sortChanged)=\"onSortChanged()\"\r\n (cellValueChanged)=\"onEditComplete($event)\"\r\n (columnResized)=\"onColumnResized($event.column)\">\r\n </ag-grid-angular>\r\n </div>\r\n</div>\r\n\r\n\r\n<eo-dialog\r\n[title]=\"params.element.label\"\r\n[visible]=\"showDialog\"\r\n[dirtyCheck]=\"rowEdit?.pendingTaskId\"\r\n[minWidth]=\"_params.situation
|
|
10356
|
+
template: "<div class=\"object-form-table\" [ngClass]=\"{medium: _params.size === 'medium', large: _params.size === 'large'}\">\r\n <div class=\"label\">\r\n <span>{{_params.element.label}}</span>\r\n <ng-container *ngIf=\"_params.situation !== 'SEARCH'\">\r\n\r\n <eo-icon class=\"stf\" [iconSrc]=\"'assets/_default/svg/ic_expand.svg'\" [iconTitle]=\"('eo.form.table.options.btn.open'| translate)\" (click)=\"openDialog()\"></eo-icon>\r\n <eo-icon class=\"stf\" [iconSrc]=\"'assets/_default/svg/ic_size_to_fit.svg'\" [iconTitle]=\"('eo.form.table.options.btn.fit'| translate)\" (click)=\"sizeToFit()\"></eo-icon>\r\n <eo-icon class=\"stf\" *ngIf=\"gridOptions.rowData.length\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\" [iconTitle]=\"('eo.form.table.options.btn.csv'| translate)\" (click)=\"exportCSV()\"></eo-icon>\r\n <eo-icon class=\"stf add-row\" *ngIf=\"!_params.element.readonly\" [iconSrc]=\"'assets/_default/svg/ic_add.svg'\" [iconTitle]=\"('eo.form.table.options.btn.add'| translate)\" (click)=\"addRow()\"></eo-icon>\r\n\r\n </ng-container>\r\n </div>\r\n <div class=\"grid-body size-{{ params.size }}\">\r\n <ag-grid-angular #agGrid *ngIf=\"gridReady\" class=\"ag-theme-balham\" [modules]=\"modules\"\r\n [gridOptions]=\"gridOptions\"\r\n (rowDoubleClicked)=\"editRow($event)\"\r\n (cellClicked)=\"onCellClicked($event)\"\r\n (sortChanged)=\"onSortChanged()\"\r\n (cellValueChanged)=\"onEditComplete($event)\"\r\n (columnResized)=\"onColumnResized($event.column)\">\r\n </ag-grid-angular>\r\n </div>\r\n</div>\r\n\r\n\r\n<eo-dialog\r\n[title]=\"params.element.label\"\r\n[visible]=\"showDialog\"\r\n[dirtyCheck]=\"rowEdit?.pendingTaskId\"\r\n[minWidth]=\"_params.situation !== 'SEARCH' ? '97vw' : 200\"\r\n[styleClass]=\"'object-form-table-dialog'\"\r\n(hide)=\"onClose()\"\r\n[isFormTable]=\"true\"\r\n[showPreview]=\"showPreview\"\r\n(onTogglePreview)=\"togglePreview()\">\r\n\r\n <div class=\"body\">\r\n\r\n <eo-split [gutterSize]=\"16\" [switchable]=\"true\">\r\n\r\n <eo-split-area *ngIf=\"_params.situation !== 'SEARCH'\" class=\"table-area\" [size]=\"50\" [minSizePixel]=\"100\">\r\n <div class=\"table-body\">\r\n <div class=\"object-form-table\">\r\n <div class=\"label\">\r\n <span></span>\r\n <ng-container>\r\n <eo-icon class=\"stf\" [iconSrc]=\"'assets/_default/svg/ic_size_to_fit.svg'\" [iconTitle]=\"('eo.form.table.options.btn.fit'| translate)\" (click)=\"sizeToFit(true)\"></eo-icon>\r\n <eo-icon class=\"stf\" *ngIf=\"gridOptions.rowData.length\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\" [iconTitle]=\"('eo.form.table.options.btn.csv'| translate)\" (click)=\"exportCSV()\"></eo-icon>\r\n <eo-icon class=\"stf add-row\" *ngIf=\"!_params.element.readonly\" [iconSrc]=\"'assets/_default/svg/ic_add.svg'\" [iconTitle]=\"('eo.form.table.options.btn.add'| translate)\" (click)=\"addRow()\"></eo-icon>\r\n </ng-container>\r\n </div>\r\n <div class=\"grid-body\">\r\n <ag-grid-angular #agGrid2 *ngIf=\"gridReady\" class=\"ag-theme-balham\" [modules]=\"modules\"\r\n [gridOptions]=\"overlayGridOptions\"\r\n (cellClicked)=\"onCellClicked($event);editRow($event)\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (sortChanged)=\"onSortChanged()\"\r\n (cellValueChanged)=\"onEditComplete($event)\"\r\n (columnResized)=\"onColumnResized($event.column, true)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </div>\r\n </eo-split-area>\r\n\r\n <eo-split-area [size]=\"15\" [minSizePixel]=\"300\" *ngIf=\"editingRow\">\r\n <div class=\"edit-body\">\r\n <eo-row-edit [row]=\"editingRow\" #rowEdit\r\n (onSave)=\"updateRow($event)\"\r\n (onSaveCopy)=\"copyRow($event)\"\r\n (onDelete)=\"deleteRow($event)\"\r\n (onCancel)=\"cancelRowEdit()\"></eo-row-edit>\r\n </div>\r\n </eo-split-area>\r\n\r\n <eo-split-area *ngIf=\"editingRow && showPreview\" [size]=\"10\" [minSizePixel]=\"150\">\r\n <eo-media *ngIf=\"dmsObject\" [dmsObject]=\"dmsObject\"\r\n [useVersion]=\"dmsObject.id === dmsObject.content?.id\"></eo-media>\r\n </eo-split-area>\r\n </eo-split>\r\n </div>\r\n</eo-dialog>\r\n\r\n",
|
|
10298
10357
|
providers: [
|
|
10299
10358
|
{
|
|
10300
10359
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -10319,6 +10378,7 @@ FormElementTableComponent.ctorParameters = () => [
|
|
|
10319
10378
|
];
|
|
10320
10379
|
FormElementTableComponent.propDecorators = {
|
|
10321
10380
|
rowEdit: [{ type: ViewChild, args: ['rowEdit',] }],
|
|
10381
|
+
dmsObject: [{ type: Input }],
|
|
10322
10382
|
params: [{ type: Input }],
|
|
10323
10383
|
copyCellHandler: [{ type: HostListener, args: ['keydown.control.alt.shift.c', ['$event'],] }, { type: HostListener, args: ['keydown.control.shift.c', ['$event'],] }, { type: HostListener, args: ['keydown.control.alt.c', ['$event'],] }, { type: HostListener, args: ['keydown.control.c', ['$event'],] }]
|
|
10324
10384
|
};
|
|
@@ -11604,7 +11664,7 @@ class DatetimeFilterComponent extends DatetimeComponent {
|
|
|
11604
11664
|
DatetimeFilterComponent.decorators = [
|
|
11605
11665
|
{ type: Component, args: [{
|
|
11606
11666
|
selector: 'eo-datetime-custom',
|
|
11607
|
-
template: "<!-- non web environments use native pickers -->\r\n<div class=\"eo-datepicker native\" lang=\"{{locale}}\" *ngIf=\"!isWebEnv; else web\">\r\n <input type=\"date\" [(ngModel)]=\"value\" *ngIf=\"!withTime\" [readonly]=\"readonly\"/>\r\n <input type=\"datetime-local\" [(ngModel)]=\"value\" [readonly]=\"readonly\" *ngIf=\"withTime\"/>\r\n</div>\r\n\r\n\r\n<ng-template #web>\r\n\r\n <eo-dialog [styleClass]=\"'date-picker'\" [title]=\"pickerTitle\" [(visible)]=\"showPicker\" *ngIf=\"showPicker\">\r\n <eo-datepicker [date]=\"value\" [withTime]=\"withTime\" [withAmPm]=\"withAmPm\"\r\n [
|
|
11667
|
+
template: "<!-- non web environments use native pickers -->\r\n<div class=\"eo-datepicker native\" lang=\"{{locale}}\" *ngIf=\"!isWebEnv; else web\">\r\n <input type=\"date\" [(ngModel)]=\"value\" *ngIf=\"!withTime\" [readonly]=\"readonly\"/>\r\n <input type=\"datetime-local\" [(ngModel)]=\"value\" [readonly]=\"readonly\" *ngIf=\"withTime\"/>\r\n</div>\r\n\r\n\r\n<ng-template #web>\r\n\r\n <eo-dialog [styleClass]=\"'date-picker'\" [title]=\"pickerTitle\" [(visible)]=\"showPicker\" *ngIf=\"showPicker\">\r\n <eo-datepicker [date]=\"value\" [withTime]=\"withTime\" [withAmPm]=\"withAmPm\"\r\n [onlyFutureDates]=\"onlyFutureDates\"\r\n [useDatabaseMinimumTime]=\"validateDatabaseTimeRange\"\r\n (onCanceled)=\"(showPicker = false)\"\r\n (onDateChanged)=\"setValueFromPicker($event)\"></eo-datepicker>\r\n </eo-dialog>\r\n\r\n <div class=\"eo-datepicker\">\r\n <p-inputMask [mask]=\"maskPattern\" [(ngModel)]=\"innerValue\"\r\n (ngModelChange)=\"onMaskValueChange($event)\"\r\n (onComplete)=\"setValueFromMask()\"\r\n [readonly]=\"readonly\"\r\n [autoClear]=\"true\"\r\n [placeholder]=\"datePattern\"></p-inputMask>\r\n\r\n <button class=\"ui-button\" (click)=\"(showPicker = true)\" (keyup.arrowDown)=\"(showPicker = true)\" *ngIf=\"!readonly\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_datepicker.svg'\"></eo-icon>\r\n </button>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n\r\n\r\n\r\n\r\n",
|
|
11608
11668
|
styles: [":host .eo-datepicker{align-items:center;display:flex;flex-flow:row nowrap}:host ::ng-deep p-inputmask{flex:1 1 auto}:host ::ng-deep p-inputmask input{background:transparent;border:0;width:100%}"]
|
|
11609
11669
|
},] }
|
|
11610
11670
|
];
|
|
@@ -13913,323 +13973,753 @@ ResultListModule.decorators = [
|
|
|
13913
13973
|
},] }
|
|
13914
13974
|
];
|
|
13915
13975
|
|
|
13916
|
-
|
|
13917
|
-
|
|
13918
|
-
|
|
13919
|
-
|
|
13920
|
-
|
|
13921
|
-
|
|
13976
|
+
class ContentPreviewService {
|
|
13977
|
+
static undockWin(src) {
|
|
13978
|
+
const w = window[ContentPreviewService.UNDOCK_WINDOW_NAME] = window.open(src || '', ContentPreviewService.UNDOCK_WINDOW_NAME, 'directories=0, titlebar=0, toolbar=0, location=0, status=0, menubar=0, resizable=1, top=10, left=10');
|
|
13979
|
+
return w;
|
|
13980
|
+
}
|
|
13981
|
+
static closeWin() {
|
|
13982
|
+
return this.getUndockWin() && this.getUndockWin().close();
|
|
13983
|
+
}
|
|
13984
|
+
static getUndockWin() {
|
|
13985
|
+
return window[ContentPreviewService.UNDOCK_WINDOW_NAME];
|
|
13986
|
+
}
|
|
13987
|
+
static undockWinActive() {
|
|
13988
|
+
return !!ContentPreviewService.getUndockWin() && !ContentPreviewService.getUndockWin().closed;
|
|
13989
|
+
}
|
|
13990
|
+
static mapLang(lang) {
|
|
13991
|
+
switch (lang) {
|
|
13992
|
+
case 'en':
|
|
13993
|
+
return 'en-US';
|
|
13994
|
+
case 'es':
|
|
13995
|
+
return 'es-ES';
|
|
13996
|
+
case 'pt':
|
|
13997
|
+
return 'pt-PT';
|
|
13998
|
+
case 'zh':
|
|
13999
|
+
return 'zh-CN';
|
|
14000
|
+
case 'hi':
|
|
14001
|
+
return 'hi-IN';
|
|
14002
|
+
case 'bn':
|
|
14003
|
+
return 'bn-BD';
|
|
14004
|
+
default:
|
|
14005
|
+
return lang;
|
|
14006
|
+
}
|
|
14007
|
+
}
|
|
13922
14008
|
}
|
|
13923
|
-
|
|
13924
|
-
|
|
13925
|
-
|
|
13926
|
-
CommonModule,
|
|
13927
|
-
FormsModule,
|
|
13928
|
-
ReactiveFormsModule,
|
|
13929
|
-
SharedModule,
|
|
13930
|
-
TabViewModule,
|
|
13931
|
-
FieldsetModule,
|
|
13932
|
-
UiModule,
|
|
13933
|
-
DialogModule,
|
|
13934
|
-
PipesModule,
|
|
13935
|
-
AgGridModule,
|
|
13936
|
-
ShortcutsModule,
|
|
13937
|
-
FormElementsModule,
|
|
13938
|
-
SplitModule,
|
|
13939
|
-
ResultListModule,
|
|
13940
|
-
ListContainerModule,
|
|
13941
|
-
GridModule
|
|
13942
|
-
],
|
|
13943
|
-
exports: [ObjectFormComponent, ObjectFormGroupComponent, ObjectFormEditComponent, FormElementComponent],
|
|
13944
|
-
providers: [ObjectFormHelperService],
|
|
13945
|
-
declarations: [
|
|
13946
|
-
ObjectFormComponent,
|
|
13947
|
-
ObjectFormGroupComponent,
|
|
13948
|
-
ObjectFormEditComponent,
|
|
13949
|
-
FormElementComponent,
|
|
13950
|
-
FormElementTableComponent,
|
|
13951
|
-
RowEditComponent
|
|
13952
|
-
]
|
|
13953
|
-
},] }
|
|
14009
|
+
ContentPreviewService.UNDOCK_WINDOW_NAME = 'eoViewer';
|
|
14010
|
+
ContentPreviewService.decorators = [
|
|
14011
|
+
{ type: Injectable }
|
|
13954
14012
|
];
|
|
13955
14013
|
|
|
13956
|
-
class
|
|
13957
|
-
constructor(
|
|
13958
|
-
|
|
13959
|
-
this.router = router;
|
|
13960
|
-
this.systemService = systemService;
|
|
14014
|
+
class MediaComponent extends UnsubscribeOnDestroy {
|
|
14015
|
+
constructor(translate, dms, renderer, system, _ngZone, config, pluginsService, backend) {
|
|
14016
|
+
super();
|
|
13961
14017
|
this.translate = translate;
|
|
13962
|
-
this.
|
|
13963
|
-
this.
|
|
13964
|
-
this.
|
|
13965
|
-
this.
|
|
13966
|
-
this.
|
|
13967
|
-
|
|
13968
|
-
|
|
13969
|
-
|
|
13970
|
-
|
|
13971
|
-
|
|
13972
|
-
|
|
13973
|
-
|
|
13974
|
-
|
|
14018
|
+
this.dms = dms;
|
|
14019
|
+
this.renderer = renderer;
|
|
14020
|
+
this.system = system;
|
|
14021
|
+
this._ngZone = _ngZone;
|
|
14022
|
+
this.config = config;
|
|
14023
|
+
this.pluginsService = pluginsService;
|
|
14024
|
+
this.backend = backend;
|
|
14025
|
+
this.SIZE_LIMIT = 1024 * 1024 * 10; // 10MB
|
|
14026
|
+
this._disabled = false;
|
|
14027
|
+
this.attachments = [];
|
|
14028
|
+
this.isMedia = false;
|
|
14029
|
+
this.isOctetStream = false;
|
|
14030
|
+
this.isNotSupported = false;
|
|
14031
|
+
this.isLarge = false;
|
|
14032
|
+
this.hasError = false;
|
|
14033
|
+
this.customConfig = [];
|
|
14034
|
+
this.defaultViewers = [
|
|
14035
|
+
{
|
|
14036
|
+
"mimeType": ["application/json", "text/json", "text/plain", "text/xml", "text/java", "text/javascript", "application/javascript", "text/html", "text/markdown", "text/x-web-markdown", "text/x-markdown"],
|
|
14037
|
+
"viewer": "assets/_default/api/monaco/?path=${path}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}"
|
|
14038
|
+
},
|
|
14039
|
+
{
|
|
14040
|
+
"mimeType": ["audio/mp3", "audio/webm", "audio/ogg", "audio/mpeg", "video/mp4", "video/webm", "video/ogg", "application/ogg"],
|
|
14041
|
+
"viewer": "assets/_default/api/video/?path=${path}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}"
|
|
14042
|
+
},
|
|
14043
|
+
{
|
|
14044
|
+
"mimeType": ["image/jpeg", "image/png", "image/apng", "image/gif", "image/svg+xml", "image/webp"],
|
|
14045
|
+
"viewer": "assets/_default/api/img/?path=${path}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}"
|
|
14046
|
+
},
|
|
14047
|
+
{ "viewer": "() => parameters.defaultViewer + '#'" },
|
|
14048
|
+
{ "error": true, "type": "error", "viewer": "assets/_default/api/error/?path=${path}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}" }
|
|
14049
|
+
];
|
|
14050
|
+
this.undockDisabled = false;
|
|
14051
|
+
this.enableCloseBtn = false;
|
|
14052
|
+
// by default, the viewer ignores the version of the dms object. This will always show the latest version.
|
|
14053
|
+
// We need this to be able to refresh the viewer because otherwise pdfjs worker will fail.
|
|
14054
|
+
this.useVersion = false;
|
|
14055
|
+
this.fileSizePipe = new FileSizePipe(translate);
|
|
14056
|
+
this.SIZE_LIMIT = this.config.getRaw('preview.fileSizeLimit') || this.SIZE_LIMIT;
|
|
14057
|
+
this.customConfig = (this.config.getRaw('preview.viewers') || []).concat(this.defaultViewers);
|
|
14058
|
+
this.pluginsService.api.content.catchError().subscribe((evt) => {
|
|
14059
|
+
var _a, _b;
|
|
14060
|
+
const { err, win, parameters } = evt.data;
|
|
14061
|
+
const uri = this.pluginsService.applyFunction((_b = (_a = this.customConfig) === null || _a === void 0 ? void 0 : _a.find((v) => v.error)) === null || _b === void 0 ? void 0 : _b.viewer, 'api, err, win, parameters', [
|
|
14062
|
+
this.pluginsService.api,
|
|
14063
|
+
err,
|
|
14064
|
+
win,
|
|
14065
|
+
parameters
|
|
14066
|
+
]);
|
|
14067
|
+
uri && this.loadDocument(this.resolveUri(uri, parameters), true);
|
|
14068
|
+
});
|
|
14069
|
+
if (ContentPreviewService.undockWinActive()) {
|
|
14070
|
+
this.undock(false);
|
|
13975
14071
|
}
|
|
13976
|
-
this.prepareService
|
|
13977
|
-
.createPreparedItem(pid, type.name)
|
|
13978
|
-
.subscribe(() => {
|
|
13979
|
-
this.router.navigateByUrl('/prepare');
|
|
13980
|
-
}, Utils.throw(null, this.translate.instant('eo.add.prepare.fail.title'), this.translate.instant('eo.add.prepare.fail.msg')));
|
|
13981
|
-
this.onClose.emit();
|
|
13982
14072
|
}
|
|
13983
|
-
|
|
13984
|
-
|
|
13985
|
-
return type.label.toLowerCase().indexOf(evt.query.toLowerCase()) != -1;
|
|
13986
|
-
});
|
|
14073
|
+
get undockWin() {
|
|
14074
|
+
return ContentPreviewService.getUndockWin();
|
|
13987
14075
|
}
|
|
13988
|
-
|
|
13989
|
-
|
|
13990
|
-
|
|
14076
|
+
set setAttachments(attachments) {
|
|
14077
|
+
this.attachments = attachments;
|
|
14078
|
+
this.attachmentsShown = false;
|
|
14079
|
+
}
|
|
14080
|
+
set setSearchTerm(searchTerm) {
|
|
14081
|
+
this.searchTerm = searchTerm || '';
|
|
14082
|
+
}
|
|
14083
|
+
set disabled(disabled) {
|
|
14084
|
+
this._disabled = !!disabled;
|
|
14085
|
+
this.toogleViewer();
|
|
14086
|
+
}
|
|
14087
|
+
get disabled() {
|
|
14088
|
+
return this._disabled;
|
|
14089
|
+
}
|
|
14090
|
+
set previewUri(uri) {
|
|
14091
|
+
this._previewUri = uri;
|
|
14092
|
+
this.toogleViewer();
|
|
14093
|
+
}
|
|
14094
|
+
get previewUri() {
|
|
14095
|
+
return this._previewUri;
|
|
14096
|
+
}
|
|
14097
|
+
set previewFile(file) {
|
|
14098
|
+
var _a;
|
|
14099
|
+
if (file) {
|
|
14100
|
+
this.viewer = this.getViewer(file);
|
|
14101
|
+
this.isMedia = this.viewer.viewer !== MediaComponent.PDF_VIEWER;
|
|
14102
|
+
this.isOctetStream = !!((_a = file.mimegroup) === null || _a === void 0 ? void 0 : _a.match(/octet-stream/));
|
|
14103
|
+
this.isLarge = file.size && file.size > this.SIZE_LIMIT;
|
|
14104
|
+
this.mediaType = file.mediaTypeName && this.system.getObjectType(file.mediaTypeName);
|
|
14105
|
+
this.previewUri = this.isMedia ? this.viewer.previewUri : file.uriPdf;
|
|
13991
14106
|
}
|
|
13992
14107
|
else {
|
|
13993
|
-
this.
|
|
13994
|
-
}
|
|
13995
|
-
}
|
|
13996
|
-
preparedItemData(payload) {
|
|
13997
|
-
const typeElement = this.systemService
|
|
13998
|
-
.getObjectType(this.subfolder.type)
|
|
13999
|
-
.elements
|
|
14000
|
-
.filter(val => this.subfolder.data ? val.name === Object.keys(this.subfolder.data)[0] : null);
|
|
14001
|
-
if (typeElement.length && typeElement[0].multiselect) {
|
|
14002
|
-
Object.entries(payload).map(([key, value]) => payload[key] = [value]);
|
|
14108
|
+
this.previewUri = '';
|
|
14003
14109
|
}
|
|
14004
|
-
return payload;
|
|
14005
14110
|
}
|
|
14006
|
-
|
|
14007
|
-
|
|
14008
|
-
|
|
14111
|
+
set dmsObject(item) {
|
|
14112
|
+
var _a;
|
|
14113
|
+
this._dmsObject = item;
|
|
14114
|
+
this.dmsObjectTitle = item.title || '...';
|
|
14115
|
+
this.setAttachments = [];
|
|
14116
|
+
if (this.attachmentsLoading) {
|
|
14117
|
+
// cancel any pending requests
|
|
14118
|
+
this.attachmentsLoading.unsubscribe();
|
|
14119
|
+
}
|
|
14120
|
+
if (item.content && item.content.contents && item.content.contents.length) {
|
|
14121
|
+
const file = item.content.contents[0] || {};
|
|
14122
|
+
this.previewFile = {
|
|
14123
|
+
uri: this.dms.getPreview(item.content.id, item.content.type, this.useVersion ? item.version : null),
|
|
14124
|
+
uriPdf: this.dms.getPreview(item.content.id, item.content.type, this.useVersion ? item.version : null, 'PDF'),
|
|
14125
|
+
mimetype: file.mimetype,
|
|
14126
|
+
mimegroup: file.mimegroup,
|
|
14127
|
+
size: file.size,
|
|
14128
|
+
path: file.path,
|
|
14129
|
+
mediaTypeName: item.typeName
|
|
14130
|
+
};
|
|
14131
|
+
if (!!((_a = file.mimegroup) === null || _a === void 0 ? void 0 : _a.match(/^mail|octet-stream/))) {
|
|
14132
|
+
this.slideUri = this.dms.getSlide(item.content.id, item.content.type, this.useVersion ? item.version : null, 256);
|
|
14133
|
+
this.attachmentsLoading = this.dms.getAttachments(item).subscribe(a => this.setAttachments = a);
|
|
14134
|
+
}
|
|
14135
|
+
}
|
|
14136
|
+
else {
|
|
14137
|
+
this.previewUri = '';
|
|
14009
14138
|
}
|
|
14010
|
-
let pid = this.locationParent.id;
|
|
14011
|
-
const { data, type } = this.subfolder;
|
|
14012
|
-
const payload = this.preparedItemData(data);
|
|
14013
|
-
this.prepareService
|
|
14014
|
-
.createPreparedItem(pid, type ? type : null)
|
|
14015
|
-
.pipe(mergeMap(res => this.prepareService.updatePreparedItemIndexData(res.id, payload)))
|
|
14016
|
-
.subscribe(() => {
|
|
14017
|
-
this.router.navigateByUrl('/prepare');
|
|
14018
|
-
}, Utils.throw(null, this.translate.instant('eo.add.prepare.fail.title'), this.translate.instant('eo.add.prepare.fail.msg')));
|
|
14019
|
-
this.onClose.emit();
|
|
14020
14139
|
}
|
|
14021
|
-
|
|
14022
|
-
this.
|
|
14023
|
-
|
|
14024
|
-
.subscribe((types) => {
|
|
14025
|
-
this.rootTypes = this.sortTypes(types);
|
|
14026
|
-
this.createAutocompleteList();
|
|
14027
|
-
});
|
|
14140
|
+
selectAttachment(attachment, force) {
|
|
14141
|
+
const previewUri = attachment && this.isMedia ? this.getViewer({ uriPdf: attachment === null || attachment === void 0 ? void 0 : attachment.previewUri }).previewUri : attachment === null || attachment === void 0 ? void 0 : attachment.previewUri;
|
|
14142
|
+
this.loadDocument(previewUri || this.previewUri, force);
|
|
14028
14143
|
}
|
|
14029
|
-
|
|
14030
|
-
this.
|
|
14031
|
-
|
|
14032
|
-
|
|
14033
|
-
|
|
14034
|
-
|
|
14035
|
-
|
|
14036
|
-
type
|
|
14037
|
-
};
|
|
14038
|
-
}).concat(this.locationTypes.map(type => {
|
|
14039
|
-
return {
|
|
14040
|
-
label: type.label,
|
|
14041
|
-
location: `${this.translate.instant('eo.add.title.location')} ${this.locationParent.title}`,
|
|
14042
|
-
isRootType: false,
|
|
14043
|
-
isSubfolder: false,
|
|
14044
|
-
type
|
|
14045
|
-
};
|
|
14046
|
-
}));
|
|
14047
|
-
if (this.subfolder) {
|
|
14048
|
-
this.autocompleteList.push({
|
|
14049
|
-
label: this.subfolder.title,
|
|
14050
|
-
location: `${this.translate.instant('eo.add.title.location')} ${this.locationParent.title}`,
|
|
14051
|
-
isRootType: false,
|
|
14052
|
-
isSubfolder: true,
|
|
14053
|
-
});
|
|
14144
|
+
toogleViewer() {
|
|
14145
|
+
this.open = !this.disabled && !!this.previewUri;
|
|
14146
|
+
if (this.undockDisabled) {
|
|
14147
|
+
this.isUndocked = false;
|
|
14148
|
+
}
|
|
14149
|
+
if (this.open || this.isUndocked) {
|
|
14150
|
+
this.loadDocument(this.previewUri, this.isUndocked);
|
|
14054
14151
|
}
|
|
14055
14152
|
}
|
|
14056
|
-
|
|
14057
|
-
|
|
14058
|
-
|
|
14059
|
-
|
|
14060
|
-
|
|
14061
|
-
|
|
14062
|
-
|
|
14063
|
-
}
|
|
14064
|
-
return Utils.sortValues('label').call(this, a, b);
|
|
14153
|
+
refresh() {
|
|
14154
|
+
this.loadDocument(this.previewUri, true);
|
|
14155
|
+
}
|
|
14156
|
+
openPdfViewer(uri) {
|
|
14157
|
+
this.pdfjs.contentWindow.PDFViewerApplication.open(uri).then(() => (this.hasError = false)).catch((err) => {
|
|
14158
|
+
this.hasError = !this.isOctetStream;
|
|
14159
|
+
this.isNotSupported = this.isOctetStream;
|
|
14065
14160
|
});
|
|
14161
|
+
// this.search();
|
|
14066
14162
|
}
|
|
14067
|
-
|
|
14068
|
-
|
|
14069
|
-
|
|
14070
|
-
|
|
14071
|
-
|
|
14072
|
-
|
|
14073
|
-
|
|
14074
|
-
|
|
14075
|
-
|
|
14076
|
-
|
|
14077
|
-
this.subFolderDescription = loc.title + '; ' + this.subfolder.title;
|
|
14078
|
-
}
|
|
14079
|
-
this.createAutocompleteList();
|
|
14163
|
+
getViewer(file) {
|
|
14164
|
+
var _a, _b;
|
|
14165
|
+
const isVideo = !!((_a = file.mimegroup) === null || _a === void 0 ? void 0 : _a.match(/^audio|^video/));
|
|
14166
|
+
const defaultViewer = isVideo ? MediaComponent.VIDEO_VIEWER : MediaComponent.PDF_VIEWER;
|
|
14167
|
+
const fileExtension = ((_b = file.path) === null || _b === void 0 ? void 0 : _b.includes('.')) ? file.path.split('.').pop() : '';
|
|
14168
|
+
const mimeType = file.mimetype;
|
|
14169
|
+
const config = this.customConfig.find((c) => {
|
|
14170
|
+
const matchMT = !c.mimeType || (typeof c.mimeType === 'string' ? [c.mimeType] : c.mimeType).includes(mimeType === null || mimeType === void 0 ? void 0 : mimeType.toLowerCase());
|
|
14171
|
+
const matchFE = !c.fileExtension || (typeof c.fileExtension === 'string' ? [c.fileExtension] : c.fileExtension).includes((fileExtension).toLowerCase());
|
|
14172
|
+
return matchMT && matchFE && (!c.type || c.type === 'default');
|
|
14080
14173
|
});
|
|
14174
|
+
const parameters = {
|
|
14175
|
+
file,
|
|
14176
|
+
path: location.origin + file.uri,
|
|
14177
|
+
pathPdf: location.origin + file.uriPdf,
|
|
14178
|
+
viewer: (config === null || config === void 0 ? void 0 : config.viewer) || defaultViewer,
|
|
14179
|
+
load: config === null || config === void 0 ? void 0 : config.load,
|
|
14180
|
+
fileExtension,
|
|
14181
|
+
mimeType,
|
|
14182
|
+
theme: '',
|
|
14183
|
+
defaultViewer,
|
|
14184
|
+
previewUri: ''
|
|
14185
|
+
};
|
|
14186
|
+
parameters.viewer = this.pluginsService.applyFunction(parameters.viewer, 'component, dmsObject, parameters', [this, this._dmsObject, parameters]) || defaultViewer;
|
|
14187
|
+
const extend = this.customConfig.find((c) => c.type === 'extend');
|
|
14188
|
+
if (extend)
|
|
14189
|
+
parameters.viewer = this.pluginsService.applyFunction(extend.viewer, 'component, dmsObject, parameters', [this, this._dmsObject, parameters]);
|
|
14190
|
+
parameters.previewUri = this.resolveUri(parameters.viewer, parameters);
|
|
14191
|
+
return parameters;
|
|
14081
14192
|
}
|
|
14082
|
-
|
|
14083
|
-
return
|
|
14193
|
+
resolveUri(viewer, parameters) {
|
|
14194
|
+
return (viewer ? document.baseURI : '') + viewer
|
|
14195
|
+
.replace('${originalPath}', parameters.path)
|
|
14196
|
+
.replace('${path}', encodeURIComponent(parameters.path))
|
|
14197
|
+
.replace('${pathPdf}', encodeURIComponent(parameters.pathPdf))
|
|
14198
|
+
.replace('${fileExtension}', encodeURIComponent(parameters.fileExtension))
|
|
14199
|
+
.replace('${mimeType}', encodeURIComponent(parameters.mimeType))
|
|
14200
|
+
.replace('${theme}', encodeURIComponent(parameters.theme))
|
|
14201
|
+
.replace('${lang}', ContentPreviewService.mapLang(this.translate.currentLang));
|
|
14084
14202
|
}
|
|
14085
|
-
|
|
14086
|
-
this.
|
|
14087
|
-
|
|
14088
|
-
|
|
14089
|
-
|
|
14090
|
-
|
|
14203
|
+
undock(open = true) {
|
|
14204
|
+
if (this.undockDisabled) {
|
|
14205
|
+
return;
|
|
14206
|
+
}
|
|
14207
|
+
this.isUndocked = !this.isUndocked;
|
|
14208
|
+
if (!this.isUndocked) {
|
|
14209
|
+
ContentPreviewService.closeWin();
|
|
14210
|
+
}
|
|
14211
|
+
else {
|
|
14212
|
+
this._ngZone.runOutsideAngular(_ => {
|
|
14213
|
+
const interval = setInterval(() => {
|
|
14214
|
+
if (this.undockWin && !ContentPreviewService.undockWinActive()) {
|
|
14215
|
+
clearInterval(interval);
|
|
14216
|
+
this._ngZone.run(() => this.isUndocked && this.undock());
|
|
14217
|
+
}
|
|
14218
|
+
}, 1000);
|
|
14219
|
+
fromEvent(window, 'beforeunload')
|
|
14220
|
+
.pipe(takeWhile(() => this.isUndocked))
|
|
14221
|
+
.subscribe(e => ContentPreviewService.closeWin());
|
|
14222
|
+
});
|
|
14223
|
+
}
|
|
14224
|
+
if (open) {
|
|
14225
|
+
this.loadDocument(this.previewUri, true);
|
|
14226
|
+
}
|
|
14227
|
+
}
|
|
14228
|
+
openWindow(src, clean = false) {
|
|
14229
|
+
ContentPreviewService.undockWin(src);
|
|
14230
|
+
if (clean) {
|
|
14231
|
+
while (this.undockWin.document.body.firstChild) {
|
|
14232
|
+
this.undockWin.document.body.removeChild(this.undockWin.document.body.firstChild);
|
|
14091
14233
|
}
|
|
14092
|
-
|
|
14093
|
-
|
|
14094
|
-
|
|
14234
|
+
}
|
|
14235
|
+
else if (!src && !this.undockWin.document.querySelector('#no-file')) {
|
|
14236
|
+
this.undockWin.document.write(`<div id="no-file" style="opacity: 0.06; display: flex; height: 100%; width: 100%; align-items: center; justify-content: center;">
|
|
14237
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 48 48">
|
|
14238
|
+
<path d="M29 4H14.6c-.8 0-1.5.2-2 .6l27.2 27.2v-17L29 4zm-.7 11.6V7.8l7.8 7.8h-7.8zM43.4 40.8l-2.5 2.5-3.5-3.5c-.4.1-.8.2-1.2.2H14.6c-2
|
|
14239
|
+
0-3.6-1.6-3.6-3.6V13.5L5.9 8.4l2.5-2.5L11 8.4l28.7 28.7 3.1 3.1.6.6z"/>
|
|
14240
|
+
</svg>
|
|
14241
|
+
<div>`);
|
|
14242
|
+
}
|
|
14243
|
+
}
|
|
14244
|
+
loadDocument(uri, force) {
|
|
14245
|
+
var _a, _b;
|
|
14246
|
+
if (force) {
|
|
14247
|
+
this.isLarge = false;
|
|
14248
|
+
}
|
|
14249
|
+
if (!force && (this.disabled || !uri || (uri === this.latestUri && !this.hasError))) {
|
|
14250
|
+
return false;
|
|
14251
|
+
}
|
|
14252
|
+
this.latestUri = uri || '';
|
|
14253
|
+
this.hasError = false;
|
|
14254
|
+
this.isNotSupported = false;
|
|
14255
|
+
if (this.isUndocked) {
|
|
14256
|
+
this.openWindow(this.latestUri);
|
|
14257
|
+
const onload = () => { var _a; return this.pluginsService.applyFunction((_a = this.viewer) === null || _a === void 0 ? void 0 : _a.load, 'iframe, component', [this.undockWin, this]); };
|
|
14258
|
+
this.iframeInit(this.undockWin, ((_a = this.viewer) === null || _a === void 0 ? void 0 : _a.load) && onload);
|
|
14259
|
+
return false;
|
|
14260
|
+
}
|
|
14261
|
+
if (this.isLarge) {
|
|
14262
|
+
return false;
|
|
14263
|
+
}
|
|
14264
|
+
if (this.isMedia) {
|
|
14265
|
+
this.renderer.setAttribute(this.iframeMedia.nativeElement, 'src', this.latestUri);
|
|
14266
|
+
const onload = () => { var _a; return this.pluginsService.applyFunction((_a = this.viewer) === null || _a === void 0 ? void 0 : _a.load, 'iframe, component', [this.iframeMedia.nativeElement, this]); };
|
|
14267
|
+
this.iframeInit(this.iframeMedia.nativeElement, ((_b = this.viewer) === null || _b === void 0 ? void 0 : _b.load) && onload);
|
|
14268
|
+
}
|
|
14269
|
+
else {
|
|
14270
|
+
if (!this.pdfjs) {
|
|
14271
|
+
this.pdfjs = this.iframe.nativeElement;
|
|
14272
|
+
this.renderer.setAttribute(this.pdfjs, 'src', MediaComponent.PDF_VIEWER.replace(/\?.*/, '?file=&'));
|
|
14273
|
+
this.renderer.listen(this.pdfjs, 'load', () => {
|
|
14274
|
+
this.pdfjs.contentWindow.PDFViewerApplicationOptions.set('sidebarViewOnLoad', 0);
|
|
14275
|
+
this.pdfjs.contentWindow.PDFViewerApplicationOptions.set('viewOnLoad', false);
|
|
14276
|
+
this.pdfjs.contentWindow.PDFViewerApplicationOptions.set('locale', ContentPreviewService.mapLang(this.translate.currentLang));
|
|
14277
|
+
this.pdfjs.contentWindow.document.webL10n.setLanguage(ContentPreviewService.mapLang(this.translate.currentLang));
|
|
14278
|
+
this.pdfjs.contentWindow.PDFViewerApplication._initializeL10n();
|
|
14279
|
+
this.pdfjs.contentWindow.PDFViewerApplicationOptions.set('viewerCssTheme', 1);
|
|
14280
|
+
this.pdfjs.contentWindow.PDFViewerApplication._forceCssTheme();
|
|
14281
|
+
this.pdfjs.contentWindow.PDFViewerApplication.appConfig.viewerContainer
|
|
14282
|
+
.addEventListener('dragenter', e => window.document.dispatchEvent(new DragEvent('dragenter', e)));
|
|
14283
|
+
this.pdfjs.contentWindow.PDFViewerApplication.appConfig.viewerContainer.addEventListener('drop', e => e.stopPropagation());
|
|
14284
|
+
this.openPdfViewer(this.latestUri);
|
|
14285
|
+
});
|
|
14095
14286
|
}
|
|
14096
|
-
|
|
14287
|
+
else if (this.pdfjs.contentWindow && this.pdfjs.contentWindow.PDFViewerApplication) {
|
|
14288
|
+
this.pdfjs.contentWindow.PDFViewerApplication.pdfSidebar.close();
|
|
14289
|
+
this.openPdfViewer(this.latestUri);
|
|
14290
|
+
}
|
|
14291
|
+
}
|
|
14097
14292
|
}
|
|
14098
|
-
|
|
14099
|
-
|
|
14100
|
-
|
|
14293
|
+
/**
|
|
14294
|
+
* Custom search inside PDF.JS based on search term
|
|
14295
|
+
* @param term search term
|
|
14296
|
+
* @param win iframe window
|
|
14297
|
+
*/
|
|
14298
|
+
searchPDF(term = '', win) {
|
|
14299
|
+
var _a, _b;
|
|
14300
|
+
// remove all special characters
|
|
14301
|
+
term = (term || '').replace(/[\"|\*]/g, '').trim();
|
|
14302
|
+
if (term && ((_b = (_a = win === null || win === void 0 ? void 0 : win.PDFViewerApplication) === null || _a === void 0 ? void 0 : _a.appConfig) === null || _b === void 0 ? void 0 : _b.findBar)) {
|
|
14303
|
+
// win.PDFViewerApplication.findController.executeCommand('find', {
|
|
14304
|
+
// caseSensitive: false,
|
|
14305
|
+
// findPrevious: undefined,
|
|
14306
|
+
// highlightAll: true,
|
|
14307
|
+
// phraseSearch: true,
|
|
14308
|
+
// query: term
|
|
14309
|
+
// });
|
|
14310
|
+
win.PDFViewerApplication.appConfig.findBar.findField.value = term;
|
|
14311
|
+
win.PDFViewerApplication.appConfig.findBar.highlightAllCheckbox.checked = true;
|
|
14312
|
+
win.PDFViewerApplication.appConfig.findBar.caseSensitiveCheckbox.checked = false;
|
|
14101
14313
|
}
|
|
14102
14314
|
}
|
|
14103
|
-
|
|
14104
|
-
|
|
14315
|
+
preventDropEvent(win) {
|
|
14316
|
+
var _a, _b, _c, _d;
|
|
14317
|
+
if ((_b = (_a = this.iframe) === null || _a === void 0 ? void 0 : _a.src) === null || _b === void 0 ? void 0 : _b.startsWith(window.location.origin)) {
|
|
14318
|
+
(_c = win === null || win === void 0 ? void 0 : win.document) === null || _c === void 0 ? void 0 : _c.addEventListener('drop', (e) => e.stopPropagation());
|
|
14319
|
+
// dispach drag & drop events to main window
|
|
14320
|
+
(_d = win === null || win === void 0 ? void 0 : win.document) === null || _d === void 0 ? void 0 : _d.addEventListener('dragenter', (e) => {
|
|
14321
|
+
window.document.dispatchEvent(new DragEvent('dragenter', e));
|
|
14322
|
+
setTimeout(() => window.document.dispatchEvent(new DragEvent('dragleave', e)), 10);
|
|
14323
|
+
});
|
|
14324
|
+
}
|
|
14325
|
+
}
|
|
14326
|
+
iframeInit(iframe = this.iframe, onload) {
|
|
14327
|
+
if (iframe) {
|
|
14328
|
+
iframe._init || fromEvent(iframe, 'load')
|
|
14329
|
+
.pipe(takeUntil(this.componentDestroyed$))
|
|
14330
|
+
.subscribe(() => {
|
|
14331
|
+
const win = this.setApi(iframe);
|
|
14332
|
+
onload && onload();
|
|
14333
|
+
setTimeout(() => {
|
|
14334
|
+
// this.loading = false;
|
|
14335
|
+
this.searchPDF(this.searchTerm, win);
|
|
14336
|
+
this.preventDropEvent(win);
|
|
14337
|
+
}, 100);
|
|
14338
|
+
});
|
|
14339
|
+
iframe._init = !!this.setApi(iframe);
|
|
14340
|
+
}
|
|
14341
|
+
}
|
|
14342
|
+
setApi(iframe) {
|
|
14343
|
+
// set api to iframe window
|
|
14344
|
+
const win = (iframe === null || iframe === void 0 ? void 0 : iframe.contentWindow) || iframe;
|
|
14345
|
+
win['api'] = window['api'];
|
|
14346
|
+
return win;
|
|
14347
|
+
}
|
|
14348
|
+
ngAfterViewInit() {
|
|
14349
|
+
}
|
|
14350
|
+
ngOnDestroy() {
|
|
14351
|
+
// return ContentPreviewService.undockWinActive() && this.openWindow('', true);
|
|
14105
14352
|
}
|
|
14106
14353
|
}
|
|
14107
|
-
|
|
14354
|
+
MediaComponent.VIDEO_VIEWER = 'assets/_default/api/video/?path=${path}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}';
|
|
14355
|
+
MediaComponent.PDF_VIEWER = 'assets/_default/api/pdf/web/viewer.html?file=&path=${path}&pathPdf=${pathPdf}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}&css=%23toolbarViewerRight%20%23print%7Bdisplay%3Ablock!important%3B%7D';
|
|
14356
|
+
MediaComponent.decorators = [
|
|
14108
14357
|
{ type: Component, args: [{
|
|
14109
|
-
selector: 'eo-
|
|
14110
|
-
template: "<
|
|
14111
|
-
|
|
14358
|
+
selector: 'eo-media',
|
|
14359
|
+
template: "<div [hidden]=\"!open\">\r\n\r\n <!-- attachments overlay -->\r\n <div class=\"attachments\" *ngIf=\"attachments?.length\" [ngClass]=\"{notmain: latestUri !== previewUri && !attachmentsShown, active: attachmentsShown}\"\r\n (eoOutsideClick)=\"attachmentsShown = false\">\r\n <div class=\"attachments-list\" *ngIf=\"attachmentsShown\">\r\n <div class=\"attachment main\" (click)=\"selectAttachment(null, isLarge)\" [ngClass]=\"{current: latestUri === previewUri}\">{{dmsObjectTitle}}</div>\r\n <div class=\"attachment\" *ngFor=\"let a of attachments\" (click)=\"selectAttachment(a, isLarge)\" [ngClass]=\"{current: latestUri === a.previewUri}\">\r\n {{a.name}}\r\n </div>\r\n </div>\r\n\r\n <eo-icon class=\"button\" [badge]=\"attachments?.length\"\r\n (click)=\"attachmentsShown = !attachmentsShown\"\r\n [iconSrc]=\"attachmentsShown ? 'assets/_default/svg/ic_clear.svg' : 'assets/_default/svg/ic_attachment.svg'\"></eo-icon>\r\n </div>\r\n\r\n <div class=\"preview-container\" [style.overflow]=\"'hidden'\" [hidden]=\"hasError\">\r\n <iframe [hidden]=\"isNotSupported || isLarge || isUndocked || isMedia\" #iframe height=\"100%\" width=\"100%\" frameborder=\"0\"></iframe>\r\n <iframe [hidden]=\"isNotSupported || isLarge || isUndocked || !isMedia\" #iframeMedia height=\"100%\" width=\"100%\" frameborder=\"0\"></iframe>\r\n <div class=\"slide\" *ngIf=\"isNotSupported || isLarge || isUndocked\">\r\n <!--<img *ngIf=\"!isMedia\" [src]=\"slideUri\" alt=\"preview\">-->\r\n <eo-icon *ngIf=\"mediaType\" [objectType]=\"mediaType\"></eo-icon>\r\n <div class=\"large-content\" *ngIf=\"isLarge && !isUndocked\" (click)=\"loadDocument(latestUri, true)\" translate>eo.object.preview.proceed</div>\r\n <div class=\"large-content not-supported\" *ngIf=\"isNotSupported\" translate>eo.object.preview.not.supported</div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div [hidden]=\"!hasError && open\" class=\"empty-container\">\r\n <eo-icon class=\"nofile\" [iconSrc]=\"'assets/_default/svg/ic_no-file.svg'\"></eo-icon>\r\n</div>\r\n\r\n<eo-icon *ngIf=\"!undockDisabled\" class=\"button undock\" [iconSrc]=\"'assets/_default/svg/ic_undock.svg'\" (click)=\"undock()\"></eo-icon>",
|
|
14360
|
+
providers: [ContentPreviewService],
|
|
14361
|
+
styles: [":host .empty-container{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}:host .empty-container .nofile{height:128px;opacity:.06;width:128px}:host .button.undock{background-color:rgba(var(--color-primary-rgb),.6);bottom:var(--app-pane-padding);opacity:.2;position:absolute;right:var(--app-pane-padding)}:host .button.undock:hover{opacity:.5}:host .preview-container{bottom:0;left:0;position:absolute;right:0;top:0}:host .preview-container .slide{align-items:center;display:flex;flex:1;flex-direction:column;height:100%;justify-content:center;min-height:0;min-width:0}:host .preview-container .slide .large-content{background-color:rgba(var(--color-primary-rgb),.5);color:var(--color-white);cursor:pointer;display:flex;flex:1;flex-direction:row;justify-content:center;min-height:0;min-width:0;padding:var(--app-pane-padding);position:absolute;top:0;width:100%}:host .preview-container .slide .large-content.not-supported,:host .preview-container .slide .large-content:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .preview-container .slide .large-content.not-supported{cursor:inherit}:host .preview-container .slide img{padding:var(--app-pane-padding);width:100%}:host .preview-container .slide eo-icon{height:128px;opacity:.2;width:128px}:host .attachments{align-items:flex-end;background-color:rgba(var(--color-primary-rgb),.6);border-radius:2px;bottom:calc(var(--app-pane-padding)*3);color:var(--color-white);display:flex;flex-flow:row;max-width:calc(100% - 16px);position:absolute;right:calc(var(--app-pane-padding)/2);z-index:5}:host .attachments:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .attachments eo-icon{flex:0 0 auto;margin:calc(var(--app-pane-padding)/2)}:host .attachments .attachments-list{display:flex;flex:1;flex-direction:row;flex-flow:wrap;max-height:150px;min-height:0;min-width:0;overflow:auto;padding:calc(var(--app-pane-padding)/2)}:host .attachments .attachments-list .attachment{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;background-color:rgba(var(--color-white-rgb),.1);border:1px solid rgba(var(--color-white-rgb),0);border-radius:4px;cursor:pointer;display:inline-block;margin:calc(var(--app-pane-padding)/8);max-width:none;overflow:hidden;padding:calc(var(--app-pane-padding)/4);text-overflow:ellipsis;transition:all var(--app-default-transition-duration) ease-in-out;white-space:nowrap}:host .attachments .attachments-list .attachment:hover{border-color:rgba(var(--color-white-rgb),.5)}:host .attachments .attachments-list .attachment.current{background-color:var(--color-accent)}:host .attachments .attachments-list .attachment.main{background-color:var(--color-primary);flex:1 1 100%;order:100}:host .attachments .attachments-list .attachment:not(.main){font-style:italic}:host .attachments.notmain{background-color:var(--color-accent)}:host .attachments.active{align-items:center;background-color:rgba(var(--color-primary-rgb),.9);bottom:calc(var(--app-pane-padding)/2)}"]
|
|
14112
14362
|
},] }
|
|
14113
14363
|
];
|
|
14114
|
-
|
|
14115
|
-
{ type: PrepareService },
|
|
14116
|
-
{ type: Router },
|
|
14117
|
-
{ type: SystemService },
|
|
14364
|
+
MediaComponent.ctorParameters = () => [
|
|
14118
14365
|
{ type: TranslateService },
|
|
14119
|
-
{ type:
|
|
14120
|
-
{ type:
|
|
14366
|
+
{ type: DmsService },
|
|
14367
|
+
{ type: Renderer2 },
|
|
14368
|
+
{ type: SystemService },
|
|
14369
|
+
{ type: NgZone },
|
|
14370
|
+
{ type: Config },
|
|
14371
|
+
{ type: PluginsService },
|
|
14372
|
+
{ type: BackendService }
|
|
14121
14373
|
];
|
|
14122
|
-
|
|
14123
|
-
|
|
14374
|
+
MediaComponent.propDecorators = {
|
|
14375
|
+
undockDisabled: [{ type: Input }],
|
|
14376
|
+
enableCloseBtn: [{ type: Input }],
|
|
14377
|
+
useVersion: [{ type: Input }],
|
|
14378
|
+
open: [{ type: HostBinding, args: ['class.open',] }],
|
|
14379
|
+
codesystem: [{ type: ViewChild, args: ['codesystem',] }],
|
|
14380
|
+
iframe: [{ type: ViewChild, args: ['iframe', { static: true },] }],
|
|
14381
|
+
iframeMedia: [{ type: ViewChild, args: ['iframeMedia', { static: true },] }],
|
|
14382
|
+
setAttachments: [{ type: Input, args: ['attachments',] }],
|
|
14383
|
+
setSearchTerm: [{ type: Input, args: ['searchTerm',] }],
|
|
14384
|
+
disabled: [{ type: Input }],
|
|
14385
|
+
previewUri: [{ type: Input }],
|
|
14386
|
+
previewFile: [{ type: Input }],
|
|
14387
|
+
dmsObject: [{ type: Input }]
|
|
14124
14388
|
};
|
|
14125
14389
|
|
|
14126
|
-
class
|
|
14127
|
-
constructor() {
|
|
14128
|
-
this.debounceTime = 500;
|
|
14129
|
-
this.debounceClick = new EventEmitter();
|
|
14130
|
-
this.clicks = new Subject();
|
|
14131
|
-
}
|
|
14132
|
-
ngOnInit() {
|
|
14133
|
-
this.subscription = this.clicks.pipe(throttleTime(this.debounceTime)).subscribe(e => this.debounceClick.emit(e));
|
|
14134
|
-
}
|
|
14135
|
-
ngOnDestroy() {
|
|
14136
|
-
this.subscription.unsubscribe();
|
|
14137
|
-
}
|
|
14138
|
-
clickEvent(event) {
|
|
14139
|
-
//TODO: does not support LinkAction (ctrl + click)
|
|
14140
|
-
event.preventDefault();
|
|
14141
|
-
event.stopPropagation();
|
|
14142
|
-
this.clicks.next(event);
|
|
14143
|
-
}
|
|
14390
|
+
class MediaModule {
|
|
14144
14391
|
}
|
|
14145
|
-
|
|
14146
|
-
{ type:
|
|
14147
|
-
|
|
14392
|
+
MediaModule.decorators = [
|
|
14393
|
+
{ type: NgModule, args: [{
|
|
14394
|
+
imports: [
|
|
14395
|
+
CommonModule,
|
|
14396
|
+
UiModule,
|
|
14397
|
+
FormsModule,
|
|
14398
|
+
FormElementsModule
|
|
14399
|
+
],
|
|
14400
|
+
declarations: [MediaComponent],
|
|
14401
|
+
exports: [MediaComponent]
|
|
14148
14402
|
},] }
|
|
14149
|
-
];
|
|
14150
|
-
PreventDoubleClickDirective.ctorParameters = () => [];
|
|
14151
|
-
PreventDoubleClickDirective.propDecorators = {
|
|
14152
|
-
debounceTime: [{ type: Input }],
|
|
14153
|
-
debounceClick: [{ type: Output }],
|
|
14154
|
-
clickEvent: [{ type: HostListener, args: ['click', ['$event'],] }]
|
|
14155
|
-
};
|
|
14403
|
+
];
|
|
14156
14404
|
|
|
14157
|
-
|
|
14158
|
-
|
|
14159
|
-
|
|
14160
|
-
|
|
14405
|
+
/**
|
|
14406
|
+
* @module
|
|
14407
|
+
* @description
|
|
14408
|
+
* Module rendering a dms objects form.
|
|
14409
|
+
*/
|
|
14410
|
+
class ObjectFormModule {
|
|
14161
14411
|
}
|
|
14162
|
-
|
|
14163
|
-
{ type:
|
|
14164
|
-
|
|
14412
|
+
ObjectFormModule.decorators = [
|
|
14413
|
+
{ type: NgModule, args: [{
|
|
14414
|
+
imports: [
|
|
14415
|
+
CommonModule,
|
|
14416
|
+
FormsModule,
|
|
14417
|
+
ReactiveFormsModule,
|
|
14418
|
+
SharedModule,
|
|
14419
|
+
TabViewModule,
|
|
14420
|
+
FieldsetModule,
|
|
14421
|
+
UiModule,
|
|
14422
|
+
DialogModule,
|
|
14423
|
+
PipesModule,
|
|
14424
|
+
AgGridModule,
|
|
14425
|
+
ShortcutsModule,
|
|
14426
|
+
FormElementsModule,
|
|
14427
|
+
SplitModule,
|
|
14428
|
+
ResultListModule,
|
|
14429
|
+
ListContainerModule,
|
|
14430
|
+
GridModule,
|
|
14431
|
+
MediaModule
|
|
14432
|
+
],
|
|
14433
|
+
exports: [ObjectFormComponent, ObjectFormGroupComponent, ObjectFormEditComponent, FormElementComponent],
|
|
14434
|
+
providers: [ObjectFormHelperService],
|
|
14435
|
+
declarations: [
|
|
14436
|
+
ObjectFormComponent,
|
|
14437
|
+
ObjectFormGroupComponent,
|
|
14438
|
+
ObjectFormEditComponent,
|
|
14439
|
+
FormElementComponent,
|
|
14440
|
+
FormElementTableComponent,
|
|
14441
|
+
RowEditComponent
|
|
14442
|
+
]
|
|
14165
14443
|
},] }
|
|
14166
|
-
];
|
|
14167
|
-
ActionComponentAnchorDirective.ctorParameters = () => [
|
|
14168
|
-
{ type: ViewContainerRef }
|
|
14169
14444
|
];
|
|
14170
14445
|
|
|
14171
|
-
class
|
|
14172
|
-
constructor(
|
|
14173
|
-
|
|
14174
|
-
this.actionService = actionService;
|
|
14446
|
+
class AppAddDialogComponent {
|
|
14447
|
+
constructor(prepareService, router, systemService, translate, pendingChanges, locationService) {
|
|
14448
|
+
this.prepareService = prepareService;
|
|
14175
14449
|
this.router = router;
|
|
14176
|
-
this.
|
|
14177
|
-
this.
|
|
14178
|
-
this.
|
|
14179
|
-
|
|
14180
|
-
|
|
14181
|
-
this.
|
|
14182
|
-
this.
|
|
14183
|
-
this.showMenu = false;
|
|
14184
|
-
this.loading = false;
|
|
14185
|
-
// subscribe for visibility observable indicating whether to show or hide the actions
|
|
14186
|
-
this.actionService
|
|
14187
|
-
.actionsShowing$.pipe(takeUntil(this.componentDestroyed$))
|
|
14188
|
-
.subscribe((cmd) => {
|
|
14189
|
-
if (!this.showMenu && cmd.show) {
|
|
14190
|
-
this.selection = cmd.selection;
|
|
14191
|
-
this.target = cmd.target;
|
|
14192
|
-
this.showActionMenu();
|
|
14193
|
-
}
|
|
14194
|
-
else if (this.showMenu && !cmd.show) {
|
|
14195
|
-
this.hideActionMenu();
|
|
14196
|
-
}
|
|
14197
|
-
});
|
|
14198
|
-
this.router.events
|
|
14199
|
-
.pipe(takeUntil(this.componentDestroyed$), filter(evt => evt instanceof NavigationStart))
|
|
14200
|
-
.subscribe(() => this.hide());
|
|
14201
|
-
}
|
|
14202
|
-
getActions() {
|
|
14203
|
-
this.actionService
|
|
14204
|
-
.getActionsList(this.selection, this.viewContainerRef)
|
|
14205
|
-
.subscribe(actionsList => {
|
|
14206
|
-
this.actionLists.common = actionsList.filter(actionListEntry => actionListEntry.action.group === 'common');
|
|
14207
|
-
this.actionLists.further = actionsList.filter(actionListEntry => actionListEntry.action.group === 'further');
|
|
14208
|
-
});
|
|
14209
|
-
}
|
|
14210
|
-
getMoreActions() {
|
|
14211
|
-
this.loading = true;
|
|
14212
|
-
this.actionService
|
|
14213
|
-
.getMoreActions(this.selection, this.viewContainerRef)
|
|
14214
|
-
.subscribe(actionList => {
|
|
14215
|
-
this.loading = false;
|
|
14216
|
-
this.actionLists.further = this.actionLists.further.concat(actionList).sort(Utils.sortValues('action.label'));
|
|
14217
|
-
}, Utils.throw(() => this.loading = false));
|
|
14450
|
+
this.systemService = systemService;
|
|
14451
|
+
this.translate = translate;
|
|
14452
|
+
this.pendingChanges = pendingChanges;
|
|
14453
|
+
this.locationService = locationService;
|
|
14454
|
+
this.onClose = new EventEmitter();
|
|
14455
|
+
this.rootTypes = [];
|
|
14456
|
+
this.locationTypes = [];
|
|
14218
14457
|
}
|
|
14219
|
-
|
|
14220
|
-
this.
|
|
14458
|
+
prepare(type, isRootType = false) {
|
|
14459
|
+
if (this.pendingChanges.check()) {
|
|
14460
|
+
return;
|
|
14461
|
+
}
|
|
14462
|
+
let pid = null;
|
|
14463
|
+
if (!isRootType && this.locationParent) {
|
|
14464
|
+
pid = this.locationParent.id;
|
|
14465
|
+
}
|
|
14466
|
+
this.prepareService
|
|
14467
|
+
.createPreparedItem(pid, type.name)
|
|
14468
|
+
.subscribe(() => {
|
|
14469
|
+
this.router.navigateByUrl('/prepare');
|
|
14470
|
+
}, Utils.throw(null, this.translate.instant('eo.add.prepare.fail.title'), this.translate.instant('eo.add.prepare.fail.msg')));
|
|
14471
|
+
this.onClose.emit();
|
|
14221
14472
|
}
|
|
14222
|
-
|
|
14223
|
-
|
|
14224
|
-
|
|
14225
|
-
|
|
14473
|
+
autocompleteFn(evt) {
|
|
14474
|
+
this.autocompleteRes = this.autocompleteList.filter(type => {
|
|
14475
|
+
return type.label.toLowerCase().indexOf(evt.query.toLowerCase()) != -1;
|
|
14476
|
+
});
|
|
14226
14477
|
}
|
|
14227
|
-
|
|
14228
|
-
|
|
14229
|
-
|
|
14230
|
-
|
|
14478
|
+
onSelect(node) {
|
|
14479
|
+
if (node.isSubfolder) {
|
|
14480
|
+
this.addToSubfolder();
|
|
14481
|
+
}
|
|
14482
|
+
else {
|
|
14483
|
+
this.prepare(node.type, node.isRootType);
|
|
14231
14484
|
}
|
|
14232
|
-
|
|
14485
|
+
}
|
|
14486
|
+
preparedItemData(payload) {
|
|
14487
|
+
const typeElement = this.systemService
|
|
14488
|
+
.getObjectType(this.subfolder.type)
|
|
14489
|
+
.elements
|
|
14490
|
+
.filter(val => this.subfolder.data ? val.name === Object.keys(this.subfolder.data)[0] : null);
|
|
14491
|
+
if (typeElement.length && typeElement[0].multiselect) {
|
|
14492
|
+
Object.entries(payload).map(([key, value]) => payload[key] = [value]);
|
|
14493
|
+
}
|
|
14494
|
+
return payload;
|
|
14495
|
+
}
|
|
14496
|
+
addToSubfolder() {
|
|
14497
|
+
if (this.pendingChanges.check()) {
|
|
14498
|
+
return;
|
|
14499
|
+
}
|
|
14500
|
+
let pid = this.locationParent.id;
|
|
14501
|
+
const { data, type } = this.subfolder;
|
|
14502
|
+
const payload = this.preparedItemData(data);
|
|
14503
|
+
this.prepareService
|
|
14504
|
+
.createPreparedItem(pid, type ? type : null)
|
|
14505
|
+
.pipe(mergeMap(res => this.prepareService.updatePreparedItemIndexData(res.id, payload)))
|
|
14506
|
+
.subscribe(() => {
|
|
14507
|
+
this.router.navigateByUrl('/prepare');
|
|
14508
|
+
}, Utils.throw(null, this.translate.instant('eo.add.prepare.fail.title'), this.translate.instant('eo.add.prepare.fail.msg')));
|
|
14509
|
+
this.onClose.emit();
|
|
14510
|
+
}
|
|
14511
|
+
fetchRootTypes() {
|
|
14512
|
+
this.prepareService
|
|
14513
|
+
.getPrepareRootTypes()
|
|
14514
|
+
.subscribe((types) => {
|
|
14515
|
+
this.rootTypes = this.sortTypes(types);
|
|
14516
|
+
this.createAutocompleteList();
|
|
14517
|
+
});
|
|
14518
|
+
}
|
|
14519
|
+
createAutocompleteList() {
|
|
14520
|
+
this.autocompleteList = this.rootTypes.map(type => {
|
|
14521
|
+
return {
|
|
14522
|
+
label: type.label,
|
|
14523
|
+
location: this.translate.instant('eo.add.title.location.common'),
|
|
14524
|
+
isRootType: true,
|
|
14525
|
+
isSubfolder: false,
|
|
14526
|
+
type
|
|
14527
|
+
};
|
|
14528
|
+
}).concat(this.locationTypes.map(type => {
|
|
14529
|
+
return {
|
|
14530
|
+
label: type.label,
|
|
14531
|
+
location: `${this.translate.instant('eo.add.title.location')} ${this.locationParent.title}`,
|
|
14532
|
+
isRootType: false,
|
|
14533
|
+
isSubfolder: false,
|
|
14534
|
+
type
|
|
14535
|
+
};
|
|
14536
|
+
}));
|
|
14537
|
+
if (this.subfolder) {
|
|
14538
|
+
this.autocompleteList.push({
|
|
14539
|
+
label: this.subfolder.title,
|
|
14540
|
+
location: `${this.translate.instant('eo.add.title.location')} ${this.locationParent.title}`,
|
|
14541
|
+
isRootType: false,
|
|
14542
|
+
isSubfolder: true,
|
|
14543
|
+
});
|
|
14544
|
+
}
|
|
14545
|
+
}
|
|
14546
|
+
sortTypes(types) {
|
|
14547
|
+
return types.sort((a, b) => {
|
|
14548
|
+
if (a.isContextFolder && !b.isContextFolder) {
|
|
14549
|
+
return -1;
|
|
14550
|
+
}
|
|
14551
|
+
if (!a.isContextFolder && b.isContextFolder) {
|
|
14552
|
+
return 1;
|
|
14553
|
+
}
|
|
14554
|
+
return Utils.sortValues('label').call(this, a, b);
|
|
14555
|
+
});
|
|
14556
|
+
}
|
|
14557
|
+
fetchAllowedChildTypes(loc) {
|
|
14558
|
+
this.prepareService
|
|
14559
|
+
.getPrepareChildTypes(loc.id)
|
|
14560
|
+
.subscribe((res) => {
|
|
14561
|
+
const { types, parent } = res;
|
|
14562
|
+
this.locationParent = Utils.truncateString(parent, 30);
|
|
14563
|
+
this.locationTypes = this.sortTypes(types);
|
|
14564
|
+
this.locationParent.title = Utils.truncateString(parent['title'], 30);
|
|
14565
|
+
if (loc.subFolder && this.isSubFolderAllowed(loc.subFolder, this.locationTypes)) {
|
|
14566
|
+
this.subfolder = loc.subFolder;
|
|
14567
|
+
this.subFolderDescription = loc.title + '; ' + this.subfolder.title;
|
|
14568
|
+
}
|
|
14569
|
+
this.createAutocompleteList();
|
|
14570
|
+
});
|
|
14571
|
+
}
|
|
14572
|
+
isSubFolderAllowed(subFolder, locationTypes) {
|
|
14573
|
+
return !!locationTypes.find(lt => this.systemService.implementsType(lt, subFolder.type));
|
|
14574
|
+
}
|
|
14575
|
+
ngOnInit() {
|
|
14576
|
+
this.fetchRootTypes();
|
|
14577
|
+
this.activeLocationSubscription = this.locationService.activeLocation$
|
|
14578
|
+
.subscribe((loc) => {
|
|
14579
|
+
if (loc) {
|
|
14580
|
+
this.fetchAllowedChildTypes(loc);
|
|
14581
|
+
}
|
|
14582
|
+
else {
|
|
14583
|
+
this.locationTypes = [];
|
|
14584
|
+
this.locationParent = null;
|
|
14585
|
+
}
|
|
14586
|
+
});
|
|
14587
|
+
}
|
|
14588
|
+
ngOnDestroy() {
|
|
14589
|
+
if (this.activeLocationSubscription) {
|
|
14590
|
+
this.activeLocationSubscription.unsubscribe();
|
|
14591
|
+
}
|
|
14592
|
+
}
|
|
14593
|
+
trackByFn(index, item) {
|
|
14594
|
+
return index;
|
|
14595
|
+
}
|
|
14596
|
+
}
|
|
14597
|
+
AppAddDialogComponent.decorators = [
|
|
14598
|
+
{ type: Component, args: [{
|
|
14599
|
+
selector: 'eo-app-add-dialog',
|
|
14600
|
+
template: "<section class=\"autocomplete\">\r\n <p-autoComplete [(ngModel)]=\"selectedNode\" [minLength]=\"1\" [delay]=\"500\" #autocomplete\r\n [suggestions]=\"autocompleteRes\" field=\"label\"\r\n [forceSelection]=\"true\"\r\n (onSelect)=\"onSelect($event)\"\r\n (completeMethod)=\"autocompleteFn($event)\">\r\n \r\n <ng-template let-item pTemplate=\"item\">\r\n <span class=\"ui-autocomplete-token-label\" title=\"{{item.label}} ({{item.location}})\">\r\n <strong>{{item.label}}</strong>\r\n <span>{{item.location}}</span>\r\n </span>\r\n </ng-template>\r\n </p-autoComplete>\r\n</section>\r\n\r\n<section class=\"type-lists\">\r\n <section class=\"section location\" *ngIf=\"locationParent\">\r\n <div class=\"subhead\"><span translate>eo.add.title.location</span><span> \"{{locationParent.title}}\"</span></div>\r\n <div class=\"type sub\" (click)=\"addToSubfolder()\" *ngIf=\"subfolder\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_create_new_folder.svg'\"></eo-icon>\r\n <div>\r\n <div class=\"label\">{{'eo.add.title.location.subfolder'|translate: ({folder: subfolder.title})}}</div>\r\n <div class=\"group\">{{subFolderDescription}}</div>\r\n </div>\r\n </div>\r\n <div class=\"type\" *ngFor=\"let type of locationTypes; trackBy: trackByFn\" (click)=\"prepare(type)\">\r\n <eo-icon [objectType]=\"type\"></eo-icon>\r\n <div>\r\n <div class=\"label\">{{type.label}}</div>\r\n <div class=\"group\">{{type.group}}</div>\r\n </div>\r\n </div>\r\n </section>\r\n \r\n <section class=\"section general\" *ngIf=\"rootTypes.length; else noRootTypes\">\r\n <div class=\"subhead\"><span translate>eo.add.title.location.common</span></div>\r\n <div class=\"type\" *ngFor=\"let type of rootTypes; trackBy: trackByFn\"\r\n [ngClass]=\"{context: type.isContextFolder}\"\r\n (click)=\"prepare(type, true)\">\r\n <eo-icon [objectType]=\"type\"></eo-icon>\r\n <div>\r\n <div class=\"label\">{{type.label}}</div>\r\n <div class=\"group\">{{type.group}}</div>\r\n </div>\r\n </div>\r\n </section>\r\n</section>\r\n\r\n<ng-template #noRootTypes>\r\n <div *ngIf=\"!locationParent\">\r\n <span class=\"empty__root-types\" translate>eo.add.empty.root.types</span>\r\n </div>\r\n</ng-template>\r\n",
|
|
14601
|
+
styles: ["::ng-deep .eo-dialog-content.add--content{max-height:620px;overflow:hidden}:host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0}:host ::ng-deep p-autocomplete{width:100%}:host ::ng-deep p-autocomplete .ui-autocomplete input.ui-inputtext{border:0;box-shadow:0 2px 2px 0 rgba(0,0,0,.2);font-size:var(--font-title);padding:calc(var(--app-pane-padding)/2)}:host ::ng-deep p-autocomplete .ui-autocomplete-token-label{display:flex;flex-flow:column}:host ::ng-deep p-autocomplete .ui-autocomplete-token-label>span{font-size:var(--font-hint)}:host .autocomplete{background-color:var(--color-accent);display:flex;padding:var(--app-pane-padding)}:host .type-lists{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;overflow:auto;padding:var(--app-pane-padding) 0}:host .type-lists .section{padding:0 var(--app-pane-padding)}:host .type-lists .section .subhead{color:var(--color-accent);font-size:var(--font-subhead);font-weight:var(--font-weight-normal);margin:0;padding:calc(var(--app-pane-padding)/2)}:host .type-lists .section .type{-moz-transition:background-color var(--app-default-transition-duration) ease-in-out;-o-transition:background-color var(--app-default-transition-duration) ease-in-out;-webkit-transition:background-color var(--app-default-transition-duration) ease-in-out;align-items:center;border-top:1px solid rgba(var(--color-black-rgb),.06);cursor:pointer;display:flex;flex-flow:row nowrap;padding:calc(var(--app-pane-padding)/4) var(--app-pane-padding);transition:background-color var(--app-default-transition-duration) ease-in-out}:host .type-lists .section .type.context>div .label{font-weight:var(--font-weight-bold)}:host .type-lists .section .type.context eo-icon{background-color:rgba(var(--color-black-rgb),.15)}:host .type-lists .section .type.sub{padding-bottom:calc(var(--app-pane-padding)/2);padding-top:calc(var(--app-pane-padding)/2)}:host .type-lists .section .type.sub>div .label{font-weight:var(--font-weight-bold)}:host .type-lists .section .type eo-icon{border-radius:2px;box-sizing:content-box;color:var(--text-color-caption);flex:0 0 auto;height:18px;padding:2px;width:18px}:host .type-lists .section .type>div{flex:1 1 auto;padding:0 var(--app-pane-padding)}:host .type-lists .section .type>div .label{color:var(--text-color-body)}:host .type-lists .section .type>div .group{color:var(--text-color-caption);font-size:var(--font-hint)}:host .type-lists .section .type:hover{background-color:var(--panel-background-grey)}:host .type-lists .empty__root-types{padding:8px}"]
|
|
14602
|
+
},] }
|
|
14603
|
+
];
|
|
14604
|
+
AppAddDialogComponent.ctorParameters = () => [
|
|
14605
|
+
{ type: PrepareService },
|
|
14606
|
+
{ type: Router },
|
|
14607
|
+
{ type: SystemService },
|
|
14608
|
+
{ type: TranslateService },
|
|
14609
|
+
{ type: PendingChangesService },
|
|
14610
|
+
{ type: LocationService }
|
|
14611
|
+
];
|
|
14612
|
+
AppAddDialogComponent.propDecorators = {
|
|
14613
|
+
onClose: [{ type: Output }]
|
|
14614
|
+
};
|
|
14615
|
+
|
|
14616
|
+
class PreventDoubleClickDirective {
|
|
14617
|
+
constructor() {
|
|
14618
|
+
this.debounceTime = 500;
|
|
14619
|
+
this.debounceClick = new EventEmitter();
|
|
14620
|
+
this.clicks = new Subject();
|
|
14621
|
+
}
|
|
14622
|
+
ngOnInit() {
|
|
14623
|
+
this.subscription = this.clicks.pipe(throttleTime(this.debounceTime)).subscribe(e => this.debounceClick.emit(e));
|
|
14624
|
+
}
|
|
14625
|
+
ngOnDestroy() {
|
|
14626
|
+
this.subscription.unsubscribe();
|
|
14627
|
+
}
|
|
14628
|
+
clickEvent(event) {
|
|
14629
|
+
//TODO: does not support LinkAction (ctrl + click)
|
|
14630
|
+
event.preventDefault();
|
|
14631
|
+
event.stopPropagation();
|
|
14632
|
+
this.clicks.next(event);
|
|
14633
|
+
}
|
|
14634
|
+
}
|
|
14635
|
+
PreventDoubleClickDirective.decorators = [
|
|
14636
|
+
{ type: Directive, args: [{
|
|
14637
|
+
selector: '[eoPreventDoubleClick]'
|
|
14638
|
+
},] }
|
|
14639
|
+
];
|
|
14640
|
+
PreventDoubleClickDirective.ctorParameters = () => [];
|
|
14641
|
+
PreventDoubleClickDirective.propDecorators = {
|
|
14642
|
+
debounceTime: [{ type: Input }],
|
|
14643
|
+
debounceClick: [{ type: Output }],
|
|
14644
|
+
clickEvent: [{ type: HostListener, args: ['click', ['$event'],] }]
|
|
14645
|
+
};
|
|
14646
|
+
|
|
14647
|
+
class ActionComponentAnchorDirective {
|
|
14648
|
+
constructor(viewContainerRef) {
|
|
14649
|
+
this.viewContainerRef = viewContainerRef;
|
|
14650
|
+
}
|
|
14651
|
+
}
|
|
14652
|
+
ActionComponentAnchorDirective.decorators = [
|
|
14653
|
+
{ type: Directive, args: [{
|
|
14654
|
+
selector: '[eoActionComponentAnchor]'
|
|
14655
|
+
},] }
|
|
14656
|
+
];
|
|
14657
|
+
ActionComponentAnchorDirective.ctorParameters = () => [
|
|
14658
|
+
{ type: ViewContainerRef }
|
|
14659
|
+
];
|
|
14660
|
+
|
|
14661
|
+
class ActionMenuComponent extends UnsubscribeOnDestroy {
|
|
14662
|
+
constructor(actionService, router, viewContainerRef, componentFactoryResolver) {
|
|
14663
|
+
super();
|
|
14664
|
+
this.actionService = actionService;
|
|
14665
|
+
this.router = router;
|
|
14666
|
+
this.viewContainerRef = viewContainerRef;
|
|
14667
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
14668
|
+
this.actionLists = {
|
|
14669
|
+
common: [], further: []
|
|
14670
|
+
};
|
|
14671
|
+
this.subActionsListHeader = '';
|
|
14672
|
+
this.showComponent = false;
|
|
14673
|
+
this.showMenu = false;
|
|
14674
|
+
this.loading = false;
|
|
14675
|
+
// subscribe for visibility observable indicating whether to show or hide the actions
|
|
14676
|
+
this.actionService
|
|
14677
|
+
.actionsShowing$.pipe(takeUntil(this.componentDestroyed$))
|
|
14678
|
+
.subscribe((cmd) => {
|
|
14679
|
+
if (!this.showMenu && cmd.show) {
|
|
14680
|
+
this.selection = cmd.selection;
|
|
14681
|
+
this.target = cmd.target;
|
|
14682
|
+
this.showActionMenu();
|
|
14683
|
+
}
|
|
14684
|
+
else if (this.showMenu && !cmd.show) {
|
|
14685
|
+
this.hideActionMenu();
|
|
14686
|
+
}
|
|
14687
|
+
});
|
|
14688
|
+
this.router.events
|
|
14689
|
+
.pipe(takeUntil(this.componentDestroyed$), filter(evt => evt instanceof NavigationStart))
|
|
14690
|
+
.subscribe(() => this.hide());
|
|
14691
|
+
}
|
|
14692
|
+
getActions() {
|
|
14693
|
+
this.actionService
|
|
14694
|
+
.getActionsList(this.selection, this.viewContainerRef)
|
|
14695
|
+
.subscribe(actionsList => {
|
|
14696
|
+
this.actionLists.common = actionsList.filter(actionListEntry => actionListEntry.action.group === 'common');
|
|
14697
|
+
this.actionLists.further = actionsList.filter(actionListEntry => actionListEntry.action.group === 'further');
|
|
14698
|
+
});
|
|
14699
|
+
}
|
|
14700
|
+
getMoreActions() {
|
|
14701
|
+
this.loading = true;
|
|
14702
|
+
this.actionService
|
|
14703
|
+
.getMoreActions(this.selection, this.viewContainerRef)
|
|
14704
|
+
.subscribe(actionList => {
|
|
14705
|
+
this.loading = false;
|
|
14706
|
+
this.actionLists.further = this.actionLists.further.concat(actionList).sort(Utils.sortValues('action.label'));
|
|
14707
|
+
}, Utils.throw(() => this.loading = false));
|
|
14708
|
+
}
|
|
14709
|
+
hide() {
|
|
14710
|
+
this.actionService.hideActions();
|
|
14711
|
+
}
|
|
14712
|
+
showActionDescription(i, event) {
|
|
14713
|
+
event.stopPropagation();
|
|
14714
|
+
event.preventDefault();
|
|
14715
|
+
this.actionDescription = i === this.actionDescription ? null : i;
|
|
14716
|
+
}
|
|
14717
|
+
showActionMenu() {
|
|
14718
|
+
this.getActions();
|
|
14719
|
+
if (this.target === 'DMS_OBJECT') {
|
|
14720
|
+
this.getMoreActions();
|
|
14721
|
+
}
|
|
14722
|
+
this.showMenu = true;
|
|
14233
14723
|
}
|
|
14234
14724
|
hideActionMenu() {
|
|
14235
14725
|
this.clear();
|
|
@@ -15629,7 +16119,7 @@ class AddResubmissionComponent {
|
|
|
15629
16119
|
AddResubmissionComponent.decorators = [
|
|
15630
16120
|
{ type: Component, args: [{
|
|
15631
16121
|
selector: 'eo-add-resubmission',
|
|
15632
|
-
template: "<div class=\"eo-resubmission\">\r\n <h2>{{header}}</h2>\r\n <form [formGroup]=\"addResubmissionForm\">\r\n <eo-form-input [skipToggle]=\"true\" [label]=\"dueFieldLabel\">\r\n <eo-datetime [withTime]=\"true\" [
|
|
16122
|
+
template: "<div class=\"eo-resubmission\">\r\n <h2>{{header}}</h2>\r\n <form [formGroup]=\"addResubmissionForm\">\r\n <eo-form-input [skipToggle]=\"true\" [label]=\"dueFieldLabel\">\r\n <eo-datetime [withTime]=\"true\" [onlyFutureDates]=\"true\" formControlName=\"dueFieldFCN\"></eo-datetime>\r\n </eo-form-input>\r\n <eo-form-input [skipToggle]=\"true\" [label]=\"titleFieldLabel\" [required]=\"true\" [invalid]=\"titleValidity\" *ngIf=\"selection.length === 1\">\r\n <eo-string formControlName=\"titleFieldFCN\"></eo-string>\r\n </eo-form-input>\r\n <div class=\"err-msg\" *ngIf=\"titleValidity\">\r\n <div translate>eo.form.property.required</div>\r\n </div>\r\n <eo-form-input [skipToggle]=\"true\" [label]=\"inboxCbLabel\">\r\n <eo-checkbox formControlName=\"inboxCbFCN\" [tristate]=\"false\"></eo-checkbox>\r\n </eo-form-input>\r\n <eo-form-input [skipToggle]=\"true\" [label]=\"emailCbLabel\">\r\n <eo-checkbox formControlName=\"emailCbFCN\" [tristate]=\"false\" [readonly]=\"!hasEmail\"></eo-checkbox>\r\n </eo-form-input>\r\n </form>\r\n\r\n <!-- error/validation messages -->\r\n <div class=\"errors\">\r\n <div class=\"err-msg\" *ngIf=\"notificationMethodValidation\" translate>eo.resubmission.error.msg</div>\r\n <div class=\"err-msg\" *ngIf=\"dateValidation\" translate>eo.resubmission.error.msg.date</div>\r\n </div>\r\n\r\n <div class=\"form-buttons\" *ngIf=\"!processing; else indicator\">\r\n <button class=\"secondary\" (click)=\"cancel()\" translate>eo.resubmission.cancel</button>\r\n <button class=\"secondary\" *ngIf=\"selection[0].resubmissions.length\" (click)=\"removeResubmission()\" translate>eo.resubmission.delete</button>\r\n <button class=\"primary\" [disabled]=\"addResubmissionForm.errors || titleValidity\" *ngIf=\"selection[0].resubmissions.length\" (click)=\"updateResubmission()\" translate>eo.resubmission.apply</button>\r\n <button class=\"primary\" [disabled]=\"addResubmissionForm.errors || titleValidity\" *ngIf=\"!selection[0].resubmissions.length\" (click)=\"createResubmission()\" translate>eo.resubmission.add</button>\r\n </div>\r\n\r\n <ng-template #indicator>\r\n <div class=\"process-indicator\"><eo-icon [iconSrc]=\"'ic_kitt-loader.svg'\"></eo-icon></div>\r\n </ng-template>\r\n</div>\r\n\r\n",
|
|
15633
16123
|
styles: [".eo-resubmission{display:flex;flex-flow:column;justify-content:center;margin:var(--app-pane-padding)}.eo-resubmission h2{font-size:var(--font-subhead);font-weight:var(--font-weight-light)}.eo-resubmission .form-buttons{padding:5px 0;text-align:right}.eo-resubmission .form-buttons button:nth-child(2n):not(:last-child){margin:0 calc(var(--app-pane-padding)/2)}.eo-resubmission .form-buttons button:nth-child(2n):last-child{margin-left:calc(var(--app-pane-padding)/2);margin-right:0}.eo-resubmission .process-indicator{display:flex;justify-content:flex-end}.eo-resubmission .err-msg{background-color:var(--color-error);border:0;border-radius:2px;color:var(--color-white);margin:calc(var(--app-pane-padding)/4) 0;padding:calc(var(--app-pane-padding)/4)}.eo-resubmission .errors .err-msg:before{content:\"!\";padding:0 calc(var(--app-pane-padding)/4)}"]
|
|
15634
16124
|
},] }
|
|
15635
16125
|
];
|
|
@@ -16252,16 +16742,65 @@ AppLayoutComponent.propDecorators = {
|
|
|
16252
16742
|
};
|
|
16253
16743
|
|
|
16254
16744
|
/**
|
|
16255
|
-
*
|
|
16745
|
+
* This directive traps the focus inside the element it is applied to.
|
|
16746
|
+
* When applied, a users can't "tab out" of the element.
|
|
16747
|
+
* You need at least two focusable children in the element for it to work properly.
|
|
16748
|
+
* See the querySelector in the trapFocus method to know which elements count as focusable.
|
|
16749
|
+
* Additionally you can add the attribute "focusable" to an element if you are unsure.
|
|
16256
16750
|
*/
|
|
16257
|
-
class
|
|
16751
|
+
class TrapFocusDirective {
|
|
16752
|
+
constructor(el) {
|
|
16753
|
+
this.el = el;
|
|
16754
|
+
}
|
|
16755
|
+
ngAfterViewInit() {
|
|
16756
|
+
this.trapFocus(this.el.nativeElement);
|
|
16757
|
+
}
|
|
16758
|
+
trapFocus(element) {
|
|
16759
|
+
let focusableElements = element.querySelectorAll('a[href], button, textarea, input[type="text"],' +
|
|
16760
|
+
'input[type="radio"], input[type="checkbox"], select, [focusable]');
|
|
16761
|
+
focusableElements = Array.from(focusableElements)
|
|
16762
|
+
.filter((el) => !el.disabled && !el.classList.contains('disabled'));
|
|
16763
|
+
const firstFocusableElement = focusableElements[0];
|
|
16764
|
+
const lastFocusableElement = focusableElements[focusableElements.length - 1];
|
|
16765
|
+
element.addEventListener('keydown', ((event) => {
|
|
16766
|
+
const isTabPressed = event.keyCode === 9; // tab key code
|
|
16767
|
+
if (!isTabPressed)
|
|
16768
|
+
return;
|
|
16769
|
+
if (event.shiftKey) /* shift + tab */ {
|
|
16770
|
+
if (document.activeElement === firstFocusableElement) {
|
|
16771
|
+
lastFocusableElement.focus();
|
|
16772
|
+
event.preventDefault();
|
|
16773
|
+
}
|
|
16774
|
+
}
|
|
16775
|
+
else /* tab */ {
|
|
16776
|
+
if (document.activeElement === lastFocusableElement) {
|
|
16777
|
+
firstFocusableElement.focus();
|
|
16778
|
+
event.preventDefault();
|
|
16779
|
+
}
|
|
16780
|
+
}
|
|
16781
|
+
}));
|
|
16782
|
+
}
|
|
16258
16783
|
}
|
|
16259
|
-
|
|
16260
|
-
{ type:
|
|
16261
|
-
|
|
16262
|
-
|
|
16263
|
-
|
|
16264
|
-
|
|
16784
|
+
TrapFocusDirective.decorators = [
|
|
16785
|
+
{ type: Directive, args: [{
|
|
16786
|
+
selector: '[eoTrapFocus]'
|
|
16787
|
+
},] }
|
|
16788
|
+
];
|
|
16789
|
+
TrapFocusDirective.ctorParameters = () => [
|
|
16790
|
+
{ type: ElementRef }
|
|
16791
|
+
];
|
|
16792
|
+
|
|
16793
|
+
/**
|
|
16794
|
+
* Module holding the base components of the application shell like application bar, side, search etc.
|
|
16795
|
+
*/
|
|
16796
|
+
class EoAppShellModule {
|
|
16797
|
+
}
|
|
16798
|
+
EoAppShellModule.decorators = [
|
|
16799
|
+
{ type: NgModule, args: [{
|
|
16800
|
+
imports: [
|
|
16801
|
+
AppShellRoutingModule,
|
|
16802
|
+
CommonModule,
|
|
16803
|
+
FormsModule,
|
|
16265
16804
|
UiModule,
|
|
16266
16805
|
UtilModule,
|
|
16267
16806
|
AutoCompleteModule,
|
|
@@ -16273,7 +16812,7 @@ EoAppShellModule.decorators = [
|
|
|
16273
16812
|
ShortcutsModule,
|
|
16274
16813
|
ActionModule,
|
|
16275
16814
|
CtaModule,
|
|
16276
|
-
ProcessFormModule
|
|
16815
|
+
ProcessFormModule,
|
|
16277
16816
|
],
|
|
16278
16817
|
exports: [AppBarComponent],
|
|
16279
16818
|
declarations: [
|
|
@@ -16284,7 +16823,8 @@ EoAppShellModule.decorators = [
|
|
|
16284
16823
|
AppAddDialogComponent,
|
|
16285
16824
|
AppLayoutComponent,
|
|
16286
16825
|
ContextSearchComponent,
|
|
16287
|
-
AppProcessComponent
|
|
16826
|
+
AppProcessComponent,
|
|
16827
|
+
TrapFocusDirective,
|
|
16288
16828
|
]
|
|
16289
16829
|
},] }
|
|
16290
16830
|
];
|
|
@@ -16523,851 +17063,422 @@ PluginService.ctorParameters = () => [
|
|
|
16523
17063
|
{ type: Array, decorators: [{ type: Inject, args: [ENTRY_COMPONENTS,] }] },
|
|
16524
17064
|
{ type: Array, decorators: [{ type: Inject, args: [ENTRY_LINKS,] }] },
|
|
16525
17065
|
{ type: ComponentFactoryResolver }
|
|
16526
|
-
];
|
|
16527
|
-
|
|
16528
|
-
class PluginComponent {
|
|
16529
|
-
constructor(pluginService) {
|
|
16530
|
-
this.pluginService = pluginService;
|
|
16531
|
-
}
|
|
16532
|
-
set type(type) {
|
|
16533
|
-
this.pluginService.loadByType(type, this.eoPlugin.viewContainerRef);
|
|
16534
|
-
}
|
|
16535
|
-
set id(id) {
|
|
16536
|
-
this.pluginService.loadById(id, this.eoPlugin.viewContainerRef);
|
|
16537
|
-
}
|
|
16538
|
-
}
|
|
16539
|
-
PluginComponent.decorators = [
|
|
16540
|
-
{ type: Component, args: [{
|
|
16541
|
-
selector: 'eo-plugin',
|
|
16542
|
-
template: `
|
|
16543
|
-
<ng-template eoPlugin></ng-template>`
|
|
16544
|
-
},] }
|
|
16545
|
-
];
|
|
16546
|
-
PluginComponent.ctorParameters = () => [
|
|
16547
|
-
{ type: PluginService }
|
|
16548
|
-
];
|
|
16549
|
-
PluginComponent.propDecorators = {
|
|
16550
|
-
eoPlugin: [{ type: ViewChild, args: [PluginDirective, { static: true },] }],
|
|
16551
|
-
type: [{ type: Input }],
|
|
16552
|
-
id: [{ type: Input }]
|
|
16553
|
-
};
|
|
16554
|
-
class TabPluginComponent {
|
|
16555
|
-
constructor(pluginService) {
|
|
16556
|
-
this.pluginService = pluginService;
|
|
16557
|
-
}
|
|
16558
|
-
set type(type) {
|
|
16559
|
-
this.types = this.pluginService.loadTabs(type);
|
|
16560
|
-
}
|
|
16561
|
-
}
|
|
16562
|
-
TabPluginComponent.decorators = [
|
|
16563
|
-
{ type: Component, args: [{
|
|
16564
|
-
selector: 'eo-tab-plugin',
|
|
16565
|
-
template: `
|
|
16566
|
-
<eo-tab-panel *ngFor="let t of types" [id]="t.id" [header]="t.id | translate">
|
|
16567
|
-
<eo-plugin [id]="t.id"></eo-plugin>
|
|
16568
|
-
</eo-tab-panel>`
|
|
16569
|
-
},] }
|
|
16570
|
-
];
|
|
16571
|
-
TabPluginComponent.ctorParameters = () => [
|
|
16572
|
-
{ type: PluginService }
|
|
16573
|
-
];
|
|
16574
|
-
TabPluginComponent.propDecorators = {
|
|
16575
|
-
tabPanels: [{ type: ViewChildren, args: [TabPanelComponent,] }],
|
|
16576
|
-
type: [{ type: Input }]
|
|
16577
|
-
};
|
|
16578
|
-
class SidebarPluginComponent {
|
|
16579
|
-
constructor(pluginService) {
|
|
16580
|
-
this.pluginService = pluginService;
|
|
16581
|
-
}
|
|
16582
|
-
set type(type) {
|
|
16583
|
-
this._links = this.pluginService.loadLinks(type);
|
|
16584
|
-
}
|
|
16585
|
-
}
|
|
16586
|
-
SidebarPluginComponent.decorators = [
|
|
16587
|
-
{ type: Component, args: [{
|
|
16588
|
-
selector: 'eo-sidebar-plugin',
|
|
16589
|
-
template: `
|
|
16590
|
-
<div #navItem class="nav-item" *ngFor="let l of _links">
|
|
16591
|
-
<a [href]="l.path" *ngIf="l.path.startsWith('http');else link">{{l.id | translate}}</a>
|
|
16592
|
-
<ng-template #link>
|
|
16593
|
-
<a [routerLink]="l.path" [queryParams]="l.queryParams" routerLinkActive="active-link">{{l.id | translate}}</a>
|
|
16594
|
-
</ng-template>
|
|
16595
|
-
</div>`
|
|
16596
|
-
},] }
|
|
16597
|
-
];
|
|
16598
|
-
SidebarPluginComponent.ctorParameters = () => [
|
|
16599
|
-
{ type: PluginService }
|
|
16600
|
-
];
|
|
16601
|
-
SidebarPluginComponent.propDecorators = {
|
|
16602
|
-
links: [{ type: ViewChildren, args: ['navItem',] }],
|
|
16603
|
-
type: [{ type: Input }]
|
|
16604
|
-
};
|
|
16605
|
-
|
|
16606
|
-
class ContentPreviewService {
|
|
16607
|
-
static undockWin(src) {
|
|
16608
|
-
const w = window[ContentPreviewService.UNDOCK_WINDOW_NAME] = window.open(src || '', ContentPreviewService.UNDOCK_WINDOW_NAME, 'directories=0, titlebar=0, toolbar=0, location=0, status=0, menubar=0, resizable=1, top=10, left=10');
|
|
16609
|
-
return w;
|
|
16610
|
-
}
|
|
16611
|
-
static closeWin() {
|
|
16612
|
-
return this.getUndockWin() && this.getUndockWin().close();
|
|
16613
|
-
}
|
|
16614
|
-
static getUndockWin() {
|
|
16615
|
-
return window[ContentPreviewService.UNDOCK_WINDOW_NAME];
|
|
16616
|
-
}
|
|
16617
|
-
static undockWinActive() {
|
|
16618
|
-
return !!ContentPreviewService.getUndockWin() && !ContentPreviewService.getUndockWin().closed;
|
|
16619
|
-
}
|
|
16620
|
-
static mapLang(lang) {
|
|
16621
|
-
switch (lang) {
|
|
16622
|
-
case 'en':
|
|
16623
|
-
return 'en-US';
|
|
16624
|
-
case 'es':
|
|
16625
|
-
return 'es-ES';
|
|
16626
|
-
case 'pt':
|
|
16627
|
-
return 'pt-PT';
|
|
16628
|
-
case 'zh':
|
|
16629
|
-
return 'zh-CN';
|
|
16630
|
-
case 'hi':
|
|
16631
|
-
return 'hi-IN';
|
|
16632
|
-
case 'bn':
|
|
16633
|
-
return 'bn-BD';
|
|
16634
|
-
default:
|
|
16635
|
-
return lang;
|
|
16636
|
-
}
|
|
16637
|
-
}
|
|
16638
|
-
}
|
|
16639
|
-
ContentPreviewService.UNDOCK_WINDOW_NAME = 'eoViewer';
|
|
16640
|
-
ContentPreviewService.decorators = [
|
|
16641
|
-
{ type: Injectable }
|
|
16642
|
-
];
|
|
16643
|
-
|
|
16644
|
-
class ObjectDetailsComponent extends UnsubscribeOnDestroy {
|
|
16645
|
-
constructor(router, route, system, empty, agentService, backend, dmsService, selection, actionService, capabilityService, uploadRegistry, eventService, configService, translate) {
|
|
16646
|
-
super();
|
|
16647
|
-
this.router = router;
|
|
16648
|
-
this.route = route;
|
|
16649
|
-
this.system = system;
|
|
16650
|
-
this.empty = empty;
|
|
16651
|
-
this.agentService = agentService;
|
|
16652
|
-
this.backend = backend;
|
|
16653
|
-
this.dmsService = dmsService;
|
|
16654
|
-
this.selection = selection;
|
|
16655
|
-
this.actionService = actionService;
|
|
16656
|
-
this.capabilityService = capabilityService;
|
|
16657
|
-
this.uploadRegistry = uploadRegistry;
|
|
16658
|
-
this.eventService = eventService;
|
|
16659
|
-
this.configService = configService;
|
|
16660
|
-
this.translate = translate;
|
|
16661
|
-
// generate unique id to pass to upload registry
|
|
16662
|
-
this.uploadTarget = new UploadTarget(Utils.uuid(), UploadTarget.OBJECT);
|
|
16663
|
-
this.hasError = false;
|
|
16664
|
-
this.nodmsobject = false;
|
|
16665
|
-
this.showLoader = false;
|
|
16666
|
-
this.panelOrder = { 'master': ['summary', 'indexdata', 'history', 'links'], 'slave': ['preview'] };
|
|
16667
|
-
this.agentIsConnected$ = this.agentService.isConnected$;
|
|
16668
|
-
this.enableCompare = false;
|
|
16669
|
-
this.enableDiff = true;
|
|
16670
|
-
this.enableSync = true;
|
|
16671
|
-
this._emptyState = { icon: 'ic_no-file.svg', text: '', className: '' };
|
|
16672
|
-
this.externalPanels = new QueryList();
|
|
16673
|
-
// shortcut actions
|
|
16674
|
-
this.shortcuts = {
|
|
16675
|
-
id: 'eo.object-details',
|
|
16676
|
-
label: this.translate.instant('eo.shortcuts.eo-object-details.title'),
|
|
16677
|
-
labelKey: 'eo.shortcuts.eo-object-details.title',
|
|
16678
|
-
actions: [
|
|
16679
|
-
{
|
|
16680
|
-
name: this.translate.instant('eo.shortcuts.action.open.context'),
|
|
16681
|
-
nameKey: 'eo.shortcuts.action.open.context',
|
|
16682
|
-
shortcut: new Shortcut('O', false, false),
|
|
16683
|
-
onExecuteAction: () => {
|
|
16684
|
-
this.openObject(this.item.id, this.item.typeName);
|
|
16685
|
-
},
|
|
16686
|
-
isHidden: () => {
|
|
16687
|
-
return false;
|
|
16688
|
-
}
|
|
16689
|
-
}
|
|
16690
|
-
]
|
|
16691
|
-
};
|
|
16692
|
-
this.parseDmsParams = this.getDmsParams;
|
|
16693
|
-
this.hasContent = new EventEmitter();
|
|
16694
|
-
this.undockWinActive = false;
|
|
16695
|
-
this.panelOrder = this.configService.getRaw('objectDetailsTabs') || this.panelOrder;
|
|
16696
|
-
this.undockWinActive = ContentPreviewService.undockWinActive();
|
|
16697
|
-
this.agentService.setAgentStatus(this.route.snapshot.queryParams['connectagent']).subscribe((hasStatus) => {
|
|
16698
|
-
if (hasStatus) {
|
|
16699
|
-
this.router.navigate([], { queryParams: { connectagent: null }, queryParamsHandling: 'merge' });
|
|
16700
|
-
}
|
|
16701
|
-
});
|
|
16702
|
-
}
|
|
16703
|
-
set reference(isRef) {
|
|
16704
|
-
this.isReference = isRef;
|
|
16705
|
-
}
|
|
16706
|
-
set emptyState(e) {
|
|
16707
|
-
this._emptyState = e || EmptyStateService.defaultEmptyState();
|
|
16708
|
-
}
|
|
16709
|
-
get emptyState() {
|
|
16710
|
-
return this._emptyState;
|
|
16711
|
-
}
|
|
16712
|
-
set dmsParams(params) {
|
|
16713
|
-
this.showLoader = true;
|
|
16714
|
-
this.loadDmsObject(params).subscribe((res) => {
|
|
16715
|
-
this.dmsObject = res;
|
|
16716
|
-
this.showLoader = false;
|
|
16717
|
-
}, Utils.throw(() => this.onHasError(true, true, false)));
|
|
16718
|
-
}
|
|
16719
|
-
set dmsParams2(params) {
|
|
16720
|
-
this.loadDmsObject(params)
|
|
16721
|
-
.subscribe((res) => {
|
|
16722
|
-
this.dmsObject2 = res;
|
|
16723
|
-
}, Utils.throw(() => this.onHasError(true, true, false)));
|
|
16724
|
-
}
|
|
16725
|
-
set dmsObject(v) {
|
|
16726
|
-
var _a;
|
|
16727
|
-
this.item = v;
|
|
16728
|
-
this.onHasError();
|
|
16729
|
-
// prepare indexdata preview
|
|
16730
|
-
this.onIndexDataSaved(null, this.item);
|
|
16731
|
-
this.eventService.trigger(EnaioEvent.DMS_OBJECT_LOADED, this.item);
|
|
16732
|
-
if (this.item) {
|
|
16733
|
-
if (this.item.isActiveVersion && !this.enableCompare) {
|
|
16734
|
-
this.uploadTarget.referenceObject = this.item;
|
|
16735
|
-
this.uploadTarget.onUploadSuccess = () => this.dmsParams = { id: v.id, type: v.typeName };
|
|
16736
|
-
this.uploadRegistry.register(this.uploadTarget);
|
|
16737
|
-
}
|
|
16738
|
-
if (this.item.lock) {
|
|
16739
|
-
this.lockTooltip = this.translate.instant('eo.object.lock') + ' '
|
|
16740
|
-
+ (new LocaleDatePipe(this.translate).transform(this.item.lock.on))
|
|
16741
|
-
+ ', ' + this.item.lock.by.label + ' (' + this.item.lock.by.name + ')';
|
|
16742
|
-
}
|
|
16743
|
-
}
|
|
16744
|
-
else {
|
|
16745
|
-
this.emptyState = this.empty.getEmptyState(0);
|
|
16746
|
-
}
|
|
16747
|
-
if ((_a = this.item) === null || _a === void 0 ? void 0 : _a.subscriptions.length) {
|
|
16748
|
-
this.subscriptionIconTooltip = this.createSubscriptionIconTooltip(this.item);
|
|
16749
|
-
}
|
|
16750
|
-
}
|
|
16751
|
-
set dmsObject2(v) {
|
|
16752
|
-
this.item2 = v;
|
|
16753
|
-
this.onHasError();
|
|
16754
|
-
this.onIndexDataSaved(null, this.item2);
|
|
16755
|
-
}
|
|
16756
|
-
get dataType() {
|
|
16757
|
-
return this.item ? this.item.typeName : 'none';
|
|
16758
|
-
}
|
|
16759
|
-
getDmsParams(data) {
|
|
16760
|
-
return data ? Object.assign(Object.assign({}, data), { type: data.typeName || data.type }) : null;
|
|
16761
|
-
}
|
|
16762
|
-
updateContent() {
|
|
16763
|
-
if (this.applySelection) {
|
|
16764
|
-
if (this.enableCompare) {
|
|
16765
|
-
this.selection
|
|
16766
|
-
.find(this.applySelection.in)
|
|
16767
|
-
.selection$
|
|
16768
|
-
.pipe(takeUntil(this.componentDestroyed$))
|
|
16769
|
-
.subscribe((res) => {
|
|
16770
|
-
this.dmsParams = this.parseDmsParams(res[0]);
|
|
16771
|
-
this.dmsParams2 = this.parseDmsParams(res[1]);
|
|
16772
|
-
});
|
|
16773
|
-
return;
|
|
16774
|
-
}
|
|
16775
|
-
else {
|
|
16776
|
-
this.selection
|
|
16777
|
-
.find(this.applySelection.in)
|
|
16778
|
-
.focus$
|
|
16779
|
-
.pipe(takeUntil(this.componentDestroyed$))
|
|
16780
|
-
.subscribe(res => {
|
|
16781
|
-
this.showLoader = true;
|
|
16782
|
-
this.loadDmsObject(this.parseDmsParams(res)).subscribe((res) => {
|
|
16783
|
-
// refreshing object details may result in an updated version of the object
|
|
16784
|
-
// so we'll use this trigger to also emitt those changes to other listening components
|
|
16785
|
-
if (this.item && res && (this.item.id === res.id) && res.version > this.item.version) {
|
|
16786
|
-
this.eventService.trigger(EnaioEvent.DMS_OBJECT_UPDATED, res);
|
|
16787
|
-
}
|
|
16788
|
-
this.dmsObject = res;
|
|
16789
|
-
this.showLoader = false;
|
|
16790
|
-
}, Utils.throw((error) => {
|
|
16791
|
-
this.uploadRegistry.unregister(this.uploadTarget.id);
|
|
16792
|
-
return this.onHasError(true, true, false);
|
|
16793
|
-
}));
|
|
16794
|
-
});
|
|
16795
|
-
}
|
|
16796
|
-
}
|
|
16797
|
-
}
|
|
16798
|
-
refreshContent() {
|
|
16799
|
-
this.updateContent();
|
|
16800
|
-
}
|
|
16801
|
-
prepareIndexDataPreview(item, formData) {
|
|
16802
|
-
const { id, data, type, created, modified, content, contentFileName, contentFileSize, version } = item;
|
|
16803
|
-
return this.system
|
|
16804
|
-
.getObjectTypeForm(type.name, 'EDIT')
|
|
16805
|
-
.pipe(map(form => {
|
|
16806
|
-
let indexDataPreview = {
|
|
16807
|
-
form,
|
|
16808
|
-
data: formData || data
|
|
16809
|
-
};
|
|
16810
|
-
let baseparams = {
|
|
16811
|
-
id,
|
|
16812
|
-
type: type.name,
|
|
16813
|
-
createdOn: new Date(created.on),
|
|
16814
|
-
modifiedOn: new Date(modified.on),
|
|
16815
|
-
createdBy: `${created.by.title} (${created.by.name})`,
|
|
16816
|
-
modifiedBy: `${modified.by.title} (${modified.by.name})`,
|
|
16817
|
-
contentFileName: contentFileName ? contentFileName : null,
|
|
16818
|
-
contentFileSize: contentFileSize ? Number(contentFileSize) : null,
|
|
16819
|
-
version: version || 0,
|
|
16820
|
-
mimeGroup: content ? content.contents ? content.contents[0].mimegroup : null : null,
|
|
16821
|
-
digest: content ? content.contents ? content.contents[0].digest : null : null,
|
|
16822
|
-
contentId: content ? content.contents ? content.id : null : null
|
|
16823
|
-
};
|
|
16824
|
-
return { indexDataPreview, baseparams };
|
|
16825
|
-
}));
|
|
16826
|
-
}
|
|
16827
|
-
onHasError(hasError = false, nodmsobject = false, showLoader = false) {
|
|
16828
|
-
this.hasError = hasError;
|
|
16829
|
-
this.nodmsobject = nodmsobject;
|
|
16830
|
-
this.showLoader = showLoader;
|
|
16831
|
-
this.hasContent.emit(!hasError);
|
|
16832
|
-
}
|
|
16833
|
-
loadDmsObject(params) {
|
|
16834
|
-
var _a;
|
|
16835
|
-
if (!this.enableCompare && params) {
|
|
16836
|
-
delete params.version;
|
|
16837
|
-
}
|
|
16838
|
-
// check for valid id
|
|
16839
|
-
return ((_a = params === null || params === void 0 ? void 0 : params.id) === null || _a === void 0 ? void 0 : _a.length) === 32 ? this.dmsService.getDmsObjectByParams(params) : of(null);
|
|
16840
|
-
}
|
|
16841
|
-
downloadOriginalContent() {
|
|
16842
|
-
this.backend.downloadContent([this.item]);
|
|
16843
|
-
}
|
|
16844
|
-
showActions() {
|
|
16845
|
-
const actions = [this.item, this.item2].filter(v => v);
|
|
16846
|
-
this.actionService.showActions(actions, 'DMS_OBJECT');
|
|
16847
|
-
}
|
|
16848
|
-
openObject(id, _type) {
|
|
16849
|
-
const queryParams = { queryParams: { 'type': _type } };
|
|
16850
|
-
return this.router.navigate(['/object', id], queryParams);
|
|
16851
|
-
}
|
|
16852
|
-
// executed when the dms object changed due to saving its indexdata
|
|
16853
|
-
onIndexDataSaved(formData, item) {
|
|
16854
|
-
if (!this.item) {
|
|
16855
|
-
this.indexDataPreview = null;
|
|
16856
|
-
this.baseparams = null;
|
|
16857
|
-
}
|
|
16858
|
-
if (!this.item2) {
|
|
16859
|
-
this.indexDataPreview2 = null;
|
|
16860
|
-
this.baseparams2 = null;
|
|
16861
|
-
}
|
|
16862
|
-
if (item) {
|
|
16863
|
-
this.prepareIndexDataPreview(item, formData)
|
|
16864
|
-
.subscribe(data => {
|
|
16865
|
-
if (item === this.item) {
|
|
16866
|
-
this.indexDataPreview = data.indexDataPreview;
|
|
16867
|
-
this.baseparams = data.baseparams;
|
|
16868
|
-
}
|
|
16869
|
-
else {
|
|
16870
|
-
this.indexDataPreview2 = data.indexDataPreview;
|
|
16871
|
-
this.baseparams2 = data.baseparams;
|
|
16872
|
-
}
|
|
16873
|
-
});
|
|
16874
|
-
}
|
|
16875
|
-
}
|
|
16876
|
-
get referenceTitle() {
|
|
16877
|
-
return this.item.contextFolder ? this.item.contextFolder.title : this.item.title;
|
|
16878
|
-
}
|
|
16879
|
-
isJournalObject(item) {
|
|
16880
|
-
return item.type.supertypes.find(sT => sT === 'sysjournalobject');
|
|
16881
|
-
}
|
|
16882
|
-
isVisible(id) {
|
|
16883
|
-
return this.panelOrder.master.includes(id) || this.panelOrder.slave.includes(id);
|
|
16884
|
-
}
|
|
16885
|
-
createSubscriptionIconTooltip(item) {
|
|
16886
|
-
let tooltip = '';
|
|
16887
|
-
const modes = this.item.subscriptions.map(subscription => subscription.mode);
|
|
16888
|
-
const subscribedToAllChanges = modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED) || (modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED) && modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED));
|
|
16889
|
-
const subscribedToMetaChangesOnly = modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED) && !modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED) && !modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED);
|
|
16890
|
-
const subscribedToContentChangesOnly = modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED) && !modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED) && !modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED);
|
|
16891
|
-
if (subscribedToAllChanges) {
|
|
16892
|
-
tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.allChanges');
|
|
16893
|
-
}
|
|
16894
|
-
else if (subscribedToMetaChangesOnly) {
|
|
16895
|
-
tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.meta');
|
|
16896
|
-
}
|
|
16897
|
-
else if (subscribedToContentChangesOnly) {
|
|
16898
|
-
tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.content');
|
|
16899
|
-
}
|
|
16900
|
-
return tooltip;
|
|
17066
|
+
];
|
|
17067
|
+
|
|
17068
|
+
class PluginComponent {
|
|
17069
|
+
constructor(pluginService) {
|
|
17070
|
+
this.pluginService = pluginService;
|
|
16901
17071
|
}
|
|
16902
|
-
|
|
16903
|
-
this.
|
|
16904
|
-
this.updateContent();
|
|
16905
|
-
this.eventService
|
|
16906
|
-
.on(EnaioEvent.DMS_OBJECT_UPDATED)
|
|
16907
|
-
.pipe(takeUntil(this.componentDestroyed$))
|
|
16908
|
-
.subscribe(event => {
|
|
16909
|
-
if (event.data && this.item.id === event.data.id) {
|
|
16910
|
-
this.dmsObject = this.dmsService.createLocalCopyOfDMSObject(event.data);
|
|
16911
|
-
if (this.preview && !this.preview.disabled) {
|
|
16912
|
-
this.preview.refresh();
|
|
16913
|
-
}
|
|
16914
|
-
}
|
|
16915
|
-
});
|
|
16916
|
-
this.eventService
|
|
16917
|
-
.on(EnaioEvent.INBOX_ITEM_CONFIRMED)
|
|
16918
|
-
.pipe(takeUntil(this.componentDestroyed$))
|
|
16919
|
-
.subscribe(event => {
|
|
16920
|
-
if (this.item && this.item.id === event.data.target.id) {
|
|
16921
|
-
this.dmsParams = null;
|
|
16922
|
-
}
|
|
16923
|
-
});
|
|
17072
|
+
set type(type) {
|
|
17073
|
+
this.pluginService.loadByType(type, this.eoPlugin.viewContainerRef);
|
|
16924
17074
|
}
|
|
16925
|
-
|
|
16926
|
-
|
|
16927
|
-
this.tabPlugins.forEach(p => panels = panels.concat(p.tabPanels.toArray()));
|
|
16928
|
-
this.externalPanels.reset(panels);
|
|
17075
|
+
set id(id) {
|
|
17076
|
+
this.pluginService.loadById(id, this.eoPlugin.viewContainerRef);
|
|
16929
17077
|
}
|
|
16930
|
-
|
|
16931
|
-
|
|
17078
|
+
}
|
|
17079
|
+
PluginComponent.decorators = [
|
|
17080
|
+
{ type: Component, args: [{
|
|
17081
|
+
selector: 'eo-plugin',
|
|
17082
|
+
template: `
|
|
17083
|
+
<ng-template eoPlugin></ng-template>`
|
|
17084
|
+
},] }
|
|
17085
|
+
];
|
|
17086
|
+
PluginComponent.ctorParameters = () => [
|
|
17087
|
+
{ type: PluginService }
|
|
17088
|
+
];
|
|
17089
|
+
PluginComponent.propDecorators = {
|
|
17090
|
+
eoPlugin: [{ type: ViewChild, args: [PluginDirective, { static: true },] }],
|
|
17091
|
+
type: [{ type: Input }],
|
|
17092
|
+
id: [{ type: Input }]
|
|
17093
|
+
};
|
|
17094
|
+
class TabPluginComponent {
|
|
17095
|
+
constructor(pluginService) {
|
|
17096
|
+
this.pluginService = pluginService;
|
|
17097
|
+
}
|
|
17098
|
+
set type(type) {
|
|
17099
|
+
this.types = this.pluginService.loadTabs(type);
|
|
16932
17100
|
}
|
|
16933
17101
|
}
|
|
16934
|
-
|
|
17102
|
+
TabPluginComponent.decorators = [
|
|
16935
17103
|
{ type: Component, args: [{
|
|
16936
|
-
selector: 'eo-
|
|
16937
|
-
template:
|
|
16938
|
-
|
|
16939
|
-
|
|
17104
|
+
selector: 'eo-tab-plugin',
|
|
17105
|
+
template: `
|
|
17106
|
+
<eo-tab-panel *ngFor="let t of types" [id]="t.id" [header]="t.id | translate">
|
|
17107
|
+
<eo-plugin [id]="t.id"></eo-plugin>
|
|
17108
|
+
</eo-tab-panel>`
|
|
16940
17109
|
},] }
|
|
16941
17110
|
];
|
|
16942
|
-
|
|
16943
|
-
{ type:
|
|
16944
|
-
{ type: ActivatedRoute },
|
|
16945
|
-
{ type: SystemService },
|
|
16946
|
-
{ type: EmptyStateService },
|
|
16947
|
-
{ type: AgentService },
|
|
16948
|
-
{ type: BackendService },
|
|
16949
|
-
{ type: DmsService },
|
|
16950
|
-
{ type: SelectionService },
|
|
16951
|
-
{ type: ActionService },
|
|
16952
|
-
{ type: CapabilitiesService },
|
|
16953
|
-
{ type: UploadRegistryService },
|
|
16954
|
-
{ type: EventService },
|
|
16955
|
-
{ type: Config },
|
|
16956
|
-
{ type: TranslateService }
|
|
17111
|
+
TabPluginComponent.ctorParameters = () => [
|
|
17112
|
+
{ type: PluginService }
|
|
16957
17113
|
];
|
|
16958
|
-
|
|
16959
|
-
|
|
16960
|
-
|
|
16961
|
-
|
|
16962
|
-
|
|
16963
|
-
|
|
16964
|
-
|
|
16965
|
-
|
|
16966
|
-
|
|
16967
|
-
|
|
16968
|
-
|
|
16969
|
-
|
|
16970
|
-
|
|
16971
|
-
|
|
16972
|
-
|
|
16973
|
-
|
|
16974
|
-
|
|
16975
|
-
|
|
16976
|
-
|
|
16977
|
-
|
|
17114
|
+
TabPluginComponent.propDecorators = {
|
|
17115
|
+
tabPanels: [{ type: ViewChildren, args: [TabPanelComponent,] }],
|
|
17116
|
+
type: [{ type: Input }]
|
|
17117
|
+
};
|
|
17118
|
+
class SidebarPluginComponent {
|
|
17119
|
+
constructor(pluginService) {
|
|
17120
|
+
this.pluginService = pluginService;
|
|
17121
|
+
}
|
|
17122
|
+
set type(type) {
|
|
17123
|
+
this._links = this.pluginService.loadLinks(type);
|
|
17124
|
+
}
|
|
17125
|
+
}
|
|
17126
|
+
SidebarPluginComponent.decorators = [
|
|
17127
|
+
{ type: Component, args: [{
|
|
17128
|
+
selector: 'eo-sidebar-plugin',
|
|
17129
|
+
template: `
|
|
17130
|
+
<div #navItem class="nav-item" *ngFor="let l of _links">
|
|
17131
|
+
<a [href]="l.path" *ngIf="l.path.startsWith('http');else link">{{l.id | translate}}</a>
|
|
17132
|
+
<ng-template #link>
|
|
17133
|
+
<a [routerLink]="l.path" [queryParams]="l.queryParams" routerLinkActive="active-link">{{l.id | translate}}</a>
|
|
17134
|
+
</ng-template>
|
|
17135
|
+
</div>`
|
|
17136
|
+
},] }
|
|
17137
|
+
];
|
|
17138
|
+
SidebarPluginComponent.ctorParameters = () => [
|
|
17139
|
+
{ type: PluginService }
|
|
17140
|
+
];
|
|
17141
|
+
SidebarPluginComponent.propDecorators = {
|
|
17142
|
+
links: [{ type: ViewChildren, args: ['navItem',] }],
|
|
17143
|
+
type: [{ type: Input }]
|
|
16978
17144
|
};
|
|
16979
17145
|
|
|
16980
|
-
class
|
|
16981
|
-
constructor(
|
|
17146
|
+
class ObjectDetailsComponent extends UnsubscribeOnDestroy {
|
|
17147
|
+
constructor(router, route, system, empty, agentService, backend, dmsService, selection, actionService, capabilityService, uploadRegistry, eventService, configService, translate) {
|
|
16982
17148
|
super();
|
|
16983
|
-
this.
|
|
16984
|
-
this.
|
|
16985
|
-
this.renderer = renderer;
|
|
17149
|
+
this.router = router;
|
|
17150
|
+
this.route = route;
|
|
16986
17151
|
this.system = system;
|
|
16987
|
-
this.
|
|
16988
|
-
this.
|
|
16989
|
-
this.pluginsService = pluginsService;
|
|
17152
|
+
this.empty = empty;
|
|
17153
|
+
this.agentService = agentService;
|
|
16990
17154
|
this.backend = backend;
|
|
16991
|
-
this.
|
|
16992
|
-
this.
|
|
16993
|
-
this.
|
|
16994
|
-
this.
|
|
16995
|
-
this.
|
|
16996
|
-
this.
|
|
16997
|
-
this.
|
|
17155
|
+
this.dmsService = dmsService;
|
|
17156
|
+
this.selection = selection;
|
|
17157
|
+
this.actionService = actionService;
|
|
17158
|
+
this.capabilityService = capabilityService;
|
|
17159
|
+
this.uploadRegistry = uploadRegistry;
|
|
17160
|
+
this.eventService = eventService;
|
|
17161
|
+
this.configService = configService;
|
|
17162
|
+
this.translate = translate;
|
|
17163
|
+
// generate unique id to pass to upload registry
|
|
17164
|
+
this.uploadTarget = new UploadTarget(Utils.uuid(), UploadTarget.OBJECT);
|
|
16998
17165
|
this.hasError = false;
|
|
16999
|
-
this.
|
|
17000
|
-
this.
|
|
17001
|
-
|
|
17002
|
-
|
|
17003
|
-
|
|
17004
|
-
|
|
17005
|
-
|
|
17006
|
-
|
|
17007
|
-
|
|
17008
|
-
|
|
17009
|
-
|
|
17010
|
-
|
|
17011
|
-
|
|
17012
|
-
|
|
17013
|
-
|
|
17014
|
-
|
|
17015
|
-
|
|
17016
|
-
|
|
17017
|
-
|
|
17018
|
-
|
|
17019
|
-
|
|
17020
|
-
|
|
17021
|
-
|
|
17022
|
-
|
|
17023
|
-
|
|
17024
|
-
|
|
17025
|
-
|
|
17026
|
-
|
|
17027
|
-
|
|
17028
|
-
|
|
17029
|
-
|
|
17030
|
-
|
|
17031
|
-
|
|
17032
|
-
|
|
17033
|
-
|
|
17166
|
+
this.nodmsobject = false;
|
|
17167
|
+
this.showLoader = false;
|
|
17168
|
+
this.panelOrder = { 'master': ['summary', 'indexdata', 'history', 'links'], 'slave': ['preview'] };
|
|
17169
|
+
this.agentIsConnected$ = this.agentService.isConnected$;
|
|
17170
|
+
this.enableCompare = false;
|
|
17171
|
+
this.enableDiff = true;
|
|
17172
|
+
this.enableSync = true;
|
|
17173
|
+
this._emptyState = { icon: 'ic_no-file.svg', text: '', className: '' };
|
|
17174
|
+
this.externalPanels = new QueryList();
|
|
17175
|
+
// shortcut actions
|
|
17176
|
+
this.shortcuts = {
|
|
17177
|
+
id: 'eo.object-details',
|
|
17178
|
+
label: this.translate.instant('eo.shortcuts.eo-object-details.title'),
|
|
17179
|
+
labelKey: 'eo.shortcuts.eo-object-details.title',
|
|
17180
|
+
actions: [
|
|
17181
|
+
{
|
|
17182
|
+
name: this.translate.instant('eo.shortcuts.action.open.context'),
|
|
17183
|
+
nameKey: 'eo.shortcuts.action.open.context',
|
|
17184
|
+
shortcut: new Shortcut('O', false, false),
|
|
17185
|
+
onExecuteAction: () => {
|
|
17186
|
+
this.openObject(this.item.id, this.item.typeName);
|
|
17187
|
+
},
|
|
17188
|
+
isHidden: () => {
|
|
17189
|
+
return false;
|
|
17190
|
+
}
|
|
17191
|
+
}
|
|
17192
|
+
]
|
|
17193
|
+
};
|
|
17194
|
+
this.parseDmsParams = this.getDmsParams;
|
|
17195
|
+
this.hasContent = new EventEmitter();
|
|
17196
|
+
this.undockWinActive = false;
|
|
17197
|
+
this.panelOrder = this.configService.getRaw('objectDetailsTabs') || this.panelOrder;
|
|
17198
|
+
this.undockWinActive = ContentPreviewService.undockWinActive();
|
|
17199
|
+
this.agentService.setAgentStatus(this.route.snapshot.queryParams['connectagent']).subscribe((hasStatus) => {
|
|
17200
|
+
if (hasStatus) {
|
|
17201
|
+
this.router.navigate([], { queryParams: { connectagent: null }, queryParamsHandling: 'merge' });
|
|
17202
|
+
}
|
|
17034
17203
|
});
|
|
17035
|
-
if (ContentPreviewService.undockWinActive()) {
|
|
17036
|
-
this.undock(false);
|
|
17037
|
-
}
|
|
17038
|
-
}
|
|
17039
|
-
get undockWin() {
|
|
17040
|
-
return ContentPreviewService.getUndockWin();
|
|
17041
|
-
}
|
|
17042
|
-
set setAttachments(attachments) {
|
|
17043
|
-
this.attachments = attachments;
|
|
17044
|
-
this.attachmentsShown = false;
|
|
17045
|
-
}
|
|
17046
|
-
set setSearchTerm(searchTerm) {
|
|
17047
|
-
this.searchTerm = searchTerm || '';
|
|
17048
17204
|
}
|
|
17049
|
-
set
|
|
17050
|
-
this.
|
|
17051
|
-
this.toogleViewer();
|
|
17205
|
+
set reference(isRef) {
|
|
17206
|
+
this.isReference = isRef;
|
|
17052
17207
|
}
|
|
17053
|
-
|
|
17054
|
-
|
|
17208
|
+
set emptyState(e) {
|
|
17209
|
+
this._emptyState = e || EmptyStateService.defaultEmptyState();
|
|
17055
17210
|
}
|
|
17056
|
-
|
|
17057
|
-
this.
|
|
17058
|
-
this.toogleViewer();
|
|
17211
|
+
get emptyState() {
|
|
17212
|
+
return this._emptyState;
|
|
17059
17213
|
}
|
|
17060
|
-
|
|
17061
|
-
|
|
17214
|
+
set dmsParams(params) {
|
|
17215
|
+
this.showLoader = true;
|
|
17216
|
+
this.loadDmsObject(params).subscribe((res) => {
|
|
17217
|
+
this.dmsObject = res;
|
|
17218
|
+
this.showLoader = false;
|
|
17219
|
+
}, Utils.throw(() => this.onHasError(true, true, false)));
|
|
17062
17220
|
}
|
|
17063
|
-
set
|
|
17064
|
-
|
|
17065
|
-
|
|
17066
|
-
this.
|
|
17067
|
-
|
|
17068
|
-
this.isOctetStream = !!((_a = file.mimegroup) === null || _a === void 0 ? void 0 : _a.match(/octet-stream/));
|
|
17069
|
-
this.isLarge = file.size && file.size > this.SIZE_LIMIT;
|
|
17070
|
-
this.mediaType = file.mediaTypeName && this.system.getObjectType(file.mediaTypeName);
|
|
17071
|
-
this.previewUri = this.isMedia ? this.viewer.previewUri : file.uriPdf;
|
|
17072
|
-
}
|
|
17073
|
-
else {
|
|
17074
|
-
this.previewUri = '';
|
|
17075
|
-
}
|
|
17221
|
+
set dmsParams2(params) {
|
|
17222
|
+
this.loadDmsObject(params)
|
|
17223
|
+
.subscribe((res) => {
|
|
17224
|
+
this.dmsObject2 = res;
|
|
17225
|
+
}, Utils.throw(() => this.onHasError(true, true, false)));
|
|
17076
17226
|
}
|
|
17077
|
-
set dmsObject(
|
|
17227
|
+
set dmsObject(v) {
|
|
17078
17228
|
var _a;
|
|
17079
|
-
this.
|
|
17080
|
-
this.
|
|
17081
|
-
|
|
17082
|
-
|
|
17083
|
-
|
|
17084
|
-
|
|
17085
|
-
|
|
17086
|
-
|
|
17087
|
-
|
|
17088
|
-
|
|
17089
|
-
|
|
17090
|
-
|
|
17091
|
-
|
|
17092
|
-
|
|
17093
|
-
|
|
17094
|
-
path: file.path,
|
|
17095
|
-
mediaTypeName: item.typeName
|
|
17096
|
-
};
|
|
17097
|
-
if (!!((_a = file.mimegroup) === null || _a === void 0 ? void 0 : _a.match(/^mail|octet-stream/))) {
|
|
17098
|
-
this.slideUri = this.dms.getSlide(item.content.id, item.content.type, this.useVersion ? item.version : null, 256);
|
|
17099
|
-
this.attachmentsLoading = this.dms.getAttachments(item).subscribe(a => this.setAttachments = a);
|
|
17229
|
+
this.item = v;
|
|
17230
|
+
this.onHasError();
|
|
17231
|
+
// prepare indexdata preview
|
|
17232
|
+
this.onIndexDataSaved(null, this.item);
|
|
17233
|
+
this.eventService.trigger(EnaioEvent.DMS_OBJECT_LOADED, this.item);
|
|
17234
|
+
if (this.item) {
|
|
17235
|
+
if (this.item.isActiveVersion && !this.enableCompare) {
|
|
17236
|
+
this.uploadTarget.referenceObject = this.item;
|
|
17237
|
+
this.uploadTarget.onUploadSuccess = () => this.dmsParams = { id: v.id, type: v.typeName };
|
|
17238
|
+
this.uploadRegistry.register(this.uploadTarget);
|
|
17239
|
+
}
|
|
17240
|
+
if (this.item.lock) {
|
|
17241
|
+
this.lockTooltip = this.translate.instant('eo.object.lock') + ' '
|
|
17242
|
+
+ (new LocaleDatePipe(this.translate).transform(this.item.lock.on))
|
|
17243
|
+
+ ', ' + this.item.lock.by.label + ' (' + this.item.lock.by.name + ')';
|
|
17100
17244
|
}
|
|
17101
17245
|
}
|
|
17102
17246
|
else {
|
|
17103
|
-
this.
|
|
17104
|
-
}
|
|
17105
|
-
}
|
|
17106
|
-
selectAttachment(attachment, force) {
|
|
17107
|
-
const previewUri = attachment && this.isMedia ? this.getViewer({ uriPdf: attachment === null || attachment === void 0 ? void 0 : attachment.previewUri }).previewUri : attachment === null || attachment === void 0 ? void 0 : attachment.previewUri;
|
|
17108
|
-
this.loadDocument(previewUri || this.previewUri, force);
|
|
17109
|
-
}
|
|
17110
|
-
toogleViewer() {
|
|
17111
|
-
this.open = !this.disabled && !!this.previewUri;
|
|
17112
|
-
if (this.undockDisabled) {
|
|
17113
|
-
this.isUndocked = false;
|
|
17247
|
+
this.emptyState = this.empty.getEmptyState(0);
|
|
17114
17248
|
}
|
|
17115
|
-
if (this.
|
|
17116
|
-
this.
|
|
17249
|
+
if ((_a = this.item) === null || _a === void 0 ? void 0 : _a.subscriptions.length) {
|
|
17250
|
+
this.subscriptionIconTooltip = this.createSubscriptionIconTooltip(this.item);
|
|
17117
17251
|
}
|
|
17118
17252
|
}
|
|
17119
|
-
|
|
17120
|
-
this.
|
|
17121
|
-
|
|
17122
|
-
|
|
17123
|
-
this.pdfjs.contentWindow.PDFViewerApplication.open(uri).then(() => (this.hasError = false)).catch((err) => {
|
|
17124
|
-
this.hasError = !this.isOctetStream;
|
|
17125
|
-
this.isNotSupported = this.isOctetStream;
|
|
17126
|
-
});
|
|
17127
|
-
// this.search();
|
|
17128
|
-
}
|
|
17129
|
-
getViewer(file) {
|
|
17130
|
-
var _a, _b;
|
|
17131
|
-
const isVideo = !!((_a = file.mimegroup) === null || _a === void 0 ? void 0 : _a.match(/^audio|^video/));
|
|
17132
|
-
const defaultViewer = isVideo ? MediaComponent.VIDEO_VIEWER : MediaComponent.PDF_VIEWER;
|
|
17133
|
-
const fileExtension = ((_b = file.path) === null || _b === void 0 ? void 0 : _b.includes('.')) ? file.path.split('.').pop() : '';
|
|
17134
|
-
const mimeType = file.mimetype;
|
|
17135
|
-
const config = this.customConfig.find((c) => {
|
|
17136
|
-
const matchMT = !c.mimeType || (typeof c.mimeType === 'string' ? [c.mimeType] : c.mimeType).includes(mimeType === null || mimeType === void 0 ? void 0 : mimeType.toLowerCase());
|
|
17137
|
-
const matchFE = !c.fileExtension || (typeof c.fileExtension === 'string' ? [c.fileExtension] : c.fileExtension).includes((fileExtension).toLowerCase());
|
|
17138
|
-
return matchMT && matchFE && (!c.type || c.type === 'default');
|
|
17139
|
-
});
|
|
17140
|
-
const parameters = {
|
|
17141
|
-
file,
|
|
17142
|
-
path: location.origin + file.uri,
|
|
17143
|
-
pathPdf: location.origin + file.uriPdf,
|
|
17144
|
-
viewer: (config === null || config === void 0 ? void 0 : config.viewer) || defaultViewer,
|
|
17145
|
-
load: config === null || config === void 0 ? void 0 : config.load,
|
|
17146
|
-
fileExtension,
|
|
17147
|
-
mimeType,
|
|
17148
|
-
theme: '',
|
|
17149
|
-
defaultViewer,
|
|
17150
|
-
previewUri: ''
|
|
17151
|
-
};
|
|
17152
|
-
parameters.viewer = this.pluginsService.applyFunction(parameters.viewer, 'component, dmsObject, parameters', [this, this._dmsObject, parameters]) || defaultViewer;
|
|
17153
|
-
const extend = this.customConfig.find((c) => c.type === 'extend');
|
|
17154
|
-
if (extend)
|
|
17155
|
-
parameters.viewer = this.pluginsService.applyFunction(extend.viewer, 'component, dmsObject, parameters', [this, this._dmsObject, parameters]);
|
|
17156
|
-
parameters.previewUri = this.resolveUri(parameters.viewer, parameters);
|
|
17157
|
-
return parameters;
|
|
17253
|
+
set dmsObject2(v) {
|
|
17254
|
+
this.item2 = v;
|
|
17255
|
+
this.onHasError();
|
|
17256
|
+
this.onIndexDataSaved(null, this.item2);
|
|
17158
17257
|
}
|
|
17159
|
-
|
|
17160
|
-
return
|
|
17161
|
-
.replace('${originalPath}', parameters.path)
|
|
17162
|
-
.replace('${path}', encodeURIComponent(parameters.path))
|
|
17163
|
-
.replace('${pathPdf}', encodeURIComponent(parameters.pathPdf))
|
|
17164
|
-
.replace('${fileExtension}', encodeURIComponent(parameters.fileExtension))
|
|
17165
|
-
.replace('${mimeType}', encodeURIComponent(parameters.mimeType))
|
|
17166
|
-
.replace('${theme}', encodeURIComponent(parameters.theme))
|
|
17167
|
-
.replace('${lang}', ContentPreviewService.mapLang(this.translate.currentLang));
|
|
17258
|
+
get dataType() {
|
|
17259
|
+
return this.item ? this.item.typeName : 'none';
|
|
17168
17260
|
}
|
|
17169
|
-
|
|
17170
|
-
|
|
17171
|
-
return;
|
|
17172
|
-
}
|
|
17173
|
-
this.isUndocked = !this.isUndocked;
|
|
17174
|
-
if (!this.isUndocked) {
|
|
17175
|
-
ContentPreviewService.closeWin();
|
|
17176
|
-
}
|
|
17177
|
-
else {
|
|
17178
|
-
this._ngZone.runOutsideAngular(_ => {
|
|
17179
|
-
const interval = setInterval(() => {
|
|
17180
|
-
if (this.undockWin && !ContentPreviewService.undockWinActive()) {
|
|
17181
|
-
clearInterval(interval);
|
|
17182
|
-
this._ngZone.run(() => this.isUndocked && this.undock());
|
|
17183
|
-
}
|
|
17184
|
-
}, 1000);
|
|
17185
|
-
fromEvent(window, 'beforeunload')
|
|
17186
|
-
.pipe(takeWhile(() => this.isUndocked))
|
|
17187
|
-
.subscribe(e => ContentPreviewService.closeWin());
|
|
17188
|
-
});
|
|
17189
|
-
}
|
|
17190
|
-
if (open) {
|
|
17191
|
-
this.loadDocument(this.previewUri, true);
|
|
17192
|
-
}
|
|
17261
|
+
getDmsParams(data) {
|
|
17262
|
+
return data ? Object.assign(Object.assign({}, data), { type: data.typeName || data.type }) : null;
|
|
17193
17263
|
}
|
|
17194
|
-
|
|
17195
|
-
|
|
17196
|
-
|
|
17197
|
-
|
|
17198
|
-
|
|
17264
|
+
updateContent() {
|
|
17265
|
+
if (this.applySelection) {
|
|
17266
|
+
if (this.enableCompare) {
|
|
17267
|
+
this.selection
|
|
17268
|
+
.find(this.applySelection.in)
|
|
17269
|
+
.selection$
|
|
17270
|
+
.pipe(takeUntil(this.componentDestroyed$))
|
|
17271
|
+
.subscribe((res) => {
|
|
17272
|
+
this.dmsParams = this.parseDmsParams(res[0]);
|
|
17273
|
+
this.dmsParams2 = this.parseDmsParams(res[1]);
|
|
17274
|
+
});
|
|
17275
|
+
return;
|
|
17199
17276
|
}
|
|
17200
|
-
|
|
17201
|
-
|
|
17202
|
-
|
|
17203
|
-
|
|
17204
|
-
|
|
17205
|
-
|
|
17206
|
-
|
|
17207
|
-
|
|
17208
|
-
|
|
17209
|
-
|
|
17210
|
-
|
|
17211
|
-
|
|
17212
|
-
|
|
17213
|
-
|
|
17214
|
-
|
|
17215
|
-
|
|
17216
|
-
|
|
17217
|
-
|
|
17218
|
-
|
|
17219
|
-
this.hasError = false;
|
|
17220
|
-
this.isNotSupported = false;
|
|
17221
|
-
if (this.isUndocked) {
|
|
17222
|
-
this.openWindow(this.latestUri);
|
|
17223
|
-
const onload = () => { var _a; return this.pluginsService.applyFunction((_a = this.viewer) === null || _a === void 0 ? void 0 : _a.load, 'iframe, component', [this.undockWin, this]); };
|
|
17224
|
-
this.iframeInit(this.undockWin, ((_a = this.viewer) === null || _a === void 0 ? void 0 : _a.load) && onload);
|
|
17225
|
-
return false;
|
|
17226
|
-
}
|
|
17227
|
-
if (this.isLarge) {
|
|
17228
|
-
return false;
|
|
17229
|
-
}
|
|
17230
|
-
if (this.isMedia) {
|
|
17231
|
-
this.renderer.setAttribute(this.iframeMedia.nativeElement, 'src', this.latestUri);
|
|
17232
|
-
const onload = () => { var _a; return this.pluginsService.applyFunction((_a = this.viewer) === null || _a === void 0 ? void 0 : _a.load, 'iframe, component', [this.iframeMedia.nativeElement, this]); };
|
|
17233
|
-
this.iframeInit(this.iframeMedia.nativeElement, ((_b = this.viewer) === null || _b === void 0 ? void 0 : _b.load) && onload);
|
|
17234
|
-
}
|
|
17235
|
-
else {
|
|
17236
|
-
if (!this.pdfjs) {
|
|
17237
|
-
this.pdfjs = this.iframe.nativeElement;
|
|
17238
|
-
this.renderer.setAttribute(this.pdfjs, 'src', MediaComponent.PDF_VIEWER.replace(/\?.*/, '?file=&'));
|
|
17239
|
-
this.renderer.listen(this.pdfjs, 'load', () => {
|
|
17240
|
-
this.pdfjs.contentWindow.PDFViewerApplicationOptions.set('sidebarViewOnLoad', 0);
|
|
17241
|
-
this.pdfjs.contentWindow.PDFViewerApplicationOptions.set('viewOnLoad', false);
|
|
17242
|
-
this.pdfjs.contentWindow.PDFViewerApplicationOptions.set('locale', ContentPreviewService.mapLang(this.translate.currentLang));
|
|
17243
|
-
this.pdfjs.contentWindow.document.webL10n.setLanguage(ContentPreviewService.mapLang(this.translate.currentLang));
|
|
17244
|
-
this.pdfjs.contentWindow.PDFViewerApplication._initializeL10n();
|
|
17245
|
-
this.pdfjs.contentWindow.PDFViewerApplicationOptions.set('viewerCssTheme', 1);
|
|
17246
|
-
this.pdfjs.contentWindow.PDFViewerApplication._forceCssTheme();
|
|
17247
|
-
this.pdfjs.contentWindow.PDFViewerApplication.appConfig.viewerContainer
|
|
17248
|
-
.addEventListener('dragenter', e => window.document.dispatchEvent(new DragEvent('dragenter', e)));
|
|
17249
|
-
this.pdfjs.contentWindow.PDFViewerApplication.appConfig.viewerContainer.addEventListener('drop', e => e.stopPropagation());
|
|
17250
|
-
this.openPdfViewer(this.latestUri);
|
|
17277
|
+
else {
|
|
17278
|
+
this.selection
|
|
17279
|
+
.find(this.applySelection.in)
|
|
17280
|
+
.focus$
|
|
17281
|
+
.pipe(takeUntil(this.componentDestroyed$))
|
|
17282
|
+
.subscribe(res => {
|
|
17283
|
+
this.showLoader = true;
|
|
17284
|
+
this.loadDmsObject(this.parseDmsParams(res)).subscribe((res) => {
|
|
17285
|
+
// refreshing object details may result in an updated version of the object
|
|
17286
|
+
// so we'll use this trigger to also emitt those changes to other listening components
|
|
17287
|
+
if (this.item && res && (this.item.id === res.id) && res.version > this.item.version) {
|
|
17288
|
+
this.eventService.trigger(EnaioEvent.DMS_OBJECT_UPDATED, res);
|
|
17289
|
+
}
|
|
17290
|
+
this.dmsObject = res;
|
|
17291
|
+
this.showLoader = false;
|
|
17292
|
+
}, Utils.throw((error) => {
|
|
17293
|
+
this.uploadRegistry.unregister(this.uploadTarget.id);
|
|
17294
|
+
return this.onHasError(true, true, false);
|
|
17295
|
+
}));
|
|
17251
17296
|
});
|
|
17252
17297
|
}
|
|
17253
|
-
else if (this.pdfjs.contentWindow && this.pdfjs.contentWindow.PDFViewerApplication) {
|
|
17254
|
-
this.pdfjs.contentWindow.PDFViewerApplication.pdfSidebar.close();
|
|
17255
|
-
this.openPdfViewer(this.latestUri);
|
|
17256
|
-
}
|
|
17257
17298
|
}
|
|
17258
17299
|
}
|
|
17259
|
-
|
|
17260
|
-
|
|
17261
|
-
|
|
17262
|
-
|
|
17263
|
-
|
|
17264
|
-
|
|
17265
|
-
|
|
17266
|
-
|
|
17267
|
-
|
|
17268
|
-
|
|
17269
|
-
|
|
17270
|
-
|
|
17271
|
-
|
|
17272
|
-
|
|
17273
|
-
|
|
17274
|
-
|
|
17275
|
-
|
|
17276
|
-
|
|
17277
|
-
|
|
17278
|
-
|
|
17300
|
+
refreshContent() {
|
|
17301
|
+
this.updateContent();
|
|
17302
|
+
}
|
|
17303
|
+
prepareIndexDataPreview(item, formData) {
|
|
17304
|
+
const { id, data, type, created, modified, content, contentFileName, contentFileSize, version } = item;
|
|
17305
|
+
return this.system
|
|
17306
|
+
.getObjectTypeForm(type.name, 'EDIT')
|
|
17307
|
+
.pipe(map(form => {
|
|
17308
|
+
let indexDataPreview = {
|
|
17309
|
+
form,
|
|
17310
|
+
data: formData || data
|
|
17311
|
+
};
|
|
17312
|
+
let baseparams = {
|
|
17313
|
+
id,
|
|
17314
|
+
type: type.name,
|
|
17315
|
+
createdOn: new Date(created.on),
|
|
17316
|
+
modifiedOn: new Date(modified.on),
|
|
17317
|
+
createdBy: `${created.by.title} (${created.by.name})`,
|
|
17318
|
+
modifiedBy: `${modified.by.title} (${modified.by.name})`,
|
|
17319
|
+
contentFileName: contentFileName ? contentFileName : null,
|
|
17320
|
+
contentFileSize: contentFileSize ? Number(contentFileSize) : null,
|
|
17321
|
+
version: version || 0,
|
|
17322
|
+
mimeGroup: content ? content.contents ? content.contents[0].mimegroup : null : null,
|
|
17323
|
+
digest: content ? content.contents ? content.contents[0].digest : null : null,
|
|
17324
|
+
contentId: content ? content.contents ? content.id : null : null
|
|
17325
|
+
};
|
|
17326
|
+
return { indexDataPreview, baseparams };
|
|
17327
|
+
}));
|
|
17328
|
+
}
|
|
17329
|
+
onHasError(hasError = false, nodmsobject = false, showLoader = false) {
|
|
17330
|
+
this.hasError = hasError;
|
|
17331
|
+
this.nodmsobject = nodmsobject;
|
|
17332
|
+
this.showLoader = showLoader;
|
|
17333
|
+
this.hasContent.emit(!hasError);
|
|
17334
|
+
}
|
|
17335
|
+
loadDmsObject(params) {
|
|
17336
|
+
var _a;
|
|
17337
|
+
if (!this.enableCompare && params) {
|
|
17338
|
+
delete params.version;
|
|
17279
17339
|
}
|
|
17340
|
+
// check for valid id
|
|
17341
|
+
return ((_a = params === null || params === void 0 ? void 0 : params.id) === null || _a === void 0 ? void 0 : _a.length) === 32 ? this.dmsService.getDmsObjectByParams(params) : of(null);
|
|
17280
17342
|
}
|
|
17281
|
-
|
|
17282
|
-
|
|
17283
|
-
|
|
17284
|
-
|
|
17285
|
-
|
|
17286
|
-
|
|
17287
|
-
|
|
17288
|
-
|
|
17343
|
+
downloadOriginalContent() {
|
|
17344
|
+
this.backend.downloadContent([this.item]);
|
|
17345
|
+
}
|
|
17346
|
+
showActions() {
|
|
17347
|
+
const actions = [this.item, this.item2].filter(v => v);
|
|
17348
|
+
this.actionService.showActions(actions, 'DMS_OBJECT');
|
|
17349
|
+
}
|
|
17350
|
+
openObject(id, _type) {
|
|
17351
|
+
const queryParams = { queryParams: { 'type': _type } };
|
|
17352
|
+
return this.router.navigate(['/object', id], queryParams);
|
|
17353
|
+
}
|
|
17354
|
+
// executed when the dms object changed due to saving its indexdata
|
|
17355
|
+
onIndexDataSaved(formData, item) {
|
|
17356
|
+
if (!this.item) {
|
|
17357
|
+
this.indexDataPreview = null;
|
|
17358
|
+
this.baseparams = null;
|
|
17359
|
+
}
|
|
17360
|
+
if (!this.item2) {
|
|
17361
|
+
this.indexDataPreview2 = null;
|
|
17362
|
+
this.baseparams2 = null;
|
|
17363
|
+
}
|
|
17364
|
+
if (item) {
|
|
17365
|
+
this.prepareIndexDataPreview(item, formData)
|
|
17366
|
+
.subscribe(data => {
|
|
17367
|
+
if (item === this.item) {
|
|
17368
|
+
this.indexDataPreview = data.indexDataPreview;
|
|
17369
|
+
this.baseparams = data.baseparams;
|
|
17370
|
+
}
|
|
17371
|
+
else {
|
|
17372
|
+
this.indexDataPreview2 = data.indexDataPreview;
|
|
17373
|
+
this.baseparams2 = data.baseparams;
|
|
17374
|
+
}
|
|
17289
17375
|
});
|
|
17290
17376
|
}
|
|
17291
17377
|
}
|
|
17292
|
-
|
|
17293
|
-
|
|
17294
|
-
|
|
17295
|
-
|
|
17296
|
-
|
|
17297
|
-
|
|
17298
|
-
|
|
17299
|
-
|
|
17300
|
-
|
|
17301
|
-
|
|
17302
|
-
|
|
17303
|
-
|
|
17304
|
-
|
|
17305
|
-
|
|
17378
|
+
get referenceTitle() {
|
|
17379
|
+
return this.item.contextFolder ? this.item.contextFolder.title : this.item.title;
|
|
17380
|
+
}
|
|
17381
|
+
isJournalObject(item) {
|
|
17382
|
+
return item.type.supertypes.find(sT => sT === 'sysjournalobject');
|
|
17383
|
+
}
|
|
17384
|
+
isVisible(id) {
|
|
17385
|
+
return this.panelOrder.master.includes(id) || this.panelOrder.slave.includes(id);
|
|
17386
|
+
}
|
|
17387
|
+
createSubscriptionIconTooltip(item) {
|
|
17388
|
+
let tooltip = '';
|
|
17389
|
+
const modes = this.item.subscriptions.map(subscription => subscription.mode);
|
|
17390
|
+
const subscribedToAllChanges = modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED) || (modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED) && modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED));
|
|
17391
|
+
const subscribedToMetaChangesOnly = modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED) && !modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED) && !modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED);
|
|
17392
|
+
const subscribedToContentChangesOnly = modes.includes(SubscriptionMode.ONLY_DOCUMENT_CONTENT_CHANGED) && !modes.includes(SubscriptionMode.ONLY_INDEX_DATA_CHANGED) && !modes.includes(SubscriptionMode.DMS_OBJECT_CHANGED);
|
|
17393
|
+
if (subscribedToAllChanges) {
|
|
17394
|
+
tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.allChanges');
|
|
17395
|
+
}
|
|
17396
|
+
else if (subscribedToMetaChangesOnly) {
|
|
17397
|
+
tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.meta');
|
|
17398
|
+
}
|
|
17399
|
+
else if (subscribedToContentChangesOnly) {
|
|
17400
|
+
tooltip = this.translate.instant('eo.object.subscription.icon.tooltip.content');
|
|
17306
17401
|
}
|
|
17402
|
+
return tooltip;
|
|
17307
17403
|
}
|
|
17308
|
-
|
|
17309
|
-
|
|
17310
|
-
|
|
17311
|
-
|
|
17312
|
-
|
|
17404
|
+
ngOnInit() {
|
|
17405
|
+
this.capabilities = this.capabilityService.getCapabilities();
|
|
17406
|
+
this.updateContent();
|
|
17407
|
+
this.eventService
|
|
17408
|
+
.on(EnaioEvent.DMS_OBJECT_UPDATED)
|
|
17409
|
+
.pipe(takeUntil(this.componentDestroyed$))
|
|
17410
|
+
.subscribe(event => {
|
|
17411
|
+
if (event.data && this.item.id === event.data.id) {
|
|
17412
|
+
this.dmsObject = this.dmsService.createLocalCopyOfDMSObject(event.data);
|
|
17413
|
+
if (this.preview && !this.preview.disabled) {
|
|
17414
|
+
this.preview.refresh();
|
|
17415
|
+
}
|
|
17416
|
+
}
|
|
17417
|
+
});
|
|
17418
|
+
this.eventService
|
|
17419
|
+
.on(EnaioEvent.INBOX_ITEM_CONFIRMED)
|
|
17420
|
+
.pipe(takeUntil(this.componentDestroyed$))
|
|
17421
|
+
.subscribe(event => {
|
|
17422
|
+
if (this.item && this.item.id === event.data.target.id) {
|
|
17423
|
+
this.dmsParams = null;
|
|
17424
|
+
}
|
|
17425
|
+
});
|
|
17313
17426
|
}
|
|
17314
17427
|
ngAfterViewInit() {
|
|
17428
|
+
let panels = this.tabPanels.toArray();
|
|
17429
|
+
this.tabPlugins.forEach(p => panels = panels.concat(p.tabPanels.toArray()));
|
|
17430
|
+
this.externalPanels.reset(panels);
|
|
17315
17431
|
}
|
|
17316
17432
|
ngOnDestroy() {
|
|
17317
|
-
|
|
17433
|
+
this.uploadRegistry.unregister(this.uploadTarget.id);
|
|
17318
17434
|
}
|
|
17319
17435
|
}
|
|
17320
|
-
|
|
17321
|
-
MediaComponent.PDF_VIEWER = 'assets/_default/api/pdf/web/viewer.html?file=&path=${path}&pathPdf=${pathPdf}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}&css=%23toolbarViewerRight%20%23print%7Bdisplay%3Ablock!important%3B%7D';
|
|
17322
|
-
MediaComponent.decorators = [
|
|
17436
|
+
ObjectDetailsComponent.decorators = [
|
|
17323
17437
|
{ type: Component, args: [{
|
|
17324
|
-
selector: 'eo-
|
|
17325
|
-
template: "<div
|
|
17438
|
+
selector: 'eo-object-details',
|
|
17439
|
+
template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\r\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\r\n</div>\r\n<ng-container *ngIf=\"item && !hasError; else noItem\">\r\n\r\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\r\n <header class=\"eo-header\">\r\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\r\n <div class=\"eo-header-info\">\r\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\r\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\r\n </div>\r\n\r\n <div class=\"eo-header-actions-container\">\r\n <div class=\"eo-header-actions\">\r\n <ng-container *ngIf=\"!isReference; else tplHeadReference\">\r\n <eo-icon class=\"button refresh-button\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\r\n [iconTitle]=\"('eo.list.refresh' | translate)\" (click)=\"refreshContent()\"></eo-icon>\r\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare\" [ngClass]=\"{'enabled': enableSync}\"\r\n [iconSrc]=\"'assets/_default/svg/ic_link.svg'\" [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\"\r\n (click)=\"enableSync = !enableSync\"></eo-icon>\r\n <eo-favorite-icon [item]=\"item\" *ngIf=\"!enableCompare && capabilities.favorites && !isJournalObject(item)\">\r\n </eo-favorite-icon>\r\n <eo-icon class=\"button oc-button\" *ngIf=\"!enableCompare && item.content\" (click)=\"downloadOriginalContent()\"\r\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\r\n <eo-edit-icon [item]=\"item\" *ngIf=\"!enableCompare && item.content && item.rights.edit && (agentIsConnected$ | async)\">\r\n </eo-edit-icon>\r\n <eo-icon class=\"button am-button\" (click)=\"showActions()\"\r\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\r\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\r\n </ng-container>\r\n\r\n <ng-template #tplHeadReference>\r\n <a class=\"button reference primary\"\r\n [title]=\"('eo.object.reference.tooltip' | translate:{title:referenceTitle})\"\r\n [routerLink]=\"['/object', item.id]\"\r\n [queryParams]=\"{type: item.typeName}\">{{'eo.object.reference.open'|translate}}</a>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n <div class=\"eo-header-status-icons\">\r\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\r\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\r\n <span>{{'eo.object.contentlink' | translate}}</span>\r\n </a>\r\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\r\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\"\r\n [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\r\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\r\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\r\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate\"></eo-icon>\r\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\r\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\r\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\r\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\r\n </div>\r\n </div>\r\n </header>\r\n </div>\r\n <div class=\"eo-body\">\r\n <eo-tab-container [pluginPanels]=\"externalPanels\" [cacheLayout]=\"!enableCompare && cacheLayout\" [defaultPanelOrder]=\"!enableCompare && panelOrder\"\r\n [dndEnabled]=\"!enableCompare\" [enableSlave]=\"!enableCompare || item2\" [enableSync]=\"enableCompare && enableSync\"\r\n [version]=\"enableCompare && {master: item && item.version, slave: item2 && item2.version}\">\r\n\r\n <eo-tab-panel [id]=\"'summary'\" *ngIf=\"isVisible('summary')\" header=\"{{'eo.object.summary.title' | translate}}\">\r\n <ng-template pTemplate=\"content\">\r\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\r\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\r\n </ng-template>\r\n </eo-tab-panel>\r\n\r\n <eo-tab-panel [id]=\"'indexdata'\" *ngIf=\"isVisible('indexdata')\" header=\"{{'eo.object.indexdata.title' | translate}}\">\r\n <ng-template pTemplate=\"content\">\r\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\r\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\r\n </ng-template>\r\n </eo-tab-panel>\r\n \r\n <eo-tab-panel [id]=\"'preview'\" *ngIf=\"isVisible('preview')\" header=\"{{'eo.object.content.title' | translate}}\" [isSlave]=\"!enableCompare\"\r\n #preview>\r\n <ng-template pTemplate=\"content\" *ngIf=\"!undockWinActive; else loadPreview\">\r\n <eo-media *ngIf=\"item\" [dmsObject]=\"item\" [disabled]=\"!preview.selected\"\r\n [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\" #viewer></eo-media>\r\n </ng-template>\r\n <ng-template #loadPreview>\r\n <eo-media *ngIf=\"item\" [dmsObject]=\"item\"\r\n [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\" #viewer></eo-media>\r\n </ng-template>\r\n </eo-tab-panel>\r\n\r\n <eo-tab-panel *ngIf=\"isVisible('history') && !enableCompare\" [id]=\"'history'\" header=\"{{'eo.object.history.title' | translate}}\" #history>\r\n <ng-template pTemplate=\"content\">\r\n <eo-object-history *ngIf=\"history.selected\" [params]=\"{id: item.id, type: item.type?.qname}\">\r\n </eo-object-history>\r\n </ng-template>\r\n </eo-tab-panel>\r\n\r\n <eo-tab-panel *ngIf=\"isVisible('links') && !enableCompare\" [id]=\"'links'\" header=\"{{'eo.object.links.title' | translate}}\" #links>\r\n <ng-template pTemplate=\"content\">\r\n <eo-object-links *ngIf=\"links.selected\" [dmsObject]=\"item\"></eo-object-links>\r\n </ng-template>\r\n </eo-tab-panel>\r\n\r\n <!-- slave tabs -->\r\n\r\n <eo-tab-panel *ngIf=\"isVisible('summary') && enableCompare\" [id]=\"'summary2'\" header=\"{{'eo.object.summary.title' | translate}}\"\r\n [isSlave]=\"true\">\r\n <ng-template pTemplate=\"content\">\r\n <eo-indexdata-summary *ngIf=\"item2\" [indexdata]=\"indexDataPreview2\" [baseparams]=\"baseparams2\"\r\n [dmsObject]=\"item2\" [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\r\n </ng-template>\r\n </eo-tab-panel>\r\n\r\n <eo-tab-panel *ngIf=\"isVisible('indexdata') && enableCompare\" [id]=\"'indexdata2'\" header=\"{{'eo.object.indexdata.title' | translate}}\"\r\n [isSlave]=\"true\">\r\n <ng-template pTemplate=\"content\">\r\n <eo-object-form-edit *ngIf=\"item2\" [dmsObject]=\"item2\" (indexDataSaved)=\"onIndexDataSaved($event, item2)\"\r\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\r\n </ng-template>\r\n </eo-tab-panel>\r\n\r\n <eo-tab-panel *ngIf=\"isVisible('preview') && enableCompare\" [id]=\"'preview2'\" header=\"{{'eo.object.content.title' | translate}}\"\r\n [isSlave]=\"true\" #preview2>\r\n <ng-template pTemplate=\"content\">\r\n <eo-media *ngIf=\"item2\" [dmsObject]=\"item2\" [disabled]=\"!preview2.selected\" [undockDisabled]=\"enableCompare\"\r\n [useVersion]=\"true\" [searchTerm]=\"searchTerm\" #viewer2></eo-media>\r\n </ng-template>\r\n </eo-tab-panel>\r\n \r\n <eo-tab-panel *ngIf=\"enableCompare && enableDiff\" [id]=\"'changes'\" header=\"{{'eo.object.changes.title' | translate}}\"\r\n [isSlave]=\"true\">\r\n <ng-template pTemplate=\"content\">\r\n <eo-indexdata-summary *ngIf=\"item2\" [diff]=\"{indexdata : indexDataPreview, indexdata2: indexDataPreview2, baseparams: baseparams, baseparams2: baseparams2}\" \r\n [dmsObject]=\"item2\" [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\r\n </ng-template>\r\n </eo-tab-panel>\r\n\r\n <ng-content></ng-content>\r\n\r\n </eo-tab-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #noItem>\r\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\r\n <eo-error-message *ngIf=\"!showLoader\"\r\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\r\n <ng-content select=\".error\"></ng-content>\r\n </eo-error-message>\r\n</ng-template>",
|
|
17326
17440
|
providers: [ContentPreviewService],
|
|
17327
|
-
styles: [":host
|
|
17441
|
+
styles: [":host{background:var(--panel-background-grey);display:flex;flex:1;flex-direction:column;height:100%;min-height:0;min-width:0;overflow-y:auto}:host .eo-head .eo-header .eo-header-info .eo-header-subtitle,:host .eo-head .eo-header .eo-header-info .eo-header-title{-moz-user-select:text;-webkit-user-select:text;user-select:text}:host .eo-body__not-available{background:rgba(var(--color-black-rgb),.4);opacity:.4}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .lock{background:var(--color-error)!important;border-radius:2px;color:var(--color-white);height:18px;padding:1px;width:18px}:host .lock.myLock{background:var(--state-orange)!important;color:var(--color-white)}:host .not-found{background:var(--color-error);border-radius:2px;color:var(--panel-background);flex:0 0 auto;margin:calc(var(--app-pane-padding)/2);padding:calc(var(--app-pane-padding)/4);text-align:center}:host .eo-header-status-icons{display:flex;justify-content:flex-end;margin-top:var(--app-pane-padding)}:host .eo-header-status-icons>eo-icon{background-color:var(--color-primary-2);color:var(--color-white);height:18px;margin-left:1px;padding:calc(var(--app-pane-padding)/4);width:18px}:host .eo-header-status-icons>eo-icon:first-child{border-bottom-left-radius:4px;border-top-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.lock{background:var(--color-error)!important;border-radius:2px;color:var(--color-white);height:18px;padding:1px;width:18px}:host .eo-header-status-icons>eo-icon.lock.myLock{background:var(--state-orange)!important}:host .eo-header-status-icons>a{align-items:center;background-color:var(--color-success);border-radius:2px;color:var(--color-white);display:flex;font-size:var(--font-hint);line-height:var(--font-hint);margin:0 calc(var(--app-pane-padding)/4);padding:0 4px 1px;text-decoration:none}:host .loader-overlay__mask{-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s;background:rgba(var(--color-white-rgb),.8);display:flex;height:100%;position:absolute;width:100%;z-index:11}:host .loader-overlay__mask .object-detail__loader{margin:auto}:host ::ng-deep .sync-tab-btn{color:rgba(var(--color-black-rgb),.2)}:host ::ng-deep .sync-tab-btn .svg-link{fill:transparent}:host ::ng-deep .sync-tab-btn.enabled .svg-link{fill:currentColor}:host ::ng-deep div[eosplitgutter]{background-color:var(--color-white)!important}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep #indexdata{overflow:hidden}:host ::ng-deep #indexdata .object-form-edit{background:transparent!important;height:100%;margin:0;position:relative}:host ::ng-deep #indexdata .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep #indexdata .object-form-edit eo-object-form .eo-object-form{background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1);margin:var(--app-pane-padding)}:host ::ng-deep #indexdata .object-form-edit .form-controls{-webkit-animation:eoFadeInUp .2s;animation:eoFadeInUp .2s;border:4px solid var(--panel-background-grey)}:host ::ng-deep #indexdata .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}"]
|
|
17328
17442
|
},] }
|
|
17329
17443
|
];
|
|
17330
|
-
|
|
17331
|
-
{ type:
|
|
17332
|
-
{ type:
|
|
17333
|
-
{ type: Renderer2 },
|
|
17444
|
+
ObjectDetailsComponent.ctorParameters = () => [
|
|
17445
|
+
{ type: Router },
|
|
17446
|
+
{ type: ActivatedRoute },
|
|
17334
17447
|
{ type: SystemService },
|
|
17335
|
-
{ type:
|
|
17448
|
+
{ type: EmptyStateService },
|
|
17449
|
+
{ type: AgentService },
|
|
17450
|
+
{ type: BackendService },
|
|
17451
|
+
{ type: DmsService },
|
|
17452
|
+
{ type: SelectionService },
|
|
17453
|
+
{ type: ActionService },
|
|
17454
|
+
{ type: CapabilitiesService },
|
|
17455
|
+
{ type: UploadRegistryService },
|
|
17456
|
+
{ type: EventService },
|
|
17336
17457
|
{ type: Config },
|
|
17337
|
-
{ type:
|
|
17338
|
-
{ type: BackendService }
|
|
17458
|
+
{ type: TranslateService }
|
|
17339
17459
|
];
|
|
17340
|
-
|
|
17341
|
-
|
|
17342
|
-
|
|
17343
|
-
|
|
17344
|
-
|
|
17345
|
-
|
|
17346
|
-
|
|
17347
|
-
|
|
17348
|
-
|
|
17349
|
-
|
|
17350
|
-
|
|
17351
|
-
|
|
17352
|
-
|
|
17353
|
-
|
|
17460
|
+
ObjectDetailsComponent.propDecorators = {
|
|
17461
|
+
preview: [{ type: ViewChild, args: ['viewer',] }],
|
|
17462
|
+
isReference: [{ type: HostBinding, args: ['class.reference',] }],
|
|
17463
|
+
reference: [{ type: Input }],
|
|
17464
|
+
searchTerm: [{ type: Input }],
|
|
17465
|
+
enableCompare: [{ type: Input }],
|
|
17466
|
+
enableDiff: [{ type: Input }],
|
|
17467
|
+
enableSync: [{ type: Input }],
|
|
17468
|
+
cacheLayout: [{ type: Input }],
|
|
17469
|
+
emptyState: [{ type: Input }],
|
|
17470
|
+
dmsParams: [{ type: Input, args: ['params',] }],
|
|
17471
|
+
dmsParams2: [{ type: Input, args: ['params2',] }],
|
|
17472
|
+
dmsObject: [{ type: Input, args: ['item',] }],
|
|
17473
|
+
dmsObject2: [{ type: Input, args: ['item2',] }],
|
|
17474
|
+
tabPanels: [{ type: ContentChildren, args: [TabPanelComponent,] }],
|
|
17475
|
+
tabPlugins: [{ type: ContentChildren, args: [TabPluginComponent,] }],
|
|
17476
|
+
applySelection: [{ type: Input }],
|
|
17477
|
+
parseDmsParams: [{ type: Input }],
|
|
17478
|
+
hasContent: [{ type: Output }],
|
|
17479
|
+
dataType: [{ type: HostBinding, args: ['attr.data-type',] }]
|
|
17354
17480
|
};
|
|
17355
17481
|
|
|
17356
|
-
class MediaModule {
|
|
17357
|
-
}
|
|
17358
|
-
MediaModule.decorators = [
|
|
17359
|
-
{ type: NgModule, args: [{
|
|
17360
|
-
imports: [
|
|
17361
|
-
CommonModule,
|
|
17362
|
-
UiModule,
|
|
17363
|
-
FormsModule,
|
|
17364
|
-
FormElementsModule
|
|
17365
|
-
],
|
|
17366
|
-
declarations: [MediaComponent],
|
|
17367
|
-
exports: [MediaComponent]
|
|
17368
|
-
},] }
|
|
17369
|
-
];
|
|
17370
|
-
|
|
17371
17482
|
class TabContainerComponent {
|
|
17372
17483
|
constructor(layout) {
|
|
17373
17484
|
this.layout = layout;
|
|
@@ -18044,7 +18155,7 @@ class FavoriteIconComponent extends UnsubscribeOnDestroy {
|
|
|
18044
18155
|
FavoriteIconComponent.decorators = [
|
|
18045
18156
|
{ type: Component, args: [{
|
|
18046
18157
|
selector: 'eo-favorite-icon',
|
|
18047
|
-
template: "<eo-icon class=\"button favorite\"\r\n [ngClass]=\"{active: item.isFavorite}\"\r\n [iconTitle]=\"tooltip\"\r\n [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\r\n (click)=\"toggle($event)\">\r\n</eo-icon>\r\n\r\n<eo-dialog\r\n [title]=\"('eo.favorite.icon.dialog.title' | translate)\"\r\n [(visible)]=\"display\"\r\n [minWidth]=\"400\"\r\n [
|
|
18158
|
+
template: "<eo-icon class=\"button favorite\"\r\n [ngClass]=\"{active: item.isFavorite}\"\r\n [iconTitle]=\"tooltip\"\r\n [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\r\n (click)=\"toggle($event)\">\r\n</eo-icon>\r\n\r\n<eo-dialog\r\n [title]=\"('eo.favorite.icon.dialog.title' | translate)\"\r\n [(visible)]=\"display\"\r\n [minWidth]=\"400\"\r\n [styleClass]=\"'favorite-form__dialog'\">\r\n\r\n <form name=\"favoriteForm\" (ngSubmit)=\"save()\">\r\n <eo-form-input [label]=\" 'eo.favorite.icon.dialog.input.label' | translate\">\r\n <input [(ngModel)]=\"value\" maxlength=\"250\" [ngModelOptions]=\"{standalone: true}\" #favName />\r\n </eo-form-input>\r\n <div class=\"action-buttons favorite-form__dialog--action-buttons flex-row\">\r\n <button type=\"button\" class=\"button cancel\" (click)=\"toggle($event, true)\" translate>eo.favorite.icon.dialog.cancel</button>\r\n <button type=\"submit\" [disabled]=\"!value\" class=\"button primary\" translate>eo.favorite.icon.dialog.save</button>\r\n </div>\r\n </form>\r\n</eo-dialog>\r\n",
|
|
18048
18159
|
styles: [":host eo-icon.active{color:var(--color-favorite)}::ng-deep .favorite-form__dialog{min-height:unset!important;padding:8px}::ng-deep .favorite-form__dialog--header{background:#fff!important;color:rgba(var(--color-black-rgb),.54)!important;font-size:1.17em!important;font-weight:400!important;margin:0;padding:0 0 1em!important}::ng-deep .favorite-form__dialog .eo-dialog-content{overflow:hidden}"]
|
|
18049
18160
|
},] }
|
|
18050
18161
|
];
|
|
@@ -20253,7 +20364,7 @@ class PrepareDetailsComponent extends UnsubscribeOnDestroy {
|
|
|
20253
20364
|
PrepareDetailsComponent.decorators = [
|
|
20254
20365
|
{ type: Component, args: [{
|
|
20255
20366
|
selector: 'eo-prepare-details',
|
|
20256
|
-
template: "<div class=\"prepareDetails__wrapper\" *ngIf=\"!loading; else mainSpinner\">\r\n <section class=\"prepareDetails\" *ngIf=\"preparedItem && preparePhase; else noItem\"\r\n [ngClass]=\"{multifile: preparedItem.contentcount > 1, committing: committing}\">\r\n <div class=\"eo-head\">\r\n\r\n <div class=\"header-info\">\r\n <div class=\"header-title\">{{header.title}}</div>\r\n <div class=\"header-sub-title h-location\" *ngIf=\"!header.location.link; else linked\">{{header.location.label}}\r\n </div>\r\n <div class=\"header-sub-title h-subtitle\">{{header.subtitle}}</div>\r\n\r\n <ng-template #linked>\r\n <div class=\"header-sub-title h-subtitle-detailed\">\r\n <span translate>eo.prepare.location.title.prefix</span>\r\n <a [routerLink]=\"header.location.link\">{{header.location.label}}</a>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <eo-icon class=\"btn btn-download\"\r\n *ngIf=\"preparePhase.name === 'content' ? selectedTemplateFile : preparePhase.data.previewFile\"\r\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"\r\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\" (click)=\"download()\"></eo-icon>\r\n <eo-icon class=\"btn btn-delete\" [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\"\r\n (click)=\"showDeleteDialog = true;\"></eo-icon>\r\n <!-- buttons while choosing a template -->\r\n <ng-container *ngIf=\"chooseTemplate\">\r\n <button class=\"btn-tpl-abort\" (click)=\"showTemplateSelector(false)\"\r\n translate>eo.prepare.template.abort</button>\r\n <button class=\"primary btn-tpl-apply\" (click)=\"addTemplate(selectedTemplate)\" [disabled]=\"!selectedTemplate\"\r\n translate>eo.prepare.template.select</button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"preparePhase.name === 'indexdata'\">\r\n <button (click)=\"commit()\" class=\"btn-idx-save\"\r\n [ngClass]=\"{primary: preparedItem.state.parentisroot && preparedItem.contentcount > 1}\"\r\n [disabled]=\"formState?.invalid || committing\" translate>eo.prepare.save</button>\r\n\r\n <button (click)=\"commit(true)\" [disabled]=\"formState?.invalid || committing\" class=\"primary btn-idx-saveopen\"\r\n [hidden]=\"preparedItem?.state.parentisroot && preparedItem?.contentcount > 1\"\r\n translate>eo.prepare.saveopen</button>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"eo-body\" [ngSwitch]=\"preparePhase.name\" *ngIf=\"!committing; else spinner\">\r\n\r\n <!-- PHASE TYPE -->\r\n <div class=\"phase type\" *ngSwitchCase=\"'type'\">\r\n\r\n <!-- with preview -->\r\n <eo-split [gutterSize]=\"16\" [gutterColor]=\"'#fff'\" [visibleTransition]=\"true\"\r\n *ngIf=\"preparePhase.data.previewFile; else nopreview\" [cacheLayout]=\"'prepare.details.phase.type'\">\r\n <eo-split-area [size]=\"30\">\r\n\r\n <div class=\"form-files\">\r\n <div class=\"object-type-select empty\" *ngIf=\"preparedItem.types.length == 0\" translate>\r\n eo.prepare.details.type.empty</div>\r\n <div class=\"object-type-select empty\"\r\n *ngIf=\"!preparedItem.state.typeselectedallowed && preparedItem.state.typeselected\"\r\n [translateParams]=\"{type: preparedItem.selectedtype.label, filename: getFileNames(preparedItem)}\"\r\n translate>eo.prepare.details.type.notallowed</div>\r\n\r\n <div class=\"object-type-select\">\r\n <div class=\"object-type\" *ngFor=\"let type of preparedItem.types; trackBy: trackByIdFn\"\r\n (click)=\"selectObjectType(type)\">\r\n <div class=\"type-icon\">\r\n <eo-icon [iconId]=\"type.icon.id\"></eo-icon>\r\n </div>\r\n <div class=\"content\">\r\n <div class=\"title\">{{type.label}}</div>\r\n <div class=\"description\">{{type.description}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"content-select\">\r\n <h2 translate>eo.prepare.details.contents.title</h2>\r\n <div class=\"content\"\r\n *ngFor=\"let content of preparedItem.contents; trackBy: trackByIndexFn; index as idx;\"\r\n [ngClass]=\"{selected: preparePhase.data.previewIndex == idx}\" (click)=\"setPreviewUri(idx)\">\r\n <span>{{content.path}}</span>\r\n <eo-icon class=\"btn btn-delete-content\" [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\"\r\n (click)=\"showContentDeleteDialog = true; deletedContentIndex = idx;\"></eo-icon>\r\n <div *ngIf=\"content.existscount > 0\" class=\"attention\" title=\"{{'eo.prepare.content.existscount.message'|translate: ({count: content.existscount})}}\">!</div>\r\n </div>\r\n </div>\r\n </div>\r\n </eo-split-area>\r\n <eo-split-area [size]=\"70\">\r\n <div class=\"eo-media-wrap\">\r\n <eo-prepare-content-exists-info [content]=\"preparedItem.contents[preparePhase.data.previewIndex]\">\r\n </eo-prepare-content-exists-info>\r\n <eo-media [previewFile]=\"preparePhase.data.previewFile\"></eo-media>\r\n </div>\r\n </eo-split-area>\r\n </eo-split>\r\n\r\n <!-- without preview -->\r\n <ng-template #nopreview>\r\n <div class=\"form-files\">\r\n <div class=\"object-type-select\">\r\n <div class=\"object-type\" *ngFor=\"let type of preparedItem.types; trackBy: trackByIdFn\"\r\n (click)=\"selectObjectType(type)\">\r\n <div class=\"type-icon\">\r\n <eo-icon [iconId]=\"type.icon.id\"></eo-icon>\r\n </div>\r\n <div class=\"content\">\r\n <div class=\"title\">{{type.label}}</div>\r\n <div class=\"description\">{{type.description}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n <!-- PHASE CONTENT -->\r\n <div class=\"phase content\" *ngSwitchCase=\"'content'\">\r\n\r\n <!-- panel for selecting a template to be used as items content -->\r\n <eo-split [gutterSize]=\"16\" [gutterColor]=\"'#fff'\" [visibleTransition]=\"true\"\r\n *ngIf=\"chooseTemplate; else attach\" [cacheLayout]=\"'prepare.details.phase.content'\">\r\n <eo-split-area [size]=\"40\">\r\n\r\n <!-- list of available templates -->\r\n <eo-list-container #eoList [loading]=\"false\" class=\"templates\">\r\n <div class=\"eo-header\">\r\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_template.svg'\"></eo-icon>\r\n <div class=\"eo-header-info\">\r\n <div class=\"eo-header-title\" translate>eo.prepare.template.list.title</div>\r\n </div>\r\n <div class=\"eo-header-actions\">\r\n\r\n <eo-overlay #oFilter [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\" [iconClass]=\"'primary'\"\r\n class=\"overlay-filter\" [title]=\"'eo.list.filter' | translate\"\r\n (active)=\"oFilter.onActiveChanged($event)\">\r\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\r\n (active)=\"oFilter.onActiveChanged($event)\">\r\n <eo-text-filter [title]=\"'eo.prepare.template.filter.text.title' | translate\"\r\n [matchFields]=\"['title', 'description', 'tags']\"\r\n [placeholder]=\"'eo.prepare.template.filter.text.title'\"></eo-text-filter>\r\n <eo-set-filter [operator]=\"'OR'\" [title]=\"'eo.prepare.template.filter.set.title' | translate\"\r\n *ngIf=\"tagFilterOptions?.length\" [options]=\"tagFilterOptions\"></eo-set-filter>\r\n </eo-custom-filter>\r\n </eo-overlay>\r\n\r\n </div>\r\n </div>\r\n <div class=\"eo-body\">\r\n <eo-grid #eoGrid *ngIf=\"gridOptions?.rowData\" [gridOptions]=\"gridOptions\" [fullWidth]=\"true\"\r\n [showHeader]=\"true\" [showFooter]=\"false\" [selectionLimit]=\"1\"\r\n (eoGridSelectionChanged)=\"selectTemplate($event[0])\">\r\n </eo-grid>\r\n </div>\r\n </eo-list-container>\r\n\r\n </eo-split-area>\r\n <eo-split-area [size]=\"60\">\r\n\r\n <!-- preview of selected template -->\r\n <eo-media [previewFile]=\"selectedTemplateFile\"></eo-media>\r\n\r\n </eo-split-area>\r\n </eo-split>\r\n\r\n <!-- add content general overview (upload, template, none) -->\r\n <ng-template #attach>\r\n\r\n <div class=\"info\" *ngIf=\"!uploadInProgress\" translate>eo.prepare.attachment.info</div>\r\n <input type=\"file\" #file (change)=\"fileChangeListener($event.target.files)\">\r\n\r\n <div class=\"attachments\" *ngIf=\"!uploadInProgress; else uploadspinner\">\r\n\r\n <!-- upload a file -->\r\n <div class=\"attachment att-file\" *ngIf=\"preparePhase.data.file\" (click)=\"upload()\">\r\n <div class=\"img\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_file_upload.svg'\"></eo-icon>\r\n </div>\r\n <h3 translate>eo.prepare.attachment.upload.title</h3>\r\n <p translate>eo.prepare.attachment.upload.desc</p>\r\n </div>\r\n\r\n <!-- select a template -->\r\n <div class=\"attachment att-tmpl\" *ngIf=\"preparePhase.data.templates.length > 0\"\r\n (click)=\"showTemplateSelector(true)\">\r\n <div class=\"img\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_prepare_add.svg'\"></eo-icon>\r\n </div>\r\n <h3 translate>eo.prepare.attachment.template.title</h3>\r\n <p translate>eo.prepare.attachment.template.desc</p>\r\n </div>\r\n\r\n <!-- no file -->\r\n <div class=\"attachment att-none\" *ngIf=\"preparePhase.data.withoutFile\" (click)=\"noFile()\">\r\n <div class=\"img\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_no-file.svg'\"></eo-icon>\r\n </div>\r\n <h3 translate>eo.prepare.attachment.nofile.title</h3>\r\n <p translate>eo.prepare.attachment.nofile.desc</p>\r\n </div>\r\n\r\n </div>\r\n\r\n </ng-template>\r\n\r\n <!-- upload progress indicator -->\r\n <ng-template #uploadspinner>\r\n <div class=\"upload-indicator\">\r\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <!-- PHASE INDEXDATA -->\r\n <div class=\"phase indexdata\" *ngSwitchCase=\"'indexdata'\">\r\n\r\n <!-- form and preview -->\r\n <eo-split [gutterSize]=\"16\" [gutterColor]=\"'#fff'\" [visibleTransition]=\"true\"\r\n *ngIf=\"preparePhase.data.previewFile; else justform\" [cacheLayout]=\"'prepare.details.phase.indexdata'\">\r\n <eo-split-area [size]=\"50\">\r\n\r\n <div class=\"form-files\">\r\n\r\n <!-- indexdata form -->\r\n <ng-container *ngTemplateOutlet=\"justform\"></ng-container>\r\n\r\n <!-- list of contents (in case of bulk upload) that can be previewed -->\r\n <div class=\"content-select\">\r\n\r\n <h2 translate>eo.prepare.details.contents.title</h2>\r\n <div class=\"content\"\r\n *ngFor=\"let content of preparedItem.contents; trackBy: trackByIndexFn; index as idx\"\r\n [ngClass]=\"{selected: preparePhase.data.previewIndex === idx}\" (click)=\"setPreviewUri(idx)\">\r\n {{content.path}} <span *ngIf=\"content.existscount > 0\" class=\"attention\" title=\"{{'eo.prepare.content.existscount.message'|translate: ({count: content.existscount})}}\">!</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </eo-split-area>\r\n <eo-split-area [size]=\"50\">\r\n <div class=\"eo-media-wrap\">\r\n <eo-prepare-content-exists-info [content]=\"preparedItem.contents[preparePhase.data.previewIndex]\">\r\n </eo-prepare-content-exists-info>\r\n <eo-media [previewFile]=\"preparePhase.data.previewFile\"></eo-media>\r\n </div>\r\n </eo-split-area>\r\n </eo-split>\r\n\r\n <!-- just the form -->\r\n <ng-template #justform>\r\n <div class=\"form-container situation-create\" *ngIf=\"formOptions\">\r\n <eo-object-form #form [formOptions]=\"formOptions\" (statusChanged)=\"onFormStatusChanged($event)\">\r\n </eo-object-form>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </section>\r\n\r\n <ng-template #spinner>\r\n <div class=\"eo-body\">\r\n <eo-loading-spinner size=\"medium\"></eo-loading-spinner>\r\n </div>\r\n </ng-template>\r\n\r\n</div>\r\n\r\n<ng-template #mainSpinner>\r\n <div class=\"prepareDetails__main-spinner\">\r\n <eo-loading-spinner size=\"medium\"></eo-loading-spinner>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #noItem>\r\n <eo-error-message [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\r\n <ng-content select=\".error\"></ng-content>\r\n </eo-error-message>\r\n</ng-template>\r\n\r\n<eo-dialog [title]=\"'eo.prepare.details.delete.dialog.title' | translate\"\r\n [(visible)]=\"showDeleteDialog\" [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'prepare-delete__dialog'\">\r\n\r\n<div>{{'eo.prepare.details.delete.dialog.message' | translate}}</div>\r\n\r\n <div class=\"action-buttons prepare-delete--action-buttons flex-row\">\r\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\r\n translate>eo.prepare.details.delete.dialog.cancel</button>\r\n <button type=\"button\" #confirmDelete (click)=\"removeItem(preparedItem)\" class=\"button primary\"\r\n translate>eo.prepare.details.delete.dialog.ok</button>\r\n </div>\r\n</eo-dialog>\r\n\r\n<eo-dialog [title]=\"'eo.prepare.details.delete.content.dialog.title' | translate\"\r\n [(visible)]=\"showContentDeleteDialog\" [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'prepare-delete__dialog'\">\r\n\r\n<div>{{'eo.prepare.details.delete.content.dialog.message' | translate: ({contentPath: preparedItem?.contents ? preparedItem?.contents[deletedContentIndex]?.path : ''})}}</div>\r\n\r\n <div class=\"action-buttons prepare-delete--action-buttons flex-row\">\r\n <button type=\"button\" class=\"button cancel\" (click)=\"showContentDeleteDialog = false\"\r\n translate>eo.prepare.details.delete.dialog.cancel</button>\r\n <button type=\"button\" #confirmContentDelete (click)=\"removeItemContent(preparedItem, deletedContentIndex)\" class=\"button primary\"\r\n translate>eo.prepare.details.delete.dialog.ok</button>\r\n </div>\r\n</eo-dialog>\r\n",
|
|
20367
|
+
template: "<div class=\"prepareDetails__wrapper\" *ngIf=\"!loading; else mainSpinner\">\r\n <section class=\"prepareDetails\" *ngIf=\"preparedItem && preparePhase; else noItem\"\r\n [ngClass]=\"{multifile: preparedItem.contentcount > 1, committing: committing}\">\r\n <div class=\"eo-head\">\r\n\r\n <div class=\"header-info\">\r\n <div class=\"header-title\">{{header.title}}</div>\r\n <div class=\"header-sub-title h-location\" *ngIf=\"!header.location.link; else linked\">{{header.location.label}}\r\n </div>\r\n <div class=\"header-sub-title h-subtitle\">{{header.subtitle}}</div>\r\n\r\n <ng-template #linked>\r\n <div class=\"header-sub-title h-subtitle-detailed\">\r\n <span translate>eo.prepare.location.title.prefix</span>\r\n <a [routerLink]=\"header.location.link\">{{header.location.label}}</a>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <eo-icon class=\"btn btn-download\"\r\n *ngIf=\"preparePhase.name === 'content' ? selectedTemplateFile : preparePhase.data.previewFile\"\r\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"\r\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\" (click)=\"download()\"></eo-icon>\r\n <eo-icon class=\"btn btn-delete\" [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\"\r\n (click)=\"showDeleteDialog = true;\"></eo-icon>\r\n <!-- buttons while choosing a template -->\r\n <ng-container *ngIf=\"chooseTemplate\">\r\n <button class=\"btn-tpl-abort\" (click)=\"showTemplateSelector(false)\"\r\n translate>eo.prepare.template.abort</button>\r\n <button class=\"primary btn-tpl-apply\" (click)=\"addTemplate(selectedTemplate)\" [disabled]=\"!selectedTemplate\"\r\n translate>eo.prepare.template.select</button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"preparePhase.name === 'indexdata'\">\r\n <button (click)=\"commit()\" class=\"btn-idx-save\"\r\n [ngClass]=\"{primary: preparedItem.state.parentisroot && preparedItem.contentcount > 1}\"\r\n [disabled]=\"formState?.invalid || committing\" translate>eo.prepare.save</button>\r\n\r\n <button (click)=\"commit(true)\" [disabled]=\"formState?.invalid || committing\" class=\"primary btn-idx-saveopen\"\r\n [hidden]=\"preparedItem?.state.parentisroot && preparedItem?.contentcount > 1\"\r\n translate>eo.prepare.saveopen</button>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"eo-body\" [ngSwitch]=\"preparePhase.name\" *ngIf=\"!committing; else spinner\">\r\n\r\n <!-- PHASE TYPE -->\r\n <div class=\"phase type\" *ngSwitchCase=\"'type'\">\r\n\r\n <!-- with preview -->\r\n <eo-split [gutterSize]=\"16\" [gutterColor]=\"'#fff'\" [visibleTransition]=\"true\"\r\n *ngIf=\"preparePhase.data.previewFile; else nopreview\" [cacheLayout]=\"'prepare.details.phase.type'\">\r\n <eo-split-area [size]=\"30\">\r\n\r\n <div class=\"form-files\">\r\n <div class=\"object-type-select empty\" *ngIf=\"preparedItem.types.length == 0\" translate>\r\n eo.prepare.details.type.empty</div>\r\n <div class=\"object-type-select empty\"\r\n *ngIf=\"!preparedItem.state.typeselectedallowed && preparedItem.state.typeselected\"\r\n [translateParams]=\"{type: preparedItem.selectedtype.label, filename: getFileNames(preparedItem)}\"\r\n translate>eo.prepare.details.type.notallowed</div>\r\n\r\n <div class=\"object-type-select\">\r\n <div class=\"object-type\" *ngFor=\"let type of preparedItem.types; trackBy: trackByIdFn\"\r\n (click)=\"selectObjectType(type)\">\r\n <div class=\"type-icon\">\r\n <eo-icon [iconId]=\"type.icon.id\"></eo-icon>\r\n </div>\r\n <div class=\"content\">\r\n <div class=\"title\">{{type.label}}</div>\r\n <div class=\"description\">{{type.description}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"content-select\">\r\n <h2 translate>eo.prepare.details.contents.title</h2>\r\n <div class=\"content\"\r\n *ngFor=\"let content of preparedItem.contents; trackBy: trackByIndexFn; index as idx;\"\r\n [ngClass]=\"{selected: preparePhase.data.previewIndex == idx}\" (click)=\"setPreviewUri(idx)\">\r\n <span>{{content.path}}</span>\r\n <eo-icon class=\"btn btn-delete-content\" [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\"\r\n (click)=\"showContentDeleteDialog = true; deletedContentIndex = idx;\"></eo-icon>\r\n <div *ngIf=\"content.existscount > 0\" class=\"attention\" title=\"{{'eo.prepare.content.existscount.message'|translate: ({count: content.existscount})}}\">!</div>\r\n </div>\r\n </div>\r\n </div>\r\n </eo-split-area>\r\n <eo-split-area [size]=\"70\">\r\n <div class=\"eo-media-wrap\">\r\n <eo-prepare-content-exists-info [content]=\"preparedItem.contents[preparePhase.data.previewIndex]\">\r\n </eo-prepare-content-exists-info>\r\n <eo-media [previewFile]=\"preparePhase.data.previewFile\"></eo-media>\r\n </div>\r\n </eo-split-area>\r\n </eo-split>\r\n\r\n <!-- without preview -->\r\n <ng-template #nopreview>\r\n <div class=\"form-files\">\r\n <div class=\"object-type-select\">\r\n <div class=\"object-type\" *ngFor=\"let type of preparedItem.types; trackBy: trackByIdFn\"\r\n (click)=\"selectObjectType(type)\">\r\n <div class=\"type-icon\">\r\n <eo-icon [iconId]=\"type.icon.id\"></eo-icon>\r\n </div>\r\n <div class=\"content\">\r\n <div class=\"title\">{{type.label}}</div>\r\n <div class=\"description\">{{type.description}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n <!-- PHASE CONTENT -->\r\n <div class=\"phase content\" *ngSwitchCase=\"'content'\">\r\n\r\n <!-- panel for selecting a template to be used as items content -->\r\n <eo-split [gutterSize]=\"16\" [gutterColor]=\"'#fff'\" [visibleTransition]=\"true\"\r\n *ngIf=\"chooseTemplate; else attach\" [cacheLayout]=\"'prepare.details.phase.content'\">\r\n <eo-split-area [size]=\"40\">\r\n\r\n <!-- list of available templates -->\r\n <eo-list-container #eoList [loading]=\"false\" class=\"templates\">\r\n <div class=\"eo-header\">\r\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_template.svg'\"></eo-icon>\r\n <div class=\"eo-header-info\">\r\n <div class=\"eo-header-title\" translate>eo.prepare.template.list.title</div>\r\n </div>\r\n <div class=\"eo-header-actions\">\r\n\r\n <eo-overlay #oFilter [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\" [iconClass]=\"'primary'\"\r\n class=\"overlay-filter\" [title]=\"'eo.list.filter' | translate\"\r\n (active)=\"oFilter.onActiveChanged($event)\">\r\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\r\n (active)=\"oFilter.onActiveChanged($event)\">\r\n <eo-text-filter [title]=\"'eo.prepare.template.filter.text.title' | translate\"\r\n [matchFields]=\"['title', 'description', 'tags']\"\r\n [placeholder]=\"'eo.prepare.template.filter.text.title'\"></eo-text-filter>\r\n <eo-set-filter [operator]=\"'OR'\" [title]=\"'eo.prepare.template.filter.set.title' | translate\"\r\n *ngIf=\"tagFilterOptions?.length\" [options]=\"tagFilterOptions\"></eo-set-filter>\r\n </eo-custom-filter>\r\n </eo-overlay>\r\n\r\n </div>\r\n </div>\r\n <div class=\"eo-body\">\r\n <eo-grid #eoGrid *ngIf=\"gridOptions?.rowData\" [gridOptions]=\"gridOptions\" [fullWidth]=\"true\"\r\n [showHeader]=\"true\" [showFooter]=\"false\" [selectionLimit]=\"1\"\r\n (eoGridSelectionChanged)=\"selectTemplate($event[0])\">\r\n </eo-grid>\r\n </div>\r\n </eo-list-container>\r\n\r\n </eo-split-area>\r\n <eo-split-area [size]=\"60\">\r\n\r\n <!-- preview of selected template -->\r\n <eo-media [previewFile]=\"selectedTemplateFile\"></eo-media>\r\n\r\n </eo-split-area>\r\n </eo-split>\r\n\r\n <!-- add content general overview (upload, template, none) -->\r\n <ng-template #attach>\r\n\r\n <div class=\"info\" *ngIf=\"!uploadInProgress\" translate>eo.prepare.attachment.info</div>\r\n <input type=\"file\" #file (change)=\"fileChangeListener($event.target.files)\">\r\n\r\n <div class=\"attachments\" *ngIf=\"!uploadInProgress; else uploadspinner\">\r\n\r\n <!-- upload a file -->\r\n <div class=\"attachment att-file\" *ngIf=\"preparePhase.data.file\" (click)=\"upload()\">\r\n <div class=\"img\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_file_upload.svg'\"></eo-icon>\r\n </div>\r\n <h3 translate>eo.prepare.attachment.upload.title</h3>\r\n <p translate>eo.prepare.attachment.upload.desc</p>\r\n </div>\r\n\r\n <!-- select a template -->\r\n <div class=\"attachment att-tmpl\" *ngIf=\"preparePhase.data.templates.length > 0\"\r\n (click)=\"showTemplateSelector(true)\">\r\n <div class=\"img\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_prepare_add.svg'\"></eo-icon>\r\n </div>\r\n <h3 translate>eo.prepare.attachment.template.title</h3>\r\n <p translate>eo.prepare.attachment.template.desc</p>\r\n </div>\r\n\r\n <!-- no file -->\r\n <div class=\"attachment att-none\" *ngIf=\"preparePhase.data.withoutFile\" (click)=\"noFile()\">\r\n <div class=\"img\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_no-file.svg'\"></eo-icon>\r\n </div>\r\n <h3 translate>eo.prepare.attachment.nofile.title</h3>\r\n <p translate>eo.prepare.attachment.nofile.desc</p>\r\n </div>\r\n\r\n </div>\r\n\r\n </ng-template>\r\n\r\n <!-- upload progress indicator -->\r\n <ng-template #uploadspinner>\r\n <div class=\"upload-indicator\">\r\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <!-- PHASE INDEXDATA -->\r\n <div class=\"phase indexdata\" *ngSwitchCase=\"'indexdata'\">\r\n\r\n <!-- form and preview -->\r\n <eo-split [gutterSize]=\"16\" [gutterColor]=\"'#fff'\" [visibleTransition]=\"true\"\r\n *ngIf=\"preparePhase.data.previewFile; else justform\" [cacheLayout]=\"'prepare.details.phase.indexdata'\">\r\n <eo-split-area [size]=\"50\">\r\n\r\n <div class=\"form-files\">\r\n\r\n <!-- indexdata form -->\r\n <ng-container *ngTemplateOutlet=\"justform\"></ng-container>\r\n\r\n <!-- list of contents (in case of bulk upload) that can be previewed -->\r\n <div class=\"content-select\">\r\n\r\n <h2 translate>eo.prepare.details.contents.title</h2>\r\n <div class=\"content\"\r\n *ngFor=\"let content of preparedItem.contents; trackBy: trackByIndexFn; index as idx\"\r\n [ngClass]=\"{selected: preparePhase.data.previewIndex === idx}\" (click)=\"setPreviewUri(idx)\">\r\n {{content.path}} <span *ngIf=\"content.existscount > 0\" class=\"attention\" title=\"{{'eo.prepare.content.existscount.message'|translate: ({count: content.existscount})}}\">!</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </eo-split-area>\r\n <eo-split-area [size]=\"50\">\r\n <div class=\"eo-media-wrap\">\r\n <eo-prepare-content-exists-info [content]=\"preparedItem.contents[preparePhase.data.previewIndex]\">\r\n </eo-prepare-content-exists-info>\r\n <eo-media [previewFile]=\"preparePhase.data.previewFile\"></eo-media>\r\n </div>\r\n </eo-split-area>\r\n </eo-split>\r\n\r\n <!-- just the form -->\r\n <ng-template #justform>\r\n <div class=\"form-container situation-create\" *ngIf=\"formOptions\">\r\n <eo-object-form #form [formOptions]=\"formOptions\" (statusChanged)=\"onFormStatusChanged($event)\">\r\n </eo-object-form>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </section>\r\n\r\n <ng-template #spinner>\r\n <div class=\"eo-body\">\r\n <eo-loading-spinner size=\"medium\"></eo-loading-spinner>\r\n </div>\r\n </ng-template>\r\n\r\n</div>\r\n\r\n<ng-template #mainSpinner>\r\n <div class=\"prepareDetails__main-spinner\">\r\n <eo-loading-spinner size=\"medium\"></eo-loading-spinner>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #noItem>\r\n <eo-error-message [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\r\n <ng-content select=\".error\"></ng-content>\r\n </eo-error-message>\r\n</ng-template>\r\n\r\n<eo-dialog [title]=\"'eo.prepare.details.delete.dialog.title' | translate\"\r\n [(visible)]=\"showDeleteDialog\" [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'prepare-delete__dialog'\">\r\n\r\n<div>{{'eo.prepare.details.delete.dialog.message' | translate}}</div>\r\n\r\n <div class=\"action-buttons prepare-delete--action-buttons flex-row\">\r\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\r\n translate>eo.prepare.details.delete.dialog.cancel</button>\r\n <button type=\"button\" #confirmDelete (click)=\"removeItem(preparedItem)\" class=\"button primary\"\r\n translate>eo.prepare.details.delete.dialog.ok</button>\r\n </div>\r\n</eo-dialog>\r\n\r\n<eo-dialog [title]=\"'eo.prepare.details.delete.content.dialog.title' | translate\"\r\n [(visible)]=\"showContentDeleteDialog\" [minWidth]=\"400\" [styleClass]=\"'prepare-delete__dialog'\">\r\n\r\n<div>{{'eo.prepare.details.delete.content.dialog.message' | translate: ({contentPath: preparedItem?.contents ? preparedItem?.contents[deletedContentIndex]?.path : ''})}}</div>\r\n\r\n <div class=\"action-buttons prepare-delete--action-buttons flex-row\">\r\n <button type=\"button\" class=\"button cancel\" (click)=\"showContentDeleteDialog = false\"\r\n translate>eo.prepare.details.delete.dialog.cancel</button>\r\n <button type=\"button\" #confirmContentDelete (click)=\"removeItemContent(preparedItem, deletedContentIndex)\" class=\"button primary\"\r\n translate>eo.prepare.details.delete.dialog.ok</button>\r\n </div>\r\n</eo-dialog>\r\n",
|
|
20257
20368
|
styles: [":host{height:100%}:host .prepareDetails{background:var(--panel-background-grey);display:flex;flex:1;flex-direction:column;height:100%;min-height:0;min-width:0;overflow-y:auto}:host .prepareDetails .eo-media-wrap{display:flex;flex-flow:column;height:100%}:host .prepareDetails .eo-media-wrap eo-media{flex:1;position:relative}:host .prepareDetails__wrapper{height:100%}:host .prepareDetails__main-spinner{align-items:center;display:flex;height:100%;justify-content:center}:host .prepareDetails .content-select{display:none}:host .prepareDetails .eo-head{background-color:var(--color-white);display:flex;flex-flow:row nowrap}:host .prepareDetails .eo-head .header-info{color:var(--text-color-caption);flex:1 1 auto;font-size:var(--font-caption)}:host .prepareDetails .eo-head .header-info .header-title{color:var(--text-color-body);font-size:var(--font-title);padding-bottom:calc(var(--app-pane-padding)/2)}:host .prepareDetails .eo-head .header-info a{color:var(--color-accent);cursor:pointer;text-decoration:none}:host .prepareDetails .eo-head .actions{align-items:center;align-self:flex-start;display:flex}[dir=ltr] :host .prepareDetails .eo-head .actions button{margin-left:calc(var(--app-pane-padding)/2)}[dir=rtl] :host .prepareDetails .eo-head .actions button{margin-right:calc(var(--app-pane-padding)/2)}:host .prepareDetails .eo-head .actions eo-icon{cursor:pointer;padding:calc(var(--app-pane-padding)/4)}:host .prepareDetails .eo-body{overflow-y:hidden}:host .prepareDetails .eo-body eo-split-area{border-top:1px solid rgba(var(--color-black-rgb),.08);box-sizing:border-box}:host .prepareDetails .phase{height:100%;overflow-y:auto}:host .prepareDetails .phase.content{align-items:center;display:flex;flex-flow:column;justify-content:center}:host .prepareDetails .phase.content ::ng-deep eo-list-container.templates{background:linear-gradient(90deg,#fff 70%,var(--panel-background-lightgrey))}:host .prepareDetails .phase.content ::ng-deep eo-list-container.templates eo-grid ag-grid-angular.ag-theme-balham .chip:last-of-type:after{background:transparent!important}:host .prepareDetails .phase.content input[type=file]{display:none}:host .prepareDetails .phase.content .info{color:var(--text-color-caption);flex:0 0 auto;margin-bottom:var(--app-pane-padding)}:host .prepareDetails .phase.content .attachments{display:flex;flex:0 0 auto;flex-flow:row}:host .prepareDetails .phase.content .attachments .attachment:hover .img eo-icon{opacity:1}:host .prepareDetails .phase.content .attachments .attachment{background:var(--color-white);border-bottom:1px solid rgba(var(--color-black-rgb),.1);cursor:pointer;margin:calc(var(--app-pane-padding)/2);max-width:200px}:host .prepareDetails .phase.content .attachments .attachment .img{align-items:center;background:var(--color-accent);display:flex;flex-flow:column;justify-content:center;padding:calc(var(--app-pane-padding)*2) 0}:host .prepareDetails .phase.content .attachments .attachment .img eo-icon{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;color:var(--color-white);height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;width:48px}:host .prepareDetails .phase.content .attachments .attachment h3{font-size:var(--font-subhead);font-weight:var(--font-weight-normal);margin:0;padding:calc(var(--app-pane-padding)/2) var(--app-pane-padding)}:host .prepareDetails .phase.content .attachments .attachment p{color:var(--text-color-caption);margin:0;padding:0 var(--app-pane-padding) var(--app-pane-padding) var(--app-pane-padding)}:host .prepareDetails .phase div[eosplitgutter]{background-color:var(--color-light-blue)!important}:host .prepareDetails .phase.type .form-files .object-type-select{flex:1 1 auto;overflow-y:auto;padding:var(--app-pane-padding)}:host .prepareDetails .phase.type .form-files .object-type-select .object-type{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;align-items:center;background:var(--color-white);cursor:pointer;display:flex;flex-flow:row nowrap;margin-bottom:1px;padding:calc(var(--app-pane-padding)/2);transition:all var(--app-default-transition-duration) ease-in-out}:host .prepareDetails .phase.type .form-files .object-type-select .object-type .type-icon{color:var(--text-color-hint)}:host .prepareDetails .phase.type .form-files .object-type-select .object-type .content{overflow:hidden;padding-left:calc(var(--app-pane-padding)/2)}:host .prepareDetails .phase.type .form-files .object-type-select .object-type .content .title{font-weight:var(--font-weight-bold);overflow:hidden;text-overflow:ellipsis}:host .prepareDetails .phase.type .form-files .object-type-select .object-type .content .description{color:var(--text-color-caption);overflow:hidden;text-overflow:ellipsis}:host .prepareDetails .phase .form-container eo-object-form{display:block;margin:var(--app-pane-padding)}:host .prepareDetails.committing .eo-head .actions .btn,:host .prepareDetails.committing .eo-head .actions button{display:none}:host .prepareDetails.committing .eo-body{align-items:center;display:flex;flex-flow:column;justify-content:center}:host .prepareDetails.multifile .form-files{bottom:0;display:flex;flex-flow:column;left:0;position:absolute;right:0;top:0}:host .prepareDetails.multifile .form-files .form-container{flex:1 1 auto;overflow-y:auto}:host .prepareDetails.multifile .content-select{border-top:1px solid var(--main-background);box-sizing:border-box;display:block;flex:0 0 30%;overflow-y:auto;padding:calc(var(--app-pane-padding)/2)}:host .prepareDetails.multifile .content-select h2{color:var(--text-color-caption);font-size:var(--font-subhead);font-weight:var(--font-weight-normal);margin:0;padding:calc(var(--app-pane-padding)/2);padding-bottom:var(--app-pane-padding)}:host .prepareDetails.multifile .content-select .content{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;background:var(--color-white);color:var(--text-color-caption);cursor:pointer;display:flex;gap:8px;justify-content:space-between;margin-bottom:calc(var(--app-pane-padding)/2);overflow:hidden;padding:calc(var(--app-pane-padding)/2);text-overflow:ellipsis;transition:all var(--app-default-transition-duration) ease-in-out}:host .prepareDetails.multifile .content-select .content>span{flex:1;overflow:hidden;text-overflow:ellipsis}:host .prepareDetails.multifile .content-select .content .btn-delete-content{color:var(--text-color-caption);flex:0 0 16px;height:16px;width:16px}:host .prepareDetails.multifile .content-select .content .btn-delete-content:hover{background-color:var(--text-color-hint)}:host .prepareDetails.multifile .content-select .content div.attention{border:1px solid var(--color-warning);border-radius:2px;color:var(--color-warning);display:block;flex:0 0 auto;line-height:1em;padding:0 4px;right:4px;top:8px}:host .prepareDetails.multifile .content-select .content.selected{color:var(--color-accent)}:host .prepareDetails.multifile .content-select .content:hover{background:var(--panel-background-lightgrey)}:host ::ng-deep eo-grid,:host ::ng-deep eo-grid ag-grid-angular.ag-theme-balham,:host ::ng-deep eo-grid ag-grid-angular.ag-theme-balham .ag-row{background:transparent}:host ::ng-deep eo-grid ag-grid-angular.ag-theme-balham .ag-row:hover{background:var(--panel-background-lightgrey)}:host ::ng-deep eo-grid ag-grid-angular.ag-theme-balham .ag-row .ag-cell{border-bottom-color:var(--panel-header-border-bottom-color)}:host ::ng-deep eo-list-container .eo-head{height:48px}:host ::ng-deep eo-list-container .eo-grid-footer,:host ::ng-deep eo-list-container .eo-grid-header,:host ::ng-deep eo-list-container .eo-head{background:transparent;border-color:var(--panel-header-border-bottom-color)}:host ::ng-deep .eo-head .eo-header .eo-header-actions eo-icon{color:var(--text-color-hint)!important}:host ::ng-deep .eo-head .eo-header .eo-header-actions eo-icon:hover{color:var(--text-color-caption)!important}:host ::ng-deep .eo-head .eo-header .eo-header-actions eo-icon.active{color:var(--color-accent)!important}:host ::ng-deep .eo-header-icon,:host ::ng-deep .eo-header-title,:host ::ng-deep .template{color:var(--text-color-caption)}:host ::ng-deep .template{cursor:pointer;margin-bottom:1px}:host ::ng-deep .template .title{font-size:var(--font-body);font-weight:var(--font-weight-bold)}:host ::ng-deep .template .description{color:var(--text-color-caption)}:host ::ng-deep .template .chip{display:initial!important}::ng-deep .prepare-delete__dialog{min-height:unset!important;padding:8px}::ng-deep .prepare-delete__dialog--header{background:#fff!important;color:rgba(var(--color-black-rgb),.54)!important;font-size:1.17em!important;font-weight:400!important;margin:0;padding:0 0 1em!important}"]
|
|
20258
20369
|
},] }
|
|
20259
20370
|
];
|
|
@@ -22219,10 +22330,10 @@ class AboutStateComponent {
|
|
|
22219
22330
|
this.http = http;
|
|
22220
22331
|
this.userService = userService;
|
|
22221
22332
|
this.config = config;
|
|
22222
|
-
this.__libraries__ = [{ "name": "@ag-grid-community/angular", "version": "22.1.2", "license": "MIT" }, { "name": "@ag-grid-community/client-side-row-model", "version": "22.1.1", "license": "MIT" }, { "name": "@ag-grid-community/core", "version": "22.1.1", "license": "MIT" }, { "name": "@ag-grid-community/csv-export", "version": "22.1.1", "license": "MIT" }, { "name": "@angular/animations", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/cdk", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/common", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/compiler", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/core", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/forms", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/router", "version": "11.2.0", "license": "MIT" }, { "name": "@eo-sdk/core", "version": "8.
|
|
22333
|
+
this.__libraries__ = [{ "name": "@ag-grid-community/angular", "version": "22.1.2", "license": "MIT" }, { "name": "@ag-grid-community/client-side-row-model", "version": "22.1.1", "license": "MIT" }, { "name": "@ag-grid-community/core", "version": "22.1.1", "license": "MIT" }, { "name": "@ag-grid-community/csv-export", "version": "22.1.1", "license": "MIT" }, { "name": "@angular/animations", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/cdk", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/common", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/compiler", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/core", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/forms", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "11.2.0", "license": "MIT" }, { "name": "@angular/router", "version": "11.2.0", "license": "MIT" }, { "name": "@eo-sdk/core", "version": "8.15.0-rc.1", "license": "MIT" }, { "name": "@ngx-pwa/local-storage", "version": "11.1.0", "license": "MIT" }, { "name": "@ngx-translate/core", "version": "13.0.0", "license": "MIT" }, { "name": "@types/lodash", "version": "4.14.88", "license": "MIT" }, { "name": "core-js", "version": "2.5.7", "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": "keyboardevent-key-polyfill", "version": "1.1.0", "license": "CC0-1.0" }, { "name": "keycode-js", "version": "0.0.4", "license": "MIT" }, { "name": "mobile-drag-drop", "version": "2.2.0", "license": "MIT" }, { "name": "moment", "version": "2.22.2", "license": "MIT" }, { "name": "ngx-toastr", "version": "13.2.0", "license": "MIT" }, { "name": "primeicons", "version": "1.0.0-beta.6", "license": "MIT" }, { "name": "primeng", "version": "7.0.1", "license": "MIT" }, { "name": "reflect-metadata", "version": "0.1.10", "license": "Apache-2.0" }, { "name": "rxjs", "version": "6.6.3", "license": "Apache-2.0" }, { "name": "tslib", "version": "2.1.0", "license": "0BSD" }, { "name": "zone.js", "version": "0.10.3", "license": "MIT" }];
|
|
22223
22334
|
this.ctrl = {
|
|
22224
22335
|
productName: 'yuuvis® RAD client',
|
|
22225
|
-
clientVersion: '8.
|
|
22336
|
+
clientVersion: '8.15.0-rc.1'
|
|
22226
22337
|
};
|
|
22227
22338
|
this.licenses = {
|
|
22228
22339
|
'MIT': {
|
|
@@ -22264,6 +22375,7 @@ class AboutStateComponent {
|
|
|
22264
22375
|
this.getUserLang();
|
|
22265
22376
|
this.getDocumentation();
|
|
22266
22377
|
this.backgroundImage = `url(${this.config.getDashboardBackgroundImage()})`;
|
|
22378
|
+
this.headerLogo = this.config.getRaw("about.headerLogo");
|
|
22267
22379
|
}
|
|
22268
22380
|
getDocumentation() {
|
|
22269
22381
|
const docu = this.config.getRaw('about.docu');
|
|
@@ -22282,8 +22394,8 @@ class AboutStateComponent {
|
|
|
22282
22394
|
AboutStateComponent.decorators = [
|
|
22283
22395
|
{ type: Component, args: [{
|
|
22284
22396
|
selector: 'eo-about-state',
|
|
22285
|
-
template: "<div class=\"eo-about-state\">\r\n\r\n <div class=\"about\">\r\n <div class=\"header\" [style.background-image]=\"backgroundImage\">\r\n <
|
|
22286
|
-
styles: [":host{--about-header-height:300px;bottom:0;display:flex;flex-flow:row;justify-content:center;left:0;overflow-y:auto;position:absolute;right:0;top:0}.eo-about-state{box-sizing:border-box;display:flex;flex-flow:column;width:800px}@media (max-width:832px){.eo-about-state{margin:0;min-width:inherit;width:100%}}.eo-about-state .about{background:var(--color-white);box-shadow:0 2px 5px 0 rgba(0,0,0,.2);margin:var(--app-pane-padding)}.eo-about-state .about .header{background-size:cover;height:var(--about-header-height);position:relative}.eo-about-state .about .header:after{background-color:rgba(var(--color-accent-rgb),.8);bottom:0;content:\"\";left:0;position:absolute;right:0;top:0}.eo-about-state .about .header
|
|
22397
|
+
template: "<div class=\"eo-about-state\">\r\n\r\n <div class=\"about\">\r\n <div class=\"header\" [style.background-image]=\"backgroundImage\">\r\n <img [src]=\"headerLogo\"/>\r\n </div>\r\n\r\n <div class=\"body\">\r\n <div class=\"claim\" translate>eo.help.about.claim</div>\r\n\r\n <div class=\"wrap\">\r\n <table>\r\n <tbody>\r\n <tr>\r\n <th translate>eo.help.about.product.label</th>\r\n <td>{{ctrl.productName}}</td>\r\n </tr>\r\n <tr>\r\n <th translate>eo.help.about.client.version.label</th>\r\n <td>{{ctrl.clientVersion}}</td>\r\n </tr>\r\n <tr>\r\n <th translate>eo.help.about.producer.label</th>\r\n <td translate>eo.help.about.producer.text</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <ul class=\"links\">\r\n <li>\r\n <a href=\"{{docu.link}}\" target=\"_blank\">{{docu.label | translate}}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n\r\n <h2 translate>eo.help.license.title</h2>\r\n <p translate>eo.help.license.intro</p>\r\n <div class=\"showLic\" (click)=\"licenseShow = !licenseShow\">\r\n <span class=\"toggle\"><span translate>eo.help.license.title</span><span class=\"toggle-indicator\">{{licenseShow ? '-' : '+'}}</span></span></div>\r\n <div class=\"licenses\" *ngIf=\"licenseShow\">\r\n <div class=\"lib\" *ngFor=\"let lib of __libraries__; trackBy: trackByFn\">\r\n <div class=\"name\">{{lib.name}}</div>\r\n <div class=\"lic\" *ngIf=\"licenses[lib.license]\">\r\n <a href=\"{{licenses[lib.license].url}}\" target=\"_blank\" *ngIf=\"licenses[lib.license].url\">{{licenses[lib.license].label}}</a>\r\n <span *ngIf=\"!licenses[lib.license].url\">{{licenses[lib.license].label}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n",
|
|
22398
|
+
styles: [":host{--about-header-height:300px;bottom:0;display:flex;flex-flow:row;justify-content:center;left:0;overflow-y:auto;position:absolute;right:0;top:0}.eo-about-state{box-sizing:border-box;display:flex;flex-flow:column;width:800px}@media (max-width:832px){.eo-about-state{margin:0;min-width:inherit;width:100%}}.eo-about-state .about{background:var(--color-white);box-shadow:0 2px 5px 0 rgba(0,0,0,.2);margin:var(--app-pane-padding)}.eo-about-state .about .header{background-size:cover;height:var(--about-header-height);position:relative}.eo-about-state .about .header:after{background-color:rgba(var(--color-accent-rgb),.8);bottom:0;content:\"\";left:0;position:absolute;right:0;top:0}.eo-about-state .about .header img{bottom:18%;position:absolute;right:8%;width:40%;z-index:20}.eo-about-state .about .body{padding:var(--app-pane-padding)}.eo-about-state .about .body .claim{padding:var(--app-pane-padding) 0}.eo-about-state .about .body h2{color:var(--text-color-caption);font-size:var(--font-title);font-weight:var(--font-weight-light);margin:1.5em 0 0}.eo-about-state .about .body .wrap{display:flex;flex-flow:row wrap}.eo-about-state .about .body ul.links{color:var(--color-accent);list-style-type:none}.eo-about-state .about .body ul.links li{padding:2px 0}.eo-about-state .about .body ul.links a{color:var(--color-accent);text-decoration:none}.eo-about-state .about .body ul.links a:hover{text-decoration:underline}.eo-about-state .about .body table{background-color:rgba(var(--color-black-rgb),.06);border-radius:2px;margin:var(--app-pane-padding);padding:calc(var(--app-pane-padding)/4) 0}.eo-about-state .about .body table th{align-items:flex-start;color:var(--text-color-caption);display:flex;flex-flow:column;font-size:var(--font-hint);justify-content:center}.eo-about-state .about .body table td,.eo-about-state .about .body table th{padding:calc(var(--app-pane-padding)/8) calc(var(--app-pane-padding)/2)}.eo-about-state .about .body .showLic span.toggle{border:1px solid var(--color-accent);border-radius:4px;color:var(--color-accent);cursor:pointer;display:inline-block;padding:0 4px 2px}.eo-about-state .about .body .showLic .toggle-indicator{padding:0 4px}.eo-about-state .about .body .licenses{padding-top:var(--app-pane-padding)}.eo-about-state .about .body .licenses .lib{border-top:1px solid var(--list-item-border-color);display:flex;flex-flow:row nowrap;padding:calc(var(--app-pane-padding)/4)}.eo-about-state .about .body .licenses .lib .name{flex:1 1 auto}.eo-about-state .about .body .licenses .lib .lic{color:var(--text-color-caption);flex:0 0 auto;font-size:var(--font-hint)}.eo-about-state .about .body .licenses .lib .lic a{background-color:rgba(var(--color-black-rgb),.06);border:1px solid var(--color-accent);border-radius:2px;color:var(--color-accent);display:inline-block;line-height:1em;padding:2px 4px;text-decoration:none}"]
|
|
22287
22399
|
},] }
|
|
22288
22400
|
];
|
|
22289
22401
|
AboutStateComponent.ctorParameters = () => [
|
|
@@ -24064,5 +24176,5 @@ EoClientModule.ctorParameters = () => [
|
|
|
24064
24176
|
* Generated bundle index. Do not edit.
|
|
24065
24177
|
*/
|
|
24066
24178
|
|
|
24067
|
-
export { ACTIONS, AboutStateComponent, AbstractFilterComponent, AccordionModule, ActionMenuComponent, ActionModule, ActionService, ActionTarget, AgentService, AppAddComponent, AppAddDialogComponent, AppBarComponent, AppLayoutComponent, AppSearchComponent, AppSearchService, AreaState, AuthGuard, CUSTOM_ACTIONS, CapabilitiesGuard, CellRenderer, ChangePasswordFormComponent, CheckboxComponent, ClipboardComponent, CodesystemComponent, CodesystemFilterComponent, ColumnConfiguratorComponent, ContentPreviewService, ContextSearchComponent, ContextType, CtaComponent, CtaModule, CustomFilterComponent, CustomSortComponent, DashboardComponent, DatepickerComponent, DatetimeComponent, DatetimeFilterComponent, DatetimeRangeComponent, DmsObjectTarget, DynamicListComponent, DynamicPropertySwitchComponent, ENTRY_COMPONENTS, ENTRY_LINKS, EmptyComponent, EmptyStateService, EnaioErrorKeys, EoAppShellModule, EoClientModule, EoDialogComponent, EoFrameworkCoreModule, EoFrameworkModule, EoIconComponent, Error404Component, ErrorHandlerService, ErrorMessageComponent, ErrorModule, FavoriteIconComponent, FavoriteStateComponent, FileSizePipe, FormElementComponent, FormElementTableComponent, FormElementsModule, FormInputComponent, FrameComponent, GlobalShortcutsComponent, GlobalShortcutsSectionComponent, GridComponent, GridFilter, GridModule, GridService, HistoryFilterComponent, HistoryFilterPipe, IdReferenceComponent, InboxDetailsComponent, InboxItemTarget, InboxStateComponent, InboxStateModule, InboxTypes, InboxTypesFilter, IndexdataSummaryComponent, InputFocusDirective, KeysPipe, LayoutService, ListContainerComponent, ListContainerModule, ListSettingsService, LoadingSpinnerComponent, LocaleCurrencyPipe, LocaleDatePipe, LocaleDecimalPipe, LocaleNumberPipe, LocalePercentPipe, LocationService, LockSettings, LoginComponent, MediaComponent, MediaModule, NotFoundComponent, NotificationsStateComponent, NumberComponent, NumberRangeComponent, ObjectDetailsComponent, ObjectDetailsModule, ObjectFormComponent, ObjectFormControl, ObjectFormControlWrapper, ObjectFormEditComponent, ObjectFormGroup, ObjectFormGroupComponent, ObjectFormHelperService, ObjectFormModule, ObjectFormScriptService, ObjectFormScriptingScope, ObjectHistoryComponent, ObjectLinksComponent, ObjectStateComponent, ObjectStateDetailsComponent, ObjectStateModule, ObjectStateService, OrganizationComponent, OrganizationFilterComponent, OutsideClickDirective, OverlayComponent, PageTitleService, PanelLoading, PasswordComponent, PendingChangesService, PermissionsComponent, PluginComponent, PluginDirective, PluginService, PluginsModule, PluginsService, PrepareDetailsComponent, PrepareStateComponent, PrepareStateModule, PreparedItemTarget, ProcessDetailsComponent, ProcessFileComponent, ProcessHistoryComponent, ProcessItemTarget, QuickFilterComponent, QuickSearchComponent, QuickSearchModule, ReferenceComponent, ReferenceService, ResetFilterComponent, ResultListComponent, ResultListModule, ResultStateComponent, RouterLinkDirective, RowEditComponent, RtlAwareDirective, STATE, SafeHtmlPipe, SelectionRange, SelectionService, SetFilterComponent, SettingsComponent, SettingsModule, Shortcut, ShortcutsDirective, ShortcutsModule, ShortcutsService, SideBarComponent, SidebarPluginComponent, SimpleAccordionComponent, SplitAreaComponent, SplitComponent, SplitGutterDirective, SplitModule, StoredQueriesStateComponent, StoredQueryComponent, StoredQueryDetailsComponent, StoredQueryModule, StoredQueryTarget, StringComponent, TabContainerComponent, TabContainerModule, TabPanelComponent, TabPluginComponent, TabViewComponent, TabViewNavComponent, TextFilterComponent, TotalCountComponent, TreeComponent, TreeModule, TypeFilter, UNDOCK_WINDOW_NAME, UiModule, UndockSplitComponent, UndockSplitService, UnsubscribeOnDestroy, UploadOverlayComponent, UserAvatarComponent, UtilModule, UtilitiesService, VersionStateComponent, WorkItemTarget, agentConfigKeys, entryComponents, listAnimation, panelLoadingAnimations, ɵ0, ɵ1, PendingChangesGuard as ɵa, UploadOverlayGuard as ɵb,
|
|
24179
|
+
export { ACTIONS, AboutStateComponent, AbstractFilterComponent, AccordionModule, ActionMenuComponent, ActionModule, ActionService, ActionTarget, AgentService, AppAddComponent, AppAddDialogComponent, AppBarComponent, AppLayoutComponent, AppSearchComponent, AppSearchService, AreaState, AuthGuard, CUSTOM_ACTIONS, CapabilitiesGuard, CellRenderer, ChangePasswordFormComponent, CheckboxComponent, ClipboardComponent, CodesystemComponent, CodesystemFilterComponent, ColumnConfiguratorComponent, ContentPreviewService, ContextSearchComponent, ContextType, CtaComponent, CtaModule, CustomFilterComponent, CustomSortComponent, DashboardComponent, DatepickerComponent, DatetimeComponent, DatetimeFilterComponent, DatetimeRangeComponent, DmsObjectTarget, DynamicListComponent, DynamicPropertySwitchComponent, ENTRY_COMPONENTS, ENTRY_LINKS, EmptyComponent, EmptyStateService, EnaioErrorKeys, EoAppShellModule, EoClientModule, EoDialogComponent, EoFrameworkCoreModule, EoFrameworkModule, EoIconComponent, Error404Component, ErrorHandlerService, ErrorMessageComponent, ErrorModule, FavoriteIconComponent, FavoriteStateComponent, FileSizePipe, FormElementComponent, FormElementTableComponent, FormElementsModule, FormInputComponent, FrameComponent, GlobalShortcutsComponent, GlobalShortcutsSectionComponent, GridComponent, GridFilter, GridModule, GridService, HistoryFilterComponent, HistoryFilterPipe, IdReferenceComponent, InboxDetailsComponent, InboxItemTarget, InboxStateComponent, InboxStateModule, InboxTypes, InboxTypesFilter, IndexdataSummaryComponent, InputFocusDirective, KeysPipe, LayoutService, ListContainerComponent, ListContainerModule, ListSettingsService, LoadingSpinnerComponent, LocaleCurrencyPipe, LocaleDatePipe, LocaleDecimalPipe, LocaleNumberPipe, LocalePercentPipe, LocationService, LockSettings, LoginComponent, MediaComponent, MediaModule, NotFoundComponent, NotificationsStateComponent, NumberComponent, NumberRangeComponent, ObjectDetailsComponent, ObjectDetailsModule, ObjectFormComponent, ObjectFormControl, ObjectFormControlWrapper, ObjectFormEditComponent, ObjectFormGroup, ObjectFormGroupComponent, ObjectFormHelperService, ObjectFormModule, ObjectFormScriptService, ObjectFormScriptingScope, ObjectHistoryComponent, ObjectLinksComponent, ObjectStateComponent, ObjectStateDetailsComponent, ObjectStateModule, ObjectStateService, OrganizationComponent, OrganizationFilterComponent, OutsideClickDirective, OverlayComponent, PageTitleService, PanelLoading, PasswordComponent, PendingChangesService, PermissionsComponent, PluginComponent, PluginDirective, PluginService, PluginsModule, PluginsService, PrepareDetailsComponent, PrepareStateComponent, PrepareStateModule, PreparedItemTarget, ProcessDetailsComponent, ProcessFileComponent, ProcessHistoryComponent, ProcessItemTarget, QuickFilterComponent, QuickSearchComponent, QuickSearchModule, ReferenceComponent, ReferenceService, ResetFilterComponent, ResultListComponent, ResultListModule, ResultStateComponent, RouterLinkDirective, RowEditComponent, RtlAwareDirective, STATE, SafeHtmlPipe, SelectionRange, SelectionService, SetFilterComponent, SettingsComponent, SettingsModule, Shortcut, ShortcutsDirective, ShortcutsModule, ShortcutsService, SideBarComponent, SidebarPluginComponent, SimpleAccordionComponent, SplitAreaComponent, SplitComponent, SplitGutterDirective, SplitModule, StoredQueriesStateComponent, StoredQueryComponent, StoredQueryDetailsComponent, StoredQueryModule, StoredQueryTarget, StringComponent, TabContainerComponent, TabContainerModule, TabPanelComponent, TabPluginComponent, TabViewComponent, TabViewNavComponent, TextFilterComponent, TotalCountComponent, TreeComponent, TreeModule, TypeFilter, UNDOCK_WINDOW_NAME, UiModule, UndockSplitComponent, UndockSplitService, UnsubscribeOnDestroy, UploadOverlayComponent, UserAvatarComponent, UtilModule, UtilitiesService, VersionStateComponent, WorkItemTarget, agentConfigKeys, entryComponents, listAnimation, panelLoadingAnimations, ɵ0, ɵ1, PendingChangesGuard as ɵa, UploadOverlayGuard as ɵb, OpenContextActionComponent as ɵba, DownloadActionComponent as ɵbb, DownloadOriginalActionComponent as ɵbc, DownloadPdfActionComponent as ɵbd, OpenDocumentActionComponent as ɵbe, EmailActionComponent as ɵbf, EmailLinkActionComponent as ɵbg, EmailOriginalActionComponent as ɵbh, EmailPdfActionComponent as ɵbi, ClipboardActionComponent as ɵbj, ClipboardLinkActionComponent as ɵbk, ClipboardOriginalActionComponent as ɵbl, ClipboardPdfActionComponent as ɵbm, FavoriteActionComponent as ɵbn, DeleteActionComponent as ɵbo, DeleteComponent as ɵbp, OpenVersionsActionComponent as ɵbq, RestoreVersionActionComponent as ɵbr, DeletePreparedActionComponent as ɵbs, AddSubscriptionActionComponent as ɵbt, AddSubscriptionComponent as ɵbu, RemoveSubscriptionActionComponent as ɵbv, WorkflowActionComponent as ɵbw, WorkflowComponent as ɵbx, CustomActionsComponent as ɵby, AddResubmissionActionComponent as ɵbz, AppShellRoutingModule as ɵc, AddResubmissionComponent as ɵca, UpdateResubmissionActionComponent as ɵcb, ShareObjectActionComponent as ɵcc, ShareObjectComponent as ɵcd, CutActionComponent as ɵce, FinalizeActionComponent as ɵcf, DefinalizeActionComponent as ɵcg, DeleteContentActionComponent as ɵch, UnlockActionComponent as ɵci, SimpleWorkflowActionComponent as ɵcj, PreventDoubleClickDirective as ɵck, TrapFocusDirective as ɵcl, EditIconComponent as ɵcm, DuetimeInfoComponent as ɵcn, PrepareContentExistsInfoComponent as ɵco, ObjectStateRoutingModule as ɵcp, InboxStateRoutingModule as ɵcq, PrepareStateRoutingModule as ɵcr, EoClientRoutingModule as ɵcs, ProcessStateComponent as ɵct, AppProcessComponent as ɵd, PipesModule as ɵe, UnsubscribeOnDestroy as ɵf, PendingChangesService as ɵg, QueryScopeSelectComponent as ɵh, IndexdataSummaryEntryComponent as ɵi, OrderByPipe as ɵj, TreeNodeComponent as ɵk, DatepickerService as ɵl, YearRangeDirective as ɵm, ReferenceFinderComponent as ɵn, fadeInOut as ɵo, ReferenceFinderService as ɵp, ReferenceFinderEntryComponent as ɵq, DynamicListFilterComponent as ɵr, ListFilterComponent as ɵs, PaginationComponent as ɵt, MediaModule as ɵu, ProcessFormModule as ɵv, ProcessFormComponent as ɵw, ActionComponentAnchorDirective as ɵx, OpenDocumentComponent as ɵy, CopyActionComponent as ɵz };
|
|
24068
24180
|
//# sourceMappingURL=eo-sdk-client.js.map
|