ngx-sp-auth 4.20.11 → 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.
- package/fesm2022/ngx-sp-auth.mjs +523 -201
- package/fesm2022/ngx-sp-auth.mjs.map +1 -1
- package/lib/auth.service.d.ts +3 -7
- package/lib/components/meu-perfil/meu-perfil.component.d.ts +66 -0
- package/lib/components/meu-perfil/meu-perfil.service.d.ts +22 -0
- package/lib/interceptors/auth-aplic.interceptor.d.ts +8 -6
- package/lib/interceptors/auth-infra.interceptor.d.ts +5 -3
- package/lib/services/pesquisa-telas-global.service.d.ts +4 -4
- package/package.json +3 -2
- package/public-api.d.ts +4 -13
package/fesm2022/ngx-sp-auth.mjs
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { importProvidersFrom, NgModule, InjectionToken, Inject, Injectable,
|
|
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
|
|
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.
|
|
58
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.
|
|
59
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
161
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
223
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
506
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
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.
|
|
945
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
1010
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
1100
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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.Sp2LocalhostInfra2LoginWS}/LoginSisproERP`; // SpInfra2WS
|
|
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
|
-
|
|
1199
|
-
|
|
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
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
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.
|
|
1591
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
1851
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
1883
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
1951
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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
|
|
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.
|
|
2131
|
-
|
|
2132
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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.
|
|
2186
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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 }]
|
|
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.
|
|
2205
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
2344
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
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.
|
|
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:
|
|
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.
|
|
2972
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
3074
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
3120
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 \" nextLabel=\" \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 \" nextLabel=\" \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.
|
|
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.
|
|
3429
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
3985
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
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.
|
|
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:
|
|
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
|
|
4093
|
+
class MeuPerfilService {
|
|
4094
|
+
// #endregion PRIVATE
|
|
4095
|
+
// #endregion ==========> PROPERTIES <==========
|
|
4075
4096
|
constructor() {
|
|
4076
|
-
|
|
4077
|
-
|
|
4078
|
-
this.
|
|
4079
|
-
this.
|
|
4080
|
-
this.
|
|
4081
|
-
this.
|
|
4082
|
-
this.
|
|
4083
|
-
|
|
4084
|
-
this.
|
|
4085
|
-
|
|
4086
|
-
|
|
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
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
4094
|
-
|
|
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.
|
|
4120
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
4199
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
4262
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
4296
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
4320
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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
|
|
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(
|
|
4334
|
-
this.
|
|
4335
|
-
this.
|
|
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.
|
|
4675
|
+
if (this.authCheckService.needsAuthRequest(req.url, req.method, this._customEnvironmentService.needsAuthAplic)) {
|
|
4345
4676
|
// Verifica se o Token precisa ser renovado
|
|
4346
|
-
await this.
|
|
4677
|
+
await this.token.renewToken();
|
|
4347
4678
|
// Adiciona as autenticações necessárias ao servidor.
|
|
4348
|
-
|
|
4349
|
-
|
|
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.
|
|
4358
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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
|
-
/**
|
|
4692
|
+
/**
|
|
4693
|
+
* \brief Intercepta uma chamada HTTP para inserir a autenticação da Sispro.
|
|
4694
|
+
*/
|
|
4366
4695
|
class AuthInfraInterceptor {
|
|
4367
|
-
constructor(
|
|
4368
|
-
this.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
4390
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
4440
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
4526
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
4579
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
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.
|
|
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.
|
|
4659
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
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.
|
|
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
|
-
|
|
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
|