@esfaenza/core 19.2.98 → 19.2.100

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.
@@ -60,10 +60,10 @@ class BackTop {
60
60
  let el = this._selector.nativeElement;
61
61
  window.scrollY > this.position ? $(el).fadeIn(this.showSpeed) : $(el).fadeOut(this.showSpeed);
62
62
  }
63
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BackTop, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
64
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: BackTop, isStandalone: true, selector: "back-top", inputs: { position: "position", showSpeed: "showSpeed", moveSpeed: "moveSpeed" }, host: { listeners: { "click": "_onClick()", "window:scroll.out-zone": "_onWindowScroll()" } }, viewQueries: [{ propertyName: "_selector", first: true, predicate: ["backTop"], descendants: true }], ngImport: i0, template: "<i #backTop class=\"fa fa-angle-up back-to-top\" title=\"Back to Top\"></i>", styles: [".back-to-top{position:fixed;width:40px;height:40px;cursor:pointer;z-index:9999;display:none;text-decoration:none;right:40px;bottom:40px!important;font-size:30px;text-align:center;opacity:.4;color:#fff;background-color:#242d3abf;border-radius:50%;line-height:34px}.back-to-top:hover{opacity:.8}\n"], encapsulation: i0.ViewEncapsulation.None }); }
63
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: BackTop, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
64
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: BackTop, isStandalone: true, selector: "back-top", inputs: { position: "position", showSpeed: "showSpeed", moveSpeed: "moveSpeed" }, host: { listeners: { "click": "_onClick()", "window:scroll.out-zone": "_onWindowScroll()" } }, viewQueries: [{ propertyName: "_selector", first: true, predicate: ["backTop"], descendants: true }], ngImport: i0, template: "<i #backTop class=\"fa fa-angle-up back-to-top\" title=\"Back to Top\"></i>", styles: [".back-to-top{position:fixed;width:40px;height:40px;cursor:pointer;z-index:9999;display:none;text-decoration:none;right:40px;bottom:40px!important;font-size:30px;text-align:center;opacity:.4;color:#fff;background-color:#242d3abf;border-radius:50%;line-height:34px}.back-to-top:hover{opacity:.8}\n"], encapsulation: i0.ViewEncapsulation.None }); }
65
65
  }
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BackTop, decorators: [{
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: BackTop, decorators: [{
67
67
  type: Component,
68
68
  args: [{ selector: "back-top", encapsulation: ViewEncapsulation.None, standalone: true, template: "<i #backTop class=\"fa fa-angle-up back-to-top\" title=\"Back to Top\"></i>", styles: [".back-to-top{position:fixed;width:40px;height:40px;cursor:pointer;z-index:9999;display:none;text-decoration:none;right:40px;bottom:40px!important;font-size:30px;text-align:center;opacity:.4;color:#fff;background-color:#242d3abf;border-radius:50%;line-height:34px}.back-to-top:hover{opacity:.8}\n"] }]
69
69
  }], propDecorators: { position: [{
@@ -142,10 +142,10 @@ class Breadcrumb {
142
142
  let params = segs[segs.length - 1]?.parameters;
143
143
  return [route, params];
144
144
  }
145
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: Breadcrumb, deps: [{ token: i1.AppState }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.Title }, { token: i2$1.AppEmbeddingExtensions }], target: i0.ɵɵFactoryTarget.Component }); }
146
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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 \r\n <ng-container *ngFor=\"let link of SubLinks\">\r\n <li *ngIf=\"link.routerLink\" class=\"breadcrumb-item text-uppercase breadcrumb-link\" [routerLink]=\"link.routerLink\">{{link.title}}</li>\r\n <li *ngIf=\"!link.routerLink\" class=\"breadcrumb-item text-uppercase breadcrumb-link\">{{link.title}}</li>\r\n </ng-container>\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", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], encapsulation: i0.ViewEncapsulation.None }); }
145
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: Breadcrumb, deps: [{ token: i1.AppState }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.Title }, { token: i2$1.AppEmbeddingExtensions }], target: i0.ɵɵFactoryTarget.Component }); }
146
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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 \r\n <ng-container *ngFor=\"let link of SubLinks\">\r\n <li *ngIf=\"link.routerLink\" class=\"breadcrumb-item text-uppercase breadcrumb-link\" [routerLink]=\"link.routerLink\">{{link.title}}</li>\r\n <li *ngIf=\"!link.routerLink\" class=\"breadcrumb-item text-uppercase breadcrumb-link\">{{link.title}}</li>\r\n </ng-container>\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", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], encapsulation: i0.ViewEncapsulation.None }); }
147
147
  }
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: Breadcrumb, decorators: [{
148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: Breadcrumb, decorators: [{
149
149
  type: Component,
150
150
  args: [{ selector: "breadcrumb", encapsulation: ViewEncapsulation.None, 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 \r\n <ng-container *ngFor=\"let link of SubLinks\">\r\n <li *ngIf=\"link.routerLink\" class=\"breadcrumb-item text-uppercase breadcrumb-link\" [routerLink]=\"link.routerLink\">{{link.title}}</li>\r\n <li *ngIf=\"!link.routerLink\" class=\"breadcrumb-item text-uppercase breadcrumb-link\">{{link.title}}</li>\r\n </ng-container>\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"] }]
151
151
  }], ctorParameters: () => [{ type: i1.AppState }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.Title }, { type: i2$1.AppEmbeddingExtensions }] });
@@ -165,10 +165,10 @@ class EsModalComponent {
165
165
  }
166
166
  show() { this.Modal.show(); }
167
167
  hide() { this.Modal.hide(); }
168
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: EsModalComponent, deps: [{ token: i1.AppState }], target: i0.ɵɵFactoryTarget.Component }); }
169
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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"] }] }); }
168
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EsModalComponent, deps: [{ token: i1.AppState }], target: i0.ɵɵFactoryTarget.Component }); }
169
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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"] }] }); }
170
170
  }
171
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: EsModalComponent, decorators: [{
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EsModalComponent, decorators: [{
172
172
  type: Component,
173
173
  args: [{ selector: "es-modal", 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>" }]
174
174
  }], ctorParameters: () => [{ type: i1.AppState }], propDecorators: { Size: [{
@@ -197,10 +197,10 @@ class EsModalHeadComponent {
197
197
  CloseFunction() {
198
198
  this.Close.emit();
199
199
  }
200
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: EsModalHeadComponent, deps: [{ token: i1.AppState }], target: i0.ɵɵFactoryTarget.Component }); }
201
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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\">&times;</span>\r\n </div>\r\n</div>", styles: [".modal-head{font-size:1.25rem}.modal-close-button{margin:auto;padding:0 10px}\n"] }); }
200
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EsModalHeadComponent, deps: [{ token: i1.AppState }], target: i0.ɵɵFactoryTarget.Component }); }
201
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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\">&times;</span>\r\n </div>\r\n</div>", styles: [".modal-head{font-size:1.25rem}.modal-close-button{margin:auto;padding:0 10px}\n"] }); }
202
202
  }
203
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: EsModalHeadComponent, decorators: [{
203
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EsModalHeadComponent, decorators: [{
204
204
  type: Component,
205
205
  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\">&times;</span>\r\n </div>\r\n</div>", styles: [".modal-head{font-size:1.25rem}.modal-close-button{margin:auto;padding:0 10px}\n"] }]
206
206
  }], ctorParameters: () => [{ type: i1.AppState }], propDecorators: { Close: [{
@@ -282,10 +282,10 @@ class ErrorPageComponent {
282
282
  });
283
283
  return true;
284
284
  }
285
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ErrorPageComponent, deps: [{ token: i2.Router }, { token: i2.ActivatedRoute }, { token: i2$1.MessageService }, { token: i3$1.HTTPService }, { token: i1.TokenService }, { token: i2$1.AppEmbeddingExtensions }, { token: ANONYMOUS_MODE }], target: i0.ɵɵFactoryTarget.Component }); }
286
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ErrorPageComponent, isStandalone: true, selector: "errorpage", 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 <ng-container *ngIf=\"debugging\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n\r\n <h1 class=\"display-4\">Qualcosa \u00E8 andato storto.</h1>\r\n <h6>\r\n <small>\r\n Si \u00E8 verificato un errore interno all'applicazione. Questo non dovrebbe accadere.\r\n Prova a ricaricare la pagina precedente e rieffettuare le stesse operazioni, se il\r\n problema persiste invia una segnalazione allegando una breve descrizione delle\r\n operazioni che stavi eseguendo\r\n </small>\r\n </h6>\r\n <div style=\"max-height: 450px; overflow-x: hidden; overflow-y: scroll; margin-bottom: 10px;\">\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"identityInfos\"><em>Logged user: {{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>From page: {{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>Last three calls: {{errorLastCalls}}</em></h6>\r\n \r\n <!-- Errori Angular -->\r\n <ng-container *ngIf=\"errorMessage\">\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 </ng-container>\r\n\r\n <!-- Errori HTTP -->\r\n <ng-container *ngIf=\"statusCode || statusText\">\r\n <h1 class=\"display-1\" *ngIf=\"!statusCode\">&nbsp;&nbsp;&nbsp;</h1>\r\n <h1 class=\"display-1\" *ngIf=\"statusCode\">{{statusCode == '4041' ? 'Pagina non trovata' : ''}}</h1>\r\n <h6 class=\"card-title\" *ngIf=\"!statusText\">&nbsp;&nbsp;&nbsp;</h6>\r\n <h6 class=\"card-title\" style=\"word-wrap:break-word; max-height: 500px; overflow: auto\" *ngIf=\"statusText\">{{statusText}}</h6>\r\n </ng-container>\r\n </div>\r\n <div style=\"display: flex;\" *ngIf=\"!ANONYMOUS_MODE\">\r\n <button type=\"button\" class=\"btn btn-secondary\" yle=\"margin-right: auto;\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <button [hidden]=\"!canReport\" type=\"button\" class=\"btn btn-warning\" style=\"margin: auto;\" (click)=\"BugReportText = ''; dlgSegnalazione.show()\">Invia segnalazione</button>\r\n <button type=\"button\" class=\"btn btn-primary\" style=\"margin-left: auto;\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!debugging\">\r\n <div class=\"error-container\">\r\n <div class=\"emoji\">\uD83D\uDE15</div>\r\n <h1>Qualcosa \u00E8 andato storto</h1>\r\n <p>Si \u00E8 verificato un errore imprevisto. Puoi inviare una segnalazione per aiutarci a risolverlo. </p>\r\n\r\n <div class=\"buttons\">\r\n <button class=\"report-btn btn-warning\" (click)=\"BugReportText = ''; dlgSegnalazione.show()\">Invia segnalazione</button>\r\n <button class=\"home-btn btn-primary\" (click)=\"goDashboard()\">Torna alla Dashboard</button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<es-modal #dlgSegnalazione [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgSegnalazione.hide();\">\r\n <h5 class=\"modal-title pull-left\">Invio Segnalazione</h5>\r\n </es-modal-head>\r\n <form novalidate #formAddEdit=\"ngForm\" (ngSubmit)=\"formAddEdit.valid && openTicket() && dlgSegnalazione.hide()\">\r\n <div class=\"modal-body\">\r\n <div class=\"card card-info app-padding-10 app-white-text\">\r\n Per inviare una segnalazione, si prega di inserire una descrizione dettagliata delle azioni effettuate.\r\n Non serve allegare nessun tipo di file/screenshot (in teoria...), tutte le informazioni richieste sono state gi\u00E0\r\n raccolte.\r\n </div>\r\n <textarea class=\"bugreport-textarea\" [(ngModel)]=\"BugReportText\" #report=\"ngModel\" name=\"BugReportText\" placeholder=\"Stavo navigando nella pagina e...\" required minlength=\"50\"></textarea>\r\n <div class=\"validation-message\" *ngIf=\"report.invalid && formAddEdit.submitted\">\r\n La descrizione delle azioni effettuate \u00E8 obbligatoria e dev'essere almeno lunga una cinquantina di caratteri.\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)=\"dlgSegnalazione.hide();\">Annulla</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>", styles: [".bugreport-textarea{width:100%;min-height:350px;padding:12px 14px;border:1px solid #d1d5db;border-radius:12px;font-size:14px;font-family:inherit;line-height:2;resize:none;transition:all .2s ease-in-out;background-color:#f9fafb;box-shadow:inset 0 1px 2px #0000000d;margin-top:5px}.bugreport-textarea:focus{outline:none;border-color:#3b82f6;background-color:#fff;box-shadow:0 0 0 3px #3b82f633}.error-container{text-align:center;max-width:500px;padding:2rem;background:#fff;border-radius:12px;box-shadow:0 4px 20px #0000001a;margin:0 auto}.error-container .emoji{font-size:4rem;margin-bottom:1rem}.error-container h1{font-size:1.8rem;margin-bottom:.5rem;color:#333}.error-container p{font-size:1rem;color:#666;margin-bottom:2rem}.error-container .buttons{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap}.error-container .buttons button{padding:.75rem 1.5rem;border:none;border-radius:6px;font-size:1rem;cursor:pointer;transition:background-color .2s ease}.error-container .report-btn{background-color:#f39c12;color:#fff}.error-container .report-btn:hover{background-color:#e08e0b}.error-container .home-btn{background-color:#3498db;color:#fff}.error-container .home-btn:hover{background-color:#2980b9}.validation-message{color:#e74c3c;background-color:#fdecea;border:1px solid #f5c6cb;padding:.5rem 1rem;border-radius:6px;font-size:.9rem;margin-top:.5rem}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], encapsulation: i0.ViewEncapsulation.None }); }
285
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ErrorPageComponent, deps: [{ token: i2.Router }, { token: i2.ActivatedRoute }, { token: i2$1.MessageService }, { token: i3$1.HTTPService }, { token: i1.TokenService }, { token: i2$1.AppEmbeddingExtensions }, { token: ANONYMOUS_MODE }], target: i0.ɵɵFactoryTarget.Component }); }
286
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ErrorPageComponent, isStandalone: true, selector: "errorpage", 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 <ng-container *ngIf=\"debugging\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n\r\n <h1 class=\"display-4\">Qualcosa \u00E8 andato storto.</h1>\r\n <h6>\r\n <small>\r\n Si \u00E8 verificato un errore interno all'applicazione. Questo non dovrebbe accadere.\r\n Prova a ricaricare la pagina precedente e rieffettuare le stesse operazioni, se il\r\n problema persiste invia una segnalazione allegando una breve descrizione delle\r\n operazioni che stavi eseguendo\r\n </small>\r\n </h6>\r\n <div style=\"max-height: 450px; overflow-x: hidden; overflow-y: scroll; margin-bottom: 10px;\">\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"identityInfos\"><em>Logged user: {{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>From page: {{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>Last three calls: {{errorLastCalls}}</em></h6>\r\n \r\n <!-- Errori Angular -->\r\n <ng-container *ngIf=\"errorMessage\">\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 </ng-container>\r\n\r\n <!-- Errori HTTP -->\r\n <ng-container *ngIf=\"statusCode || statusText\">\r\n <h1 class=\"display-1\" *ngIf=\"!statusCode\">&nbsp;&nbsp;&nbsp;</h1>\r\n <h1 class=\"display-1\" *ngIf=\"statusCode\">{{statusCode == '4041' ? 'Pagina non trovata' : ''}}</h1>\r\n <h6 class=\"card-title\" *ngIf=\"!statusText\">&nbsp;&nbsp;&nbsp;</h6>\r\n <h6 class=\"card-title\" style=\"word-wrap:break-word; max-height: 500px; overflow: auto\" *ngIf=\"statusText\">{{statusText}}</h6>\r\n </ng-container>\r\n </div>\r\n <div style=\"display: flex;\" *ngIf=\"!ANONYMOUS_MODE\">\r\n <button type=\"button\" class=\"btn btn-secondary\" yle=\"margin-right: auto;\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <button [hidden]=\"!canReport\" type=\"button\" class=\"btn btn-warning\" style=\"margin: auto;\" (click)=\"BugReportText = ''; dlgSegnalazione.show()\">Invia segnalazione</button>\r\n <button type=\"button\" class=\"btn btn-primary\" style=\"margin-left: auto;\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!debugging\">\r\n <div class=\"error-container\">\r\n <div class=\"emoji\">\uD83D\uDE15</div>\r\n <h1>Qualcosa \u00E8 andato storto</h1>\r\n <p>Si \u00E8 verificato un errore imprevisto. Puoi inviare una segnalazione per aiutarci a risolverlo. </p>\r\n\r\n <div class=\"buttons\">\r\n <button class=\"report-btn btn-warning\" (click)=\"BugReportText = ''; dlgSegnalazione.show()\">Invia segnalazione</button>\r\n <button class=\"home-btn btn-primary\" (click)=\"goDashboard()\">Torna alla Dashboard</button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<es-modal #dlgSegnalazione [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgSegnalazione.hide();\">\r\n <h5 class=\"modal-title pull-left\">Invio Segnalazione</h5>\r\n </es-modal-head>\r\n <form novalidate #formAddEdit=\"ngForm\" (ngSubmit)=\"formAddEdit.valid && openTicket() && dlgSegnalazione.hide()\">\r\n <div class=\"modal-body\">\r\n <div class=\"card card-info app-padding-10 app-white-text\">\r\n Per inviare una segnalazione, si prega di inserire una descrizione dettagliata delle azioni effettuate.\r\n Non serve allegare nessun tipo di file/screenshot (in teoria...), tutte le informazioni richieste sono state gi\u00E0\r\n raccolte.\r\n </div>\r\n <textarea class=\"bugreport-textarea\" [(ngModel)]=\"BugReportText\" #report=\"ngModel\" name=\"BugReportText\" placeholder=\"Stavo navigando nella pagina e...\" required minlength=\"50\"></textarea>\r\n <div class=\"validation-message\" *ngIf=\"report.invalid && formAddEdit.submitted\">\r\n La descrizione delle azioni effettuate \u00E8 obbligatoria e dev'essere almeno lunga una cinquantina di caratteri.\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)=\"dlgSegnalazione.hide();\">Annulla</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>", styles: [".bugreport-textarea{width:100%;min-height:350px;padding:12px 14px;border:1px solid #d1d5db;border-radius:12px;font-size:14px;font-family:inherit;line-height:2;resize:none;transition:all .2s ease-in-out;background-color:#f9fafb;box-shadow:inset 0 1px 2px #0000000d;margin-top:5px}.bugreport-textarea:focus{outline:none;border-color:#3b82f6;background-color:#fff;box-shadow:0 0 0 3px #3b82f633}.error-container{text-align:center;max-width:500px;padding:2rem;background:#fff;border-radius:12px;box-shadow:0 4px 20px #0000001a;margin:0 auto}.error-container .emoji{font-size:4rem;margin-bottom:1rem}.error-container h1{font-size:1.8rem;margin-bottom:.5rem;color:#333}.error-container p{font-size:1rem;color:#666;margin-bottom:2rem}.error-container .buttons{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap}.error-container .buttons button{padding:.75rem 1.5rem;border:none;border-radius:6px;font-size:1rem;cursor:pointer;transition:background-color .2s ease}.error-container .report-btn{background-color:#f39c12;color:#fff}.error-container .report-btn:hover{background-color:#e08e0b}.error-container .home-btn{background-color:#3498db;color:#fff}.error-container .home-btn:hover{background-color:#2980b9}.validation-message{color:#e74c3c;background-color:#fdecea;border:1px solid #f5c6cb;padding:.5rem 1rem;border-radius:6px;font-size:.9rem;margin-top:.5rem}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], encapsulation: i0.ViewEncapsulation.None }); }
287
287
  }
