ngx-sp-auth 4.20.12 → 4.21.1
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 +615 -256
- package/fesm2022/ngx-sp-auth.mjs.map +1 -1
- 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/storage/auth-storage.service.d.ts +13 -2
- package/lib/utils/auth-utils.service.d.ts +5 -5
- 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, ViewContainerRef, ViewChild, Component, EventEmitter, Output, Input, TemplateRef, ContentChild } from '@angular/core';
|
|
2
|
+
import { importProvidersFrom, NgModule, InjectionToken, Inject, Injectable, ViewContainerRef, ViewChild, Component, EventEmitter, Output, Input, TemplateRef, ContentChild, inject } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common/http';
|
|
4
|
-
import { HTTP_INTERCEPTORS,
|
|
4
|
+
import { HTTP_INTERCEPTORS, HttpHeaders, HttpClient, 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,
|
|
8
|
+
import { BehaviorSubject, firstValueFrom, take, tap, Subject, Subscription, debounceTime, distinctUntilChanged, filter, switchMap, timer, map as map$1, of, lastValueFrom, from } from 'rxjs';
|
|
9
9
|
import { take as take$1, tap as tap$1, map, switchMap as switchMap$1 } from 'rxjs/operators';
|
|
10
10
|
import * as i1$1 from '@angular/router';
|
|
11
11
|
import { RouterLink, NavigationEnd, RouterOutlet } from '@angular/router';
|
|
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,23 +502,95 @@ 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'
|
|
512
512
|
}]
|
|
513
513
|
}], ctorParameters: () => [{ type: LibCustomEnvironmentService }] });
|
|
514
514
|
|
|
515
|
+
class LibCustomLoginService {
|
|
516
|
+
constructor(_customLoginService) {
|
|
517
|
+
this._customLoginService = _customLoginService;
|
|
518
|
+
}
|
|
519
|
+
// #region Propriedade Customizadas para o Componente login.component.ts
|
|
520
|
+
get loginTitle() {
|
|
521
|
+
return this._customLoginService.loginTitle;
|
|
522
|
+
}
|
|
523
|
+
get loginSubtitle() {
|
|
524
|
+
return this._customLoginService.loginSubtitle;
|
|
525
|
+
}
|
|
526
|
+
get loginBackground() {
|
|
527
|
+
return this._customLoginService.loginBackground;
|
|
528
|
+
}
|
|
529
|
+
get loginLogotipo() {
|
|
530
|
+
return this._customLoginService.loginLogotipo;
|
|
531
|
+
}
|
|
532
|
+
get loginAltLogotipo() {
|
|
533
|
+
return this._customLoginService.loginAltLogotipo;
|
|
534
|
+
}
|
|
535
|
+
get loginPageTitle() {
|
|
536
|
+
return this._customLoginService.loginPageTitle;
|
|
537
|
+
}
|
|
538
|
+
get loginDesenvDomain() {
|
|
539
|
+
return this._customLoginService.loginDesenvDomain;
|
|
540
|
+
}
|
|
541
|
+
get loginDesenvUser() {
|
|
542
|
+
return this._customLoginService.loginDesenvUser;
|
|
543
|
+
}
|
|
544
|
+
get loginDesenvPassword() {
|
|
545
|
+
return this._customLoginService.loginDesenvPassword;
|
|
546
|
+
}
|
|
547
|
+
// #endregion Propriedade Customizadas para o Componente login.component.ts
|
|
548
|
+
// #region Métodos Customizadas para o Componente auth.service.ts
|
|
549
|
+
/**
|
|
550
|
+
* Método executado no auth.service.ts - método: login ()
|
|
551
|
+
* Utilizado para inicializações diversas
|
|
552
|
+
*/
|
|
553
|
+
authLogin() {
|
|
554
|
+
this._customLoginService.authLogin();
|
|
555
|
+
}
|
|
556
|
+
/**
|
|
557
|
+
* Método executado no auth.service.ts - método: logout ()
|
|
558
|
+
* Utilizado para inicializações diversas
|
|
559
|
+
*/
|
|
560
|
+
authLogout() {
|
|
561
|
+
this._customLoginService.authLogout();
|
|
562
|
+
}
|
|
563
|
+
/**
|
|
564
|
+
* Método executado no auth.service.ts - método: login ()
|
|
565
|
+
* Utilizado para informar o redirecionamento para a tela inicial após o login ok
|
|
566
|
+
*
|
|
567
|
+
* @param router Objeto de Router que será utilizado
|
|
568
|
+
*/
|
|
569
|
+
authNavigateToPage(router) {
|
|
570
|
+
this._customLoginService.authNavigateToPage(router);
|
|
571
|
+
}
|
|
572
|
+
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 }); }
|
|
573
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibCustomLoginService, providedIn: 'root' }); }
|
|
574
|
+
}
|
|
575
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibCustomLoginService, decorators: [{
|
|
576
|
+
type: Injectable,
|
|
577
|
+
args: [{ providedIn: 'root' }]
|
|
578
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
579
|
+
type: Inject,
|
|
580
|
+
args: [LIB_CUSTOM_LOGIN_SERVICE]
|
|
581
|
+
}] }] });
|
|
582
|
+
|
|
515
583
|
class AuthStorageService {
|
|
516
|
-
constructor(_httpBackend, _customStorageService, _indexedDBService, _customEnvironmentService) {
|
|
584
|
+
constructor(_httpBackend, _customStorageService, _indexedDBService, _customEnvironmentService, _customLoginService, _router) {
|
|
517
585
|
this._httpBackend = _httpBackend;
|
|
518
586
|
this._customStorageService = _customStorageService;
|
|
519
587
|
this._indexedDBService = _indexedDBService;
|
|
520
588
|
this._customEnvironmentService = _customEnvironmentService;
|
|
521
|
-
this.
|
|
589
|
+
this._customLoginService = _customLoginService;
|
|
590
|
+
this._router = _router;
|
|
591
|
+
this._BASE_URL = ''; // SpInfra2LoginWS
|
|
592
|
+
this._LOGOUT_BASE_URL = ''; // SpInfra2LoginWS
|
|
593
|
+
this._HTTP_HEADERS = new HttpHeaders().set('Content-Type', 'application/json');
|
|
522
594
|
this.__local_key = 'user_auth_v6';
|
|
523
595
|
// indica se objeto já está marcado para salvar os dados no local storage.
|
|
524
596
|
this.__isSaving = false;
|
|
@@ -565,8 +637,10 @@ class AuthStorageService {
|
|
|
565
637
|
// azureClientId
|
|
566
638
|
this.__azureClientId = "";
|
|
567
639
|
this._httpClient = new HttpClient(_httpBackend);
|
|
568
|
-
this._BASE_URL = `${_customEnvironmentService.SpInfra2LoginWS}/LoginSisproERP`; //
|
|
569
|
-
this._BASE_URL = !_customEnvironmentService.production ? this._BASE_URL : `${_customEnvironmentService.SpInfra2LoginWS}/LoginSisproERP`;
|
|
640
|
+
this._BASE_URL = `${_customEnvironmentService.SpInfra2LoginWS}/LoginSisproERP`; // SpInfra2LoginWS
|
|
641
|
+
this._BASE_URL = !_customEnvironmentService.production ? this._BASE_URL : `${_customEnvironmentService.SpInfra2LoginWS}/LoginSisproERP`; // SpInfra2LoginWS
|
|
642
|
+
this._LOGOUT_BASE_URL = `${_customEnvironmentService.SpInfra2LoginWS}/LogoutSisproErp`; // SpInfra2LoginWS
|
|
643
|
+
this._BASE_URL = !_customEnvironmentService.production ? this._BASE_URL : `${_customEnvironmentService.SpInfra2LoginWS}/LogoutSisproErp`; // SpInfra2LoginWS
|
|
570
644
|
// Método com customizações para inicializações da storage
|
|
571
645
|
this._customStorageService.storageConstructor();
|
|
572
646
|
const expectedLocalAuthStorage = localStorage.getItem(this.__local_key);
|
|
@@ -839,36 +913,22 @@ class AuthStorageService {
|
|
|
839
913
|
// Chama a si próprio depois de um tempo igual ao tempo restante para o vencimento do token, para renovar o token ou deslogar o usuário.
|
|
840
914
|
setTimeout(this.reCheckLogin.bind(this, true), leftTime * 1000);
|
|
841
915
|
}
|
|
916
|
+
/**
|
|
917
|
+
* 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.
|
|
918
|
+
* @returns Promise<boolean> indicando navegação para a tela de login após o logout.
|
|
919
|
+
*/
|
|
842
920
|
logout() {
|
|
843
|
-
|
|
844
|
-
this.
|
|
845
|
-
this.
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
this.
|
|
854
|
-
this.__userName = "";
|
|
855
|
-
this.__authToken = "";
|
|
856
|
-
this.__dominio = "";
|
|
857
|
-
this.__tokenPayload = {};
|
|
858
|
-
this.__isExternalLogin = false;
|
|
859
|
-
this.__infraInAuthTypeId = 0;
|
|
860
|
-
this.__infraIn2FaTypeId = null;
|
|
861
|
-
this.__is2FaEnabled = false;
|
|
862
|
-
this.__azureTenantId = "";
|
|
863
|
-
this.__azureClientId = "";
|
|
864
|
-
localStorage.removeItem(this.__local_key);
|
|
865
|
-
// Limpa o armazenamento local do navegador que contém os filtros de um produto específico
|
|
866
|
-
// Fecha a conexão local (se houver) antes de excluir a database para evitar o callback 'blocking'
|
|
867
|
-
this._indexedDBService.closeOpenConnection()
|
|
868
|
-
.then(() => this._indexedDBService.deleteDatabase())
|
|
869
|
-
.catch((err) => console.warn('logout() => falha ao limpar conexão', err));
|
|
870
|
-
// Método com customizações para finalizações da storage
|
|
871
|
-
this._customStorageService.storageLogout();
|
|
921
|
+
// Consumo de endpoint de logout
|
|
922
|
+
const url = `${this._LOGOUT_BASE_URL}`;
|
|
923
|
+
firstValueFrom(this._httpClient.post(url, null, { 'headers': this._HTTP_HEADERS })).then(res => {
|
|
924
|
+
console.log(res);
|
|
925
|
+
this.onLogout();
|
|
926
|
+
localStorage.removeItem('configServerUser');
|
|
927
|
+
localStorage.removeItem('configServerPassword');
|
|
928
|
+
// Método com customizações para inicializações do Logout
|
|
929
|
+
this._customLoginService.authLogout();
|
|
930
|
+
});
|
|
931
|
+
return this._router.navigate(["/auth/login"]);
|
|
872
932
|
}
|
|
873
933
|
getNewTokenBack() {
|
|
874
934
|
let token = {
|
|
@@ -925,6 +985,37 @@ class AuthStorageService {
|
|
|
925
985
|
}
|
|
926
986
|
}
|
|
927
987
|
}
|
|
988
|
+
onLogout() {
|
|
989
|
+
this.__isCheckingAuth = false;
|
|
990
|
+
this.isLoggedInSub.next(false);
|
|
991
|
+
this.__UrlRedirect = "/";
|
|
992
|
+
this.__ip = "";
|
|
993
|
+
this.__tenantId = 0;
|
|
994
|
+
this.__infraUsuarioId = "";
|
|
995
|
+
this.__infraEstabId = "";
|
|
996
|
+
this.__infraEstabNome = "";
|
|
997
|
+
this.__infraEmpresaId = "";
|
|
998
|
+
this.__infraEmpresaNome = "";
|
|
999
|
+
this.__user = "";
|
|
1000
|
+
this.__userName = "";
|
|
1001
|
+
this.__authToken = "";
|
|
1002
|
+
this.__dominio = "";
|
|
1003
|
+
this.__tokenPayload = {};
|
|
1004
|
+
this.__isExternalLogin = false;
|
|
1005
|
+
this.__infraInAuthTypeId = 0;
|
|
1006
|
+
this.__infraIn2FaTypeId = null;
|
|
1007
|
+
this.__is2FaEnabled = false;
|
|
1008
|
+
this.__azureTenantId = "";
|
|
1009
|
+
this.__azureClientId = "";
|
|
1010
|
+
localStorage.removeItem(this.__local_key);
|
|
1011
|
+
// Limpa o armazenamento local do navegador que contém os filtros de um produto específico
|
|
1012
|
+
// Fecha a conexão local (se houver) antes de excluir a database para evitar o callback 'blocking'
|
|
1013
|
+
this._indexedDBService.closeOpenConnection()
|
|
1014
|
+
.then(() => this._indexedDBService.deleteDatabase())
|
|
1015
|
+
.catch((err) => console.warn('logout() => falha ao limpar conexão', err));
|
|
1016
|
+
// Método com customizações para finalizações da storage
|
|
1017
|
+
this._customStorageService.storageLogout();
|
|
1018
|
+
}
|
|
928
1019
|
isPrePortal() {
|
|
929
1020
|
// Identifica se a origem é PrePortal
|
|
930
1021
|
var url = new URL(window.location.href);
|
|
@@ -941,114 +1032,46 @@ class AuthStorageService {
|
|
|
941
1032
|
return false;
|
|
942
1033
|
}
|
|
943
1034
|
}
|
|
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.
|
|
1035
|
+
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 }, { token: LibCustomLoginService }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1036
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthStorageService, providedIn: 'root' }); }
|
|
946
1037
|
}
|
|
947
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1038
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthStorageService, decorators: [{
|
|
948
1039
|
type: Injectable,
|
|
949
1040
|
args: [{ providedIn: 'root' }]
|
|
950
|
-
}], ctorParameters: () => [{ type: i1.HttpBackend }, { type: LibCustomStorageService }, { type: IndexedDBService }, { type: LibCustomEnvironmentService }] });
|
|
951
|
-
|
|
952
|
-
class LibCustomLoginService {
|
|
953
|
-
constructor(_customLoginService) {
|
|
954
|
-
this._customLoginService = _customLoginService;
|
|
955
|
-
}
|
|
956
|
-
// #region Propriedade Customizadas para o Componente login.component.ts
|
|
957
|
-
get loginTitle() {
|
|
958
|
-
return this._customLoginService.loginTitle;
|
|
959
|
-
}
|
|
960
|
-
get loginSubtitle() {
|
|
961
|
-
return this._customLoginService.loginSubtitle;
|
|
962
|
-
}
|
|
963
|
-
get loginBackground() {
|
|
964
|
-
return this._customLoginService.loginBackground;
|
|
965
|
-
}
|
|
966
|
-
get loginLogotipo() {
|
|
967
|
-
return this._customLoginService.loginLogotipo;
|
|
968
|
-
}
|
|
969
|
-
get loginAltLogotipo() {
|
|
970
|
-
return this._customLoginService.loginAltLogotipo;
|
|
971
|
-
}
|
|
972
|
-
get loginPageTitle() {
|
|
973
|
-
return this._customLoginService.loginPageTitle;
|
|
974
|
-
}
|
|
975
|
-
get loginDesenvDomain() {
|
|
976
|
-
return this._customLoginService.loginDesenvDomain;
|
|
977
|
-
}
|
|
978
|
-
get loginDesenvUser() {
|
|
979
|
-
return this._customLoginService.loginDesenvUser;
|
|
980
|
-
}
|
|
981
|
-
get loginDesenvPassword() {
|
|
982
|
-
return this._customLoginService.loginDesenvPassword;
|
|
983
|
-
}
|
|
984
|
-
// #endregion Propriedade Customizadas para o Componente login.component.ts
|
|
985
|
-
// #region Métodos Customizadas para o Componente auth.service.ts
|
|
986
|
-
/**
|
|
987
|
-
* Método executado no auth.service.ts - método: login ()
|
|
988
|
-
* Utilizado para inicializações diversas
|
|
989
|
-
*/
|
|
990
|
-
authLogin() {
|
|
991
|
-
this._customLoginService.authLogin();
|
|
992
|
-
}
|
|
993
|
-
/**
|
|
994
|
-
* Método executado no auth.service.ts - método: logout ()
|
|
995
|
-
* Utilizado para inicializações diversas
|
|
996
|
-
*/
|
|
997
|
-
authLogout() {
|
|
998
|
-
this._customLoginService.authLogout();
|
|
999
|
-
}
|
|
1000
|
-
/**
|
|
1001
|
-
* Método executado no auth.service.ts - método: login ()
|
|
1002
|
-
* Utilizado para informar o redirecionamento para a tela inicial após o login ok
|
|
1003
|
-
*
|
|
1004
|
-
* @param router Objeto de Router que será utilizado
|
|
1005
|
-
*/
|
|
1006
|
-
authNavigateToPage(router) {
|
|
1007
|
-
this._customLoginService.authNavigateToPage(router);
|
|
1008
|
-
}
|
|
1009
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibCustomLoginService, deps: [{ token: LIB_CUSTOM_LOGIN_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1010
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibCustomLoginService, providedIn: 'root' }); }
|
|
1011
|
-
}
|
|
1012
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LibCustomLoginService, decorators: [{
|
|
1013
|
-
type: Injectable,
|
|
1014
|
-
args: [{ providedIn: 'root' }]
|
|
1015
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
1016
|
-
type: Inject,
|
|
1017
|
-
args: [LIB_CUSTOM_LOGIN_SERVICE]
|
|
1018
|
-
}] }] });
|
|
1041
|
+
}], ctorParameters: () => [{ type: i1.HttpBackend }, { type: LibCustomStorageService }, { type: IndexedDBService }, { type: LibCustomEnvironmentService }, { type: LibCustomLoginService }, { type: i1$1.Router }] });
|
|
1019
1042
|
|
|
1020
1043
|
class AuthUtilService {
|
|
1021
|
-
constructor(
|
|
1022
|
-
this.
|
|
1023
|
-
this.
|
|
1024
|
-
this.checkUrlAndMethodService = checkUrlAndMethodService;
|
|
1025
|
-
this.messageService = messageService;
|
|
1044
|
+
constructor(_authStorageService, _checkUrlAndMethodService, _customEnvironmentService, _message, _router) {
|
|
1045
|
+
this._authStorageService = _authStorageService;
|
|
1046
|
+
this._checkUrlAndMethodService = _checkUrlAndMethodService;
|
|
1026
1047
|
this._customEnvironmentService = _customEnvironmentService;
|
|
1048
|
+
this._message = _message;
|
|
1049
|
+
this._router = _router;
|
|
1027
1050
|
}
|
|
1028
1051
|
// Exibe a mensagem de erro de uma requisição http
|
|
1029
1052
|
showHttpError(error) {
|
|
1030
1053
|
if (error.error instanceof ErrorEvent) {
|
|
1031
1054
|
// Erro ocorreu no lado do cliente
|
|
1032
|
-
this.
|
|
1055
|
+
this._message.showAlertDanger(Utils.getHttpErrorMessage(error));
|
|
1033
1056
|
}
|
|
1034
1057
|
else {
|
|
1035
1058
|
// Erro ocorreu no lado do servidor
|
|
1036
1059
|
let isUnauthorizedAccess = error.status === 401;
|
|
1037
1060
|
if (isUnauthorizedAccess) {
|
|
1038
|
-
let isFromAplic = this.
|
|
1061
|
+
let isFromAplic = this._checkUrlAndMethodService.needsAuthRequest(error.url, "*", this._customEnvironmentService.needsAuthAplic);
|
|
1039
1062
|
if (isFromAplic) {
|
|
1063
|
+
// Comentado pois neste projeto esta alteração de valores não realizava o logout como deveria corretamente...
|
|
1064
|
+
// this.authStorageService.isLoggedInSub.next(false);
|
|
1065
|
+
// this.authStorageService.urlRedirect = "/";
|
|
1040
1066
|
// Remove a autenticação do usuário.
|
|
1041
|
-
this.
|
|
1042
|
-
this.authStorageService.urlRedirect = "/";
|
|
1043
|
-
let promise = this.router.navigate(["/auth/login"]);
|
|
1044
|
-
promise.then(this.showExpiredAccess.bind(this));
|
|
1067
|
+
this._authStorageService.logout().then(this.showExpiredAccess.bind(this));
|
|
1045
1068
|
}
|
|
1046
1069
|
else {
|
|
1047
|
-
this.
|
|
1070
|
+
this._message.showAlertDanger(Utils.getHttpErrorMessage(error));
|
|
1048
1071
|
}
|
|
1049
1072
|
}
|
|
1050
1073
|
else {
|
|
1051
|
-
this.
|
|
1074
|
+
this._message.showAlertDanger(Utils.getHttpErrorMessage(error));
|
|
1052
1075
|
}
|
|
1053
1076
|
}
|
|
1054
1077
|
}
|
|
@@ -1056,32 +1079,33 @@ class AuthUtilService {
|
|
|
1056
1079
|
showHTTPErrorOS(error) {
|
|
1057
1080
|
if (error.error instanceof ErrorEvent) {
|
|
1058
1081
|
// Erro ocorreu no lado do cliente
|
|
1059
|
-
this.
|
|
1060
|
-
this.
|
|
1082
|
+
this._router.navigate(["/auth/login"]).then(e => {
|
|
1083
|
+
this._message.showAlertDanger(Utils.getHttpErrorMessage(error));
|
|
1061
1084
|
});
|
|
1062
1085
|
}
|
|
1063
1086
|
else {
|
|
1064
1087
|
// Erro ocorreu no lado do servidor
|
|
1065
1088
|
let isUnauthorizedAccess = error.status === 401;
|
|
1066
1089
|
if (isUnauthorizedAccess) {
|
|
1067
|
-
let isFromAplic = this.
|
|
1090
|
+
let isFromAplic = this._checkUrlAndMethodService.needsAuthRequest(error.url, "*", this._customEnvironmentService.needsAuthAplic);
|
|
1068
1091
|
if (isFromAplic) {
|
|
1092
|
+
// Comentado pois neste projeto esta alteração de valores não realizava o logout como deveria corretamente...
|
|
1093
|
+
// this.authStorageService.isLoggedInSub.next(false);
|
|
1094
|
+
// this.authStorageService.urlRedirect = "/";
|
|
1069
1095
|
// Remove a autenticação do usuário.
|
|
1070
|
-
this.
|
|
1071
|
-
|
|
1072
|
-
this.router.navigate(["/auth/login"]).then(e => {
|
|
1073
|
-
this.messageService.showAlertDanger(Utils.getHttpErrorMessage(error));
|
|
1096
|
+
this._authStorageService.logout().then(() => {
|
|
1097
|
+
this._message.showAlertDanger(Utils.getHttpErrorMessage(error));
|
|
1074
1098
|
});
|
|
1075
1099
|
}
|
|
1076
1100
|
else {
|
|
1077
|
-
this.
|
|
1078
|
-
this.
|
|
1101
|
+
this._router.navigate(["/auth/login"]).then(e => {
|
|
1102
|
+
this._message.showAlertDanger(Utils.getHttpErrorMessage(error));
|
|
1079
1103
|
});
|
|
1080
1104
|
}
|
|
1081
1105
|
}
|
|
1082
1106
|
else {
|
|
1083
|
-
this.
|
|
1084
|
-
this.
|
|
1107
|
+
this._router.navigate(["/auth/login"]).then(e => {
|
|
1108
|
+
this._message.showAlertDanger(Utils.getHttpErrorMessage(error));
|
|
1085
1109
|
});
|
|
1086
1110
|
}
|
|
1087
1111
|
}
|
|
@@ -1089,22 +1113,22 @@ class AuthUtilService {
|
|
|
1089
1113
|
// Mostra uma mensagem de sessão expirada.
|
|
1090
1114
|
showExpiredAccess(navigationResult) {
|
|
1091
1115
|
if (navigationResult) {
|
|
1092
|
-
this.
|
|
1116
|
+
this._message.showAlertWarning("Sessão expirada, logue-se novamente.");
|
|
1093
1117
|
}
|
|
1094
1118
|
}
|
|
1095
1119
|
// Obtém o hostName
|
|
1096
1120
|
getHostName() {
|
|
1097
1121
|
return this._customEnvironmentService.hostName;
|
|
1098
1122
|
}
|
|
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.
|
|
1123
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthUtilService, deps: [{ token: AuthStorageService }, { token: i3.CheckUrlAndMethodService }, { token: LibCustomEnvironmentService }, { token: i3.MessageService }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1124
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthUtilService, providedIn: 'root' }); }
|
|
1101
1125
|
}
|
|
1102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthUtilService, decorators: [{
|
|
1103
1127
|
type: Injectable,
|
|
1104
1128
|
args: [{
|
|
1105
1129
|
providedIn: 'root'
|
|
1106
1130
|
}]
|
|
1107
|
-
}], ctorParameters: () => [{ type:
|
|
1131
|
+
}], ctorParameters: () => [{ type: AuthStorageService }, { type: i3.CheckUrlAndMethodService }, { type: LibCustomEnvironmentService }, { type: i3.MessageService }, { type: i1$1.Router }] });
|
|
1108
1132
|
|
|
1109
1133
|
class AuthService {
|
|
1110
1134
|
// #endregion PRIVATE
|
|
@@ -1587,10 +1611,10 @@ class AuthService {
|
|
|
1587
1611
|
this._pendingWarning = null;
|
|
1588
1612
|
return message;
|
|
1589
1613
|
}
|
|
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.
|
|
1614
|
+
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 }); }
|
|
1615
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthService, providedIn: 'root' }); }
|
|
1592
1616
|
}
|
|
1593
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1617
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthService, decorators: [{
|
|
1594
1618
|
type: Injectable,
|
|
1595
1619
|
args: [{ providedIn: 'root' }]
|
|
1596
1620
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i1$1.Router }, { type: AuthStorageService }, { type: i3.IpServiceService }, { type: LibCustomLoginService }, { type: AuthUtilService }, { type: LibCustomEnvironmentService }, { type: IndexedDBService }] });
|
|
@@ -1847,10 +1871,10 @@ class MenuServicesService {
|
|
|
1847
1871
|
}
|
|
1848
1872
|
newUserImageEvent(value) { this._subject.next(value); }
|
|
1849
1873
|
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.
|
|
1874
|
+
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 }); }
|
|
1875
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MenuServicesService, providedIn: 'root' }); }
|
|
1852
1876
|
}
|
|
1853
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1877
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MenuServicesService, decorators: [{
|
|
1854
1878
|
type: Injectable,
|
|
1855
1879
|
args: [{
|
|
1856
1880
|
providedIn: 'root'
|
|
@@ -1879,10 +1903,10 @@ class LibMenuConfigService {
|
|
|
1879
1903
|
updateRouteSelection(currentRoute, currentList) {
|
|
1880
1904
|
return this._menuConfig.updateRouteSelection(currentRoute, currentList);
|
|
1881
1905
|
}
|
|
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.
|
|
1906
|
+
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 }); }
|
|
1907
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibMenuConfigService, providedIn: 'root' }); }
|
|
1884
1908
|
}
|
|
1885
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1909
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibMenuConfigService, decorators: [{
|
|
1886
1910
|
type: Injectable,
|
|
1887
1911
|
args: [{ providedIn: 'root' }]
|
|
1888
1912
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
@@ -1947,10 +1971,10 @@ class LibCustomMenuService {
|
|
|
1947
1971
|
menuEmitEstabelecimentoEvent() {
|
|
1948
1972
|
this._customMenuService.menuEmitEstabelecimentoEvent();
|
|
1949
1973
|
}
|
|
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.
|
|
1974
|
+
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 }); }
|
|
1975
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibCustomMenuService, providedIn: 'root' }); }
|
|
1952
1976
|
}
|
|
1953
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1977
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LibCustomMenuService, decorators: [{
|
|
1954
1978
|
type: Injectable,
|
|
1955
1979
|
args: [{ providedIn: 'root' }]
|
|
1956
1980
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
@@ -2182,10 +2206,10 @@ class PesquisaTelasGlobalService {
|
|
|
2182
2206
|
// #endregion GERENCIAMENTO DO COMPONENTE
|
|
2183
2207
|
showErrorMessage(response) { if (response.Error)
|
|
2184
2208
|
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.
|
|
2209
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: PesquisaTelasGlobalService, deps: [{ token: i0.ApplicationRef }, { token: i0.Injector }, { token: i1.HttpClient }, { token: LibCustomEnvironmentService }, { token: AuthUtilService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2210
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: PesquisaTelasGlobalService, providedIn: 'root' }); }
|
|
2187
2211
|
}
|
|
2188
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: PesquisaTelasGlobalService, decorators: [{
|
|
2189
2213
|
type: Injectable,
|
|
2190
2214
|
args: [{ providedIn: 'root' }]
|
|
2191
2215
|
}], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i0.Injector }, { type: i1.HttpClient }, { type: LibCustomEnvironmentService }, { type: AuthUtilService }], propDecorators: { _container: [{
|
|
@@ -2201,10 +2225,10 @@ class ErrorMenuNotAllowed {
|
|
|
2201
2225
|
onHome() {
|
|
2202
2226
|
this.router.navigate(["/home"]);
|
|
2203
2227
|
}
|
|
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.
|
|
2228
|
+
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 }); }
|
|
2229
|
+
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
2230
|
}
|
|
2207
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2231
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ErrorMenuNotAllowed, decorators: [{
|
|
2208
2232
|
type: Component,
|
|
2209
2233
|
args: [{ selector: 'app-menu-not-allowed', preserveWhitespaces: true, imports: [
|
|
2210
2234
|
NgIf,
|
|
@@ -2340,8 +2364,8 @@ class LoginOSComponent {
|
|
|
2340
2364
|
ngOnDestroy() {
|
|
2341
2365
|
this._timerSubscription?.unsubscribe();
|
|
2342
2366
|
}
|
|
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.
|
|
2367
|
+
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 }); }
|
|
2368
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: LoginOSComponent, isStandalone: true, selector: "login-os", ngImport: i0, template: `
|
|
2345
2369
|
<div class="d-flex flex-column justify-content-center align-items-center h-100 w-100 bg-light" >
|
|
2346
2370
|
|
|
2347
2371
|
@switch (loginStatus) {
|
|
@@ -2393,7 +2417,7 @@ class LoginOSComponent {
|
|
|
2393
2417
|
</div>
|
|
2394
2418
|
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: InfraModule }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }] }); }
|
|
2395
2419
|
}
|
|
2396
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2420
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoginOSComponent, decorators: [{
|
|
2397
2421
|
type: Component,
|
|
2398
2422
|
args: [{ selector: 'login-os', standalone: true, imports: [
|
|
2399
2423
|
InfraModule
|
|
@@ -2938,10 +2962,10 @@ class LoginComponent {
|
|
|
2938
2962
|
this._messageService.showAlertWarning(warningMessage);
|
|
2939
2963
|
}
|
|
2940
2964
|
}
|
|
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 }); }
|
|
2965
|
+
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 }); }
|
|
2966
|
+
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
2967
|
}
|
|
2944
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2968
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoginComponent, decorators: [{
|
|
2945
2969
|
type: Component,
|
|
2946
2970
|
args: [{ selector: 'app-login', imports: [
|
|
2947
2971
|
ReactiveFormsModule,
|
|
@@ -2951,7 +2975,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
2951
2975
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2952
2976
|
type: Inject,
|
|
2953
2977
|
args: [MSAL_GUARD_CONFIG]
|
|
2954
|
-
}] }, { type: i1$2.MsalService }, { type: LibCustomLoginService }, { type:
|
|
2978
|
+
}] }, { 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
2979
|
|
|
2956
2980
|
class SecondaryDropdownComponent {
|
|
2957
2981
|
constructor(_authUtilService) {
|
|
@@ -2968,10 +2992,10 @@ class SecondaryDropdownComponent {
|
|
|
2968
2992
|
url += urlModulo.startsWith('/') ? urlModulo : '/' + urlModulo;
|
|
2969
2993
|
window.open(url, '_blank');
|
|
2970
2994
|
}
|
|
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.
|
|
2995
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SecondaryDropdownComponent, deps: [{ token: AuthUtilService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2996
|
+
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
2997
|
}
|
|
2974
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2998
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SecondaryDropdownComponent, decorators: [{
|
|
2975
2999
|
type: Component,
|
|
2976
3000
|
args: [{ selector: 'app-secondary-dropdown', imports: [
|
|
2977
3001
|
InfraModule,
|
|
@@ -3070,10 +3094,10 @@ class PrimaryDropdownComponent {
|
|
|
3070
3094
|
}
|
|
3071
3095
|
return primaryDropdownList;
|
|
3072
3096
|
}
|
|
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.
|
|
3097
|
+
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 }); }
|
|
3098
|
+
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
3099
|
}
|
|
3076
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
3100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: PrimaryDropdownComponent, decorators: [{
|
|
3077
3101
|
type: Component,
|
|
3078
3102
|
args: [{ selector: 'app-primary-dropdown', imports: [
|
|
3079
3103
|
SecondaryDropdownComponent,
|
|
@@ -3116,12 +3140,12 @@ class DynamicMenuComponent {
|
|
|
3116
3140
|
getExternalUrl(url, isOutroModulo) {
|
|
3117
3141
|
return (isOutroModulo ? `https://${window.location.host}/SisproErpCloud/${url}` : `${this.hostServerOutSystems == "" ? `https://${window.location.host}` : this.hostServerOutSystems}/${url}`);
|
|
3118
3142
|
}
|
|
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.
|
|
3143
|
+
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 }); }
|
|
3144
|
+
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
3145
|
// AuthRoutingModule,
|
|
3122
3146
|
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
3147
|
}
|
|
3124
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
3148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: DynamicMenuComponent, decorators: [{
|
|
3125
3149
|
type: Component,
|
|
3126
3150
|
args: [{ selector: 'app-dynamic-menu', imports: [
|
|
3127
3151
|
// AuthRoutingModule,
|
|
@@ -3149,10 +3173,10 @@ class NotifSubmenuComponent {
|
|
|
3149
3173
|
constructor() { }
|
|
3150
3174
|
ngOnInit() {
|
|
3151
3175
|
}
|
|
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"] }); }
|
|
3176
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: NotifSubmenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3177
|
+
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
3178
|
}
|
|
3155
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
3179
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: NotifSubmenuComponent, decorators: [{
|
|
3156
3180
|
type: Component,
|
|
3157
3181
|
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
3182
|
}], ctorParameters: () => [] });
|
|
@@ -3338,10 +3362,10 @@ class SelecaoEstabelecimentosModalComponent {
|
|
|
3338
3362
|
closeModalEstabelecimento(id) {
|
|
3339
3363
|
this._bsModalService.hide(id);
|
|
3340
3364
|
}
|
|
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"] }] }); }
|
|
3365
|
+
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 }); }
|
|
3366
|
+
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
3367
|
}
|
|
3344
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
3368
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SelecaoEstabelecimentosModalComponent, decorators: [{
|
|
3345
3369
|
type: Component,
|
|
3346
3370
|
args: [{ selector: 'selecao-estabelecimentos-modal', imports: [
|
|
3347
3371
|
NgxPaginationModule,
|
|
@@ -3425,10 +3449,10 @@ class VersoesModalComponent {
|
|
|
3425
3449
|
});
|
|
3426
3450
|
return list;
|
|
3427
3451
|
}
|
|
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.
|
|
3452
|
+
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 }); }
|
|
3453
|
+
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
3454
|
}
|
|
3431
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
3455
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: VersoesModalComponent, decorators: [{
|
|
3432
3456
|
type: Component,
|
|
3433
3457
|
args: [{ selector: 'versoes-modal', imports: [
|
|
3434
3458
|
CommonModule,
|
|
@@ -3773,10 +3797,10 @@ class MenuLateralComponent {
|
|
|
3773
3797
|
}
|
|
3774
3798
|
});
|
|
3775
3799
|
}
|
|
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"] }] }); }
|
|
3800
|
+
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 }); }
|
|
3801
|
+
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
3802
|
}
|
|
3779
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
3803
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MenuLateralComponent, decorators: [{
|
|
3780
3804
|
type: Component,
|
|
3781
3805
|
args: [{ selector: 'app-menu-lateral', imports: [
|
|
3782
3806
|
PopoverModule,
|
|
@@ -3981,16 +4005,16 @@ class NovaSenhaComponent {
|
|
|
3981
4005
|
this._authStorageService.logout();
|
|
3982
4006
|
this._router.navigate(["/auth/login"]);
|
|
3983
4007
|
}
|
|
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.
|
|
4008
|
+
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 }); }
|
|
4009
|
+
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
4010
|
}
|
|
3987
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
4011
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: NovaSenhaComponent, decorators: [{
|
|
3988
4012
|
type: Component,
|
|
3989
4013
|
args: [{ selector: 'app-nova-senha', imports: [
|
|
3990
4014
|
ReactiveFormsModule,
|
|
3991
4015
|
InfraModule,
|
|
3992
4016
|
], 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:
|
|
4017
|
+
}], 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
4018
|
|
|
3995
4019
|
class IMenu {
|
|
3996
4020
|
constructor() {
|
|
@@ -4007,6 +4031,22 @@ class IMenu {
|
|
|
4007
4031
|
}
|
|
4008
4032
|
}
|
|
4009
4033
|
|
|
4034
|
+
class InfraEstabelecimentoFavoritoDefault {
|
|
4035
|
+
constructor() {
|
|
4036
|
+
this.ID = "";
|
|
4037
|
+
this.NOMEEXIBICAO = "";
|
|
4038
|
+
this.CODIGO = "";
|
|
4039
|
+
this.CNPJ = "";
|
|
4040
|
+
this.IS_MATRIZ = false;
|
|
4041
|
+
this.IS_ACTIVE = false;
|
|
4042
|
+
this.IS_CHECKED = false;
|
|
4043
|
+
this.IS_FAVORITE = false;
|
|
4044
|
+
this.IS_DEFAULT = false;
|
|
4045
|
+
this.ESTABFAVORITOID = 0;
|
|
4046
|
+
this.TENANT_ID = 0;
|
|
4047
|
+
}
|
|
4048
|
+
}
|
|
4049
|
+
|
|
4010
4050
|
class InfraUsuarioImg {
|
|
4011
4051
|
constructor() {
|
|
4012
4052
|
this.Tenant_Id = 0;
|
|
@@ -4026,6 +4066,14 @@ class NavSubmenuSearchItem {
|
|
|
4026
4066
|
}
|
|
4027
4067
|
}
|
|
4028
4068
|
|
|
4069
|
+
class RetEstabelecimentosModal {
|
|
4070
|
+
constructor() {
|
|
4071
|
+
this.Error = false;
|
|
4072
|
+
this.ErrorMessage = "";
|
|
4073
|
+
this.InfraEstabelecimentos = [];
|
|
4074
|
+
}
|
|
4075
|
+
}
|
|
4076
|
+
|
|
4029
4077
|
class RetInfraUsuarioImg {
|
|
4030
4078
|
constructor() {
|
|
4031
4079
|
this.Error = false;
|
|
@@ -4071,29 +4119,339 @@ class RetSubmenuWithCards {
|
|
|
4071
4119
|
}
|
|
4072
4120
|
}
|
|
4073
4121
|
|
|
4074
|
-
class
|
|
4122
|
+
class MeuPerfilService {
|
|
4123
|
+
// #endregion PRIVATE
|
|
4124
|
+
// #endregion ==========> PROPERTIES <==========
|
|
4075
4125
|
constructor() {
|
|
4076
|
-
|
|
4077
|
-
|
|
4078
|
-
this.
|
|
4079
|
-
this.
|
|
4080
|
-
this.
|
|
4081
|
-
this.
|
|
4082
|
-
this.
|
|
4083
|
-
|
|
4084
|
-
this.
|
|
4085
|
-
|
|
4086
|
-
|
|
4126
|
+
// #region ==========> PROPERTIES <==========
|
|
4127
|
+
// #region PRIVATE
|
|
4128
|
+
this._customEnvironment = inject(LibCustomEnvironmentService);
|
|
4129
|
+
this._http = inject(HttpClient);
|
|
4130
|
+
this._BASE_URL = `${this._customEnvironment.SpInfra2ErpWS}/Perfil`; // SpInfra2ErpWS
|
|
4131
|
+
this._HEADERS = new HttpHeaders().set("Content-Type", "application/json");
|
|
4132
|
+
this.showErrorMessage = (res) => { if (res.Error)
|
|
4133
|
+
throw new Error(res.ErrorMessage); };
|
|
4134
|
+
this._BASE_URL = !this._customEnvironment.production ? this._BASE_URL : `${this._customEnvironment.SpInfra2ErpWS}/Perfil`;
|
|
4135
|
+
}
|
|
4136
|
+
// #region ==========> API <==========
|
|
4137
|
+
// #region GET
|
|
4138
|
+
getUsuario(usuarioID) {
|
|
4139
|
+
const params = new HttpParams().set("id", usuarioID);
|
|
4140
|
+
const url = `${this._BASE_URL}/Get`;
|
|
4141
|
+
return this._http.get(url, { params: params, headers: this._HEADERS })
|
|
4142
|
+
.pipe(take(1), tap((response) => { this.showErrorMessage(response); }));
|
|
4143
|
+
}
|
|
4144
|
+
getImagemUsuario(usuarioID) {
|
|
4145
|
+
const params = new HttpParams().set("usuarioId", usuarioID);
|
|
4146
|
+
const url = `${this._BASE_URL}/GetImagem`;
|
|
4147
|
+
return this._http.get(url, { params: params, headers: this._HEADERS })
|
|
4148
|
+
.pipe(take(1), tap((response) => { this.showErrorMessage(response); }));
|
|
4149
|
+
}
|
|
4150
|
+
getPasswordPolicy() {
|
|
4151
|
+
const url = `${this._BASE_URL}/PasswordPolicy`;
|
|
4152
|
+
return this._http.get(url, { headers: this._HEADERS })
|
|
4153
|
+
.pipe(take(1), tap((response) => { this.showErrorMessage(response); }));
|
|
4154
|
+
}
|
|
4155
|
+
checkPassword(senha) {
|
|
4156
|
+
const params = new HttpParams().set('senha', senha);
|
|
4157
|
+
const url = `${this._BASE_URL}/CheckPassword`;
|
|
4158
|
+
return this._http.post(url, null, { params: params, headers: this._HEADERS })
|
|
4159
|
+
.pipe(take(1), tap((response) => { this.showErrorMessage(response); }));
|
|
4160
|
+
}
|
|
4161
|
+
getAdminId() {
|
|
4162
|
+
const url = `${this._BASE_URL}/GetAdminId`;
|
|
4163
|
+
return this._http.get(url, { headers: this._HEADERS })
|
|
4164
|
+
.pipe(take(1), tap((response) => { this.showErrorMessage(response); }));
|
|
4087
4165
|
}
|
|
4166
|
+
// #endregion GET
|
|
4167
|
+
// #region PUT
|
|
4168
|
+
updateUsuario(usuario) {
|
|
4169
|
+
const params = new HttpParams().set("id", usuario.Id);
|
|
4170
|
+
const url = `${this._BASE_URL}/Update`;
|
|
4171
|
+
return this._http.post(url, usuario, { params: params, headers: this._HEADERS })
|
|
4172
|
+
.pipe(take(1), tap((response) => { this.showErrorMessage(response); }));
|
|
4173
|
+
}
|
|
4174
|
+
updatePasswordMeuPerfil(id, oldPass, newPass, newPassConfirmation) {
|
|
4175
|
+
const params = new HttpParams()
|
|
4176
|
+
.set("id", id)
|
|
4177
|
+
.set("senhaAtual", oldPass)
|
|
4178
|
+
.set("senhaNova", newPass)
|
|
4179
|
+
.set("senhaNovaConfirmar", newPassConfirmation);
|
|
4180
|
+
const url = `${this._BASE_URL}/UpdatePassword`;
|
|
4181
|
+
return this._http.post(url, null, { params: params, headers: this._HEADERS })
|
|
4182
|
+
.pipe(take(1), tap((response) => { this.showErrorMessage(response); }));
|
|
4183
|
+
}
|
|
4184
|
+
updatePhoto(imagem, filename, usuarioId) {
|
|
4185
|
+
const params = new HttpParams()
|
|
4186
|
+
.set("filename", filename)
|
|
4187
|
+
.set("usuarioId", usuarioId);
|
|
4188
|
+
const url = `${this._BASE_URL}/UpdateImage`;
|
|
4189
|
+
return this._http.post(url, JSON.stringify(imagem), { params: params, headers: this._HEADERS })
|
|
4190
|
+
.pipe(take(1), tap((response) => { this.showErrorMessage(response); }));
|
|
4191
|
+
}
|
|
4192
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MeuPerfilService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4193
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MeuPerfilService, providedIn: 'root' }); }
|
|
4088
4194
|
}
|
|
4195
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MeuPerfilService, decorators: [{
|
|
4196
|
+
type: Injectable,
|
|
4197
|
+
args: [{
|
|
4198
|
+
providedIn: 'root'
|
|
4199
|
+
}]
|
|
4200
|
+
}], ctorParameters: () => [] });
|
|
4089
4201
|
|
|
4090
|
-
class
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
4094
|
-
|
|
4202
|
+
class MeuPerfilComponent {
|
|
4203
|
+
// #endregion PUBLIC
|
|
4204
|
+
// #endregion ==========> PROPERTIES <==========
|
|
4205
|
+
// #region ==========> FORM CONFIG <==========
|
|
4206
|
+
get FormUtils() { return FormUtils; }
|
|
4207
|
+
get nome() { return this.formMeuPerfil.get('nome')?.value; }
|
|
4208
|
+
get email() { return this.formMeuPerfil.get('email')?.value; }
|
|
4209
|
+
get telefone() { return this.formMeuPerfil.get('telefone')?.value; }
|
|
4210
|
+
ActivateFormAlterarSenha() {
|
|
4211
|
+
this.formAlterarSenha;
|
|
4212
|
+
this.formAlterarSenha.get('senhaNova')?.valueChanges.subscribe((value) => {
|
|
4213
|
+
value = value == "" ? "n" : value;
|
|
4214
|
+
this.CheckPassword(value);
|
|
4215
|
+
});
|
|
4216
|
+
}
|
|
4217
|
+
// #endregion ==========> FORM CONFIG <==========
|
|
4218
|
+
constructor(_authUtils, _bsModalService, _menuServices, _messageService, _perfilService, _router) {
|
|
4219
|
+
this._authUtils = _authUtils;
|
|
4220
|
+
this._bsModalService = _bsModalService;
|
|
4221
|
+
this._menuServices = _menuServices;
|
|
4222
|
+
this._messageService = _messageService;
|
|
4223
|
+
this._perfilService = _perfilService;
|
|
4224
|
+
this._router = _router;
|
|
4225
|
+
// #region ==========> PROPERTIES <==========
|
|
4226
|
+
// #region PRIVATE
|
|
4227
|
+
this._authStorageService = inject(AuthStorageService);
|
|
4228
|
+
this.reader = new FileReader();
|
|
4229
|
+
this.showEye1 = false;
|
|
4230
|
+
this.showEye2 = false;
|
|
4231
|
+
this.showEye3 = false;
|
|
4232
|
+
this.mostrarTodos = true;
|
|
4233
|
+
this.infraUsuarioImgData = new InfraUsuarioImg();
|
|
4234
|
+
this.usuarioData = new Usuario();
|
|
4235
|
+
this.teste = '';
|
|
4236
|
+
this.alertsEnabled = false;
|
|
4237
|
+
this.$retPasswordPolicy = new RetPasswordPolicy();
|
|
4238
|
+
this.$PasswordPolicyList = [];
|
|
4239
|
+
this.$retCheckPassword = new RetCheckPassword();
|
|
4240
|
+
this.$CheckPasswordResponse = new CheckPasswordRecord();
|
|
4241
|
+
this.isPasswordValid = false;
|
|
4242
|
+
this.adminId = "";
|
|
4243
|
+
this.isRenderingFinished = false;
|
|
4244
|
+
this.isLoading = true;
|
|
4245
|
+
this.isLoadingBtn = false;
|
|
4246
|
+
this.formMeuPerfil = new FormGroup({
|
|
4247
|
+
nome: new FormControl(this._authStorageService.userName),
|
|
4248
|
+
email: new FormControl('', [Validators.email]),
|
|
4249
|
+
telefone: new FormControl(null),
|
|
4250
|
+
});
|
|
4251
|
+
this.formAlterarSenha = new FormGroup({
|
|
4252
|
+
senhaAtual: new FormControl("", [Validators.required]),
|
|
4253
|
+
senhaNova: new FormControl("", [Validators.required]),
|
|
4254
|
+
senhaNovaConfirmar: new FormControl("", [Validators.required]),
|
|
4255
|
+
});
|
|
4256
|
+
}
|
|
4257
|
+
async ngOnInit() {
|
|
4258
|
+
this.usuarioData.Usuario = this._authStorageService.user;
|
|
4259
|
+
await this.getPerfil(this._authStorageService.tokenPayload.userId);
|
|
4260
|
+
await this.getInfraUsuarioImg(this._authStorageService.tokenPayload.userId);
|
|
4261
|
+
await this.GetPasswordPolicyList();
|
|
4262
|
+
await this.GetAdminId();
|
|
4263
|
+
this.isLoading = false;
|
|
4264
|
+
}
|
|
4265
|
+
// #region ==========> API <==========
|
|
4266
|
+
// #region GET
|
|
4267
|
+
async getPerfil(id) {
|
|
4268
|
+
try {
|
|
4269
|
+
const response = await firstValueFrom(this._perfilService.getUsuario(id));
|
|
4270
|
+
this.usuarioData = response.InfraUsuario;
|
|
4271
|
+
}
|
|
4272
|
+
catch (error) {
|
|
4273
|
+
this._messageService.showAlertDanger(Utils.getHttpErrorMessage(error));
|
|
4274
|
+
}
|
|
4275
|
+
}
|
|
4276
|
+
async getInfraUsuarioImg(usuarioId) {
|
|
4277
|
+
try {
|
|
4278
|
+
const response = await firstValueFrom(this._perfilService.getImagemUsuario(usuarioId));
|
|
4279
|
+
this.infraUsuarioImgData = response.InfraUsuarioImg;
|
|
4280
|
+
if (response.InfraUsuarioImg?.Imagem == "" || response.InfraUsuarioImg?.Imagem == null) {
|
|
4281
|
+
this.showIcon = true;
|
|
4282
|
+
}
|
|
4283
|
+
else {
|
|
4284
|
+
this.showIcon = false;
|
|
4285
|
+
}
|
|
4286
|
+
}
|
|
4287
|
+
catch (error) {
|
|
4288
|
+
this._messageService.showAlertDanger(Utils.getHttpErrorMessage(error));
|
|
4289
|
+
}
|
|
4290
|
+
}
|
|
4291
|
+
async GetPasswordPolicyList() {
|
|
4292
|
+
try {
|
|
4293
|
+
const response = await firstValueFrom(this._perfilService.getPasswordPolicy());
|
|
4294
|
+
this.$retPasswordPolicy = response;
|
|
4295
|
+
this.$PasswordPolicyList = response.PasswordPolicy;
|
|
4296
|
+
}
|
|
4297
|
+
catch (error) {
|
|
4298
|
+
this._authUtils.showHttpError(error);
|
|
4299
|
+
}
|
|
4300
|
+
}
|
|
4301
|
+
CheckPassword(senha = "") {
|
|
4302
|
+
this._perfilService.checkPassword(senha).subscribe({
|
|
4303
|
+
next: response => {
|
|
4304
|
+
this.$retCheckPassword = response;
|
|
4305
|
+
this.$CheckPasswordResponse = response.PasswordResult;
|
|
4306
|
+
},
|
|
4307
|
+
error: error => {
|
|
4308
|
+
this._authUtils.showHttpError(error);
|
|
4309
|
+
}
|
|
4310
|
+
});
|
|
4311
|
+
}
|
|
4312
|
+
async GetAdminId() {
|
|
4313
|
+
try {
|
|
4314
|
+
const response = await firstValueFrom(this._perfilService.getAdminId());
|
|
4315
|
+
this.adminId = response.String;
|
|
4316
|
+
// this.isRenderingFinished = this.adminId === " " ? false : true;
|
|
4317
|
+
this.isRenderingFinished = true;
|
|
4318
|
+
}
|
|
4319
|
+
catch (error) {
|
|
4320
|
+
this._authUtils.showHttpError(error);
|
|
4321
|
+
}
|
|
4322
|
+
}
|
|
4323
|
+
// #endregion GET
|
|
4324
|
+
// #region PUT
|
|
4325
|
+
updateUsuario(usuario) {
|
|
4326
|
+
this.isLoadingBtn = true;
|
|
4327
|
+
if (this.formMeuPerfil.valid) {
|
|
4328
|
+
usuario.Id = this.usuarioData.Id;
|
|
4329
|
+
usuario.Tenant_Id = this._authStorageService.tenantId;
|
|
4330
|
+
this._perfilService.updateUsuario(usuario).subscribe({
|
|
4331
|
+
next: response => {
|
|
4332
|
+
this.usuarioData = response.InfraUsuario;
|
|
4333
|
+
this._messageService.showAlertSuccess('Usuário atualizado com sucesso.');
|
|
4334
|
+
this.isLoadingBtn = false;
|
|
4335
|
+
},
|
|
4336
|
+
error: error => {
|
|
4337
|
+
this._authUtils.showHttpError(error);
|
|
4338
|
+
}
|
|
4339
|
+
});
|
|
4340
|
+
}
|
|
4341
|
+
else {
|
|
4342
|
+
this.isLoadingBtn = false;
|
|
4343
|
+
FormUtils.validateFields(this.formMeuPerfil);
|
|
4344
|
+
}
|
|
4345
|
+
}
|
|
4346
|
+
updateSenha(tenantId = this._authStorageService.tenantId, id, senhaAntiga, senhaNova, senhaNovaConfirmar) {
|
|
4347
|
+
try {
|
|
4348
|
+
// Estes 3 if's servem para que caso alguma senha seja nula, ela não vá como uma string "null" para o C#
|
|
4349
|
+
if (senhaAntiga == null) {
|
|
4350
|
+
senhaAntiga = "";
|
|
4351
|
+
}
|
|
4352
|
+
if (senhaNova == null) {
|
|
4353
|
+
senhaNova = "";
|
|
4354
|
+
}
|
|
4355
|
+
if (senhaNovaConfirmar == null) {
|
|
4356
|
+
senhaNovaConfirmar = "";
|
|
4357
|
+
}
|
|
4358
|
+
this._perfilService.updatePasswordMeuPerfil(id, senhaAntiga, senhaNova, senhaNovaConfirmar).subscribe({
|
|
4359
|
+
next: response => {
|
|
4360
|
+
if (response.UpdatePassword?.isPasswordValid) {
|
|
4361
|
+
this._messageService.showAlertSuccess(response.UpdatePassword.message);
|
|
4362
|
+
}
|
|
4363
|
+
else {
|
|
4364
|
+
this._messageService.showAlertDanger(response.UpdatePassword?.message ?? '');
|
|
4365
|
+
}
|
|
4366
|
+
this.closeModal();
|
|
4367
|
+
},
|
|
4368
|
+
error: error => {
|
|
4369
|
+
this._messageService.showAlertDanger(Utils.getHttpErrorMessage(error));
|
|
4370
|
+
}
|
|
4371
|
+
});
|
|
4372
|
+
}
|
|
4373
|
+
catch (error) {
|
|
4374
|
+
this._messageService.showAlertDanger(Utils.getHttpErrorMessage(error));
|
|
4375
|
+
}
|
|
4376
|
+
}
|
|
4377
|
+
updateImage(imagem, filename, usuarioId) {
|
|
4378
|
+
if (imagem != null && filename != null && usuarioId != null) {
|
|
4379
|
+
let imagemB64 = imagem.split('base64,')[1];
|
|
4380
|
+
this._perfilService.updatePhoto(imagemB64, filename, usuarioId).subscribe({
|
|
4381
|
+
next: () => {
|
|
4382
|
+
this._menuServices.newUserImageEvent(null);
|
|
4383
|
+
}
|
|
4384
|
+
});
|
|
4385
|
+
}
|
|
4386
|
+
this.isLoadingBtn = false;
|
|
4387
|
+
}
|
|
4388
|
+
// #endregion PUT
|
|
4389
|
+
// #endregion ==========> API <==========
|
|
4390
|
+
// #region ==========> UTILS <==========
|
|
4391
|
+
readImage(file) {
|
|
4392
|
+
if (file) {
|
|
4393
|
+
if (file.size <= 512000 && file.name.length <= 50) {
|
|
4394
|
+
this.photoUser = document.getElementById('photoUser');
|
|
4395
|
+
this.reader.onload = () => {
|
|
4396
|
+
this.photoUser.src = this.reader.result;
|
|
4397
|
+
this.filename = file.name;
|
|
4398
|
+
};
|
|
4399
|
+
this.reader.readAsDataURL(file);
|
|
4400
|
+
}
|
|
4401
|
+
}
|
|
4402
|
+
}
|
|
4403
|
+
onPasswordValidityChange(isValid) {
|
|
4404
|
+
this.isPasswordValid = isValid;
|
|
4405
|
+
}
|
|
4406
|
+
uploadFile() {
|
|
4407
|
+
document.getElementById('flImage')?.click();
|
|
4408
|
+
}
|
|
4409
|
+
removeIcon(inputFile) {
|
|
4410
|
+
if (inputFile) {
|
|
4411
|
+
if (inputFile.files.item(0).name.length <= 50) {
|
|
4412
|
+
if (inputFile.files.item(0).size <= 512000) {
|
|
4413
|
+
this.showIcon = false;
|
|
4414
|
+
}
|
|
4415
|
+
else {
|
|
4416
|
+
this._messageService.showAlertDanger('O arquivo é muito grande, deve ter no máximo 500kb.');
|
|
4417
|
+
inputFile.value = "";
|
|
4418
|
+
}
|
|
4419
|
+
}
|
|
4420
|
+
else {
|
|
4421
|
+
this._messageService.showAlertDanger('O nome do arquivo é muito grande, deve ter no máximo 50 caracteres.');
|
|
4422
|
+
inputFile.value = "";
|
|
4423
|
+
}
|
|
4424
|
+
}
|
|
4425
|
+
}
|
|
4426
|
+
openModal(template) {
|
|
4427
|
+
this._bsModalService.show(template, {
|
|
4428
|
+
class: 'modal-dialog-centered',
|
|
4429
|
+
ignoreBackdropClick: false,
|
|
4430
|
+
keyboard: false
|
|
4431
|
+
});
|
|
4432
|
+
this.showEye1 = false;
|
|
4433
|
+
this.showEye2 = false;
|
|
4434
|
+
this.showEye3 = false;
|
|
4435
|
+
this.mostrarTodos = true;
|
|
4436
|
+
}
|
|
4437
|
+
closeModal() {
|
|
4438
|
+
this._bsModalService.hide();
|
|
4095
4439
|
}
|
|
4440
|
+
return() { this._router.navigate(['/']); }
|
|
4441
|
+
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 }); }
|
|
4442
|
+
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
4443
|
}
|
|
4444
|
+
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: [{
|
|
4445
|
+
type: Component,
|
|
4446
|
+
args: [{ selector: 'lib-meu-perfil', imports: [
|
|
4447
|
+
InfraModule,
|
|
4448
|
+
NgIf,
|
|
4449
|
+
FormsModule,
|
|
4450
|
+
ReactiveFormsModule,
|
|
4451
|
+
NgxMaskDirective,
|
|
4452
|
+
PasswordPolicyComponent,
|
|
4453
|
+
], 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"] }]
|
|
4454
|
+
}], ctorParameters: () => [{ type: AuthUtilService }, { type: i4.BsModalService }, { type: MenuServicesService }, { type: i3.MessageService }, { type: MeuPerfilService }, { type: i1$1.Router }], propDecorators: null }) });
|
|
4097
4455
|
|
|
4098
4456
|
class AuthGuard {
|
|
4099
4457
|
constructor(router, authStorageService) {
|
|
@@ -4116,10 +4474,10 @@ class AuthGuard {
|
|
|
4116
4474
|
canLoad(_route) {
|
|
4117
4475
|
return this.IsUserAuth();
|
|
4118
4476
|
}
|
|
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.
|
|
4477
|
+
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 }); }
|
|
4478
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
|
|
4121
4479
|
}
|
|
4122
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
4480
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthGuard, decorators: [{
|
|
4123
4481
|
type: Injectable,
|
|
4124
4482
|
args: [{ providedIn: 'root' }]
|
|
4125
4483
|
}], ctorParameters: () => [{ type: i1$1.Router }, { type: AuthStorageService }] });
|
|
@@ -4195,10 +4553,10 @@ class ExternaLoginlGuard {
|
|
|
4195
4553
|
return false;
|
|
4196
4554
|
}
|
|
4197
4555
|
}
|
|
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.
|
|
4556
|
+
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 }); }
|
|
4557
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ExternaLoginlGuard, providedIn: 'root' }); }
|
|
4200
4558
|
}
|
|
4201
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
4559
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ExternaLoginlGuard, decorators: [{
|
|
4202
4560
|
type: Injectable,
|
|
4203
4561
|
args: [{ providedIn: 'root' }]
|
|
4204
4562
|
}], ctorParameters: () => [{ type: i1$1.Router }, { type: AuthService }, { type: AuthStorageService }] });
|
|
@@ -4258,10 +4616,10 @@ class IsMenuAllowedlGuard {
|
|
|
4258
4616
|
});
|
|
4259
4617
|
});
|
|
4260
4618
|
}
|
|
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.
|
|
4619
|
+
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 }); }
|
|
4620
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: IsMenuAllowedlGuard, providedIn: 'root' }); }
|
|
4263
4621
|
}
|
|
4264
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
4622
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: IsMenuAllowedlGuard, decorators: [{
|
|
4265
4623
|
type: Injectable,
|
|
4266
4624
|
args: [{ providedIn: 'root' }]
|
|
4267
4625
|
}], ctorParameters: () => [{ type: i1$1.Router }, { type: MenuServicesService }] });
|
|
@@ -4292,10 +4650,10 @@ class LoginGuard {
|
|
|
4292
4650
|
}
|
|
4293
4651
|
return true;
|
|
4294
4652
|
}
|
|
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.
|
|
4653
|
+
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 }); }
|
|
4654
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoginGuard, providedIn: 'root' }); }
|
|
4297
4655
|
}
|
|
4298
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
4656
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoginGuard, decorators: [{
|
|
4299
4657
|
type: Injectable,
|
|
4300
4658
|
args: [{ providedIn: 'root' }]
|
|
4301
4659
|
}], ctorParameters: () => [{ type: i1$1.Router }, { type: AuthStorageService }] });
|
|
@@ -4316,10 +4674,10 @@ class LoginOSGuard {
|
|
|
4316
4674
|
return this._router.parseUrl('/auth/login');
|
|
4317
4675
|
}
|
|
4318
4676
|
}
|
|
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.
|
|
4677
|
+
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 }); }
|
|
4678
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoginOSGuard, providedIn: 'root' }); }
|
|
4321
4679
|
}
|
|
4322
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
4680
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoginOSGuard, decorators: [{
|
|
4323
4681
|
type: Injectable,
|
|
4324
4682
|
args: [{ providedIn: 'root' }]
|
|
4325
4683
|
}], ctorParameters: () => [{ type: i1$1.Router }, { type: AuthService }] });
|
|
@@ -4354,10 +4712,10 @@ class AuthAplicInterceptor {
|
|
|
4354
4712
|
}
|
|
4355
4713
|
return await lastValueFrom(next.handle(changedReq));
|
|
4356
4714
|
}
|
|
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.
|
|
4715
|
+
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 }); }
|
|
4716
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthAplicInterceptor, providedIn: 'root' }); }
|
|
4359
4717
|
}
|
|
4360
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
4718
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthAplicInterceptor, decorators: [{
|
|
4361
4719
|
type: Injectable,
|
|
4362
4720
|
args: [{ providedIn: 'root' }]
|
|
4363
4721
|
}], ctorParameters: () => [{ type: i3.CheckUrlAndMethodService }, { type: AuthStorageService }, { type: LibCustomEnvironmentService }] });
|
|
@@ -4386,10 +4744,10 @@ class AuthInfraInterceptor {
|
|
|
4386
4744
|
}
|
|
4387
4745
|
return next.handle(changedReq);
|
|
4388
4746
|
}
|
|
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.
|
|
4747
|
+
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 }); }
|
|
4748
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthInfraInterceptor, providedIn: 'root' }); }
|
|
4391
4749
|
}
|
|
4392
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
4750
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AuthInfraInterceptor, decorators: [{
|
|
4393
4751
|
type: Injectable,
|
|
4394
4752
|
args: [{ providedIn: 'root' }]
|
|
4395
4753
|
}], ctorParameters: () => [{ type: i3.CheckUrlAndMethodService }, { type: LibCustomEnvironmentService }] });
|
|
@@ -4436,8 +4794,8 @@ class SubMenuCardComponent {
|
|
|
4436
4794
|
error: error => this._authUtilService.showHttpError(error)
|
|
4437
4795
|
});
|
|
4438
4796
|
}
|
|
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.
|
|
4797
|
+
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 }); }
|
|
4798
|
+
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
4799
|
<div class="max-card-menu row">
|
|
4442
4800
|
@for(card of subMenuCards; track $index) {
|
|
4443
4801
|
@if (card.isExternal || card.is_OutroModulo) {
|
|
@@ -4472,7 +4830,7 @@ class SubMenuCardComponent {
|
|
|
4472
4830
|
</div>
|
|
4473
4831
|
`, 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
4832
|
}
|
|
4475
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
4833
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SubMenuCardComponent, decorators: [{
|
|
4476
4834
|
type: Component,
|
|
4477
4835
|
args: [{ selector: 'sub-menu-card, lib-submenu-card', imports: [
|
|
4478
4836
|
LibIconsComponent,
|
|
@@ -4522,10 +4880,10 @@ class ListComponent {
|
|
|
4522
4880
|
this.onTelaSelecionada = new EventEmitter();
|
|
4523
4881
|
this.getExternalUrl = (url) => { return `${this.hostName}/${url}`; };
|
|
4524
4882
|
}
|
|
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.
|
|
4883
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4884
|
+
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
4885
|
}
|
|
4528
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
4886
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ListComponent, decorators: [{
|
|
4529
4887
|
type: Component,
|
|
4530
4888
|
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
4889
|
}], propDecorators: { telasItem: [{
|
|
@@ -4575,10 +4933,10 @@ class NavTabsComponent {
|
|
|
4575
4933
|
this.listaAtiva = this.subMenus[index]?.titulo;
|
|
4576
4934
|
this.onTituloSelecionado.emit(titulo);
|
|
4577
4935
|
}
|
|
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.
|
|
4936
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: NavTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4937
|
+
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
4938
|
}
|
|
4581
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
4939
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: NavTabsComponent, decorators: [{
|
|
4582
4940
|
type: Component,
|
|
4583
4941
|
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
4942
|
}], ctorParameters: () => [], propDecorators: { subMenus: [{
|
|
@@ -4655,10 +5013,10 @@ class SubMenuComponent {
|
|
|
4655
5013
|
error: error => this._authUtilService.showHttpError(error)
|
|
4656
5014
|
});
|
|
4657
5015
|
}
|
|
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.
|
|
5016
|
+
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 }); }
|
|
5017
|
+
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
5018
|
}
|
|
4661
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
5019
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SubMenuComponent, decorators: [{
|
|
4662
5020
|
type: Component,
|
|
4663
5021
|
args: [{ selector: 'app-nav-sub-menu, lib-submenu', imports: [
|
|
4664
5022
|
NavTabsComponent,
|
|
@@ -4679,11 +5037,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
4679
5037
|
type: Output
|
|
4680
5038
|
}] } });
|
|
4681
5039
|
|
|
4682
|
-
|
|
5040
|
+
// #region Modules
|
|
5041
|
+
// #endregion Providers
|
|
4683
5042
|
|
|
4684
5043
|
/**
|
|
4685
5044
|
* Generated bundle index. Do not edit.
|
|
4686
5045
|
*/
|
|
4687
5046
|
|
|
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 };
|
|
5047
|
+
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
5048
|
//# sourceMappingURL=ngx-sp-auth.mjs.map
|