@seniorsistemas/angular-components 19.0.9 → 19.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/breadcrumb/lib/breadcrumb/breadcrumb-models.d.ts +2 -0
  2. package/button/lib/button/button.component.d.ts +8 -2
  3. package/checkbox/lib/checkbox/checkbox.component.d.ts +5 -1
  4. package/dialog/lib/src/dialog/dialog.component.d.ts +7 -1
  5. package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +2 -2
  6. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-models.mjs +1 -1
  7. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +3 -3
  8. package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.mjs +8 -6
  9. package/esm2022/button/lib/button/button.component.mjs +20 -8
  10. package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +8 -5
  11. package/esm2022/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.mjs +2 -2
  12. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +1 -1
  13. package/esm2022/dialog/lib/src/dialog/dialog.component.mjs +9 -3
  14. package/esm2022/dynamic-form/dynamic-form/components/grid/row/row.component.mjs +1 -1
  15. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +2 -2
  16. package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +1 -1
  17. package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component.mjs +1 -1
  18. package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.mjs +2 -2
  19. package/esm2022/dynamic-form/dynamic-form/form-field/fields/button-field/button-field.component.mjs +1 -1
  20. package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +1 -1
  21. package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +1 -1
  22. package/esm2022/dynamic-form/dynamic-form/form-field/fields/radio-button/radio-button-field.component.mjs +1 -1
  23. package/esm2022/dynamic-form/dynamic-form/form-field/fields/select/select-field.component.mjs +2 -2
  24. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +1 -1
  25. package/esm2022/empty-state/lib/empty-state/empty-state.component.mjs +1 -1
  26. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +1 -1
  27. package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +1 -1
  28. package/esm2022/global-search/lib/global-search/global-search.component.mjs +1 -1
  29. package/esm2022/help-popover/lib/help-popover/help-popover/help-popover.component.mjs +1 -1
  30. package/esm2022/image-cropper/lib/image-cropper/image-cropper.component.mjs +1 -1
  31. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +1 -1
  32. package/esm2022/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +1 -1
  33. package/esm2022/kanban/lib/kanban/components/kanban-column/kanban-column.component.mjs +1 -1
  34. package/esm2022/kanban/lib/kanban/components/kanban-item/kanban-item.component.mjs +1 -1
  35. package/esm2022/lib/locale/fallback.mjs +13 -2
  36. package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +1 -1
  37. package/esm2022/object-card/lib/object-card/elements/field/object-card-field.component.mjs +1 -1
  38. package/esm2022/object-card/lib/object-card/elements/main/object-card-main.component.mjs +1 -1
  39. package/esm2022/paginator/lib/paginator/paginator.component.mjs +2 -2
  40. package/esm2022/picklist/lib/picklist/picklist.component.mjs +1 -1
  41. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +1 -1
  42. package/esm2022/select/lib/select/components/select-option/select-option.component.mjs +3 -3
  43. package/esm2022/select/lib/select/select.component.mjs +132 -20
  44. package/esm2022/shared/lib/accessibility/paginator-accessibility.directive.mjs +182 -0
  45. package/esm2022/shared/lib/accessibility/table-checkbox-accessibility.directive.mjs +174 -0
  46. package/esm2022/shared/public-api.mjs +6 -4
  47. package/esm2022/switch/lib/switch/switch.component.mjs +19 -8
  48. package/esm2022/table/lib/table/table-paging/table-paging.component.mjs +1 -1
  49. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +18 -8
  50. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +1 -1
  51. package/esm2022/tiered-menu/lib/tiered-menu/services/tiered-menu.service.mjs +1 -1
  52. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +11 -3
  53. package/esm2022/tooltip/lib/tooltip/tooltip.component.mjs +17 -11
  54. package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +108 -241
  55. package/esm2022/tooltip/lib/tooltip/tooltip.module.mjs +4 -6
  56. package/esm2022/topbar/lib/topbar/topbar.component.mjs +2 -2
  57. package/fesm2022/seniorsistemas-angular-components-accordion.mjs +1 -1
  58. package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
  59. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +9 -7
  60. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  61. package/fesm2022/seniorsistemas-angular-components-button.mjs +19 -7
  62. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  63. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +7 -4
  64. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
  65. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +1 -1
  66. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs.map +1 -1
  67. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +1 -1
  68. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  69. package/fesm2022/seniorsistemas-angular-components-dialog.mjs +8 -2
  70. package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -1
  71. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +11 -11
  72. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  73. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +1 -1
  74. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
  75. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +1 -1
  76. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  77. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +2 -2
  78. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  79. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +1 -1
  80. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
  81. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +1 -1
  82. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  83. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +2 -2
  84. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  85. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +2 -2
  86. package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
  87. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +1 -1
  88. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  89. package/fesm2022/seniorsistemas-angular-components-object-card.mjs +2 -2
  90. package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
  91. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +1 -1
  92. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  93. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +1 -1
  94. package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
  95. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +1 -1
  96. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  97. package/fesm2022/seniorsistemas-angular-components-select.mjs +133 -21
  98. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  99. package/fesm2022/seniorsistemas-angular-components-shared.mjs +354 -2
  100. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  101. package/fesm2022/seniorsistemas-angular-components-switch.mjs +18 -7
  102. package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
  103. package/fesm2022/seniorsistemas-angular-components-table.mjs +1 -1
  104. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  105. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +26 -8
  106. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  107. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +125 -254
  108. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
  109. package/fesm2022/seniorsistemas-angular-components-topbar.mjs +2 -2
  110. package/fesm2022/seniorsistemas-angular-components-topbar.mjs.map +1 -1
  111. package/fesm2022/seniorsistemas-angular-components.mjs +12 -1
  112. package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
  113. package/package.json +1 -1
  114. package/select/lib/select/select.component.d.ts +23 -2
  115. package/shared/lib/accessibility/paginator-accessibility.directive.d.ts +30 -0
  116. package/shared/lib/accessibility/table-checkbox-accessibility.directive.d.ts +46 -0
  117. package/shared/public-api.d.ts +7 -5
  118. package/switch/lib/switch/switch.component.d.ts +9 -5
  119. package/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +1 -0
  120. package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +4 -2
  121. package/tooltip/lib/tooltip/tooltip.component.d.ts +13 -7
  122. package/tooltip/lib/tooltip/tooltip.directive.d.ts +27 -40
  123. package/tooltip/lib/tooltip/tooltip.module.d.ts +3 -4
