@zambon-dev/shared 1.0.1 → 1.0.2

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.
@@ -4,14 +4,15 @@ import * as i1 from '@angular/router';
4
4
  import { RouterModule, Router, ActivatedRoute } from '@angular/router';
5
5
  import { AuthService, APP_CONFIG, TabService, Tab, TabsComponent, ButtonFiltersComponent, ModalBase, ChildList, ViewBase } from '@zambon-dev/framework';
6
6
  import { SidebarService, ModalComponent, SidebarComponent, DataGridDataset, DataGridComponent, DataProviderService } from '@zambon-dev/library';
7
- import { TranslatePipe, TranslateService } from '@ngx-translate/core';
7
+ import { TranslatePipe, TranslateService, TranslateLoader, provideTranslateService } from '@ngx-translate/core';
8
8
  import { map, catchError, interval, mergeMap, tap, Subject, take, takeUntil, finalize, shareReplay, switchMap, of } from 'rxjs';
9
- import { HttpClient } from '@angular/common/http';
9
+ import { HttpClient, HttpBackend } from '@angular/common/http';
10
10
  import { JwtHelperService, JwtInterceptor } from '@auth0/angular-jwt';
11
11
  import { NgClass, NgFor, NgIf, JsonPipe, DatePipe } from '@angular/common';
12
12
  import * as i1$1 from '@angular/forms';
13
13
  import { FormBuilder, Validators, ReactiveFormsModule } from '@angular/forms';
14
14
  import { DomSanitizer } from '@angular/platform-browser';
15
+ import { MultiTranslateHttpLoader } from 'ngx-translate-multi-http-loader';
15
16
 
16
17
  class LoginLayoutComponent {
17
18
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: LoginLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
@@ -849,9 +850,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImpor
849
850
  type: Input
850
851
  }] } });
851
852
 
853
+ const ZAMBON_SHARED_I18N_ASSET_PATH = 'assets/i18n/zambon-dev/shared';
854
+ const ZAMBON_SHARED_I18N_ASSET = {
855
+ glob: '**/*.json',
856
+ input: 'node_modules/@zambon-dev/shared/i18n',
857
+ output: ZAMBON_SHARED_I18N_ASSET_PATH,
858
+ };
859
+ const ZAMBON_SHARED_I18N_RESOURCES = [
860
+ { prefix: `/${ZAMBON_SHARED_I18N_ASSET_PATH}/language-selector/`, suffix: '.json' },
861
+ { prefix: `/${ZAMBON_SHARED_I18N_ASSET_PATH}/login/`, suffix: '.json' },
862
+ { prefix: `/${ZAMBON_SHARED_I18N_ASSET_PATH}/operations-history/`, suffix: '.json' },
863
+ ];
864
+ function createZambonSharedTranslateLoader(httpBackend, appResources = []) {
865
+ return new MultiTranslateHttpLoader(httpBackend, [
866
+ ...ZAMBON_SHARED_I18N_RESOURCES,
867
+ ...appResources,
868
+ ]);
869
+ }
870
+ function provideZambonSharedTranslateLoader(appResources = []) {
871
+ return {
872
+ provide: TranslateLoader,
873
+ useFactory: (httpBackend) => createZambonSharedTranslateLoader(httpBackend, appResources),
874
+ deps: [HttpBackend],
875
+ };
876
+ }
877
+ function provideZambonSharedTranslateService(config = {}) {
878
+ return provideTranslateService({
879
+ defaultLanguage: config.defaultLanguage,
880
+ loader: provideZambonSharedTranslateLoader(config.appResources),
881
+ });
882
+ }
883
+
852
884
  /**
853
885
  * Generated bundle index. Do not edit.
854
886
  */
855
887
 
