@esfaenza/core 19.2.231 → 19.2.233
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/entity-feeds-widget/entity-feeds-widget.component.d.ts +1 -4
- package/fesm2022/esfaenza-core-components.mjs +4 -16
- package/fesm2022/esfaenza-core-components.mjs.map +1 -1
- package/fesm2022/esfaenza-core-services.mjs.map +1 -1
- package/fesm2022/esfaenza-core.mjs +9 -17
- package/fesm2022/esfaenza-core.mjs.map +1 -1
- package/lib/app.component.d.ts +0 -4
- package/lib/core.module.d.ts +1 -2
- package/package.json +18 -3
- package/services/classes/app.state.d.ts +0 -3
|
@@ -2,7 +2,6 @@ import { MessageService, UtilityService } from "@esfaenza/extensions";
|
|
|
2
2
|
import { HTTPService } from "@esfaenza/httpservice";
|
|
3
3
|
import { TokenService } from "@esfaenza/core/services";
|
|
4
4
|
import { EsModalComponent } from "../es-modal/es-modal.component";
|
|
5
|
-
import { MarkdownEditorComponent, PersistentEditor } from "@esfaenza/text-editors";
|
|
6
5
|
import { CreateUpdateFeedDto, EntityFeedsWidgetConfiguration, Feed } from "@esfaenza/core/domain";
|
|
7
6
|
import { DropdownOption } from "@esfaenza/utility-components";
|
|
8
7
|
import { AppFile } from "@esfaenza/forms-and-validations";
|
|
@@ -33,7 +32,6 @@ export declare class EntityFeedsWidgetComponent {
|
|
|
33
32
|
AllowReplies: boolean;
|
|
34
33
|
DebugMode: boolean;
|
|
35
34
|
ModuleConfig: EntityFeedsWidgetConfiguration;
|
|
36
|
-
PersistentEditor?: PersistentEditor;
|
|
37
35
|
FLAG_RefreshingFeeds: boolean;
|
|
38
36
|
Feeds: Feed[];
|
|
39
37
|
LoggedUser: string;
|
|
@@ -49,7 +47,6 @@ export declare class EntityFeedsWidgetComponent {
|
|
|
49
47
|
CreateUpdateFeedDTO: CreateUpdateFeedDto;
|
|
50
48
|
AllegatoFile: AppFile;
|
|
51
49
|
EditMode: boolean;
|
|
52
|
-
editor: MarkdownEditorComponent;
|
|
53
50
|
onCreateFeed(isReply?: boolean): void;
|
|
54
51
|
onUpdateFeed(): void;
|
|
55
52
|
doCreateUpdateFeed(): void;
|
|
@@ -64,5 +61,5 @@ export declare class EntityFeedsWidgetComponent {
|
|
|
64
61
|
FeedsOperations: DropdownOption[];
|
|
65
62
|
onSelectFeed(item: Feed): boolean;
|
|
66
63
|
static ɵfac: i0.ɵɵFactoryDeclaration<EntityFeedsWidgetComponent, never>;
|
|
67
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<EntityFeedsWidgetComponent, "entity-feeds-widget", never, { "EntityType": { "alias": "EntityType"; "required": false; }; "EntityId": { "alias": "EntityId"; "required": false; }; "RefreshSubject": { "alias": "RefreshSubject"; "required": false; }; "GetFeedsAPI": { "alias": "GetFeedsAPI"; "required": false; }; "CreateFeedAPI": { "alias": "CreateFeedAPI"; "required": false; }; "UpdateFeedAPI": { "alias": "UpdateFeedAPI"; "required": false; }; "DeleteFeedAPI": { "alias": "DeleteFeedAPI"; "required": false; }; "ReactToFeedAPI": { "alias": "ReactToFeedAPI"; "required": false; }; "GetUserTagsAPI": { "alias": "GetUserTagsAPI"; "required": false; }; "GetFeedAttachmentAPI": { "alias": "GetFeedAttachmentAPI"; "required": false; }; "WidgetTitle": { "alias": "WidgetTitle"; "required": false; }; "MaxHeight": { "alias": "MaxHeight"; "required": false; }; "Readonly": { "alias": "Readonly"; "required": false; }; "AllowUserTags": { "alias": "AllowUserTags"; "required": false; }; "AllowReactions": { "alias": "AllowReactions"; "required": false; }; "AllowAttachments": { "alias": "AllowAttachments"; "required": false; }; "AllowComments": { "alias": "AllowComments"; "required": false; }; "AllowReplies": { "alias": "AllowReplies"; "required": false; }; "DebugMode": { "alias": "DebugMode"; "required": false; }; "ModuleConfig": { "alias": "ModuleConfig"; "required": false; };
|
|
64
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<EntityFeedsWidgetComponent, "entity-feeds-widget", never, { "EntityType": { "alias": "EntityType"; "required": false; }; "EntityId": { "alias": "EntityId"; "required": false; }; "RefreshSubject": { "alias": "RefreshSubject"; "required": false; }; "GetFeedsAPI": { "alias": "GetFeedsAPI"; "required": false; }; "CreateFeedAPI": { "alias": "CreateFeedAPI"; "required": false; }; "UpdateFeedAPI": { "alias": "UpdateFeedAPI"; "required": false; }; "DeleteFeedAPI": { "alias": "DeleteFeedAPI"; "required": false; }; "ReactToFeedAPI": { "alias": "ReactToFeedAPI"; "required": false; }; "GetUserTagsAPI": { "alias": "GetUserTagsAPI"; "required": false; }; "GetFeedAttachmentAPI": { "alias": "GetFeedAttachmentAPI"; "required": false; }; "WidgetTitle": { "alias": "WidgetTitle"; "required": false; }; "MaxHeight": { "alias": "MaxHeight"; "required": false; }; "Readonly": { "alias": "Readonly"; "required": false; }; "AllowUserTags": { "alias": "AllowUserTags"; "required": false; }; "AllowReactions": { "alias": "AllowReactions"; "required": false; }; "AllowAttachments": { "alias": "AllowAttachments"; "required": false; }; "AllowComments": { "alias": "AllowComments"; "required": false; }; "AllowReplies": { "alias": "AllowReplies"; "required": false; }; "DebugMode": { "alias": "DebugMode"; "required": false; }; "ModuleConfig": { "alias": "ModuleConfig"; "required": false; }; }, {}, never, never, true, never>;
|
|
68
65
|
}
|
|
@@ -37,7 +37,6 @@ import { ImageCropperComponent } from 'ngx-image-cropper';
|
|
|
37
37
|
import * as i6 from '@esfaenza/forms-and-validations';
|
|
38
38
|
import { AppFile, FormsAndValidationsModule } from '@esfaenza/forms-and-validations';
|
|
39
39
|
import { HttpParams } from '@angular/common/http';
|
|
40
|
-
import { MarkdownEditorComponent } from '@esfaenza/text-editors';
|
|
41
40
|
import * as i7$1 from '@esfaenza/utility-components';
|
|
42
41
|
import { UtilityComponentsModule } from '@esfaenza/utility-components';
|
|
43
42
|
import * as i8 from 'ngx-markdown';
|
|
@@ -583,7 +582,7 @@ class Sidebar {
|
|
|
583
582
|
});
|
|
584
583
|
}
|
|
585
584
|
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$1.AccessControlService }, { token: MENU }, { token: i1.MenuFilteringService }, { token: i1.TokenService }, { token: i1.GlobalSearchService }, { token: i1.UserPreferencesService }, { token: i2$1.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
586
|
-
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 <!-- Da valutare -->\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]=\"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]=\"undefined\" *ngIf=\"_state.halloweenTime()\"> -->\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\"> 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\"> 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;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: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.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 }); }
|
|
585
|
+
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 <!-- Da valutare -->\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]=\"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]=\"undefined\" *ngIf=\"_state.halloweenTime()\"> -->\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\"> 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\"> 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;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: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.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", "AutoSortHierarchy", "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 }); }
|
|
587
586
|
}
|
|
588
587
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: Sidebar, decorators: [{
|
|
589
588
|
type: Component,
|
|
@@ -1265,7 +1264,7 @@ class FormSelectorDialogComponent {
|
|
|
1265
1264
|
this.itemSearch.hide();
|
|
1266
1265
|
}
|
|
1267
1266
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FormSelectorDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1268
|
-
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: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.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", inputs: ["AllowClose"], outputs: ["Close"] }] }); }
|
|
1267
|
+
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", "AutoSortHierarchy", "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: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.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", inputs: ["AllowClose"], outputs: ["Close"] }] }); }
|
|
1269
1268
|
}
|
|
1270
1269
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FormSelectorDialogComponent, decorators: [{
|
|
1271
1270
|
type: Component,
|
|
@@ -1425,9 +1424,6 @@ class EntityFeedsWidgetComponent {
|
|
|
1425
1424
|
this.CreateUpdateFeedDTO.identity = this.EntityId;
|
|
1426
1425
|
this.CreateUpdateFeedDTO.parentid = isReply ? this.SelectedFeed.id : null;
|
|
1427
1426
|
this.dlgCreateUpdateFeed.show();
|
|
1428
|
-
requestAnimationFrame(() => {
|
|
1429
|
-
this.editor.initializeEditor();
|
|
1430
|
-
});
|
|
1431
1427
|
});
|
|
1432
1428
|
}
|
|
1433
1429
|
onUpdateFeed() {
|
|
@@ -1445,9 +1441,6 @@ class EntityFeedsWidgetComponent {
|
|
|
1445
1441
|
this.CreateUpdateFeedDTO.identity = this.EntityId;
|
|
1446
1442
|
this.AllegatoFile = res;
|
|
1447
1443
|
this.dlgCreateUpdateFeed.show();
|
|
1448
|
-
requestAnimationFrame(() => {
|
|
1449
|
-
this.editor.initializeEditor();
|
|
1450
|
-
});
|
|
1451
1444
|
});
|
|
1452
1445
|
}
|
|
1453
1446
|
doCreateUpdateFeed() {
|
|
@@ -1535,11 +1528,11 @@ class EntityFeedsWidgetComponent {
|
|
|
1535
1528
|
return true;
|
|
1536
1529
|
}
|
|
1537
1530
|
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 }); }
|
|
1538
|
-
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", PersistentEditor: "PersistentEditor" }, viewQueries: [{ propertyName: "dlgCreateUpdateFeed", first: true, predicate: ["dlgCreateUpdateFeed"], descendants: true }, { propertyName: "editor", first: true, predicate: ["editor"], 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 <ng-container *ngIf=\"AllowComments\">\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 </ng-container>\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 *ngIf=\"Feeds?.length == 0\">\r\n <em>Nessun feed disponibile...</em>\r\n </div>\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 class=\"app-markdown\" markdown emoji>{{item.user}}: {{item.title}}</span>\r\n <span *ngIf=\"item.content\" (click)=\"onShowFeedContent(item.content)\"> <i class=\"far fa-up-right-from-square text-info app-pointer\"></i></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 && FeedsOperations?.length > 0\" class=\"app-pointer feed-cta\" (click)=\"onSelectFeed(item) && FeedsOperationsDropdown.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]=\"'M'\">\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 <!--TODO: Usato solo nel CRM, quando verra aggiornato a ng19 reintegrare-->\r\n <!-- <form-checkbox *ac=\"'!R:actor'\" [Label]=\"'Pubblico'\" [LabelInputRatio]=\"'2 10'\" [(ngModel)]=\"CreateUpdateFeedDTO.ispublic\" name=\"ispublic\"></form-checkbox> -->\r\n <markdown-editor #editor [(ngModel)]=\"CreateUpdateFeedDTO.content\" [PersistentEditor]=\"PersistentEditor\" name=\"markdownEditor\"></markdown-editor>\r\n <form-file *ngIf=\"AllowAttachments\" [Label]=\"'Allegato'\" [LabelInputRatio]=\"'2 10'\" [(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 #FeedsOperationsDropdown [Options]=\"FeedsOperations\"></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{display:inline-block}.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: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.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: i6.EsFormInputComponent, selector: "form-input", inputs: ["minlength", "maxlength", "pattern", "Password", "Type"] }, { kind: "component", type: i6.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", inputs: ["AllowClose"], outputs: ["Close"] }, { kind: "ngmodule", type: UtilityComponentsModule }, { kind: "component", type: i7$1.SimpleDropdownComponent, selector: "simple-dropdown", inputs: ["Options"] }, { kind: "ngmodule", type: AccessControlModule }, { kind: "component", type: MarkdownEditorComponent, selector: "markdown-editor", inputs: ["PersistentEditor", "Readonly", "Required", "Validation", "MentionMarker", "MentionEntities"], outputs: ["onEditorLoaded"] }, { kind: "ngmodule", type: MarkdownModule }, { kind: "component", type: i8.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }] }); }
|
|
1531
|
+
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 <ng-container *ngIf=\"AllowComments\">\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 </ng-container>\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 *ngIf=\"Feeds?.length == 0\">\r\n <em>Nessun feed disponibile...</em>\r\n </div>\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 class=\"app-markdown\" markdown emoji>{{item.user}}: {{item.title}}</span>\r\n <span *ngIf=\"item.content\" (click)=\"onShowFeedContent(item.content)\"> <i class=\"far fa-up-right-from-square text-info app-pointer\"></i></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 && FeedsOperations?.length > 0\" class=\"app-pointer feed-cta\" (click)=\"onSelectFeed(item) && FeedsOperationsDropdown.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]=\"'M'\">\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 <!--TODO: Usato solo nel CRM, quando verra aggiornato a ng19 reintegrare-->\r\n <!-- <form-checkbox *ac=\"'!R:actor'\" [Label]=\"'Pubblico'\" [LabelInputRatio]=\"'2 10'\" [(ngModel)]=\"CreateUpdateFeedDTO.ispublic\" name=\"ispublic\"></form-checkbox> -->\r\n <es-editor [(ngModel)]=\"CreateUpdateFeedDTO.content\" Mode=\"markdown\" name=\"markdownEditor\"></es-editor>\r\n <form-file *ngIf=\"AllowAttachments\" [Label]=\"'Allegato'\" [LabelInputRatio]=\"'2 10'\" [(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 #FeedsOperationsDropdown [Options]=\"FeedsOperations\"></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{display:inline-block}.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: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.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: i6.EsFormInputComponent, selector: "form-input", inputs: ["minlength", "maxlength", "pattern", "Password", "Type"] }, { kind: "component", type: i6.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", inputs: ["AllowClose"], outputs: ["Close"] }, { kind: "ngmodule", type: UtilityComponentsModule }, { kind: "component", type: i7$1.SimpleDropdownComponent, selector: "simple-dropdown", inputs: ["Options"] }, { kind: "ngmodule", type: AccessControlModule }, { kind: "ngmodule", type: MarkdownModule }, { kind: "component", type: i8.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }] }); }
|
|
1539
1532
|
}
|
|
1540
1533
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EntityFeedsWidgetComponent, decorators: [{
|
|
1541
1534
|
type: Component,
|
|
1542
|
-
args: [{ selector: "entity-feeds-widget", imports: [CommonModule, NgIf, NgFor, NgTemplateOutlet, FormsModule, ExtensionsModule, FormsAndValidationsModule, EsModalComponent, EsModalHeadComponent, UtilityComponentsModule, AccessControlModule, MarkdownEditorComponent, MarkdownModule], 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 <ng-container *ngIf=\"AllowComments\">\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 </ng-container>\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 *ngIf=\"Feeds?.length == 0\">\r\n <em>Nessun feed disponibile...</em>\r\n </div>\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 class=\"app-markdown\" markdown emoji>{{item.user}}: {{item.title}}</span>\r\n <span *ngIf=\"item.content\" (click)=\"onShowFeedContent(item.content)\"> <i class=\"far fa-up-right-from-square text-info app-pointer\"></i></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 && FeedsOperations?.length > 0\" class=\"app-pointer feed-cta\" (click)=\"onSelectFeed(item) && FeedsOperationsDropdown.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]=\"'M'\">\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 <!--TODO: Usato solo nel CRM, quando verra aggiornato a ng19 reintegrare-->\r\n <!-- <form-checkbox *ac=\"'!R:actor'\" [Label]=\"'Pubblico'\" [LabelInputRatio]=\"'2 10'\" [(ngModel)]=\"CreateUpdateFeedDTO.ispublic\" name=\"ispublic\"></form-checkbox> -->\r\n <markdown-editor #editor [(ngModel)]=\"CreateUpdateFeedDTO.content\" [PersistentEditor]=\"PersistentEditor\" name=\"markdownEditor\"></markdown-editor>\r\n <form-file *ngIf=\"AllowAttachments\" [Label]=\"'Allegato'\" [LabelInputRatio]=\"'2 10'\" [(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 #FeedsOperationsDropdown [Options]=\"FeedsOperations\"></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{display:inline-block}.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"] }]
|
|
1535
|
+
args: [{ selector: "entity-feeds-widget", imports: [CommonModule, NgIf, NgFor, NgTemplateOutlet, FormsModule, ExtensionsModule, FormsAndValidationsModule, EsModalComponent, EsModalHeadComponent, UtilityComponentsModule, AccessControlModule, MarkdownModule], 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 <ng-container *ngIf=\"AllowComments\">\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 </ng-container>\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 *ngIf=\"Feeds?.length == 0\">\r\n <em>Nessun feed disponibile...</em>\r\n </div>\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 class=\"app-markdown\" markdown emoji>{{item.user}}: {{item.title}}</span>\r\n <span *ngIf=\"item.content\" (click)=\"onShowFeedContent(item.content)\"> <i class=\"far fa-up-right-from-square text-info app-pointer\"></i></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 && FeedsOperations?.length > 0\" class=\"app-pointer feed-cta\" (click)=\"onSelectFeed(item) && FeedsOperationsDropdown.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]=\"'M'\">\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 <!--TODO: Usato solo nel CRM, quando verra aggiornato a ng19 reintegrare-->\r\n <!-- <form-checkbox *ac=\"'!R:actor'\" [Label]=\"'Pubblico'\" [LabelInputRatio]=\"'2 10'\" [(ngModel)]=\"CreateUpdateFeedDTO.ispublic\" name=\"ispublic\"></form-checkbox> -->\r\n <es-editor [(ngModel)]=\"CreateUpdateFeedDTO.content\" Mode=\"markdown\" name=\"markdownEditor\"></es-editor>\r\n <form-file *ngIf=\"AllowAttachments\" [Label]=\"'Allegato'\" [LabelInputRatio]=\"'2 10'\" [(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 #FeedsOperationsDropdown [Options]=\"FeedsOperations\"></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{display:inline-block}.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"] }]
|
|
1543
1536
|
}], ctorParameters: () => [{ type: i3$1.HTTPService }, { type: i2$1.UtilityService }, { type: i2$1.MessageService }, { type: i1.TokenService }], propDecorators: { EntityType: [{
|
|
1544
1537
|
type: Input
|
|
1545
1538
|
}], EntityId: [{
|
|
@@ -1580,14 +1573,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1580
1573
|
type: Input
|
|
1581
1574
|
}], ModuleConfig: [{
|
|
1582
1575
|
type: Input
|
|
1583
|
-
}], PersistentEditor: [{
|
|
1584
|
-
type: Input
|
|
1585
1576
|
}], dlgCreateUpdateFeed: [{
|
|
1586
1577
|
type: ViewChild,
|
|
1587
1578
|
args: ['dlgCreateUpdateFeed']
|
|
1588
|
-
}], editor: [{
|
|
1589
|
-
type: ViewChild,
|
|
1590
|
-
args: ['editor']
|
|
1591
1579
|
}], dlgFeedContentDetails: [{
|
|
1592
1580
|
type: ViewChild,
|
|
1593
1581
|
args: ["dlgFeedContent"]
|