@@ -0,0 +1,182 @@
1
+ import { Directive } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@ngx-translate/core";
4
+ /**
5
+ * Diretiva para melhorar a acessibilidade dos botões do paginador PrimeNG
6
+ * Adiciona tabindex="0" aos botões habilitados e tabindex="-1" aos desabilitados
7
+ * Adiciona aria-labels traduzidos para os botões do paginador
8
+ */
9
+ export class PaginatorAccessibilityDirective {
10
+ el;
11
+ renderer;
12
+ translateService;
13
+ observer = null;
14
+ equalWebSpanMarker = 'data-equalweb-sr-only';
15
+ isObserverPaused = false;
16
+ observedPaginatorElement = null;
17
+ constructor(el, renderer, translateService) {
18
+ this.el = el;
19
+ this.renderer = renderer;
20
+ this.translateService = translateService;
21
+ }
22
+ ngOnInit() {
23
+ // Aguarda o próximo ciclo para garantir que o paginador foi renderizado
24
+ setTimeout(() => {
25
+ this.updatePaginatorButtons();
26
+ this.observePaginatorChanges();
27
+ });
28
+ }
29
+ ngOnDestroy() {
30
+ if (this.observer) {
31
+ this.observer.disconnect();
32
+ }
33
+ }
34
+ updatePaginatorButtons() {
35
+ const paginatorElement = this.el.nativeElement.querySelector('p-paginator');
36
+ if (!paginatorElement) {
37
+ return;
38
+ }
39
+ // Atualiza botões de navegação (first, prev, next, last)
40
+ const navigationSelectors = {
41
+ '.p-paginator-first': this.translateService.instant('platform.angular_components.aria_first_page'),
42
+ '.p-paginator-prev': this.translateService.instant('platform.angular_components.aria_previous_page'),
43
+ '.p-paginator-next': this.translateService.instant('platform.angular_components.aria_next_page'),
44
+ '.p-paginator-last': this.translateService.instant('platform.angular_components.aria_last_page'),
45
+ '.p-select-label': this.translateService.instant('platform.angular_components.aria_page_selection')
46
+ };
47
+ Object.entries(navigationSelectors).forEach(([selector, label]) => {
48
+ const button = paginatorElement.querySelector(selector);
49
+ if (button) {
50
+ const isDisabled = this.isButtonDisabled(button);
51
+ this.updateTabIndex(button, isDisabled);
52
+ if (isDisabled) {
53
+ this.renderer.removeAttribute(button, 'data-ind-readable');
54
+ }
55
+ else {
56
+ this.renderer.setAttribute(button, 'data-ind-readable', 'true');
57
+ }
58
+ this.renderer.setAttribute(button, 'aria-label', label);
59
+ this.applyEqualWebTextFix(button, label, isDisabled);
60
+ }
61
+ });
62
+ // Atualiza botões de página numérica
63
+ const pageButtons = paginatorElement.querySelectorAll('.p-paginator-page');
64
+ pageButtons.forEach((button) => {
65
+ const pageNumber = this.getPaginatorPageNumber(button);
66
+ if (pageNumber) {
67
+ const isDisabled = this.isButtonDisabled(button);
68
+ const isSelected = button.classList.contains('p-paginator-page-selected');
69
+ const ariaLabel = isSelected
70
+ ? this.translateService.instant('platform.angular_components.aria_current_page', { page: pageNumber })
71
+ : this.translateService.instant('platform.angular_components.aria_page_number', { page: pageNumber });
72
+ this.renderer.setAttribute(button, 'aria-label', ariaLabel);
73
+ this.updateTabIndex(button, isDisabled);
74
+ this.applyEqualWebTextFix(button, ariaLabel, isDisabled);
75
+ if (isSelected) {
76
+ this.renderer.setAttribute(button, 'aria-current', 'page');
77
+ }
78
+ else {
79
+ this.renderer.removeAttribute(button, 'aria-current');
80
+ }
81
+ }
82
+ });
83
+ }
84
+ isButtonDisabled(button) {
85
+ return button.hasAttribute('disabled') || button.classList.contains('p-disabled');
86
+ }
87
+ updateTabIndex(button, isDisabled) {
88
+ if (isDisabled) {
89
+ this.renderer.removeAttribute(button, 'tabindex');
90
+ return;
91
+ }
92
+ this.renderer.setAttribute(button, 'tabindex', '0');
93
+ }
94
+ getPaginatorPageNumber(button) {
95
+ const buttonElement = button;
96
+ // Evita pegar texto do span sr-only criado pela diretiva.
97
+ const visualLabel = buttonElement.querySelector(`span:not([${this.equalWebSpanMarker}])`);
98
+ const visualText = visualLabel?.textContent?.trim();
99
+ if (visualText) {
100
+ return visualText;
101
+ }
102
+ // Fallback para casos em que o PrimeNG renderiza sem span interno.
103
+ const srOnlyText = buttonElement.querySelector(`span[${this.equalWebSpanMarker}="true"]`)?.textContent?.trim() || '';
104
+ const fullText = buttonElement.textContent?.trim() || '';
105
+ return fullText.replace(srOnlyText, '').trim();
106
+ }
107
+ applyEqualWebTextFix(button, accessibleText, isDisabled) {
108
+ const buttonElement = button;
109
+ // Oculta spans visuais do PrimeNG para o script do EqualWeb.
110
+ const visualSpans = buttonElement.querySelectorAll(`span:not([${this.equalWebSpanMarker}])`);
111
+ visualSpans.forEach((span) => {
112
+ this.renderer.setAttribute(span, 'aria-hidden', 'true');
113
+ });
114
+ const existingSrOnly = buttonElement.querySelector(`span[${this.equalWebSpanMarker}="true"]`);
115
+ // Não mantém texto extra em botões desabilitados.
116
+ if (isDisabled) {
117
+ if (existingSrOnly) {
118
+ this.renderer.removeChild(buttonElement, existingSrOnly);
119
+ }
120
+ return;
121
+ }
122
+ if (existingSrOnly) {
123
+ this.renderer.removeAttribute(existingSrOnly, 'tabindex');
124
+ this.renderer.setProperty(existingSrOnly, 'textContent', accessibleText);
125
+ return;
126
+ }
127
+ const srOnlySpan = this.renderer.createElement('span');
128
+ this.renderer.addClass(srOnlySpan, 'sr-only');
129
+ this.renderer.setAttribute(srOnlySpan, this.equalWebSpanMarker, 'true');
130
+ this.renderer.removeAttribute(srOnlySpan, 'tabindex');
131
+ const srOnlyText = this.renderer.createText(accessibleText);
132
+ this.renderer.appendChild(srOnlySpan, srOnlyText);
133
+ this.renderer.appendChild(buttonElement, srOnlySpan);
134
+ }
135
+ observePaginatorChanges() {
136
+ const paginatorElement = this.el.nativeElement.querySelector('p-paginator');
137
+ if (!paginatorElement) {
138
+ return;
139
+ }
140
+ this.observedPaginatorElement = paginatorElement;
141
+ // Observa mudanças no paginador (quando botões são habilitados/desabilitados)
142
+ this.observer = new MutationObserver(() => {
143
+ this.updateWithObserverPaused();
144
+ });
145
+ this.startObserving();
146
+ }
147
+ updateWithObserverPaused() {
148
+ if (!this.observer || this.isObserverPaused) {
149
+ return;
150
+ }
151
+ this.isObserverPaused = true;
152
+ this.observer.disconnect();
153
+ try {
154
+ this.updatePaginatorButtons();
155
+ }
156
+ finally {
157
+ this.startObserving();
158
+ this.isObserverPaused = false;
159
+ }
160
+ }
161
+ startObserving() {
162
+ if (!this.observer || !this.observedPaginatorElement) {
163
+ return;
164
+ }
165
+ this.observer.observe(this.observedPaginatorElement, {
166
+ attributes: true,
167
+ childList: true,
168
+ subtree: true,
169
+ attributeFilter: ['disabled', 'class', 'tabindex']
170
+ });
171
+ }
172
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaginatorAccessibilityDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Directive });
173
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: PaginatorAccessibilityDirective, isStandalone: true, selector: "[sPaginatorAccessibility]", ngImport: i0 });
174
+ }
175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaginatorAccessibilityDirective, decorators: [{
176
+ type: Directive,
177
+ args: [{
178
+ selector: '[sPaginatorAccessibility]',
179
+ standalone: true
180
+ }]
181
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.TranslateService }] });
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLWFjY2Vzc2liaWxpdHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NoYXJlZC9zcmMvbGliL2FjY2Vzc2liaWxpdHkvcGFnaW5hdG9yLWFjY2Vzc2liaWxpdHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTRDLE1BQU0sZUFBZSxDQUFDOzs7QUFHcEY7Ozs7R0FJRztBQUtILE1BQU0sT0FBTywrQkFBK0I7SUFPdkI7SUFDQTtJQUNBO0lBUlgsUUFBUSxHQUE0QixJQUFJLENBQUM7SUFDaEMsa0JBQWtCLEdBQUcsdUJBQXVCLENBQUM7SUFDdEQsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLHdCQUF3QixHQUFtQixJQUFJLENBQUM7SUFFeEQsWUFDbUIsRUFBYyxFQUNkLFFBQW1CLEVBQ25CLGdCQUFrQztRQUZsQyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQ2xELENBQUM7SUFFSixRQUFRO1FBQ04sd0VBQXdFO1FBQ3hFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVLLHNCQUFzQjtRQUM1QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMs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Z0IsRUFBRSxDQUFDO1lBQzVDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRTNCLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2hDLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3JELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQ25ELFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsT0FBTyxFQUFFLElBQUk7WUFDYixlQUFlLEVBQUUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQztTQUNuRCxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQXpMVSwrQkFBK0I7NEZBQS9CLCtCQUErQjs7NEZBQS9CLCtCQUErQjtrQkFKM0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uSW5pdCwgUmVuZGVyZXIyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuLyoqXG4gKiBEaXJldGl2YSBwYXJhIG1lbGhvcmFyIGEgYWNlc3NpYmlsaWRhZGUgZG9zIGJvdMO1ZXMgZG8gcGFnaW5hZG9yIFByaW1lTkdcbiAqIEFkaWNpb25hIHRhYmluZGV4PVwiMFwiIGFvcyBib3TDtWVzIGhhYmlsaXRhZG9zIGUgdGFiaW5kZXg9XCItMVwiIGFvcyBkZXNhYmlsaXRhZG9zXG4gKiBBZGljaW9uYSBhcmlhLWxhYmVscyB0cmFkdXppZG9zIHBhcmEgb3MgYm90w7VlcyBkbyBwYWdpbmFkb3JcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NQYWdpbmF0b3JBY2Nlc3NpYmlsaXR5XScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdG9yQWNjZXNzaWJpbGl0eURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IGVxdWFsV2ViU3Bhbk1hcmtlciA9ICdkYXRhLWVxdWFsd2ViLXNyLW9ubHknO1xuICBwcml2YXRlIGlzT2JzZXJ2ZXJQYXVzZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBvYnNlcnZlZFBhZ2luYXRvckVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIEFndWFyZGEgbyBwcsOzeGltbyBjaWNsbyBwYXJhIGdhcmFudGlyIHF1ZSBvIHBhZ2luYWRvciBmb2kgcmVuZGVyaXphZG9cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlUGFnaW5hdG9yQnV0dG9ucygpO1xuICAgICAgdGhpcy5vYnNlcnZlUGFnaW5hdG9yQ2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgfVxuICAgIH1cblxuICBwcml2YXRlIHVwZGF0ZVBhZ2luYXRvckJ1dHRvbnMoKSB7XG4gICAgY29uc3QgcGFnaW5hdG9yRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdwLXBhZ2luYXRvcicpO1xuICAgIGlmICghcGFnaW5hdG9yRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEF0dWFsaXphIGJvdMO1ZXMgZGUgbmF2ZWdhw6fDo28gKGZpcnN0LCBwcmV2LCBuZXh0LCBsYXN0KVxuICAgIGNvbnN0IG5hdmlnYXRpb25TZWxlY3RvcnMgPSB7XG4gICAgICAnLnAtcGFnaW5hdG9yLWZpcnN0JzogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5hcmlhX2ZpcnN0X3BhZ2UnKSxcbiAgICAgICcucC1wYWdpbmF0b3ItcHJldic6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuYXJpYV9wcmV2aW91c19wYWdlJyksXG4gICAgICAnLnAtcGFnaW5hdG9yLW5leHQnOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmFyaWFfbmV4dF9wYWdlJyksXG4gICAgICAnLnAtcGFnaW5hdG9yLWxhc3QnOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmFyaWFfbGFzdF9wYWdlJyksXG4gICAgICAnLnAtc2VsZWN0LWxhYmVsJzogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5hcmlhX3BhZ2Vfc2VsZWN0aW9uJylcbiAgICB9O1xuXG4gICAgT2JqZWN0LmVudHJpZXMobmF2aWdhdGlvblNlbGVjdG9ycykuZm9yRWFjaCgoW3NlbGVjdG9yLCBsYWJlbF0pID0+IHtcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IHBhZ2luYXRvckVsZW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgICBpZiAoYnV0dG9uKSB7XG4gICAgICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLmlzQnV0dG9uRGlzYWJsZWQoYnV0dG9uKTtcbiAgICAgICAgdGhpcy51cGRhdGVUYWJJbmRleChidXR0b24sIGlzRGlzYWJsZWQpO1xuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKGJ1dHRvbiwgJ2RhdGEtaW5kLXJlYWRhYmxlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoYnV0dG9uLCAnZGF0YS1pbmQtcmVhZGFibGUnLCAndHJ1ZScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGJ1dHRvbiwgJ2FyaWEtbGFiZWwnLCBsYWJlbCk7XG4gICAgICAgIHRoaXMuYXBwbHlFcXVhbFdlYlRleHRGaXgoYnV0dG9uLCBsYWJlbCwgaXNEaXNhYmxlZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBBdHVhbGl6YSBib3TDtWVzIGRlIHDDoWdpbmEgbnVtw6lyaWNhXG4gICAgY29uc3QgcGFnZUJ1dHRvbnMgPSBwYWdpbmF0b3JFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wLXBhZ2luYXRvci1wYWdlJyk7XG4gICAgcGFnZUJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uOiBFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBwYWdlTnVtYmVyID0gdGhpcy5nZXRQYWdpbmF0b3JQYWdlTnVtYmVyKGJ1dHRvbik7XG4gICAgICBpZiAocGFnZU51bWJlcikge1xuICAgICAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5pc0J1dHRvbkRpc2FibGVkKGJ1dHRvbik7XG4gICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBidXR0b24uY2xhc3NMaXN0LmNvbnRhaW5zKCdwLXBhZ2luYXRvci1wYWdlLXNlbGVjdGVkJyk7XG4gICAgICAgIGNvbnN0IGFyaWFMYWJlbCA9IGlzU2VsZWN0ZWQgXG4gICAgICAgICAgPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmFyaWFfY3VycmVudF9wYWdlJywgeyBwYWdlOiBwYWdlTnVtYmVyIH0pXG4gICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmFyaWFfcGFnZV9udW1iZXInLCB7IHBhZ2U6IHBhZ2VOdW1iZXIgfSk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGJ1dHRvbiwgJ2FyaWEtbGFiZWwnLCBhcmlhTGFiZWwpO1xuICAgICAgICB0aGlzLnVwZGF0ZVRhYkluZGV4KGJ1dHRvbiwgaXNEaXNhYmxlZCk7XG4gICAgICAgIHRoaXMuYXBwbHlFcXVhbFdlYlRleHRGaXgoYnV0dG9uLCBhcmlhTGFiZWwsIGlzRGlzYWJsZWQpO1xuICAgICAgICBcbiAgICAgICAgaWYgKGlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShidXR0b24sICdhcmlhLWN1cnJlbnQnLCAncGFnZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKGJ1dHRvbiwgJ2FyaWEtY3VycmVudCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGlzQnV0dG9uRGlzYWJsZWQoYnV0dG9uOiBFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGJ1dHRvbi5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgfHwgYnV0dG9uLmNsYXNzTGlzdC5jb250YWlucygncC1kaXNhYmxlZCcpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUYWJJbmRleChidXR0b246IEVsZW1lbnQsIGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoYnV0dG9uLCAndGFiaW5kZXgnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShidXR0b24sICd0YWJpbmRleCcsICcwJyk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhZ2luYXRvclBhZ2VOdW1iZXIoYnV0dG9uOiBFbGVtZW50KTogc3RyaW5nIHtcbiAgICBjb25zdCBidXR0b25FbGVtZW50ID0gYnV0dG9uIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgLy8gRXZpdGEgcGVnYXIgdGV4dG8gZG8gc3BhbiBzci1vbmx5IGNyaWFkbyBwZWxhIGRpcmV0aXZhLlxuICAgIGNvbnN0IHZpc3VhbExhYmVsID0gYnV0dG9uRWxlbWVudC5xdWVyeVNlbGVjdG9yKGBzcGFuOm5vdChbJHt0aGlzLmVxdWFsV2ViU3Bhbk1hcmtlcn1dKWApO1xuICAgIGNvbnN0IHZpc3VhbFRleHQgPSB2aXN1YWxMYWJlbD8udGV4dENvbnRlbnQ/LnRyaW0oKTtcbiAgICBpZiAodmlzdWFsVGV4dCkge1xuICAgICAgcmV0dXJuIHZpc3VhbFRleHQ7XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2sgcGFyYSBjYXNvcyBlbSBxdWUgbyBQcmltZU5HIHJlbmRlcml6YSBzZW0gc3BhbiBpbnRlcm5vLlxuICAgIGNvbnN0IHNyT25seVRleHQgPSBidXR0b25FbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYHNwYW5bJHt0aGlzLmVxdWFsV2ViU3Bhbk1hcmtlcn09XCJ0cnVlXCJdYCk/LnRleHRDb250ZW50Py50cmltKCkgfHwgJyc7XG4gICAgY29uc3QgZnVsbFRleHQgPSBidXR0b25FbGVtZW50LnRleHRDb250ZW50Py50cmltKCkgfHwgJyc7XG4gICAgcmV0dXJuIGZ1bGxUZXh0LnJlcGxhY2Uoc3JPbmx5VGV4dCwgJycpLnRyaW0oKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlFcXVhbFdlYlRleHRGaXgoYnV0dG9uOiBFbGVtZW50LCBhY2Nlc3NpYmxlVGV4dDogc3RyaW5nLCBpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgY29uc3QgYnV0dG9uRWxlbWVudCA9IGJ1dHRvbiBhcyBIVE1MRWxlbWVudDtcblxuICAgIC8vIE9jdWx0YSBzcGFucyB2aXN1YWlzIGRvIFByaW1lTkcgcGFyYSBvIHNjcmlwdCBkbyBFcXVhbFdlYi5cbiAgICBjb25zdCB2aXN1YWxTcGFucyA9IGJ1dHRvbkVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChgc3Bhbjpub3QoWyR7dGhpcy5lcXVhbFdlYlNwYW5NYXJrZXJ9XSlgKTtcbiAgICB2aXN1YWxTcGFucy5mb3JFYWNoKChzcGFuOiBFbGVtZW50KSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShzcGFuLCAnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZXhpc3RpbmdTck9ubHkgPSBidXR0b25FbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYHNwYW5bJHt0aGlzLmVxdWFsV2ViU3Bhbk1hcmtlcn09XCJ0cnVlXCJdYCk7XG5cbiAgICAvLyBOw6NvIG1hbnTDqW0gdGV4dG8gZXh0cmEgZW0gYm90w7VlcyBkZXNhYmlsaXRhZG9zLlxuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICBpZiAoZXhpc3RpbmdTck9ubHkpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChidXR0b25FbGVtZW50LCBleGlzdGluZ1NyT25seSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV4aXN0aW5nU3JPbmx5KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShleGlzdGluZ1NyT25seSwgJ3RhYmluZGV4Jyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KGV4aXN0aW5nU3JPbmx5LCAndGV4dENvbnRlbnQnLCBhY2Nlc3NpYmxlVGV4dCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3JPbmx5U3BhbiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3Moc3JPbmx5U3BhbiwgJ3NyLW9ubHknKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShzck9ubHlTcGFuLCB0aGlzLmVxdWFsV2ViU3Bhbk1hcmtlciwgJ3RydWUnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShzck9ubHlTcGFuLCAndGFiaW5kZXgnKTtcbiAgICBjb25zdCBzck9ubHlUZXh0ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KGFjY2Vzc2libGVUZXh0KTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHNyT25seVNwYW4sIHNyT25seVRleHQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoYnV0dG9uRWxlbWVudCwgc3JPbmx5U3Bhbik7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVQYWdpbmF0b3JDaGFuZ2VzKCkge1xuICAgIGNvbnN0IHBhZ2luYXRvckVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigncC1wYWdpbmF0b3InKTtcbiAgICBpZiAoIXBhZ2luYXRvckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9ic2VydmVkUGFnaW5hdG9yRWxlbWVudCA9IHBhZ2luYXRvckVsZW1lbnQ7XG5cbiAgICAvLyBPYnNlcnZhIG11ZGFuw6dhcyBubyBwYWdpbmFkb3IgKHF1YW5kbyBib3TDtWVzIHPDo28gaGFiaWxpdGFkb3MvZGVzYWJpbGl0YWRvcylcbiAgICB0aGlzLm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVXaXRoT2JzZXJ2ZXJQYXVzZWQoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3RhcnRPYnNlcnZpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlV2l0aE9ic2VydmVyUGF1c2VkKCkge1xuICAgIGlmICghdGhpcy5vYnNlcnZlciB8fCB0aGlzLmlzT2JzZXJ2ZXJQYXVzZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzT2JzZXJ2ZXJQYXVzZWQgPSB0cnVlO1xuICAgIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudXBkYXRlUGFnaW5hdG9yQnV0dG9ucygpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnN0YXJ0T2JzZXJ2aW5nKCk7XG4gICAgICB0aGlzLmlzT2JzZXJ2ZXJQYXVzZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0T2JzZXJ2aW5nKCkge1xuICAgIGlmICghdGhpcy5vYnNlcnZlciB8fCAhdGhpcy5vYnNlcnZlZFBhZ2luYXRvckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy5vYnNlcnZlZFBhZ2luYXRvckVsZW1lbnQsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ2Rpc2FibGVkJywgJ2NsYXNzJywgJ3RhYmluZGV4J11cbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,174 @@
1
+ import { Directive } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Diretiva para corrigir a acessibilidade de checkboxes em tabelas PrimeNG.
5
+ *
6
+ * Propaga o `aria-label` dos custom elements wrapper (`p-tablecheckbox` e
7
+ * `p-tableheadercheckbox`) para os `<input type="checkbox">` internos e
8
+ * remove o atributo do wrapper, eliminando as violações WCAG 4.1.2:
9
+ * - `label` (crítica): input sem nome acessível
10
+ * - `aria-prohibited-attr` (séria): aria-label em custom element sem role ARIA
11
+ *
12
+ * Remove também o `aria-label` do `p-checkbox` intermediário e monitora
13
+ * mutations de atributo para re-aplicar o label correto caso o binding
14
+ * interno do PrimeNG sobrescreva o valor no input via change detection.
15
+ *
16
+ * Utiliza MutationObserver para tratar linhas adicionadas dinamicamente
17
+ * (paginação, lazy loading).
18
+ *
19
+ * Uso: `<p-table sTableCheckboxAccessibility ...>`
20
+ */
21
+ export class TableCheckboxAccessibilityDirective {
22
+ el;
23
+ childListObserver = null;
24
+ attributeObserver = null;
25
+ isChildListPaused = false;
26
+ isAttributePaused = false;
27
+ observedElements = [];
28
+ inputLabelMap = new Map();
29
+ static CHECKBOX_SELECTOR = 'p-tablecheckbox, p-tableheadercheckbox';
30
+ static INNER_CHECKBOX_SELECTOR = 'p-checkbox';
31
+ static INPUT_SELECTOR = 'input[type="checkbox"]';
32
+ static ARIA_LABEL_ATTR = 'aria-label';
33
+ constructor(el) {
34
+ this.el = el;
35
+ }
36
+ ngOnInit() {
37
+ setTimeout(() => {
38
+ this.updateCheckboxLabels();
39
+ this.observeTableChanges();
40
+ });
41
+ }
42
+ ngOnDestroy() {
43
+ this.childListObserver?.disconnect();
44
+ this.attributeObserver?.disconnect();
45
+ this.inputLabelMap.clear();
46
+ }
47
+ updateCheckboxLabels() {
48
+ const host = this.el.nativeElement;
49
+ const checkboxWrappers = host.querySelectorAll(TableCheckboxAccessibilityDirective.CHECKBOX_SELECTOR);
50
+ checkboxWrappers.forEach((wrapper) => {
51
+ const wrapperAriaLabel = wrapper.getAttribute(TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR);
52
+ if (!wrapperAriaLabel?.trim()) {
53
+ return;
54
+ }
55
+ const input = wrapper.querySelector(TableCheckboxAccessibilityDirective.INPUT_SELECTOR);
56
+ if (!input) {
57
+ return;
58
+ }
59
+ this.applyLabelToInput(input, wrapperAriaLabel);
60
+ wrapper.removeAttribute(TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR);
61
+ this.removeInnerCheckboxAriaLabel(wrapper);
62
+ });
63
+ }
64
+ applyLabelToInput(input, label) {
65
+ this.inputLabelMap.set(input, label);
66
+ input.setAttribute(TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR, label);
67
+ }
68
+ removeInnerCheckboxAriaLabel(wrapper) {
69
+ const innerCheckbox = wrapper.querySelector(TableCheckboxAccessibilityDirective.INNER_CHECKBOX_SELECTOR);
70
+ if (innerCheckbox) {
71
+ innerCheckbox.removeAttribute(TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR);
72
+ }
73
+ }
74
+ observeTableChanges() {
75
+ const host = this.el.nativeElement;
76
+ const tbody = host.querySelector('tbody');
77
+ const thead = host.querySelector('thead');
78
+ if (tbody) {
79
+ this.observedElements.push(tbody);
80
+ }
81
+ if (thead) {
82
+ this.observedElements.push(thead);
83
+ }
84
+ if (this.observedElements.length === 0) {
85
+ return;
86
+ }
87
+ this.childListObserver = new MutationObserver(() => {
88
+ this.handleChildListMutation();
89
+ });
90
+ this.attributeObserver = new MutationObserver((mutations) => {
91
+ this.handleAttributeMutations(mutations);
92
+ });
93
+ this.startObserving();
94
+ }
95
+ handleAttributeMutations(mutations) {
96
+ if (this.isAttributePaused) {
97
+ return;
98
+ }
99
+ this.isAttributePaused = true;
100
+ try {
101
+ mutations
102
+ .filter((m) => m.attributeName === TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR)
103
+ .forEach((mutation) => {
104
+ const target = mutation.target;
105
+ const tagName = target.tagName?.toLowerCase();
106
+ if (tagName === 'p-checkbox') {
107
+ target.removeAttribute(TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR);
108
+ }
109
+ else if (tagName === 'input') {
110
+ this.enforceInputLabel(target);
111
+ }
112
+ else {
113
+ // Outros elementos não precisam de tratamento
114
+ }
115
+ });
116
+ }
117
+ finally {
118
+ this.isAttributePaused = false;
119
+ }
120
+ }
121
+ enforceInputLabel(input) {
122
+ const correctLabel = this.inputLabelMap.get(input);
123
+ if (!correctLabel) {
124
+ return;
125
+ }
126
+ const currentLabel = input.getAttribute(TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR);
127
+ if (currentLabel !== correctLabel) {
128
+ input.setAttribute(TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR, correctLabel);
129
+ }
130
+ }
131
+ handleChildListMutation() {
132
+ if (!this.childListObserver || this.isChildListPaused) {
133
+ return;
134
+ }
135
+ this.isChildListPaused = true;
136
+ this.childListObserver.disconnect();
137
+ try {
138
+ this.updateCheckboxLabels();
139
+ }
140
+ finally {
141
+ this.startObserving();
142
+ this.isChildListPaused = false;
143
+ }
144
+ }
145
+ startObserving() {
146
+ const { childListObserver, attributeObserver, observedElements } = this;
147
+ if (!childListObserver) {
148
+ return;
149
+ }
150
+ observedElements.forEach((element) => {
151
+ childListObserver.observe(element, {
152
+ childList: true,
153
+ subtree: true,
154
+ });
155
+ if (attributeObserver) {
156
+ attributeObserver.observe(element, {
157
+ attributes: true,
158
+ subtree: true,
159
+ attributeFilter: [TableCheckboxAccessibilityDirective.ARIA_LABEL_ATTR],
160
+ });
161
+ }
162
+ });
163
+ }
164
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableCheckboxAccessibilityDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
165
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: TableCheckboxAccessibilityDirective, isStandalone: true, selector: "[sTableCheckboxAccessibility]", ngImport: i0 });
166
+ }
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableCheckboxAccessibilityDirective, decorators: [{
168
+ type: Directive,
169
+ args: [{
170
+ selector: '[sTableCheckboxAccessibility]',
171
+ standalone: true,
172
+ }]
173
+ }], ctorParameters: () => [{ type: i0.ElementRef }] });
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2hlY2tib3gtYWNjZXNzaWJpbGl0eS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc2hhcmVkL3NyYy9saWIvYWNjZXNzaWJpbGl0eS90YWJsZS1jaGVja2JveC1hY2Nlc3NpYmlsaXR5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFpQyxNQUFNLGVBQWUsQ0FBQzs7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBS0gsTUFBTSxPQUFPLG1DQUFtQztJQWFmO0lBWnJCLGlCQUFpQixHQUE0QixJQUFJLENBQUM7SUFDbEQsaUJBQWlCLEdBQTRCLElBQUksQ0FBQztJQUNsRCxpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDMUIsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLGdCQUFnQixHQUFjLEVBQUUsQ0FBQztJQUNqQyxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7SUFFcEQsTUFBTSxDQUFVLGlCQUFpQixHQUFHLHdDQUF3QyxDQUFDO0lBQzdFLE1BQU0sQ0FBVSx1QkFBdUIsR0FBRyxZQUFZLENBQUM7SUFDdkQsTUFBTSxDQUFVLGNBQWMsR0FBRyx3QkFBd0IsQ0FBQztJQUMxRCxNQUFNLENBQVUsZUFBZSxHQUFHLFlBQVksQ0FBQztJQUV2RCxZQUE2QixFQUEyQjtRQUEzQixPQUFFLEdBQUYsRUFBRSxDQUF5QjtJQUFHLENBQUM7SUFFNUQsUUFBUTtRQUNKLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxDQUFDO1FB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QUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0FwS1EsbUNBQW1DOzRGQUFuQyxtQ0FBbUM7OzRGQUFuQyxtQ0FBbUM7a0JBSi9DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLCtCQUErQjtvQkFDekMsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIERpcmV0aXZhIHBhcmEgY29ycmlnaXIgYSBhY2Vzc2liaWxpZGFkZSBkZSBjaGVja2JveGVzIGVtIHRhYmVsYXMgUHJpbWVORy5cbiAqXG4gKiBQcm9wYWdhIG8gYGFyaWEtbGFiZWxgIGRvcyBjdXN0b20gZWxlbWVudHMgd3JhcHBlciAoYHAtdGFibGVjaGVja2JveGAgZVxuICogYHAtdGFibGVoZWFkZXJjaGVja2JveGApIHBhcmEgb3MgYDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIj5gIGludGVybm9zIGVcbiAqIHJlbW92ZSBvIGF0cmlidXRvIGRvIHdyYXBwZXIsIGVsaW1pbmFuZG8gYXMgdmlvbGHDp8O1ZXMgV0NBRyA0LjEuMjpcbiAqIC0gYGxhYmVsYCAoY3LDrXRpY2EpOiBpbnB1dCBzZW0gbm9tZSBhY2Vzc8OtdmVsXG4gKiAtIGBhcmlhLXByb2hpYml0ZWQtYXR0cmAgKHPDqXJpYSk6IGFyaWEtbGFiZWwgZW0gY3VzdG9tIGVsZW1lbnQgc2VtIHJvbGUgQVJJQVxuICpcbiAqIFJlbW92ZSB0YW1iw6ltIG8gYGFyaWEtbGFiZWxgIGRvIGBwLWNoZWNrYm94YCBpbnRlcm1lZGnDoXJpbyBlIG1vbml0b3JhXG4gKiBtdXRhdGlvbnMgZGUgYXRyaWJ1dG8gcGFyYSByZS1hcGxpY2FyIG8gbGFiZWwgY29ycmV0byBjYXNvIG8gYmluZGluZ1xuICogaW50ZXJubyBkbyBQcmltZU5HIHNvYnJlc2NyZXZhIG8gdmFsb3Igbm8gaW5wdXQgdmlhIGNoYW5nZSBkZXRlY3Rpb24uXG4gKlxuICogVXRpbGl6YSBNdXRhdGlvbk9ic2VydmVyIHBhcmEgdHJhdGFyIGxpbmhhcyBhZGljaW9uYWRhcyBkaW5hbWljYW1lbnRlXG4gKiAocGFnaW5hw6fDo28sIGxhenkgbG9hZGluZykuXG4gKlxuICogVXNvOiBgPHAtdGFibGUgc1RhYmxlQ2hlY2tib3hBY2Nlc3NpYmlsaXR5IC4uLj5gXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3NUYWJsZUNoZWNrYm94QWNjZXNzaWJpbGl0eV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ2hlY2tib3hBY2Nlc3NpYmlsaXR5RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgY2hpbGRMaXN0T2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIGF0dHJpYnV0ZU9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBpc0NoaWxkTGlzdFBhdXNlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgaXNBdHRyaWJ1dGVQYXVzZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9ic2VydmVkRWxlbWVudHM6IEVsZW1lbnRbXSA9IFtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRMYWJlbE1hcCA9IG5ldyBNYXA8RWxlbWVudCwgc3RyaW5nPigpO1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQ0hFQ0tCT1hfU0VMRUNUT1IgPSAncC10YWJsZWNoZWNrYm94LCBwLXRhYmxlaGVhZGVyY2hlY2tib3gnO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IElOTkVSX0NIRUNLQk9YX1NFTEVDVE9SID0gJ3AtY2hlY2tib3gnO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IElOUFVUX1NFTEVDVE9SID0gJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXSc7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVJJQV9MQUJFTF9BVFRSID0gJ2FyaWEtbGFiZWwnO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBlbDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNoZWNrYm94TGFiZWxzKCk7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmVUYWJsZUNoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2hpbGRMaXN0T2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgICB0aGlzLmlucHV0TGFiZWxNYXAuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUNoZWNrYm94TGFiZWxzKCkge1xuICAgICAgICBjb25zdCBob3N0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBjaGVja2JveFdyYXBwZXJzID0gaG9zdC5xdWVyeVNlbGVjdG9yQWxsKFRhYmxlQ2hlY2tib3hBY2Nlc3NpYmlsaXR5RGlyZWN0aXZlLkNIRUNLQk9YX1NFTEVDVE9SKTtcblxuICAgICAgICBjaGVja2JveFdyYXBwZXJzLmZvckVhY2goKHdyYXBwZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHdyYXBwZXJBcmlhTGFiZWwgPSB3cmFwcGVyLmdldEF0dHJpYnV0ZShUYWJsZUNoZWNrYm94QWNjZXNzaWJpbGl0eURpcmVjdGl2ZS5BUklBX0xBQkVMX0FUVFIpO1xuICAgICAgICAgICAgaWYgKCF3cmFwcGVyQXJpYUxhYmVsPy50cmltKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gd3JhcHBlci5xdWVyeVNlbGVjdG9yKFRhYmxlQ2hlY2tib3hBY2Nlc3NpYmlsaXR5RGlyZWN0aXZlLklOUFVUX1NFTEVDVE9SKTtcbiAgICAgICAgICAgIGlmICghaW5wdXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuYXBwbHlMYWJlbFRvSW5wdXQoaW5wdXQsIHdyYXBwZXJBcmlhTGFiZWwpO1xuICAgICAgICAgICAgd3JhcHBlci5yZW1vdmVBdHRyaWJ1dGUoVGFibGVDaGVja2JveEFjY2Vzc2liaWxpdHlEaXJlY3RpdmUuQVJJQV9MQUJFTF9BVFRSKTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlSW5uZXJDaGVja2JveEFyaWFMYWJlbCh3cmFwcGVyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseUxhYmVsVG9JbnB1dChpbnB1dDogRWxlbWVudCwgbGFiZWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLmlucHV0TGFiZWxNYXAuc2V0KGlucHV0LCBsYWJlbCk7XG4gICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZShUYWJsZUNoZWNrYm94QWNjZXNzaWJpbGl0eURpcmVjdGl2ZS5BUklBX0xBQkVMX0FUVFIsIGxhYmVsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZUlubmVyQ2hlY2tib3hBcmlhTGFiZWwod3JhcHBlcjogRWxlbWVudCkge1xuICAgICAgICBjb25zdCBpbm5lckNoZWNrYm94ID0gd3JhcHBlci5xdWVyeVNlbGVjdG9yKFRhYmxlQ2hlY2tib3hBY2Nlc3NpYmlsaXR5RGlyZWN0aXZlLklOTkVSX0NIRUNLQk9YX1NFTEVDVE9SKTtcbiAgICAgICAgaWYgKGlubmVyQ2hlY2tib3gpIHtcbiAgICAgICAgICAgIGlubmVyQ2hlY2tib3gucmVtb3ZlQXR0cmlidXRlKFRhYmxlQ2hlY2tib3hBY2Nlc3NpYmlsaXR5RGlyZWN0aXZlLkFSSUFfTEFCRUxfQVRUUik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9ic2VydmVUYWJsZUNoYW5nZXMoKSB7XG4gICAgICAgIGNvbnN0IGhvc3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHRib2R5ID0gaG9zdC5xdWVyeVNlbGVjdG9yKCd0Ym9keScpO1xuICAgICAgICBjb25zdCB0aGVhZCA9IGhvc3QucXVlcnlTZWxlY3RvcigndGhlYWQnKTtcblxuICAgICAgICBpZiAodGJvZHkpIHtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZWRFbGVtZW50cy5wdXNoKHRib2R5KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhlYWQpIHtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZWRFbGVtZW50cy5wdXNoKHRoZWFkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9ic2VydmVkRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoaWxkTGlzdE9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGlsZExpc3RNdXRhdGlvbigpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmF0dHJpYnV0ZU9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVBdHRyaWJ1dGVNdXRhdGlvbnMobXV0YXRpb25zKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zdGFydE9ic2VydmluZygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQXR0cmlidXRlTXV0YXRpb25zKG11dGF0aW9uczogTXV0YXRpb25SZWNvcmRbXSkge1xuICAgICAgICBpZiAodGhpcy5pc0F0dHJpYnV0ZVBhdXNlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0F0dHJpYnV0ZVBhdXNlZCA9IHRydWU7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG11dGF0aW9uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKG0pID0+IG0uYXR0cmlidXRlTmFtZSA9PT0gVGFibGVDaGVja2JveEFjY2Vzc2liaWxpdHlEaXJlY3RpdmUuQVJJQV9MQUJFTF9BVFRSKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChtdXRhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBtdXRhdGlvbi50YXJnZXQgYXMgRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFnTmFtZSA9IHRhcmdldC50YWdOYW1lPy50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0YWdOYW1lID09PSAncC1jaGVja2JveCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5yZW1vdmVBdHRyaWJ1dGUoVGFibGVDaGVja2JveEFjY2Vzc2liaWxpdHlEaXJlY3RpdmUuQVJJQV9MQUJFTF9BVFRSKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0YWdOYW1lID09PSAnaW5wdXQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVuZm9yY2VJbnB1dExhYmVsKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBPdXRyb3MgZWxlbWVudG9zIG7Do28gcHJlY2lzYW0gZGUgdHJhdGFtZW50b1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLmlzQXR0cmlidXRlUGF1c2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGVuZm9yY2VJbnB1dExhYmVsKGlucHV0OiBFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGNvcnJlY3RMYWJlbCA9IHRoaXMuaW5wdXRMYWJlbE1hcC5nZXQoaW5wdXQpO1xuICAgICAgICBpZiAoIWNvcnJlY3RMYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudExhYmVsID0gaW5wdXQuZ2V0QXR0cmlidXRlKFRhYmxlQ2hlY2tib3hBY2Nlc3NpYmlsaXR5RGlyZWN0aXZlLkFSSUFfTEFCRUxfQVRUUik7XG4gICAgICAgIGlmIChjdXJyZW50TGFiZWwgIT09IGNvcnJlY3RMYWJlbCkge1xuICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKFRhYmxlQ2hlY2tib3hBY2Nlc3NpYmlsaXR5RGlyZWN0aXZlLkFSSUFfTEFCRUxfQVRUUiwgY29ycmVjdExhYmVsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ2hpbGRMaXN0TXV0YXRpb24oKSB7XG4gICAgICAgIGlmICghdGhpcy5jaGlsZExpc3RPYnNlcnZlciB8fCB0aGlzLmlzQ2hpbGRMaXN0UGF1c2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzQ2hpbGRMaXN0UGF1c2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jaGlsZExpc3RPYnNlcnZlci5kaXNjb25uZWN0KCk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hlY2tib3hMYWJlbHMoKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRPYnNlcnZpbmcoKTtcbiAgICAgICAgICAgIHRoaXMuaXNDaGlsZExpc3RQYXVzZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhcnRPYnNlcnZpbmcoKSB7XG4gICAgICAgIGNvbnN0IHsgY2hpbGRMaXN0T2JzZXJ2ZXIsIGF0dHJpYnV0ZU9ic2VydmVyLCBvYnNlcnZlZEVsZW1lbnRzIH0gPSB0aGlzO1xuXG4gICAgICAgIGlmICghY2hpbGRMaXN0T2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG9ic2VydmVkRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgY2hpbGRMaXN0T2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZU9ic2VydmVyKSB7XG4gICAgICAgICAgICAgICAgYXR0cmlidXRlT2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUZpbHRlcjogW1RhYmxlQ2hlY2tib3hBY2Nlc3NpYmlsaXR5RGlyZWN0aXZlLkFSSUFfTEFCRUxfQVRUUl0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,5 +1,7 @@
1
- export { EnumSeverity } from "./lib/shared/models/severities";
2
- export { BorderButtonComponent } from "./lib/shared/border-button/border-button.component";
3
- export { BorderButtonModule } from "./lib/shared/border-button/border-button.module";
1
+ export { EnumSeverity } from './lib/shared/models/severities';
2
+ export { BorderButtonComponent } from './lib/shared/border-button/border-button.component';
3
+ export { BorderButtonModule } from './lib/shared/border-button/border-button.module';
4
4
  export * from './lib/shared/helpers';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zaGFyZWQvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLGNBQWMsc0JBQXNCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7IEJvcmRlckJ1dHRvbk9wdGlvbnMgfSBmcm9tIFwiLi9saWIvc2hhcmVkL21vZGVscy9ib3JkZXItYnV0dG9uLW9wdGlvbnNcIjtcbmV4cG9ydCB0eXBlIHsgU2V2ZXJpdGllcyB9IGZyb20gXCIuL2xpYi9zaGFyZWQvbW9kZWxzL3NldmVyaXRpZXNcIjtcbmV4cG9ydCB7IEVudW1TZXZlcml0eSB9IGZyb20gXCIuL2xpYi9zaGFyZWQvbW9kZWxzL3NldmVyaXRpZXNcIjtcbmV4cG9ydCB7IEJvcmRlckJ1dHRvbkNvbXBvbmVudCB9IGZyb20gXCIuL2xpYi9zaGFyZWQvYm9yZGVyLWJ1dHRvbi9ib3JkZXItYnV0dG9uLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgQm9yZGVyQnV0dG9uTW9kdWxlIH0gZnJvbSBcIi4vbGliL3NoYXJlZC9ib3JkZXItYnV0dG9uL2JvcmRlci1idXR0b24ubW9kdWxlXCI7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvaGVscGVycydcbiJdfQ==
5
+ export { PaginatorAccessibilityDirective } from './lib/accessibility/paginator-accessibility.directive';
6
+ export { TableCheckboxAccessibilityDirective } from './lib/accessibility/table-checkbox-accessibility.directive';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zaGFyZWQvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDeEcsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sNERBQTRELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7IEJvcmRlckJ1dHRvbk9wdGlvbnMgfSBmcm9tICcuL2xpYi9zaGFyZWQvbW9kZWxzL2JvcmRlci1idXR0b24tb3B0aW9ucyc7XG5leHBvcnQgdHlwZSB7IFNldmVyaXRpZXMgfSBmcm9tICcuL2xpYi9zaGFyZWQvbW9kZWxzL3NldmVyaXRpZXMnO1xuZXhwb3J0IHsgRW51bVNldmVyaXR5IH0gZnJvbSAnLi9saWIvc2hhcmVkL21vZGVscy9zZXZlcml0aWVzJztcbmV4cG9ydCB7IEJvcmRlckJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vbGliL3NoYXJlZC9ib3JkZXItYnV0dG9uL2JvcmRlci1idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCB7IEJvcmRlckJ1dHRvbk1vZHVsZSB9IGZyb20gJy4vbGliL3NoYXJlZC9ib3JkZXItYnV0dG9uL2JvcmRlci1idXR0b24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9oZWxwZXJzJztcbmV4cG9ydCB7IFBhZ2luYXRvckFjY2Vzc2liaWxpdHlEaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9hY2Nlc3NpYmlsaXR5L3BhZ2luYXRvci1hY2Nlc3NpYmlsaXR5LmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBUYWJsZUNoZWNrYm94QWNjZXNzaWJpbGl0eURpcmVjdGl2ZSB9IGZyb20gJy4vbGliL2FjY2Vzc2liaWxpdHkvdGFibGUtY2hlY2tib3gtYWNjZXNzaWJpbGl0eS5kaXJlY3RpdmUnO1xuXG4iXX0=
@@ -17,12 +17,14 @@ import * as i1 from "@angular/common";
17
17
  export class SwitchComponent {
18
18
  /** @description Impede alterações pelo usuário sem desabilitar o campo. @default false */
19
19
  readonly = false;
20
- /** @description Rótulo exibido quando o valor é `true`. */
21
- trueLabel;
22
- /** @description Rótulo exibido quando o valor é `false`. */
23
- falseLabel;
20
+ /** @description Rótulo exibido quando o valor é `true`. @default 'Ligado' */
21
+ trueLabel = 'Ligado';
22
+ /** @description Rótulo exibido quando o valor é `false`. @default 'Desligado' */
23
+ falseLabel = 'Desligado';
24
24
  /** @description `id` do elemento `<input>` interno para associação com `<label>`. */
25
25
  inputId;
26
+ /** @description Nome acessível descritivo do switch para tecnologias assistivas (aria-label). */
27
+ label;
26
28
  /** @description Atributo `name` do `<input>` interno. */
27
29
  inputName;
28
30
  /** @description Desabilita o componente, impedindo interação e alterações. @default false */
@@ -31,6 +33,8 @@ export class SwitchComponent {
31
33
  valueChanged = new EventEmitter();
32
34
  /** @description Valor atual do switch. @default false */
33
35
  value = false;
36
+ /** @description Controla se deve ou não exibir o value do componente. @default true */
37
+ showStatusLabel = true;
34
38
  switchRef;
35
39
  _onChange;
36
40
  _onTouched;
@@ -57,6 +61,9 @@ export class SwitchComponent {
57
61
  this.disabled = disabled;
58
62
  }
59
63
  toggleCheck() {
64
+ if (this.readonly) {
65
+ return;
66
+ }
60
67
  this.value = !this.value;
61
68
  this.valueChanged.emit(this.value);
62
69
  if (this._onChange) {
@@ -67,13 +74,13 @@ export class SwitchComponent {
67
74
  }
68
75
  }
69
76
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
70
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SwitchComponent, selector: "s-switch", inputs: { readonly: "readonly", trueLabel: "trueLabel", falseLabel: "falseLabel", inputId: "inputId", inputName: "inputName", disabled: "disabled", value: "value" }, outputs: { valueChanged: "valueChanged" }, host: { listeners: { "focusin": "onFocusIn()", "focusout": "onFocusOut()" } }, providers: [
77
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SwitchComponent, selector: "s-switch", inputs: { readonly: "readonly", trueLabel: "trueLabel", falseLabel: "falseLabel", inputId: "inputId", label: "label", inputName: "inputName", disabled: "disabled", value: "value", showStatusLabel: "showStatusLabel" }, outputs: { valueChanged: "valueChanged" }, host: { listeners: { "focusin": "onFocusIn()", "focusout": "onFocusOut()" } }, providers: [
71
78
  {
72
79
  provide: NG_VALUE_ACCESSOR,
73
80
  useExisting: forwardRef(() => SwitchComponent),
74
81
  multi: true,
75
82
  },
76
- ], viewQueries: [{ propertyName: "switchRef", first: true, predicate: ["switch"], descendants: true, static: true }], ngImport: i0, template: "<div\n #switch\n class=\"switch\"\n [ngClass]=\"{ 'switch--disabled': disabled }\"\n>\n <label class=\"switch-toggle\">\n <input\n #input\n [id]=\"inputId\"\n [name]=\"inputName\"\n type=\"checkbox\"\n [checked]=\"value\"\n [disabled]=\"readonly || disabled\"\n (change)=\"toggleCheck()\"\n />\n <span class=\"slider\"></span>\n </label>\n <span class=\"label\">\n {{ value ? trueLabel : falseLabel }}\n </span>\n</div>\n", styles: [".switch{display:inline-flex;align-items:center}.switch .switch-toggle{display:inline-block;height:24px;margin:0;position:relative;width:40px}.switch .switch-toggle input{height:0;opacity:0;width:0}.switch .switch-toggle input:checked+.slider{background-color:#428bca;border-radius:15px}.switch .switch-toggle input:checked+.slider:before{transform:translate(16px)}.switch .switch-toggle .slider{background-color:#a5a5b2;border-radius:15px;cursor:pointer;inset:0;position:absolute;transition:.4s}.switch .switch-toggle .slider:before{background-color:#fff;border-radius:50%;bottom:4px;content:\"\";height:16px;left:4px;position:absolute;transition:.4s;width:16px}.switch .label{color:#212533;font-family:\"Open Sans\" sans-serif;font-size:.875rem;font-weight:400;line-height:150%;margin-left:12px}.switch--disabled{opacity:.5}.switch--focus .switch-toggle .slider{box-shadow:0 0 0 2px #428bca80}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
83
+ ], viewQueries: [{ propertyName: "switchRef", first: true, predicate: ["switch"], descendants: true, static: true }], ngImport: i0, template: "<div\n #switch\n class=\"switch\"\n [ngClass]=\"{ 'switch--disabled': disabled }\"\n [attr.aria-disabled]=\"disabled || null\"\n>\n <label class=\"switch-toggle\">\n <input\n #input\n [id]=\"inputId\"\n [name]=\"inputName\"\n type=\"checkbox\"\n role=\"switch\"\n [attr.aria-checked]=\"value\"\n [attr.aria-label]=\"label || null\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-readonly]=\"readonly || null\"\n (change)=\"toggleCheck()\"\n />\n <span\n class=\"slider\"\n aria-hidden=\"true\"\n ></span>\n </label>\n @if (showStatusLabel) {\n <span class=\"label\">{{ value ? trueLabel : falseLabel }}</span>\n }\n</div>\n\n", styles: [".switch{display:inline-flex;align-items:center}.switch .switch-toggle{display:inline-block;height:24px;margin:0;position:relative;width:40px}.switch .switch-toggle input{height:0;opacity:0;width:0}.switch .switch-toggle input:focus-visible+.slider{box-shadow:0 0 0 2px #000;outline:2px solid #000;outline-offset:1px}.switch .switch-toggle input:checked+.slider{background-color:#428bca;border-radius:15px}.switch .switch-toggle input:checked+.slider:before{transform:translate(16px)}.switch .switch-toggle .slider{background-color:#a5a5b2;border-radius:15px;cursor:pointer;inset:0;position:absolute;transition:.4s}.switch .switch-toggle .slider:before{background-color:#fff;border-radius:50%;bottom:4px;content:\"\";height:16px;left:4px;position:absolute;transition:.4s;width:16px}.switch .label{color:#212533;font-family:\"Open Sans\" sans-serif;font-size:.875rem;font-weight:400;line-height:150%;margin-left:12px}.switch .label.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.switch--disabled{opacity:.5}.switch--focus .switch-toggle .slider{box-shadow:0 0 0 2px #428bca80}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
77
84
  }
78
85
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SwitchComponent, decorators: [{
79
86
  type: Component,
@@ -83,7 +90,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
83
90
  useExisting: forwardRef(() => SwitchComponent),
84
91
  multi: true,
85
92
  },
86
- ], template: "<div\n #switch\n class=\"switch\"\n [ngClass]=\"{ 'switch--disabled': disabled }\"\n>\n <label class=\"switch-toggle\">\n <input\n #input\n [id]=\"inputId\"\n [name]=\"inputName\"\n type=\"checkbox\"\n [checked]=\"value\"\n [disabled]=\"readonly || disabled\"\n (change)=\"toggleCheck()\"\n />\n <span class=\"slider\"></span>\n </label>\n <span class=\"label\">\n {{ value ? trueLabel : falseLabel }}\n </span>\n</div>\n", styles: [".switch{display:inline-flex;align-items:center}.switch .switch-toggle{display:inline-block;height:24px;margin:0;position:relative;width:40px}.switch .switch-toggle input{height:0;opacity:0;width:0}.switch .switch-toggle input:checked+.slider{background-color:#428bca;border-radius:15px}.switch .switch-toggle input:checked+.slider:before{transform:translate(16px)}.switch .switch-toggle .slider{background-color:#a5a5b2;border-radius:15px;cursor:pointer;inset:0;position:absolute;transition:.4s}.switch .switch-toggle .slider:before{background-color:#fff;border-radius:50%;bottom:4px;content:\"\";height:16px;left:4px;position:absolute;transition:.4s;width:16px}.switch .label{color:#212533;font-family:\"Open Sans\" sans-serif;font-size:.875rem;font-weight:400;line-height:150%;margin-left:12px}.switch--disabled{opacity:.5}.switch--focus .switch-toggle .slider{box-shadow:0 0 0 2px #428bca80}\n"] }]
93
+ ], template: "<div\n #switch\n class=\"switch\"\n [ngClass]=\"{ 'switch--disabled': disabled }\"\n [attr.aria-disabled]=\"disabled || null\"\n>\n <label class=\"switch-toggle\">\n <input\n #input\n [id]=\"inputId\"\n [name]=\"inputName\"\n type=\"checkbox\"\n role=\"switch\"\n [attr.aria-checked]=\"value\"\n [attr.aria-label]=\"label || null\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-readonly]=\"readonly || null\"\n (change)=\"toggleCheck()\"\n />\n <span\n class=\"slider\"\n aria-hidden=\"true\"\n ></span>\n </label>\n @if (showStatusLabel) {\n <span class=\"label\">{{ value ? trueLabel : falseLabel }}</span>\n }\n</div>\n\n", styles: [".switch{display:inline-flex;align-items:center}.switch .switch-toggle{display:inline-block;height:24px;margin:0;position:relative;width:40px}.switch .switch-toggle input{height:0;opacity:0;width:0}.switch .switch-toggle input:focus-visible+.slider{box-shadow:0 0 0 2px #000;outline:2px solid #000;outline-offset:1px}.switch .switch-toggle input:checked+.slider{background-color:#428bca;border-radius:15px}.switch .switch-toggle input:checked+.slider:before{transform:translate(16px)}.switch .switch-toggle .slider{background-color:#a5a5b2;border-radius:15px;cursor:pointer;inset:0;position:absolute;transition:.4s}.switch .switch-toggle .slider:before{background-color:#fff;border-radius:50%;bottom:4px;content:\"\";height:16px;left:4px;position:absolute;transition:.4s;width:16px}.switch .label{color:#212533;font-family:\"Open Sans\" sans-serif;font-size:.875rem;font-weight:400;line-height:150%;margin-left:12px}.switch .label.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.switch--disabled{opacity:.5}.switch--focus .switch-toggle .slider{box-shadow:0 0 0 2px #428bca80}\n"] }]
87
94
  }], propDecorators: { readonly: [{
88
95
  type: Input
89
96
  }], trueLabel: [{
@@ -92,6 +99,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
92
99
  type: Input
93
100
  }], inputId: [{
94
101
  type: Input
102
+ }], label: [{
103
+ type: Input
95
104
  }], inputName: [{
96
105
  type: Input
97
106
  }], disabled: [{
@@ -100,6 +109,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
100
109
  type: Output
101
110
  }], value: [{
102
111
  type: Input
112
+ }], showStatusLabel: [{
113
+ type: Input
103
114
  }], switchRef: [{
104
115
  type: ViewChild,
105
116
  args: ['switch', { static: true }]
@@ -110,4 +121,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
110
121
  type: HostListener,
111
122
  args: ['focusout']
112
123
  }] } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zd2l0Y2gvc3JjL2xpYi9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zd2l0Y2gvc3JjL2xpYi9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFekU7Ozs7Ozs7Ozs7O0dBV0c7QUFhSCxNQUFNLE9BQU8sZUFBZTtJQUN4QiwwRkFBMEY7SUFFbkYsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV4QiwyREFBMkQ7SUFFcEQsU0FBUyxDQUFVO0lBRTFCLDREQUE0RDtJQUVyRCxVQUFVLENBQVU7SUFFM0IscUZBQXFGO0lBRTlFLE9BQU8sQ0FBVTtJQUV4Qix5REFBeUQ7SUFFbEQsU0FBUyxDQUFVO0lBRTFCLDZGQUE2RjtJQUV0RixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRXhCLHNGQUFzRjtJQUUvRSxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUVsRCx5REFBeUQ7SUFFbEQsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUdkLFNBQVMsQ0FBYztJQUV0QixTQUFTLENBQTRCO0lBQ3JDLFVBQVUsQ0FBNEI7SUFHdkMsU0FBUztRQUNaLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBK0IsQ0FBQztRQUNyRSxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBR00sVUFBVTtRQUNiLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBK0IsQ0FBQztRQUNyRSxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQWM7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDO0lBQ0wsQ0FBQztJQUVNLGdCQUFnQixDQUFDLFFBQWtDO1FBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxTQUFtQztRQUN4RCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sZ0JBQWdCLENBQUUsUUFBaUI7UUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDN0IsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDTCxDQUFDO3dHQWhGUSxlQUFlOzRGQUFmLGVBQWUsbVVBUmI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFDOUMsS0FBSyxFQUFFLElBQUk7YUFDZDtTQUNKLDZJQ3pCTCxxaUJBcUJBOzs0RkRNYSxlQUFlO2tCQVozQixTQUFTOytCQUNJLFVBQVUsYUFHVDt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQzs0QkFDOUMsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7OEJBS00sUUFBUTtzQkFEZCxLQUFLO2dCQUtDLFNBQVM7c0JBRGYsS0FBSztnQkFLQyxVQUFVO3NCQURoQixLQUFLO2dCQUtDLE9BQU87c0JBRGIsS0FBSztnQkFLQyxTQUFTO3NCQURmLEtBQUs7Z0JBS0MsUUFBUTtzQkFEZCxLQUFLO2dCQUtDLFlBQVk7c0JBRGxCLE1BQU07Z0JBS0EsS0FBSztzQkFEWCxLQUFLO2dCQUlDLFNBQVM7c0JBRGYsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU85QixTQUFTO3NCQURmLFlBQVk7dUJBQUMsU0FBUztnQkFPaEIsVUFBVTtzQkFEaEIsWUFBWTt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgY2hhdmUgdGlwbyBzd2l0Y2ggKGxpZ2EvZGVzbGlnYSkgcXVlIGltcGxlbWVudGFcbiAqIGBDb250cm9sVmFsdWVBY2Nlc3NvcmAgcGFyYSB1c28gZW0gZm9ybXVsw6FyaW9zIEFuZ3VsYXIuIFN1cG9ydGEgcsOzdHVsb3NcbiAqIHBlcnNvbmFsaXphZG9zIHBhcmEgb3MgZXN0YWRvcyB2ZXJkYWRlaXJvIGUgZmFsc28sIGFsw6ltIGRlIG1vZG8gc29tZW50ZSBsZWl0dXJhLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8cy1zd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwiYXRpdm9cIiB0cnVlTGFiZWw9XCJBdGl2b1wiIGZhbHNlTGFiZWw9XCJJbmF0aXZvXCIgLz5cbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBJbnB1dHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLXN3aXRjaCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3N3aXRjaC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3dpdGNoLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU3dpdGNoQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFN3aXRjaENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEltcGVkZSBhbHRlcmHDp8O1ZXMgcGVsbyB1c3XDoXJpbyBzZW0gZGVzYWJpbGl0YXIgbyBjYW1wby4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSA9IGZhbHNlO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSw7N0dWxvIGV4aWJpZG8gcXVhbmRvIG8gdmFsb3Igw6kgYHRydWVgLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRydWVMYWJlbD86IHN0cmluZztcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gUsOzdHVsbyBleGliaWRvIHF1YW5kbyBvIHZhbG9yIMOpIGBmYWxzZWAuICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmFsc2VMYWJlbD86IHN0cmluZztcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gYGlkYCBkbyBlbGVtZW50byBgPGlucHV0PmAgaW50ZXJubyBwYXJhIGFzc29jaWHDp8OjbyBjb20gYDxsYWJlbD5gLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlucHV0SWQ/OiBzdHJpbmc7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEF0cmlidXRvIGBuYW1lYCBkbyBgPGlucHV0PmAgaW50ZXJuby4gKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpbnB1dE5hbWU/OiBzdHJpbmc7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIERlc2FiaWxpdGEgbyBjb21wb25lbnRlLCBpbXBlZGluZG8gaW50ZXJhw6fDo28gZSBhbHRlcmHDp8O1ZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyB2YWxvciBkbyBzd2l0Y2ggbXVkYSwgY29tIG8gbm92byBlc3RhZG8gYm9vbGVhbm8uICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gVmFsb3IgYXR1YWwgZG8gc3dpdGNoLiBAZGVmYXVsdCBmYWxzZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlID0gZmFsc2U7XG5cbiAgICBAVmlld0NoaWxkKCdzd2l0Y2gnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBzd2l0Y2hSZWYhOiBFbGVtZW50UmVmO1xuXG4gICAgcHJpdmF0ZSBfb25DaGFuZ2U/OiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSBfb25Ub3VjaGVkPzogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXNpbicpXG4gICAgcHVibGljIG9uRm9jdXNJbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3dpdGNoRWxlbWVudCA9IHRoaXMuc3dpdGNoUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgIHN3aXRjaEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnc3dpdGNoLS1mb2N1cycpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JylcbiAgICBwdWJsaWMgb25Gb2N1c091dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3dpdGNoRWxlbWVudCA9IHRoaXMuc3dpdGNoUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgIHN3aXRjaEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnc3dpdGNoLS1mb2N1cycpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkNoYW5nZSA9IG9uQ2hhbmdlO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGU/KGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlQ2hlY2soKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSAhdGhpcy52YWx1ZTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdCh0aGlzLnZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy5fb25DaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX29uVG91Y2hlZCkge1xuICAgICAgICAgICAgdGhpcy5fb25Ub3VjaGVkKHRoaXMudmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4iLCI8ZGl2XG4gICAgI3N3aXRjaFxuICAgIGNsYXNzPVwic3dpdGNoXCJcbiAgICBbbmdDbGFzc109XCJ7ICdzd2l0Y2gtLWRpc2FibGVkJzogZGlzYWJsZWQgfVwiXG4+XG4gICAgPGxhYmVsIGNsYXNzPVwic3dpdGNoLXRvZ2dsZVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgW25hbWVdPVwiaW5wdXROYW1lXCJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJ2YWx1ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHkgfHwgZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVDaGVjaygpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzbGlkZXJcIj48L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+XG4gICAgICAgIHt7IHZhbHVlID8gdHJ1ZUxhYmVsIDogZmFsc2VMYWJlbCB9fVxuICAgIDwvc3Bhbj5cbjwvZGl2PlxuIl19
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zd2l0Y2gvc3JjL2xpYi9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zd2l0Y2gvc3JjL2xpYi9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFekU7Ozs7Ozs7Ozs7O0dBV0c7QUFhSCxNQUFNLE9BQU8sZUFBZTtJQUN4QiwwRkFBMEY7SUFFbkYsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV4Qiw2RUFBNkU7SUFFdEUsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUU1QixpRkFBaUY7SUFFMUUsVUFBVSxHQUFHLFdBQVcsQ0FBQztJQUVoQyxxRkFBcUY7SUFFOUUsT0FBTyxDQUFVO0lBQ3hCLGlHQUFpRztJQUUxRixLQUFLLENBQVU7SUFFdEIseURBQXlEO0lBRWxELFNBQVMsQ0FBVTtJQUUxQiw2RkFBNkY7SUFFdEYsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV4QixzRkFBc0Y7SUFFL0UsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUFFbEQseURBQXlEO0lBRWxELEtBQUssR0FBRyxLQUFLLENBQUM7SUFFckIsdUZBQXVGO0lBRWhGLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFHdkIsU0FBUyxDQUFjO0lBRXRCLFNBQVMsQ0FBNEI7SUFDckMsVUFBVSxDQUE0QjtJQUd2QyxTQUFTO1FBQ1osTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUErQixDQUFDO1FBQ3JFLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFHTSxVQUFVO1FBQ2IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUErQixDQUFDO1FBQ3JFLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxVQUFVLENBQUMsS0FBYztRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7SUFDTCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsUUFBa0M7UUFDdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDOUIsQ0FBQztJQUVNLGlCQUFpQixDQUFDLFNBQW1DO1FBQ3hELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBRSxRQUFpQjtRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5DLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0wsQ0FBQzt3R0ExRlEsZUFBZTs0RkFBZixlQUFlLHVYQVJiO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7Z0JBQzlDLEtBQUssRUFBRSxJQUFJO2FBQ2Q7U0FDSiw2SUN6QkwsMjBCQThCQTs7NEZESGEsZUFBZTtrQkFaM0IsU0FBUzsrQkFDSSxVQUFVLGFBR1Q7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7NEJBQzlDLEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzhCQUtNLFFBQVE7c0JBRGQsS0FBSztnQkFLQyxTQUFTO3NCQURmLEtBQUs7Z0JBS0MsVUFBVTtzQkFEaEIsS0FBSztnQkFLQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsS0FBSztzQkFEWCxLQUFLO2dCQUtDLFNBQVM7c0JBRGYsS0FBSztnQkFLQyxRQUFRO3NCQURkLEtBQUs7Z0JBS0MsWUFBWTtzQkFEbEIsTUFBTTtnQkFLQSxLQUFLO3NCQURYLEtBQUs7Z0JBS0MsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxTQUFTO3NCQURmLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFPOUIsU0FBUztzQkFEZixZQUFZO3VCQUFDLFNBQVM7Z0JBT2hCLFVBQVU7c0JBRGhCLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIGRlIGNoYXZlIHRpcG8gc3dpdGNoIChsaWdhL2Rlc2xpZ2EpIHF1ZSBpbXBsZW1lbnRhXG4gKiBgQ29udHJvbFZhbHVlQWNjZXNzb3JgIHBhcmEgdXNvIGVtIGZvcm11bMOhcmlvcyBBbmd1bGFyLiBTdXBvcnRhIHLDs3R1bG9zXG4gKiBwZXJzb25hbGl6YWRvcyBwYXJhIG9zIGVzdGFkb3MgdmVyZGFkZWlybyBlIGZhbHNvLCBhbMOpbSBkZSBtb2RvIHNvbWVudGUgbGVpdHVyYS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHMtc3dpdGNoIGZvcm1Db250cm9sTmFtZT1cImF0aXZvXCIgdHJ1ZUxhYmVsPVwiQXRpdm9cIiBmYWxzZUxhYmVsPVwiSW5hdGl2b1wiIC8+XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgSW5wdXRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncy1zd2l0Y2gnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zd2l0Y2guY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N3aXRjaC5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFN3aXRjaENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTd2l0Y2hDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbXBlZGUgYWx0ZXJhw6fDtWVzIHBlbG8gdXN1w6FyaW8gc2VtIGRlc2FiaWxpdGFyIG8gY2FtcG8uIEBkZWZhdWx0IGZhbHNlICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gUsOzdHVsbyBleGliaWRvIHF1YW5kbyBvIHZhbG9yIMOpIGB0cnVlYC4gQGRlZmF1bHQgJ0xpZ2FkbycgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0cnVlTGFiZWwgPSAnTGlnYWRvJztcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gUsOzdHVsbyBleGliaWRvIHF1YW5kbyBvIHZhbG9yIMOpIGBmYWxzZWAuIEBkZWZhdWx0ICdEZXNsaWdhZG8nICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmFsc2VMYWJlbCA9ICdEZXNsaWdhZG8nO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBgaWRgIGRvIGVsZW1lbnRvIGA8aW5wdXQ+YCBpbnRlcm5vIHBhcmEgYXNzb2NpYcOnw6NvIGNvbSBgPGxhYmVsPmAuICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaW5wdXRJZD86IHN0cmluZztcbiAgICAvKiogQGRlc2NyaXB0aW9uIE5vbWUgYWNlc3PDrXZlbCBkZXNjcml0aXZvIGRvIHN3aXRjaCBwYXJhIHRlY25vbG9naWFzIGFzc2lzdGl2YXMgKGFyaWEtbGFiZWwpLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxhYmVsPzogc3RyaW5nO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBdHJpYnV0byBgbmFtZWAgZG8gYDxpbnB1dD5gIGludGVybm8uICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaW5wdXROYW1lPzogc3RyaW5nO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZXNhYmlsaXRhIG8gY29tcG9uZW50ZSwgaW1wZWRpbmRvIGludGVyYcOnw6NvIGUgYWx0ZXJhw6fDtWVzLiBAZGVmYXVsdCBmYWxzZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdmFsb3IgZG8gc3dpdGNoIG11ZGEsIGNvbSBvIG5vdm8gZXN0YWRvIGJvb2xlYW5vLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIFZhbG9yIGF0dWFsIGRvIHN3aXRjaC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWx1ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb250cm9sYSBzZSBkZXZlIG91IG7Do28gZXhpYmlyIG8gdmFsdWUgZG8gY29tcG9uZW50ZS4gQGRlZmF1bHQgdHJ1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dTdGF0dXNMYWJlbCA9IHRydWU7XG5cbiAgICBAVmlld0NoaWxkKCdzd2l0Y2gnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBzd2l0Y2hSZWYhOiBFbGVtZW50UmVmO1xuXG4gICAgcHJpdmF0ZSBfb25DaGFuZ2U/OiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSBfb25Ub3VjaGVkPzogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXNpbicpXG4gICAgcHVibGljIG9uRm9jdXNJbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3dpdGNoRWxlbWVudCA9IHRoaXMuc3dpdGNoUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgIHN3aXRjaEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnc3dpdGNoLS1mb2N1cycpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JylcbiAgICBwdWJsaWMgb25Gb2N1c091dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3dpdGNoRWxlbWVudCA9IHRoaXMuc3dpdGNoUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgIHN3aXRjaEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnc3dpdGNoLS1mb2N1cycpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkNoYW5nZSA9IG9uQ2hhbmdlO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGU/KGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlQ2hlY2soKSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWx1ZSA9ICF0aGlzLnZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZC5lbWl0KHRoaXMudmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLl9vbkNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fb25Ub3VjaGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9vblRvdWNoZWQodGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiIsIjxkaXZcbiAgICAjc3dpdGNoXG4gICAgY2xhc3M9XCJzd2l0Y2hcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3N3aXRjaC0tZGlzYWJsZWQnOiBkaXNhYmxlZCB9XCJcbiAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkIHx8IG51bGxcIlxuPlxuICAgIDxsYWJlbCBjbGFzcz1cInN3aXRjaC10b2dnbGVcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgIFtuYW1lXT1cImlucHV0TmFtZVwiXG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgcm9sZT1cInN3aXRjaFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwidmFsdWVcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbCB8fCBudWxsXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInZhbHVlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXJlYWRvbmx5XT1cInJlYWRvbmx5IHx8IG51bGxcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVDaGVjaygpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwic2xpZGVyXCJcbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID48L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgICBAaWYgKHNob3dTdGF0dXNMYWJlbCkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+e3sgdmFsdWUgPyB0cnVlTGFiZWwgOiBmYWxzZUxhYmVsIH19PC9zcGFuPlxuICAgIH1cbjwvZGl2PlxuXG4iXX0=
@@ -295,7 +295,7 @@ export class TablePagingComponent {
295
295
  return tableData;
296
296
  }