288
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ErrorPageComponent, decorators: [{
288
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ErrorPageComponent, decorators: [{
289
289
  type: Component,
290
290
  args: [{ selector: "errorpage", encapsulation: ViewEncapsulation.None, imports: [NgIf, EsModalComponent, EsModalHeadComponent, FormsModule], 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 <ng-container *ngIf=\"debugging\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n\r\n <h1 class=\"display-4\">Qualcosa \u00E8 andato storto.</h1>\r\n <h6>\r\n <small>\r\n Si \u00E8 verificato un errore interno all'applicazione. Questo non dovrebbe accadere.\r\n Prova a ricaricare la pagina precedente e rieffettuare le stesse operazioni, se il\r\n problema persiste invia una segnalazione allegando una breve descrizione delle\r\n operazioni che stavi eseguendo\r\n </small>\r\n </h6>\r\n <div style=\"max-height: 450px; overflow-x: hidden; overflow-y: scroll; margin-bottom: 10px;\">\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"identityInfos\"><em>Logged user: {{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>From page: {{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>Last three calls: {{errorLastCalls}}</em></h6>\r\n \r\n <!-- Errori Angular -->\r\n <ng-container *ngIf=\"errorMessage\">\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 </ng-container>\r\n\r\n <!-- Errori HTTP -->\r\n <ng-container *ngIf=\"statusCode || statusText\">\r\n <h1 class=\"display-1\" *ngIf=\"!statusCode\">&nbsp;&nbsp;&nbsp;</h1>\r\n <h1 class=\"display-1\" *ngIf=\"statusCode\">{{statusCode == '4041' ? 'Pagina non trovata' : ''}}</h1>\r\n <h6 class=\"card-title\" *ngIf=\"!statusText\">&nbsp;&nbsp;&nbsp;</h6>\r\n <h6 class=\"card-title\" style=\"word-wrap:break-word; max-height: 500px; overflow: auto\" *ngIf=\"statusText\">{{statusText}}</h6>\r\n </ng-container>\r\n </div>\r\n <div style=\"display: flex;\" *ngIf=\"!ANONYMOUS_MODE\">\r\n <button type=\"button\" class=\"btn btn-secondary\" yle=\"margin-right: auto;\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <button [hidden]=\"!canReport\" type=\"button\" class=\"btn btn-warning\" style=\"margin: auto;\" (click)=\"BugReportText = ''; dlgSegnalazione.show()\">Invia segnalazione</button>\r\n <button type=\"button\" class=\"btn btn-primary\" style=\"margin-left: auto;\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!debugging\">\r\n <div class=\"error-container\">\r\n <div class=\"emoji\">\uD83D\uDE15</div>\r\n <h1>Qualcosa \u00E8 andato storto</h1>\r\n <p>Si \u00E8 verificato un errore imprevisto. Puoi inviare una segnalazione per aiutarci a risolverlo. </p>\r\n\r\n <div class=\"buttons\">\r\n <button class=\"report-btn btn-warning\" (click)=\"BugReportText = ''; dlgSegnalazione.show()\">Invia segnalazione</button>\r\n <button class=\"home-btn btn-primary\" (click)=\"goDashboard()\">Torna alla Dashboard</button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<es-modal #dlgSegnalazione [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgSegnalazione.hide();\">\r\n <h5 class=\"modal-title pull-left\">Invio Segnalazione</h5>\r\n </es-modal-head>\r\n <form novalidate #formAddEdit=\"ngForm\" (ngSubmit)=\"formAddEdit.valid && openTicket() && dlgSegnalazione.hide()\">\r\n <div class=\"modal-body\">\r\n <div class=\"card card-info app-padding-10 app-white-text\">\r\n Per inviare una segnalazione, si prega di inserire una descrizione dettagliata delle azioni effettuate.\r\n Non serve allegare nessun tipo di file/screenshot (in teoria...), tutte le informazioni richieste sono state gi\u00E0\r\n raccolte.\r\n </div>\r\n <textarea class=\"bugreport-textarea\" [(ngModel)]=\"BugReportText\" #report=\"ngModel\" name=\"BugReportText\" placeholder=\"Stavo navigando nella pagina e...\" required minlength=\"50\"></textarea>\r\n <div class=\"validation-message\" *ngIf=\"report.invalid && formAddEdit.submitted\">\r\n La descrizione delle azioni effettuate \u00E8 obbligatoria e dev'essere almeno lunga una cinquantina di caratteri.\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)=\"dlgSegnalazione.hide();\">Annulla</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>", styles: [".bugreport-textarea{width:100%;min-height:350px;padding:12px 14px;border:1px solid #d1d5db;border-radius:12px;font-size:14px;font-family:inherit;line-height:2;resize:none;transition:all .2s ease-in-out;background-color:#f9fafb;box-shadow:inset 0 1px 2px #0000000d;margin-top:5px}.bugreport-textarea:focus{outline:none;border-color:#3b82f6;background-color:#fff;box-shadow:0 0 0 3px #3b82f633}.error-container{text-align:center;max-width:500px;padding:2rem;background:#fff;border-radius:12px;box-shadow:0 4px 20px #0000001a;margin:0 auto}.error-container .emoji{font-size:4rem;margin-bottom:1rem}.error-container h1{font-size:1.8rem;margin-bottom:.5rem;color:#333}.error-container p{font-size:1rem;color:#666;margin-bottom:2rem}.error-container .buttons{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap}.error-container .buttons button{padding:.75rem 1.5rem;border:none;border-radius:6px;font-size:1rem;cursor:pointer;transition:background-color .2s ease}.error-container .report-btn{background-color:#f39c12;color:#fff}.error-container .report-btn:hover{background-color:#e08e0b}.error-container .home-btn{background-color:#3498db;color:#fff}.error-container .home-btn:hover{background-color:#2980b9}.validation-message{color:#e74c3c;background-color:#fdecea;border:1px solid #f5c6cb;padding:.5rem 1rem;border-radius:6px;font-size:.9rem;margin-top:.5rem}\n"] }]
291
291
  }], ctorParameters: () => [{ type: i2.Router }, { type: i2.ActivatedRoute }, { type: i2$1.MessageService }, { type: i3$1.HTTPService }, { type: i1.TokenService }, { type: i2$1.AppEmbeddingExtensions }, { type: undefined, decorators: [{
@@ -322,10 +322,10 @@ class SideBarLoc extends LocalizationService {
322
322
  super.set("it->en", "Job Completato", ["Job Completed"]);
323
323
  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"]);
324
324
  }
325
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SideBarLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
326
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SideBarLoc }); }
325
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SideBarLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
326
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SideBarLoc }); }
327
327
  }
328
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SideBarLoc, decorators: [{
328
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SideBarLoc, decorators: [{
329
329
  type: Injectable
330
330
  }], ctorParameters: () => [{ type: i0.Injector }] });
331
331
 
@@ -572,10 +572,10 @@ class Sidebar {
572
572
  this.cdr.markForCheck();
573
573
  });
574
574
  }
575
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: Sidebar, deps: [{ token: i1$1.LocalizationService }, { token: MENU_LOCALIZATION, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i2.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 }); }
576
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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 <ng-container *ngIf=\"!isMenuCollapsed\">\r\n <img class=\"app-logo-img\" src=\"assets/img/logo/headlogo_small.png\" alt=\"\">\r\n <div class=\"app-logo-font-container\">\r\n <span class=\"app-logo-font\">{{applicationName}}</span>\r\n </div>\r\n </ng-container>\r\n \r\n <img *ngIf=\"isMenuCollapsed\" class=\"app-logo-img-sm\" src=\"assets/img/logo/headlogo_small.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 + (isMenuCollapsed ? 55 : 0)}\">\r\n <ng-container *ngFor=\"let item of menuItems; let last = last;\">\r\n <li *ngIf=\"item.visible\" 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 </ng-container>\r\n </ul>\r\n <!--Selettore Barra dei Menu-->\r\n <div class=\"sidebar-hover-elem\"></div>\r\n <!--Footer *ngIf=\"!isMenuCollapsed\"-->\r\n <div 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 [style.padding.px]=\"isMenuCollapsed ? 5 : 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\" [style.display]=\"isMenuCollapsed ? 'inline' : 'flex'\">\r\n <div (click)=\"onChangeTenant();\" class=\"app-sidebar-footer-op app-no-selection\" [style.margin-top.px]=\"isMenuCollapsed ? 10 : 0\"><i class=\"far fa-right-left\"></i><span *ngIf=\"!isMenuCollapsed\">&nbsp;Cambia Tenant</span></div>\r\n <div (click)=\"onLogout();\" class=\"app-sidebar-footer-op app-no-selection\" [style.margin-top.px]=\"isMenuCollapsed ? 10 : 0\"><i class=\"far fa-right-from-bracket\"></i><span *ngIf=\"!isMenuCollapsed\">&nbsp;Logout</span></div>\r\n </div>\r\n <!--Versione corrente applicazione-->\r\n <div *ngIf=\"!isMenuCollapsed\" 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 rgb(71.5,89.375,115.5)}.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 rgb(71.5,89.375,115.5)}.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:\"Font Awesome 6 Pro\";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 rgb(71.5,89.375,115.5);color:#fff;padding:10px 0 0 15px}.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-font{color:#fffac2;font-family:Work Sans;font-size:15px;line-height:1;text-transform:uppercase;font-weight:700;padding-left:5px;padding-bottom:2px;overflow:hidden}.app-logo-font-container{display:inline-block;vertical-align:bottom;width:calc(var(--sidebar-width) - 70px);margin:0;height:auto;overflow:hidden}.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,#34415400);height:42px;width:230px;z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.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 rgb(71.5,89.375,115.5)}.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 rgb(71.5,89.375,115.5)}.app-sidebar.menu-collapsed .app-sidebar-footer-op{display:block;padding-left:12px;padding-top:5px;margin:0;width:16px}\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", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.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: ["globalCheck", "autoUpdate", "seconds", "researchInProgress", "globalColVisCheck", "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: ["globalCheckChange", "autoUpdateChange", "secondsChange", "researchInProgressChange", "globalColVisCheckChange", "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: SideBarLoc }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
575
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: Sidebar, deps: [{ token: i1$1.LocalizationService }, { token: MENU_LOCALIZATION, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i2.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 }); }
576
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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 <ng-container *ngIf=\"!isMenuCollapsed\">\r\n <img class=\"app-logo-img\" src=\"assets/img/logo/headlogo_small.png\" alt=\"\">\r\n <div class=\"app-logo-font-container\">\r\n <span class=\"app-logo-font\">{{applicationName}}</span>\r\n </div>\r\n </ng-container>\r\n \r\n <img *ngIf=\"isMenuCollapsed\" class=\"app-logo-img-sm\" src=\"assets/img/logo/headlogo_small.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 + (isMenuCollapsed ? 55 : 0)}\">\r\n <ng-container *ngFor=\"let item of menuItems; let last = last;\">\r\n <li *ngIf=\"item.visible\" 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 </ng-container>\r\n </ul>\r\n <!--Selettore Barra dei Menu-->\r\n <div class=\"sidebar-hover-elem\"></div>\r\n <!--Footer *ngIf=\"!isMenuCollapsed\"-->\r\n <div 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 [style.padding.px]=\"isMenuCollapsed ? 5 : 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\" [style.display]=\"isMenuCollapsed ? 'inline' : 'flex'\">\r\n <div (click)=\"onChangeTenant();\" class=\"app-sidebar-footer-op app-no-selection\" [style.margin-top.px]=\"isMenuCollapsed ? 10 : 0\"><i class=\"far fa-right-left\"></i><span *ngIf=\"!isMenuCollapsed\">&nbsp;Cambia Tenant</span></div>\r\n <div (click)=\"onLogout();\" class=\"app-sidebar-footer-op app-no-selection\" [style.margin-top.px]=\"isMenuCollapsed ? 10 : 0\"><i class=\"far fa-right-from-bracket\"></i><span *ngIf=\"!isMenuCollapsed\">&nbsp;Logout</span></div>\r\n </div>\r\n <!--Versione corrente applicazione-->\r\n <div *ngIf=\"!isMenuCollapsed\" 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 rgb(71.5,89.375,115.5)}.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 rgb(71.5,89.375,115.5)}.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:\"Font Awesome 6 Pro\";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 rgb(71.5,89.375,115.5);color:#fff;padding:10px 0 0 15px}.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-font{color:#fffac2;font-family:Work Sans;font-size:15px;line-height:1;text-transform:uppercase;font-weight:700;padding-left:5px;padding-bottom:2px;overflow:hidden}.app-logo-font-container{display:inline-block;vertical-align:bottom;width:calc(var(--sidebar-width) - 70px);margin:0;height:auto;overflow:hidden}.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,#34415400);height:42px;width:230px;z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.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 rgb(71.5,89.375,115.5)}.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 rgb(71.5,89.375,115.5)}.app-sidebar.menu-collapsed .app-sidebar-footer-op{display:block;padding-left:12px;padding-top:5px;margin:0;width:16px}\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", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.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: ["globalCheck", "autoUpdate", "seconds", "researchInProgress", "globalColVisCheck", "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: ["globalCheckChange", "autoUpdateChange", "secondsChange", "researchInProgressChange", "globalColVisCheckChange", "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: SideBarLoc }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
577
577
  }
578
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: Sidebar, decorators: [{
578
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: Sidebar, decorators: [{
579
579
  type: Component,
580
580
  args: [{ selector: "sidebar", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [{ provide: LocalizationService, useClass: SideBarLoc }], imports: [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 <ng-container *ngIf=\"!isMenuCollapsed\">\r\n <img class=\"app-logo-img\" src=\"assets/img/logo/headlogo_small.png\" alt=\"\">\r\n <div class=\"app-logo-font-container\">\r\n <span class=\"app-logo-font\">{{applicationName}}</span>\r\n </div>\r\n </ng-container>\r\n \r\n <img *ngIf=\"isMenuCollapsed\" class=\"app-logo-img-sm\" src=\"assets/img/logo/headlogo_small.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 + (isMenuCollapsed ? 55 : 0)}\">\r\n <ng-container *ngFor=\"let item of menuItems; let last = last;\">\r\n <li *ngIf=\"item.visible\" 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 </ng-container>\r\n </ul>\r\n <!--Selettore Barra dei Menu-->\r\n <div class=\"sidebar-hover-elem\"></div>\r\n <!--Footer *ngIf=\"!isMenuCollapsed\"-->\r\n <div 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 [style.padding.px]=\"isMenuCollapsed ? 5 : 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\" [style.display]=\"isMenuCollapsed ? 'inline' : 'flex'\">\r\n <div (click)=\"onChangeTenant();\" class=\"app-sidebar-footer-op app-no-selection\" [style.margin-top.px]=\"isMenuCollapsed ? 10 : 0\"><i class=\"far fa-right-left\"></i><span *ngIf=\"!isMenuCollapsed\">&nbsp;Cambia Tenant</span></div>\r\n <div (click)=\"onLogout();\" class=\"app-sidebar-footer-op app-no-selection\" [style.margin-top.px]=\"isMenuCollapsed ? 10 : 0\"><i class=\"far fa-right-from-bracket\"></i><span *ngIf=\"!isMenuCollapsed\">&nbsp;Logout</span></div>\r\n </div>\r\n <!--Versione corrente applicazione-->\r\n <div *ngIf=\"!isMenuCollapsed\" 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 rgb(71.5,89.375,115.5)}.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 rgb(71.5,89.375,115.5)}.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:\"Font Awesome 6 Pro\";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 rgb(71.5,89.375,115.5);color:#fff;padding:10px 0 0 15px}.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-font{color:#fffac2;font-family:Work Sans;font-size:15px;line-height:1;text-transform:uppercase;font-weight:700;padding-left:5px;padding-bottom:2px;overflow:hidden}.app-logo-font-container{display:inline-block;vertical-align:bottom;width:calc(var(--sidebar-width) - 70px);margin:0;height:auto;overflow:hidden}.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,#34415400);height:42px;width:230px;z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.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 rgb(71.5,89.375,115.5)}.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 rgb(71.5,89.375,115.5)}.app-sidebar.menu-collapsed .app-sidebar-footer-op{display:block;padding-left:12px;padding-top:5px;margin:0;width:16px}\n"] }]
581
581
  }], ctorParameters: () => [{ type: i1$1.LocalizationService }, { type: i0.Type, decorators: [{
@@ -625,10 +625,10 @@ class NavBarLoc extends LocalizationService {
625
625
  super.set("it->en", "Ripulisci la Cache di tutti", ["Clear Caches of everyone"]);
626
626
  super.set("it->en", "Ripulisci le Preferenze di tutti", ["Clear Preferences of everyone"]);
627
627
  }
628
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NavBarLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
629
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NavBarLoc }); }
628
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: NavBarLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
629
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: NavBarLoc }); }
630
630
  }
