ngx-sp-auth 4.20.12 → 4.21.0

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.
@@ -1,28 +1,28 @@
1
1
  import * as i0 from '@angular/core';
2
- import { importProvidersFrom, NgModule, InjectionToken, Inject, Injectable, ViewContainerRef, ViewChild, Component, EventEmitter, Output, Input, TemplateRef, ContentChild } from '@angular/core';
2
+ import { importProvidersFrom, NgModule, InjectionToken, Inject, Injectable, Component, EventEmitter, Output, Input, TemplateRef, ContentChild, ViewChild, inject } from '@angular/core';
3
3
  import * as i1 from '@angular/common/http';
4
4
  import { HTTP_INTERCEPTORS, HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
5
5
  import * as i1$2 from '@azure/msal-angular';
6
6
  import { MsalInterceptor, MsalGuard, MsalModule, MSAL_GUARD_CONFIG } from '@azure/msal-angular';
7
7
  import { LogLevel, PublicClientApplication, InteractionType } from '@azure/msal-browser';
8
- import { BehaviorSubject, take, tap, firstValueFrom, Subject, Subscription, debounceTime, distinctUntilChanged, filter, switchMap, timer, map as map$1, of, lastValueFrom, from } from 'rxjs';
9
8
  import { take as take$1, tap as tap$1, map, switchMap as switchMap$1 } from 'rxjs/operators';
10
9
  import * as i1$1 from '@angular/router';
11
10
  import { RouterLink, NavigationEnd, RouterOutlet } from '@angular/router';
11
+ import { BehaviorSubject, take, tap, Subject, Subscription, debounceTime, distinctUntilChanged, filter, switchMap, timer, map as map$1, firstValueFrom, of, lastValueFrom, from } from 'rxjs';
12
12
  import * as i3 from 'ngx-sp-infra';
13
- import { Utils, SearchInputComponent, InfraModule, FormUtils, LibIconsComponent, ContentContainerComponent } from 'ngx-sp-infra';
13
+ import { Utils, SearchInputComponent, InfraModule, FormUtils, Usuario, RetPasswordPolicy, RetCheckPassword, CheckPasswordRecord, PasswordPolicyComponent, LibIconsComponent, ContentContainerComponent } from 'ngx-sp-infra';
14
14
  import { openDB, deleteDB } from 'idb';
15
15
  import * as i17 from '@angular/common';
16
16
  import { NgIf, CommonModule, NgClass } from '@angular/common';
17
- import * as i3$1 from '@angular/forms';
18
- import { Validators, ReactiveFormsModule } from '@angular/forms';
17
+ import * as i7 from '@angular/forms';
18
+ import { Validators, ReactiveFormsModule, FormGroup, FormControl, FormsModule } from '@angular/forms';
19
19
  import * as i8 from '@angular/platform-browser';
20
20
  import * as i10 from 'ngx-toastr';
21
21
  import * as i11 from '@angular/cdk/layout';
22
22
  import { Breakpoints } from '@angular/cdk/layout';
23
23
  import * as i15 from 'ngx-bootstrap/popover';
24
24
  import { PopoverModule } from 'ngx-bootstrap/popover';
25
- import * as i7 from 'ngx-bootstrap/tooltip';
25
+ import * as i7$1 from 'ngx-bootstrap/tooltip';
26
26
  import { TooltipModule } from 'ngx-bootstrap/tooltip';
27
27
  import * as i6 from 'ngx-pagination';
28
28
  import { NgxPaginationModule } from 'ngx-pagination';
@@ -54,9 +54,9 @@ const msalConfig = {
54
54
  };
55
55
 
56
56
  class AuthModule {
57
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
58
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: AuthModule }); }
59
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthModule, providers: [
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
58
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.25", ngImport: i0, type: AuthModule }); }
59
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthModule, providers: [
60
60
  importProvidersFrom(MsalModule.forRoot(new PublicClientApplication(msalConfig), {
61
61
  // The routing guard configuration.
62
62
  interactionType: InteractionType.Redirect,
@@ -79,7 +79,7 @@ class AuthModule {
79
79
  MsalGuard, // MsalGuard added as provider here
80
80
  ] }); }
81
81
  }
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthModule, decorators: [{
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthModule, decorators: [{
83
83
  type: NgModule,
84
84
  args: [{
85
85
  providers: [
@@ -157,10 +157,10 @@ class LibCustomStorageService {
157
157
  storageInitializeAutoStorage() {
158
158
  this._customStorageService.storageInitializeAutoStorage();
159
159
  }
160
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibCustomStorageService, deps: [{ token: LIB_CUSTOM_STORAGE_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable }); }
161
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibCustomStorageService, providedIn: 'root' }); }
160
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibCustomStorageService, deps: [{ token: LIB_CUSTOM_STORAGE_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable }); }
161
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibCustomStorageService, providedIn: 'root' }); }
162
162
  }
163
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibCustomStorageService, decorators: [{
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibCustomStorageService, decorators: [{
164
164
  type: Injectable,
165
165
  args: [{ providedIn: 'root' }]
166
166
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -219,10 +219,10 @@ class LibCustomEnvironmentService {
219
219
  return this._customEnvironmentService.SpInfra2ErpWS;
220
220
  }
221
221
  ;
222
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibCustomEnvironmentService, deps: [{ token: LIB_CUSTOM_ENVIRONMENT_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable }); }
223
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibCustomEnvironmentService, providedIn: 'root' }); }
222
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibCustomEnvironmentService, deps: [{ token: LIB_CUSTOM_ENVIRONMENT_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable }); }
223
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibCustomEnvironmentService, providedIn: 'root' }); }
224
224
  }
225
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibCustomEnvironmentService, decorators: [{
225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibCustomEnvironmentService, decorators: [{
226
226
  type: Injectable,
227
227
  args: [{ providedIn: 'root' }]
228
228
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -502,10 +502,10 @@ class IndexedDBService {
502
502
  return this._restored?.payload;
503
503
  }
504
504
  }
505
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: IndexedDBService, deps: [{ token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
506
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: IndexedDBService, providedIn: 'root' }); }
505
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: IndexedDBService, deps: [{ token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
506
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: IndexedDBService, providedIn: 'root' }); }
507
507
  }
508
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: IndexedDBService, decorators: [{
508
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: IndexedDBService, decorators: [{
509
509
  type: Injectable,
510
510
  args: [{
511
511
  providedIn: 'root'
@@ -881,14 +881,15 @@ class AuthStorageService {
881
881
  };
882
882
  const url = `${this._BASE_URL}/GetNewToken`;
883
883
  const headers = new HttpHeaders()
884
- .set('Content-Type', 'application/json');
885
- // Remover/comentar o header abaixo pois o token será enviado via Cookie HttpOnly, e não mais via header Authorization
886
- // .set('Authorization',
887
- // `Basic ${btoa(`${localStorage.getItem('configServerUser')}:${localStorage.getItem('configServerPassword')}`)}`
888
- // );
889
- return this._httpClient.post(url, token, { 'headers': headers, withCredentials: true })
890
- .pipe(take(1), tap((response) => { if (response.Error)
891
- throw Error(response.ErrorMessage); }));
884
+ .set('Content-Type', 'application/json')
885
+ .set('Authorization', `Basic ${btoa(`${localStorage.getItem('configServerUser')}:${localStorage.getItem('configServerPassword')}`)}`);
886
+ return this._httpClient
887
+ .post(url, token, { 'headers': headers })
888
+ .pipe(take(1), tap((response) => {
889
+ if (response.Error) {
890
+ throw Error(response.ErrorMessage);
891
+ }
892
+ }));
892
893
  }
893
894
  getNewToken() {
894
895
  return new Promise((resolve, reject) => {
@@ -941,10 +942,10 @@ class AuthStorageService {
941
942
  return false;
942
943
  }
943
944
  }
944
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthStorageService, deps: [{ token: i1.HttpBackend }, { token: LibCustomStorageService }, { token: IndexedDBService }, { token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
945
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthStorageService, providedIn: 'root' }); }
945
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthStorageService, deps: [{ token: i1.HttpBackend }, { token: LibCustomStorageService }, { token: IndexedDBService }, { token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
946
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthStorageService, providedIn: 'root' }); }
946
947
  }
947
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthStorageService, decorators: [{
948
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthStorageService, decorators: [{
948
949
  type: Injectable,
949
950
  args: [{ providedIn: 'root' }]
950
951
  }], ctorParameters: () => [{ type: i1.HttpBackend }, { type: LibCustomStorageService }, { type: IndexedDBService }, { type: LibCustomEnvironmentService }] });
@@ -1006,10 +1007,10 @@ class LibCustomLoginService {
1006
1007
  authNavigateToPage(router) {
1007
1008
  this._customLoginService.authNavigateToPage(router);
1008
1009
  }
1009
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibCustomLoginService, deps: [{ token: LIB_CUSTOM_LOGIN_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable }); }
1010
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibCustomLoginService, providedIn: 'root' }); }
1010
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibCustomLoginService, deps: [{ token: LIB_CUSTOM_LOGIN_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable }); }
1011
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibCustomLoginService, providedIn: 'root' }); }
1011
1012
  }
