lib-portal-angular 0.0.94 → 0.0.96

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,24 +1,33 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "../../service/auth-service.service";
4
4
  import * as i2 from "@angular/common";
5
5
  export class TabComponent {
6
- constructor(authService) {
6
+ constructor(authService, cdr) {
7
7
  this.authService = authService;
8
+ this.cdr = cdr;
8
9
  this.tabs = [];
9
10
  this.activeTabIndex = 0;
10
11
  this.tabChanged = new EventEmitter();
12
+ this.showTabs = true; // Controla a exibição do componente
11
13
  }
12
14
  ngOnInit() {
13
15
  if (this.hasComponentPermission() && this.tabs.length > 0) {
14
16
  this.selectTab(this.activeTabIndex);
15
17
  }
16
18
  }
19
+ ngOnChanges(changes) {
20
+ if (changes['tabs'] && !changes['tabs'].firstChange) {
21
+ this.tabs = [...this.tabs]; // Gera uma nova referência
22
+ this.activeTabIndex = 0;
23
+ this.cdr.markForCheck(); // Força a atualização
24
+ }
25
+ }
17
26
  selectTab(index, event) {
18
27
  if (event) {
19
- event.preventDefault(); // Impede o comportamento padrão do link
28
+ event.preventDefault();
20
29
  }
21
- if (this.hasPermission(this.tabs[index].permissions)) {
30
+ if (this.hasPermission(this.tabs[index]?.permissions)) {
22
31
  this.activeTabIndex = index;
23
32
  this.tabChanged.emit(this.activeTabIndex);
24
33
  }
@@ -27,33 +36,32 @@ export class TabComponent {
27
36
  if (!requiredPermissions || requiredPermissions.length === 0) {
28
37
  return true;
29
38
  }
30
- try {
31
- return this.authService.hasPermission(requiredPermissions);
32
- }
33
- catch (error) {
34
- console.error('Permission error:', error);
35
- return false;
36
- }
39
+ return this.authService.hasPermission(requiredPermissions);
37
40
  }
38
41
  hasComponentPermission() {
39
42
  if (!this.componentPermissions || this.componentPermissions.length === 0) {
40
- return true; // Se não há permissões necessárias, permite por padrão
41
- }
42
- try {
43
- return this.authService.hasPermission(this.componentPermissions);
44
- }
45
- catch (error) {
46
- console.error('Permission error:', error);
47
- return false;
43
+ return true;
48
44
  }
45
+ return this.authService.hasPermission(this.componentPermissions);
46
+ }
47
+ trackByIndex(index) {
48
+ return index;
49
+ }
50
+ // 🔹 Método para reiniciar o componente
51
+ refreshTabs() {
52
+ this.showTabs = false; // Remove o componente do DOM
53
+ setTimeout(() => {
54
+ this.showTabs = true; // Adiciona novamente
55
+ this.cdr.detectChanges(); // Força a atualização do template
56
+ });
49
57
  }
50
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabComponent, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TabComponent, selector: "argenta-tab", inputs: { tabs: "tabs", activeTabIndex: "activeTabIndex", componentPermissions: "componentPermissions" }, outputs: { tabChanged: "tabChanged" }, ngImport: i0, template: "<ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".nav-tabs .nav-item .nav-link{cursor:pointer;font-family:var(--font-family);border-top-left-radius:.3rem;border-top-right-radius:.3rem;font-size:14px;color:var(--primary-color);border:1px solid #ddd;transition:background-color .3s ease,color .3s ease}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--background-color);border-color:transparent}.nav-tabs .nav-item .nav-link:hover{background-color:var(--secondary-color);color:var(--background-color)}.tab-content .tab-pane{padding:1rem;border:1px solid #ddd;border-top:none}.nav-tabs .nav-item .nav-link{color:var(--primary-color)}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--text-color)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
58
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabComponent, deps: [{ token: i1.AuthService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
59
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TabComponent, selector: "argenta-tab", inputs: { tabs: "tabs", activeTabIndex: "activeTabIndex", componentPermissions: "componentPermissions" }, outputs: { tabChanged: "tabChanged" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"showTabs\">\n <ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index; trackBy: trackByIndex\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index; trackBy: trackByIndex\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [".nav-tabs .nav-item .nav-link{cursor:pointer;font-family:var(--font-family);border-top-left-radius:.3rem;border-top-right-radius:.3rem;font-size:14px;color:var(--primary-color);border:1px solid #ddd;transition:background-color .3s ease,color .3s ease}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--background-color);border-color:transparent}.nav-tabs .nav-item .nav-link:hover{background-color:var(--secondary-color);color:var(--background-color)}.tab-content .tab-pane{padding:1rem;border:1px solid #ddd;border-top:none}.nav-tabs .nav-item .nav-link{color:var(--primary-color)}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--text-color)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
52
60
  }
53
61
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabComponent, decorators: [{
54
62
  type: Component,
55
- args: [{ selector: 'argenta-tab', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".nav-tabs .nav-item .nav-link{cursor:pointer;font-family:var(--font-family);border-top-left-radius:.3rem;border-top-right-radius:.3rem;font-size:14px;color:var(--primary-color);border:1px solid #ddd;transition:background-color .3s ease,color .3s ease}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--background-color);border-color:transparent}.nav-tabs .nav-item .nav-link:hover{background-color:var(--secondary-color);color:var(--background-color)}.tab-content .tab-pane{padding:1rem;border:1px solid #ddd;border-top:none}.nav-tabs .nav-item .nav-link{color:var(--primary-color)}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--text-color)}\n"] }]
56
- }], ctorParameters: function () { return [{ type: i1.AuthService }]; }, propDecorators: { tabs: [{
63
+ args: [{ selector: 'argenta-tab', template: "<ng-container *ngIf=\"showTabs\">\n <ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index; trackBy: trackByIndex\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index; trackBy: trackByIndex\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [".nav-tabs .nav-item .nav-link{cursor:pointer;font-family:var(--font-family);border-top-left-radius:.3rem;border-top-right-radius:.3rem;font-size:14px;color:var(--primary-color);border:1px solid #ddd;transition:background-color .3s ease,color .3s ease}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--background-color);border-color:transparent}.nav-tabs .nav-item .nav-link:hover{background-color:var(--secondary-color);color:var(--background-color)}.tab-content .tab-pane{padding:1rem;border:1px solid #ddd;border-top:none}.nav-tabs .nav-item .nav-link{color:var(--primary-color)}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--text-color)}\n"] }]
64
+ }], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { tabs: [{
57
65
  type: Input
58
66
  }], activeTabIndex: [{
59
67
  type: Input
@@ -62,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
62
70
  }], tabChanged: [{
63
71
  type: Output
64
72
  }] } });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi1wb3J0YWwtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvdGFiL3RhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3RhYi90YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7Ozs7QUFTdkIsTUFBTSxPQUFPLFlBQVk7SUFNckIsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFMbkMsU0FBSSxHQUE4RCxFQUFFLENBQUM7UUFDckUsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFFMUIsZUFBVSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO0lBRXhCLENBQUM7SUFFakQsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhLEVBQUUsS0FBa0I7UUFDdkMsSUFBSSxLQUFLLEVBQUU7WUFDUCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyx3Q0FBd0M7U0FDbkU7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDN0M7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLG1CQUE4QjtRQUN4QyxJQUFJLENBQUMsbUJBQW1CLElBQUksbUJBQW1CLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMxRCxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsSUFBSTtZQUNBLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUM5RDtRQUFDLE9BQU8sS0FBYyxFQUFFO1lBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUMsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBRUQsc0JBQXNCO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdEUsT0FBTyxJQUFJLENBQUMsQ0FBQyx1REFBdUQ7U0FDdkU7UUFDRCxJQUFJO1lBQ0EsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUNwRTtRQUFDLE9BQU8sS0FBYyxFQUFFO1lBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUMsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDOytHQTlDUSxZQUFZO21HQUFaLFlBQVksb01DaEJ6Qix5dkJBd0JBOzs0RkRSYSxZQUFZO2tCQU54QixTQUFTOytCQUNJLGFBQWEsbUJBR04sdUJBQXVCLENBQUMsTUFBTTtrR0FHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXV0aC1zZXJ2aWNlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FyZ2VudGEtdGFiJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90YWIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVGFiQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSB0YWJzOiB7IGxhYmVsOiBzdHJpbmc7IGNvbnRlbnQ6IGFueTsgcGVybWlzc2lvbnM/OiBzdHJpbmdbXSB9W10gPSBbXTtcbiAgICBASW5wdXQoKSBhY3RpdmVUYWJJbmRleDogbnVtYmVyID0gMDtcbiAgICBASW5wdXQoKSBjb21wb25lbnRQZXJtaXNzaW9ucz86IHN0cmluZ1tdOyAvLyBQZXJtaXNzw7VlcyBwYXJhIG8gY29tcG9uZW50ZSBjb21vIHVtIHRvZG9cbiAgICBAT3V0cHV0KCkgdGFiQ2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlKSB7IH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5oYXNDb21wb25lbnRQZXJtaXNzaW9uKCkgJiYgdGhpcy50YWJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0VGFiKHRoaXMuYWN0aXZlVGFiSW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0VGFiKGluZGV4OiBudW1iZXIsIGV2ZW50PzogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIEltcGVkZSBvIGNvbXBvcnRhbWVudG8gcGFkcsOjbyBkbyBsaW5rXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaGFzUGVybWlzc2lvbih0aGlzLnRhYnNbaW5kZXhdLnBlcm1pc3Npb25zKSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgdGhpcy50YWJDaGFuZ2VkLmVtaXQodGhpcy5hY3RpdmVUYWJJbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNQZXJtaXNzaW9uKHJlcXVpcmVkUGVybWlzc2lvbnM/OiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXJlcXVpcmVkUGVybWlzc2lvbnMgfHwgcmVxdWlyZWRQZXJtaXNzaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5oYXNQZXJtaXNzaW9uKHJlcXVpcmVkUGVybWlzc2lvbnMpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignUGVybWlzc2lvbiBlcnJvcjonLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNDb21wb25lbnRQZXJtaXNzaW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY29tcG9uZW50UGVybWlzc2lvbnMgfHwgdGhpcy5jb21wb25lbnRQZXJtaXNzaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBTZSBuw6NvIGjDoSBwZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMsIHBlcm1pdGUgcG9yIHBhZHLDo29cbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaGFzUGVybWlzc2lvbih0aGlzLmNvbXBvbmVudFBlcm1pc3Npb25zKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1Blcm1pc3Npb24gZXJyb3I6JywgZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0NvbXBvbmVudFBlcm1pc3Npb24oKVwiPlxuICA8dWwgY2xhc3M9XCJuYXYgbmF2LXRhYnNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAqbmdJZj1cImhhc1Blcm1pc3Npb24odGFiLnBlcm1pc3Npb25zKVwiPlxuICAgICAgICA8YVxuICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmtcIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaSA9PT0gYWN0aXZlVGFiSW5kZXhcIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RUYWIoaSwgJGV2ZW50KVwiXG4gICAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICAgID57eyB0YWIubGFiZWwgfX08L2FcbiAgICAgICAgPlxuICAgICAgPC9saT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC91bD5cbiAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgIGNsYXNzPVwidGFiLXBhbmUgZmFkZVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdzaG93IGFjdGl2ZSc6IGkgPT09IGFjdGl2ZVRhYkluZGV4IH1cIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWIuY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi1wb3J0YWwtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvdGFiL3RhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3RhYi90YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHVCxNQUFNLGVBQWUsQ0FBQzs7OztBQVN2QixNQUFNLE9BQU8sWUFBWTtJQVFyQixZQUFvQixXQUF3QixFQUFVLEdBQXNCO1FBQXhELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFQbkUsU0FBSSxHQUEyRSxFQUFFLENBQUM7UUFDbEYsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFFMUIsZUFBVSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXhFLGFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxvQ0FBb0M7SUFFMEIsQ0FBQztJQUVoRixRQUFRO1FBQ0osSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDdkM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUNqRCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQywyQkFBMkI7WUFDdkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQjtTQUNsRDtJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYSxFQUFFLEtBQWtCO1FBQ3ZDLElBQUksS0FBSyxFQUFFO1lBQ1AsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUU7WUFDbkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzdDO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxtQkFBOEI7UUFDeEMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLG1CQUFtQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDMUQsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsc0JBQXNCO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdEUsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFhO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsV0FBVztRQUNQLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsNkJBQTZCO1FBQ3BELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLHFCQUFxQjtZQUMzQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsa0NBQWtDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0EzRFEsWUFBWTttR0FBWixZQUFZLHlOQ25CekIsMjRCQTBCQTs7NEZEUGEsWUFBWTtrQkFOeEIsU0FBUzsrQkFDSSxhQUFhO2tJQU1kLElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXV0aC1zZXJ2aWNlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FyZ2VudGEtdGFiJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90YWIuY29tcG9uZW50LnNjc3MnXSxcbiAgIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgdGFiczogeyBsYWJlbDogc3RyaW5nOyBjb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+OyBwZXJtaXNzaW9ucz86IHN0cmluZ1tdIH1bXSA9IFtdO1xuICAgIEBJbnB1dCgpIGFjdGl2ZVRhYkluZGV4OiBudW1iZXIgPSAwO1xuICAgIEBJbnB1dCgpIGNvbXBvbmVudFBlcm1pc3Npb25zPzogc3RyaW5nW107XG4gICAgQE91dHB1dCgpIHRhYkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICBzaG93VGFicyA9IHRydWU7IC8vIENvbnRyb2xhIGEgZXhpYmnDp8OjbyBkbyBjb21wb25lbnRlXG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhhc0NvbXBvbmVudFBlcm1pc3Npb24oKSAmJiB0aGlzLnRhYnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RUYWIodGhpcy5hY3RpdmVUYWJJbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzWyd0YWJzJ10gJiYgIWNoYW5nZXNbJ3RhYnMnXS5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy50YWJzID0gWy4uLnRoaXMudGFic107IC8vIEdlcmEgdW1hIG5vdmEgcmVmZXLDqm5jaWFcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSAwO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7IC8vIEZvcsOnYSBhIGF0dWFsaXphw6fDo29cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdFRhYihpbmRleDogbnVtYmVyLCBldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmhhc1Blcm1pc3Npb24odGhpcy50YWJzW2luZGV4XT8ucGVybWlzc2lvbnMpKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICB0aGlzLnRhYkNoYW5nZWQuZW1pdCh0aGlzLmFjdGl2ZVRhYkluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhc1Blcm1pc3Npb24ocmVxdWlyZWRQZXJtaXNzaW9ucz86IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghcmVxdWlyZWRQZXJtaXNzaW9ucyB8fCByZXF1aXJlZFBlcm1pc3Npb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaGFzUGVybWlzc2lvbihyZXF1aXJlZFBlcm1pc3Npb25zKTtcbiAgICB9XG5cbiAgICBoYXNDb21wb25lbnRQZXJtaXNzaW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY29tcG9uZW50UGVybWlzc2lvbnMgfHwgdGhpcy5jb21wb25lbnRQZXJtaXNzaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmhhc1Blcm1pc3Npb24odGhpcy5jb21wb25lbnRQZXJtaXNzaW9ucyk7XG4gICAgfVxuXG4gICAgdHJhY2tCeUluZGV4KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgLy8g8J+UuSBNw6l0b2RvIHBhcmEgcmVpbmljaWFyIG8gY29tcG9uZW50ZVxuICAgIHJlZnJlc2hUYWJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3dUYWJzID0gZmFsc2U7IC8vIFJlbW92ZSBvIGNvbXBvbmVudGUgZG8gRE9NXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93VGFicyA9IHRydWU7IC8vIEFkaWNpb25hIG5vdmFtZW50ZVxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpOyAvLyBGb3LDp2EgYSBhdHVhbGl6YcOnw6NvIGRvIHRlbXBsYXRlXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VGFic1wiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQ29tcG9uZW50UGVybWlzc2lvbigpXCI+XG4gICAgPHVsIGNsYXNzPVwibmF2IG5hdi10YWJzXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCI+XG4gICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgKm5nSWY9XCJoYXNQZXJtaXNzaW9uKHRhYi5wZXJtaXNzaW9ucylcIj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGlua1wiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImkgPT09IGFjdGl2ZVRhYkluZGV4XCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RUYWIoaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgICAgICA+e3sgdGFiLmxhYmVsIH19PC9hXG4gICAgICAgICAgPlxuICAgICAgICA8L2xpPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC91bD5cbiAgICA8ZGl2IGNsYXNzPVwidGFiLWNvbnRlbnRcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIlxuICAgICAgICBjbGFzcz1cInRhYi1wYW5lIGZhZGVcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdzaG93IGFjdGl2ZSc6IGkgPT09IGFjdGl2ZVRhYkluZGV4IH1cIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFiLmNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -3734,22 +3734,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3734
3734
  }] } });
3735
3735
 
3736
3736
  class TabComponent {
3737
- constructor(authService) {
3737
+ constructor(authService, cdr) {
3738
3738
  this.authService = authService;
3739
+ this.cdr = cdr;
3739
3740
  this.tabs = [];
3740
3741
  this.activeTabIndex = 0;
3741
3742
  this.tabChanged = new EventEmitter();
3743
+ this.showTabs = true; // Controla a exibição do componente
3742
3744
  }
3743
3745
  ngOnInit() {
3744
3746
  if (this.hasComponentPermission() && this.tabs.length > 0) {
3745
3747
  this.selectTab(this.activeTabIndex);
3746
3748
  }
3747
3749
  }
3750
+ ngOnChanges(changes) {
3751
+ if (changes['tabs'] && !changes['tabs'].firstChange) {
3752
+ this.tabs = [...this.tabs]; // Gera uma nova referência
3753
+ this.activeTabIndex = 0;
3754
+ this.cdr.markForCheck(); // Força a atualização
3755
+ }
3756
+ }
3748
3757
  selectTab(index, event) {
3749
3758
  if (event) {
3750
- event.preventDefault(); // Impede o comportamento padrão do link
3759
+ event.preventDefault();
3751
3760
  }
3752
- if (this.hasPermission(this.tabs[index].permissions)) {
3761
+ if (this.hasPermission(this.tabs[index]?.permissions)) {
3753
3762
  this.activeTabIndex = index;
3754
3763
  this.tabChanged.emit(this.activeTabIndex);
3755
3764
  }
@@ -3758,33 +3767,32 @@ class TabComponent {
3758
3767
  if (!requiredPermissions || requiredPermissions.length === 0) {
3759
3768
  return true;
3760
3769
  }
3761
- try {
3762
- return this.authService.hasPermission(requiredPermissions);
3763
- }
3764
- catch (error) {
3765
- console.error('Permission error:', error);
3766
- return false;
3767
- }
3770
+ return this.authService.hasPermission(requiredPermissions);
3768
3771
  }
3769
3772
  hasComponentPermission() {
3770
3773
  if (!this.componentPermissions || this.componentPermissions.length === 0) {
3771
- return true; // Se não há permissões necessárias, permite por padrão
3772
- }
3773
- try {
3774
- return this.authService.hasPermission(this.componentPermissions);
3775
- }
3776
- catch (error) {
3777
- console.error('Permission error:', error);
3778
- return false;
3774
+ return true;
3779
3775
  }
3776
+ return this.authService.hasPermission(this.componentPermissions);
3777
+ }
3778
+ trackByIndex(index) {
3779
+ return index;
3780
+ }
3781
+ // 🔹 Método para reiniciar o componente
3782
+ refreshTabs() {
3783
+ this.showTabs = false; // Remove o componente do DOM
3784
+ setTimeout(() => {
3785
+ this.showTabs = true; // Adiciona novamente
3786
+ this.cdr.detectChanges(); // Força a atualização do template
3787
+ });
3780
3788
  }
3781
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabComponent, deps: [{ token: AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
3782
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TabComponent, selector: "argenta-tab", inputs: { tabs: "tabs", activeTabIndex: "activeTabIndex", componentPermissions: "componentPermissions" }, outputs: { tabChanged: "tabChanged" }, ngImport: i0, template: "<ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".nav-tabs .nav-item .nav-link{cursor:pointer;font-family:var(--font-family);border-top-left-radius:.3rem;border-top-right-radius:.3rem;font-size:14px;color:var(--primary-color);border:1px solid #ddd;transition:background-color .3s ease,color .3s ease}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--background-color);border-color:transparent}.nav-tabs .nav-item .nav-link:hover{background-color:var(--secondary-color);color:var(--background-color)}.tab-content .tab-pane{padding:1rem;border:1px solid #ddd;border-top:none}.nav-tabs .nav-item .nav-link{color:var(--primary-color)}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--text-color)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3789
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabComponent, deps: [{ token: AuthService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
3790
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TabComponent, selector: "argenta-tab", inputs: { tabs: "tabs", activeTabIndex: "activeTabIndex", componentPermissions: "componentPermissions" }, outputs: { tabChanged: "tabChanged" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"showTabs\">\n <ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index; trackBy: trackByIndex\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index; trackBy: trackByIndex\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [".nav-tabs .nav-item .nav-link{cursor:pointer;font-family:var(--font-family);border-top-left-radius:.3rem;border-top-right-radius:.3rem;font-size:14px;color:var(--primary-color);border:1px solid #ddd;transition:background-color .3s ease,color .3s ease}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--background-color);border-color:transparent}.nav-tabs .nav-item .nav-link:hover{background-color:var(--secondary-color);color:var(--background-color)}.tab-content .tab-pane{padding:1rem;border:1px solid #ddd;border-top:none}.nav-tabs .nav-item .nav-link{color:var(--primary-color)}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--text-color)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
3783
3791
  }
3784
3792
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabComponent, decorators: [{
3785
3793
  type: Component,
3786
- args: [{ selector: 'argenta-tab', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".nav-tabs .nav-item .nav-link{cursor:pointer;font-family:var(--font-family);border-top-left-radius:.3rem;border-top-right-radius:.3rem;font-size:14px;color:var(--primary-color);border:1px solid #ddd;transition:background-color .3s ease,color .3s ease}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--background-color);border-color:transparent}.nav-tabs .nav-item .nav-link:hover{background-color:var(--secondary-color);color:var(--background-color)}.tab-content .tab-pane{padding:1rem;border:1px solid #ddd;border-top:none}.nav-tabs .nav-item .nav-link{color:var(--primary-color)}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--text-color)}\n"] }]
3787
- }], ctorParameters: function () { return [{ type: AuthService }]; }, propDecorators: { tabs: [{
3794
+ args: [{ selector: 'argenta-tab', template: "<ng-container *ngIf=\"showTabs\">\n <ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index; trackBy: trackByIndex\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index; trackBy: trackByIndex\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [".nav-tabs .nav-item .nav-link{cursor:pointer;font-family:var(--font-family);border-top-left-radius:.3rem;border-top-right-radius:.3rem;font-size:14px;color:var(--primary-color);border:1px solid #ddd;transition:background-color .3s ease,color .3s ease}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--background-color);border-color:transparent}.nav-tabs .nav-item .nav-link:hover{background-color:var(--secondary-color);color:var(--background-color)}.tab-content .tab-pane{padding:1rem;border:1px solid #ddd;border-top:none}.nav-tabs .nav-item .nav-link{color:var(--primary-color)}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--text-color)}\n"] }]
3795
+ }], ctorParameters: function () { return [{ type: AuthService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { tabs: [{
3788
3796
  type: Input
3789
3797
  }], activeTabIndex: [{
3790
3798
  type: Input