631
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NavBarLoc, decorators: [{
631
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: NavBarLoc, decorators: [{
632
632
  type: Injectable
633
633
  }], ctorParameters: () => [{ type: i0.Injector }] });
634
634
 
@@ -648,10 +648,10 @@ class ReactiveComponent {
648
648
  for (let i = 0; i < this.Subscriptions.length; i++)
649
649
  this.Subscriptions[i].unsubscribe();
650
650
  }
651
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ReactiveComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
652
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ReactiveComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: '', isInline: true }); }
651
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ReactiveComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
652
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ReactiveComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: '', isInline: true }); }
653
653
  }
654
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ReactiveComponent, decorators: [{
654
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ReactiveComponent, decorators: [{
655
655
  type: Component,
656
656
  args: [{
657
657
  template: '',
@@ -813,10 +813,10 @@ class Navbar extends ReactiveComponent {
813
813
  completedJobClicked(job) {
814
814
  this.cjrService.redirect(job);
815
815
  }
816
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: Navbar, deps: [{ token: i1$2.PreferencesService }, { token: i1$2.CacheService }, { token: i2$2.BaseMessageService }, { token: i2$2.NotificationsService }, { token: i2$1.MessageService }, { token: i1$1.LocalizationService }, { token: i3$1.HTTPService }, { token: i0.ChangeDetectorRef }, { token: i1.AppState }, { token: i1.TokenService }, { token: i2.Router }, { token: i1.CompletedJobRedirectionService }, { token: NAVBAR_EXTENSIONS }, { token: LOGIN_URL_LEGACY }, { token: ANONYMOUS_MODE }], target: i0.ɵɵFactoryTarget.Component }); }
817
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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: 8px;\"></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 style=\"margin-right: auto;\">{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n <span class=\"m-b-min-5\">\r\n <p-toggleswitch [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"/>\r\n </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 *ngIf=\"!ANONYMOUS_MODE\" 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-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 *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('cache')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache di tutti' | localize : lc}}\r\n </li>\r\n <li *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('preferences')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci le Preferenze di tutti' | 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:#fff;margin:2px 0 0;padding:5px;border:1px solid rgb(61.75,77.1875,99.75)}.nav-jobs-menu-header{background-color:#344154;padding:8px;font-size:14px;margin-top:-5px;margin-left:-5px;margin-right:-5px;display:flex;align-items:center}.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;-webkit-transform:none!important;-moz-transform:none!important;-ms-transform:none!important;-o-transform:none!important;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 rgb(61.75,77.1875,99.75);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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.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: "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: i10.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$1.LocalizePipe, name: "localize" }, { kind: "ngmodule", type: AccessControlModule }, { kind: "directive", type: i5.AccessControlDirective, selector: "[ac]", inputs: ["ac", "acAbsolute"] }, { kind: "ngmodule", type: ToggleSwitchModule }, { kind: "component", type: i12.ToggleSwitch, selector: "p-toggleswitch, p-toggleSwitch, p-toggle-switch", inputs: ["style", "styleClass", "tabindex", "inputId", "name", "disabled", "readonly", "trueValue", "falseValue", "ariaLabel", "ariaLabelledBy", "autofocus"], outputs: ["onChange"] }], viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
816
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: Navbar, deps: [{ token: i1$2.PreferencesService }, { token: i1$2.CacheService }, { token: i2$2.BaseMessageService }, { token: i2$2.NotificationsService }, { token: i2$1.MessageService }, { token: i1$1.LocalizationService }, { token: i3$1.HTTPService }, { token: i0.ChangeDetectorRef }, { token: i1.AppState }, { token: i1.TokenService }, { token: i2.Router }, { token: i1.CompletedJobRedirectionService }, { token: NAVBAR_EXTENSIONS }, { token: LOGIN_URL_LEGACY }, { token: ANONYMOUS_MODE }], target: i0.ɵɵFactoryTarget.Component }); }
817
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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: 8px;\"></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 style=\"margin-right: auto;\">{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n <span class=\"m-b-min-5\">\r\n <p-toggleswitch [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"/>\r\n </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 *ngIf=\"!ANONYMOUS_MODE\" 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-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 *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('cache')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache di tutti' | localize : lc}}\r\n </li>\r\n <li *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('preferences')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci le Preferenze di tutti' | 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:#fff;margin:2px 0 0;padding:5px;border:1px solid rgb(61.75,77.1875,99.75)}.nav-jobs-menu-header{background-color:#344154;padding:8px;font-size:14px;margin-top:-5px;margin-left:-5px;margin-right:-5px;display:flex;align-items:center}.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;-webkit-transform:none!important;-moz-transform:none!important;-ms-transform:none!important;-o-transform:none!important;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 rgb(61.75,77.1875,99.75);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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.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: "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: i10.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$1.LocalizePipe, name: "localize" }, { kind: "ngmodule", type: AccessControlModule }, { kind: "directive", type: i5.AccessControlDirective, selector: "[ac]", inputs: ["ac", "acAbsolute"] }, { kind: "ngmodule", type: ToggleSwitchModule }, { kind: "component", type: i12.ToggleSwitch, selector: "p-toggleswitch, p-toggleSwitch, p-toggle-switch", inputs: ["style", "styleClass", "tabindex", "inputId", "name", "disabled", "readonly", "trueValue", "falseValue", "ariaLabel", "ariaLabelledBy", "autofocus"], outputs: ["onChange"] }], viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
818
818
  }
819
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: Navbar, decorators: [{
819
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: Navbar, decorators: [{
820
820
  type: Component,
821
821
  args: [{ selector: "navbar", viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule, BsDropdownModule, NgIf, NgFor, ProgressbarModule, ComponentHostDirective, EsTableModule, LocalizationModule, AccessControlModule, ToggleSwitchModule], 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: 8px;\"></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 style=\"margin-right: auto;\">{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n <span class=\"m-b-min-5\">\r\n <p-toggleswitch [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"/>\r\n </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 *ngIf=\"!ANONYMOUS_MODE\" 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-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 *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('cache')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache di tutti' | localize : lc}}\r\n </li>\r\n <li *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('preferences')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci le Preferenze di tutti' | 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:#fff;margin:2px 0 0;padding:5px;border:1px solid rgb(61.75,77.1875,99.75)}.nav-jobs-menu-header{background-color:#344154;padding:8px;font-size:14px;margin-top:-5px;margin-left:-5px;margin-right:-5px;display:flex;align-items:center}.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;-webkit-transform:none!important;-moz-transform:none!important;-ms-transform:none!important;-o-transform:none!important;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 rgb(61.75,77.1875,99.75);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"] }]
822
822
  }], ctorParameters: () => [{ type: i1$2.PreferencesService }, { type: i1$2.CacheService }, { type: i2$2.BaseMessageService }, { type: i2$2.NotificationsService }, { type: i2$1.MessageService }, { type: i1$1.LocalizationService }, { type: i3$1.HTTPService }, { type: i0.ChangeDetectorRef }, { type: i1.AppState }, { type: i1.TokenService }, { type: i2.Router }, { type: i1.CompletedJobRedirectionService }, { type: undefined, decorators: [{
@@ -869,10 +869,10 @@ class PagesComponent {
869
869
  onResize(event) {
870
870
  this.getHeight();
871
871
  }
872
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PagesComponent, deps: [{ token: i3.DomSanitizer }, { token: i1.AppState }, { token: i2$3.Location }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
873
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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:calc(100vw - 230px);height:100%;overflow:auto}.main{height:100%;min-height:650px}.az-overlay{position:fixed;inset:0;z-index:8;background:#242d3a33;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", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: BackTop, selector: "back-top", inputs: ["position", "showSpeed", "moveSpeed"] }], encapsulation: i0.ViewEncapsulation.None }); }
872
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PagesComponent, deps: [{ token: i3.DomSanitizer }, { token: i1.AppState }, { token: i2$3.Location }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
873
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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:calc(100vw - 230px);height:100%;overflow:auto}.main{height:100%;min-height:650px}.az-overlay{position:fixed;inset:0;z-index:8;background:#242d3a33;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", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: BackTop, selector: "back-top", inputs: ["position", "showSpeed", "moveSpeed"] }], encapsulation: i0.ViewEncapsulation.None }); }
874
874
  }
875
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PagesComponent, decorators: [{
875
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PagesComponent, decorators: [{
876
876
  type: Component,
877
877
  args: [{ selector: "pages", encapsulation: ViewEncapsulation.None, 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:calc(100vw - 230px);height:100%;overflow:auto}.main{height:100%;min-height:650px}.az-overlay{position:fixed;inset:0;z-index:8;background:#242d3a33;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"] }]
878
878
  }], ctorParameters: () => [{ type: i3.DomSanitizer }, { type: i1.AppState }, { type: i2$3.Location }, { type: i2.Router }], propDecorators: { onResize: [{
@@ -950,10 +950,10 @@ class ExternalPagesComponent {
950
950
  console.log("@esfaenza/core: navigating to " + finalUrl);
951
951
  location.replace(finalUrl);
952
952
  }
953
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ExternalPagesComponent, deps: [{ token: i5.AccessControlService }, { token: i1$1.LocalizationService }, { token: i3$1.HTTPService }, { token: i2$1.AppEmbeddingExtensions }, { token: i1.AppState }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: i1.TokenService }], target: i0.ɵɵFactoryTarget.Component }); }
954
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ExternalPagesComponent, isStandalone: true, selector: "external-pages", ngImport: i0, template: "<!-- Creo il router outlet solo se sono una pagina embeddata, altrimenti vuol dire che avr\u00F2 un redirect al parent embeddato a dovere -->\r\n<router-outlet *ngIf=\"this.emb.Embedded\"></router-outlet>", dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
953
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ExternalPagesComponent, deps: [{ token: i5.AccessControlService }, { token: i1$1.LocalizationService }, { token: i3$1.HTTPService }, { token: i2$1.AppEmbeddingExtensions }, { token: i1.AppState }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: i1.TokenService }], target: i0.ɵɵFactoryTarget.Component }); }
954
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ExternalPagesComponent, isStandalone: true, selector: "external-pages", ngImport: i0, template: "<!-- Creo il router outlet solo se sono una pagina embeddata, altrimenti vuol dire che avr\u00F2 un redirect al parent embeddato a dovere -->\r\n<router-outlet *ngIf=\"this.emb.Embedded\"></router-outlet>", dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
955
955
  }
956
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ExternalPagesComponent, decorators: [{
956
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ExternalPagesComponent, decorators: [{
957
957
  type: Component,
958
958
  args: [{ selector: "external-pages", imports: [RouterOutlet, NgIf], template: "<!-- Creo il router outlet solo se sono una pagina embeddata, altrimenti vuol dire che avr\u00F2 un redirect al parent embeddato a dovere -->\r\n<router-outlet *ngIf=\"this.emb.Embedded\"></router-outlet>" }]
959
959
  }], ctorParameters: () => [{ type: i5.AccessControlService }, { type: i1$1.LocalizationService }, { type: i3$1.HTTPService }, { type: i2$1.AppEmbeddingExtensions }, { type: i1.AppState }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i1.TokenService }] });
@@ -975,10 +975,10 @@ class JaceLoginComponent {
975
975
  else
976
976
  console.error("myconfig.AuthUrl is not provided");
977
977
  }
978
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: JaceLoginComponent, deps: [{ token: LOGIN_URL_LEGACY }], target: i0.ɵɵFactoryTarget.Component }); }
979
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: JaceLoginComponent, isStandalone: true, selector: "login", ngImport: i0, template: "<div class=\"login-container\">\r\n <div class=\"redirecting-div\">\r\n <div class=\"redirecting-message\"><h1>Redirecting to login...</h1></div>\r\n <div class=\"signal\"></div>\r\n </div>\r\n</div>\r\n", styles: [".redirecting-div{background:#3d3d3d!important;display:flex;align-items:center;justify-content:center;min-height:100vh}.redirecting-div h1{color:#fbc925;font-family:Passion One}.redirecting-message{align-self:center}\n"], encapsulation: i0.ViewEncapsulation.None }); }
978
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: JaceLoginComponent, deps: [{ token: LOGIN_URL_LEGACY }], target: i0.ɵɵFactoryTarget.Component }); }
979
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: JaceLoginComponent, isStandalone: true, selector: "login", ngImport: i0, template: "<div class=\"login-container\">\r\n <div class=\"redirecting-div\">\r\n <div class=\"redirecting-message\"><h1>Redirecting to login...</h1></div>\r\n <div class=\"signal\"></div>\r\n </div>\r\n</div>\r\n", styles: [".redirecting-div{background:#3d3d3d!important;display:flex;align-items:center;justify-content:center;min-height:100vh}.redirecting-div h1{color:#fbc925;font-family:Passion One}.redirecting-message{align-self:center}\n"], encapsulation: i0.ViewEncapsulation.None }); }
980
980
  }
981
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: JaceLoginComponent, decorators: [{
981
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: JaceLoginComponent, decorators: [{
982
982
  type: Component,
983
983
  args: [{ selector: "login", encapsulation: ViewEncapsulation.None, standalone: true, template: "<div class=\"login-container\">\r\n <div class=\"redirecting-div\">\r\n <div class=\"redirecting-message\"><h1>Redirecting to login...</h1></div>\r\n <div class=\"signal\"></div>\r\n </div>\r\n</div>\r\n", styles: [".redirecting-div{background:#3d3d3d!important;display:flex;align-items:center;justify-content:center;min-height:100vh}.redirecting-div h1{color:#fbc925;font-family:Passion One}.redirecting-message{align-self:center}\n"] }]
984
984
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -1030,10 +1030,10 @@ class RedirecterComponent {
1030
1030
  this.router.navigate([url, parObject]);
1031
1031
  }
1032
1032
  }
1033
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RedirecterComponent, deps: [{ token: i1.AppState }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: REDIRECT_MAP, optional: true }, { token: i2$1.AppEmbeddingExtensions }], target: i0.ɵɵFactoryTarget.Component }); }
1034
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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 }); }
1033
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RedirecterComponent, deps: [{ token: i1.AppState }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: REDIRECT_MAP, optional: true }, { token: i2$1.AppEmbeddingExtensions }], target: i0.ɵɵFactoryTarget.Component }); }
1034
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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 }); }
1035
1035
  }
1036
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RedirecterComponent, decorators: [{
1036
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RedirecterComponent, decorators: [{
1037
1037
  type: Component,
1038
1038
  args: [{ selector: "redirecter", encapsulation: ViewEncapsulation.None, imports: [NgIf], template: "<div *ngIf=\"Error\">{{Error}}</div>" }]
1039
1039
  }], ctorParameters: () => [{ type: i1.AppState }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: undefined, decorators: [{
@@ -1094,10 +1094,10 @@ class BaseComponent extends ReactiveComponent {
1094
1094
  else
1095
1095
  this._location.back();
1096
1096
  }
1097
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BaseComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1098
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: BaseComponent, isStandalone: false, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
1097
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: BaseComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1098
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: BaseComponent, isStandalone: false, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
1099
1099
  }
1100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BaseComponent, decorators: [{
1100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: BaseComponent, decorators: [{
1101
1101
  type: Component,
1102
1102
  args: [{
1103
1103
  template: '',
@@ -1151,10 +1151,10 @@ class JaceResourceComponent {
1151
1151
  console.log("@esfaenza/core: Jace-resource navigating to " + finalUrl);
1152
1152
  this.sanitizedSourceResource = this.sanitizer.bypassSecurityTrustResourceUrl(finalUrl);
1153
1153
  }
1154
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: JaceResourceComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.AppState }, { token: i3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
1155
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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 }); }
1154
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: JaceResourceComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.AppState }, { token: i3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
1155
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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 }); }
1156
1156
  }
1157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: JaceResourceComponent, decorators: [{
1157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: JaceResourceComponent, decorators: [{
1158
1158
  type: Component,
1159
1159
  args: [{ selector: "jace-resource", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, 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>" }]
1160
1160
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.AppState }, { type: i3.DomSanitizer }], propDecorators: { Module: [{
@@ -1177,10 +1177,10 @@ class LabeledSpanComponent {
1177
1177
  this.Label = "";
1178
1178
  this.Display = "Horizontal";
1179
1179
  }
1180
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: LabeledSpanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1181
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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\">:&nbsp;&nbsp;</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"] }] }); }
1180
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LabeledSpanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1181
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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\">:&nbsp;&nbsp;</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"] }] }); }
1182
1182
  }