1012
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibCustomLoginService, decorators: [{
1013
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibCustomLoginService, decorators: [{
1013
1014
  type: Injectable,
1014
1015
  args: [{ providedIn: 'root' }]
1015
1016
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -1096,10 +1097,10 @@ class AuthUtilService {
1096
1097
  getHostName() {
1097
1098
  return this._customEnvironmentService.hostName;
1098
1099
  }
1099
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthUtilService, deps: [{ token: i1$1.Router }, { token: AuthStorageService }, { token: i3.CheckUrlAndMethodService }, { token: i3.MessageService }, { token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1100
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthUtilService, providedIn: 'root' }); }
1100
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthUtilService, deps: [{ token: i1$1.Router }, { token: AuthStorageService }, { token: i3.CheckUrlAndMethodService }, { token: i3.MessageService }, { token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1101
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthUtilService, providedIn: 'root' }); }
1101
1102
  }
1102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthUtilService, decorators: [{
1103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthUtilService, decorators: [{
1103
1104
  type: Injectable,
1104
1105
  args: [{
1105
1106
  providedIn: 'root'
@@ -1121,23 +1122,20 @@ class AuthService {
1121
1122
  // #region ==========> PROPERTIES <==========
1122
1123
  // #region PRIVATE
1123
1124
  this._pendingWarning = null;
1124
- this._AUTH_BASE_URL = ''; // SpInfra2AuthWS
1125
1125
  this._BASE_URL = ''; // SpInfra2WS
1126
+ this._AUTH_BASE_URL = ''; // SpInfra2AuthWS
1126
1127
  this._BASE_OS_URL = ''; // SpInfra2LoginWS
1127
- this._LOGOUT_BASE_URL = ''; // SpInfra2LoginWS
1128
1128
  this._HTTP_HEADERS = new HttpHeaders().set('Content-Type', 'application/json');
1129
1129
  this.ip = "undefined";
1130
1130
  this.city = "undefined";
1131
1131
  this.state = "undefined";
1132
1132
  this.country = "undefined";
1133
+ this._BASE_URL = `${this._customEnvironmentService.SpInfra2LoginWS}/LoginSisproERP`; // SpInfra2WS
1133
1134
  this._AUTH_BASE_URL = `${this._customEnvironmentService.SpInfra2AuthWS}/Auth`; // SpInfra2AuthWS
1134
- this._BASE_URL = `${this._customEnvironmentService.SpInfra2LoginWS}/LoginSisproERP`; // SpInfra2LoginWS
1135
1135
  this._BASE_OS_URL = `${this._customEnvironmentService.SpInfra2LoginWS}/LoginIntegradoOS`; // SpInfra2LoginWS
1136
- this._LOGOUT_BASE_URL = `${this._customEnvironmentService.SpInfra2LoginWS}/LogoutSisproErp`; // SpInfra2LoginWS
1137
- this._AUTH_BASE_URL = !this._customEnvironmentService.production ? this._AUTH_BASE_URL : `${this._customEnvironmentService.SpInfra2AuthWS}/Auth`;
1138
1136
  this._BASE_URL = !this._customEnvironmentService.production ? this._BASE_URL : `${this._customEnvironmentService.SpInfra2LoginWS}/LoginSisproERP`;
1137
+ this._AUTH_BASE_URL = !this._customEnvironmentService.production ? this._AUTH_BASE_URL : `${this._customEnvironmentService.SpInfra2AuthWS}/Auth`;
1139
1138
  this._BASE_OS_URL = !this._customEnvironmentService.production ? this._BASE_OS_URL : `${this._customEnvironmentService.SpInfra2LoginWS}/LoginIntegradoOS`;
1140
- this._LOGOUT_BASE_URL = !this._customEnvironmentService.production ? this._LOGOUT_BASE_URL : `${this._customEnvironmentService.SpInfra2LoginWS}/LogoutSisproErp`;
1141
1139
  this.getParms();
1142
1140
  }
1143
1141
  // #region ==========> SERVICE METHODS <==========
@@ -1195,10 +1193,8 @@ class AuthService {
1195
1193
  if (response.Error) {
1196
1194
  throw Error(response.ErrorMessage);
1197
1195
  }
1198
- // Comentadas pois não serão mais armazenadas desta forma, o webservice gerará um Cookie com o valor já formatado para Base64
1199
- // E o mesmo será enviada nas requisições subsequentes via párâmetro `withCredentials: true`, e não mais via header Authorization
1200
- // localStorage.setItem('configServerUser', response.User);
1201
- // localStorage.setItem('configServerPassword', response.Password);
1196
+ localStorage.setItem('configServerUser', response.User);
1197
+ localStorage.setItem('configServerPassword', response.Password);
1202
1198
  this._authStorageService.tenantId = response.TenantId;
1203
1199
  this._authStorageService.dominio = response.Domain;
1204
1200
  this._authStorageService.infraInAuthTypeId = response.InfraInAuthTypeId;
@@ -1442,22 +1438,14 @@ class AuthService {
1442
1438
  }
1443
1439
  }));
1444
1440
  }
1445
- /**
1446
- * Realiza o logout do sistema, consumindo o endpoint de logout para remover os cookies e limpando as informações de autenticação armazenadas no localStorage.
1447
- * @returns Promise<boolean> indicando navegação para a tela de login após o logout.
1448
- */
1441
+ /** Realiza o logout do sistema, removendo tokens do localStorage e limpando cache */
1449
1442
  logout() {
1450
- // Consumo de endpoint de logout
1451
- const url = `${this._LOGOUT_BASE_URL}`;
1452
- firstValueFrom(this._httpClient.post(url, null, { 'headers': this._HTTP_HEADERS })).then(res => {
1453
- console.log(res);
1454
- this._authStorageService.logout();
1455
- localStorage.removeItem('configServerUser');
1456
- localStorage.removeItem('configServerPassword');
1457
- // Método com customizações para inicializações do Logout
1458
- this._customLoginService.authLogout();
1459
- });
1460
- return this._router.navigate(["/auth/login"]);
1443
+ this._authStorageService.logout();
1444
+ localStorage.removeItem('configsServerUser');
1445
+ localStorage.removeItem('configsServerPassword');
1446
+ // Método com customizações para inicializações do Logout
1447
+ this._customLoginService.authLogout();
1448
+ this._router.navigate(["/auth/login"]);
1461
1449
  }
1462
1450
  validateAuthentication2Fa(code) {
1463
1451
  let Code2Fa = {
@@ -1587,10 +1575,10 @@ class AuthService {
1587
1575
  this._pendingWarning = null;
1588
1576
  return message;
1589
1577
  }
1590
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthService, deps: [{ token: i1.HttpClient }, { token: i1$1.Router }, { token: AuthStorageService }, { token: i3.IpServiceService }, { token: LibCustomLoginService }, { token: AuthUtilService }, { token: LibCustomEnvironmentService }, { token: IndexedDBService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1591
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthService, providedIn: 'root' }); }
1578
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthService, deps: [{ token: i1.HttpClient }, { token: i1$1.Router }, { token: AuthStorageService }, { token: i3.IpServiceService }, { token: LibCustomLoginService }, { token: AuthUtilService }, { token: LibCustomEnvironmentService }, { token: IndexedDBService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1579
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthService, providedIn: 'root' }); }
1592
1580
  }
1593
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthService, decorators: [{
1581
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthService, decorators: [{
1594
1582
  type: Injectable,
1595
1583
  args: [{ providedIn: 'root' }]
1596
1584
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i1$1.Router }, { type: AuthStorageService }, { type: i3.IpServiceService }, { type: LibCustomLoginService }, { type: AuthUtilService }, { type: LibCustomEnvironmentService }, { type: IndexedDBService }] });
@@ -1847,10 +1835,10 @@ class MenuServicesService {
1847
1835
  }
1848
1836
  newUserImageEvent(value) { this._subject.next(value); }
1849
1837
  getNewUserImageEvent() { return this._subject.asObservable(); }
1850
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MenuServicesService, deps: [{ token: AuthStorageService }, { token: i1.HttpClient }, { token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1851
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MenuServicesService, providedIn: 'root' }); }
1838
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MenuServicesService, deps: [{ token: AuthStorageService }, { token: i1.HttpClient }, { token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1839
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MenuServicesService, providedIn: 'root' }); }
1852
1840
  }
1853
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MenuServicesService, decorators: [{
1841
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MenuServicesService, decorators: [{
1854
1842
  type: Injectable,
1855
1843
  args: [{
1856
1844
  providedIn: 'root'
@@ -1879,10 +1867,10 @@ class LibMenuConfigService {
1879
1867
  updateRouteSelection(currentRoute, currentList) {
1880
1868
  return this._menuConfig.updateRouteSelection(currentRoute, currentList);
1881
1869
  }
1882
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibMenuConfigService, deps: [{ token: LIB_MENU_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
1883
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibMenuConfigService, providedIn: 'root' }); }
1870
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibMenuConfigService, deps: [{ token: LIB_MENU_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
1871
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibMenuConfigService, providedIn: 'root' }); }
1884
1872
  }
1885
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibMenuConfigService, decorators: [{
1873
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibMenuConfigService, decorators: [{
1886
1874
  type: Injectable,
1887
1875
  args: [{ providedIn: 'root' }]
1888
1876
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -1947,10 +1935,10 @@ class LibCustomMenuService {
1947
1935
  menuEmitEstabelecimentoEvent() {
1948
1936
  this._customMenuService.menuEmitEstabelecimentoEvent();
1949
1937
  }
1950
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibCustomMenuService, deps: [{ token: LIB_CUSTOM_MENU_SERVICE }, { token: LibMenuConfigService }, { token: AuthStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1951
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibCustomMenuService, providedIn: 'root' }); }
1938
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibCustomMenuService, deps: [{ token: LIB_CUSTOM_MENU_SERVICE }, { token: LibMenuConfigService }, { token: AuthStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1939
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibCustomMenuService, providedIn: 'root' }); }
1952
1940
  }
1953
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibCustomMenuService, decorators: [{
1941
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibCustomMenuService, decorators: [{
1954
1942
  type: Injectable,
1955
1943
  args: [{ providedIn: 'root' }]
1956
1944
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -1984,12 +1972,16 @@ class PesquisaTelasGlobalService {
1984
1972
  // #region PUBLIC
1985
1973
  // #endregion PUBLIC
1986
1974
  // #endregion ==========> PROPERTIES <==========
1987
- constructor(_appRef, _injector, _httpClient, _customEnvironmentService, _authUtils) {
1975
+ constructor(_componentFactoryResolver, _appRef, _injector, _httpClient, _customEnvironmentService, _authUtils) {
1976
+ this._componentFactoryResolver = _componentFactoryResolver;
1988
1977
  this._appRef = _appRef;
1989
1978
  this._injector = _injector;
1990
1979
  this._httpClient = _httpClient;
1991
1980
  this._customEnvironmentService = _customEnvironmentService;
1992
1981
  this._authUtils = _authUtils;
1982
+ // #region ==========> PROPERTIES <==========
1983
+ // #region PRIVATE
1984
+ // #region GERENCIAMENTO DINÂMICO DO COMPONENTE
1993
1985
  /**
1994
1986
  * Referência ao componente dinâmico criado.
1995
1987
  * Usado para gerenciar o ciclo de vida e estado do componente.
@@ -2111,7 +2103,7 @@ class PesquisaTelasGlobalService {
2111
2103
  *
2112
2104
  * Este método utiliza a API baixo nível do Angular para criar um componente dinamicamente e anexá-lo ao DOM. O processo envolve:
2113
2105
  *
2114
- * 1. Criar o componente via `container.createComponent()`
2106
+ * 1. Criar o componente via ComponentFactoryResolver
2115
2107
  * 2. Configurar suas propriedades iniciais
2116
2108
  * 3. Registrá-lo no mecanismo de detecção de mudanças do Angular
2117
2109
  * 4. Anexá-lo ao DOM (fora da hierarquia normal de componentes)
@@ -2127,18 +2119,24 @@ class PesquisaTelasGlobalService {
2127
2119
  if (this._componentRef) {
2128
2120
  return;
2129
2121
  }
2130
- // 1. Cria uma nova instância do componente
2131
- this._componentRef = this._container.createComponent(SearchInputComponent);
2132
- // 2. Registra a view do componente no ApplicationRef
2122
+ // 1. Resolve a fábrica do componente - primeiro passo para criar
2123
+ // um componente dinamicamente no Angular. A fábrica contém os metadados
2124
+ // necessários para instanciar o componente.
2125
+ const componentFactory = this._componentFactoryResolver.resolveComponentFactory(SearchInputComponent);
2126
+ // 2. Cria uma nova instância do componente usando o injector raiz
2127
+ // Isso garante que o componente tenha acesso aos mesmos serviços
2128
+ // que componentes criados normalmente via template
2129
+ this._componentRef = componentFactory.create(this._injector);
2130
+ // 3. Registra a view do componente no ApplicationRef
2133
2131
  // Isso é CRÍTICO: sem este passo, o componente não participaria
2134
2132
  // do ciclo de detecção de mudanças do Angular
2135
2133
  this._appRef.attachView(this._componentRef.hostView);
2136
- // 3. Obtém o elemento DOM raiz do componente e o anexa ao body
2134
+ // 4. Obtém o elemento DOM raiz do componente e o anexa ao body
2137
2135
  // Como este componente é criado fora da hierarquia normal,
2138
2136
  // precisamos anexá-lo manualmente ao DOM
2139
2137
  const domElem = this._componentRef.hostView.rootNodes[0];
2140
2138
  document.body.appendChild(domElem);
2141
- // 4. Configura os listeners dos eventos do componente
2139
+ // 5. Configura os listeners dos eventos do componente
2142
2140
  // Em vez de tratar o hide() diretamente aqui, encaminhamos o evento para o Subject _onClose$ e guardamos a subscription para poder removê-la quando escondermos o componente.
2143
2141
  this._componentCloseSub = this._componentRef.instance.onClose.subscribe(() => this._onClose$.next());
2144
2142
  // Em vez de tratar o getTelas() diretamente aqui, encaminhamos o evento para o Subject _onSearch$ e guardamos a subscription para poder removê-la quando escondermos o componente.
@@ -2182,16 +2180,13 @@ class PesquisaTelasGlobalService {
2182
2180
  // #endregion GERENCIAMENTO DO COMPONENTE
2183
2181
  showErrorMessage(response) { if (response.Error)
2184
2182
  throw Error(response.ErrorMessage); }
2185
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PesquisaTelasGlobalService, deps: [{ token: i0.ApplicationRef }, { token: i0.Injector }, { token: i1.HttpClient }, { token: LibCustomEnvironmentService }, { token: AuthUtilService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2186
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PesquisaTelasGlobalService, providedIn: 'root' }); }
2183
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: PesquisaTelasGlobalService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }, { token: i1.HttpClient }, { token: LibCustomEnvironmentService }, { token: AuthUtilService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2184
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: PesquisaTelasGlobalService, providedIn: 'root' }); }
2187
2185
  }
2188
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PesquisaTelasGlobalService, decorators: [{
2186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: PesquisaTelasGlobalService, decorators: [{
2189
2187
  type: Injectable,
2190
2188
  args: [{ providedIn: 'root' }]
2191
- }], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i0.Injector }, { type: i1.HttpClient }, { type: LibCustomEnvironmentService }, { type: AuthUtilService }], propDecorators: { _container: [{
2192
- type: ViewChild,
2193
- args: ['container', { read: ViewContainerRef, static: true }]
2194
- }] } });
2189
+ }], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }, { type: i1.HttpClient }, { type: LibCustomEnvironmentService }, { type: AuthUtilService }] });
2195
2190
 
2196
2191
  class ErrorMenuNotAllowed {
2197
2192
  constructor(router, authStorageService) {
@@ -2201,10 +2196,10 @@ class ErrorMenuNotAllowed {
2201
2196
  onHome() {
2202
2197
  this.router.navigate(["/home"]);
2203
2198
  }
2204
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ErrorMenuNotAllowed, deps: [{ token: i1$1.Router }, { token: AuthStorageService }], target: i0.ɵɵFactoryTarget.Component }); }
2205
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: ErrorMenuNotAllowed, isStandalone: true, selector: "app-menu-not-allowed", ngImport: i0, template: " <div class=\"content\">\n <div class=\"image mb-4\">\n <lib-icon iconName=\"cadeado\" [iconSize]=\"128\" />\n </div>\n <h1 class=\"tittle\">Voc\u00EA n\u00E3o possui permiss\u00E3o para acessar esta tela!</h1>\n <button *ngIf=\"!this.authStorageService.isExternalLogin\" class=\"btn button mt-3\" (click)=\"onHome()\">\n Voltar para a tela inicial\n </button>\n </div>\n", styles: [".content{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100vw;height:100vh}.image{text-align:center;display:block}.tittle{font-family:Open Sans;font-style:normal;font-weight:700;font-size:48px;line-height:65px;text-align:center;color:#212529}.sub-tittle{font-family:Open Sans;font-style:normal;font-weight:400;font-size:16px;line-height:22px;width:600px;text-align:center;color:#212529}.button{background:#0d6efd;border-radius:4px;font-family:Open Sans;font-style:normal;font-weight:400;font-size:16px;line-height:22px;color:#fff}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: InfraModule }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }], preserveWhitespaces: true }); }
2199
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ErrorMenuNotAllowed, deps: [{ token: i1$1.Router }, { token: AuthStorageService }], target: i0.ɵɵFactoryTarget.Component }); }
2200
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: ErrorMenuNotAllowed, isStandalone: true, selector: "app-menu-not-allowed", ngImport: i0, template: " <div class=\"content\">\n <div class=\"image mb-4\">\n <lib-icon iconName=\"cadeado\" [iconSize]=\"128\" />\n </div>\n <h1 class=\"tittle\">Voc\u00EA n\u00E3o possui permiss\u00E3o para acessar esta tela!</h1>\n <button *ngIf=\"!this.authStorageService.isExternalLogin\" class=\"btn button mt-3\" (click)=\"onHome()\">\n Voltar para a tela inicial\n </button>\n </div>\n", styles: [".content{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100vw;height:100vh}.image{text-align:center;display:block}.tittle{font-family:Open Sans;font-style:normal;font-weight:700;font-size:48px;line-height:65px;text-align:center;color:#212529}.sub-tittle{font-family:Open Sans;font-style:normal;font-weight:400;font-size:16px;line-height:22px;width:600px;text-align:center;color:#212529}.button{background:#0d6efd;border-radius:4px;font-family:Open Sans;font-style:normal;font-weight:400;font-size:16px;line-height:22px;color:#fff}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: InfraModule }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }], preserveWhitespaces: true }); }
2206
2201
  }
2207
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ErrorMenuNotAllowed, decorators: [{
2202
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ErrorMenuNotAllowed, decorators: [{
2208
2203
  type: Component,
2209
2204
  args: [{ selector: 'app-menu-not-allowed', preserveWhitespaces: true, imports: [
2210
2205
  NgIf,
@@ -2340,8 +2335,8 @@ class LoginOSComponent {
2340
2335
  ngOnDestroy() {
2341
2336
  this._timerSubscription?.unsubscribe();
2342
2337
  }
2343
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LoginOSComponent, deps: [{ token: AuthService }, { token: AuthUtilService }, { token: i1$1.ActivatedRoute }, { token: i1$1.Router }, { token: AuthStorageService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
2344
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: LoginOSComponent, isStandalone: true, selector: "login-os", ngImport: i0, template: `
2338
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoginOSComponent, deps: [{ token: AuthService }, { token: AuthUtilService }, { token: i1$1.ActivatedRoute }, { token: i1$1.Router }, { token: AuthStorageService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
2339
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: LoginOSComponent, isStandalone: true, selector: "login-os", ngImport: i0, template: `
2345
2340
  <div class="d-flex flex-column justify-content-center align-items-center h-100 w-100 bg-light" >
2346
2341
 
2347
2342
  @switch (loginStatus) {
@@ -2393,7 +2388,7 @@ class LoginOSComponent {
2393
2388
  </div>
2394
2389
  `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: InfraModule }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }] }); }
2395
2390
  }
2396
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LoginOSComponent, decorators: [{
2391
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoginOSComponent, decorators: [{
2397
2392
  type: Component,
2398
2393
  args: [{ selector: 'login-os', standalone: true, imports: [
2399
2394
  InfraModule
@@ -2938,10 +2933,10 @@ class LoginComponent {
2938
2933
  this._messageService.showAlertWarning(warningMessage);
2939
2934
  }
2940
2935
  }
2941
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LoginComponent, deps: [{ token: MSAL_GUARD_CONFIG }, { token: i1$2.MsalService }, { token: LibCustomLoginService }, { token: i3$1.FormBuilder }, { token: AuthUtilService }, { token: AuthService }, { token: LibCustomEnvironmentService }, { token: AuthStorageService }, { token: i8.Title }, { token: i1$1.Router }, { token: i10.ToastrService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
2942
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: LoginComponent, isStandalone: true, selector: "app-login", ngImport: i0, template: "<div id=\"login\" class=\"container-fluid\">\n\t<div class=\"row\">\n\t\t<!-- Conte\u00FAdo da DIV do background -->\n\t\t<div class=\"col-md-6 px-0\">\n\t\t\t<div class=\"background\" style=\"background-image: linear-gradient(to bottom, rgba(10, 44, 81, 0.9), rgba(10, 44, 81, 0.9)), url({{_customLoginService.loginBackground}})\">\n\t\t\t\t<div class=\"text-position texto-apresentacao ps-5\">\n\t\t\t\t\t<h1 class=\"title\" id=\"title\"></h1>\n\t\t\t\t\t<p class=\"subtitle\" id=\"subtitle\"></p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<!-- Conte\u00FAdo da DIV de Login -->\n\t\t<div class=\"col-md-6 px-0\">\n\n\t\t\t<div class=\"div-size\">\n\t\t\t\t<div class=\"logotipo\">\n\t\t\t\t\t<img style=\"height: 95px;\" src=\"{{ this._customLoginService.loginLogotipo }}\" alt=\"{{ this._customLoginService.loginAltLogotipo }}\" />\n\t\t\t\t</div>\n\n\t\t\t\t@if (situacaoLogin !== 2) {\n\t\t\t\t\t@if (!showParmsAuthentication2Fa) {\n\t\t\t\t\t\t@switch (loginProgress) {\n\t\t\t\t\t\t\t@case(1) {\n\t\t\t\t\t\t\t\t<form [formGroup]=\"formDomain\" class=\"form-position\">\n\t\t\t\t\t\t\t\t\t<div class=\"col mb-3\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"predio\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" placeholder=\"Dom\u00EDnio\" formControlName=\"dominio\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formDomain.get('dominio'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formDomain.get('dominio')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingDomain\" loadingText=\"Acessando...\" class=\"btn btn-primary\" [disabled]=\"isLoadingDomain\" (click)=\"getAuthentication()\">\n\t\t\t\t\t\t\t\t\t\tACESSAR <lib-icon iconName=\"login\" />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t@case(2) {\n\t\t\t\t\t\t\t\t<form [formGroup]=\"formLogin\" class=\"form-position\">\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"usuario-quadro\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control px-3\" formControlName=\"usuario\" placeholder=\"Usu\u00E1rio\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formLogin.get('usuario'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formLogin.get('usuario')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-lock-text\"><lib-icon iconName=\"chave\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"password\" class=\"form-control px-3\" formControlName=\"senha\" placeholder=\"Senha\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formLogin.get('senha'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formLogin.get('senha')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t\t\t\t<button (click)=\"returnDomain()\" type=\"button\" class=\"btn btn-outline-secondary w-100\">\n\t\t\t\t\t\t\t\t\t\t\t\tVoltar\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingLogin\" loadingText=\"Acessando...\" class=\"btn btn-primary btn-heigth-48 w-100\" [disabled]=\"isLoadingLogin\" (click)=\"logOn()\">\n\t\t\t\t\t\t\t\t\t\t\t\tACESSAR <lib-icon iconName=\"login\" />\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"mt-3 text-center\">\n\t\t\t\t\t\t\t\t\t\t<a type=\"button\" (click)=\"situacaoLogin = 2\" class=\"fw-bold text-decoration-none text-secondary\"\n\t\t\t\t\t\t\t\t\t\t\ttooltip=\"N\u00E3o se preocupe, clique aqui e informe o dom\u00EDnio e o usu\u00E1rio desejados que enviaremos um e-mail com maiores informa\u00E7\u00F5es.\">\n\t\t\t\t\t\t\t\t\t\t\tEsqueceu sua senha? </a>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t@case(3) {\n\t\t\t\t\t\t\t\t<form [formGroup]=\"formAzure\" class=\"form-position formAzure\">\n\t\t\t\t\t\t\t\t\t<div class=\"w-100 mb-3\">\n\t\t\t\t\t\t\t\t\t\t<button type=\"button\" loadingText=\"Acessando...\" class=\"btn btn-primary p-2 mb-3 w-100 d-flex align-items-center justify-content-center gap-2\" (click)=\"logOnAzure()\">\n\t\t\t\t\t\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" heigth=\"14\" width=\"14\" viewBox=\"0 0 23 23\"><path fill=\"transparent\" d=\"M0 0h23v23H0z\"/><path fill=\"#f35325\" d=\"M1 1h10v10H1z\"/><path fill=\"#81bc06\" d=\"M12 1h10v10H12z\"/><path fill=\"#05a6f0\" d=\"M1 12h10v10H1z\"/><path fill=\"#ffba08\" d=\"M12 12h10v10H12z\"/></svg>\n\t\t\t\t\t\t\t\t\t\t\tMicrosoft\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t<div class=\"w-100 text-center text-secondary\">\n\t\t\t\t\t\t\t\t\t\t\t<span id=\"ou-text\"> ou </span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"usuario-quadro\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control px-3\" formControlName=\"usuario\" placeholder=\"Usu\u00E1rio\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formAzure.get('usuario'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formAzure.get('usuario')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-lock-text\"><lib-icon iconName=\"chave\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"password\" class=\"form-control px-3\" formControlName=\"senha\" placeholder=\"Senha\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formAzure.get('senha'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formAzure.get('senha')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t\t\t\t<button (click)=\"returnDomain()\" type=\"button\" class=\"btn btn-outline-secondary w-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t<lib-icon iconName=\"seta-esquerda\" /> VOLTAR\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingAzure\" loadingText=\"Acessando...\" class=\"btn btn-primary btn-heigth-48 w-100\" [disabled]=\"isLoadingAzure\" (click)=\"logOnAdmin()\">\n\t\t\t\t\t\t\t\t\t\t\t\tACESSAR <lib-icon iconName=\"login\" />\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t@else {\n\t\t\t\t\t\t<form [formGroup]=\"formAuthentication2Fa\" class=\"form-position\">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><img src=\"assets/icons/lock.svg\" alt=\"lock-icon\" /></span>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" formControlName=\"code\" id=\"code\" placeholder=\"C\u00F3digo de 2 fatores\"\n\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formAuthentication2Fa.get('code'))\">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formAuthentication2Fa.get('code')\" />\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"d-flex flex-row align-items-center gap-3 mb-3\">\n\t\t\t\t\t\t\t\t<button (click)=\"voltar()\" type=\"button\" class=\"btn btn-outline-secondary col\"> <lib-icon iconName=\"seta-esquerda\" /> VOLTAR </button>\n\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingSendAuthentication2Fa\" [disabled]=\"isLoadingSendAuthentication2Fa\" (click)=\"sendCode()\" type=\"button\" class=\"btn btn-primary col\">\n\t\t\t\t\t\t\t\t\tACESSAR <lib-icon iconName=\"login\" />\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"d-flex flex-row align-items-center justify-content-center\">\n\t\t\t\t\t\t\t\t@if (secondsLeft === 0) {\n\t\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingForgottenPassword\" loadingText=\"Enviando...\" [disabled]=\"isLoadingForgottenPassword\" (click)=\"getNewCode()\" type=\"button\" class=\"btn btn-outline-primary col\">\n\t\t\t\t\t\t\t\t\t\tEnviar novo c\u00F3digo <lib-icon iconName=\"aviao-papel\" />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t@else {\n\t\t\t\t\t\t\t\t\t<span class=\"fw-bold text-secondary\">{{ secondsLeft }} {{ secondsLeft == 1 ? 'segundo' : 'segundos' }} para obter novo c\u00F3digo</span>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</form>\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@else {\n\t\t\t\t\t<form [formGroup]=\"formFgtPsw\" class=\"form-position\">\n\t\t\t\t\t\t<div class=\"row mb-3\">\n\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t<div class=\"input-group input-group\">\n\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"predio\" /></span>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" id=\"dominioFgtPssInput\" placeholder=\"Dom\u00EDnio\" formControlName=\"dominioFgtPsw\"\n\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formFgtPsw.get('dominioFgtPsw'))\">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formFgtPsw.get('dominioFgtPsw')\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"row mb-3\">\n\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t<div class=\"input-group input-group\">\n\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"usuario-quadro\" /></span>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" id=\"usuarioFgtPssInput\" placeholder=\"Usu\u00E1rio\" formControlName=\"usuarioFgtPsw\"\n\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formFgtPsw.get('usuarioFgtPsw'))\">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formFgtPsw.get('usuarioFgtPsw')\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\n\t\t\t\t\t\t@if(formFgtPsw.get('usuarioFgtPsw')?.value === 'admin' || formFgtPsw.get('usuarioFgtPsw')?.value === 'CRMadmin'){\n <p class=\"texto-admin\">N\u00E3o \u00E9 poss\u00EDvel alterar a senha do usu\u00E1rio 'admin'</p>\n }@else{\n <button [libLoading]=\"isLoadingForgottenPassword\" loadingText=\"Enviando...\" class=\"btn btn-primary btn-heigth-48\" [disabled]=\"isLoadingForgottenPassword\" (click)=\"sendForgottenPassword()\">\n Enviar e-mail <lib-icon iconName=\"aviao-papel\" />\n </button>\n }\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"mt-3 text-center\">\n\t\t\t\t\t\t\t<a type=\"button\" (click)=\"situacaoLogin = 0\" class=\"fw-bold text-decoration-none text-secondary\" tooltip=\"Retornar para o login.\"> <lib-icon iconName=\"seta-esquerda\" /> Voltar para o login </a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</form>\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t<div class=\"footer-position\">\n\t\t\t\t\t<footer>\n\t\t\t\t\t\t<div class=\"d-flex flex-row align-items-center justify-content-center gap-2\">\n\t\t\t\t\t\t\t<a href=\"https://dpo.privacytools.com.br/policy-view/JmGeNlJdw/1/poli%CC%81tica-de-privacidade/pt_BR?s=1685731510066\" target=\"_blank\" class=\"text-primary text-decoration-none fw-bold\"> POL\u00CDTICA DE PRIVACIDADE </a>\n\t\t\t\t\t\t\t<span> | </span>\n\t\t\t\t\t\t\t<a href=\"https://dpo.privacytools.com.br/policy-view/Rork35NN2/2/poli%CC%81tica-de-cookies/pt_BR?s=1685731551976\" target=\"_blank\" class=\"text-primary text-decoration-none fw-bold\"> POL\u00CDTICA DE COOKIES </a>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<p class=\"text-secondary\">\n\t\t\t\t\t\t\tDesenvolvido por <a href=\"https://www.sispro.com.br/\" target=\"_blank\" class=\"text-primary text-decoration-none fw-bold\"> SISPRO </a> \u00A9 {{ year }} Todos os direitos reservados\n\t\t\t\t\t\t</p>\n\n\t\t\t\t\t\t<div class=\"icons\">\n\t\t\t\t\t\t\t<a href=\"https://pt-br.facebook.com/SisproERP/\" target=\"_blank\"> <lib-icon class=\"text-primary\" iconName=\"facebook\" iconSize=\"medium-small\"/> </a>\n\t\t\t\t\t\t\t<a href=\"https://www.instagram.com/accounts/login/?next=/sispro_software/\" target=\"_blank\"> <lib-icon class=\"text-primary\" iconName=\"instagram\" iconSize=\"medium-small\"/> </a>\n\t\t\t\t\t\t\t<a href=\"https://br.linkedin.com/company/sispro\" target=\"_blank\"> <lib-icon class=\"text-primary\" iconName=\"linkedin\" iconSize=\"medium-small\"/> </a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</footer>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n", styles: ["@charset \"UTF-8\";#login .background{display:grid;height:100vh;align-content:center;background-size:cover;color:#f5f5f5;align-items:center;justify-content:center}#login .div-size{display:flex;flex-direction:column;justify-content:space-around;width:100%;height:100vh;align-items:center;background-color:#f5f5f5;box-shadow:0 0 15px #333}#login .title{font-size:3.5vw;text-transform:uppercase;font-weight:700}#login .subtitle{font-size:21px}#login .logotipo{display:flex;justify-content:center;margin-top:10%}#login .form-position{display:flex;flex-direction:column;align-content:center;width:378px}#login .form-item{margin-bottom:16px}#login .footer{display:flex;justify-content:center}#login .footer-position{font-size:14px;display:flex;justify-content:center;align-items:flex-end}#login .icons{display:flex;justify-content:center;align-items:center;margin-top:16px}#login .icons a{padding:4px}#login .icon-item{margin-left:24px;color:#007bff}#login .col-md-7,#login .col-md-5{padding:0}#login .btn-acessar{height:48px;outline-style:none}#login .texto-apresentacao{align-items:start}#login .separator{margin-left:5px}#login #ou-text{display:flex;flex-direction:row;align-items:center;justify-content:space-between}#login #ou-text:before{content:\"\";display:block;width:100%;height:1px;border-bottom:1px solid rgb(108,117,125);margin-right:12px}#login #ou-text:after{content:\"\";display:block;width:100%;height:1px;border-bottom:1px solid rgb(108,117,125);margin-left:12px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.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: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: InfraModule }, { kind: "component", type: i3.FieldErrorMessageComponent, selector: "app-field-error-message, lib-error-message", inputs: ["customMessage", "control", "label"] }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "directive", type: i3.LoadingBtnDirective, selector: "button[libLoading], a[libLoading]", inputs: ["loadingText", "loadingType", "libLoading"] }, { kind: "ngmodule", type: CommonModule }], preserveWhitespaces: true }); }
2936
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoginComponent, deps: [{ token: MSAL_GUARD_CONFIG }, { token: i1$2.MsalService }, { token: LibCustomLoginService }, { token: i7.FormBuilder }, { token: AuthUtilService }, { token: AuthService }, { token: LibCustomEnvironmentService }, { token: AuthStorageService }, { token: i8.Title }, { token: i1$1.Router }, { token: i10.ToastrService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
2937
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: LoginComponent, isStandalone: true, selector: "app-login", ngImport: i0, template: "<div id=\"login\" class=\"container-fluid\">\n\t<div class=\"row\">\n\t\t<!-- Conte\u00FAdo da DIV do background -->\n\t\t<div class=\"col-md-6 px-0\">\n\t\t\t<div class=\"background\" style=\"background-image: linear-gradient(to bottom, rgba(10, 44, 81, 0.9), rgba(10, 44, 81, 0.9)), url({{_customLoginService.loginBackground}})\">\n\t\t\t\t<div class=\"text-position texto-apresentacao ps-5\">\n\t\t\t\t\t<h1 class=\"title\" id=\"title\"></h1>\n\t\t\t\t\t<p class=\"subtitle\" id=\"subtitle\"></p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<!-- Conte\u00FAdo da DIV de Login -->\n\t\t<div class=\"col-md-6 px-0\">\n\n\t\t\t<div class=\"div-size\">\n\t\t\t\t<div class=\"logotipo\">\n\t\t\t\t\t<img style=\"height: 95px;\" src=\"{{ this._customLoginService.loginLogotipo }}\" alt=\"{{ this._customLoginService.loginAltLogotipo }}\" />\n\t\t\t\t</div>\n\n\t\t\t\t@if (situacaoLogin !== 2) {\n\t\t\t\t\t@if (!showParmsAuthentication2Fa) {\n\t\t\t\t\t\t@switch (loginProgress) {\n\t\t\t\t\t\t\t@case(1) {\n\t\t\t\t\t\t\t\t<form [formGroup]=\"formDomain\" class=\"form-position\">\n\t\t\t\t\t\t\t\t\t<div class=\"col mb-3\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"predio\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" placeholder=\"Dom\u00EDnio\" formControlName=\"dominio\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formDomain.get('dominio'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formDomain.get('dominio')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingDomain\" loadingText=\"Acessando...\" class=\"btn btn-primary\" [disabled]=\"isLoadingDomain\" (click)=\"getAuthentication()\">\n\t\t\t\t\t\t\t\t\t\tACESSAR <lib-icon iconName=\"login\" />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t@case(2) {\n\t\t\t\t\t\t\t\t<form [formGroup]=\"formLogin\" class=\"form-position\">\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"usuario-quadro\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control px-3\" formControlName=\"usuario\" placeholder=\"Usu\u00E1rio\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formLogin.get('usuario'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formLogin.get('usuario')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-lock-text\"><lib-icon iconName=\"chave\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"password\" class=\"form-control px-3\" formControlName=\"senha\" placeholder=\"Senha\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formLogin.get('senha'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formLogin.get('senha')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t\t\t\t<button (click)=\"returnDomain()\" type=\"button\" class=\"btn btn-outline-secondary w-100\">\n\t\t\t\t\t\t\t\t\t\t\t\tVoltar\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingLogin\" loadingText=\"Acessando...\" class=\"btn btn-primary btn-heigth-48 w-100\" [disabled]=\"isLoadingLogin\" (click)=\"logOn()\">\n\t\t\t\t\t\t\t\t\t\t\t\tACESSAR <lib-icon iconName=\"login\" />\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"mt-3 text-center\">\n\t\t\t\t\t\t\t\t\t\t<a type=\"button\" (click)=\"situacaoLogin = 2\" class=\"fw-bold text-decoration-none text-secondary\"\n\t\t\t\t\t\t\t\t\t\t\ttooltip=\"N\u00E3o se preocupe, clique aqui e informe o dom\u00EDnio e o usu\u00E1rio desejados que enviaremos um e-mail com maiores informa\u00E7\u00F5es.\">\n\t\t\t\t\t\t\t\t\t\t\tEsqueceu sua senha? </a>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t@case(3) {\n\t\t\t\t\t\t\t\t<form [formGroup]=\"formAzure\" class=\"form-position formAzure\">\n\t\t\t\t\t\t\t\t\t<div class=\"w-100 mb-3\">\n\t\t\t\t\t\t\t\t\t\t<button type=\"button\" loadingText=\"Acessando...\" class=\"btn btn-primary p-2 mb-3 w-100 d-flex align-items-center justify-content-center gap-2\" (click)=\"logOnAzure()\">\n\t\t\t\t\t\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" heigth=\"14\" width=\"14\" viewBox=\"0 0 23 23\"><path fill=\"transparent\" d=\"M0 0h23v23H0z\"/><path fill=\"#f35325\" d=\"M1 1h10v10H1z\"/><path fill=\"#81bc06\" d=\"M12 1h10v10H12z\"/><path fill=\"#05a6f0\" d=\"M1 12h10v10H1z\"/><path fill=\"#ffba08\" d=\"M12 12h10v10H12z\"/></svg>\n\t\t\t\t\t\t\t\t\t\t\tMicrosoft\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t<div class=\"w-100 text-center text-secondary\">\n\t\t\t\t\t\t\t\t\t\t\t<span id=\"ou-text\"> ou </span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"usuario-quadro\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control px-3\" formControlName=\"usuario\" placeholder=\"Usu\u00E1rio\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formAzure.get('usuario'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formAzure.get('usuario')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-lock-text\"><lib-icon iconName=\"chave\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"password\" class=\"form-control px-3\" formControlName=\"senha\" placeholder=\"Senha\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formAzure.get('senha'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formAzure.get('senha')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t\t\t\t<button (click)=\"returnDomain()\" type=\"button\" class=\"btn btn-outline-secondary w-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t<lib-icon iconName=\"seta-esquerda\" /> VOLTAR\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingAzure\" loadingText=\"Acessando...\" class=\"btn btn-primary btn-heigth-48 w-100\" [disabled]=\"isLoadingAzure\" (click)=\"logOnAdmin()\">\n\t\t\t\t\t\t\t\t\t\t\t\tACESSAR <lib-icon iconName=\"login\" />\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t@else {\n\t\t\t\t\t\t<form [formGroup]=\"formAuthentication2Fa\" class=\"form-position\">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><img src=\"assets/icons/lock.svg\" alt=\"lock-icon\" /></span>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" formControlName=\"code\" id=\"code\" placeholder=\"C\u00F3digo de 2 fatores\"\n\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formAuthentication2Fa.get('code'))\">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formAuthentication2Fa.get('code')\" />\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"d-flex flex-row align-items-center gap-3 mb-3\">\n\t\t\t\t\t\t\t\t<button (click)=\"voltar()\" type=\"button\" class=\"btn btn-outline-secondary col\"> <lib-icon iconName=\"seta-esquerda\" /> VOLTAR </button>\n\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingSendAuthentication2Fa\" [disabled]=\"isLoadingSendAuthentication2Fa\" (click)=\"sendCode()\" type=\"button\" class=\"btn btn-primary col\">\n\t\t\t\t\t\t\t\t\tACESSAR <lib-icon iconName=\"login\" />\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"d-flex flex-row align-items-center justify-content-center\">\n\t\t\t\t\t\t\t\t@if (secondsLeft === 0) {\n\t\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingForgottenPassword\" loadingText=\"Enviando...\" [disabled]=\"isLoadingForgottenPassword\" (click)=\"getNewCode()\" type=\"button\" class=\"btn btn-outline-primary col\">\n\t\t\t\t\t\t\t\t\t\tEnviar novo c\u00F3digo <lib-icon iconName=\"aviao-papel\" />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t@else {\n\t\t\t\t\t\t\t\t\t<span class=\"fw-bold text-secondary\">{{ secondsLeft }} {{ secondsLeft == 1 ? 'segundo' : 'segundos' }} para obter novo c\u00F3digo</span>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</form>\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@else {\n\t\t\t\t\t<form [formGroup]=\"formFgtPsw\" class=\"form-position\">\n\t\t\t\t\t\t<div class=\"row mb-3\">\n\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t<div class=\"input-group input-group\">\n\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"predio\" /></span>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" id=\"dominioFgtPssInput\" placeholder=\"Dom\u00EDnio\" formControlName=\"dominioFgtPsw\"\n\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formFgtPsw.get('dominioFgtPsw'))\">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formFgtPsw.get('dominioFgtPsw')\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"row mb-3\">\n\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t<div class=\"input-group input-group\">\n\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"usuario-quadro\" /></span>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" id=\"usuarioFgtPssInput\" placeholder=\"Usu\u00E1rio\" formControlName=\"usuarioFgtPsw\"\n\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formFgtPsw.get('usuarioFgtPsw'))\">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formFgtPsw.get('usuarioFgtPsw')\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\n\t\t\t\t\t\t@if(formFgtPsw.get('usuarioFgtPsw')?.value === 'admin' || formFgtPsw.get('usuarioFgtPsw')?.value === 'CRMadmin'){\n <p class=\"texto-admin\">N\u00E3o \u00E9 poss\u00EDvel alterar a senha do usu\u00E1rio 'admin'</p>\n }@else{\n <button [libLoading]=\"isLoadingForgottenPassword\" loadingText=\"Enviando...\" class=\"btn btn-primary btn-heigth-48\" [disabled]=\"isLoadingForgottenPassword\" (click)=\"sendForgottenPassword()\">\n Enviar e-mail <lib-icon iconName=\"aviao-papel\" />\n </button>\n }\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"mt-3 text-center\">\n\t\t\t\t\t\t\t<a type=\"button\" (click)=\"situacaoLogin = 0\" class=\"fw-bold text-decoration-none text-secondary\" tooltip=\"Retornar para o login.\"> <lib-icon iconName=\"seta-esquerda\" /> Voltar para o login </a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</form>\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t<div class=\"footer-position\">\n\t\t\t\t\t<footer>\n\t\t\t\t\t\t<div class=\"d-flex flex-row align-items-center justify-content-center gap-2\">\n\t\t\t\t\t\t\t<a href=\"https://dpo.privacytools.com.br/policy-view/JmGeNlJdw/1/poli%CC%81tica-de-privacidade/pt_BR?s=1685731510066\" target=\"_blank\" class=\"text-primary text-decoration-none fw-bold\"> POL\u00CDTICA DE PRIVACIDADE </a>\n\t\t\t\t\t\t\t<span> | </span>\n\t\t\t\t\t\t\t<a href=\"https://dpo.privacytools.com.br/policy-view/Rork35NN2/2/poli%CC%81tica-de-cookies/pt_BR?s=1685731551976\" target=\"_blank\" class=\"text-primary text-decoration-none fw-bold\"> POL\u00CDTICA DE COOKIES </a>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<p class=\"text-secondary\">\n\t\t\t\t\t\t\tDesenvolvido por <a href=\"https://www.sispro.com.br/\" target=\"_blank\" class=\"text-primary text-decoration-none fw-bold\"> SISPRO </a> \u00A9 {{ year }} Todos os direitos reservados\n\t\t\t\t\t\t</p>\n\n\t\t\t\t\t\t<div class=\"icons\">\n\t\t\t\t\t\t\t<a href=\"https://pt-br.facebook.com/SisproERP/\" target=\"_blank\"> <lib-icon class=\"text-primary\" iconName=\"facebook\" iconSize=\"medium-small\"/> </a>\n\t\t\t\t\t\t\t<a href=\"https://www.instagram.com/accounts/login/?next=/sispro_software/\" target=\"_blank\"> <lib-icon class=\"text-primary\" iconName=\"instagram\" iconSize=\"medium-small\"/> </a>\n\t\t\t\t\t\t\t<a href=\"https://br.linkedin.com/company/sispro\" target=\"_blank\"> <lib-icon class=\"text-primary\" iconName=\"linkedin\" iconSize=\"medium-small\"/> </a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</footer>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n", styles: ["@charset \"UTF-8\";#login .background{display:grid;height:100vh;align-content:center;background-size:cover;color:#f5f5f5;align-items:center;justify-content:center}#login .div-size{display:flex;flex-direction:column;justify-content:space-around;width:100%;height:100vh;align-items:center;background-color:#f5f5f5;box-shadow:0 0 15px #333}#login .title{font-size:3.5vw;text-transform:uppercase;font-weight:700}#login .subtitle{font-size:21px}#login .logotipo{display:flex;justify-content:center;margin-top:10%}#login .form-position{display:flex;flex-direction:column;align-content:center;width:378px}#login .form-item{margin-bottom:16px}#login .footer{display:flex;justify-content:center}#login .footer-position{font-size:14px;display:flex;justify-content:center;align-items:flex-end}#login .icons{display:flex;justify-content:center;align-items:center;margin-top:16px}#login .icons a{padding:4px}#login .icon-item{margin-left:24px;color:#007bff}#login .col-md-7,#login .col-md-5{padding:0}#login .btn-acessar{height:48px;outline-style:none}#login .texto-apresentacao{align-items:start}#login .separator{margin-left:5px}#login #ou-text{display:flex;flex-direction:row;align-items:center;justify-content:space-between}#login #ou-text:before{content:\"\";display:block;width:100%;height:1px;border-bottom:1px solid rgb(108,117,125);margin-right:12px}#login #ou-text:after{content:\"\";display:block;width:100%;height:1px;border-bottom:1px solid rgb(108,117,125);margin-left:12px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: InfraModule }, { kind: "component", type: i3.FieldErrorMessageComponent, selector: "app-field-error-message, lib-error-message", inputs: ["customMessage", "control", "label"] }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "directive", type: i3.LoadingBtnDirective, selector: "button[libLoading], a[libLoading]", inputs: ["loadingText", "loadingType", "libLoading"] }, { kind: "ngmodule", type: CommonModule }], preserveWhitespaces: true }); }
2943
2938
  }
2944
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LoginComponent, decorators: [{
2939
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoginComponent, decorators: [{
2945
2940
  type: Component,
2946
2941
  args: [{ selector: 'app-login', imports: [
2947
2942
  ReactiveFormsModule,
@@ -2951,7 +2946,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
2951
2946
  }], ctorParameters: () => [{ type: undefined, decorators: [{
2952
2947
  type: Inject,
2953
2948
  args: [MSAL_GUARD_CONFIG]
2954
- }] }, { type: i1$2.MsalService }, { type: LibCustomLoginService }, { type: i3$1.FormBuilder }, { type: AuthUtilService }, { type: AuthService }, { type: LibCustomEnvironmentService }, { type: AuthStorageService }, { type: i8.Title }, { type: i1$1.Router }, { type: i10.ToastrService }, { type: i3.MessageService }] });
2949
+ }] }, { type: i1$2.MsalService }, { type: LibCustomLoginService }, { type: i7.FormBuilder }, { type: AuthUtilService }, { type: AuthService }, { type: LibCustomEnvironmentService }, { type: AuthStorageService }, { type: i8.Title }, { type: i1$1.Router }, { type: i10.ToastrService }, { type: i3.MessageService }] });
2955
2950
 
2956
2951
  class SecondaryDropdownComponent {
2957
2952
  constructor(_authUtilService) {
@@ -2968,10 +2963,10 @@ class SecondaryDropdownComponent {
2968
2963
  url += urlModulo.startsWith('/') ? urlModulo : '/' + urlModulo;
2969
2964
  window.open(url, '_blank');
2970
2965
  }
2971
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SecondaryDropdownComponent, deps: [{ token: AuthUtilService }], target: i0.ɵɵFactoryTarget.Component }); }
2972
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: SecondaryDropdownComponent, isStandalone: true, selector: "app-secondary-dropdown", inputs: { modulo: "modulo" }, outputs: { backPrimaryDropdown: "backPrimaryDropdown" }, ngImport: i0, template: "<div class=\"d-flex flex-row\">\n <button class=\"chevron d-flex m-0 p-0 align-items-start\" (click)=\"backToPrimary()\"> \n <lib-icon iconName=\"seta-esquerda\" iconSize=\"small\"/>\n </button>\n\n <div class=\"d-flex flex-column sublista\">\n @if (modulo != null) {\n <li class=\"ms-1 mb-3\">\n <lib-icon class=\"me-2\" [iconName]=\"modulo.icon\" />\n <span class=\"text-truncate\">{{ modulo.label }}</span>\n </li>\n }\n\n @if (modulo && modulo.secondary_level != null) {\n @for (moduloItem of modulo.secondary_level; track $index) {\n <li class=\"glb-cursor-pointer\" (click)=\"redirectToModulo(moduloItem.URL)\">\n <a class=\"m-0 dropdown-item text-truncate\">\n <lib-icon class=\"me-2\" [iconName]=\"moduloItem.icon\" />\n {{ moduloItem.label }}\n </a>\n <li>\n }\n }\n </div>\n</div>", styles: [".chevron{margin-bottom:16px;margin-left:14px}.sublista{width:272px}li{img{margin-left:8px;margin-right:4px}span{font-weight:700}}li a:hover{font-weight:700;background-color:transparent}.dropdown-item{margin-left:32px}button{background-color:transparent;border:none}\n"], dependencies: [{ kind: "ngmodule", type: InfraModule }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "ngmodule", type: CommonModule }] }); }
2966
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SecondaryDropdownComponent, deps: [{ token: AuthUtilService }], target: i0.ɵɵFactoryTarget.Component }); }
2967
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: SecondaryDropdownComponent, isStandalone: true, selector: "app-secondary-dropdown", inputs: { modulo: "modulo" }, outputs: { backPrimaryDropdown: "backPrimaryDropdown" }, ngImport: i0, template: "<div class=\"d-flex flex-row\">\n <button class=\"chevron d-flex m-0 p-0 align-items-start\" (click)=\"backToPrimary()\"> \n <lib-icon iconName=\"seta-esquerda\" iconSize=\"small\"/>\n </button>\n\n <div class=\"d-flex flex-column sublista\">\n @if (modulo != null) {\n <li class=\"ms-1 mb-3\">\n <lib-icon class=\"me-2\" [iconName]=\"modulo.icon\" />\n <span class=\"text-truncate\">{{ modulo.label }}</span>\n </li>\n }\n\n @if (modulo && modulo.secondary_level != null) {\n @for (moduloItem of modulo.secondary_level; track $index) {\n <li class=\"glb-cursor-pointer\" (click)=\"redirectToModulo(moduloItem.URL)\">\n <a class=\"m-0 dropdown-item text-truncate\">\n <lib-icon class=\"me-2\" [iconName]=\"moduloItem.icon\" />\n {{ moduloItem.label }}\n </a>\n <li>\n }\n }\n </div>\n</div>", styles: [".chevron{margin-bottom:16px;margin-left:14px}.sublista{width:272px}li{img{margin-left:8px;margin-right:4px}span{font-weight:700}}li a:hover{font-weight:700;background-color:transparent}.dropdown-item{margin-left:32px}button{background-color:transparent;border:none}\n"], dependencies: [{ kind: "ngmodule", type: InfraModule }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "ngmodule", type: CommonModule }] }); }
2973
2968
  }
2974
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SecondaryDropdownComponent, decorators: [{
2969
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SecondaryDropdownComponent, decorators: [{
2975
2970
  type: Component,
2976
2971
  args: [{ selector: 'app-secondary-dropdown', imports: [
2977
2972
  InfraModule,
@@ -3070,10 +3065,10 @@ class PrimaryDropdownComponent {
3070
3065
  }
3071
3066
  return primaryDropdownList;
3072
3067
  }
3073
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PrimaryDropdownComponent, deps: [{ token: LibCustomMenuService }, { token: AuthUtilService }, { token: MenuServicesService }], target: i0.ɵɵFactoryTarget.Component }); }
3074
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: PrimaryDropdownComponent, isStandalone: true, selector: "app-primary-dropdown", inputs: { buttonWasClicked: "buttonWasClicked" }, ngImport: i0, template: "<div class=\"p-2\">\n\t<div *ngIf=\"selectDataState; else secondary_dropdown\" class=\"d-flex flex-column w-100\">\n\t\t<li *ngFor=\"let modulo of primaryDropdown\" class=\"glb-cursor-pointer\" (click)=\"(modulo.secondary_level != null ? openDropdown(modulo, secondary_dropdown) : redirectToModulo(modulo.URL))\">\n\t\t\t<a class=\"dropdown-item text-truncate d-flex align-items-center gap-1 px-1\">\n\t\t\t\t<lib-icon class=\"me-2\" [iconName]=\"modulo.icon\"></lib-icon>\n\t\t\t\t{{ modulo.label }}\n\t\t\t</a>\n\t\t</li>\n\n\t\t<hr class=\"m-2\">\n\n\t\t<li class=\"portal-sispro-btn glb-cursor-pointer text-primary d-flex align-items-center justify-content-center gap-2 py-1 rounded\" (click)=\"redirectToPrePortal()\">\n\t\t\t<a class=\"fs-6 text-center text-primary fw-bold text-decoration-none\" target=\"_blank\">Portal SISPRO</a>\n\t\t\t<lib-icon iconName=\"acessoexterno\" iconSize=\"medium-small\" />\n\t\t</li>\n\t</div>\n\n\t<ng-template #secondary_dropdown>\n\t\t<div #secondary_ref (clickOutside)=\"onClickedOutside($event, secondary_ref)\">\n\t\t\t<app-secondary-dropdown [modulo]=\"this.modulo\" (backPrimaryDropdown)=\"backToPrimary($event)\"></app-secondary-dropdown>\n\t\t</div>\n\t</ng-template>\n</div>", styles: ["li{a{font-size:14px;img{margin-right:4px}}a:hover{font-weight:700;background-color:transparent}}.portal-sispro-btn{transition:all .2s ease;&:hover{background-color:#eee}}\n"], dependencies: [{ kind: "component", type: SecondaryDropdownComponent, selector: "app-secondary-dropdown", inputs: ["modulo"], outputs: ["backPrimaryDropdown"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i17.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i17.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: InfraModule }, { kind: "directive", type: i3.ClickOutsideDirective, selector: "[clickOutside], [libClickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }] }); }
3068
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: PrimaryDropdownComponent, deps: [{ token: LibCustomMenuService }, { token: AuthUtilService }, { token: MenuServicesService }], target: i0.ɵɵFactoryTarget.Component }); }
3069
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: PrimaryDropdownComponent, isStandalone: true, selector: "app-primary-dropdown", inputs: { buttonWasClicked: "buttonWasClicked" }, ngImport: i0, template: "<div class=\"p-2\">\n\t<div *ngIf=\"selectDataState; else secondary_dropdown\" class=\"d-flex flex-column w-100\">\n\t\t<li *ngFor=\"let modulo of primaryDropdown\" class=\"glb-cursor-pointer\" (click)=\"(modulo.secondary_level != null ? openDropdown(modulo, secondary_dropdown) : redirectToModulo(modulo.URL))\">\n\t\t\t<a class=\"dropdown-item text-truncate d-flex align-items-center gap-1 px-1\">\n\t\t\t\t<lib-icon class=\"me-2\" [iconName]=\"modulo.icon\"></lib-icon>\n\t\t\t\t{{ modulo.label }}\n\t\t\t</a>\n\t\t</li>\n\n\t\t<hr class=\"m-2\">\n\n\t\t<li class=\"portal-sispro-btn glb-cursor-pointer text-primary d-flex align-items-center justify-content-center gap-2 py-1 rounded\" (click)=\"redirectToPrePortal()\">\n\t\t\t<a class=\"fs-6 text-center text-primary fw-bold text-decoration-none\" target=\"_blank\">Portal SISPRO</a>\n\t\t\t<lib-icon iconName=\"acessoexterno\" iconSize=\"medium-small\" />\n\t\t</li>\n\t</div>\n\n\t<ng-template #secondary_dropdown>\n\t\t<div #secondary_ref (clickOutside)=\"onClickedOutside($event, secondary_ref)\">\n\t\t\t<app-secondary-dropdown [modulo]=\"this.modulo\" (backPrimaryDropdown)=\"backToPrimary($event)\"></app-secondary-dropdown>\n\t\t</div>\n\t</ng-template>\n</div>", styles: ["li{a{font-size:14px;img{margin-right:4px}}a:hover{font-weight:700;background-color:transparent}}.portal-sispro-btn{transition:all .2s ease;&:hover{background-color:#eee}}\n"], dependencies: [{ kind: "component", type: SecondaryDropdownComponent, selector: "app-secondary-dropdown", inputs: ["modulo"], outputs: ["backPrimaryDropdown"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i17.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i17.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: InfraModule }, { kind: "directive", type: i3.ClickOutsideDirective, selector: "[clickOutside], [libClickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }] }); }
3075
3070
  }
3076
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PrimaryDropdownComponent, decorators: [{
3071
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: PrimaryDropdownComponent, decorators: [{
3077
3072
  type: Component,
3078
3073
  args: [{ selector: 'app-primary-dropdown', imports: [
3079
3074
  SecondaryDropdownComponent,
@@ -3116,12 +3111,12 @@ class DynamicMenuComponent {
3116
3111
  getExternalUrl(url, isOutroModulo) {
3117
3112
  return (isOutroModulo ? `https://${window.location.host}/SisproErpCloud/${url}` : `${this.hostServerOutSystems == "" ? `https://${window.location.host}` : this.hostServerOutSystems}/${url}`);
3118
3113
  }
3119
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DynamicMenuComponent, deps: [{ token: i1$1.Router }, { token: AuthUtilService }], target: i0.ɵɵFactoryTarget.Component }); }
3120
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: DynamicMenuComponent, isStandalone: true, selector: "app-dynamic-menu", inputs: { submenuRef: "submenuRef", recebeParam: "recebeParam", titleSubmenu: "titleSubmenu", submenuList: "submenuList", hostServerOutSystems: "hostServerOutSystems" }, outputs: { selectTemplate: "selectTemplate" }, queries: [{ propertyName: "desiredContent", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<div #submenu class=\"header-submenu\">\n <h1 class=\"titulo pb-3 pt-4\">{{ titleSubmenu }}</h1>\n <div class=\"itens-list\">\n <ul style=\"width: 100%; max-height: 100%\">\n\n <li *ngFor=\"let itemList of submenuList; let i = index\" [id]=\"itemList!.id\"\n class=\"d-flex justify-content-between align-items-center\"\n [class]=\"i == 0 ? 'mt-1' : ''\">\n\n <a *ngIf=\"!itemList.isExternal && !itemList.isOutroModulo; else externalMenu\"\n [routerLink]=\"itemList!.route != null ? ['/' + itemList!.route] : null\"\n (click)=\"recebeParam($event, submenuRef)\">\n <span>{{ itemList!.label }}</span>\n </a>\n\n <ng-template #externalMenu>\n <a [href]=\"getExternalUrl(itemList.route,itemList.isOutroModulo)\"\n target=\"_blank\"\n (click)=\"recebeParam($event, submenuRef)\">\n <span>{{ itemList!.label }}</span>\n </a>\n </ng-template>\n\n <!-- <button class=\"star favoritos\" #star (click)=\"changeStar(star, itemList)\"></button> -->\n </li>\n </ul>\n </div>\n</div>\n", styles: ["*{padding:0;margin:0;font-family:Open sans,Arial,Helvetica,sans-serif;color:#fff}ul{list-style:none;padding-left:0;display:inline;white-space:nowrap}::-webkit-scrollbar{width:8px;background:transparent}::-webkit-scrollbar-thumb{background:#bbb;border-radius:16px}.header-submenu{display:flex;flex-direction:column;height:100vh;overflow:overlay}.titulo{font-size:20px;font-weight:700;display:flex;justify-content:center;border-bottom:1px solid #2847a0}ul{display:flex;flex-direction:column;margin:25px 26px 0 24px}ul li{font-size:16px;padding-bottom:18px}ul li span:hover{font-weight:700}a{text-decoration:none}.itens-list{display:flex;align-items:center;overflow:overlay;width:100%;z-index:0}.itens-list .favoritos,.itens-list span{cursor:pointer}.footer-menu{display:flex;flex-direction:column;justify-content:center;padding-bottom:16px}.footer-menu .footer-components{border-top:1px solid #3265ee;padding-top:16px;padding-left:17px;white-space:nowrap}.footer-menu button{position:relative;left:35%;border:none;background-color:transparent}.footer-menu .photo-profile{width:32px;height:32px;border-radius:50%;margin:0 15px 0 0}.footer-components{display:flex;justify-content:center;align-items:center}button{position:relative;border:none;background-color:transparent}.photo-profile{width:32px;height:32px;border-radius:50%;margin:0}.submenu.opened-sub{z-index:1;display:flex;position:absolute;left:100%;height:100vh;justify-content:space-between}.submenu-footer{display:flex;flex-direction:row;justify-content:center;align-content:center;margin-bottom:14px;border-top:1px solid #2847a0}.submenu-footer .subfooter-components{padding-top:16px}.submenu-footer span{font-weight:700;padding-left:10px}.star{width:24px;height:24px;background-repeat:no-repeat}.yellow-star{width:26px;height:24px;background-repeat:no-repeat}\n"], dependencies: [{ kind: "ngmodule", type:
3114
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: DynamicMenuComponent, deps: [{ token: i1$1.Router }, { token: AuthUtilService }], target: i0.ɵɵFactoryTarget.Component }); }
3115
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: DynamicMenuComponent, isStandalone: true, selector: "app-dynamic-menu", inputs: { submenuRef: "submenuRef", recebeParam: "recebeParam", titleSubmenu: "titleSubmenu", submenuList: "submenuList", hostServerOutSystems: "hostServerOutSystems" }, outputs: { selectTemplate: "selectTemplate" }, queries: [{ propertyName: "desiredContent", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<div #submenu class=\"header-submenu\">\n <h1 class=\"titulo pb-3 pt-4\">{{ titleSubmenu }}</h1>\n <div class=\"itens-list\">\n <ul style=\"width: 100%; max-height: 100%\">\n\n <li *ngFor=\"let itemList of submenuList; let i = index\" [id]=\"itemList!.id\"\n class=\"d-flex justify-content-between align-items-center\"\n [class]=\"i == 0 ? 'mt-1' : ''\">\n\n <a *ngIf=\"!itemList.isExternal && !itemList.isOutroModulo; else externalMenu\"\n [routerLink]=\"itemList!.route != null ? ['/' + itemList!.route] : null\"\n (click)=\"recebeParam($event, submenuRef)\">\n <span>{{ itemList!.label }}</span>\n </a>\n\n <ng-template #externalMenu>\n <a [href]=\"getExternalUrl(itemList.route,itemList.isOutroModulo)\"\n target=\"_blank\"\n (click)=\"recebeParam($event, submenuRef)\">\n <span>{{ itemList!.label }}</span>\n </a>\n </ng-template>\n\n <!-- <button class=\"star favoritos\" #star (click)=\"changeStar(star, itemList)\"></button> -->\n </li>\n </ul>\n </div>\n</div>\n", styles: ["*{padding:0;margin:0;font-family:Open sans,Arial,Helvetica,sans-serif;color:#fff}ul{list-style:none;padding-left:0;display:inline;white-space:nowrap}::-webkit-scrollbar{width:8px;background:transparent}::-webkit-scrollbar-thumb{background:#bbb;border-radius:16px}.header-submenu{display:flex;flex-direction:column;height:100vh;overflow:overlay}.titulo{font-size:20px;font-weight:700;display:flex;justify-content:center;border-bottom:1px solid #2847a0}ul{display:flex;flex-direction:column;margin:25px 26px 0 24px}ul li{font-size:16px;padding-bottom:18px}ul li span:hover{font-weight:700}a{text-decoration:none}.itens-list{display:flex;align-items:center;overflow:overlay;width:100%;z-index:0}.itens-list .favoritos,.itens-list span{cursor:pointer}.footer-menu{display:flex;flex-direction:column;justify-content:center;padding-bottom:16px}.footer-menu .footer-components{border-top:1px solid #3265ee;padding-top:16px;padding-left:17px;white-space:nowrap}.footer-menu button{position:relative;left:35%;border:none;background-color:transparent}.footer-menu .photo-profile{width:32px;height:32px;border-radius:50%;margin:0 15px 0 0}.footer-components{display:flex;justify-content:center;align-items:center}button{position:relative;border:none;background-color:transparent}.photo-profile{width:32px;height:32px;border-radius:50%;margin:0}.submenu.opened-sub{z-index:1;display:flex;position:absolute;left:100%;height:100vh;justify-content:space-between}.submenu-footer{display:flex;flex-direction:row;justify-content:center;align-content:center;margin-bottom:14px;border-top:1px solid #2847a0}.submenu-footer .subfooter-components{padding-top:16px}.submenu-footer span{font-weight:700;padding-left:10px}.star{width:24px;height:24px;background-repeat:no-repeat}.yellow-star{width:26px;height:24px;background-repeat:no-repeat}\n"], dependencies: [{ kind: "ngmodule", type:
3121
3116
  // AuthRoutingModule,
3122
3117
  CommonModule }, { kind: "directive", type: i17.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i17.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
3123
3118
  }
3124
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DynamicMenuComponent, decorators: [{
3119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: DynamicMenuComponent, decorators: [{
3125
3120
  type: Component,
3126
3121
  args: [{ selector: 'app-dynamic-menu', imports: [
3127
3122
  // AuthRoutingModule,
@@ -3149,10 +3144,10 @@ class NotifSubmenuComponent {
3149
3144
  constructor() { }
3150
3145
  ngOnInit() {
3151
3146
  }
3152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NotifSubmenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3153
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: NotifSubmenuComponent, isStandalone: true, selector: "app-notif-submenu", ngImport: i0, template: "<div class=\"header-submenu\">\n <h1 class=\"titulo pb-3 pt-4\">Notifica\u00E7\u00F5es</h1>\n</div>\n<div class=\"body-notif\">\n <div class=\"new-notif\">\n <div class=\"session-header p-2\">\n <p class=\"session-h-item\">Novas (2)</p><p>Marcar todas como Lidas</p>\n </div>\n <div class=\"scroll\">\n <div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"read-notif\">\n <div class=\"session-header p-2\">\n <p class=\"session-h-item\">Lidas</p>\n </div>\n <div class=\"scroll-second\">\n <div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has\n Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["*{padding:0;margin:0;font-family:Open sans,Arial,Helvetica,sans-serif;color:#fff}ul{list-style:none;padding-left:0;display:inline;white-space:nowrap}::-webkit-scrollbar{width:4px;background:transparent}::-webkit-scrollbar-thumb{background:#fff;border-radius:16px}.titulo{font-size:20px;font-weight:700;display:flex;justify-content:center;border-bottom:1px solid #2847a0}ul{display:flex;flex-direction:column;margin:25px 26px 0 24px}ul li{font-size:20px;font-weight:600;line-height:22px;padding-bottom:18px}button{position:relative;border:none;background-color:transparent}.session-header{display:flex;justify-content:space-between;background-color:#2847a0}.session-header .session-h-item{font-weight:700}.session{border-bottom:1px solid #fff;overflow:auto;height:100%}.session:last-child{border-bottom:none}.session-start{display:flex}.item-end{display:flex;justify-content:space-between}.scroll{margin-right:2px;overflow:auto;max-height:300px}.scroll-second{margin-right:2px;overflow:auto;max-height:481px}\n"] }); }
3147
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: NotifSubmenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3148
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: NotifSubmenuComponent, isStandalone: true, selector: "app-notif-submenu", ngImport: i0, template: "<div class=\"header-submenu\">\n <h1 class=\"titulo pb-3 pt-4\">Notifica\u00E7\u00F5es</h1>\n</div>\n<div class=\"body-notif\">\n <div class=\"new-notif\">\n <div class=\"session-header p-2\">\n <p class=\"session-h-item\">Novas (2)</p><p>Marcar todas como Lidas</p>\n </div>\n <div class=\"scroll\">\n <div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"read-notif\">\n <div class=\"session-header p-2\">\n <p class=\"session-h-item\">Lidas</p>\n </div>\n <div class=\"scroll-second\">\n <div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has\n Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["*{padding:0;margin:0;font-family:Open sans,Arial,Helvetica,sans-serif;color:#fff}ul{list-style:none;padding-left:0;display:inline;white-space:nowrap}::-webkit-scrollbar{width:4px;background:transparent}::-webkit-scrollbar-thumb{background:#fff;border-radius:16px}.titulo{font-size:20px;font-weight:700;display:flex;justify-content:center;border-bottom:1px solid #2847a0}ul{display:flex;flex-direction:column;margin:25px 26px 0 24px}ul li{font-size:20px;font-weight:600;line-height:22px;padding-bottom:18px}button{position:relative;border:none;background-color:transparent}.session-header{display:flex;justify-content:space-between;background-color:#2847a0}.session-header .session-h-item{font-weight:700}.session{border-bottom:1px solid #fff;overflow:auto;height:100%}.session:last-child{border-bottom:none}.session-start{display:flex}.item-end{display:flex;justify-content:space-between}.scroll{margin-right:2px;overflow:auto;max-height:300px}.scroll-second{margin-right:2px;overflow:auto;max-height:481px}\n"] }); }
3154
3149
  }
3155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NotifSubmenuComponent, decorators: [{
3150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: NotifSubmenuComponent, decorators: [{
3156
3151
  type: Component,
3157
3152
  args: [{ selector: 'app-notif-submenu', imports: [], template: "<div class=\"header-submenu\">\n <h1 class=\"titulo pb-3 pt-4\">Notifica\u00E7\u00F5es</h1>\n</div>\n<div class=\"body-notif\">\n <div class=\"new-notif\">\n <div class=\"session-header p-2\">\n <p class=\"session-h-item\">Novas (2)</p><p>Marcar todas como Lidas</p>\n </div>\n <div class=\"scroll\">\n <div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"read-notif\">\n <div class=\"session-header p-2\">\n <p class=\"session-h-item\">Lidas</p>\n </div>\n <div class=\"scroll-second\">\n <div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has\n Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atr\u00E1s</p>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["*{padding:0;margin:0;font-family:Open sans,Arial,Helvetica,sans-serif;color:#fff}ul{list-style:none;padding-left:0;display:inline;white-space:nowrap}::-webkit-scrollbar{width:4px;background:transparent}::-webkit-scrollbar-thumb{background:#fff;border-radius:16px}.titulo{font-size:20px;font-weight:700;display:flex;justify-content:center;border-bottom:1px solid #2847a0}ul{display:flex;flex-direction:column;margin:25px 26px 0 24px}ul li{font-size:20px;font-weight:600;line-height:22px;padding-bottom:18px}button{position:relative;border:none;background-color:transparent}.session-header{display:flex;justify-content:space-between;background-color:#2847a0}.session-header .session-h-item{font-weight:700}.session{border-bottom:1px solid #fff;overflow:auto;height:100%}.session:last-child{border-bottom:none}.session-start{display:flex}.item-end{display:flex;justify-content:space-between}.scroll{margin-right:2px;overflow:auto;max-height:300px}.scroll-second{margin-right:2px;overflow:auto;max-height:481px}\n"] }]
3158
3153
  }], ctorParameters: () => [] });
@@ -3338,10 +3333,10 @@ class SelecaoEstabelecimentosModalComponent {
3338
3333
  closeModalEstabelecimento(id) {
3339
3334
  this._bsModalService.hide(id);
3340
3335
  }
3341
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SelecaoEstabelecimentosModalComponent, deps: [{ token: AuthStorageService }, { token: MenuServicesService }, { token: i3.MessageService }, { token: i4.BsModalService }, { token: AuthUtilService }], target: i0.ɵɵFactoryTarget.Component }); }
3342
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: SelecaoEstabelecimentosModalComponent, isStandalone: true, selector: "selecao-estabelecimentos-modal", outputs: { onClose: "onClose", onSelected: "onSelected" }, ngImport: i0, template: "<div class=\"main-container\">\n <div class=\"modal-header modal-style modal-dialog-centered\">\n <h4 class=\"modal-title pull-left color-modal\" style=\"font-size: 20px; font-weight: bold;\"> Selecione o\n estabelecimento </h4>\n <button (click)=\"closeSelf()\" type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n </div>\n <div class=\"modal-body\">\n <div class=\"modal-message\">\n <div class=\"search-and-filters d-flex flex-row align-items-center justify-content-between mb-2\">\n <div class=\"d-flex flex-row w-100\">\n <div class=\"input-group\">\n <span class=\"input-group-text px-2\" id=\"basic-addon1\"\n style=\"background-color: transparent; border-right: none;\">\n <lib-icon iconName=\"lupa\" iconColor=\"gray\"/>\n </span>\n <input type=\"text\" class=\"form-control border-start-0 ps-0\" id=\"pesquisaInput\" #pesquisa\n placeholder=\"Pesquise o c\u00F3digo ou nome do estabelecimento\" (keyup.enter)=\"refreshList(pesquisa.value)\">\n </div>\n </div>\n\n <div class=\"filters d-flex align-items-center justify-content-between ms-3\">\n <div class=\"search-buttons d-flex flex-row align-items-center my-0 mx-0\">\n <button id=\"clearFilterBtn\" class=\"btn btn-outline-primary ms-0 no-hover-btn me-2\"\n (click)=\"pesquisa.value = ''; refreshList(pesquisa.value)\"> Limpar </button>\n <button id=\"searchFilterBtn\" class=\"btn btn-primary me-0\" (click)=\"refreshList(pesquisa.value)\"> Pesquisar\n </button>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"table-list w-100 mt-3\" *ngIf=\"$estabelecimentosList; else loading\">\n <table class=\"table table-bordered table-hover mb-0\">\n <thead class=\"fs-6\">\n <tr>\n <th scope=\"col\" class=\"col-11 align-middle th\">Estabelecimento</th>\n <th scope=\"col\" class=\"col-1 align-middle text-center th\">A\u00E7\u00F5es</th>\n </tr>\n </thead>\n\n <tbody *ngIf=\"$estabelecimentosList.length > 0; else emptyList\">\n <tr\n *ngFor=\"let estabelecimento of $estabelecimentosList | paginate: { itemsPerPage: itemsPerPage, currentPage: page }\">\n <td>\n <div style=\"cursor: pointer;\" (click)=\"selectEstabelecimento(estabelecimento.ID, estabelecimento.NOMEEXIBICAO)\">\n <span class=\"row-name\"> {{ estabelecimento.CODIGO }} - {{ estabelecimento.NOMEEXIBICAO }} </span>\n <span class=\"subname\"> {{ estabelecimento.IS_MATRIZ ? \"Matriz \" : null }} CNPJ: {{ estabelecimento.CNPJ\n }} </span>\n </div>\n </td>\n <td class=\"text-center align-middle\">\n <div class=\"action-icons d-flex flex-row align-items-center justify-content-around\">\n <div class=\"form-check form-switch\">\n <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"flexSwitchCheckChecked\"\n tooltip=\"Estabelecimento padr\u00E3o\" [checked]=\"estabelecimento.IS_DEFAULT\"\n style=\"transform: translateY(3px); height: 1rem; width: 28px;\" #isDefaultRow\n (click)=\"estabelecimento.IS_DEFAULT = !estabelecimento.IS_DEFAULT; defineDefaultEstabelecimento(estabelecimento.ID, estabelecimento.IS_DEFAULT)\">\n </div>\n </div>\n </td>\n </tr>\n </tbody> -->\n\n\n\n <!-- #region EMPTY LIST CELL -->\n <!-- <ng-template #emptyList>\n <tbody>\n <tr>\n <td colspan=\"2\" class=\"align-middle\"><span class=\"row-name fw-light fst-italic text-center\"> {{\n response_messages.emptyMessage }} </span></td>\n </tr>\n </tbody>\n </ng-template> -->\n <!-- #endregion EMPTY LIST CELL -->\n <!-- </table> -->\n\n <!-- #region PAGINATION -->\n <!-- <div class=\"d-flex justify-content-end mt-2\" *ngIf=\"$estabelecimentosList.length > 0\">\n <div class=\"d-flex align-items-center\">\n <label class=\"me-2\" style=\"white-space: nowrap;\">Itens por p\u00E1gina</label>\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\n <option class=\"selected\" value=\"10\" selected>10</option>\n <option value=\"25\">25</option>\n <option value=\"50\">50</option>\n </select>\n </div>\n\n <pagination-controls class=\"sp-pagination mt-3\" (pageChange)=\"page = $event\"\n previousLabel=\"\u00AB&nbsp;&nbsp;&nbsp;\" nextLabel=\"&nbsp;&nbsp;&nbsp;\u00BB\" [maxSize]=\"5\">\n </pagination-controls>\n </div> -->\n <!-- #endregion PAGINATION -->\n \n <!-- </div> -->\n \n <lib-table [list]=\"$estabelecimentosList\" paginationID=\"simpleTable\"\n [counts]=\"[ 10, 30, 50 ]\" [headers]=\"[\n { name: 'Estabelecimento', col: 11, orderColumn: 'CODIGO'},\n { name: 'A\u00E7\u00F5es', col: 1},\n ]\" (itemsPerPageChange)=\"itemsPerPage = $event\" (pageChange)=\"page = $event\"\n [emptyListMessage]=\"response_messages.emptyMessage\">\n @for (estabelecimento of $estabelecimentosList! | paginate: { id: 'simpleTable', itemsPerPage: itemsPerPage,\n currentPage:\n page }; track estabelecimento) {\n <tr innerRows class=\"align-middle\">\n <td>\n <div style=\"cursor: pointer; display: flex; flex-direction: column;\" (click)=\"selectEstabelecimento(estabelecimento.ID, estabelecimento.NOMEEXIBICAO)\">\n <span class=\"row-name\"> {{ estabelecimento.CODIGO }} - {{ estabelecimento.NOMEEXIBICAO }} </span>\n <span class=\"subname\"> {{ estabelecimento.IS_MATRIZ ? \"Matriz \" : null }} CNPJ: {{ estabelecimento.CNPJ}} </span>\n </div>\n </td>\n <td class=\"text-center align-middle\">\n <div class=\"action-icons d-flex flex-row align-items-center justify-content-around\">\n <div class=\"form-check form-switch p-0\">\n <lib-icon [iconName]=\"estabelecimento.IS_FAVORITE ? 'pp-menu-star-ativo' : 'estrela'\" iconColor=\"gray\" class=\"glb-cursor-pointer\"\n [tooltip]=\"estabelecimento.IS_FAVORITE ? 'Desmarcar favorito' : 'Marcar favorito'\" (click)=\"favoritar(!estabelecimento.IS_FAVORITE, estabelecimento.ID)\"/>\n <lib-icon class=\"glb-cursor-pointer\" [iconName]=\"estabelecimento.IS_DEFAULT ? 'toggle-on' : 'toggle-off' \"\n [iconSize]=\"30\" class=\"glb-cursor-pointer text-primary\" (click)=\"openModalEstabelecimento(modalEstabelecimento, 2)\"/>\n\n <!-- <input class=\"form-check-input glb-cursor-pointer\" type=\"checkbox\" role=\"switch\" id=\"flexSwitchCheckChecked\"\n [checked]=\"estabelecimento.IS_DEFAULT\"\n (click)=\"openModalEstabelecimento(modalEstabelecimento)\"\n style=\"transform: translateY(3px); height: 1rem; width: 28px;\" #isDefaultRow> -->\n </div>\n </div>\n\n <ng-template #modalEstabelecimento>\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">{{!estabelecimento.IS_DEFAULT ? 'Marcar como padr\u00E3o' : 'Desmarcar como padr\u00E3o'}}</h5>\n <button (click)=\"closeModalEstabelecimento(2)\" type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\"\n aria-label=\"Close\"></button>\n </div>\n \n <div class=\"modal-body\">\n <p>{{!estabelecimento.IS_DEFAULT ? 'Marcar como estabelecimento padr\u00E3o para este usu\u00E1rio. Esta a\u00E7\u00E3o ir\u00E1 realocar a exibi\u00E7\u00E3o do estabelecimento para\n o topo da lista.' : \n 'Desmarcar como estabelecimento padr\u00E3o para este usu\u00E1rio. Esta a\u00E7\u00E3o ir\u00E1 remover a exibi\u00E7\u00E3o do estabelecimento do topo da lista.'}}</p>\n </div>\n \n <div class=\"modal-footer\">\n <button (click)=\"closeModalEstabelecimento(2)\" type=\"button\" class=\"btn btn-outline-primary\"\n data-bs-dismiss=\"modal\">Cancelar</button>\n <button\n (click)=\"estabelecimento.IS_DEFAULT = !estabelecimento.IS_DEFAULT; defineDefaultEstabelecimento(estabelecimento.ID, estabelecimento.IS_DEFAULT)\"\n type=\"button\" class=\"btn btn-primary\">{{!estabelecimento.IS_DEFAULT ? 'Marcar' : 'Desmarcar'}}</button>\n </div>\n </div>\n </ng-template>\n </td>\n </tr>\n }\n </lib-table>\n\n\n\n <!-- <div class=\"d-flex justify-content-between align-items-center mt-3\">\n <span style=\"color: #6C757D\"> Registros {{$estabelecimentosList.length}} de {{$estabelecimentosList.length}} </span>\n <nav aria-label=\"...\">\n <ul class=\"pagination mb-0\">\n <li class=\"page-item disabled\"> <a class=\"page-link\" href=\"#\" tabindex=\"-1\">Anterior</a> </li>\n <li class=\"page-item active\"> <a class=\"page-link\" href=\"#\">1</a> </li>\n <li class=\"page-item\"> <a class=\"page-link\" href=\"#\">2</a> </li>\n <li class=\"page-item\"> <a class=\"page-link\" href=\"#\">3</a> </li>\n <li class=\"page-item\"> <a class=\"page-link\" href=\"#\">Pr\u00F3ximo</a> </li>\n </ul>\n </nav>\n </div> -->\n\n\n <ng-template #loading>\n <lib-spinner></lib-spinner>\n </ng-template>\n </div>\n </div>\n</div>\n\n", styles: [".table-list table thead{height:50px;font-size:1rem;background-color:#e9ecef}.table-list table thead .status-header{width:5%}.table-list table thead th:first-child{width:50px;height:50px}.table-list table thead th{font-size:16px}.table-list table .center-content{text-align:center}.table-list table tbody{font-size:.875rem}.table-list table tbody>tr:hover{background-color:#cce5ff}.table-list table tbody span.row-name{display:block;width:100%;font-weight:700}.table-list table tbody span.subname{color:#0f0f0f80}.table-list table tbody .action-icons{color:#007bff}.table-list table tbody .action-icons a{margin:0 .75rem}.table-list table tbody .status{width:13px;height:13px;border-radius:50%}.table-list table tbody .active{background-color:#28a745}.table-list table tbody .inactive{background-color:#a72828}.name-estab{font-size:14px;font-weight:700;text-transform:uppercase;color:#212529}.subname-estab{font-size:12px;color:#212529}#clearFilterBtn,#searchFilterBtn{padding:6px 12px}.subname{color:#0f0f0f80}.row-name{display:block;width:100%;font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: NgxPaginationModule }, { kind: "pipe", type: i6.PaginatePipe, name: "paginate" }, { kind: "ngmodule", type: InfraModule }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "component", type: i3.TableComponent, selector: "lib-table", inputs: ["selection", "useSelection", "selectedCount", "usePagination", "list", "counts", "itemsPerPage", "placement", "headers", "emptyListMessage", "emptyListTemplate", "showCounter", "hoverable", "usePreviousStyle", "scrollable", "useCustomPagination", "paginationID", "divBorderClass", "tableBorderClass"], outputs: ["itemsPerPageChange", "pageChange", "selectionChange", "iconClick", "sortChange", "colunasModificadas"] }, { kind: "component", type: i3.LibSpinnerComponent, selector: "lib-spinner", inputs: ["type", "theme", "size", "helperText"] }, { kind: "directive", type: i3.InnerRowsDirective, selector: "[innerRows]", inputs: ["innerRows"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i7.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }] }); }
3336
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SelecaoEstabelecimentosModalComponent, deps: [{ token: AuthStorageService }, { token: MenuServicesService }, { token: i3.MessageService }, { token: i4.BsModalService }, { token: AuthUtilService }], target: i0.ɵɵFactoryTarget.Component }); }
3337
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: SelecaoEstabelecimentosModalComponent, isStandalone: true, selector: "selecao-estabelecimentos-modal", outputs: { onClose: "onClose", onSelected: "onSelected" }, ngImport: i0, template: "<div class=\"main-container\">\n <div class=\"modal-header modal-style modal-dialog-centered\">\n <h4 class=\"modal-title pull-left color-modal\" style=\"font-size: 20px; font-weight: bold;\"> Selecione o\n estabelecimento </h4>\n <button (click)=\"closeSelf()\" type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n </div>\n <div class=\"modal-body\">\n <div class=\"modal-message\">\n <div class=\"search-and-filters d-flex flex-row align-items-center justify-content-between mb-2\">\n <div class=\"d-flex flex-row w-100\">\n <div class=\"input-group\">\n <span class=\"input-group-text px-2\" id=\"basic-addon1\"\n style=\"background-color: transparent; border-right: none;\">\n <lib-icon iconName=\"lupa\" iconColor=\"gray\"/>\n </span>\n <input type=\"text\" class=\"form-control border-start-0 ps-0\" id=\"pesquisaInput\" #pesquisa\n placeholder=\"Pesquise o c\u00F3digo ou nome do estabelecimento\" (keyup.enter)=\"refreshList(pesquisa.value)\">\n </div>\n </div>\n\n <div class=\"filters d-flex align-items-center justify-content-between ms-3\">\n <div class=\"search-buttons d-flex flex-row align-items-center my-0 mx-0\">\n <button id=\"clearFilterBtn\" class=\"btn btn-outline-primary ms-0 no-hover-btn me-2\"\n (click)=\"pesquisa.value = ''; refreshList(pesquisa.value)\"> Limpar </button>\n <button id=\"searchFilterBtn\" class=\"btn btn-primary me-0\" (click)=\"refreshList(pesquisa.value)\"> Pesquisar\n </button>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"table-list w-100 mt-3\" *ngIf=\"$estabelecimentosList; else loading\">\n <table class=\"table table-bordered table-hover mb-0\">\n <thead class=\"fs-6\">\n <tr>\n <th scope=\"col\" class=\"col-11 align-middle th\">Estabelecimento</th>\n <th scope=\"col\" class=\"col-1 align-middle text-center th\">A\u00E7\u00F5es</th>\n </tr>\n </thead>\n\n <tbody *ngIf=\"$estabelecimentosList.length > 0; else emptyList\">\n <tr\n *ngFor=\"let estabelecimento of $estabelecimentosList | paginate: { itemsPerPage: itemsPerPage, currentPage: page }\">\n <td>\n <div style=\"cursor: pointer;\" (click)=\"selectEstabelecimento(estabelecimento.ID, estabelecimento.NOMEEXIBICAO)\">\n <span class=\"row-name\"> {{ estabelecimento.CODIGO }} - {{ estabelecimento.NOMEEXIBICAO }} </span>\n <span class=\"subname\"> {{ estabelecimento.IS_MATRIZ ? \"Matriz \" : null }} CNPJ: {{ estabelecimento.CNPJ\n }} </span>\n </div>\n </td>\n <td class=\"text-center align-middle\">\n <div class=\"action-icons d-flex flex-row align-items-center justify-content-around\">\n <div class=\"form-check form-switch\">\n <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"flexSwitchCheckChecked\"\n tooltip=\"Estabelecimento padr\u00E3o\" [checked]=\"estabelecimento.IS_DEFAULT\"\n style=\"transform: translateY(3px); height: 1rem; width: 28px;\" #isDefaultRow\n (click)=\"estabelecimento.IS_DEFAULT = !estabelecimento.IS_DEFAULT; defineDefaultEstabelecimento(estabelecimento.ID, estabelecimento.IS_DEFAULT)\">\n </div>\n </div>\n </td>\n </tr>\n </tbody> -->\n\n\n\n <!-- #region EMPTY LIST CELL -->\n <!-- <ng-template #emptyList>\n <tbody>\n <tr>\n <td colspan=\"2\" class=\"align-middle\"><span class=\"row-name fw-light fst-italic text-center\"> {{\n response_messages.emptyMessage }} </span></td>\n </tr>\n </tbody>\n </ng-template> -->\n <!-- #endregion EMPTY LIST CELL -->\n <!-- </table> -->\n\n <!-- #region PAGINATION -->\n <!-- <div class=\"d-flex justify-content-end mt-2\" *ngIf=\"$estabelecimentosList.length > 0\">\n <div class=\"d-flex align-items-center\">\n <label class=\"me-2\" style=\"white-space: nowrap;\">Itens por p\u00E1gina</label>\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\n <option class=\"selected\" value=\"10\" selected>10</option>\n <option value=\"25\">25</option>\n <option value=\"50\">50</option>\n </select>\n </div>\n\n <pagination-controls class=\"sp-pagination mt-3\" (pageChange)=\"page = $event\"\n previousLabel=\"\u00AB&nbsp;&nbsp;&nbsp;\" nextLabel=\"&nbsp;&nbsp;&nbsp;\u00BB\" [maxSize]=\"5\">\n </pagination-controls>\n </div> -->\n <!-- #endregion PAGINATION -->\n \n <!-- </div> -->\n \n <lib-table [list]=\"$estabelecimentosList\" paginationID=\"simpleTable\"\n [counts]=\"[ 10, 30, 50 ]\" [headers]=\"[\n { name: 'Estabelecimento', col: 11, orderColumn: 'CODIGO'},\n { name: 'A\u00E7\u00F5es', col: 1},\n ]\" (itemsPerPageChange)=\"itemsPerPage = $event\" (pageChange)=\"page = $event\"\n [emptyListMessage]=\"response_messages.emptyMessage\">\n @for (estabelecimento of $estabelecimentosList! | paginate: { id: 'simpleTable', itemsPerPage: itemsPerPage,\n currentPage:\n page }; track estabelecimento) {\n <tr innerRows class=\"align-middle\">\n <td>\n <div style=\"cursor: pointer; display: flex; flex-direction: column;\" (click)=\"selectEstabelecimento(estabelecimento.ID, estabelecimento.NOMEEXIBICAO)\">\n <span class=\"row-name\"> {{ estabelecimento.CODIGO }} - {{ estabelecimento.NOMEEXIBICAO }} </span>\n <span class=\"subname\"> {{ estabelecimento.IS_MATRIZ ? \"Matriz \" : null }} CNPJ: {{ estabelecimento.CNPJ}} </span>\n </div>\n </td>\n <td class=\"text-center align-middle\">\n <div class=\"action-icons d-flex flex-row align-items-center justify-content-around\">\n <div class=\"form-check form-switch p-0\">\n <lib-icon [iconName]=\"estabelecimento.IS_FAVORITE ? 'pp-menu-star-ativo' : 'estrela'\" iconColor=\"gray\" class=\"glb-cursor-pointer\"\n [tooltip]=\"estabelecimento.IS_FAVORITE ? 'Desmarcar favorito' : 'Marcar favorito'\" (click)=\"favoritar(!estabelecimento.IS_FAVORITE, estabelecimento.ID)\"/>\n <lib-icon class=\"glb-cursor-pointer\" [iconName]=\"estabelecimento.IS_DEFAULT ? 'toggle-on' : 'toggle-off' \"\n [iconSize]=\"30\" class=\"glb-cursor-pointer text-primary\" (click)=\"openModalEstabelecimento(modalEstabelecimento, 2)\"/>\n\n <!-- <input class=\"form-check-input glb-cursor-pointer\" type=\"checkbox\" role=\"switch\" id=\"flexSwitchCheckChecked\"\n [checked]=\"estabelecimento.IS_DEFAULT\"\n (click)=\"openModalEstabelecimento(modalEstabelecimento)\"\n style=\"transform: translateY(3px); height: 1rem; width: 28px;\" #isDefaultRow> -->\n </div>\n </div>\n\n <ng-template #modalEstabelecimento>\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">{{!estabelecimento.IS_DEFAULT ? 'Marcar como padr\u00E3o' : 'Desmarcar como padr\u00E3o'}}</h5>\n <button (click)=\"closeModalEstabelecimento(2)\" type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\"\n aria-label=\"Close\"></button>\n </div>\n \n <div class=\"modal-body\">\n <p>{{!estabelecimento.IS_DEFAULT ? 'Marcar como estabelecimento padr\u00E3o para este usu\u00E1rio. Esta a\u00E7\u00E3o ir\u00E1 realocar a exibi\u00E7\u00E3o do estabelecimento para\n o topo da lista.' : \n 'Desmarcar como estabelecimento padr\u00E3o para este usu\u00E1rio. Esta a\u00E7\u00E3o ir\u00E1 remover a exibi\u00E7\u00E3o do estabelecimento do topo da lista.'}}</p>\n </div>\n \n <div class=\"modal-footer\">\n <button (click)=\"closeModalEstabelecimento(2)\" type=\"button\" class=\"btn btn-outline-primary\"\n data-bs-dismiss=\"modal\">Cancelar</button>\n <button\n (click)=\"estabelecimento.IS_DEFAULT = !estabelecimento.IS_DEFAULT; defineDefaultEstabelecimento(estabelecimento.ID, estabelecimento.IS_DEFAULT)\"\n type=\"button\" class=\"btn btn-primary\">{{!estabelecimento.IS_DEFAULT ? 'Marcar' : 'Desmarcar'}}</button>\n </div>\n </div>\n </ng-template>\n </td>\n </tr>\n }\n </lib-table>\n\n\n\n <!-- <div class=\"d-flex justify-content-between align-items-center mt-3\">\n <span style=\"color: #6C757D\"> Registros {{$estabelecimentosList.length}} de {{$estabelecimentosList.length}} </span>\n <nav aria-label=\"...\">\n <ul class=\"pagination mb-0\">\n <li class=\"page-item disabled\"> <a class=\"page-link\" href=\"#\" tabindex=\"-1\">Anterior</a> </li>\n <li class=\"page-item active\"> <a class=\"page-link\" href=\"#\">1</a> </li>\n <li class=\"page-item\"> <a class=\"page-link\" href=\"#\">2</a> </li>\n <li class=\"page-item\"> <a class=\"page-link\" href=\"#\">3</a> </li>\n <li class=\"page-item\"> <a class=\"page-link\" href=\"#\">Pr\u00F3ximo</a> </li>\n </ul>\n </nav>\n </div> -->\n\n\n <ng-template #loading>\n <lib-spinner></lib-spinner>\n </ng-template>\n </div>\n </div>\n</div>\n\n", styles: [".table-list table thead{height:50px;font-size:1rem;background-color:#e9ecef}.table-list table thead .status-header{width:5%}.table-list table thead th:first-child{width:50px;height:50px}.table-list table thead th{font-size:16px}.table-list table .center-content{text-align:center}.table-list table tbody{font-size:.875rem}.table-list table tbody>tr:hover{background-color:#cce5ff}.table-list table tbody span.row-name{display:block;width:100%;font-weight:700}.table-list table tbody span.subname{color:#0f0f0f80}.table-list table tbody .action-icons{color:#007bff}.table-list table tbody .action-icons a{margin:0 .75rem}.table-list table tbody .status{width:13px;height:13px;border-radius:50%}.table-list table tbody .active{background-color:#28a745}.table-list table tbody .inactive{background-color:#a72828}.name-estab{font-size:14px;font-weight:700;text-transform:uppercase;color:#212529}.subname-estab{font-size:12px;color:#212529}#clearFilterBtn,#searchFilterBtn{padding:6px 12px}.subname{color:#0f0f0f80}.row-name{display:block;width:100%;font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: NgxPaginationModule }, { kind: "pipe", type: i6.PaginatePipe, name: "paginate" }, { kind: "ngmodule", type: InfraModule }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "component", type: i3.TableComponent, selector: "lib-table", inputs: ["selection", "useSelection", "selectedCount", "usePagination", "list", "counts", "itemsPerPage", "placement", "headers", "emptyListMessage", "emptyListTemplate", "showCounter", "hoverable", "usePreviousStyle", "scrollable", "useCustomPagination", "paginationID", "divBorderClass", "tableBorderClass"], outputs: ["itemsPerPageChange", "pageChange", "selectionChange", "iconClick", "sortChange", "colunasModificadas"] }, { kind: "component", type: i3.LibSpinnerComponent, selector: "lib-spinner", inputs: ["type", "theme", "size", "helperText"] }, { kind: "directive", type: i3.InnerRowsDirective, selector: "[innerRows]", inputs: ["innerRows"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i7$1.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }] }); }
3343
3338
  }
3344
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SelecaoEstabelecimentosModalComponent, decorators: [{
3339
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SelecaoEstabelecimentosModalComponent, decorators: [{
3345
3340
  type: Component,
3346
3341
  args: [{ selector: 'selecao-estabelecimentos-modal', imports: [
3347
3342
  NgxPaginationModule,
@@ -3425,10 +3420,10 @@ class VersoesModalComponent {
3425
3420
  });
3426
3421
  return list;
3427
3422
  }
3428
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: VersoesModalComponent, deps: [{ token: MenuServicesService }, { token: AuthUtilService }], target: i0.ɵɵFactoryTarget.Component }); }
3429
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: VersoesModalComponent, isStandalone: true, selector: "versoes-modal", outputs: { onClose: "onClose" }, ngImport: i0, template: "<div class=\"main-container\">\n <div class=\"modal-header modal-style modal-dialog-centered modal-lg\">\n <h4 class=\"modal-title pull-left color-modal fw-bold placeholder-glow w-100\" style=\"font-size: 20px;\">\n \n @defer (when versionBase) {\n Vers\u00E3o atual: <a type=\"button\" class=\"text-decoration-none text-primary fw-bold\" tooltip=\"Clique aqui para acessar o que mudou nesta vers\u00E3o\" [href]=\"releaseNotesUrl+'/versoes/'+versionBase+'/_'\" target=\"_blank\">{{ versionBase }}</a>\n }\n @placeholder { <span class=\"placeholder w-100\"></span> }\n \n </h4>\n <button (click)=\"closeSelf()\" type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n </div>\n <div class=\"modal-body\">\n <p>Patches dos m\u00F3dulos espec\u00EDficos:</p>\n\n @defer (when versions) {\n <div class=\"accordion\" id=\"accordionVersoes\">\n @for (grupo of versions; track $index) {\n\n @if (!grupo.projetos) {\n <div class=\"accordion-item\">\n <h2 class=\"accordion-header\">\n <div class=\"accordion-button noicon-accordion-item collapsed fw-bold\">\n <span>{{ grupo.grupo }} | <a type=\"button\" class=\"text-decoration-none text-primary fw-bold\" tooltip=\"Clique aqui para acessar o que mudou nesta vers\u00E3o\" [href]=\"releaseNotesUrl+'/versoes/'+versionBase+'/'+grupo.grupo\" target=\"_blank\" >{{ versionBase + '_' + grupo.versao }} <lib-icon iconName=\"acessoexterno\" iconSize=\"small\" /> </a></span>\n </div>\n </h2>\n </div>\n }\n @else {\n <div class=\"accordion-item\">\n <h2 class=\"accordion-header\">\n <button class=\"accordion-button collapsed fw-bold\" type=\"button\" data-bs-toggle=\"collapse\" [attr.data-bs-target]=\"'#collapse-'+$index\" aria-expanded=\"false\" [attr.aria-controls]=\"'#collapse-'+$index\">\n {{ grupo.grupo }}\n </button>\n </h2>\n \n <div [id]=\"'collapse-'+$index\" class=\"accordion-collapse collapse\">\n <div class=\"accordion-body p-3 border border-top-0 border-bottom-0\">\n <ul class=\"p-0 m-0 d-flex flex-column gap-2\">\n @for (projeto of grupo.projetos; track projeto.nome) {\n <li>\n <span class=\"fw-bold\">{{ projeto.nome }} | <a type=\"button\" class=\"text-decoration-none text-primary fw-bold\" tooltip=\"Clique aqui para acessar o que mudou nesta vers\u00E3o\" [href]=\"releaseNotesUrl+'/versoes/'+versionBase+'/'+projeto.nome\" target=\"_blank\" >{{ versionBase + '_' + projeto.versao }} <lib-icon iconName=\"acessoexterno\" iconSize=\"small\" /> </a></span>\n </li>\n }\n </ul>\n </div>\n </div>\n </div>\n }\n\n }\n </div>\n }\n @placeholder {\n <span class=\"placeholder-glow\">\n <span class=\"placeholder w-100\"></span>\n </span>\n }\n\n <p class=\"mb-0 mt-3\">Acesse as release notes de todas as vers\u00F5es do ERP <a [href]=\"releaseNotesUrl\" target=\"_blank\" class=\"fw-bold text-decoration-none text-primary\">clicando aqui</a> </p>\n </div>\n</div>", styles: ["ul{list-style-type:none!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: InfraModule }], deferBlockDependencies: [null, () => [i3.LibIconsComponent]] }); }
3423
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: VersoesModalComponent, deps: [{ token: MenuServicesService }, { token: AuthUtilService }], target: i0.ɵɵFactoryTarget.Component }); }
3424
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: VersoesModalComponent, isStandalone: true, selector: "versoes-modal", outputs: { onClose: "onClose" }, ngImport: i0, template: "<div class=\"main-container\">\n <div class=\"modal-header modal-style modal-dialog-centered modal-lg\">\n <h4 class=\"modal-title pull-left color-modal fw-bold placeholder-glow w-100\" style=\"font-size: 20px;\">\n \n @defer (when versionBase) {\n Vers\u00E3o atual: <a type=\"button\" class=\"text-decoration-none text-primary fw-bold\" tooltip=\"Clique aqui para acessar o que mudou nesta vers\u00E3o\" [href]=\"releaseNotesUrl+'/versoes/'+versionBase+'/_'\" target=\"_blank\">{{ versionBase }}</a>\n }\n @placeholder { <span class=\"placeholder w-100\"></span> }\n \n </h4>\n <button (click)=\"closeSelf()\" type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n </div>\n <div class=\"modal-body\">\n <p>Patches dos m\u00F3dulos espec\u00EDficos:</p>\n\n @defer (when versions) {\n <div class=\"accordion\" id=\"accordionVersoes\">\n @for (grupo of versions; track $index) {\n\n @if (!grupo.projetos) {\n <div class=\"accordion-item\">\n <h2 class=\"accordion-header\">\n <div class=\"accordion-button noicon-accordion-item collapsed fw-bold\">\n <span>{{ grupo.grupo }} | <a type=\"button\" class=\"text-decoration-none text-primary fw-bold\" tooltip=\"Clique aqui para acessar o que mudou nesta vers\u00E3o\" [href]=\"releaseNotesUrl+'/versoes/'+versionBase+'/'+grupo.grupo\" target=\"_blank\" >{{ versionBase + '_' + grupo.versao }} <lib-icon iconName=\"acessoexterno\" iconSize=\"small\" /> </a></span>\n </div>\n </h2>\n </div>\n }\n @else {\n <div class=\"accordion-item\">\n <h2 class=\"accordion-header\">\n <button class=\"accordion-button collapsed fw-bold\" type=\"button\" data-bs-toggle=\"collapse\" [attr.data-bs-target]=\"'#collapse-'+$index\" aria-expanded=\"false\" [attr.aria-controls]=\"'#collapse-'+$index\">\n {{ grupo.grupo }}\n </button>\n </h2>\n \n <div [id]=\"'collapse-'+$index\" class=\"accordion-collapse collapse\">\n <div class=\"accordion-body p-3 border border-top-0 border-bottom-0\">\n <ul class=\"p-0 m-0 d-flex flex-column gap-2\">\n @for (projeto of grupo.projetos; track projeto.nome) {\n <li>\n <span class=\"fw-bold\">{{ projeto.nome }} | <a type=\"button\" class=\"text-decoration-none text-primary fw-bold\" tooltip=\"Clique aqui para acessar o que mudou nesta vers\u00E3o\" [href]=\"releaseNotesUrl+'/versoes/'+versionBase+'/'+projeto.nome\" target=\"_blank\" >{{ versionBase + '_' + projeto.versao }} <lib-icon iconName=\"acessoexterno\" iconSize=\"small\" /> </a></span>\n </li>\n }\n </ul>\n </div>\n </div>\n </div>\n }\n\n }\n </div>\n }\n @placeholder {\n <span class=\"placeholder-glow\">\n <span class=\"placeholder w-100\"></span>\n </span>\n }\n\n <p class=\"mb-0 mt-3\">Acesse as release notes de todas as vers\u00F5es do ERP <a [href]=\"releaseNotesUrl\" target=\"_blank\" class=\"fw-bold text-decoration-none text-primary\">clicando aqui</a> </p>\n </div>\n</div>", styles: ["ul{list-style-type:none!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: InfraModule }], deferBlockDependencies: [null, () => [i3.LibIconsComponent]] }); }
3430
3425
  }
3431
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: VersoesModalComponent, decorators: [{
3426
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: VersoesModalComponent, decorators: [{
3432
3427
  type: Component,
3433
3428
  args: [{ selector: 'versoes-modal', imports: [
3434
3429
  CommonModule,
@@ -3773,10 +3768,10 @@ class MenuLateralComponent {
3773
3768
  }
3774
3769
  });
3775
3770
  }
3776
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MenuLateralComponent, deps: [{ token: MSAL_GUARD_CONFIG }, { token: i1$2.MsalService }, { token: i10.ToastrService }, { token: LibCustomEnvironmentService }, { token: AuthStorageService }, { token: i4.BsModalService }, { token: MenuServicesService }, { token: i3.MessageService }, { token: AuthUtilService }, { token: i1$1.Router }, { token: AuthService }, { token: i11.BreakpointObserver }, { token: LibCustomMenuService }, { token: PesquisaTelasGlobalService }, { token: IndexedDBService }], target: i0.ɵɵFactoryTarget.Component }); }
3777
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: MenuLateralComponent, isStandalone: true, selector: "app-menu-lateral", queries: [{ propertyName: "desiredContent", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "sidebar", first: true, predicate: ["sidebar"], descendants: true, static: true }, { propertyName: "notif_template", first: true, predicate: ["notif_menu"], descendants: true }, { propertyName: "menuLink", first: true, predicate: ["menuLink"], descendants: true }], ngImport: i0, template: "<!-- #region MAIN CONTENT -->\n<div id=\"menu\" class=\"main col-12\">\n\n <div style=\"height: 100vh; z-index: 3;\" class=\"sidebar-control position-relative d-flex flex-row\" #menuContainer\n (clickOutside)=\"closeMenu == true ? onClickedOutside($event, submenu_ref) : closeMenu = true\">\n <div class=\"sidebar {{_customMenuService.themeColor}} closed\" [ngClass]=\"{'closed-mobile': isMobile && !isMenuOpened}\" #sidebar>\n <div class=\"menu-header\">\n <ul>\n <li class=\"mb-3\">\n <div class=\"logo-hamburguer\">\n <img src=\"assets/icons/logotipo-sispro.svg\" alt=\"logo-sispro\" class=\"logo-sispro\" title=\"logo\" width=\"136px\" height=\"48px\">\n <button class=\"button-hamburguer\" (click)=\"isMenuOpened = !isMenuOpened; openExpansibleMenu(sidebar);\">\n <img src=\"assets/icons/menu.svg\" alt=\"menu hamburguer\">\n </button>\n </div>\n </li>\n\n <!-- #region M\u00D3DULOS -->\n <li class=\"mb-3\" style=\"margin-left: 8px; margin-right: 8px\">\n <div class=\"btn-group\">\n <button (click)=\"dropdownWasOpened(true)\" type=\"button\" class=\"dropdown-button\" data-bs-toggle=\"dropdown\"\n aria-expanded=\"false\" data-bs-auto-close=\"outside\">\n <ng-container>\n <lib-icon iconColor=\"white\" [iconName]=\"_customMenuService.moduleSvg\" />\n <span class=\"ps-2\"> {{ this._customMenuService.moduleName }} <lib-icon iconName=\"seta-direita\" iconColor=\"white\" /> </span>\n </ng-container>\n </button>\n <ul class=\"dropdown-menu\" #dropdown_ref>\n <app-primary-dropdown [buttonWasClicked]=\"messageIfClicked\"></app-primary-dropdown>\n </ul>\n </div>\n </li>\n <!-- #endregion M\u00D3DULOS -->\n\n <!-- #region ESTABELECIMENTOS -->\n <li class=\"mx-3\" style=\"margin-bottom: 16px;\">\n <div class=\"icon-estabelecimento\">\n <button class=\"row justify-content-between bg-transparent border-0\"\n (click)=\"openModalEstabelecimento(modalEstabelecimento)\"\n [tooltip]=\"!sidebar.classList.contains('closed') ? '' : nomeEstabelecimento\" placement=\"right\">\n\n <lib-icon class=\"col-1\" iconName=\"predio\" iconColor=\"white\" />\n <span *ngIf=\"!sidebar.classList.contains('closed')\" class=\"col-9 ps-2 glb-text-width-160 text-start text-truncate\"> {{ nomeEstabelecimento }} </span>\n <lib-icon *ngIf=\"!sidebar.classList.contains('closed')\" class=\"col-1\" iconName=\"seta-direita\" iconColor=\"white\" />\n </button>\n </div>\n </li>\n <!-- #endregion ESTABELECIMENTOS -->\n\n\n <!-- #region PESQUISA -->\n @if (_customMenuService.menuDynamic) {\n <li class=\"mx-3 mb-3\">\n <div class=\"icon-pesquisa\">\n <button class=\"d-flex align-items-center justify-content-start gap-2 bg-transparent border-0\" (click)=\"_pesquisaTelas.show()\"\n [tooltip]=\"!sidebar.classList.contains('closed') ? '' : 'Pesquisar telas'\" placement=\"right\">\n\n <lib-icon class=\"col-1\" iconName=\"lupa\" iconColor=\"white\" />\n @if (!sidebar.classList.contains('closed')) { <span class=\"col ps-2 text-start text-truncate\"> Pesquisar telas </span> }\n </button>\n </div>\n </li>\n }\n <!-- #endregion PESQUISA -->\n\n </ul>\n\n </div>\n\n <!-- #region MENUS DE NAVEGA\u00C7\u00C3O -->\n <div class=\"main-menu\">\n <div class=\"scroll\">\n <div class=\"list-menu px-2 pb-1\">\n\n <!-- #region MENU DIN\u00C2MICO -->\n <div class=\"dynamic-menu\">\n <ul #dynamic_menu_items *ngIf=\"_customMenuService.menuItems; else isLoading\">\n\n <li *ngFor=\"let menuItem of _customMenuService.menuItems; let i = index\"\n class=\"p-1 rounded\"\n (click)=\"openSubmenu(menuItem, submenu_ref, dynamic_menu)\"\n [class.selectedItem]=\"menuItem.isSelected\">\n\n <a *ngIf=\"!menuItem.isExternal && !menuItem.isOutroModulo; else externalMenu\"\n [routerLink]=\"menuItem.route != '' ? menuItem.route : null\"\n [id]=\"'item' + menuItem.id\"\n [tooltip]=\"!sidebar.classList.contains('closed') ? '' : menuItem.label\"\n placement=\"left\" class=\"w-100 d-flex align-items-center button-icons text-decoration-none p-1 glb-cursor-pointer\"\n [class]=\"sidebar.classList.contains('closed') ? 'justify-content-center' : 'justify-content-between'\">\n\n <div class=\"container\">\n <lib-icon *ngIf=\"!menuItem.icon.includes('assets/icons'); else iconImg\" [iconName]=\"menuItem.icon\" iconColor=\"white\"/>\n <span class=\"span-main\">{{ menuItem.label }}</span>\n <ng-template #iconImg>\n <img [src]=\"menuItem.icon\" [alt]=\"'icone: ' + menuItem.label\">\n </ng-template>\n </div>\n <lib-icon *ngIf=\"(menuItem.children && menuItem.children.length > 0) && !sidebar.classList.contains('closed')\"\n iconName=\"seta-direita\" iconColor=\"white\"/>\n </a>\n\n <ng-template #externalMenu>\n <a [href]=\"getExternalUrl(menuItem.route,menuItem.isOutroModulo)\"\n target=\"_blank\"\n [id]=\"'item' + menuItem.id\"\n [tooltip]=\"!sidebar.classList.contains('closed') ? '' : menuItem.label\"\n placement=\"left\" class=\"w-100 d-flex align-items-center button-icons text-decoration-none p-1 glb-cursor-pointer\"\n [class]=\"sidebar.classList.contains('closed') ? 'justify-content-center' : 'justify-content-between'\">\n\n <div class=\"container\">\n <lib-icon *ngIf=\"!menuItem.icon.includes('assets/icons'); else iconImgExternal\" [iconName]=\"menuItem.icon\" iconColor=\"white\"/>\n <span class=\"span-main\">{{ menuItem.label }}</span>\n <ng-template #iconImgExternal>\n <img [src]=\"menuItem.icon\" [alt]=\"'icone: ' + menuItem.label\">\n </ng-template>\n </div>\n <lib-icon *ngIf=\"(menuItem.children && menuItem.children.length > 0) && !sidebar.classList.contains('closed')\"\n iconName=\"seta-direita\" iconColor=\"white\"/>\n </a>\n </ng-template>\n </li>\n\n </ul>\n </div>\n\n <ng-template #isLoading>\n <li class=\"spinner-border spinner-border-sm mt-2\" role=\"status\" aria-hidden=\"true\"></li>\n </ng-template>\n <!-- #endregion MENU DIN\u00C2MICO -->\n\n </div>\n </div>\n </div>\n <!-- #endregion MENUS DE NAVEGA\u00C7\u00C3O -->\n\n <!-- #region FOOTER -->\n <div class=\"footer-menu glb-cursor-pointer\" (mouseenter)=\"showBalloon = true\" (mouseleave)=\"showBalloon = false\"\n [popover]=\"popoverContent\" placement=\"right bottom\" [outsideClick]=\"true\" containerClass=\"width: 200px\" >\n <div class=\"footer-components d-flex flex-row align-items-center gap-2 py-2 px-1 justify-content-center gap-2\" [class.open]=\"showBalloon\">\n @if (footerUserImgSrc) {\n <img class=\"photo-profile\" [src]=\"['data:image/jpeg;base64,' + footerUserImgSrc]\" alt=\"foto-perfil\">\n }\n @else {\n <lib-icon iconName=\"contraparte\" iconColor=\"white\"/>\n }\n\n <span class=\"text-truncate fw-bold text-start\" style=\"max-width: 100%;\"> {{ footerUserName }} </span>\n </div>\n </div>\n\n <ng-template #popoverContent>\n <div class=\"footer-menu\" style=\"width: 1000px;\">\n <div class=\"d-flex align-items-center\">\n <img *ngIf=\"footerUserImgSrc; else noUserImg\" class=\"photo-profile\"\n [src]=\"['data:image/jpeg;base64,' + footerUserImgSrc]\" alt=\"foto-perfil\">\n <ng-template #noUserImg>\n <lib-icon iconName=\"contraparte\" iconColor=\"currentColor\"/>\n </ng-template>\n <div class=\"d-flex flex-column ms-1\">\n <div [tooltip]=\"footerUserName\" class=\"dynamic-container\" style=\"white-space: nowrap; flex-grow: 1;max-width: 200px; font-size: 16px;\">{{footerUserName}}</div>\n <div [tooltip]=\"footerUserEmail\" class=\"dynamic-container\" style=\"white-space: nowrap; font-size: 12px; flex-grow: 1;max-width: 200px;\">{{footerUserEmail}}</div>\n </div>\n </div>\n </div>\n <hr class=\"mb-2 mt-2\">\n <div routerLink=\"meu-perfil\" style=\"cursor: pointer;\" (click)=\"togglePopover(); $event.stopPropagation()\">\n <lib-icon [iconSize]=\"'small'\" iconName=\"contraparte\"/> Meu Perfil\n </div>\n \n <div class=\"mt-2\" style=\"cursor: pointer;\" (click)=\"openModalVersion(modalVersion)\">\n <lib-icon [iconSize]=\"'small'\" iconName=\"info\"/> Vers\u00E3o\n </div>\n\n <div class=\"mt-2\" style=\"cursor: pointer;\" (click)=\"deleteIDB()\">\n <lib-icon [iconSize]=\"'small'\" iconName=\"lixeira\"/> Limpar filtros salvos\n </div>\n\n <div class=\"mt-2\" (click)=\"logout()\" style=\"cursor: pointer;\">\n <lib-icon [iconSize]=\"'small'\" iconName=\"logout\"/> Sair\n </div>\n </ng-template>\n <!-- #endregion FOOTER -->\n\n </div>\n\n <div class=\"submenu\" #submenu_ref>\n <ng-template [ngIf]=\"desiredContent !== null\">\n <ng-content *ngTemplateOutlet=\"desiredContent!; context: {$implicit: submenuList}\"></ng-content>\n </ng-template>\n </div>\n </div>\n\n <div class=\"main-content col d-flex flex-column align-content-between\" id=\"body-content\">\n <div class=\"content\" style=\"position: relative;\">\n <router-outlet></router-outlet>\n </div>\n <div app-footer></div>\n </div>\n\n</div>\n<!-- #endregion MAIN CONTENT -->\n\n<!-- #region TEMPLATES -->\n<ng-template #dynamic_menu let-data>\n <app-dynamic-menu\n [submenuList]=\"data\"\n [titleSubmenu]=\"titleSubmenu\" [submenuRef]=\"submenu_ref\" [recebeParam]=\"onClickedOutside.bind(this)\"\n [hostServerOutSystems]=\"HostServerOutSystems\">\n </app-dynamic-menu>\n</ng-template>\n\n<ng-template #notif_menu>\n <app-notif-submenu></app-notif-submenu>\n</ng-template>\n\n<!-- #region MODAL SELECAO ESTABELECIMENTO -->\n<ng-template #modalEstabelecimento>\n <selecao-estabelecimentos-modal (onClose)=\"closeModalEstabelecimento()\"\n (onSelected)=\"closeModalEstabelecimento(); updateLastLogEstabelecimento($event);\">\n </selecao-estabelecimentos-modal>\n</ng-template>\n<!-- #endregion MODAL SELECAO ESTABELECIMENTO -->\n\n<!-- #region MODAL VERSION -->\n<ng-template #modalVersion>\n <versoes-modal (onClose)=\"closeModalVersion()\" />\n</ng-template>\n<!-- #endregion MODAL VERSION -->\n\n<!-- #endregion TEMPLATES -->\n", styles: ["*{padding:0;margin:0;font-family:Open sans,Arial,Helvetica,sans-serif;font-size:14px}span{color:#fff}ul{list-style:none;padding-left:0;white-space:nowrap}#menu.main{display:flex;width:100%;height:100%;background:#eee}::-webkit-scrollbar{width:8px;background:transparent}::-webkit-scrollbar-thumb{background:#bbb;border-radius:16px}.main-content{width:100%;z-index:0;overflow-y:auto;overflow:overlay;height:100vh}.main-content .content{padding:0 16px 16px;background-color:#eee!important}.disable-scroll{overflow-y:hidden}.dropdown-button{padding:8px;border-radius:8px;background-color:#3265ee;border:none;font-size:14px;font-weight:700;width:100%;display:flex}.dropdown-button span{width:100%;display:flex;justify-content:space-between}.dropdown-menu{width:300px;border-radius:8px}.dropdown-menu li{margin:16px 8px}.dropdown-menu li a{font-size:14px}.dropdown-menu li a:hover{font-weight:700;background-color:transparent}.dropdown-menu .dropdown-divider{height:0}.link-portal{color:#213b70;text-decoration:underline;text-align:center;font-weight:700;font-size:14px}.container{display:flex;width:max-content}.sidebar{display:flex;flex-direction:column;height:100%;grid-template-rows:min-content;box-sizing:border-box;transition:width .5s;background-color:#213b70;max-width:inherit}.sidebar .footer-menu{justify-content:flex-end}.menu-header{display:flex;flex-direction:column;white-space:nowrap;padding:32px 0 0;background-color:#213b70}.menu-header ul li{margin-left:16px;margin-right:16px}.menu-header ul>li:last-child{border-bottom:1px solid #3265ee;padding-bottom:15px;height:auto}.dropdown{margin:0}.btn-group{width:100%}.sidebar.closed .menu-header ul li{margin-left:0;margin-right:0}.sidebar.closed .menu-header{display:flex;flex-direction:column;align-items:center}.icon-estabelecimento button,.icon-pesquisa button{display:flex;flex-direction:row;width:100%;align-items:center;justify-content:center}.icon-estabelecimento button span:hover,.icon-pesquisa button span:hover{font-weight:700}.header-content{display:flex;flex-direction:column;justify-content:space-evenly;height:100%;margin:0 20px}.logo-hamburguer{display:flex;justify-content:space-between;margin-right:8px}.logo-hamburguer .button-hamburguer{border:none;background-color:transparent}.sidebar.closed .logo-hamburguer{justify-content:center;margin-right:0}.scroll{overflow-y:auto;overflow-x:hidden;min-height:20%;margin-right:2px}.list-menu{padding-left:16px;padding-right:8px;display:flex;flex-direction:column;justify-content:center;white-space:nowrap}.list-menu .text-closed{padding-top:15px;display:none;color:#fff}.list-menu .text-opened{color:#fff;font-size:12px;padding-top:15px;visibility:visible;white-space:nowrap}.list-menu .li-main{padding:10px 7px;border-radius:8px}.list-menu .onSelect{background-color:#3265ee}.list-menu div.static-menu>ul>li:first-child{margin-top:16px}.list-menu .span-main{font-size:14px;margin-left:8px;opacity:1;pointer-events:auto;white-space:break-spaces}.list-menu .span-main:hover,.list-menu .list-options span:hover{font-weight:700}.list-menu p{font-size:10px;font-weight:700;text-transform:uppercase;border-bottom:1px solid #3265ee;visibility:hidden}.selectedItem{background-color:#3265ee}.selectedItem span{font-weight:700;background-color:transparent}.notif{padding:2px 13px;margin-bottom:none;background-color:#000;border-radius:8px;font-weight:700}.sidebar.closed .chevron{display:none}.sidebar.closed .icon-estabelecimento,.sidebar.closed .icon-pesquisa{margin:0}.sidebar.closed .icon-estabelecimento button,.sidebar.closed .icon-pesquisa button{justify-content:center}.sidebar.closed .icon-estabelecimento button img,.sidebar.closed .icon-pesquisa button img{margin:0}.align-chevron{width:100%;text-align:justify;align-items:center;display:flex;justify-content:space-between}.selected-color{background-color:#3265ee}.main-menu{display:flex;flex-direction:column;justify-content:space-between;height:100%;min-height:20%}.button-icons{border:none;background-color:transparent}.footer-menu{display:flex;flex-direction:column}.footer-menu .footer-components{border-top:1px solid #3265ee}.footer-menu .footer-components .button-closed{display:none}.footer-menu button{border:none;background-color:transparent;border-radius:8px}.footer-menu .points{padding:4px 0;margin:4px 0;border-radius:8px}.footer-menu .photo-profile{width:32px;height:32px;border-radius:50%;margin:0}.footer-menu .open-user{background-color:#3265ee}.submenu{width:341px;display:none;background-color:#3265ee;box-sizing:border-box;flex-direction:column;overflow:hidden;box-shadow:0 4px 8px #0000004d}.submenu ul{display:flex;flex-direction:column;margin:25px 26px 0 24px}.submenu ul li{font-size:20px;font-weight:600;line-height:22px;padding-bottom:18px}.submenu .itens-list{display:flex;justify-content:space-between;align-items:center}.submenu .itens-list .favoritos,.submenu .itens-list span{cursor:pointer}.submenu .footer-menu{display:flex;flex-direction:row;justify-content:center;overflow:hidden}.submenu .footer-menu .footer-components{border-top:1px solid #3265ee;white-space:nowrap}.submenu .footer-menu button{position:relative;left:35%;border:none;background-color:transparent}.submenu .footer-menu .photo-profile{width:32px;height:32px;border-radius:50%;margin:0}.submenu .footer-components{display:flex;justify-content:center;align-items:center}.submenu button{position:relative;left:10%;border:none;background-color:transparent}.submenu .photo-profile{width:32px;height:32px;border-radius:50%;margin:0}.submenu.opened-sub{z-index:1;display:flex;position:absolute;left:100%;height:100vh;justify-content:space-between}.submenu-footer{display:flex;flex-direction:row;justify-content:center;align-content:center;margin-bottom:14px;border-top:1px solid #2847a0;box-shadow:0 4px 8px #0000004d}.submenu-footer .subfooter-components{padding-top:16px}.submenu-footer span{font-weight:700;padding-left:10px}.search-bar{max-width:368px;height:38px;margin-top:24px;border:1px solid #ced4da;box-sizing:border-box;border-radius:8px}.opened-notif-sub{min-width:452px;display:none;background-color:#3265ee;box-sizing:border-box;flex-direction:column;overflow:hidden}.sidebar.closed{max-width:73px;transition:.5s}.sidebar.closed span{display:none}.closed-mobile{width:42px}.opened-mobile{width:80vw}.sidebar.closed span{white-space:nowrap;overflow:hidden}.sidebar.closed .logo-sispro{display:none}.sidebar.closed .list-menu{padding:0;margin-left:0;margin-right:0;display:flex;flex-direction:column;align-items:center}.sidebar.closed .list-menu span{opacity:0;pointer-events:none}.sidebar.closed .list-menu .text-closed{padding-bottom:11px;visibility:visible;display:block}.sidebar.closed .list-menu .text-opened{display:none;font-size:8px}.sidebar.closed .list-menu .chevron,.sidebar.closed .favoritos,.sidebar.closed .footer-components .button-opened{display:none}.sidebar.closed .footer-components .button-closed{display:block}.sidebar.closed .button-icons{border:none;background-color:transparent}.sidebar.closed .footer-components{display:flex;align-items:center}.sidebar.closed button{border:none;background-color:transparent;display:block}.sidebar.closed .photo-profile{width:32px;height:32px;border-radius:50%;margin:0}.sidebar-control{height:100vh;max-width:227.667px}.sidebar-control .main-content.closed{margin-left:0}.glb-text-width-120{max-width:120px}.profile-picture{display:inline-block;position:relative;width:100px;height:100px;border-radius:50%;overflow:hidden}.profile-picture img{width:100%;height:100%;object-fit:cover;border-radius:50%;clip-path:circle(50% at 50% 50%)}.image-div{width:50px;min-width:50px;height:50px;border-radius:100%;position:relative;overflow:hidden;z-index:1}.image-div #photoUser{width:146px;height:146px;top:-1px;left:-1px;object-fit:cover;position:relative;z-index:1;border:none;border-color:transparent}.dynamic-container{display:inline-block;white-space:nowrap;overflow:hidden}.custom-popover{width:1000px}\n"], dependencies: [{ kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i15.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i7.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "ngmodule", type: InfraModule }, { kind: "directive", type: i3.ClickOutsideDirective, selector: "[clickOutside], [libClickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "component", type: i3.FooterComponent, selector: "[app-footer], app-footer, lib-footer" }, { kind: "component", type: SelecaoEstabelecimentosModalComponent, selector: "selecao-estabelecimentos-modal", outputs: ["onClose", "onSelected"] }, { kind: "component", type: VersoesModalComponent, selector: "versoes-modal", outputs: ["onClose"] }, { kind: "component", type: NotifSubmenuComponent, selector: "app-notif-submenu" }, { kind: "component", type: DynamicMenuComponent, selector: "app-dynamic-menu", inputs: ["submenuRef", "recebeParam", "titleSubmenu", "submenuList", "hostServerOutSystems"], outputs: ["selectTemplate"] }, { kind: "component", type: PrimaryDropdownComponent, selector: "app-primary-dropdown", inputs: ["buttonWasClicked"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i17.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i17.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i17.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i17.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
3771
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MenuLateralComponent, deps: [{ token: MSAL_GUARD_CONFIG }, { token: i1$2.MsalService }, { token: i10.ToastrService }, { token: LibCustomEnvironmentService }, { token: AuthStorageService }, { token: i4.BsModalService }, { token: MenuServicesService }, { token: i3.MessageService }, { token: AuthUtilService }, { token: i1$1.Router }, { token: AuthService }, { token: i11.BreakpointObserver }, { token: LibCustomMenuService }, { token: PesquisaTelasGlobalService }, { token: IndexedDBService }], target: i0.ɵɵFactoryTarget.Component }); }
3772
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: MenuLateralComponent, isStandalone: true, selector: "app-menu-lateral", queries: [{ propertyName: "desiredContent", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "sidebar", first: true, predicate: ["sidebar"], descendants: true, static: true }, { propertyName: "notif_template", first: true, predicate: ["notif_menu"], descendants: true }, { propertyName: "menuLink", first: true, predicate: ["menuLink"], descendants: true }], ngImport: i0, template: "<!-- #region MAIN CONTENT -->\n<div id=\"menu\" class=\"main col-12\">\n\n <div style=\"height: 100vh; z-index: 3;\" class=\"sidebar-control position-relative d-flex flex-row\" #menuContainer\n (clickOutside)=\"closeMenu == true ? onClickedOutside($event, submenu_ref) : closeMenu = true\">\n <div class=\"sidebar {{_customMenuService.themeColor}} closed\" [ngClass]=\"{'closed-mobile': isMobile && !isMenuOpened}\" #sidebar>\n <div class=\"menu-header\">\n <ul>\n <li class=\"mb-3\">\n <div class=\"logo-hamburguer\">\n <img src=\"assets/icons/logotipo-sispro.svg\" alt=\"logo-sispro\" class=\"logo-sispro\" title=\"logo\" width=\"136px\" height=\"48px\">\n <button class=\"button-hamburguer\" (click)=\"isMenuOpened = !isMenuOpened; openExpansibleMenu(sidebar);\">\n <img src=\"assets/icons/menu.svg\" alt=\"menu hamburguer\">\n </button>\n </div>\n </li>\n\n <!-- #region M\u00D3DULOS -->\n <li class=\"mb-3\" style=\"margin-left: 8px; margin-right: 8px\">\n <div class=\"btn-group\">\n <button (click)=\"dropdownWasOpened(true)\" type=\"button\" class=\"dropdown-button\" data-bs-toggle=\"dropdown\"\n aria-expanded=\"false\" data-bs-auto-close=\"outside\">\n <ng-container>\n <lib-icon iconColor=\"white\" [iconName]=\"_customMenuService.moduleSvg\" />\n <span class=\"ps-2\"> {{ this._customMenuService.moduleName }} <lib-icon iconName=\"seta-direita\" iconColor=\"white\" /> </span>\n </ng-container>\n </button>\n <ul class=\"dropdown-menu\" #dropdown_ref>\n <app-primary-dropdown [buttonWasClicked]=\"messageIfClicked\"></app-primary-dropdown>\n </ul>\n </div>\n </li>\n <!-- #endregion M\u00D3DULOS -->\n\n <!-- #region ESTABELECIMENTOS -->\n <li class=\"mx-3\" style=\"margin-bottom: 16px;\">\n <div class=\"icon-estabelecimento\">\n <button class=\"row justify-content-between bg-transparent border-0\"\n (click)=\"openModalEstabelecimento(modalEstabelecimento)\"\n [tooltip]=\"!sidebar.classList.contains('closed') ? '' : nomeEstabelecimento\" placement=\"right\">\n\n <lib-icon class=\"col-1\" iconName=\"predio\" iconColor=\"white\" />\n <span *ngIf=\"!sidebar.classList.contains('closed')\" class=\"col-9 ps-2 glb-text-width-160 text-start text-truncate\"> {{ nomeEstabelecimento }} </span>\n <lib-icon *ngIf=\"!sidebar.classList.contains('closed')\" class=\"col-1\" iconName=\"seta-direita\" iconColor=\"white\" />\n </button>\n </div>\n </li>\n <!-- #endregion ESTABELECIMENTOS -->\n\n\n <!-- #region PESQUISA -->\n @if (_customMenuService.menuDynamic) {\n <li class=\"mx-3 mb-3\">\n <div class=\"icon-pesquisa\">\n <button class=\"d-flex align-items-center justify-content-start gap-2 bg-transparent border-0\" (click)=\"_pesquisaTelas.show()\"\n [tooltip]=\"!sidebar.classList.contains('closed') ? '' : 'Pesquisar telas'\" placement=\"right\">\n\n <lib-icon class=\"col-1\" iconName=\"lupa\" iconColor=\"white\" />\n @if (!sidebar.classList.contains('closed')) { <span class=\"col ps-2 text-start text-truncate\"> Pesquisar telas </span> }\n </button>\n </div>\n </li>\n }\n <!-- #endregion PESQUISA -->\n\n </ul>\n\n </div>\n\n <!-- #region MENUS DE NAVEGA\u00C7\u00C3O -->\n <div class=\"main-menu\">\n <div class=\"scroll\">\n <div class=\"list-menu px-2 pb-1\">\n\n <!-- #region MENU DIN\u00C2MICO -->\n <div class=\"dynamic-menu\">\n <ul #dynamic_menu_items *ngIf=\"_customMenuService.menuItems; else isLoading\">\n\n <li *ngFor=\"let menuItem of _customMenuService.menuItems; let i = index\"\n class=\"p-1 rounded\"\n (click)=\"openSubmenu(menuItem, submenu_ref, dynamic_menu)\"\n [class.selectedItem]=\"menuItem.isSelected\">\n\n <a *ngIf=\"!menuItem.isExternal && !menuItem.isOutroModulo; else externalMenu\"\n [routerLink]=\"menuItem.route != '' ? menuItem.route : null\"\n [id]=\"'item' + menuItem.id\"\n [tooltip]=\"!sidebar.classList.contains('closed') ? '' : menuItem.label\"\n placement=\"left\" class=\"w-100 d-flex align-items-center button-icons text-decoration-none p-1 glb-cursor-pointer\"\n [class]=\"sidebar.classList.contains('closed') ? 'justify-content-center' : 'justify-content-between'\">\n\n <div class=\"container\">\n <lib-icon *ngIf=\"!menuItem.icon.includes('assets/icons'); else iconImg\" [iconName]=\"menuItem.icon\" iconColor=\"white\"/>\n <span class=\"span-main\">{{ menuItem.label }}</span>\n <ng-template #iconImg>\n <img [src]=\"menuItem.icon\" [alt]=\"'icone: ' + menuItem.label\">\n </ng-template>\n </div>\n <lib-icon *ngIf=\"(menuItem.children && menuItem.children.length > 0) && !sidebar.classList.contains('closed')\"\n iconName=\"seta-direita\" iconColor=\"white\"/>\n </a>\n\n <ng-template #externalMenu>\n <a [href]=\"getExternalUrl(menuItem.route,menuItem.isOutroModulo)\"\n target=\"_blank\"\n [id]=\"'item' + menuItem.id\"\n [tooltip]=\"!sidebar.classList.contains('closed') ? '' : menuItem.label\"\n placement=\"left\" class=\"w-100 d-flex align-items-center button-icons text-decoration-none p-1 glb-cursor-pointer\"\n [class]=\"sidebar.classList.contains('closed') ? 'justify-content-center' : 'justify-content-between'\">\n\n <div class=\"container\">\n <lib-icon *ngIf=\"!menuItem.icon.includes('assets/icons'); else iconImgExternal\" [iconName]=\"menuItem.icon\" iconColor=\"white\"/>\n <span class=\"span-main\">{{ menuItem.label }}</span>\n <ng-template #iconImgExternal>\n <img [src]=\"menuItem.icon\" [alt]=\"'icone: ' + menuItem.label\">\n </ng-template>\n </div>\n <lib-icon *ngIf=\"(menuItem.children && menuItem.children.length > 0) && !sidebar.classList.contains('closed')\"\n iconName=\"seta-direita\" iconColor=\"white\"/>\n </a>\n </ng-template>\n </li>\n\n </ul>\n </div>\n\n <ng-template #isLoading>\n <li class=\"spinner-border spinner-border-sm mt-2\" role=\"status\" aria-hidden=\"true\"></li>\n </ng-template>\n <!-- #endregion MENU DIN\u00C2MICO -->\n\n </div>\n </div>\n </div>\n <!-- #endregion MENUS DE NAVEGA\u00C7\u00C3O -->\n\n <!-- #region FOOTER -->\n <div class=\"footer-menu glb-cursor-pointer\" (mouseenter)=\"showBalloon = true\" (mouseleave)=\"showBalloon = false\"\n [popover]=\"popoverContent\" placement=\"right bottom\" [outsideClick]=\"true\" containerClass=\"width: 200px\" >\n <div class=\"footer-components d-flex flex-row align-items-center gap-2 py-2 px-1 justify-content-center gap-2\" [class.open]=\"showBalloon\">\n @if (footerUserImgSrc) {\n <img class=\"photo-profile\" [src]=\"['data:image/jpeg;base64,' + footerUserImgSrc]\" alt=\"foto-perfil\">\n }\n @else {\n <lib-icon iconName=\"contraparte\" iconColor=\"white\"/>\n }\n\n <span class=\"text-truncate fw-bold text-start\" style=\"max-width: 100%;\"> {{ footerUserName }} </span>\n </div>\n </div>\n\n <ng-template #popoverContent>\n <div class=\"footer-menu\" style=\"width: 1000px;\">\n <div class=\"d-flex align-items-center\">\n <img *ngIf=\"footerUserImgSrc; else noUserImg\" class=\"photo-profile\"\n [src]=\"['data:image/jpeg;base64,' + footerUserImgSrc]\" alt=\"foto-perfil\">\n <ng-template #noUserImg>\n <lib-icon iconName=\"contraparte\" iconColor=\"currentColor\"/>\n </ng-template>\n <div class=\"d-flex flex-column ms-1\">\n <div [tooltip]=\"footerUserName\" class=\"dynamic-container\" style=\"white-space: nowrap; flex-grow: 1;max-width: 200px; font-size: 16px;\">{{footerUserName}}</div>\n <div [tooltip]=\"footerUserEmail\" class=\"dynamic-container\" style=\"white-space: nowrap; font-size: 12px; flex-grow: 1;max-width: 200px;\">{{footerUserEmail}}</div>\n </div>\n </div>\n </div>\n <hr class=\"mb-2 mt-2\">\n <div routerLink=\"meu-perfil\" style=\"cursor: pointer;\" (click)=\"togglePopover(); $event.stopPropagation()\">\n <lib-icon [iconSize]=\"'small'\" iconName=\"contraparte\"/> Meu Perfil\n </div>\n \n <div class=\"mt-2\" style=\"cursor: pointer;\" (click)=\"openModalVersion(modalVersion)\">\n <lib-icon [iconSize]=\"'small'\" iconName=\"info\"/> Vers\u00E3o\n </div>\n\n <div class=\"mt-2\" style=\"cursor: pointer;\" (click)=\"deleteIDB()\">\n <lib-icon [iconSize]=\"'small'\" iconName=\"lixeira\"/> Limpar filtros salvos\n </div>\n\n <div class=\"mt-2\" (click)=\"logout()\" style=\"cursor: pointer;\">\n <lib-icon [iconSize]=\"'small'\" iconName=\"logout\"/> Sair\n </div>\n </ng-template>\n <!-- #endregion FOOTER -->\n\n </div>\n\n <div class=\"submenu\" #submenu_ref>\n <ng-template [ngIf]=\"desiredContent !== null\">\n <ng-content *ngTemplateOutlet=\"desiredContent!; context: {$implicit: submenuList}\"></ng-content>\n </ng-template>\n </div>\n </div>\n\n <div class=\"main-content col d-flex flex-column align-content-between\" id=\"body-content\">\n <div class=\"content\" style=\"position: relative;\">\n <router-outlet></router-outlet>\n </div>\n <div app-footer></div>\n </div>\n\n</div>\n<!-- #endregion MAIN CONTENT -->\n\n<!-- #region TEMPLATES -->\n<ng-template #dynamic_menu let-data>\n <app-dynamic-menu\n [submenuList]=\"data\"\n [titleSubmenu]=\"titleSubmenu\" [submenuRef]=\"submenu_ref\" [recebeParam]=\"onClickedOutside.bind(this)\"\n [hostServerOutSystems]=\"HostServerOutSystems\">\n </app-dynamic-menu>\n</ng-template>\n\n<ng-template #notif_menu>\n <app-notif-submenu></app-notif-submenu>\n</ng-template>\n\n<!-- #region MODAL SELECAO ESTABELECIMENTO -->\n<ng-template #modalEstabelecimento>\n <selecao-estabelecimentos-modal (onClose)=\"closeModalEstabelecimento()\"\n (onSelected)=\"closeModalEstabelecimento(); updateLastLogEstabelecimento($event);\">\n </selecao-estabelecimentos-modal>\n</ng-template>\n<!-- #endregion MODAL SELECAO ESTABELECIMENTO -->\n\n<!-- #region MODAL VERSION -->\n<ng-template #modalVersion>\n <versoes-modal (onClose)=\"closeModalVersion()\" />\n</ng-template>\n<!-- #endregion MODAL VERSION -->\n\n<!-- #endregion TEMPLATES -->\n", styles: ["*{padding:0;margin:0;font-family:Open sans,Arial,Helvetica,sans-serif;font-size:14px}span{color:#fff}ul{list-style:none;padding-left:0;white-space:nowrap}#menu.main{display:flex;width:100%;height:100%;background:#eee}::-webkit-scrollbar{width:8px;background:transparent}::-webkit-scrollbar-thumb{background:#bbb;border-radius:16px}.main-content{width:100%;z-index:0;overflow-y:auto;overflow:overlay;height:100vh}.main-content .content{padding:0 16px 16px;background-color:#eee!important}.disable-scroll{overflow-y:hidden}.dropdown-button{padding:8px;border-radius:8px;background-color:#3265ee;border:none;font-size:14px;font-weight:700;width:100%;display:flex}.dropdown-button span{width:100%;display:flex;justify-content:space-between}.dropdown-menu{width:300px;border-radius:8px}.dropdown-menu li{margin:16px 8px}.dropdown-menu li a{font-size:14px}.dropdown-menu li a:hover{font-weight:700;background-color:transparent}.dropdown-menu .dropdown-divider{height:0}.link-portal{color:#213b70;text-decoration:underline;text-align:center;font-weight:700;font-size:14px}.container{display:flex;width:max-content}.sidebar{display:flex;flex-direction:column;height:100%;grid-template-rows:min-content;box-sizing:border-box;transition:width .5s;background-color:#213b70;max-width:inherit}.sidebar .footer-menu{justify-content:flex-end}.menu-header{display:flex;flex-direction:column;white-space:nowrap;padding:32px 0 0;background-color:#213b70}.menu-header ul li{margin-left:16px;margin-right:16px}.menu-header ul>li:last-child{border-bottom:1px solid #3265ee;padding-bottom:15px;height:auto}.dropdown{margin:0}.btn-group{width:100%}.sidebar.closed .menu-header ul li{margin-left:0;margin-right:0}.sidebar.closed .menu-header{display:flex;flex-direction:column;align-items:center}.icon-estabelecimento button,.icon-pesquisa button{display:flex;flex-direction:row;width:100%;align-items:center;justify-content:center}.icon-estabelecimento button span:hover,.icon-pesquisa button span:hover{font-weight:700}.header-content{display:flex;flex-direction:column;justify-content:space-evenly;height:100%;margin:0 20px}.logo-hamburguer{display:flex;justify-content:space-between;margin-right:8px}.logo-hamburguer .button-hamburguer{border:none;background-color:transparent}.sidebar.closed .logo-hamburguer{justify-content:center;margin-right:0}.scroll{overflow-y:auto;overflow-x:hidden;min-height:20%;margin-right:2px}.list-menu{padding-left:16px;padding-right:8px;display:flex;flex-direction:column;justify-content:center;white-space:nowrap}.list-menu .text-closed{padding-top:15px;display:none;color:#fff}.list-menu .text-opened{color:#fff;font-size:12px;padding-top:15px;visibility:visible;white-space:nowrap}.list-menu .li-main{padding:10px 7px;border-radius:8px}.list-menu .onSelect{background-color:#3265ee}.list-menu div.static-menu>ul>li:first-child{margin-top:16px}.list-menu .span-main{font-size:14px;margin-left:8px;opacity:1;pointer-events:auto;white-space:break-spaces}.list-menu .span-main:hover,.list-menu .list-options span:hover{font-weight:700}.list-menu p{font-size:10px;font-weight:700;text-transform:uppercase;border-bottom:1px solid #3265ee;visibility:hidden}.selectedItem{background-color:#3265ee}.selectedItem span{font-weight:700;background-color:transparent}.notif{padding:2px 13px;margin-bottom:none;background-color:#000;border-radius:8px;font-weight:700}.sidebar.closed .chevron{display:none}.sidebar.closed .icon-estabelecimento,.sidebar.closed .icon-pesquisa{margin:0}.sidebar.closed .icon-estabelecimento button,.sidebar.closed .icon-pesquisa button{justify-content:center}.sidebar.closed .icon-estabelecimento button img,.sidebar.closed .icon-pesquisa button img{margin:0}.align-chevron{width:100%;text-align:justify;align-items:center;display:flex;justify-content:space-between}.selected-color{background-color:#3265ee}.main-menu{display:flex;flex-direction:column;justify-content:space-between;height:100%;min-height:20%}.button-icons{border:none;background-color:transparent}.footer-menu{display:flex;flex-direction:column}.footer-menu .footer-components{border-top:1px solid #3265ee}.footer-menu .footer-components .button-closed{display:none}.footer-menu button{border:none;background-color:transparent;border-radius:8px}.footer-menu .points{padding:4px 0;margin:4px 0;border-radius:8px}.footer-menu .photo-profile{width:32px;height:32px;border-radius:50%;margin:0}.footer-menu .open-user{background-color:#3265ee}.submenu{width:341px;display:none;background-color:#3265ee;box-sizing:border-box;flex-direction:column;overflow:hidden;box-shadow:0 4px 8px #0000004d}.submenu ul{display:flex;flex-direction:column;margin:25px 26px 0 24px}.submenu ul li{font-size:20px;font-weight:600;line-height:22px;padding-bottom:18px}.submenu .itens-list{display:flex;justify-content:space-between;align-items:center}.submenu .itens-list .favoritos,.submenu .itens-list span{cursor:pointer}.submenu .footer-menu{display:flex;flex-direction:row;justify-content:center;overflow:hidden}.submenu .footer-menu .footer-components{border-top:1px solid #3265ee;white-space:nowrap}.submenu .footer-menu button{position:relative;left:35%;border:none;background-color:transparent}.submenu .footer-menu .photo-profile{width:32px;height:32px;border-radius:50%;margin:0}.submenu .footer-components{display:flex;justify-content:center;align-items:center}.submenu button{position:relative;left:10%;border:none;background-color:transparent}.submenu .photo-profile{width:32px;height:32px;border-radius:50%;margin:0}.submenu.opened-sub{z-index:1;display:flex;position:absolute;left:100%;height:100vh;justify-content:space-between}.submenu-footer{display:flex;flex-direction:row;justify-content:center;align-content:center;margin-bottom:14px;border-top:1px solid #2847a0;box-shadow:0 4px 8px #0000004d}.submenu-footer .subfooter-components{padding-top:16px}.submenu-footer span{font-weight:700;padding-left:10px}.search-bar{max-width:368px;height:38px;margin-top:24px;border:1px solid #ced4da;box-sizing:border-box;border-radius:8px}.opened-notif-sub{min-width:452px;display:none;background-color:#3265ee;box-sizing:border-box;flex-direction:column;overflow:hidden}.sidebar.closed{max-width:73px;transition:.5s}.sidebar.closed span{display:none}.closed-mobile{width:42px}.opened-mobile{width:80vw}.sidebar.closed span{white-space:nowrap;overflow:hidden}.sidebar.closed .logo-sispro{display:none}.sidebar.closed .list-menu{padding:0;margin-left:0;margin-right:0;display:flex;flex-direction:column;align-items:center}.sidebar.closed .list-menu span{opacity:0;pointer-events:none}.sidebar.closed .list-menu .text-closed{padding-bottom:11px;visibility:visible;display:block}.sidebar.closed .list-menu .text-opened{display:none;font-size:8px}.sidebar.closed .list-menu .chevron,.sidebar.closed .favoritos,.sidebar.closed .footer-components .button-opened{display:none}.sidebar.closed .footer-components .button-closed{display:block}.sidebar.closed .button-icons{border:none;background-color:transparent}.sidebar.closed .footer-components{display:flex;align-items:center}.sidebar.closed button{border:none;background-color:transparent;display:block}.sidebar.closed .photo-profile{width:32px;height:32px;border-radius:50%;margin:0}.sidebar-control{height:100vh;max-width:227.667px}.sidebar-control .main-content.closed{margin-left:0}.glb-text-width-120{max-width:120px}.profile-picture{display:inline-block;position:relative;width:100px;height:100px;border-radius:50%;overflow:hidden}.profile-picture img{width:100%;height:100%;object-fit:cover;border-radius:50%;clip-path:circle(50% at 50% 50%)}.image-div{width:50px;min-width:50px;height:50px;border-radius:100%;position:relative;overflow:hidden;z-index:1}.image-div #photoUser{width:146px;height:146px;top:-1px;left:-1px;object-fit:cover;position:relative;z-index:1;border:none;border-color:transparent}.dynamic-container{display:inline-block;white-space:nowrap;overflow:hidden}.custom-popover{width:1000px}\n"], dependencies: [{ kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i15.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i7$1.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "ngmodule", type: InfraModule }, { kind: "directive", type: i3.ClickOutsideDirective, selector: "[clickOutside], [libClickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "component", type: i3.FooterComponent, selector: "[app-footer], app-footer, lib-footer" }, { kind: "component", type: SelecaoEstabelecimentosModalComponent, selector: "selecao-estabelecimentos-modal", outputs: ["onClose", "onSelected"] }, { kind: "component", type: VersoesModalComponent, selector: "versoes-modal", outputs: ["onClose"] }, { kind: "component", type: NotifSubmenuComponent, selector: "app-notif-submenu" }, { kind: "component", type: DynamicMenuComponent, selector: "app-dynamic-menu", inputs: ["submenuRef", "recebeParam", "titleSubmenu", "submenuList", "hostServerOutSystems"], outputs: ["selectTemplate"] }, { kind: "component", type: PrimaryDropdownComponent, selector: "app-primary-dropdown", inputs: ["buttonWasClicked"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i17.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i17.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i17.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i17.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
3778
3773
  }
3779
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MenuLateralComponent, decorators: [{
3774
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MenuLateralComponent, decorators: [{
3780
3775
  type: Component,
3781
3776
  args: [{ selector: 'app-menu-lateral', imports: [
3782
3777
  PopoverModule,
@@ -3981,16 +3976,16 @@ class NovaSenhaComponent {
3981
3976
  this._authStorageService.logout();
3982
3977
  this._router.navigate(["/auth/login"]);
3983
3978
  }
3984
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NovaSenhaComponent, deps: [{ token: i3$1.FormBuilder }, { token: AuthUtilService }, { token: i3.MessageService }, { token: AuthService }, { token: AuthStorageService }, { token: i8.Title }, { token: i1$1.Router }, { token: i1$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
3985
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: NovaSenhaComponent, isStandalone: true, selector: "app-nova-senha", ngImport: i0, template: "<body>\n<div id=\"main-container\">\n\t<!-- #region MAIN CONTENT -->\n\t<div class=\"glb-main-container password-container\">\n\t\t<div class=\"password-info-container\">\n\t\t\t<div class=\"img mb-3\">\n\t\t\t\t<img [src]=\"statusSenha == 2 ? calendarioImg : statusSenha == 1 ? maoImg : statusSenha == 3 ? cadeadoImg : '' \" width=\"125.69\" height=\"122\">\n\t\t\t</div>\n\t\t\t<div class=\"text\">\n\t\t\t\t<h4>{{statusSenha == 2 ? 'Senha expirada' : statusSenha == 1 ? 'Primeiro acesso' : statusSenha == 3 ? 'Esqueceu sua senha?' : ''}}</h4>\n\t\t\t\t<p [innerHTML]=\"statusSenha == 2 ? senhaExpiradaText : statusSenha == 1 ? primeiroAcessoText : statusSenha == 3 ? esqueceuSenhaText : '' \"></p>\n\t\t\t</div>\n\t\t</div>\n\t\t<form [formGroup]=\"form\">\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputCode\" class=\"form-label\"> C\u00F3digo de valida\u00E7\u00E3o <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"text\" placeholder=\"Insira seu c\u00F3digo aqui...\" id=\"inputCode\" class=\"form-control\" formControlName=\"code\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('code'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('code')\" label=\"C\u00F3digo de valida\u00E7\u00E3o\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputPassword\" class=\"form-label\"> Digite uma nova Senha <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"password\" placeholder=\"Digite sua nova senha...\" id=\"inputPassword\" class=\"form-control\" formControlName=\"password\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('password'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('password')\" label=\"{{ passwordLabel }}\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputConfirmPassword\" class=\"form-label\"> Confirme sua nova Senha <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"password\" placeholder=\"Digite a senha novamente...\" id=\"inputConfirmPassword\" class=\"form-control\" formControlName=\"confirmPassword\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('confirmPassword'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('confirmPassword')\" label=\"Confirme sua Senha\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\t<div class=\"btns\">\n\t\t\t\t\t<button [libLoading]=\"isLoading\" loadingText=\"Redefinindo...\" [disabled]=\"isLoading\" (click)=\"sendPassword()\" type=\"button\" class=\"btn btn-primary col w-100\">\n\t\t\t\t\t\tRedefinir senha <lib-icon iconName=\"login\" />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<div class=\"mt-3 text-center\">\n\t\t\t\t\t\t<a type=\"button\" class=\"fw-bold text-decoration-none text-secondary\" (click)=\"cancelar()\">\n\t\t\t\t\t\t\t<lib-icon iconName=\"p-seta-esquerda\" /> Voltar para a tela de login </a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t</form>\n\t</div>\n\t<!-- #endregion MAIN CONTENT -->\n</div>\n</body>\n", styles: ["body{background-color:#f5f5f5;height:100%!important;margin:0!important;padding:0!important}#main-container{display:flex;align-items:center;justify-content:center;height:100%}.password-container{padding:30px;width:37%;border:none;box-shadow:0 2px -1px #0000001a}.img{width:26%}.text{display:flex;flex-direction:column;align-items:flex-start;margin-left:auto}.text h4{font-weight:700}.text p{text-align:start}.password-info-container{display:flex;gap:15px}.btns{display:flex;flex-direction:column;align-items:center;width:100%}input::placeholder{color:#8d8d8d;font-size:15px}.icon{margin-right:5px;font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.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: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: InfraModule }, { kind: "component", type: i3.FieldErrorMessageComponent, selector: "app-field-error-message, lib-error-message", inputs: ["customMessage", "control", "label"] }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "directive", type: i3.LoadingBtnDirective, selector: "button[libLoading], a[libLoading]", inputs: ["loadingText", "loadingType", "libLoading"] }], preserveWhitespaces: true }); }
3979
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: NovaSenhaComponent, deps: [{ token: i7.FormBuilder }, { token: AuthUtilService }, { token: i3.MessageService }, { token: AuthService }, { token: AuthStorageService }, { token: i8.Title }, { token: i1$1.Router }, { token: i1$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
3980
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: NovaSenhaComponent, isStandalone: true, selector: "app-nova-senha", ngImport: i0, template: "<body>\n<div id=\"main-container\">\n\t<!-- #region MAIN CONTENT -->\n\t<div class=\"glb-main-container password-container\">\n\t\t<div class=\"password-info-container\">\n\t\t\t<div class=\"img mb-3\">\n\t\t\t\t<img [src]=\"statusSenha == 2 ? calendarioImg : statusSenha == 1 ? maoImg : statusSenha == 3 ? cadeadoImg : '' \" width=\"125.69\" height=\"122\">\n\t\t\t</div>\n\t\t\t<div class=\"text\">\n\t\t\t\t<h4>{{statusSenha == 2 ? 'Senha expirada' : statusSenha == 1 ? 'Primeiro acesso' : statusSenha == 3 ? 'Esqueceu sua senha?' : ''}}</h4>\n\t\t\t\t<p [innerHTML]=\"statusSenha == 2 ? senhaExpiradaText : statusSenha == 1 ? primeiroAcessoText : statusSenha == 3 ? esqueceuSenhaText : '' \"></p>\n\t\t\t</div>\n\t\t</div>\n\t\t<form [formGroup]=\"form\">\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputCode\" class=\"form-label\"> C\u00F3digo de valida\u00E7\u00E3o <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"text\" placeholder=\"Insira seu c\u00F3digo aqui...\" id=\"inputCode\" class=\"form-control\" formControlName=\"code\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('code'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('code')\" label=\"C\u00F3digo de valida\u00E7\u00E3o\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputPassword\" class=\"form-label\"> Digite uma nova Senha <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"password\" placeholder=\"Digite sua nova senha...\" id=\"inputPassword\" class=\"form-control\" formControlName=\"password\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('password'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('password')\" label=\"{{ passwordLabel }}\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputConfirmPassword\" class=\"form-label\"> Confirme sua nova Senha <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"password\" placeholder=\"Digite a senha novamente...\" id=\"inputConfirmPassword\" class=\"form-control\" formControlName=\"confirmPassword\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('confirmPassword'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('confirmPassword')\" label=\"Confirme sua Senha\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\t<div class=\"btns\">\n\t\t\t\t\t<button [libLoading]=\"isLoading\" loadingText=\"Redefinindo...\" [disabled]=\"isLoading\" (click)=\"sendPassword()\" type=\"button\" class=\"btn btn-primary col w-100\">\n\t\t\t\t\t\tRedefinir senha <lib-icon iconName=\"login\" />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<div class=\"mt-3 text-center\">\n\t\t\t\t\t\t<a type=\"button\" class=\"fw-bold text-decoration-none text-secondary\" (click)=\"cancelar()\">\n\t\t\t\t\t\t\t<lib-icon iconName=\"p-seta-esquerda\" /> Voltar para a tela de login </a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t</form>\n\t</div>\n\t<!-- #endregion MAIN CONTENT -->\n</div>\n</body>\n", styles: ["body{background-color:#f5f5f5;height:100%!important;margin:0!important;padding:0!important}#main-container{display:flex;align-items:center;justify-content:center;height:100%}.password-container{padding:30px;width:37%;border:none;box-shadow:0 2px -1px #0000001a}.img{width:26%}.text{display:flex;flex-direction:column;align-items:flex-start;margin-left:auto}.text h4{font-weight:700}.text p{text-align:start}.password-info-container{display:flex;gap:15px}.btns{display:flex;flex-direction:column;align-items:center;width:100%}input::placeholder{color:#8d8d8d;font-size:15px}.icon{margin-right:5px;font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: InfraModule }, { kind: "component", type: i3.FieldErrorMessageComponent, selector: "app-field-error-message, lib-error-message", inputs: ["customMessage", "control", "label"] }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "directive", type: i3.LoadingBtnDirective, selector: "button[libLoading], a[libLoading]", inputs: ["loadingText", "loadingType", "libLoading"] }], preserveWhitespaces: true }); }
3986
3981
  }
3987
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NovaSenhaComponent, decorators: [{
3982
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: NovaSenhaComponent, decorators: [{
3988
3983
  type: Component,
3989
3984
  args: [{ selector: 'app-nova-senha', imports: [
3990
3985
  ReactiveFormsModule,
3991
3986
  InfraModule,
3992
3987
  ], preserveWhitespaces: true, template: "<body>\n<div id=\"main-container\">\n\t<!-- #region MAIN CONTENT -->\n\t<div class=\"glb-main-container password-container\">\n\t\t<div class=\"password-info-container\">\n\t\t\t<div class=\"img mb-3\">\n\t\t\t\t<img [src]=\"statusSenha == 2 ? calendarioImg : statusSenha == 1 ? maoImg : statusSenha == 3 ? cadeadoImg : '' \" width=\"125.69\" height=\"122\">\n\t\t\t</div>\n\t\t\t<div class=\"text\">\n\t\t\t\t<h4>{{statusSenha == 2 ? 'Senha expirada' : statusSenha == 1 ? 'Primeiro acesso' : statusSenha == 3 ? 'Esqueceu sua senha?' : ''}}</h4>\n\t\t\t\t<p [innerHTML]=\"statusSenha == 2 ? senhaExpiradaText : statusSenha == 1 ? primeiroAcessoText : statusSenha == 3 ? esqueceuSenhaText : '' \"></p>\n\t\t\t</div>\n\t\t</div>\n\t\t<form [formGroup]=\"form\">\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputCode\" class=\"form-label\"> C\u00F3digo de valida\u00E7\u00E3o <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"text\" placeholder=\"Insira seu c\u00F3digo aqui...\" id=\"inputCode\" class=\"form-control\" formControlName=\"code\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('code'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('code')\" label=\"C\u00F3digo de valida\u00E7\u00E3o\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputPassword\" class=\"form-label\"> Digite uma nova Senha <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"password\" placeholder=\"Digite sua nova senha...\" id=\"inputPassword\" class=\"form-control\" formControlName=\"password\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('password'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('password')\" label=\"{{ passwordLabel }}\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputConfirmPassword\" class=\"form-label\"> Confirme sua nova Senha <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"password\" placeholder=\"Digite a senha novamente...\" id=\"inputConfirmPassword\" class=\"form-control\" formControlName=\"confirmPassword\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('confirmPassword'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('confirmPassword')\" label=\"Confirme sua Senha\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\t<div class=\"btns\">\n\t\t\t\t\t<button [libLoading]=\"isLoading\" loadingText=\"Redefinindo...\" [disabled]=\"isLoading\" (click)=\"sendPassword()\" type=\"button\" class=\"btn btn-primary col w-100\">\n\t\t\t\t\t\tRedefinir senha <lib-icon iconName=\"login\" />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<div class=\"mt-3 text-center\">\n\t\t\t\t\t\t<a type=\"button\" class=\"fw-bold text-decoration-none text-secondary\" (click)=\"cancelar()\">\n\t\t\t\t\t\t\t<lib-icon iconName=\"p-seta-esquerda\" /> Voltar para a tela de login </a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t</form>\n\t</div>\n\t<!-- #endregion MAIN CONTENT -->\n</div>\n</body>\n", styles: ["body{background-color:#f5f5f5;height:100%!important;margin:0!important;padding:0!important}#main-container{display:flex;align-items:center;justify-content:center;height:100%}.password-container{padding:30px;width:37%;border:none;box-shadow:0 2px -1px #0000001a}.img{width:26%}.text{display:flex;flex-direction:column;align-items:flex-start;margin-left:auto}.text h4{font-weight:700}.text p{text-align:start}.password-info-container{display:flex;gap:15px}.btns{display:flex;flex-direction:column;align-items:center;width:100%}input::placeholder{color:#8d8d8d;font-size:15px}.icon{margin-right:5px;font-weight:700}\n"] }]
3993
- }], ctorParameters: () => [{ type: i3$1.FormBuilder }, { type: AuthUtilService }, { type: i3.MessageService }, { type: AuthService }, { type: AuthStorageService }, { type: i8.Title }, { type: i1$1.Router }, { type: i1$1.ActivatedRoute }] });
3988
+ }], ctorParameters: () => [{ type: i7.FormBuilder }, { type: AuthUtilService }, { type: i3.MessageService }, { type: AuthService }, { type: AuthStorageService }, { type: i8.Title }, { type: i1$1.Router }, { type: i1$1.ActivatedRoute }] });
3994
3989
 
3995
3990
  class IMenu {
3996
3991
  constructor() {
@@ -4007,6 +4002,22 @@ class IMenu {
4007
4002
  }
4008
4003
  }
4009
4004
 
4005
+ class InfraEstabelecimentoFavoritoDefault {
4006
+ constructor() {
4007
+ this.ID = "";
4008
+ this.NOMEEXIBICAO = "";
4009
+ this.CODIGO = "";
4010
+ this.CNPJ = "";
4011
+ this.IS_MATRIZ = false;
4012
+ this.IS_ACTIVE = false;
4013
+ this.IS_CHECKED = false;
4014
+ this.IS_FAVORITE = false;
4015
+ this.IS_DEFAULT = false;
4016
+ this.ESTABFAVORITOID = 0;
4017
+ this.TENANT_ID = 0;
4018
+ }
4019
+ }
4020
+
4010
4021
  class InfraUsuarioImg {
4011
4022
  constructor() {
4012
4023
  this.Tenant_Id = 0;
@@ -4026,6 +4037,14 @@ class NavSubmenuSearchItem {
4026
4037
  }
4027
4038
  }
4028
4039
 
4040
+ class RetEstabelecimentosModal {
4041
+ constructor() {
4042
+ this.Error = false;
4043
+ this.ErrorMessage = "";
4044
+ this.InfraEstabelecimentos = [];
4045
+ }
4046
+ }
4047
+
4029
4048
  class RetInfraUsuarioImg {
4030
4049
  constructor() {
4031
4050
  this.Error = false;
@@ -4071,29 +4090,339 @@ class RetSubmenuWithCards {
4071
4090
  }
4072
4091
  }
4073
4092
 
4074
- class InfraEstabelecimentoFavoritoDefault {
4093
+ class MeuPerfilService {
4094
+ // #endregion PRIVATE
4095
+ // #endregion ==========> PROPERTIES <==========
4075
4096
  constructor() {
4076
- this.ID = "";
4077
- this.NOMEEXIBICAO = "";
4078
- this.CODIGO = "";
4079
- this.CNPJ = "";
4080
- this.IS_MATRIZ = false;
4081
- this.IS_ACTIVE = false;
4082
- this.IS_CHECKED = false;
4083
- this.IS_FAVORITE = false;
4084
- this.IS_DEFAULT = false;
4085
- this.ESTABFAVORITOID = 0;
4086
- this.TENANT_ID = 0;
4097
+ // #region ==========> PROPERTIES <==========
4098
+ // #region PRIVATE
4099
+ this._customEnvironment = inject(LibCustomEnvironmentService);
4100
+ this._http = inject(HttpClient);
4101
+ this._BASE_URL = `${this._customEnvironment.SpInfra2ErpWS}/Perfil`; // SpInfra2ErpWS
4102
+ this._HEADERS = new HttpHeaders().set("Content-Type", "application/json");
4103
+ this.showErrorMessage = (res) => { if (res.Error)
4104
+ throw new Error(res.ErrorMessage); };
4105
+ this._BASE_URL = !this._customEnvironment.production ? this._BASE_URL : `${this._customEnvironment.SpInfra2ErpWS}/Perfil`;
4106
+ }
4107
+ // #region ==========> API <==========
4108
+ // #region GET
4109
+ getUsuario(usuarioID) {
4110
+ const params = new HttpParams().set("id", usuarioID);
4111
+ const url = `${this._BASE_URL}/Get`;
4112
+ return this._http.get(url, { params: params, headers: this._HEADERS })
4113
+ .pipe(take(1), tap((response) => { this.showErrorMessage(response); }));
4114
+ }
4115
+ getImagemUsuario(usuarioID) {
4116
+ const params = new HttpParams().set("usuarioId", usuarioID);
4117
+ const url = `${this._BASE_URL}/GetImagem`;
4118
+ return this._http.get(url, { params: params, headers: this._HEADERS })
4119
+ .pipe(take(1), tap((response) => { this.showErrorMessage(response); }));
4120
+ }
4121
+ getPasswordPolicy() {
4122
+ const url = `${this._BASE_URL}/PasswordPolicy`;
4123
+ return this._http.get(url, { headers: this._HEADERS })
4124
+ .pipe(take(1), tap((response) => { this.showErrorMessage(response); }));
4125
+ }
4126
+ checkPassword(senha) {
4127
+ const params = new HttpParams().set('senha', senha);
4128
+ const url = `${this._BASE_URL}/CheckPassword`;
4129
+ return this._http.post(url, null, { params: params, headers: this._HEADERS })
4130
+ .pipe(take(1), tap((response) => { this.showErrorMessage(response); }));
4131
+ }
4132
+ getAdminId() {
4133
+ const url = `${this._BASE_URL}/GetAdminId`;
4134
+ return this._http.get(url, { headers: this._HEADERS })
4135
+ .pipe(take(1), tap((response) => { this.showErrorMessage(response); }));
4087
4136
  }
4137
+ // #endregion GET
4138
+ // #region PUT
4139
+ updateUsuario(usuario) {
4140
+ const params = new HttpParams().set("id", usuario.Id);
4141
+ const url = `${this._BASE_URL}/Update`;
4142
+ return this._http.post(url, usuario, { params: params, headers: this._HEADERS })
4143
+ .pipe(take(1), tap((response) => { this.showErrorMessage(response); }));
4144
+ }
4145
+ updatePasswordMeuPerfil(id, oldPass, newPass, newPassConfirmation) {
4146
+ const params = new HttpParams()
4147
+ .set("id", id)
4148
+ .set("senhaAtual", oldPass)
4149
+ .set("senhaNova", newPass)
4150
+ .set("senhaNovaConfirmar", newPassConfirmation);
4151
+ const url = `${this._BASE_URL}/UpdatePassword`;
4152
+ return this._http.post(url, null, { params: params, headers: this._HEADERS })
4153
+ .pipe(take(1), tap((response) => { this.showErrorMessage(response); }));
4154
+ }
4155
+ updatePhoto(imagem, filename, usuarioId) {
4156
+ const params = new HttpParams()
4157
+ .set("filename", filename)
4158
+ .set("usuarioId", usuarioId);
4159
+ const url = `${this._BASE_URL}/UpdateImage`;
4160
+ return this._http.post(url, JSON.stringify(imagem), { params: params, headers: this._HEADERS })
4161
+ .pipe(take(1), tap((response) => { this.showErrorMessage(response); }));
4162
+ }
4163
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MeuPerfilService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4164
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MeuPerfilService, providedIn: 'root' }); }
4088
4165
  }
4166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MeuPerfilService, decorators: [{
4167
+ type: Injectable,
4168
+ args: [{
4169
+ providedIn: 'root'
4170
+ }]
4171
+ }], ctorParameters: () => [] });
4089
4172
 
4090
- class RetEstabelecimentosModal {
4091
- constructor() {
4092
- this.Error = false;
4093
- this.ErrorMessage = "";
4094
- this.InfraEstabelecimentos = [];
4173
+ class MeuPerfilComponent {
4174
+ // #endregion PUBLIC
4175
+ // #endregion ==========> PROPERTIES <==========
4176
+ // #region ==========> FORM CONFIG <==========
4177
+ get FormUtils() { return FormUtils; }
4178
+ get nome() { return this.formMeuPerfil.get('nome')?.value; }
4179
+ get email() { return this.formMeuPerfil.get('email')?.value; }
4180
+ get telefone() { return this.formMeuPerfil.get('telefone')?.value; }
4181
+ ActivateFormAlterarSenha() {
4182
+ this.formAlterarSenha;
4183
+ this.formAlterarSenha.get('senhaNova')?.valueChanges.subscribe((value) => {
4184
+ value = value == "" ? "n" : value;
4185
+ this.CheckPassword(value);
4186
+ });
4187
+ }
4188
+ // #endregion ==========> FORM CONFIG <==========
4189
+ constructor(_authUtils, _bsModalService, _menuServices, _messageService, _perfilService, _router) {
4190
+ this._authUtils = _authUtils;
4191
+ this._bsModalService = _bsModalService;
4192
+ this._menuServices = _menuServices;
4193
+ this._messageService = _messageService;
4194
+ this._perfilService = _perfilService;
4195
+ this._router = _router;
4196
+ // #region ==========> PROPERTIES <==========
4197
+ // #region PRIVATE
4198
+ this._authStorageService = inject(AuthStorageService);
4199
+ this.reader = new FileReader();
4200
+ this.showEye1 = false;
4201
+ this.showEye2 = false;
4202
+ this.showEye3 = false;
4203
+ this.mostrarTodos = true;
4204
+ this.infraUsuarioImgData = new InfraUsuarioImg();
4205
+ this.usuarioData = new Usuario();
4206
+ this.teste = '';
4207
+ this.alertsEnabled = false;
4208
+ this.$retPasswordPolicy = new RetPasswordPolicy();
4209
+ this.$PasswordPolicyList = [];
4210
+ this.$retCheckPassword = new RetCheckPassword();
4211
+ this.$CheckPasswordResponse = new CheckPasswordRecord();
4212
+ this.isPasswordValid = false;
4213
+ this.adminId = "";
4214
+ this.isRenderingFinished = false;
4215
+ this.isLoading = true;
4216
+ this.isLoadingBtn = false;
4217
+ this.formMeuPerfil = new FormGroup({
4218
+ nome: new FormControl(this._authStorageService.userName),
4219
+ email: new FormControl('', [Validators.email]),
4220
+ telefone: new FormControl(null),
4221
+ });
4222
+ this.formAlterarSenha = new FormGroup({
4223
+ senhaAtual: new FormControl("", [Validators.required]),
4224
+ senhaNova: new FormControl("", [Validators.required]),
4225
+ senhaNovaConfirmar: new FormControl("", [Validators.required]),
4226
+ });
4095
4227
  }
4228
+ async ngOnInit() {
4229
+ this.usuarioData.Usuario = this._authStorageService.user;
4230
+ await this.getPerfil(this._authStorageService.tokenPayload.userId);
4231
+ await this.getInfraUsuarioImg(this._authStorageService.tokenPayload.userId);
4232
+ await this.GetPasswordPolicyList();
4233
+ await this.GetAdminId();
4234
+ this.isLoading = false;
4235
+ }
4236
+ // #region ==========> API <==========
4237
+ // #region GET
4238
+ async getPerfil(id) {
4239
+ try {
4240
+ const response = await firstValueFrom(this._perfilService.getUsuario(id));
4241
+ this.usuarioData = response.InfraUsuario;
4242
+ }
4243
+ catch (error) {
4244
+ this._messageService.showAlertDanger(Utils.getHttpErrorMessage(error));
4245
+ }
4246
+ }
4247
+ async getInfraUsuarioImg(usuarioId) {
4248
+ try {
4249
+ const response = await firstValueFrom(this._perfilService.getImagemUsuario(usuarioId));
4250
+ this.infraUsuarioImgData = response.InfraUsuarioImg;
4251
+ if (response.InfraUsuarioImg?.Imagem == "" || response.InfraUsuarioImg?.Imagem == null) {
4252
+ this.showIcon = true;
4253
+ }
4254
+ else {
4255
+ this.showIcon = false;
4256
+ }
4257
+ }
4258
+ catch (error) {
4259
+ this._messageService.showAlertDanger(Utils.getHttpErrorMessage(error));
4260
+ }
4261
+ }
4262
+ async GetPasswordPolicyList() {
4263
+ try {
4264
+ const response = await firstValueFrom(this._perfilService.getPasswordPolicy());
4265
+ this.$retPasswordPolicy = response;
4266
+ this.$PasswordPolicyList = response.PasswordPolicy;
4267
+ }
4268
+ catch (error) {
4269
+ this._authUtils.showHttpError(error);
4270
+ }
4271
+ }
4272
+ CheckPassword(senha = "") {
4273
+ this._perfilService.checkPassword(senha).subscribe({
4274
+ next: response => {
4275
+ this.$retCheckPassword = response;
4276
+ this.$CheckPasswordResponse = response.PasswordResult;
4277
+ },
4278
+ error: error => {
4279
+ this._authUtils.showHttpError(error);
4280
+ }
4281
+ });
4282
+ }
4283
+ async GetAdminId() {
4284
+ try {
4285
+ const response = await firstValueFrom(this._perfilService.getAdminId());
4286
+ this.adminId = response.String;
4287
+ // this.isRenderingFinished = this.adminId === " " ? false : true;
4288
+ this.isRenderingFinished = true;
4289
+ }
4290
+ catch (error) {
4291
+ this._authUtils.showHttpError(error);
4292
+ }
4293
+ }
4294
+ // #endregion GET
4295
+ // #region PUT
4296
+ updateUsuario(usuario) {
4297
+ this.isLoadingBtn = true;
4298
+ if (this.formMeuPerfil.valid) {
4299
+ usuario.Id = this.usuarioData.Id;
4300
+ usuario.Tenant_Id = this._authStorageService.tenantId;
4301
+ this._perfilService.updateUsuario(usuario).subscribe({
4302
+ next: response => {
4303
+ this.usuarioData = response.InfraUsuario;
4304
+ this._messageService.showAlertSuccess('Usuário atualizado com sucesso.');
4305
+ this.isLoadingBtn = false;
4306
+ },
4307
+ error: error => {
4308
+ this._authUtils.showHttpError(error);
4309
+ }
4310
+ });
4311
+ }
4312
+ else {
4313
+ this.isLoadingBtn = false;
4314
+ FormUtils.validateFields(this.formMeuPerfil);
4315
+ }
4316
+ }
4317
+ updateSenha(tenantId = this._authStorageService.tenantId, id, senhaAntiga, senhaNova, senhaNovaConfirmar) {
4318
+ try {
4319
+ // Estes 3 if's servem para que caso alguma senha seja nula, ela não vá como uma string "null" para o C#
4320
+ if (senhaAntiga == null) {
4321
+ senhaAntiga = "";
4322
+ }
4323
+ if (senhaNova == null) {
4324
+ senhaNova = "";
4325
+ }
4326
+ if (senhaNovaConfirmar == null) {
4327
+ senhaNovaConfirmar = "";
4328
+ }
4329
+ this._perfilService.updatePasswordMeuPerfil(id, senhaAntiga, senhaNova, senhaNovaConfirmar).subscribe({
4330
+ next: response => {
4331
+ if (response.UpdatePassword?.isPasswordValid) {
4332
+ this._messageService.showAlertSuccess(response.UpdatePassword.message);
4333
+ }
4334
+ else {
4335
+ this._messageService.showAlertDanger(response.UpdatePassword?.message ?? '');
4336
+ }
4337
+ this.closeModal();
4338
+ },
4339
+ error: error => {
4340
+ this._messageService.showAlertDanger(Utils.getHttpErrorMessage(error));
4341
+ }
4342
+ });
4343
+ }
4344
+ catch (error) {
4345
+ this._messageService.showAlertDanger(Utils.getHttpErrorMessage(error));
4346
+ }
4347
+ }
4348
+ updateImage(imagem, filename, usuarioId) {
4349
+ if (imagem != null && filename != null && usuarioId != null) {
4350
+ let imagemB64 = imagem.split('base64,')[1];
4351
+ this._perfilService.updatePhoto(imagemB64, filename, usuarioId).subscribe({
4352
+ next: () => {
4353
+ this._menuServices.newUserImageEvent(null);
4354
+ }
4355
+ });
4356
+ }
4357
+ this.isLoadingBtn = false;
4358
+ }
4359
+ // #endregion PUT
4360
+ // #endregion ==========> API <==========
4361
+ // #region ==========> UTILS <==========
4362
+ readImage(file) {
4363
+ if (file) {
4364
+ if (file.size <= 512000 && file.name.length <= 50) {
4365
+ this.photoUser = document.getElementById('photoUser');
4366
+ this.reader.onload = () => {
4367
+ this.photoUser.src = this.reader.result;
4368
+ this.filename = file.name;
4369
+ };
4370
+ this.reader.readAsDataURL(file);
4371
+ }
4372
+ }
4373
+ }
4374
+ onPasswordValidityChange(isValid) {
4375
+ this.isPasswordValid = isValid;
4376
+ }
4377
+ uploadFile() {
4378
+ document.getElementById('flImage')?.click();
4379
+ }
4380
+ removeIcon(inputFile) {
4381
+ if (inputFile) {
4382
+ if (inputFile.files.item(0).name.length <= 50) {
4383
+ if (inputFile.files.item(0).size <= 512000) {
4384
+ this.showIcon = false;
4385
+ }
4386
+ else {
4387
+ this._messageService.showAlertDanger('O arquivo é muito grande, deve ter no máximo 500kb.');
4388
+ inputFile.value = "";
4389
+ }
4390
+ }
4391
+ else {
4392
+ this._messageService.showAlertDanger('O nome do arquivo é muito grande, deve ter no máximo 50 caracteres.');
4393
+ inputFile.value = "";
4394
+ }
4395
+ }
4396
+ }
4397
+ openModal(template) {
4398
+ this._bsModalService.show(template, {
4399
+ class: 'modal-dialog-centered',
4400
+ ignoreBackdropClick: false,
4401
+ keyboard: false
4402
+ });
4403
+ this.showEye1 = false;
4404
+ this.showEye2 = false;
4405
+ this.showEye3 = false;
4406
+ this.mostrarTodos = true;
4407
+ }
4408
+ closeModal() {
4409
+ this._bsModalService.hide();
4410
+ }
4411
+ return() { this._router.navigate(['/']); }
4412
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MeuPerfilComponent, deps: [{ token: AuthUtilService }, { token: i4.BsModalService }, { token: MenuServicesService }, { token: i3.MessageService }, { token: MeuPerfilService }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
4413
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: MeuPerfilComponent, isStandalone: true, selector: "lib-meu-perfil", ngImport: i0, template: "<!-- #region HEADER -->\n<lib-header pageTitle=\"Meu perfil\" [breadcrumbList]=\"['Configura\u00E7\u00F5es', 'Meu perfil']\" mode=\"edit\" [showSpinner]=\"isLoadingBtn\"\n (return)=\"return()\" (update)=\"updateUsuario(usuarioData); updateImage(photoUser.src, filename ?? '', usuarioData.Id!)\" />\n<!-- #endregion HEADER -->\n\n<!-- #region MAIN CONTENT -->\n@defer (when !isLoading) {\n <lib-container>\n <div innerContent1 class=\"d-flex\">\n <!-- #region FOTO PERFIL -->\n <div class=\"profile-photo-div\">\n\n @if (showIcon) {\n <svg width=\"144\" height=\"144\" viewBox=\"0 0 144 144\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"72\" cy=\"72\" r=\"72\" fill=\"#6C757D\" />\n <path\n d=\"M104 108V100C104 95.7565 102.314 91.6869 99.3137 88.6863C96.3131 85.6857 92.2435 84 88 84H56C51.7565 84 47.6869 85.6857 44.6863 88.6863C41.6857 91.6869 40 95.7565 40 100V108\"\n stroke=\"white\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M72 68C80.8366 68 88 60.8366 88 52C88 43.1634 80.8366 36 72 36C63.1634 36 56 43.1634 56 52C56 60.8366 63.1634 68 72 68Z\"\n stroke=\"white\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <circle cx=\"120\" cy=\"120\" r=\"23\" fill=\"#0D6EFD\" stroke=\"white\" stroke-width=\"2\" />\n <path\n d=\"M131 127C131 127.53 130.789 128.039 130.414 128.414C130.039 128.789 129.53 129 129 129H111C110.47 129 109.961 128.789 109.586 128.414C109.211 128.039 109 127.53 109 127V116C109 115.47 109.211 114.961 109.586 114.586C109.961 114.211 110.47 114 111 114H115L117 111H123L125 114H129C129.53 114 130.039 114.211 130.414 114.586C130.789 114.961 131 115.47 131 116V127Z\"\n stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M120 125C122.209 125 124 123.209 124 121C124 118.791 122.209 117 120 117C117.791 117 116 118.791 116 121C116 123.209 117.791 125 120 125Z\"\n stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n }\n @else {\n @if (infraUsuarioImgData.Imagem) {\n <div class=\"image-div\">\n <img id=\"photoUser\" [src]=\"['data:image/jpeg;base64,' + infraUsuarioImgData.Imagem]\">\n </div>\n }\n @else {\n <div class=\"image-div\">\n <img id=\"photoUser\">\n </div>\n }\n\n <!-- TODO: Este trecho abaixo deve ser removido futuramente pois tem a mesma altura da foto, o que a faz ficar duplicada -->\n <div class=\"photo-cam-div\">\n <svg width=\"144\" height=\"144\" viewBox=\"0 0 144 144\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"120\" cy=\"120\" r=\"23\" fill=\"#0D6EFD\" stroke=\"white\" stroke-width=\"2\" />\n <path\n d=\"M131 127C131 127.53 130.789 128.039 130.414 128.414C130.039 128.789 129.53 129 129 129H111C110.47 129 109.961 128.789 109.586 128.414C109.211 128.039 109 127.53 109 127V116C109 115.47 109.211 114.961 109.586 114.586C109.961 114.211 110.47 114 111 114H115L117 111H123L125 114H129C129.53 114 130.039 114.211 130.414 114.586C130.789 114.961 131 115.47 131 116V127Z\"\n stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M120 125C122.209 125 124 123.209 124 121C124 118.791 122.209 117 120 117C117.791 117 116 118.791 116 121C116 123.209 117.791 125 120 125Z\"\n stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n <!-- TODO: Este trecho acima deve ser removido futuramente pois tem a mesma altura da foto, o que a faz ficar duplicada -->\n\n <div class=\"d-flex justify-content-end\">\n <div class=\"file-upload-div-2\" id=\"imgPhoto\" (click)=\"uploadFile()\"></div>\n </div>\n }\n\n @if (showIcon) {\n <div class=\"d-flex justify-content-end\">\n <div class=\"file-upload-div\" id=\"imgPhoto\" (click)=\"uploadFile()\"></div>\n </div>\n }\n </div>\n\n <input #inputFileUpload type=\"file\" id=\"flImage\" name=\"fImage\" accept=\"image/*\"\n (change)=\"removeIcon(inputFileUpload); readImage(inputFileUpload.files?.item(0))\" >\n <!-- #endregion FOTO PERFIL -->\n\n <div class=\"info-content\">\n <!-- #region USU\u00C1RIO -->\n <div>\n <label class=\"form-label form-nome\">Usu\u00E1rio</label>\n </div>\n\n <div class=\"permission-div\">\n <span class=\"permission\">{{ usuarioData.Usuario }}</span>\n </div>\n <!-- #endregion USU\u00C1RIO -->\n\n <div>\n <form [formGroup]=\"formMeuPerfil\">\n <!-- <div class=\"\"> -->\n <div class=\"row mb-3\">\n\n <!-- #region NOME -->\n @if (usuarioData.Usuario != 'admin') {\n <div class=\"col-6\">\n <label libRequired for=\"inputCode\" class=\"form-label form-nome\">Nome</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"nome\" [(ngModel)]=\"usuarioData.Nome\">\n </div>\n }\n @else {\n <div class=\"col-6 d-flex flex-column\">\n <label for=\"inputCode\" class=\"form-label form-nome\">Nome</label>\n <input readonly type=\"text\" class=\"form-control\" formControlName=\"nome\" >\n </div>\n }\n <!-- #endregion NOME-->\n\n <!-- #region SENHA -->\n @defer (when isRenderingFinished && (usuarioData.InfraConfigLDAP == 0 || usuarioData.InfraConfigLDAP == null)) {\n <div class=\"d-flex align-items-center justify-content-start col mt-4 gap-3\">\n @if (this.usuarioData.Id != adminId) {\n <div class=\"alterar-senha-div d-flex\">\n <button class=\"btn btn-outline-primary align-items-center\" (click)=\"openModal(modalTrocaSenha)\"\n (click)=\"ActivateFormAlterarSenha()\">Alterar senha\n </button>\n </div>\n }\n @else {\n <div class=\"d-flex align-items-center justify-content-center\">\n <p class=\"admin-texto mb-0 text-center fst-italic \">N\u00E3o \u00E9 poss\u00EDvel alterar a senha do usu\u00E1rio 'admin'</p>\n </div>\n }\n </div>\n }\n <!-- #endregion SENHA -->\n </div>\n\n <div class=\"row\">\n <!-- #region EMAIL -->\n <div class=\"col\">\n <label libRequired for=\"inputCode\" class=\"form-label\">E-mail</label>\n <input type=\"email\" class=\"form-control\" formControlName=\"email\" [(ngModel)]=\"usuarioData.Email\"\n [class.is-invalid]=\"FormUtils.isInvalidField(formMeuPerfil.get('email'))\" >\n <app-field-error-message [control]=\"formMeuPerfil.get('email')\" label=\"E-mail\"></app-field-error-message>\n </div>\n <!-- #endregion EMAIL -->\n\n <!-- #region TELEFONE -->\n <div class=\"col\">\n <label for=\"inputCode\" class=\"form-label\">Telefone</label>\n <input type=\"text\" class=\"form-control\" id=\"inputTelefone\" formControlName=\"telefone\" [(ngModel)]=\"usuarioData.Telefone\"\n [showMaskTyped]=\"false\" mask=\"(00) 0000-0000||(00) 00000-0000\" [dropSpecialCharacters]=\"true\" placeholder=\"(00) 00000-0000\"\n [class.is-invalid]=\"FormUtils.isInvalidField(formMeuPerfil.get('telefone'))\" />\n </div>\n <!-- #endregion TELEFONE -->\n </div>\n </form>\n </div>\n\n </div>\n </div>\n </lib-container>\n}\n@placeholder {\n <div class=\"d-flex justify-content-center\">\n <lib-spinner></lib-spinner>\n </div>\n}\n<!-- #endregion MAIN CONTENT -->\n\n\n<!-- #region MODAL TROCA SENHA -->\n<ng-template #modalTrocaSenha>\n <div class=\"px-4 pt-4\">\n <div class=\"d-flex justify-content-between\">\n <h4 class=\"modal-title pull-left\">Alterar senha </h4>\n <button (click)=\"closeModal()\" type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n </div>\n </div>\n\n <hr>\n\n <div class=\"modal-body\">\n <form [formGroup]=\"formAlterarSenha\">\n <div class=\"modal-message\">\n\n <!-- #region SENHA ATUAL -->\n @if (!showEye1) {\n <div class=\"modal-senha\">\n <label libRequired for=\"inputCode\" class=\"form-label\">Senha atual</label>\n <input type=\"password\" class=\"form-control\" formControlName=\"senhaAtual\" placeholder=\"Informe a senha atual\">\n <div class=\"modal-icon d-flex justify-content-end align-items-center\">\n <svg (click)=\"showEye1 = true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\n fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"feather feather-eye-off\">\n <path\n d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n\n <!-- <lib-icon iconName=\"olho\" iconColor=\"gray\" /> -->\n </div>\n </div>\n }\n @else {\n <div class=\"modal-senha\">\n <label libRequired for=\"inputCode\" class=\"form-label\">Senha atual</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"senhaAtual\" placeholder=\"Informe a senha atual\">\n <div class=\"modal-icon d-flex justify-content-end align-items-center\">\n <svg (click)=\"showEye1 = false\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" class=\"feather feather-eye\">\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n </div>\n </div>\n }\n <!-- #endregion SENHA ATUAL -->\n\n <!-- #region NOVA SENHA -->\n @if (!showEye2) {\n <div class=\"modal-senha\">\n <label libRequired for=\"inputCode\" class=\"form-label\">Nova senha</label>\n <input type=\"password\" class=\"form-control\" formControlName=\"senhaNova\" placeholder=\"Informe a nova senha\">\n <div class=\"modal-icon d-flex justify-content-end align-items-center\">\n <svg (click)=\"showEye2 = true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\n fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"feather feather-eye-off\">\n <path\n d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n </div>\n </div>\n }\n @else {\n <div class=\"modal-senha\">\n <label libRequired for=\"inputCode\" class=\"form-label\">Nova senha</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"senhaNova\" placeholder=\"Informe a nova senha\">\n <div class=\"modal-icon d-flex justify-content-end align-items-center\">\n <svg (click)=\"showEye2 = false\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" class=\"feather feather-eye\">\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n </div>\n </div>\n }\n <!-- #endregion NOVA SENHA -->\n\n <!-- #region CONFIRMAR NOVA SENHA -->\n @if (!showEye3) {\n <div class=\"modal-senha\">\n <label libRequired for=\"inputCode\" class=\"form-label\">Confirmar nova senha</label>\n <input type=\"password\" class=\"form-control\" formControlName=\"senhaNovaConfirmar\"\n placeholder=\"Informe a nova senha\">\n <div class=\"modal-icon d-flex justify-content-end align-items-center\">\n <svg (click)=\"showEye3 = true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\n fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"feather feather-eye-off\">\n <path\n d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n </div>\n </div>\n }\n @else {\n <div class=\"modal-senha\">\n <label libRequired for=\"inputCode\" class=\"form-label\">Confirmar nova senha</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"senhaNovaConfirmar\"\n placeholder=\"Informe a nova senha\">\n <div class=\"modal-icon d-flex justify-content-end align-items-center\">\n <svg (click)=\"showEye3 = false\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" class=\"feather feather-eye\">\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n </div>\n </div>\n }\n <!-- #endregion CONFIRMAR NOVA SENHA -->\n\n <!-- #region MOSTRAR TODOS -->\n @if (mostrarTodos) {\n <div class=\"div-mostrar-todos-main d-flex justify-content-end align-items-center\">\n <div class=\"div-mostrar-ocultar\"\n (click)=\"showEye1 = true; showEye2 = true; showEye3 = true; mostrarTodos = false\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"feather feather-eye\">\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n Mostrar todos\n </div>\n </div>\n }\n @else {\n <div class=\" div-mostrar-todos-main d-flex justify-content-end align-items-center\">\n <div class=\"div-mostrar-ocultar\"\n (click)=\"showEye1 = false; showEye2 = false; showEye3 = false; mostrarTodos = true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"feather feather-eye-off\">\n <path\n d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n Ocultar todos\n </div>\n </div>\n }\n\n <lib-password-policy [title]=\"'Requisitos da senha'\" [passwordRequirements]=\"$PasswordPolicyList[0]\"\n [checkPassword]=\"$CheckPasswordResponse\" (isPasswordValid)=\"onPasswordValidityChange($event)\" />\n\n </div>\n </form>\n </div>\n\n <div class=\"modal-footer\">\n <button (click)=\"closeModal()\" type=\"button\" class=\"btn btn-outline-primary modal-button\"> Cancelar </button>\n <button type=\"button\" class=\"btn btn-outline-primary modal-button\" [disabled]=\"isPasswordValid\"\n (click)=\"updateSenha(usuarioData.Tenant_Id, usuarioData.Id!, formAlterarSenha.get('senhaAtual')?.value, formAlterarSenha.get('senhaNova')?.value, formAlterarSenha.get('senhaNovaConfirmar')?.value)\">\n Salvar\n </button>\n </div>\n</ng-template>\n<!-- #endregion MODAL TROCA SENHA -->", styles: ["lib-container .profile-photo-div .file-upload-div{background-color:transparent;width:46px;min-width:46px;height:46px;border-radius:100%;margin-right:2px;position:relative;top:-48px;z-index:3;cursor:pointer}lib-container .profile-photo-div .image-div{width:144px;height:144px;border-radius:100%;overflow:hidden;z-index:1}lib-container .profile-photo-div .image-div #photoUser{width:146px;height:146px;top:-1px;left:-1px;object-fit:cover;position:relative;z-index:1;border:none;border-color:transparent}lib-container .profile-photo-div .photo-cam-div{position:relative;top:-144px;z-index:2}lib-container .profile-photo-div .file-upload-div-2{background-color:transparent;width:46px;height:46px;border-radius:100%;margin-right:2px;position:relative;top:-190px;z-index:3;cursor:pointer}lib-container input[type=file]{display:none}lib-container .info-content{margin-left:24px;width:100%}lib-container .info-content .user{font-size:16px;margin-bottom:16px}lib-container .info-content .permission-div{margin-bottom:24px}lib-container .info-content .permission-div .permission{font-size:16px;color:#6c757d;font-weight:700}.alterar-senha-div{padding-left:8px;margin-right:65%;margin-top:8px;white-space:nowrap}.modal-body .modal-message .modal-senha{height:70px;margin-bottom:16px}.modal-body .modal-message .modal-senha input{position:relative;z-index:1;padding-right:40px}.modal-body .modal-message .modal-senha .modal-icon{height:38px;position:relative;top:-38px}.modal-body .modal-message .modal-senha .modal-icon svg{cursor:pointer;z-index:2;margin-right:10px;color:#a5a5a5}.modal-body .modal-message .div-mostrar-todos-main{color:#0d6efd}.modal-body .modal-message .div-mostrar-todos-main .div-mostrar-ocultar{cursor:pointer;display:flex;align-items:center}.modal-body .modal-message .div-mostrar-todos-main .div-mostrar-ocultar svg{margin-right:5px}.admin-texto{color:#084298;margin-bottom:-9px!important;white-space:nowrap}.admin-nome{font-size:16px;color:#6c757d;font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: InfraModule }, { kind: "directive", type: i3.RequiredDirective, selector: "label[libRequired], span[libRequired], p[libRequired]", inputs: ["libRequired", "requiredID"] }, { kind: "component", type: i3.LibHeaderComponent, selector: "lib-header", inputs: ["breadcrumbList", "pageTitle", "mode", "hideButtons", "formGroup", "showSpinner", "auditoria", "button"], outputs: ["onReturn", "return", "onCreate", "create", "onUpdate", "update", "save"] }, { kind: "component", type: i3.LibSpinnerComponent, selector: "lib-spinner", inputs: ["type", "theme", "size", "helperText"] }, { kind: "component", type: i3.PasswordPolicyComponent, selector: "lib-password-policy", inputs: ["passwordRequirements", "checkPassword", "title", "isConfirmPasswordValid"], outputs: ["isPasswordValid"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], deferBlockDependencies: [() => [i3.FieldErrorMessageComponent, i3.RequiredDirective, i3.ContentContainerComponent, i7.ɵNgNoValidate, i7.DefaultValueAccessor, i7.NgControlStatus, i7.NgControlStatusGroup, i7.FormGroupDirective, i7.FormControlName, import('ngx-mask').then(m => m.NgxMaskDirective)], null] }); }
4096
4414
  }
4415
+ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.25", ngImport: i0, type: MeuPerfilComponent, resolveDeferredDeps: () => [import('ngx-mask').then(m => m.NgxMaskDirective)], resolveMetadata: NgxMaskDirective => ({ decorators: [{
4416
+ type: Component,
4417
+ args: [{ selector: 'lib-meu-perfil', imports: [
4418
+ InfraModule,
4419
+ NgIf,
4420
+ FormsModule,
4421
+ ReactiveFormsModule,
4422
+ NgxMaskDirective,
4423
+ PasswordPolicyComponent,
4424
+ ], template: "<!-- #region HEADER -->\n<lib-header pageTitle=\"Meu perfil\" [breadcrumbList]=\"['Configura\u00E7\u00F5es', 'Meu perfil']\" mode=\"edit\" [showSpinner]=\"isLoadingBtn\"\n (return)=\"return()\" (update)=\"updateUsuario(usuarioData); updateImage(photoUser.src, filename ?? '', usuarioData.Id!)\" />\n<!-- #endregion HEADER -->\n\n<!-- #region MAIN CONTENT -->\n@defer (when !isLoading) {\n <lib-container>\n <div innerContent1 class=\"d-flex\">\n <!-- #region FOTO PERFIL -->\n <div class=\"profile-photo-div\">\n\n @if (showIcon) {\n <svg width=\"144\" height=\"144\" viewBox=\"0 0 144 144\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"72\" cy=\"72\" r=\"72\" fill=\"#6C757D\" />\n <path\n d=\"M104 108V100C104 95.7565 102.314 91.6869 99.3137 88.6863C96.3131 85.6857 92.2435 84 88 84H56C51.7565 84 47.6869 85.6857 44.6863 88.6863C41.6857 91.6869 40 95.7565 40 100V108\"\n stroke=\"white\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M72 68C80.8366 68 88 60.8366 88 52C88 43.1634 80.8366 36 72 36C63.1634 36 56 43.1634 56 52C56 60.8366 63.1634 68 72 68Z\"\n stroke=\"white\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <circle cx=\"120\" cy=\"120\" r=\"23\" fill=\"#0D6EFD\" stroke=\"white\" stroke-width=\"2\" />\n <path\n d=\"M131 127C131 127.53 130.789 128.039 130.414 128.414C130.039 128.789 129.53 129 129 129H111C110.47 129 109.961 128.789 109.586 128.414C109.211 128.039 109 127.53 109 127V116C109 115.47 109.211 114.961 109.586 114.586C109.961 114.211 110.47 114 111 114H115L117 111H123L125 114H129C129.53 114 130.039 114.211 130.414 114.586C130.789 114.961 131 115.47 131 116V127Z\"\n stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M120 125C122.209 125 124 123.209 124 121C124 118.791 122.209 117 120 117C117.791 117 116 118.791 116 121C116 123.209 117.791 125 120 125Z\"\n stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n }\n @else {\n @if (infraUsuarioImgData.Imagem) {\n <div class=\"image-div\">\n <img id=\"photoUser\" [src]=\"['data:image/jpeg;base64,' + infraUsuarioImgData.Imagem]\">\n </div>\n }\n @else {\n <div class=\"image-div\">\n <img id=\"photoUser\">\n </div>\n }\n\n <!-- TODO: Este trecho abaixo deve ser removido futuramente pois tem a mesma altura da foto, o que a faz ficar duplicada -->\n <div class=\"photo-cam-div\">\n <svg width=\"144\" height=\"144\" viewBox=\"0 0 144 144\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"120\" cy=\"120\" r=\"23\" fill=\"#0D6EFD\" stroke=\"white\" stroke-width=\"2\" />\n <path\n d=\"M131 127C131 127.53 130.789 128.039 130.414 128.414C130.039 128.789 129.53 129 129 129H111C110.47 129 109.961 128.789 109.586 128.414C109.211 128.039 109 127.53 109 127V116C109 115.47 109.211 114.961 109.586 114.586C109.961 114.211 110.47 114 111 114H115L117 111H123L125 114H129C129.53 114 130.039 114.211 130.414 114.586C130.789 114.961 131 115.47 131 116V127Z\"\n stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M120 125C122.209 125 124 123.209 124 121C124 118.791 122.209 117 120 117C117.791 117 116 118.791 116 121C116 123.209 117.791 125 120 125Z\"\n stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n <!-- TODO: Este trecho acima deve ser removido futuramente pois tem a mesma altura da foto, o que a faz ficar duplicada -->\n\n <div class=\"d-flex justify-content-end\">\n <div class=\"file-upload-div-2\" id=\"imgPhoto\" (click)=\"uploadFile()\"></div>\n </div>\n }\n\n @if (showIcon) {\n <div class=\"d-flex justify-content-end\">\n <div class=\"file-upload-div\" id=\"imgPhoto\" (click)=\"uploadFile()\"></div>\n </div>\n }\n </div>\n\n <input #inputFileUpload type=\"file\" id=\"flImage\" name=\"fImage\" accept=\"image/*\"\n (change)=\"removeIcon(inputFileUpload); readImage(inputFileUpload.files?.item(0))\" >\n <!-- #endregion FOTO PERFIL -->\n\n <div class=\"info-content\">\n <!-- #region USU\u00C1RIO -->\n <div>\n <label class=\"form-label form-nome\">Usu\u00E1rio</label>\n </div>\n\n <div class=\"permission-div\">\n <span class=\"permission\">{{ usuarioData.Usuario }}</span>\n </div>\n <!-- #endregion USU\u00C1RIO -->\n\n <div>\n <form [formGroup]=\"formMeuPerfil\">\n <!-- <div class=\"\"> -->\n <div class=\"row mb-3\">\n\n <!-- #region NOME -->\n @if (usuarioData.Usuario != 'admin') {\n <div class=\"col-6\">\n <label libRequired for=\"inputCode\" class=\"form-label form-nome\">Nome</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"nome\" [(ngModel)]=\"usuarioData.Nome\">\n </div>\n }\n @else {\n <div class=\"col-6 d-flex flex-column\">\n <label for=\"inputCode\" class=\"form-label form-nome\">Nome</label>\n <input readonly type=\"text\" class=\"form-control\" formControlName=\"nome\" >\n </div>\n }\n <!-- #endregion NOME-->\n\n <!-- #region SENHA -->\n @defer (when isRenderingFinished && (usuarioData.InfraConfigLDAP == 0 || usuarioData.InfraConfigLDAP == null)) {\n <div class=\"d-flex align-items-center justify-content-start col mt-4 gap-3\">\n @if (this.usuarioData.Id != adminId) {\n <div class=\"alterar-senha-div d-flex\">\n <button class=\"btn btn-outline-primary align-items-center\" (click)=\"openModal(modalTrocaSenha)\"\n (click)=\"ActivateFormAlterarSenha()\">Alterar senha\n </button>\n </div>\n }\n @else {\n <div class=\"d-flex align-items-center justify-content-center\">\n <p class=\"admin-texto mb-0 text-center fst-italic \">N\u00E3o \u00E9 poss\u00EDvel alterar a senha do usu\u00E1rio 'admin'</p>\n </div>\n }\n </div>\n }\n <!-- #endregion SENHA -->\n </div>\n\n <div class=\"row\">\n <!-- #region EMAIL -->\n <div class=\"col\">\n <label libRequired for=\"inputCode\" class=\"form-label\">E-mail</label>\n <input type=\"email\" class=\"form-control\" formControlName=\"email\" [(ngModel)]=\"usuarioData.Email\"\n [class.is-invalid]=\"FormUtils.isInvalidField(formMeuPerfil.get('email'))\" >\n <app-field-error-message [control]=\"formMeuPerfil.get('email')\" label=\"E-mail\"></app-field-error-message>\n </div>\n <!-- #endregion EMAIL -->\n\n <!-- #region TELEFONE -->\n <div class=\"col\">\n <label for=\"inputCode\" class=\"form-label\">Telefone</label>\n <input type=\"text\" class=\"form-control\" id=\"inputTelefone\" formControlName=\"telefone\" [(ngModel)]=\"usuarioData.Telefone\"\n [showMaskTyped]=\"false\" mask=\"(00) 0000-0000||(00) 00000-0000\" [dropSpecialCharacters]=\"true\" placeholder=\"(00) 00000-0000\"\n [class.is-invalid]=\"FormUtils.isInvalidField(formMeuPerfil.get('telefone'))\" />\n </div>\n <!-- #endregion TELEFONE -->\n </div>\n </form>\n </div>\n\n </div>\n </div>\n </lib-container>\n}\n@placeholder {\n <div class=\"d-flex justify-content-center\">\n <lib-spinner></lib-spinner>\n </div>\n}\n<!-- #endregion MAIN CONTENT -->\n\n\n<!-- #region MODAL TROCA SENHA -->\n<ng-template #modalTrocaSenha>\n <div class=\"px-4 pt-4\">\n <div class=\"d-flex justify-content-between\">\n <h4 class=\"modal-title pull-left\">Alterar senha </h4>\n <button (click)=\"closeModal()\" type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n </div>\n </div>\n\n <hr>\n\n <div class=\"modal-body\">\n <form [formGroup]=\"formAlterarSenha\">\n <div class=\"modal-message\">\n\n <!-- #region SENHA ATUAL -->\n @if (!showEye1) {\n <div class=\"modal-senha\">\n <label libRequired for=\"inputCode\" class=\"form-label\">Senha atual</label>\n <input type=\"password\" class=\"form-control\" formControlName=\"senhaAtual\" placeholder=\"Informe a senha atual\">\n <div class=\"modal-icon d-flex justify-content-end align-items-center\">\n <svg (click)=\"showEye1 = true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\n fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"feather feather-eye-off\">\n <path\n d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n\n <!-- <lib-icon iconName=\"olho\" iconColor=\"gray\" /> -->\n </div>\n </div>\n }\n @else {\n <div class=\"modal-senha\">\n <label libRequired for=\"inputCode\" class=\"form-label\">Senha atual</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"senhaAtual\" placeholder=\"Informe a senha atual\">\n <div class=\"modal-icon d-flex justify-content-end align-items-center\">\n <svg (click)=\"showEye1 = false\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" class=\"feather feather-eye\">\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n </div>\n </div>\n }\n <!-- #endregion SENHA ATUAL -->\n\n <!-- #region NOVA SENHA -->\n @if (!showEye2) {\n <div class=\"modal-senha\">\n <label libRequired for=\"inputCode\" class=\"form-label\">Nova senha</label>\n <input type=\"password\" class=\"form-control\" formControlName=\"senhaNova\" placeholder=\"Informe a nova senha\">\n <div class=\"modal-icon d-flex justify-content-end align-items-center\">\n <svg (click)=\"showEye2 = true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\n fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"feather feather-eye-off\">\n <path\n d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n </div>\n </div>\n }\n @else {\n <div class=\"modal-senha\">\n <label libRequired for=\"inputCode\" class=\"form-label\">Nova senha</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"senhaNova\" placeholder=\"Informe a nova senha\">\n <div class=\"modal-icon d-flex justify-content-end align-items-center\">\n <svg (click)=\"showEye2 = false\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" class=\"feather feather-eye\">\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n </div>\n </div>\n }\n <!-- #endregion NOVA SENHA -->\n\n <!-- #region CONFIRMAR NOVA SENHA -->\n @if (!showEye3) {\n <div class=\"modal-senha\">\n <label libRequired for=\"inputCode\" class=\"form-label\">Confirmar nova senha</label>\n <input type=\"password\" class=\"form-control\" formControlName=\"senhaNovaConfirmar\"\n placeholder=\"Informe a nova senha\">\n <div class=\"modal-icon d-flex justify-content-end align-items-center\">\n <svg (click)=\"showEye3 = true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\n fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"feather feather-eye-off\">\n <path\n d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n </div>\n </div>\n }\n @else {\n <div class=\"modal-senha\">\n <label libRequired for=\"inputCode\" class=\"form-label\">Confirmar nova senha</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"senhaNovaConfirmar\"\n placeholder=\"Informe a nova senha\">\n <div class=\"modal-icon d-flex justify-content-end align-items-center\">\n <svg (click)=\"showEye3 = false\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" class=\"feather feather-eye\">\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n </div>\n </div>\n }\n <!-- #endregion CONFIRMAR NOVA SENHA -->\n\n <!-- #region MOSTRAR TODOS -->\n @if (mostrarTodos) {\n <div class=\"div-mostrar-todos-main d-flex justify-content-end align-items-center\">\n <div class=\"div-mostrar-ocultar\"\n (click)=\"showEye1 = true; showEye2 = true; showEye3 = true; mostrarTodos = false\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"feather feather-eye\">\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n Mostrar todos\n </div>\n </div>\n }\n @else {\n <div class=\" div-mostrar-todos-main d-flex justify-content-end align-items-center\">\n <div class=\"div-mostrar-ocultar\"\n (click)=\"showEye1 = false; showEye2 = false; showEye3 = false; mostrarTodos = true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"feather feather-eye-off\">\n <path\n d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n Ocultar todos\n </div>\n </div>\n }\n\n <lib-password-policy [title]=\"'Requisitos da senha'\" [passwordRequirements]=\"$PasswordPolicyList[0]\"\n [checkPassword]=\"$CheckPasswordResponse\" (isPasswordValid)=\"onPasswordValidityChange($event)\" />\n\n </div>\n </form>\n </div>\n\n <div class=\"modal-footer\">\n <button (click)=\"closeModal()\" type=\"button\" class=\"btn btn-outline-primary modal-button\"> Cancelar </button>\n <button type=\"button\" class=\"btn btn-outline-primary modal-button\" [disabled]=\"isPasswordValid\"\n (click)=\"updateSenha(usuarioData.Tenant_Id, usuarioData.Id!, formAlterarSenha.get('senhaAtual')?.value, formAlterarSenha.get('senhaNova')?.value, formAlterarSenha.get('senhaNovaConfirmar')?.value)\">\n Salvar\n </button>\n </div>\n</ng-template>\n<!-- #endregion MODAL TROCA SENHA -->", styles: ["lib-container .profile-photo-div .file-upload-div{background-color:transparent;width:46px;min-width:46px;height:46px;border-radius:100%;margin-right:2px;position:relative;top:-48px;z-index:3;cursor:pointer}lib-container .profile-photo-div .image-div{width:144px;height:144px;border-radius:100%;overflow:hidden;z-index:1}lib-container .profile-photo-div .image-div #photoUser{width:146px;height:146px;top:-1px;left:-1px;object-fit:cover;position:relative;z-index:1;border:none;border-color:transparent}lib-container .profile-photo-div .photo-cam-div{position:relative;top:-144px;z-index:2}lib-container .profile-photo-div .file-upload-div-2{background-color:transparent;width:46px;height:46px;border-radius:100%;margin-right:2px;position:relative;top:-190px;z-index:3;cursor:pointer}lib-container input[type=file]{display:none}lib-container .info-content{margin-left:24px;width:100%}lib-container .info-content .user{font-size:16px;margin-bottom:16px}lib-container .info-content .permission-div{margin-bottom:24px}lib-container .info-content .permission-div .permission{font-size:16px;color:#6c757d;font-weight:700}.alterar-senha-div{padding-left:8px;margin-right:65%;margin-top:8px;white-space:nowrap}.modal-body .modal-message .modal-senha{height:70px;margin-bottom:16px}.modal-body .modal-message .modal-senha input{position:relative;z-index:1;padding-right:40px}.modal-body .modal-message .modal-senha .modal-icon{height:38px;position:relative;top:-38px}.modal-body .modal-message .modal-senha .modal-icon svg{cursor:pointer;z-index:2;margin-right:10px;color:#a5a5a5}.modal-body .modal-message .div-mostrar-todos-main{color:#0d6efd}.modal-body .modal-message .div-mostrar-todos-main .div-mostrar-ocultar{cursor:pointer;display:flex;align-items:center}.modal-body .modal-message .div-mostrar-todos-main .div-mostrar-ocultar svg{margin-right:5px}.admin-texto{color:#084298;margin-bottom:-9px!important;white-space:nowrap}.admin-nome{font-size:16px;color:#6c757d;font-weight:700}\n"] }]
4425
+ }], ctorParameters: () => [{ type: AuthUtilService }, { type: i4.BsModalService }, { type: MenuServicesService }, { type: i3.MessageService }, { type: MeuPerfilService }, { type: i1$1.Router }], propDecorators: null }) });
4097
4426
 
4098
4427
  class AuthGuard {
4099
4428
  constructor(router, authStorageService) {
@@ -4116,10 +4445,10 @@ class AuthGuard {
4116
4445
  canLoad(_route) {
4117
4446
  return this.IsUserAuth();
4118
4447
  }
4119
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthGuard, deps: [{ token: i1$1.Router }, { token: AuthStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4120
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
4448
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthGuard, deps: [{ token: i1$1.Router }, { token: AuthStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4449
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
4121
4450
  }
4122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthGuard, decorators: [{
4451
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthGuard, decorators: [{
4123
4452
  type: Injectable,
4124
4453
  args: [{ providedIn: 'root' }]
4125
4454
  }], ctorParameters: () => [{ type: i1$1.Router }, { type: AuthStorageService }] });
@@ -4195,10 +4524,10 @@ class ExternaLoginlGuard {
4195
4524
  return false;
4196
4525
  }
4197
4526
  }
4198
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ExternaLoginlGuard, deps: [{ token: i1$1.Router }, { token: AuthService }, { token: AuthStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4199
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ExternaLoginlGuard, providedIn: 'root' }); }
4527
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ExternaLoginlGuard, deps: [{ token: i1$1.Router }, { token: AuthService }, { token: AuthStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4528
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ExternaLoginlGuard, providedIn: 'root' }); }
4200
4529
  }
4201
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ExternaLoginlGuard, decorators: [{
4530
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ExternaLoginlGuard, decorators: [{
4202
4531
  type: Injectable,
4203
4532
  args: [{ providedIn: 'root' }]
4204
4533
  }], ctorParameters: () => [{ type: i1$1.Router }, { type: AuthService }, { type: AuthStorageService }] });
@@ -4258,10 +4587,10 @@ class IsMenuAllowedlGuard {
4258
4587
  });
4259
4588
  });
4260
4589
  }
4261
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: IsMenuAllowedlGuard, deps: [{ token: i1$1.Router }, { token: MenuServicesService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4262
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: IsMenuAllowedlGuard, providedIn: 'root' }); }
4590
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: IsMenuAllowedlGuard, deps: [{ token: i1$1.Router }, { token: MenuServicesService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4591
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: IsMenuAllowedlGuard, providedIn: 'root' }); }
4263
4592
  }
4264
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: IsMenuAllowedlGuard, decorators: [{
4593
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: IsMenuAllowedlGuard, decorators: [{
4265
4594
  type: Injectable,
4266
4595
  args: [{ providedIn: 'root' }]
4267
4596
  }], ctorParameters: () => [{ type: i1$1.Router }, { type: MenuServicesService }] });
@@ -4292,10 +4621,10 @@ class LoginGuard {
4292
4621
  }
4293
4622
  return true;
4294
4623
  }
4295
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LoginGuard, deps: [{ token: i1$1.Router }, { token: AuthStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4296
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LoginGuard, providedIn: 'root' }); }
4624
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoginGuard, deps: [{ token: i1$1.Router }, { token: AuthStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4625
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoginGuard, providedIn: 'root' }); }
4297
4626
  }
4298
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LoginGuard, decorators: [{
4627
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoginGuard, decorators: [{
4299
4628
  type: Injectable,
4300
4629
  args: [{ providedIn: 'root' }]
4301
4630
  }], ctorParameters: () => [{ type: i1$1.Router }, { type: AuthStorageService }] });
@@ -4316,23 +4645,25 @@ class LoginOSGuard {
4316
4645
  return this._router.parseUrl('/auth/login');
4317
4646
  }
4318
4647
  }
4319
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LoginOSGuard, deps: [{ token: i1$1.Router }, { token: AuthService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4320
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LoginOSGuard, providedIn: 'root' }); }
4648
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoginOSGuard, deps: [{ token: i1$1.Router }, { token: AuthService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4649
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoginOSGuard, providedIn: 'root' }); }
4321
4650
  }
4322
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LoginOSGuard, decorators: [{
4651
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoginOSGuard, decorators: [{
4323
4652
  type: Injectable,
4324
4653
  args: [{ providedIn: 'root' }]
4325
4654
  }], ctorParameters: () => [{ type: i1$1.Router }, { type: AuthService }] });
4326
4655
  ;
4327
4656
 
4328
4657
  /**
4329
- * Intercepta uma chamada HTTP para inserir o usuário logado nos cookies (e header, para compatibilidade) em conjunto com o login para uso da API.
4658
+ * \brief Intercepta uma chamada HTTP para inserir o usuário logado no header em conjunto
4659
+ * com o login para uso da API.
4660
+ *
4330
4661
  * Depende do serviço de autenticação.
4331
- */
4662
+ */
4332
4663
  class AuthAplicInterceptor {
4333
- constructor(_authCheckService, _authStorage, _customEnvironmentService) {
4334
- this._authCheckService = _authCheckService;
4335
- this._authStorage = _authStorage;
4664
+ constructor(authCheckService, token, _customEnvironmentService) {
4665
+ this.authCheckService = authCheckService;
4666
+ this.token = token;
4336
4667
  this._customEnvironmentService = _customEnvironmentService;
4337
4668
  }
4338
4669
  intercept(req, next) {
@@ -4341,55 +4672,45 @@ class AuthAplicInterceptor {
4341
4672
  }
4342
4673
  async handle(req, next) {
4343
4674
  let changedReq = req;
4344
- if (this._authCheckService.needsAuthRequest(req.url, req.method, this._customEnvironmentService.needsAuthAplic)) {
4675
+ if (this.authCheckService.needsAuthRequest(req.url, req.method, this._customEnvironmentService.needsAuthAplic)) {
4345
4676
  // Verifica se o Token precisa ser renovado
4346
- await this._authStorage.renewToken();
4677
+ await this.token.renewToken();
4347
4678
  // Adiciona as autenticações necessárias ao servidor.
4348
- // Daqui alguns dias este trecho será removido e os tokens serão enviados exclusivamente pelos Cookies, mas por enquanto, para manter compatibilidade com o que já existe, o token será enviado no header
4349
- let headers = req.headers.set('Authorization', `Bearer ${this._authStorage.authToken}`);
4350
- changedReq = req.clone({
4351
- headers: headers,
4352
- withCredentials: true // Parâmetro necessário para utilização dos Cookies HttpOnly
4353
- });
4679
+ let headers = req.headers.set('Authorization', `Bearer ${this.token.authToken}`);
4680
+ changedReq = req.clone({ headers: headers });
4354
4681
  }
4355
4682
  return await lastValueFrom(next.handle(changedReq));
4356
4683
  }
4357
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthAplicInterceptor, deps: [{ token: i3.CheckUrlAndMethodService }, { token: AuthStorageService }, { token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4358
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthAplicInterceptor, providedIn: 'root' }); }
4684
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthAplicInterceptor, deps: [{ token: i3.CheckUrlAndMethodService }, { token: AuthStorageService }, { token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4685
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthAplicInterceptor, providedIn: 'root' }); }
4359
4686
  }
4360
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthAplicInterceptor, decorators: [{
4687
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthAplicInterceptor, decorators: [{
4361
4688
  type: Injectable,
4362
4689
  args: [{ providedIn: 'root' }]
4363
4690
  }], ctorParameters: () => [{ type: i3.CheckUrlAndMethodService }, { type: AuthStorageService }, { type: LibCustomEnvironmentService }] });
4364
4691
 
4365
- /** Intercepta uma chamada HTTP para inserir a autenticação da básica das APIs nos Cookies (e no header, para compatibilidade) */
4692
+ /**
4693
+ * \brief Intercepta uma chamada HTTP para inserir a autenticação da Sispro.
4694
+ */
4366
4695
  class AuthInfraInterceptor {
4367
- constructor(_authCheckService, _customEnvironmentService) {
4368
- this._authCheckService = _authCheckService;
4696
+ constructor(authCheckService, _customEnvironmentService) {
4697
+ this.authCheckService = authCheckService;
4369
4698
  this._customEnvironmentService = _customEnvironmentService;
4370
4699
  }
4371
4700
  intercept(req, next) {
4372
4701
  let changedReq = req;
4373
- if (this._authCheckService.needsAuthRequest(req.url, req.method, this._customEnvironmentService.needsAuthInfra)) {
4374
- // Instanciado inicialmente com os headers da requisição original, para não perder nenhum header que já tenha sido adicionado
4375
- let headers = req.headers;
4702
+ if (this.authCheckService.needsAuthRequest(req.url, req.method, this._customEnvironmentService.needsAuthInfra)) {
4376
4703
  // Adiciona as autenticações necessárias ao servidor. Autenticação básica.
4377
- // Daqui alguns dias este trecho será removido e os tokens serão enviados exclusivamente pelos Cookies, mas por enquanto, para manter compatibilidade com o que já existe, o token será enviado no header
4378
- if (localStorage.getItem('configServerUser') && localStorage.getItem('configServerPassword')) {
4379
- headers = req.headers.set("Authorization", `Basic ${btoa(`${localStorage.getItem('configServerUser')}:${localStorage.getItem('configServerPassword')}`)}
4704
+ let headers = req.headers.set("Authorization", `Basic ${btoa(`${localStorage.getItem('configServerUser')}:${localStorage.getItem('configServerPassword')}`)}
4380
4705
  `);
4381
- }
4382
- changedReq = req.clone({
4383
- headers: headers,
4384
- withCredentials: true // Parâmetro necessário para utilização dos Cookies HttpOnly
4385
- });
4706
+ changedReq = req.clone({ headers: headers });
4386
4707
  }
4387
4708
  return next.handle(changedReq);
4388
4709
  }
4389
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthInfraInterceptor, deps: [{ token: i3.CheckUrlAndMethodService }, { token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4390
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthInfraInterceptor, providedIn: 'root' }); }
4710
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthInfraInterceptor, deps: [{ token: i3.CheckUrlAndMethodService }, { token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4711
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthInfraInterceptor, providedIn: 'root' }); }
4391
4712
  }
4392
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthInfraInterceptor, decorators: [{
4713
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthInfraInterceptor, decorators: [{
4393
4714
  type: Injectable,
4394
4715
  args: [{ providedIn: 'root' }]
4395
4716
  }], ctorParameters: () => [{ type: i3.CheckUrlAndMethodService }, { type: LibCustomEnvironmentService }] });
@@ -4436,8 +4757,8 @@ class SubMenuCardComponent {
4436
4757
  error: error => this._authUtilService.showHttpError(error)
4437
4758
  });
4438
4759
  }
4439
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SubMenuCardComponent, deps: [{ token: MenuServicesService }, { token: AuthUtilService }, { token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Component }); }
4440
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: SubMenuCardComponent, isStandalone: true, selector: "sub-menu-card, lib-submenu-card", inputs: { subMenuCards: "subMenuCards" }, ngImport: i0, template: `
4760
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SubMenuCardComponent, deps: [{ token: MenuServicesService }, { token: AuthUtilService }, { token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Component }); }
4761
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: SubMenuCardComponent, isStandalone: true, selector: "sub-menu-card, lib-submenu-card", inputs: { subMenuCards: "subMenuCards" }, ngImport: i0, template: `
4441
4762
  <div class="max-card-menu row">
4442
4763
  @for(card of subMenuCards; track $index) {
4443
4764
  @if (card.isExternal || card.is_OutroModulo) {
@@ -4472,7 +4793,7 @@ class SubMenuCardComponent {
4472
4793
  </div>
4473
4794
  `, isInline: true, styles: [".max-card-menu{display:flex;flex-wrap:wrap;justify-content:flex-start}.card-link{text-decoration:none;color:inherit;display:flex;box-sizing:border-box}.card{background-color:#fff;box-shadow:0 4px 8px #0000000d;padding:24px;margin-bottom:16px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}.card-icon{display:flex;align-items:center;justify-content:center;background-color:#e6eef6;border-radius:50%;width:72px;height:72px;margin:0 auto 16px}.card-icon2{display:flex;justify-content:center;align-items:center;background-color:#cde;border-radius:50%;width:52px;height:52px}.card-title{font-size:18px;font-weight:600;margin-bottom:12px;color:#333}.card-text{font-size:14px;color:#4f4f4f;line-height:1.6;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}\n"], dependencies: [{ kind: "component", type: LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
4474
4795
  }
4475
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SubMenuCardComponent, decorators: [{
4796
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SubMenuCardComponent, decorators: [{
4476
4797
  type: Component,
4477
4798
  args: [{ selector: 'sub-menu-card, lib-submenu-card', imports: [
4478
4799
  LibIconsComponent,
@@ -4522,10 +4843,10 @@ class ListComponent {
4522
4843
  this.onTelaSelecionada = new EventEmitter();
4523
4844
  this.getExternalUrl = (url) => { return `${this.hostName}/${url}`; };
4524
4845
  }
4525
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4526
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: ListComponent, isStandalone: true, selector: "app-list", inputs: { telasItem: "telasItem", hostName: "hostName" }, outputs: { onTelaSelecionada: "onTelaSelecionada" }, ngImport: i0, template: "<ul class=\"nav flex-column mt-3\">\n @if (telasItem && telasItem.length > 0) {\n @for (clickLink of telasItem; track $index) {\n <li class=\"nav-item\">\n <!-- clickLink.IsExternal || clickLink.IsOutroModulo -->\n <a class=\"nav-link\" [target]=\"clickLink.IsExternal ? '_blank' : '_self'\" (click)=\"onTelaSelecionada.emit(clickLink.titulo)\"\n [href]=\"clickLink.IsExternal\n ? getExternalUrl(clickLink.urlPath)\n : '/SisproErpCloud/' + clickLink.urlPath\" >\n {{ clickLink.titulo }}\n </a>\n </li>\n }\n }\n</ul>\n", styles: ["a{color:#3e5154}\n"] }); }
4846
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4847
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: ListComponent, isStandalone: true, selector: "app-list", inputs: { telasItem: "telasItem", hostName: "hostName" }, outputs: { onTelaSelecionada: "onTelaSelecionada" }, ngImport: i0, template: "<ul class=\"nav flex-column mt-3\">\n @if (telasItem && telasItem.length > 0) {\n @for (clickLink of telasItem; track $index) {\n <li class=\"nav-item\">\n <!-- clickLink.IsExternal || clickLink.IsOutroModulo -->\n <a class=\"nav-link\" [target]=\"clickLink.IsExternal ? '_blank' : '_self'\" (click)=\"onTelaSelecionada.emit(clickLink.titulo)\"\n [href]=\"clickLink.IsExternal\n ? getExternalUrl(clickLink.urlPath)\n : '/SisproErpCloud/' + clickLink.urlPath\" >\n {{ clickLink.titulo }}\n </a>\n </li>\n }\n }\n</ul>\n", styles: ["a{color:#3e5154}\n"] }); }
4527
4848
  }
4528
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ListComponent, decorators: [{
4849
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ListComponent, decorators: [{
4529
4850
  type: Component,
4530
4851
  args: [{ selector: 'app-list', imports: [], standalone: true, template: "<ul class=\"nav flex-column mt-3\">\n @if (telasItem && telasItem.length > 0) {\n @for (clickLink of telasItem; track $index) {\n <li class=\"nav-item\">\n <!-- clickLink.IsExternal || clickLink.IsOutroModulo -->\n <a class=\"nav-link\" [target]=\"clickLink.IsExternal ? '_blank' : '_self'\" (click)=\"onTelaSelecionada.emit(clickLink.titulo)\"\n [href]=\"clickLink.IsExternal\n ? getExternalUrl(clickLink.urlPath)\n : '/SisproErpCloud/' + clickLink.urlPath\" >\n {{ clickLink.titulo }}\n </a>\n </li>\n }\n }\n</ul>\n", styles: ["a{color:#3e5154}\n"] }]
4531
4852
  }], propDecorators: { telasItem: [{
@@ -4575,10 +4896,10 @@ class NavTabsComponent {
4575
4896
  this.listaAtiva = this.subMenus[index]?.titulo;
4576
4897
  this.onTituloSelecionado.emit(titulo);
4577
4898
  }
4578
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NavTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4579
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: NavTabsComponent, isStandalone: true, selector: "app-nav-tabs", inputs: { subMenus: "subMenus", hostName: "hostName", activeItem: "activeItem" }, outputs: { onTituloSelecionado: "onTituloSelecionado", onTelaSelecionada: "onTelaSelecionada" }, usesOnChanges: true, ngImport: i0, template: "<ul class=\"menu my-3\">\n @for(menu of subMenus; track $index) {\n <li class=\"menu-item\" (click)=\"setAbaAtiva(menu.titulo)\" [class.active]=\"menu.titulo === listaAtiva\">\n <a class=\"glb-cursor-pointer\" (click)=\"setAbaAtiva(menu.titulo)\" [tabindex]=\"$index\" >\n {{ menu.titulo }}\n </a>\n </li>\n }\n</ul>\n\n@if (telasItem) {\n <app-list [telasItem]=\"telasItem\" [hostName]=\"hostName\" (onTelaSelecionada)=\"onTelaSelecionada.emit($event)\" />\n}\n", styles: ["@charset \"UTF-8\";.menu{list-style:none;padding:0;margin:0;display:flex;gap:20px}.menu-item a{text-align:center;position:relative;display:inline-block;padding-bottom:5px;color:#6c757d;text-decoration:none;transition:color .3s ease,border-bottom-color .3s ease;border-bottom:2px solid #fff;width:calc(100% + 15px)}.menu-item a:hover{color:#213b70;border-bottom:2px solid #213B70}.menu-item.active a:after{content:\"\";position:absolute;bottom:-2px;left:50%;transform:translate(-50%);width:calc(100% + 5px);height:2px;background-color:#213b70}.menu-item.active a{color:#213b70}.menu-item.active a:before{content:\"\";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:0;height:0;opacity:1;transition:all .2s ease-in-out}\n"], dependencies: [{ kind: "component", type: ListComponent, selector: "app-list", inputs: ["telasItem", "hostName"], outputs: ["onTelaSelecionada"] }] }); }
4899
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: NavTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4900
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: NavTabsComponent, isStandalone: true, selector: "app-nav-tabs", inputs: { subMenus: "subMenus", hostName: "hostName", activeItem: "activeItem" }, outputs: { onTituloSelecionado: "onTituloSelecionado", onTelaSelecionada: "onTelaSelecionada" }, usesOnChanges: true, ngImport: i0, template: "<ul class=\"menu my-3\">\n @for(menu of subMenus; track $index) {\n <li class=\"menu-item\" (click)=\"setAbaAtiva(menu.titulo)\" [class.active]=\"menu.titulo === listaAtiva\">\n <a class=\"glb-cursor-pointer\" (click)=\"setAbaAtiva(menu.titulo)\" [tabindex]=\"$index\" >\n {{ menu.titulo }}\n </a>\n </li>\n }\n</ul>\n\n@if (telasItem) {\n <app-list [telasItem]=\"telasItem\" [hostName]=\"hostName\" (onTelaSelecionada)=\"onTelaSelecionada.emit($event)\" />\n}\n", styles: ["@charset \"UTF-8\";.menu{list-style:none;padding:0;margin:0;display:flex;gap:20px}.menu-item a{text-align:center;position:relative;display:inline-block;padding-bottom:5px;color:#6c757d;text-decoration:none;transition:color .3s ease,border-bottom-color .3s ease;border-bottom:2px solid #fff;width:calc(100% + 15px)}.menu-item a:hover{color:#213b70;border-bottom:2px solid #213B70}.menu-item.active a:after{content:\"\";position:absolute;bottom:-2px;left:50%;transform:translate(-50%);width:calc(100% + 5px);height:2px;background-color:#213b70}.menu-item.active a{color:#213b70}.menu-item.active a:before{content:\"\";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:0;height:0;opacity:1;transition:all .2s ease-in-out}\n"], dependencies: [{ kind: "component", type: ListComponent, selector: "app-list", inputs: ["telasItem", "hostName"], outputs: ["onTelaSelecionada"] }] }); }
4580
4901
  }
4581
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NavTabsComponent, decorators: [{
4902
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: NavTabsComponent, decorators: [{
4582
4903
  type: Component,
4583
4904
  args: [{ selector: 'app-nav-tabs', imports: [ListComponent], template: "<ul class=\"menu my-3\">\n @for(menu of subMenus; track $index) {\n <li class=\"menu-item\" (click)=\"setAbaAtiva(menu.titulo)\" [class.active]=\"menu.titulo === listaAtiva\">\n <a class=\"glb-cursor-pointer\" (click)=\"setAbaAtiva(menu.titulo)\" [tabindex]=\"$index\" >\n {{ menu.titulo }}\n </a>\n </li>\n }\n</ul>\n\n@if (telasItem) {\n <app-list [telasItem]=\"telasItem\" [hostName]=\"hostName\" (onTelaSelecionada)=\"onTelaSelecionada.emit($event)\" />\n}\n", styles: ["@charset \"UTF-8\";.menu{list-style:none;padding:0;margin:0;display:flex;gap:20px}.menu-item a{text-align:center;position:relative;display:inline-block;padding-bottom:5px;color:#6c757d;text-decoration:none;transition:color .3s ease,border-bottom-color .3s ease;border-bottom:2px solid #fff;width:calc(100% + 15px)}.menu-item a:hover{color:#213b70;border-bottom:2px solid #213B70}.menu-item.active a:after{content:\"\";position:absolute;bottom:-2px;left:50%;transform:translate(-50%);width:calc(100% + 5px);height:2px;background-color:#213b70}.menu-item.active a{color:#213b70}.menu-item.active a:before{content:\"\";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:0;height:0;opacity:1;transition:all .2s ease-in-out}\n"] }]
4584
4905
  }], ctorParameters: () => [], propDecorators: { subMenus: [{
@@ -4655,10 +4976,10 @@ class SubMenuComponent {
4655
4976
  error: error => this._authUtilService.showHttpError(error)
4656
4977
  });
4657
4978
  }
4658
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SubMenuComponent, deps: [{ token: MenuServicesService }, { token: AuthUtilService }, { token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Component }); }
4659
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: SubMenuComponent, isStandalone: true, selector: "app-nav-sub-menu, lib-submenu", inputs: { navSubmenus: "navSubmenus", isProduction: "isProduction", hostname: "hostname", activeItem: "activeItem" }, outputs: { onTituloSelecionado: "onTituloSelecionado", onTelaSelecionada: "onTelaSelecionada" }, ngImport: i0, template: "<lib-container>\n <div class=\"px-5\" innerContent1>\n @for(subMenu of navSubmenus; track $index) {\n <div [class]=\"$first && subMenu.titulo == '' && subMenu.icon == '' ? ' mb-2' : 'mt-4 mb-2'\">\n @if (subMenu.icon != '') {\n <lib-icon class=\"bold engrenagem-ajustada\" iconName=\"{{ subMenu.icon }}\" />\n }\n @if (subMenu.titulo != ''){\n <span class=\"fw-bold fs-4 ms-1\">{{ subMenu.titulo }}</span>\n }\n\n <app-nav-tabs [activeItem]=\"activeItem\" [subMenus]=\"navSubmenus[$index].subMenuItem\" [hostName]=\"hostNameOutSystems\"\n (onTelaSelecionada)=\"onTelaSelecionada.emit($event)\" (onTituloSelecionado)=\"onTituloSelecionado.emit($event)\" />\n </div>\n\n @if(!$last){ <hr /> }\n }\n </div>\n</lib-container>\n", styles: [".engrenagem-ajustada{position:relative;top:-4px}\n"], dependencies: [{ kind: "component", type: NavTabsComponent, selector: "app-nav-tabs", inputs: ["subMenus", "hostName", "activeItem"], outputs: ["onTituloSelecionado", "onTelaSelecionada"] }, { kind: "component", type: LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "component", type: ContentContainerComponent, selector: "lib-container", inputs: ["documentation", "tabs", "advancedTabs", "containerTitle", "useBorder", "currentTab"], outputs: ["onChangeTab"] }] }); }
4979
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SubMenuComponent, deps: [{ token: MenuServicesService }, { token: AuthUtilService }, { token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Component }); }
4980
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: SubMenuComponent, isStandalone: true, selector: "app-nav-sub-menu, lib-submenu", inputs: { navSubmenus: "navSubmenus", isProduction: "isProduction", hostname: "hostname", activeItem: "activeItem" }, outputs: { onTituloSelecionado: "onTituloSelecionado", onTelaSelecionada: "onTelaSelecionada" }, ngImport: i0, template: "<lib-container>\n <div class=\"px-5\" innerContent1>\n @for(subMenu of navSubmenus; track $index) {\n <div [class]=\"$first && subMenu.titulo == '' && subMenu.icon == '' ? ' mb-2' : 'mt-4 mb-2'\">\n @if (subMenu.icon != '') {\n <lib-icon class=\"bold engrenagem-ajustada\" iconName=\"{{ subMenu.icon }}\" />\n }\n @if (subMenu.titulo != ''){\n <span class=\"fw-bold fs-4 ms-1\">{{ subMenu.titulo }}</span>\n }\n\n <app-nav-tabs [activeItem]=\"activeItem\" [subMenus]=\"navSubmenus[$index].subMenuItem\" [hostName]=\"hostNameOutSystems\"\n (onTelaSelecionada)=\"onTelaSelecionada.emit($event)\" (onTituloSelecionado)=\"onTituloSelecionado.emit($event)\" />\n </div>\n\n @if(!$last){ <hr /> }\n }\n </div>\n</lib-container>\n", styles: [".engrenagem-ajustada{position:relative;top:-4px}\n"], dependencies: [{ kind: "component", type: NavTabsComponent, selector: "app-nav-tabs", inputs: ["subMenus", "hostName", "activeItem"], outputs: ["onTituloSelecionado", "onTelaSelecionada"] }, { kind: "component", type: LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "component", type: ContentContainerComponent, selector: "lib-container", inputs: ["documentation", "tabs", "advancedTabs", "containerTitle", "useBorder", "currentTab"], outputs: ["onChangeTab"] }] }); }
4660
4981
  }
4661
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SubMenuComponent, decorators: [{
4982
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SubMenuComponent, decorators: [{
4662
4983
  type: Component,
4663
4984
  args: [{ selector: 'app-nav-sub-menu, lib-submenu', imports: [
4664
4985
  NavTabsComponent,
@@ -4679,11 +5000,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
4679
5000
  type: Output
4680
5001
  }] } });
4681
5002
 
4682
- /** Modules */
5003
+ // #region Modules
5004
+ // #endregion Providers
4683
5005
 
4684
5006
  /**
4685
5007
  * Generated bundle index. Do not edit.
4686
5008
  */
4687
5009
 
4688
- export { AUTH_ROUTES, AuthAplicInterceptor, AuthGuard, AuthInfraInterceptor, AuthModule, AuthService, AuthStorageService, AuthUtilService, DynamicMenuComponent, ErrorMenuNotAllowed, ExternaLoginlGuard, FavoritarModel, IMenu, IndexedDBService, InfraEstabelecimentoFavoritoDefault, InfraUsuarioImg, IsMenuAllowedlGuard, LIB_CUSTOM_ENVIRONMENT_SERVICE, LIB_CUSTOM_LOGIN_SERVICE, LIB_CUSTOM_MENU_SERVICE, LIB_CUSTOM_STORAGE_SERVICE, LIB_MENU_CONFIG, LibCustomEnvironmentService, LibCustomLoginService, LibCustomMenuService, LibCustomStorageService, LibMenuConfigService, ListComponent, LoginComponent, LoginGuard, LoginOSComponent, LoginOSGuard, LoginProgress, MenuLateralComponent, MenuServicesService, NavSubMenus, NavSubmenuCards, NavSubmenuSearchItem, NavTabsComponent, NotifSubmenuComponent, NovaSenhaComponent, PesquisaTelasGlobalService, PrimaryDropdownComponent, RetEstabelecimentosModal, RetInfraUsuarioImg, RetMenuItemStructure, RetMenuLateral, RetMenuPromise, RetNavSubMenu, RetSubmenuWithCards, SecondaryDropdownComponent, SelecaoEstabelecimentosModalComponent, SituacaoLogin, SubMenuCardComponent, SubMenuComponent, SubMenuItem, TelaItem };
5010
+ export { AUTH_ROUTES, AuthAplicInterceptor, AuthGuard, AuthInfraInterceptor, AuthModule, AuthService, AuthStorageService, AuthUtilService, DynamicMenuComponent, ErrorMenuNotAllowed, ExternaLoginlGuard, FavoritarModel, IMenu, IndexedDBService, InfraEstabelecimentoFavoritoDefault, InfraUsuarioImg, IsMenuAllowedlGuard, LIB_CUSTOM_ENVIRONMENT_SERVICE, LIB_CUSTOM_LOGIN_SERVICE, LIB_CUSTOM_MENU_SERVICE, LIB_CUSTOM_STORAGE_SERVICE, LIB_MENU_CONFIG, LibCustomEnvironmentService, LibCustomLoginService, LibCustomMenuService, LibCustomStorageService, LibMenuConfigService, ListComponent, LoginComponent, LoginGuard, LoginOSComponent, LoginOSGuard, LoginProgress, MenuLateralComponent, MenuServicesService, MeuPerfilComponent, NavSubMenus, NavSubmenuCards, NavSubmenuSearchItem, NavTabsComponent, NotifSubmenuComponent, NovaSenhaComponent, PesquisaTelasGlobalService, PrimaryDropdownComponent, RetEstabelecimentosModal, RetInfraUsuarioImg, RetMenuItemStructure, RetMenuLateral, RetMenuPromise, RetNavSubMenu, RetSubmenuWithCards, SecondaryDropdownComponent, SelecaoEstabelecimentosModalComponent, SituacaoLogin, SubMenuCardComponent, SubMenuComponent, SubMenuItem, TelaItem };
4689
5011
  //# sourceMappingURL=ngx-sp-auth.mjs.map