@eo-sdk/client 7.16.3 → 8.0.0-rc.3
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-framework/app-shell/app-bar/app-bar.component.d.ts +5 -0
- package/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.d.ts +10 -2
- package/assets/_default/config/main.json +1 -1
- package/assets/_default/i18n/de.json +7 -4
- package/assets/_default/i18n/en.json +12 -9
- package/assets/_default/img/yuuvis-agent.png +0 -0
- package/assets/_default/svg/ic_book.svg +1 -0
- package/bundles/eo-sdk-client.umd.js +75 -10
- 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.metadata.json +1 -1
- package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
- package/esm2015/app/eo-framework/app-shell/app-bar/app-bar.component.js +45 -1
- package/esm2015/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.js +20 -6
- package/esm2015/app/eo-framework/form-elements/organization/organization.component.js +2 -2
- package/esm2015/app/eo-framework/grid/filters/organization-filter.component.js +2 -2
- package/esm2015/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.js +4 -1
- package/esm2015/app/eo-framework/process/history/process-history.component.js +2 -2
- package/esm2015/app/eo-framework/upload-overlay/upload-overlay.component.js +2 -2
- package/fesm2015/eo-sdk-client.js +71 -10
- package/fesm2015/eo-sdk-client.js.map +1 -1
- package/package.json +2 -2
- package/projects/eo-sdk/core/package.json +1 -1
|
@@ -3839,6 +3839,7 @@ class AppBarComponent extends UnsubscribeOnDestroy {
|
|
|
3839
3839
|
this.config = config;
|
|
3840
3840
|
this.transparent = false;
|
|
3841
3841
|
this.sidebarShow = false;
|
|
3842
|
+
this.pageVisible = true;
|
|
3842
3843
|
this.capabilities = this.capabilityService.getCapabilities();
|
|
3843
3844
|
this.logo = this.config.getNavigationBarImage();
|
|
3844
3845
|
// listen for routing events to hide any active overlays
|
|
@@ -3857,6 +3858,9 @@ class AppBarComponent extends UnsubscribeOnDestroy {
|
|
|
3857
3858
|
this.inboxService
|
|
3858
3859
|
.inboxState$.pipe(takeUntil(this.componentDestroyed$))
|
|
3859
3860
|
.subscribe((inboxState) => {
|
|
3861
|
+
if (this.inboxState && this.inboxState.unreadmessages < inboxState.unreadmessages) {
|
|
3862
|
+
this.sendNotification();
|
|
3863
|
+
}
|
|
3860
3864
|
this.inboxState = inboxState;
|
|
3861
3865
|
});
|
|
3862
3866
|
this.eventService.on(EnaioEvent.SYSTEM_STATUS_INBOX_CHANGED).subscribe(() => this.inboxService.refreshInboxState());
|
|
@@ -3902,6 +3906,45 @@ class AppBarComponent extends UnsubscribeOnDestroy {
|
|
|
3902
3906
|
profile: this.translate.instant('eo.bar.button.user.profile.title'),
|
|
3903
3907
|
};
|
|
3904
3908
|
}
|
|
3909
|
+
sendNotification() {
|
|
3910
|
+
if (Notification.permission === 'granted') {
|
|
3911
|
+
this.initNotification();
|
|
3912
|
+
}
|
|
3913
|
+
else if (Notification.permission !== 'denied') {
|
|
3914
|
+
Notification.requestPermission().then(() => {
|
|
3915
|
+
this.initNotification();
|
|
3916
|
+
});
|
|
3917
|
+
}
|
|
3918
|
+
}
|
|
3919
|
+
initNotification() {
|
|
3920
|
+
const title = this.translate.instant('eo.inbox.notification.title');
|
|
3921
|
+
const body = this.translate.instant('eo.inbox.notification.body');
|
|
3922
|
+
const icon = 'assets/_default/img/yuuvis-agent.png';
|
|
3923
|
+
const notification = new Notification(title, {
|
|
3924
|
+
body: body,
|
|
3925
|
+
icon: icon
|
|
3926
|
+
});
|
|
3927
|
+
this.initNotificationClickListener(notification);
|
|
3928
|
+
}
|
|
3929
|
+
// This is listening for the navigation click event. When the client tab is active, it just navigates to the inbox route.
|
|
3930
|
+
// If not, it opens a new tab and shows the inbox there.
|
|
3931
|
+
initNotificationClickListener(notification) {
|
|
3932
|
+
notification.addEventListener('click', () => {
|
|
3933
|
+
if (this.pageVisible) {
|
|
3934
|
+
this.router.navigateByUrl('/inbox');
|
|
3935
|
+
}
|
|
3936
|
+
else {
|
|
3937
|
+
const fullPath = window.location.href;
|
|
3938
|
+
const currentRoute = this.router.url;
|
|
3939
|
+
const pathToNavigate = fullPath.replace(currentRoute, '') + '/inbox';
|
|
3940
|
+
window.open(pathToNavigate, '_blank');
|
|
3941
|
+
}
|
|
3942
|
+
});
|
|
3943
|
+
}
|
|
3944
|
+
// This listener is needed to check, if the client tab is active or not
|
|
3945
|
+
initVisibilityChangeListener() {
|
|
3946
|
+
document.addEventListener('visibilitychange', () => this.pageVisible = !this.pageVisible);
|
|
3947
|
+
}
|
|
3905
3948
|
ngOnInit() {
|
|
3906
3949
|
this.updateOnSchemaChange();
|
|
3907
3950
|
this.setIconTitles();
|
|
@@ -3910,6 +3953,7 @@ class AppBarComponent extends UnsubscribeOnDestroy {
|
|
|
3910
3953
|
.subscribe(res => {
|
|
3911
3954
|
this.exeActions = !!res.length;
|
|
3912
3955
|
});
|
|
3956
|
+
this.initVisibilityChangeListener();
|
|
3913
3957
|
}
|
|
3914
3958
|
}
|
|
3915
3959
|
AppBarComponent.decorators = [
|
|
@@ -3976,14 +4020,27 @@ ContextSearchComponent.propDecorators = {
|
|
|
3976
4020
|
};
|
|
3977
4021
|
|
|
3978
4022
|
class SideBarComponent extends UnsubscribeOnDestroy {
|
|
3979
|
-
constructor(capabilityService, config, cd, sanitizer, elemRef) {
|
|
4023
|
+
constructor(capabilityService, config, cd, sanitizer, elemRef, userService) {
|
|
3980
4024
|
super();
|
|
3981
4025
|
this.capabilityService = capabilityService;
|
|
3982
4026
|
this.config = config;
|
|
3983
4027
|
this.cd = cd;
|
|
3984
4028
|
this.sanitizer = sanitizer;
|
|
3985
4029
|
this.elemRef = elemRef;
|
|
4030
|
+
this.userService = userService;
|
|
3986
4031
|
this.eoOutsideClick = new EventEmitter();
|
|
4032
|
+
this.getUserLang();
|
|
4033
|
+
this.getDocumentation();
|
|
4034
|
+
}
|
|
4035
|
+
getDocumentation() {
|
|
4036
|
+
const docu = this.config.getRaw('about.docu');
|
|
4037
|
+
const link = docu.link.replace('###userLang###', this.userLang);
|
|
4038
|
+
this.docu = Object.assign(Object.assign({}, docu), { link });
|
|
4039
|
+
}
|
|
4040
|
+
getUserLang() {
|
|
4041
|
+
this.userService
|
|
4042
|
+
.user$
|
|
4043
|
+
.subscribe(data => this.userLang = data.userSettings.clientlocale);
|
|
3987
4044
|
}
|
|
3988
4045
|
getCapabilities() {
|
|
3989
4046
|
this.capabilities = this.capabilityService.getCapabilities();
|
|
@@ -4003,8 +4060,8 @@ class SideBarComponent extends UnsubscribeOnDestroy {
|
|
|
4003
4060
|
SideBarComponent.decorators = [
|
|
4004
4061
|
{ type: Component, args: [{
|
|
4005
4062
|
selector: 'eo-side-bar',
|
|
4006
|
-
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\r\n <a routerLink=\"/about\"><eo-icon class=\"button about\" [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",
|
|
4007
|
-
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;right:8px;top:-6px}: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)}}"]
|
|
4063
|
+
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",
|
|
4064
|
+
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;right:8px;top:-6px}:host .eo-side-bar .body ::ng-deep eo-icon.docu{color:var(--color-white);padding:3px;position:absolute;right:43px;top:-6px}: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)}}"]
|
|
4008
4065
|
},] }
|
|
4009
4066
|
];
|
|
4010
4067
|
SideBarComponent.ctorParameters = () => [
|
|
@@ -4012,7 +4069,8 @@ SideBarComponent.ctorParameters = () => [
|
|
|
4012
4069
|
{ type: Config },
|
|
4013
4070
|
{ type: ChangeDetectorRef },
|
|
4014
4071
|
{ type: DomSanitizer },
|
|
4015
|
-
{ type: ElementRef }
|
|
4072
|
+
{ type: ElementRef },
|
|
4073
|
+
{ type: UserService }
|
|
4016
4074
|
];
|
|
4017
4075
|
SideBarComponent.propDecorators = {
|
|
4018
4076
|
eoOutsideClick: [{ type: Output }]
|
|
@@ -7634,7 +7692,7 @@ class OrganizationComponent {
|
|
|
7634
7692
|
OrganizationComponent.decorators = [
|
|
7635
7693
|
{ type: Component, args: [{
|
|
7636
7694
|
selector: 'eo-organization',
|
|
7637
|
-
template: "<div class=\"eo-organization\" [ngClass]=\"{acInputHidden: !multiselect && innerValue.length}\">\r\n\r\n <p-autoComplete [(ngModel)]=\"innerValue\" [minLength]=\"1\" #autocomplete\r\n (onSelect)=\"onSelect($event)\" (onUnselect)=\"onUnselect($event)\"\r\n (onBlur)=\"onAutoCompleteBlur()\"\r\n [disabled]=\"readonly\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"autocompleteRes\" field=\"title\"\r\n (completeMethod)=\"autocompleteFn($event)\" [multiple]=\"true\">\r\n\r\n <!-- template for the suggest list -->\r\n <ng-template let-item pTemplate=\"item\">\r\n <i class=\"fa {{item.type === 'group' ? 'fa-users' : 'fa-user'}}\"></i>\r\n <span *ngIf=\"(item.firstname?.length && item.lastname?.length) || item.type === 'group'\" class=\"ui-autocomplete-token-label\">{{item.title}} ({{item.name}})</span>\r\n <span *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.type !== 'group'\" class=\"ui-autocomplete-token-label\">({{item.name}})</span>\r\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\" class=\"ui-autocomplete-token-label\">{{item.lastname}} ({{item.name}})</span>\r\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\" class=\"ui-autocomplete-token-label\">{{item.firstname}} ({{item.name}})</span>\r\n </ng-template>\r\n\r\n <!-- template for the selected items when multiple -->\r\n <ng-template let-item pTemplate=\"selectedItem\">\r\n <div class=\"token\" [ngClass]=\"{deleted: item.state === 'GONE'}\">\r\n <i class=\"fa {{item.type === 'group' ? 'fa-users' : 'fa-user'}}\"></i>\r\n <span *ngIf=\"(item.firstname?.length && item.lastname?.length && item.active) || item.type === 'group'\" class=\"ui-autocomplete-token-label\">{{item.title}} ({{item.name}})</span>\r\n <span *ngIf=\"(!item.firstname?.length && !item.lastname?.length && !item.active && !item.type)\" class=\"ui-autocomplete-token-label\">{{
|
|
7695
|
+
template: "<div class=\"eo-organization\" [ngClass]=\"{acInputHidden: !multiselect && innerValue.length}\">\r\n\r\n <p-autoComplete [(ngModel)]=\"innerValue\" [minLength]=\"1\" #autocomplete\r\n (onSelect)=\"onSelect($event)\" (onUnselect)=\"onUnselect($event)\"\r\n (onBlur)=\"onAutoCompleteBlur()\"\r\n [disabled]=\"readonly\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"autocompleteRes\" field=\"title\"\r\n (completeMethod)=\"autocompleteFn($event)\" [multiple]=\"true\">\r\n\r\n <!-- template for the suggest list -->\r\n <ng-template let-item pTemplate=\"item\">\r\n <i class=\"fa {{item.type === 'group' ? 'fa-users' : 'fa-user'}}\"></i>\r\n <span *ngIf=\"(item.firstname?.length && item.lastname?.length) || item.type === 'group'\" class=\"ui-autocomplete-token-label\">{{item.title}} ({{item.name}})</span>\r\n <span *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.type !== 'group'\" class=\"ui-autocomplete-token-label\">({{item.name}})</span>\r\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\" class=\"ui-autocomplete-token-label\">{{item.lastname}} ({{item.name}})</span>\r\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\" class=\"ui-autocomplete-token-label\">{{item.firstname}} ({{item.name}})</span>\r\n </ng-template>\r\n\r\n <!-- template for the selected items when multiple -->\r\n <ng-template let-item pTemplate=\"selectedItem\">\r\n <div class=\"token\" [ngClass]=\"{deleted: item.state === 'GONE'}\">\r\n <i class=\"fa {{item.type === 'group' ? 'fa-users' : 'fa-user'}}\"></i>\r\n <span *ngIf=\"(item.firstname?.length && item.lastname?.length && item.active) || item.type === 'group'\" class=\"ui-autocomplete-token-label\">{{item.title}} ({{item.name}})</span>\r\n <span *ngIf=\"(!item.firstname?.length && !item.lastname?.length && !item.active && !item.type)\" class=\"ui-autocomplete-token-label\">{{'eo.form.property.organization.error.usernotfound'|translate}}</span>\r\n <span *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.active && item.type !== 'group'\" class=\"ui-autocomplete-token-label\">({{item.name}})</span>\r\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\" class=\"ui-autocomplete-token-label\">{{item.lastname}} ({{item.name}})</span>\r\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\" class=\"ui-autocomplete-token-label\">{{item.firstname}} ({{item.name}})</span>\r\n </div>\r\n </ng-template>\r\n\r\n </p-autoComplete>\r\n</div>\r\n",
|
|
7638
7696
|
providers: [
|
|
7639
7697
|
{
|
|
7640
7698
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -10032,6 +10090,9 @@ class FormElementTableComponent extends UnsubscribeOnDestroy {
|
|
|
10032
10090
|
this._elements.forEach(el => {
|
|
10033
10091
|
// this.innerValue[rowResult.index] = {...this.innerValue[rowResult.index], ...rowResult.rowData};
|
|
10034
10092
|
this.innerValue[rowResult.index][el.name] = rowResult.rowData[el.name];
|
|
10093
|
+
if (this.innerValue[rowResult.index][el.name + '_meta']) {
|
|
10094
|
+
this.innerValue[rowResult.index][el.name + '_meta'] = rowResult.rowData[el.name + '_meta'];
|
|
10095
|
+
}
|
|
10035
10096
|
});
|
|
10036
10097
|
}
|
|
10037
10098
|
this.updateTableValue();
|
|
@@ -11511,7 +11572,7 @@ class OrganizationFilterComponent extends OrganizationComponent {
|
|
|
11511
11572
|
OrganizationFilterComponent.decorators = [
|
|
11512
11573
|
{ type: Component, args: [{
|
|
11513
11574
|
selector: 'eo-organization-filter',
|
|
11514
|
-
template: "<div class=\"eo-organization\" [ngClass]=\"{acInputHidden: !multiselect && innerValue.length}\">\r\n\r\n <p-autoComplete [(ngModel)]=\"innerValue\" [minLength]=\"1\" #autocomplete\r\n (onSelect)=\"onSelect($event)\" (onUnselect)=\"onUnselect($event)\"\r\n (onBlur)=\"onAutoCompleteBlur()\"\r\n [disabled]=\"readonly\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"autocompleteRes\" field=\"title\"\r\n (completeMethod)=\"autocompleteFn($event)\" [multiple]=\"true\">\r\n\r\n <!-- template for the suggest list -->\r\n <ng-template let-item pTemplate=\"item\">\r\n <i class=\"fa {{item.type === 'group' ? 'fa-users' : 'fa-user'}}\"></i>\r\n <span *ngIf=\"(item.firstname?.length && item.lastname?.length) || item.type === 'group'\" class=\"ui-autocomplete-token-label\">{{item.title}} ({{item.name}})</span>\r\n <span *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.type !== 'group'\" class=\"ui-autocomplete-token-label\">({{item.name}})</span>\r\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\" class=\"ui-autocomplete-token-label\">{{item.lastname}} ({{item.name}})</span>\r\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\" class=\"ui-autocomplete-token-label\">{{item.firstname}} ({{item.name}})</span>\r\n </ng-template>\r\n\r\n <!-- template for the selected items when multiple -->\r\n <ng-template let-item pTemplate=\"selectedItem\">\r\n <div class=\"token\" [ngClass]=\"{deleted: item.state === 'GONE'}\">\r\n <i class=\"fa {{item.type === 'group' ? 'fa-users' : 'fa-user'}}\"></i>\r\n <span *ngIf=\"(item.firstname?.length && item.lastname?.length && item.active) || item.type === 'group'\" class=\"ui-autocomplete-token-label\">{{item.title}} ({{item.name}})</span>\r\n <span *ngIf=\"(!item.firstname?.length && !item.lastname?.length && !item.active && !item.type)\" class=\"ui-autocomplete-token-label\">{{
|
|
11575
|
+
template: "<div class=\"eo-organization\" [ngClass]=\"{acInputHidden: !multiselect && innerValue.length}\">\r\n\r\n <p-autoComplete [(ngModel)]=\"innerValue\" [minLength]=\"1\" #autocomplete\r\n (onSelect)=\"onSelect($event)\" (onUnselect)=\"onUnselect($event)\"\r\n (onBlur)=\"onAutoCompleteBlur()\"\r\n [disabled]=\"readonly\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"autocompleteRes\" field=\"title\"\r\n (completeMethod)=\"autocompleteFn($event)\" [multiple]=\"true\">\r\n\r\n <!-- template for the suggest list -->\r\n <ng-template let-item pTemplate=\"item\">\r\n <i class=\"fa {{item.type === 'group' ? 'fa-users' : 'fa-user'}}\"></i>\r\n <span *ngIf=\"(item.firstname?.length && item.lastname?.length) || item.type === 'group'\" class=\"ui-autocomplete-token-label\">{{item.title}} ({{item.name}})</span>\r\n <span *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.type !== 'group'\" class=\"ui-autocomplete-token-label\">({{item.name}})</span>\r\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\" class=\"ui-autocomplete-token-label\">{{item.lastname}} ({{item.name}})</span>\r\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\" class=\"ui-autocomplete-token-label\">{{item.firstname}} ({{item.name}})</span>\r\n </ng-template>\r\n\r\n <!-- template for the selected items when multiple -->\r\n <ng-template let-item pTemplate=\"selectedItem\">\r\n <div class=\"token\" [ngClass]=\"{deleted: item.state === 'GONE'}\">\r\n <i class=\"fa {{item.type === 'group' ? 'fa-users' : 'fa-user'}}\"></i>\r\n <span *ngIf=\"(item.firstname?.length && item.lastname?.length && item.active) || item.type === 'group'\" class=\"ui-autocomplete-token-label\">{{item.title}} ({{item.name}})</span>\r\n <span *ngIf=\"(!item.firstname?.length && !item.lastname?.length && !item.active && !item.type)\" class=\"ui-autocomplete-token-label\">{{'eo.form.property.organization.error.usernotfound'|translate}}</span>\r\n <span *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.active && item.type !== 'group'\" class=\"ui-autocomplete-token-label\">({{item.name}})</span>\r\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\" class=\"ui-autocomplete-token-label\">{{item.lastname}} ({{item.name}})</span>\r\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\" class=\"ui-autocomplete-token-label\">{{item.firstname}} ({{item.name}})</span>\r\n </div>\r\n </ng-template>\r\n\r\n </p-autoComplete>\r\n</div>\r\n",
|
|
11515
11576
|
styles: [".eo-organization .ui-autocomplete-token-label{display:inline-block}.eo-organization .fa.fa-user,.eo-organization .fa.fa-users{margin:0 4px;text-align:center;width:18px}:host.readonly ::ng-deep .ui-autocomplete-token-icon{display:none}:host ::ng-deep .ui-autocomplete-token{border:none!important;margin:0!important;padding:0!important}:host ::ng-deep .ui-autocomplete-token .token{align-items:center;border:1px solid rgba(0,0,0,.1);display:flex;padding:2px}:host ::ng-deep .ui-autocomplete-token .deleted{background:var(--color-error)!important;border:1px solid var(--color-error);border-color:var(--color-error)!important;color:var(--color-white)!important}:host ::ng-deep .ui-autocomplete-token .deleted:after{content:\"!\"}:host ::ng-deep .ui-autocomplete-token-icon{margin-right:4px;opacity:1}:host ::ng-deep .ui-autocomplete-token-icon.del{color:var(--color-white)!important}:host ::ng-deep .eo-organization.acInputHidden .ui-autocomplete-input-token{margin:0;padding:0;width:0!important}:host ::ng-deep .eo-organization.acInputHidden .ui-autocomplete-input-token input{width:0!important}"]
|
|
11516
11577
|
},] }
|
|
11517
11578
|
];
|
|
@@ -19533,7 +19594,7 @@ class UploadOverlayComponent {
|
|
|
19533
19594
|
* @returns number of files
|
|
19534
19595
|
*/
|
|
19535
19596
|
dragContainsFiles(event) {
|
|
19536
|
-
return Array.from(event.dataTransfer.items || []).filter(i => i.kind === 'file'
|
|
19597
|
+
return Array.from(event.dataTransfer.items || []).filter(i => i.kind === 'file').length;
|
|
19537
19598
|
}
|
|
19538
19599
|
// ngFor tracking function for upload targets
|
|
19539
19600
|
targetTrackByFn(index, item) {
|
|
@@ -20505,7 +20566,7 @@ class ProcessHistoryComponent {
|
|
|
20505
20566
|
ProcessHistoryComponent.decorators = [
|
|
20506
20567
|
{ type: Component, args: [{
|
|
20507
20568
|
selector: 'eo-process-history',
|
|
20508
|
-
template: "<div class=\"process-history\">\r\n\r\n <div class=\"filter\">\r\n <div class=\"input\" [ngClass]=\"{inactive: !history?.length}\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"></eo-icon>\r\n <input type=\"text\" [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"filterterm\">\r\n\r\n </div>\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"filterterm = null\" *ngIf=\"filterterm\"></eo-icon>\r\n </div>\r\n\r\n\r\n <ng-template #empty>\r\n <eo-error-message [emptyState]=\"{icon: 'ic_no-file.svg', text: 'eo.timeline.empty', className: 'history empty'}\"></eo-error-message>\r\n </ng-template>\r\n\r\n\r\n <div class=\"history eo-timeline\" [ngClass]=\"{single: history?.length === 1}\" *ngIf=\"history?.length; else empty\">\r\n\r\n <div class=\"timeline-entry\"\r\n *ngFor=\"let entry of history | historyFilter:filterterm; trackBy: trackByIndex\"\r\n [ngClass]=\"{user: entry.editor, error: entry.type === 'error' || entry?.errorType}\">\r\n\r\n <div class=\"when\">\r\n <div class=\"date\">{{entry.time | localeDate: 'eoShortDate'}}</div>\r\n <div class=\"time\">{{entry.time | localeDate: 'eoShortTime'}}</div>\r\n </div>\r\n <div class=\"marker\">\r\n <img *ngIf=\"entry.editor\"\r\n title=\"{{entry.editor.lastname}}, {{entry.editor.firstname}} ({{entry.editor.name}})\"\r\n [src]=\"entry.data?.image\">\r\n </div>\r\n <div class=\"what\">\r\n <div class=\"title\">{{'eo.process.details.history.entry.type.' + entry.type + '.title'|translate}}</div>\r\n\r\n <div class=\"description\" *ngIf=\"entry.data?.periodFireTime && entry.type === '
|
|
20569
|
+
template: "<div class=\"process-history\">\r\n\r\n <div class=\"filter\">\r\n <div class=\"input\" [ngClass]=\"{inactive: !history?.length}\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"></eo-icon>\r\n <input type=\"text\" [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"filterterm\">\r\n\r\n </div>\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"filterterm = null\" *ngIf=\"filterterm\"></eo-icon>\r\n </div>\r\n\r\n\r\n <ng-template #empty>\r\n <eo-error-message [emptyState]=\"{icon: 'ic_no-file.svg', text: 'eo.timeline.empty', className: 'history empty'}\"></eo-error-message>\r\n </ng-template>\r\n\r\n\r\n <div class=\"history eo-timeline\" [ngClass]=\"{single: history?.length === 1}\" *ngIf=\"history?.length; else empty\">\r\n\r\n <div class=\"timeline-entry\"\r\n *ngFor=\"let entry of history | historyFilter:filterterm; trackBy: trackByIndex\"\r\n [ngClass]=\"{user: entry.editor, error: entry.type === 'error' || entry?.errorType}\">\r\n\r\n <div class=\"when\">\r\n <div class=\"date\">{{entry.time | localeDate: 'eoShortDate'}}</div>\r\n <div class=\"time\">{{entry.time | localeDate: 'eoShortTime'}}</div>\r\n </div>\r\n <div class=\"marker\">\r\n <img *ngIf=\"entry.editor\"\r\n title=\"{{entry.editor.lastname}}, {{entry.editor.firstname}} ({{entry.editor.name}})\"\r\n [src]=\"entry.data?.image\">\r\n </div>\r\n <div class=\"what\">\r\n <div class=\"title\">{{'eo.process.details.history.entry.type.' + entry.type + '.title'|translate}}</div>\r\n\r\n <div class=\"description\" *ngIf=\"entry.data?.periodFireTime && entry.type === 'DEADLINE_START'; else description\">\r\n <div class=\"deadline-fire\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_timer.svg'\"></eo-icon>\r\n <span>{{entry.data.periodFireTime | localeDate}}</span>\r\n </div>\r\n </div>\r\n <ng-template #description>\r\n <div class=\"description\">\r\n {{entry.description}}\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"meta\" *ngIf=\"entry.performer?.length\">\r\n <span *ngFor=\"let p of entry.performer; trackBy: trackByIndex\">\r\n {{p.label}}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n",
|
|
20509
20570
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
20510
20571
|
styles: [":host .process-history{display:flex;flex:1;flex-direction:column;height:100%;min-height:0;min-width:0}:host .history{flex:1 1 auto;overflow-y:auto;padding:var(--app-pane-padding)}:host .filter{background-color:var(--panel-background-lightgrey);border-bottom:1px solid var(--main-background);display:flex;flex:1;flex:0 0 auto;flex-direction:row;justify-content:space-between;min-height:0;min-width:0}:host .filter .input{background-color:var(--color-white);border:1px solid var(--main-background);display:flex;flex-flow:row nowrap;margin:calc(var(--app-pane-padding)/2);padding:2px 2px 2px 0}:host .filter .input.inactive{opacity:.5;pointer-events:none}:host .filter .input input{background-color:transparent;border:0}:host .filter .input eo-icon{margin:0 calc(var(--app-pane-padding)/4)}:host .filter .input eo-icon,:host .filter>eo-icon{align-self:center;color:var(--text-color-hint);height:16px;width:16px}:host .filter>eo-icon{box-sizing:content-box;cursor:pointer;flex:0 0 auto;padding:calc(var(--app-pane-padding)/2)}:host .timeline-entry.user img{border:2px solid var(--text-color-hint);border-radius:50%;height:30px;width:30px;z-index:1}:host .timeline-entry.user .marker:before{display:none}:host .timeline-entry .what{padding-bottom:0;width:66%}:host .timeline-entry .what .deadline-fire{align-items:center;display:flex;padding-bottom:4px}:host .timeline-entry .what .description{color:var(--text-color-body)}.deadline-fire :host .timeline-entry .what .description{align-items:center;display:flex;flex-flow:row nowrap}.deadline-fire :host .timeline-entry .what .description eo-icon{color:var(--text-color-hint);height:18px;width:18px}.deadline-fire :host .timeline-entry .what .description span{padding:0 calc(var(--app-pane-padding)/4)}:host .timeline-entry .what .meta{display:flex;flex-flow:row wrap;margin-bottom:calc(var(--app-pane-padding)/4)}:host .timeline-entry .what .meta span{background-color:rgba(var(--color-black-rgb),.08);border-radius:2px;display:block;font-size:var(--font-caption);margin:0 calc(var(--app-pane-padding)/4) calc(var(--app-pane-padding)/4) 0;padding:2px 4px}:host .timeline-entry.error .what .title{color:var(--color-error)}:host .timeline-entry.error .marker:before{align-items:center;border-color:var(--color-error);border-width:4px;color:var(--color-error);content:\"!\";display:flex;flex-flow:column;font-weight:var(--font-weight-bold);justify-content:center}"]
|
|
20511
20572
|
},] }
|
|
@@ -21994,10 +22055,10 @@ class AboutStateComponent {
|
|
|
21994
22055
|
this.http = http;
|
|
21995
22056
|
this.userService = userService;
|
|
21996
22057
|
this.config = config;
|
|
21997
|
-
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": "
|
|
22058
|
+
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.0.0-rc.3", "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": "6.0.0-beta.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" }];
|
|
21998
22059
|
this.ctrl = {
|
|
21999
22060
|
productName: 'yuuvis® RAD client',
|
|
22000
|
-
clientVersion: '
|
|
22061
|
+
clientVersion: '8.0.0-rc.3'
|
|
22001
22062
|
};
|
|
22002
22063
|
this.licenses = {
|
|
22003
22064
|
'MIT': {
|