1183
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: LabeledSpanComponent, decorators: [{
1183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LabeledSpanComponent, decorators: [{
1184
1184
  type: Component,
1185
1185
  args: [{ selector: "labeled-span", 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\">:&nbsp;&nbsp;</span>\r\n </strong>\r\n <span><ng-content></ng-content></span>\r\n</div>" }]
1186
1186
  }], ctorParameters: () => [], propDecorators: { First: [{
@@ -1253,10 +1253,10 @@ class EsImageCropperComponent {
1253
1253
  scale: this.scale,
1254
1254
  };
1255
1255
  }
1256
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: EsImageCropperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1257
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: EsImageCropperComponent, isStandalone: true, selector: "es-image-cropper", inputs: { Height: "Height", Width: "Width" }, ngImport: i0, template: "<div *ngIf=\"ProfileImage?.nativefiles?.length > 0\" [style.width.px]=\"Width\">\r\n <div class=\"d-flex\">\r\n <button (click)=\"onRotateLeft()\" class=\"btn btn-primary\"><i class=\"fa fa-undo\"></i></button>\r\n <button (click)=\"onRotateRight()\" class=\"btn btn-primary\"><i class=\"fa fa-repeat\"></i></button>\r\n <button (click)=\"onFlipHorizontal()\" class=\"btn btn-primary\"><i class=\"fa fa-arrows-h\"></i></button>\r\n <button (click)=\"onFlipVertical()\" class=\"btn btn-primary\"><i class=\"fa fa-arrows-v\"></i></button>\r\n <button (click)=\"onZoomIn()\" class=\"btn btn-primary\"><i class=\"fa fa-search-plus\"></i></button>\r\n <button (click)=\"onZoomOut()\" class=\"btn btn-primary\"><i class=\"fa fa-search-minus\"></i></button>\r\n <button (click)=\"onResetImage()\" class=\"btn btn-danger\" style=\"margin-left: auto; margin-right: 0px;\"><i class=\"fa fa-times\"></i></button>\r\n </div>\r\n</div>\r\n<div class=\"app-margin-top-10\" [style.max-height.px]=\"Height\" [style.width.px]=\"Width\">\r\n <form-file *ngIf=\"!(ProfileImage?.nativefiles?.length > 0)\" [LabelInputRatio]=\"'0 12'\" [FancyMode]=\"true\" [(ngModel)]=\"ProfileImage\" name=\"imageToCrop\"></form-file>\r\n <ng-container *ngIf=\"ProfileImage?.nativefiles?.length > 0\">\r\n <image-cropper style=\"--cropper-outline-color: rgba(0,0,0)\"\r\n [backgroundColor]=\"'#91a3b0'\"\r\n [imageFile]=\"ProfileImage.nativefiles[0]\"\r\n [aspectRatio]=\"4 / 3\"\r\n [maintainAspectRatio]=\"true\"\r\n [containWithinAspectRatio]=\"true\"\r\n [cropperStaticWidth]=\"320\"\r\n [cropperStaticHeight]=\"320\"\r\n [onlyScaleDown]=\"true\"\r\n [roundCropper]=\"true\"\r\n [canvasRotation]=\"canvasRotation\"\r\n [allowMoveImage]=\"true\"\r\n [(transform)]=\"transform\"\r\n (imageCropped)=\"onImageCropped($event)\">\r\n </image-cropper>\r\n </ng-container>\r\n</div>", styles: [".btn{width:40px;margin-right:10px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "options", "cropperFrameAriaLabel", "output", "format", "autoCrop", "cropper", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "checkImageType", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange", "cropperChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FormsAndValidationsModule }, { kind: "component", type: i5$1.EsFormFileComponent, selector: "form-file", inputs: ["Multiple", "AllowDownload", "MaxSize", "FancyMode", "ReadFile"] }] }); }
1256
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EsImageCropperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1257
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: EsImageCropperComponent, isStandalone: true, selector: "es-image-cropper", inputs: { Height: "Height", Width: "Width" }, ngImport: i0, template: "<div *ngIf=\"ProfileImage?.nativefiles?.length > 0\" [style.width.px]=\"Width\">\r\n <div class=\"d-flex\">\r\n <button (click)=\"onRotateLeft()\" class=\"btn btn-primary\"><i class=\"fa fa-undo\"></i></button>\r\n <button (click)=\"onRotateRight()\" class=\"btn btn-primary\"><i class=\"fa fa-repeat\"></i></button>\r\n <button (click)=\"onFlipHorizontal()\" class=\"btn btn-primary\"><i class=\"fa fa-arrows-h\"></i></button>\r\n <button (click)=\"onFlipVertical()\" class=\"btn btn-primary\"><i class=\"fa fa-arrows-v\"></i></button>\r\n <button (click)=\"onZoomIn()\" class=\"btn btn-primary\"><i class=\"fa fa-search-plus\"></i></button>\r\n <button (click)=\"onZoomOut()\" class=\"btn btn-primary\"><i class=\"fa fa-search-minus\"></i></button>\r\n <button (click)=\"onResetImage()\" class=\"btn btn-danger\" style=\"margin-left: auto; margin-right: 0px;\"><i class=\"fa fa-times\"></i></button>\r\n </div>\r\n</div>\r\n<div class=\"app-margin-top-10\" [style.max-height.px]=\"Height\" [style.width.px]=\"Width\">\r\n <form-file *ngIf=\"!(ProfileImage?.nativefiles?.length > 0)\" [LabelInputRatio]=\"'0 12'\" [FancyMode]=\"true\" [(ngModel)]=\"ProfileImage\" name=\"imageToCrop\"></form-file>\r\n <ng-container *ngIf=\"ProfileImage?.nativefiles?.length > 0\">\r\n <image-cropper style=\"--cropper-outline-color: rgba(0,0,0)\"\r\n [backgroundColor]=\"'#91a3b0'\"\r\n [imageFile]=\"ProfileImage.nativefiles[0]\"\r\n [aspectRatio]=\"4 / 3\"\r\n [maintainAspectRatio]=\"true\"\r\n [containWithinAspectRatio]=\"true\"\r\n [cropperStaticWidth]=\"320\"\r\n [cropperStaticHeight]=\"320\"\r\n [onlyScaleDown]=\"true\"\r\n [roundCropper]=\"true\"\r\n [canvasRotation]=\"canvasRotation\"\r\n [allowMoveImage]=\"true\"\r\n [(transform)]=\"transform\"\r\n (imageCropped)=\"onImageCropped($event)\">\r\n </image-cropper>\r\n </ng-container>\r\n</div>", styles: [".btn{width:40px;margin-right:10px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "options", "cropperFrameAriaLabel", "output", "format", "autoCrop", "cropper", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "checkImageType", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange", "cropperChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FormsAndValidationsModule }, { kind: "component", type: i5$1.EsFormFileComponent, selector: "form-file", inputs: ["Multiple", "AllowDownload", "MaxSize", "FancyMode", "ReadFile"] }] }); }
1258
1258
  }
1259
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: EsImageCropperComponent, decorators: [{
1259
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EsImageCropperComponent, decorators: [{
1260
1260
  type: Component,
1261
1261
  args: [{ selector: "es-image-cropper", imports: [NgIf, ImageCropperComponent, FormsModule, FormsAndValidationsModule], template: "<div *ngIf=\"ProfileImage?.nativefiles?.length > 0\" [style.width.px]=\"Width\">\r\n <div class=\"d-flex\">\r\n <button (click)=\"onRotateLeft()\" class=\"btn btn-primary\"><i class=\"fa fa-undo\"></i></button>\r\n <button (click)=\"onRotateRight()\" class=\"btn btn-primary\"><i class=\"fa fa-repeat\"></i></button>\r\n <button (click)=\"onFlipHorizontal()\" class=\"btn btn-primary\"><i class=\"fa fa-arrows-h\"></i></button>\r\n <button (click)=\"onFlipVertical()\" class=\"btn btn-primary\"><i class=\"fa fa-arrows-v\"></i></button>\r\n <button (click)=\"onZoomIn()\" class=\"btn btn-primary\"><i class=\"fa fa-search-plus\"></i></button>\r\n <button (click)=\"onZoomOut()\" class=\"btn btn-primary\"><i class=\"fa fa-search-minus\"></i></button>\r\n <button (click)=\"onResetImage()\" class=\"btn btn-danger\" style=\"margin-left: auto; margin-right: 0px;\"><i class=\"fa fa-times\"></i></button>\r\n </div>\r\n</div>\r\n<div class=\"app-margin-top-10\" [style.max-height.px]=\"Height\" [style.width.px]=\"Width\">\r\n <form-file *ngIf=\"!(ProfileImage?.nativefiles?.length > 0)\" [LabelInputRatio]=\"'0 12'\" [FancyMode]=\"true\" [(ngModel)]=\"ProfileImage\" name=\"imageToCrop\"></form-file>\r\n <ng-container *ngIf=\"ProfileImage?.nativefiles?.length > 0\">\r\n <image-cropper style=\"--cropper-outline-color: rgba(0,0,0)\"\r\n [backgroundColor]=\"'#91a3b0'\"\r\n [imageFile]=\"ProfileImage.nativefiles[0]\"\r\n [aspectRatio]=\"4 / 3\"\r\n [maintainAspectRatio]=\"true\"\r\n [containWithinAspectRatio]=\"true\"\r\n [cropperStaticWidth]=\"320\"\r\n [cropperStaticHeight]=\"320\"\r\n [onlyScaleDown]=\"true\"\r\n [roundCropper]=\"true\"\r\n [canvasRotation]=\"canvasRotation\"\r\n [allowMoveImage]=\"true\"\r\n [(transform)]=\"transform\"\r\n (imageCropped)=\"onImageCropped($event)\">\r\n </image-cropper>\r\n </ng-container>\r\n</div>", styles: [".btn{width:40px;margin-right:10px}\n"] }]
1262
1262
  }], ctorParameters: () => [], propDecorators: { Height: [{
@@ -1290,10 +1290,10 @@ class FormSelectorComponent {
1290
1290
  this.onNavigation = new EventEmitter();
1291
1291
  this.onClipboardCopy = new EventEmitter();
1292
1292
  }
1293
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1294
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.14", type: FormSelectorComponent, isStandalone: true, selector: "form-selector", inputs: { SetValidationSubject: { classPropertyName: "SetValidationSubject", publicName: "SetValidationSubject", isSignal: false, isRequired: false, transformFunction: null }, ModalOnly: { classPropertyName: "ModalOnly", publicName: "ModalOnly", isSignal: true, isRequired: false, transformFunction: null }, Valid: { classPropertyName: "Valid", publicName: "Valid", isSignal: true, isRequired: false, transformFunction: null }, SelectedLabel: { classPropertyName: "SelectedLabel", publicName: "SelectedLabel", isSignal: true, isRequired: false, transformFunction: null }, Validation: { classPropertyName: "Validation", publicName: "Validation", isSignal: true, isRequired: false, transformFunction: null }, Readonly: { classPropertyName: "Readonly", publicName: "Readonly", isSignal: true, isRequired: false, transformFunction: null }, Form: { classPropertyName: "Form", publicName: "Form", isSignal: true, isRequired: false, transformFunction: null }, Name: { classPropertyName: "Name", publicName: "Name", isSignal: true, isRequired: false, transformFunction: null }, ngModelOptions: { classPropertyName: "ngModelOptions", publicName: "ngModelOptions", isSignal: true, isRequired: false, transformFunction: null }, Required: { classPropertyName: "Required", publicName: "Required", isSignal: true, isRequired: false, transformFunction: null }, Placeholder: { classPropertyName: "Placeholder", publicName: "Placeholder", isSignal: true, isRequired: false, transformFunction: null }, HasExternalLink: { classPropertyName: "HasExternalLink", publicName: "HasExternalLink", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { SelectedLabel: "SelectedLabelChange", onChange: "onChange", onSearch: "onSearch", onNavigation: "onNavigation", onClipboardCopy: "onClipboardCopy" }, ngImport: i0, template: "<div class=\"app-pointer app-selector-input-area\" (click)=\"onSearch.emit()\" (contextmenu)=\"onClipboardCopy.emit(); false;\"></div>\r\n\r\n<form-input *ngIf=\"!ModalOnly() && Name()\"\r\n [SetValidationSubject]=\"SetValidationSubject\"\r\n [class.app-selector-input-invalid]=\"!Valid()\"\r\n [class.app-selector-input]=\"!Readonly()\"\r\n [Form]=\"Form()\"\r\n readonly\r\n [disabled]=\"Readonly()\"\r\n [FormLayout]=\"false\"\r\n [Validation]=\"Validation()\"\r\n [(ngModel)]=\"SelectedLabel\"\r\n [ngModelOptions]=\"ngModelOptions()\"\r\n [required]=\"Required()\"\r\n [Placeholder]=\"Placeholder()\" \r\n type=\"text\"\r\n (inputChange)=\"onChange.emit()\"\r\n (click)=\"onSearch.emit()\"\r\n (contextmenu)=\"onClipboardCopy.emit(); false;\"\r\n name=\"{{Name()}}\">\r\n\r\n <ng-template #suffix>\r\n <span class=\"fa fa-search\" (click)=\"onSearch.emit();\"></span>\r\n </ng-template>\r\n</form-input>\r\n\r\n<span *ngIf=\"HasExternalLink()\" class=\"fa fa-external-link app-pointer\" style=\"position: absolute; right: 65px; bottom: 12px; z-index: 9999;\" (click)=\"onNavigation.emit()\"></span>", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsAndValidationsModule }, { kind: "component", type: i5$1.EsFormInputComponent, selector: "form-input", inputs: ["minlength", "maxlength", "pattern", "Password"] }] }); }
1293
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FormSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1294
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: FormSelectorComponent, isStandalone: true, selector: "form-selector", inputs: { SetValidationSubject: { classPropertyName: "SetValidationSubject", publicName: "SetValidationSubject", isSignal: false, isRequired: false, transformFunction: null }, ModalOnly: { classPropertyName: "ModalOnly", publicName: "ModalOnly", isSignal: true, isRequired: false, transformFunction: null }, Valid: { classPropertyName: "Valid", publicName: "Valid", isSignal: true, isRequired: false, transformFunction: null }, SelectedLabel: { classPropertyName: "SelectedLabel", publicName: "SelectedLabel", isSignal: true, isRequired: false, transformFunction: null }, Validation: { classPropertyName: "Validation", publicName: "Validation", isSignal: true, isRequired: false, transformFunction: null }, Readonly: { classPropertyName: "Readonly", publicName: "Readonly", isSignal: true, isRequired: false, transformFunction: null }, Form: { classPropertyName: "Form", publicName: "Form", isSignal: true, isRequired: false, transformFunction: null }, Name: { classPropertyName: "Name", publicName: "Name", isSignal: true, isRequired: false, transformFunction: null }, ngModelOptions: { classPropertyName: "ngModelOptions", publicName: "ngModelOptions", isSignal: true, isRequired: false, transformFunction: null }, Required: { classPropertyName: "Required", publicName: "Required", isSignal: true, isRequired: false, transformFunction: null }, Placeholder: { classPropertyName: "Placeholder", publicName: "Placeholder", isSignal: true, isRequired: false, transformFunction: null }, HasExternalLink: { classPropertyName: "HasExternalLink", publicName: "HasExternalLink", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { SelectedLabel: "SelectedLabelChange", onChange: "onChange", onSearch: "onSearch", onNavigation: "onNavigation", onClipboardCopy: "onClipboardCopy" }, ngImport: i0, template: "<div class=\"app-pointer app-selector-input-area\" (click)=\"onSearch.emit()\" (contextmenu)=\"onClipboardCopy.emit(); false;\"></div>\r\n\r\n<form-input *ngIf=\"!ModalOnly() && Name()\"\r\n [SetValidationSubject]=\"SetValidationSubject\"\r\n [class.app-selector-input-invalid]=\"!Valid()\"\r\n [class.app-selector-input]=\"!Readonly()\"\r\n [Form]=\"Form()\"\r\n readonly\r\n [disabled]=\"Readonly()\"\r\n [FormLayout]=\"false\"\r\n [Validation]=\"Validation()\"\r\n [(ngModel)]=\"SelectedLabel\"\r\n [ngModelOptions]=\"ngModelOptions()\"\r\n [required]=\"Required()\"\r\n [Placeholder]=\"Placeholder()\" \r\n type=\"text\"\r\n (inputChange)=\"onChange.emit()\"\r\n (click)=\"onSearch.emit()\"\r\n (contextmenu)=\"onClipboardCopy.emit(); false;\"\r\n name=\"{{Name()}}\">\r\n\r\n <ng-template #suffix>\r\n <span class=\"fa fa-search\" (click)=\"onSearch.emit();\"></span>\r\n </ng-template>\r\n</form-input>\r\n\r\n<span *ngIf=\"HasExternalLink()\" class=\"fa fa-external-link app-pointer\" style=\"position: absolute; right: 65px; bottom: 12px; z-index: 9999;\" (click)=\"onNavigation.emit()\"></span>", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsAndValidationsModule }, { kind: "component", type: i5$1.EsFormInputComponent, selector: "form-input", inputs: ["minlength", "maxlength", "pattern", "Password"] }] }); }
1295
1295
  }
1296
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormSelectorComponent, decorators: [{
1296
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FormSelectorComponent, decorators: [{
1297
1297
  type: Component,
1298
1298
  args: [{ selector: "form-selector", imports: [FormsModule, CommonModule, FormsAndValidationsModule], template: "<div class=\"app-pointer app-selector-input-area\" (click)=\"onSearch.emit()\" (contextmenu)=\"onClipboardCopy.emit(); false;\"></div>\r\n\r\n<form-input *ngIf=\"!ModalOnly() && Name()\"\r\n [SetValidationSubject]=\"SetValidationSubject\"\r\n [class.app-selector-input-invalid]=\"!Valid()\"\r\n [class.app-selector-input]=\"!Readonly()\"\r\n [Form]=\"Form()\"\r\n readonly\r\n [disabled]=\"Readonly()\"\r\n [FormLayout]=\"false\"\r\n [Validation]=\"Validation()\"\r\n [(ngModel)]=\"SelectedLabel\"\r\n [ngModelOptions]=\"ngModelOptions()\"\r\n [required]=\"Required()\"\r\n [Placeholder]=\"Placeholder()\" \r\n type=\"text\"\r\n (inputChange)=\"onChange.emit()\"\r\n (click)=\"onSearch.emit()\"\r\n (contextmenu)=\"onClipboardCopy.emit(); false;\"\r\n name=\"{{Name()}}\">\r\n\r\n <ng-template #suffix>\r\n <span class=\"fa fa-search\" (click)=\"onSearch.emit();\"></span>\r\n </ng-template>\r\n</form-input>\r\n\r\n<span *ngIf=\"HasExternalLink()\" class=\"fa fa-external-link app-pointer\" style=\"position: absolute; right: 65px; bottom: 12px; z-index: 9999;\" (click)=\"onNavigation.emit()\"></span>" }]
1299
1299
  }], propDecorators: { SetValidationSubject: [{
@@ -1324,10 +1324,10 @@ class FormSelectorDialogComponent {
1324
1324
  hide() {
1325
1325
  this.itemSearch.hide();
1326
1326
  }
1327
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormSelectorDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1328
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: FormSelectorDialogComponent, isStandalone: true, selector: "form-selector-dialog", inputs: { Subject: "Subject", EsTableTemplate: "EsTableTemplate", TableClasses: "TableClasses", SingleSelection: "SingleSelection", searchView: "searchView" }, outputs: { onClearValue: "onClearValue", onCloseDialog: "onCloseDialog", onConfirmSelection: "onConfirmSelection", onSearchRequest: "onSearchRequest", onDialogVisibilityChange: "onDialogVisibilityChange" }, viewQueries: [{ propertyName: "itemSearch", first: true, predicate: ["itemSearch"], descendants: true }], ngImport: i0, template: "<es-modal #itemSearch [Size]=\"'XL'\" (onShow)=\"onDialogVisibilityChange.emit(true)\" (onHide)=\"onDialogVisibilityChange.emit(false)\">\r\n <es-modal-head (Close)=\"itemSearch.hide();\">\r\n <h5 class=\"modal-title pull-left\">Seleziona {{Subject}}</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\">\r\n <form>\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <!--Parte specifica dei filtri-->\r\n <ng-content select=\"[filters]\"></ng-content>\r\n <!----------------------------->\r\n </div>\r\n <div class=\"col-md-1\" style=\"display: flex;\">\r\n <button class=\"input-group-addon btn app-btn-search\" [disabled]=\"searchView.searchinprogress\" (click)=\"onSearchRequest.emit(true)\" type=\"submit\" style=\"margin-left: auto;\">\r\n <i class=\"far\" [class.fa-search]=\"!searchView.searchinprogress\" [class.fa-spinner]=\"searchView.searchinprogress\" [class.fa-spin]=\"searchView.searchinprogress\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n <div class=\"app-margin-top-15\">\r\n <es-table [class]=\"TableClasses\" [(ngModel)]=\"searchView\" [Selection]=\"true\" [SingleSelection]=\"SingleSelection\" (onSearchRequest)=\"onSearchRequest.emit($event);\" [EsThTdProvider]=\"EsTableTemplate\"></es-table>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-danger\" style=\"margin-right: auto;\" (click)=\"onClearValue.emit();\">Rimuovi valore</button>\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"onCloseDialog.emit();\">Annulla</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onConfirmSelection.emit();\">Conferma</button>\r\n </div>\r\n</es-modal>", dependencies: [{ kind: "ngmodule", type: EsTableModule }, { kind: "component", type: i7.EsTableComponent, selector: "es-table", inputs: ["globalCheck", "autoUpdate", "seconds", "researchInProgress", "globalColVisCheck", "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: ["globalCheckChange", "autoUpdateChange", "secondsChange", "researchInProgressChange", "globalColVisCheckChange", "onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onModelChange", "onOpenContextMenu", "onCornerAction", "onDynamicOperation"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: CommonModule }, { 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"] }] }); }
1327
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FormSelectorDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1328
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: FormSelectorDialogComponent, isStandalone: true, selector: "form-selector-dialog", inputs: { Subject: "Subject", EsTableTemplate: "EsTableTemplate", TableClasses: "TableClasses", SingleSelection: "SingleSelection", searchView: "searchView" }, outputs: { onClearValue: "onClearValue", onCloseDialog: "onCloseDialog", onConfirmSelection: "onConfirmSelection", onSearchRequest: "onSearchRequest", onDialogVisibilityChange: "onDialogVisibilityChange" }, viewQueries: [{ propertyName: "itemSearch", first: true, predicate: ["itemSearch"], descendants: true }], ngImport: i0, template: "<es-modal #itemSearch [Size]=\"'XL'\" (onShow)=\"onDialogVisibilityChange.emit(true)\" (onHide)=\"onDialogVisibilityChange.emit(false)\">\r\n <es-modal-head (Close)=\"itemSearch.hide();\">\r\n <h5 class=\"modal-title pull-left\">Seleziona {{Subject}}</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\">\r\n <form>\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <!--Parte specifica dei filtri-->\r\n <ng-content select=\"[filters]\"></ng-content>\r\n <!----------------------------->\r\n </div>\r\n <div class=\"col-md-1\" style=\"display: flex;\">\r\n <button class=\"input-group-addon btn app-btn-search\" [disabled]=\"searchView.searchinprogress\" (click)=\"onSearchRequest.emit(true)\" type=\"submit\" style=\"margin-left: auto;\">\r\n <i class=\"far\" [class.fa-search]=\"!searchView.searchinprogress\" [class.fa-spinner]=\"searchView.searchinprogress\" [class.fa-spin]=\"searchView.searchinprogress\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n <div class=\"app-margin-top-15\">\r\n <es-table [class]=\"TableClasses\" [(ngModel)]=\"searchView\" [Selection]=\"true\" [SingleSelection]=\"SingleSelection\" (onSearchRequest)=\"onSearchRequest.emit($event);\" [EsThTdProvider]=\"EsTableTemplate\"></es-table>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-danger\" style=\"margin-right: auto;\" (click)=\"onClearValue.emit();\">Rimuovi valore</button>\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"onCloseDialog.emit();\">Annulla</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onConfirmSelection.emit();\">Conferma</button>\r\n </div>\r\n</es-modal>", dependencies: [{ kind: "ngmodule", type: EsTableModule }, { kind: "component", type: i7.EsTableComponent, selector: "es-table", inputs: ["globalCheck", "autoUpdate", "seconds", "researchInProgress", "globalColVisCheck", "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: ["globalCheckChange", "autoUpdateChange", "secondsChange", "researchInProgressChange", "globalColVisCheckChange", "onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onModelChange", "onOpenContextMenu", "onCornerAction", "onDynamicOperation"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: CommonModule }, { 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"] }] }); }
1329
1329
  }