856
- export { AuthGuard, AuthInterceptor, AuthenticationService, BypassHtmlSanitizerPipe, EnumLabelPipe, FiltersBase, LoginLayoutComponent, MainLayoutComponent, OperationsHistoryChildListComponent, OperationsHistoryModalComponent, OperationsHistoryService, ServicesHistoryChildListComponent, ServicesHistoryService, ServicesHistoryViewComponent, SharedAuthModule, UtcDatePipe };
888
+ export { AuthGuard, AuthInterceptor, AuthenticationService, BypassHtmlSanitizerPipe, EnumLabelPipe, FiltersBase, LoginLayoutComponent, MainLayoutComponent, OperationsHistoryChildListComponent, OperationsHistoryModalComponent, OperationsHistoryService, ServicesHistoryChildListComponent, ServicesHistoryService, ServicesHistoryViewComponent, SharedAuthModule, UtcDatePipe, ZAMBON_SHARED_I18N_ASSET, ZAMBON_SHARED_I18N_ASSET_PATH, ZAMBON_SHARED_I18N_RESOURCES, createZambonSharedTranslateLoader, provideZambonSharedTranslateLoader, provideZambonSharedTranslateService };
857
889
  //# sourceMappingURL=zambon-dev-shared.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"zambon-dev-shared.mjs","sources":["../../../../libs/shared/src/lib/layouts/login-layout/login-layout.component.ts","../../../../libs/shared/src/lib/layouts/login-layout/login-layout.component.html","../../../../libs/shared/src/lib/services/authentication.service.ts","../../../../libs/shared/src/lib/services/operations-history.service.ts","../../../../libs/shared/src/lib/services/services-history.service.ts","../../../../libs/shared/src/lib/layouts/main-layout/main-layout.component.ts","../../../../libs/shared/src/lib/layouts/main-layout/main-layout.component.html","../../../../libs/shared/src/lib/auth/components/language-selector/language-selector.component.ts","../../../../libs/shared/src/lib/auth/components/language-selector/language-selector.component.html","../../../../libs/shared/src/lib/auth/components/login/login.component.ts","../../../../libs/shared/src/lib/auth/components/login/login.component.html","../../../../libs/shared/src/lib/auth/auth.module.ts","../../../../libs/shared/src/lib/auth/guards/auth-guard.ts","../../../../libs/shared/src/lib/auth/interceptors/auth-interceptors.ts","../../../../libs/shared/src/lib/components/filters-base.ts","../../../../libs/shared/src/lib/datasets/operations-history.dataset.ts","../../../../libs/shared/src/lib/datasets/services-history.dataset.ts","../../../../libs/shared/src/lib/features/operations-history/operations-history-modal/operations-history-modal.component.ts","../../../../libs/shared/src/lib/features/operations-history/operations-history-modal/operations-history-modal.component.html","../../../../libs/shared/src/lib/features/operations-history/operations-history-child-list/operations-history-child-list.component.ts","../../../../libs/shared/src/lib/features/operations-history/operations-history-child-list/operations-history-child-list.component.html","../../../../libs/shared/src/lib/pipes/bypass-html-sanitizer.pipe.ts","../../../../libs/shared/src/lib/pipes/enum-text.pipe.ts","../../../../libs/shared/src/lib/pipes/utc-date.pipe.ts","../../../../libs/shared/src/lib/features/services-history/services-history-child-list/services-history-child-list.component.ts","../../../../libs/shared/src/lib/features/services-history/services-history-child-list/services-history-child-list.component.html","../../../../libs/shared/src/lib/features/services-history/services-history-view/services-history-view.component.ts","../../../../libs/shared/src/lib/features/services-history/services-history-view/services-history-view.component.html","../../../../libs/shared/src/zambon-dev-shared.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n selector: 'shared-login-layout',\n templateUrl: './login-layout.component.html',\n styleUrls: ['./login-layout.component.scss'],\n imports: [\n RouterModule,\n ]\n})\nexport class LoginLayoutComponent {\n //#region ViewChilds, Inputs, Outputs\n //#endregion\n\n //#region Variables\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n //#endregion\n\n //#region Private methods\n //#endregion\n}","<div class=\"background\"></div>\n\n<div class=\"container\">\n <router-outlet></router-outlet>\n</div>","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { APP_CONFIG, AppConfig, AuthService, TabService } from '@zambon-dev/framework';\nimport { Observable, catchError, interval, map, mergeMap, tap } from 'rxjs';\nimport { IAuthResponse, ICurrentUserInfo } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthenticationService extends AuthService {\n //#region ViewChilds, Inputs, Outputs\n //#endregion\n\n //#region Variables\n public adminAction: string = 'AdministrativeMaster';\n\n private config: AppConfig = inject(APP_CONFIG);\n\n private readonly BASE_URL: string = `${this.config.BASE_URL}/Authentication`;\n private http: HttpClient = inject(HttpClient);\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n constructor() {\n super(inject(JwtHelperService), inject(TabService));\n }\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public authenticate(model: { username: string, password: string, rememberMe: boolean }): Observable<void> {\n return this.http\n .post<IAuthResponse>(`${this.BASE_URL}/SignIn`, model)\n .pipe(\n map((res: IAuthResponse) => {\n this.setStorage('username', res.username, model.rememberMe);\n this.setStorage('token', res.token, model.rememberMe);\n this.setStorage('refreshToken', res.refreshToken, model.rememberMe);\n this.setStorage('userInfo', window.btoa(JSON.stringify(res as ICurrentUserInfo)), model.rememberMe);\n }),\n catchError((error: HttpErrorResponse) =>\n interval(1000)\n .pipe(\n mergeMap(() => {\n switch(error.status) {\n case 401:\n throw 'InvalidUsernamePassword';\n default:\n throw 'InternalServerError';\n }\n })\n )\n )\n );\n }\n\n public getActions(): Observable<string[]> {\n return this.http.post<string[]>(`${this.BASE_URL}/GetActions`, {});\n }\n\n public getUserInfo(): ICurrentUserInfo | null {\n const userInfo: string | null = this.userInfo;\n if (userInfo) {\n return JSON.parse(window.atob(userInfo)) as ICurrentUserInfo;\n }\n return null;\n }\n\n public tryRefreshToken(): Observable<string> {\n return this.http\n .post<IAuthResponse>(`${this.BASE_URL}/RefreshToken`, {\n username: this.username ?? '',\n refreshToken: this.refreshToken ?? ''\n })\n .pipe(\n tap((res: IAuthResponse) => {\n this.setStorage('token', res.token);\n this.setStorage('refreshToken', res.refreshToken);\n this.setStorage('userInfo', window.btoa(JSON.stringify(res as ICurrentUserInfo)));\n }),\n map((res: IAuthResponse) => res.token ?? '')\n );\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { APP_CONFIG, AppConfig } from '@zambon-dev/framework';\nimport { IListParameters } from '@zambon-dev/library';\nimport { Observable } from 'rxjs';\nimport { IOperationsHistoryList } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class OperationsHistoryService {\n //#region ViewChilds, Inputs, Outputs\n //#endregion\n\n //#region Variables\n private config: AppConfig = inject(APP_CONFIG);\n private http: HttpClient = inject(HttpClient);\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public list(controllerName: string, entityID: number, serviceHistoryID: number, parameters: IListParameters): Observable<IOperationsHistoryList[]> {\n return this.http.post<IOperationsHistoryList[]>(`${this.config.BASE_URL}/${controllerName}/${entityID}/Audit/${serviceHistoryID}`, parameters);\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { APP_CONFIG, AppConfig } from '@zambon-dev/framework';\nimport { IListParameters } from '@zambon-dev/library';\nimport { Observable } from 'rxjs';\nimport { IServicesHistoryList } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ServicesHistoryService {\n //#region ViewChilds, Inputs, Outputs\n //#endregion\n\n //#region Variables\n private config: AppConfig = inject(APP_CONFIG);\n private http: HttpClient = inject(HttpClient);\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public list(controllerName: string, entityID: number, parameters: IListParameters): Observable<IServicesHistoryList[]> {\n return this.http.post<IServicesHistoryList[]>(`${this.config.BASE_URL}/${controllerName}/${entityID}/Audit`, parameters);\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","import { Component, inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { Router, RouterModule } from '@angular/router';\nimport { ITab, Tab, TabsComponent, TabService } from '@zambon-dev/framework';\nimport { ModalComponent, SidebarComponent, SidebarMenu, SidebarService } from '@zambon-dev/library';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Subject, take, takeUntil } from 'rxjs';\nimport { AuthenticationService } from '../../services';\n\n@Component({\n selector: 'shared-main-layout',\n templateUrl: './main-layout.component.html',\n styleUrls: ['./main-layout.component.scss'],\n imports: [\n ModalComponent,\n SidebarComponent,\n RouterModule,\n TabsComponent,\n TranslatePipe,\n ]\n})\nexport class MainLayoutComponent implements OnInit, OnDestroy {\n //#region ViewChilds, Inputs, Outputs\n @ViewChild('logoutModal') private logoutModal!: ModalComponent;\n //#endregion\n\n //#region Variables\n private authenticationService: AuthenticationService = inject(AuthenticationService);\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private router: Router = inject(Router);\n private sidebarService: SidebarService = inject(SidebarService);\n private tabService: TabService = inject(TabService);\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n\n public ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n\n public ngOnInit(): void {\n const url: string = this.router.url;\n\n if (url !== '/' && !this.tabService.isUrlOpen(url)) {\n this.sidebarService.getMenuFromUrl(url)\n .pipe(take(1))\n .subscribe((item: SidebarMenu) => {\n if (!!item) {\n this.tabService.updateTabTitle(url, item.label);\n }\n });\n }\n\n this.sidebarService.menuUrlSelected\n .pipe(takeUntil(this.destroy$))\n .subscribe((item: SidebarMenu) => {\n const tab: ITab = new Tab({\n title: item.label,\n url: item.url,\n });\n this.tabService.openTab(tab);\n });\n }\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public onLogoutClick(): void {\n this.logoutModal.toggleModal();\n }\n\n public onLogoutConfirm(): void {\n this.authenticationService.signOut();\n this.router.navigate(['/login']);\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","<div class=\"main-container\">\n <lib-sidebar #sidebar></lib-sidebar>\n\n <div class=\"toolbar\">\n <div>\n <button class=\"btn\" (click)=\"sidebar.collapse()\">\n <i class=\"fa-solid fa-bars\"></i>\n </button>\n </div>\n <div>\n <button class=\"btn gray-300\" (click)=\"onLogoutClick()\">\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i>\n <span>{{ 'Main-Logout' | translate }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"content\">\n <framework-tabs>\n <router-outlet></router-outlet>\n </framework-tabs>\n </div>\n</div>\n\n<lib-modal #logoutModal position=\"top\" size=\"xl\" [closeButtonText]=\"'Main-Logout-Modal-Message-Cancel' | translate\">\n <div body>\n <h5>{{ 'Main-Logout-Modal-Message' | translate }}</h5>\n </div>\n <div footer>\n <button type=\"button\" class=\"btn red-600\" (click)=\"onLogoutConfirm()\">{{ 'Main-Logout-Modal-Message-Confirm' | translate }}</button>\n </div>\n</lib-modal>","import { NgClass, NgFor } from '@angular/common';\nimport { Component, ElementRef, HostListener, inject, Input, ViewChild } from '@angular/core';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'shared-language-selector',\n templateUrl: './language-selector.component.html',\n styleUrls: ['./language-selector.component.scss'],\n imports: [\n NgClass,\n NgFor,\n TranslatePipe,\n ]\n})\nexport class LanguageSelectorComponent {\n //#region ViewChilds, Inputs, Outputs\n @ViewChild('dropdown') public dropdown!: ElementRef<HTMLDivElement>;\n\n @Input() public title: string = 'LanguageSelector-Title';\n //#endregion\n\n //#region Variables\n private translate: TranslateService = inject(TranslateService);\n\n protected languages: string[] = this.translate.getLangs();\n protected showDropdown: boolean = false;\n //#endregion\n\n //#region Properties\n public get selectedLanguage(): string {\n return this.translate.currentLang;\n }\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n //#endregion\n\n //#region Event handlers\n public onDropdownClick(): void {\n this.showDropdown = !this.showDropdown;\n }\n\n public onSelectLanguage(language: string): void {\n localStorage.setItem('language', language);\n this.translate.use(language);\n this.showDropdown = false;\n }\n //#endregion\n\n //#region Public methods\n //#endregion\n\n //#region Private methods\n @HostListener('window:click', ['$event'])\n private documentClick(event: MouseEvent): void {\n if (this.showDropdown) {\n let target: HTMLElement = <HTMLElement>event.target;\n while (target !== null && target.tagName?.toUpperCase() !== 'BODY') {\n if (target === this.dropdown.nativeElement) {\n return;\n }\n target = <HTMLElement>target.parentElement;\n }\n this.showDropdown = false;\n }\n }\n //#endregion\n}\n","<div #dropdown class=\"dropdown right\" [class.show]=\"showDropdown\">\n <button class=\"btn\" type=\"button\" (click)=\"onDropdownClick()\">\n {{ title | translate }}\n </button>\n\n <ul>\n <li *ngFor=\"let lang of languages\">\n <a class=\"dropdown-item flag-{{ lang }}\"\n [ngClass]=\"{'selected': lang === selectedLanguage}\"\n (click)=\"onSelectLanguage(lang)\"\n >\n {{ 'Language-' + lang | translate }}\n </a>\n </li>\n </ul>\n</div>","import { NgIf } from '@angular/common';\nimport { Component, ElementRef, inject, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Router, RouterModule } from '@angular/router';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { finalize, tap } from 'rxjs';\nimport { AuthenticationService } from '../../../services';\nimport { LanguageSelectorComponent } from '../language-selector/language-selector.component';\n\n@Component({\n selector: 'shared-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss'],\n imports: [\n LanguageSelectorComponent,\n NgIf,\n ReactiveFormsModule,\n RouterModule,\n TranslatePipe,\n ]\n})\nexport class LoginComponent implements OnInit {\n //#region ViewChilds, Inputs, Outputs\n @ViewChild('username') public username!: ElementRef<HTMLInputElement>;\n //#endregion\n\n //#region Variables\n protected form!: FormGroup;\n protected formState: {\n error: string | null,\n loading: boolean,\n success: boolean,\n } = {\n error: null,\n loading: false,\n success: false\n };\n\n private authenticationService: AuthenticationService = inject(AuthenticationService);\n private formBuilder: FormBuilder = inject(FormBuilder);\n private router: Router = inject(Router);\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n\n public ngOnInit(): void {\n this.form = this.formBuilder.group({\n password: ['', Validators.required],\n rememberMe: [false, { nonNullable: true }],\n username: ['', Validators.required],\n });\n }\n //#endregion\n\n //#region Event handlers\n public onSubmit(): void {\n this.form.markAllAsTouched();\n\n if (this.form.valid) {\n this.form.disable();\n \n this.formState.loading = true;\n this.formState.error = null;\n\n this.authenticationService.authenticate({\n username: this.form.get('username')?.value.toString() ?? '',\n password: this.form.get('password')?.value.toString() ?? '',\n rememberMe: this.form.get('rememberMe')?.value ?? false\n })\n .pipe(\n tap(() => { \n this.formState.success = true\n }),\n finalize(() => this.formState.loading = false)\n )\n .subscribe({\n next: () => {\n const params: URLSearchParams = new URLSearchParams(window.location.search);\n \n this.router.navigate([params.get('returnUrl') ?? '/']);\n },\n error: (e: string) => {\n this.form.enable();\n\n this.form.controls['password'].setValue('');\n this.form.controls['password'].markAsUntouched();\n \n this.username.nativeElement.focus();\n\n switch(e) {\n case 'InvalidUsernamePassword':\n this.formState.error = 'invalid';\n break;\n default:\n this.formState.error = 'internalServerError';\n break;\n }\n }\n });\n }\n }\n //#endregion\n\n //#region Public methods\n //#endregion\n\n //#region Private methods\n //#endregion\n}","<div class=\"content\">\n <div class=\"login\">\n <div class=\"logo-container\">\n <div class=\"logo\">\n <img src=\"/logo-login.png\" alt=\"Logo\" />\n </div>\n </div>\n \n <h3 class=\"title\">{{ 'Login-Title' | translate }}</h3>\n\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n\n <div class=\"validations\" [class.hidden]=\"!formState.error\">\n \n <div *ngIf=\"formState.error === 'invalid'\">\n {{'Login-Errors-Invalid' | translate}}\n </div>\n \n <div *ngIf=\"formState.error === 'internalServerError'\">{{'Login-Errors-InternalServerError' | translate}}</div>\n </div>\n\n <div class=\"input-group inline\">\n <input type=\"text\" #username id=\"username\" formControlName=\"username\" class=\"form-input peer\" [placeholder]=\"'Login-Username' | translate\" autofocus />\n\n <div class=\"input-group-text\">\n <label for=\"username\">\n <i class=\"fas fa-user fa-fw\"></i>\n </label>\n </div>\n\n <div class=\"validations\">\n <span *ngIf=\"form.get('username')?.hasError('required')\">{{ 'Login-Username-Required' | translate }}</span>\n </div>\n </div>\n \n <div class=\"input-group inline\">\n <input type=\"password\" id=\"password\" formControlName=\"password\" class=\"form-input\" [placeholder]=\"'Login-Password' | translate\" />\n\n <div class=\"input-group-text\">\n <label for=\"password\">\n <i class=\"fas fa-key fa-fw\"></i>\n </label>\n </div>\n \n <div class=\"validations\">\n <span *ngIf=\"form.get('password')?.hasError('required')\">{{ 'Login-Password-Required' | translate }}</span>\n </div>\n </div>\n \n <div class=\"options\">\n <div>\n <input class=\"form-input\" id=\"rememberMe\" formControlName=\"rememberMe\" type=\"checkbox\">\n <label for=\"rememberMe\">{{ 'Login-RememberMe' | translate }}</label>\n </div>\n \n <shared-language-selector></shared-language-selector>\n </div>\n \n <div class=\"buttons\">\n <button type=\"submit\" class=\"btn\"\n [class.loading]=\"formState.loading && !formState.success && !formState.error\"\n [class.error]=\"formState.error\"\n [class.success]=\"formState.success\">\n <i *ngIf=\"!formState.loading\" class=\"fas fa-sign-in-alt fa-fw\"></i>\n {{ 'Login-SignIn' | translate }}\n </button>\n </div>\n </form>\n </div>\n\n <div class=\"footer\">\n <span [innerHTML]=\"'Login-Copyright' | translate\"></span>\n <span class=\"design\">{{ 'Login-DesignBy' | translate }}</span>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { LoginLayoutComponent } from '../layouts';\nimport { LoginComponent } from './components';\n\n\nconst routes: Routes = [\n { path: '', component: LoginLayoutComponent, children: [\n { path: '', redirectTo: 'login', pathMatch: 'full' },\n { path: 'login', component: LoginComponent },\n ] },\n];\n\n@NgModule({\n imports: [\n RouterModule.forChild(routes),\n ]\n})\nexport class SharedAuthModule {}\n","import { inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\nimport { AuthenticationService } from '../../services';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n //#region ViewChilds, Inputs, Outputs\n //#endregion\n\n //#region Variables\n private authenticationService: AuthenticationService = inject(AuthenticationService);\n private router: Router = inject(Router);\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public canActivate(_: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n if (!this.authenticationService.isAuthenticated) {\n this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } });\n return false;\n }\n return true;\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { JwtInterceptor } from '@auth0/angular-jwt';\nimport { APP_CONFIG, AppConfig } from '@zambon-dev/framework';\nimport { catchError, Observable, shareReplay, switchMap, tap } from 'rxjs';\nimport { AuthenticationService } from '../../services';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n //#region ViewChilds, Inputs, Outputs\n //#endregion\n\n //#region Variables\n private authenticationService: AuthenticationService = inject(AuthenticationService);\n private config: AppConfig = inject(APP_CONFIG);\n private jwtInterceptor: JwtInterceptor = inject(JwtInterceptor);\n private refreshToken$?: Observable<string>;\n private router: Router = inject(Router);\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n if (\n request.url.indexOf(this.config.BASE_URL) >= 0 &&\n !this.jwtInterceptor.isDisallowedRoute(request) &&\n this.authenticationService.isTokenExpired\n ) {\n if (!this.refreshToken$) {\n this.refreshToken$ = this.authenticationService.tryRefreshToken()\n .pipe(\n shareReplay(),\n tap(() => {\n this.refreshToken$ = undefined;\n })\n );\n }\n\n return this.refreshToken$!\n .pipe(\n switchMap((token: string) => {\n return next.handle(\n request.clone({ setHeaders: { authorization: `Bearer ${token}` } })\n );\n }),\n catchError((err: HttpErrorResponse) => {\n if (err.status === 401) {\n this.authenticationService.signOut();\n this.router.navigate(['/login']);\n }\n throw err;\n })\n );\n }\n return next.handle(request);\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","import { Component, inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { ButtonFiltersComponent } from '@zambon-dev/framework';\nimport { Subject } from 'rxjs';\n\n@Component({ template: '' })\nexport abstract class FiltersBase implements OnInit, OnDestroy {\n //#region ViewChilds, Inputs, Outputs\n @ViewChild(ButtonFiltersComponent) protected buttonFilters?: ButtonFiltersComponent;\n //#endregion\n\n //#region Variables\n protected destroy$: Subject<boolean> = new Subject<boolean>();\n protected filterForm!: FormGroup;\n protected formBuilder: FormBuilder = inject(FormBuilder);\n //#endregion\n\n //#region Properties\n //#endregion\n \n //#region Constructor and Angular life cycle methods\n\n public ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n\n public ngOnInit(): void {\n this.filterForm = this.formSetup();\n }\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public setFilters(filters: { [key: string ] : any }): void {\n this.filterForm.patchValue(filters);\n\n setTimeout(() => {\n if (this.buttonFilters) {\n this.buttonFilters.setFilters(filters);\n }\n });\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n\n //#region Abstract methods\n protected abstract formSetup(): FormGroup<any>;\n //#endregion\n}\n","import { inject, Injectable } from '@angular/core';\nimport { DataGridDataset, IGridColumn, IListParameters } from '@zambon-dev/library';\nimport { Observable, of } from 'rxjs';\nimport { IOperationsHistoryList } from '../models';\nimport { OperationsHistoryService } from '../services';\n\n@Injectable()\nexport class OperationsHistoryDataset extends DataGridDataset {\n //#region ViewChilds, Inputs, Outputs\n //#endregion\n\n //#region Variables\n public override columns: IGridColumn[] = [\n { field: '', headerName: '' },\n ];\n public controllerName?: string;\n\n protected operationsHistoryService: OperationsHistoryService = inject(OperationsHistoryService);\n\n private _serviceID?: number | undefined;\n //#endregion\n\n //#region Properties\n public set serviceId(value: number | undefined) {\n if (this._serviceID !== value) {\n this._serviceID = value;\n this.refresh();\n }\n }\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n constructor() {\n super();\n\n this.configs.hideColumnHeaders = true;\n this.configs.showMessageOnEmpty = false;\n }\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public getData(params: IListParameters): Observable<IOperationsHistoryList[]> {\n this.configs.showMessageOnEmpty = !!this._serviceID;\n\n return !!this.parentEntityId && !!this.controllerName && !!this._serviceID\n ? this.operationsHistoryService.list(this.controllerName, this.parentEntityId, this._serviceID, params)\n : of<IOperationsHistoryList[]>([]);\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","import { inject, Injectable } from '@angular/core';\nimport { DataGridDataset, IGridColumn, IListParameters } from '@zambon-dev/library';\nimport { Observable, of } from 'rxjs';\nimport { IServicesHistoryList } from '../models';\nimport { ServicesHistoryService } from '../services';\n\n@Injectable()\nexport class ServicesHistoryDataset extends DataGridDataset {\n //#region ViewChilds, Inputs, Outputs\n //#endregion\n\n //#region Variables\n public override columns: IGridColumn[] = [\n { field: '', headerName: '' },\n ];\n\n public controllerName?: string;\n\n protected servicesHistoryService: ServicesHistoryService = inject(ServicesHistoryService);\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n constructor() {\n super();\n\n this.configs.hideColumnHeaders = true;\n this.configs.rowHeight = 52;\n }\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public getData(params: IListParameters): Observable<IServicesHistoryList[]> {\n return !!this.parentEntityId && !!this.controllerName\n ? this.servicesHistoryService.list(this.controllerName, this.parentEntityId, params)\n : of<IServicesHistoryList[]>([]);\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","import { JsonPipe } from '@angular/common';\nimport { Component, Input, ViewChild } from '@angular/core';\nimport { ModalBase } from '@zambon-dev/framework';\nimport { ModalComponent } from '@zambon-dev/library';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'shared-operations-history-modal',\n templateUrl: './operations-history-modal.component.html',\n styleUrls: ['./operations-history-modal.component.scss'],\n imports: [\n JsonPipe,\n ModalComponent,\n TranslatePipe,\n ],\n})\nexport class OperationsHistoryModalComponent extends ModalBase {\n //#region ViewChilds, Inputs, Outputs\n @ViewChild(ModalComponent) private modal!: ModalComponent;\n\n @Input() public newValues?: string;\n\n @Input() public oldValues?: string;\n //#endregion\n\n //#region Variables\n //#endregion\n\n //#region Properties\n public get isModalShown(): boolean {\n return this.modal.isShown;\n }\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public toggle(): void {\n this.modal.toggleModal();\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","<lib-modal size=\"6xl\" [title]=\"'OperationsHistory-Modal-Title' | translate\">\n <div body>\n <pre>{{ oldValues | json }}</pre>\n <pre>{{ newValues | json }}</pre>\n </div>\n</lib-modal>","import { AfterViewInit, Component, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { ChildList } from '@zambon-dev/framework';\nimport { DataGridComponent, DataGridDataset } from '@zambon-dev/library';\nimport { OperationsHistoryDataset } from '../../../datasets';\nimport { IOperationsHistoryList } from '../../../models';\nimport { OperationsHistoryModalComponent } from '../operations-history-modal/operations-history-modal.component';\n\n@Component({\n selector: 'shared-operations-history-child-list',\n templateUrl: './operations-history-child-list.component.html',\n styleUrls: ['./operations-history-child-list.component.scss'],\n imports: [\n DataGridComponent,\n OperationsHistoryModalComponent,\n ],\n providers: [{ provide: DataGridDataset, useClass: OperationsHistoryDataset }]\n})\nexport class OperationsHistoryChildListComponent extends ChildList<any> implements AfterViewInit {\n //#region ViewChilds, Inputs, Outputs\n @ViewChild(OperationsHistoryModalComponent) private modal!: OperationsHistoryModalComponent;\n @ViewChild('operationTemplate') private operationTemplate!: TemplateRef<any>;\n\n @Input() public set controllerName(value: string) {\n (<OperationsHistoryDataset>this.dataGridDataset).controllerName = value;\n }\n\n @Input() public set serviceID(value: number | undefined) {\n (<OperationsHistoryDataset>this.dataGridDataset).serviceId = value;\n }\n //#endregion\n\n //#region Variables\n public selectedNewValues: any | null = null;\n public selectedOldValues: any | null = null;\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n public ngAfterViewInit(): void {\n this.dataGridDataset.columns[0].template = this.operationTemplate;\n }\n //#endregion\n\n //#region Event handlers\n public openModal(): void {\n if (!this.modal.isModalShown) {\n this.modal.toggle();\n }\n }\n //#endregion\n\n //#region Public methods\n public override selectedRowChanged(): void {\n super.selectedRowChanged();\n\n if (this.dataGridDataset.hasSelectedRows) {\n const key: string = this.dataGridDataset.selectedRowKeys[0];\n \n const data: IOperationsHistoryList = this.dataGridDataset.getRowData(key);\n this.selectedOldValues = JSON.parse(data.oldValues?.trim() ?? '');\n this.selectedNewValues = JSON.parse(data.newValues?.trim() ?? '');\n }\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","<lib-data-grid [lazyLoadRows]=\"true\">\n</lib-data-grid>\n\n<ng-template #operationTemplate let-rowData=\"rowData\">\n <div class=\"operation-content\" (click)=\"openModal()\">\n <span class=\"operation\"\n [class.added]=\"rowData.operationType === 'Added'\"\n [class.deleted]=\"rowData.operationType === 'Deleted'\"\n [class.modified]=\"rowData.operationType === 'Modified'\"\n [class.unchanged]=\"rowData.operationType === 'Unchanged'\">\n {{ rowData.operationType }}\n </span>\n {{ rowData.entityName }}\n </div>\n</ng-template>\n\n<shared-operations-history-modal\n[newValues]=\"selectedNewValues\"\n[oldValues]=\"selectedOldValues\">\n</shared-operations-history-modal>","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n/**\n * Pipe that bypasses Angular's built-in HTML sanitization.\n *\n * **WARNING: This pipe introduces XSS (Cross-Site Scripting) risk.**\n * It marks the provided HTML string as trusted, meaning Angular will\n * render it without any sanitization. Malicious content such as\n * `<script>` tags, inline event handlers (`onerror`, `onclick`, etc.),\n * and `javascript:` URLs will be executed in the user's browser.\n *\n * ### Safe usage\n * - Server-rendered HTML from **trusted, internal APIs** that never\n * include user-generated content (e.g., admin-authored rich text\n * that is sanitized server-side before storage).\n * - Static HTML snippets defined in application code.\n *\n * ### Unsafe usage (DO NOT use for these)\n * - Any value that originates from user input (form fields, query\n * params, URL fragments, file uploads).\n * - Third-party API responses whose content you do not control.\n * - Database fields that may contain unsanitized user submissions.\n *\n * @example\n * // Safe — trusted server content\n * <div [innerHTML]=\"trustedServerHtml | bypassHtmlSanitizer\"></div>\n *\n * // UNSAFE — user-provided content (use Angular’s default sanitization instead)\n * <div [innerHTML]=\"comment.body | bypassHtmlSanitizer\"></div> // ❌ XSS risk\n * <div [innerHTML]=\"comment.body\"></div> // ✅ Angular sanitizes automatically\n */\n@Pipe({\n name: 'bypassHtmlSanitizer'\n})\nexport class BypassHtmlSanitizerPipe implements PipeTransform {\n private sanitizer: DomSanitizer = inject(DomSanitizer);\n\n public transform(html: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'enumLabel'\n})\nexport class EnumLabelPipe implements PipeTransform {\n public transform(value?: number, enumType?: any): string {\n if (value === undefined || enumType === undefined) {\n return '';\n }\n\n const keys: string[] = Object.keys(enumType).filter((key: string) => !isNaN(Number(enumType[key])));\n const values: number[] = keys.map((key: string) => enumType[key]);\n\n const index: number = values.indexOf(value);\n if (index >= 0) {\n return keys[index];\n }\n return '';\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'utcDate'\n})\nexport class UtcDatePipe implements PipeTransform {\n transform(value?: Date): Date | null {\n if (!value) {\n return null;\n }\n\n const newDate: Date = new Date(value);\n\n let utcHour: number = newDate.getUTCHours();\n if (utcHour < newDate.getHours()) {\n utcHour += 24;\n }\n\n newDate.setHours(\n newDate.getHours() + newDate.getHours() - utcHour,\n newDate.getMinutes(),\n newDate.getSeconds()\n );\n\n return newDate;\n }\n}","import { DatePipe } from '@angular/common';\nimport { AfterViewInit, Component, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { ChildList } from '@zambon-dev/framework';\nimport { DataGridComponent, DataGridDataset } from '@zambon-dev/library';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ServicesHistoryDataset } from '../../../datasets';\nimport { UtcDatePipe } from '../../../pipes';\n\n@Component({\n selector: 'shared-services-history-child-list',\n templateUrl: './services-history-child-list.component.html',\n styleUrls: ['./services-history-child-list.component.scss'],\n imports: [\n DataGridComponent,\n DatePipe,\n UtcDatePipe,\n TranslatePipe,\n ],\n providers: [{ provide: DataGridDataset, useClass: ServicesHistoryDataset }]\n})\nexport class ServicesHistoryChildListComponent extends ChildList<any> implements AfterViewInit {\n //#region ViewChilds, Inputs, Outputs\n @ViewChild('serviceTemplate') private serviceTemplate!: TemplateRef<any>;\n\n @Input() public set controllerName(value: string) {\n (<ServicesHistoryDataset>this.dataGridDataset).controllerName = value;\n } \n //#endregion\n\n //#region Variables\n public selectedServiceID?: number;\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n public ngAfterViewInit(): void {\n this.dataGridDataset.columns[0].template = this.serviceTemplate;\n }\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public override selectedRowChanged(): void {\n super.selectedRowChanged();\n\n if (this.dataGridDataset.hasSelectedRows) {\n const selectedKey: string = this.dataGridDataset.selectedRowKeys[0];;\n this.selectedServiceID = this.dataGridDataset.getRowID(selectedKey);\n }\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","<lib-data-grid [lazyLoadRows]=\"true\">\n</lib-data-grid>\n\n<ng-template #serviceTemplate let-rowData=\"rowData\">\n <div class=\"service-content\">\n <div class=\"icon\">\n <i class=\"fa-solid fa-circle fa-lg\"></i>\n </div>\n <div class=\"information\">\n <div class=\"service-name\">\n {{ rowData.name }}\n </div>\n <div class=\"details\">\n <span class=\"datetime\"><i class=\"fa-solid fa-clock\"></i> {{ rowData.changedOn | utcDate | date: ('Format-DateTime' | translate) }}</span>\n <span class=\"user\"><i class=\"fa-solid fa-user\"></i> {{ rowData.changedByName }}</span>\n </div>\n </div>\n </div>\n</ng-template>","import { Component, inject, Input } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ViewBase } from '@zambon-dev/framework';\nimport { DataProviderService } from '@zambon-dev/library';\nimport { take } from 'rxjs';\nimport { OperationsHistoryChildListComponent } from '../../operations-history';\nimport { ServicesHistoryChildListComponent } from '../services-history-child-list/services-history-child-list.component';\n\n@Component({\n selector: 'shared-services-history-view',\n templateUrl: './services-history-view.component.html',\n styleUrls: ['./services-history-view.component.scss'],\n imports: [\n OperationsHistoryChildListComponent,\n ServicesHistoryChildListComponent,\n ]\n})\nexport class ServicesHistoryViewComponent extends ViewBase {\n //#region ViewChilds, Inputs, Outputs\n @Input({ required: true }) public controllerName!: string;\n\n @Input() public entityID?: number;\n //#endregion\n\n //#region Variables\n private activatedRoute: ActivatedRoute = inject(ActivatedRoute);\n private dataProviderService: DataProviderService<any> | null = inject(DataProviderService, { optional: true });\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n constructor() {\n super();\n\n if (this.activatedRoute.snapshot.data['controllerName']) {\n this.controllerName = this.activatedRoute.snapshot.data['controllerName'];\n }\n\n if (this.dataProviderService) {\n this.dataProviderService.getModel$()\n .pipe(take(1))\n .subscribe((model: any) => {\n this.entityID = model.id;\n });\n }\n }\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n //#endregion\n\n //#region Private methods\n //#endregion\n}","<div class=\"history-container\">\n <div class=\"service-history-container\">\n <shared-services-history-child-list #service\n [controllerName]=\"controllerName\">\n </shared-services-history-child-list>\n </div>\n\n <div class=\"operations-history-container\">\n <shared-operations-history-child-list\n [controllerName]=\"controllerName\"\n [serviceID]=\"service.selectedServiceID\">\n </shared-operations-history-child-list>\n </div>\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"zambon-dev-shared.mjs","sources":["../../../../libs/shared/src/lib/layouts/login-layout/login-layout.component.ts","../../../../libs/shared/src/lib/layouts/login-layout/login-layout.component.html","../../../../libs/shared/src/lib/services/authentication.service.ts","../../../../libs/shared/src/lib/services/operations-history.service.ts","../../../../libs/shared/src/lib/services/services-history.service.ts","../../../../libs/shared/src/lib/layouts/main-layout/main-layout.component.ts","../../../../libs/shared/src/lib/layouts/main-layout/main-layout.component.html","../../../../libs/shared/src/lib/auth/components/language-selector/language-selector.component.ts","../../../../libs/shared/src/lib/auth/components/language-selector/language-selector.component.html","../../../../libs/shared/src/lib/auth/components/login/login.component.ts","../../../../libs/shared/src/lib/auth/components/login/login.component.html","../../../../libs/shared/src/lib/auth/auth.module.ts","../../../../libs/shared/src/lib/auth/guards/auth-guard.ts","../../../../libs/shared/src/lib/auth/interceptors/auth-interceptors.ts","../../../../libs/shared/src/lib/components/filters-base.ts","../../../../libs/shared/src/lib/datasets/operations-history.dataset.ts","../../../../libs/shared/src/lib/datasets/services-history.dataset.ts","../../../../libs/shared/src/lib/features/operations-history/operations-history-modal/operations-history-modal.component.ts","../../../../libs/shared/src/lib/features/operations-history/operations-history-modal/operations-history-modal.component.html","../../../../libs/shared/src/lib/features/operations-history/operations-history-child-list/operations-history-child-list.component.ts","../../../../libs/shared/src/lib/features/operations-history/operations-history-child-list/operations-history-child-list.component.html","../../../../libs/shared/src/lib/pipes/bypass-html-sanitizer.pipe.ts","../../../../libs/shared/src/lib/pipes/enum-text.pipe.ts","../../../../libs/shared/src/lib/pipes/utc-date.pipe.ts","../../../../libs/shared/src/lib/features/services-history/services-history-child-list/services-history-child-list.component.ts","../../../../libs/shared/src/lib/features/services-history/services-history-child-list/services-history-child-list.component.html","../../../../libs/shared/src/lib/features/services-history/services-history-view/services-history-view.component.ts","../../../../libs/shared/src/lib/features/services-history/services-history-view/services-history-view.component.html","../../../../libs/shared/src/lib/i18n/shared-i18n.ts","../../../../libs/shared/src/zambon-dev-shared.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n selector: 'shared-login-layout',\n templateUrl: './login-layout.component.html',\n styleUrls: ['./login-layout.component.scss'],\n imports: [\n RouterModule,\n ]\n})\nexport class LoginLayoutComponent {\n //#region ViewChilds, Inputs, Outputs\n //#endregion\n\n //#region Variables\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n //#endregion\n\n //#region Private methods\n //#endregion\n}","<div class=\"background\"></div>\n\n<div class=\"container\">\n <router-outlet></router-outlet>\n</div>","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { APP_CONFIG, AppConfig, AuthService, TabService } from '@zambon-dev/framework';\nimport { Observable, catchError, interval, map, mergeMap, tap } from 'rxjs';\nimport { IAuthResponse, ICurrentUserInfo } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthenticationService extends AuthService {\n //#region ViewChilds, Inputs, Outputs\n //#endregion\n\n //#region Variables\n public adminAction: string = 'AdministrativeMaster';\n\n private config: AppConfig = inject(APP_CONFIG);\n\n private readonly BASE_URL: string = `${this.config.BASE_URL}/Authentication`;\n private http: HttpClient = inject(HttpClient);\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n constructor() {\n super(inject(JwtHelperService), inject(TabService));\n }\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public authenticate(model: { username: string, password: string, rememberMe: boolean }): Observable<void> {\n return this.http\n .post<IAuthResponse>(`${this.BASE_URL}/SignIn`, model)\n .pipe(\n map((res: IAuthResponse) => {\n this.setStorage('username', res.username, model.rememberMe);\n this.setStorage('token', res.token, model.rememberMe);\n this.setStorage('refreshToken', res.refreshToken, model.rememberMe);\n this.setStorage('userInfo', window.btoa(JSON.stringify(res as ICurrentUserInfo)), model.rememberMe);\n }),\n catchError((error: HttpErrorResponse) =>\n interval(1000)\n .pipe(\n mergeMap(() => {\n switch(error.status) {\n case 401:\n throw 'InvalidUsernamePassword';\n default:\n throw 'InternalServerError';\n }\n })\n )\n )\n );\n }\n\n public getActions(): Observable<string[]> {\n return this.http.post<string[]>(`${this.BASE_URL}/GetActions`, {});\n }\n\n public getUserInfo(): ICurrentUserInfo | null {\n const userInfo: string | null = this.userInfo;\n if (userInfo) {\n return JSON.parse(window.atob(userInfo)) as ICurrentUserInfo;\n }\n return null;\n }\n\n public tryRefreshToken(): Observable<string> {\n return this.http\n .post<IAuthResponse>(`${this.BASE_URL}/RefreshToken`, {\n username: this.username ?? '',\n refreshToken: this.refreshToken ?? ''\n })\n .pipe(\n tap((res: IAuthResponse) => {\n this.setStorage('token', res.token);\n this.setStorage('refreshToken', res.refreshToken);\n this.setStorage('userInfo', window.btoa(JSON.stringify(res as ICurrentUserInfo)));\n }),\n map((res: IAuthResponse) => res.token ?? '')\n );\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { APP_CONFIG, AppConfig } from '@zambon-dev/framework';\nimport { IListParameters } from '@zambon-dev/library';\nimport { Observable } from 'rxjs';\nimport { IOperationsHistoryList } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class OperationsHistoryService {\n //#region ViewChilds, Inputs, Outputs\n //#endregion\n\n //#region Variables\n private config: AppConfig = inject(APP_CONFIG);\n private http: HttpClient = inject(HttpClient);\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public list(controllerName: string, entityID: number, serviceHistoryID: number, parameters: IListParameters): Observable<IOperationsHistoryList[]> {\n return this.http.post<IOperationsHistoryList[]>(`${this.config.BASE_URL}/${controllerName}/${entityID}/Audit/${serviceHistoryID}`, parameters);\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { APP_CONFIG, AppConfig } from '@zambon-dev/framework';\nimport { IListParameters } from '@zambon-dev/library';\nimport { Observable } from 'rxjs';\nimport { IServicesHistoryList } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ServicesHistoryService {\n //#region ViewChilds, Inputs, Outputs\n //#endregion\n\n //#region Variables\n private config: AppConfig = inject(APP_CONFIG);\n private http: HttpClient = inject(HttpClient);\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public list(controllerName: string, entityID: number, parameters: IListParameters): Observable<IServicesHistoryList[]> {\n return this.http.post<IServicesHistoryList[]>(`${this.config.BASE_URL}/${controllerName}/${entityID}/Audit`, parameters);\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","import { Component, inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { Router, RouterModule } from '@angular/router';\nimport { ITab, Tab, TabsComponent, TabService } from '@zambon-dev/framework';\nimport { ModalComponent, SidebarComponent, SidebarMenu, SidebarService } from '@zambon-dev/library';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Subject, take, takeUntil } from 'rxjs';\nimport { AuthenticationService } from '../../services';\n\n@Component({\n selector: 'shared-main-layout',\n templateUrl: './main-layout.component.html',\n styleUrls: ['./main-layout.component.scss'],\n imports: [\n ModalComponent,\n SidebarComponent,\n RouterModule,\n TabsComponent,\n TranslatePipe,\n ]\n})\nexport class MainLayoutComponent implements OnInit, OnDestroy {\n //#region ViewChilds, Inputs, Outputs\n @ViewChild('logoutModal') private logoutModal!: ModalComponent;\n //#endregion\n\n //#region Variables\n private authenticationService: AuthenticationService = inject(AuthenticationService);\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private router: Router = inject(Router);\n private sidebarService: SidebarService = inject(SidebarService);\n private tabService: TabService = inject(TabService);\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n\n public ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n\n public ngOnInit(): void {\n const url: string = this.router.url;\n\n if (url !== '/' && !this.tabService.isUrlOpen(url)) {\n this.sidebarService.getMenuFromUrl(url)\n .pipe(take(1))\n .subscribe((item: SidebarMenu) => {\n if (!!item) {\n this.tabService.updateTabTitle(url, item.label);\n }\n });\n }\n\n this.sidebarService.menuUrlSelected\n .pipe(takeUntil(this.destroy$))\n .subscribe((item: SidebarMenu) => {\n const tab: ITab = new Tab({\n title: item.label,\n url: item.url,\n });\n this.tabService.openTab(tab);\n });\n }\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public onLogoutClick(): void {\n this.logoutModal.toggleModal();\n }\n\n public onLogoutConfirm(): void {\n this.authenticationService.signOut();\n this.router.navigate(['/login']);\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","<div class=\"main-container\">\n <lib-sidebar #sidebar></lib-sidebar>\n\n <div class=\"toolbar\">\n <div>\n <button class=\"btn\" (click)=\"sidebar.collapse()\">\n <i class=\"fa-solid fa-bars\"></i>\n </button>\n </div>\n <div>\n <button class=\"btn gray-300\" (click)=\"onLogoutClick()\">\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i>\n <span>{{ 'Main-Logout' | translate }}</span>\n </button>\n </div>\n </div>\n\n <div class=\"content\">\n <framework-tabs>\n <router-outlet></router-outlet>\n </framework-tabs>\n </div>\n</div>\n\n<lib-modal #logoutModal position=\"top\" size=\"xl\" [closeButtonText]=\"'Main-Logout-Modal-Message-Cancel' | translate\">\n <div body>\n <h5>{{ 'Main-Logout-Modal-Message' | translate }}</h5>\n </div>\n <div footer>\n <button type=\"button\" class=\"btn red-600\" (click)=\"onLogoutConfirm()\">{{ 'Main-Logout-Modal-Message-Confirm' | translate }}</button>\n </div>\n</lib-modal>","import { NgClass, NgFor } from '@angular/common';\nimport { Component, ElementRef, HostListener, inject, Input, ViewChild } from '@angular/core';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'shared-language-selector',\n templateUrl: './language-selector.component.html',\n styleUrls: ['./language-selector.component.scss'],\n imports: [\n NgClass,\n NgFor,\n TranslatePipe,\n ]\n})\nexport class LanguageSelectorComponent {\n //#region ViewChilds, Inputs, Outputs\n @ViewChild('dropdown') public dropdown!: ElementRef<HTMLDivElement>;\n\n @Input() public title: string = 'LanguageSelector-Title';\n //#endregion\n\n //#region Variables\n private translate: TranslateService = inject(TranslateService);\n\n protected languages: string[] = this.translate.getLangs();\n protected showDropdown: boolean = false;\n //#endregion\n\n //#region Properties\n public get selectedLanguage(): string {\n return this.translate.currentLang;\n }\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n //#endregion\n\n //#region Event handlers\n public onDropdownClick(): void {\n this.showDropdown = !this.showDropdown;\n }\n\n public onSelectLanguage(language: string): void {\n localStorage.setItem('language', language);\n this.translate.use(language);\n this.showDropdown = false;\n }\n //#endregion\n\n //#region Public methods\n //#endregion\n\n //#region Private methods\n @HostListener('window:click', ['$event'])\n private documentClick(event: MouseEvent): void {\n if (this.showDropdown) {\n let target: HTMLElement = <HTMLElement>event.target;\n while (target !== null && target.tagName?.toUpperCase() !== 'BODY') {\n if (target === this.dropdown.nativeElement) {\n return;\n }\n target = <HTMLElement>target.parentElement;\n }\n this.showDropdown = false;\n }\n }\n //#endregion\n}\n","<div #dropdown class=\"dropdown right\" [class.show]=\"showDropdown\">\n <button class=\"btn\" type=\"button\" (click)=\"onDropdownClick()\">\n {{ title | translate }}\n </button>\n\n <ul>\n <li *ngFor=\"let lang of languages\">\n <a class=\"dropdown-item flag-{{ lang }}\"\n [ngClass]=\"{'selected': lang === selectedLanguage}\"\n (click)=\"onSelectLanguage(lang)\"\n >\n {{ 'Language-' + lang | translate }}\n </a>\n </li>\n </ul>\n</div>","import { NgIf } from '@angular/common';\nimport { Component, ElementRef, inject, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Router, RouterModule } from '@angular/router';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { finalize, tap } from 'rxjs';\nimport { AuthenticationService } from '../../../services';\nimport { LanguageSelectorComponent } from '../language-selector/language-selector.component';\n\n@Component({\n selector: 'shared-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss'],\n imports: [\n LanguageSelectorComponent,\n NgIf,\n ReactiveFormsModule,\n RouterModule,\n TranslatePipe,\n ]\n})\nexport class LoginComponent implements OnInit {\n //#region ViewChilds, Inputs, Outputs\n @ViewChild('username') public username!: ElementRef<HTMLInputElement>;\n //#endregion\n\n //#region Variables\n protected form!: FormGroup;\n protected formState: {\n error: string | null,\n loading: boolean,\n success: boolean,\n } = {\n error: null,\n loading: false,\n success: false\n };\n\n private authenticationService: AuthenticationService = inject(AuthenticationService);\n private formBuilder: FormBuilder = inject(FormBuilder);\n private router: Router = inject(Router);\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n\n public ngOnInit(): void {\n this.form = this.formBuilder.group({\n password: ['', Validators.required],\n rememberMe: [false, { nonNullable: true }],\n username: ['', Validators.required],\n });\n }\n //#endregion\n\n //#region Event handlers\n public onSubmit(): void {\n this.form.markAllAsTouched();\n\n if (this.form.valid) {\n this.form.disable();\n \n this.formState.loading = true;\n this.formState.error = null;\n\n this.authenticationService.authenticate({\n username: this.form.get('username')?.value.toString() ?? '',\n password: this.form.get('password')?.value.toString() ?? '',\n rememberMe: this.form.get('rememberMe')?.value ?? false\n })\n .pipe(\n tap(() => { \n this.formState.success = true\n }),\n finalize(() => this.formState.loading = false)\n )\n .subscribe({\n next: () => {\n const params: URLSearchParams = new URLSearchParams(window.location.search);\n \n this.router.navigate([params.get('returnUrl') ?? '/']);\n },\n error: (e: string) => {\n this.form.enable();\n\n this.form.controls['password'].setValue('');\n this.form.controls['password'].markAsUntouched();\n \n this.username.nativeElement.focus();\n\n switch(e) {\n case 'InvalidUsernamePassword':\n this.formState.error = 'invalid';\n break;\n default:\n this.formState.error = 'internalServerError';\n break;\n }\n }\n });\n }\n }\n //#endregion\n\n //#region Public methods\n //#endregion\n\n //#region Private methods\n //#endregion\n}","<div class=\"content\">\n <div class=\"login\">\n <div class=\"logo-container\">\n <div class=\"logo\">\n <img src=\"/logo-login.png\" alt=\"Logo\" />\n </div>\n </div>\n \n <h3 class=\"title\">{{ 'Login-Title' | translate }}</h3>\n\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n\n <div class=\"validations\" [class.hidden]=\"!formState.error\">\n \n <div *ngIf=\"formState.error === 'invalid'\">\n {{'Login-Errors-Invalid' | translate}}\n </div>\n \n <div *ngIf=\"formState.error === 'internalServerError'\">{{'Login-Errors-InternalServerError' | translate}}</div>\n </div>\n\n <div class=\"input-group inline\">\n <input type=\"text\" #username id=\"username\" formControlName=\"username\" class=\"form-input peer\" [placeholder]=\"'Login-Username' | translate\" autofocus />\n\n <div class=\"input-group-text\">\n <label for=\"username\">\n <i class=\"fas fa-user fa-fw\"></i>\n </label>\n </div>\n\n <div class=\"validations\">\n <span *ngIf=\"form.get('username')?.hasError('required')\">{{ 'Login-Username-Required' | translate }}</span>\n </div>\n </div>\n \n <div class=\"input-group inline\">\n <input type=\"password\" id=\"password\" formControlName=\"password\" class=\"form-input\" [placeholder]=\"'Login-Password' | translate\" />\n\n <div class=\"input-group-text\">\n <label for=\"password\">\n <i class=\"fas fa-key fa-fw\"></i>\n </label>\n </div>\n \n <div class=\"validations\">\n <span *ngIf=\"form.get('password')?.hasError('required')\">{{ 'Login-Password-Required' | translate }}</span>\n </div>\n </div>\n \n <div class=\"options\">\n <div>\n <input class=\"form-input\" id=\"rememberMe\" formControlName=\"rememberMe\" type=\"checkbox\">\n <label for=\"rememberMe\">{{ 'Login-RememberMe' | translate }}</label>\n </div>\n \n <shared-language-selector></shared-language-selector>\n </div>\n \n <div class=\"buttons\">\n <button type=\"submit\" class=\"btn\"\n [class.loading]=\"formState.loading && !formState.success && !formState.error\"\n [class.error]=\"formState.error\"\n [class.success]=\"formState.success\">\n <i *ngIf=\"!formState.loading\" class=\"fas fa-sign-in-alt fa-fw\"></i>\n {{ 'Login-SignIn' | translate }}\n </button>\n </div>\n </form>\n </div>\n\n <div class=\"footer\">\n <span [innerHTML]=\"'Login-Copyright' | translate\"></span>\n <span class=\"design\">{{ 'Login-DesignBy' | translate }}</span>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { LoginLayoutComponent } from '../layouts';\nimport { LoginComponent } from './components';\n\n\nconst routes: Routes = [\n { path: '', component: LoginLayoutComponent, children: [\n { path: '', redirectTo: 'login', pathMatch: 'full' },\n { path: 'login', component: LoginComponent },\n ] },\n];\n\n@NgModule({\n imports: [\n RouterModule.forChild(routes),\n ]\n})\nexport class SharedAuthModule {}\n","import { inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\nimport { AuthenticationService } from '../../services';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n //#region ViewChilds, Inputs, Outputs\n //#endregion\n\n //#region Variables\n private authenticationService: AuthenticationService = inject(AuthenticationService);\n private router: Router = inject(Router);\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public canActivate(_: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n if (!this.authenticationService.isAuthenticated) {\n this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } });\n return false;\n }\n return true;\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { JwtInterceptor } from '@auth0/angular-jwt';\nimport { APP_CONFIG, AppConfig } from '@zambon-dev/framework';\nimport { catchError, Observable, shareReplay, switchMap, tap } from 'rxjs';\nimport { AuthenticationService } from '../../services';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n //#region ViewChilds, Inputs, Outputs\n //#endregion\n\n //#region Variables\n private authenticationService: AuthenticationService = inject(AuthenticationService);\n private config: AppConfig = inject(APP_CONFIG);\n private jwtInterceptor: JwtInterceptor = inject(JwtInterceptor);\n private refreshToken$?: Observable<string>;\n private router: Router = inject(Router);\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n if (\n request.url.indexOf(this.config.BASE_URL) >= 0 &&\n !this.jwtInterceptor.isDisallowedRoute(request) &&\n this.authenticationService.isTokenExpired\n ) {\n if (!this.refreshToken$) {\n this.refreshToken$ = this.authenticationService.tryRefreshToken()\n .pipe(\n shareReplay(),\n tap(() => {\n this.refreshToken$ = undefined;\n })\n );\n }\n\n return this.refreshToken$!\n .pipe(\n switchMap((token: string) => {\n return next.handle(\n request.clone({ setHeaders: { authorization: `Bearer ${token}` } })\n );\n }),\n catchError((err: HttpErrorResponse) => {\n if (err.status === 401) {\n this.authenticationService.signOut();\n this.router.navigate(['/login']);\n }\n throw err;\n })\n );\n }\n return next.handle(request);\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","import { Component, inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { ButtonFiltersComponent } from '@zambon-dev/framework';\nimport { Subject } from 'rxjs';\n\n@Component({ template: '' })\nexport abstract class FiltersBase implements OnInit, OnDestroy {\n //#region ViewChilds, Inputs, Outputs\n @ViewChild(ButtonFiltersComponent) protected buttonFilters?: ButtonFiltersComponent;\n //#endregion\n\n //#region Variables\n protected destroy$: Subject<boolean> = new Subject<boolean>();\n protected filterForm!: FormGroup;\n protected formBuilder: FormBuilder = inject(FormBuilder);\n //#endregion\n\n //#region Properties\n //#endregion\n \n //#region Constructor and Angular life cycle methods\n\n public ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n\n public ngOnInit(): void {\n this.filterForm = this.formSetup();\n }\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public setFilters(filters: { [key: string ] : any }): void {\n this.filterForm.patchValue(filters);\n\n setTimeout(() => {\n if (this.buttonFilters) {\n this.buttonFilters.setFilters(filters);\n }\n });\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n\n //#region Abstract methods\n protected abstract formSetup(): FormGroup<any>;\n //#endregion\n}\n","import { inject, Injectable } from '@angular/core';\nimport { DataGridDataset, IGridColumn, IListParameters } from '@zambon-dev/library';\nimport { Observable, of } from 'rxjs';\nimport { IOperationsHistoryList } from '../models';\nimport { OperationsHistoryService } from '../services';\n\n@Injectable()\nexport class OperationsHistoryDataset extends DataGridDataset {\n //#region ViewChilds, Inputs, Outputs\n //#endregion\n\n //#region Variables\n public override columns: IGridColumn[] = [\n { field: '', headerName: '' },\n ];\n public controllerName?: string;\n\n protected operationsHistoryService: OperationsHistoryService = inject(OperationsHistoryService);\n\n private _serviceID?: number | undefined;\n //#endregion\n\n //#region Properties\n public set serviceId(value: number | undefined) {\n if (this._serviceID !== value) {\n this._serviceID = value;\n this.refresh();\n }\n }\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n constructor() {\n super();\n\n this.configs.hideColumnHeaders = true;\n this.configs.showMessageOnEmpty = false;\n }\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public getData(params: IListParameters): Observable<IOperationsHistoryList[]> {\n this.configs.showMessageOnEmpty = !!this._serviceID;\n\n return !!this.parentEntityId && !!this.controllerName && !!this._serviceID\n ? this.operationsHistoryService.list(this.controllerName, this.parentEntityId, this._serviceID, params)\n : of<IOperationsHistoryList[]>([]);\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","import { inject, Injectable } from '@angular/core';\nimport { DataGridDataset, IGridColumn, IListParameters } from '@zambon-dev/library';\nimport { Observable, of } from 'rxjs';\nimport { IServicesHistoryList } from '../models';\nimport { ServicesHistoryService } from '../services';\n\n@Injectable()\nexport class ServicesHistoryDataset extends DataGridDataset {\n //#region ViewChilds, Inputs, Outputs\n //#endregion\n\n //#region Variables\n public override columns: IGridColumn[] = [\n { field: '', headerName: '' },\n ];\n\n public controllerName?: string;\n\n protected servicesHistoryService: ServicesHistoryService = inject(ServicesHistoryService);\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n constructor() {\n super();\n\n this.configs.hideColumnHeaders = true;\n this.configs.rowHeight = 52;\n }\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public getData(params: IListParameters): Observable<IServicesHistoryList[]> {\n return !!this.parentEntityId && !!this.controllerName\n ? this.servicesHistoryService.list(this.controllerName, this.parentEntityId, params)\n : of<IServicesHistoryList[]>([]);\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","import { JsonPipe } from '@angular/common';\nimport { Component, Input, ViewChild } from '@angular/core';\nimport { ModalBase } from '@zambon-dev/framework';\nimport { ModalComponent } from '@zambon-dev/library';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'shared-operations-history-modal',\n templateUrl: './operations-history-modal.component.html',\n styleUrls: ['./operations-history-modal.component.scss'],\n imports: [\n JsonPipe,\n ModalComponent,\n TranslatePipe,\n ],\n})\nexport class OperationsHistoryModalComponent extends ModalBase {\n //#region ViewChilds, Inputs, Outputs\n @ViewChild(ModalComponent) private modal!: ModalComponent;\n\n @Input() public newValues?: string;\n\n @Input() public oldValues?: string;\n //#endregion\n\n //#region Variables\n //#endregion\n\n //#region Properties\n public get isModalShown(): boolean {\n return this.modal.isShown;\n }\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public toggle(): void {\n this.modal.toggleModal();\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","<lib-modal size=\"6xl\" [title]=\"'OperationsHistory-Modal-Title' | translate\">\n <div body>\n <pre>{{ oldValues | json }}</pre>\n <pre>{{ newValues | json }}</pre>\n </div>\n</lib-modal>","import { AfterViewInit, Component, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { ChildList } from '@zambon-dev/framework';\nimport { DataGridComponent, DataGridDataset } from '@zambon-dev/library';\nimport { OperationsHistoryDataset } from '../../../datasets';\nimport { IOperationsHistoryList } from '../../../models';\nimport { OperationsHistoryModalComponent } from '../operations-history-modal/operations-history-modal.component';\n\n@Component({\n selector: 'shared-operations-history-child-list',\n templateUrl: './operations-history-child-list.component.html',\n styleUrls: ['./operations-history-child-list.component.scss'],\n imports: [\n DataGridComponent,\n OperationsHistoryModalComponent,\n ],\n providers: [{ provide: DataGridDataset, useClass: OperationsHistoryDataset }]\n})\nexport class OperationsHistoryChildListComponent extends ChildList<any> implements AfterViewInit {\n //#region ViewChilds, Inputs, Outputs\n @ViewChild(OperationsHistoryModalComponent) private modal!: OperationsHistoryModalComponent;\n @ViewChild('operationTemplate') private operationTemplate!: TemplateRef<any>;\n\n @Input() public set controllerName(value: string) {\n (<OperationsHistoryDataset>this.dataGridDataset).controllerName = value;\n }\n\n @Input() public set serviceID(value: number | undefined) {\n (<OperationsHistoryDataset>this.dataGridDataset).serviceId = value;\n }\n //#endregion\n\n //#region Variables\n public selectedNewValues: any | null = null;\n public selectedOldValues: any | null = null;\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n public ngAfterViewInit(): void {\n this.dataGridDataset.columns[0].template = this.operationTemplate;\n }\n //#endregion\n\n //#region Event handlers\n public openModal(): void {\n if (!this.modal.isModalShown) {\n this.modal.toggle();\n }\n }\n //#endregion\n\n //#region Public methods\n public override selectedRowChanged(): void {\n super.selectedRowChanged();\n\n if (this.dataGridDataset.hasSelectedRows) {\n const key: string = this.dataGridDataset.selectedRowKeys[0];\n \n const data: IOperationsHistoryList = this.dataGridDataset.getRowData(key);\n this.selectedOldValues = JSON.parse(data.oldValues?.trim() ?? '');\n this.selectedNewValues = JSON.parse(data.newValues?.trim() ?? '');\n }\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","<lib-data-grid [lazyLoadRows]=\"true\">\n</lib-data-grid>\n\n<ng-template #operationTemplate let-rowData=\"rowData\">\n <div class=\"operation-content\" (click)=\"openModal()\">\n <span class=\"operation\"\n [class.added]=\"rowData.operationType === 'Added'\"\n [class.deleted]=\"rowData.operationType === 'Deleted'\"\n [class.modified]=\"rowData.operationType === 'Modified'\"\n [class.unchanged]=\"rowData.operationType === 'Unchanged'\">\n {{ rowData.operationType }}\n </span>\n {{ rowData.entityName }}\n </div>\n</ng-template>\n\n<shared-operations-history-modal\n[newValues]=\"selectedNewValues\"\n[oldValues]=\"selectedOldValues\">\n</shared-operations-history-modal>","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n/**\n * Pipe that bypasses Angular's built-in HTML sanitization.\n *\n * **WARNING: This pipe introduces XSS (Cross-Site Scripting) risk.**\n * It marks the provided HTML string as trusted, meaning Angular will\n * render it without any sanitization. Malicious content such as\n * `<script>` tags, inline event handlers (`onerror`, `onclick`, etc.),\n * and `javascript:` URLs will be executed in the user's browser.\n *\n * ### Safe usage\n * - Server-rendered HTML from **trusted, internal APIs** that never\n * include user-generated content (e.g., admin-authored rich text\n * that is sanitized server-side before storage).\n * - Static HTML snippets defined in application code.\n *\n * ### Unsafe usage (DO NOT use for these)\n * - Any value that originates from user input (form fields, query\n * params, URL fragments, file uploads).\n * - Third-party API responses whose content you do not control.\n * - Database fields that may contain unsanitized user submissions.\n *\n * @example\n * // Safe — trusted server content\n * <div [innerHTML]=\"trustedServerHtml | bypassHtmlSanitizer\"></div>\n *\n * // UNSAFE — user-provided content (use Angular’s default sanitization instead)\n * <div [innerHTML]=\"comment.body | bypassHtmlSanitizer\"></div> // ❌ XSS risk\n * <div [innerHTML]=\"comment.body\"></div> // ✅ Angular sanitizes automatically\n */\n@Pipe({\n name: 'bypassHtmlSanitizer'\n})\nexport class BypassHtmlSanitizerPipe implements PipeTransform {\n private sanitizer: DomSanitizer = inject(DomSanitizer);\n\n public transform(html: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'enumLabel'\n})\nexport class EnumLabelPipe implements PipeTransform {\n public transform(value?: number, enumType?: any): string {\n if (value === undefined || enumType === undefined) {\n return '';\n }\n\n const keys: string[] = Object.keys(enumType).filter((key: string) => !isNaN(Number(enumType[key])));\n const values: number[] = keys.map((key: string) => enumType[key]);\n\n const index: number = values.indexOf(value);\n if (index >= 0) {\n return keys[index];\n }\n return '';\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'utcDate'\n})\nexport class UtcDatePipe implements PipeTransform {\n transform(value?: Date): Date | null {\n if (!value) {\n return null;\n }\n\n const newDate: Date = new Date(value);\n\n let utcHour: number = newDate.getUTCHours();\n if (utcHour < newDate.getHours()) {\n utcHour += 24;\n }\n\n newDate.setHours(\n newDate.getHours() + newDate.getHours() - utcHour,\n newDate.getMinutes(),\n newDate.getSeconds()\n );\n\n return newDate;\n }\n}","import { DatePipe } from '@angular/common';\nimport { AfterViewInit, Component, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { ChildList } from '@zambon-dev/framework';\nimport { DataGridComponent, DataGridDataset } from '@zambon-dev/library';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ServicesHistoryDataset } from '../../../datasets';\nimport { UtcDatePipe } from '../../../pipes';\n\n@Component({\n selector: 'shared-services-history-child-list',\n templateUrl: './services-history-child-list.component.html',\n styleUrls: ['./services-history-child-list.component.scss'],\n imports: [\n DataGridComponent,\n DatePipe,\n UtcDatePipe,\n TranslatePipe,\n ],\n providers: [{ provide: DataGridDataset, useClass: ServicesHistoryDataset }]\n})\nexport class ServicesHistoryChildListComponent extends ChildList<any> implements AfterViewInit {\n //#region ViewChilds, Inputs, Outputs\n @ViewChild('serviceTemplate') private serviceTemplate!: TemplateRef<any>;\n\n @Input() public set controllerName(value: string) {\n (<ServicesHistoryDataset>this.dataGridDataset).controllerName = value;\n } \n //#endregion\n\n //#region Variables\n public selectedServiceID?: number;\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n public ngAfterViewInit(): void {\n this.dataGridDataset.columns[0].template = this.serviceTemplate;\n }\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n public override selectedRowChanged(): void {\n super.selectedRowChanged();\n\n if (this.dataGridDataset.hasSelectedRows) {\n const selectedKey: string = this.dataGridDataset.selectedRowKeys[0];;\n this.selectedServiceID = this.dataGridDataset.getRowID(selectedKey);\n }\n }\n //#endregion\n\n //#region Private methods\n //#endregion\n}","<lib-data-grid [lazyLoadRows]=\"true\">\n</lib-data-grid>\n\n<ng-template #serviceTemplate let-rowData=\"rowData\">\n <div class=\"service-content\">\n <div class=\"icon\">\n <i class=\"fa-solid fa-circle fa-lg\"></i>\n </div>\n <div class=\"information\">\n <div class=\"service-name\">\n {{ rowData.name }}\n </div>\n <div class=\"details\">\n <span class=\"datetime\"><i class=\"fa-solid fa-clock\"></i> {{ rowData.changedOn | utcDate | date: ('Format-DateTime' | translate) }}</span>\n <span class=\"user\"><i class=\"fa-solid fa-user\"></i> {{ rowData.changedByName }}</span>\n </div>\n </div>\n </div>\n</ng-template>","import { Component, inject, Input } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ViewBase } from '@zambon-dev/framework';\nimport { DataProviderService } from '@zambon-dev/library';\nimport { take } from 'rxjs';\nimport { OperationsHistoryChildListComponent } from '../../operations-history';\nimport { ServicesHistoryChildListComponent } from '../services-history-child-list/services-history-child-list.component';\n\n@Component({\n selector: 'shared-services-history-view',\n templateUrl: './services-history-view.component.html',\n styleUrls: ['./services-history-view.component.scss'],\n imports: [\n OperationsHistoryChildListComponent,\n ServicesHistoryChildListComponent,\n ]\n})\nexport class ServicesHistoryViewComponent extends ViewBase {\n //#region ViewChilds, Inputs, Outputs\n @Input({ required: true }) public controllerName!: string;\n\n @Input() public entityID?: number;\n //#endregion\n\n //#region Variables\n private activatedRoute: ActivatedRoute = inject(ActivatedRoute);\n private dataProviderService: DataProviderService<any> | null = inject(DataProviderService, { optional: true });\n //#endregion\n\n //#region Properties\n //#endregion\n\n //#region Constructor and Angular life cycle methods\n constructor() {\n super();\n\n if (this.activatedRoute.snapshot.data['controllerName']) {\n this.controllerName = this.activatedRoute.snapshot.data['controllerName'];\n }\n\n if (this.dataProviderService) {\n this.dataProviderService.getModel$()\n .pipe(take(1))\n .subscribe((model: any) => {\n this.entityID = model.id;\n });\n }\n }\n //#endregion\n\n //#region Event handlers\n //#endregion\n\n //#region Public methods\n //#endregion\n\n //#region Private methods\n //#endregion\n}","<div class=\"history-container\">\n <div class=\"service-history-container\">\n <shared-services-history-child-list #service\n [controllerName]=\"controllerName\">\n </shared-services-history-child-list>\n </div>\n\n <div class=\"operations-history-container\">\n <shared-operations-history-child-list\n [controllerName]=\"controllerName\"\n [serviceID]=\"service.selectedServiceID\">\n </shared-operations-history-child-list>\n </div>\n</div>","import { HttpBackend } from '@angular/common/http';\nimport { EnvironmentProviders, Provider } from '@angular/core';\nimport { provideTranslateService, TranslateLoader } from '@ngx-translate/core';\nimport { MultiTranslateHttpLoader, TranslationResource } from 'ngx-translate-multi-http-loader';\n\nexport interface AngularAssetPattern {\n glob: string;\n input: string;\n output: string;\n}\n\nexport const ZAMBON_SHARED_I18N_ASSET_PATH = 'assets/i18n/zambon-dev/shared';\n\nexport const ZAMBON_SHARED_I18N_ASSET: AngularAssetPattern = {\n glob: '**/*.json',\n input: 'node_modules/@zambon-dev/shared/i18n',\n output: ZAMBON_SHARED_I18N_ASSET_PATH,\n};\n\nexport const ZAMBON_SHARED_I18N_RESOURCES: TranslationResource[] = [\n { prefix: `/${ZAMBON_SHARED_I18N_ASSET_PATH}/language-selector/`, suffix: '.json' },\n { prefix: `/${ZAMBON_SHARED_I18N_ASSET_PATH}/login/`, suffix: '.json' },\n { prefix: `/${ZAMBON_SHARED_I18N_ASSET_PATH}/operations-history/`, suffix: '.json' },\n];\n\nexport interface ZambonSharedTranslateConfig {\n defaultLanguage?: string;\n appResources?: (string | TranslationResource)[];\n}\n\nexport function createZambonSharedTranslateLoader(\n httpBackend: HttpBackend,\n appResources: (string | TranslationResource)[] = [],\n): MultiTranslateHttpLoader {\n return new MultiTranslateHttpLoader(httpBackend, [\n ...ZAMBON_SHARED_I18N_RESOURCES,\n ...appResources,\n ]);\n}\n\nexport function provideZambonSharedTranslateLoader(\n appResources: (string | TranslationResource)[] = [],\n): Provider {\n return {\n provide: TranslateLoader,\n useFactory: (httpBackend: HttpBackend) => createZambonSharedTranslateLoader(httpBackend, appResources),\n deps: [HttpBackend],\n };\n}\n\nexport function provideZambonSharedTranslateService(\n config: ZambonSharedTranslateConfig = {},\n): EnvironmentProviders {\n return provideTranslateService({\n defaultLanguage: config.defaultLanguage,\n loader: provideZambonSharedTranslateLoader(config.appResources),\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ {
2
+ "LanguageSelector-Title": "Select language",
3
+
4
+ "": ""
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "LanguageSelector-Title": "Selecionar idioma",
3
+
4
+ "": ""
5
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "Login-DesignBy": "Design by Ricardo Zambon",
3
+ "Login-Errors-InternalServerError": "Occurred some error with the server, please try again.",
4
+ "Login-Errors-Invalid": "The username or password you entered is incorrect.",
5
+ "Login-Password-Required": "Please enter the password",
6
+ "Login-Password": "Type your password",
7
+ "Login-RememberMe": "Remember me",
8
+ "Login-SelectLanguage": "Select language",
9
+ "Login-SignIn": "Sign In",
10
+ "Login-Username-Required": "Please enter the username",
11
+ "Login-Username": "Type your username",
12
+
13
+ "": ""
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "Login-DesignBy": "Design por Ricardo Zambon",
3
+ "Login-Errors-InternalServerError": "Ocorreu algum erro no servidor, por favor tente novamente.",
4
+ "Login-Errors-Invalid": "O usuário ou senha informados são inválidos",
5
+ "Login-Password-Required": "Por favor informe a senha",
6
+ "Login-Password": "Digite a sua senha",
7
+ "Login-RememberMe": "Lembrar de mim",
8
+ "Login-SelectLanguage": "Selecionar idioma",
9
+ "Login-SignIn": "Entrar",
10
+ "Login-Username-Required": "Por favor informe o usuário",
11
+ "Login-Username": "Digite o seu usuário",
12
+
13
+ "": ""
14
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "OperationsHistory-Modal-Title": "Object changes details",
3
+
4
+ "": ""
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "OperationsHistory-Modal-Title": "Detalhes de alteração do objeto",
3
+
4
+ "": ""
5
+ }
package/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export * from './lib/auth';
2
2
  export * from './lib/components';