297
297
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TablePagingComponent, deps: [{ token: i1.TranslateService }, { token: HostProjectConfigsInjectionToken }], target: i0.ɵɵFactoryTarget.Component });
298
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TablePagingComponent, selector: "s-table-paging", inputs: { totalRecords: "totalRecords", exportFileName: "exportFileName", table: "table", exportable: "exportable", enableExportSelectedRecords: "enableExportSelectedRecords", customActions: "customActions", loadAllRecords: "loadAllRecords", loadCurrentPageRecords: "loadCurrentPageRecords", loadSelectedRecords: "loadSelectedRecords" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"paging-container\">\n <span class=\"total-records\">\n {{ totalRecordsText }}\n </span>\n @if (exportable) {\n <s-button\n class=\"export-button\"\n priority=\"default\"\n iconClass=\"fa fa-fw fa-file-export\"\n [disabled]=\"false\"\n [auxiliary]=\"true\"\n [tooltip]=\"getTooltipText()\"\n [menuOptions]=\"getActions()\"\n >\n </s-button>\n }\n</div>\n", styles: [".paging-container{display:flex;align-items:center}.export-button{margin-left:6px}\n"], dependencies: [{ kind: "component", type: i2.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "menuAriaLabel", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }] });
298
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TablePagingComponent, selector: "s-table-paging", inputs: { totalRecords: "totalRecords", exportFileName: "exportFileName", table: "table", exportable: "exportable", enableExportSelectedRecords: "enableExportSelectedRecords", customActions: "customActions", loadAllRecords: "loadAllRecords", loadCurrentPageRecords: "loadCurrentPageRecords", loadSelectedRecords: "loadSelectedRecords" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"paging-container\">\n <span class=\"total-records\">\n {{ totalRecordsText }}\n </span>\n @if (exportable) {\n <s-button\n class=\"export-button\"\n priority=\"default\"\n iconClass=\"fa fa-fw fa-file-export\"\n [disabled]=\"false\"\n [auxiliary]=\"true\"\n [tooltip]=\"getTooltipText()\"\n [menuOptions]=\"getActions()\"\n >\n </s-button>\n }\n</div>\n", styles: [".paging-container{display:flex;align-items:center}.export-button{margin-left:6px}\n"], dependencies: [{ kind: "component", type: i2.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor", "menuAriaLabel"], outputs: ["clicked"] }] });
299
299
  }
300
300
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TablePagingComponent, decorators: [{
301
301
  type: Component,