1330
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormSelectorDialogComponent, decorators: [{
1330
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FormSelectorDialogComponent, decorators: [{
1331
1331
  type: Component,
1332
1332
  args: [{ selector: "form-selector-dialog", imports: [EsTableModule, FormsModule, CommonModule, EsModalComponent, EsModalHeadComponent], template: "<es-modal #itemSearch [Size]=\"'XL'\" (onShow)=\"onDialogVisibilityChange.emit(true)\" (onHide)=\"onDialogVisibilityChange.emit(false)\">\r\n <es-modal-head (Close)=\"itemSearch.hide();\">\r\n <h5 class=\"modal-title pull-left\">Seleziona {{Subject}}</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\">\r\n <form>\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <!--Parte specifica dei filtri-->\r\n <ng-content select=\"[filters]\"></ng-content>\r\n <!----------------------------->\r\n </div>\r\n <div class=\"col-md-1\" style=\"display: flex;\">\r\n <button class=\"input-group-addon btn app-btn-search\" [disabled]=\"searchView.searchinprogress\" (click)=\"onSearchRequest.emit(true)\" type=\"submit\" style=\"margin-left: auto;\">\r\n <i class=\"far\" [class.fa-search]=\"!searchView.searchinprogress\" [class.fa-spinner]=\"searchView.searchinprogress\" [class.fa-spin]=\"searchView.searchinprogress\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n <div class=\"app-margin-top-15\">\r\n <es-table [class]=\"TableClasses\" [(ngModel)]=\"searchView\" [Selection]=\"true\" [SingleSelection]=\"SingleSelection\" (onSearchRequest)=\"onSearchRequest.emit($event);\" [EsThTdProvider]=\"EsTableTemplate\"></es-table>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-danger\" style=\"margin-right: auto;\" (click)=\"onClearValue.emit();\">Rimuovi valore</button>\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"onCloseDialog.emit();\">Annulla</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onConfirmSelection.emit();\">Conferma</button>\r\n </div>\r\n</es-modal>" }]
1333
1333
  }], propDecorators: { Subject: [{
@@ -1373,6 +1373,7 @@ class EntityFeedsWidgetComponent {
1373
1373
  this.AllowReactions = false;
1374
1374
  this.AllowAttachments = false;
1375
1375
  this.AllowComments = false;
1376
+ this.AllowReplies = false;
1376
1377
  this.DebugMode = false;
1377
1378
  // Props
1378
1379
  this.Feeds = [];
@@ -1402,6 +1403,7 @@ class EntityFeedsWidgetComponent {
1402
1403
  this.GetFeedAttachmentAPI = this.GetFeedAttachmentAPI ?? this.ModuleConfig.GetFeedAttachmentAPI;
1403
1404
  // Comments
1404
1405
  this.AllowComments = this.AllowComments ?? this.ModuleConfig.AllowComments;
1406
+ this.AllowReplies = this.AllowReplies ?? this.ModuleConfig.AllowReplies;
1405
1407
  this.CreateFeedAPI = this.CreateFeedAPI ?? this.ModuleConfig.CreateFeedAPI;
1406
1408
  this.UpdateFeedAPI = this.UpdateFeedAPI ?? this.ModuleConfig.UpdateFeedAPI;
1407
1409
  this.DeleteFeedAPI = this.DeleteFeedAPI ?? this.ModuleConfig.DeleteFeedAPI;
@@ -1567,12 +1569,12 @@ class EntityFeedsWidgetComponent {
1567
1569
  this.SelectedFeed = item;
1568
1570
  return true;
1569
1571
  }
1570
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: EntityFeedsWidgetComponent, deps: [{ token: i3$1.HTTPService }, { token: i2$1.UtilityService }, { token: i2$1.MessageService }, { token: i1.TokenService }], target: i0.ɵɵFactoryTarget.Component }); }
1571
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: EntityFeedsWidgetComponent, isStandalone: true, selector: "entity-feeds-widget", inputs: { EntityType: "EntityType", EntityId: "EntityId", RefreshSubject: "RefreshSubject", GetFeedsAPI: "GetFeedsAPI", CreateFeedAPI: "CreateFeedAPI", UpdateFeedAPI: "UpdateFeedAPI", DeleteFeedAPI: "DeleteFeedAPI", ReactToFeedAPI: "ReactToFeedAPI", GetUserTagsAPI: "GetUserTagsAPI", GetFeedAttachmentAPI: "GetFeedAttachmentAPI", WidgetTitle: "WidgetTitle", MaxHeight: "MaxHeight", Readonly: "Readonly", AllowUserTags: "AllowUserTags", AllowReactions: "AllowReactions", AllowAttachments: "AllowAttachments", AllowComments: "AllowComments", DebugMode: "DebugMode", ModuleConfig: "ModuleConfig" }, viewQueries: [{ propertyName: "dlgCreateUpdateFeed", first: true, predicate: ["dlgCreateUpdateFeed"], descendants: true }, { propertyName: "dlgFeedContentDetails", first: true, predicate: ["dlgFeedContent"], descendants: true }], ngImport: i0, template: "<h5 class=\"app-bold\">{{WidgetTitle}}</h5>\r\n<div class=\"es-card\">\r\n <div class=\"d-flex\" style=\"margin-bottom: 1rem;\">\r\n <div *ngIf=\"!Readonly\">\r\n <div class=\"feed-create-button app-no-selection app-pointer\" (click)=\"onCreateFeed()\">\r\n <div style=\"margin: auto;\"><i class=\"fa fa-plus\"></i></div>\r\n </div>\r\n </div>\r\n <div style=\"width: 100%;\">\r\n <form-input [Validation]=\"false\" [FormLayout]=\"false\" [(ngModel)]=\"FeedContentFilter\" (keydown.enter)=\"doRefreshFeeds()\" name=\"feedcontentfilter\">\r\n <ng-template #suffix>\r\n <span class=\"fa fa-search\"></span>\r\n </ng-template>\r\n </form-input>\r\n </div>\r\n </div>\r\n <!--Feeds-->\r\n <div style=\"overflow: auto !important;\" [style.max-height]=\"MaxHeight\">\r\n <ng-container *ngFor=\"let item of Feeds\">\r\n <ng-container *ngTemplateOutlet=\"FeedsDisplay; context: { $implicit: item, 'childTemplate': FeedsDisplay ,'isChild': false };\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<!--Grafica di un singolo Feed-->\r\n<ng-template #FeedsDisplay let-item let-childTemplate=\"childTemplate\" let-isChild=\"isChild\">\r\n <div [class.feed-container]=\"!isChild\" [class.feed-child-container]=\"isChild\">\r\n <!--Colonna Sinistra-->\r\n <div class=\"feed-left-col\">\r\n <div class=\"feed-owner-icon\">\r\n <img *ngIf=\"!item.systemgen\" class=\"feed-owner-icon-image\" alt=\"user-img\" src=\"assets/img/users/user_default.jpg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'INFO'\" class=\"feed-owner-icon-image fill-info\" alt=\"info\" src=\"assets/img/users/user_severity.svg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'WARNING'\" class=\"feed-owner-icon-image fill-warning\" alt=\"warning\" src=\"assets/img/users/user_severity.svg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'ERROR'\" class=\"feed-owner-icon-image fill-danger\" alt=\"error\" src=\"assets/img/users/user_severity.svg\">\r\n </div>\r\n <div *ngIf=\"item.childfeeds?.length > 0\" class=\"feed-sideline\"></div>\r\n </div>\r\n <!--Colonna Centrale-->\r\n <div class=\"feed-mid-col\">\r\n <div class=\"feed-mid-col-content\">\r\n <!--Content-->\r\n <div class=\"width-90\">\r\n <!--Intestazione-->\r\n <div>\r\n <span class=\"app-bold\">{{item.systemgen ? 'SISTEMA' : item.user}} </span>\r\n <span class=\"feed-gray-text\">{{item.dateins | loc_date: 'DD/MM/YYYY'}} alle {{item.dateins | loc_date: 'HH:mm'}}</span>\r\n </div>\r\n <!--Allegato-->\r\n <div *ngIf=\"item.filename\">\r\n <div class=\"app-pointer feed-cta\" (click)=\"onDownloadFeedAttachment(item)\">\r\n <span><i class=\"fa fa-file\"></i> {{item.filename}} ({{item.filesize}}KB)</span>\r\n </div>\r\n </div>\r\n <!--Messaggio-->\r\n <div *ngIf=\"!item.systemgen\" class=\"app-markdown\" markdown emoji>{{item.content}}</div>\r\n <div *ngIf=\"item.systemgen\">\r\n <span>{{item.user}}: {{item.title}} <span (click)=\"onShowFeedContent(item.content)\"><i class=\"far fa-up-right-from-square text-info app-pointer\"></i></span></span>\r\n </div>\r\n <!--Operazioni-->\r\n <div class=\"feed-col-operations\">\r\n <div [class.feed-reaction-sel]=\"item.liked\" class=\"app-pointer feed-reaction\" (click)=\"onReactToFeed(item, item.liked ? '' : '0')\"><span><i class=\"fa fa-thumbs-up\"></i> {{item.likes?.length}}</span></div>\r\n <div [class.feed-reaction-sel]=\"item.disliked\" class=\"app-pointer feed-reaction\" (click)=\"onReactToFeed(item, item.disliked ? '' : '1')\"><span><i class=\"fa fa-thumbs-down\"></i> {{item.dislikes?.length}}</span></div>\r\n <div *ngIf=\"!Readonly && !isChild\" class=\"app-pointer feed-cta\" style=\"padding: 0.2rem;\" (click)=\"onSelectFeed(item) && onCreateFeed(true)\">Rispondi</div>\r\n </div>\r\n </div>\r\n <!--Dropdown-->\r\n <div class=\"feed-operation-col\">\r\n <div *ngIf=\"LoggedUser == item.user && !item.systemgen && !Readonly\" class=\"app-pointer feed-cta\" (click)=\"onSelectFeed(item) && CreateUpdateOptionsDropdown.Show($event)\">\r\n <i class=\"fa fa-ellipsis-h\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <!--Feeds figli-->\r\n <ng-container *ngFor=\"let childItem of item.childfeeds\">\r\n <ng-container *ngTemplateOutlet=\"childTemplate; context: { $implicit: childItem, 'isChild': true };\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!--Creazione/Aggiornamento Feed-->\r\n<es-modal #dlgCreateUpdateFeed [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgCreateUpdateFeed.hide();\">\r\n <h5 class=\"modal-title pull-left\">Aggiungi Feed</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"CreateUpdateFeedDTO\" #formCreateUpdateFeed=\"ngForm\" (ngSubmit)=\"formCreateUpdateFeed.valid && doCreateUpdateFeed()\">\r\n <div class=\"modal-body\">\r\n <form-checkbox *ac=\"'!R:actor'\" [Label]=\"'Pubblico'\" [LabelInputRatio]=\"'2 10'\" [(ngModel)]=\"CreateUpdateFeedDTO.ispublic\" name=\"ispublic\"></form-checkbox>\r\n <!-- <markup-editor [(ngModel)]=\"CreateUpdateFeedDTO.content\" name=\"markupEditor\"></markup-editor> --> TODO: Markdown editor (Vedi billing)\r\n <form-file [Label]=\"'File Allegato'\" [LabelInputRatio]=\"'4 8'\" [(ngModel)]=\"AllegatoFile\" [Last]=\"true\" name=\"add_file\"></form-file>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgCreateUpdateFeed.hide();\">Annulla</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<!--Contenuto Feed-->\r\n<es-modal #dlgFeedContent [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgFeedContent.hide();\">\r\n <h5 class=\"modal-title pull-left\">Dettaglio Feed di Sistema</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\">\r\n <div *ngIf=\"FeedContentDetails\" class=\"app-markdown\" markdown emoji>{{FeedContentDetails}}</div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgFeedContent.hide();\">Chiudi</button>\r\n </div>\r\n</es-modal>\r\n\r\n<simple-dropdown #CreateUpdateOptionsDropdown [Options]=\"CreateUpdateOptions\"></simple-dropdown>", styles: [".feed-cta{color:#0275d8!important}.feed-container{position:relative;margin-bottom:15px;font-size:.8rem!important;display:flex}.file-icon{background-color:#eee;border-radius:5px;font-size:.8rem;text-align:center}.feed-owner-icon{width:2rem;height:2rem}.feed-owner-icon-image{width:2rem;border-radius:1rem}.feed-sideline{height:calc(100% - 2rem);background-color:#eee;border-radius:1rem;width:.1rem;margin-top:.2rem!important;margin:auto}.feed-reaction{border-radius:5px;padding:.2rem .5rem;margin-right:.5rem;background-color:#eee!important}.feed-reaction-sel{background-color:#5599e5!important;color:#f8f9fa!important}.feed-create-button{border:1px solid #dfdfdf;border-radius:5px;height:39px;width:39px;margin-right:15px;display:flex}.feed-create-button:hover{background-color:#d4d4d4}.app-markdown p{margin-bottom:0!important;white-space:break-spaces!important}.app-ck-height-400{padding-bottom:15px!important}.app-ck-height-400 .ck-editor__editable{max-height:400px;min-height:200px}.feed-left-col{width:2rem}.feed-mid-col-content{display:flex;width:100%}.feed-mid-col{width:100%;padding-left:10px}.feed-operation-col{text-align:center;font-size:1rem;margin-left:auto;margin-right:1rem}.width-90{width:90%}.feed-gray-text{color:gray;font-size:.7rem}.feed-col-operations{display:flex;margin-top:.2rem}.feed-child-container{display:flex;margin-top:10px}.fill-info{filter:invert(69%) sepia(75%) saturate(6042%) hue-rotate(163deg) brightness(97%) contrast(103%)}.fill-warning{filter:invert(63%) sepia(87%) saturate(1749%) hue-rotate(351deg) brightness(103%) contrast(94%)}.fill-danger{filter:invert(15%) sepia(85%) saturate(2826%) hue-rotate(341deg) brightness(100%) contrast(103%)}::-webkit-scrollbar{width:4px;background-color:transparent}::-webkit-scrollbar-thumb{background-color:#ddd;border-radius:2px}::-webkit-scrollbar-track{background-color:transparent}\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: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ExtensionsModule }, { kind: "pipe", type: i2$1.LocDatePipe, name: "loc_date" }, { kind: "ngmodule", type: FormsAndValidationsModule }, { kind: "component", type: i5$1.EsFormInputComponent, selector: "form-input", inputs: ["minlength", "maxlength", "pattern", "Password"] }, { kind: "component", type: i5$1.EsFormCheckboxComponent, selector: "form-checkbox", inputs: ["SliderMode"] }, { kind: "component", type: i5$1.EsFormFileComponent, selector: "form-file", inputs: ["Multiple", "AllowDownload", "MaxSize", "FancyMode", "ReadFile"] }, { 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: "ngmodule", type: UtilityComponentsModule }, { kind: "component", type: i6.SimpleDropdownComponent, selector: "simple-dropdown", inputs: ["Options"] }] }); }
1572
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EntityFeedsWidgetComponent, deps: [{ token: i3$1.HTTPService }, { token: i2$1.UtilityService }, { token: i2$1.MessageService }, { token: i1.TokenService }], target: i0.ɵɵFactoryTarget.Component }); }
1573
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: EntityFeedsWidgetComponent, isStandalone: true, selector: "entity-feeds-widget", inputs: { EntityType: "EntityType", EntityId: "EntityId", RefreshSubject: "RefreshSubject", GetFeedsAPI: "GetFeedsAPI", CreateFeedAPI: "CreateFeedAPI", UpdateFeedAPI: "UpdateFeedAPI", DeleteFeedAPI: "DeleteFeedAPI", ReactToFeedAPI: "ReactToFeedAPI", GetUserTagsAPI: "GetUserTagsAPI", GetFeedAttachmentAPI: "GetFeedAttachmentAPI", WidgetTitle: "WidgetTitle", MaxHeight: "MaxHeight", Readonly: "Readonly", AllowUserTags: "AllowUserTags", AllowReactions: "AllowReactions", AllowAttachments: "AllowAttachments", AllowComments: "AllowComments", AllowReplies: "AllowReplies", DebugMode: "DebugMode", ModuleConfig: "ModuleConfig" }, viewQueries: [{ propertyName: "dlgCreateUpdateFeed", first: true, predicate: ["dlgCreateUpdateFeed"], descendants: true }, { propertyName: "dlgFeedContentDetails", first: true, predicate: ["dlgFeedContent"], descendants: true }], ngImport: i0, template: "<h5 class=\"app-bold\">{{WidgetTitle}}</h5>\r\n<div class=\"es-card\">\r\n <div class=\"d-flex\" style=\"margin-bottom: 1rem;\">\r\n <div *ngIf=\"!Readonly\">\r\n <div class=\"feed-create-button app-no-selection app-pointer\" (click)=\"onCreateFeed()\">\r\n <div style=\"margin: auto;\"><i class=\"fa fa-plus\"></i></div>\r\n </div>\r\n </div>\r\n <div style=\"width: 100%;\">\r\n <form-input [Validation]=\"false\" [FormLayout]=\"false\" [(ngModel)]=\"FeedContentFilter\" (keydown.enter)=\"doRefreshFeeds()\" name=\"feedcontentfilter\">\r\n <ng-template #suffix>\r\n <span class=\"fa fa-search\"></span>\r\n </ng-template>\r\n </form-input>\r\n </div>\r\n </div>\r\n <!--Feeds-->\r\n <div style=\"overflow: auto !important;\" [style.max-height]=\"MaxHeight\">\r\n <ng-container *ngFor=\"let item of Feeds; let first = first;\">\r\n <ng-container *ngTemplateOutlet=\"FeedsDisplay; context: { $implicit: item, 'childTemplate': FeedsDisplay ,'isChild': false, 'first': first };\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<!--Grafica di un singolo Feed-->\r\n<ng-template #FeedsDisplay let-item let-childTemplate=\"childTemplate\" let-isChild=\"isChild\" let-first=\"first\">\r\n <div [class.feed-container]=\"!isChild\" [class.feed-child-container]=\"isChild\" [class.first]=\"first\">\r\n <!--Colonna Sinistra-->\r\n <div class=\"feed-left-col\">\r\n <div class=\"feed-owner-icon\">\r\n <img *ngIf=\"!item.systemgen\" class=\"feed-owner-icon-image\" alt=\"user-img\" src=\"assets/img/users/user_default.jpg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'INFO'\" class=\"feed-owner-icon-image fill-info\" alt=\"info\" src=\"assets/img/users/user_severity.svg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'WARNING'\" class=\"feed-owner-icon-image fill-warning\" alt=\"warning\" src=\"assets/img/users/user_severity.svg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'ERROR'\" class=\"feed-owner-icon-image fill-danger\" alt=\"error\" src=\"assets/img/users/user_severity.svg\">\r\n </div>\r\n <div *ngIf=\"item.childfeeds?.length > 0\" class=\"feed-sideline\"></div>\r\n </div>\r\n <!--Colonna Centrale-->\r\n <div class=\"feed-mid-col\">\r\n <div class=\"feed-mid-col-content\">\r\n <!--Content-->\r\n <div class=\"width-90\">\r\n <!--Intestazione-->\r\n <div>\r\n <span class=\"app-bold\">{{item.systemgen ? 'SISTEMA' : item.user}} </span>\r\n <span class=\"feed-gray-text\">{{item.dateins | loc_date: 'DD/MM/YYYY'}} alle {{item.dateins | loc_date: 'HH:mm'}}</span>\r\n </div>\r\n <!--Allegato-->\r\n <div *ngIf=\"item.filename\">\r\n <div class=\"app-pointer feed-cta\" (click)=\"onDownloadFeedAttachment(item)\">\r\n <span><i class=\"fa fa-file\"></i> {{item.filename}} ({{item.filesize}}KB)</span>\r\n </div>\r\n </div>\r\n <!--Messaggio-->\r\n <div *ngIf=\"!item.systemgen\" class=\"app-markdown\" markdown emoji>{{item.content}}</div>\r\n <div *ngIf=\"item.systemgen\">\r\n <span>{{item.user}}: {{item.title}} <span (click)=\"onShowFeedContent(item.content)\"><i class=\"far fa-up-right-from-square text-info app-pointer\"></i></span></span>\r\n </div>\r\n <!--Operazioni-->\r\n <div class=\"feed-col-operations\">\r\n <ng-container *ngIf=\"AllowReactions\">\r\n <div [class.feed-reaction-sel]=\"item.liked\" class=\"app-pointer feed-reaction\" (click)=\"onReactToFeed(item, item.liked ? '' : '0')\"><span><i class=\"fa fa-thumbs-up\"></i> {{item.likes?.length}}</span></div>\r\n <div [class.feed-reaction-sel]=\"item.disliked\" class=\"app-pointer feed-reaction\" (click)=\"onReactToFeed(item, item.disliked ? '' : '1')\"><span><i class=\"fa fa-thumbs-down\"></i> {{item.dislikes?.length}}</span></div>\r\n </ng-container>\r\n <ng-container *ngIf=\"AllowReplies\">\r\n <div *ngIf=\"!Readonly && !isChild\" class=\"app-pointer feed-cta\" style=\"padding: 0.2rem;\" (click)=\"onSelectFeed(item) && onCreateFeed(true)\">Rispondi</div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <!--Dropdown-->\r\n <div class=\"feed-operation-col\">\r\n <div *ngIf=\"LoggedUser == item.user && !item.systemgen && !Readonly\" class=\"app-pointer feed-cta\" (click)=\"onSelectFeed(item) && CreateUpdateOptionsDropdown.Show($event)\">\r\n <i class=\"fa fa-ellipsis-h\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <!--Feeds figli-->\r\n <ng-container *ngFor=\"let childItem of item.childfeeds\">\r\n <ng-container *ngTemplateOutlet=\"childTemplate; context: { $implicit: childItem, 'isChild': true };\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!--Creazione/Aggiornamento Feed-->\r\n<es-modal #dlgCreateUpdateFeed [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgCreateUpdateFeed.hide();\">\r\n <h5 class=\"modal-title pull-left\">Aggiungi Feed</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"CreateUpdateFeedDTO\" #formCreateUpdateFeed=\"ngForm\" (ngSubmit)=\"formCreateUpdateFeed.valid && doCreateUpdateFeed()\">\r\n <div class=\"modal-body\">\r\n <form-checkbox *ac=\"'!R:actor'\" [Label]=\"'Pubblico'\" [LabelInputRatio]=\"'2 10'\" [(ngModel)]=\"CreateUpdateFeedDTO.ispublic\" name=\"ispublic\"></form-checkbox>\r\n <!-- <markup-editor [(ngModel)]=\"CreateUpdateFeedDTO.content\" name=\"markupEditor\"></markup-editor> --> TODO: Markdown editor (Vedi billing)\r\n <form-file [Label]=\"'File Allegato'\" [LabelInputRatio]=\"'4 8'\" [(ngModel)]=\"AllegatoFile\" [Last]=\"true\" name=\"add_file\"></form-file>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgCreateUpdateFeed.hide();\">Annulla</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<!--Contenuto Feed-->\r\n<es-modal #dlgFeedContent [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgFeedContent.hide();\">\r\n <h5 class=\"modal-title pull-left\">Dettaglio Feed di Sistema</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\">\r\n <div *ngIf=\"FeedContentDetails\" class=\"app-markdown\" markdown emoji>{{FeedContentDetails}}</div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgFeedContent.hide();\">Chiudi</button>\r\n </div>\r\n</es-modal>\r\n\r\n<simple-dropdown #CreateUpdateOptionsDropdown [Options]=\"CreateUpdateOptions\"></simple-dropdown>", styles: [".feed-cta{color:#0275d8!important}.feed-container{position:relative;margin-top:15px;font-size:.8rem!important;display:flex}.feed-container.first{margin-top:0}.file-icon{background-color:#eee;border-radius:5px;font-size:.8rem;text-align:center}.feed-owner-icon{width:2rem;height:2rem}.feed-owner-icon-image{width:2rem;border-radius:1rem}.feed-sideline{height:calc(100% - 2rem);background-color:#eee;border-radius:1rem;width:.1rem;margin-top:.2rem!important;margin:auto}.feed-reaction{border-radius:5px;padding:.2rem .5rem;margin-right:.5rem;background-color:#eee!important}.feed-reaction-sel{background-color:#5599e5!important;color:#f8f9fa!important}.feed-create-button{border:1px solid #dfdfdf;border-radius:5px;height:39px;width:39px;margin-right:15px;display:flex}.feed-create-button:hover{background-color:#d4d4d4}.app-markdown p{margin-bottom:0!important;white-space:break-spaces!important}.app-ck-height-400{padding-bottom:15px!important}.app-ck-height-400 .ck-editor__editable{max-height:400px;min-height:200px}.feed-left-col{width:2rem}.feed-mid-col-content{display:flex;width:100%}.feed-mid-col{width:100%;padding-left:10px}.feed-operation-col{text-align:center;font-size:1rem;margin-left:auto;margin-right:1rem}.width-90{width:90%}.feed-gray-text{color:gray;font-size:.7rem}.feed-col-operations{display:flex;margin-top:.2rem}.feed-child-container{display:flex;margin-top:10px}.fill-info{filter:invert(69%) sepia(75%) saturate(6042%) hue-rotate(163deg) brightness(97%) contrast(103%)}.fill-warning{filter:invert(63%) sepia(87%) saturate(1749%) hue-rotate(351deg) brightness(103%) contrast(94%)}.fill-danger{filter:invert(15%) sepia(85%) saturate(2826%) hue-rotate(341deg) brightness(100%) contrast(103%)}::-webkit-scrollbar{width:4px;background-color:transparent}::-webkit-scrollbar-thumb{background-color:#ddd;border-radius:2px}::-webkit-scrollbar-track{background-color:transparent}\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: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ExtensionsModule }, { kind: "pipe", type: i2$1.LocDatePipe, name: "loc_date" }, { kind: "ngmodule", type: FormsAndValidationsModule }, { kind: "component", type: i5$1.EsFormInputComponent, selector: "form-input", inputs: ["minlength", "maxlength", "pattern", "Password"] }, { kind: "component", type: i5$1.EsFormCheckboxComponent, selector: "form-checkbox", inputs: ["SliderMode"] }, { kind: "component", type: i5$1.EsFormFileComponent, selector: "form-file", inputs: ["Multiple", "AllowDownload", "MaxSize", "FancyMode", "ReadFile"] }, { 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: "ngmodule", type: UtilityComponentsModule }, { kind: "component", type: i6.SimpleDropdownComponent, selector: "simple-dropdown", inputs: ["Options"] }] }); }
1572
1574
  }
1573
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: EntityFeedsWidgetComponent, decorators: [{
1575
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EntityFeedsWidgetComponent, decorators: [{
1574
1576
  type: Component,
1575
- args: [{ selector: "entity-feeds-widget", imports: [NgIf, NgFor, NgTemplateOutlet, FormsModule, ExtensionsModule, FormsAndValidationsModule, EsModalComponent, EsModalHeadComponent, UtilityComponentsModule], template: "<h5 class=\"app-bold\">{{WidgetTitle}}</h5>\r\n<div class=\"es-card\">\r\n <div class=\"d-flex\" style=\"margin-bottom: 1rem;\">\r\n <div *ngIf=\"!Readonly\">\r\n <div class=\"feed-create-button app-no-selection app-pointer\" (click)=\"onCreateFeed()\">\r\n <div style=\"margin: auto;\"><i class=\"fa fa-plus\"></i></div>\r\n </div>\r\n </div>\r\n <div style=\"width: 100%;\">\r\n <form-input [Validation]=\"false\" [FormLayout]=\"false\" [(ngModel)]=\"FeedContentFilter\" (keydown.enter)=\"doRefreshFeeds()\" name=\"feedcontentfilter\">\r\n <ng-template #suffix>\r\n <span class=\"fa fa-search\"></span>\r\n </ng-template>\r\n </form-input>\r\n </div>\r\n </div>\r\n <!--Feeds-->\r\n <div style=\"overflow: auto !important;\" [style.max-height]=\"MaxHeight\">\r\n <ng-container *ngFor=\"let item of Feeds\">\r\n <ng-container *ngTemplateOutlet=\"FeedsDisplay; context: { $implicit: item, 'childTemplate': FeedsDisplay ,'isChild': false };\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<!--Grafica di un singolo Feed-->\r\n<ng-template #FeedsDisplay let-item let-childTemplate=\"childTemplate\" let-isChild=\"isChild\">\r\n <div [class.feed-container]=\"!isChild\" [class.feed-child-container]=\"isChild\">\r\n <!--Colonna Sinistra-->\r\n <div class=\"feed-left-col\">\r\n <div class=\"feed-owner-icon\">\r\n <img *ngIf=\"!item.systemgen\" class=\"feed-owner-icon-image\" alt=\"user-img\" src=\"assets/img/users/user_default.jpg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'INFO'\" class=\"feed-owner-icon-image fill-info\" alt=\"info\" src=\"assets/img/users/user_severity.svg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'WARNING'\" class=\"feed-owner-icon-image fill-warning\" alt=\"warning\" src=\"assets/img/users/user_severity.svg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'ERROR'\" class=\"feed-owner-icon-image fill-danger\" alt=\"error\" src=\"assets/img/users/user_severity.svg\">\r\n </div>\r\n <div *ngIf=\"item.childfeeds?.length > 0\" class=\"feed-sideline\"></div>\r\n </div>\r\n <!--Colonna Centrale-->\r\n <div class=\"feed-mid-col\">\r\n <div class=\"feed-mid-col-content\">\r\n <!--Content-->\r\n <div class=\"width-90\">\r\n <!--Intestazione-->\r\n <div>\r\n <span class=\"app-bold\">{{item.systemgen ? 'SISTEMA' : item.user}} </span>\r\n <span class=\"feed-gray-text\">{{item.dateins | loc_date: 'DD/MM/YYYY'}} alle {{item.dateins | loc_date: 'HH:mm'}}</span>\r\n </div>\r\n <!--Allegato-->\r\n <div *ngIf=\"item.filename\">\r\n <div class=\"app-pointer feed-cta\" (click)=\"onDownloadFeedAttachment(item)\">\r\n <span><i class=\"fa fa-file\"></i> {{item.filename}} ({{item.filesize}}KB)</span>\r\n </div>\r\n </div>\r\n <!--Messaggio-->\r\n <div *ngIf=\"!item.systemgen\" class=\"app-markdown\" markdown emoji>{{item.content}}</div>\r\n <div *ngIf=\"item.systemgen\">\r\n <span>{{item.user}}: {{item.title}} <span (click)=\"onShowFeedContent(item.content)\"><i class=\"far fa-up-right-from-square text-info app-pointer\"></i></span></span>\r\n </div>\r\n <!--Operazioni-->\r\n <div class=\"feed-col-operations\">\r\n <div [class.feed-reaction-sel]=\"item.liked\" class=\"app-pointer feed-reaction\" (click)=\"onReactToFeed(item, item.liked ? '' : '0')\"><span><i class=\"fa fa-thumbs-up\"></i> {{item.likes?.length}}</span></div>\r\n <div [class.feed-reaction-sel]=\"item.disliked\" class=\"app-pointer feed-reaction\" (click)=\"onReactToFeed(item, item.disliked ? '' : '1')\"><span><i class=\"fa fa-thumbs-down\"></i> {{item.dislikes?.length}}</span></div>\r\n <div *ngIf=\"!Readonly && !isChild\" class=\"app-pointer feed-cta\" style=\"padding: 0.2rem;\" (click)=\"onSelectFeed(item) && onCreateFeed(true)\">Rispondi</div>\r\n </div>\r\n </div>\r\n <!--Dropdown-->\r\n <div class=\"feed-operation-col\">\r\n <div *ngIf=\"LoggedUser == item.user && !item.systemgen && !Readonly\" class=\"app-pointer feed-cta\" (click)=\"onSelectFeed(item) && CreateUpdateOptionsDropdown.Show($event)\">\r\n <i class=\"fa fa-ellipsis-h\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <!--Feeds figli-->\r\n <ng-container *ngFor=\"let childItem of item.childfeeds\">\r\n <ng-container *ngTemplateOutlet=\"childTemplate; context: { $implicit: childItem, 'isChild': true };\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!--Creazione/Aggiornamento Feed-->\r\n<es-modal #dlgCreateUpdateFeed [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgCreateUpdateFeed.hide();\">\r\n <h5 class=\"modal-title pull-left\">Aggiungi Feed</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"CreateUpdateFeedDTO\" #formCreateUpdateFeed=\"ngForm\" (ngSubmit)=\"formCreateUpdateFeed.valid && doCreateUpdateFeed()\">\r\n <div class=\"modal-body\">\r\n <form-checkbox *ac=\"'!R:actor'\" [Label]=\"'Pubblico'\" [LabelInputRatio]=\"'2 10'\" [(ngModel)]=\"CreateUpdateFeedDTO.ispublic\" name=\"ispublic\"></form-checkbox>\r\n <!-- <markup-editor [(ngModel)]=\"CreateUpdateFeedDTO.content\" name=\"markupEditor\"></markup-editor> --> TODO: Markdown editor (Vedi billing)\r\n <form-file [Label]=\"'File Allegato'\" [LabelInputRatio]=\"'4 8'\" [(ngModel)]=\"AllegatoFile\" [Last]=\"true\" name=\"add_file\"></form-file>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgCreateUpdateFeed.hide();\">Annulla</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<!--Contenuto Feed-->\r\n<es-modal #dlgFeedContent [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgFeedContent.hide();\">\r\n <h5 class=\"modal-title pull-left\">Dettaglio Feed di Sistema</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\">\r\n <div *ngIf=\"FeedContentDetails\" class=\"app-markdown\" markdown emoji>{{FeedContentDetails}}</div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgFeedContent.hide();\">Chiudi</button>\r\n </div>\r\n</es-modal>\r\n\r\n<simple-dropdown #CreateUpdateOptionsDropdown [Options]=\"CreateUpdateOptions\"></simple-dropdown>", styles: [".feed-cta{color:#0275d8!important}.feed-container{position:relative;margin-bottom:15px;font-size:.8rem!important;display:flex}.file-icon{background-color:#eee;border-radius:5px;font-size:.8rem;text-align:center}.feed-owner-icon{width:2rem;height:2rem}.feed-owner-icon-image{width:2rem;border-radius:1rem}.feed-sideline{height:calc(100% - 2rem);background-color:#eee;border-radius:1rem;width:.1rem;margin-top:.2rem!important;margin:auto}.feed-reaction{border-radius:5px;padding:.2rem .5rem;margin-right:.5rem;background-color:#eee!important}.feed-reaction-sel{background-color:#5599e5!important;color:#f8f9fa!important}.feed-create-button{border:1px solid #dfdfdf;border-radius:5px;height:39px;width:39px;margin-right:15px;display:flex}.feed-create-button:hover{background-color:#d4d4d4}.app-markdown p{margin-bottom:0!important;white-space:break-spaces!important}.app-ck-height-400{padding-bottom:15px!important}.app-ck-height-400 .ck-editor__editable{max-height:400px;min-height:200px}.feed-left-col{width:2rem}.feed-mid-col-content{display:flex;width:100%}.feed-mid-col{width:100%;padding-left:10px}.feed-operation-col{text-align:center;font-size:1rem;margin-left:auto;margin-right:1rem}.width-90{width:90%}.feed-gray-text{color:gray;font-size:.7rem}.feed-col-operations{display:flex;margin-top:.2rem}.feed-child-container{display:flex;margin-top:10px}.fill-info{filter:invert(69%) sepia(75%) saturate(6042%) hue-rotate(163deg) brightness(97%) contrast(103%)}.fill-warning{filter:invert(63%) sepia(87%) saturate(1749%) hue-rotate(351deg) brightness(103%) contrast(94%)}.fill-danger{filter:invert(15%) sepia(85%) saturate(2826%) hue-rotate(341deg) brightness(100%) contrast(103%)}::-webkit-scrollbar{width:4px;background-color:transparent}::-webkit-scrollbar-thumb{background-color:#ddd;border-radius:2px}::-webkit-scrollbar-track{background-color:transparent}\n"] }]
1577
+ args: [{ selector: "entity-feeds-widget", imports: [NgIf, NgFor, NgTemplateOutlet, FormsModule, ExtensionsModule, FormsAndValidationsModule, EsModalComponent, EsModalHeadComponent, UtilityComponentsModule], template: "<h5 class=\"app-bold\">{{WidgetTitle}}</h5>\r\n<div class=\"es-card\">\r\n <div class=\"d-flex\" style=\"margin-bottom: 1rem;\">\r\n <div *ngIf=\"!Readonly\">\r\n <div class=\"feed-create-button app-no-selection app-pointer\" (click)=\"onCreateFeed()\">\r\n <div style=\"margin: auto;\"><i class=\"fa fa-plus\"></i></div>\r\n </div>\r\n </div>\r\n <div style=\"width: 100%;\">\r\n <form-input [Validation]=\"false\" [FormLayout]=\"false\" [(ngModel)]=\"FeedContentFilter\" (keydown.enter)=\"doRefreshFeeds()\" name=\"feedcontentfilter\">\r\n <ng-template #suffix>\r\n <span class=\"fa fa-search\"></span>\r\n </ng-template>\r\n </form-input>\r\n </div>\r\n </div>\r\n <!--Feeds-->\r\n <div style=\"overflow: auto !important;\" [style.max-height]=\"MaxHeight\">\r\n <ng-container *ngFor=\"let item of Feeds; let first = first;\">\r\n <ng-container *ngTemplateOutlet=\"FeedsDisplay; context: { $implicit: item, 'childTemplate': FeedsDisplay ,'isChild': false, 'first': first };\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<!--Grafica di un singolo Feed-->\r\n<ng-template #FeedsDisplay let-item let-childTemplate=\"childTemplate\" let-isChild=\"isChild\" let-first=\"first\">\r\n <div [class.feed-container]=\"!isChild\" [class.feed-child-container]=\"isChild\" [class.first]=\"first\">\r\n <!--Colonna Sinistra-->\r\n <div class=\"feed-left-col\">\r\n <div class=\"feed-owner-icon\">\r\n <img *ngIf=\"!item.systemgen\" class=\"feed-owner-icon-image\" alt=\"user-img\" src=\"assets/img/users/user_default.jpg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'INFO'\" class=\"feed-owner-icon-image fill-info\" alt=\"info\" src=\"assets/img/users/user_severity.svg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'WARNING'\" class=\"feed-owner-icon-image fill-warning\" alt=\"warning\" src=\"assets/img/users/user_severity.svg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'ERROR'\" class=\"feed-owner-icon-image fill-danger\" alt=\"error\" src=\"assets/img/users/user_severity.svg\">\r\n </div>\r\n <div *ngIf=\"item.childfeeds?.length > 0\" class=\"feed-sideline\"></div>\r\n </div>\r\n <!--Colonna Centrale-->\r\n <div class=\"feed-mid-col\">\r\n <div class=\"feed-mid-col-content\">\r\n <!--Content-->\r\n <div class=\"width-90\">\r\n <!--Intestazione-->\r\n <div>\r\n <span class=\"app-bold\">{{item.systemgen ? 'SISTEMA' : item.user}} </span>\r\n <span class=\"feed-gray-text\">{{item.dateins | loc_date: 'DD/MM/YYYY'}} alle {{item.dateins | loc_date: 'HH:mm'}}</span>\r\n </div>\r\n <!--Allegato-->\r\n <div *ngIf=\"item.filename\">\r\n <div class=\"app-pointer feed-cta\" (click)=\"onDownloadFeedAttachment(item)\">\r\n <span><i class=\"fa fa-file\"></i> {{item.filename}} ({{item.filesize}}KB)</span>\r\n </div>\r\n </div>\r\n <!--Messaggio-->\r\n <div *ngIf=\"!item.systemgen\" class=\"app-markdown\" markdown emoji>{{item.content}}</div>\r\n <div *ngIf=\"item.systemgen\">\r\n <span>{{item.user}}: {{item.title}} <span (click)=\"onShowFeedContent(item.content)\"><i class=\"far fa-up-right-from-square text-info app-pointer\"></i></span></span>\r\n </div>\r\n <!--Operazioni-->\r\n <div class=\"feed-col-operations\">\r\n <ng-container *ngIf=\"AllowReactions\">\r\n <div [class.feed-reaction-sel]=\"item.liked\" class=\"app-pointer feed-reaction\" (click)=\"onReactToFeed(item, item.liked ? '' : '0')\"><span><i class=\"fa fa-thumbs-up\"></i> {{item.likes?.length}}</span></div>\r\n <div [class.feed-reaction-sel]=\"item.disliked\" class=\"app-pointer feed-reaction\" (click)=\"onReactToFeed(item, item.disliked ? '' : '1')\"><span><i class=\"fa fa-thumbs-down\"></i> {{item.dislikes?.length}}</span></div>\r\n </ng-container>\r\n <ng-container *ngIf=\"AllowReplies\">\r\n <div *ngIf=\"!Readonly && !isChild\" class=\"app-pointer feed-cta\" style=\"padding: 0.2rem;\" (click)=\"onSelectFeed(item) && onCreateFeed(true)\">Rispondi</div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <!--Dropdown-->\r\n <div class=\"feed-operation-col\">\r\n <div *ngIf=\"LoggedUser == item.user && !item.systemgen && !Readonly\" class=\"app-pointer feed-cta\" (click)=\"onSelectFeed(item) && CreateUpdateOptionsDropdown.Show($event)\">\r\n <i class=\"fa fa-ellipsis-h\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <!--Feeds figli-->\r\n <ng-container *ngFor=\"let childItem of item.childfeeds\">\r\n <ng-container *ngTemplateOutlet=\"childTemplate; context: { $implicit: childItem, 'isChild': true };\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!--Creazione/Aggiornamento Feed-->\r\n<es-modal #dlgCreateUpdateFeed [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgCreateUpdateFeed.hide();\">\r\n <h5 class=\"modal-title pull-left\">Aggiungi Feed</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"CreateUpdateFeedDTO\" #formCreateUpdateFeed=\"ngForm\" (ngSubmit)=\"formCreateUpdateFeed.valid && doCreateUpdateFeed()\">\r\n <div class=\"modal-body\">\r\n <form-checkbox *ac=\"'!R:actor'\" [Label]=\"'Pubblico'\" [LabelInputRatio]=\"'2 10'\" [(ngModel)]=\"CreateUpdateFeedDTO.ispublic\" name=\"ispublic\"></form-checkbox>\r\n <!-- <markup-editor [(ngModel)]=\"CreateUpdateFeedDTO.content\" name=\"markupEditor\"></markup-editor> --> TODO: Markdown editor (Vedi billing)\r\n <form-file [Label]=\"'File Allegato'\" [LabelInputRatio]=\"'4 8'\" [(ngModel)]=\"AllegatoFile\" [Last]=\"true\" name=\"add_file\"></form-file>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgCreateUpdateFeed.hide();\">Annulla</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<!--Contenuto Feed-->\r\n<es-modal #dlgFeedContent [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgFeedContent.hide();\">\r\n <h5 class=\"modal-title pull-left\">Dettaglio Feed di Sistema</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\">\r\n <div *ngIf=\"FeedContentDetails\" class=\"app-markdown\" markdown emoji>{{FeedContentDetails}}</div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgFeedContent.hide();\">Chiudi</button>\r\n </div>\r\n</es-modal>\r\n\r\n<simple-dropdown #CreateUpdateOptionsDropdown [Options]=\"CreateUpdateOptions\"></simple-dropdown>", styles: [".feed-cta{color:#0275d8!important}.feed-container{position:relative;margin-top:15px;font-size:.8rem!important;display:flex}.feed-container.first{margin-top:0}.file-icon{background-color:#eee;border-radius:5px;font-size:.8rem;text-align:center}.feed-owner-icon{width:2rem;height:2rem}.feed-owner-icon-image{width:2rem;border-radius:1rem}.feed-sideline{height:calc(100% - 2rem);background-color:#eee;border-radius:1rem;width:.1rem;margin-top:.2rem!important;margin:auto}.feed-reaction{border-radius:5px;padding:.2rem .5rem;margin-right:.5rem;background-color:#eee!important}.feed-reaction-sel{background-color:#5599e5!important;color:#f8f9fa!important}.feed-create-button{border:1px solid #dfdfdf;border-radius:5px;height:39px;width:39px;margin-right:15px;display:flex}.feed-create-button:hover{background-color:#d4d4d4}.app-markdown p{margin-bottom:0!important;white-space:break-spaces!important}.app-ck-height-400{padding-bottom:15px!important}.app-ck-height-400 .ck-editor__editable{max-height:400px;min-height:200px}.feed-left-col{width:2rem}.feed-mid-col-content{display:flex;width:100%}.feed-mid-col{width:100%;padding-left:10px}.feed-operation-col{text-align:center;font-size:1rem;margin-left:auto;margin-right:1rem}.width-90{width:90%}.feed-gray-text{color:gray;font-size:.7rem}.feed-col-operations{display:flex;margin-top:.2rem}.feed-child-container{display:flex;margin-top:10px}.fill-info{filter:invert(69%) sepia(75%) saturate(6042%) hue-rotate(163deg) brightness(97%) contrast(103%)}.fill-warning{filter:invert(63%) sepia(87%) saturate(1749%) hue-rotate(351deg) brightness(103%) contrast(94%)}.fill-danger{filter:invert(15%) sepia(85%) saturate(2826%) hue-rotate(341deg) brightness(100%) contrast(103%)}::-webkit-scrollbar{width:4px;background-color:transparent}::-webkit-scrollbar-thumb{background-color:#ddd;border-radius:2px}::-webkit-scrollbar-track{background-color:transparent}\n"] }]
1576
1578
  }], ctorParameters: () => [{ type: i3$1.HTTPService }, { type: i2$1.UtilityService }, { type: i2$1.MessageService }, { type: i1.TokenService }], propDecorators: { EntityType: [{
1577
1579
  type: Input
1578
1580
  }], EntityId: [{
@@ -1607,6 +1609,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
1607
1609
  type: Input
1608
1610
  }], AllowComments: [{
1609
1611
  type: Input
1612
+ }], AllowReplies: [{
1613
+ type: Input
1610
1614
  }], DebugMode: [{
1611
1615
  type: Input
1612
1616
  }], ModuleConfig: [{
@@ -1640,8 +1644,8 @@ const COMPONENTS = [
1640
1644
  EntityFeedsWidgetComponent
1641
1645
  ];
1642
1646
  class ComponentsModule {
1643
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1644
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: ComponentsModule, imports: [CommonModule, RouterModule, FormsModule, DirectivesModule, LocalizationModule, ProgressbarModule, BsDropdownModule, ModalModule, EsTableModule, BackTop,
1647
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1648
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: ComponentsModule, imports: [CommonModule, RouterModule, FormsModule, DirectivesModule, LocalizationModule, ProgressbarModule, BsDropdownModule, ModalModule, EsTableModule, BackTop,
1645
1649
  Breadcrumb,
1646
1650
  ErrorPageComponent,
1647
1651
  PagesComponent,
@@ -1674,7 +1678,7 @@ class ComponentsModule {
1674
1678
  FormSelectorComponent,
1675
1679
  FormSelectorDialogComponent,
1676
1680
  EntityFeedsWidgetComponent] }); }
1677
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ComponentsModule, imports: [CommonModule, RouterModule, FormsModule, DirectivesModule, LocalizationModule, ProgressbarModule, BsDropdownModule, ModalModule, EsTableModule, ErrorPageComponent,
1681
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ComponentsModule, imports: [CommonModule, RouterModule, FormsModule, DirectivesModule, LocalizationModule, ProgressbarModule, BsDropdownModule, ModalModule, EsTableModule, ErrorPageComponent,
1678
1682
  PagesComponent,
1679
1683
  Navbar,
1680
1684
  Sidebar,
@@ -1683,7 +1687,7 @@ class ComponentsModule {
1683
1687
  FormSelectorDialogComponent,
1684
1688
  EntityFeedsWidgetComponent] }); }
1685
1689
  }
1686
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ComponentsModule, decorators: [{
1690
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ComponentsModule, decorators: [{
1687
1691
  type: NgModule,
1688
1692
  args: [{
1689
1693
  imports: [CommonModule, RouterModule, FormsModule, DirectivesModule, LocalizationModule, ProgressbarModule, BsDropdownModule, ModalModule, EsTableModule, ...COMPONENTS],
@@ -1743,10 +1747,10 @@ class EmbeddingComponent extends BaseComponent {
1743
1747
  this.EmbeddingSuccesfull = !!this.Page && !!this.Module && !!this.Localhost;
1744
1748
  });
1745
1749
  }
1746
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: EmbeddingComponent, deps: [{ token: i0.Injector }, { token: i2$1.AppEmbeddingExtensions }, { token: i2$3.Location }], target: i0.ɵɵFactoryTarget.Component }); }
1747
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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"] }] }); }
1750
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EmbeddingComponent, deps: [{ token: i0.Injector }, { token: i2$1.AppEmbeddingExtensions }, { token: i2$3.Location }], target: i0.ɵɵFactoryTarget.Component }); }
1751
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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"] }] }); }
1748
1752
  }
1749
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: EmbeddingComponent, decorators: [{
1753
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EmbeddingComponent, decorators: [{
1750
1754
  type: Component,
1751
1755
  args: [{ selector: 'embedding', 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>" }]
1752
1756
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i2$1.AppEmbeddingExtensions }, { type: i2$3.Location }] });
@@ -1784,10 +1788,10 @@ class UserInfoComponentLoc extends LocalizationService {
1784
1788
  super.set("en->it", "Password", ["Password"]);
1785
1789
  super.set("en->it", "Error", ["Errore"]);
1786
1790
  }
1787
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UserInfoComponentLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
1788
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UserInfoComponentLoc }); }
1791
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserInfoComponentLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
1792
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserInfoComponentLoc }); }
1789
1793
  }