3
3
  export { OperationsHistoryChildListComponent, OperationsHistoryModalComponent } from './lib/features/operations-history';
4
4
  export { ServicesHistoryChildListComponent, ServicesHistoryViewComponent } from './lib/features/services-history';
5
+ export * from './lib/i18n';
5
6
  export * from './lib/layouts';
6
7
  export * from './lib/models';
7
8
  export * from './lib/pipes';
@@ -0,0 +1 @@
1
+ export * from './shared-i18n';
@@ -0,0 +1,18 @@
1
+ import { HttpBackend } from '@angular/common/http';
2
+ import { EnvironmentProviders, Provider } from '@angular/core';
3
+ import { MultiTranslateHttpLoader, TranslationResource } from 'ngx-translate-multi-http-loader';
4
+ export interface AngularAssetPattern {
5
+ glob: string;
6
+ input: string;
7
+ output: string;
8
+ }
9
+ export declare const ZAMBON_SHARED_I18N_ASSET_PATH = "assets/i18n/zambon-dev/shared";
10
+ export declare const ZAMBON_SHARED_I18N_ASSET: AngularAssetPattern;
11
+ export declare const ZAMBON_SHARED_I18N_RESOURCES: TranslationResource[];
12
+ export interface ZambonSharedTranslateConfig {
13
+ defaultLanguage?: string;
14
+ appResources?: (string | TranslationResource)[];
15
+ }
16
+ export declare function createZambonSharedTranslateLoader(httpBackend: HttpBackend, appResources?: (string | TranslationResource)[]): MultiTranslateHttpLoader;
17
+ export declare function provideZambonSharedTranslateLoader(appResources?: (string | TranslationResource)[]): Provider;
18
+ export declare function provideZambonSharedTranslateService(config?: ZambonSharedTranslateConfig): EnvironmentProviders;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zambon-dev/shared",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Shared Angular services, utilities, and styles for Zambon applications.",
5
5
  "keywords": [
6
6
  "angular",
@@ -29,7 +29,8 @@
29
29
  "@auth0/angular-jwt": "^5.2.0",
30
30
  "@zambon-dev/framework": "^1.0.0",
31
31
  "@zambon-dev/library": "^1.0.0",
32
- "@ngx-translate/core": "^16.0.4"
32
+ "@ngx-translate/core": "^16.0.4",
33
+ "ngx-translate-multi-http-loader": "^19.0.2"
33
34
  },
