@esfaenza/core 15.2.179 → 15.2.180-beta1
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/assets/fontawesome/css/all.css +27093 -0
- package/assets/fontawesome/css/all.min.css +9 -0
- package/assets/fontawesome/css/brands.css +1522 -0
- package/assets/fontawesome/css/brands.min.css +6 -0
- package/assets/fontawesome/css/duotone.css +12491 -0
- package/assets/fontawesome/css/duotone.min.css +6 -0
- package/assets/fontawesome/css/fontawesome.css +12984 -0
- package/assets/fontawesome/css/fontawesome.min.css +9 -0
- package/assets/fontawesome/css/light.css +19 -0
- package/assets/fontawesome/css/light.min.css +6 -0
- package/assets/fontawesome/css/regular.css +19 -0
- package/assets/fontawesome/css/regular.min.css +6 -0
- package/assets/fontawesome/css/sharp-regular.css +19 -0
- package/assets/fontawesome/css/sharp-regular.min.css +6 -0
- package/assets/fontawesome/css/sharp-solid.css +19 -0
- package/assets/fontawesome/css/sharp-solid.min.css +6 -0
- package/assets/fontawesome/css/solid.css +19 -0
- package/assets/fontawesome/css/solid.min.css +6 -0
- package/assets/fontawesome/css/svg-with-js.css +638 -0
- package/assets/fontawesome/css/svg-with-js.min.css +6 -0
- package/assets/fontawesome/css/thin.css +19 -0
- package/assets/fontawesome/css/thin.min.css +6 -0
- package/assets/fontawesome/css/v4-font-face.css +26 -0
- package/assets/fontawesome/css/v4-font-face.min.css +6 -0
- package/assets/fontawesome/css/v4-shims.css +2194 -0
- package/assets/fontawesome/css/v4-shims.min.css +6 -0
- package/assets/fontawesome/css/v5-font-face.css +34 -0
- package/assets/fontawesome/css/v5-font-face.min.css +6 -0
- package/assets/fontawesome/webfonts/fa-brands-400.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
- package/assets/fontawesome/webfonts/fa-duotone-900.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-duotone-900.woff2 +0 -0
- package/assets/fontawesome/webfonts/fa-light-300.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-light-300.woff2 +0 -0
- package/assets/fontawesome/webfonts/fa-regular-400.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
- package/assets/fontawesome/webfonts/fa-sharp-regular-400.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-sharp-regular-400.woff2 +0 -0
- package/assets/fontawesome/webfonts/fa-sharp-solid-900.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-sharp-solid-900.woff2 +0 -0
- package/assets/fontawesome/webfonts/fa-solid-900.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
- package/assets/fontawesome/webfonts/fa-thin-100.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-thin-100.woff2 +0 -0
- package/assets/fontawesome/webfonts/fa-v4compatibility.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-v4compatibility.woff2 +0 -0
- package/components/breadcrumb/breadcrumb.component.d.ts +12 -8
- package/components/components.module.d.ts +2 -1
- package/components/labeled-span/labeled-span.component.d.ts +11 -0
- package/components/navbar/navbar.component.d.ts +4 -14
- package/components/public-api.d.ts +2 -0
- package/components/sidebar/sidebar.component.d.ts +25 -5
- package/components/sidebar/sidebar.component.loc.d.ts +8 -0
- package/components/user_infos/user_infos.component.d.ts +48 -0
- package/components/user_infos/user_infos.component.loc.d.ts +8 -0
- package/domain/models/user/UpdateAccountRecoverySettingsDto.d.ts +5 -0
- package/domain/models/user/UpdatePasswordDto.d.ts +9 -0
- package/domain/models/user/UpdateProfilePictureDto.d.ts +4 -0
- package/domain/models/user/UserAccount.d.ts +14 -0
- package/domain/public-api.d.ts +4 -0
- package/esm2020/components/breadcrumb/breadcrumb.component.mjs +51 -42
- package/esm2020/components/components.module.mjs +8 -4
- package/esm2020/components/labeled-span/labeled-span.component.mjs +25 -0
- package/esm2020/components/navbar/navbar.component.mjs +12 -64
- package/esm2020/components/page/pages.component.mjs +3 -3
- package/esm2020/components/public-api.mjs +3 -1
- package/esm2020/components/sidebar/sidebar.component.loc.mjs +39 -0
- package/esm2020/components/sidebar/sidebar.component.mjs +100 -14
- package/esm2020/components/user_infos/user_infos.component.loc.mjs +43 -0
- package/esm2020/components/user_infos/user_infos.component.mjs +141 -0
- package/esm2020/domain/models/user/UpdateAccountRecoverySettingsDto.mjs +7 -0
- package/esm2020/domain/models/user/UpdatePasswordDto.mjs +11 -0
- package/esm2020/domain/models/user/UpdateProfilePictureDto.mjs +6 -0
- package/esm2020/domain/models/user/UserAccount.mjs +3 -0
- package/esm2020/domain/public-api.mjs +5 -1
- package/esm2020/lib/app.component.mjs +2 -2
- package/esm2020/lib/core.module.mjs +11 -5
- package/esm2020/services/classes/preferences/user/app.userpreferences.base.mjs +74 -0
- package/esm2020/services/public-api.mjs +2 -1
- package/fesm2015/esfaenza-core-components.mjs +426 -157
- package/fesm2015/esfaenza-core-components.mjs.map +1 -1
- package/fesm2015/esfaenza-core-domain.mjs +28 -1
- package/fesm2015/esfaenza-core-domain.mjs.map +1 -1
- package/fesm2015/esfaenza-core-services.mjs +85 -5
- package/fesm2015/esfaenza-core-services.mjs.map +1 -1
- package/fesm2015/esfaenza-core.mjs +12 -6
- package/fesm2015/esfaenza-core.mjs.map +1 -1
- package/fesm2020/esfaenza-core-components.mjs +415 -156
- package/fesm2020/esfaenza-core-components.mjs.map +1 -1
- package/fesm2020/esfaenza-core-domain.mjs +28 -1
- package/fesm2020/esfaenza-core-domain.mjs.map +1 -1
- package/fesm2020/esfaenza-core-services.mjs +70 -5
- package/fesm2020/esfaenza-core-services.mjs.map +1 -1
- package/fesm2020/esfaenza-core.mjs +12 -6
- package/fesm2020/esfaenza-core.mjs.map +1 -1
- package/lib/core.module.d.ts +2 -1
- package/package.json +1 -1
- package/services/classes/preferences/user/app.userpreferences.base.d.ts +25 -0
- package/services/public-api.d.ts +1 -0
- package/theme/styles/_variables.scss +1 -0
- package/theme/styles/skins/enuma.scss +61 -0
- package/theme/styles/skins/jace.scss +63 -0
- package/assets/fonts/fontawesome/FontAwesome.otf +0 -0
- package/assets/fonts/fontawesome/fontawesome-webfont.eot +0 -0
- package/assets/fonts/fontawesome/fontawesome-webfont.svg +0 -2671
- package/assets/fonts/fontawesome/fontawesome-webfont.ttf +0 -0
- package/assets/fonts/fontawesome/fontawesome-webfont.woff +0 -0
- package/assets/fonts/fontawesome/fontawesome-webfont.woff2 +0 -0
- package/assets/styles/font-awesome.min.css +0 -2929
|
@@ -1,36 +1,41 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, ViewEncapsulation, Input, ViewChild, HostListener, ChangeDetectionStrategy, Optional, Inject,
|
|
3
|
-
import * as
|
|
4
|
-
import {
|
|
5
|
-
import * as i2 from '@
|
|
2
|
+
import { Component, ViewEncapsulation, Input, ViewChild, HostListener, Injectable, ChangeDetectionStrategy, Optional, Inject, EventEmitter, Output, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1$1 from '@angular/router';
|
|
4
|
+
import { NavigationEnd, RouterLink, RouterLinkActive, RouterOutlet, ActivatedRoute, Router, RouterModule } from '@angular/router';
|
|
5
|
+
import * as i2 from '@angular/common';
|
|
6
|
+
import { NgIf, NgFor, NgTemplateOutlet, NgClass, Location, CommonModule } from '@angular/common';
|
|
7
|
+
import { combineLatest, of, firstValueFrom, ReplaySubject, interval, startWith, takeUntil, takeWhile } from 'rxjs';
|
|
8
|
+
import { filter, map, mergeMap, takeUntil as takeUntil$1 } from 'rxjs/operators';
|
|
9
|
+
import * as i1 from '@esfaenza/core/services';
|
|
6
10
|
import { AppState } from '@esfaenza/core/services';
|
|
7
|
-
import * as i1 from '@angular/router';
|
|
8
|
-
import { NavigationEnd, RouterLinkActive, RouterLink, RouterOutlet, ActivatedRoute, Router, RouterModule } from '@angular/router';
|
|
9
11
|
import * as i3 from '@angular/platform-browser';
|
|
10
|
-
import * as
|
|
11
|
-
import { AppEmbeddingExtensions } from '@esfaenza/extensions';
|
|
12
|
+
import * as i2$1 from '@esfaenza/extensions';
|
|
13
|
+
import { AppEmbeddingExtensions, ExtensionsModule } from '@esfaenza/extensions';
|
|
12
14
|
import * as i2$2 from '@esfaenza/httpservice';
|
|
13
15
|
import { __awaiter } from 'tslib';
|
|
14
|
-
import * as i1$
|
|
15
|
-
import {
|
|
16
|
-
import { MENU_LOCALIZATION, MENU, NAVBAR_EXTENSIONS, LOGIN_URL_LEGACY, REDIRECT_MAP, EMBEDDED_ROUTE, ROUTE } from '@esfaenza/core/domain';
|
|
16
|
+
import * as i1$2 from '@esfaenza/localizations';
|
|
17
|
+
import { LocalizationService, LocalizationModule } from '@esfaenza/localizations';
|
|
18
|
+
import { MENU_LOCALIZATION, MENU, NAVBAR_EXTENSIONS, LOGIN_URL_LEGACY, REDIRECT_MAP, EMBEDDED_ROUTE, ROUTE, UpdatePasswordDto } from '@esfaenza/core/domain';
|
|
17
19
|
import { SlimScroll, ComponentHostDirective, EsModalDirective, Draggable, DirectivesModule } from '@esfaenza/core/directives';
|
|
18
|
-
import
|
|
20
|
+
import * as i7 from '@esfaenza/es-table';
|
|
21
|
+
import { EsTableColumnsDefinition, EsTableModule } from '@esfaenza/es-table';
|
|
22
|
+
import * as i6 from '@angular/forms';
|
|
23
|
+
import { FormsModule } from '@angular/forms';
|
|
19
24
|
import * as i5 from '@esfaenza/access-control';
|
|
25
|
+
import { AccessControlModule } from '@esfaenza/access-control';
|
|
20
26
|
import * as i10 from '@angular/material/slide-toggle';
|
|
21
27
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
22
|
-
import * as i8 from '@angular/forms';
|
|
23
|
-
import { FormsModule } from '@angular/forms';
|
|
24
|
-
import * as i12 from '@esfaenza/es-table';
|
|
25
|
-
import { EsTableColumnsDefinition, EsTableModule } from '@esfaenza/es-table';
|
|
26
28
|
import * as i11 from 'ngx-bootstrap/progressbar';
|
|
27
29
|
import { ProgressbarModule } from 'ngx-bootstrap/progressbar';
|
|
28
30
|
import * as i9 from 'ngx-bootstrap/dropdown';
|
|
29
31
|
import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
|
|
30
|
-
import * as i1$
|
|
31
|
-
import * as
|
|
32
|
-
import { takeUntil as takeUntil$1 } from 'rxjs/operators';
|
|
32
|
+
import * as i1$3 from '@esfaenza/preferences';
|
|
33
|
+
import * as i2$3 from '@esfaenza/signalr-notifications';
|
|
33
34
|
import { ModalModule } from 'ngx-bootstrap/modal';
|
|
35
|
+
import * as i5$1 from '@esfaenza/forms-and-validations';
|
|
36
|
+
import { FormsAndValidationsModule } from '@esfaenza/forms-and-validations';
|
|
37
|
+
import * as i7$1 from '@angular/material/tooltip';
|
|
38
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
34
39
|
|
|
35
40
|
// Angular
|
|
36
41
|
class BackTop {
|
|
@@ -75,57 +80,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
75
80
|
|
|
76
81
|
// Angular
|
|
77
82
|
class Breadcrumb {
|
|
78
|
-
constructor(_state, _activatedRoute, _titleService) {
|
|
83
|
+
constructor(_state, router, _activatedRoute, _titleService) {
|
|
79
84
|
this._state = _state;
|
|
85
|
+
this.router = router;
|
|
80
86
|
this._activatedRoute = _activatedRoute;
|
|
81
87
|
this._titleService = _titleService;
|
|
82
|
-
this.
|
|
83
|
-
this.
|
|
84
|
-
this.
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
88
|
+
this.MainLink = { title: "Dashboard", routerLink: ["/pages/dashboard"] };
|
|
89
|
+
this.SubLinks = [];
|
|
90
|
+
this.router.events.pipe(filter(event => event instanceof NavigationEnd), map((event) => { return { event: event, route: this._activatedRoute }; }), map((routeWithEvent) => {
|
|
91
|
+
while (routeWithEvent.route.firstChild)
|
|
92
|
+
routeWithEvent.route = routeWithEvent.route.firstChild;
|
|
93
|
+
return routeWithEvent;
|
|
94
|
+
}), mergeMap(routeWithEvent => combineLatest(of(routeWithEvent.event.url).pipe(map(url => this.router.parseUrl(url))), routeWithEvent.route.data))).subscribe((treePlusData) => {
|
|
95
|
+
let data = treePlusData[1];
|
|
96
|
+
let tree = treePlusData[0];
|
|
97
|
+
// true = SUB - dettaglio
|
|
98
|
+
// false = MAIN - ricerca/dashboard
|
|
99
|
+
let internalNavigation = data["InternalNavigation"];
|
|
100
|
+
let title = data["title"];
|
|
101
|
+
if (internalNavigation) {
|
|
102
|
+
this.onSubNavigation(tree, title);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this.onMainNavigation(tree, title);
|
|
106
|
+
}
|
|
107
|
+
this._titleService.setTitle(myconfig.AppData.ModuleDescription + " > " + title);
|
|
108
|
+
});
|
|
95
109
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
var index = this.subActiveLinks.indexOf(activeLink);
|
|
104
|
-
if (index != -1 && (index + 1) != this.subActiveLinks.length)
|
|
105
|
-
this.subActiveLinks.pop();
|
|
106
|
-
if (index == -1 && this.activePageTitle != activeLink)
|
|
107
|
-
this.subActiveLinks.push(activeLink);
|
|
108
|
-
this._titleService.setTitle(myconfig.AppData.ModuleDescription + " > " + activeLink);
|
|
110
|
+
ngOnInit() { }
|
|
111
|
+
onSubNavigation(tree, title) {
|
|
112
|
+
let index = this.SubLinks.indexOf(this.SubLinks.find(f => f.title == title));
|
|
113
|
+
let difference = this.SubLinks.length - (index + 1);
|
|
114
|
+
if (index != -1 && (index + 1) != this.SubLinks.length) {
|
|
115
|
+
for (let i = 0; i < difference; i++)
|
|
116
|
+
this.SubLinks.pop();
|
|
109
117
|
}
|
|
118
|
+
if (index == -1 && this.MainLink.title != title)
|
|
119
|
+
this.SubLinks.push({ title: title, routerLink: this.getRouterLink(tree) });
|
|
110
120
|
}
|
|
111
|
-
|
|
112
|
-
this.
|
|
121
|
+
onMainNavigation(tree, title) {
|
|
122
|
+
this.SubLinks = [];
|
|
123
|
+
this.MainLink = { title: title, routerLink: this.getRouterLink(tree) };
|
|
113
124
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
}
|
|
125
|
+
getRouterLink(tree) {
|
|
126
|
+
var _a, _b, _c, _d, _e;
|
|
127
|
+
let segs = (_d = (_c = (_b = (_a = tree === null || tree === void 0 ? void 0 : tree.root) === null || _a === void 0 ? void 0 : _a.children) === null || _b === void 0 ? void 0 : _b["primary"]) === null || _c === void 0 ? void 0 : _c.segments) !== null && _d !== void 0 ? _d : [];
|
|
128
|
+
let route = "/" + segs.map(t => t.path).join('/');
|
|
129
|
+
let params = (_e = segs[segs.length - 1]) === null || _e === void 0 ? void 0 : _e.parameters;
|
|
130
|
+
return [route, params];
|
|
121
131
|
}
|
|
122
132
|
}
|
|
123
|
-
Breadcrumb.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Breadcrumb, deps: [{ token:
|
|
124
|
-
Breadcrumb.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Breadcrumb, isStandalone: true, selector: "breadcrumb", ngImport: i0, template: "<
|
|
133
|
+
Breadcrumb.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Breadcrumb, deps: [{ token: i1.AppState }, { token: i1$1.Router }, { token: i1$1.ActivatedRoute }, { token: i3.Title }], target: i0.ɵɵFactoryTarget.Component });
|
|
134
|
+
Breadcrumb.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Breadcrumb, isStandalone: true, selector: "breadcrumb", ngImport: i0, template: "<ol class=\"breadcrumb app-no-selection\">\r\n <li class=\"breadcrumb-item text-uppercase breadcrumb-link\" [routerLink]=\"['/pages/dashboard']\">Dashboard</li>\r\n <li *ngIf=\"MainLink?.title != 'Dashboard'\" [routerLink]=\"MainLink.routerLink\" class=\"breadcrumb-item text-uppercase breadcrumb-link\">{{MainLink.title}}</li>\r\n <li *ngFor=\"let link of SubLinks\" class=\"breadcrumb-item text-uppercase breadcrumb-link\" [routerLink]=\"link.routerLink\">{{link.title}}</li>\r\n</ol>", styles: [".breadcrumb{padding:0;margin:0;background:transparent;color:#344154;font-size:14px}.breadcrumb-item+.breadcrumb-item:before{font-weight:400!important;color:#fff;font-family:\"Font Awesome 6 Pro\";font-size:.6rem;line-height:1.4rem;content:\"\\f054\"}.breadcrumb-item{float:left}.breadcrumb-link{cursor:pointer;font-weight:500;color:#fff!important}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
125
135
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Breadcrumb, decorators: [{
|
|
126
136
|
type: Component,
|
|
127
|
-
args: [{ selector: "breadcrumb", encapsulation: ViewEncapsulation.None, standalone: true, imports: [NgFor], template: "<
|
|
128
|
-
}], ctorParameters: function () { return [{ type:
|
|
137
|
+
args: [{ selector: "breadcrumb", encapsulation: ViewEncapsulation.None, standalone: true, imports: [NgIf, NgFor, RouterLink], template: "<ol class=\"breadcrumb app-no-selection\">\r\n <li class=\"breadcrumb-item text-uppercase breadcrumb-link\" [routerLink]=\"['/pages/dashboard']\">Dashboard</li>\r\n <li *ngIf=\"MainLink?.title != 'Dashboard'\" [routerLink]=\"MainLink.routerLink\" class=\"breadcrumb-item text-uppercase breadcrumb-link\">{{MainLink.title}}</li>\r\n <li *ngFor=\"let link of SubLinks\" class=\"breadcrumb-item text-uppercase breadcrumb-link\" [routerLink]=\"link.routerLink\">{{link.title}}</li>\r\n</ol>", styles: [".breadcrumb{padding:0;margin:0;background:transparent;color:#344154;font-size:14px}.breadcrumb-item+.breadcrumb-item:before{font-weight:400!important;color:#fff;font-family:\"Font Awesome 6 Pro\";font-size:.6rem;line-height:1.4rem;content:\"\\f054\"}.breadcrumb-item{float:left}.breadcrumb-link{cursor:pointer;font-weight:500;color:#fff!important}\n"] }]
|
|
138
|
+
}], ctorParameters: function () { return [{ type: i1.AppState }, { type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: i3.Title }]; } });
|
|
139
|
+
class BreadcrumbItem {
|
|
140
|
+
}
|
|
129
141
|
|
|
130
142
|
// Angular
|
|
131
143
|
class PageNotFoundComponent {
|
|
@@ -145,12 +157,12 @@ class PageNotFoundComponent {
|
|
|
145
157
|
this.router.navigate([url]);
|
|
146
158
|
}
|
|
147
159
|
}
|
|
148
|
-
PageNotFoundComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PageNotFoundComponent, deps: [{ token: i1.Router }, { token: i2
|
|
160
|
+
PageNotFoundComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PageNotFoundComponent, deps: [{ token: i1$1.Router }, { token: i2.Location }, { token: i2$1.AppEmbeddingExtensions }], target: i0.ɵɵFactoryTarget.Component });
|
|
149
161
|
PageNotFoundComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: PageNotFoundComponent, isStandalone: true, selector: "pagenotfound", ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-6 col-md-6 col-10 offset-xl-3 offset-md-3 offset-xs-1 p-t-10\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n <h1 class=\"display-1\">404</h1>\r\n <h6 class=\"card-title\">La risorsa richiesta non è stata trovata ma in futuro potrebbe essere disponibile.</h6>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <button type=\"button\" class=\"btn btn-secondary pull-left\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", encapsulation: i0.ViewEncapsulation.None });
|
|
150
162
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PageNotFoundComponent, decorators: [{
|
|
151
163
|
type: Component,
|
|
152
164
|
args: [{ selector: "pagenotfound", encapsulation: ViewEncapsulation.None, standalone: true, template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-6 col-md-6 col-10 offset-xl-3 offset-md-3 offset-xs-1 p-t-10\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n <h1 class=\"display-1\">404</h1>\r\n <h6 class=\"card-title\">La risorsa richiesta non è stata trovata ma in futuro potrebbe essere disponibile.</h6>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <button type=\"button\" class=\"btn btn-secondary pull-left\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
153
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2
|
|
165
|
+
}], ctorParameters: function () { return [{ type: i1$1.Router }, { type: i2.Location }, { type: i2$1.AppEmbeddingExtensions }]; } });
|
|
154
166
|
|
|
155
167
|
// Angular
|
|
156
168
|
class ServerErrorComponent {
|
|
@@ -180,12 +192,12 @@ class ServerErrorComponent {
|
|
|
180
192
|
this.router.navigate([url]);
|
|
181
193
|
}
|
|
182
194
|
}
|
|
183
|
-
ServerErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServerErrorComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token:
|
|
195
|
+
ServerErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServerErrorComponent, deps: [{ token: i1$1.Router }, { token: i1$1.ActivatedRoute }, { token: i2$1.AppEmbeddingExtensions }, { token: i1.AppState }], target: i0.ɵɵFactoryTarget.Component });
|
|
184
196
|
ServerErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ServerErrorComponent, isStandalone: true, selector: "servererror", ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-6 col-md-6 col-10 offset-xl-3 offset-md-3 offset-xs-1 p-t-10\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n <h1 class=\"display-1\" *ngIf=\"!statusCode\"> </h1>\r\n <h1 class=\"display-1\" *ngIf=\"statusCode\">{{statusCode}}</h1>\r\n <h6 class=\"card-title\" *ngIf=\"!statusText\"> </h6>\r\n <h6 class=\"card-title\" style=\"word-wrap:break-word; max-height: 500px; overflow: auto\" *ngIf=\"statusText\">{{statusText}}</h6>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <button type=\"button\" class=\"btn btn-secondary pull-left\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
185
197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServerErrorComponent, decorators: [{
|
|
186
198
|
type: Component,
|
|
187
199
|
args: [{ selector: "servererror", encapsulation: ViewEncapsulation.None, standalone: true, imports: [NgIf], template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-6 col-md-6 col-10 offset-xl-3 offset-md-3 offset-xs-1 p-t-10\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n <h1 class=\"display-1\" *ngIf=\"!statusCode\"> </h1>\r\n <h1 class=\"display-1\" *ngIf=\"statusCode\">{{statusCode}}</h1>\r\n <h6 class=\"card-title\" *ngIf=\"!statusText\"> </h6>\r\n <h6 class=\"card-title\" style=\"word-wrap:break-word; max-height: 500px; overflow: auto\" *ngIf=\"statusText\">{{statusText}}</h6>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <button type=\"button\" class=\"btn btn-secondary pull-left\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
188
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type:
|
|
200
|
+
}], ctorParameters: function () { return [{ type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: i2$1.AppEmbeddingExtensions }, { type: i1.AppState }]; } });
|
|
189
201
|
|
|
190
202
|
// Angular
|
|
191
203
|
class AngularErrorComponent {
|
|
@@ -229,15 +241,51 @@ class AngularErrorComponent {
|
|
|
229
241
|
this.router.navigate([url]);
|
|
230
242
|
}
|
|
231
243
|
}
|
|
232
|
-
AngularErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AngularErrorComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2$2.HTTPService }, { token:
|
|
244
|
+
AngularErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AngularErrorComponent, deps: [{ token: i1$1.Router }, { token: i1$1.ActivatedRoute }, { token: i2$2.HTTPService }, { token: i1.TokenService }, { token: i2$1.AppEmbeddingExtensions }], target: i0.ɵɵFactoryTarget.Component });
|
|
233
245
|
AngularErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: AngularErrorComponent, isStandalone: true, selector: "angularerror", ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-8 col-md-10 col-10 offset-xl-2 offset-xs-1 p-t-10\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n <h1 class=\"display-4\">Qualcosa è andato storto.</h1>\r\n <h6>\r\n <small>\r\n Si è verificato un errore interno all'applicazione. Questo non dovrebbe accadere. Prova a ricaricare la pagina precedente e rieffettuare le stesse operazioni, se il problema persiste contatta il service desk allegando una breve descrizione delle operazioni che stavi eseguendo e questo messaggio d'errore:\r\n </small>\r\n </h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"identityInfos\"><em>{{identityInfos}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorFrom\"><em>{{errorFrom}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorLastCalls\"><em>{{errorLastCalls}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorMessage\"><em>{{errorMessage}}</em></h6>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right app-margin-right-10\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
234
246
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AngularErrorComponent, decorators: [{
|
|
235
247
|
type: Component,
|
|
236
248
|
args: [{ selector: "angularerror", encapsulation: ViewEncapsulation.None, standalone: true, imports: [NgIf], template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-8 col-md-10 col-10 offset-xl-2 offset-xs-1 p-t-10\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n <h1 class=\"display-4\">Qualcosa è andato storto.</h1>\r\n <h6>\r\n <small>\r\n Si è verificato un errore interno all'applicazione. Questo non dovrebbe accadere. Prova a ricaricare la pagina precedente e rieffettuare le stesse operazioni, se il problema persiste contatta il service desk allegando una breve descrizione delle operazioni che stavi eseguendo e questo messaggio d'errore:\r\n </small>\r\n </h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"identityInfos\"><em>{{identityInfos}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorFrom\"><em>{{errorFrom}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorLastCalls\"><em>{{errorLastCalls}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorMessage\"><em>{{errorMessage}}</em></h6>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right app-margin-right-10\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
237
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2$2.HTTPService }, { type:
|
|
249
|
+
}], ctorParameters: function () { return [{ type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: i2$2.HTTPService }, { type: i1.TokenService }, { type: i2$1.AppEmbeddingExtensions }]; } });
|
|
250
|
+
|
|
251
|
+
class SideBarLoc extends LocalizationService {
|
|
252
|
+
constructor(injector) {
|
|
253
|
+
super(injector);
|
|
254
|
+
super.set("it->en", "Sessione Scaduta", ["Expired session"]);
|
|
255
|
+
super.set("it->en", "Backend Offline", ["Backend Offline"]);
|
|
256
|
+
super.set("it->en", "Sembra che il Backend sia momentaneamente offline. Questa pagina si aggiornera' automaticamente non appena la situazione tornera' alla normalita'. Ci scusiamo per il disagio", ["Backend seems to be currently offline. This page will reset itself when the situation goes back to normal. Sorry for the inconvenience"]);
|
|
257
|
+
super.set("it->en", "Ripulisci la Cache", ["Clear Caches"]);
|
|
258
|
+
super.set("it->en", "Cache Ripulita", ["Cache Cleared"]);
|
|
259
|
+
super.set("it->en", "Ambiente di Produzione", ["Production Environment"]);
|
|
260
|
+
super.set("it->en", "È disponibile una nuova versione per l'applicazione corrente. Si suggerisce di ricaricare la pagina (CTRL + F5)", ["A new version is available for this application. It is suggested to reload this page (CTRL + F5)"]);
|
|
261
|
+
super.set("it->en", "Le informazioni di Sessione (Tenant/Account) sono cambiate a seguito di un login su modulo diverso utilizzando diverso Tenant/Utente sullo stesso browser. Si suggerisce di ricaricare la pagina (CTRL + F5)", ["Session informations (Tenant/Account) has changed after a login to a different module with the same Tenant/Username using the same browser. It is suggested to reload this page (CTRL + F5)"]);
|
|
262
|
+
super.set("it->en", "Cambia Modulo", ["Change module"]);
|
|
263
|
+
super.set("it->en", "Cambia Tenant", ["Change tenant"]);
|
|
264
|
+
super.set("it->en", "Usa notifiche semplici", ["Use simple alerts"]);
|
|
265
|
+
super.set("it->en", "Consenti notifiche eleganti", ["Allow fancy alerts"]);
|
|
266
|
+
super.set("it->en", "Ambiente di Sviluppo", ["Development Environment"]);
|
|
267
|
+
super.set("it->en", "Ambiente di Sviluppo A", ["Development Environment A"]);
|
|
268
|
+
super.set("it->en", "Ambiente di Sviluppo B", ["Development Environment B"]);
|
|
269
|
+
super.set("it->en", "Ripulisci le Preferenze Utente", ["Clear User Preferences"]);
|
|
270
|
+
super.set("it->en", "Preferenze utente ripulite", ["User preferences has been cleared"]);
|
|
271
|
+
super.set("it->en", "Ambiente di Staging", ["Staging Environment"]);
|
|
272
|
+
super.set("it->en", "Ambiente di Staging A", ["Staging A Environment"]);
|
|
273
|
+
super.set("it->en", "L'attuale sessione di lavoro non è più valida.<br>Si prega di eseguire nuovamente il login.", ["Current session has expired.<br>Please login back into the application."]);
|
|
274
|
+
super.set("it->en", "Notifiche", ["Notifications"]);
|
|
275
|
+
super.set("it->en", "Job Applicativi", ["Application Jobs"]);
|
|
276
|
+
super.set("it->en", "Al momento non c'è nulla in esecuzione", ["Nothing being executed at the moment"]);
|
|
277
|
+
super.set("it->en", "Job Completato", ["Job Completed"]);
|
|
278
|
+
super.set("it->en", "Scrivere almeno 3 caratteri per utilizzare la ricerca globale", ["You must write at least 3 characters in order to use the Global Research"]);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
SideBarLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SideBarLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
282
|
+
SideBarLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SideBarLoc });
|
|
283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SideBarLoc, decorators: [{
|
|
284
|
+
type: Injectable
|
|
285
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
238
286
|
|
|
239
287
|
class Sidebar {
|
|
240
|
-
constructor(lc, lcMenu, cdr, _elementRef, _router, _state, zone, utiExts, aac, menuItemsRaw, menuFilteringService) {
|
|
288
|
+
constructor(lc, lcMenu, cdr, _elementRef, _router, _state, zone, utiExts, aac, menuItemsRaw, menuFilteringService, sr, globalSearchService, profile, msgExts) {
|
|
241
289
|
this.lc = lc;
|
|
242
290
|
this.cdr = cdr;
|
|
243
291
|
this._elementRef = _elementRef;
|
|
@@ -248,8 +296,21 @@ class Sidebar {
|
|
|
248
296
|
this.aac = aac;
|
|
249
297
|
this.menuItemsRaw = menuItemsRaw;
|
|
250
298
|
this.menuFilteringService = menuFilteringService;
|
|
299
|
+
this.sr = sr;
|
|
300
|
+
this.globalSearchService = globalSearchService;
|
|
301
|
+
this.profile = profile;
|
|
302
|
+
this.msgExts = msgExts;
|
|
251
303
|
this.isMenuCollapsed = false;
|
|
252
304
|
this.isMenuShouldCollapsed = false;
|
|
305
|
+
this.applicationVersion = myconfig.AppData.ComponentVersion;
|
|
306
|
+
this.applicationName = myconfig.AppData.ModuleDescription;
|
|
307
|
+
this.user = "";
|
|
308
|
+
this.tenant = "";
|
|
309
|
+
//#endregion
|
|
310
|
+
//#region Gestione Ricerca Globale
|
|
311
|
+
this.SelectedResult = null;
|
|
312
|
+
this.ShowSingleTable = false;
|
|
313
|
+
this.searchingTerm = false;
|
|
253
314
|
this.lc = this.lc.generateFromType(lcMenu);
|
|
254
315
|
this._state.subscribe("menu.isCollapsed", (isCollapsed) => {
|
|
255
316
|
this.isMenuCollapsed = isCollapsed;
|
|
@@ -267,6 +328,7 @@ class Sidebar {
|
|
|
267
328
|
window.scrollTo(0, 0);
|
|
268
329
|
}
|
|
269
330
|
});
|
|
331
|
+
this.getUserProfileData();
|
|
270
332
|
}
|
|
271
333
|
ngOnInit() {
|
|
272
334
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -303,6 +365,7 @@ class Sidebar {
|
|
|
303
365
|
this.checkSubMenuOverClaims(t, level + 1);
|
|
304
366
|
}
|
|
305
367
|
}
|
|
368
|
+
//#region JQuery
|
|
306
369
|
onWindowResize() {
|
|
307
370
|
var isMenuShouldCollapsed = this._shouldMenuCollapse();
|
|
308
371
|
if (this.isMenuShouldCollapsed !== isMenuShouldCollapsed) {
|
|
@@ -327,19 +390,23 @@ class Sidebar {
|
|
|
327
390
|
this._state.setSidebarWidth(this.sidebar.nativeElement.offsetWidth);
|
|
328
391
|
}
|
|
329
392
|
hoverItem(jQueryevent) {
|
|
330
|
-
this.
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
393
|
+
if (!this.isMenuCollapsed) {
|
|
394
|
+
this.showHoverElem = true;
|
|
395
|
+
this.hoverElemHeight = jQueryevent.currentTarget.clientHeight;
|
|
396
|
+
this.hoverElemTop = jQueryevent.currentTarget.getBoundingClientRect().top;
|
|
397
|
+
jQuery(".sidebar-hover-elem").css("top", this.hoverElemTop + "px");
|
|
398
|
+
jQuery(".sidebar-hover-elem").css("height", this.hoverElemHeight + "px");
|
|
399
|
+
jQuery(".sidebar-hover-elem").addClass("show-hover-elem");
|
|
400
|
+
}
|
|
336
401
|
}
|
|
337
402
|
sendAwayHoverElement() {
|
|
338
403
|
this.hoverElemTop = -200;
|
|
339
404
|
jQuery(".sidebar-hover-elem").css("top", this.hoverElemTop + "px");
|
|
340
405
|
}
|
|
341
406
|
updateSidebarHeight() {
|
|
342
|
-
|
|
407
|
+
let marginTop = 60 + 40;
|
|
408
|
+
let footerHeight = 150;
|
|
409
|
+
this.menuHeight = this._elementRef.nativeElement.children[0].clientHeight - marginTop - footerHeight;
|
|
343
410
|
}
|
|
344
411
|
//Nonostante questa funzione sia collegata con (click.out-zone) per qualche motivo angular le esegue comunque nella sua zone
|
|
345
412
|
//generando un po' di irresponsività iniziale... succede solo col click... boh
|
|
@@ -398,22 +465,85 @@ class Sidebar {
|
|
|
398
465
|
link.next().slideUp(slidePeriod);
|
|
399
466
|
}
|
|
400
467
|
}
|
|
468
|
+
//#endregion
|
|
469
|
+
//#region Footer
|
|
470
|
+
onChangeTenant() {
|
|
471
|
+
window.location.href = `${myconfig.AuthUrl}/login/tenant?client=${myconfig.Client}`;
|
|
472
|
+
}
|
|
473
|
+
onLogout() {
|
|
474
|
+
window.location.href = `${myconfig.AuthUrl}/logout?client=${myconfig.Client}`;
|
|
475
|
+
}
|
|
476
|
+
getUserProfileData() {
|
|
477
|
+
var identity = this.sr.getJaceIdentity();
|
|
478
|
+
if (identity) {
|
|
479
|
+
this.user = identity.FullName;
|
|
480
|
+
this.tenant = identity.TenantName;
|
|
481
|
+
this.profile.doReloadProfilePicture();
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
onSearchRequest() {
|
|
485
|
+
this.searchingTerm = true;
|
|
486
|
+
this.searchResult = null;
|
|
487
|
+
if (!this.globalSearchService.Enabled)
|
|
488
|
+
return;
|
|
489
|
+
if (this.searchTerm.trim().length < 3) {
|
|
490
|
+
this.msgExts.simpleWarning(this.lc.loc("Scrivere almeno 3 caratteri per utilizzare la ricerca globale"));
|
|
491
|
+
return;
|
|
492
|
+
}
|
|
493
|
+
this.globalSearchService.search(this.searchTerm).subscribe(t => {
|
|
494
|
+
this.searchingTerm = false;
|
|
495
|
+
this.searchResult = t;
|
|
496
|
+
// Short-circuit in assenza di risultati
|
|
497
|
+
if ((this.searchResult.results.length || 0) === 0) {
|
|
498
|
+
this.cdr.markForCheck();
|
|
499
|
+
return;
|
|
500
|
+
}
|
|
501
|
+
this.searchResult.results.forEach(t => {
|
|
502
|
+
t.est_cols = t.columns.map(c => {
|
|
503
|
+
let colLink = this.globalSearchService.generateColumnLink(c);
|
|
504
|
+
return new EsTableColumnsDefinition(c.description, c.id, colLink === null || colLink === void 0 ? void 0 : colLink.routePath, colLink === null || colLink === void 0 ? void 0 : colLink.routeProperties);
|
|
505
|
+
});
|
|
506
|
+
this.cdr.markForCheck();
|
|
507
|
+
});
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
onSearchModelChanged() {
|
|
511
|
+
if (!this.searchingTerm)
|
|
512
|
+
this.closeSearch();
|
|
513
|
+
}
|
|
514
|
+
closeSearch() {
|
|
515
|
+
this.searchingTerm = false;
|
|
516
|
+
this.searchResult = null;
|
|
517
|
+
this.cdr.markForCheck();
|
|
518
|
+
}
|
|
519
|
+
FilterSearchResults(item = null) {
|
|
520
|
+
this.SelectedResult = null;
|
|
521
|
+
this.ShowSingleTable = true;
|
|
522
|
+
requestAnimationFrame(() => {
|
|
523
|
+
var _a, _b;
|
|
524
|
+
if (item)
|
|
525
|
+
this.SelectedResult = (_b = (_a = this.searchResult) === null || _a === void 0 ? void 0 : _a.results) === null || _b === void 0 ? void 0 : _b.find(f => f.description == item.description);
|
|
526
|
+
else
|
|
527
|
+
this.ShowSingleTable = false;
|
|
528
|
+
this.cdr.markForCheck();
|
|
529
|
+
});
|
|
530
|
+
}
|
|
401
531
|
}
|
|
402
|
-
Sidebar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Sidebar, deps: [{ token: i1$
|
|
403
|
-
Sidebar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Sidebar, isStandalone: true, selector: "sidebar", host: { listeners: { "window:resize": "onWindowResize()" } }, viewQueries: [{ propertyName: "sidebar", first: true, predicate: ["sidebar"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"app-sidebar\" [class.menu-collapsed]=\"isMenuCollapsed\" #sidebar (mouseleave.out-zone)=\"sendAwayHoverElement();\">\r\n <ul class=\"nav nav-sidebar flex-column flex-nowrap\" slim-scroll [slimScrollOptions]=\"{height: menuHeight}\">\r\n\r\n <ng-container *ngFor=\"let item of menuItems\">\r\n <li *ngIf=\"item.visible\" class=\"sidebar-list-item level-{{item.level}}\" \r\n [class.has-sub-menu] =\"item.subMenu\" \r\n [class.sidebar-item-expanded]=\"item.expanded\" \r\n [class.sidebar-item-wip]=\"item.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : {$implicit: item}\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n\r\n <div class=\"sidebar-hover-elem\"></div>\r\n</div>\r\n\r\n<ng-template #menuItem let-item>\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"(!item.routerLink && !item.subMenu) || item.wip\" [href]=\"item.link || '#'\" (click)=\"item.wip && $event.preventDefault()\" target=\"_blank\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"item.routerLink && !item.subMenu && !item.wip\" class=\"sidebar-list-link {{item.cssClass || ''}}\" [routerLink]=\"[item.routerLink]\" [queryParams]=\"item.queryParams\" routerLinkActive=\"active-link\" (click.out-zone)=\"collapseMenu($event, item)\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"item.subMenu && !item.wip\" (click.out-zone)=\"collapseMenu($event, item)\" [attr.href]=\"''\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n <b class=\"fa fa-angle-down\"></b>\r\n </a>\r\n\r\n <ul *ngIf=\"item.subMenu\" class=\"sidebar-sublist\">\r\n <ng-container *ngFor=\"let subitem of item.subMenu\" >\r\n <li *ngIf=\"subitem.visible\" class=\"sidebar-sublist-item level-{{item.level}}\" [class.sidebar-item-wip]=\"subitem.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : {$implicit: subitem}\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</ng-template>", styles: [".app-sidebar{background:#344154;height:100%;min-height:100%;position:fixed;width:230px;overflow:hidden;display:block;z-index:9;margin-top:60px}.app-sidebar ul{position:relative;zoom:1}.app-sidebar.menu-collapsed{width:44px}.app-sidebar.menu-collapsed a.sidebar-list-link b{display:none}.app-sidebar.menu-collapsed .sidebar-sublist{position:absolute;top:-1px;left:52px;width:0;display:block;overflow:hidden}.sidebar-list-item{display:block;position:relative;float:none;padding:0;border-bottom:1px solid rgba(36,45,58,.5);box-shadow:0 1px #ffffff1a}.sidebar-item-wip{cursor:default}.sidebar-item-wip a{color:#999!important}a.sidebar-list-link{display:block;height:42px;padding-top:0!important;text-shadow:none;font-size:13px;letter-spacing:.02em;text-decoration:none;color:#fff;line-height:42px;white-space:nowrap;overflow:hidden;cursor:pointer;transition:all .2s ease}a.sidebar-list-link i{margin-right:10px;width:16px;display:inline-block}a.sidebar-list-link b{display:block;opacity:1;width:14px;height:14px;line-height:14px;text-shadow:none;font-size:18px;position:absolute;right:10px;top:14px;padding:0;text-align:center;color:#fff;transition:transform .2s linear}a.sidebar-list-link:hover{background-color:#242d3a}.sidebar-list-item.sidebar-item-expanded>.sidebar-list-link b,.sidebar-sublist-item.sidebar-item-expanded>.sidebar-list-link b{transform:rotate(180deg)}.sidebar-sublist{display:none;padding:0;list-style:none;position:relative;background-color:#242d3a80}.sidebar-sublist li{display:block;float:none;padding:0;border-bottom:none;position:relative;border-bottom:1px solid rgba(36,45,58,.7)}.sidebar-sublist li:last-child{border-bottom:none}.sidebar-sublist li a{display:block;text-shadow:none;font-size:13px;text-decoration:none;color:#fff;height:42px;line-height:42px}.sidebar-sublist li a:before{font-family:FontAwesome;content:\"\\f1db\";margin-right:10px;font-size:10px}.sidebar-sublist li a:hover{background-color:#242d3a}.sidebar-sublist .subitem-submenu-list li{border-top:1px solid rgba(36,45,58,.7)}.sidebar-item-expanded>ul.sidebar-sublist{display:block;background-color:#242d3a80}.subitem-submenu-link .fa{top:14px}.sidebar-hover-elem{width:4px;background:#637CA0;position:absolute;top:-150px;left:226px;transition:all .2s ease;transition-property:top,height;height:36px;display:block}.sidebar.menu-collapsed .sidebar-hover-elem{left:46px}.active-link{background-color:#637ca0}@media (max-width: 544px){.sidebar.menu-collapsed{width:0}.sidebar-hover-elem,.sidebar-select-elem{display:none}}\n"], dependencies: [{ kind: "directive", type: SlimScroll, selector: "[slim-scroll]", inputs: ["slimScrollOptions"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$1.LocalizePipe, name: "localize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
532
|
+
Sidebar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Sidebar, deps: [{ token: i1$2.LocalizationService }, { token: MENU_LOCALIZATION, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1$1.Router }, { token: i1.AppState }, { token: i0.NgZone }, { token: i2$1.UtilityService }, { token: i5.AccessControlService }, { token: MENU }, { token: i1.MenuFilteringService }, { token: i1.TokenService }, { token: i1.GlobalSearchService }, { token: i1.UserPreferencesService }, { token: i2$1.MessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
533
|
+
Sidebar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Sidebar, isStandalone: true, selector: "sidebar", host: { listeners: { "window:resize": "onWindowResize()" } }, viewQueries: [{ propertyName: "sidebar", first: true, predicate: ["sidebar"], descendants: true, static: true }], ngImport: i0, template: "<div #sidebar class=\"app-sidebar\" [class.menu-collapsed]=\"isMenuCollapsed\" (mouseleave.out-zone)=\"sendAwayHoverElement();\">\r\n <!--Jace Logo-->\r\n <div class=\"app-logo-container\">\r\n <div class=\"app-pointer\" [routerLink]=\"['/pages/dashboard']\" style=\"margin-bottom: 10px; overflow: hidden\">\r\n <img *ngIf=\"!isMenuCollapsed\" class=\"app-logo-img\" src=\"assets/img/logo/logo.png\" alt=\"\">\r\n <img *ngIf=\"isMenuCollapsed\" class=\"app-logo-img-sm\" src=\"assets/img/logo/logo_sm.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <!--Ricerca globale-->\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-search\">\r\n <form novalidate role=\"search\" class=\"app-search\" (ngSubmit)=\"onSearchRequest()\">\r\n <input type=\"text\" placeholder=\"Ricerca...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"onSearchModelChanged()\" name=\"search\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"far fa-magnifying-glass\"></i></a>\r\n </form>\r\n </div>\r\n <!--Barra laterale con tutte le voci di Menu-->\r\n <ul class=\"nav nav-sidebar flex-column flex-nowrap\" style=\"position: relative; zoom: 1\" slim-scroll [slimScrollOptions]=\"{height: menuHeight}\">\r\n <li *ngFor=\"let item of menuItems; let last = last;\" \r\n class=\"sidebar-list-item level-{{item.level}}\" \r\n [style.margin-bottom]=\"last ? '42px' : '0px'\" \r\n [class.has-sub-menu]=\"item.subMenu\"\r\n [class.sidebar-item-expanded]=\"item.expanded\" \r\n [class.sidebar-item-wip]=\"item.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : { $implicit: item }\"></ng-container>\r\n </li>\r\n </ul>\r\n <!--Selettore Barra dei Menu-->\r\n <div class=\"sidebar-hover-elem\"></div>\r\n <!--Footer-->\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-footer\">\r\n <!--Minuscolo fade tra sidebar e inizio footer-->\r\n <div class=\"app-sidebar-footer-fade\"></div>\r\n <div class=\"app-padding-15\">\r\n <!--Informazioni utente collegato-->\r\n <div class=\"app-sidebar-footer-user-container\">\r\n <!--Mentre sto ancora caricando la ProfilePic mi assicuro di mostrare un placeholder-->\r\n <div *ngIf=\"!profile.ProfilePicture\" class=\"app-sidebar-footer-user-img-placeholder\">\r\n <i class=\"far fa-2x fa-spinner fa-spin-pulse\" style=\"color: black; margin-top: 5px;\"></i>\r\n </div>\r\n <!--Una volta caricata la ProfilePic nascondo il placeholder e la mostro-->\r\n <ng-container *ngIf=\"profile.ProfilePicture\">\r\n <img [src]=\"profile.ProfilePicture\" alt=\"\" class=\"app-sidebar-footer-user-img app-pointer\" [routerLink]=\"['/pages/profile']\">\r\n <div class=\"app-sidebar-footer-user-status\"></div>\r\n </ng-container>\r\n <!--Username animato quando supera i 15 caratteri-->\r\n <div class=\"app-sidebar-footer-user-name-container\">\r\n <div class=\"username-text\" [class.username-text-animator]=\"user?.length > 15\">{{user}}</div>\r\n <div class=\"tenantname-text\">{{tenant}}</div>\r\n </div>\r\n </div>\r\n <!--Operazioni rapide (Logout, Cambia tenant, Guida, Supporto,...)-->\r\n <div class=\"app-sidebar-footer-quick-ops\">\r\n <div (click)=\"onLogout();\" class=\"app-sidebar-footer-op app-no-selection\"><i class=\"far fa-right-from-bracket\"></i> Logout</div>\r\n <div (click)=\"onChangeTenant();\" class=\"app-sidebar-footer-op app-no-selection\"><i class=\"far fa-right-left\"></i> Cambia Tenant</div>\r\n </div>\r\n <!--Versione corrente applicazione-->\r\n <div class=\"app-sidebar-footer-ver\">\r\n v{{applicationVersion}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #menuItem let-item>\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"(!item.routerLink && !item.subMenu) || item.wip\" [href]=\"item.link || '#'\" (click)=\"item.wip && $event.preventDefault()\" target=\"_blank\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"item.routerLink && !item.subMenu && !item.wip\" class=\"sidebar-list-link {{item.cssClass || ''}}\" [routerLink]=\"[item.routerLink]\" [queryParams]=\"item.queryParams\" routerLinkActive=\"active-link\" (click.out-zone)=\"collapseMenu($event, item)\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"item.subMenu && !item.wip\" (click.out-zone)=\"collapseMenu($event, item)\" [attr.href]=\"''\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n <b class=\"fa fa-angle-down\"></b>\r\n </a>\r\n\r\n <ul *ngIf=\"item.subMenu\" class=\"sidebar-sublist\">\r\n <ng-container *ngFor=\"let subitem of item.subMenu\" >\r\n <li *ngIf=\"subitem.visible\" class=\"sidebar-sublist-item level-{{item.level}}\" [class.sidebar-item-wip]=\"subitem.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : {$implicit: subitem}\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</ng-template>\r\n\r\n<!-- Overlay per la ricerca globale -->\r\n<ng-container *ngIf=\"searchingTerm || searchResult\">\r\n <div class=\"app-absolute app-search-background\">\r\n <div class=\"app-search-result-box\">\r\n <ng-container *ngIf=\"searchingTerm\">\r\n <div class=\"app-search-card\"><i class=\"fa fa-spinner fa-spin\"></i>Sto effettuando la ricerca...</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"searchResult && !searchingTerm\">\r\n <div class=\"row\" style=\"height: 100%;\">\r\n <!-- Spazio a sinistra -->\r\n <div class=\"col-md-1\"></div>\r\n <!-- Blocco con le categorie dei risultati -->\r\n <div class=\"col-md-3\">\r\n <div class=\"app-search-card\">\r\n <div class=\"app-relative\"><a class=\"fa fa-times text-danger app-absolute app-right-0 app-fs-20 app-pointer\" (click)=\"closeSearch();\"></a></div>\r\n <h4>Categorie di Ricerca</h4>\r\n <div class=\"app-pointer app-link\" [class.app-bold]=\"!SelectedResult && !ShowSingleTable\">\r\n <span (click)=\"FilterSearchResults()\">{{SelectedResult ? '-' : '>'}} Mostra Tutto</span>\r\n </div>\r\n <div *ngFor=\"let item of searchResult.results\" class=\"app-pointer app-link\" [class.app-bold]=\"SelectedResult?.description == item.description\">\r\n <span (click)=\"FilterSearchResults(item)\">{{SelectedResult?.description == item.description ? '>' : '-'}} Mostra {{item.description}} ({{item.items?.length}})</span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Dettaglio risultati -->\r\n <div class=\"col-md-7\" style=\"overflow: auto; height: 100%;\">\r\n <ng-container *ngIf=\"!SelectedResult && !ShowSingleTable\">\r\n <div *ngFor=\"let res of searchResult.results; let i = index;\" class=\"app-search-card\" [style.margin-bottom.px]=\"i == (searchResult.results?.length - 1) ? 2 : 10\">\r\n <h4>{{res.description}}</h4>\r\n <es-table [(ngModel)]=\"res.items\" [DynamicRowColumnsDefinition]=\"res.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"SelectedResult && ShowSingleTable\">\r\n <div class=\"app-search-card\">\r\n <h4>{{SelectedResult.description}}</h4>\r\n <es-table [(ngModel)]=\"SelectedResult.items\" [DynamicRowColumnsDefinition]=\"SelectedResult.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- Spazio a destra -->\r\n <div class=\"col-md-1\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: [".app-sidebar{background:#344154;box-shadow:8px 0 6px -6px #1313130a,12px 0 16px -16px #1313130d;height:100%;min-height:100%;width:230px;overflow:hidden;display:block;z-index:9}.app-sidebar.menu-collapsed{width:50px}.app-sidebar.menu-collapsed a.sidebar-list-link b{display:none}.app-sidebar.menu-collapsed .sidebar-sublist{position:absolute;top:-1px;left:52px;width:0;display:block;overflow:hidden}.sidebar-list-item{display:block;position:relative;float:none;padding:0;border-bottom:1px solid #485974}.sidebar-item-wip{cursor:default}a.sidebar-list-link{display:block;height:42px;padding-top:0!important;text-shadow:none;font-size:13px;letter-spacing:.02em;text-decoration:none;color:#fff;line-height:42px;white-space:nowrap;overflow:hidden;cursor:pointer;transition:all .2s ease}a.sidebar-list-link i{margin-right:16px;width:16px;display:inline-block}a.sidebar-list-link b{display:block;opacity:1;width:14px;height:14px;line-height:14px;text-shadow:none;font-size:18px;position:absolute;right:10px;top:14px;padding:0;text-align:center;transition:transform .2s linear}a.sidebar-list-link:hover{background-color:#2a3544}.sidebar-list-item.sidebar-item-expanded>.sidebar-list-link b,.sidebar-sublist-item.sidebar-item-expanded>.sidebar-list-link b{transform:rotate(180deg)}.sidebar-sublist{display:none;padding:0;list-style:none;position:relative;background-color:#3e4d64}.sidebar-sublist .level-1{background-color:#364357}.sidebar-sublist .level-2{background-color:#2e3a4b}.sidebar-sublist li{display:block;float:none;padding:0;border-bottom:none;position:relative;border-top:1px solid #485974}.sidebar-sublist li a{display:block;text-shadow:none;font-size:13px;text-decoration:none;height:42px;line-height:42px}.sidebar-sublist li a:before{font-family:FontAwesome;content:\"\\f1db\";margin-right:10px;font-size:10px}.sidebar-sublist li a:hover{background-color:#2a3544}.sidebar-item-expanded>ul.sidebar-sublist{display:block;background-color:#3e4d64}.subitem-submenu-link .fa{top:14px}.sidebar-hover-elem{width:4px;background-color:#024a88;position:absolute;top:-90px;left:226px;transition:all .2s ease;transition-property:top,height;height:36px;display:block}.sidebar.menu-collapsed .sidebar-hover-elem{left:46px}.active-link{background-color:#677ea1!important}@media (max-width: 544px){.sidebar.menu-collapsed{width:0}.sidebar-hover-elem,.sidebar-select-elem{display:none}}.app-logo-container{height:60px;background-color:#2a3544;display:flex;position:relative;z-index:10;margin-bottom:-1px;border-bottom:1px solid #485974;color:#fff}.app-sidebar-search{height:39px;border-bottom:42px solid #344154}.app-logo-placeholder{text-align:center;font-size:1.2rem;text-transform:uppercase;font-weight:700;margin-top:15px!important}.app-logo-img{width:210px;margin:10px 0 0 10px}.app-logo-img-sm{padding-top:10px}.app-sidebar-footer{position:relative;background-color:#344154}.app-sidebar-footer-fade{top:-42px;position:absolute;background-image:linear-gradient(to top,#344154,rgba(52,65,84,0));height:42px;width:230px;z-index:100}.app-sidebar-footer-user-container{position:relative;display:flex;margin-top:5px;color:#fff}.app-sidebar-footer-user-img-placeholder{height:40px;min-width:40px;width:40px;text-align:center}.app-sidebar-footer-user-img{height:40px;min-height:40px;min-width:40px;width:40px;border-radius:50%;border:1px solid #485974}.app-sidebar-footer-user-status{background-color:#32cd32;border:1px solid green;border-radius:50%;position:absolute;left:29px;top:29px;height:11px;width:11px}.app-sidebar-footer-user-name-container{width:150px;white-space:nowrap;overflow:hidden;margin-left:10px}.username-text{z-index:1;min-width:140px;display:flex;font-size:16px}.username-text-animator:hover{transform:translate(100%);animation:my-animation 3s linear infinite}@keyframes my-animation{0%{transform:translate(0)}to{transform:translate(-50%)}}.tenantname-text{font-size:12px}.app-sidebar-footer-quick-ops{margin-top:10px;display:flex;justify-content:space-between}.app-sidebar-footer-op{color:#fff;font-weight:700;cursor:pointer}.app-sidebar-footer-ver{text-align:right;margin-top:30px;color:#fff}.app-search{position:relative}.app-search a{position:absolute;top:8px;right:14px;font-size:16px;color:#fff!important}.app-search .form-control{font-size:12px;letter-spacing:.03em;height:40px;color:#fff;padding:7px 40px 7px 20px;background:#3e4d64;box-shadow:none!important;border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:1px solid #485974}\n"], dependencies: [{ kind: "directive", type: SlimScroll, selector: "[slim-scroll]", inputs: ["slimScrollOptions"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: EsTableModule }, { kind: "component", type: i7.EsTableComponent, selector: "es-table", inputs: ["EsThTdProvider", "CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "Height", "EmptySpaceBackgroundColor", "EsTableHandledSearch", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "ExportOnlyVisibleColumns", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "DefaultAlignment", "PagingStyle", "RowGroupingPagingStyle", "ItemSourceProperty", "UseSelectionCache", "ShowItemGroupsColumns", "Editable", "RangeSelection", "SearchThrottle", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onModelChange", "onOpenContextMenu", "onCornerAction", "onDynamicOperation"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$2.LocalizePipe, name: "localize" }], viewProviders: [{ provide: LocalizationService, useClass: SideBarLoc }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
404
534
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Sidebar, decorators: [{
|
|
405
535
|
type: Component,
|
|
406
|
-
args: [{ selector: "sidebar", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgClass, SlimScroll, NgFor, NgTemplateOutlet, NgIf, RouterLinkActive, RouterLink, LocalizationModule], template: "<div class=\"app-sidebar\" [class.menu-collapsed]=\"isMenuCollapsed\" #sidebar (mouseleave.out-zone)=\"sendAwayHoverElement();\">\r\n <ul class=\"nav nav-sidebar flex-column flex-nowrap\" slim-scroll [slimScrollOptions]=\"{height: menuHeight}\">\r\n\r\n <ng-container *ngFor=\"let item of menuItems\">\r\n <li *ngIf=\"item.visible\" class=\"sidebar-list-item level-{{item.level}}\" \r\n [class.has-sub-menu] =\"item.subMenu\" \r\n [class.sidebar-item-expanded]=\"item.expanded\" \r\n [class.sidebar-item-wip]=\"item.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : {$implicit: item}\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n\r\n <div class=\"sidebar-hover-elem\"></div>\r\n</div>\r\n\r\n<ng-template #menuItem let-item>\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"(!item.routerLink && !item.subMenu) || item.wip\" [href]=\"item.link || '#'\" (click)=\"item.wip && $event.preventDefault()\" target=\"_blank\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"item.routerLink && !item.subMenu && !item.wip\" class=\"sidebar-list-link {{item.cssClass || ''}}\" [routerLink]=\"[item.routerLink]\" [queryParams]=\"item.queryParams\" routerLinkActive=\"active-link\" (click.out-zone)=\"collapseMenu($event, item)\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"item.subMenu && !item.wip\" (click.out-zone)=\"collapseMenu($event, item)\" [attr.href]=\"''\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n <b class=\"fa fa-angle-down\"></b>\r\n </a>\r\n\r\n <ul *ngIf=\"item.subMenu\" class=\"sidebar-sublist\">\r\n <ng-container *ngFor=\"let subitem of item.subMenu\" >\r\n <li *ngIf=\"subitem.visible\" class=\"sidebar-sublist-item level-{{item.level}}\" [class.sidebar-item-wip]=\"subitem.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : {$implicit: subitem}\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</ng-template>", styles: [".app-sidebar{background:#344154;height:100%;min-height:100%;position:fixed;width:230px;overflow:hidden;display:block;z-index:9;margin-top:60px}.app-sidebar ul{position:relative;zoom:1}.app-sidebar.menu-collapsed{width:44px}.app-sidebar.menu-collapsed a.sidebar-list-link b{display:none}.app-sidebar.menu-collapsed .sidebar-sublist{position:absolute;top:-1px;left:52px;width:0;display:block;overflow:hidden}.sidebar-list-item{display:block;position:relative;float:none;padding:0;border-bottom:1px solid rgba(36,45,58,.5);box-shadow:0 1px #ffffff1a}.sidebar-item-wip{cursor:default}.sidebar-item-wip a{color:#999!important}a.sidebar-list-link{display:block;height:42px;padding-top:0!important;text-shadow:none;font-size:13px;letter-spacing:.02em;text-decoration:none;color:#fff;line-height:42px;white-space:nowrap;overflow:hidden;cursor:pointer;transition:all .2s ease}a.sidebar-list-link i{margin-right:10px;width:16px;display:inline-block}a.sidebar-list-link b{display:block;opacity:1;width:14px;height:14px;line-height:14px;text-shadow:none;font-size:18px;position:absolute;right:10px;top:14px;padding:0;text-align:center;color:#fff;transition:transform .2s linear}a.sidebar-list-link:hover{background-color:#242d3a}.sidebar-list-item.sidebar-item-expanded>.sidebar-list-link b,.sidebar-sublist-item.sidebar-item-expanded>.sidebar-list-link b{transform:rotate(180deg)}.sidebar-sublist{display:none;padding:0;list-style:none;position:relative;background-color:#242d3a80}.sidebar-sublist li{display:block;float:none;padding:0;border-bottom:none;position:relative;border-bottom:1px solid rgba(36,45,58,.7)}.sidebar-sublist li:last-child{border-bottom:none}.sidebar-sublist li a{display:block;text-shadow:none;font-size:13px;text-decoration:none;color:#fff;height:42px;line-height:42px}.sidebar-sublist li a:before{font-family:FontAwesome;content:\"\\f1db\";margin-right:10px;font-size:10px}.sidebar-sublist li a:hover{background-color:#242d3a}.sidebar-sublist .subitem-submenu-list li{border-top:1px solid rgba(36,45,58,.7)}.sidebar-item-expanded>ul.sidebar-sublist{display:block;background-color:#242d3a80}.subitem-submenu-link .fa{top:14px}.sidebar-hover-elem{width:4px;background:#637CA0;position:absolute;top:-150px;left:226px;transition:all .2s ease;transition-property:top,height;height:36px;display:block}.sidebar.menu-collapsed .sidebar-hover-elem{left:46px}.active-link{background-color:#637ca0}@media (max-width: 544px){.sidebar.menu-collapsed{width:0}.sidebar-hover-elem,.sidebar-select-elem{display:none}}\n"] }]
|
|
536
|
+
args: [{ selector: "sidebar", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [{ provide: LocalizationService, useClass: SideBarLoc }], standalone: true, imports: [NgClass, SlimScroll, NgFor, NgTemplateOutlet, NgIf, RouterLinkActive, RouterLink, FormsModule, EsTableModule, LocalizationModule], template: "<div #sidebar class=\"app-sidebar\" [class.menu-collapsed]=\"isMenuCollapsed\" (mouseleave.out-zone)=\"sendAwayHoverElement();\">\r\n <!--Jace Logo-->\r\n <div class=\"app-logo-container\">\r\n <div class=\"app-pointer\" [routerLink]=\"['/pages/dashboard']\" style=\"margin-bottom: 10px; overflow: hidden\">\r\n <img *ngIf=\"!isMenuCollapsed\" class=\"app-logo-img\" src=\"assets/img/logo/logo.png\" alt=\"\">\r\n <img *ngIf=\"isMenuCollapsed\" class=\"app-logo-img-sm\" src=\"assets/img/logo/logo_sm.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <!--Ricerca globale-->\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-search\">\r\n <form novalidate role=\"search\" class=\"app-search\" (ngSubmit)=\"onSearchRequest()\">\r\n <input type=\"text\" placeholder=\"Ricerca...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"onSearchModelChanged()\" name=\"search\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"far fa-magnifying-glass\"></i></a>\r\n </form>\r\n </div>\r\n <!--Barra laterale con tutte le voci di Menu-->\r\n <ul class=\"nav nav-sidebar flex-column flex-nowrap\" style=\"position: relative; zoom: 1\" slim-scroll [slimScrollOptions]=\"{height: menuHeight}\">\r\n <li *ngFor=\"let item of menuItems; let last = last;\" \r\n class=\"sidebar-list-item level-{{item.level}}\" \r\n [style.margin-bottom]=\"last ? '42px' : '0px'\" \r\n [class.has-sub-menu]=\"item.subMenu\"\r\n [class.sidebar-item-expanded]=\"item.expanded\" \r\n [class.sidebar-item-wip]=\"item.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : { $implicit: item }\"></ng-container>\r\n </li>\r\n </ul>\r\n <!--Selettore Barra dei Menu-->\r\n <div class=\"sidebar-hover-elem\"></div>\r\n <!--Footer-->\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-footer\">\r\n <!--Minuscolo fade tra sidebar e inizio footer-->\r\n <div class=\"app-sidebar-footer-fade\"></div>\r\n <div class=\"app-padding-15\">\r\n <!--Informazioni utente collegato-->\r\n <div class=\"app-sidebar-footer-user-container\">\r\n <!--Mentre sto ancora caricando la ProfilePic mi assicuro di mostrare un placeholder-->\r\n <div *ngIf=\"!profile.ProfilePicture\" class=\"app-sidebar-footer-user-img-placeholder\">\r\n <i class=\"far fa-2x fa-spinner fa-spin-pulse\" style=\"color: black; margin-top: 5px;\"></i>\r\n </div>\r\n <!--Una volta caricata la ProfilePic nascondo il placeholder e la mostro-->\r\n <ng-container *ngIf=\"profile.ProfilePicture\">\r\n <img [src]=\"profile.ProfilePicture\" alt=\"\" class=\"app-sidebar-footer-user-img app-pointer\" [routerLink]=\"['/pages/profile']\">\r\n <div class=\"app-sidebar-footer-user-status\"></div>\r\n </ng-container>\r\n <!--Username animato quando supera i 15 caratteri-->\r\n <div class=\"app-sidebar-footer-user-name-container\">\r\n <div class=\"username-text\" [class.username-text-animator]=\"user?.length > 15\">{{user}}</div>\r\n <div class=\"tenantname-text\">{{tenant}}</div>\r\n </div>\r\n </div>\r\n <!--Operazioni rapide (Logout, Cambia tenant, Guida, Supporto,...)-->\r\n <div class=\"app-sidebar-footer-quick-ops\">\r\n <div (click)=\"onLogout();\" class=\"app-sidebar-footer-op app-no-selection\"><i class=\"far fa-right-from-bracket\"></i> Logout</div>\r\n <div (click)=\"onChangeTenant();\" class=\"app-sidebar-footer-op app-no-selection\"><i class=\"far fa-right-left\"></i> Cambia Tenant</div>\r\n </div>\r\n <!--Versione corrente applicazione-->\r\n <div class=\"app-sidebar-footer-ver\">\r\n v{{applicationVersion}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #menuItem let-item>\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"(!item.routerLink && !item.subMenu) || item.wip\" [href]=\"item.link || '#'\" (click)=\"item.wip && $event.preventDefault()\" target=\"_blank\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"item.routerLink && !item.subMenu && !item.wip\" class=\"sidebar-list-link {{item.cssClass || ''}}\" [routerLink]=\"[item.routerLink]\" [queryParams]=\"item.queryParams\" routerLinkActive=\"active-link\" (click.out-zone)=\"collapseMenu($event, item)\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"item.subMenu && !item.wip\" (click.out-zone)=\"collapseMenu($event, item)\" [attr.href]=\"''\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n <b class=\"fa fa-angle-down\"></b>\r\n </a>\r\n\r\n <ul *ngIf=\"item.subMenu\" class=\"sidebar-sublist\">\r\n <ng-container *ngFor=\"let subitem of item.subMenu\" >\r\n <li *ngIf=\"subitem.visible\" class=\"sidebar-sublist-item level-{{item.level}}\" [class.sidebar-item-wip]=\"subitem.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : {$implicit: subitem}\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</ng-template>\r\n\r\n<!-- Overlay per la ricerca globale -->\r\n<ng-container *ngIf=\"searchingTerm || searchResult\">\r\n <div class=\"app-absolute app-search-background\">\r\n <div class=\"app-search-result-box\">\r\n <ng-container *ngIf=\"searchingTerm\">\r\n <div class=\"app-search-card\"><i class=\"fa fa-spinner fa-spin\"></i>Sto effettuando la ricerca...</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"searchResult && !searchingTerm\">\r\n <div class=\"row\" style=\"height: 100%;\">\r\n <!-- Spazio a sinistra -->\r\n <div class=\"col-md-1\"></div>\r\n <!-- Blocco con le categorie dei risultati -->\r\n <div class=\"col-md-3\">\r\n <div class=\"app-search-card\">\r\n <div class=\"app-relative\"><a class=\"fa fa-times text-danger app-absolute app-right-0 app-fs-20 app-pointer\" (click)=\"closeSearch();\"></a></div>\r\n <h4>Categorie di Ricerca</h4>\r\n <div class=\"app-pointer app-link\" [class.app-bold]=\"!SelectedResult && !ShowSingleTable\">\r\n <span (click)=\"FilterSearchResults()\">{{SelectedResult ? '-' : '>'}} Mostra Tutto</span>\r\n </div>\r\n <div *ngFor=\"let item of searchResult.results\" class=\"app-pointer app-link\" [class.app-bold]=\"SelectedResult?.description == item.description\">\r\n <span (click)=\"FilterSearchResults(item)\">{{SelectedResult?.description == item.description ? '>' : '-'}} Mostra {{item.description}} ({{item.items?.length}})</span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Dettaglio risultati -->\r\n <div class=\"col-md-7\" style=\"overflow: auto; height: 100%;\">\r\n <ng-container *ngIf=\"!SelectedResult && !ShowSingleTable\">\r\n <div *ngFor=\"let res of searchResult.results; let i = index;\" class=\"app-search-card\" [style.margin-bottom.px]=\"i == (searchResult.results?.length - 1) ? 2 : 10\">\r\n <h4>{{res.description}}</h4>\r\n <es-table [(ngModel)]=\"res.items\" [DynamicRowColumnsDefinition]=\"res.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"SelectedResult && ShowSingleTable\">\r\n <div class=\"app-search-card\">\r\n <h4>{{SelectedResult.description}}</h4>\r\n <es-table [(ngModel)]=\"SelectedResult.items\" [DynamicRowColumnsDefinition]=\"SelectedResult.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- Spazio a destra -->\r\n <div class=\"col-md-1\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: [".app-sidebar{background:#344154;box-shadow:8px 0 6px -6px #1313130a,12px 0 16px -16px #1313130d;height:100%;min-height:100%;width:230px;overflow:hidden;display:block;z-index:9}.app-sidebar.menu-collapsed{width:50px}.app-sidebar.menu-collapsed a.sidebar-list-link b{display:none}.app-sidebar.menu-collapsed .sidebar-sublist{position:absolute;top:-1px;left:52px;width:0;display:block;overflow:hidden}.sidebar-list-item{display:block;position:relative;float:none;padding:0;border-bottom:1px solid #485974}.sidebar-item-wip{cursor:default}a.sidebar-list-link{display:block;height:42px;padding-top:0!important;text-shadow:none;font-size:13px;letter-spacing:.02em;text-decoration:none;color:#fff;line-height:42px;white-space:nowrap;overflow:hidden;cursor:pointer;transition:all .2s ease}a.sidebar-list-link i{margin-right:16px;width:16px;display:inline-block}a.sidebar-list-link b{display:block;opacity:1;width:14px;height:14px;line-height:14px;text-shadow:none;font-size:18px;position:absolute;right:10px;top:14px;padding:0;text-align:center;transition:transform .2s linear}a.sidebar-list-link:hover{background-color:#2a3544}.sidebar-list-item.sidebar-item-expanded>.sidebar-list-link b,.sidebar-sublist-item.sidebar-item-expanded>.sidebar-list-link b{transform:rotate(180deg)}.sidebar-sublist{display:none;padding:0;list-style:none;position:relative;background-color:#3e4d64}.sidebar-sublist .level-1{background-color:#364357}.sidebar-sublist .level-2{background-color:#2e3a4b}.sidebar-sublist li{display:block;float:none;padding:0;border-bottom:none;position:relative;border-top:1px solid #485974}.sidebar-sublist li a{display:block;text-shadow:none;font-size:13px;text-decoration:none;height:42px;line-height:42px}.sidebar-sublist li a:before{font-family:FontAwesome;content:\"\\f1db\";margin-right:10px;font-size:10px}.sidebar-sublist li a:hover{background-color:#2a3544}.sidebar-item-expanded>ul.sidebar-sublist{display:block;background-color:#3e4d64}.subitem-submenu-link .fa{top:14px}.sidebar-hover-elem{width:4px;background-color:#024a88;position:absolute;top:-90px;left:226px;transition:all .2s ease;transition-property:top,height;height:36px;display:block}.sidebar.menu-collapsed .sidebar-hover-elem{left:46px}.active-link{background-color:#677ea1!important}@media (max-width: 544px){.sidebar.menu-collapsed{width:0}.sidebar-hover-elem,.sidebar-select-elem{display:none}}.app-logo-container{height:60px;background-color:#2a3544;display:flex;position:relative;z-index:10;margin-bottom:-1px;border-bottom:1px solid #485974;color:#fff}.app-sidebar-search{height:39px;border-bottom:42px solid #344154}.app-logo-placeholder{text-align:center;font-size:1.2rem;text-transform:uppercase;font-weight:700;margin-top:15px!important}.app-logo-img{width:210px;margin:10px 0 0 10px}.app-logo-img-sm{padding-top:10px}.app-sidebar-footer{position:relative;background-color:#344154}.app-sidebar-footer-fade{top:-42px;position:absolute;background-image:linear-gradient(to top,#344154,rgba(52,65,84,0));height:42px;width:230px;z-index:100}.app-sidebar-footer-user-container{position:relative;display:flex;margin-top:5px;color:#fff}.app-sidebar-footer-user-img-placeholder{height:40px;min-width:40px;width:40px;text-align:center}.app-sidebar-footer-user-img{height:40px;min-height:40px;min-width:40px;width:40px;border-radius:50%;border:1px solid #485974}.app-sidebar-footer-user-status{background-color:#32cd32;border:1px solid green;border-radius:50%;position:absolute;left:29px;top:29px;height:11px;width:11px}.app-sidebar-footer-user-name-container{width:150px;white-space:nowrap;overflow:hidden;margin-left:10px}.username-text{z-index:1;min-width:140px;display:flex;font-size:16px}.username-text-animator:hover{transform:translate(100%);animation:my-animation 3s linear infinite}@keyframes my-animation{0%{transform:translate(0)}to{transform:translate(-50%)}}.tenantname-text{font-size:12px}.app-sidebar-footer-quick-ops{margin-top:10px;display:flex;justify-content:space-between}.app-sidebar-footer-op{color:#fff;font-weight:700;cursor:pointer}.app-sidebar-footer-ver{text-align:right;margin-top:30px;color:#fff}.app-search{position:relative}.app-search a{position:absolute;top:8px;right:14px;font-size:16px;color:#fff!important}.app-search .form-control{font-size:12px;letter-spacing:.03em;height:40px;color:#fff;padding:7px 40px 7px 20px;background:#3e4d64;box-shadow:none!important;border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:1px solid #485974}\n"] }]
|
|
407
537
|
}], ctorParameters: function () {
|
|
408
|
-
return [{ type: i1$
|
|
538
|
+
return [{ type: i1$2.LocalizationService }, { type: i0.Type, decorators: [{
|
|
409
539
|
type: Optional
|
|
410
540
|
}, {
|
|
411
541
|
type: Inject,
|
|
412
542
|
args: [MENU_LOCALIZATION]
|
|
413
|
-
}] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.Router }, { type:
|
|
543
|
+
}] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1$1.Router }, { type: i1.AppState }, { type: i0.NgZone }, { type: i2$1.UtilityService }, { type: i5.AccessControlService }, { type: undefined, decorators: [{
|
|
414
544
|
type: Inject,
|
|
415
545
|
args: [MENU]
|
|
416
|
-
}] }, { type:
|
|
546
|
+
}] }, { type: i1.MenuFilteringService }, { type: i1.TokenService }, { type: i1.GlobalSearchService }, { type: i1.UserPreferencesService }, { type: i2$1.MessageService }];
|
|
417
547
|
}, propDecorators: { sidebar: [{
|
|
418
548
|
type: ViewChild,
|
|
419
549
|
args: ["sidebar", { static: true }]
|
|
@@ -487,11 +617,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
487
617
|
const GET_Jace_GetActiveJaceModules = "/api/Jace/GetActiveJaceModules";
|
|
488
618
|
const GET_Cache_ClearAllCaches = "/api/Cache/ClearAllCaches";
|
|
489
619
|
class Navbar extends ReactiveComponent {
|
|
490
|
-
constructor(prefsService, cacheService,
|
|
620
|
+
constructor(prefsService, cacheService, MessageDef, notifications, msgExts, lc, http, cdr, _state, sr, router, cjrService, extensionComponents, loginUrlLegacy) {
|
|
491
621
|
super();
|
|
492
622
|
this.prefsService = prefsService;
|
|
493
623
|
this.cacheService = cacheService;
|
|
494
|
-
this.globalSearchService = globalSearchService;
|
|
495
624
|
this.MessageDef = MessageDef;
|
|
496
625
|
this.notifications = notifications;
|
|
497
626
|
this.msgExts = msgExts;
|
|
@@ -509,10 +638,6 @@ class Navbar extends ReactiveComponent {
|
|
|
509
638
|
this.isMenuCollapsed = false;
|
|
510
639
|
this.anomaliesProcessing = false;
|
|
511
640
|
this.newVersionWarned = false;
|
|
512
|
-
// ***************************************** Gestione Ricerca Globale *****************************************
|
|
513
|
-
this.SelectedResult = null;
|
|
514
|
-
this.ShowSingleTable = false;
|
|
515
|
-
this.searchingTerm = false;
|
|
516
641
|
this._state.subscribe("menu.isCollapsed", (isCollapsed) => { this.isMenuCollapsed = isCollapsed; });
|
|
517
642
|
this._state.subscribe("app.completedJob", (jobDescription) => {
|
|
518
643
|
this.msgExts.simpleSuccess(this.lc.loc("Job Completato") + (jobDescription ? (": " + jobDescription) : ''), "toastr");
|
|
@@ -623,61 +748,14 @@ class Navbar extends ReactiveComponent {
|
|
|
623
748
|
completedJobClicked(job) {
|
|
624
749
|
this.cjrService.redirect(job);
|
|
625
750
|
}
|
|
626
|
-
searchRequest() {
|
|
627
|
-
this.searchingTerm = true;
|
|
628
|
-
this.searchResult = null;
|
|
629
|
-
if (!this.globalSearchService.Enabled)
|
|
630
|
-
return;
|
|
631
|
-
if (this.searchTerm.trim().length < 3) {
|
|
632
|
-
this.msgExts.simpleWarning(this.lc.loc("Scrivere almeno 3 caratteri per utilizzare la ricerca globale"));
|
|
633
|
-
return;
|
|
634
|
-
}
|
|
635
|
-
this.globalSearchService.search(this.searchTerm).subscribe(t => {
|
|
636
|
-
this.searchingTerm = false;
|
|
637
|
-
this.searchResult = t;
|
|
638
|
-
// Short-circuit in assenza di risultati
|
|
639
|
-
if ((this.searchResult.results.length || 0) === 0) {
|
|
640
|
-
this.cdr.markForCheck();
|
|
641
|
-
return;
|
|
642
|
-
}
|
|
643
|
-
this.searchResult.results.forEach(t => {
|
|
644
|
-
t.est_cols = t.columns.map(c => {
|
|
645
|
-
let colLink = this.globalSearchService.generateColumnLink(c);
|
|
646
|
-
return new EsTableColumnsDefinition(c.description, c.id, colLink === null || colLink === void 0 ? void 0 : colLink.routePath, colLink === null || colLink === void 0 ? void 0 : colLink.routeProperties);
|
|
647
|
-
});
|
|
648
|
-
this.cdr.markForCheck();
|
|
649
|
-
});
|
|
650
|
-
});
|
|
651
|
-
}
|
|
652
|
-
searchModelChanged() {
|
|
653
|
-
if (!this.searchingTerm)
|
|
654
|
-
this.closeSearch();
|
|
655
|
-
}
|
|
656
|
-
closeSearch() {
|
|
657
|
-
this.searchingTerm = false;
|
|
658
|
-
this.searchResult = null;
|
|
659
|
-
this.cdr.markForCheck();
|
|
660
|
-
}
|
|
661
|
-
FilterSearchResults(item = null) {
|
|
662
|
-
this.SelectedResult = null;
|
|
663
|
-
this.ShowSingleTable = true;
|
|
664
|
-
requestAnimationFrame(() => {
|
|
665
|
-
var _a, _b;
|
|
666
|
-
if (item)
|
|
667
|
-
this.SelectedResult = (_b = (_a = this.searchResult) === null || _a === void 0 ? void 0 : _a.results) === null || _b === void 0 ? void 0 : _b.find(f => f.description == item.description);
|
|
668
|
-
else
|
|
669
|
-
this.ShowSingleTable = false;
|
|
670
|
-
this.cdr.markForCheck();
|
|
671
|
-
});
|
|
672
|
-
}
|
|
673
751
|
}
|
|
674
|
-
Navbar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Navbar, deps: [{ token: i1$
|
|
675
|
-
Navbar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Navbar, isStandalone: true, selector: "navbar", viewQueries: [{ propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<nav #navbar class=\"nav az-navbar fixed-top\">\r\n <!-- Logo -->\r\n <a class=\"navbar-brand\" routerLink=\"/pages/dashboard\">\r\n <img src=\"../assets/img/logo/logo.png\" class=\"d-md-block d-none\" style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-v d-md-block d-none\">{{ applicationVersion }}</div>\r\n\r\n <img src=\"../assets/img/logo/logo_sm.png\" class=\"d-md-none\" style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-sm-v d-md-none\">{{ applicationVersion }}</div>\r\n </a>\r\n\r\n <ul class=\"nav navbar-nav navbar-fillable\" style=\"display: flex;\">\r\n <!-- Collapse men\u00F9 a sinistra -->\r\n <li style=\"display: flex;\">\r\n <a (click)=\"toggleMenu()\" style=\"color: white; font-size: 20px; align-self: center;\" class=\"fa fa-navicon\"></a>\r\n </li>\r\n\r\n <!-- Search -->\r\n <li style=\"display: flex;\">\r\n <form class=\"app-search\" style=\"align-self: center;\" role=\"search\" (ngSubmit)=\"searchRequest()\">\r\n <input type=\"text\" placeholder=\"Search...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"searchModelChanged()\" [ngModelOptions]=\"{standalone : true}\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"ion-ios-search-strong\"></i></a>\r\n <button hidden></button>\r\n </form>\r\n </li>\r\n\r\n <ul class=\"nav\" style=\"margin-left: auto; padding-top: 5px; padding-right: 10px;\">\r\n\r\n <!--Dropdown job in esecuzione-->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" style=\"display: flex;\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a [class.fa-spin]=\"_state.jobsInProgress > 0\" class=\"fa fa-cog dropdown-toggle app-pointer\" style=\"color: white; font-size: 20px; align-self: center;\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span>{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"pull-right m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n <span class=\"pull-right app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{ 'Completed' | localize : lc }}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n <!--Dropdown moduli-->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" style=\"display: flex;\">\r\n <a class=\"fa fa-th app-pointer\" style=\"color: white !important; font-size: 20px; align-self: center;\" (click)=\"goToDashboard();\"></a>\r\n </div>\r\n\r\n <!-- Punti di estensione per Calendar, Chatroom e chi pi\u00F9 ne ha pi\u00F9 ne metta... -->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" *ngFor=\"let comp of extensionComponents\">\r\n <ng-template [componentHost]=\"comp\"></ng-template>\r\n </div>\r\n\r\n <!--Dropdown User Menu-->\r\n <div class=\"user-menu app-no-selection\" dropdown container=\"body\" placement=\"bottom right\" style=\"height:45px; padding-right: 10px;\">\r\n <a class=\"dropdown-toggle user-link app-pointer\" dropdownToggle>\r\n <div class=\"pull-left app-margin-right-10 app-relative\">\r\n <ng-container *ngTemplateOutlet=\"userIcon;\"></ng-container>\r\n </div>\r\n <div class=\"app-white-text pull-right d-none d-sm-block\">\r\n <ng-container *ngTemplateOutlet=\"debugInfos\"></ng-container>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </a>\r\n\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"user-info\">\r\n <div class=\"app-relative\">\r\n <ng-container *ngTemplateOutlet=\"userIcon; context: { $implicit: {right: 62} }\"></ng-container>\r\n </div>\r\n <div class=\"app-white-text app-margin-top-10 app-margin-bottom-10\">\r\n <ng-container *ngTemplateOutlet=\"debugInfos\"></ng-container>\r\n </div>\r\n </li>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"lc.Locale == 'en-US'\" (click)=\"lc.changeLocale('it-IT')\"><i class=\"fa fa-globe\"> </i>Switch to Italian Site</a>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"lc.Locale == 'it-IT'\" (click)=\"lc.changeLocale('en-US')\"><i class=\"fa fa-globe\"> </i>Passa al Sito in Inglese</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeModule()\"><i class=\"fa fa-th\"> </i>{{'Cambia Modulo' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeTenant()\"><i class=\"fa fa-building\"> </i>{{'Cambia Tenant' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\"><i class=\"fa fa-user-times\"> </i>{{'Ripulisci le Preferenze Utente' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearAll()\"><i class=\"fa fa-recycle \"> </i>{{'Ripulisci la Cache' | localize : lc}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"logout()\"><i class=\"fa fa-power-off\"> </i>Log out</a>\r\n </ul>\r\n </div>\r\n </ul>\r\n </ul>\r\n</nav>\r\n\r\n<!-- Template per l'icona dell'utente -->\r\n<ng-template #userIcon let-context>\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.halloweenTime\">\r\n</ng-template>\r\n\r\n<!-- Template per le informaizoni di debug: Ambiente, ruoli, permessi ecc -->\r\n<ng-template #debugInfos>\r\n <div>{{CurrentIdentity?.FullName}} - ({{CurrentIdentity?.TenantName}})</div>\r\n <div hidden>{{applicationEnvironment}}</div>\r\n <div class=\"text-sm-center\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Overlay per la ricerca globale -->\r\n<ng-container *ngIf=\"searchingTerm || searchResult\">\r\n <div class=\"app-absolute app-search-background\">\r\n <div class=\"app-search-result-box\">\r\n <ng-container *ngIf=\"searchingTerm\">\r\n <div class=\"app-search-card\"><i class=\"fa fa-spinner fa-spin\"></i>Sto effettuando la ricerca...</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"searchResult && !searchingTerm\">\r\n <div class=\"row\" style=\"height: 100%;\">\r\n <!-- Spazio a sinistra -->\r\n <div class=\"col-md-1\"></div>\r\n <!-- Blocco con le categorie dei risultati -->\r\n <div class=\"col-md-3\">\r\n <div class=\"app-search-card\">\r\n <div class=\"app-relative\"><a class=\"fa fa-times text-danger app-absolute app-right-0 app-fs-20 app-pointer\" (click)=\"closeSearch();\"></a></div>\r\n <h4>Categorie di Ricerca</h4>\r\n <div class=\"app-pointer app-link\" [class.app-bold]=\"!SelectedResult && !ShowSingleTable\">\r\n <span (click)=\"FilterSearchResults()\">{{SelectedResult ? '-' : '>'}} Mostra Tutto</span>\r\n </div>\r\n <div *ngFor=\"let item of searchResult.results\" class=\"app-pointer app-link\" [class.app-bold]=\"SelectedResult?.description == item.description\">\r\n <span (click)=\"FilterSearchResults(item)\">{{SelectedResult?.description == item.description ? '>' : '-'}} Mostra {{item.description}} ({{item.items?.length}})</span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Dettaglio risultati -->\r\n <div class=\"col-md-7\" style=\"overflow: auto; height: 100%;\">\r\n <ng-container *ngIf=\"!SelectedResult && !ShowSingleTable\">\r\n <div *ngFor=\"let res of searchResult.results; let i = index;\" class=\"app-search-card\" [style.margin-bottom.px]=\"i == (searchResult.results?.length - 1) ? 2 : 10\">\r\n <h4>{{res.description}}</h4>\r\n <es-table [(ngModel)]=\"res.items\" [DynamicRowColumnsDefinition]=\"res.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"SelectedResult && ShowSingleTable\">\r\n <div class=\"app-search-card\">\r\n <h4>{{SelectedResult.description}}</h4>\r\n <es-table [(ngModel)]=\"SelectedResult.items\" [DynamicRowColumnsDefinition]=\"SelectedResult.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- Spazio a destra -->\r\n <div class=\"col-md-1\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #ccc}.nav-jobs-menu-header{padding:8px;font-size:14px;background-color:#242d3a;margin-top:-5px;margin-left:-5px;margin-right:-5px}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.nav.az-navbar{height:60px;align-items:center;background-color:#242d3a}.nav.az-navbar .navbar-brand{width:205px;padding-top:0;font-size:0;margin-left:10px}.navbar-nav{flex-direction:row}#lines{border-bottom:7px double;border-top:2px solid;border-color:#ffffffe6;content:\"\";height:3px;width:20px;box-sizing:content-box;cursor:pointer}#lines:hover{opacity:.8}.app-search{position:relative;margin-left:20px}.app-search a{position:absolute;top:3px;right:14px;font-size:16px;color:#ffffff4d}.app-search .form-control{border:1px solid rgba(255,255,255,.1);font-size:11px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:190px}.app-search input{border:1px solid rgba(255,255,255,.1);font-size:12px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:240px}.completer-selected-row{background-color:#0275d8!important;color:#fff!important;width:100%!important}.completer-row{width:100%!important;color:#fff!important}.completer-dropdown{margin-top:2px!important;background-color:#344154f7!important;color:#fff;border-color:#111!important;box-shadow:0 6px 12px #0003}.search-results{left:-85px;top:-2px;z-index:1050;color:#fff;background-color:#344154f7}.search-results .btn-sm{padding:.15rem .25rem;font-size:.5rem}.search-results:before{content:\"\";border:0px}.search-results a{color:#242d3a}.search-results a:hover{color:#fff;background-color:#0275d8;cursor:pointer}.search-results a i{margin-right:8px}.right-section{position:absolute;right:10px;top:10px}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#242d3a}.user-menu .dropdown-menu a:hover{color:#fff;background-color:#242d3a}.user-menu .dropdown-menu a i{margin-right:8px}.user-link{margin-right:6px}.user-link span{color:#fff;margin-left:7px;letter-spacing:.02em}.user-link img{width:40px;border-radius:50%}.user-link:hover,.user-link:focus{text-decoration:none}.user-info{background-color:#242d3a;padding:8px;text-align:center;width:240px;margin-bottom:5px}.user-info img{width:100px;margin-top:5px;border-radius:50%}.user-info p{color:#ebebeb;margin-top:10px}.user-info small{display:block}@media (max-width: 767px){.nav.az-navbar .navbar-brand{width:auto}}.navbar-search{color:#ffffff80!important}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 8px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.collapse-menu-link{color:#fff!important;font-size:20px;padding-top:5px;cursor:pointer}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:10px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.overlay{height:100%;width:100%;display:none;padding-left:10%;padding-right:10%;position:fixed;z-index:999999;left:0;top:0;background-color:#000;background-color:#000000e6;overflow-x:hidden;transition:.5s}.overlay-content{position:relative;top:25%;width:100%;text-align:center;margin-top:30px}.overlay p{padding:8px;text-decoration:none;font-size:36px;color:#818181;display:block;transition:.3s}.overlay a:hover,.overlay a:focus{color:#f1f1f1}.overlay .closebtn{position:absolute;top:20px;right:45px;font-size:60px}@media screen and (max-height: 450px){.overlay a{font-size:20px}.overlay .closebtn{font-size:40px;top:15px;right:35px}}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i9.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i9.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i9.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i10.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ProgressbarModule }, { kind: "component", type: i11.ProgressbarComponent, selector: "progressbar", inputs: ["max", "animate", "striped", "type", "value"] }, { kind: "directive", type: ComponentHostDirective, selector: "[componentHost]", inputs: ["componentHost", "Inputs"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: EsTableModule }, { kind: "component", type: i12.EsTableComponent, selector: "es-table", inputs: ["EsThTdProvider", "CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "Height", "EmptySpaceBackgroundColor", "EsTableHandledSearch", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "ExportOnlyVisibleColumns", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "DefaultAlignment", "PagingStyle", "RowGroupingPagingStyle", "ItemSourceProperty", "UseSelectionCache", "ShowItemGroupsColumns", "Editable", "RangeSelection", "SearchThrottle", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onModelChange", "onOpenContextMenu", "onCornerAction", "onDynamicOperation"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$1.LocalizePipe, name: "localize" }], viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
752
|
+
Navbar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Navbar, deps: [{ token: i1$3.PreferencesService }, { token: i1$3.CacheService }, { token: i2$3.BaseMessageService }, { token: i2$3.NotificationsService }, { token: i2$1.MessageService }, { token: i1$2.LocalizationService }, { token: i2$2.HTTPService }, { token: i0.ChangeDetectorRef }, { token: i1.AppState }, { token: i1.TokenService }, { token: i1$1.Router }, { token: i1.CompletedJobRedirectionService }, { token: NAVBAR_EXTENSIONS }, { token: LOGIN_URL_LEGACY }], target: i0.ɵɵFactoryTarget.Component });
|
|
753
|
+
Navbar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Navbar, isStandalone: true, selector: "navbar", viewQueries: [{ propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<nav #navbar class=\"nav enuma-navbar\">\r\n <div class=\"d-flex\" style=\"width: 100%;\">\r\n <!-- Collapse men\u00F9 a sinistra -->\r\n <div><a (click)=\"toggleMenu()\" class=\"far fa-bars nav-icon app-padding-left-15\" style=\"padding-top: 9px;\"></a></div>\r\n\r\n <!-- Breadcrumb -->\r\n <div class=\"app-padding-left-15\" style=\"padding-top: 8px;\"><ng-content></ng-content></div>\r\n\r\n <div style=\"margin-left: auto; display: flex;\">\r\n <!--Notifications (Jobs)-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <div *ngIf=\"_state.jobsInProgress > 0\" class=\"fa-beat-fade nav-jobs-icon-notification\"></div>\r\n <a [class.fa-shake]=\"_state.jobsInProgress > 0\" class=\"far fa-bell module-nav-menu-link dropdown-toggle app-pointer\" style=\"--fa-animation-duration: 3s; --fa-animation-iteration-count: 1;\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span>{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"pull-right m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n <span class=\"pull-right app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{'Completed' | localize : lc}}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n \r\n <!--Other Modules-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"far fa-cubes module-nav-menu-link dropdown-toggle app-pointer\" (click)=\"goToDashboard()\"></a>\r\n </div>\r\n\r\n <!--Quick Actions-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"far fa-folder-gear module-nav-menu-link dropdown-toggle app-pointer\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"d-flex dropdown-title-bg\">\r\n <div class=\"dropdown-title\">Gestisci Cache Utente</div>\r\n </li>\r\n <li class=\"dropdown-top\"></li>\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\">\r\n <i class=\"far fa-user-times app-margin-right-10\"></i>{{'Ripulisci le Preferenze Utente' | localize : lc}}\r\n </li>\r\n <!-- <li class=\"dropdown-divider\"></li> -->\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearAll()\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache' | localize : lc}}\r\n </li>\r\n <li class=\"dropdown-bot\"></li>\r\n </ul>\r\n </div>\r\n \r\n <!--Punti di estensione per Calendar, Chatroom e chi pi\u00F9 ne ha pi\u00F9 ne metta...-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" *ngFor=\"let comp of extensionComponents\">\r\n <ng-template [componentHost]=\"comp\"></ng-template>\r\n </div>\r\n </div>\r\n\r\n <!--Ambiente-->\r\n <div>\r\n <div class=\"nav-environment app-no-selection\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n </div>\r\n\r\n <!--Debugging ruoli e permessi-->\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n </div>\r\n</nav>\r\n\r\n<!-- Template per l'icona dell'utente -->\r\n<ng-template #userIcon let-context>\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.halloweenTime\">\r\n</ng-template>\r\n\r\n<!-- Template per le informaizoni di debug: Ambiente, ruoli, permessi ecc -->\r\n<ng-template #debugInfos>\r\n <div>{{CurrentIdentity?.FullName}} - ({{CurrentIdentity?.TenantName}})</div>\r\n <div hidden>{{applicationEnvironment}}</div>\r\n <div class=\"text-sm-center\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n</ng-template>", styles: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-icon-notification{top:7px;left:-7px;position:absolute;background-color:#0056b3;border-radius:50%;height:8px;width:8px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #3e4d64}.nav-jobs-menu-header{background-color:#344154;padding:8px;font-size:14px;margin-top:-5px;margin-left:-5px;margin-right:-5px}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#024a88}.user-menu .dropdown-menu a:hover{color:#fff8a9;background-color:red}.user-menu .dropdown-menu a i{margin-right:8px}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 11px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:8px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.dropdown-title-bg{background-color:#344154;border:1px solid #3e4d64;border-bottom:0px}.dropdown-title{color:#fff;margin:auto;padding:8px 0;font-size:18px}.dropdown-menu{background-color:#fff;border:none}.dropdown-divider{border-top:1px solid #eeeeee}.dropdown-item{background-color:#fff;color:#0056b3}.dropdown-item:hover{color:#004a9a!important;background-color:#eee}.dropdown-top{background-color:#fff;height:0;margin-bottom:.5rem;overflow:hidden;border-top:1px solid #eeeeee}.dropdown-bot{background-color:#fff;height:0;margin-top:.5rem;overflow:hidden;border-top:1px solid #eeeeee}.enuma-navbar{height:60px;align-items:center;background-color:#2a3544;box-shadow:0 8px 6px -6px #1313130a,0 12px 16px -16px #1313130d;margin-bottom:-1px;border-bottom:1px solid #191E29}.nav-environment{color:#fff;background-color:#3e4d64;text-align:center;padding:5px 10px;margin:2px 10px 0 0}.nav-icon{color:#fff!important;font-size:20px;cursor:pointer}.nav-right-section{position:absolute;right:10px;top:10px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i9.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i9.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i9.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i10.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ProgressbarModule }, { kind: "component", type: i11.ProgressbarComponent, selector: "progressbar", inputs: ["max", "animate", "striped", "type", "value"] }, { kind: "directive", type: ComponentHostDirective, selector: "[componentHost]", inputs: ["componentHost", "Inputs"] }, { kind: "ngmodule", type: EsTableModule }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$2.LocalizePipe, name: "localize" }], viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
676
754
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Navbar, decorators: [{
|
|
677
755
|
type: Component,
|
|
678
|
-
args: [{ selector: "navbar", viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [RouterLink, FormsModule, BsDropdownModule, MatSlideToggleModule, NgIf, NgFor, ProgressbarModule, ComponentHostDirective, NgTemplateOutlet, EsTableModule, LocalizationModule], template: "<nav #navbar class=\"nav az-navbar fixed-top\">\r\n <!-- Logo -->\r\n <a class=\"navbar-brand\" routerLink=\"/pages/dashboard\">\r\n <img src=\"../assets/img/logo/logo.png\" class=\"d-md-block d-none\" style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-v d-md-block d-none\">{{ applicationVersion }}</div>\r\n\r\n <img src=\"../assets/img/logo/logo_sm.png\" class=\"d-md-none\" style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-sm-v d-md-none\">{{ applicationVersion }}</div>\r\n </a>\r\n\r\n <ul class=\"nav navbar-nav navbar-fillable\" style=\"display: flex;\">\r\n <!-- Collapse men\u00F9 a sinistra -->\r\n <li style=\"display: flex;\">\r\n <a (click)=\"toggleMenu()\" style=\"color: white; font-size: 20px; align-self: center;\" class=\"fa fa-navicon\"></a>\r\n </li>\r\n\r\n <!-- Search -->\r\n <li style=\"display: flex;\">\r\n <form class=\"app-search\" style=\"align-self: center;\" role=\"search\" (ngSubmit)=\"searchRequest()\">\r\n <input type=\"text\" placeholder=\"Search...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"searchModelChanged()\" [ngModelOptions]=\"{standalone : true}\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"ion-ios-search-strong\"></i></a>\r\n <button hidden></button>\r\n </form>\r\n </li>\r\n\r\n <ul class=\"nav\" style=\"margin-left: auto; padding-top: 5px; padding-right: 10px;\">\r\n\r\n <!--Dropdown job in esecuzione-->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" style=\"display: flex;\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a [class.fa-spin]=\"_state.jobsInProgress > 0\" class=\"fa fa-cog dropdown-toggle app-pointer\" style=\"color: white; font-size: 20px; align-self: center;\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span>{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"pull-right m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n <span class=\"pull-right app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{ 'Completed' | localize : lc }}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n <!--Dropdown moduli-->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" style=\"display: flex;\">\r\n <a class=\"fa fa-th app-pointer\" style=\"color: white !important; font-size: 20px; align-self: center;\" (click)=\"goToDashboard();\"></a>\r\n </div>\r\n\r\n <!-- Punti di estensione per Calendar, Chatroom e chi pi\u00F9 ne ha pi\u00F9 ne metta... -->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" *ngFor=\"let comp of extensionComponents\">\r\n <ng-template [componentHost]=\"comp\"></ng-template>\r\n </div>\r\n\r\n <!--Dropdown User Menu-->\r\n <div class=\"user-menu app-no-selection\" dropdown container=\"body\" placement=\"bottom right\" style=\"height:45px; padding-right: 10px;\">\r\n <a class=\"dropdown-toggle user-link app-pointer\" dropdownToggle>\r\n <div class=\"pull-left app-margin-right-10 app-relative\">\r\n <ng-container *ngTemplateOutlet=\"userIcon;\"></ng-container>\r\n </div>\r\n <div class=\"app-white-text pull-right d-none d-sm-block\">\r\n <ng-container *ngTemplateOutlet=\"debugInfos\"></ng-container>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </a>\r\n\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"user-info\">\r\n <div class=\"app-relative\">\r\n <ng-container *ngTemplateOutlet=\"userIcon; context: { $implicit: {right: 62} }\"></ng-container>\r\n </div>\r\n <div class=\"app-white-text app-margin-top-10 app-margin-bottom-10\">\r\n <ng-container *ngTemplateOutlet=\"debugInfos\"></ng-container>\r\n </div>\r\n </li>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"lc.Locale == 'en-US'\" (click)=\"lc.changeLocale('it-IT')\"><i class=\"fa fa-globe\"> </i>Switch to Italian Site</a>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"lc.Locale == 'it-IT'\" (click)=\"lc.changeLocale('en-US')\"><i class=\"fa fa-globe\"> </i>Passa al Sito in Inglese</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeModule()\"><i class=\"fa fa-th\"> </i>{{'Cambia Modulo' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeTenant()\"><i class=\"fa fa-building\"> </i>{{'Cambia Tenant' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\"><i class=\"fa fa-user-times\"> </i>{{'Ripulisci le Preferenze Utente' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearAll()\"><i class=\"fa fa-recycle \"> </i>{{'Ripulisci la Cache' | localize : lc}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"logout()\"><i class=\"fa fa-power-off\"> </i>Log out</a>\r\n </ul>\r\n </div>\r\n </ul>\r\n </ul>\r\n</nav>\r\n\r\n<!-- Template per l'icona dell'utente -->\r\n<ng-template #userIcon let-context>\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.halloweenTime\">\r\n</ng-template>\r\n\r\n<!-- Template per le informaizoni di debug: Ambiente, ruoli, permessi ecc -->\r\n<ng-template #debugInfos>\r\n <div>{{CurrentIdentity?.FullName}} - ({{CurrentIdentity?.TenantName}})</div>\r\n <div hidden>{{applicationEnvironment}}</div>\r\n <div class=\"text-sm-center\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Overlay per la ricerca globale -->\r\n<ng-container *ngIf=\"searchingTerm || searchResult\">\r\n <div class=\"app-absolute app-search-background\">\r\n <div class=\"app-search-result-box\">\r\n <ng-container *ngIf=\"searchingTerm\">\r\n <div class=\"app-search-card\"><i class=\"fa fa-spinner fa-spin\"></i>Sto effettuando la ricerca...</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"searchResult && !searchingTerm\">\r\n <div class=\"row\" style=\"height: 100%;\">\r\n <!-- Spazio a sinistra -->\r\n <div class=\"col-md-1\"></div>\r\n <!-- Blocco con le categorie dei risultati -->\r\n <div class=\"col-md-3\">\r\n <div class=\"app-search-card\">\r\n <div class=\"app-relative\"><a class=\"fa fa-times text-danger app-absolute app-right-0 app-fs-20 app-pointer\" (click)=\"closeSearch();\"></a></div>\r\n <h4>Categorie di Ricerca</h4>\r\n <div class=\"app-pointer app-link\" [class.app-bold]=\"!SelectedResult && !ShowSingleTable\">\r\n <span (click)=\"FilterSearchResults()\">{{SelectedResult ? '-' : '>'}} Mostra Tutto</span>\r\n </div>\r\n <div *ngFor=\"let item of searchResult.results\" class=\"app-pointer app-link\" [class.app-bold]=\"SelectedResult?.description == item.description\">\r\n <span (click)=\"FilterSearchResults(item)\">{{SelectedResult?.description == item.description ? '>' : '-'}} Mostra {{item.description}} ({{item.items?.length}})</span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Dettaglio risultati -->\r\n <div class=\"col-md-7\" style=\"overflow: auto; height: 100%;\">\r\n <ng-container *ngIf=\"!SelectedResult && !ShowSingleTable\">\r\n <div *ngFor=\"let res of searchResult.results; let i = index;\" class=\"app-search-card\" [style.margin-bottom.px]=\"i == (searchResult.results?.length - 1) ? 2 : 10\">\r\n <h4>{{res.description}}</h4>\r\n <es-table [(ngModel)]=\"res.items\" [DynamicRowColumnsDefinition]=\"res.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"SelectedResult && ShowSingleTable\">\r\n <div class=\"app-search-card\">\r\n <h4>{{SelectedResult.description}}</h4>\r\n <es-table [(ngModel)]=\"SelectedResult.items\" [DynamicRowColumnsDefinition]=\"SelectedResult.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- Spazio a destra -->\r\n <div class=\"col-md-1\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #ccc}.nav-jobs-menu-header{padding:8px;font-size:14px;background-color:#242d3a;margin-top:-5px;margin-left:-5px;margin-right:-5px}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.nav.az-navbar{height:60px;align-items:center;background-color:#242d3a}.nav.az-navbar .navbar-brand{width:205px;padding-top:0;font-size:0;margin-left:10px}.navbar-nav{flex-direction:row}#lines{border-bottom:7px double;border-top:2px solid;border-color:#ffffffe6;content:\"\";height:3px;width:20px;box-sizing:content-box;cursor:pointer}#lines:hover{opacity:.8}.app-search{position:relative;margin-left:20px}.app-search a{position:absolute;top:3px;right:14px;font-size:16px;color:#ffffff4d}.app-search .form-control{border:1px solid rgba(255,255,255,.1);font-size:11px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:190px}.app-search input{border:1px solid rgba(255,255,255,.1);font-size:12px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:240px}.completer-selected-row{background-color:#0275d8!important;color:#fff!important;width:100%!important}.completer-row{width:100%!important;color:#fff!important}.completer-dropdown{margin-top:2px!important;background-color:#344154f7!important;color:#fff;border-color:#111!important;box-shadow:0 6px 12px #0003}.search-results{left:-85px;top:-2px;z-index:1050;color:#fff;background-color:#344154f7}.search-results .btn-sm{padding:.15rem .25rem;font-size:.5rem}.search-results:before{content:\"\";border:0px}.search-results a{color:#242d3a}.search-results a:hover{color:#fff;background-color:#0275d8;cursor:pointer}.search-results a i{margin-right:8px}.right-section{position:absolute;right:10px;top:10px}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#242d3a}.user-menu .dropdown-menu a:hover{color:#fff;background-color:#242d3a}.user-menu .dropdown-menu a i{margin-right:8px}.user-link{margin-right:6px}.user-link span{color:#fff;margin-left:7px;letter-spacing:.02em}.user-link img{width:40px;border-radius:50%}.user-link:hover,.user-link:focus{text-decoration:none}.user-info{background-color:#242d3a;padding:8px;text-align:center;width:240px;margin-bottom:5px}.user-info img{width:100px;margin-top:5px;border-radius:50%}.user-info p{color:#ebebeb;margin-top:10px}.user-info small{display:block}@media (max-width: 767px){.nav.az-navbar .navbar-brand{width:auto}}.navbar-search{color:#ffffff80!important}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 8px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.collapse-menu-link{color:#fff!important;font-size:20px;padding-top:5px;cursor:pointer}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:10px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.overlay{height:100%;width:100%;display:none;padding-left:10%;padding-right:10%;position:fixed;z-index:999999;left:0;top:0;background-color:#000;background-color:#000000e6;overflow-x:hidden;transition:.5s}.overlay-content{position:relative;top:25%;width:100%;text-align:center;margin-top:30px}.overlay p{padding:8px;text-decoration:none;font-size:36px;color:#818181;display:block;transition:.3s}.overlay a:hover,.overlay a:focus{color:#f1f1f1}.overlay .closebtn{position:absolute;top:20px;right:45px;font-size:60px}@media screen and (max-height: 450px){.overlay a{font-size:20px}.overlay .closebtn{font-size:40px;top:15px;right:35px}}\n"] }]
|
|
756
|
+
args: [{ selector: "navbar", viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [RouterLink, FormsModule, BsDropdownModule, MatSlideToggleModule, NgIf, NgFor, ProgressbarModule, ComponentHostDirective, NgTemplateOutlet, EsTableModule, LocalizationModule], template: "<nav #navbar class=\"nav enuma-navbar\">\r\n <div class=\"d-flex\" style=\"width: 100%;\">\r\n <!-- Collapse men\u00F9 a sinistra -->\r\n <div><a (click)=\"toggleMenu()\" class=\"far fa-bars nav-icon app-padding-left-15\" style=\"padding-top: 9px;\"></a></div>\r\n\r\n <!-- Breadcrumb -->\r\n <div class=\"app-padding-left-15\" style=\"padding-top: 8px;\"><ng-content></ng-content></div>\r\n\r\n <div style=\"margin-left: auto; display: flex;\">\r\n <!--Notifications (Jobs)-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <div *ngIf=\"_state.jobsInProgress > 0\" class=\"fa-beat-fade nav-jobs-icon-notification\"></div>\r\n <a [class.fa-shake]=\"_state.jobsInProgress > 0\" class=\"far fa-bell module-nav-menu-link dropdown-toggle app-pointer\" style=\"--fa-animation-duration: 3s; --fa-animation-iteration-count: 1;\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span>{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"pull-right m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n <span class=\"pull-right app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{'Completed' | localize : lc}}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n \r\n <!--Other Modules-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"far fa-cubes module-nav-menu-link dropdown-toggle app-pointer\" (click)=\"goToDashboard()\"></a>\r\n </div>\r\n\r\n <!--Quick Actions-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"far fa-folder-gear module-nav-menu-link dropdown-toggle app-pointer\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"d-flex dropdown-title-bg\">\r\n <div class=\"dropdown-title\">Gestisci Cache Utente</div>\r\n </li>\r\n <li class=\"dropdown-top\"></li>\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\">\r\n <i class=\"far fa-user-times app-margin-right-10\"></i>{{'Ripulisci le Preferenze Utente' | localize : lc}}\r\n </li>\r\n <!-- <li class=\"dropdown-divider\"></li> -->\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearAll()\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache' | localize : lc}}\r\n </li>\r\n <li class=\"dropdown-bot\"></li>\r\n </ul>\r\n </div>\r\n \r\n <!--Punti di estensione per Calendar, Chatroom e chi pi\u00F9 ne ha pi\u00F9 ne metta...-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" *ngFor=\"let comp of extensionComponents\">\r\n <ng-template [componentHost]=\"comp\"></ng-template>\r\n </div>\r\n </div>\r\n\r\n <!--Ambiente-->\r\n <div>\r\n <div class=\"nav-environment app-no-selection\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n </div>\r\n\r\n <!--Debugging ruoli e permessi-->\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n </div>\r\n</nav>\r\n\r\n<!-- Template per l'icona dell'utente -->\r\n<ng-template #userIcon let-context>\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.halloweenTime\">\r\n</ng-template>\r\n\r\n<!-- Template per le informaizoni di debug: Ambiente, ruoli, permessi ecc -->\r\n<ng-template #debugInfos>\r\n <div>{{CurrentIdentity?.FullName}} - ({{CurrentIdentity?.TenantName}})</div>\r\n <div hidden>{{applicationEnvironment}}</div>\r\n <div class=\"text-sm-center\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n</ng-template>", styles: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-icon-notification{top:7px;left:-7px;position:absolute;background-color:#0056b3;border-radius:50%;height:8px;width:8px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #3e4d64}.nav-jobs-menu-header{background-color:#344154;padding:8px;font-size:14px;margin-top:-5px;margin-left:-5px;margin-right:-5px}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#024a88}.user-menu .dropdown-menu a:hover{color:#fff8a9;background-color:red}.user-menu .dropdown-menu a i{margin-right:8px}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 11px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:8px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.dropdown-title-bg{background-color:#344154;border:1px solid #3e4d64;border-bottom:0px}.dropdown-title{color:#fff;margin:auto;padding:8px 0;font-size:18px}.dropdown-menu{background-color:#fff;border:none}.dropdown-divider{border-top:1px solid #eeeeee}.dropdown-item{background-color:#fff;color:#0056b3}.dropdown-item:hover{color:#004a9a!important;background-color:#eee}.dropdown-top{background-color:#fff;height:0;margin-bottom:.5rem;overflow:hidden;border-top:1px solid #eeeeee}.dropdown-bot{background-color:#fff;height:0;margin-top:.5rem;overflow:hidden;border-top:1px solid #eeeeee}.enuma-navbar{height:60px;align-items:center;background-color:#2a3544;box-shadow:0 8px 6px -6px #1313130a,0 12px 16px -16px #1313130d;margin-bottom:-1px;border-bottom:1px solid #191E29}.nav-environment{color:#fff;background-color:#3e4d64;text-align:center;padding:5px 10px;margin:2px 10px 0 0}.nav-icon{color:#fff!important;font-size:20px;cursor:pointer}.nav-right-section{position:absolute;right:10px;top:10px}\n"] }]
|
|
679
757
|
}], ctorParameters: function () {
|
|
680
|
-
return [{ type: i1$
|
|
758
|
+
return [{ type: i1$3.PreferencesService }, { type: i1$3.CacheService }, { type: i2$3.BaseMessageService }, { type: i2$3.NotificationsService }, { type: i2$1.MessageService }, { type: i1$2.LocalizationService }, { type: i2$2.HTTPService }, { type: i0.ChangeDetectorRef }, { type: i1.AppState }, { type: i1.TokenService }, { type: i1$1.Router }, { type: i1.CompletedJobRedirectionService }, { type: undefined, decorators: [{
|
|
681
759
|
type: Inject,
|
|
682
760
|
args: [NAVBAR_EXTENSIONS]
|
|
683
761
|
}] }, { type: undefined, decorators: [{
|
|
@@ -726,12 +804,12 @@ class PagesComponent {
|
|
|
726
804
|
this.getHeight();
|
|
727
805
|
}
|
|
728
806
|
}
|
|
729
|
-
PagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PagesComponent, deps: [{ token: i3.DomSanitizer }, { token:
|
|
730
|
-
PagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: PagesComponent, isStandalone: true, selector: "pages", host: { listeners: { "window:resize": "onResize($event)" } }, ngImport: i0, template: "<
|
|
807
|
+
PagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PagesComponent, deps: [{ token: i3.DomSanitizer }, { token: i1.AppState }, { token: i2.Location }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
808
|
+
PagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: PagesComponent, isStandalone: true, selector: "pages", host: { listeners: { "window:resize": "onResize($event)" } }, ngImport: i0, template: "<div class=\"pages-container\">\r\n <sidebar></sidebar>\r\n <div style=\"width: 100%;\">\r\n <navbar>\r\n <breadcrumb></breadcrumb>\r\n </navbar>\r\n <div class=\"main-wrapper\" [style.max-height.px]=\"maxHeight\" [ngClass]=\"{'menu-collapsed': isMenuCollapsed}\">\r\n <div class=\"az-overlay\" *ngIf=\"!isMenuCollapsed\" (click)=\"hideMenu()\"></div>\r\n <div class=\"main\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n <back-top [position]=\"200\"></back-top>\r\n </div>\r\n </div>\r\n</div>", styles: [".main-wrapper{padding:20px 40px;position:relative;width:100%;height:100%;overflow:auto}.main{height:100%;min-height:650px}.az-overlay{position:fixed;inset:0;z-index:8;background:rgba(36,45,58,.2);width:100%;height:100%;display:none}.pages-container{height:100vh;width:100vw;display:flex}@media (max-width: 544px){.main-wrapper,.main-wrapper.menu-collapsed{margin-left:0;padding:30px 20px}.az-overlay{display:block}.footer .footer-main,.footer .created{float:none}}@media (min-width: 544px) and (max-width: 768px){.az-overlay{display:block}}\n"], dependencies: [{ kind: "component", type: Navbar, selector: "navbar" }, { kind: "component", type: Sidebar, selector: "sidebar" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: Breadcrumb, selector: "breadcrumb" }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: BackTop, selector: "back-top", inputs: ["position", "showSpeed", "moveSpeed"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
731
809
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PagesComponent, decorators: [{
|
|
732
810
|
type: Component,
|
|
733
|
-
args: [{ selector: "pages", encapsulation: ViewEncapsulation.None, standalone: true, imports: [Navbar, Sidebar, NgClass, NgIf, Breadcrumb, RouterOutlet, BackTop], template: "<
|
|
734
|
-
}], ctorParameters: function () { return [{ type: i3.DomSanitizer }, { type:
|
|
811
|
+
args: [{ selector: "pages", encapsulation: ViewEncapsulation.None, standalone: true, imports: [Navbar, Sidebar, NgClass, NgIf, Breadcrumb, RouterOutlet, BackTop], template: "<div class=\"pages-container\">\r\n <sidebar></sidebar>\r\n <div style=\"width: 100%;\">\r\n <navbar>\r\n <breadcrumb></breadcrumb>\r\n </navbar>\r\n <div class=\"main-wrapper\" [style.max-height.px]=\"maxHeight\" [ngClass]=\"{'menu-collapsed': isMenuCollapsed}\">\r\n <div class=\"az-overlay\" *ngIf=\"!isMenuCollapsed\" (click)=\"hideMenu()\"></div>\r\n <div class=\"main\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n <back-top [position]=\"200\"></back-top>\r\n </div>\r\n </div>\r\n</div>", styles: [".main-wrapper{padding:20px 40px;position:relative;width:100%;height:100%;overflow:auto}.main{height:100%;min-height:650px}.az-overlay{position:fixed;inset:0;z-index:8;background:rgba(36,45,58,.2);width:100%;height:100%;display:none}.pages-container{height:100vh;width:100vw;display:flex}@media (max-width: 544px){.main-wrapper,.main-wrapper.menu-collapsed{margin-left:0;padding:30px 20px}.az-overlay{display:block}.footer .footer-main,.footer .created{float:none}}@media (min-width: 544px) and (max-width: 768px){.az-overlay{display:block}}\n"] }]
|
|
812
|
+
}], ctorParameters: function () { return [{ type: i3.DomSanitizer }, { type: i1.AppState }, { type: i2.Location }, { type: i1$1.Router }]; }, propDecorators: { onResize: [{
|
|
735
813
|
type: HostListener,
|
|
736
814
|
args: ['window:resize', ['$event']]
|
|
737
815
|
}] } });
|
|
@@ -769,12 +847,12 @@ class ExternalPagesComponent {
|
|
|
769
847
|
});
|
|
770
848
|
}
|
|
771
849
|
}
|
|
772
|
-
ExternalPagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ExternalPagesComponent, deps: [{ token: i5.AccessControlService }, { token: i1$
|
|
850
|
+
ExternalPagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ExternalPagesComponent, deps: [{ token: i5.AccessControlService }, { token: i1$2.LocalizationService }, { token: i2$2.HTTPService }, { token: i1.AppState }, { token: i1$1.ActivatedRoute }, { token: i1.TokenService }], target: i0.ɵɵFactoryTarget.Component });
|
|
773
851
|
ExternalPagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ExternalPagesComponent, isStandalone: true, selector: "external-pages", ngImport: i0, template: "<router-outlet></router-outlet>", dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
|
|
774
852
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ExternalPagesComponent, decorators: [{
|
|
775
853
|
type: Component,
|
|
776
854
|
args: [{ selector: "external-pages", standalone: true, imports: [RouterOutlet], template: "<router-outlet></router-outlet>" }]
|
|
777
|
-
}], ctorParameters: function () { return [{ type: i5.AccessControlService }, { type: i1$
|
|
855
|
+
}], ctorParameters: function () { return [{ type: i5.AccessControlService }, { type: i1$2.LocalizationService }, { type: i2$2.HTTPService }, { type: i1.AppState }, { type: i1$1.ActivatedRoute }, { type: i1.TokenService }]; } });
|
|
778
856
|
|
|
779
857
|
// Angular
|
|
780
858
|
class JaceLoginComponent {
|
|
@@ -851,18 +929,18 @@ class RedirecterComponent {
|
|
|
851
929
|
}
|
|
852
930
|
}
|
|
853
931
|
}
|
|
854
|
-
RedirecterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RedirecterComponent, deps: [{ token:
|
|
932
|
+
RedirecterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RedirecterComponent, deps: [{ token: i1.AppState }, { token: i1$1.ActivatedRoute }, { token: i1$1.Router }, { token: REDIRECT_MAP, optional: true }, { token: i2$1.AppEmbeddingExtensions }], target: i0.ɵɵFactoryTarget.Component });
|
|
855
933
|
RedirecterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: RedirecterComponent, isStandalone: true, selector: "redirecter", ngImport: i0, template: "<div *ngIf=\"Error\">{{Error}}</div>", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
856
934
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RedirecterComponent, decorators: [{
|
|
857
935
|
type: Component,
|
|
858
936
|
args: [{ selector: "redirecter", encapsulation: ViewEncapsulation.None, standalone: true, imports: [NgIf], template: "<div *ngIf=\"Error\">{{Error}}</div>" }]
|
|
859
937
|
}], ctorParameters: function () {
|
|
860
|
-
return [{ type:
|
|
938
|
+
return [{ type: i1.AppState }, { type: i1$1.ActivatedRoute }, { type: i1$1.Router }, { type: undefined, decorators: [{
|
|
861
939
|
type: Optional
|
|
862
940
|
}, {
|
|
863
941
|
type: Inject,
|
|
864
942
|
args: [REDIRECT_MAP]
|
|
865
|
-
}] }, { type:
|
|
943
|
+
}] }, { type: i2$1.AppEmbeddingExtensions }];
|
|
866
944
|
} });
|
|
867
945
|
|
|
868
946
|
// Angular
|
|
@@ -967,12 +1045,12 @@ class JaceResourceComponent {
|
|
|
967
1045
|
this.sanitizedSourceResource = this.sanitizer.bypassSecurityTrustResourceUrl(finalUrl);
|
|
968
1046
|
}
|
|
969
1047
|
}
|
|
970
|
-
JaceResourceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: JaceResourceComponent, deps: [{ token: i0.ChangeDetectorRef }, { token:
|
|
1048
|
+
JaceResourceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: JaceResourceComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.AppState }, { token: i3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
|
|
971
1049
|
JaceResourceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: JaceResourceComponent, isStandalone: true, selector: "jace-resource", inputs: { Module: "Module", ModuleKeyType: "ModuleKeyType", Page: "Page", Localhost: "Localhost", Params: "Params" }, ngImport: i0, template: "<iframe *ngIf=\"!!sanitizedSourceResource && this.Height > 0\" id=\"externalFrame\" style=\"width: 100%; border: none;\" [style.height.px]=\"Height\"\r\n [src]=\"sanitizedSourceResource\">\r\n</iframe>", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
972
1050
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: JaceResourceComponent, decorators: [{
|
|
973
1051
|
type: Component,
|
|
974
1052
|
args: [{ selector: "jace-resource", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf], template: "<iframe *ngIf=\"!!sanitizedSourceResource && this.Height > 0\" id=\"externalFrame\" style=\"width: 100%; border: none;\" [style.height.px]=\"Height\"\r\n [src]=\"sanitizedSourceResource\">\r\n</iframe>" }]
|
|
975
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type:
|
|
1053
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.AppState }, { type: i3.DomSanitizer }]; }, propDecorators: { Module: [{
|
|
976
1054
|
type: Input
|
|
977
1055
|
}], ModuleKeyType: [{
|
|
978
1056
|
type: Input
|
|
@@ -998,12 +1076,12 @@ class EsModalComponent {
|
|
|
998
1076
|
show() { this.Modal.show(); }
|
|
999
1077
|
hide() { this.Modal.hide(); }
|
|
1000
1078
|
}
|
|
1001
|
-
EsModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EsModalComponent, deps: [{ token:
|
|
1079
|
+
EsModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EsModalComponent, deps: [{ token: i1.AppState }], target: i0.ɵɵFactoryTarget.Component });
|
|
1002
1080
|
EsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EsModalComponent, isStandalone: true, selector: "es-modal", inputs: { Size: "Size", IgnoreBackdrop: "IgnoreBackdrop", Backdrop: "Backdrop", HasOverlap: "HasOverlap" }, outputs: { onShow: "onShow", onHide: "onHide" }, viewQueries: [{ propertyName: "Modal", first: true, predicate: ["modalRef"], descendants: true }], ngImport: i0, template: "<div esModal #modalRef=\"es-modal\"\r\n class=\"modal fade\"\r\n role=\"dialog\"\r\n aria-hidden=\"true\"\r\n (onShow)=\"onShow.emit()\"\r\n (onHide)=\"onHide.emit()\"\r\n [config]=\"{backdrop: Backdrop, ignoreBackdropClick: IgnoreBackdrop}\">\r\n <div class=\"modal-dialog\"\r\n [class.modal-sm]=\"Size == 'S'\"\r\n [class.modal-md]=\"Size == 'M'\"\r\n [class.modal-lg]=\"Size == 'L'\"\r\n [class.modal-xl]=\"Size == 'XL'\"\r\n [class.modal-xxl]=\"Size == 'XXL'\"\r\n [class.modal-feminist]=\"Size == 'HOLYSHIT'\"\r\n emaDraggable>\r\n <div class=\"modal-content\" [class.app-bg-lightgrey]=\"HasOverlap\"\r\n style=\"cursor: default;\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: EsModalDirective, selector: "[esModal]", exportAs: ["es-modal"] }, { kind: "directive", type: Draggable, selector: "[emaDraggable]", inputs: ["emaDraggable"] }] });
|
|
1003
1081
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EsModalComponent, decorators: [{
|
|
1004
1082
|
type: Component,
|
|
1005
1083
|
args: [{ selector: "es-modal", standalone: true, imports: [EsModalDirective, Draggable], template: "<div esModal #modalRef=\"es-modal\"\r\n class=\"modal fade\"\r\n role=\"dialog\"\r\n aria-hidden=\"true\"\r\n (onShow)=\"onShow.emit()\"\r\n (onHide)=\"onHide.emit()\"\r\n [config]=\"{backdrop: Backdrop, ignoreBackdropClick: IgnoreBackdrop}\">\r\n <div class=\"modal-dialog\"\r\n [class.modal-sm]=\"Size == 'S'\"\r\n [class.modal-md]=\"Size == 'M'\"\r\n [class.modal-lg]=\"Size == 'L'\"\r\n [class.modal-xl]=\"Size == 'XL'\"\r\n [class.modal-xxl]=\"Size == 'XXL'\"\r\n [class.modal-feminist]=\"Size == 'HOLYSHIT'\"\r\n emaDraggable>\r\n <div class=\"modal-content\" [class.app-bg-lightgrey]=\"HasOverlap\"\r\n style=\"cursor: default;\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
1006
|
-
}], ctorParameters: function () { return [{ type:
|
|
1084
|
+
}], ctorParameters: function () { return [{ type: i1.AppState }]; }, propDecorators: { Size: [{
|
|
1007
1085
|
type: Input
|
|
1008
1086
|
}], IgnoreBackdrop: [{
|
|
1009
1087
|
type: Input
|
|
@@ -1030,15 +1108,37 @@ class EsModalHeadComponent {
|
|
|
1030
1108
|
this.Close.emit();
|
|
1031
1109
|
}
|
|
1032
1110
|
}
|
|
1033
|
-
EsModalHeadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EsModalHeadComponent, deps: [{ token:
|
|
1111
|
+
EsModalHeadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EsModalHeadComponent, deps: [{ token: i1.AppState }], target: i0.ɵɵFactoryTarget.Component });
|
|
1034
1112
|
EsModalHeadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EsModalHeadComponent, isStandalone: true, selector: "es-modal-head", outputs: { Close: "Close" }, ngImport: i0, template: "<div class=\"modal-header\">\r\n <div class=\"modal-title modal-head pull-left\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"close modal-close-button\"\r\n (click)=\"CloseFunction();\" \r\n aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </div>\r\n</div>", styles: [".modal-head{font-size:1.25rem}.modal-close-button{margin:auto;padding:0 10px}\n"] });
|
|
1035
1113
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EsModalHeadComponent, decorators: [{
|
|
1036
1114
|
type: Component,
|
|
1037
1115
|
args: [{ selector: "es-modal-head", standalone: true, template: "<div class=\"modal-header\">\r\n <div class=\"modal-title modal-head pull-left\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"close modal-close-button\"\r\n (click)=\"CloseFunction();\" \r\n aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </div>\r\n</div>", styles: [".modal-head{font-size:1.25rem}.modal-close-button{margin:auto;padding:0 10px}\n"] }]
|
|
1038
|
-
}], ctorParameters: function () { return [{ type:
|
|
1116
|
+
}], ctorParameters: function () { return [{ type: i1.AppState }]; }, propDecorators: { Close: [{
|
|
1039
1117
|
type: Output
|
|
1040
1118
|
}] } });
|
|
1041
1119
|
|
|
1120
|
+
class LabeledSpanComponent {
|
|
1121
|
+
constructor() {
|
|
1122
|
+
this.H_MODE = "Horizontal";
|
|
1123
|
+
this.V_MODE = "Vertical";
|
|
1124
|
+
this.First = false;
|
|
1125
|
+
this.Label = "";
|
|
1126
|
+
this.Display = "Horizontal";
|
|
1127
|
+
}
|
|
1128
|
+
}
|
|
1129
|
+
LabeledSpanComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LabeledSpanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1130
|
+
LabeledSpanComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: LabeledSpanComponent, isStandalone: true, selector: "labeled-span", inputs: { First: "First", Label: "Label", Display: "Display" }, ngImport: i0, template: "<div [class.app-margin-top-10]=\"First\" \r\n [style.display]=\"Display == V_MODE ? 'inline-grid' : 'block'\"\r\n [style.margin-right.px]=\"Display == V_MODE ? 10 : 0\">\r\n <strong class=\"text-uppercase\" style=\"font-size: .7rem !important;\">\r\n {{Label}}<span *ngIf=\"Display == H_MODE\">: </span>\r\n </strong>\r\n <span><ng-content></ng-content></span>\r\n</div>", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
1131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LabeledSpanComponent, decorators: [{
|
|
1132
|
+
type: Component,
|
|
1133
|
+
args: [{ selector: "labeled-span", standalone: true, imports: [NgIf], template: "<div [class.app-margin-top-10]=\"First\" \r\n [style.display]=\"Display == V_MODE ? 'inline-grid' : 'block'\"\r\n [style.margin-right.px]=\"Display == V_MODE ? 10 : 0\">\r\n <strong class=\"text-uppercase\" style=\"font-size: .7rem !important;\">\r\n {{Label}}<span *ngIf=\"Display == H_MODE\">: </span>\r\n </strong>\r\n <span><ng-content></ng-content></span>\r\n</div>" }]
|
|
1134
|
+
}], ctorParameters: function () { return []; }, propDecorators: { First: [{
|
|
1135
|
+
type: Input
|
|
1136
|
+
}], Label: [{
|
|
1137
|
+
type: Input
|
|
1138
|
+
}], Display: [{
|
|
1139
|
+
type: Input
|
|
1140
|
+
}] } });
|
|
1141
|
+
|
|
1042
1142
|
// Angular
|
|
1043
1143
|
const COMPONENTS = [
|
|
1044
1144
|
BackTop,
|
|
@@ -1054,7 +1154,8 @@ const COMPONENTS = [
|
|
|
1054
1154
|
Sidebar,
|
|
1055
1155
|
JaceResourceComponent,
|
|
1056
1156
|
EsModalComponent,
|
|
1057
|
-
EsModalHeadComponent
|
|
1157
|
+
EsModalHeadComponent,
|
|
1158
|
+
LabeledSpanComponent
|
|
1058
1159
|
];
|
|
1059
1160
|
class ComponentsModule {
|
|
1060
1161
|
}
|
|
@@ -1072,7 +1173,8 @@ ComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
|
|
|
1072
1173
|
Sidebar,
|
|
1073
1174
|
JaceResourceComponent,
|
|
1074
1175
|
EsModalComponent,
|
|
1075
|
-
EsModalHeadComponent
|
|
1176
|
+
EsModalHeadComponent,
|
|
1177
|
+
LabeledSpanComponent], exports: [BackTop,
|
|
1076
1178
|
Breadcrumb,
|
|
1077
1179
|
PageNotFoundComponent,
|
|
1078
1180
|
ServerErrorComponent,
|
|
@@ -1085,7 +1187,8 @@ ComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
|
|
|
1085
1187
|
Sidebar,
|
|
1086
1188
|
JaceResourceComponent,
|
|
1087
1189
|
EsModalComponent,
|
|
1088
|
-
EsModalHeadComponent
|
|
1190
|
+
EsModalHeadComponent,
|
|
1191
|
+
LabeledSpanComponent] });
|
|
1089
1192
|
ComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ComponentsModule, imports: [CommonModule, RouterModule, FormsModule, DirectivesModule, LocalizationModule, ProgressbarModule, MatSlideToggleModule, BsDropdownModule, EsTableModule, ModalModule, COMPONENTS] });
|
|
1090
1193
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ComponentsModule, decorators: [{
|
|
1091
1194
|
type: NgModule,
|
|
@@ -1136,16 +1239,182 @@ class EmbeddingComponent extends BaseComponent {
|
|
|
1136
1239
|
this.EmbeddingSuccesfull = !!this.Page && !!this.Module && !!this.Localhost;
|
|
1137
1240
|
}
|
|
1138
1241
|
}
|
|
1139
|
-
EmbeddingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EmbeddingComponent, deps: [{ token: i0.Injector }, { token:
|
|
1242
|
+
EmbeddingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EmbeddingComponent, deps: [{ token: i0.Injector }, { token: i2$1.AppEmbeddingExtensions }], target: i0.ɵɵFactoryTarget.Component });
|
|
1140
1243
|
EmbeddingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EmbeddingComponent, isStandalone: true, selector: "embedding", usesInheritance: true, ngImport: i0, template: "<jace-resource *ngIf=\"EmbeddingSuccesfull && Page\" [Module]=\"Module\" [Localhost]=\"Localhost\" Page=\"{{Page}}{{Pars}}{{QueryPars}}\"></jace-resource>\r\n<div *ngIf=\"!EmbeddingSuccesfull\">\r\n Errori nell'embeddare risorsa {{Page}};{{Pars}} del modulo {{Module}} (Localhost {{Localhost}})\r\n</div>", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: JaceResourceComponent, selector: "jace-resource", inputs: ["Module", "ModuleKeyType", "Page", "Localhost", "Params"] }] });
|
|
1141
1244
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EmbeddingComponent, decorators: [{
|
|
1142
1245
|
type: Component,
|
|
1143
1246
|
args: [{ selector: 'embedding', standalone: true, imports: [NgIf, JaceResourceComponent], template: "<jace-resource *ngIf=\"EmbeddingSuccesfull && Page\" [Module]=\"Module\" [Localhost]=\"Localhost\" Page=\"{{Page}}{{Pars}}{{QueryPars}}\"></jace-resource>\r\n<div *ngIf=\"!EmbeddingSuccesfull\">\r\n Errori nell'embeddare risorsa {{Page}};{{Pars}} del modulo {{Module}} (Localhost {{Localhost}})\r\n</div>" }]
|
|
1144
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }, { type:
|
|
1247
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i2$1.AppEmbeddingExtensions }]; } });
|
|
1248
|
+
|
|
1249
|
+
class UserInfoComponentLoc extends LocalizationService {
|
|
1250
|
+
constructor(injector) {
|
|
1251
|
+
super(injector);
|
|
1252
|
+
super.set("en->it", "Name", ["Nome"]);
|
|
1253
|
+
super.set("en->it", "Last Login Date", ["Data ultimo accesso"]);
|
|
1254
|
+
super.set("en->it", "ID Account", ["Codice Account"]);
|
|
1255
|
+
super.set("en->it", "ID User", ["Codice Utente"]);
|
|
1256
|
+
super.set("en->it", "Description", ["Descrizione"]);
|
|
1257
|
+
super.set("en->it", "Tenant Name", ["Nome Tenant"]);
|
|
1258
|
+
super.set("en->it", "Delete", ["Cancella"]);
|
|
1259
|
+
super.set("en->it", "Save", ["Salva"]);
|
|
1260
|
+
super.set("en->it", "Clear User Preferences", ["Ripulisci Preferenze Utente"]);
|
|
1261
|
+
super.set("en->it", "Old Password", ["Vecchia Password"]);
|
|
1262
|
+
super.set("en->it", "New Password", ["Nuova Password"]);
|
|
1263
|
+
super.set("en->it", "Confirm Password", ["Conferma nuova password"]);
|
|
1264
|
+
super.set("en->it", "Phone Number", ["Numero di Cellulare"]);
|
|
1265
|
+
super.set("en->it", "Email", ["Email"]);
|
|
1266
|
+
super.set("en->it", "Change password for all tenants", ["Cambia password per tutti i Tenant"]);
|
|
1267
|
+
super.set("en->it", "Change password for external systems", ["Cambia password per sistemi esterni"]);
|
|
1268
|
+
super.set("en->it", "Change", ["Modifica"]);
|
|
1269
|
+
super.set("en->it", "Recovery Info", ["Informazioni di Recupero"]);
|
|
1270
|
+
super.set("en->it", "Visibility Info", ["Info Visibilita'"]);
|
|
1271
|
+
super.set("en->it", "Roles", ["Ruoli"]);
|
|
1272
|
+
super.set("en->it", "Permissions", ["Permessi"]);
|
|
1273
|
+
super.set("en->it", "Preference", ["Preferenze"]);
|
|
1274
|
+
super.set("en->it", "Reset", ["Reimposta"]);
|
|
1275
|
+
super.set("en->it", "Upload Image", ["Carica Immagine"]);
|
|
1276
|
+
super.set("en->it", "Show Advanced", ["Mostra Avanzate"]);
|
|
1277
|
+
super.set("en->it", "Change Profile Picture", ["Cambia Immagine del Profilo"]);
|
|
1278
|
+
super.set("en->it", "Delete Profile Picture", ["Rimuovi Immagine del Profilo"]);
|
|
1279
|
+
super.set("en->it", "Password", ["Password"]);
|
|
1280
|
+
super.set("en->it", "Error", ["Errore"]);
|
|
1281
|
+
}
|
|
1282
|
+
}
|
|
1283
|
+
UserInfoComponentLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UserInfoComponentLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1284
|
+
UserInfoComponentLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UserInfoComponentLoc });
|
|
1285
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UserInfoComponentLoc, decorators: [{
|
|
1286
|
+
type: Injectable
|
|
1287
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
1288
|
+
|
|
1289
|
+
class UserInfosComponent extends BaseComponent {
|
|
1290
|
+
constructor(inj, tks, msgExts, expExts, utiExts, lc, _state, profile) {
|
|
1291
|
+
super(inj);
|
|
1292
|
+
this.inj = inj;
|
|
1293
|
+
this.tks = tks;
|
|
1294
|
+
this.msgExts = msgExts;
|
|
1295
|
+
this.expExts = expExts;
|
|
1296
|
+
this.utiExts = utiExts;
|
|
1297
|
+
this.lc = lc;
|
|
1298
|
+
this._state = _state;
|
|
1299
|
+
this.profile = profile;
|
|
1300
|
+
this.UpdateProfilePictureDTO = null;
|
|
1301
|
+
this.UpdateRecoverySettingsDTO = null;
|
|
1302
|
+
this.UpdatePasswordDTO = null;
|
|
1303
|
+
}
|
|
1304
|
+
ngOnInit() {
|
|
1305
|
+
this.getAccountDetails();
|
|
1306
|
+
}
|
|
1307
|
+
getAccountDetails() {
|
|
1308
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1309
|
+
// Recupero le informazioni Account partendo dalla identity
|
|
1310
|
+
let identity = this.tks.getJaceIdentity();
|
|
1311
|
+
this.AccountRoles = identity.Roles;
|
|
1312
|
+
this.AccountPermissions = identity.Permissions;
|
|
1313
|
+
this.AccountDetails = yield this.profile.getAccountProfile();
|
|
1314
|
+
});
|
|
1315
|
+
}
|
|
1316
|
+
onShowAccountRoles() {
|
|
1317
|
+
this.dlgShowAccountRoles.show();
|
|
1318
|
+
}
|
|
1319
|
+
onUpdateProfilePicture() {
|
|
1320
|
+
this.UpdateProfilePictureDTO = null;
|
|
1321
|
+
requestAnimationFrame(() => {
|
|
1322
|
+
this.UpdateProfilePictureDTO = { image: null };
|
|
1323
|
+
this.dlgUpdateProfilePicture.show();
|
|
1324
|
+
});
|
|
1325
|
+
}
|
|
1326
|
+
doUpdateProfilePicture() {
|
|
1327
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1328
|
+
let res = yield this.profile.doUpdateProfilePicture(this.UpdateProfilePictureDTO.image);
|
|
1329
|
+
this.msgExts.manageCallResultResponse(res, "Modifica eseguita con Successo", "Errori nella modifica", () => {
|
|
1330
|
+
this.dlgUpdateProfilePicture.hide();
|
|
1331
|
+
});
|
|
1332
|
+
});
|
|
1333
|
+
}
|
|
1334
|
+
//#endregion
|
|
1335
|
+
//#region Delete Profile Picture
|
|
1336
|
+
onDeleteProfilePicture() {
|
|
1337
|
+
this.msgExts.simpleWarningWithChoice("Conferma eliminazione", "Si e' certi di voler rimuovere l'immagine profilo?", () => {
|
|
1338
|
+
this.doDeleteProfilePicture();
|
|
1339
|
+
});
|
|
1340
|
+
}
|
|
1341
|
+
doDeleteProfilePicture() {
|
|
1342
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1343
|
+
let res = yield this.profile.doDeleteProfilePicture();
|
|
1344
|
+
this.msgExts.manageCallResultResponse(res, "Immagine profilo rimossa con successo", "Errori nella rimozione della immagine profilo", () => {
|
|
1345
|
+
this.dlgUpdateProfilePicture.hide();
|
|
1346
|
+
});
|
|
1347
|
+
});
|
|
1348
|
+
}
|
|
1349
|
+
onUpdateRecoverySettings() {
|
|
1350
|
+
this.UpdateRecoverySettingsDTO = null;
|
|
1351
|
+
requestAnimationFrame(() => {
|
|
1352
|
+
this.UpdateRecoverySettingsDTO = { email: this.AccountDetails.recoveryemail };
|
|
1353
|
+
this.dlgUpdateRecoverySettings.show();
|
|
1354
|
+
});
|
|
1355
|
+
}
|
|
1356
|
+
doUpdateRecoverySettings() {
|
|
1357
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1358
|
+
let res = yield this.profile.doUpdateRecoverySettings(this.UpdateRecoverySettingsDTO.email);
|
|
1359
|
+
this.msgExts.manageCallResultResponse(res, "Modifica eseguita con Successo", "Errori nella modifica", () => {
|
|
1360
|
+
this.getAccountDetails();
|
|
1361
|
+
this.dlgUpdateRecoverySettings.hide();
|
|
1362
|
+
});
|
|
1363
|
+
});
|
|
1364
|
+
}
|
|
1365
|
+
onUpdatePassword() {
|
|
1366
|
+
this.UpdatePasswordDTO = null;
|
|
1367
|
+
requestAnimationFrame(() => {
|
|
1368
|
+
this.CustomError = "";
|
|
1369
|
+
this.UpdatePasswordDTO = new UpdatePasswordDto();
|
|
1370
|
+
this.dlgUpdatePassword.show();
|
|
1371
|
+
});
|
|
1372
|
+
}
|
|
1373
|
+
doUpdatePassword() {
|
|
1374
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1375
|
+
if (this.UpdatePasswordDTO.newpwd != this.UpdatePasswordDTO.confirmpwd)
|
|
1376
|
+
this.CustomError = "Le password inserite non coincidono.";
|
|
1377
|
+
else {
|
|
1378
|
+
let res = yield this.profile.doUpdatePassword(this.UpdatePasswordDTO.oldpwd, this.UpdatePasswordDTO.newpwd, this.UpdatePasswordDTO.confirmpwd);
|
|
1379
|
+
this.msgExts.manageCallResultResponse(res, "Password modificata con Successo", "Errori nella modifica della Password", () => { this.dlgUpdatePassword.hide(); });
|
|
1380
|
+
}
|
|
1381
|
+
});
|
|
1382
|
+
}
|
|
1383
|
+
}
|
|
1384
|
+
UserInfosComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UserInfosComponent, deps: [{ token: i0.Injector }, { token: i1.TokenService }, { token: i2$1.MessageService }, { token: i2$1.ExportService }, { token: i2$1.UtilityService }, { token: i1$2.LocalizationService }, { token: i1.AppState }, { token: i1.UserPreferencesService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1385
|
+
UserInfosComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: UserInfosComponent, isStandalone: true, selector: "user-infos", viewQueries: [{ propertyName: "dlgShowAccountRoles", first: true, predicate: ["dlgShowAccountRoles"], descendants: true }, { propertyName: "dlgUpdateProfilePicture", first: true, predicate: ["dlgUpdateProfilePicture"], descendants: true }, { propertyName: "dlgUpdateRecoverySettings", first: true, predicate: ["dlgUpdateRecoverySettings"], descendants: true }, { propertyName: "dlgUpdatePassword", first: true, predicate: ["dlgUpdatePassword"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div style=\"height: 100%; width: 100%; display: flex;\">\r\n <div style=\"margin: auto;\">\r\n <div class=\"user-img-container\">\r\n <img [src]=\"profile.ProfilePicture\" alt=\"user-img\" class=\"user-img\" />\r\n <div class=\"app-pointer user-img-btn\">\r\n <div class=\"app-opacity user-img-btn-body\" (click)=\"onUpdateProfilePicture();\">\r\n <i class=\"far fa-pen\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-15\" style=\"position: relative;\" *ngIf=\"AccountDetails\">\r\n <div class=\"card card-body app-no-margin app-padding-15\">\r\n <div class=\"row\">\r\n <div *ac=\"'R:Jace Admin'\" class=\"user-roles-btn\" [matTooltip]=\"'Visualizza Ruoli e Permessi'\" matTooltipPosition=\"above\" (click)=\"onShowAccountRoles();\">\r\n <i class=\"far fa-book-user\"></i>\r\n </div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Utente' | localize : lc\" Display=\"Vertical\">{{AccountDetails.username}}</labeled-span></div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Tenant' | localize : lc\" Display=\"Vertical\">{{AccountDetails.idtenant}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Nome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.firstname}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Cognome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.lastname}}</labeled-span> </div>\r\n <div class=\"col-md-12 app-margin-top-10\"><labeled-span [Label]=\"'Email' | localize : lc\" Display=\"Vertical\">{{AccountDetails.recoveryemail || 'Non disponibile'}}</labeled-span></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-10 row\">\r\n <div class=\"col-md-6\" style=\"padding-right: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdatePassword()\">Modifica Password</button>\r\n </div>\r\n <div class=\"col-md-6\" style=\"padding-left: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdateRecoverySettings()\">Modifica Email</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--Update Password-->\r\n<es-modal #dlgUpdatePassword [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgUpdatePassword.hide();\">\r\n <h5 class=\"modal-title pull-left\">Modifica Password</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdatePasswordDTO\" #formUpdatePassword=\"ngForm\" (ngSubmit)=\"formUpdatePassword.valid && doUpdatePassword()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [Password]=\"true\" [Label]=\"'Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.oldpwd\" name=\"oldpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Nuova Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.newpwd\" name=\"newpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Conferma Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.confirmpwd\" name=\"confpw\" required></form-input>\r\n <!--Validazione Custom-->\r\n <div *ngIf=\"CustomError\" class=\"app-white-text app-margin-top-15 app-margin-bottom-0 card app-padding-10 card-danger\">\r\n <strong>{{'Error' | localize : lc}}: </strong>{{CustomError}}\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdatePassword.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Update Extra Info-->\r\n<es-modal #dlgUpdateRecoverySettings [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgUpdateRecoverySettings.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Modifica Email' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdateRecoverySettingsDTO\" #formUpdateInfos=\"ngForm\" (ngSubmit)=\"formUpdateInfos.valid && doUpdateRecoverySettings()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [LabelInputRatio]=\"'3 9'\" [Label]=\"'Email' | localize: lc\" [(ngModel)]=\"UpdateRecoverySettingsDTO.email\" name=\"email\"></form-input>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdateRecoverySettings.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Upload Picture-->\r\n<es-modal #dlgUpdateProfilePicture [Size]=\"'M'\">\r\n <es-modal-head (Close)=\"dlgUpdateProfilePicture.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Carica Avatar' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdateProfilePictureDTO\" #formUpdateProfilePicture=\"ngForm\" (ngSubmit)=\"formUpdateProfilePicture && doUpdateProfilePicture();\">\r\n <div class=\"modal-body lastfix\">\r\n <form-file Label=\"File\" [FancyMode]=\"true\" [(ngModel)]=\"UpdateProfilePictureDTO.image\" name=\"up_file\"></form-file>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-danger\" style=\"margin-right: auto;\" (click)=\"onDeleteProfilePicture();\">{{'Rimuovi' | localize : lc}}</button>\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdateProfilePicture.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">{{'Save' | localize : lc}}</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Ruoli e Permessi-->\r\n<es-modal #dlgShowAccountRoles [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgShowAccountRoles.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Ruoli e Permessi' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\" style=\"max-height: 600px; overflow-y: auto;\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"AccountRoles\">\r\n <labeled-span [Label]=\"'Ruoli'\" Display=\"Vertical\">\r\n <div *ngFor=\"let r of AccountRoles;\">{{r}}</div>\r\n </labeled-span>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"AccountPermissions\">\r\n <labeled-span [Label]=\"'Permessi'\" Display=\"Vertical\">\r\n <div *ngFor=\"let p of AccountPermissions;\">{{p}}</div>\r\n </labeled-span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"dlgShowAccountRoles.hide();\">{{'Chiudi' | localize : lc}}</button>\r\n </div>\r\n</es-modal>", styles: [".app-wideplus{width:100%;text-align:center;border:1px solid #ccc;border-radius:5px;padding:5px}.btn-outline-main-modified{color:#242d3a;border-color:#242d3a;background:transparent}.btn-outline-main-modified:hover{color:#fff;background:#242D3A;border-color:#242d3a}.user-img-container{position:relative;width:200px;margin:auto}.user-img{object-fit:cover;max-height:200px;min-height:200px;min-width:200px;max-width:200px;border-radius:50%;box-shadow:0 8px 6px #1313130a,0 12px 16px #1313130d}.user-img-btn{position:absolute;right:0;width:40px;height:40px;margin-top:-50px}.user-img-btn-body{background-color:#0056b3;color:#fff;border-radius:50%;text-align:center;height:100%;font-size:1.2rem;line-height:2.5rem}.user-roles-btn{position:absolute;top:0;right:2px;font-size:1.2rem;padding:5px;z-index:1;color:#0056b3;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsAndValidationsModule }, { kind: "component", type: i5$1.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { kind: "component", type: i5$1.FormFileComponent, selector: "form-file", inputs: ["Multiple", "AllowDownload", "MaxSize", "FancyMode"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$2.LocalizePipe, name: "localize" }, { kind: "component", type: EsModalComponent, selector: "es-modal", inputs: ["Size", "IgnoreBackdrop", "Backdrop", "HasOverlap"], outputs: ["onShow", "onHide"] }, { kind: "component", type: EsModalHeadComponent, selector: "es-modal-head", outputs: ["Close"] }, { kind: "component", type: LabeledSpanComponent, selector: "labeled-span", inputs: ["First", "Label", "Display"] }, { kind: "ngmodule", type: ExtensionsModule }, { kind: "ngmodule", type: AccessControlModule }, { kind: "directive", type: i5.AccessControlDirective, selector: "[ac]", inputs: ["ac", "acAbsolute"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], viewProviders: [{ provide: LocalizationService, useClass: UserInfoComponentLoc }] });
|
|
1386
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UserInfosComponent, decorators: [{
|
|
1387
|
+
type: Component,
|
|
1388
|
+
args: [{ selector: "user-infos", viewProviders: [{ provide: LocalizationService, useClass: UserInfoComponentLoc }], standalone: true, imports: [
|
|
1389
|
+
FormsModule,
|
|
1390
|
+
FormsAndValidationsModule,
|
|
1391
|
+
NgIf,
|
|
1392
|
+
NgFor,
|
|
1393
|
+
LocalizationModule,
|
|
1394
|
+
EsModalComponent,
|
|
1395
|
+
EsModalHeadComponent,
|
|
1396
|
+
LabeledSpanComponent,
|
|
1397
|
+
ExtensionsModule,
|
|
1398
|
+
AccessControlModule,
|
|
1399
|
+
MatTooltipModule
|
|
1400
|
+
], template: "<div style=\"height: 100%; width: 100%; display: flex;\">\r\n <div style=\"margin: auto;\">\r\n <div class=\"user-img-container\">\r\n <img [src]=\"profile.ProfilePicture\" alt=\"user-img\" class=\"user-img\" />\r\n <div class=\"app-pointer user-img-btn\">\r\n <div class=\"app-opacity user-img-btn-body\" (click)=\"onUpdateProfilePicture();\">\r\n <i class=\"far fa-pen\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-15\" style=\"position: relative;\" *ngIf=\"AccountDetails\">\r\n <div class=\"card card-body app-no-margin app-padding-15\">\r\n <div class=\"row\">\r\n <div *ac=\"'R:Jace Admin'\" class=\"user-roles-btn\" [matTooltip]=\"'Visualizza Ruoli e Permessi'\" matTooltipPosition=\"above\" (click)=\"onShowAccountRoles();\">\r\n <i class=\"far fa-book-user\"></i>\r\n </div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Utente' | localize : lc\" Display=\"Vertical\">{{AccountDetails.username}}</labeled-span></div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Tenant' | localize : lc\" Display=\"Vertical\">{{AccountDetails.idtenant}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Nome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.firstname}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Cognome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.lastname}}</labeled-span> </div>\r\n <div class=\"col-md-12 app-margin-top-10\"><labeled-span [Label]=\"'Email' | localize : lc\" Display=\"Vertical\">{{AccountDetails.recoveryemail || 'Non disponibile'}}</labeled-span></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-10 row\">\r\n <div class=\"col-md-6\" style=\"padding-right: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdatePassword()\">Modifica Password</button>\r\n </div>\r\n <div class=\"col-md-6\" style=\"padding-left: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdateRecoverySettings()\">Modifica Email</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--Update Password-->\r\n<es-modal #dlgUpdatePassword [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgUpdatePassword.hide();\">\r\n <h5 class=\"modal-title pull-left\">Modifica Password</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdatePasswordDTO\" #formUpdatePassword=\"ngForm\" (ngSubmit)=\"formUpdatePassword.valid && doUpdatePassword()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [Password]=\"true\" [Label]=\"'Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.oldpwd\" name=\"oldpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Nuova Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.newpwd\" name=\"newpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Conferma Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.confirmpwd\" name=\"confpw\" required></form-input>\r\n <!--Validazione Custom-->\r\n <div *ngIf=\"CustomError\" class=\"app-white-text app-margin-top-15 app-margin-bottom-0 card app-padding-10 card-danger\">\r\n <strong>{{'Error' | localize : lc}}: </strong>{{CustomError}}\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdatePassword.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Update Extra Info-->\r\n<es-modal #dlgUpdateRecoverySettings [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgUpdateRecoverySettings.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Modifica Email' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdateRecoverySettingsDTO\" #formUpdateInfos=\"ngForm\" (ngSubmit)=\"formUpdateInfos.valid && doUpdateRecoverySettings()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [LabelInputRatio]=\"'3 9'\" [Label]=\"'Email' | localize: lc\" [(ngModel)]=\"UpdateRecoverySettingsDTO.email\" name=\"email\"></form-input>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdateRecoverySettings.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Upload Picture-->\r\n<es-modal #dlgUpdateProfilePicture [Size]=\"'M'\">\r\n <es-modal-head (Close)=\"dlgUpdateProfilePicture.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Carica Avatar' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdateProfilePictureDTO\" #formUpdateProfilePicture=\"ngForm\" (ngSubmit)=\"formUpdateProfilePicture && doUpdateProfilePicture();\">\r\n <div class=\"modal-body lastfix\">\r\n <form-file Label=\"File\" [FancyMode]=\"true\" [(ngModel)]=\"UpdateProfilePictureDTO.image\" name=\"up_file\"></form-file>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-danger\" style=\"margin-right: auto;\" (click)=\"onDeleteProfilePicture();\">{{'Rimuovi' | localize : lc}}</button>\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdateProfilePicture.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">{{'Save' | localize : lc}}</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Ruoli e Permessi-->\r\n<es-modal #dlgShowAccountRoles [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgShowAccountRoles.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Ruoli e Permessi' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\" style=\"max-height: 600px; overflow-y: auto;\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"AccountRoles\">\r\n <labeled-span [Label]=\"'Ruoli'\" Display=\"Vertical\">\r\n <div *ngFor=\"let r of AccountRoles;\">{{r}}</div>\r\n </labeled-span>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"AccountPermissions\">\r\n <labeled-span [Label]=\"'Permessi'\" Display=\"Vertical\">\r\n <div *ngFor=\"let p of AccountPermissions;\">{{p}}</div>\r\n </labeled-span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"dlgShowAccountRoles.hide();\">{{'Chiudi' | localize : lc}}</button>\r\n </div>\r\n</es-modal>", styles: [".app-wideplus{width:100%;text-align:center;border:1px solid #ccc;border-radius:5px;padding:5px}.btn-outline-main-modified{color:#242d3a;border-color:#242d3a;background:transparent}.btn-outline-main-modified:hover{color:#fff;background:#242D3A;border-color:#242d3a}.user-img-container{position:relative;width:200px;margin:auto}.user-img{object-fit:cover;max-height:200px;min-height:200px;min-width:200px;max-width:200px;border-radius:50%;box-shadow:0 8px 6px #1313130a,0 12px 16px #1313130d}.user-img-btn{position:absolute;right:0;width:40px;height:40px;margin-top:-50px}.user-img-btn-body{background-color:#0056b3;color:#fff;border-radius:50%;text-align:center;height:100%;font-size:1.2rem;line-height:2.5rem}.user-roles-btn{position:absolute;top:0;right:2px;font-size:1.2rem;padding:5px;z-index:1;color:#0056b3;cursor:pointer}\n"] }]
|
|
1401
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.TokenService }, { type: i2$1.MessageService }, { type: i2$1.ExportService }, { type: i2$1.UtilityService }, { type: i1$2.LocalizationService }, { type: i1.AppState }, { type: i1.UserPreferencesService }]; }, propDecorators: { dlgShowAccountRoles: [{
|
|
1402
|
+
type: ViewChild,
|
|
1403
|
+
args: ["dlgShowAccountRoles"]
|
|
1404
|
+
}], dlgUpdateProfilePicture: [{
|
|
1405
|
+
type: ViewChild,
|
|
1406
|
+
args: ["dlgUpdateProfilePicture"]
|
|
1407
|
+
}], dlgUpdateRecoverySettings: [{
|
|
1408
|
+
type: ViewChild,
|
|
1409
|
+
args: ["dlgUpdateRecoverySettings"]
|
|
1410
|
+
}], dlgUpdatePassword: [{
|
|
1411
|
+
type: ViewChild,
|
|
1412
|
+
args: ["dlgUpdatePassword"]
|
|
1413
|
+
}] } });
|
|
1145
1414
|
|
|
1146
1415
|
/**
|
|
1147
1416
|
* Generated bundle index. Do not edit.
|
|
1148
1417
|
*/
|
|
1149
1418
|
|
|
1150
|
-
export { AngularErrorComponent, BackTop, BaseComponent, Breadcrumb, ComponentsModule, EmbeddingComponent, EsModalComponent, EsModalHeadComponent, ExternalPagesComponent, JaceLoginComponent, JaceResourceComponent, Navbar, PageNotFoundComponent, PagesComponent, ReactiveComponent, RedirecterComponent, ServerErrorComponent, Sidebar };
|
|
1419
|
+
export { AngularErrorComponent, BackTop, BaseComponent, Breadcrumb, BreadcrumbItem, ComponentsModule, EmbeddingComponent, EsModalComponent, EsModalHeadComponent, ExternalPagesComponent, JaceLoginComponent, JaceResourceComponent, LabeledSpanComponent, Navbar, PageNotFoundComponent, PagesComponent, ReactiveComponent, RedirecterComponent, ServerErrorComponent, Sidebar, UserInfosComponent };
|
|
1151
1420
|
//# sourceMappingURL=esfaenza-core-components.mjs.map
|