1790
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UserInfoComponentLoc, decorators: [{
1794
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserInfoComponentLoc, decorators: [{
1791
1795
  type: Injectable
1792
1796
  }], ctorParameters: () => [{ type: i0.Injector }] });
1793
1797
 
@@ -1877,10 +1881,10 @@ class UserInfosComponent extends BaseComponent {
1877
1881
  this.msgExts.manageCallResultResponse(res, "Password modificata con Successo", "Errori nella modifica della Password", () => { this.dlgUpdatePassword.hide(); });
1878
1882
  }
1879
1883
  }
1880
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", 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$1.LocalizationService }, { token: i1.AppState }, { token: i1.UserPreferencesService }], target: i0.ɵɵFactoryTarget.Component }); }
1881
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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: "imageCropper", first: true, predicate: ["imageCropper"], 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\" pTooltip=\"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.tenantid}}</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}}:&nbsp;</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]=\"'XL'\">\r\n <es-modal-head (Close)=\"dlgUpdateProfilePicture.hide();\">\r\n <h5 class=\"modal-title pull-left\">Carica immagine</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body d-flex\">\r\n <div style=\"margin: auto;\">\r\n <es-image-cropper #imageCropper [Height]=\"600\" [Width]=\"800\"></es-image-cropper>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"dlgUpdateProfilePicture.hide()\">Annulla</button>\r\n <button type=\"submit\" class=\"btn btn-primary\" (click)=\"doUpdateProfilePicture()\">Conferma</button>\r\n </div>\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;width:auto}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.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.EsFormInputComponent, selector: "form-input", inputs: ["minlength", "maxlength", "pattern", "Password"] }, { 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$1.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: EsImageCropperComponent, selector: "es-image-cropper", inputs: ["Height", "Width"] }, { 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: TooltipModule }, { kind: "directive", type: i7$1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], viewProviders: [{ provide: LocalizationService, useClass: UserInfoComponentLoc }] }); }
1884
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", 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$1.LocalizationService }, { token: i1.AppState }, { token: i1.UserPreferencesService }], target: i0.ɵɵFactoryTarget.Component }); }
1885
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", 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: "imageCropper", first: true, predicate: ["imageCropper"], 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\" pTooltip=\"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.tenantid}}</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}}:&nbsp;</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]=\"'XL'\">\r\n <es-modal-head (Close)=\"dlgUpdateProfilePicture.hide();\">\r\n <h5 class=\"modal-title pull-left\">Carica immagine</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body d-flex\">\r\n <div style=\"margin: auto;\">\r\n <es-image-cropper #imageCropper [Height]=\"600\" [Width]=\"800\"></es-image-cropper>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"dlgUpdateProfilePicture.hide()\">Annulla</button>\r\n <button type=\"submit\" class=\"btn btn-primary\" (click)=\"doUpdateProfilePicture()\">Conferma</button>\r\n </div>\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;width:auto}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.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.EsFormInputComponent, selector: "form-input", inputs: ["minlength", "maxlength", "pattern", "Password"] }, { 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$1.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: EsImageCropperComponent, selector: "es-image-cropper", inputs: ["Height", "Width"] }, { 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: TooltipModule }, { kind: "directive", type: i7$1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], viewProviders: [{ provide: LocalizationService, useClass: UserInfoComponentLoc }] }); }
1882
1886
  }