34
35
  "publishConfig": {
35
36
  "access": "public"
@@ -38,9 +39,35 @@
38
39
  "**/*.scss"
39
40
  ],
40
41
  "style": "styles/common.scss",
41
- "module": "fesm2022/zambon-dev-shared.mjs",
42
- "typings": "index.d.ts",
43
42
  "exports": {
43
+ "./styles": {
44
+ "sass": "./styles/common.scss",
45
+ "style": "./styles/common.scss",
46
+ "default": "./styles/common.scss"
47
+ },
48
+ "./styles/common": {
49
+ "sass": "./styles/common.scss",
50
+ "style": "./styles/common.scss",
51
+ "default": "./styles/common.scss"
52
+ },
53
+ "./styles/common.scss": {
54
+ "sass": "./styles/common.scss",
55
+ "style": "./styles/common.scss",
56
+ "default": "./styles/common.scss"
57
+ },
58
+ "./styles/variables": {
59
+ "sass": "./styles/variables.scss",
60
+ "style": "./styles/variables.scss",
61
+ "default": "./styles/variables.scss"
62
+ },
63
+ "./styles/variables.scss": {
64
+ "sass": "./styles/variables.scss",
65
+ "style": "./styles/variables.scss",
66
+ "default": "./styles/variables.scss"
67
+ },
68
+ "./i18n/*": {
69
+ "default": "./i18n/*"
70
+ },
44
71
  "./package.json": {
45
72
  "default": "./package.json"
46
73
  },
@@ -49,6 +76,8 @@
49
76
  "default": "./fesm2022/zambon-dev-shared.mjs"
50
77
  }
51
78
  },
79
+ "module": "fesm2022/zambon-dev-shared.mjs",
80
+ "typings": "index.d.ts",
52
81
  "dependencies": {
53
82
  "tslib": "^2.3.0"
54
83
  }
@@ -2,6 +2,7 @@
2
2
  @tailwind components;
3
3
  @tailwind utilities;
4
4
 
5
+ @import 'variables';
5
6
  @import 'components/button';
6
7
  @import 'components/card';
7
8
  @import 'components/dropdown-static';
@@ -0,0 +1,9 @@
1
+ :root {
2
+ --sidebar-animation-duration: 600ms;
3
+ --sidebar-collapsed-width: 70px;
4
+ --sidebar-expanded-width: 220px;
5
+ --sidebar-icon-collapsed-margin: 10px;
6
+ --sidebar-item-height: 2.75rem;
7
+ --sidebar-logo-height: 50px;
8
+ --sidebar-picture-size: 50px;
9
+ }