ngx-sp-auth 4.5.1 → 4.5.3
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 +245 -145
- package/fesm2022/ngx-sp-auth.mjs.map +1 -1
- package/lib/auth.service.d.ts +3 -3
- package/lib/components/login/login.component.d.ts +3 -3
- package/lib/components/login-os/login-os.component.d.ts +3 -3
- package/lib/components/menu-lateral/dropdown/primary-dropdown/primary-dropdown.component.d.ts +3 -3
- package/lib/components/menu-lateral/dropdown/secondary-dropdown/secondary-dropdown.component.d.ts +3 -3
- package/lib/components/menu-lateral/menu/menu-lateral.component.d.ts +3 -3
- package/lib/components/menu-lateral/menu/selecao-estabelecimentos-modal/selecao-estabelecimentos-modal.component.d.ts +4 -4
- package/lib/components/menu-lateral/menu/versoes-modal/versoes-modal.component.d.ts +3 -3
- package/lib/components/menu-lateral/submenus/dynamic-menu/dynamic-menu.component.d.ts +3 -3
- package/lib/components/nova-senha/nova-senhacomponent.d.ts +3 -3
- package/lib/services/indexed-db.service.d.ts +40 -7
- package/lib/services/pesquisa-telas-global.service.d.ts +3 -3
- package/lib/{project/project-utils.service.d.ts → utils/auth-utils.service.d.ts} +3 -3
- package/lib/widgets/sub-menu/sub-menu.component.d.ts +3 -3
- package/lib/widgets/sub-menu-card/sub-menu-card.component.d.ts +3 -3
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
package/fesm2022/ngx-sp-auth.mjs
CHANGED
|
@@ -230,11 +230,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
230
230
|
args: [LIB_CUSTOM_ENVIRONMENT_SERVICE]
|
|
231
231
|
}] }] });
|
|
232
232
|
|
|
233
|
+
/**
|
|
234
|
+
* Mecanismo simples de lock para evitar race conditions
|
|
235
|
+
* Garante que apenas uma operação crítica (init/delete) execute por vez
|
|
236
|
+
*/
|
|
237
|
+
class DatabaseLock {
|
|
238
|
+
constructor() {
|
|
239
|
+
this.isLocked = false;
|
|
240
|
+
this.queue = [];
|
|
241
|
+
}
|
|
242
|
+
async acquire(operation) {
|
|
243
|
+
while (this.isLocked) {
|
|
244
|
+
// Aguarda até que a lock seja liberada
|
|
245
|
+
await new Promise(resolve => setTimeout(resolve, 10));
|
|
246
|
+
}
|
|
247
|
+
this.isLocked = true;
|
|
248
|
+
try {
|
|
249
|
+
return await operation();
|
|
250
|
+
}
|
|
251
|
+
finally {
|
|
252
|
+
this.isLocked = false;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
233
256
|
class IndexedDBService {
|
|
234
257
|
// #endregion ==========> PROPERTIES <==========
|
|
235
258
|
constructor(_customEnvironment) {
|
|
236
259
|
this._customEnvironment = _customEnvironment;
|
|
237
260
|
this._dbName = "Sp_Filtros_";
|
|
261
|
+
this._lock = new DatabaseLock();
|
|
262
|
+
this._isInitialized = false;
|
|
238
263
|
if (!window.indexedDB) {
|
|
239
264
|
alert("Seu navegador não suporta uma versão estável do IndexedDB. Salvamento de filtros em sessão não estará disponível.");
|
|
240
265
|
}
|
|
@@ -249,15 +274,16 @@ class IndexedDBService {
|
|
|
249
274
|
* @param value Valor a ser inserido
|
|
250
275
|
*/
|
|
251
276
|
async add(value) {
|
|
252
|
-
|
|
277
|
+
await this._ensureInitialized();
|
|
278
|
+
if (!this.request) {
|
|
279
|
+
throw new Error('Database not initialized. Call initializeDatabase() first.');
|
|
280
|
+
}
|
|
253
281
|
try {
|
|
254
|
-
await
|
|
282
|
+
await this.request.add('filters', value);
|
|
255
283
|
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
}
|
|
260
|
-
catch (e) { /* não faz nada */ }
|
|
284
|
+
catch (error) {
|
|
285
|
+
console.error('Error adding value to IndexedDB:', error);
|
|
286
|
+
throw error;
|
|
261
287
|
}
|
|
262
288
|
}
|
|
263
289
|
// #endregion ADD
|
|
@@ -265,20 +291,20 @@ class IndexedDBService {
|
|
|
265
291
|
/**
|
|
266
292
|
* Busca um valor na base dentro de um objectStore.
|
|
267
293
|
*
|
|
268
|
-
* @param storeName Nome do objectStore
|
|
269
294
|
* @param key Valor da chave única
|
|
270
295
|
* @returns Promise<> com o valor encontrado ou undefined se não encontrar
|
|
271
296
|
*/
|
|
272
297
|
async get(key) {
|
|
273
|
-
|
|
298
|
+
await this._ensureInitialized();
|
|
299
|
+
if (!this.request) {
|
|
300
|
+
throw new Error('Database not initialized. Call initializeDatabase() first.');
|
|
301
|
+
}
|
|
274
302
|
try {
|
|
275
|
-
return await
|
|
303
|
+
return await this.request.get('filters', key);
|
|
276
304
|
}
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
}
|
|
281
|
-
catch (e) { /* não faz nada */ }
|
|
305
|
+
catch (error) {
|
|
306
|
+
console.error('Error getting value from IndexedDB:', error);
|
|
307
|
+
throw error;
|
|
282
308
|
}
|
|
283
309
|
}
|
|
284
310
|
// #endregion GET
|
|
@@ -289,15 +315,16 @@ class IndexedDBService {
|
|
|
289
315
|
* @param value Valor atualizado
|
|
290
316
|
*/
|
|
291
317
|
async update(value) {
|
|
292
|
-
|
|
318
|
+
await this._ensureInitialized();
|
|
319
|
+
if (!this.request) {
|
|
320
|
+
throw new Error('Database not initialized. Call initializeDatabase() first.');
|
|
321
|
+
}
|
|
293
322
|
try {
|
|
294
|
-
await
|
|
323
|
+
await this.request.put('filters', value);
|
|
295
324
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
}
|
|
300
|
-
catch (e) { /* não faz nada */ }
|
|
325
|
+
catch (error) {
|
|
326
|
+
console.error('Error updating value in IndexedDB:', error);
|
|
327
|
+
throw error;
|
|
301
328
|
}
|
|
302
329
|
}
|
|
303
330
|
// #endregion UPDATE
|
|
@@ -308,82 +335,154 @@ class IndexedDBService {
|
|
|
308
335
|
* @param key Valor da chave única
|
|
309
336
|
*/
|
|
310
337
|
async delete(key) {
|
|
311
|
-
|
|
338
|
+
await this._ensureInitialized();
|
|
339
|
+
if (!this.request) {
|
|
340
|
+
throw new Error('Database not initialized. Call initializeDatabase() first.');
|
|
341
|
+
}
|
|
312
342
|
try {
|
|
313
|
-
await
|
|
343
|
+
await this.request.delete('filters', key);
|
|
314
344
|
}
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
}
|
|
319
|
-
catch (e) { /* não faz nada */ }
|
|
345
|
+
catch (error) {
|
|
346
|
+
console.error('Error deleting value from IndexedDB:', error);
|
|
347
|
+
throw error;
|
|
320
348
|
}
|
|
321
349
|
}
|
|
322
350
|
// #endregion DELETE
|
|
323
351
|
// #endregion ==========> ACTIONS <==========
|
|
324
352
|
// #region ==========> UTILS <==========
|
|
353
|
+
/**
|
|
354
|
+
* Garante que a database foi inicializada antes de usar qualquer operação.
|
|
355
|
+
* Se `initializeDatabase()` foi chamado mas ainda não completou, aguarda a promise.
|
|
356
|
+
* Previne race conditions ao tentar usar operações durante a inicialização.
|
|
357
|
+
*
|
|
358
|
+
* @private
|
|
359
|
+
*/
|
|
360
|
+
async _ensureInitialized() {
|
|
361
|
+
// Se já está inicializando, aguarda a promise existente
|
|
362
|
+
if (this._initPromise) {
|
|
363
|
+
await this._initPromise;
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
// Se já foi inicializado com sucesso, retorna imediatamente
|
|
367
|
+
if (this._isInitialized && this.request) {
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
// Se chegou aqui e não está inicializado, significa que initializeDatabase() não foi chamado
|
|
371
|
+
throw new Error('IndexedDB not initialized. Call initializeDatabase() and await it before using any operations.');
|
|
372
|
+
}
|
|
325
373
|
/**
|
|
326
374
|
* Inicializa as configurações iniciais do IndexedDB e já cria o objectStore que será utilizado caso não exista.
|
|
327
375
|
*
|
|
328
|
-
*
|
|
329
|
-
*
|
|
376
|
+
* ⚠️ IMPORTANTE: Deve ser chamado com `await` no ngOnInit() do seu componente, não no constructor!
|
|
377
|
+
*
|
|
378
|
+
* O object store que será criado terá sua chave inline na propriedade `key` e o índice será a propriedade `context`,
|
|
379
|
+
* portanto todos os valores que forem inseridos **DEVEM** ser um objeto com pelo menos a propriedade `key` e `context`.
|
|
330
380
|
*
|
|
331
|
-
* @
|
|
381
|
+
* @example
|
|
382
|
+
* async ngOnInit() {
|
|
383
|
+
* await this._indexedDB.initializeDatabase();
|
|
384
|
+
* const restored = await this._indexedDB.get('minha-chave');
|
|
385
|
+
* }
|
|
332
386
|
*/
|
|
333
387
|
async initializeDatabase() {
|
|
334
|
-
this.
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
console.warn('IndexedDB blocking — considere fechar esta conexão');
|
|
388
|
+
return this._lock.acquire(async () => {
|
|
389
|
+
// Se já está inicializado, não refaz
|
|
390
|
+
if (this._isInitialized && this.request) {
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
// Marca que está inicializando
|
|
394
|
+
const initPromise = this._performInitialization();
|
|
395
|
+
this._initPromise = initPromise;
|
|
396
|
+
try {
|
|
397
|
+
await initPromise;
|
|
398
|
+
this._isInitialized = true;
|
|
399
|
+
}
|
|
400
|
+
finally {
|
|
401
|
+
this._initPromise = undefined;
|
|
349
402
|
}
|
|
350
403
|
});
|
|
351
404
|
}
|
|
405
|
+
/**
|
|
406
|
+
* Executa a inicialização real da database.
|
|
407
|
+
* @private
|
|
408
|
+
*/
|
|
409
|
+
async _performInitialization() {
|
|
410
|
+
try {
|
|
411
|
+
this.request = await openDB(this._dbName, 1, {
|
|
412
|
+
upgrade(db) {
|
|
413
|
+
// Criar objectStore se não houver um mesmo com este nome
|
|
414
|
+
if (!db.objectStoreNames.contains('filters')) {
|
|
415
|
+
const store = db.createObjectStore('filters', { keyPath: 'key' });
|
|
416
|
+
store.createIndex('context', 'context');
|
|
417
|
+
}
|
|
418
|
+
},
|
|
419
|
+
blocked() {
|
|
420
|
+
console.warn('IndexedDB blocked — feche outras abas com esta aplicação');
|
|
421
|
+
},
|
|
422
|
+
blocking() {
|
|
423
|
+
console.warn('IndexedDB blocking — recarregue a página se persistir');
|
|
424
|
+
}
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
catch (error) {
|
|
428
|
+
console.error('Error initializing IndexedDB:', error);
|
|
429
|
+
throw error;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
352
432
|
/**
|
|
353
433
|
* Exclui uma database do IndexedDB com base no nome.
|
|
354
434
|
*
|
|
355
|
-
*
|
|
435
|
+
* Deve ser chamado durante o logout para limpar dados do usuário.
|
|
436
|
+
*
|
|
437
|
+
* @example
|
|
438
|
+
* await this._indexedDB.closeOpenConnection();
|
|
439
|
+
* await this._indexedDB.deleteDatabase();
|
|
356
440
|
*/
|
|
357
441
|
async deleteDatabase() {
|
|
358
|
-
|
|
359
|
-
|
|
442
|
+
return this._lock.acquire(async () => {
|
|
443
|
+
// Fecha a conexão persistente local, se existir, antes de tentar excluir a DB
|
|
444
|
+
await this._closeConnection();
|
|
360
445
|
try {
|
|
361
|
-
this.
|
|
446
|
+
await deleteDB(this._dbName);
|
|
447
|
+
this._isInitialized = false;
|
|
362
448
|
}
|
|
363
449
|
catch (err) {
|
|
364
|
-
console.warn('
|
|
450
|
+
console.warn('Error deleting IndexedDB:', err);
|
|
451
|
+
throw err;
|
|
365
452
|
}
|
|
366
|
-
|
|
367
|
-
}
|
|
368
|
-
return await deleteDB(this._dbName);
|
|
453
|
+
});
|
|
369
454
|
}
|
|
370
455
|
/**
|
|
371
456
|
* Fecha a conexão persistente (se existir) sem excluir a database.
|
|
372
457
|
* Útil para cenários onde se precisa liberar a conexão antes de chamar `deleteDatabase()`.
|
|
458
|
+
*
|
|
459
|
+
* @example
|
|
460
|
+
* await this._indexedDB.closeOpenConnection();
|
|
373
461
|
*/
|
|
374
462
|
async closeOpenConnection() {
|
|
463
|
+
return this._lock.acquire(async () => {
|
|
464
|
+
await this._closeConnection();
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Executa o fechamento real da conexão.
|
|
469
|
+
* @private
|
|
470
|
+
*/
|
|
471
|
+
async _closeConnection() {
|
|
375
472
|
if (this.request) {
|
|
376
473
|
try {
|
|
377
474
|
this.request.close();
|
|
378
475
|
}
|
|
379
476
|
catch (err) {
|
|
380
|
-
console.warn('
|
|
477
|
+
console.warn('Error closing IndexedDB connection:', err);
|
|
381
478
|
}
|
|
382
479
|
this.request = undefined;
|
|
480
|
+
this._isInitialized = false;
|
|
383
481
|
}
|
|
384
482
|
}
|
|
385
483
|
/**
|
|
386
|
-
* Valida se já existe um valor cadastrado na base com a chave-única que foi informada,
|
|
484
|
+
* Valida se já existe um valor cadastrado na base com a chave-única que foi informada,
|
|
485
|
+
* se houver retorna ele, caso contrário cria um registro placeholder para poder atualizar depois.
|
|
387
486
|
*
|
|
388
487
|
* @param key Valor da chave única
|
|
389
488
|
* @param value (opcional) Valor placeholder caso não exista um valor previamente criado
|
|
@@ -396,6 +495,7 @@ class IndexedDBService {
|
|
|
396
495
|
if (!this._restored && value) {
|
|
397
496
|
// Se não existir nada, inicializa um registro placeholder dentro do objectStore existente
|
|
398
497
|
await this.add(value);
|
|
498
|
+
return value?.payload;
|
|
399
499
|
}
|
|
400
500
|
else {
|
|
401
501
|
// Se encontrar valor retorna apenas o payload com os dados que serão usados na tela
|
|
@@ -915,7 +1015,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
915
1015
|
args: [LIB_CUSTOM_LOGIN_SERVICE]
|
|
916
1016
|
}] }] });
|
|
917
1017
|
|
|
918
|
-
class
|
|
1018
|
+
class AuthUtilService {
|
|
919
1019
|
constructor(router, authStorageService, checkUrlAndMethodService, messageService, _customEnvironmentService) {
|
|
920
1020
|
this.router = router;
|
|
921
1021
|
this.authStorageService = authStorageService;
|
|
@@ -994,10 +1094,10 @@ class ProjectUtilservice {
|
|
|
994
1094
|
getHostName() {
|
|
995
1095
|
return this._customEnvironmentService.hostName;
|
|
996
1096
|
}
|
|
997
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type:
|
|
998
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type:
|
|
1097
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthUtilService, deps: [{ token: i1$1.Router }, { token: AuthStorageService }, { token: i3.CheckUrlAndMethodService }, { token: i3.MessageService }, { token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1098
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthUtilService, providedIn: 'root' }); }
|
|
999
1099
|
}
|
|
1000
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type:
|
|
1100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthUtilService, decorators: [{
|
|
1001
1101
|
type: Injectable,
|
|
1002
1102
|
args: [{
|
|
1003
1103
|
providedIn: 'root'
|
|
@@ -1007,13 +1107,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
1007
1107
|
class AuthService {
|
|
1008
1108
|
// #endregion PRIVATE
|
|
1009
1109
|
// #endregion ==========> PROPERTIES <==========
|
|
1010
|
-
constructor(_httpClient, _router, _authStorageService, _ipServiceService, _customLoginService,
|
|
1110
|
+
constructor(_httpClient, _router, _authStorageService, _ipServiceService, _customLoginService, _authUtilService, _customEnvironmentService, _indexedDBService) {
|
|
1011
1111
|
this._httpClient = _httpClient;
|
|
1012
1112
|
this._router = _router;
|
|
1013
1113
|
this._authStorageService = _authStorageService;
|
|
1014
1114
|
this._ipServiceService = _ipServiceService;
|
|
1015
1115
|
this._customLoginService = _customLoginService;
|
|
1016
|
-
this.
|
|
1116
|
+
this._authUtilService = _authUtilService;
|
|
1017
1117
|
this._customEnvironmentService = _customEnvironmentService;
|
|
1018
1118
|
this._indexedDBService = _indexedDBService;
|
|
1019
1119
|
// #region ==========> PROPERTIES <==========
|
|
@@ -1068,7 +1168,7 @@ class AuthService {
|
|
|
1068
1168
|
else {
|
|
1069
1169
|
product = "";
|
|
1070
1170
|
}
|
|
1071
|
-
return this.
|
|
1171
|
+
return this._authUtilService.getHostName() + product;
|
|
1072
1172
|
}
|
|
1073
1173
|
// #endregion GET
|
|
1074
1174
|
// #region POST
|
|
@@ -1469,13 +1569,13 @@ class AuthService {
|
|
|
1469
1569
|
this._pendingWarning = null;
|
|
1470
1570
|
return message;
|
|
1471
1571
|
}
|
|
1472
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthService, deps: [{ token: i1.HttpClient }, { token: i1$1.Router }, { token: AuthStorageService }, { token: i3.IpServiceService }, { token: LibCustomLoginService }, { token:
|
|
1572
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthService, deps: [{ token: i1.HttpClient }, { token: i1$1.Router }, { token: AuthStorageService }, { token: i3.IpServiceService }, { token: LibCustomLoginService }, { token: AuthUtilService }, { token: LibCustomEnvironmentService }, { token: IndexedDBService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1473
1573
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthService, providedIn: 'root' }); }
|
|
1474
1574
|
}
|
|
1475
1575
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AuthService, decorators: [{
|
|
1476
1576
|
type: Injectable,
|
|
1477
1577
|
args: [{ providedIn: 'root' }]
|
|
1478
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i1$1.Router }, { type: AuthStorageService }, { type: i3.IpServiceService }, { type: LibCustomLoginService }, { type:
|
|
1578
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i1$1.Router }, { type: AuthStorageService }, { type: i3.IpServiceService }, { type: LibCustomLoginService }, { type: AuthUtilService }, { type: LibCustomEnvironmentService }, { type: IndexedDBService }] });
|
|
1479
1579
|
|
|
1480
1580
|
class MenuServicesService {
|
|
1481
1581
|
constructor(_authStorageService, _httpClient, _customEnvironmentService) {
|
|
@@ -1865,13 +1965,13 @@ class PesquisaTelasGlobalService {
|
|
|
1865
1965
|
// #region PUBLIC
|
|
1866
1966
|
// #endregion PUBLIC
|
|
1867
1967
|
// #endregion ==========> PROPERTIES <==========
|
|
1868
|
-
constructor(_componentFactoryResolver, _appRef, _injector, _httpClient, _customEnvironmentService,
|
|
1968
|
+
constructor(_componentFactoryResolver, _appRef, _injector, _httpClient, _customEnvironmentService, _authUtils) {
|
|
1869
1969
|
this._componentFactoryResolver = _componentFactoryResolver;
|
|
1870
1970
|
this._appRef = _appRef;
|
|
1871
1971
|
this._injector = _injector;
|
|
1872
1972
|
this._httpClient = _httpClient;
|
|
1873
1973
|
this._customEnvironmentService = _customEnvironmentService;
|
|
1874
|
-
this.
|
|
1974
|
+
this._authUtils = _authUtils;
|
|
1875
1975
|
// #region ==========> PROPERTIES <==========
|
|
1876
1976
|
// #region PRIVATE
|
|
1877
1977
|
// #region GERENCIAMENTO DINÂMICO DO COMPONENTE
|
|
@@ -1937,7 +2037,7 @@ class PesquisaTelasGlobalService {
|
|
|
1937
2037
|
},
|
|
1938
2038
|
error: err => {
|
|
1939
2039
|
this._componentRef.instance.loading = false;
|
|
1940
|
-
this.
|
|
2040
|
+
this._authUtils.showHttpError(err);
|
|
1941
2041
|
}
|
|
1942
2042
|
}));
|
|
1943
2043
|
}
|
|
@@ -2073,13 +2173,13 @@ class PesquisaTelasGlobalService {
|
|
|
2073
2173
|
// #endregion GERENCIAMENTO DO COMPONENTE
|
|
2074
2174
|
showErrorMessage(response) { if (response.Error)
|
|
2075
2175
|
throw Error(response.ErrorMessage); }
|
|
2076
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PesquisaTelasGlobalService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }, { token: i1.HttpClient }, { token: LibCustomEnvironmentService }, { token:
|
|
2176
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PesquisaTelasGlobalService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }, { token: i1.HttpClient }, { token: LibCustomEnvironmentService }, { token: AuthUtilService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2077
2177
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PesquisaTelasGlobalService, providedIn: 'root' }); }
|
|
2078
2178
|
}
|
|
2079
2179
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PesquisaTelasGlobalService, decorators: [{
|
|
2080
2180
|
type: Injectable,
|
|
2081
2181
|
args: [{ providedIn: 'root' }]
|
|
2082
|
-
}], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }, { type: i1.HttpClient }, { type: LibCustomEnvironmentService }, { type:
|
|
2182
|
+
}], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }, { type: i1.HttpClient }, { type: LibCustomEnvironmentService }, { type: AuthUtilService }] });
|
|
2083
2183
|
|
|
2084
2184
|
class ErrorMenuNotAllowed {
|
|
2085
2185
|
constructor(router, authStorageService) {
|
|
@@ -2115,9 +2215,9 @@ class LoginOSComponent {
|
|
|
2115
2215
|
// #endregion PUBLIC
|
|
2116
2216
|
// #endregion ==========> PROPERTIES <==========
|
|
2117
2217
|
// #region ==========> INITIALIZATION <==========
|
|
2118
|
-
constructor(_authService,
|
|
2218
|
+
constructor(_authService, _authUtilService, _route, _router, _storageService, _messageService) {
|
|
2119
2219
|
this._authService = _authService;
|
|
2120
|
-
this.
|
|
2220
|
+
this._authUtilService = _authUtilService;
|
|
2121
2221
|
this._route = _route;
|
|
2122
2222
|
this._router = _router;
|
|
2123
2223
|
this._storageService = _storageService;
|
|
@@ -2161,13 +2261,13 @@ class LoginOSComponent {
|
|
|
2161
2261
|
},
|
|
2162
2262
|
error: (error) => {
|
|
2163
2263
|
this.loginStatus = "error";
|
|
2164
|
-
this.
|
|
2264
|
+
this._authUtilService.showHTTPErrorOS(error);
|
|
2165
2265
|
},
|
|
2166
2266
|
});
|
|
2167
2267
|
},
|
|
2168
2268
|
error: (error) => {
|
|
2169
2269
|
this.loginStatus = "error";
|
|
2170
|
-
this.
|
|
2270
|
+
this._authUtilService.showHTTPErrorOS(error);
|
|
2171
2271
|
}
|
|
2172
2272
|
});
|
|
2173
2273
|
}
|
|
@@ -2228,7 +2328,7 @@ class LoginOSComponent {
|
|
|
2228
2328
|
ngOnDestroy() {
|
|
2229
2329
|
this._timerSubscription?.unsubscribe();
|
|
2230
2330
|
}
|
|
2231
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LoginOSComponent, deps: [{ token: AuthService }, { token:
|
|
2331
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LoginOSComponent, deps: [{ token: AuthService }, { token: AuthUtilService }, { token: i1$1.ActivatedRoute }, { token: i1$1.Router }, { token: AuthStorageService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2232
2332
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: LoginOSComponent, isStandalone: true, selector: "login-os", ngImport: i0, template: `
|
|
2233
2333
|
<div class="d-flex flex-column justify-content-center align-items-center h-100 w-100 bg-light" >
|
|
2234
2334
|
|
|
@@ -2336,7 +2436,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
2336
2436
|
|
|
2337
2437
|
</div>
|
|
2338
2438
|
` }]
|
|
2339
|
-
}], ctorParameters: () => [{ type: AuthService }, { type:
|
|
2439
|
+
}], ctorParameters: () => [{ type: AuthService }, { type: AuthUtilService }, { type: i1$1.ActivatedRoute }, { type: i1$1.Router }, { type: AuthStorageService }, { type: i3.MessageService }] });
|
|
2340
2440
|
|
|
2341
2441
|
var LoginProgress;
|
|
2342
2442
|
(function (LoginProgress) {
|
|
@@ -2354,14 +2454,14 @@ var SituacaoLogin;
|
|
|
2354
2454
|
;
|
|
2355
2455
|
// ajustes ERICK
|
|
2356
2456
|
class LoginComponent {
|
|
2357
|
-
constructor(_msalGuardConfiguration, _msalService, _customLoginService, _formBuilder,
|
|
2457
|
+
constructor(_msalGuardConfiguration, _msalService, _customLoginService, _formBuilder, _authUtilService, _authService, _customEnvironmentService, _authStorageService, _title, _router, _toastrService,
|
|
2358
2458
|
// Exibição de alerta para caso o payload do login OS não seja infromado corretamente
|
|
2359
2459
|
_messageService) {
|
|
2360
2460
|
this._msalGuardConfiguration = _msalGuardConfiguration;
|
|
2361
2461
|
this._msalService = _msalService;
|
|
2362
2462
|
this._customLoginService = _customLoginService;
|
|
2363
2463
|
this._formBuilder = _formBuilder;
|
|
2364
|
-
this.
|
|
2464
|
+
this._authUtilService = _authUtilService;
|
|
2365
2465
|
this._authService = _authService;
|
|
2366
2466
|
this._customEnvironmentService = _customEnvironmentService;
|
|
2367
2467
|
this._authStorageService = _authStorageService;
|
|
@@ -2596,7 +2696,7 @@ class LoginComponent {
|
|
|
2596
2696
|
},
|
|
2597
2697
|
error: (error) => {
|
|
2598
2698
|
this.isLoadingDomain = false;
|
|
2599
|
-
this.
|
|
2699
|
+
this._authUtilService.showHttpError(error);
|
|
2600
2700
|
},
|
|
2601
2701
|
});
|
|
2602
2702
|
}
|
|
@@ -2634,7 +2734,7 @@ class LoginComponent {
|
|
|
2634
2734
|
},
|
|
2635
2735
|
error: (error) => {
|
|
2636
2736
|
this.isLoadingLogin = false;
|
|
2637
|
-
this.
|
|
2737
|
+
this._authUtilService.showHttpError(error);
|
|
2638
2738
|
},
|
|
2639
2739
|
});
|
|
2640
2740
|
}
|
|
@@ -2680,7 +2780,7 @@ class LoginComponent {
|
|
|
2680
2780
|
},
|
|
2681
2781
|
error: (error) => {
|
|
2682
2782
|
this.isLoadingAzure = false;
|
|
2683
|
-
this.
|
|
2783
|
+
this._authUtilService.showHttpError(error);
|
|
2684
2784
|
},
|
|
2685
2785
|
});
|
|
2686
2786
|
this._authStorageService.infraInAuthTypeId = infraInAuthTypeId;
|
|
@@ -2714,7 +2814,7 @@ class LoginComponent {
|
|
|
2714
2814
|
this.loginProgress = LoginProgress.Domain;
|
|
2715
2815
|
this.createFormDomain();
|
|
2716
2816
|
this._router.navigate(["/auth/login"]);
|
|
2717
|
-
this.
|
|
2817
|
+
this._authUtilService.showHttpError(error);
|
|
2718
2818
|
},
|
|
2719
2819
|
});
|
|
2720
2820
|
}
|
|
@@ -2728,7 +2828,7 @@ class LoginComponent {
|
|
|
2728
2828
|
},
|
|
2729
2829
|
error: (error) => {
|
|
2730
2830
|
this.isLoadingForgottenPassword = false;
|
|
2731
|
-
this.
|
|
2831
|
+
this._authUtilService.showHttpError(error);
|
|
2732
2832
|
}
|
|
2733
2833
|
});
|
|
2734
2834
|
}
|
|
@@ -2748,7 +2848,7 @@ class LoginComponent {
|
|
|
2748
2848
|
},
|
|
2749
2849
|
error: (error) => {
|
|
2750
2850
|
this.isLoadingForgottenPassword = false;
|
|
2751
|
-
this.
|
|
2851
|
+
this._authUtilService.showHttpError(error);
|
|
2752
2852
|
},
|
|
2753
2853
|
});
|
|
2754
2854
|
}
|
|
@@ -2771,7 +2871,7 @@ class LoginComponent {
|
|
|
2771
2871
|
},
|
|
2772
2872
|
error: (error) => {
|
|
2773
2873
|
this.isLoadingSendAuthentication2Fa = false;
|
|
2774
|
-
this.
|
|
2874
|
+
this._authUtilService.showHttpError(error);
|
|
2775
2875
|
},
|
|
2776
2876
|
});
|
|
2777
2877
|
}
|
|
@@ -2786,7 +2886,7 @@ class LoginComponent {
|
|
|
2786
2886
|
this.GetNewCode2Fa();
|
|
2787
2887
|
},
|
|
2788
2888
|
error: (error) => {
|
|
2789
|
-
this.
|
|
2889
|
+
this._authUtilService.showHttpError(error);
|
|
2790
2890
|
},
|
|
2791
2891
|
});
|
|
2792
2892
|
}
|
|
@@ -2799,7 +2899,7 @@ class LoginComponent {
|
|
|
2799
2899
|
},
|
|
2800
2900
|
error: (error) => {
|
|
2801
2901
|
this.isLoadingGetNewCode = false;
|
|
2802
|
-
this.
|
|
2902
|
+
this._authUtilService.showHttpError(error);
|
|
2803
2903
|
},
|
|
2804
2904
|
});
|
|
2805
2905
|
}
|
|
@@ -2827,7 +2927,7 @@ class LoginComponent {
|
|
|
2827
2927
|
this._messageService.showAlertWarning(warningMessage);
|
|
2828
2928
|
}
|
|
2829
2929
|
}
|
|
2830
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LoginComponent, deps: [{ token: MSAL_GUARD_CONFIG }, { token: i1$2.MsalService }, { token: LibCustomLoginService }, { token: i3$1.FormBuilder }, { token:
|
|
2930
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LoginComponent, deps: [{ token: MSAL_GUARD_CONFIG }, { token: i1$2.MsalService }, { token: LibCustomLoginService }, { token: i3$1.FormBuilder }, { token: AuthUtilService }, { token: AuthService }, { token: LibCustomEnvironmentService }, { token: AuthStorageService }, { token: i8.Title }, { token: i1$1.Router }, { token: i10.ToastrService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2831
2931
|
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\n\t\t\t\t\t\t<div class=\"text-center\">\n\t\t\t\t\t\t\t<a class=\"text-primary fw-bold text-decoration-none glb-font-size-12\" [href]=\"geturlErpConfig()\"> Configurar ERP </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 }); }
|
|
2832
2932
|
}
|
|
2833
2933
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LoginComponent, decorators: [{
|
|
@@ -2841,11 +2941,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
2841
2941
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2842
2942
|
type: Inject,
|
|
2843
2943
|
args: [MSAL_GUARD_CONFIG]
|
|
2844
|
-
}] }, { type: i1$2.MsalService }, { type: LibCustomLoginService }, { type: i3$1.FormBuilder }, { type:
|
|
2944
|
+
}] }, { type: i1$2.MsalService }, { type: LibCustomLoginService }, { type: i3$1.FormBuilder }, { type: AuthUtilService }, { type: AuthService }, { type: LibCustomEnvironmentService }, { type: AuthStorageService }, { type: i8.Title }, { type: i1$1.Router }, { type: i10.ToastrService }, { type: i3.MessageService }] });
|
|
2845
2945
|
|
|
2846
2946
|
class SecondaryDropdownComponent {
|
|
2847
|
-
constructor(
|
|
2848
|
-
this.
|
|
2947
|
+
constructor(_authUtilService) {
|
|
2948
|
+
this._authUtilService = _authUtilService;
|
|
2849
2949
|
this.modulo = { id: null, icon: null, label: null, URL: null, secondary_level: null };
|
|
2850
2950
|
this.backPrimaryDropdown = new EventEmitter();
|
|
2851
2951
|
}
|
|
@@ -2855,11 +2955,11 @@ class SecondaryDropdownComponent {
|
|
|
2855
2955
|
this.backPrimaryDropdown.emit(true);
|
|
2856
2956
|
}
|
|
2857
2957
|
redirectToModulo(urlModulo) {
|
|
2858
|
-
let url = `${this.
|
|
2958
|
+
let url = `${this._authUtilService.getHostName()}/SisproErpCloud`;
|
|
2859
2959
|
url += urlModulo.startsWith('/') ? urlModulo : '/' + urlModulo;
|
|
2860
2960
|
window.open(url, '_blank');
|
|
2861
2961
|
}
|
|
2862
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SecondaryDropdownComponent, deps: [{ token:
|
|
2962
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SecondaryDropdownComponent, deps: [{ token: AuthUtilService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2863
2963
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: SecondaryDropdownComponent, isStandalone: true, selector: "app-secondary-dropdown", inputs: { modulo: "modulo" }, outputs: { backPrimaryDropdown: "backPrimaryDropdown" }, ngImport: i0, template: "<div class=\"d-flex flex-row\">\n <button class=\"chevron d-flex m-0 p-0 align-items-start\" (click)=\"backToPrimary()\"> \n <lib-icon iconName=\"seta-esquerda\" iconSize=\"small\"/>\n </button>\n\n <div class=\"d-flex flex-column flex-row\">\n <li class=\"ms-1 mb-3\" *ngIf=\"modulo != null\">\n <lib-icon class=\"me-2\" [iconName]=\"modulo.icon\"></lib-icon>\n <span>{{ modulo.label }}</span>\n </li>\n <div *ngIf=\"modulo && modulo.secondary_level != null\">\n <li *ngFor=\"let moduloItem of modulo.secondary_level;\" (click)=\"redirectToModulo(moduloItem.URL)\">\n <a class=\"dropdown-item mb-2 ms-2\">\n <lib-icon class=\"me-2\" [iconName]=\"moduloItem.icon\"></lib-icon>\n {{ moduloItem.label }}\n </a>\n <li>\n </div>\n </div>\n</div>", styles: ["*{padding:0;margin:0}.chevron{margin-bottom:16px;margin-left:14px}li img{margin-left:8px;margin-right:4px}li 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 }, { kind: "directive", type: i3$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
2864
2964
|
}
|
|
2865
2965
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SecondaryDropdownComponent, decorators: [{
|
|
@@ -2868,16 +2968,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
2868
2968
|
InfraModule,
|
|
2869
2969
|
CommonModule
|
|
2870
2970
|
], 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 flex-row\">\n <li class=\"ms-1 mb-3\" *ngIf=\"modulo != null\">\n <lib-icon class=\"me-2\" [iconName]=\"modulo.icon\"></lib-icon>\n <span>{{ modulo.label }}</span>\n </li>\n <div *ngIf=\"modulo && modulo.secondary_level != null\">\n <li *ngFor=\"let moduloItem of modulo.secondary_level;\" (click)=\"redirectToModulo(moduloItem.URL)\">\n <a class=\"dropdown-item mb-2 ms-2\">\n <lib-icon class=\"me-2\" [iconName]=\"moduloItem.icon\"></lib-icon>\n {{ moduloItem.label }}\n </a>\n <li>\n </div>\n </div>\n</div>", styles: ["*{padding:0;margin:0}.chevron{margin-bottom:16px;margin-left:14px}li img{margin-left:8px;margin-right:4px}li 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"] }]
|
|
2871
|
-
}], ctorParameters: () => [{ type:
|
|
2971
|
+
}], ctorParameters: () => [{ type: AuthUtilService }], propDecorators: { modulo: [{
|
|
2872
2972
|
type: Input
|
|
2873
2973
|
}], backPrimaryDropdown: [{
|
|
2874
2974
|
type: Output
|
|
2875
2975
|
}] } });
|
|
2876
2976
|
|
|
2877
2977
|
class PrimaryDropdownComponent {
|
|
2878
|
-
constructor(_customMenuService,
|
|
2978
|
+
constructor(_customMenuService, _authUtilService, _menuServices) {
|
|
2879
2979
|
this._customMenuService = _customMenuService;
|
|
2880
|
-
this.
|
|
2980
|
+
this._authUtilService = _authUtilService;
|
|
2881
2981
|
this._menuServices = _menuServices;
|
|
2882
2982
|
this.selectDataState = false;
|
|
2883
2983
|
this.primaryDropdown = [];
|
|
@@ -2917,11 +3017,11 @@ class PrimaryDropdownComponent {
|
|
|
2917
3017
|
this.selectDataState = true;
|
|
2918
3018
|
}
|
|
2919
3019
|
redirectToPrePortal() {
|
|
2920
|
-
const url = `${this.
|
|
3020
|
+
const url = `${this._authUtilService.getHostName()}/SisproErpCloud/PrePortal`;
|
|
2921
3021
|
window.open(url, '_blank');
|
|
2922
3022
|
}
|
|
2923
3023
|
redirectToModulo(urlModulo) {
|
|
2924
|
-
let url = `${this.
|
|
3024
|
+
let url = `${this._authUtilService.getHostName()}/SisproErpCloud`;
|
|
2925
3025
|
url += urlModulo.startsWith('/') ? urlModulo : '/' + urlModulo;
|
|
2926
3026
|
window.open(url, '_blank');
|
|
2927
3027
|
}
|
|
@@ -2980,7 +3080,7 @@ class PrimaryDropdownComponent {
|
|
|
2980
3080
|
*/
|
|
2981
3081
|
return primaryDropdownList;
|
|
2982
3082
|
}
|
|
2983
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PrimaryDropdownComponent, deps: [{ token: LibCustomMenuService }, { token:
|
|
3083
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PrimaryDropdownComponent, deps: [{ token: LibCustomMenuService }, { token: AuthUtilService }, { token: MenuServicesService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2984
3084
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: PrimaryDropdownComponent, isStandalone: true, selector: "app-primary-dropdown", inputs: { buttonWasClicked: "buttonWasClicked" }, ngImport: i0, template: "<div class=\"p-2\">\n <div *ngIf=\"selectDataState; else secondary_dropdown\" class=\"mb-2 w-100\">\n <li *ngFor=\"let modulo of primaryDropdown\" (click)=\"(modulo.secondary_level != null ? openDropdown(modulo, secondary_dropdown) : redirectToModulo(modulo.URL))\">\n <a class=\"dropdown-item mb-2\">\n <lib-icon class=\"me-2\" [iconName]=\"modulo.icon\"></lib-icon>\n {{ modulo.label }}\n </a>\n </li>\n <hr class=\"dropdown-divider\">\n <li>\n <a class=\"dropdown-item link-portal mt-2\" (click)=\"redirectToPrePortal()\" target=\"_blank\">Portal Sispro</a>\n </li>\n </div>\n\n <ng-template #secondary_dropdown>\n <div #secondary_ref (clickOutside)=\"onClickedOutside($event, secondary_ref)\">\n <app-secondary-dropdown [modulo]=\"this.modulo\" (backPrimaryDropdown)=\"backToPrimary($event)\"></app-secondary-dropdown>\n </div>\n </ng-template>\n</div>", styles: ["*{padding:0;margin:0}li a{font-size:14px}li a img{margin-right:4px}li a:hover{font-weight:700;background-color:transparent}.dropdown-divider{height:0}.link-portal{color:#2847a0;text-decoration:underline;text-align:center;font-weight:700;font-size:14px}\n"], dependencies: [{ kind: "component", type: SecondaryDropdownComponent, selector: "app-secondary-dropdown", inputs: ["modulo"], outputs: ["backPrimaryDropdown"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$2.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"] }] }); }
|
|
2985
3085
|
}
|
|
2986
3086
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PrimaryDropdownComponent, decorators: [{
|
|
@@ -2990,14 +3090,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
2990
3090
|
CommonModule,
|
|
2991
3091
|
InfraModule
|
|
2992
3092
|
], template: "<div class=\"p-2\">\n <div *ngIf=\"selectDataState; else secondary_dropdown\" class=\"mb-2 w-100\">\n <li *ngFor=\"let modulo of primaryDropdown\" (click)=\"(modulo.secondary_level != null ? openDropdown(modulo, secondary_dropdown) : redirectToModulo(modulo.URL))\">\n <a class=\"dropdown-item mb-2\">\n <lib-icon class=\"me-2\" [iconName]=\"modulo.icon\"></lib-icon>\n {{ modulo.label }}\n </a>\n </li>\n <hr class=\"dropdown-divider\">\n <li>\n <a class=\"dropdown-item link-portal mt-2\" (click)=\"redirectToPrePortal()\" target=\"_blank\">Portal Sispro</a>\n </li>\n </div>\n\n <ng-template #secondary_dropdown>\n <div #secondary_ref (clickOutside)=\"onClickedOutside($event, secondary_ref)\">\n <app-secondary-dropdown [modulo]=\"this.modulo\" (backPrimaryDropdown)=\"backToPrimary($event)\"></app-secondary-dropdown>\n </div>\n </ng-template>\n</div>", styles: ["*{padding:0;margin:0}li a{font-size:14px}li a img{margin-right:4px}li a:hover{font-weight:700;background-color:transparent}.dropdown-divider{height:0}.link-portal{color:#2847a0;text-decoration:underline;text-align:center;font-weight:700;font-size:14px}\n"] }]
|
|
2993
|
-
}], ctorParameters: () => [{ type: LibCustomMenuService }, { type:
|
|
3093
|
+
}], ctorParameters: () => [{ type: LibCustomMenuService }, { type: AuthUtilService }, { type: MenuServicesService }], propDecorators: { buttonWasClicked: [{
|
|
2994
3094
|
type: Input
|
|
2995
3095
|
}] } });
|
|
2996
3096
|
|
|
2997
3097
|
class DynamicMenuComponent {
|
|
2998
|
-
constructor(router,
|
|
3098
|
+
constructor(router, _authUtilService) {
|
|
2999
3099
|
this.router = router;
|
|
3000
|
-
this.
|
|
3100
|
+
this._authUtilService = _authUtilService;
|
|
3001
3101
|
this.selectTemplate = new EventEmitter;
|
|
3002
3102
|
this.titleSubmenu = "";
|
|
3003
3103
|
this.submenuList = [];
|
|
@@ -3024,9 +3124,9 @@ class DynamicMenuComponent {
|
|
|
3024
3124
|
ref.classList.toggle("yellow-star");
|
|
3025
3125
|
}
|
|
3026
3126
|
getExternalUrl(url) {
|
|
3027
|
-
return `${this.hostServerOutSystems == "" ? this.
|
|
3127
|
+
return `${this.hostServerOutSystems == "" ? this._authUtilService.getHostName() : this.hostServerOutSystems}/${url}`;
|
|
3028
3128
|
}
|
|
3029
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DynamicMenuComponent, deps: [{ token: i1$1.Router }, { token:
|
|
3129
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DynamicMenuComponent, deps: [{ token: i1$1.Router }, { token: AuthUtilService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3030
3130
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: DynamicMenuComponent, isStandalone: true, selector: "app-dynamic-menu", inputs: { submenuRef: "submenuRef", recebeParam: "recebeParam", titleSubmenu: "titleSubmenu", submenuList: "submenuList", hostServerOutSystems: "hostServerOutSystems" }, outputs: { selectTemplate: "selectTemplate" }, queries: [{ propertyName: "desiredContent", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<div #submenu class=\"header-submenu\">\n <h1 class=\"titulo pb-3 pt-4\">{{ titleSubmenu }}</h1>\n <div class=\"itens-list\">\n <ul style=\"width: 100%\">\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; 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)\"\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:
|
|
3031
3131
|
// AuthRoutingModule,
|
|
3032
3132
|
CommonModule }, { kind: "directive", type: i3$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$2.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"] }] }); }
|
|
@@ -3038,7 +3138,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
3038
3138
|
CommonModule,
|
|
3039
3139
|
RouterLink
|
|
3040
3140
|
], 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%\">\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; 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)\"\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"] }]
|
|
3041
|
-
}], ctorParameters: () => [{ type: i1$1.Router }, { type:
|
|
3141
|
+
}], ctorParameters: () => [{ type: i1$1.Router }, { type: AuthUtilService }], propDecorators: { selectTemplate: [{
|
|
3042
3142
|
type: Output
|
|
3043
3143
|
}], submenuRef: [{
|
|
3044
3144
|
type: Input
|
|
@@ -3068,12 +3168,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
3068
3168
|
}], ctorParameters: () => [] });
|
|
3069
3169
|
|
|
3070
3170
|
class SelecaoEstabelecimentosModalComponent {
|
|
3071
|
-
constructor(_authStorageService, _customMenuService, _menuServicesService, _messageService,
|
|
3171
|
+
constructor(_authStorageService, _customMenuService, _menuServicesService, _messageService, _authUtilService) {
|
|
3072
3172
|
this._authStorageService = _authStorageService;
|
|
3073
3173
|
this._customMenuService = _customMenuService;
|
|
3074
3174
|
this._menuServicesService = _menuServicesService;
|
|
3075
3175
|
this._messageService = _messageService;
|
|
3076
|
-
this.
|
|
3176
|
+
this._authUtilService = _authUtilService;
|
|
3077
3177
|
// #region ==========> PROPERTIES <==========
|
|
3078
3178
|
// #region PRIVATE
|
|
3079
3179
|
// [...]
|
|
@@ -3116,7 +3216,7 @@ class SelecaoEstabelecimentosModalComponent {
|
|
|
3116
3216
|
}
|
|
3117
3217
|
},
|
|
3118
3218
|
error: error => {
|
|
3119
|
-
this.
|
|
3219
|
+
this._authUtilService.showHttpError(error);
|
|
3120
3220
|
this.$estabelecimentosList = [];
|
|
3121
3221
|
}
|
|
3122
3222
|
});
|
|
@@ -3140,7 +3240,7 @@ class SelecaoEstabelecimentosModalComponent {
|
|
|
3140
3240
|
: this._messageService.showAlertSuccess('Estabelecimento padrão removido para o usuário');
|
|
3141
3241
|
},
|
|
3142
3242
|
error: error => {
|
|
3143
|
-
this.
|
|
3243
|
+
this._authUtilService.showHttpError(error);
|
|
3144
3244
|
}
|
|
3145
3245
|
});
|
|
3146
3246
|
}
|
|
@@ -3209,7 +3309,7 @@ class SelecaoEstabelecimentosModalComponent {
|
|
|
3209
3309
|
closeSelf() {
|
|
3210
3310
|
this.onClose.emit();
|
|
3211
3311
|
}
|
|
3212
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SelecaoEstabelecimentosModalComponent, deps: [{ token: AuthStorageService }, { token: LibCustomMenuService }, { token: MenuServicesService }, { token: i3.MessageService }, { token:
|
|
3312
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SelecaoEstabelecimentosModalComponent, deps: [{ token: AuthStorageService }, { token: LibCustomMenuService }, { token: MenuServicesService }, { token: i3.MessageService }, { token: AuthUtilService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3213
3313
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.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 um\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\">\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=\"Digite o C\u00F3digo\" (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 <!-- #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 <!-- <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>", 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}\n"], dependencies: [{ kind: "ngmodule", type: NgxPaginationModule }, { kind: "pipe", type: i6.PaginatePipe, name: "paginate" }, { kind: "component", type: i6.PaginationControlsComponent, selector: "pagination-controls", inputs: ["id", "maxSize", "directionLinks", "autoHide", "responsive", "previousLabel", "nextLabel", "screenReaderPaginationLabel", "screenReaderPageLabel", "screenReaderCurrentLabel"], outputs: ["pageChange", "pageBoundsCorrection"] }, { kind: "ngmodule", type: InfraModule }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "component", type: i3.LibSpinnerComponent, selector: "lib-spinner", inputs: ["type", "theme", "size", "helperText"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
3214
3314
|
}
|
|
3215
3315
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SelecaoEstabelecimentosModalComponent, decorators: [{
|
|
@@ -3219,16 +3319,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
3219
3319
|
InfraModule,
|
|
3220
3320
|
CommonModule
|
|
3221
3321
|
], 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 um\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\">\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=\"Digite o C\u00F3digo\" (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 <!-- #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 <!-- <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>", 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}\n"] }]
|
|
3222
|
-
}], ctorParameters: () => [{ type: AuthStorageService }, { type: LibCustomMenuService }, { type: MenuServicesService }, { type: i3.MessageService }, { type:
|
|
3322
|
+
}], ctorParameters: () => [{ type: AuthStorageService }, { type: LibCustomMenuService }, { type: MenuServicesService }, { type: i3.MessageService }, { type: AuthUtilService }], propDecorators: { onClose: [{
|
|
3223
3323
|
type: Output
|
|
3224
3324
|
}], onSelected: [{
|
|
3225
3325
|
type: Output
|
|
3226
3326
|
}] } });
|
|
3227
3327
|
|
|
3228
3328
|
class VersoesModalComponent {
|
|
3229
|
-
constructor(_menuServicesService,
|
|
3329
|
+
constructor(_menuServicesService, _authUtilService) {
|
|
3230
3330
|
this._menuServicesService = _menuServicesService;
|
|
3231
|
-
this.
|
|
3331
|
+
this._authUtilService = _authUtilService;
|
|
3232
3332
|
// #region ==========> PROPERTIES <==========
|
|
3233
3333
|
// #region PUBLIC
|
|
3234
3334
|
this.onClose = new EventEmitter();
|
|
@@ -3257,7 +3357,7 @@ class VersoesModalComponent {
|
|
|
3257
3357
|
this.versionInfra = response.Version;
|
|
3258
3358
|
},
|
|
3259
3359
|
error: error => {
|
|
3260
|
-
this.
|
|
3360
|
+
this._authUtilService.showHttpError(error);
|
|
3261
3361
|
}
|
|
3262
3362
|
});
|
|
3263
3363
|
// Obtém Versão do Corporativo
|
|
@@ -3266,7 +3366,7 @@ class VersoesModalComponent {
|
|
|
3266
3366
|
this.versionCorporativo = response.Version;
|
|
3267
3367
|
},
|
|
3268
3368
|
error: error => {
|
|
3269
|
-
this.
|
|
3369
|
+
this._authUtilService.showHttpError(error);
|
|
3270
3370
|
}
|
|
3271
3371
|
});
|
|
3272
3372
|
}
|
|
@@ -3276,7 +3376,7 @@ class VersoesModalComponent {
|
|
|
3276
3376
|
closeSelf() {
|
|
3277
3377
|
this.onClose.emit();
|
|
3278
3378
|
}
|
|
3279
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: VersoesModalComponent, deps: [{ token: MenuServicesService }, { token:
|
|
3379
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: VersoesModalComponent, deps: [{ token: MenuServicesService }, { token: AuthUtilService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3280
3380
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: VersoesModalComponent, isStandalone: true, selector: "versoes-modal", outputs: { onClose: "onClose" }, ngImport: i0, template: "<div class=\"main-container\">\n <div class=\"modal-header modal-style modal-dialog-centered modal-lg\">\n <h4 class=\"modal-title pull-left color-modal fw-bold\" style=\"font-size: 20px;\"> Vers\u00F5es desta instala\u00E7\u00E3o </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=\"row\">\n <div class=\"col\">\n <span><strong>Vers\u00E3o Infra:</strong> {{ versionInfra }}</span>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col\">\n <span><strong>Vers\u00E3o Corporativo:</strong> {{ versionCorporativo }}</span>\n </div>\n </div>\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: [""], dependencies: [{ kind: "ngmodule", type: InfraModule }, { kind: "ngmodule", type: CommonModule }] }); }
|
|
3281
3381
|
}
|
|
3282
3382
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: VersoesModalComponent, decorators: [{
|
|
@@ -3285,12 +3385,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
3285
3385
|
InfraModule,
|
|
3286
3386
|
CommonModule
|
|
3287
3387
|
], 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\" style=\"font-size: 20px;\"> Vers\u00F5es desta instala\u00E7\u00E3o </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=\"row\">\n <div class=\"col\">\n <span><strong>Vers\u00E3o Infra:</strong> {{ versionInfra }}</span>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col\">\n <span><strong>Vers\u00E3o Corporativo:</strong> {{ versionCorporativo }}</span>\n </div>\n </div>\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>" }]
|
|
3288
|
-
}], ctorParameters: () => [{ type: MenuServicesService }, { type:
|
|
3388
|
+
}], ctorParameters: () => [{ type: MenuServicesService }, { type: AuthUtilService }], propDecorators: { onClose: [{
|
|
3289
3389
|
type: Output
|
|
3290
3390
|
}] } });
|
|
3291
3391
|
|
|
3292
3392
|
class MenuLateralComponent {
|
|
3293
|
-
constructor(_msalGuardConfiguration, _msalService, _toastrService, _customEnvironmentService, _authStorageService, _bsModalService, _menuServices, _messageService,
|
|
3393
|
+
constructor(_msalGuardConfiguration, _msalService, _toastrService, _customEnvironmentService, _authStorageService, _bsModalService, _menuServices, _messageService, _authUtilService, _router, _authService, _breakpointObserver, _customMenuService, _pesquisaTelas, idb) {
|
|
3294
3394
|
this._msalGuardConfiguration = _msalGuardConfiguration;
|
|
3295
3395
|
this._msalService = _msalService;
|
|
3296
3396
|
this._toastrService = _toastrService;
|
|
@@ -3299,7 +3399,7 @@ class MenuLateralComponent {
|
|
|
3299
3399
|
this._bsModalService = _bsModalService;
|
|
3300
3400
|
this._menuServices = _menuServices;
|
|
3301
3401
|
this._messageService = _messageService;
|
|
3302
|
-
this.
|
|
3402
|
+
this._authUtilService = _authUtilService;
|
|
3303
3403
|
this._router = _router;
|
|
3304
3404
|
this._authService = _authService;
|
|
3305
3405
|
this._breakpointObserver = _breakpointObserver;
|
|
@@ -3404,20 +3504,20 @@ class MenuLateralComponent {
|
|
|
3404
3504
|
this._authStorageService.infraEmpresaNome = response.InfraEmpresaNome;
|
|
3405
3505
|
},
|
|
3406
3506
|
error: error => {
|
|
3407
|
-
this.
|
|
3507
|
+
this._authUtilService.showHttpError(error);
|
|
3408
3508
|
}
|
|
3409
3509
|
});
|
|
3410
3510
|
}
|
|
3411
3511
|
getMenuUserImg() {
|
|
3412
3512
|
this._menuServices.getImagemMenu().subscribe({
|
|
3413
3513
|
next: response => { this.footerUserImgSrc = response.InfraUsuarioImg.Imagem; },
|
|
3414
|
-
error: error => { this.
|
|
3514
|
+
error: error => { this._authUtilService.showHttpError(error); }
|
|
3415
3515
|
});
|
|
3416
3516
|
}
|
|
3417
3517
|
getUserEmail() {
|
|
3418
3518
|
this._menuServices.getUsuarioEmail().subscribe({
|
|
3419
3519
|
next: response => { this.footerUserEmail = response.Email; },
|
|
3420
|
-
error: error => { this.
|
|
3520
|
+
error: error => { this._authUtilService.showHttpError(error); }
|
|
3421
3521
|
});
|
|
3422
3522
|
}
|
|
3423
3523
|
// #endregion GET
|
|
@@ -3502,7 +3602,7 @@ class MenuLateralComponent {
|
|
|
3502
3602
|
this._authService.logout();
|
|
3503
3603
|
}
|
|
3504
3604
|
getExternalUrl(url) {
|
|
3505
|
-
return `${this._hostServeUrlOutSystems == "" ? this.
|
|
3605
|
+
return `${this._hostServeUrlOutSystems == "" ? this._authUtilService.getHostName() : this._hostServeUrlOutSystems}/${url}`;
|
|
3506
3606
|
}
|
|
3507
3607
|
constroiRegrasDynamicMenu(menus) {
|
|
3508
3608
|
const home = { id: 1, label: "Início", descricao: "Tela inicial", icon: "casa", route: "home", isExternal: false, isSelected: this._router.url.includes("home"), };
|
|
@@ -3603,7 +3703,7 @@ class MenuLateralComponent {
|
|
|
3603
3703
|
}
|
|
3604
3704
|
});
|
|
3605
3705
|
}
|
|
3606
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MenuLateralComponent, deps: [{ token: MSAL_GUARD_CONFIG }, { token: i1$2.MsalService }, { token: i10.ToastrService }, { token: LibCustomEnvironmentService }, { token: AuthStorageService }, { token: i5.BsModalService }, { token: MenuServicesService }, { token: i3.MessageService }, { token:
|
|
3706
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MenuLateralComponent, deps: [{ token: MSAL_GUARD_CONFIG }, { token: i1$2.MsalService }, { token: i10.ToastrService }, { token: LibCustomEnvironmentService }, { token: AuthStorageService }, { token: i5.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 }); }
|
|
3607
3707
|
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; 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)\"\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\" (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:212px;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: i16.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: i3$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$2.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"] }] }); }
|
|
3608
3708
|
}
|
|
3609
3709
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MenuLateralComponent, decorators: [{
|
|
@@ -3626,7 +3726,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
3626
3726
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
3627
3727
|
type: Inject,
|
|
3628
3728
|
args: [MSAL_GUARD_CONFIG]
|
|
3629
|
-
}] }, { type: i1$2.MsalService }, { type: i10.ToastrService }, { type: LibCustomEnvironmentService }, { type: AuthStorageService }, { type: i5.BsModalService }, { type: MenuServicesService }, { type: i3.MessageService }, { type:
|
|
3729
|
+
}] }, { type: i1$2.MsalService }, { type: i10.ToastrService }, { type: LibCustomEnvironmentService }, { type: AuthStorageService }, { type: i5.BsModalService }, { type: MenuServicesService }, { type: i3.MessageService }, { type: AuthUtilService }, { type: i1$1.Router }, { type: AuthService }, { type: i11.BreakpointObserver }, { type: LibCustomMenuService }, { type: PesquisaTelasGlobalService }, { type: IndexedDBService }], propDecorators: { sidebar: [{
|
|
3630
3730
|
type: ViewChild,
|
|
3631
3731
|
args: ['sidebar', { static: true }]
|
|
3632
3732
|
}], notif_template: [{
|
|
@@ -3641,9 +3741,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
3641
3741
|
}] } });
|
|
3642
3742
|
|
|
3643
3743
|
class NovaSenhaComponent {
|
|
3644
|
-
constructor(_formBuilder,
|
|
3744
|
+
constructor(_formBuilder, _authUtilService, _messageService, _authService, _authStorageService, _title, _router, _route) {
|
|
3645
3745
|
this._formBuilder = _formBuilder;
|
|
3646
|
-
this.
|
|
3746
|
+
this._authUtilService = _authUtilService;
|
|
3647
3747
|
this._messageService = _messageService;
|
|
3648
3748
|
this._authService = _authService;
|
|
3649
3749
|
this._authStorageService = _authStorageService;
|
|
@@ -3727,7 +3827,7 @@ class NovaSenhaComponent {
|
|
|
3727
3827
|
next: response => {
|
|
3728
3828
|
},
|
|
3729
3829
|
error: (error) => {
|
|
3730
|
-
this.
|
|
3830
|
+
this._authUtilService.showHttpError(error);
|
|
3731
3831
|
},
|
|
3732
3832
|
});
|
|
3733
3833
|
}
|
|
@@ -3747,7 +3847,7 @@ class NovaSenhaComponent {
|
|
|
3747
3847
|
},
|
|
3748
3848
|
error: (error) => {
|
|
3749
3849
|
this.isLoading = false;
|
|
3750
|
-
this.
|
|
3850
|
+
this._authUtilService.showHttpError(error);
|
|
3751
3851
|
},
|
|
3752
3852
|
});
|
|
3753
3853
|
}
|
|
@@ -3766,7 +3866,7 @@ class NovaSenhaComponent {
|
|
|
3766
3866
|
},
|
|
3767
3867
|
error: (error) => {
|
|
3768
3868
|
this.isLoading = false;
|
|
3769
|
-
this.
|
|
3869
|
+
this._authUtilService.showHttpError(error);
|
|
3770
3870
|
}
|
|
3771
3871
|
});
|
|
3772
3872
|
}
|
|
@@ -3779,7 +3879,7 @@ class NovaSenhaComponent {
|
|
|
3779
3879
|
},
|
|
3780
3880
|
error: (error) => {
|
|
3781
3881
|
this.isLoading = false;
|
|
3782
|
-
this.
|
|
3882
|
+
this._authUtilService.showHttpError(error);
|
|
3783
3883
|
}
|
|
3784
3884
|
});
|
|
3785
3885
|
}
|
|
@@ -3811,7 +3911,7 @@ class NovaSenhaComponent {
|
|
|
3811
3911
|
this._authStorageService.logout();
|
|
3812
3912
|
this._router.navigate(["/auth/login"]);
|
|
3813
3913
|
}
|
|
3814
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NovaSenhaComponent, deps: [{ token: i3$1.FormBuilder }, { token:
|
|
3914
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NovaSenhaComponent, deps: [{ token: i3$1.FormBuilder }, { token: AuthUtilService }, { token: i3.MessageService }, { token: AuthService }, { token: AuthStorageService }, { token: i8.Title }, { token: i1$1.Router }, { token: i1$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3815
3915
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: NovaSenhaComponent, isStandalone: true, selector: "app-nova-senha", ngImport: i0, template: "<body>\n<div id=\"main-container\">\n\t<!-- #region MAIN CONTENT -->\n\t<div class=\"glb-main-container password-container\">\n\t\t<div class=\"password-info-container\">\n\t\t\t<div class=\"img mb-3\">\n\t\t\t\t<img [src]=\"statusSenha == 2 ? calendarioImg : statusSenha == 1 ? maoImg : statusSenha == 3 ? cadeadoImg : '' \" width=\"125.69\" height=\"122\">\n\t\t\t</div>\n\t\t\t<div class=\"text\">\n\t\t\t\t<h4>{{statusSenha == 2 ? 'Senha expirada' : statusSenha == 1 ? 'Primeiro acesso' : statusSenha == 3 ? 'Esqueceu sua senha?' : ''}}</h4>\n\t\t\t\t<p [innerHTML]=\"statusSenha == 2 ? senhaExpiradaText : statusSenha == 1 ? primeiroAcessoText : statusSenha == 3 ? esqueceuSenhaText : '' \"></p>\n\t\t\t</div>\n\t\t</div>\n\t\t<form [formGroup]=\"form\">\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputCode\" class=\"form-label\"> C\u00F3digo de valida\u00E7\u00E3o <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"text\" placeholder=\"Insira seu c\u00F3digo aqui...\" id=\"inputCode\" class=\"form-control\" formControlName=\"code\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('code'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('code')\" label=\"C\u00F3digo de valida\u00E7\u00E3o\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputPassword\" class=\"form-label\"> Digite uma nova Senha <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"password\" placeholder=\"Digite sua nova senha...\" id=\"inputPassword\" class=\"form-control\" formControlName=\"password\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('password'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('password')\" label=\"{{ passwordLabel }}\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputConfirmPassword\" class=\"form-label\"> Confirme sua nova Senha <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"password\" placeholder=\"Digite a senha novamente...\" id=\"inputConfirmPassword\" class=\"form-control\" formControlName=\"confirmPassword\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('confirmPassword'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('confirmPassword')\" label=\"Confirme sua Senha\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\t<div class=\"btns\">\n\t\t\t\t\t<button [libLoading]=\"isLoading\" loadingText=\"Redefinindo...\" [disabled]=\"isLoading\" (click)=\"sendPassword()\" type=\"button\" class=\"btn btn-primary col w-100\">\n\t\t\t\t\t\tRedefinir senha <lib-icon iconName=\"login\" />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<div class=\"mt-3 text-center\">\n\t\t\t\t\t\t<a type=\"button\" class=\"fw-bold text-decoration-none text-secondary\" (click)=\"cancelar()\">\n\t\t\t\t\t\t\t<lib-icon iconName=\"p-seta-esquerda\" /> Voltar para a tela de login </a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t</form>\n\t</div>\n\t<!-- #endregion MAIN CONTENT -->\n</div>\n</body>\n", styles: ["body{background-color:#f5f5f5;height:100%!important;margin:0!important;padding:0!important}#main-container{display:flex;align-items:center;justify-content:center;height:100%}.password-container{padding:30px;width:37%;border:none;box-shadow:0 2px -1px #0000001a}.img{width:26%}.text{display:flex;flex-direction:column;align-items:flex-start;margin-left:auto}.text h4{font-weight:700}.text p{text-align:start}.password-info-container{display:flex;gap:15px}.btns{display:flex;flex-direction:column;align-items:center;width:100%}input::placeholder{color:#8d8d8d;font-size:15px}.icon{margin-right:5px;font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: InfraModule }, { kind: "component", type: i3.FieldErrorMessageComponent, selector: "app-field-error-message, lib-error-message", inputs: ["customMessage", "control", "label"] }, { kind: "component", type: i3.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "directive", type: i3.LoadingBtnDirective, selector: "button[libLoading], a[libLoading]", inputs: ["loadingText", "loadingType", "libLoading"] }], preserveWhitespaces: true }); }
|
|
3816
3916
|
}
|
|
3817
3917
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NovaSenhaComponent, decorators: [{
|
|
@@ -3820,7 +3920,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
3820
3920
|
ReactiveFormsModule,
|
|
3821
3921
|
InfraModule,
|
|
3822
3922
|
], 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"] }]
|
|
3823
|
-
}], ctorParameters: () => [{ type: i3$1.FormBuilder }, { type:
|
|
3923
|
+
}], ctorParameters: () => [{ type: i3$1.FormBuilder }, { type: AuthUtilService }, { type: i3.MessageService }, { type: AuthService }, { type: AuthStorageService }, { type: i8.Title }, { type: i1$1.Router }, { type: i1$1.ActivatedRoute }] });
|
|
3824
3924
|
|
|
3825
3925
|
class IMenu {
|
|
3826
3926
|
constructor() {
|
|
@@ -4206,9 +4306,9 @@ class NavSubmenuCards {
|
|
|
4206
4306
|
class SubMenuCardComponent {
|
|
4207
4307
|
// #endregion PUBLIC
|
|
4208
4308
|
// #endregion ==========> PROPERTIES <==========
|
|
4209
|
-
constructor(_menuService,
|
|
4309
|
+
constructor(_menuService, _authUtilService, _customEnv) {
|
|
4210
4310
|
this._menuService = _menuService;
|
|
4211
|
-
this.
|
|
4311
|
+
this._authUtilService = _authUtilService;
|
|
4212
4312
|
this._customEnv = _customEnv;
|
|
4213
4313
|
// #region ==========> PROPERTIES <==========
|
|
4214
4314
|
// #region PUBLIC
|
|
@@ -4227,10 +4327,10 @@ class SubMenuCardComponent {
|
|
|
4227
4327
|
return;
|
|
4228
4328
|
this._menuService.GetHostServerOutSystems().subscribe({
|
|
4229
4329
|
next: response => this.hostName = response.String,
|
|
4230
|
-
error: error => this.
|
|
4330
|
+
error: error => this._authUtilService.showHttpError(error)
|
|
4231
4331
|
});
|
|
4232
4332
|
}
|
|
4233
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SubMenuCardComponent, deps: [{ token: MenuServicesService }, { token:
|
|
4333
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SubMenuCardComponent, deps: [{ token: MenuServicesService }, { token: AuthUtilService }, { token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4234
4334
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: SubMenuCardComponent, isStandalone: true, selector: "sub-menu-card, lib-submenu-card", inputs: { subMenuCards: "subMenuCards" }, ngImport: i0, template: `
|
|
4235
4335
|
<div class="max-card-menu row">
|
|
4236
4336
|
@for(card of subMenuCards; track $index) {
|
|
@@ -4305,7 +4405,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
4305
4405
|
}
|
|
4306
4406
|
</div>
|
|
4307
4407
|
`, 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"] }]
|
|
4308
|
-
}], ctorParameters: () => [{ type: MenuServicesService }, { type:
|
|
4408
|
+
}], ctorParameters: () => [{ type: MenuServicesService }, { type: AuthUtilService }, { type: LibCustomEnvironmentService }], propDecorators: { subMenuCards: [{
|
|
4309
4409
|
type: Input
|
|
4310
4410
|
}] } });
|
|
4311
4411
|
|
|
@@ -4410,9 +4510,9 @@ class TelaItem {
|
|
|
4410
4510
|
class SubMenuComponent {
|
|
4411
4511
|
// #endregion PUBLIC
|
|
4412
4512
|
// #endregion ==========> PROPERTIES <==========
|
|
4413
|
-
constructor(_menuService,
|
|
4513
|
+
constructor(_menuService, _authUtilService, _customEnv) {
|
|
4414
4514
|
this._menuService = _menuService;
|
|
4415
|
-
this.
|
|
4515
|
+
this._authUtilService = _authUtilService;
|
|
4416
4516
|
this._customEnv = _customEnv;
|
|
4417
4517
|
// #region ==========> PROPERTIES <==========
|
|
4418
4518
|
// #region PUBLIC
|
|
@@ -4445,10 +4545,10 @@ class SubMenuComponent {
|
|
|
4445
4545
|
return;
|
|
4446
4546
|
this._menuService.GetHostServerOutSystems().subscribe({
|
|
4447
4547
|
next: response => this.hostNameOutSystems = response.String,
|
|
4448
|
-
error: error => this.
|
|
4548
|
+
error: error => this._authUtilService.showHttpError(error)
|
|
4449
4549
|
});
|
|
4450
4550
|
}
|
|
4451
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SubMenuComponent, deps: [{ token: MenuServicesService }, { token:
|
|
4551
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SubMenuComponent, deps: [{ token: MenuServicesService }, { token: AuthUtilService }, { token: LibCustomEnvironmentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4452
4552
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: SubMenuComponent, isStandalone: true, selector: "app-nav-sub-menu, lib-submenu", inputs: { navSubmenus: "navSubmenus", isProduction: "isProduction", hostname: "hostname", activeItem: "activeItem" }, outputs: { onTituloSelecionado: "onTituloSelecionado", onTelaSelecionada: "onTelaSelecionada" }, ngImport: i0, template: "<lib-container>\n <div class=\"px-5\" innerContent1>\n @for(subMenu of navSubmenus; track $index) {\n <div [class]=\"$first && subMenu.titulo == '' && subMenu.icon == '' ? ' mb-2' : 'mt-4 mb-2'\">\n @if (subMenu.icon != '') {\n <lib-icon class=\"bold engrenagem-ajustada\" iconName=\"{{ subMenu.icon }}\" />\n }\n @if (subMenu.titulo != ''){\n <span class=\"fw-bold fs-4 ms-1\">{{ subMenu.titulo }}</span>\n }\n\n <app-nav-tabs [activeItem]=\"activeItem\" [subMenus]=\"navSubmenus[$index].subMenuItem\" [hostName]=\"hostNameOutSystems\"\n (onTelaSelecionada)=\"onTelaSelecionada.emit($event)\" (onTituloSelecionado)=\"onTituloSelecionado.emit($event)\" />\n </div>\n\n @if(!$last){ <hr /> }\n }\n </div>\n</lib-container>\n", styles: [".engrenagem-ajustada{position:relative;top:-4px}\n"], dependencies: [{ kind: "component", type: NavTabsComponent, selector: "app-nav-tabs", inputs: ["subMenus", "hostName", "activeItem"], outputs: ["onTituloSelecionado", "onTelaSelecionada"] }, { kind: "component", type: LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "component", type: ContentContainerComponent, selector: "lib-container", inputs: ["documentation", "tabs", "advancedTabs", "containerTitle", "useBorder", "currentTab"], outputs: ["onChangeTab"] }] }); }
|
|
4453
4553
|
}
|
|
4454
4554
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SubMenuComponent, decorators: [{
|
|
@@ -4458,7 +4558,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
4458
4558
|
LibIconsComponent,
|
|
4459
4559
|
ContentContainerComponent
|
|
4460
4560
|
], standalone: true, 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"] }]
|
|
4461
|
-
}], ctorParameters: () => [{ type: MenuServicesService }, { type:
|
|
4561
|
+
}], ctorParameters: () => [{ type: MenuServicesService }, { type: AuthUtilService }, { type: LibCustomEnvironmentService }], propDecorators: { navSubmenus: [{
|
|
4462
4562
|
type: Input
|
|
4463
4563
|
}], isProduction: [{
|
|
4464
4564
|
type: Input
|
|
@@ -4478,5 +4578,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
4478
4578
|
* Generated bundle index. Do not edit.
|
|
4479
4579
|
*/
|
|
4480
4580
|
|
|
4481
|
-
export { AUTH_ROUTES, AuthAplicInterceptor, AuthGuard, AuthInfraInterceptor, AuthModule, AuthService, AuthStorageService, DynamicMenuComponent, ErrorMenuNotAllowed, ExternaLoginlGuard, IMenu, IndexedDBService, 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,
|
|
4581
|
+
export { AUTH_ROUTES, AuthAplicInterceptor, AuthGuard, AuthInfraInterceptor, AuthModule, AuthService, AuthStorageService, AuthUtilService, DynamicMenuComponent, ErrorMenuNotAllowed, ExternaLoginlGuard, IMenu, IndexedDBService, 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, RetInfraUsuarioImg, RetMenuItemStructure, RetMenuLateral, RetMenuPromise, RetNavSubMenu, RetSubmenuWithCards, SecondaryDropdownComponent, SelecaoEstabelecimentosModalComponent, SituacaoLogin, SubMenuCardComponent, SubMenuComponent, SubMenuItem, TelaItem };
|
|
4482
4582
|
//# sourceMappingURL=ngx-sp-auth.mjs.map
|