1883
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UserInfosComponent, decorators: [{
1887
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserInfosComponent, decorators: [{
1884
1888
  type: Component,
1885
1889
  args: [{ selector: "user-infos", viewProviders: [{ provide: LocalizationService, useClass: UserInfoComponentLoc }], imports: [
1886
1890
  FormsModule,
@@ -2252,10 +2256,10 @@ class BaseSelectorComponent {
2252
2256
  return items;
2253
2257
  }));
2254
2258
  }
2255
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BaseSelectorComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
2256
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.14", type: BaseSelectorComponent, isStandalone: true, selector: "base-selector", inputs: { ModalOnly: "ModalOnly", EntityName: "EntityName", DisplayMode: "DisplayMode", Readonly: "Readonly", Form: "Form", Placeholder: "Placeholder", ngModelOptions: "ngModelOptions", SingleSelection: "SingleSelection", Required: "Required", Validation: "Validation", PageSize: "PageSize", Navigation: "Navigation", EmitStartingValue: "EmitStartingValue", name: "name", ValidationSubject: "ValidationSubject" }, outputs: { inputChange: "inputChange", firstValueLoaded: "firstValueLoaded", dialogVisible: "dialogVisible", dialogHidden: "dialogHidden", inputFinalized: "inputFinalized" }, queries: [{ propertyName: "EsTableTemplate", first: true, predicate: ThTdProvider, descendants: true, isSignal: true }, { propertyName: "FiltersTemplate", first: true, predicate: ["filtersTemplate"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "itemSearch", first: true, predicate: ["itemSearch"], descendants: true, isSignal: true }, { propertyName: "searchModal", first: true, predicate: ["searchView"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<form-selector *ngIf=\"Initialized | async\"\r\n [SetValidationSubject]=\"ValidationSubject\"\r\n [ModalOnly]=\"ModalOnly\"\r\n [Valid]=\"!((!Pristine || Form?.submitted) && !ngControl?.valid)\"\r\n [SelectedLabel]=\"SelectedLabel\"\r\n [Validation]=\"Validation\"\r\n [Readonly]=\"Readonly\"\r\n [Form]=\"Form\"\r\n [Name]=\"name\"\r\n [ngModelOptions]=\"ngModelOptions\"\r\n [Required]=\"Required\"\r\n [Placeholder]=\"Placeholder\"\r\n [HasExternalLink]=\"Navigation && (SelectedObjects?.length == 1 && !!navigationEntity)\"\r\n (onChange)=\"changed()\"\r\n (onSearch)=\"!Readonly && resetSearch() && sendSearch() && itemSearch().show();\"\r\n (onNavigation)=\"navigate()\"\r\n (onClipboardCopy)=\"copyToClipboard()\">\r\n</form-selector>\r\n\r\n<form-selector-dialog *ngIf=\"Initialized | async\"\r\n #itemSearch\r\n [Subject]=\"subject\"\r\n [EsTableTemplate]=\"EsTableTemplate()\"\r\n [searchView]=\"searchView\"\r\n (onSearchRequest)=\"sendSearch($event)\"\r\n (onDialogVisibilityChange)=\"modalVisible($event);\"\r\n (onClearValue)=\"cleanSelection(); itemSearch.hide(); resetSearch();\"\r\n (onCloseDialog)=\"itemSearch.hide(); resetSearch();\"\r\n (onConfirmSelection)=\"confirmSelection(); itemSearch.hide(); resetSearch();\">\r\n <ng-container filters *ngIf=\"FiltersTemplate()\">\r\n <ng-container *ngTemplateOutlet=\"FiltersTemplate()\"></ng-container>\r\n </ng-container>\r\n\r\n</form-selector-dialog>", styles: [".app-selector-input-area{position:absolute;width:calc(100% - 30px);height:100%;margin:0 15px;right:0;top:0;z-index:999}\n"], dependencies: [{ kind: "component", type: FormSelectorComponent, selector: "form-selector", inputs: ["SetValidationSubject", "ModalOnly", "Valid", "SelectedLabel", "Validation", "Readonly", "Form", "Name", "ngModelOptions", "Required", "Placeholder", "HasExternalLink"], outputs: ["SelectedLabelChange", "onChange", "onSearch", "onNavigation", "onClipboardCopy"] }, { kind: "component", type: FormSelectorDialogComponent, selector: "form-selector-dialog", inputs: ["Subject", "EsTableTemplate", "TableClasses", "SingleSelection", "searchView"], outputs: ["onClearValue", "onCloseDialog", "onConfirmSelection", "onSearchRequest", "onDialogVisibilityChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
2259
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: BaseSelectorComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
2260
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.15", type: BaseSelectorComponent, isStandalone: true, selector: "base-selector", inputs: { ModalOnly: "ModalOnly", EntityName: "EntityName", DisplayMode: "DisplayMode", Readonly: "Readonly", Form: "Form", Placeholder: "Placeholder", ngModelOptions: "ngModelOptions", SingleSelection: "SingleSelection", Required: "Required", Validation: "Validation", PageSize: "PageSize", Navigation: "Navigation", EmitStartingValue: "EmitStartingValue", name: "name", ValidationSubject: "ValidationSubject" }, outputs: { inputChange: "inputChange", firstValueLoaded: "firstValueLoaded", dialogVisible: "dialogVisible", dialogHidden: "dialogHidden", inputFinalized: "inputFinalized" }, queries: [{ propertyName: "EsTableTemplate", first: true, predicate: ThTdProvider, descendants: true, isSignal: true }, { propertyName: "FiltersTemplate", first: true, predicate: ["filtersTemplate"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "itemSearch", first: true, predicate: ["itemSearch"], descendants: true, isSignal: true }, { propertyName: "searchModal", first: true, predicate: ["searchView"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<form-selector *ngIf=\"Initialized | async\"\r\n [SetValidationSubject]=\"ValidationSubject\"\r\n [ModalOnly]=\"ModalOnly\"\r\n [Valid]=\"!((!Pristine || Form?.submitted) && !ngControl?.valid)\"\r\n [SelectedLabel]=\"SelectedLabel\"\r\n [Validation]=\"Validation\"\r\n [Readonly]=\"Readonly\"\r\n [Form]=\"Form\"\r\n [Name]=\"name\"\r\n [ngModelOptions]=\"ngModelOptions\"\r\n [Required]=\"Required\"\r\n [Placeholder]=\"Placeholder\"\r\n [HasExternalLink]=\"Navigation && (SelectedObjects?.length == 1 && !!navigationEntity)\"\r\n (onChange)=\"changed()\"\r\n (onSearch)=\"!Readonly && resetSearch() && sendSearch() && itemSearch().show();\"\r\n (onNavigation)=\"navigate()\"\r\n (onClipboardCopy)=\"copyToClipboard()\">\r\n</form-selector>\r\n\r\n<form-selector-dialog *ngIf=\"Initialized | async\"\r\n #itemSearch\r\n [Subject]=\"subject\"\r\n [EsTableTemplate]=\"EsTableTemplate()\"\r\n [searchView]=\"searchView\"\r\n (onSearchRequest)=\"sendSearch($event)\"\r\n (onDialogVisibilityChange)=\"modalVisible($event);\"\r\n (onClearValue)=\"cleanSelection(); itemSearch.hide(); resetSearch();\"\r\n (onCloseDialog)=\"itemSearch.hide(); resetSearch();\"\r\n (onConfirmSelection)=\"confirmSelection(); itemSearch.hide(); resetSearch();\">\r\n <ng-container filters *ngIf=\"FiltersTemplate()\">\r\n <ng-container *ngTemplateOutlet=\"FiltersTemplate()\"></ng-container>\r\n </ng-container>\r\n\r\n</form-selector-dialog>", styles: [".app-selector-input-area{position:absolute;width:calc(100% - 30px);height:100%;margin:0 15px;right:0;top:0;z-index:999}\n"], dependencies: [{ kind: "component", type: FormSelectorComponent, selector: "form-selector", inputs: ["SetValidationSubject", "ModalOnly", "Valid", "SelectedLabel", "Validation", "Readonly", "Form", "Name", "ngModelOptions", "Required", "Placeholder", "HasExternalLink"], outputs: ["SelectedLabelChange", "onChange", "onSearch", "onNavigation", "onClipboardCopy"] }, { kind: "component", type: FormSelectorDialogComponent, selector: "form-selector-dialog", inputs: ["Subject", "EsTableTemplate", "TableClasses", "SingleSelection", "searchView"], outputs: ["onClearValue", "onCloseDialog", "onConfirmSelection", "onSearchRequest", "onDialogVisibilityChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
2257
2261
  }
2258
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BaseSelectorComponent, decorators: [{
2262
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: BaseSelectorComponent, decorators: [{
2259
2263
  type: Component,
2260
2264
  args: [{ selector: "base-selector", imports: [FormSelectorComponent, FormSelectorDialogComponent, NgTemplateOutlet, NgIf, AsyncPipe], template: "<form-selector *ngIf=\"Initialized | async\"\r\n [SetValidationSubject]=\"ValidationSubject\"\r\n [ModalOnly]=\"ModalOnly\"\r\n [Valid]=\"!((!Pristine || Form?.submitted) && !ngControl?.valid)\"\r\n [SelectedLabel]=\"SelectedLabel\"\r\n [Validation]=\"Validation\"\r\n [Readonly]=\"Readonly\"\r\n [Form]=\"Form\"\r\n [Name]=\"name\"\r\n [ngModelOptions]=\"ngModelOptions\"\r\n [Required]=\"Required\"\r\n [Placeholder]=\"Placeholder\"\r\n [HasExternalLink]=\"Navigation && (SelectedObjects?.length == 1 && !!navigationEntity)\"\r\n (onChange)=\"changed()\"\r\n (onSearch)=\"!Readonly && resetSearch() && sendSearch() && itemSearch().show();\"\r\n (onNavigation)=\"navigate()\"\r\n (onClipboardCopy)=\"copyToClipboard()\">\r\n</form-selector>\r\n\r\n<form-selector-dialog *ngIf=\"Initialized | async\"\r\n #itemSearch\r\n [Subject]=\"subject\"\r\n [EsTableTemplate]=\"EsTableTemplate()\"\r\n [searchView]=\"searchView\"\r\n (onSearchRequest)=\"sendSearch($event)\"\r\n (onDialogVisibilityChange)=\"modalVisible($event);\"\r\n (onClearValue)=\"cleanSelection(); itemSearch.hide(); resetSearch();\"\r\n (onCloseDialog)=\"itemSearch.hide(); resetSearch();\"\r\n (onConfirmSelection)=\"confirmSelection(); itemSearch.hide(); resetSearch();\">\r\n <ng-container filters *ngIf=\"FiltersTemplate()\">\r\n <ng-container *ngTemplateOutlet=\"FiltersTemplate()\"></ng-container>\r\n </ng-container>\r\n\r\n</form-selector-dialog>", styles: [".app-selector-input-area{position:absolute;width:calc(100% - 30px);height:100%;margin:0 15px;right:0;top:0;z-index:999}\n"] }]
2261
2265
  }], ctorParameters: () => [{ type: i0.Injector }], propDecorators: { ModalOnly: [{
@@ -2434,10 +2438,10 @@ class BaseSearchComponent extends BaseComponent {
2434
2438
  ;
2435
2439
  canPerformSearch() { return true; }
2436
2440
  ;
2437
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BaseSearchComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
2438
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: BaseSearchComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
2441
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: BaseSearchComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
2442
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: BaseSearchComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
2439
2443
  }
2440
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BaseSearchComponent, decorators: [{
2444
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: BaseSearchComponent, decorators: [{
2441
2445
  type: Component,
2442
2446
  args: [{ template: '' }]
2443
2447
  }], ctorParameters: () => [{ type: i0.Injector }] });