structra-ui 0.1.18 → 0.1.20

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 (150) hide show
  1. package/README.md +3 -4
  2. package/fesm2022/structra-ui.mjs +326 -326
  3. package/fesm2022/structra-ui.mjs.map +1 -1
  4. package/package.json +16 -25
  5. package/esm2022/app/_utils/date-pt-br.utils.mjs +0 -82
  6. package/esm2022/app/_utils/decimal-br.utils.mjs +0 -154
  7. package/esm2022/app/_utils/estados-br.data.mjs +0 -37
  8. package/esm2022/app/_utils/integer-br.utils.mjs +0 -48
  9. package/esm2022/app/_utils/integer-value.utils.mjs +0 -19
  10. package/esm2022/app/_utils/scroll/body-scroll-lock.util.mjs +0 -97
  11. package/esm2022/app/app-shell/_models/breadcrumb-item.model.mjs +0 -2
  12. package/esm2022/app/app-shell/app-shell-sidebar-template.directive.mjs +0 -29
  13. package/esm2022/app/app-shell/app-shell.component.mjs +0 -105
  14. package/esm2022/app/app-shell/breadcrumb/breadcrumb.component.mjs +0 -18
  15. package/esm2022/app/app-shell/index.mjs +0 -19
  16. package/esm2022/app/app-shell/sidebar/app-sidebar-toolbar.directive.mjs +0 -23
  17. package/esm2022/app/app-shell/sidebar/shell-sidebar-toggle.component.mjs +0 -36
  18. package/esm2022/app/app-shell/sidebar/sidebar.component.mjs +0 -84
  19. package/esm2022/app/app-shell/sidebar-reveal.constants.mjs +0 -9
  20. package/esm2022/app/app-shell/topbar/topbar.component.mjs +0 -14
  21. package/esm2022/app/app-shell/user-menu/user-menu.component.mjs +0 -52
  22. package/esm2022/app/buttons/base-button/base-button.component.mjs +0 -97
  23. package/esm2022/app/buttons/index.mjs +0 -2
  24. package/esm2022/app/data-display/_models/card-item-view.model.mjs +0 -2
  25. package/esm2022/app/data-display/_models/data-display.models.mjs +0 -2
  26. package/esm2022/app/data-display/_models/data-grid-column.model.mjs +0 -2
  27. package/esm2022/app/data-display/_models/index.mjs +0 -2
  28. package/esm2022/app/data-display/adaptive-data-view/adaptive-data-view.component.mjs +0 -124
  29. package/esm2022/app/data-display/card-list/card-list.component.mjs +0 -208
  30. package/esm2022/app/data-display/dashboard-section/dashboard-section.component.mjs +0 -25
  31. package/esm2022/app/data-display/data-card/data-card.component.mjs +0 -40
  32. package/esm2022/app/data-display/data-grid/data-grid-actions-cell-renderer.component.mjs +0 -41
  33. package/esm2022/app/data-display/data-grid/data-grid.component.mjs +0 -253
  34. package/esm2022/app/data-display/data-list/data-list.component.mjs +0 -40
  35. package/esm2022/app/data-display/data-toolbar/data-toolbar.component.mjs +0 -12
  36. package/esm2022/app/data-display/details-field/details-field.component.mjs +0 -21
  37. package/esm2022/app/data-display/details-view/details-view.component.mjs +0 -44
  38. package/esm2022/app/data-display/empty-state/empty-state-overlay.util.mjs +0 -19
  39. package/esm2022/app/data-display/empty-state/empty-state.component.mjs +0 -30
  40. package/esm2022/app/data-display/index.mjs +0 -19
  41. package/esm2022/app/data-display/list-item/list-item.component.mjs +0 -59
  42. package/esm2022/app/data-display/stat-card/stat-card.component.mjs +0 -59
  43. package/esm2022/app/data-display/status-badge/status-badge.component.mjs +0 -41
  44. package/esm2022/app/data-display/table-empty-state/table-empty-state.component.mjs +0 -31
  45. package/esm2022/app/data-display/table-toolbar/table-toolbar.component.mjs +0 -22
  46. package/esm2022/app/dialogs/_models/lib-dialog-size.model.mjs +0 -8
  47. package/esm2022/app/dialogs/_utils/app-lib-light-block-scroll-strategy.mjs +0 -22
  48. package/esm2022/app/dialogs/_utils/lib-dialog-panel-classes.mjs +0 -6
  49. package/esm2022/app/dialogs/app-dialog/app-dialog.component.mjs +0 -200
  50. package/esm2022/app/dialogs/app-dialog/dialog-footer.directive.mjs +0 -15
  51. package/esm2022/app/dialogs/confirm-dialog/confirm-dialog-data.model.mjs +0 -2
  52. package/esm2022/app/dialogs/confirm-dialog/confirm-dialog.component.mjs +0 -36
  53. package/esm2022/app/dialogs/confirm-dialog/confirm-dialog.service.mjs +0 -47
  54. package/esm2022/app/dialogs/index.mjs +0 -12
  55. package/esm2022/app/dialogs/loading-dialog/loading-dialog-data.model.mjs +0 -2
  56. package/esm2022/app/dialogs/loading-dialog/loading-dialog.component.mjs +0 -19
  57. package/esm2022/app/dialogs/loading-dialog/loading-dialog.service.mjs +0 -38
  58. package/esm2022/app/dialogs/toast/toast-host.component.mjs +0 -65
  59. package/esm2022/app/dialogs/toast/toast.models.mjs +0 -2
  60. package/esm2022/app/dialogs/toast/toast.service.mjs +0 -76
  61. package/esm2022/app/fields/checkbox-fields/_base/boolean-field.directive.mjs +0 -158
  62. package/esm2022/app/fields/checkbox-fields/checkbox-field/checkbox-field.component.mjs +0 -36
  63. package/esm2022/app/fields/checkbox-fields/index.mjs +0 -4
  64. package/esm2022/app/fields/checkbox-fields/switch-field/switch-field.component.mjs +0 -35
  65. package/esm2022/app/fields/dropdown-fields/_base/dropdown-base/dropdown-base.component.mjs +0 -117
  66. package/esm2022/app/fields/dropdown-fields/_base/dropdown-multi-option-field.base.mjs +0 -152
  67. package/esm2022/app/fields/dropdown-fields/_base/dropdown-option-field.base.mjs +0 -149
  68. package/esm2022/app/fields/dropdown-fields/_base/dropdown-trigger-blur.util.mjs +0 -32
  69. package/esm2022/app/fields/dropdown-fields/_models/dropdown-list-bindings.model.mjs +0 -2
  70. package/esm2022/app/fields/dropdown-fields/_models/dropdown-search-page-requested.model.mjs +0 -2
  71. package/esm2022/app/fields/dropdown-fields/_models/index.mjs +0 -2
  72. package/esm2022/app/fields/dropdown-fields/_models/select-option.model.mjs +0 -2
  73. package/esm2022/app/fields/dropdown-fields/_models/select-pagination.model.mjs +0 -2
  74. package/esm2022/app/fields/dropdown-fields/dropdown-search-field/dropdown-search-field.component.mjs +0 -520
  75. package/esm2022/app/fields/dropdown-fields/index.mjs +0 -7
  76. package/esm2022/app/fields/dropdown-fields/multiselect-field/multiselect-field.component.mjs +0 -379
  77. package/esm2022/app/fields/dropdown-fields/select-field/select-field.component.mjs +0 -359
  78. package/esm2022/app/fields/input-fields/_base/base-field.component.mjs +0 -151
  79. package/esm2022/app/fields/input-fields/_base/base-field.directive.mjs +0 -224
  80. package/esm2022/app/fields/input-fields/_base/masked-text-field.base.mjs +0 -135
  81. package/esm2022/app/fields/input-fields/_base/ng-control-field.directive.mjs +0 -127
  82. package/esm2022/app/fields/input-fields/_models/field-common-inputs.model.mjs +0 -2
  83. package/esm2022/app/fields/input-fields/_models/index.mjs +0 -2
  84. package/esm2022/app/fields/input-fields/_utils/mask-complete.validators.mjs +0 -61
  85. package/esm2022/app/fields/input-fields/_utils/mask-format.utils.mjs +0 -40
  86. package/esm2022/app/fields/input-fields/cep-field/cep-field.component.mjs +0 -48
  87. package/esm2022/app/fields/input-fields/cpf-cnpj-field/cpf-cnpj-field.component.mjs +0 -61
  88. package/esm2022/app/fields/input-fields/date-field/date-field.component.mjs +0 -147
  89. package/esm2022/app/fields/input-fields/decimal-field/decimal-field.component.mjs +0 -166
  90. package/esm2022/app/fields/input-fields/index.mjs +0 -22
  91. package/esm2022/app/fields/input-fields/input-mask-field/input-mask-field.component.mjs +0 -52
  92. package/esm2022/app/fields/input-fields/integer-field/integer-field.component.mjs +0 -143
  93. package/esm2022/app/fields/input-fields/password-field/password-field.component.mjs +0 -130
  94. package/esm2022/app/fields/input-fields/phone-field/phone-field.component.mjs +0 -66
  95. package/esm2022/app/fields/input-fields/text-field/text-field.component.mjs +0 -90
  96. package/esm2022/app/fields/input-fields/textarea-field/textarea-field.component.mjs +0 -125
  97. package/esm2022/app/form-layout/_models/form-layout.model.mjs +0 -48
  98. package/esm2022/app/form-layout/_models/form-tabs.model.mjs +0 -2
  99. package/esm2022/app/form-layout/_models/index.mjs +0 -2
  100. package/esm2022/app/form-layout/_models/validation-summary.model.mjs +0 -2
  101. package/esm2022/app/form-layout/form-actions/form-actions.component.mjs +0 -55
  102. package/esm2022/app/form-layout/form-col/form-col.component.mjs +0 -76
  103. package/esm2022/app/form-layout/form-group/form-group.component.mjs +0 -358
  104. package/esm2022/app/form-layout/form-group/form-path.utils.mjs +0 -65
  105. package/esm2022/app/form-layout/form-group/form-root-invalid-ui-refresh.util.mjs +0 -54
  106. package/esm2022/app/form-layout/form-row/form-row.component.mjs +0 -49
  107. package/esm2022/app/form-layout/form-section/form-section.component.mjs +0 -43
  108. package/esm2022/app/form-layout/form-tab/form-tab.component.mjs +0 -67
  109. package/esm2022/app/form-layout/form-tabs/form-tabs.component.mjs +0 -126
  110. package/esm2022/app/form-layout/index.mjs +0 -14
  111. package/esm2022/app/form-layout/layout-stack/layout-stack.component.mjs +0 -56
  112. package/esm2022/app/form-layout/validation-summary/validation-summary.component.mjs +0 -343
  113. package/esm2022/app/loading/skeleton-loading/index.mjs +0 -7
  114. package/esm2022/app/loading/skeleton-loading/skeleton-block/skeleton-block.component.mjs +0 -43
  115. package/esm2022/app/loading/skeleton-loading/skeleton-card/skeleton-card.component.mjs +0 -23
  116. package/esm2022/app/loading/skeleton-loading/skeleton-field-shell/skeleton-field-shell.component.mjs +0 -34
  117. package/esm2022/app/loading/skeleton-loading/skeleton-list/skeleton-list.component.mjs +0 -38
  118. package/esm2022/app/loading/skeleton-loading/skeleton-table/skeleton-table.component.mjs +0 -37
  119. package/esm2022/app/loading/skeleton-loading/skeleton-text/skeleton-text.component.mjs +0 -45
  120. package/esm2022/app/menus/_models/drawer-side.model.mjs +0 -8
  121. package/esm2022/app/menus/_models/drawer-size.model.mjs +0 -8
  122. package/esm2022/app/menus/_models/menu-dropdown-placement.model.mjs +0 -12
  123. package/esm2022/app/menus/_models/menu-item.model.mjs +0 -6
  124. package/esm2022/app/menus/_utils/menu-connected-positions.util.mjs +0 -41
  125. package/esm2022/app/menus/_utils/menu-rows.util.mjs +0 -39
  126. package/esm2022/app/menus/_utils/submenu-connected-positions.util.mjs +0 -23
  127. package/esm2022/app/menus/action-menu/action-menu.component.mjs +0 -48
  128. package/esm2022/app/menus/context-menu/context-menu.component.mjs +0 -112
  129. package/esm2022/app/menus/drawer/drawer.component.mjs +0 -142
  130. package/esm2022/app/menus/dropdown-menu/dropdown-menu.component.mjs +0 -99
  131. package/esm2022/app/menus/index.mjs +0 -11
  132. package/esm2022/app/menus/menu-divider/menu-divider.component.mjs +0 -14
  133. package/esm2022/app/menus/menu-group/menu-group.component.mjs +0 -32
  134. package/esm2022/app/menus/menu-list/menu-list.component.mjs +0 -399
  135. package/esm2022/app/overlay/_models/overlay-placement.model.mjs +0 -11
  136. package/esm2022/app/overlay/_utils/anchored-overlay-positions.util.mjs +0 -84
  137. package/esm2022/app/overlay/anchored-overlay/anchored-overlay.component.mjs +0 -121
  138. package/esm2022/app/overlay/index.mjs +0 -21
  139. package/esm2022/app/overlay/popover/popover-body-template.directive.mjs +0 -17
  140. package/esm2022/app/overlay/popover/popover-footer-template.directive.mjs +0 -17
  141. package/esm2022/app/overlay/popover/popover-trigger.directive.mjs +0 -15
  142. package/esm2022/app/overlay/popover/popover.component.mjs +0 -93
  143. package/esm2022/app/overlay/tooltip/tooltip-panel-template.directive.mjs +0 -20
  144. package/esm2022/app/overlay/tooltip/tooltip.component.mjs +0 -118
  145. package/esm2022/app/theme/app-theme.service.mjs +0 -49
  146. package/esm2022/app/theme/index.mjs +0 -2
  147. package/esm2022/structra-public-api.mjs +0 -18
  148. package/esm2022/structra-ui.mjs +0 -5
  149. package/esm2022/structra-version.mjs +0 -3
  150. package/index.d.ts +0 -5
@@ -44,10 +44,10 @@ class SkeletonBlockComponent {
44
44
  }
45
45
  return parts.join(' ');
46
46
  }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SkeletonBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: SkeletonBlockComponent, isStandalone: true, selector: "app-skeleton-block", inputs: { width: "width", height: "height", radius: "radius", animate: ["animate", "animate", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<span class=\"skeleton-block__inner\" aria-hidden=\"true\" [style.width]=\"width\" [style.height]=\"height\"\r\n [style.border-radius]=\"radius\"></span>\r\n", styles: ["@keyframes ui-skeleton-shimmer{to{transform:translate(100%)}}:host{display:block;min-width:0;box-sizing:border-box}.skeleton-block__inner{display:block;min-width:0;box-sizing:border-box}:host(.skeleton-block--animate) .skeleton-block__inner{position:relative;overflow:hidden;background:var(--app-color-skeleton-track, rgba(26, 47, 69, .09))}:host(.skeleton-block--animate) .skeleton-block__inner:after{content:\"\";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,var(--app-color-skeleton-shine, rgba(255, 255, 255, .22)),transparent);animation:ui-skeleton-shimmer 1.35s ease-in-out infinite}:host(.skeleton-block--static) .skeleton-block__inner{background:var(--app-color-skeleton-track-strong, rgba(26, 47, 69, .12))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: SkeletonBlockComponent, isStandalone: true, selector: "app-skeleton-block", inputs: { width: "width", height: "height", radius: "radius", animate: ["animate", "animate", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<span class=\"skeleton-block__inner\" aria-hidden=\"true\" [style.width]=\"width\" [style.height]=\"height\"\r\n [style.border-radius]=\"radius\"></span>\r\n", styles: ["@keyframes ui-skeleton-shimmer{to{transform:translate(100%)}}:host{display:block;min-width:0;box-sizing:border-box}.skeleton-block__inner{display:block;min-width:0;box-sizing:border-box}:host(.skeleton-block--animate) .skeleton-block__inner{position:relative;overflow:hidden;background:var(--app-color-skeleton-track, rgba(26, 47, 69, .09))}:host(.skeleton-block--animate) .skeleton-block__inner:after{content:\"\";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,var(--app-color-skeleton-shine, rgba(255, 255, 255, .22)),transparent);animation:ui-skeleton-shimmer 1.35s ease-in-out infinite}:host(.skeleton-block--static) .skeleton-block__inner{background:var(--app-color-skeleton-track-strong, rgba(26, 47, 69, .12))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
49
49
  }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SkeletonBlockComponent, decorators: [{
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonBlockComponent, decorators: [{
51
51
  type: Component,
52
52
  args: [{ selector: 'app-skeleton-block', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<span class=\"skeleton-block__inner\" aria-hidden=\"true\" [style.width]=\"width\" [style.height]=\"height\"\r\n [style.border-radius]=\"radius\"></span>\r\n", styles: ["@keyframes ui-skeleton-shimmer{to{transform:translate(100%)}}:host{display:block;min-width:0;box-sizing:border-box}.skeleton-block__inner{display:block;min-width:0;box-sizing:border-box}:host(.skeleton-block--animate) .skeleton-block__inner{position:relative;overflow:hidden;background:var(--app-color-skeleton-track, rgba(26, 47, 69, .09))}:host(.skeleton-block--animate) .skeleton-block__inner:after{content:\"\";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,var(--app-color-skeleton-shine, rgba(255, 255, 255, .22)),transparent);animation:ui-skeleton-shimmer 1.35s ease-in-out infinite}:host(.skeleton-block--static) .skeleton-block__inner{background:var(--app-color-skeleton-track-strong, rgba(26, 47, 69, .12))}\n"] }]
53
53
  }], propDecorators: { width: [{
@@ -85,12 +85,12 @@ class SkeletonTextComponent {
85
85
  }
86
86
  return '100%';
87
87
  }
88
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SkeletonTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
89
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SkeletonTextComponent, isStandalone: true, selector: "app-skeleton-text", inputs: { lines: ["lines", "lines", numberAttribute], lastLineWidthPct: ["lastLineWidthPct", "lastLineWidthPct", numberAttribute], lineHeight: "lineHeight", gap: "gap", animate: ["animate", "animate", booleanAttribute] }, ngImport: i0, template: "<div class=\"skeleton-text\" [style.gap]=\"gap\">\r\n @for (i of lineIndexes(); track i) {\r\n <app-skeleton-block [width]=\"widthForLine(i)\" [height]=\"lineHeight\" [animate]=\"animate\" />\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.skeleton-text{display:flex;flex-direction:column;width:100%;min-width:0}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
88
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
89
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SkeletonTextComponent, isStandalone: true, selector: "app-skeleton-text", inputs: { lines: ["lines", "lines", numberAttribute], lastLineWidthPct: ["lastLineWidthPct", "lastLineWidthPct", numberAttribute], lineHeight: "lineHeight", gap: "gap", animate: ["animate", "animate", booleanAttribute] }, ngImport: i0, template: "<div class=\"skeleton-text\" [style.gap]=\"gap\">\r\n @for (i of lineIndexes(); track i) {\r\n <app-skeleton-block [width]=\"widthForLine(i)\" [height]=\"lineHeight\" [animate]=\"animate\" />\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.skeleton-text{display:flex;flex-direction:column;width:100%;min-width:0}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
90
90
  }
91
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SkeletonTextComponent, decorators: [{
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonTextComponent, decorators: [{
92
92
  type: Component,
93
- args: [{ selector: 'app-skeleton-text', standalone: true, imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"skeleton-text\" [style.gap]=\"gap\">\r\n @for (i of lineIndexes(); track i) {\r\n <app-skeleton-block [width]=\"widthForLine(i)\" [height]=\"lineHeight\" [animate]=\"animate\" />\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.skeleton-text{display:flex;flex-direction:column;width:100%;min-width:0}\n"] }]
93
+ args: [{ selector: 'app-skeleton-text', imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"skeleton-text\" [style.gap]=\"gap\">\r\n @for (i of lineIndexes(); track i) {\r\n <app-skeleton-block [width]=\"widthForLine(i)\" [height]=\"lineHeight\" [animate]=\"animate\" />\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.skeleton-text{display:flex;flex-direction:column;width:100%;min-width:0}\n"] }]
94
94
  }], propDecorators: { lines: [{
95
95
  type: Input,
96
96
  args: [{ transform: numberAttribute }]
@@ -120,12 +120,12 @@ class SkeletonListComponent {
120
120
  rowIndexes() {
121
121
  return Array.from({ length: Math.max(1, this.rows) }, (_, i) => i);
122
122
  }
123
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SkeletonListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
124
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SkeletonListComponent, isStandalone: true, selector: "app-skeleton-list", inputs: { rows: ["rows", "rows", numberAttribute], leading: ["leading", "leading", booleanAttribute], rowGap: "rowGap", lineHeight: "lineHeight", animate: ["animate", "animate", booleanAttribute] }, ngImport: i0, template: "<div class=\"skeleton-list\" [style.gap]=\"rowGap\">\r\n @for (i of rowIndexes(); track i) {\r\n <div class=\"skeleton-list__row\">\r\n @if (leading) {\r\n <app-skeleton-block class=\"skeleton-list__dot\" width=\"1.5rem\" height=\"1.5rem\" radius=\"999px\"\r\n [animate]=\"animate\" />\r\n }\r\n <app-skeleton-block class=\"skeleton-list__line\" width=\"100%\" [height]=\"lineHeight\" radius=\"6px\"\r\n [animate]=\"animate\" />\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.skeleton-list{display:flex;flex-direction:column;width:100%;min-width:0;padding:.2rem 0;box-sizing:border-box}.skeleton-list__row{display:flex;align-items:center;gap:.55rem;min-width:0;min-height:2.45rem;padding:.4rem .75rem;box-sizing:border-box}.skeleton-list__line{flex:1 1 auto;min-width:0}.skeleton-list__dot{flex-shrink:0}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
123
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
124
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SkeletonListComponent, isStandalone: true, selector: "app-skeleton-list", inputs: { rows: ["rows", "rows", numberAttribute], leading: ["leading", "leading", booleanAttribute], rowGap: "rowGap", lineHeight: "lineHeight", animate: ["animate", "animate", booleanAttribute] }, ngImport: i0, template: "<div class=\"skeleton-list\" [style.gap]=\"rowGap\">\r\n @for (i of rowIndexes(); track i) {\r\n <div class=\"skeleton-list__row\">\r\n @if (leading) {\r\n <app-skeleton-block class=\"skeleton-list__dot\" width=\"1.5rem\" height=\"1.5rem\" radius=\"999px\"\r\n [animate]=\"animate\" />\r\n }\r\n <app-skeleton-block class=\"skeleton-list__line\" width=\"100%\" [height]=\"lineHeight\" radius=\"6px\"\r\n [animate]=\"animate\" />\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.skeleton-list{display:flex;flex-direction:column;width:100%;min-width:0;padding:.2rem 0;box-sizing:border-box}.skeleton-list__row{display:flex;align-items:center;gap:.55rem;min-width:0;min-height:2.45rem;padding:.4rem .75rem;box-sizing:border-box}.skeleton-list__line{flex:1 1 auto;min-width:0}.skeleton-list__dot{flex-shrink:0}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
125
125
  }
126
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SkeletonListComponent, decorators: [{
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonListComponent, decorators: [{
127
127
  type: Component,
128
- args: [{ selector: 'app-skeleton-list', standalone: true, imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"skeleton-list\" [style.gap]=\"rowGap\">\r\n @for (i of rowIndexes(); track i) {\r\n <div class=\"skeleton-list__row\">\r\n @if (leading) {\r\n <app-skeleton-block class=\"skeleton-list__dot\" width=\"1.5rem\" height=\"1.5rem\" radius=\"999px\"\r\n [animate]=\"animate\" />\r\n }\r\n <app-skeleton-block class=\"skeleton-list__line\" width=\"100%\" [height]=\"lineHeight\" radius=\"6px\"\r\n [animate]=\"animate\" />\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.skeleton-list{display:flex;flex-direction:column;width:100%;min-width:0;padding:.2rem 0;box-sizing:border-box}.skeleton-list__row{display:flex;align-items:center;gap:.55rem;min-width:0;min-height:2.45rem;padding:.4rem .75rem;box-sizing:border-box}.skeleton-list__line{flex:1 1 auto;min-width:0}.skeleton-list__dot{flex-shrink:0}\n"] }]
128
+ args: [{ selector: 'app-skeleton-list', imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"skeleton-list\" [style.gap]=\"rowGap\">\r\n @for (i of rowIndexes(); track i) {\r\n <div class=\"skeleton-list__row\">\r\n @if (leading) {\r\n <app-skeleton-block class=\"skeleton-list__dot\" width=\"1.5rem\" height=\"1.5rem\" radius=\"999px\"\r\n [animate]=\"animate\" />\r\n }\r\n <app-skeleton-block class=\"skeleton-list__line\" width=\"100%\" [height]=\"lineHeight\" radius=\"6px\"\r\n [animate]=\"animate\" />\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.skeleton-list{display:flex;flex-direction:column;width:100%;min-width:0;padding:.2rem 0;box-sizing:border-box}.skeleton-list__row{display:flex;align-items:center;gap:.55rem;min-width:0;min-height:2.45rem;padding:.4rem .75rem;box-sizing:border-box}.skeleton-list__line{flex:1 1 auto;min-width:0}.skeleton-list__dot{flex-shrink:0}\n"] }]
129
129
  }], propDecorators: { rows: [{
130
130
  type: Input,
131
131
  args: [{ transform: numberAttribute }]
@@ -147,12 +147,12 @@ class SkeletonCardComponent {
147
147
  this.showActions = true;
148
148
  this.animate = true;
149
149
  }
150
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SkeletonCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
151
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SkeletonCardComponent, isStandalone: true, selector: "app-skeleton-card", inputs: { showActions: ["showActions", "showActions", booleanAttribute], animate: ["animate", "animate", booleanAttribute] }, ngImport: i0, template: "<div class=\"skeleton-card\" aria-hidden=\"true\">\r\n <div class=\"skeleton-card__row\">\r\n <div class=\"skeleton-card__main\">\r\n <app-skeleton-block class=\"skeleton-card__avatar\" width=\"2.35rem\" height=\"2.35rem\" radius=\"999px\"\r\n [animate]=\"animate\" />\r\n <div class=\"skeleton-card__text\">\r\n <app-skeleton-block width=\"72%\" height=\"0.72rem\" radius=\"6px\" [animate]=\"animate\" />\r\n <app-skeleton-block width=\"48%\" height=\"0.62rem\" radius=\"6px\" [animate]=\"animate\" />\r\n </div>\r\n </div>\r\n @if (showActions) {\r\n <div class=\"skeleton-card__actions\">\r\n <app-skeleton-block width=\"2rem\" height=\"2rem\" radius=\"8px\" [animate]=\"animate\" />\r\n <app-skeleton-block width=\"2rem\" height=\"2rem\" radius=\"8px\" [animate]=\"animate\" />\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.skeleton-card{box-sizing:border-box;border-radius:10px;border:1px solid rgba(26,47,69,.08);background:#fff;padding:.85rem 1rem}.skeleton-card__row{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.skeleton-card__main{display:flex;align-items:flex-start;gap:.65rem;min-width:0;flex:1}.skeleton-card__avatar{flex-shrink:0}.skeleton-card__text{display:flex;flex-direction:column;gap:.45rem;flex:1 1 auto;min-width:0;padding-top:.15rem}.skeleton-card__actions{display:flex;gap:.35rem;flex-shrink:0}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
150
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
151
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SkeletonCardComponent, isStandalone: true, selector: "app-skeleton-card", inputs: { showActions: ["showActions", "showActions", booleanAttribute], animate: ["animate", "animate", booleanAttribute] }, ngImport: i0, template: "<div class=\"skeleton-card\" aria-hidden=\"true\">\r\n <div class=\"skeleton-card__row\">\r\n <div class=\"skeleton-card__main\">\r\n <app-skeleton-block class=\"skeleton-card__avatar\" width=\"2.35rem\" height=\"2.35rem\" radius=\"999px\"\r\n [animate]=\"animate\" />\r\n <div class=\"skeleton-card__text\">\r\n <app-skeleton-block width=\"72%\" height=\"0.72rem\" radius=\"6px\" [animate]=\"animate\" />\r\n <app-skeleton-block width=\"48%\" height=\"0.62rem\" radius=\"6px\" [animate]=\"animate\" />\r\n </div>\r\n </div>\r\n @if (showActions) {\r\n <div class=\"skeleton-card__actions\">\r\n <app-skeleton-block width=\"2rem\" height=\"2rem\" radius=\"8px\" [animate]=\"animate\" />\r\n <app-skeleton-block width=\"2rem\" height=\"2rem\" radius=\"8px\" [animate]=\"animate\" />\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.skeleton-card{box-sizing:border-box;border-radius:10px;border:1px solid rgba(26,47,69,.08);background:#fff;padding:.85rem 1rem}.skeleton-card__row{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.skeleton-card__main{display:flex;align-items:flex-start;gap:.65rem;min-width:0;flex:1}.skeleton-card__avatar{flex-shrink:0}.skeleton-card__text{display:flex;flex-direction:column;gap:.45rem;flex:1 1 auto;min-width:0;padding-top:.15rem}.skeleton-card__actions{display:flex;gap:.35rem;flex-shrink:0}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
152
152
  }
153
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SkeletonCardComponent, decorators: [{
153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonCardComponent, decorators: [{
154
154
  type: Component,
155
- args: [{ selector: 'app-skeleton-card', standalone: true, imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"skeleton-card\" aria-hidden=\"true\">\r\n <div class=\"skeleton-card__row\">\r\n <div class=\"skeleton-card__main\">\r\n <app-skeleton-block class=\"skeleton-card__avatar\" width=\"2.35rem\" height=\"2.35rem\" radius=\"999px\"\r\n [animate]=\"animate\" />\r\n <div class=\"skeleton-card__text\">\r\n <app-skeleton-block width=\"72%\" height=\"0.72rem\" radius=\"6px\" [animate]=\"animate\" />\r\n <app-skeleton-block width=\"48%\" height=\"0.62rem\" radius=\"6px\" [animate]=\"animate\" />\r\n </div>\r\n </div>\r\n @if (showActions) {\r\n <div class=\"skeleton-card__actions\">\r\n <app-skeleton-block width=\"2rem\" height=\"2rem\" radius=\"8px\" [animate]=\"animate\" />\r\n <app-skeleton-block width=\"2rem\" height=\"2rem\" radius=\"8px\" [animate]=\"animate\" />\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.skeleton-card{box-sizing:border-box;border-radius:10px;border:1px solid rgba(26,47,69,.08);background:#fff;padding:.85rem 1rem}.skeleton-card__row{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.skeleton-card__main{display:flex;align-items:flex-start;gap:.65rem;min-width:0;flex:1}.skeleton-card__avatar{flex-shrink:0}.skeleton-card__text{display:flex;flex-direction:column;gap:.45rem;flex:1 1 auto;min-width:0;padding-top:.15rem}.skeleton-card__actions{display:flex;gap:.35rem;flex-shrink:0}\n"] }]
155
+ args: [{ selector: 'app-skeleton-card', imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"skeleton-card\" aria-hidden=\"true\">\r\n <div class=\"skeleton-card__row\">\r\n <div class=\"skeleton-card__main\">\r\n <app-skeleton-block class=\"skeleton-card__avatar\" width=\"2.35rem\" height=\"2.35rem\" radius=\"999px\"\r\n [animate]=\"animate\" />\r\n <div class=\"skeleton-card__text\">\r\n <app-skeleton-block width=\"72%\" height=\"0.72rem\" radius=\"6px\" [animate]=\"animate\" />\r\n <app-skeleton-block width=\"48%\" height=\"0.62rem\" radius=\"6px\" [animate]=\"animate\" />\r\n </div>\r\n </div>\r\n @if (showActions) {\r\n <div class=\"skeleton-card__actions\">\r\n <app-skeleton-block width=\"2rem\" height=\"2rem\" radius=\"8px\" [animate]=\"animate\" />\r\n <app-skeleton-block width=\"2rem\" height=\"2rem\" radius=\"8px\" [animate]=\"animate\" />\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.skeleton-card{box-sizing:border-box;border-radius:10px;border:1px solid rgba(26,47,69,.08);background:#fff;padding:.85rem 1rem}.skeleton-card__row{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.skeleton-card__main{display:flex;align-items:flex-start;gap:.65rem;min-width:0;flex:1}.skeleton-card__avatar{flex-shrink:0}.skeleton-card__text{display:flex;flex-direction:column;gap:.45rem;flex:1 1 auto;min-width:0;padding-top:.15rem}.skeleton-card__actions{display:flex;gap:.35rem;flex-shrink:0}\n"] }]
156
156
  }], propDecorators: { showActions: [{
157
157
  type: Input,
158
158
  args: [{ transform: booleanAttribute }]
@@ -175,12 +175,12 @@ class SkeletonTableComponent {
175
175
  rowIndexes() {
176
176
  return Array.from({ length: Math.max(1, this.rowCount) }, (_, i) => i);
177
177
  }
178
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SkeletonTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
179
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SkeletonTableComponent, isStandalone: true, selector: "app-skeleton-table", inputs: { columnCount: ["columnCount", "columnCount", numberAttribute], rowCount: ["rowCount", "rowCount", numberAttribute], showPager: ["showPager", "showPager", booleanAttribute], animate: ["animate", "animate", booleanAttribute] }, ngImport: i0, template: "<div class=\"skeleton-table\" aria-hidden=\"true\">\r\n <div class=\"skeleton-table__header\">\r\n @for (c of colIndexes(); track c) {\r\n <app-skeleton-block class=\"skeleton-table__cell\" width=\"100%\" height=\"0.65rem\" radius=\"6px\" [animate]=\"animate\" />\r\n }\r\n </div>\r\n <div class=\"skeleton-table__body\">\r\n @for (r of rowIndexes(); track r) {\r\n <div class=\"skeleton-table__row\">\r\n @for (c of colIndexes(); track c) {\r\n <app-skeleton-block class=\"skeleton-table__cell\" width=\"100%\" height=\"0.55rem\" radius=\"5px\" [animate]=\"animate\" />\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if (showPager) {\r\n <div class=\"skeleton-table__pager\">\r\n <app-skeleton-block width=\"40%\" height=\"0.55rem\" radius=\"6px\" [animate]=\"animate\" />\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0;height:100%;min-height:0;box-sizing:border-box}.skeleton-table{display:flex;flex-direction:column;width:100%;height:100%;min-height:0;box-sizing:border-box;border-radius:10px;overflow:hidden;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-surface, #fff)}.skeleton-table__header{display:flex;gap:.65rem;align-items:center;padding:.65rem .75rem;background:var(--app-color-tab-inactive-bg, #f3f6f9);border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1))}.skeleton-table__body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.skeleton-table__row{display:flex;gap:.65rem;align-items:center;padding:.55rem .75rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .06));background:var(--app-color-surface, #fff)}.skeleton-table__row:nth-child(2n){background:var(--app-color-background, #fafbfc)}.skeleton-table__cell{flex:1 1 0;min-width:0}.skeleton-table__pager{display:flex;align-items:center;justify-content:flex-end;padding:.5rem .75rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));background:var(--app-color-background, #fafbfc)}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
178
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
179
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SkeletonTableComponent, isStandalone: true, selector: "app-skeleton-table", inputs: { columnCount: ["columnCount", "columnCount", numberAttribute], rowCount: ["rowCount", "rowCount", numberAttribute], showPager: ["showPager", "showPager", booleanAttribute], animate: ["animate", "animate", booleanAttribute] }, ngImport: i0, template: "<div class=\"skeleton-table\" aria-hidden=\"true\">\r\n <div class=\"skeleton-table__header\">\r\n @for (c of colIndexes(); track c) {\r\n <app-skeleton-block class=\"skeleton-table__cell\" width=\"100%\" height=\"0.65rem\" radius=\"6px\" [animate]=\"animate\" />\r\n }\r\n </div>\r\n <div class=\"skeleton-table__body\">\r\n @for (r of rowIndexes(); track r) {\r\n <div class=\"skeleton-table__row\">\r\n @for (c of colIndexes(); track c) {\r\n <app-skeleton-block class=\"skeleton-table__cell\" width=\"100%\" height=\"0.55rem\" radius=\"5px\" [animate]=\"animate\" />\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if (showPager) {\r\n <div class=\"skeleton-table__pager\">\r\n <app-skeleton-block width=\"40%\" height=\"0.55rem\" radius=\"6px\" [animate]=\"animate\" />\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0;height:100%;min-height:0;box-sizing:border-box}.skeleton-table{display:flex;flex-direction:column;width:100%;height:100%;min-height:0;box-sizing:border-box;border-radius:10px;overflow:hidden;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-surface, #fff)}.skeleton-table__header{display:flex;gap:.65rem;align-items:center;padding:.65rem .75rem;background:var(--app-color-tab-inactive-bg, #f3f6f9);border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1))}.skeleton-table__body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.skeleton-table__row{display:flex;gap:.65rem;align-items:center;padding:.55rem .75rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .06));background:var(--app-color-surface, #fff)}.skeleton-table__row:nth-child(2n){background:var(--app-color-background, #fafbfc)}.skeleton-table__cell{flex:1 1 0;min-width:0}.skeleton-table__pager{display:flex;align-items:center;justify-content:flex-end;padding:.5rem .75rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));background:var(--app-color-background, #fafbfc)}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
180
180
  }
181
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SkeletonTableComponent, decorators: [{
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonTableComponent, decorators: [{
182
182
  type: Component,
183
- args: [{ selector: 'app-skeleton-table', standalone: true, imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"skeleton-table\" aria-hidden=\"true\">\r\n <div class=\"skeleton-table__header\">\r\n @for (c of colIndexes(); track c) {\r\n <app-skeleton-block class=\"skeleton-table__cell\" width=\"100%\" height=\"0.65rem\" radius=\"6px\" [animate]=\"animate\" />\r\n }\r\n </div>\r\n <div class=\"skeleton-table__body\">\r\n @for (r of rowIndexes(); track r) {\r\n <div class=\"skeleton-table__row\">\r\n @for (c of colIndexes(); track c) {\r\n <app-skeleton-block class=\"skeleton-table__cell\" width=\"100%\" height=\"0.55rem\" radius=\"5px\" [animate]=\"animate\" />\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if (showPager) {\r\n <div class=\"skeleton-table__pager\">\r\n <app-skeleton-block width=\"40%\" height=\"0.55rem\" radius=\"6px\" [animate]=\"animate\" />\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0;height:100%;min-height:0;box-sizing:border-box}.skeleton-table{display:flex;flex-direction:column;width:100%;height:100%;min-height:0;box-sizing:border-box;border-radius:10px;overflow:hidden;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-surface, #fff)}.skeleton-table__header{display:flex;gap:.65rem;align-items:center;padding:.65rem .75rem;background:var(--app-color-tab-inactive-bg, #f3f6f9);border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1))}.skeleton-table__body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.skeleton-table__row{display:flex;gap:.65rem;align-items:center;padding:.55rem .75rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .06));background:var(--app-color-surface, #fff)}.skeleton-table__row:nth-child(2n){background:var(--app-color-background, #fafbfc)}.skeleton-table__cell{flex:1 1 0;min-width:0}.skeleton-table__pager{display:flex;align-items:center;justify-content:flex-end;padding:.5rem .75rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));background:var(--app-color-background, #fafbfc)}\n"] }]
183
+ args: [{ selector: 'app-skeleton-table', imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"skeleton-table\" aria-hidden=\"true\">\r\n <div class=\"skeleton-table__header\">\r\n @for (c of colIndexes(); track c) {\r\n <app-skeleton-block class=\"skeleton-table__cell\" width=\"100%\" height=\"0.65rem\" radius=\"6px\" [animate]=\"animate\" />\r\n }\r\n </div>\r\n <div class=\"skeleton-table__body\">\r\n @for (r of rowIndexes(); track r) {\r\n <div class=\"skeleton-table__row\">\r\n @for (c of colIndexes(); track c) {\r\n <app-skeleton-block class=\"skeleton-table__cell\" width=\"100%\" height=\"0.55rem\" radius=\"5px\" [animate]=\"animate\" />\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if (showPager) {\r\n <div class=\"skeleton-table__pager\">\r\n <app-skeleton-block width=\"40%\" height=\"0.55rem\" radius=\"6px\" [animate]=\"animate\" />\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0;height:100%;min-height:0;box-sizing:border-box}.skeleton-table{display:flex;flex-direction:column;width:100%;height:100%;min-height:0;box-sizing:border-box;border-radius:10px;overflow:hidden;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-surface, #fff)}.skeleton-table__header{display:flex;gap:.65rem;align-items:center;padding:.65rem .75rem;background:var(--app-color-tab-inactive-bg, #f3f6f9);border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1))}.skeleton-table__body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.skeleton-table__row{display:flex;gap:.65rem;align-items:center;padding:.55rem .75rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .06));background:var(--app-color-surface, #fff)}.skeleton-table__row:nth-child(2n){background:var(--app-color-background, #fafbfc)}.skeleton-table__cell{flex:1 1 0;min-width:0}.skeleton-table__pager{display:flex;align-items:center;justify-content:flex-end;padding:.5rem .75rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));background:var(--app-color-background, #fafbfc)}\n"] }]
184
184
  }], propDecorators: { columnCount: [{
185
185
  type: Input,
186
186
  args: [{ transform: numberAttribute }]
@@ -210,12 +210,12 @@ class SkeletonFieldShellComponent {
210
210
  */
211
211
  this.showLeadingIcon = true;
212
212
  }
213
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SkeletonFieldShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
214
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SkeletonFieldShellComponent, isStandalone: true, selector: "app-skeleton-field-shell", inputs: { variant: "variant", animate: ["animate", "animate", booleanAttribute], showLeadingIcon: ["showLeadingIcon", "showLeadingIcon", booleanAttribute] }, ngImport: i0, template: "<div class=\"skeleton-field-shell\" [class.skeleton-field-shell--bar-only]=\"!showLeadingIcon\" aria-hidden=\"true\">\r\n @if (showLeadingIcon) {\r\n <app-skeleton-block class=\"skeleton-field-shell__prefix\" width=\"1.35em\" height=\"1.35em\" radius=\"8px\"\r\n [animate]=\"animate\" />\r\n }\r\n <app-skeleton-block class=\"skeleton-field-shell__value\" width=\"100%\" height=\"1.35em\" radius=\"6px\"\r\n [animate]=\"animate\" />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0}.skeleton-field-shell{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:.35rem;width:100%;min-width:0;min-height:calc(1.8rem + 1.35em);margin:0;padding:0 .75rem;box-sizing:border-box}.skeleton-field-shell--bar-only{gap:0}.skeleton-field-shell__prefix{flex:0 0 auto}.skeleton-field-shell__value{flex:1 1 auto;min-width:0}.skeleton-field-shell app-skeleton-block.skeleton-field-shell__value{display:block;width:100%}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
213
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonFieldShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
214
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SkeletonFieldShellComponent, isStandalone: true, selector: "app-skeleton-field-shell", inputs: { variant: "variant", animate: ["animate", "animate", booleanAttribute], showLeadingIcon: ["showLeadingIcon", "showLeadingIcon", booleanAttribute] }, ngImport: i0, template: "<div class=\"skeleton-field-shell\" [class.skeleton-field-shell--bar-only]=\"!showLeadingIcon\" aria-hidden=\"true\">\r\n @if (showLeadingIcon) {\r\n <app-skeleton-block class=\"skeleton-field-shell__prefix\" width=\"1.35em\" height=\"1.35em\" radius=\"8px\"\r\n [animate]=\"animate\" />\r\n }\r\n <app-skeleton-block class=\"skeleton-field-shell__value\" width=\"100%\" height=\"1.35em\" radius=\"6px\"\r\n [animate]=\"animate\" />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0}.skeleton-field-shell{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:.35rem;width:100%;min-width:0;min-height:calc(1.8rem + 1.35em);margin:0;padding:0 .75rem;box-sizing:border-box}.skeleton-field-shell--bar-only{gap:0}.skeleton-field-shell__prefix{flex:0 0 auto}.skeleton-field-shell__value{flex:1 1 auto;min-width:0}.skeleton-field-shell app-skeleton-block.skeleton-field-shell__value{display:block;width:100%}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
215
215
  }
216
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SkeletonFieldShellComponent, decorators: [{
216
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonFieldShellComponent, decorators: [{
217
217
  type: Component,
218
- args: [{ selector: 'app-skeleton-field-shell', standalone: true, imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"skeleton-field-shell\" [class.skeleton-field-shell--bar-only]=\"!showLeadingIcon\" aria-hidden=\"true\">\r\n @if (showLeadingIcon) {\r\n <app-skeleton-block class=\"skeleton-field-shell__prefix\" width=\"1.35em\" height=\"1.35em\" radius=\"8px\"\r\n [animate]=\"animate\" />\r\n }\r\n <app-skeleton-block class=\"skeleton-field-shell__value\" width=\"100%\" height=\"1.35em\" radius=\"6px\"\r\n [animate]=\"animate\" />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0}.skeleton-field-shell{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:.35rem;width:100%;min-width:0;min-height:calc(1.8rem + 1.35em);margin:0;padding:0 .75rem;box-sizing:border-box}.skeleton-field-shell--bar-only{gap:0}.skeleton-field-shell__prefix{flex:0 0 auto}.skeleton-field-shell__value{flex:1 1 auto;min-width:0}.skeleton-field-shell app-skeleton-block.skeleton-field-shell__value{display:block;width:100%}\n"] }]
218
+ args: [{ selector: 'app-skeleton-field-shell', imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"skeleton-field-shell\" [class.skeleton-field-shell--bar-only]=\"!showLeadingIcon\" aria-hidden=\"true\">\r\n @if (showLeadingIcon) {\r\n <app-skeleton-block class=\"skeleton-field-shell__prefix\" width=\"1.35em\" height=\"1.35em\" radius=\"8px\"\r\n [animate]=\"animate\" />\r\n }\r\n <app-skeleton-block class=\"skeleton-field-shell__value\" width=\"100%\" height=\"1.35em\" radius=\"6px\"\r\n [animate]=\"animate\" />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0}.skeleton-field-shell{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:.35rem;width:100%;min-width:0;min-height:calc(1.8rem + 1.35em);margin:0;padding:0 .75rem;box-sizing:border-box}.skeleton-field-shell--bar-only{gap:0}.skeleton-field-shell__prefix{flex:0 0 auto}.skeleton-field-shell__value{flex:1 1 auto;min-width:0}.skeleton-field-shell app-skeleton-block.skeleton-field-shell__value{display:block;width:100%}\n"] }]
219
219
  }], propDecorators: { variant: [{
220
220
  type: Input
221
221
  }], animate: [{
@@ -287,12 +287,12 @@ class BaseButtonComponent {
287
287
  focusNative(options) {
288
288
  this.nativeBtn?.nativeElement?.focus(options);
289
289
  }
290
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
291
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BaseButtonComponent, isStandalone: true, selector: "app-base-button", inputs: { type: "type", disabled: ["disabled", "disabled", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], fullWidth: ["fullWidth", "fullWidth", booleanAttribute], loading: ["loading", "loading", booleanAttribute], variant: "variant", appearance: "appearance" }, host: { properties: { "class": "this.hostClasses" } }, viewQueries: [{ propertyName: "nativeBtn", first: true, predicate: ["nativeBtn"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (!loading) {\r\n<button\r\n #nativeBtn\r\n class=\"base-button__native\"\r\n [attr.type]=\"type\"\r\n [disabled]=\"disabled || readonly\"\r\n [attr.aria-readonly]=\"readonly ? true : null\"\r\n>\r\n <ng-content />\r\n</button>\r\n} @else {\r\n<div class=\"base-button__native base-button__native--skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\"\r\n aria-label=\"A carregar\">\r\n <app-skeleton-block width=\"40%\" height=\"0.7rem\" radius=\"8px\" />\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;width:fit-content;max-width:100%;box-sizing:border-box;vertical-align:middle}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:5rem;align-items:center;justify-content:center;text-align:center;gap:.5rem;min-height:2.5rem;padding:.5rem 1.25rem;margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:.9375rem;font-weight:600;line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease}:host(.base-button--full-width){display:block;width:auto;min-width:0;max-width:100%;box-sizing:border-box}:host(.base-button--full-width) .base-button__native{width:100%;min-width:0}.base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .35))}:host(.base-button--primary) .base-button__native{color:var(--app-color-primary-contrast, #ffffff);background:var(--ui-field-float-border-focus, #2b7fd9);border-color:var(--ui-field-float-border-focus, #2b7fd9)}:host(.base-button--primary) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--secondary) .base-button__native:hover:not(:disabled){background:var(--app-color-button-secondary-hover-bg, #e8f0fa)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-primary, #1a2f45);background:transparent;border-color:transparent;min-width:0;min-height:2.25rem;padding:.35rem .5rem;border-radius:8px;font-size:.95rem;font-weight:600;justify-content:flex-start;gap:.45rem}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-nav-link);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--disabled:not(.base-button--readonly)) .base-button__native,.base-button__native:disabled:not([aria-readonly=true]){cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity, .65)}:host(.base-button--readonly) .base-button__native{cursor:default;opacity:1;color:var(--ui-field-readonly-button-text, #37474f);background:var(--ui-field-readonly-button-bg, #cfd8dc);border-color:var(--ui-field-readonly-button-border, #90a4ae)}:host(.base-button--readonly) .base-button__native:hover:not(:disabled){filter:brightness(.97)}:host(.base-button--readonly) .base-button__native:focus-visible{box-shadow:0 0 0 3px var(--ui-field-readonly-button-focus-ring, rgba(96, 125, 139, .35))}.base-button__native--skeleton{pointer-events:none;cursor:default}:host(.base-button--primary.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff);border-color:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff)}:host(.base-button--secondary.base-button--loading) .base-button__native--skeleton{background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--ghost.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-text-primary, #1a2f45) 8%,transparent);border-color:transparent}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
290
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BaseButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
291
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: BaseButtonComponent, isStandalone: true, selector: "app-base-button", inputs: { type: "type", disabled: ["disabled", "disabled", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], fullWidth: ["fullWidth", "fullWidth", booleanAttribute], loading: ["loading", "loading", booleanAttribute], variant: "variant", appearance: "appearance" }, host: { properties: { "class": "this.hostClasses" } }, viewQueries: [{ propertyName: "nativeBtn", first: true, predicate: ["nativeBtn"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (!loading) {\r\n<button\r\n #nativeBtn\r\n class=\"base-button__native\"\r\n [attr.type]=\"type\"\r\n [disabled]=\"disabled || readonly\"\r\n [attr.aria-readonly]=\"readonly ? true : null\"\r\n>\r\n <ng-content />\r\n</button>\r\n} @else {\r\n<div class=\"base-button__native base-button__native--skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\"\r\n aria-label=\"A carregar\">\r\n <app-skeleton-block width=\"40%\" height=\"0.7rem\" radius=\"8px\" />\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;width:fit-content;max-width:100%;box-sizing:border-box;vertical-align:middle}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:5rem;align-items:center;justify-content:center;text-align:center;gap:.5rem;min-height:2.5rem;padding:.5rem 1.25rem;margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:.9375rem;font-weight:600;line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease}:host(.base-button--full-width){display:block;width:auto;min-width:0;max-width:100%;box-sizing:border-box}:host(.base-button--full-width) .base-button__native{width:100%;min-width:0}.base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .35))}:host(.base-button--primary) .base-button__native{color:var(--app-color-primary-contrast, #ffffff);background:var(--ui-field-float-border-focus, #2b7fd9);border-color:var(--ui-field-float-border-focus, #2b7fd9)}:host(.base-button--primary) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--secondary) .base-button__native:hover:not(:disabled){background:var(--app-color-button-secondary-hover-bg, #e8f0fa)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-primary, #1a2f45);background:transparent;border-color:transparent;min-width:0;min-height:2.25rem;padding:.35rem .5rem;border-radius:8px;font-size:.95rem;font-weight:600;justify-content:flex-start;gap:.45rem}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-nav-link);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--disabled:not(.base-button--readonly)) .base-button__native,.base-button__native:disabled:not([aria-readonly=true]){cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity, .65)}:host(.base-button--readonly) .base-button__native{cursor:default;opacity:1;color:var(--ui-field-readonly-button-text, #37474f);background:var(--ui-field-readonly-button-bg, #cfd8dc);border-color:var(--ui-field-readonly-button-border, #90a4ae)}:host(.base-button--readonly) .base-button__native:hover:not(:disabled){filter:brightness(.97)}:host(.base-button--readonly) .base-button__native:focus-visible{box-shadow:0 0 0 3px var(--ui-field-readonly-button-focus-ring, rgba(96, 125, 139, .35))}.base-button__native--skeleton{pointer-events:none;cursor:default}:host(.base-button--primary.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff);border-color:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff)}:host(.base-button--secondary.base-button--loading) .base-button__native--skeleton{background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--ghost.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-text-primary, #1a2f45) 8%,transparent);border-color:transparent}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
292
292
  }
293
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseButtonComponent, decorators: [{
293
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BaseButtonComponent, decorators: [{
294
294
  type: Component,
295
- args: [{ selector: 'app-base-button', standalone: true, imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!loading) {\r\n<button\r\n #nativeBtn\r\n class=\"base-button__native\"\r\n [attr.type]=\"type\"\r\n [disabled]=\"disabled || readonly\"\r\n [attr.aria-readonly]=\"readonly ? true : null\"\r\n>\r\n <ng-content />\r\n</button>\r\n} @else {\r\n<div class=\"base-button__native base-button__native--skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\"\r\n aria-label=\"A carregar\">\r\n <app-skeleton-block width=\"40%\" height=\"0.7rem\" radius=\"8px\" />\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;width:fit-content;max-width:100%;box-sizing:border-box;vertical-align:middle}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:5rem;align-items:center;justify-content:center;text-align:center;gap:.5rem;min-height:2.5rem;padding:.5rem 1.25rem;margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:.9375rem;font-weight:600;line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease}:host(.base-button--full-width){display:block;width:auto;min-width:0;max-width:100%;box-sizing:border-box}:host(.base-button--full-width) .base-button__native{width:100%;min-width:0}.base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .35))}:host(.base-button--primary) .base-button__native{color:var(--app-color-primary-contrast, #ffffff);background:var(--ui-field-float-border-focus, #2b7fd9);border-color:var(--ui-field-float-border-focus, #2b7fd9)}:host(.base-button--primary) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--secondary) .base-button__native:hover:not(:disabled){background:var(--app-color-button-secondary-hover-bg, #e8f0fa)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-primary, #1a2f45);background:transparent;border-color:transparent;min-width:0;min-height:2.25rem;padding:.35rem .5rem;border-radius:8px;font-size:.95rem;font-weight:600;justify-content:flex-start;gap:.45rem}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-nav-link);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--disabled:not(.base-button--readonly)) .base-button__native,.base-button__native:disabled:not([aria-readonly=true]){cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity, .65)}:host(.base-button--readonly) .base-button__native{cursor:default;opacity:1;color:var(--ui-field-readonly-button-text, #37474f);background:var(--ui-field-readonly-button-bg, #cfd8dc);border-color:var(--ui-field-readonly-button-border, #90a4ae)}:host(.base-button--readonly) .base-button__native:hover:not(:disabled){filter:brightness(.97)}:host(.base-button--readonly) .base-button__native:focus-visible{box-shadow:0 0 0 3px var(--ui-field-readonly-button-focus-ring, rgba(96, 125, 139, .35))}.base-button__native--skeleton{pointer-events:none;cursor:default}:host(.base-button--primary.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff);border-color:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff)}:host(.base-button--secondary.base-button--loading) .base-button__native--skeleton{background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--ghost.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-text-primary, #1a2f45) 8%,transparent);border-color:transparent}\n"] }]
295
+ args: [{ selector: 'app-base-button', imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!loading) {\r\n<button\r\n #nativeBtn\r\n class=\"base-button__native\"\r\n [attr.type]=\"type\"\r\n [disabled]=\"disabled || readonly\"\r\n [attr.aria-readonly]=\"readonly ? true : null\"\r\n>\r\n <ng-content />\r\n</button>\r\n} @else {\r\n<div class=\"base-button__native base-button__native--skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\"\r\n aria-label=\"A carregar\">\r\n <app-skeleton-block width=\"40%\" height=\"0.7rem\" radius=\"8px\" />\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;width:fit-content;max-width:100%;box-sizing:border-box;vertical-align:middle}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:5rem;align-items:center;justify-content:center;text-align:center;gap:.5rem;min-height:2.5rem;padding:.5rem 1.25rem;margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:.9375rem;font-weight:600;line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease}:host(.base-button--full-width){display:block;width:auto;min-width:0;max-width:100%;box-sizing:border-box}:host(.base-button--full-width) .base-button__native{width:100%;min-width:0}.base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .35))}:host(.base-button--primary) .base-button__native{color:var(--app-color-primary-contrast, #ffffff);background:var(--ui-field-float-border-focus, #2b7fd9);border-color:var(--ui-field-float-border-focus, #2b7fd9)}:host(.base-button--primary) .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--secondary) .base-button__native:hover:not(:disabled){background:var(--app-color-button-secondary-hover-bg, #e8f0fa)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-primary, #1a2f45);background:transparent;border-color:transparent;min-width:0;min-height:2.25rem;padding:.35rem .5rem;border-radius:8px;font-size:.95rem;font-weight:600;justify-content:flex-start;gap:.45rem}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-nav-link);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--disabled:not(.base-button--readonly)) .base-button__native,.base-button__native:disabled:not([aria-readonly=true]){cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity, .65)}:host(.base-button--readonly) .base-button__native{cursor:default;opacity:1;color:var(--ui-field-readonly-button-text, #37474f);background:var(--ui-field-readonly-button-bg, #cfd8dc);border-color:var(--ui-field-readonly-button-border, #90a4ae)}:host(.base-button--readonly) .base-button__native:hover:not(:disabled){filter:brightness(.97)}:host(.base-button--readonly) .base-button__native:focus-visible{box-shadow:0 0 0 3px var(--ui-field-readonly-button-focus-ring, rgba(96, 125, 139, .35))}.base-button__native--skeleton{pointer-events:none;cursor:default}:host(.base-button--primary.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff);border-color:color-mix(in srgb,var(--ui-field-float-border-focus, #2b7fd9) 82%,#ffffff)}:host(.base-button--secondary.base-button--loading) .base-button__native--skeleton{background:var(--ui-field-float-bg, #f3f7fb);border-color:var(--ui-field-float-border, #b6cce5)}:host(.base-button--ghost.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-text-primary, #1a2f45) 8%,transparent);border-color:transparent}\n"] }]
296
296
  }], propDecorators: { nativeBtn: [{
297
297
  type: ViewChild,
298
298
  args: ['nativeBtn', { read: ElementRef }]
@@ -490,10 +490,10 @@ class BaseFieldDirective {
490
490
  this.onTouched();
491
491
  this.cdr.markForCheck();
492
492
  }
493
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseFieldDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
494
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.12", type: BaseFieldDirective, inputs: { id: "id", name: "name", label: "label", placeholder: "placeholder", errorMessage: "errorMessage", showErrorMessage: "showErrorMessage", required: "required", showRequiredMark: "showRequiredMark", readonly: "readonly", showPrefixIcon: "showPrefixIcon", prefixIcon: "prefixIcon", iconLeft: "iconLeft", clearable: "clearable", clearAriaLabel: "clearAriaLabel", autocomplete: "autocomplete", loading: ["loading", "loading", booleanAttribute], mostrarMenuContexto: ["mostrarMenuContexto", "mostrarMenuContexto", booleanAttribute], contextMenuItems: "contextMenuItems", contextMenuId: "contextMenuId" }, outputs: { contextMenuSelect: "contextMenuSelect" }, ngImport: i0 }); }
493
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BaseFieldDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
494
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.2.9", type: BaseFieldDirective, isStandalone: true, inputs: { id: "id", name: "name", label: "label", placeholder: "placeholder", errorMessage: "errorMessage", showErrorMessage: "showErrorMessage", required: "required", showRequiredMark: "showRequiredMark", readonly: "readonly", showPrefixIcon: "showPrefixIcon", prefixIcon: "prefixIcon", iconLeft: "iconLeft", clearable: "clearable", clearAriaLabel: "clearAriaLabel", autocomplete: "autocomplete", loading: ["loading", "loading", booleanAttribute], mostrarMenuContexto: ["mostrarMenuContexto", "mostrarMenuContexto", booleanAttribute], contextMenuItems: "contextMenuItems", contextMenuId: "contextMenuId" }, outputs: { contextMenuSelect: "contextMenuSelect" }, ngImport: i0 }); }
495
495
  }
496
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseFieldDirective, decorators: [{
496
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BaseFieldDirective, decorators: [{
497
497
  type: Directive
498
498
  }], propDecorators: { id: [{
499
499
  type: Input
@@ -556,11 +556,11 @@ const APP_THEME_IDS = [
556
556
  */
557
557
  class AppThemeService {
558
558
  constructor() {
559
- this.activeId = signal('black');
559
+ this.activeId = signal('black', ...(ngDevMode ? [{ debugName: "activeId" }] : /* istanbul ignore next */ []));
560
560
  /** Identificador do tema activo (`blue`, `green`, …). */
561
561
  this.activeThemeId = this.activeId.asReadonly();
562
562
  /** Classe CSS do tema (ex.: `theme-green`) para `[ngClass]` no host tematizado. */
563
- this.themeClass = computed(() => `theme-${this.activeId()}`);
563
+ this.themeClass = computed(() => `theme-${this.activeId()}`, ...(ngDevMode ? [{ debugName: "themeClass" }] : /* istanbul ignore next */ []));
564
564
  /** Lista fixa de temas suportados pela library. */
565
565
  this.themeOptions = [
566
566
  { id: 'blue', label: 'Azul' },
@@ -579,10 +579,10 @@ class AppThemeService {
579
579
  isActive(id) {
580
580
  return this.activeId() === id;
581
581
  }
582
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
583
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppThemeService, providedIn: 'root' }); }
582
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
583
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppThemeService, providedIn: 'root' }); }
584
584
  }
585
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppThemeService, decorators: [{
585
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppThemeService, decorators: [{
586
586
  type: Injectable,
587
587
  args: [{ providedIn: 'root' }]
588
588
  }] });
@@ -608,7 +608,7 @@ class DropdownBaseComponent {
608
608
  * O overlay do CDK fica sob `body`; sem estas classes, `var(--app-color-*)` cai no `:root`.
609
609
  * Tem de ser **array**: uma única string com espaço quebra `classList.add` e as classes não aplicam.
610
610
  */
611
- this.overlayPanelClasses = computed(() => ['app-library-theme', this.appTheme.themeClass()]);
611
+ this.overlayPanelClasses = computed(() => ['app-library-theme', this.appTheme.themeClass()], ...(ngDevMode ? [{ debugName: "overlayPanelClasses" }] : /* istanbul ignore next */ []));
612
612
  /**
613
613
  * O CDK não reaplica `cdkConnectedOverlayPanelClass` quando o overlay já existe.
614
614
  * As classes de tema no painel interno seguem o tema activo sempre.
@@ -619,7 +619,7 @@ class DropdownBaseComponent {
619
619
  'app-library-theme': true,
620
620
  [themeClass]: true,
621
621
  };
622
- });
622
+ }, ...(ngDevMode ? [{ debugName: "panelThemeNgClass" }] : /* istanbul ignore next */ []));
623
623
  this.open = false;
624
624
  this.openChange = new EventEmitter();
625
625
  /** Largura do painel em px (ex.: largura total do campo). */
@@ -667,12 +667,12 @@ class DropdownBaseComponent {
667
667
  toggle() {
668
668
  this.setOpen(!this.open);
669
669
  }
670
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
671
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: DropdownBaseComponent, isStandalone: true, selector: "app-dropdown-base", inputs: { open: ["open", "open", booleanAttribute], panelTemplate: "panelTemplate", panelWidthPx: "panelWidthPx", closeOnEscape: ["closeOnEscape", "closeOnEscape", booleanAttribute], hasBackdrop: ["hasBackdrop", "hasBackdrop", booleanAttribute], connectedPositions: "connectedPositions", pushConnectedOverlay: ["pushConnectedOverlay", "pushConnectedOverlay", booleanAttribute], bareOverlayPanel: ["bareOverlayPanel", "bareOverlayPanel", booleanAttribute] }, outputs: { openChange: "openChange" }, ngImport: i0, template: "<div class=\"dropdown-base\">\r\n <span class=\"dropdown-base__origin\" cdkOverlayOrigin #dropdownOrigin=\"cdkOverlayOrigin\">\r\n <ng-content select=\"[appDropdownTrigger]\" />\r\n </span>\r\n\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayPositions]=\"effectiveConnectedPositions\"\r\n [cdkConnectedOverlayPush]=\"pushConnectedOverlay\"\r\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\r\n [cdkConnectedOverlayOrigin]=\"dropdownOrigin\"\r\n [cdkConnectedOverlayOpen]=\"open\"\r\n [cdkConnectedOverlayWidth]=\"$any(overlayWidthPx > 0 ? overlayWidthPx : undefined)\"\r\n [cdkConnectedOverlayMinWidth]=\"$any(overlayWidthPx > 0 ? overlayWidthPx : undefined)\"\r\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n [cdkConnectedOverlayDisableClose]=\"false\"\r\n (backdropClick)=\"onBackdropClick()\"\r\n (overlayOutsideClick)=\"onOverlayOutsideClick()\"\r\n (overlayKeydown)=\"onOverlayKeydown($event)\"\r\n (detach)=\"setOpen(false)\"\r\n >\r\n <div\r\n class=\"dropdown-base__panel\"\r\n [class.dropdown-base__panel--bare]=\"bareOverlayPanel\"\r\n [ngClass]=\"panelThemeNgClass()\"\r\n role=\"presentation\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"panelTemplate\" />\r\n </div>\r\n </ng-template>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex:1;min-width:0;width:100%;box-sizing:border-box}.dropdown-base{display:flex;flex:1;min-width:0;width:100%;box-sizing:border-box}.dropdown-base__origin{display:block;width:100%;min-width:0;flex:1 1 auto;box-sizing:border-box}.dropdown-base__panel{width:100%;box-sizing:border-box;background:var(--app-color-nav-surface, var(--app-color-surface, #fff));border:1px solid var(--ui-field-float-border, #ccc);border-radius:4px;box-shadow:0 4px 12px var(--app-color-overlay-shadow, rgba(0, 0, 0, .12));overflow:visible;max-height:none}.dropdown-base__panel--bare{background:transparent;border:none;box-shadow:none;border-radius:0;overflow:visible}\n"], dependencies: [{ kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
670
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DropdownBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
671
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: DropdownBaseComponent, isStandalone: true, selector: "app-dropdown-base", inputs: { open: ["open", "open", booleanAttribute], panelTemplate: "panelTemplate", panelWidthPx: "panelWidthPx", closeOnEscape: ["closeOnEscape", "closeOnEscape", booleanAttribute], hasBackdrop: ["hasBackdrop", "hasBackdrop", booleanAttribute], connectedPositions: "connectedPositions", pushConnectedOverlay: ["pushConnectedOverlay", "pushConnectedOverlay", booleanAttribute], bareOverlayPanel: ["bareOverlayPanel", "bareOverlayPanel", booleanAttribute] }, outputs: { openChange: "openChange" }, ngImport: i0, template: "<div class=\"dropdown-base\">\r\n <span class=\"dropdown-base__origin\" cdkOverlayOrigin #dropdownOrigin=\"cdkOverlayOrigin\">\r\n <ng-content select=\"[appDropdownTrigger]\" />\r\n </span>\r\n\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayPositions]=\"effectiveConnectedPositions\"\r\n [cdkConnectedOverlayPush]=\"pushConnectedOverlay\"\r\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\r\n [cdkConnectedOverlayOrigin]=\"dropdownOrigin\"\r\n [cdkConnectedOverlayOpen]=\"open\"\r\n [cdkConnectedOverlayWidth]=\"$any(overlayWidthPx > 0 ? overlayWidthPx : undefined)\"\r\n [cdkConnectedOverlayMinWidth]=\"$any(overlayWidthPx > 0 ? overlayWidthPx : undefined)\"\r\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n [cdkConnectedOverlayDisableClose]=\"false\"\r\n (backdropClick)=\"onBackdropClick()\"\r\n (overlayOutsideClick)=\"onOverlayOutsideClick()\"\r\n (overlayKeydown)=\"onOverlayKeydown($event)\"\r\n (detach)=\"setOpen(false)\"\r\n >\r\n <div\r\n class=\"dropdown-base__panel\"\r\n [class.dropdown-base__panel--bare]=\"bareOverlayPanel\"\r\n [ngClass]=\"panelThemeNgClass()\"\r\n role=\"presentation\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"panelTemplate\" />\r\n </div>\r\n </ng-template>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex:1;min-width:0;width:100%;box-sizing:border-box}.dropdown-base{display:flex;flex:1;min-width:0;width:100%;box-sizing:border-box}.dropdown-base__origin{display:block;width:100%;min-width:0;flex:1 1 auto;box-sizing:border-box}.dropdown-base__panel{width:100%;box-sizing:border-box;background:var(--app-color-nav-surface, var(--app-color-surface, #fff));border:1px solid var(--ui-field-float-border, #ccc);border-radius:4px;box-shadow:0 4px 12px var(--app-color-overlay-shadow, rgba(0, 0, 0, .12));overflow:visible;max-height:none}.dropdown-base__panel--bare{background:transparent;border:none;box-shadow:none;border-radius:0;overflow:visible}\n"], dependencies: [{ kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
672
672
  }
673
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownBaseComponent, decorators: [{
673
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DropdownBaseComponent, decorators: [{
674
674
  type: Component,
675
- args: [{ selector: 'app-dropdown-base', standalone: true, imports: [CdkConnectedOverlay, CdkOverlayOrigin, NgClass, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"dropdown-base\">\r\n <span class=\"dropdown-base__origin\" cdkOverlayOrigin #dropdownOrigin=\"cdkOverlayOrigin\">\r\n <ng-content select=\"[appDropdownTrigger]\" />\r\n </span>\r\n\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayPositions]=\"effectiveConnectedPositions\"\r\n [cdkConnectedOverlayPush]=\"pushConnectedOverlay\"\r\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\r\n [cdkConnectedOverlayOrigin]=\"dropdownOrigin\"\r\n [cdkConnectedOverlayOpen]=\"open\"\r\n [cdkConnectedOverlayWidth]=\"$any(overlayWidthPx > 0 ? overlayWidthPx : undefined)\"\r\n [cdkConnectedOverlayMinWidth]=\"$any(overlayWidthPx > 0 ? overlayWidthPx : undefined)\"\r\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n [cdkConnectedOverlayDisableClose]=\"false\"\r\n (backdropClick)=\"onBackdropClick()\"\r\n (overlayOutsideClick)=\"onOverlayOutsideClick()\"\r\n (overlayKeydown)=\"onOverlayKeydown($event)\"\r\n (detach)=\"setOpen(false)\"\r\n >\r\n <div\r\n class=\"dropdown-base__panel\"\r\n [class.dropdown-base__panel--bare]=\"bareOverlayPanel\"\r\n [ngClass]=\"panelThemeNgClass()\"\r\n role=\"presentation\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"panelTemplate\" />\r\n </div>\r\n </ng-template>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex:1;min-width:0;width:100%;box-sizing:border-box}.dropdown-base{display:flex;flex:1;min-width:0;width:100%;box-sizing:border-box}.dropdown-base__origin{display:block;width:100%;min-width:0;flex:1 1 auto;box-sizing:border-box}.dropdown-base__panel{width:100%;box-sizing:border-box;background:var(--app-color-nav-surface, var(--app-color-surface, #fff));border:1px solid var(--ui-field-float-border, #ccc);border-radius:4px;box-shadow:0 4px 12px var(--app-color-overlay-shadow, rgba(0, 0, 0, .12));overflow:visible;max-height:none}.dropdown-base__panel--bare{background:transparent;border:none;box-shadow:none;border-radius:0;overflow:visible}\n"] }]
675
+ args: [{ selector: 'app-dropdown-base', imports: [CdkConnectedOverlay, CdkOverlayOrigin, NgClass, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"dropdown-base\">\r\n <span class=\"dropdown-base__origin\" cdkOverlayOrigin #dropdownOrigin=\"cdkOverlayOrigin\">\r\n <ng-content select=\"[appDropdownTrigger]\" />\r\n </span>\r\n\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayPositions]=\"effectiveConnectedPositions\"\r\n [cdkConnectedOverlayPush]=\"pushConnectedOverlay\"\r\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\r\n [cdkConnectedOverlayOrigin]=\"dropdownOrigin\"\r\n [cdkConnectedOverlayOpen]=\"open\"\r\n [cdkConnectedOverlayWidth]=\"$any(overlayWidthPx > 0 ? overlayWidthPx : undefined)\"\r\n [cdkConnectedOverlayMinWidth]=\"$any(overlayWidthPx > 0 ? overlayWidthPx : undefined)\"\r\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n [cdkConnectedOverlayDisableClose]=\"false\"\r\n (backdropClick)=\"onBackdropClick()\"\r\n (overlayOutsideClick)=\"onOverlayOutsideClick()\"\r\n (overlayKeydown)=\"onOverlayKeydown($event)\"\r\n (detach)=\"setOpen(false)\"\r\n >\r\n <div\r\n class=\"dropdown-base__panel\"\r\n [class.dropdown-base__panel--bare]=\"bareOverlayPanel\"\r\n [ngClass]=\"panelThemeNgClass()\"\r\n role=\"presentation\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"panelTemplate\" />\r\n </div>\r\n </ng-template>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:flex;flex:1;min-width:0;width:100%;box-sizing:border-box}.dropdown-base{display:flex;flex:1;min-width:0;width:100%;box-sizing:border-box}.dropdown-base__origin{display:block;width:100%;min-width:0;flex:1 1 auto;box-sizing:border-box}.dropdown-base__panel{width:100%;box-sizing:border-box;background:var(--app-color-nav-surface, var(--app-color-surface, #fff));border:1px solid var(--ui-field-float-border, #ccc);border-radius:4px;box-shadow:0 4px 12px var(--app-color-overlay-shadow, rgba(0, 0, 0, .12));overflow:visible;max-height:none}.dropdown-base__panel--bare{background:transparent;border:none;box-shadow:none;border-radius:0;overflow:visible}\n"] }]
676
676
  }], propDecorators: { open: [{
677
677
  type: Input,
678
678
  args: [{ transform: booleanAttribute }]
@@ -715,10 +715,10 @@ var MenuDropdownPlacement;
715
715
  * Separador semântico reutilizável — mesma apresentação que o divisor do modelo de dados (`kind: 'divider'`).
716
716
  */
717
717
  class MenuDividerComponent {
718
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuDividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
719
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MenuDividerComponent, isStandalone: true, selector: "app-menu-divider", ngImport: i0, template: `<div class="menu-list__separator" role="separator" aria-hidden="true"></div>`, isInline: true, styles: [":host{display:block}.menu-list__separator{height:1px;margin:.35rem .6rem;background:var(--app-color-border-subtle, rgba(26, 47, 69, .1));border:none;padding:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
718
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MenuDividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
719
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: MenuDividerComponent, isStandalone: true, selector: "app-menu-divider", ngImport: i0, template: `<div class="menu-list__separator" role="separator" aria-hidden="true"></div>`, isInline: true, styles: [":host{display:block}.menu-list__separator{height:1px;margin:.35rem .6rem;background:var(--app-color-border-subtle, rgba(26, 47, 69, .1));border:none;padding:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
720
720
  }
721
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuDividerComponent, decorators: [{
721
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MenuDividerComponent, decorators: [{
722
722
  type: Component,
723
723
  args: [{ selector: 'app-menu-divider', standalone: true, template: `<div class="menu-list__separator" role="separator" aria-hidden="true"></div>`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.menu-list__separator{height:1px;margin:.35rem .6rem;background:var(--app-color-border-subtle, rgba(26, 47, 69, .1));border:none;padding:0}\n"] }]
724
724
  }] });
@@ -732,14 +732,14 @@ class MenuGroupComponent {
732
732
  /** Quando `true`, não mostra o título (ex.: sidebar colapsada só com ícones). */
733
733
  this.hideLabel = false;
734
734
  }
735
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
736
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MenuGroupComponent, isStandalone: true, selector: "app-menu-group", inputs: { label: "label", hideLabel: ["hideLabel", "hideLabel", booleanAttribute] }, ngImport: i0, template: `
735
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MenuGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
736
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: MenuGroupComponent, isStandalone: true, selector: "app-menu-group", inputs: { label: "label", hideLabel: ["hideLabel", "hideLabel", booleanAttribute] }, ngImport: i0, template: `
737
737
  @if (label?.trim() && !hideLabel) {
738
738
  <div class="menu-list__group-label" role="presentation">{{ label }}</div>
739
739
  }
740
740
  `, isInline: true, styles: [".menu-list__group-label{font-size:.74rem;font-weight:600;letter-spacing:.02em;text-transform:none;color:var(--app-color-text-secondary, #5a7fa3);padding:.65rem .75rem .4rem;margin-top:.15rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08))}.menu-list__group-label:first-child{margin-top:0;padding-top:.4rem;border-top:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
741
741
  }
742
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuGroupComponent, decorators: [{
742
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MenuGroupComponent, decorators: [{
743
743
  type: Component,
744
744
  args: [{ selector: 'app-menu-group', standalone: true, template: `
745
745
  @if (label?.trim() && !hideLabel) {
@@ -855,7 +855,7 @@ class MenuListComponent {
855
855
  'app-library-theme': true,
856
856
  [themeClass]: true,
857
857
  };
858
- });
858
+ }, ...(ngDevMode ? [{ debugName: "panelThemeNgClass" }] : /* istanbul ignore next */ []));
859
859
  }
860
860
  overlayPanelClasses() {
861
861
  return ['app-library-theme', this.appTheme.themeClass(), 'menu-submenu__cdk-panel'];
@@ -1162,19 +1162,19 @@ class MenuListComponent {
1162
1162
  break;
1163
1163
  }
1164
1164
  }
1165
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1166
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MenuListComponent, isStandalone: true, selector: "app-menu-list", inputs: { items: "items", menuId: "menuId", dense: ["dense", "dense", booleanAttribute], nested: ["nested", "nested", booleanAttribute], selectedItemId: "selectedItemId", compressText: ["compressText", "compressText", booleanAttribute] }, outputs: { itemSelect: "itemSelect", closeRequest: "closeRequest", submenuBack: "submenuBack" }, host: { listeners: { "keydown": "onKeydown($event)" } }, viewQueries: [{ propertyName: "nestedLists", predicate: MenuListComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"menu-list\"\n [class.menu-list--dense]=\"dense\"\n [class.menu-list--compress-text]=\"compressText\"\n role=\"menu\"\n [attr.aria-labelledby]=\"null\"\n tabindex=\"-1\"\n (mouseleave)=\"onMenuSurfaceLeave()\"\n>\n @for (row of rows; track idx; let idx = $index) {\n @switch (row.kind) {\n @case ('divider') {\n <app-menu-divider />\n }\n @case ('group') {\n <app-menu-group [label]=\"row.label\" [hideLabel]=\"compressText\" />\n }\n @case ('submenu') {\n <div\n class=\"menu-list__submenu-wrap\"\n cdkOverlayOrigin\n #subOrigin=\"cdkOverlayOrigin\"\n (mouseenter)=\"onSubmenuTriggerEnter(row, idx)\"\n (mouseleave)=\"onSubmenuTriggerLeave(row, idx)\"\n >\n <div\n class=\"menu-list__option menu-list__option--submenu\"\n role=\"menuitem\"\n [attr.aria-haspopup]=\"'true'\"\n [attr.aria-expanded]=\"isSubmenuOpen(row, idx)\"\n [id]=\"row.focusIndex !== null ? optionId(row.focusIndex) : null\"\n [attr.tabindex]=\"row.focusIndex !== null && !row.item.disabled ? (isActiveRow(row) ? 0 : -1) : -1\"\n [attr.aria-disabled]=\"row.item.disabled ? true : null\"\n [attr.title]=\"compressText ? row.item.label : null\"\n [attr.aria-label]=\"compressText ? row.item.label : null\"\n [class.menu-list__option--disabled]=\"row.item.disabled\"\n [class.menu-list__option--active]=\"isActiveRow(row)\"\n [class.menu-list__option--selected]=\"isRowSelected(row)\"\n (click)=\"onSubmenuRowClick($event, row, idx)\"\n (mouseenter)=\"onRowMouseEnter(row)\"\n >\n @if (row.item.icon?.trim()) {\n <span class=\"menu-list__icon\" aria-hidden=\"true\">\n <i [ngClass]=\"row.item.icon\"></i>\n </span>\n }\n <span class=\"menu-list__text\">\n <span class=\"menu-list__label\">{{ row.item.label }}</span>\n @if (row.item.description?.trim()) {\n <span class=\"menu-list__description\">{{ row.item.description }}</span>\n }\n </span>\n <span class=\"menu-list__submenu-chevron\" aria-hidden=\"true\">\u203A</span>\n </div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"subOrigin\"\n [cdkConnectedOverlayOpen]=\"isSubmenuOpen(row, idx)\"\n [cdkConnectedOverlayPositions]=\"submenuPositions\"\n [cdkConnectedOverlayPush]=\"true\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\n [cdkConnectedOverlayMinWidth]=\"200\"\n (overlayOutsideClick)=\"onSubmenuOutsideClick(row, idx)\"\n >\n <div\n class=\"menu-submenu__panel\"\n [ngClass]=\"panelThemeNgClass()\"\n (mouseenter)=\"onSubmenuPanelEnter()\"\n (mouseleave)=\"onSubmenuPanelLeave(row, idx)\"\n (click)=\"$event.stopPropagation()\"\n >\n <app-menu-list\n [items]=\"row.item.items\"\n [menuId]=\"submenuMenuId(row)\"\n [nested]=\"true\"\n [dense]=\"dense\"\n [compressText]=\"compressText\"\n [selectedItemId]=\"selectedItemId\"\n (itemSelect)=\"onNestedItemSelect($event)\"\n (closeRequest)=\"closeRequest.emit()\"\n (submenuBack)=\"closeOpenSubmenu()\"\n />\n </div>\n </ng-template>\n </div>\n }\n @case ('action') {\n <div\n class=\"menu-list__option\"\n role=\"menuitem\"\n [id]=\"row.focusIndex !== null ? optionId(row.focusIndex) : null\"\n [attr.tabindex]=\"row.focusIndex !== null && !row.item.disabled ? (isActiveRow(row) ? 0 : -1) : -1\"\n [attr.aria-disabled]=\"row.item.disabled ? true : null\"\n [attr.aria-busy]=\"row.item.loading ? true : null\"\n [attr.title]=\"compressText ? row.item.label : null\"\n [attr.aria-label]=\"compressText ? row.item.label : null\"\n [class.menu-list__option--disabled]=\"row.item.disabled\"\n [class.menu-list__option--loading]=\"row.item.loading\"\n [class.menu-list__option--danger]=\"row.item.danger\"\n [class.menu-list__option--active]=\"isActiveRow(row)\"\n [class.menu-list__option--selected]=\"isRowSelected(row)\"\n (click)=\"onItemClick($event, row.item)\"\n (mouseenter)=\"onRowMouseEnter(row)\"\n >\n @if (row.item.loading) {\n <span class=\"menu-list__icon menu-list__icon--spin\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-spinner\"></i>\n </span>\n } @else if (row.item.icon?.trim()) {\n <span class=\"menu-list__icon\" aria-hidden=\"true\">\n <i [ngClass]=\"row.item.icon\"></i>\n </span>\n }\n <span class=\"menu-list__text\">\n <span class=\"menu-list__label\">{{ row.item.label }}</span>\n @if (row.item.description?.trim()) {\n <span class=\"menu-list__description\">{{ row.item.description }}</span>\n }\n </span>\n </div>\n }\n }\n }\n</div>\n", styles: ["@charset \"UTF-8\";@keyframes app-sidebar-nav-reveal-in{0%{opacity:0;transform:translate3d(-.45rem,0,0)}to{opacity:1;transform:translateZ(0)}}:host{display:block;min-width:0;box-sizing:border-box}.menu-list{background:var(--app-color-surface, #ffffff);border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));border-radius:10px;box-shadow:0 10px 28px -14px #0f172a29;max-height:min(70vh,22rem);overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;gap:.1rem;padding:.45rem 0;outline:none}.menu-list--dense{padding:.2rem 0;gap:0}.menu-list__submenu-wrap{position:relative;display:block}.menu-list__option{display:flex;align-items:center;box-sizing:border-box;gap:.5rem;margin:0 .25rem;padding:.48rem .6rem;border-radius:8px;cursor:pointer;color:var(--app-color-text-primary, #1a2f45);background:transparent;border:1px solid transparent;text-align:left;font:inherit;line-height:1.25}.menu-list__option:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:1px}.menu-list__option:hover:not(.menu-list__option--disabled):not(.menu-list__option--loading){background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}.menu-list__option.menu-list__option--active:not(.menu-list__option--disabled):not(.menu-list__option--loading){background:color-mix(in srgb,var(--app-color-primary) 7%,transparent);border-color:transparent;box-shadow:none}.menu-list__option.menu-list__option--disabled{cursor:not-allowed;color:var(--app-color-text-muted, #6b8299);background:transparent;opacity:.72}.menu-list__option.menu-list__option--loading{cursor:wait;opacity:.92;pointer-events:none}.menu-list__option.menu-list__option--danger:not(.menu-list__option--disabled):not(.menu-list__option--loading){color:var(--app-color-error, #b91c1c)}.menu-list__option.menu-list__option--danger:not(.menu-list__option--disabled):not(.menu-list__option--loading):hover,.menu-list__option.menu-list__option--danger:not(.menu-list__option--disabled):not(.menu-list__option--loading).menu-list__option--active{background:var(--app-color-error-bg-subtle, rgba(185, 28, 28, .12));border-color:transparent;box-shadow:inset 2px 0 0 0 var(--app-color-error-border, #dc2626)}.menu-list__option--submenu{padding-right:.35rem}.menu-list__option--selected:not(.menu-list__option--disabled){background:color-mix(in srgb,var(--app-color-primary) 9%,transparent);border-radius:8px;border-color:transparent;box-shadow:inset 2px 0 0 0 var(--app-color-primary, #2b7fd9)}.menu-list__option--selected:not(.menu-list__option--disabled) .menu-list__label{color:var(--app-color-primary, #2b7fd9);font-weight:600}.menu-list__option--selected:not(.menu-list__option--disabled) .menu-list__icon{color:var(--app-color-primary, #2b7fd9)}.menu-list--compress-text .menu-list__label,.menu-list--compress-text .menu-list__description{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.menu-list--compress-text .menu-list__text,.menu-list--compress-text .menu-list__submenu-chevron{display:none}.menu-list--compress-text .menu-list__submenu-wrap{width:100%}.menu-list--compress-text .menu-list__option{justify-content:center;align-items:center;text-align:center;width:calc(100% - .5rem);max-width:100%;box-sizing:border-box;margin-left:.25rem;margin-right:.25rem;padding:.5rem .35rem}.menu-list--compress-text .menu-list__option--submenu{padding-left:.35rem;padding-right:.35rem}.menu-list--compress-text .menu-list__icon{flex:0 0 auto;width:auto;min-width:1.75rem;display:inline-flex;align-items:center;justify-content:center;padding-top:0}.menu-list__submenu-chevron{flex:0 0 auto;margin-left:auto;padding-left:.35rem;font-size:1rem;line-height:1;color:var(--app-color-text-muted, #6b8299);opacity:.85}.menu-list__icon{flex:0 0 auto;width:1.25rem;height:1.25rem;min-height:1.25rem;display:inline-flex;align-items:center;justify-content:center;text-align:center;color:var(--app-color-text-secondary, #5a7fa3);line-height:1}.menu-list__icon i{display:flex;align-items:center;justify-content:center;width:100%;height:100%;line-height:1;font-size:.95rem}.menu-list__option--disabled .menu-list__icon{opacity:.55}.menu-list__icon--spin i{animation:menu-list-spin .8s linear infinite}.menu-list__text{display:flex;flex-direction:column;gap:.1rem;min-width:0;flex:1}.menu-list__label{font-size:.875rem;font-weight:500;line-height:1.25rem;display:inline-flex;align-items:center;min-height:1.25rem}.menu-list__description{font-size:.75rem;color:var(--app-color-text-muted, #6b8299);line-height:1.3}.menu-list:not(.menu-list--compress-text){animation:app-sidebar-nav-reveal-in .45s cubic-bezier(.16,1,.32,1) both}@media (prefers-reduced-motion: reduce){.menu-list:not(.menu-list--compress-text){animation:none}}.menu-submenu__panel{box-sizing:border-box;min-width:0;padding:0;background:transparent;border:none;box-shadow:none;border-radius:10px;overflow:hidden}@keyframes menu-list-spin{to{transform:rotate(360deg)}}:host ::ng-deep .menu-submenu__cdk-panel{background:transparent;box-shadow:none;border-radius:10px}\n"], dependencies: [{ kind: "component", type: i0.forwardRef(() => MenuListComponent), selector: "app-menu-list", inputs: ["items", "menuId", "dense", "nested", "selectedItemId", "compressText"], outputs: ["itemSelect", "closeRequest", "submenuBack"] }, { kind: "directive", type: i0.forwardRef(() => NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => CdkConnectedOverlay), selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i0.forwardRef(() => CdkOverlayOrigin), selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: i0.forwardRef(() => MenuDividerComponent), selector: "app-menu-divider" }, { kind: "component", type: i0.forwardRef(() => MenuGroupComponent), selector: "app-menu-group", inputs: ["label", "hideLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1165
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MenuListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1166
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: MenuListComponent, isStandalone: true, selector: "app-menu-list", inputs: { items: "items", menuId: "menuId", dense: ["dense", "dense", booleanAttribute], nested: ["nested", "nested", booleanAttribute], selectedItemId: "selectedItemId", compressText: ["compressText", "compressText", booleanAttribute] }, outputs: { itemSelect: "itemSelect", closeRequest: "closeRequest", submenuBack: "submenuBack" }, host: { listeners: { "keydown": "onKeydown($event)" } }, viewQueries: [{ propertyName: "nestedLists", predicate: MenuListComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"menu-list\"\n [class.menu-list--dense]=\"dense\"\n [class.menu-list--compress-text]=\"compressText\"\n role=\"menu\"\n [attr.aria-labelledby]=\"null\"\n tabindex=\"-1\"\n (mouseleave)=\"onMenuSurfaceLeave()\"\n>\n @for (row of rows; track idx; let idx = $index) {\n @switch (row.kind) {\n @case ('divider') {\n <app-menu-divider />\n }\n @case ('group') {\n <app-menu-group [label]=\"row.label\" [hideLabel]=\"compressText\" />\n }\n @case ('submenu') {\n <div\n class=\"menu-list__submenu-wrap\"\n cdkOverlayOrigin\n #subOrigin=\"cdkOverlayOrigin\"\n (mouseenter)=\"onSubmenuTriggerEnter(row, idx)\"\n (mouseleave)=\"onSubmenuTriggerLeave(row, idx)\"\n >\n <div\n class=\"menu-list__option menu-list__option--submenu\"\n role=\"menuitem\"\n [attr.aria-haspopup]=\"'true'\"\n [attr.aria-expanded]=\"isSubmenuOpen(row, idx)\"\n [id]=\"row.focusIndex !== null ? optionId(row.focusIndex) : null\"\n [attr.tabindex]=\"row.focusIndex !== null && !row.item.disabled ? (isActiveRow(row) ? 0 : -1) : -1\"\n [attr.aria-disabled]=\"row.item.disabled ? true : null\"\n [attr.title]=\"compressText ? row.item.label : null\"\n [attr.aria-label]=\"compressText ? row.item.label : null\"\n [class.menu-list__option--disabled]=\"row.item.disabled\"\n [class.menu-list__option--active]=\"isActiveRow(row)\"\n [class.menu-list__option--selected]=\"isRowSelected(row)\"\n (click)=\"onSubmenuRowClick($event, row, idx)\"\n (mouseenter)=\"onRowMouseEnter(row)\"\n >\n @if (row.item.icon?.trim()) {\n <span class=\"menu-list__icon\" aria-hidden=\"true\">\n <i [ngClass]=\"row.item.icon\"></i>\n </span>\n }\n <span class=\"menu-list__text\">\n <span class=\"menu-list__label\">{{ row.item.label }}</span>\n @if (row.item.description?.trim()) {\n <span class=\"menu-list__description\">{{ row.item.description }}</span>\n }\n </span>\n <span class=\"menu-list__submenu-chevron\" aria-hidden=\"true\">\u203A</span>\n </div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"subOrigin\"\n [cdkConnectedOverlayOpen]=\"isSubmenuOpen(row, idx)\"\n [cdkConnectedOverlayPositions]=\"submenuPositions\"\n [cdkConnectedOverlayPush]=\"true\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\n [cdkConnectedOverlayMinWidth]=\"200\"\n (overlayOutsideClick)=\"onSubmenuOutsideClick(row, idx)\"\n >\n <div\n class=\"menu-submenu__panel\"\n [ngClass]=\"panelThemeNgClass()\"\n (mouseenter)=\"onSubmenuPanelEnter()\"\n (mouseleave)=\"onSubmenuPanelLeave(row, idx)\"\n (click)=\"$event.stopPropagation()\"\n >\n <app-menu-list\n [items]=\"row.item.items\"\n [menuId]=\"submenuMenuId(row)\"\n [nested]=\"true\"\n [dense]=\"dense\"\n [compressText]=\"compressText\"\n [selectedItemId]=\"selectedItemId\"\n (itemSelect)=\"onNestedItemSelect($event)\"\n (closeRequest)=\"closeRequest.emit()\"\n (submenuBack)=\"closeOpenSubmenu()\"\n />\n </div>\n </ng-template>\n </div>\n }\n @case ('action') {\n <div\n class=\"menu-list__option\"\n role=\"menuitem\"\n [id]=\"row.focusIndex !== null ? optionId(row.focusIndex) : null\"\n [attr.tabindex]=\"row.focusIndex !== null && !row.item.disabled ? (isActiveRow(row) ? 0 : -1) : -1\"\n [attr.aria-disabled]=\"row.item.disabled ? true : null\"\n [attr.aria-busy]=\"row.item.loading ? true : null\"\n [attr.title]=\"compressText ? row.item.label : null\"\n [attr.aria-label]=\"compressText ? row.item.label : null\"\n [class.menu-list__option--disabled]=\"row.item.disabled\"\n [class.menu-list__option--loading]=\"row.item.loading\"\n [class.menu-list__option--danger]=\"row.item.danger\"\n [class.menu-list__option--active]=\"isActiveRow(row)\"\n [class.menu-list__option--selected]=\"isRowSelected(row)\"\n (click)=\"onItemClick($event, row.item)\"\n (mouseenter)=\"onRowMouseEnter(row)\"\n >\n @if (row.item.loading) {\n <span class=\"menu-list__icon menu-list__icon--spin\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-spinner\"></i>\n </span>\n } @else if (row.item.icon?.trim()) {\n <span class=\"menu-list__icon\" aria-hidden=\"true\">\n <i [ngClass]=\"row.item.icon\"></i>\n </span>\n }\n <span class=\"menu-list__text\">\n <span class=\"menu-list__label\">{{ row.item.label }}</span>\n @if (row.item.description?.trim()) {\n <span class=\"menu-list__description\">{{ row.item.description }}</span>\n }\n </span>\n </div>\n }\n }\n }\n</div>\n", styles: ["@charset \"UTF-8\";@keyframes app-sidebar-nav-reveal-in{0%{opacity:0;transform:translate3d(-.45rem,0,0)}to{opacity:1;transform:translateZ(0)}}:host{display:block;min-width:0;box-sizing:border-box}.menu-list{background:var(--app-color-surface, #ffffff);border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));border-radius:10px;box-shadow:0 10px 28px -14px #0f172a29;max-height:min(70vh,22rem);overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;gap:.1rem;padding:.45rem 0;outline:none}.menu-list--dense{padding:.2rem 0;gap:0}.menu-list__submenu-wrap{position:relative;display:block}.menu-list__option{display:flex;align-items:center;box-sizing:border-box;gap:.5rem;margin:0 .25rem;padding:.48rem .6rem;border-radius:8px;cursor:pointer;color:var(--app-color-text-primary, #1a2f45);background:transparent;border:1px solid transparent;text-align:left;font:inherit;line-height:1.25}.menu-list__option:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:1px}.menu-list__option:hover:not(.menu-list__option--disabled):not(.menu-list__option--loading){background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}.menu-list__option.menu-list__option--active:not(.menu-list__option--disabled):not(.menu-list__option--loading){background:color-mix(in srgb,var(--app-color-primary) 7%,transparent);border-color:transparent;box-shadow:none}.menu-list__option.menu-list__option--disabled{cursor:not-allowed;color:var(--app-color-text-muted, #6b8299);background:transparent;opacity:.72}.menu-list__option.menu-list__option--loading{cursor:wait;opacity:.92;pointer-events:none}.menu-list__option.menu-list__option--danger:not(.menu-list__option--disabled):not(.menu-list__option--loading){color:var(--app-color-error, #b91c1c)}.menu-list__option.menu-list__option--danger:not(.menu-list__option--disabled):not(.menu-list__option--loading):hover,.menu-list__option.menu-list__option--danger:not(.menu-list__option--disabled):not(.menu-list__option--loading).menu-list__option--active{background:var(--app-color-error-bg-subtle, rgba(185, 28, 28, .12));border-color:transparent;box-shadow:inset 2px 0 0 0 var(--app-color-error-border, #dc2626)}.menu-list__option--submenu{padding-right:.35rem}.menu-list__option--selected:not(.menu-list__option--disabled){background:color-mix(in srgb,var(--app-color-primary) 9%,transparent);border-radius:8px;border-color:transparent;box-shadow:inset 2px 0 0 0 var(--app-color-primary, #2b7fd9)}.menu-list__option--selected:not(.menu-list__option--disabled) .menu-list__label{color:var(--app-color-primary, #2b7fd9);font-weight:600}.menu-list__option--selected:not(.menu-list__option--disabled) .menu-list__icon{color:var(--app-color-primary, #2b7fd9)}.menu-list--compress-text .menu-list__label,.menu-list--compress-text .menu-list__description{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.menu-list--compress-text .menu-list__text,.menu-list--compress-text .menu-list__submenu-chevron{display:none}.menu-list--compress-text .menu-list__submenu-wrap{width:100%}.menu-list--compress-text .menu-list__option{justify-content:center;align-items:center;text-align:center;width:calc(100% - .5rem);max-width:100%;box-sizing:border-box;margin-left:.25rem;margin-right:.25rem;padding:.5rem .35rem}.menu-list--compress-text .menu-list__option--submenu{padding-left:.35rem;padding-right:.35rem}.menu-list--compress-text .menu-list__icon{flex:0 0 auto;width:auto;min-width:1.75rem;display:inline-flex;align-items:center;justify-content:center;padding-top:0}.menu-list__submenu-chevron{flex:0 0 auto;margin-left:auto;padding-left:.35rem;font-size:1rem;line-height:1;color:var(--app-color-text-muted, #6b8299);opacity:.85}.menu-list__icon{flex:0 0 auto;width:1.25rem;height:1.25rem;min-height:1.25rem;display:inline-flex;align-items:center;justify-content:center;text-align:center;color:var(--app-color-text-secondary, #5a7fa3);line-height:1}.menu-list__icon i{display:flex;align-items:center;justify-content:center;width:100%;height:100%;line-height:1;font-size:.95rem}.menu-list__option--disabled .menu-list__icon{opacity:.55}.menu-list__icon--spin i{animation:menu-list-spin .8s linear infinite}.menu-list__text{display:flex;flex-direction:column;gap:.1rem;min-width:0;flex:1}.menu-list__label{font-size:.875rem;font-weight:500;line-height:1.25rem;display:inline-flex;align-items:center;min-height:1.25rem}.menu-list__description{font-size:.75rem;color:var(--app-color-text-muted, #6b8299);line-height:1.3}.menu-list:not(.menu-list--compress-text){animation:app-sidebar-nav-reveal-in .45s cubic-bezier(.16,1,.32,1) both}@media(prefers-reduced-motion:reduce){.menu-list:not(.menu-list--compress-text){animation:none}}.menu-submenu__panel{box-sizing:border-box;min-width:0;padding:0;background:transparent;border:none;box-shadow:none;border-radius:10px;overflow:hidden}@keyframes menu-list-spin{to{transform:rotate(360deg)}}:host ::ng-deep .menu-submenu__cdk-panel{background:transparent;box-shadow:none;border-radius:10px}\n"], dependencies: [{ kind: "component", type: i0.forwardRef(() => MenuListComponent), selector: "app-menu-list", inputs: ["items", "menuId", "dense", "nested", "selectedItemId", "compressText"], outputs: ["itemSelect", "closeRequest", "submenuBack"] }, { kind: "directive", type: i0.forwardRef(() => NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => CdkConnectedOverlay), selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i0.forwardRef(() => CdkOverlayOrigin), selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: i0.forwardRef(() => MenuDividerComponent), selector: "app-menu-divider" }, { kind: "component", type: i0.forwardRef(() => MenuGroupComponent), selector: "app-menu-group", inputs: ["label", "hideLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1167
1167
  }
1168
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuListComponent, decorators: [{
1168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MenuListComponent, decorators: [{
1169
1169
  type: Component,
1170
- args: [{ selector: 'app-menu-list', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
1170
+ args: [{ selector: 'app-menu-list', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
1171
1171
  NgClass,
1172
1172
  forwardRef(() => MenuListComponent),
1173
1173
  CdkConnectedOverlay,
1174
1174
  CdkOverlayOrigin,
1175
1175
  MenuDividerComponent,
1176
1176
  MenuGroupComponent,
1177
- ], template: "<div\n class=\"menu-list\"\n [class.menu-list--dense]=\"dense\"\n [class.menu-list--compress-text]=\"compressText\"\n role=\"menu\"\n [attr.aria-labelledby]=\"null\"\n tabindex=\"-1\"\n (mouseleave)=\"onMenuSurfaceLeave()\"\n>\n @for (row of rows; track idx; let idx = $index) {\n @switch (row.kind) {\n @case ('divider') {\n <app-menu-divider />\n }\n @case ('group') {\n <app-menu-group [label]=\"row.label\" [hideLabel]=\"compressText\" />\n }\n @case ('submenu') {\n <div\n class=\"menu-list__submenu-wrap\"\n cdkOverlayOrigin\n #subOrigin=\"cdkOverlayOrigin\"\n (mouseenter)=\"onSubmenuTriggerEnter(row, idx)\"\n (mouseleave)=\"onSubmenuTriggerLeave(row, idx)\"\n >\n <div\n class=\"menu-list__option menu-list__option--submenu\"\n role=\"menuitem\"\n [attr.aria-haspopup]=\"'true'\"\n [attr.aria-expanded]=\"isSubmenuOpen(row, idx)\"\n [id]=\"row.focusIndex !== null ? optionId(row.focusIndex) : null\"\n [attr.tabindex]=\"row.focusIndex !== null && !row.item.disabled ? (isActiveRow(row) ? 0 : -1) : -1\"\n [attr.aria-disabled]=\"row.item.disabled ? true : null\"\n [attr.title]=\"compressText ? row.item.label : null\"\n [attr.aria-label]=\"compressText ? row.item.label : null\"\n [class.menu-list__option--disabled]=\"row.item.disabled\"\n [class.menu-list__option--active]=\"isActiveRow(row)\"\n [class.menu-list__option--selected]=\"isRowSelected(row)\"\n (click)=\"onSubmenuRowClick($event, row, idx)\"\n (mouseenter)=\"onRowMouseEnter(row)\"\n >\n @if (row.item.icon?.trim()) {\n <span class=\"menu-list__icon\" aria-hidden=\"true\">\n <i [ngClass]=\"row.item.icon\"></i>\n </span>\n }\n <span class=\"menu-list__text\">\n <span class=\"menu-list__label\">{{ row.item.label }}</span>\n @if (row.item.description?.trim()) {\n <span class=\"menu-list__description\">{{ row.item.description }}</span>\n }\n </span>\n <span class=\"menu-list__submenu-chevron\" aria-hidden=\"true\">\u203A</span>\n </div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"subOrigin\"\n [cdkConnectedOverlayOpen]=\"isSubmenuOpen(row, idx)\"\n [cdkConnectedOverlayPositions]=\"submenuPositions\"\n [cdkConnectedOverlayPush]=\"true\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\n [cdkConnectedOverlayMinWidth]=\"200\"\n (overlayOutsideClick)=\"onSubmenuOutsideClick(row, idx)\"\n >\n <div\n class=\"menu-submenu__panel\"\n [ngClass]=\"panelThemeNgClass()\"\n (mouseenter)=\"onSubmenuPanelEnter()\"\n (mouseleave)=\"onSubmenuPanelLeave(row, idx)\"\n (click)=\"$event.stopPropagation()\"\n >\n <app-menu-list\n [items]=\"row.item.items\"\n [menuId]=\"submenuMenuId(row)\"\n [nested]=\"true\"\n [dense]=\"dense\"\n [compressText]=\"compressText\"\n [selectedItemId]=\"selectedItemId\"\n (itemSelect)=\"onNestedItemSelect($event)\"\n (closeRequest)=\"closeRequest.emit()\"\n (submenuBack)=\"closeOpenSubmenu()\"\n />\n </div>\n </ng-template>\n </div>\n }\n @case ('action') {\n <div\n class=\"menu-list__option\"\n role=\"menuitem\"\n [id]=\"row.focusIndex !== null ? optionId(row.focusIndex) : null\"\n [attr.tabindex]=\"row.focusIndex !== null && !row.item.disabled ? (isActiveRow(row) ? 0 : -1) : -1\"\n [attr.aria-disabled]=\"row.item.disabled ? true : null\"\n [attr.aria-busy]=\"row.item.loading ? true : null\"\n [attr.title]=\"compressText ? row.item.label : null\"\n [attr.aria-label]=\"compressText ? row.item.label : null\"\n [class.menu-list__option--disabled]=\"row.item.disabled\"\n [class.menu-list__option--loading]=\"row.item.loading\"\n [class.menu-list__option--danger]=\"row.item.danger\"\n [class.menu-list__option--active]=\"isActiveRow(row)\"\n [class.menu-list__option--selected]=\"isRowSelected(row)\"\n (click)=\"onItemClick($event, row.item)\"\n (mouseenter)=\"onRowMouseEnter(row)\"\n >\n @if (row.item.loading) {\n <span class=\"menu-list__icon menu-list__icon--spin\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-spinner\"></i>\n </span>\n } @else if (row.item.icon?.trim()) {\n <span class=\"menu-list__icon\" aria-hidden=\"true\">\n <i [ngClass]=\"row.item.icon\"></i>\n </span>\n }\n <span class=\"menu-list__text\">\n <span class=\"menu-list__label\">{{ row.item.label }}</span>\n @if (row.item.description?.trim()) {\n <span class=\"menu-list__description\">{{ row.item.description }}</span>\n }\n </span>\n </div>\n }\n }\n }\n</div>\n", styles: ["@charset \"UTF-8\";@keyframes app-sidebar-nav-reveal-in{0%{opacity:0;transform:translate3d(-.45rem,0,0)}to{opacity:1;transform:translateZ(0)}}:host{display:block;min-width:0;box-sizing:border-box}.menu-list{background:var(--app-color-surface, #ffffff);border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));border-radius:10px;box-shadow:0 10px 28px -14px #0f172a29;max-height:min(70vh,22rem);overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;gap:.1rem;padding:.45rem 0;outline:none}.menu-list--dense{padding:.2rem 0;gap:0}.menu-list__submenu-wrap{position:relative;display:block}.menu-list__option{display:flex;align-items:center;box-sizing:border-box;gap:.5rem;margin:0 .25rem;padding:.48rem .6rem;border-radius:8px;cursor:pointer;color:var(--app-color-text-primary, #1a2f45);background:transparent;border:1px solid transparent;text-align:left;font:inherit;line-height:1.25}.menu-list__option:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:1px}.menu-list__option:hover:not(.menu-list__option--disabled):not(.menu-list__option--loading){background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}.menu-list__option.menu-list__option--active:not(.menu-list__option--disabled):not(.menu-list__option--loading){background:color-mix(in srgb,var(--app-color-primary) 7%,transparent);border-color:transparent;box-shadow:none}.menu-list__option.menu-list__option--disabled{cursor:not-allowed;color:var(--app-color-text-muted, #6b8299);background:transparent;opacity:.72}.menu-list__option.menu-list__option--loading{cursor:wait;opacity:.92;pointer-events:none}.menu-list__option.menu-list__option--danger:not(.menu-list__option--disabled):not(.menu-list__option--loading){color:var(--app-color-error, #b91c1c)}.menu-list__option.menu-list__option--danger:not(.menu-list__option--disabled):not(.menu-list__option--loading):hover,.menu-list__option.menu-list__option--danger:not(.menu-list__option--disabled):not(.menu-list__option--loading).menu-list__option--active{background:var(--app-color-error-bg-subtle, rgba(185, 28, 28, .12));border-color:transparent;box-shadow:inset 2px 0 0 0 var(--app-color-error-border, #dc2626)}.menu-list__option--submenu{padding-right:.35rem}.menu-list__option--selected:not(.menu-list__option--disabled){background:color-mix(in srgb,var(--app-color-primary) 9%,transparent);border-radius:8px;border-color:transparent;box-shadow:inset 2px 0 0 0 var(--app-color-primary, #2b7fd9)}.menu-list__option--selected:not(.menu-list__option--disabled) .menu-list__label{color:var(--app-color-primary, #2b7fd9);font-weight:600}.menu-list__option--selected:not(.menu-list__option--disabled) .menu-list__icon{color:var(--app-color-primary, #2b7fd9)}.menu-list--compress-text .menu-list__label,.menu-list--compress-text .menu-list__description{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.menu-list--compress-text .menu-list__text,.menu-list--compress-text .menu-list__submenu-chevron{display:none}.menu-list--compress-text .menu-list__submenu-wrap{width:100%}.menu-list--compress-text .menu-list__option{justify-content:center;align-items:center;text-align:center;width:calc(100% - .5rem);max-width:100%;box-sizing:border-box;margin-left:.25rem;margin-right:.25rem;padding:.5rem .35rem}.menu-list--compress-text .menu-list__option--submenu{padding-left:.35rem;padding-right:.35rem}.menu-list--compress-text .menu-list__icon{flex:0 0 auto;width:auto;min-width:1.75rem;display:inline-flex;align-items:center;justify-content:center;padding-top:0}.menu-list__submenu-chevron{flex:0 0 auto;margin-left:auto;padding-left:.35rem;font-size:1rem;line-height:1;color:var(--app-color-text-muted, #6b8299);opacity:.85}.menu-list__icon{flex:0 0 auto;width:1.25rem;height:1.25rem;min-height:1.25rem;display:inline-flex;align-items:center;justify-content:center;text-align:center;color:var(--app-color-text-secondary, #5a7fa3);line-height:1}.menu-list__icon i{display:flex;align-items:center;justify-content:center;width:100%;height:100%;line-height:1;font-size:.95rem}.menu-list__option--disabled .menu-list__icon{opacity:.55}.menu-list__icon--spin i{animation:menu-list-spin .8s linear infinite}.menu-list__text{display:flex;flex-direction:column;gap:.1rem;min-width:0;flex:1}.menu-list__label{font-size:.875rem;font-weight:500;line-height:1.25rem;display:inline-flex;align-items:center;min-height:1.25rem}.menu-list__description{font-size:.75rem;color:var(--app-color-text-muted, #6b8299);line-height:1.3}.menu-list:not(.menu-list--compress-text){animation:app-sidebar-nav-reveal-in .45s cubic-bezier(.16,1,.32,1) both}@media (prefers-reduced-motion: reduce){.menu-list:not(.menu-list--compress-text){animation:none}}.menu-submenu__panel{box-sizing:border-box;min-width:0;padding:0;background:transparent;border:none;box-shadow:none;border-radius:10px;overflow:hidden}@keyframes menu-list-spin{to{transform:rotate(360deg)}}:host ::ng-deep .menu-submenu__cdk-panel{background:transparent;box-shadow:none;border-radius:10px}\n"] }]
1177
+ ], template: "<div\n class=\"menu-list\"\n [class.menu-list--dense]=\"dense\"\n [class.menu-list--compress-text]=\"compressText\"\n role=\"menu\"\n [attr.aria-labelledby]=\"null\"\n tabindex=\"-1\"\n (mouseleave)=\"onMenuSurfaceLeave()\"\n>\n @for (row of rows; track idx; let idx = $index) {\n @switch (row.kind) {\n @case ('divider') {\n <app-menu-divider />\n }\n @case ('group') {\n <app-menu-group [label]=\"row.label\" [hideLabel]=\"compressText\" />\n }\n @case ('submenu') {\n <div\n class=\"menu-list__submenu-wrap\"\n cdkOverlayOrigin\n #subOrigin=\"cdkOverlayOrigin\"\n (mouseenter)=\"onSubmenuTriggerEnter(row, idx)\"\n (mouseleave)=\"onSubmenuTriggerLeave(row, idx)\"\n >\n <div\n class=\"menu-list__option menu-list__option--submenu\"\n role=\"menuitem\"\n [attr.aria-haspopup]=\"'true'\"\n [attr.aria-expanded]=\"isSubmenuOpen(row, idx)\"\n [id]=\"row.focusIndex !== null ? optionId(row.focusIndex) : null\"\n [attr.tabindex]=\"row.focusIndex !== null && !row.item.disabled ? (isActiveRow(row) ? 0 : -1) : -1\"\n [attr.aria-disabled]=\"row.item.disabled ? true : null\"\n [attr.title]=\"compressText ? row.item.label : null\"\n [attr.aria-label]=\"compressText ? row.item.label : null\"\n [class.menu-list__option--disabled]=\"row.item.disabled\"\n [class.menu-list__option--active]=\"isActiveRow(row)\"\n [class.menu-list__option--selected]=\"isRowSelected(row)\"\n (click)=\"onSubmenuRowClick($event, row, idx)\"\n (mouseenter)=\"onRowMouseEnter(row)\"\n >\n @if (row.item.icon?.trim()) {\n <span class=\"menu-list__icon\" aria-hidden=\"true\">\n <i [ngClass]=\"row.item.icon\"></i>\n </span>\n }\n <span class=\"menu-list__text\">\n <span class=\"menu-list__label\">{{ row.item.label }}</span>\n @if (row.item.description?.trim()) {\n <span class=\"menu-list__description\">{{ row.item.description }}</span>\n }\n </span>\n <span class=\"menu-list__submenu-chevron\" aria-hidden=\"true\">\u203A</span>\n </div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"subOrigin\"\n [cdkConnectedOverlayOpen]=\"isSubmenuOpen(row, idx)\"\n [cdkConnectedOverlayPositions]=\"submenuPositions\"\n [cdkConnectedOverlayPush]=\"true\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\n [cdkConnectedOverlayMinWidth]=\"200\"\n (overlayOutsideClick)=\"onSubmenuOutsideClick(row, idx)\"\n >\n <div\n class=\"menu-submenu__panel\"\n [ngClass]=\"panelThemeNgClass()\"\n (mouseenter)=\"onSubmenuPanelEnter()\"\n (mouseleave)=\"onSubmenuPanelLeave(row, idx)\"\n (click)=\"$event.stopPropagation()\"\n >\n <app-menu-list\n [items]=\"row.item.items\"\n [menuId]=\"submenuMenuId(row)\"\n [nested]=\"true\"\n [dense]=\"dense\"\n [compressText]=\"compressText\"\n [selectedItemId]=\"selectedItemId\"\n (itemSelect)=\"onNestedItemSelect($event)\"\n (closeRequest)=\"closeRequest.emit()\"\n (submenuBack)=\"closeOpenSubmenu()\"\n />\n </div>\n </ng-template>\n </div>\n }\n @case ('action') {\n <div\n class=\"menu-list__option\"\n role=\"menuitem\"\n [id]=\"row.focusIndex !== null ? optionId(row.focusIndex) : null\"\n [attr.tabindex]=\"row.focusIndex !== null && !row.item.disabled ? (isActiveRow(row) ? 0 : -1) : -1\"\n [attr.aria-disabled]=\"row.item.disabled ? true : null\"\n [attr.aria-busy]=\"row.item.loading ? true : null\"\n [attr.title]=\"compressText ? row.item.label : null\"\n [attr.aria-label]=\"compressText ? row.item.label : null\"\n [class.menu-list__option--disabled]=\"row.item.disabled\"\n [class.menu-list__option--loading]=\"row.item.loading\"\n [class.menu-list__option--danger]=\"row.item.danger\"\n [class.menu-list__option--active]=\"isActiveRow(row)\"\n [class.menu-list__option--selected]=\"isRowSelected(row)\"\n (click)=\"onItemClick($event, row.item)\"\n (mouseenter)=\"onRowMouseEnter(row)\"\n >\n @if (row.item.loading) {\n <span class=\"menu-list__icon menu-list__icon--spin\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-spinner\"></i>\n </span>\n } @else if (row.item.icon?.trim()) {\n <span class=\"menu-list__icon\" aria-hidden=\"true\">\n <i [ngClass]=\"row.item.icon\"></i>\n </span>\n }\n <span class=\"menu-list__text\">\n <span class=\"menu-list__label\">{{ row.item.label }}</span>\n @if (row.item.description?.trim()) {\n <span class=\"menu-list__description\">{{ row.item.description }}</span>\n }\n </span>\n </div>\n }\n }\n }\n</div>\n", styles: ["@charset \"UTF-8\";@keyframes app-sidebar-nav-reveal-in{0%{opacity:0;transform:translate3d(-.45rem,0,0)}to{opacity:1;transform:translateZ(0)}}:host{display:block;min-width:0;box-sizing:border-box}.menu-list{background:var(--app-color-surface, #ffffff);border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));border-radius:10px;box-shadow:0 10px 28px -14px #0f172a29;max-height:min(70vh,22rem);overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;gap:.1rem;padding:.45rem 0;outline:none}.menu-list--dense{padding:.2rem 0;gap:0}.menu-list__submenu-wrap{position:relative;display:block}.menu-list__option{display:flex;align-items:center;box-sizing:border-box;gap:.5rem;margin:0 .25rem;padding:.48rem .6rem;border-radius:8px;cursor:pointer;color:var(--app-color-text-primary, #1a2f45);background:transparent;border:1px solid transparent;text-align:left;font:inherit;line-height:1.25}.menu-list__option:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:1px}.menu-list__option:hover:not(.menu-list__option--disabled):not(.menu-list__option--loading){background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}.menu-list__option.menu-list__option--active:not(.menu-list__option--disabled):not(.menu-list__option--loading){background:color-mix(in srgb,var(--app-color-primary) 7%,transparent);border-color:transparent;box-shadow:none}.menu-list__option.menu-list__option--disabled{cursor:not-allowed;color:var(--app-color-text-muted, #6b8299);background:transparent;opacity:.72}.menu-list__option.menu-list__option--loading{cursor:wait;opacity:.92;pointer-events:none}.menu-list__option.menu-list__option--danger:not(.menu-list__option--disabled):not(.menu-list__option--loading){color:var(--app-color-error, #b91c1c)}.menu-list__option.menu-list__option--danger:not(.menu-list__option--disabled):not(.menu-list__option--loading):hover,.menu-list__option.menu-list__option--danger:not(.menu-list__option--disabled):not(.menu-list__option--loading).menu-list__option--active{background:var(--app-color-error-bg-subtle, rgba(185, 28, 28, .12));border-color:transparent;box-shadow:inset 2px 0 0 0 var(--app-color-error-border, #dc2626)}.menu-list__option--submenu{padding-right:.35rem}.menu-list__option--selected:not(.menu-list__option--disabled){background:color-mix(in srgb,var(--app-color-primary) 9%,transparent);border-radius:8px;border-color:transparent;box-shadow:inset 2px 0 0 0 var(--app-color-primary, #2b7fd9)}.menu-list__option--selected:not(.menu-list__option--disabled) .menu-list__label{color:var(--app-color-primary, #2b7fd9);font-weight:600}.menu-list__option--selected:not(.menu-list__option--disabled) .menu-list__icon{color:var(--app-color-primary, #2b7fd9)}.menu-list--compress-text .menu-list__label,.menu-list--compress-text .menu-list__description{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.menu-list--compress-text .menu-list__text,.menu-list--compress-text .menu-list__submenu-chevron{display:none}.menu-list--compress-text .menu-list__submenu-wrap{width:100%}.menu-list--compress-text .menu-list__option{justify-content:center;align-items:center;text-align:center;width:calc(100% - .5rem);max-width:100%;box-sizing:border-box;margin-left:.25rem;margin-right:.25rem;padding:.5rem .35rem}.menu-list--compress-text .menu-list__option--submenu{padding-left:.35rem;padding-right:.35rem}.menu-list--compress-text .menu-list__icon{flex:0 0 auto;width:auto;min-width:1.75rem;display:inline-flex;align-items:center;justify-content:center;padding-top:0}.menu-list__submenu-chevron{flex:0 0 auto;margin-left:auto;padding-left:.35rem;font-size:1rem;line-height:1;color:var(--app-color-text-muted, #6b8299);opacity:.85}.menu-list__icon{flex:0 0 auto;width:1.25rem;height:1.25rem;min-height:1.25rem;display:inline-flex;align-items:center;justify-content:center;text-align:center;color:var(--app-color-text-secondary, #5a7fa3);line-height:1}.menu-list__icon i{display:flex;align-items:center;justify-content:center;width:100%;height:100%;line-height:1;font-size:.95rem}.menu-list__option--disabled .menu-list__icon{opacity:.55}.menu-list__icon--spin i{animation:menu-list-spin .8s linear infinite}.menu-list__text{display:flex;flex-direction:column;gap:.1rem;min-width:0;flex:1}.menu-list__label{font-size:.875rem;font-weight:500;line-height:1.25rem;display:inline-flex;align-items:center;min-height:1.25rem}.menu-list__description{font-size:.75rem;color:var(--app-color-text-muted, #6b8299);line-height:1.3}.menu-list:not(.menu-list--compress-text){animation:app-sidebar-nav-reveal-in .45s cubic-bezier(.16,1,.32,1) both}@media(prefers-reduced-motion:reduce){.menu-list:not(.menu-list--compress-text){animation:none}}.menu-submenu__panel{box-sizing:border-box;min-width:0;padding:0;background:transparent;border:none;box-shadow:none;border-radius:10px;overflow:hidden}@keyframes menu-list-spin{to{transform:rotate(360deg)}}:host ::ng-deep .menu-submenu__cdk-panel{background:transparent;box-shadow:none;border-radius:10px}\n"] }]
1178
1178
  }], propDecorators: { items: [{
1179
1179
  type: Input,
1180
1180
  args: [{ required: true }]
@@ -1308,12 +1308,12 @@ class DropdownMenuComponent {
1308
1308
  onCloseRequest() {
1309
1309
  this.setOpen(false);
1310
1310
  }
1311
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1312
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: DropdownMenuComponent, isStandalone: true, selector: "app-dropdown-menu", inputs: { items: "items", placement: "placement", minWidthPx: "minWidthPx", matchTriggerWidth: ["matchTriggerWidth", "matchTriggerWidth", booleanAttribute], menuId: "menuId" }, outputs: { itemSelect: "itemSelect", openChange: "openChange" }, viewQueries: [{ propertyName: "panelTpl", first: true, predicate: ["panelTpl"], descendants: true, static: true }, { propertyName: "menuList", first: true, predicate: MenuListComponent, descendants: true }], ngImport: i0, template: "<app-dropdown-base\r\n class=\"dropdown-menu\"\r\n [open]=\"open\"\r\n (openChange)=\"onBaseOpenChange($event)\"\r\n [panelTemplate]=\"panelTpl\"\r\n [panelWidthPx]=\"effectivePanelWidth\"\r\n [connectedPositions]=\"connectedPositions\"\r\n [pushConnectedOverlay]=\"true\"\r\n [hasBackdrop]=\"true\"\r\n [closeOnEscape]=\"true\"\r\n [bareOverlayPanel]=\"true\"\r\n>\r\n <span\r\n class=\"dropdown-menu__trigger-slot\"\r\n appDropdownTrigger\r\n (click)=\"onTriggerClick($event)\"\r\n [attr.aria-expanded]=\"open\"\r\n aria-haspopup=\"menu\"\r\n >\r\n <ng-content />\r\n </span>\r\n</app-dropdown-base>\r\n\r\n<ng-template #panelTpl>\r\n <div class=\"dropdown-menu__panel-inner\">\r\n <app-menu-list\r\n [items]=\"items\"\r\n [menuId]=\"resolvedMenuId\"\r\n (itemSelect)=\"onItemSelect($event)\"\r\n (closeRequest)=\"onCloseRequest()\"\r\n />\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:inline-block;max-width:100%;vertical-align:middle}.dropdown-menu{display:inline-flex;max-width:100%;min-width:0}.dropdown-menu__trigger-slot{display:inline-flex;max-width:100%;min-width:0;cursor:pointer}.dropdown-menu__panel-inner{box-sizing:border-box;min-width:0}\n"], dependencies: [{ kind: "component", type: DropdownBaseComponent, selector: "app-dropdown-base", inputs: ["open", "panelTemplate", "panelWidthPx", "closeOnEscape", "hasBackdrop", "connectedPositions", "pushConnectedOverlay", "bareOverlayPanel"], outputs: ["openChange"] }, { kind: "component", type: MenuListComponent, selector: "app-menu-list", inputs: ["items", "menuId", "dense", "nested", "selectedItemId", "compressText"], outputs: ["itemSelect", "closeRequest", "submenuBack"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1311
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DropdownMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1312
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: DropdownMenuComponent, isStandalone: true, selector: "app-dropdown-menu", inputs: { items: "items", placement: "placement", minWidthPx: "minWidthPx", matchTriggerWidth: ["matchTriggerWidth", "matchTriggerWidth", booleanAttribute], menuId: "menuId" }, outputs: { itemSelect: "itemSelect", openChange: "openChange" }, viewQueries: [{ propertyName: "panelTpl", first: true, predicate: ["panelTpl"], descendants: true, static: true }, { propertyName: "menuList", first: true, predicate: MenuListComponent, descendants: true }], ngImport: i0, template: "<app-dropdown-base\r\n class=\"dropdown-menu\"\r\n [open]=\"open\"\r\n (openChange)=\"onBaseOpenChange($event)\"\r\n [panelTemplate]=\"panelTpl\"\r\n [panelWidthPx]=\"effectivePanelWidth\"\r\n [connectedPositions]=\"connectedPositions\"\r\n [pushConnectedOverlay]=\"true\"\r\n [hasBackdrop]=\"true\"\r\n [closeOnEscape]=\"true\"\r\n [bareOverlayPanel]=\"true\"\r\n>\r\n <span\r\n class=\"dropdown-menu__trigger-slot\"\r\n appDropdownTrigger\r\n (click)=\"onTriggerClick($event)\"\r\n [attr.aria-expanded]=\"open\"\r\n aria-haspopup=\"menu\"\r\n >\r\n <ng-content />\r\n </span>\r\n</app-dropdown-base>\r\n\r\n<ng-template #panelTpl>\r\n <div class=\"dropdown-menu__panel-inner\">\r\n <app-menu-list\r\n [items]=\"items\"\r\n [menuId]=\"resolvedMenuId\"\r\n (itemSelect)=\"onItemSelect($event)\"\r\n (closeRequest)=\"onCloseRequest()\"\r\n />\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:inline-block;max-width:100%;vertical-align:middle}.dropdown-menu{display:inline-flex;max-width:100%;min-width:0}.dropdown-menu__trigger-slot{display:inline-flex;max-width:100%;min-width:0;cursor:pointer}.dropdown-menu__panel-inner{box-sizing:border-box;min-width:0}\n"], dependencies: [{ kind: "component", type: DropdownBaseComponent, selector: "app-dropdown-base", inputs: ["open", "panelTemplate", "panelWidthPx", "closeOnEscape", "hasBackdrop", "connectedPositions", "pushConnectedOverlay", "bareOverlayPanel"], outputs: ["openChange"] }, { kind: "component", type: MenuListComponent, selector: "app-menu-list", inputs: ["items", "menuId", "dense", "nested", "selectedItemId", "compressText"], outputs: ["itemSelect", "closeRequest", "submenuBack"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1313
1313
  }
1314
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownMenuComponent, decorators: [{
1314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DropdownMenuComponent, decorators: [{
1315
1315
  type: Component,
1316
- args: [{ selector: 'app-dropdown-menu', standalone: true, imports: [DropdownBaseComponent, MenuListComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-dropdown-base\r\n class=\"dropdown-menu\"\r\n [open]=\"open\"\r\n (openChange)=\"onBaseOpenChange($event)\"\r\n [panelTemplate]=\"panelTpl\"\r\n [panelWidthPx]=\"effectivePanelWidth\"\r\n [connectedPositions]=\"connectedPositions\"\r\n [pushConnectedOverlay]=\"true\"\r\n [hasBackdrop]=\"true\"\r\n [closeOnEscape]=\"true\"\r\n [bareOverlayPanel]=\"true\"\r\n>\r\n <span\r\n class=\"dropdown-menu__trigger-slot\"\r\n appDropdownTrigger\r\n (click)=\"onTriggerClick($event)\"\r\n [attr.aria-expanded]=\"open\"\r\n aria-haspopup=\"menu\"\r\n >\r\n <ng-content />\r\n </span>\r\n</app-dropdown-base>\r\n\r\n<ng-template #panelTpl>\r\n <div class=\"dropdown-menu__panel-inner\">\r\n <app-menu-list\r\n [items]=\"items\"\r\n [menuId]=\"resolvedMenuId\"\r\n (itemSelect)=\"onItemSelect($event)\"\r\n (closeRequest)=\"onCloseRequest()\"\r\n />\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:inline-block;max-width:100%;vertical-align:middle}.dropdown-menu{display:inline-flex;max-width:100%;min-width:0}.dropdown-menu__trigger-slot{display:inline-flex;max-width:100%;min-width:0;cursor:pointer}.dropdown-menu__panel-inner{box-sizing:border-box;min-width:0}\n"] }]
1316
+ args: [{ selector: 'app-dropdown-menu', imports: [DropdownBaseComponent, MenuListComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-dropdown-base\r\n class=\"dropdown-menu\"\r\n [open]=\"open\"\r\n (openChange)=\"onBaseOpenChange($event)\"\r\n [panelTemplate]=\"panelTpl\"\r\n [panelWidthPx]=\"effectivePanelWidth\"\r\n [connectedPositions]=\"connectedPositions\"\r\n [pushConnectedOverlay]=\"true\"\r\n [hasBackdrop]=\"true\"\r\n [closeOnEscape]=\"true\"\r\n [bareOverlayPanel]=\"true\"\r\n>\r\n <span\r\n class=\"dropdown-menu__trigger-slot\"\r\n appDropdownTrigger\r\n (click)=\"onTriggerClick($event)\"\r\n [attr.aria-expanded]=\"open\"\r\n aria-haspopup=\"menu\"\r\n >\r\n <ng-content />\r\n </span>\r\n</app-dropdown-base>\r\n\r\n<ng-template #panelTpl>\r\n <div class=\"dropdown-menu__panel-inner\">\r\n <app-menu-list\r\n [items]=\"items\"\r\n [menuId]=\"resolvedMenuId\"\r\n (itemSelect)=\"onItemSelect($event)\"\r\n (closeRequest)=\"onCloseRequest()\"\r\n />\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:inline-block;max-width:100%;vertical-align:middle}.dropdown-menu{display:inline-flex;max-width:100%;min-width:0}.dropdown-menu__trigger-slot{display:inline-flex;max-width:100%;min-width:0;cursor:pointer}.dropdown-menu__panel-inner{box-sizing:border-box;min-width:0}\n"] }]
1317
1317
  }], propDecorators: { items: [{
1318
1318
  type: Input,
1319
1319
  args: [{ required: true }]
@@ -1429,12 +1429,12 @@ class BaseFieldComponent {
1429
1429
  onContextMenuItemSelect(id) {
1430
1430
  this.contextMenuSelect.emit(id);
1431
1431
  }
1432
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1433
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BaseFieldComponent, isStandalone: true, selector: "app-base-field", inputs: { label: "label", errorMessage: "errorMessage", required: "required", showRequiredMark: "showRequiredMark", invalid: "invalid", filled: "filled", disabled: "disabled", readonly: "readonly", inputId: "inputId", errorId: "errorId", showPrefixIcon: "showPrefixIcon", prefixIcon: "prefixIcon", clearable: "clearable", clearAriaLabel: "clearAriaLabel", showSuffixSlot: "showSuffixSlot", valueAlignEnd: "valueAlignEnd", loading: ["loading", "loading", booleanAttribute], skeletonVariant: "skeletonVariant", mostrarMenuContexto: ["mostrarMenuContexto", "mostrarMenuContexto", booleanAttribute], contextMenuItems: "contextMenuItems", contextMenuId: "contextMenuId" }, outputs: { clear: "clear", contextMenuSelect: "contextMenuSelect" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"base-field\" [class.base-field--invalid]=\"invalid\" [class.base-field--filled]=\"filled\"\n [class.base-field--disabled]=\"disabled\" [class.base-field--readonly]=\"readonly\"\n [class.base-field--loading]=\"loading\" [attr.aria-busy]=\"loading ? true : null\"\n [attr.aria-label]=\"loading && showFloatTpl ? label : null\">\n <div class=\"base-field__box\">\n <div class=\"base-field__prefix\">\n @if (!loading) {\n <ng-content select=\"[appFieldPrefix]\" />\n }\n @if (showFaTpl) {\n <i [attr.class]=\"prefixIconClassTpl + (loading ? ' base-field__prefix-icon--loading-dim' : '')\"\n aria-hidden=\"true\"></i>\n }\n </div>\n\n <div class=\"base-field__field\">\n @if (showFloatTpl && !loading) {\n <label class=\"base-field__float-label\" [attr.for]=\"inputId || null\">\n {{ label }}\n @if (required && showRequiredMark) {\n <span class=\"base-field__required\" aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n <div class=\"base-field__control\" [class.base-field__control--value-end]=\"valueAlignEnd\">\n @if (!loading) {\n <ng-content />\n } @else {\n <app-skeleton-field-shell [variant]=\"skeletonVariant\" [showLeadingIcon]=\"!showFaTpl\" />\n }\n </div>\n </div>\n\n @if (showSuffixTpl) {\n <div class=\"base-field__suffix\" [class.base-field__suffix--loading]=\"loading\">\n @if (!loading) {\n @if (showCtxMenuTpl) {\n <app-dropdown-menu\n class=\"base-field__ctx-dropdown\"\n [items]=\"contextMenuItems\"\n [minWidthPx]=\"200\"\n [matchTriggerWidth]=\"false\"\n [menuId]=\"resolvedContextMenuId\"\n (itemSelect)=\"onContextMenuItemSelect($event)\"\n >\n <button type=\"button\" class=\"base-field__ctx-trigger\" aria-label=\"Mais op\u00E7\u00F5es\" tabindex=\"-1\">\n <i class=\"fa-solid fa-ellipsis\" aria-hidden=\"true\"></i>\n </button>\n </app-dropdown-menu>\n }\n @if (showSuffixSlot) {\n <ng-content select=\"[appFieldSuffix]\" />\n }\n @if (showClearTpl) {\n <button type=\"button\" class=\"base-field__clear\" tabindex=\"-1\" [attr.aria-label]=\"clearAriaLabel\"\n (click)=\"onClearClick()\">\n <span class=\"base-field__clear-x\" aria-hidden=\"true\">&times;</span>\n </button>\n }\n } @else if (loading && showSuffixSlot) {\n <span class=\"base-field__suffix-reserve\" aria-hidden=\"true\"></span>\n }\n </div>\n }\n </div>\n\n @if (!loading && showErrorTpl) {\n <p class=\"base-field__error\" [id]=\"errorId || null\" role=\"alert\">\n {{ errorMessage }}\n </p>\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.base-field{display:flex;flex-direction:column;gap:.35rem;width:100%;max-width:100%;box-sizing:border-box}.base-field--loading .base-field__box{pointer-events:none}.base-field--loading .base-field__field{justify-content:center}.base-field--loading .base-field__control{display:flex;align-items:center;width:100%;min-height:0}.base-field__box{display:flex;align-items:stretch;width:100%;min-width:0;border:1px solid var(--ui-field-float-border);border-radius:var(--ui-field-float-border-radius);background:var(--ui-field-float-bg);transition:border-color .1s ease,box-shadow .1s ease;contain:layout}.base-field:not(.base-field--invalid):not(.base-field--disabled):not(.base-field--readonly) .base-field__box:focus-within{border-color:var(--ui-field-float-border-focus);box-shadow:0 0 0 3px var(--ui-field-float-focus-ring)}.base-field--readonly:not(.base-field--disabled) .base-field__box{background:var(--ui-field-readonly-bg);border-color:var(--ui-field-readonly-border)}.base-field--readonly:not(.base-field--disabled):not(.base-field--invalid) .base-field__box:focus-within{border-color:var(--ui-field-readonly-border-focus);box-shadow:0 0 0 3px var(--ui-field-readonly-focus-ring)}.base-field--invalid .base-field__box{border-color:var(--ui-field-input-invalid-border);box-shadow:none;background:var(--ui-field-invalid-input-bg, #fef2f2)}.base-field--readonly.base-field--invalid:not(.base-field--disabled) .base-field__box{background:var(--ui-field-invalid-input-bg, #fef2f2)}.base-field--invalid:not(.base-field--disabled):not(.base-field--readonly) .base-field__box:focus-within{border-color:var(--ui-field-input-invalid-border);box-shadow:0 0 0 3px var(--ui-field-input-invalid-focus-halo)}.base-field--invalid.base-field--readonly:not(.base-field--disabled) .base-field__box:focus-within{border-color:var(--ui-field-input-invalid-border);box-shadow:0 0 0 3px var(--ui-field-input-invalid-focus-halo)}.base-field--disabled .base-field__box{opacity:var(--ui-field-input-disabled-opacity)}.base-field__prefix{display:flex;align-items:center;justify-content:center;flex-shrink:0;padding-left:.75rem;color:var(--ui-field-float-prefix-color);user-select:none;-webkit-user-select:none}.base-field__prefix:empty{display:none}.base-field__prefix-icon{font-style:normal;font-size:1rem;line-height:1;color:var(--ui-field-float-prefix-color)}.base-field__prefix-icon--loading-dim{opacity:.34;pointer-events:none}.base-field__suffix{display:flex;align-items:center;justify-content:center;flex-shrink:0;padding-right:.4rem;padding-left:.1rem}.base-field__ctx-dropdown{display:inline-flex;flex-shrink:0;align-items:center;max-width:100%}.base-field__ctx-trigger{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,color .15s ease}.base-field__ctx-trigger:hover{background:var(--app-color-prefix-hover-bg, rgba(90, 127, 163, .15));color:var(--ui-field-float-label-top-color)}.base-field__ctx-trigger:focus,.base-field__ctx-trigger:focus-visible{outline:none}.base-field__clear{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,color .15s ease}.base-field__clear:hover{background:var(--app-color-prefix-hover-bg, rgba(90, 127, 163, .15));color:var(--ui-field-float-label-top-color)}.base-field__clear:focus,.base-field__clear:focus-visible{outline:none}.base-field__clear-x{font-size:1.35rem;line-height:1;font-weight:300}.base-field--invalid .base-field__prefix,.base-field--invalid .base-field__prefix-icon{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid .base-field__prefix-icon:before{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid .base-field__suffix,.base-field--invalid .base-field__clear,.base-field--invalid .base-field__ctx-trigger{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid .base-field__clear:hover,.base-field--invalid .base-field__ctx-trigger:hover{background:var(--app-color-error-bg-subtle, rgba(185, 28, 28, .12));color:var(--ui-field-float-label-invalid-color)}.base-field__field{position:relative;flex:1;min-width:0;display:flex;flex-direction:column;justify-content:flex-start;contain:layout style}.base-field__float-label{position:absolute;left:.75rem;right:.75rem;top:.45rem;transform:translate3d(0,calc((1.8rem + 1.35em)/2 - .45rem - .6em),0) scale(1);transform-origin:left top;font-size:1rem;font-weight:400;line-height:1.2;color:var(--ui-field-float-label-color);pointer-events:none;user-select:none;-webkit-user-select:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:transform .11s cubic-bezier(.4,0,.2,1),color .11s ease}@media (prefers-reduced-motion: reduce){.base-field__float-label{transition:none}}.base-field__box:focus-within .base-field__float-label,.base-field--filled .base-field__float-label{transform:translateZ(0) scale(.75);font-weight:500;color:var(--ui-field-float-label-top-color)}.base-field--invalid .base-field__float-label{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid.base-field--filled .base-field__float-label,.base-field--invalid .base-field__box:focus-within .base-field__float-label{color:var(--ui-field-float-label-invalid-color)}.base-field__required{color:var(--ui-field-required-mark-color);margin-left:.15rem}.base-field--invalid .base-field__required{color:var(--ui-field-float-label-invalid-color)}.base-field__control{display:block;width:100%;min-width:0}.base-field__suffix-reserve{display:block;flex-shrink:0;width:2rem;height:2rem;margin:0 .1rem;box-sizing:border-box}.base-field__control--value-end :where(input){text-align:right}.base-field--readonly:not(.base-field--disabled) .base-field__float-label{color:var(--ui-field-readonly-label-color)}.base-field--readonly.base-field--filled .base-field__float-label,.base-field--readonly:not(.base-field--disabled) .base-field__box:focus-within .base-field__float-label{color:var(--ui-field-readonly-label-top-color)}.base-field--readonly:not(.base-field--disabled) .base-field__prefix,.base-field--readonly:not(.base-field--disabled) .base-field__prefix-icon{color:var(--ui-field-readonly-prefix-color)}.base-field--readonly:not(.base-field--disabled) .base-field__control :where(input,textarea){color:var(--ui-field-readonly-input-text)}.base-field--invalid.base-field--readonly .base-field__float-label,.base-field--invalid.base-field--readonly.base-field--filled .base-field__float-label,.base-field--invalid.base-field--readonly .base-field__box:focus-within .base-field__float-label{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid.base-field--readonly:not(.base-field--disabled) .base-field__prefix,.base-field--invalid.base-field--readonly:not(.base-field--disabled) .base-field__prefix-icon{color:var(--ui-field-float-label-invalid-color)}.base-field__error{margin:0;padding-left:.15rem;font-size:.75rem;color:var(--ui-field-error-text-color);user-select:none;-webkit-user-select:none}\n"], dependencies: [{ kind: "component", type: SkeletonFieldShellComponent, selector: "app-skeleton-field-shell", inputs: ["variant", "animate", "showLeadingIcon"] }, { kind: "component", type: DropdownMenuComponent, selector: "app-dropdown-menu", inputs: ["items", "placement", "minWidthPx", "matchTriggerWidth", "menuId"], outputs: ["itemSelect", "openChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1432
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BaseFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1433
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: BaseFieldComponent, isStandalone: true, selector: "app-base-field", inputs: { label: "label", errorMessage: "errorMessage", required: "required", showRequiredMark: "showRequiredMark", invalid: "invalid", filled: "filled", disabled: "disabled", readonly: "readonly", inputId: "inputId", errorId: "errorId", showPrefixIcon: "showPrefixIcon", prefixIcon: "prefixIcon", clearable: "clearable", clearAriaLabel: "clearAriaLabel", showSuffixSlot: "showSuffixSlot", valueAlignEnd: "valueAlignEnd", loading: ["loading", "loading", booleanAttribute], skeletonVariant: "skeletonVariant", mostrarMenuContexto: ["mostrarMenuContexto", "mostrarMenuContexto", booleanAttribute], contextMenuItems: "contextMenuItems", contextMenuId: "contextMenuId" }, outputs: { clear: "clear", contextMenuSelect: "contextMenuSelect" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"base-field\" [class.base-field--invalid]=\"invalid\" [class.base-field--filled]=\"filled\"\n [class.base-field--disabled]=\"disabled\" [class.base-field--readonly]=\"readonly\"\n [class.base-field--loading]=\"loading\" [attr.aria-busy]=\"loading ? true : null\"\n [attr.aria-label]=\"loading && showFloatTpl ? label : null\">\n <div class=\"base-field__box\">\n <div class=\"base-field__prefix\">\n @if (!loading) {\n <ng-content select=\"[appFieldPrefix]\" />\n }\n @if (showFaTpl) {\n <i [attr.class]=\"prefixIconClassTpl + (loading ? ' base-field__prefix-icon--loading-dim' : '')\"\n aria-hidden=\"true\"></i>\n }\n </div>\n\n <div class=\"base-field__field\">\n @if (showFloatTpl && !loading) {\n <label class=\"base-field__float-label\" [attr.for]=\"inputId || null\">\n {{ label }}\n @if (required && showRequiredMark) {\n <span class=\"base-field__required\" aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n <div class=\"base-field__control\" [class.base-field__control--value-end]=\"valueAlignEnd\">\n @if (!loading) {\n <ng-content />\n } @else {\n <app-skeleton-field-shell [variant]=\"skeletonVariant\" [showLeadingIcon]=\"!showFaTpl\" />\n }\n </div>\n </div>\n\n @if (showSuffixTpl) {\n <div class=\"base-field__suffix\" [class.base-field__suffix--loading]=\"loading\">\n @if (!loading) {\n @if (showCtxMenuTpl) {\n <app-dropdown-menu\n class=\"base-field__ctx-dropdown\"\n [items]=\"contextMenuItems\"\n [minWidthPx]=\"200\"\n [matchTriggerWidth]=\"false\"\n [menuId]=\"resolvedContextMenuId\"\n (itemSelect)=\"onContextMenuItemSelect($event)\"\n >\n <button type=\"button\" class=\"base-field__ctx-trigger\" aria-label=\"Mais op\u00E7\u00F5es\" tabindex=\"-1\">\n <i class=\"fa-solid fa-ellipsis\" aria-hidden=\"true\"></i>\n </button>\n </app-dropdown-menu>\n }\n @if (showSuffixSlot) {\n <ng-content select=\"[appFieldSuffix]\" />\n }\n @if (showClearTpl) {\n <button type=\"button\" class=\"base-field__clear\" tabindex=\"-1\" [attr.aria-label]=\"clearAriaLabel\"\n (click)=\"onClearClick()\">\n <span class=\"base-field__clear-x\" aria-hidden=\"true\">&times;</span>\n </button>\n }\n } @else if (loading && showSuffixSlot) {\n <span class=\"base-field__suffix-reserve\" aria-hidden=\"true\"></span>\n }\n </div>\n }\n </div>\n\n @if (!loading && showErrorTpl) {\n <p class=\"base-field__error\" [id]=\"errorId || null\" role=\"alert\">\n {{ errorMessage }}\n </p>\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.base-field{display:flex;flex-direction:column;gap:.35rem;width:100%;max-width:100%;box-sizing:border-box}.base-field--loading .base-field__box{pointer-events:none}.base-field--loading .base-field__field{justify-content:center}.base-field--loading .base-field__control{display:flex;align-items:center;width:100%;min-height:0}.base-field__box{display:flex;align-items:stretch;width:100%;min-width:0;border:1px solid var(--ui-field-float-border);border-radius:var(--ui-field-float-border-radius);background:var(--ui-field-float-bg);transition:border-color .1s ease,box-shadow .1s ease;contain:layout}.base-field:not(.base-field--invalid):not(.base-field--disabled):not(.base-field--readonly) .base-field__box:focus-within{border-color:var(--ui-field-float-border-focus);box-shadow:0 0 0 3px var(--ui-field-float-focus-ring)}.base-field--readonly:not(.base-field--disabled) .base-field__box{background:var(--ui-field-readonly-bg);border-color:var(--ui-field-readonly-border)}.base-field--readonly:not(.base-field--disabled):not(.base-field--invalid) .base-field__box:focus-within{border-color:var(--ui-field-readonly-border-focus);box-shadow:0 0 0 3px var(--ui-field-readonly-focus-ring)}.base-field--invalid .base-field__box{border-color:var(--ui-field-input-invalid-border);box-shadow:none;background:var(--ui-field-invalid-input-bg, #fef2f2)}.base-field--readonly.base-field--invalid:not(.base-field--disabled) .base-field__box{background:var(--ui-field-invalid-input-bg, #fef2f2)}.base-field--invalid:not(.base-field--disabled):not(.base-field--readonly) .base-field__box:focus-within{border-color:var(--ui-field-input-invalid-border);box-shadow:0 0 0 3px var(--ui-field-input-invalid-focus-halo)}.base-field--invalid.base-field--readonly:not(.base-field--disabled) .base-field__box:focus-within{border-color:var(--ui-field-input-invalid-border);box-shadow:0 0 0 3px var(--ui-field-input-invalid-focus-halo)}.base-field--disabled .base-field__box{opacity:var(--ui-field-input-disabled-opacity)}.base-field__prefix{display:flex;align-items:center;justify-content:center;flex-shrink:0;padding-left:.75rem;color:var(--ui-field-float-prefix-color);user-select:none;-webkit-user-select:none}.base-field__prefix:empty{display:none}.base-field__prefix-icon{font-style:normal;font-size:1rem;line-height:1;color:var(--ui-field-float-prefix-color)}.base-field__prefix-icon--loading-dim{opacity:.34;pointer-events:none}.base-field__suffix{display:flex;align-items:center;justify-content:center;flex-shrink:0;padding-right:.4rem;padding-left:.1rem}.base-field__ctx-dropdown{display:inline-flex;flex-shrink:0;align-items:center;max-width:100%}.base-field__ctx-trigger{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,color .15s ease}.base-field__ctx-trigger:hover{background:var(--app-color-prefix-hover-bg, rgba(90, 127, 163, .15));color:var(--ui-field-float-label-top-color)}.base-field__ctx-trigger:focus,.base-field__ctx-trigger:focus-visible{outline:none}.base-field__clear{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,color .15s ease}.base-field__clear:hover{background:var(--app-color-prefix-hover-bg, rgba(90, 127, 163, .15));color:var(--ui-field-float-label-top-color)}.base-field__clear:focus,.base-field__clear:focus-visible{outline:none}.base-field__clear-x{font-size:1.35rem;line-height:1;font-weight:300}.base-field--invalid .base-field__prefix,.base-field--invalid .base-field__prefix-icon{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid .base-field__prefix-icon:before{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid .base-field__suffix,.base-field--invalid .base-field__clear,.base-field--invalid .base-field__ctx-trigger{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid .base-field__clear:hover,.base-field--invalid .base-field__ctx-trigger:hover{background:var(--app-color-error-bg-subtle, rgba(185, 28, 28, .12));color:var(--ui-field-float-label-invalid-color)}.base-field__field{position:relative;flex:1;min-width:0;display:flex;flex-direction:column;justify-content:flex-start;contain:layout style}.base-field__float-label{position:absolute;left:.75rem;right:.75rem;top:.45rem;transform:translate3d(0,calc((1.8rem + 1.35em)/2 - .45rem - .6em),0) scale(1);transform-origin:left top;font-size:1rem;font-weight:400;line-height:1.2;color:var(--ui-field-float-label-color);pointer-events:none;user-select:none;-webkit-user-select:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:transform .11s cubic-bezier(.4,0,.2,1),color .11s ease}@media(prefers-reduced-motion:reduce){.base-field__float-label{transition:none}}.base-field__box:focus-within .base-field__float-label,.base-field--filled .base-field__float-label{transform:translateZ(0) scale(.75);font-weight:500;color:var(--ui-field-float-label-top-color)}.base-field--invalid .base-field__float-label{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid.base-field--filled .base-field__float-label,.base-field--invalid .base-field__box:focus-within .base-field__float-label{color:var(--ui-field-float-label-invalid-color)}.base-field__required{color:var(--ui-field-required-mark-color);margin-left:.15rem}.base-field--invalid .base-field__required{color:var(--ui-field-float-label-invalid-color)}.base-field__control{display:block;width:100%;min-width:0}.base-field__suffix-reserve{display:block;flex-shrink:0;width:2rem;height:2rem;margin:0 .1rem;box-sizing:border-box}.base-field__control--value-end :where(input){text-align:right}.base-field--readonly:not(.base-field--disabled) .base-field__float-label{color:var(--ui-field-readonly-label-color)}.base-field--readonly.base-field--filled .base-field__float-label,.base-field--readonly:not(.base-field--disabled) .base-field__box:focus-within .base-field__float-label{color:var(--ui-field-readonly-label-top-color)}.base-field--readonly:not(.base-field--disabled) .base-field__prefix,.base-field--readonly:not(.base-field--disabled) .base-field__prefix-icon{color:var(--ui-field-readonly-prefix-color)}.base-field--readonly:not(.base-field--disabled) .base-field__control :where(input,textarea){color:var(--ui-field-readonly-input-text)}.base-field--invalid.base-field--readonly .base-field__float-label,.base-field--invalid.base-field--readonly.base-field--filled .base-field__float-label,.base-field--invalid.base-field--readonly .base-field__box:focus-within .base-field__float-label{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid.base-field--readonly:not(.base-field--disabled) .base-field__prefix,.base-field--invalid.base-field--readonly:not(.base-field--disabled) .base-field__prefix-icon{color:var(--ui-field-float-label-invalid-color)}.base-field__error{margin:0;padding-left:.15rem;font-size:.75rem;color:var(--ui-field-error-text-color);user-select:none;-webkit-user-select:none}\n"], dependencies: [{ kind: "component", type: SkeletonFieldShellComponent, selector: "app-skeleton-field-shell", inputs: ["variant", "animate", "showLeadingIcon"] }, { kind: "component", type: DropdownMenuComponent, selector: "app-dropdown-menu", inputs: ["items", "placement", "minWidthPx", "matchTriggerWidth", "menuId"], outputs: ["itemSelect", "openChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1434
1434
  }
1435
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseFieldComponent, decorators: [{
1435
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BaseFieldComponent, decorators: [{
1436
1436
  type: Component,
1437
- args: [{ selector: 'app-base-field', standalone: true, imports: [SkeletonFieldShellComponent, DropdownMenuComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"base-field\" [class.base-field--invalid]=\"invalid\" [class.base-field--filled]=\"filled\"\n [class.base-field--disabled]=\"disabled\" [class.base-field--readonly]=\"readonly\"\n [class.base-field--loading]=\"loading\" [attr.aria-busy]=\"loading ? true : null\"\n [attr.aria-label]=\"loading && showFloatTpl ? label : null\">\n <div class=\"base-field__box\">\n <div class=\"base-field__prefix\">\n @if (!loading) {\n <ng-content select=\"[appFieldPrefix]\" />\n }\n @if (showFaTpl) {\n <i [attr.class]=\"prefixIconClassTpl + (loading ? ' base-field__prefix-icon--loading-dim' : '')\"\n aria-hidden=\"true\"></i>\n }\n </div>\n\n <div class=\"base-field__field\">\n @if (showFloatTpl && !loading) {\n <label class=\"base-field__float-label\" [attr.for]=\"inputId || null\">\n {{ label }}\n @if (required && showRequiredMark) {\n <span class=\"base-field__required\" aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n <div class=\"base-field__control\" [class.base-field__control--value-end]=\"valueAlignEnd\">\n @if (!loading) {\n <ng-content />\n } @else {\n <app-skeleton-field-shell [variant]=\"skeletonVariant\" [showLeadingIcon]=\"!showFaTpl\" />\n }\n </div>\n </div>\n\n @if (showSuffixTpl) {\n <div class=\"base-field__suffix\" [class.base-field__suffix--loading]=\"loading\">\n @if (!loading) {\n @if (showCtxMenuTpl) {\n <app-dropdown-menu\n class=\"base-field__ctx-dropdown\"\n [items]=\"contextMenuItems\"\n [minWidthPx]=\"200\"\n [matchTriggerWidth]=\"false\"\n [menuId]=\"resolvedContextMenuId\"\n (itemSelect)=\"onContextMenuItemSelect($event)\"\n >\n <button type=\"button\" class=\"base-field__ctx-trigger\" aria-label=\"Mais op\u00E7\u00F5es\" tabindex=\"-1\">\n <i class=\"fa-solid fa-ellipsis\" aria-hidden=\"true\"></i>\n </button>\n </app-dropdown-menu>\n }\n @if (showSuffixSlot) {\n <ng-content select=\"[appFieldSuffix]\" />\n }\n @if (showClearTpl) {\n <button type=\"button\" class=\"base-field__clear\" tabindex=\"-1\" [attr.aria-label]=\"clearAriaLabel\"\n (click)=\"onClearClick()\">\n <span class=\"base-field__clear-x\" aria-hidden=\"true\">&times;</span>\n </button>\n }\n } @else if (loading && showSuffixSlot) {\n <span class=\"base-field__suffix-reserve\" aria-hidden=\"true\"></span>\n }\n </div>\n }\n </div>\n\n @if (!loading && showErrorTpl) {\n <p class=\"base-field__error\" [id]=\"errorId || null\" role=\"alert\">\n {{ errorMessage }}\n </p>\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.base-field{display:flex;flex-direction:column;gap:.35rem;width:100%;max-width:100%;box-sizing:border-box}.base-field--loading .base-field__box{pointer-events:none}.base-field--loading .base-field__field{justify-content:center}.base-field--loading .base-field__control{display:flex;align-items:center;width:100%;min-height:0}.base-field__box{display:flex;align-items:stretch;width:100%;min-width:0;border:1px solid var(--ui-field-float-border);border-radius:var(--ui-field-float-border-radius);background:var(--ui-field-float-bg);transition:border-color .1s ease,box-shadow .1s ease;contain:layout}.base-field:not(.base-field--invalid):not(.base-field--disabled):not(.base-field--readonly) .base-field__box:focus-within{border-color:var(--ui-field-float-border-focus);box-shadow:0 0 0 3px var(--ui-field-float-focus-ring)}.base-field--readonly:not(.base-field--disabled) .base-field__box{background:var(--ui-field-readonly-bg);border-color:var(--ui-field-readonly-border)}.base-field--readonly:not(.base-field--disabled):not(.base-field--invalid) .base-field__box:focus-within{border-color:var(--ui-field-readonly-border-focus);box-shadow:0 0 0 3px var(--ui-field-readonly-focus-ring)}.base-field--invalid .base-field__box{border-color:var(--ui-field-input-invalid-border);box-shadow:none;background:var(--ui-field-invalid-input-bg, #fef2f2)}.base-field--readonly.base-field--invalid:not(.base-field--disabled) .base-field__box{background:var(--ui-field-invalid-input-bg, #fef2f2)}.base-field--invalid:not(.base-field--disabled):not(.base-field--readonly) .base-field__box:focus-within{border-color:var(--ui-field-input-invalid-border);box-shadow:0 0 0 3px var(--ui-field-input-invalid-focus-halo)}.base-field--invalid.base-field--readonly:not(.base-field--disabled) .base-field__box:focus-within{border-color:var(--ui-field-input-invalid-border);box-shadow:0 0 0 3px var(--ui-field-input-invalid-focus-halo)}.base-field--disabled .base-field__box{opacity:var(--ui-field-input-disabled-opacity)}.base-field__prefix{display:flex;align-items:center;justify-content:center;flex-shrink:0;padding-left:.75rem;color:var(--ui-field-float-prefix-color);user-select:none;-webkit-user-select:none}.base-field__prefix:empty{display:none}.base-field__prefix-icon{font-style:normal;font-size:1rem;line-height:1;color:var(--ui-field-float-prefix-color)}.base-field__prefix-icon--loading-dim{opacity:.34;pointer-events:none}.base-field__suffix{display:flex;align-items:center;justify-content:center;flex-shrink:0;padding-right:.4rem;padding-left:.1rem}.base-field__ctx-dropdown{display:inline-flex;flex-shrink:0;align-items:center;max-width:100%}.base-field__ctx-trigger{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,color .15s ease}.base-field__ctx-trigger:hover{background:var(--app-color-prefix-hover-bg, rgba(90, 127, 163, .15));color:var(--ui-field-float-label-top-color)}.base-field__ctx-trigger:focus,.base-field__ctx-trigger:focus-visible{outline:none}.base-field__clear{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,color .15s ease}.base-field__clear:hover{background:var(--app-color-prefix-hover-bg, rgba(90, 127, 163, .15));color:var(--ui-field-float-label-top-color)}.base-field__clear:focus,.base-field__clear:focus-visible{outline:none}.base-field__clear-x{font-size:1.35rem;line-height:1;font-weight:300}.base-field--invalid .base-field__prefix,.base-field--invalid .base-field__prefix-icon{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid .base-field__prefix-icon:before{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid .base-field__suffix,.base-field--invalid .base-field__clear,.base-field--invalid .base-field__ctx-trigger{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid .base-field__clear:hover,.base-field--invalid .base-field__ctx-trigger:hover{background:var(--app-color-error-bg-subtle, rgba(185, 28, 28, .12));color:var(--ui-field-float-label-invalid-color)}.base-field__field{position:relative;flex:1;min-width:0;display:flex;flex-direction:column;justify-content:flex-start;contain:layout style}.base-field__float-label{position:absolute;left:.75rem;right:.75rem;top:.45rem;transform:translate3d(0,calc((1.8rem + 1.35em)/2 - .45rem - .6em),0) scale(1);transform-origin:left top;font-size:1rem;font-weight:400;line-height:1.2;color:var(--ui-field-float-label-color);pointer-events:none;user-select:none;-webkit-user-select:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:transform .11s cubic-bezier(.4,0,.2,1),color .11s ease}@media (prefers-reduced-motion: reduce){.base-field__float-label{transition:none}}.base-field__box:focus-within .base-field__float-label,.base-field--filled .base-field__float-label{transform:translateZ(0) scale(.75);font-weight:500;color:var(--ui-field-float-label-top-color)}.base-field--invalid .base-field__float-label{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid.base-field--filled .base-field__float-label,.base-field--invalid .base-field__box:focus-within .base-field__float-label{color:var(--ui-field-float-label-invalid-color)}.base-field__required{color:var(--ui-field-required-mark-color);margin-left:.15rem}.base-field--invalid .base-field__required{color:var(--ui-field-float-label-invalid-color)}.base-field__control{display:block;width:100%;min-width:0}.base-field__suffix-reserve{display:block;flex-shrink:0;width:2rem;height:2rem;margin:0 .1rem;box-sizing:border-box}.base-field__control--value-end :where(input){text-align:right}.base-field--readonly:not(.base-field--disabled) .base-field__float-label{color:var(--ui-field-readonly-label-color)}.base-field--readonly.base-field--filled .base-field__float-label,.base-field--readonly:not(.base-field--disabled) .base-field__box:focus-within .base-field__float-label{color:var(--ui-field-readonly-label-top-color)}.base-field--readonly:not(.base-field--disabled) .base-field__prefix,.base-field--readonly:not(.base-field--disabled) .base-field__prefix-icon{color:var(--ui-field-readonly-prefix-color)}.base-field--readonly:not(.base-field--disabled) .base-field__control :where(input,textarea){color:var(--ui-field-readonly-input-text)}.base-field--invalid.base-field--readonly .base-field__float-label,.base-field--invalid.base-field--readonly.base-field--filled .base-field__float-label,.base-field--invalid.base-field--readonly .base-field__box:focus-within .base-field__float-label{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid.base-field--readonly:not(.base-field--disabled) .base-field__prefix,.base-field--invalid.base-field--readonly:not(.base-field--disabled) .base-field__prefix-icon{color:var(--ui-field-float-label-invalid-color)}.base-field__error{margin:0;padding-left:.15rem;font-size:.75rem;color:var(--ui-field-error-text-color);user-select:none;-webkit-user-select:none}\n"] }]
1437
+ args: [{ selector: 'app-base-field', imports: [SkeletonFieldShellComponent, DropdownMenuComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"base-field\" [class.base-field--invalid]=\"invalid\" [class.base-field--filled]=\"filled\"\n [class.base-field--disabled]=\"disabled\" [class.base-field--readonly]=\"readonly\"\n [class.base-field--loading]=\"loading\" [attr.aria-busy]=\"loading ? true : null\"\n [attr.aria-label]=\"loading && showFloatTpl ? label : null\">\n <div class=\"base-field__box\">\n <div class=\"base-field__prefix\">\n @if (!loading) {\n <ng-content select=\"[appFieldPrefix]\" />\n }\n @if (showFaTpl) {\n <i [attr.class]=\"prefixIconClassTpl + (loading ? ' base-field__prefix-icon--loading-dim' : '')\"\n aria-hidden=\"true\"></i>\n }\n </div>\n\n <div class=\"base-field__field\">\n @if (showFloatTpl && !loading) {\n <label class=\"base-field__float-label\" [attr.for]=\"inputId || null\">\n {{ label }}\n @if (required && showRequiredMark) {\n <span class=\"base-field__required\" aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n <div class=\"base-field__control\" [class.base-field__control--value-end]=\"valueAlignEnd\">\n @if (!loading) {\n <ng-content />\n } @else {\n <app-skeleton-field-shell [variant]=\"skeletonVariant\" [showLeadingIcon]=\"!showFaTpl\" />\n }\n </div>\n </div>\n\n @if (showSuffixTpl) {\n <div class=\"base-field__suffix\" [class.base-field__suffix--loading]=\"loading\">\n @if (!loading) {\n @if (showCtxMenuTpl) {\n <app-dropdown-menu\n class=\"base-field__ctx-dropdown\"\n [items]=\"contextMenuItems\"\n [minWidthPx]=\"200\"\n [matchTriggerWidth]=\"false\"\n [menuId]=\"resolvedContextMenuId\"\n (itemSelect)=\"onContextMenuItemSelect($event)\"\n >\n <button type=\"button\" class=\"base-field__ctx-trigger\" aria-label=\"Mais op\u00E7\u00F5es\" tabindex=\"-1\">\n <i class=\"fa-solid fa-ellipsis\" aria-hidden=\"true\"></i>\n </button>\n </app-dropdown-menu>\n }\n @if (showSuffixSlot) {\n <ng-content select=\"[appFieldSuffix]\" />\n }\n @if (showClearTpl) {\n <button type=\"button\" class=\"base-field__clear\" tabindex=\"-1\" [attr.aria-label]=\"clearAriaLabel\"\n (click)=\"onClearClick()\">\n <span class=\"base-field__clear-x\" aria-hidden=\"true\">&times;</span>\n </button>\n }\n } @else if (loading && showSuffixSlot) {\n <span class=\"base-field__suffix-reserve\" aria-hidden=\"true\"></span>\n }\n </div>\n }\n </div>\n\n @if (!loading && showErrorTpl) {\n <p class=\"base-field__error\" [id]=\"errorId || null\" role=\"alert\">\n {{ errorMessage }}\n </p>\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.base-field{display:flex;flex-direction:column;gap:.35rem;width:100%;max-width:100%;box-sizing:border-box}.base-field--loading .base-field__box{pointer-events:none}.base-field--loading .base-field__field{justify-content:center}.base-field--loading .base-field__control{display:flex;align-items:center;width:100%;min-height:0}.base-field__box{display:flex;align-items:stretch;width:100%;min-width:0;border:1px solid var(--ui-field-float-border);border-radius:var(--ui-field-float-border-radius);background:var(--ui-field-float-bg);transition:border-color .1s ease,box-shadow .1s ease;contain:layout}.base-field:not(.base-field--invalid):not(.base-field--disabled):not(.base-field--readonly) .base-field__box:focus-within{border-color:var(--ui-field-float-border-focus);box-shadow:0 0 0 3px var(--ui-field-float-focus-ring)}.base-field--readonly:not(.base-field--disabled) .base-field__box{background:var(--ui-field-readonly-bg);border-color:var(--ui-field-readonly-border)}.base-field--readonly:not(.base-field--disabled):not(.base-field--invalid) .base-field__box:focus-within{border-color:var(--ui-field-readonly-border-focus);box-shadow:0 0 0 3px var(--ui-field-readonly-focus-ring)}.base-field--invalid .base-field__box{border-color:var(--ui-field-input-invalid-border);box-shadow:none;background:var(--ui-field-invalid-input-bg, #fef2f2)}.base-field--readonly.base-field--invalid:not(.base-field--disabled) .base-field__box{background:var(--ui-field-invalid-input-bg, #fef2f2)}.base-field--invalid:not(.base-field--disabled):not(.base-field--readonly) .base-field__box:focus-within{border-color:var(--ui-field-input-invalid-border);box-shadow:0 0 0 3px var(--ui-field-input-invalid-focus-halo)}.base-field--invalid.base-field--readonly:not(.base-field--disabled) .base-field__box:focus-within{border-color:var(--ui-field-input-invalid-border);box-shadow:0 0 0 3px var(--ui-field-input-invalid-focus-halo)}.base-field--disabled .base-field__box{opacity:var(--ui-field-input-disabled-opacity)}.base-field__prefix{display:flex;align-items:center;justify-content:center;flex-shrink:0;padding-left:.75rem;color:var(--ui-field-float-prefix-color);user-select:none;-webkit-user-select:none}.base-field__prefix:empty{display:none}.base-field__prefix-icon{font-style:normal;font-size:1rem;line-height:1;color:var(--ui-field-float-prefix-color)}.base-field__prefix-icon--loading-dim{opacity:.34;pointer-events:none}.base-field__suffix{display:flex;align-items:center;justify-content:center;flex-shrink:0;padding-right:.4rem;padding-left:.1rem}.base-field__ctx-dropdown{display:inline-flex;flex-shrink:0;align-items:center;max-width:100%}.base-field__ctx-trigger{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,color .15s ease}.base-field__ctx-trigger:hover{background:var(--app-color-prefix-hover-bg, rgba(90, 127, 163, .15));color:var(--ui-field-float-label-top-color)}.base-field__ctx-trigger:focus,.base-field__ctx-trigger:focus-visible{outline:none}.base-field__clear{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,color .15s ease}.base-field__clear:hover{background:var(--app-color-prefix-hover-bg, rgba(90, 127, 163, .15));color:var(--ui-field-float-label-top-color)}.base-field__clear:focus,.base-field__clear:focus-visible{outline:none}.base-field__clear-x{font-size:1.35rem;line-height:1;font-weight:300}.base-field--invalid .base-field__prefix,.base-field--invalid .base-field__prefix-icon{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid .base-field__prefix-icon:before{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid .base-field__suffix,.base-field--invalid .base-field__clear,.base-field--invalid .base-field__ctx-trigger{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid .base-field__clear:hover,.base-field--invalid .base-field__ctx-trigger:hover{background:var(--app-color-error-bg-subtle, rgba(185, 28, 28, .12));color:var(--ui-field-float-label-invalid-color)}.base-field__field{position:relative;flex:1;min-width:0;display:flex;flex-direction:column;justify-content:flex-start;contain:layout style}.base-field__float-label{position:absolute;left:.75rem;right:.75rem;top:.45rem;transform:translate3d(0,calc((1.8rem + 1.35em)/2 - .45rem - .6em),0) scale(1);transform-origin:left top;font-size:1rem;font-weight:400;line-height:1.2;color:var(--ui-field-float-label-color);pointer-events:none;user-select:none;-webkit-user-select:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:transform .11s cubic-bezier(.4,0,.2,1),color .11s ease}@media(prefers-reduced-motion:reduce){.base-field__float-label{transition:none}}.base-field__box:focus-within .base-field__float-label,.base-field--filled .base-field__float-label{transform:translateZ(0) scale(.75);font-weight:500;color:var(--ui-field-float-label-top-color)}.base-field--invalid .base-field__float-label{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid.base-field--filled .base-field__float-label,.base-field--invalid .base-field__box:focus-within .base-field__float-label{color:var(--ui-field-float-label-invalid-color)}.base-field__required{color:var(--ui-field-required-mark-color);margin-left:.15rem}.base-field--invalid .base-field__required{color:var(--ui-field-float-label-invalid-color)}.base-field__control{display:block;width:100%;min-width:0}.base-field__suffix-reserve{display:block;flex-shrink:0;width:2rem;height:2rem;margin:0 .1rem;box-sizing:border-box}.base-field__control--value-end :where(input){text-align:right}.base-field--readonly:not(.base-field--disabled) .base-field__float-label{color:var(--ui-field-readonly-label-color)}.base-field--readonly.base-field--filled .base-field__float-label,.base-field--readonly:not(.base-field--disabled) .base-field__box:focus-within .base-field__float-label{color:var(--ui-field-readonly-label-top-color)}.base-field--readonly:not(.base-field--disabled) .base-field__prefix,.base-field--readonly:not(.base-field--disabled) .base-field__prefix-icon{color:var(--ui-field-readonly-prefix-color)}.base-field--readonly:not(.base-field--disabled) .base-field__control :where(input,textarea){color:var(--ui-field-readonly-input-text)}.base-field--invalid.base-field--readonly .base-field__float-label,.base-field--invalid.base-field--readonly.base-field--filled .base-field__float-label,.base-field--invalid.base-field--readonly .base-field__box:focus-within .base-field__float-label{color:var(--ui-field-float-label-invalid-color)}.base-field--invalid.base-field--readonly:not(.base-field--disabled) .base-field__prefix,.base-field--invalid.base-field--readonly:not(.base-field--disabled) .base-field__prefix-icon{color:var(--ui-field-float-label-invalid-color)}.base-field__error{margin:0;padding-left:.15rem;font-size:.75rem;color:var(--ui-field-error-text-color);user-select:none;-webkit-user-select:none}\n"] }]
1438
1438
  }], propDecorators: { label: [{
1439
1439
  type: Input
1440
1440
  }], errorMessage: [{
@@ -1599,10 +1599,10 @@ class NgControlFieldDirective extends BaseFieldDirective {
1599
1599
  get errorElementId() {
1600
1600
  return `${this.controlId}-error`;
1601
1601
  }
1602
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgControlFieldDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
1603
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NgControlFieldDirective, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
1602
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgControlFieldDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
1603
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: NgControlFieldDirective, isStandalone: true, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
1604
1604
  }
1605
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgControlFieldDirective, decorators: [{
1605
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgControlFieldDirective, decorators: [{
1606
1606
  type: Directive
1607
1607
  }] });
1608
1608
 
@@ -1668,8 +1668,8 @@ class TextFieldComponent extends NgControlFieldDirective {
1668
1668
  this.cdr.markForCheck();
1669
1669
  }
1670
1670
  }
1671
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1672
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: TextFieldComponent, isStandalone: true, selector: "app-text-field", inputs: { maxLength: ["maxLength", "maxLength", numberAttribute] }, providers: [
1671
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TextFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1672
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: TextFieldComponent, isStandalone: true, selector: "app-text-field", inputs: { maxLength: ["maxLength", "maxLength", numberAttribute] }, providers: [
1673
1673
  {
1674
1674
  provide: NG_VALUE_ACCESSOR,
1675
1675
  useExisting: forwardRef(() => TextFieldComponent),
@@ -1677,9 +1677,9 @@ class TextFieldComponent extends NgControlFieldDirective {
1677
1677
  },
1678
1678
  ], usesInheritance: true, ngImport: i0, template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [inputId]=\"controlId\"\n [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\" [prefixIcon]=\"prefixIcon\" [clearable]=\"clearable\"\n [clearAriaLabel]=\"clearAriaLabel\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <input class=\"text-field__input\" type=\"text\" [id]=\"controlId\" [attr.name]=\"name || null\" [attr.placeholder]=\"''\"\n [attr.autocomplete]=\"autocompleteAttr\" [attr.maxlength]=\"maxLength > 0 ? maxLength : null\" [disabled]=\"disabled\"\n [readonly]=\"readonly\" [required]=\"uiRequiredEffective\"\n [attr.aria-invalid]=\"uiInvalid\" [attr.aria-describedby]=\"uiAriaDescribedBy\" [value]=\"inputText\"\n (input)=\"onNativeInput($event)\" (blur)=\"onBlur()\" />\n</app-base-field>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.text-field__input{display:block;width:100%;max-width:none;box-sizing:border-box;margin:0;padding:1.35rem .75rem .45rem;font-size:1rem;line-height:1.35;font-family:inherit;color:var(--ui-field-float-input-text);border:none;border-radius:0;background:transparent;box-shadow:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-field__input::placeholder{color:transparent}.text-field__input:focus,.text-field__input:focus-visible{outline:none}.text-field__input--invalid:not(:disabled)::placeholder{color:transparent}.text-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"], dependencies: [{ kind: "component", type: BaseFieldComponent, selector: "app-base-field", inputs: ["label", "errorMessage", "required", "showRequiredMark", "invalid", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1679
1679
  }
1680
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextFieldComponent, decorators: [{
1680
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TextFieldComponent, decorators: [{
1681
1681
  type: Component,
1682
- args: [{ selector: 'app-text-field', standalone: true, imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
1682
+ args: [{ selector: 'app-text-field', imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
1683
1683
  {
1684
1684
  provide: NG_VALUE_ACCESSOR,
1685
1685
  useExisting: forwardRef(() => TextFieldComponent),
@@ -1785,8 +1785,8 @@ class PasswordFieldComponent extends NgControlFieldDirective {
1785
1785
  this.refreshPasswordToggleUi();
1786
1786
  this.cdr.markForCheck();
1787
1787
  }
1788
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PasswordFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1789
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: PasswordFieldComponent, isStandalone: true, selector: "app-password-field", inputs: { clearable: ["clearable", "clearable", booleanAttribute], maxLength: ["maxLength", "maxLength", numberAttribute], autoComplete: "autoComplete" }, host: { properties: { "class.password-field--invalid": "this.hostInvalidClass" } }, providers: [
1788
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PasswordFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1789
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: PasswordFieldComponent, isStandalone: true, selector: "app-password-field", inputs: { clearable: ["clearable", "clearable", booleanAttribute], maxLength: ["maxLength", "maxLength", numberAttribute], autoComplete: "autoComplete" }, host: { properties: { "class.password-field--invalid": "this.hostInvalidClass" } }, providers: [
1790
1790
  {
1791
1791
  provide: NG_VALUE_ACCESSOR,
1792
1792
  useExisting: forwardRef(() => PasswordFieldComponent),
@@ -1794,9 +1794,9 @@ class PasswordFieldComponent extends NgControlFieldDirective {
1794
1794
  },
1795
1795
  ], usesInheritance: true, ngImport: i0, template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [inputId]=\"controlId\" [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\"\n [prefixIcon]=\"prefixIcon\" [clearable]=\"clearable\" [clearAriaLabel]=\"clearAriaLabel\" [showSuffixSlot]=\"true\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <input class=\"password-field__input\" [type]=\"inputTypeUi\" [id]=\"controlId\" [attr.name]=\"name || null\"\n [attr.placeholder]=\"''\" [attr.autocomplete]=\"autoComplete\" [attr.maxlength]=\"maxLength > 0 ? maxLength : null\"\n [disabled]=\"disabled\" [readonly]=\"readonly\" [required]=\"uiRequiredEffective\" [attr.aria-invalid]=\"uiInvalid\"\n [attr.aria-describedby]=\"uiAriaDescribedBy\" [value]=\"inputText\" (input)=\"onNativeInput($event)\"\n (blur)=\"onBlur()\" />\n <button type=\"button\" appFieldSuffix class=\"password-field__toggle\" tabindex=\"-1\"\n [disabled]=\"disabled || readonly\" [attr.aria-label]=\"toggleAriaLabelUi\" [attr.aria-pressed]=\"passwordVisible\"\n (click)=\"togglePasswordVisible($event)\">\n <i [class]=\"toggleIconClassUi\" aria-hidden=\"true\"></i>\n </button>\n</app-base-field>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.password-field__input{display:block;width:100%;max-width:none;box-sizing:border-box;margin:0;padding:1.35rem .75rem .45rem;font-size:1rem;line-height:1.35;font-family:inherit;color:var(--ui-field-float-input-text);border:none;border-radius:0;background:transparent;box-shadow:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.password-field__input::placeholder{color:transparent}.password-field__input:focus,.password-field__input:focus-visible{outline:none}.password-field__input--invalid:not(:disabled)::placeholder{color:transparent}.password-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}.password-field__toggle{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;transition:background .15s ease,color .15s ease}.password-field__toggle:hover:not(:disabled){background:#5a7fa326;color:var(--ui-field-float-label-top-color)}.password-field__toggle:focus,.password-field__toggle:focus-visible{outline:none}.password-field__toggle:disabled{cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity)}.password-field__toggle i{font-size:.95rem;line-height:1}:host.password-field--invalid .password-field__toggle{color:var(--ui-field-float-label-invalid-color)}:host.password-field--invalid .password-field__toggle:hover:not(:disabled){background:#b91c1c1f;color:var(--ui-field-float-label-invalid-color)}:host.password-field--invalid .password-field__toggle:focus,:host.password-field--invalid .password-field__toggle:focus-visible{outline:none}\n"], dependencies: [{ kind: "component", type: BaseFieldComponent, selector: "app-base-field", inputs: ["label", "errorMessage", "required", "showRequiredMark", "invalid", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1796
1796
  }
1797
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PasswordFieldComponent, decorators: [{
1797
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PasswordFieldComponent, decorators: [{
1798
1798
  type: Component,
1799
- args: [{ selector: 'app-password-field', standalone: true, imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
1799
+ args: [{ selector: 'app-password-field', imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
1800
1800
  {
1801
1801
  provide: NG_VALUE_ACCESSOR,
1802
1802
  useExisting: forwardRef(() => PasswordFieldComponent),
@@ -1904,8 +1904,8 @@ class TextareaFieldComponent extends NgControlFieldDirective {
1904
1904
  this.cdr.markForCheck();
1905
1905
  }
1906
1906
  }
1907
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextareaFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1908
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: TextareaFieldComponent, isStandalone: true, selector: "app-textarea-field", inputs: { maxLength: ["maxLength", "maxLength", numberAttribute], rows: ["rows", "rows", numberAttribute], maxResizeRows: ["maxResizeRows", "maxResizeRows", numberAttribute] }, host: { properties: { "class.textarea-field--invalid": "this.hostInvalidClass" } }, providers: [
1907
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TextareaFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1908
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: TextareaFieldComponent, isStandalone: true, selector: "app-textarea-field", inputs: { maxLength: ["maxLength", "maxLength", numberAttribute], rows: ["rows", "rows", numberAttribute], maxResizeRows: ["maxResizeRows", "maxResizeRows", numberAttribute] }, host: { properties: { "class.textarea-field--invalid": "this.hostInvalidClass" } }, providers: [
1909
1909
  {
1910
1910
  provide: NG_VALUE_ACCESSOR,
1911
1911
  useExisting: forwardRef(() => TextareaFieldComponent),
@@ -1913,9 +1913,9 @@ class TextareaFieldComponent extends NgControlFieldDirective {
1913
1913
  },
1914
1914
  ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [inputId]=\"controlId\"\n [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\" [prefixIcon]=\"prefixIcon\" [clearable]=\"clearable\"\n [clearAriaLabel]=\"clearAriaLabel\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <textarea class=\"textarea-field__input\" [id]=\"controlId\" [attr.name]=\"name || null\" [attr.placeholder]=\"''\"\n [attr.rows]=\"rows\" [style.height]=\"textareaMaxHeightCss\" [style.min-height]=\"textareaMaxHeightCss\"\n [style.max-height]=\"textareaMaxHeightCss\" [attr.autocomplete]=\"autocompleteAttr\"\n [attr.maxlength]=\"maxLength > 0 ? maxLength : null\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [required]=\"uiRequiredEffective\" [attr.aria-invalid]=\"uiInvalid\" [attr.aria-describedby]=\"uiAriaDescribedBy\"\n [value]=\"inputText\" (input)=\"onNativeInput($event)\" (blur)=\"onBlur()\"></textarea>\n</app-base-field>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.textarea-field__input{display:block;width:100%;max-width:none;box-sizing:border-box;margin:0;padding:1.35rem .75rem .45rem;font-size:1rem;line-height:1.35;font-family:inherit;color:var(--ui-field-float-input-text);border:none;border-radius:0;background:transparent;box-shadow:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.textarea-field__input::placeholder{color:transparent}.textarea-field__input:focus,.textarea-field__input:focus-visible{outline:none}.textarea-field__input--invalid:not(:disabled)::placeholder{color:transparent}.textarea-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}.textarea-field__input{resize:none;overflow-x:hidden;overflow-y:auto;white-space:pre-wrap;overflow-wrap:break-word;text-overflow:clip}\n"], dependencies: [{ kind: "component", type: BaseFieldComponent, selector: "app-base-field", inputs: ["label", "errorMessage", "required", "showRequiredMark", "invalid", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1915
1915
  }
1916
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextareaFieldComponent, decorators: [{
1916
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TextareaFieldComponent, decorators: [{
1917
1917
  type: Component,
1918
- args: [{ selector: 'app-textarea-field', standalone: true, imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
1918
+ args: [{ selector: 'app-textarea-field', imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
1919
1919
  {
1920
1920
  provide: NG_VALUE_ACCESSOR,
1921
1921
  useExisting: forwardRef(() => TextareaFieldComponent),
@@ -2116,8 +2116,8 @@ class IntegerFieldComponent extends NgControlFieldDirective {
2116
2116
  this.cdr.markForCheck();
2117
2117
  }
2118
2118
  }
2119
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IntegerFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2120
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: IntegerFieldComponent, isStandalone: true, selector: "app-integer-field", inputs: { max: ["max", "max", numberAttribute] }, providers: [
2119
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IntegerFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2120
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: IntegerFieldComponent, isStandalone: true, selector: "app-integer-field", inputs: { max: ["max", "max", numberAttribute] }, providers: [
2121
2121
  {
2122
2122
  provide: NG_VALUE_ACCESSOR,
2123
2123
  useExisting: forwardRef(() => IntegerFieldComponent),
@@ -2125,9 +2125,9 @@ class IntegerFieldComponent extends NgControlFieldDirective {
2125
2125
  },
2126
2126
  ], usesInheritance: true, ngImport: i0, template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [inputId]=\"controlId\"\n [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\" [prefixIcon]=\"prefixIcon\" [clearable]=\"clearable\"\n [clearAriaLabel]=\"clearAriaLabel\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <input class=\"integer-field__input\" type=\"text\" inputmode=\"numeric\" [id]=\"controlId\"\n [attr.name]=\"name || null\" [attr.placeholder]=\"''\" [disabled]=\"disabled\" [readonly]=\"readonly\" [required]=\"uiRequiredEffective\"\n [attr.aria-invalid]=\"uiInvalid\" [attr.aria-describedby]=\"uiAriaDescribedBy\" [value]=\"inputText\"\n (beforeinput)=\"onBeforeInput($event)\" (input)=\"onNativeInput($event)\" (blur)=\"onBlur()\" />\n</app-base-field>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.integer-field__input{display:block;width:100%;max-width:none;box-sizing:border-box;margin:0;padding:1.35rem .75rem .45rem;font-size:1rem;line-height:1.35;font-family:inherit;color:var(--ui-field-float-input-text);border:none;border-radius:0;background:transparent;box-shadow:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.integer-field__input::placeholder{color:transparent}.integer-field__input:focus,.integer-field__input:focus-visible{outline:none}.integer-field__input--invalid:not(:disabled)::placeholder{color:transparent}.integer-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"], dependencies: [{ kind: "component", type: BaseFieldComponent, selector: "app-base-field", inputs: ["label", "errorMessage", "required", "showRequiredMark", "invalid", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2127
2127
  }
2128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IntegerFieldComponent, decorators: [{
2128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IntegerFieldComponent, decorators: [{
2129
2129
  type: Component,
2130
- args: [{ selector: 'app-integer-field', standalone: true, imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2130
+ args: [{ selector: 'app-integer-field', imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2131
2131
  {
2132
2132
  provide: NG_VALUE_ACCESSOR,
2133
2133
  useExisting: forwardRef(() => IntegerFieldComponent),
@@ -2428,8 +2428,8 @@ class DecimalFieldComponent extends NgControlFieldDirective {
2428
2428
  this.cdr.markForCheck();
2429
2429
  }
2430
2430
  }
2431
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecimalFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2432
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: DecimalFieldComponent, isStandalone: true, selector: "app-decimal-field", inputs: { max: ["max", "max", numberAttribute] }, providers: [
2431
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DecimalFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2432
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: DecimalFieldComponent, isStandalone: true, selector: "app-decimal-field", inputs: { max: ["max", "max", numberAttribute] }, providers: [
2433
2433
  {
2434
2434
  provide: NG_VALUE_ACCESSOR,
2435
2435
  useExisting: forwardRef(() => DecimalFieldComponent),
@@ -2437,9 +2437,9 @@ class DecimalFieldComponent extends NgControlFieldDirective {
2437
2437
  },
2438
2438
  ], usesInheritance: true, ngImport: i0, template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [inputId]=\"controlId\"\n [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\" [prefixIcon]=\"prefixIcon\" [clearable]=\"clearable\"\n [clearAriaLabel]=\"clearAriaLabel\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <input class=\"decimal-field__input\" type=\"text\" inputmode=\"decimal\" [attr.autocomplete]=\"autocompleteAttr\"\n [id]=\"controlId\"\n [attr.name]=\"name || null\" [attr.placeholder]=\"''\" [disabled]=\"disabled\" [readonly]=\"readonly\" [required]=\"uiRequiredEffective\"\n [attr.aria-invalid]=\"uiInvalid\" [attr.aria-describedby]=\"uiAriaDescribedBy\" [value]=\"inputText\"\n (beforeinput)=\"onBeforeInput($event)\" (input)=\"onNativeInput($event)\" (blur)=\"onBlur()\" />\n</app-base-field>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.decimal-field__input{display:block;width:100%;max-width:none;box-sizing:border-box;margin:0;padding:1.35rem .75rem .45rem;font-size:1rem;line-height:1.35;font-family:inherit;color:var(--ui-field-float-input-text);border:none;border-radius:0;background:transparent;box-shadow:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.decimal-field__input::placeholder{color:transparent}.decimal-field__input:focus,.decimal-field__input:focus-visible{outline:none}.decimal-field__input--invalid:not(:disabled)::placeholder{color:transparent}.decimal-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"], dependencies: [{ kind: "component", type: BaseFieldComponent, selector: "app-base-field", inputs: ["label", "errorMessage", "required", "showRequiredMark", "invalid", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2439
2439
  }
2440
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecimalFieldComponent, decorators: [{
2440
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DecimalFieldComponent, decorators: [{
2441
2441
  type: Component,
2442
- args: [{ selector: 'app-decimal-field', standalone: true, imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2442
+ args: [{ selector: 'app-decimal-field', imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2443
2443
  {
2444
2444
  provide: NG_VALUE_ACCESSOR,
2445
2445
  useExisting: forwardRef(() => DecimalFieldComponent),
@@ -2630,19 +2630,19 @@ class DateFieldComponent extends NgControlFieldDirective {
2630
2630
  this.cdr.markForCheck();
2631
2631
  }
2632
2632
  }
2633
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2634
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: DateFieldComponent, isStandalone: true, selector: "app-date-field", inputs: { showTimeHours: ["showTimeHours", "showTimeHours", booleanAttribute], minDate: "minDate", maxDate: "maxDate" }, providers: [
2633
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DateFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2634
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: DateFieldComponent, isStandalone: true, selector: "app-date-field", inputs: { showTimeHours: ["showTimeHours", "showTimeHours", booleanAttribute], minDate: "minDate", maxDate: "maxDate" }, providers: [
2635
2635
  {
2636
2636
  provide: NG_VALUE_ACCESSOR,
2637
2637
  useExisting: forwardRef(() => DateFieldComponent),
2638
2638
  multi: true,
2639
2639
  },
2640
2640
  { provide: MAT_DATE_LOCALE, useValue: 'pt-BR' },
2641
- ], viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [inputId]=\"controlId\"\n [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\" [prefixIcon]=\"prefixIcon\" [clearable]=\"clearable\"\n [clearAriaLabel]=\"clearAriaLabel\" [valueAlignEnd]=\"false\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <div class=\"date-field__date-wrap\">\n <span class=\"date-field__display\" aria-hidden=\"true\">{{ displayTextUi }}</span>\n <input matInput class=\"date-field__ghost-input\" [matDatepicker]=\"picker\" [(ngModel)]=\"innerDate\"\n [ngModelOptions]=\"{ standalone: true }\" (ngModelChange)=\"onPickedDate($event)\"\n [min]=\"minDate ?? undefined\" [max]=\"maxDate ?? undefined\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [required]=\"uiRequiredEffective\" [id]=\"controlId\" [attr.name]=\"name || null\" [attr.autocomplete]=\"autocompleteAttr\"\n [attr.aria-invalid]=\"uiInvalid\" [attr.aria-describedby]=\"uiAriaDescribedBy\"\n [attr.aria-label]=\"floatLabelCaption || 'Data'\" readonly (click)=\"openPicker()\"\n (keydown)=\"onGhostInputKeydown($event)\" (blur)=\"onBlur()\" />\n <mat-datepicker #picker panelClass=\"ui-field-datepicker-panel\" />\n </div>\n</app-base-field>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.date-field__date-wrap{position:relative;flex:1;min-width:0;display:flex;align-items:stretch}.date-field__display{position:absolute;left:.75rem;right:.75rem;top:50%;transform:translateY(-.15rem);pointer-events:none;font-size:1rem;line-height:1.35;color:var(--ui-field-float-input-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;z-index:0}.date-field__ghost-input{position:relative;z-index:1;flex:1;width:100%;min-width:0;margin:0;box-sizing:border-box;padding:1.35rem .75rem .45rem;font-size:1rem;line-height:1.35;font-family:inherit;color:transparent;caret-color:transparent;background:transparent;border:none;border-radius:0;box-shadow:none;cursor:pointer}.date-field__ghost-input:focus{outline:none}.date-field__ghost-input:disabled{cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity)}:host ::ng-deep .base-field--readonly:not(.base-field--disabled) .date-field__display{color:var(--ui-field-readonly-input-text)}:host ::ng-deep .base-field--readonly:not(.base-field--disabled) .date-field__ghost-input{cursor:default}:host ::ng-deep .date-field__ghost-input.mdc-text-field__input,:host ::ng-deep .date-field__ghost-input.mat-mdc-input-element{border:none!important;box-shadow:none!important}\n"], dependencies: [{ kind: "component", type: BaseFieldComponent, selector: "app-base-field", inputs: ["label", "errorMessage", "required", "showRequiredMark", "invalid", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatNativeDateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2641
+ ], viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [inputId]=\"controlId\"\n [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\" [prefixIcon]=\"prefixIcon\" [clearable]=\"clearable\"\n [clearAriaLabel]=\"clearAriaLabel\" [valueAlignEnd]=\"false\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <div class=\"date-field__date-wrap\">\n <span class=\"date-field__display\" aria-hidden=\"true\">{{ displayTextUi }}</span>\n <input matInput class=\"date-field__ghost-input\" [matDatepicker]=\"picker\" [(ngModel)]=\"innerDate\"\n [ngModelOptions]=\"{ standalone: true }\" (ngModelChange)=\"onPickedDate($event)\"\n [min]=\"minDate ?? undefined\" [max]=\"maxDate ?? undefined\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [required]=\"uiRequiredEffective\" [id]=\"controlId\" [attr.name]=\"name || null\" [attr.autocomplete]=\"autocompleteAttr\"\n [attr.aria-invalid]=\"uiInvalid\" [attr.aria-describedby]=\"uiAriaDescribedBy\"\n [attr.aria-label]=\"floatLabelCaption || 'Data'\" readonly (click)=\"openPicker()\"\n (keydown)=\"onGhostInputKeydown($event)\" (blur)=\"onBlur()\" />\n <mat-datepicker #picker panelClass=\"ui-field-datepicker-panel\" />\n </div>\n</app-base-field>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.date-field__date-wrap{position:relative;flex:1;min-width:0;display:flex;align-items:stretch}.date-field__display{position:absolute;left:.75rem;right:.75rem;top:50%;transform:translateY(-.15rem);pointer-events:none;font-size:1rem;line-height:1.35;color:var(--ui-field-float-input-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;z-index:0}.date-field__ghost-input{position:relative;z-index:1;flex:1;width:100%;min-width:0;margin:0;box-sizing:border-box;padding:1.35rem .75rem .45rem;font-size:1rem;line-height:1.35;font-family:inherit;color:transparent;caret-color:transparent;background:transparent;border:none;border-radius:0;box-shadow:none;cursor:pointer}.date-field__ghost-input:focus{outline:none}.date-field__ghost-input:disabled{cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity)}:host ::ng-deep .base-field--readonly:not(.base-field--disabled) .date-field__display{color:var(--ui-field-readonly-input-text)}:host ::ng-deep .base-field--readonly:not(.base-field--disabled) .date-field__ghost-input{cursor:default}:host ::ng-deep .date-field__ghost-input.mdc-text-field__input,:host ::ng-deep .date-field__ghost-input.mat-mdc-input-element{border:none!important;box-shadow:none!important}\n"], dependencies: [{ kind: "component", type: BaseFieldComponent, selector: "app-base-field", inputs: ["label", "errorMessage", "required", "showRequiredMark", "invalid", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatNativeDateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2642
2642
  }
2643
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateFieldComponent, decorators: [{
2643
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DateFieldComponent, decorators: [{
2644
2644
  type: Component,
2645
- args: [{ selector: 'app-date-field', standalone: true, imports: [
2645
+ args: [{ selector: 'app-date-field', imports: [
2646
2646
  BaseFieldComponent,
2647
2647
  FormsModule,
2648
2648
  MatDatepickerModule,
@@ -2830,10 +2830,10 @@ class MaskedTextFieldBase extends NgControlFieldDirective {
2830
2830
  this.cdr.markForCheck();
2831
2831
  }
2832
2832
  }
2833
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MaskedTextFieldBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
2834
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: MaskedTextFieldBase, inputs: { maskPattern: "maskPattern" }, usesInheritance: true, ngImport: i0 }); }
2833
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MaskedTextFieldBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
2834
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: MaskedTextFieldBase, isStandalone: true, inputs: { maskPattern: "maskPattern" }, usesInheritance: true, ngImport: i0 }); }
2835
2835
  }
2836
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MaskedTextFieldBase, decorators: [{
2836
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MaskedTextFieldBase, decorators: [{
2837
2837
  type: Directive
2838
2838
  }], propDecorators: { maskPattern: [{
2839
2839
  type: Input
@@ -2861,8 +2861,8 @@ class InputMaskFieldComponent extends MaskedTextFieldBase {
2861
2861
  onClear() {
2862
2862
  this.onMaskedClear();
2863
2863
  }
2864
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputMaskFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2865
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: InputMaskFieldComponent, isStandalone: true, selector: "app-input-mask-field", inputs: { maskPattern: "maskPattern" }, host: { properties: { "class.input-mask-field--invalid": "this.hostInvalidClass" } }, providers: [
2864
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: InputMaskFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2865
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: InputMaskFieldComponent, isStandalone: true, selector: "app-input-mask-field", inputs: { maskPattern: "maskPattern" }, host: { properties: { "class.input-mask-field--invalid": "this.hostInvalidClass" } }, providers: [
2866
2866
  {
2867
2867
  provide: NG_VALUE_ACCESSOR,
2868
2868
  useExisting: forwardRef(() => InputMaskFieldComponent),
@@ -2870,9 +2870,9 @@ class InputMaskFieldComponent extends MaskedTextFieldBase {
2870
2870
  },
2871
2871
  ], usesInheritance: true, ngImport: i0, template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [inputId]=\"controlId\" [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\"\n [prefixIcon]=\"prefixIcon\" [clearable]=\"clearable\" [clearAriaLabel]=\"clearAriaLabel\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <input class=\"input-mask-field__input\" type=\"text\" [id]=\"controlId\" [attr.name]=\"name || null\"\n [attr.placeholder]=\"''\" [attr.autocomplete]=\"autocompleteAttr\" [disabled]=\"disabled\"\n [readonly]=\"readonly\" [required]=\"uiRequiredEffective\" [attr.aria-invalid]=\"uiInvalid\"\n [attr.aria-describedby]=\"uiAriaDescribedBy\" [value]=\"inputText\" (input)=\"onNativeInput($event)\"\n (blur)=\"onBlur()\" />\n</app-base-field>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.input-mask-field__input{display:block;width:100%;max-width:none;box-sizing:border-box;margin:0;padding:1.35rem .75rem .45rem;font-size:1rem;line-height:1.35;font-family:inherit;color:var(--ui-field-float-input-text);border:none;border-radius:0;background:transparent;box-shadow:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.input-mask-field__input::placeholder{color:transparent}.input-mask-field__input:focus,.input-mask-field__input:focus-visible{outline:none}.input-mask-field__input--invalid:not(:disabled)::placeholder{color:transparent}.input-mask-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"], dependencies: [{ kind: "component", type: BaseFieldComponent, selector: "app-base-field", inputs: ["label", "errorMessage", "required", "showRequiredMark", "invalid", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2872
2872
  }
2873
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputMaskFieldComponent, decorators: [{
2873
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: InputMaskFieldComponent, decorators: [{
2874
2874
  type: Component,
2875
- args: [{ selector: 'app-input-mask-field', standalone: true, imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2875
+ args: [{ selector: 'app-input-mask-field', imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2876
2876
  {
2877
2877
  provide: NG_VALUE_ACCESSOR,
2878
2878
  useExisting: forwardRef(() => InputMaskFieldComponent),
@@ -2904,8 +2904,8 @@ class CepFieldComponent extends MaskedTextFieldBase {
2904
2904
  onClear() {
2905
2905
  this.onMaskedClear();
2906
2906
  }
2907
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CepFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2908
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CepFieldComponent, isStandalone: true, selector: "app-cep-field", inputs: { maskPattern: "maskPattern" }, host: { properties: { "class.cep-field--invalid": "this.hostInvalidClass" } }, providers: [
2907
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CepFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2908
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: CepFieldComponent, isStandalone: true, selector: "app-cep-field", inputs: { maskPattern: "maskPattern" }, host: { properties: { "class.cep-field--invalid": "this.hostInvalidClass" } }, providers: [
2909
2909
  {
2910
2910
  provide: NG_VALUE_ACCESSOR,
2911
2911
  useExisting: forwardRef(() => CepFieldComponent),
@@ -2913,9 +2913,9 @@ class CepFieldComponent extends MaskedTextFieldBase {
2913
2913
  },
2914
2914
  ], usesInheritance: true, ngImport: i0, template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [inputId]=\"controlId\" [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\"\n [prefixIcon]=\"prefixIcon\" [clearable]=\"clearable\" [clearAriaLabel]=\"clearAriaLabel\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <input class=\"cep-field__input\" type=\"text\" inputmode=\"numeric\" [id]=\"controlId\" [attr.name]=\"name || null\"\n [attr.placeholder]=\"''\" [attr.autocomplete]=\"autocompleteAttr\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [required]=\"uiRequiredEffective\" [attr.aria-invalid]=\"uiInvalid\" [attr.aria-describedby]=\"uiAriaDescribedBy\"\n [value]=\"inputText\" (input)=\"onNativeInput($event)\" (blur)=\"onBlur()\" />\n</app-base-field>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.cep-field__input{display:block;width:100%;max-width:none;box-sizing:border-box;margin:0;padding:1.35rem .75rem .45rem;font-size:1rem;line-height:1.35;font-family:inherit;color:var(--ui-field-float-input-text);border:none;border-radius:0;background:transparent;box-shadow:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cep-field__input::placeholder{color:transparent}.cep-field__input:focus,.cep-field__input:focus-visible{outline:none}.cep-field__input--invalid:not(:disabled)::placeholder{color:transparent}.cep-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"], dependencies: [{ kind: "component", type: BaseFieldComponent, selector: "app-base-field", inputs: ["label", "errorMessage", "required", "showRequiredMark", "invalid", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2915
2915
  }
2916
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CepFieldComponent, decorators: [{
2916
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CepFieldComponent, decorators: [{
2917
2917
  type: Component,
2918
- args: [{ selector: 'app-cep-field', standalone: true, imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2918
+ args: [{ selector: 'app-cep-field', imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2919
2919
  {
2920
2920
  provide: NG_VALUE_ACCESSOR,
2921
2921
  useExisting: forwardRef(() => CepFieldComponent),
@@ -2962,8 +2962,8 @@ class PhoneFieldComponent extends MaskedTextFieldBase {
2962
2962
  onClear() {
2963
2963
  this.onMaskedClear();
2964
2964
  }
2965
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PhoneFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2966
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: PhoneFieldComponent, isStandalone: true, selector: "app-phone-field", inputs: { landline: ["landline", "landline", booleanAttribute], maskPattern: "maskPattern" }, host: { properties: { "class.phone-field--invalid": "this.hostInvalidClass" } }, providers: [
2965
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PhoneFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2966
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: PhoneFieldComponent, isStandalone: true, selector: "app-phone-field", inputs: { landline: ["landline", "landline", booleanAttribute], maskPattern: "maskPattern" }, host: { properties: { "class.phone-field--invalid": "this.hostInvalidClass" } }, providers: [
2967
2967
  {
2968
2968
  provide: NG_VALUE_ACCESSOR,
2969
2969
  useExisting: forwardRef(() => PhoneFieldComponent),
@@ -2971,9 +2971,9 @@ class PhoneFieldComponent extends MaskedTextFieldBase {
2971
2971
  },
2972
2972
  ], usesInheritance: true, ngImport: i0, template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [inputId]=\"controlId\" [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\"\n [prefixIcon]=\"prefixIcon\" [clearable]=\"clearable\" [clearAriaLabel]=\"clearAriaLabel\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <input class=\"phone-field__input\" type=\"text\" inputmode=\"tel\" [id]=\"controlId\" [attr.name]=\"name || null\"\n [attr.placeholder]=\"''\" [attr.autocomplete]=\"autocompleteAttr\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [required]=\"uiRequiredEffective\" [attr.aria-invalid]=\"uiInvalid\" [attr.aria-describedby]=\"uiAriaDescribedBy\"\n [value]=\"inputText\" (input)=\"onNativeInput($event)\" (blur)=\"onBlur()\" />\n</app-base-field>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.phone-field__input{display:block;width:100%;max-width:none;box-sizing:border-box;margin:0;padding:1.35rem .75rem .45rem;font-size:1rem;line-height:1.35;font-family:inherit;color:var(--ui-field-float-input-text);border:none;border-radius:0;background:transparent;box-shadow:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.phone-field__input::placeholder{color:transparent}.phone-field__input:focus,.phone-field__input:focus-visible{outline:none}.phone-field__input--invalid:not(:disabled)::placeholder{color:transparent}.phone-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"], dependencies: [{ kind: "component", type: BaseFieldComponent, selector: "app-base-field", inputs: ["label", "errorMessage", "required", "showRequiredMark", "invalid", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2973
2973
  }
2974
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PhoneFieldComponent, decorators: [{
2974
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PhoneFieldComponent, decorators: [{
2975
2975
  type: Component,
2976
- args: [{ selector: 'app-phone-field', standalone: true, imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2976
+ args: [{ selector: 'app-phone-field', imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2977
2977
  {
2978
2978
  provide: NG_VALUE_ACCESSOR,
2979
2979
  useExisting: forwardRef(() => PhoneFieldComponent),
@@ -3020,8 +3020,8 @@ class CpfCnpjFieldComponent extends MaskedTextFieldBase {
3020
3020
  onClear() {
3021
3021
  this.onMaskedClear();
3022
3022
  }
3023
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CpfCnpjFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3024
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CpfCnpjFieldComponent, isStandalone: true, selector: "app-cpf-cnpj-field", inputs: { maskPattern: "maskPattern" }, host: { properties: { "class.cpf-cnpj-field--invalid": "this.hostInvalidClass" } }, providers: [
3023
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CpfCnpjFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3024
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: CpfCnpjFieldComponent, isStandalone: true, selector: "app-cpf-cnpj-field", inputs: { maskPattern: "maskPattern" }, host: { properties: { "class.cpf-cnpj-field--invalid": "this.hostInvalidClass" } }, providers: [
3025
3025
  {
3026
3026
  provide: NG_VALUE_ACCESSOR,
3027
3027
  useExisting: forwardRef(() => CpfCnpjFieldComponent),
@@ -3029,9 +3029,9 @@ class CpfCnpjFieldComponent extends MaskedTextFieldBase {
3029
3029
  },
3030
3030
  ], usesInheritance: true, ngImport: i0, template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [inputId]=\"controlId\" [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\"\n [prefixIcon]=\"prefixIcon\" [clearable]=\"clearable\" [clearAriaLabel]=\"clearAriaLabel\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <input class=\"cpf-cnpj-field__input\" type=\"text\" inputmode=\"numeric\" [id]=\"controlId\" [attr.name]=\"name || null\"\n [attr.placeholder]=\"''\" [attr.autocomplete]=\"autocompleteAttr\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [required]=\"uiRequiredEffective\" [attr.aria-invalid]=\"uiInvalid\" [attr.aria-describedby]=\"uiAriaDescribedBy\"\n [value]=\"inputText\" (input)=\"onNativeInput($event)\" (blur)=\"onBlur()\" />\n</app-base-field>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.cpf-cnpj-field__input{display:block;width:100%;max-width:none;box-sizing:border-box;margin:0;padding:1.35rem .75rem .45rem;font-size:1rem;line-height:1.35;font-family:inherit;color:var(--ui-field-float-input-text);border:none;border-radius:0;background:transparent;box-shadow:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cpf-cnpj-field__input::placeholder{color:transparent}.cpf-cnpj-field__input:focus,.cpf-cnpj-field__input:focus-visible{outline:none}.cpf-cnpj-field__input--invalid:not(:disabled)::placeholder{color:transparent}.cpf-cnpj-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"], dependencies: [{ kind: "component", type: BaseFieldComponent, selector: "app-base-field", inputs: ["label", "errorMessage", "required", "showRequiredMark", "invalid", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3031
3031
  }
3032
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CpfCnpjFieldComponent, decorators: [{
3032
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CpfCnpjFieldComponent, decorators: [{
3033
3033
  type: Component,
3034
- args: [{ selector: 'app-cpf-cnpj-field', standalone: true, imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
3034
+ args: [{ selector: 'app-cpf-cnpj-field', imports: [BaseFieldComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
3035
3035
  {
3036
3036
  provide: NG_VALUE_ACCESSOR,
3037
3037
  useExisting: forwardRef(() => CpfCnpjFieldComponent),
@@ -3285,10 +3285,10 @@ class BooleanFieldDirective extends BaseFieldDirective {
3285
3285
  onBlur() {
3286
3286
  this.notifyTouched();
3287
3287
  }
3288
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BooleanFieldDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
3289
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: BooleanFieldDirective, inputs: { showErrorMessage: "showErrorMessage" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
3288
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BooleanFieldDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
3289
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: BooleanFieldDirective, isStandalone: true, inputs: { showErrorMessage: "showErrorMessage" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
3290
3290
  }
3291
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BooleanFieldDirective, decorators: [{
3291
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BooleanFieldDirective, decorators: [{
3292
3292
  type: Directive
3293
3293
  }], propDecorators: { showErrorMessage: [{
3294
3294
  type: Input
@@ -3305,8 +3305,8 @@ class CheckboxFieldComponent extends BooleanFieldDirective {
3305
3305
  const el = event.target;
3306
3306
  this.setChecked(el.checked);
3307
3307
  }
3308
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CheckboxFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3309
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CheckboxFieldComponent, isStandalone: true, selector: "app-checkbox-field", providers: [
3308
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CheckboxFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3309
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: CheckboxFieldComponent, isStandalone: true, selector: "app-checkbox-field", providers: [
3310
3310
  {
3311
3311
  provide: NG_VALUE_ACCESSOR,
3312
3312
  useExisting: forwardRef(() => CheckboxFieldComponent),
@@ -3314,9 +3314,9 @@ class CheckboxFieldComponent extends BooleanFieldDirective {
3314
3314
  },
3315
3315
  ], usesInheritance: true, ngImport: i0, template: "@if (!loading) {\r\n<div class=\"checkbox-field\" [class.checkbox-field--invalid]=\"uiInvalid\"\r\n [class.checkbox-field--readonly]=\"readonly\">\r\n <label class=\"checkbox-field__row\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"checkbox-field__native\"\r\n [id]=\"controlId\"\r\n [attr.name]=\"name || null\"\r\n [attr.tabindex]=\"readonly ? -1 : null\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n [required]=\"uiRequiredEffective\"\r\n [attr.aria-invalid]=\"uiInvalid\"\r\n [attr.aria-describedby]=\"uiAriaDescribedBy\"\r\n [attr.aria-readonly]=\"readonly ? true : null\"\r\n [attr.aria-label]=\"label || placeholder || 'Op\u00E7\u00E3o'\"\r\n (click)=\"onCheckboxClick($event)\"\r\n (change)=\"onNativeChange($event)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n @if (label) {\r\n <span class=\"checkbox-field__label\">{{ label }}</span>\r\n }\r\n </label>\r\n @if (showErrorMessage && uiInvalid && uiErrorMessage) {\r\n <p class=\"checkbox-field__error\" [id]=\"errorElementId\" role=\"alert\">{{ uiErrorMessage }}</p>\r\n }\r\n</div>\r\n} @else {\r\n<div class=\"checkbox-field checkbox-field--loading\" role=\"status\" aria-live=\"polite\" [attr.aria-busy]=\"true\"\r\n [attr.aria-label]=\"label || 'A carregar'\">\r\n <div class=\"checkbox-field__skeleton-row\" aria-hidden=\"true\">\r\n <app-skeleton-block width=\"1.1rem\" height=\"1.1rem\" radius=\"4px\" />\r\n <app-skeleton-block width=\"11rem\" height=\"0.72rem\" radius=\"6px\" />\r\n </div>\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.checkbox-field--invalid .checkbox-field__label{color:var(--ui-field-float-label-invalid-color)}.checkbox-field__row{display:flex;align-items:flex-start;gap:.5rem;margin:0;cursor:pointer;width:fit-content;max-width:100%}.checkbox-field__native{appearance:none;-webkit-appearance:none;width:1.1rem;height:1.1rem;margin-top:.15rem;flex-shrink:0;box-sizing:border-box;border:1px solid var(--ui-field-float-border);border-radius:4px;background-color:var(--ui-field-float-bg);background-repeat:no-repeat;background-position:center;background-size:.65rem auto;cursor:pointer;transition:border-color .15s ease,background-color .15s ease}.checkbox-field__native:focus-visible{outline:2px solid var(--ui-field-float-border-focus);outline-offset:2px}.checkbox-field__native:focus:not(:focus-visible){outline:2px solid var(--ui-field-float-border-focus);outline-offset:2px}.checkbox-field__native:checked{border-color:var(--ui-field-float-border-focus);background-color:var(--ui-field-float-border-focus);background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M2.5 6l2.5 2.5 4.5-5'/%3E%3C/svg%3E\")}.checkbox-field__native:disabled{cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity)}.checkbox-field--invalid .checkbox-field__native{border-color:var(--ui-field-input-invalid-border)}.checkbox-field--invalid .checkbox-field__native:checked{border-color:var(--ui-field-input-invalid-border);background-color:var(--ui-field-input-invalid-border);background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M2.5 6l2.5 2.5 4.5-5'/%3E%3C/svg%3E\")}.checkbox-field--invalid .checkbox-field__native:focus-visible{outline-color:var(--ui-field-input-invalid-border)}.checkbox-field--invalid .checkbox-field__native:focus:not(:focus-visible){outline:2px solid var(--ui-field-input-invalid-border);outline-offset:2px}.checkbox-field__label{font-size:1rem;line-height:1.35;color:var(--ui-field-float-label-color);cursor:pointer;-webkit-user-select:none;user-select:none}.checkbox-field__error{margin:.35rem 0 0 1.6rem;padding:0;font-size:.75rem;color:var(--ui-field-error-text-color);user-select:none;-webkit-user-select:none}.checkbox-field--loading{width:100%;max-width:100%;box-sizing:border-box}.checkbox-field--loading .checkbox-field__skeleton-row{display:flex;align-items:center;gap:.5rem;width:100%;max-width:100%;box-sizing:border-box}.checkbox-field--readonly .checkbox-field__row{cursor:default;pointer-events:none}.checkbox-field--readonly .checkbox-field__native{border-color:var(--ui-field-readonly-border);background-color:var(--ui-field-readonly-bg);cursor:default}.checkbox-field--readonly .checkbox-field__native:checked{border-color:var(--ui-field-readonly-border-focus);background-color:var(--ui-field-readonly-border-focus);background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M2.5 6l2.5 2.5 4.5-5'/%3E%3C/svg%3E\")}.checkbox-field--readonly .checkbox-field__native:focus,.checkbox-field--readonly .checkbox-field__native:focus-visible{outline:none}.checkbox-field--readonly .checkbox-field__label{color:var(--ui-field-readonly-label-color);cursor:default}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3316
3316
  }
3317
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CheckboxFieldComponent, decorators: [{
3317
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CheckboxFieldComponent, decorators: [{
3318
3318
  type: Component,
3319
- args: [{ selector: 'app-checkbox-field', standalone: true, imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
3319
+ args: [{ selector: 'app-checkbox-field', imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
3320
3320
  {
3321
3321
  provide: NG_VALUE_ACCESSOR,
3322
3322
  useExisting: forwardRef(() => CheckboxFieldComponent),
@@ -3335,8 +3335,8 @@ class SwitchFieldComponent extends BooleanFieldDirective {
3335
3335
  }
3336
3336
  this.setChecked(!this.checked);
3337
3337
  }
3338
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SwitchFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3339
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SwitchFieldComponent, isStandalone: true, selector: "app-switch-field", providers: [
3338
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SwitchFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3339
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SwitchFieldComponent, isStandalone: true, selector: "app-switch-field", providers: [
3340
3340
  {
3341
3341
  provide: NG_VALUE_ACCESSOR,
3342
3342
  useExisting: forwardRef(() => SwitchFieldComponent),
@@ -3344,9 +3344,9 @@ class SwitchFieldComponent extends BooleanFieldDirective {
3344
3344
  },
3345
3345
  ], usesInheritance: true, ngImport: i0, template: "@if (!loading) {\r\n<div class=\"switch-field\" [class.switch-field--invalid]=\"uiInvalid\"\r\n [class.switch-field--readonly]=\"readonly\">\r\n <label class=\"switch-field__row\">\r\n <button\r\n type=\"button\"\r\n class=\"switch-field__track\"\r\n role=\"switch\"\r\n [id]=\"controlId\"\r\n [attr.name]=\"name || null\"\r\n [attr.aria-checked]=\"checked\"\r\n [attr.aria-labelledby]=\"label ? labelId : null\"\r\n [attr.aria-invalid]=\"uiInvalid\"\r\n [attr.aria-describedby]=\"uiAriaDescribedBy\"\r\n [attr.aria-readonly]=\"readonly ? true : null\"\r\n [disabled]=\"disabled || readonly\"\r\n (click)=\"toggle()\"\r\n (blur)=\"onBlur()\"\r\n >\r\n <span class=\"switch-field__thumb\" aria-hidden=\"true\"></span>\r\n </button>\r\n @if (label) {\r\n <span class=\"switch-field__label\" [id]=\"labelId\">\r\n {{ label }}\r\n @if (uiRequiredEffective && showRequiredMark) {\r\n <span class=\"switch-field__required\" aria-hidden=\"true\">*</span>\r\n }\r\n </span>\r\n }\r\n </label>\r\n @if (showErrorMessage && uiInvalid && uiErrorMessage) {\r\n <p class=\"switch-field__error\" [id]=\"errorElementId\" role=\"alert\">{{ uiErrorMessage }}</p>\r\n }\r\n</div>\r\n} @else {\r\n<div class=\"switch-field switch-field--loading\" role=\"status\" aria-live=\"polite\" [attr.aria-busy]=\"true\"\r\n [attr.aria-label]=\"label || 'A carregar'\">\r\n <div class=\"switch-field__skeleton-row\" aria-hidden=\"true\">\r\n <app-skeleton-block width=\"2.75rem\" height=\"1.5rem\" radius=\"999px\" />\r\n <app-skeleton-block width=\"4.25rem\" height=\"0.72rem\" radius=\"6px\" />\r\n </div>\r\n</div>\r\n}\r\n", styles: [":host{display:block;width:100%;box-sizing:border-box}.switch-field--invalid .switch-field__label{color:var(--ui-field-float-label-invalid-color)}.switch-field__row{display:flex;align-items:center;gap:.65rem;margin:0;cursor:pointer;width:fit-content;max-width:100%}.switch-field__track{position:relative;width:2.75rem;height:1.5rem;padding:0;border:1px solid var(--ui-field-float-border);border-radius:999px;background:var(--ui-field-float-bg, #f3f3f3);cursor:pointer;flex-shrink:0;transition:background .15s ease,border-color .15s ease}.switch-field__track[aria-checked=true]{background:var(--ui-field-float-border-focus);border-color:var(--ui-field-float-border-focus)}.switch-field__track:focus-visible{outline:2px solid var(--ui-field-float-border-focus);outline-offset:2px}.switch-field__track:focus:not(:focus-visible){outline:2px solid var(--ui-field-float-border-focus);outline-offset:2px}.switch-field--invalid .switch-field__track{border-color:var(--ui-field-input-invalid-border)}.switch-field--invalid .switch-field__track[aria-checked=true]{background:var(--ui-field-input-invalid-border);border-color:var(--ui-field-input-invalid-border)}.switch-field--invalid .switch-field__track:focus-visible{outline:2px solid var(--ui-field-input-invalid-border);outline-offset:2px}.switch-field--invalid .switch-field__track:focus:not(:focus-visible){outline:2px solid var(--ui-field-input-invalid-border);outline-offset:2px}.switch-field__track:disabled{cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity)}.switch-field__thumb{position:absolute;top:2px;left:2px;width:1.1rem;height:1.1rem;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0003;transition:transform .15s ease}.switch-field__track[aria-checked=true] .switch-field__thumb{transform:translate(1.2rem)}.switch-field__label{font-size:1rem;line-height:1.35;color:var(--ui-field-float-label-color);-webkit-user-select:none;user-select:none}.switch-field__required{color:var(--ui-field-required-mark-color);margin-left:.15rem}.switch-field__error{margin:.35rem 0 0;padding:0;font-size:.75rem;color:var(--ui-field-error-text-color);user-select:none;-webkit-user-select:none}.switch-field--loading{min-width:8.5rem;width:100%;max-width:100%;box-sizing:border-box}.switch-field--loading .switch-field__skeleton-row{display:flex;align-items:center;gap:.65rem;width:100%;min-width:0;max-width:100%;box-sizing:border-box}.switch-field--readonly .switch-field__row{cursor:default}.switch-field--readonly .switch-field__track:disabled{cursor:default;border-color:var(--ui-field-readonly-border);background:var(--ui-field-readonly-bg);opacity:1}.switch-field--readonly .switch-field__track:disabled[aria-checked=true]{background:var(--ui-field-readonly-border-focus);border-color:var(--ui-field-readonly-border-focus)}.switch-field--readonly .switch-field__track:disabled:focus,.switch-field--readonly .switch-field__track:disabled:focus-visible{outline:none}.switch-field--readonly .switch-field__label{color:var(--ui-field-readonly-label-color)}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3346
3346
  }
3347
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SwitchFieldComponent, decorators: [{
3347
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SwitchFieldComponent, decorators: [{
3348
3348
  type: Component,
3349
- args: [{ selector: 'app-switch-field', standalone: true, imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
3349
+ args: [{ selector: 'app-switch-field', imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
3350
3350
  {
3351
3351
  provide: NG_VALUE_ACCESSOR,
3352
3352
  useExisting: forwardRef(() => SwitchFieldComponent),
@@ -3481,10 +3481,10 @@ class DropdownOptionFieldBase extends NgControlFieldDirective {
3481
3481
  }
3482
3482
  return this.activeIndex;
3483
3483
  }
3484
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownOptionFieldBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
3485
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.12", type: DropdownOptionFieldBase, inputs: { options: "options", itemsInput: ["items", "itemsInput"], compareWith: "compareWith", compareBy: "compareBy", optionsLoading: ["optionsLoading", "optionsLoading", booleanAttribute] }, usesInheritance: true, ngImport: i0 }); }
3484
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DropdownOptionFieldBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
3485
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.2.9", type: DropdownOptionFieldBase, isStandalone: true, inputs: { options: "options", itemsInput: ["items", "itemsInput"], compareWith: "compareWith", compareBy: "compareBy", optionsLoading: ["optionsLoading", "optionsLoading", booleanAttribute] }, usesInheritance: true, ngImport: i0 }); }
3486
3486
  }
3487
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownOptionFieldBase, decorators: [{
3487
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DropdownOptionFieldBase, decorators: [{
3488
3488
  type: Directive
3489
3489
  }], propDecorators: { options: [{
3490
3490
  type: Input
@@ -3630,10 +3630,10 @@ class DropdownMultiOptionFieldBase extends NgControlFieldDirective {
3630
3630
  }
3631
3631
  return this.activeIndex;
3632
3632
  }
3633
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownMultiOptionFieldBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
3634
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.12", type: DropdownMultiOptionFieldBase, inputs: { options: "options", itemsInput: ["items", "itemsInput"], compareWith: "compareWith", compareBy: "compareBy", optionsLoading: ["optionsLoading", "optionsLoading", booleanAttribute] }, usesInheritance: true, ngImport: i0 }); }
3633
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DropdownMultiOptionFieldBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
3634
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.2.9", type: DropdownMultiOptionFieldBase, isStandalone: true, inputs: { options: "options", itemsInput: ["items", "itemsInput"], compareWith: "compareWith", compareBy: "compareBy", optionsLoading: ["optionsLoading", "optionsLoading", booleanAttribute] }, usesInheritance: true, ngImport: i0 }); }
3635
3635
  }
3636
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownMultiOptionFieldBase, decorators: [{
3636
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DropdownMultiOptionFieldBase, decorators: [{
3637
3637
  type: Directive
3638
3638
  }], propDecorators: { options: [{
3639
3639
  type: Input
@@ -3986,8 +3986,8 @@ class SelectFieldComponent extends DropdownOptionFieldBase {
3986
3986
  this.selectOption(opt);
3987
3987
  }
3988
3988
  }
3989
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3990
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SelectFieldComponent, isStandalone: true, selector: "app-select-field", inputs: { pagination: ["pagination", "pagination", booleanAttribute], pageableInput: ["pageable", "pageableInput", booleanAttribute], pageSize: ["pageSize", "pageSize", numberAttribute], hasMore: "hasMore", loadingMore: "loadingMore" }, outputs: { pageRequested: "pageRequested" }, host: { listeners: { "keydown": "onDropdownHostEscape($event)" }, properties: { "class.select-field--invalid": "this.hostInvalidClass" } }, providers: [
3989
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SelectFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3990
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SelectFieldComponent, isStandalone: true, selector: "app-select-field", inputs: { pagination: ["pagination", "pagination", booleanAttribute], pageableInput: ["pageable", "pageableInput", booleanAttribute], pageSize: ["pageSize", "pageSize", numberAttribute], hasMore: "hasMore", loadingMore: "loadingMore" }, outputs: { pageRequested: "pageRequested" }, host: { listeners: { "keydown": "onDropdownHostEscape($event)" }, properties: { "class.select-field--invalid": "this.hostInvalidClass" } }, providers: [
3991
3991
  {
3992
3992
  provide: NG_VALUE_ACCESSOR,
3993
3993
  useExisting: forwardRef(() => SelectFieldComponent),
@@ -3995,9 +3995,9 @@ class SelectFieldComponent extends DropdownOptionFieldBase {
3995
3995
  },
3996
3996
  ], viewQueries: [{ propertyName: "optionsPanelTpl", first: true, predicate: ["optionsPanelTpl"], descendants: true, static: true }, { propertyName: "dropdownTriggerRootRef", first: true, predicate: ["dropdownFieldTriggerRoot"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\" [invalid]=\"uiInvalid\"\n [inputId]=\"controlId\" [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\" [prefixIcon]=\"prefixIcon\"\n [clearable]=\"clearable\" [clearAriaLabel]=\"clearAriaLabel\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <div class=\"select-field__wrap\">\n <app-dropdown-base [open]=\"panelOpen\" [panelTemplate]=\"optionsPanelTpl\" [panelWidthPx]=\"panelOverlayWidth\"\n (openChange)=\"onDropdownOpenChange($event)\">\n <div #dropdownFieldTriggerRoot class=\"select-field__origin\" appDropdownTrigger\n (keydown)=\"onTriggerKeydown($event)\">\n <!-- `div` em vez de `<button>`: o texto do valor fica selecion\u00E1vel (copiar), como no combobox. -->\n <div\n role=\"combobox\"\n class=\"select-field__value-btn\"\n [class.select-field__value-btn--is-disabled]=\"disabled\"\n [id]=\"controlId\"\n [attr.name]=\"name || null\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [attr.aria-disabled]=\"disabled ? true : null\"\n [attr.aria-readonly]=\"readonly && !disabled ? true : null\"\n [attr.aria-expanded]=\"panelOpen\"\n aria-haspopup=\"listbox\"\n [attr.aria-controls]=\"panelOpen ? optionsListId : null\"\n [attr.aria-invalid]=\"uiInvalid\"\n [attr.aria-describedby]=\"uiAriaDescribedBy\"\n [attr.aria-label]=\"floatLabelCaption || placeholder || 'Selecionar'\"\n (click)=\"openToggle()\"\n (blur)=\"onDropdownBlur($event)\"\n >\n <span class=\"select-field__value\">{{ displayValue }}</span>\n </div>\n <button type=\"button\" class=\"select-field__chevron-btn\" tabindex=\"-1\" [disabled]=\"disabled || readonly\"\n [attr.aria-expanded]=\"panelOpen\" aria-haspopup=\"listbox\" aria-label=\"Abrir lista de op\u00E7\u00F5es\"\n (click)=\"openToggle()\" (blur)=\"onDropdownBlur($event)\">\n <i class=\"fa-solid fa-chevron-down select-field__chevron-icon\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </app-dropdown-base>\n </div>\n</app-base-field>\n\n<ng-template #optionsPanelTpl>\n <div class=\"select-field__list\" [id]=\"optionsListId\" role=\"listbox\" tabindex=\"-1\"\n (blur)=\"onDropdownBlur($event)\" (keydown)=\"onListKeydown($event)\" (scroll)=\"onOptionsListScroll($event)\">\n @if (listOptions.length === 0 && (optionsLoading || (pagination && loadingMore))) {\n <app-skeleton-list [rows]=\"8\" />\n }\n @for (opt of listOptions; track trackOption($index, opt)) {\n <div role=\"option\" class=\"select-field__option\" [class.select-field__option--disabled]=\"opt.disabled\"\n [class.select-field__option--selected]=\"isSelected(opt)\"\n [class.select-field__option--active]=\"!opt.disabled && activeIndex === $index\"\n [attr.tabindex]=\"opt.disabled ? null : -1\" [attr.aria-selected]=\"isSelected(opt)\" (click)=\"selectOption(opt)\"\n (keydown)=\"onOptionRowKeydown($event, opt)\">\n {{ opt.label }}\n </div>\n }\n @if (options.length > 0 && pagination && loadingMore) {\n <app-skeleton-list [rows]=\"1\" [leading]=\"false\" />\n }\n </div>\n</ng-template>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}:host ::ng-deep .base-field:not(.base-field--invalid):not(.base-field--disabled) .base-field__box:focus-within{border-color:var(--ui-field-float-border-focus);box-shadow:0 0 0 3px var(--ui-field-float-focus-ring)}:host ::ng-deep .base-field--invalid:not(.base-field--disabled) .base-field__box:focus-within{border-color:var(--ui-field-input-invalid-border);box-shadow:0 0 0 3px var(--ui-field-input-invalid-focus-halo)}:host ::ng-deep .base-field.base-field--readonly:not(.base-field--invalid):not(.base-field--disabled) .base-field__box:focus-within{border-color:var(--ui-field-readonly-border-focus);box-shadow:0 0 0 3px var(--ui-field-readonly-focus-ring)}:host ::ng-deep .base-field.base-field--invalid.base-field--readonly:not(.base-field--disabled) .base-field__box:focus-within{border-color:var(--ui-field-input-invalid-border);box-shadow:0 0 0 3px var(--ui-field-input-invalid-focus-halo)}.select-field__wrap{display:flex;flex:1;align-items:stretch;align-self:stretch;min-width:0;width:100%;box-sizing:border-box}.select-field__origin{display:flex;align-items:center;align-self:stretch;min-width:0;width:100%;min-height:calc(1.8rem + 1.35em);box-sizing:border-box}.select-field__value-btn{flex:1;min-width:0;margin:0;box-sizing:border-box;min-height:calc(1.8rem + 1.35em);padding:1.35rem .35rem .45rem .75rem;font-size:1rem;line-height:1.35;font-family:inherit;text-align:left;color:var(--ui-field-float-input-text);background:transparent;border:0;border-radius:0;box-shadow:none;cursor:pointer;display:flex;align-items:center;user-select:text;-webkit-user-select:text;-moz-user-select:text}.select-field__value-btn:focus,.select-field__value-btn:focus-visible{outline:none;box-shadow:none}.select-field__value-btn--is-disabled{cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity);pointer-events:none}:host ::ng-deep .base-field--readonly:not(.base-field--disabled) .select-field__value-btn:not(.select-field__value-btn--is-disabled){color:var(--ui-field-readonly-input-text);-webkit-text-fill-color:var(--ui-field-readonly-input-text)}:host ::ng-deep .base-field--readonly:not(.base-field--disabled) .select-field__chevron-btn:disabled{opacity:1;cursor:default;color:var(--ui-field-readonly-prefix-color)}.select-field__value{display:block;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;user-select:text;-webkit-user-select:text;-moz-user-select:text}.select-field__chevron-btn{display:flex;flex-shrink:0;align-items:center;justify-content:center;align-self:center;box-sizing:border-box;width:2rem;height:2rem;margin:0 .1rem;padding:0;border:0;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,color .15s ease}.select-field__chevron-btn:hover:not(:disabled){background:#5a7fa31f;color:var(--ui-field-float-label-top-color)}.select-field__chevron-btn:focus,.select-field__chevron-btn:focus-visible{outline:none;box-shadow:none}.select-field__chevron-btn:disabled{cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity)}:host.select-field--invalid .select-field__chevron-btn{color:var(--ui-field-float-label-invalid-color)}:host.select-field--invalid .select-field__chevron-btn .select-field__chevron-icon{color:inherit}:host.select-field--invalid .select-field__chevron-btn:hover:not(:disabled){background:#b91c1c1f}:host.select-field--invalid .select-field__chevron-btn:focus,:host.select-field--invalid .select-field__chevron-btn:focus-visible{outline:none;box-shadow:none}.select-field__chevron-icon{display:inline-flex;align-items:center;justify-content:center;padding-top:2px;font-size:.8rem;line-height:1}.select-field__list{margin:0;padding:.25rem 0;width:100%;max-height:min(240px,50vh);box-sizing:border-box;list-style:none;outline:none;overflow-x:hidden;overflow-y:auto;background:var(--app-color-nav-surface, var(--app-color-surface, #fff))}.select-field__loading{padding:.65rem .75rem;font-size:.85rem;line-height:1.35;color:var(--ui-field-float-label-color);text-align:center}.select-field__loading--footer{border-top:1px solid rgba(0,0,0,.06)}.select-field__option{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.45rem .75rem;font-size:.95rem;line-height:1.35;cursor:pointer;color:var(--ui-field-float-input-text)}.select-field__option--selected:not(.select-field__option--disabled){background:var(--app-color-dropdown-option-selected-bg)}.select-field__option--active:not(.select-field__option--disabled):not(.select-field__option--selected){background:var(--app-color-dropdown-option-highlight-bg)}.select-field__option.select-field__option--active.select-field__option--selected:not(.select-field__option--disabled){background:var(--app-color-dropdown-option-selected-bg-active)}.select-field__option--disabled{opacity:.45;cursor:not-allowed}.select-field__option:hover:not(.select-field__option--disabled):not(.select-field__option--selected){background:var(--app-color-dropdown-option-hover-bg)}.select-field__option.select-field__option--selected:hover:not(.select-field__option--disabled){background:var(--app-color-dropdown-option-selected-hover-bg)}\n"], dependencies: [{ kind: "component", type: BaseFieldComponent, selector: "app-base-field", inputs: ["label", "errorMessage", "required", "showRequiredMark", "invalid", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }, { kind: "component", type: DropdownBaseComponent, selector: "app-dropdown-base", inputs: ["open", "panelTemplate", "panelWidthPx", "closeOnEscape", "hasBackdrop", "connectedPositions", "pushConnectedOverlay", "bareOverlayPanel"], outputs: ["openChange"] }, { kind: "component", type: SkeletonListComponent, selector: "app-skeleton-list", inputs: ["rows", "leading", "rowGap", "lineHeight", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3997
3997
  }
3998
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectFieldComponent, decorators: [{
3998
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SelectFieldComponent, decorators: [{
3999
3999
  type: Component,
4000
- args: [{ selector: 'app-select-field', standalone: true, imports: [BaseFieldComponent, DropdownBaseComponent, SkeletonListComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
4000
+ args: [{ selector: 'app-select-field', imports: [BaseFieldComponent, DropdownBaseComponent, SkeletonListComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
4001
4001
  {
4002
4002
  provide: NG_VALUE_ACCESSOR,
4003
4003
  useExisting: forwardRef(() => SelectFieldComponent),
@@ -4357,8 +4357,8 @@ class MultiselectFieldComponent extends DropdownMultiOptionFieldBase {
4357
4357
  ev.preventDefault();
4358
4358
  this.onDropdownOpenChange(false);
4359
4359
  }
4360
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MultiselectFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4361
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MultiselectFieldComponent, isStandalone: true, selector: "app-multiselect-field", inputs: { pagination: ["pagination", "pagination", booleanAttribute], pageableInput: ["pageable", "pageableInput", booleanAttribute], pageSize: ["pageSize", "pageSize", numberAttribute], hasMore: "hasMore", loadingMore: "loadingMore" }, outputs: { pageRequested: "pageRequested" }, host: { listeners: { "keydown": "onDropdownHostEscape($event)" }, properties: { "class.multiselect-field--invalid": "this.hostInvalidClass" } }, providers: [
4360
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MultiselectFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4361
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: MultiselectFieldComponent, isStandalone: true, selector: "app-multiselect-field", inputs: { pagination: ["pagination", "pagination", booleanAttribute], pageableInput: ["pageable", "pageableInput", booleanAttribute], pageSize: ["pageSize", "pageSize", numberAttribute], hasMore: "hasMore", loadingMore: "loadingMore" }, outputs: { pageRequested: "pageRequested" }, host: { listeners: { "keydown": "onDropdownHostEscape($event)" }, properties: { "class.multiselect-field--invalid": "this.hostInvalidClass" } }, providers: [
4362
4362
  {
4363
4363
  provide: NG_VALUE_ACCESSOR,
4364
4364
  useExisting: forwardRef(() => MultiselectFieldComponent),
@@ -4366,9 +4366,9 @@ class MultiselectFieldComponent extends DropdownMultiOptionFieldBase {
4366
4366
  },
4367
4367
  ], viewQueries: [{ propertyName: "optionsPanelTpl", first: true, predicate: ["optionsPanelTpl"], descendants: true, static: true }, { propertyName: "dropdownTriggerRootRef", first: true, predicate: ["dropdownFieldTriggerRoot"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\" [invalid]=\"uiInvalid\"\n [inputId]=\"controlId\" [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\" [prefixIcon]=\"prefixIcon\"\n [clearable]=\"clearable\" [clearAriaLabel]=\"clearAriaLabel\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <div class=\"multiselect-field__wrap\">\n <app-dropdown-base [open]=\"panelOpen\" [panelTemplate]=\"optionsPanelTpl\" [panelWidthPx]=\"panelOverlayWidth\"\n (openChange)=\"onDropdownOpenChange($event)\">\n <div #dropdownFieldTriggerRoot class=\"multiselect-field__origin\" appDropdownTrigger\n (keydown)=\"onTriggerKeydown($event)\">\n <div\n role=\"combobox\"\n class=\"multiselect-field__value-btn\"\n [class.multiselect-field__value-btn--is-disabled]=\"disabled\"\n [id]=\"controlId\"\n [attr.name]=\"name || null\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [attr.aria-disabled]=\"disabled ? true : null\"\n [attr.aria-readonly]=\"readonly && !disabled ? true : null\"\n [attr.aria-expanded]=\"panelOpen\"\n aria-haspopup=\"listbox\"\n [attr.aria-controls]=\"panelOpen ? optionsListId : null\"\n [attr.aria-invalid]=\"uiInvalid\"\n [attr.aria-describedby]=\"uiAriaDescribedBy\"\n [attr.aria-label]=\"floatLabelCaption || placeholder || 'Selecionar v\u00E1rios'\"\n (click)=\"openToggle()\"\n (blur)=\"onDropdownBlur($event)\"\n >\n <span class=\"multiselect-field__value\">{{ displaySummary }}</span>\n </div>\n <button type=\"button\" class=\"multiselect-field__chevron-btn\" tabindex=\"-1\" [disabled]=\"disabled || readonly\"\n [attr.aria-expanded]=\"panelOpen\" aria-haspopup=\"listbox\" aria-label=\"Abrir lista de op\u00E7\u00F5es\"\n (click)=\"openToggle()\" (blur)=\"onDropdownBlur($event)\">\n <i class=\"fa-solid fa-chevron-down multiselect-field__chevron-icon\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </app-dropdown-base>\n </div>\n</app-base-field>\n\n<ng-template #optionsPanelTpl>\n <div class=\"multiselect-field__list\" [id]=\"optionsListId\" role=\"listbox\" tabindex=\"-1\" aria-multiselectable=\"true\"\n (mousedown)=\"$event.preventDefault()\"\n (blur)=\"onDropdownBlur($event)\" (keydown)=\"onListKeydown($event)\" (scroll)=\"onOptionsListScroll($event)\">\n @if (listOptions.length === 0 && (optionsLoading || (pagination && loadingMore))) {\n <app-skeleton-list [rows]=\"8\" />\n }\n @for (opt of listOptions; track trackOption($index, opt)) {\n <div role=\"option\" class=\"multiselect-field__option\" [class.multiselect-field__option--disabled]=\"opt.disabled\"\n [class.multiselect-field__option--selected]=\"isSelected(opt)\"\n [class.multiselect-field__option--active]=\"!opt.disabled && activeIndex === $index\"\n [attr.tabindex]=\"opt.disabled ? null : -1\" [attr.aria-selected]=\"isSelected(opt)\" (click)=\"toggleOption(opt)\"\n (keydown)=\"onOptionRowKeydown($event, opt)\">\n <span class=\"multiselect-field__check\" aria-hidden=\"true\">\n @if (isSelected(opt)) {\n <i class=\"fa-solid fa-check multiselect-field__check-icon\"></i>\n }\n </span>\n <span class=\"multiselect-field__option-label\">{{ opt.label }}</span>\n </div>\n }\n @if (options.length > 0 && pagination && loadingMore) {\n <app-skeleton-list [rows]=\"1\" [leading]=\"false\" />\n }\n </div>\n</ng-template>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}:host ::ng-deep .base-field:not(.base-field--invalid):not(.base-field--disabled) .base-field__box:focus-within{border-color:var(--ui-field-float-border-focus);box-shadow:0 0 0 3px var(--ui-field-float-focus-ring)}:host ::ng-deep .base-field--invalid:not(.base-field--disabled) .base-field__box:focus-within{border-color:var(--ui-field-input-invalid-border);box-shadow:0 0 0 3px var(--ui-field-input-invalid-focus-halo)}:host ::ng-deep .base-field.base-field--readonly:not(.base-field--invalid):not(.base-field--disabled) .base-field__box:focus-within{border-color:var(--ui-field-readonly-border-focus);box-shadow:0 0 0 3px var(--ui-field-readonly-focus-ring)}:host ::ng-deep .base-field.base-field--invalid.base-field--readonly:not(.base-field--disabled) .base-field__box:focus-within{border-color:var(--ui-field-input-invalid-border);box-shadow:0 0 0 3px var(--ui-field-input-invalid-focus-halo)}.multiselect-field__wrap{display:flex;flex:1;align-items:stretch;align-self:stretch;min-width:0;width:100%;box-sizing:border-box}.multiselect-field__origin{display:flex;align-items:center;align-self:stretch;min-width:0;width:100%;min-height:calc(1.8rem + 1.35em);box-sizing:border-box}.multiselect-field__value-btn{flex:1;min-width:0;margin:0;box-sizing:border-box;min-height:calc(1.8rem + 1.35em);padding:1.35rem .35rem .45rem .75rem;font-size:1rem;line-height:1.35;font-family:inherit;text-align:left;color:var(--ui-field-float-input-text);background:transparent;border:0;border-radius:0;box-shadow:none;cursor:pointer;display:flex;align-items:center;user-select:text;-webkit-user-select:text;-moz-user-select:text}.multiselect-field__value-btn:focus,.multiselect-field__value-btn:focus-visible{outline:none;box-shadow:none}.multiselect-field__value-btn--is-disabled{cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity);pointer-events:none}:host ::ng-deep .base-field--readonly:not(.base-field--disabled) .multiselect-field__value-btn:not(.multiselect-field__value-btn--is-disabled){color:var(--ui-field-readonly-input-text);-webkit-text-fill-color:var(--ui-field-readonly-input-text)}:host ::ng-deep .base-field--readonly:not(.base-field--disabled) .multiselect-field__chevron-btn:disabled{opacity:1;cursor:default;color:var(--ui-field-readonly-prefix-color)}.multiselect-field__value{display:block;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;user-select:text;-webkit-user-select:text;-moz-user-select:text}.multiselect-field__chevron-btn{display:flex;flex-shrink:0;align-items:center;justify-content:center;align-self:center;box-sizing:border-box;width:2rem;height:2rem;margin:0 .1rem;padding:0;border:0;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,color .15s ease}.multiselect-field__chevron-btn:hover:not(:disabled){background:#5a7fa31f;color:var(--ui-field-float-label-top-color)}.multiselect-field__chevron-btn:focus,.multiselect-field__chevron-btn:focus-visible{outline:none;box-shadow:none}.multiselect-field__chevron-btn:disabled{cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity)}:host.multiselect-field--invalid .multiselect-field__chevron-btn{color:var(--ui-field-float-label-invalid-color)}:host.multiselect-field--invalid .multiselect-field__chevron-btn .multiselect-field__chevron-icon{color:inherit}:host.multiselect-field--invalid .multiselect-field__chevron-btn:hover:not(:disabled){background:#b91c1c1f}:host.multiselect-field--invalid .multiselect-field__chevron-btn:focus,:host.multiselect-field--invalid .multiselect-field__chevron-btn:focus-visible{outline:none;box-shadow:none}.multiselect-field__chevron-icon{display:inline-flex;align-items:center;justify-content:center;padding-top:2px;font-size:.8rem;line-height:1}.multiselect-field__list{margin:0;padding:.25rem 0;width:100%;max-height:min(240px,50vh);box-sizing:border-box;list-style:none;outline:none;overflow-x:hidden;overflow-y:auto;background:var(--app-color-nav-surface, var(--app-color-surface, #fff))}.multiselect-field__loading{padding:.65rem .75rem;font-size:.85rem;line-height:1.35;color:var(--ui-field-float-label-color);text-align:center}.multiselect-field__loading--footer{border-top:1px solid rgba(0,0,0,.06)}.multiselect-field__option{display:flex;align-items:center;gap:.5rem;padding:.45rem .75rem;font-size:.95rem;line-height:1.35;cursor:pointer;color:var(--ui-field-float-input-text)}.multiselect-field__option--selected:not(.multiselect-field__option--disabled){background:var(--app-color-dropdown-option-selected-bg)}.multiselect-field__option--active:not(.multiselect-field__option--disabled):not(.multiselect-field__option--selected){background:var(--app-color-dropdown-option-highlight-bg)}.multiselect-field__option.multiselect-field__option--active.multiselect-field__option--selected:not(.multiselect-field__option--disabled){background:var(--app-color-dropdown-option-selected-bg-active)}.multiselect-field__option--disabled{opacity:.45;cursor:not-allowed}.multiselect-field__option:hover:not(.multiselect-field__option--disabled):not(.multiselect-field__option--selected){background:var(--app-color-dropdown-option-hover-bg)}.multiselect-field__option.multiselect-field__option--selected:hover:not(.multiselect-field__option--disabled){background:var(--app-color-dropdown-option-selected-hover-bg)}.multiselect-field__check{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.1rem;height:1.1rem}.multiselect-field__check-icon{font-size:.85rem;line-height:1;color:var(--ui-field-float-border-focus)}.multiselect-field__option-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}\n"], dependencies: [{ kind: "component", type: BaseFieldComponent, selector: "app-base-field", inputs: ["label", "errorMessage", "required", "showRequiredMark", "invalid", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }, { kind: "component", type: DropdownBaseComponent, selector: "app-dropdown-base", inputs: ["open", "panelTemplate", "panelWidthPx", "closeOnEscape", "hasBackdrop", "connectedPositions", "pushConnectedOverlay", "bareOverlayPanel"], outputs: ["openChange"] }, { kind: "component", type: SkeletonListComponent, selector: "app-skeleton-list", inputs: ["rows", "leading", "rowGap", "lineHeight", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4368
4368
  }
4369
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MultiselectFieldComponent, decorators: [{
4369
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MultiselectFieldComponent, decorators: [{
4370
4370
  type: Component,
4371
- args: [{ selector: 'app-multiselect-field', standalone: true, imports: [BaseFieldComponent, DropdownBaseComponent, SkeletonListComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
4371
+ args: [{ selector: 'app-multiselect-field', imports: [BaseFieldComponent, DropdownBaseComponent, SkeletonListComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
4372
4372
  {
4373
4373
  provide: NG_VALUE_ACCESSOR,
4374
4374
  useExisting: forwardRef(() => MultiselectFieldComponent),
@@ -4872,8 +4872,8 @@ class DropdownSearchFieldComponent extends DropdownOptionFieldBase {
4872
4872
  this.notifyTouched();
4873
4873
  this.cdr.markForCheck();
4874
4874
  }
4875
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownSearchFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4876
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DropdownSearchFieldComponent, isStandalone: true, selector: "app-dropdown-search-field", inputs: { pageSize: ["pageSize", "pageSize", numberAttribute], hasMore: "hasMore", loadingMore: "loadingMore", searchDebounceMs: ["searchDebounceMs", "searchDebounceMs", numberAttribute] }, outputs: { pageRequested: "pageRequested" }, host: { listeners: { "keydown": "onDropdownHostEscape($event)" }, properties: { "class.dropdown-search-field--invalid": "this.hostInvalidClass" } }, providers: [
4875
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DropdownSearchFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4876
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DropdownSearchFieldComponent, isStandalone: true, selector: "app-dropdown-search-field", inputs: { pageSize: ["pageSize", "pageSize", numberAttribute], hasMore: "hasMore", loadingMore: "loadingMore", searchDebounceMs: ["searchDebounceMs", "searchDebounceMs", numberAttribute] }, outputs: { pageRequested: "pageRequested" }, host: { listeners: { "keydown": "onDropdownHostEscape($event)" }, properties: { "class.dropdown-search-field--invalid": "this.hostInvalidClass" } }, providers: [
4877
4877
  {
4878
4878
  provide: NG_VALUE_ACCESSOR,
4879
4879
  useExisting: forwardRef(() => DropdownSearchFieldComponent),
@@ -4881,9 +4881,9 @@ class DropdownSearchFieldComponent extends DropdownOptionFieldBase {
4881
4881
  },
4882
4882
  ], viewQueries: [{ propertyName: "optionsPanelTpl", first: true, predicate: ["optionsPanelTpl"], descendants: true, static: true }, { propertyName: "dropdownTriggerRootRef", first: true, predicate: ["dropdownFieldTriggerRoot"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\" [invalid]=\"uiInvalid\"\n [inputId]=\"controlId\" [errorId]=\"errorElementId\" [showPrefixIcon]=\"showPrefixIcon\" [prefixIcon]=\"prefixIcon\"\n [clearable]=\"clearable\" [clearAriaLabel]=\"clearAriaLabel\"\n [mostrarMenuContexto]=\"mostrarMenuContexto\" [contextMenuItems]=\"contextMenuItems\" [contextMenuId]=\"contextMenuId\"\n (clear)=\"onClear()\" (contextMenuSelect)=\"contextMenuSelect.emit($event)\">\n <ng-content select=\"[appFieldPrefix]\" />\n <div class=\"dropdown-search-field__wrap\">\n <app-dropdown-base [open]=\"panelOpen\" [panelTemplate]=\"optionsPanelTpl\" [panelWidthPx]=\"panelOverlayWidth\"\n (openChange)=\"onDropdownOpenChange($event)\">\n <div #dropdownFieldTriggerRoot class=\"dropdown-search-field__origin\" appDropdownTrigger\n (keydown)=\"onTriggerKeydown($event)\">\n <input type=\"text\" class=\"dropdown-search-field__input\"\n [class.dropdown-search-field__input--locked]=\"isLockedSelectionDisplay\" [id]=\"controlId\"\n [attr.name]=\"name || null\" [disabled]=\"disabled\" [readonly]=\"isNativeInputReadonly\" [attr.placeholder]=\"''\"\n autocomplete=\"off\" spellcheck=\"false\"\n [attr.aria-expanded]=\"panelOpen\" aria-autocomplete=\"list\" role=\"combobox\"\n [attr.aria-controls]=\"panelOpen ? optionsListId : null\" [attr.aria-invalid]=\"uiInvalid\"\n [attr.aria-describedby]=\"uiAriaDescribedBy\" [attr.aria-label]=\"floatLabelCaption || placeholder || 'Buscar e selecionar'\"\n [value]=\"searchQuery\" (input)=\"onMainInput($event)\" (keydown)=\"onMainKeydown($event)\"\n (blur)=\"onMainBlur($event)\" />\n <button type=\"button\" class=\"dropdown-search-field__chevron-btn\" tabindex=\"-1\" [disabled]=\"disabled || readonly\"\n [attr.aria-expanded]=\"panelOpen\" aria-haspopup=\"listbox\" aria-label=\"Abrir lista\" (click)=\"openToggle()\">\n <i class=\"fa-solid fa-chevron-down dropdown-search-field__chevron-icon\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </app-dropdown-base>\n </div>\n</app-base-field>\n\n<ng-template #optionsPanelTpl>\n <div class=\"dropdown-search-field__panel-inner\" (mousedown)=\"$event.preventDefault()\">\n <div class=\"dropdown-search-field__list\" [id]=\"optionsListId\" role=\"listbox\" tabindex=\"-1\"\n [attr.aria-label]=\"floatLabelCaption || 'Op\u00E7\u00F5es'\" (blur)=\"onMainBlur($event)\"\n (keydown)=\"onSearchListKeydown($event)\" (scroll)=\"onOptionsListScroll($event)\">\n @if (listOptions.length === 0 && (optionsLoading || loadingMore)) {\n <app-skeleton-list [rows]=\"8\" />\n }\n @for (opt of listOptions; track trackOption($index, opt)) {\n <div role=\"option\" class=\"dropdown-search-field__option\"\n [class.dropdown-search-field__option--disabled]=\"opt.disabled\"\n [class.dropdown-search-field__option--selected]=\"isSelected(opt)\"\n [class.dropdown-search-field__option--active]=\"!opt.disabled && activeIndex === $index\"\n [attr.tabindex]=\"opt.disabled ? null : -1\" [attr.aria-selected]=\"isSelected(opt)\" (click)=\"selectOption(opt)\"\n (keydown)=\"onOptionRowKeydown($event, opt)\">\n {{ opt.label }}\n </div>\n }\n @if (options.length > 0 && loadingMore) {\n <app-skeleton-list [rows]=\"1\" [leading]=\"false\" />\n }\n </div>\n </div>\n</ng-template>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}:host ::ng-deep .base-field:not(.base-field--invalid):not(.base-field--disabled) .base-field__box:focus-within{border-color:var(--ui-field-float-border-focus);box-shadow:0 0 0 3px var(--ui-field-float-focus-ring)}:host ::ng-deep .base-field--invalid:not(.base-field--disabled) .base-field__box:focus-within{border-color:var(--ui-field-input-invalid-border);box-shadow:0 0 0 3px var(--ui-field-input-invalid-focus-halo)}:host ::ng-deep .base-field.base-field--readonly:not(.base-field--invalid):not(.base-field--disabled) .base-field__box:focus-within{border-color:var(--ui-field-readonly-border-focus);box-shadow:0 0 0 3px var(--ui-field-readonly-focus-ring)}:host ::ng-deep .base-field.base-field--invalid.base-field--readonly:not(.base-field--disabled) .base-field__box:focus-within{border-color:var(--ui-field-input-invalid-border);box-shadow:0 0 0 3px var(--ui-field-input-invalid-focus-halo)}.dropdown-search-field__wrap{display:flex;flex:1;align-items:stretch;min-width:0;width:100%;box-sizing:border-box}.dropdown-search-field__origin{display:flex;align-items:center;min-width:0;width:100%;min-height:calc(1.8rem + 1.35em);box-sizing:border-box}.dropdown-search-field__input{flex:1;margin:0;box-sizing:border-box;min-height:calc(1.8rem + 1.35em);padding:1.35rem .35rem .45rem .75rem;font-size:1rem;line-height:1.35;font-family:inherit;text-align:left;color:var(--ui-field-float-input-text);background:transparent;border:0;border-radius:0;box-shadow:none;cursor:text;display:block;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-search-field__input:focus,.dropdown-search-field__input:focus-visible{outline:none;box-shadow:none}.dropdown-search-field__input:disabled{cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity)}.dropdown-search-field__input--locked:read-only:not(:disabled){cursor:default;opacity:1}.dropdown-search-field__input:read-only:not(:disabled):not(.dropdown-search-field__input--locked){cursor:default;opacity:1;color:var(--ui-field-readonly-input-text)}.dropdown-search-field__chevron-btn{display:flex;flex-shrink:0;align-items:center;justify-content:center;box-sizing:border-box;width:2rem;height:2rem;margin:0 .1rem;padding:0;border:0;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,color .15s ease}.dropdown-search-field__chevron-btn:hover:not(:disabled){background:#5a7fa31f;color:var(--ui-field-float-label-top-color)}.dropdown-search-field__chevron-btn:focus,.dropdown-search-field__chevron-btn:focus-visible{outline:none;box-shadow:none}.dropdown-search-field__chevron-btn:disabled{cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity)}:host ::ng-deep .base-field--readonly:not(.base-field--disabled) .dropdown-search-field__chevron-btn:disabled{opacity:1;cursor:default;color:var(--ui-field-readonly-prefix-color)}:host.dropdown-search-field--invalid .dropdown-search-field__chevron-btn{color:var(--ui-field-float-label-invalid-color)}:host.dropdown-search-field--invalid .dropdown-search-field__chevron-btn .dropdown-search-field__chevron-icon{color:inherit}:host.dropdown-search-field--invalid .dropdown-search-field__chevron-btn:hover:not(:disabled){background:#b91c1c1f}:host.dropdown-search-field--invalid .dropdown-search-field__chevron-btn:focus,:host.dropdown-search-field--invalid .dropdown-search-field__chevron-btn:focus-visible{outline:none;box-shadow:none}.dropdown-search-field__chevron-icon{display:inline-flex;align-items:center;justify-content:center;padding-top:2px;font-size:.8rem;line-height:1}.dropdown-search-field__panel-inner{display:flex;flex-direction:column;max-height:min(280px,55vh);width:100%;box-sizing:border-box;background:var(--app-color-nav-surface, var(--app-color-surface, #fff))}.dropdown-search-field__list{margin:0;padding:.25rem 0;flex:1;min-height:0;width:100%;max-height:min(260px,52vh);box-sizing:border-box;outline:none;overflow-x:hidden;overflow-y:auto}.dropdown-search-field__loading{padding:.65rem .75rem;font-size:.85rem;line-height:1.35;color:var(--ui-field-float-label-color);text-align:center}.dropdown-search-field__option{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.45rem .75rem;font-size:.95rem;line-height:1.35;cursor:pointer;color:var(--ui-field-float-input-text)}.dropdown-search-field__option--selected:not(.dropdown-search-field__option--disabled){background:var(--app-color-dropdown-option-selected-bg)}.dropdown-search-field__option--active:not(.dropdown-search-field__option--disabled):not(.dropdown-search-field__option--selected){background:var(--app-color-dropdown-option-highlight-bg)}.dropdown-search-field__option.dropdown-search-field__option--active.dropdown-search-field__option--selected:not(.dropdown-search-field__option--disabled){background:var(--app-color-dropdown-option-selected-bg-active)}.dropdown-search-field__option--disabled{opacity:.45;cursor:not-allowed}.dropdown-search-field__option:hover:not(.dropdown-search-field__option--disabled):not(.dropdown-search-field__option--selected){background:var(--app-color-dropdown-option-hover-bg)}.dropdown-search-field__option.dropdown-search-field__option--selected:hover:not(.dropdown-search-field__option--disabled){background:var(--app-color-dropdown-option-selected-hover-bg)}\n"], dependencies: [{ kind: "component", type: BaseFieldComponent, selector: "app-base-field", inputs: ["label", "errorMessage", "required", "showRequiredMark", "invalid", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }, { kind: "component", type: DropdownBaseComponent, selector: "app-dropdown-base", inputs: ["open", "panelTemplate", "panelWidthPx", "closeOnEscape", "hasBackdrop", "connectedPositions", "pushConnectedOverlay", "bareOverlayPanel"], outputs: ["openChange"] }, { kind: "component", type: SkeletonListComponent, selector: "app-skeleton-list", inputs: ["rows", "leading", "rowGap", "lineHeight", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4883
4883
  }
4884
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownSearchFieldComponent, decorators: [{
4884
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DropdownSearchFieldComponent, decorators: [{
4885
4885
  type: Component,
4886
- args: [{ selector: 'app-dropdown-search-field', standalone: true, imports: [BaseFieldComponent, DropdownBaseComponent, SkeletonListComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
4886
+ args: [{ selector: 'app-dropdown-search-field', imports: [BaseFieldComponent, DropdownBaseComponent, SkeletonListComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
4887
4887
  {
4888
4888
  provide: NG_VALUE_ACCESSOR,
4889
4889
  useExisting: forwardRef(() => DropdownSearchFieldComponent),
@@ -4995,12 +4995,12 @@ class LayoutStackComponent {
4995
4995
  }
4996
4996
  return parts.join(' ');
4997
4997
  }
4998
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutStackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4999
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: LayoutStackComponent, isStandalone: true, selector: "app-layout-stack", inputs: { align: "align", stackOnMobile: ["stackOnMobile", "stackOnMobile", booleanAttribute], stackDivider: ["stackDivider", "stackDivider", booleanAttribute], stackFill: ["stackFill", "stackFill", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<div class=\"layout-stack__track\">\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.layout-stack__track{display:flex;flex-wrap:wrap;width:100%;min-width:0;box-sizing:border-box;align-items:stretch;gap:.5rem .75rem;padding-top:.25rem}:host(.layout-stack--align-start) .layout-stack__track{justify-content:flex-start}:host(.layout-stack--align-center) .layout-stack__track{justify-content:center}:host(.layout-stack--align-end) .layout-stack__track{justify-content:flex-end}:host(.layout-stack--align-space-between) .layout-stack__track{justify-content:space-between}:host(.layout-stack--divider){margin-top:.25rem;padding-top:1rem;border-top:1px solid var(--ui-layout-stack-divider-color, #e8eaed)}:host:not(.layout-stack--fill) .layout-stack__track{align-items:center}:host:not(.layout-stack--fill) ::ng-deep .layout-stack__track>*{flex:0 0 auto;min-width:0;max-width:100%;align-self:center}:host(.layout-stack--fill):not(.layout-stack--align-space-between) .layout-stack__track{flex-wrap:nowrap;justify-content:flex-start}:host(.layout-stack--fill.layout-stack--align-space-between) .layout-stack__track{flex-wrap:nowrap}:host(.layout-stack--fill) ::ng-deep .layout-stack__track>*{flex:1 1 0;min-width:0;max-width:100%;align-self:stretch}:host(.layout-stack--fill) ::ng-deep .layout-stack__track>.base-button:not(.base-button--full-width){flex:0 0 auto;align-self:center}@media (max-width: 39.98rem){:host(.layout-stack--stack-mobile) .layout-stack__track{gap:.45rem .6rem}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4998
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: LayoutStackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4999
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: LayoutStackComponent, isStandalone: true, selector: "app-layout-stack", inputs: { align: "align", stackOnMobile: ["stackOnMobile", "stackOnMobile", booleanAttribute], stackDivider: ["stackDivider", "stackDivider", booleanAttribute], stackFill: ["stackFill", "stackFill", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<div class=\"layout-stack__track\">\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.layout-stack__track{display:flex;flex-wrap:wrap;width:100%;min-width:0;box-sizing:border-box;align-items:stretch;gap:.5rem .75rem;padding-top:.25rem}:host(.layout-stack--align-start) .layout-stack__track{justify-content:flex-start}:host(.layout-stack--align-center) .layout-stack__track{justify-content:center}:host(.layout-stack--align-end) .layout-stack__track{justify-content:flex-end}:host(.layout-stack--align-space-between) .layout-stack__track{justify-content:space-between}:host(.layout-stack--divider){margin-top:.25rem;padding-top:1rem;border-top:1px solid var(--ui-layout-stack-divider-color, #e8eaed)}:host:not(.layout-stack--fill) .layout-stack__track{align-items:center}:host:not(.layout-stack--fill) ::ng-deep .layout-stack__track>*{flex:0 0 auto;min-width:0;max-width:100%;align-self:center}:host(.layout-stack--fill):not(.layout-stack--align-space-between) .layout-stack__track{flex-wrap:nowrap;justify-content:flex-start}:host(.layout-stack--fill.layout-stack--align-space-between) .layout-stack__track{flex-wrap:nowrap}:host(.layout-stack--fill) ::ng-deep .layout-stack__track>*{flex:1 1 0;min-width:0;max-width:100%;align-self:stretch}:host(.layout-stack--fill) ::ng-deep .layout-stack__track>.base-button:not(.base-button--full-width){flex:0 0 auto;align-self:center}@media(max-width:39.98rem){:host(.layout-stack--stack-mobile) .layout-stack__track{gap:.45rem .6rem}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5000
5000
  }
5001
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutStackComponent, decorators: [{
5001
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: LayoutStackComponent, decorators: [{
5002
5002
  type: Component,
5003
- args: [{ selector: 'app-layout-stack', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-stack__track\">\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.layout-stack__track{display:flex;flex-wrap:wrap;width:100%;min-width:0;box-sizing:border-box;align-items:stretch;gap:.5rem .75rem;padding-top:.25rem}:host(.layout-stack--align-start) .layout-stack__track{justify-content:flex-start}:host(.layout-stack--align-center) .layout-stack__track{justify-content:center}:host(.layout-stack--align-end) .layout-stack__track{justify-content:flex-end}:host(.layout-stack--align-space-between) .layout-stack__track{justify-content:space-between}:host(.layout-stack--divider){margin-top:.25rem;padding-top:1rem;border-top:1px solid var(--ui-layout-stack-divider-color, #e8eaed)}:host:not(.layout-stack--fill) .layout-stack__track{align-items:center}:host:not(.layout-stack--fill) ::ng-deep .layout-stack__track>*{flex:0 0 auto;min-width:0;max-width:100%;align-self:center}:host(.layout-stack--fill):not(.layout-stack--align-space-between) .layout-stack__track{flex-wrap:nowrap;justify-content:flex-start}:host(.layout-stack--fill.layout-stack--align-space-between) .layout-stack__track{flex-wrap:nowrap}:host(.layout-stack--fill) ::ng-deep .layout-stack__track>*{flex:1 1 0;min-width:0;max-width:100%;align-self:stretch}:host(.layout-stack--fill) ::ng-deep .layout-stack__track>.base-button:not(.base-button--full-width){flex:0 0 auto;align-self:center}@media (max-width: 39.98rem){:host(.layout-stack--stack-mobile) .layout-stack__track{gap:.45rem .6rem}}\n"] }]
5003
+ args: [{ selector: 'app-layout-stack', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-stack__track\">\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.layout-stack__track{display:flex;flex-wrap:wrap;width:100%;min-width:0;box-sizing:border-box;align-items:stretch;gap:.5rem .75rem;padding-top:.25rem}:host(.layout-stack--align-start) .layout-stack__track{justify-content:flex-start}:host(.layout-stack--align-center) .layout-stack__track{justify-content:center}:host(.layout-stack--align-end) .layout-stack__track{justify-content:flex-end}:host(.layout-stack--align-space-between) .layout-stack__track{justify-content:space-between}:host(.layout-stack--divider){margin-top:.25rem;padding-top:1rem;border-top:1px solid var(--ui-layout-stack-divider-color, #e8eaed)}:host:not(.layout-stack--fill) .layout-stack__track{align-items:center}:host:not(.layout-stack--fill) ::ng-deep .layout-stack__track>*{flex:0 0 auto;min-width:0;max-width:100%;align-self:center}:host(.layout-stack--fill):not(.layout-stack--align-space-between) .layout-stack__track{flex-wrap:nowrap;justify-content:flex-start}:host(.layout-stack--fill.layout-stack--align-space-between) .layout-stack__track{flex-wrap:nowrap}:host(.layout-stack--fill) ::ng-deep .layout-stack__track>*{flex:1 1 0;min-width:0;max-width:100%;align-self:stretch}:host(.layout-stack--fill) ::ng-deep .layout-stack__track>.base-button:not(.base-button--full-width){flex:0 0 auto;align-self:center}@media(max-width:39.98rem){:host(.layout-stack--stack-mobile) .layout-stack__track{gap:.45rem .6rem}}\n"] }]
5004
5004
  }], propDecorators: { align: [{
5005
5005
  type: Input
5006
5006
  }], stackOnMobile: [{
@@ -5046,12 +5046,12 @@ class FormActionsComponent {
5046
5046
  }
5047
5047
  return parts.join(' ');
5048
5048
  }
5049
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5050
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: FormActionsComponent, isStandalone: true, selector: "app-form-actions", inputs: { align: "align", stackOnMobile: ["stackOnMobile", "stackOnMobile", booleanAttribute], fill: ["fill", "fill", booleanAttribute], divider: ["divider", "divider", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<app-layout-stack\n class=\"form-actions__stack\"\n [align]=\"layoutAlign\"\n [stackOnMobile]=\"stackOnMobile\"\n [stackFill]=\"fill\"\n [stackDivider]=\"false\"\n>\n <ng-content />\n</app-layout-stack>\n", styles: [":host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-actions__stack{display:block;width:100%;min-width:0;box-sizing:border-box}:host(.form-actions--divider){margin-top:.25rem;padding-top:1rem;border-top:1px solid var(--ui-form-actions-divider-color, #e8eaed)}\n"], dependencies: [{ kind: "component", type: LayoutStackComponent, selector: "app-layout-stack", inputs: ["align", "stackOnMobile", "stackDivider", "stackFill"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5049
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FormActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5050
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: FormActionsComponent, isStandalone: true, selector: "app-form-actions", inputs: { align: "align", stackOnMobile: ["stackOnMobile", "stackOnMobile", booleanAttribute], fill: ["fill", "fill", booleanAttribute], divider: ["divider", "divider", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<app-layout-stack\n class=\"form-actions__stack\"\n [align]=\"layoutAlign\"\n [stackOnMobile]=\"stackOnMobile\"\n [stackFill]=\"fill\"\n [stackDivider]=\"false\"\n>\n <ng-content />\n</app-layout-stack>\n", styles: [":host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-actions__stack{display:block;width:100%;min-width:0;box-sizing:border-box}:host(.form-actions--divider){margin-top:.25rem;padding-top:1rem;border-top:1px solid var(--ui-form-actions-divider-color, #e8eaed)}\n"], dependencies: [{ kind: "component", type: LayoutStackComponent, selector: "app-layout-stack", inputs: ["align", "stackOnMobile", "stackDivider", "stackFill"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5051
5051
  }
5052
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormActionsComponent, decorators: [{
5052
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FormActionsComponent, decorators: [{
5053
5053
  type: Component,
5054
- args: [{ selector: 'app-form-actions', standalone: true, imports: [LayoutStackComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-layout-stack\n class=\"form-actions__stack\"\n [align]=\"layoutAlign\"\n [stackOnMobile]=\"stackOnMobile\"\n [stackFill]=\"fill\"\n [stackDivider]=\"false\"\n>\n <ng-content />\n</app-layout-stack>\n", styles: [":host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-actions__stack{display:block;width:100%;min-width:0;box-sizing:border-box}:host(.form-actions--divider){margin-top:.25rem;padding-top:1rem;border-top:1px solid var(--ui-form-actions-divider-color, #e8eaed)}\n"] }]
5054
+ args: [{ selector: 'app-form-actions', imports: [LayoutStackComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-layout-stack\n class=\"form-actions__stack\"\n [align]=\"layoutAlign\"\n [stackOnMobile]=\"stackOnMobile\"\n [stackFill]=\"fill\"\n [stackDivider]=\"false\"\n>\n <ng-content />\n</app-layout-stack>\n", styles: [":host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-actions__stack{display:block;width:100%;min-width:0;box-sizing:border-box}:host(.form-actions--divider){margin-top:.25rem;padding-top:1rem;border-top:1px solid var(--ui-form-actions-divider-color, #e8eaed)}\n"] }]
5055
5055
  }], propDecorators: { align: [{
5056
5056
  type: Input
5057
5057
  }], stackOnMobile: [{
@@ -5111,12 +5111,12 @@ class FormColComponent {
5111
5111
  }
5112
5112
  return this.clampSpan(value);
5113
5113
  }
5114
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormColComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5115
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: FormColComponent, isStandalone: true, selector: "app-form-col", inputs: { xs: ["xs", "xs", numberAttribute], sm: "sm", md: "md", lg: "lg", xl: "xl", order: ["order", "order", numberAttribute], grow: ["grow", "grow", booleanAttribute] }, host: { properties: { "class": "this.hostClass", "attr.style": "this.hostVars" } }, ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:block;min-width:0;box-sizing:border-box;grid-column:span var(--form-col-xs, 12)}:host.form-col--grow{min-width:0}@media (min-width: 40rem){:host{grid-column:span var(--form-col-sm, var(--form-col-xs, 12))}}@media (min-width: 48rem){:host{grid-column:span var(--form-col-md, var(--form-col-sm, var(--form-col-xs, 12)))}}@media (min-width: 64rem){:host{grid-column:span var(--form-col-lg, var(--form-col-md, var(--form-col-sm, var(--form-col-xs, 12))))}}@media (min-width: 80rem){:host{grid-column:span var(--form-col-xl, var(--form-col-lg, var(--form-col-md, var(--form-col-sm, var(--form-col-xs, 12)))))}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5114
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FormColComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5115
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: FormColComponent, isStandalone: true, selector: "app-form-col", inputs: { xs: ["xs", "xs", numberAttribute], sm: "sm", md: "md", lg: "lg", xl: "xl", order: ["order", "order", numberAttribute], grow: ["grow", "grow", booleanAttribute] }, host: { properties: { "class": "this.hostClass", "attr.style": "this.hostVars" } }, ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:block;min-width:0;box-sizing:border-box;grid-column:span var(--form-col-xs, 12)}:host.form-col--grow{min-width:0}@media(min-width:40rem){:host{grid-column:span var(--form-col-sm, var(--form-col-xs, 12))}}@media(min-width:48rem){:host{grid-column:span var(--form-col-md, var(--form-col-sm, var(--form-col-xs, 12)))}}@media(min-width:64rem){:host{grid-column:span var(--form-col-lg, var(--form-col-md, var(--form-col-sm, var(--form-col-xs, 12))))}}@media(min-width:80rem){:host{grid-column:span var(--form-col-xl, var(--form-col-lg, var(--form-col-md, var(--form-col-sm, var(--form-col-xs, 12)))))}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5116
5116
  }
5117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormColComponent, decorators: [{
5117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FormColComponent, decorators: [{
5118
5118
  type: Component,
5119
- args: [{ selector: 'app-form-col', standalone: true, template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;min-width:0;box-sizing:border-box;grid-column:span var(--form-col-xs, 12)}:host.form-col--grow{min-width:0}@media (min-width: 40rem){:host{grid-column:span var(--form-col-sm, var(--form-col-xs, 12))}}@media (min-width: 48rem){:host{grid-column:span var(--form-col-md, var(--form-col-sm, var(--form-col-xs, 12)))}}@media (min-width: 64rem){:host{grid-column:span var(--form-col-lg, var(--form-col-md, var(--form-col-sm, var(--form-col-xs, 12))))}}@media (min-width: 80rem){:host{grid-column:span var(--form-col-xl, var(--form-col-lg, var(--form-col-md, var(--form-col-sm, var(--form-col-xs, 12)))))}}\n"] }]
5119
+ args: [{ selector: 'app-form-col', standalone: true, template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;min-width:0;box-sizing:border-box;grid-column:span var(--form-col-xs, 12)}:host.form-col--grow{min-width:0}@media(min-width:40rem){:host{grid-column:span var(--form-col-sm, var(--form-col-xs, 12))}}@media(min-width:48rem){:host{grid-column:span var(--form-col-md, var(--form-col-sm, var(--form-col-xs, 12)))}}@media(min-width:64rem){:host{grid-column:span var(--form-col-lg, var(--form-col-md, var(--form-col-sm, var(--form-col-xs, 12))))}}@media(min-width:80rem){:host{grid-column:span var(--form-col-xl, var(--form-col-lg, var(--form-col-md, var(--form-col-sm, var(--form-col-xs, 12)))))}}\n"] }]
5120
5120
  }], propDecorators: { xs: [{
5121
5121
  type: Input,
5122
5122
  args: [{ transform: numberAttribute }]
@@ -5542,10 +5542,10 @@ class FormGroupComponent {
5542
5542
  }
5543
5543
  this.prevRootFormSubmitted = submitted;
5544
5544
  }
5545
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5546
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FormGroupComponent, isStandalone: true, selector: "app-form-group", inputs: { titulo: "titulo", subtitulo: "subtitulo", collapsible: ["collapsible", "collapsible", booleanAttribute], foldable: ["foldable", "foldable", booleanAttribute], collapsed: ["collapsed", "collapsed", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], dense: ["dense", "dense", booleanAttribute], canMoveUp: ["canMoveUp", "canMoveUp", booleanAttribute], canMoveDown: ["canMoveDown", "canMoveDown", booleanAttribute], showHeader: ["showHeader", "showHeader", booleanAttribute], showDivider: ["showDivider", "showDivider", booleanAttribute], variant: "variant", destroyOnCollapse: ["destroyOnCollapse", "destroyOnCollapse", booleanAttribute], skipBodyChildStacking: ["skipBodyChildStacking", "skipBodyChildStacking", booleanAttribute], groupInvalid: ["groupInvalid", "groupInvalid", booleanAttribute], formGroupPath: "formGroupPath", uxSubmittedPass: ["uxSubmittedPass", "uxSubmittedPass", booleanAttribute] }, outputs: { collapsedChange: "collapsedChange", moveUp: "moveUp", moveDown: "moveDown" }, host: { properties: { "class": "this.hostClass" } }, usesOnChanges: true, ngImport: i0, template: "@if (showHeaderBar) {\r\n <div\r\n class=\"form-group__header\"\r\n [class.form-group__header--interactive]=\"headerIsInteractive\"\r\n [attr.role]=\"headerIsInteractive ? 'button' : null\"\r\n [attr.tabindex]=\"headerIsInteractive ? 0 : null\"\r\n [attr.aria-expanded]=\"headerIsInteractive ? !isCollapsed : null\"\r\n [attr.aria-disabled]=\"disabled ? true : null\"\r\n (click)=\"onHeaderClick()\"\r\n (keydown)=\"onHeaderKeydown($event)\"\r\n >\r\n <div class=\"form-group__header-main\">\r\n @if (collapsible && !disabled) {\r\n <span\r\n class=\"form-group__chevron\"\r\n [class.form-group__chevron--locked]=\"!foldable\"\r\n aria-hidden=\"true\"\r\n >\r\n <i\r\n class=\"fa-solid\"\r\n [class.fa-chevron-right]=\"foldable && isCollapsed\"\r\n [class.fa-chevron-down]=\"!foldable || !isCollapsed\"\r\n ></i>\r\n </span>\r\n }\r\n <div class=\"form-group__titles\">\r\n @if (titulo.trim()) {\r\n <h3 class=\"form-group__title\">{{ titulo }}</h3>\r\n }\r\n @if (subtitulo.trim()) {\r\n <p class=\"form-group__subtitle\">{{ subtitulo }}</p>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"form-group__header-trailing\">\r\n <span\r\n class=\"form-group__invalid-flag\"\r\n [class.form-group__invalid-flag--visible]=\"invalidFlagVisible\"\r\n [attr.role]=\"invalidFlagVisible ? 'img' : null\"\r\n [attr.aria-label]=\"invalidFlagVisible ? 'Existem erros de valida\u00E7\u00E3o neste grupo' : null\"\r\n [attr.aria-hidden]=\"invalidFlagVisible ? null : 'true'\"\r\n [attr.title]=\"invalidFlagVisible ? 'Existem erros de valida\u00E7\u00E3o neste grupo' : null\"\r\n >\r\n <i class=\"fa-solid fa-triangle-exclamation\" aria-hidden=\"true\"></i>\r\n </span>\r\n @if (canMoveUp || canMoveDown) {\r\n <div class=\"form-group__reorder\" (click)=\"$event.stopPropagation()\">\r\n @if (canMoveUp) {\r\n <button\r\n type=\"button\"\r\n class=\"form-group__reorder-btn\"\r\n [disabled]=\"disabled\"\r\n aria-label=\"Mover grupo para cima\"\r\n (click)=\"onMoveUpClick($event)\"\r\n >\r\n <i class=\"fa-solid fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n @if (canMoveDown) {\r\n <button\r\n type=\"button\"\r\n class=\"form-group__reorder-btn\"\r\n [disabled]=\"disabled\"\r\n aria-label=\"Mover grupo para baixo\"\r\n (click)=\"onMoveDownClick($event)\"\r\n >\r\n <i class=\"fa-solid fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n\r\n@if (renderBodyInDom) {\r\n <div class=\"form-group__body\" [class.form-group__body--collapsed-hidden]=\"bodyVisuallyHidden\">\r\n <div\r\n class=\"form-group__body-stack\"\r\n [class.form-group__body-stack--neutral]=\"skipBodyChildStacking\"\r\n >\r\n <ng-content />\r\n </div>\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box;scroll-margin-top:.75rem;scroll-margin-bottom:.5rem}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle){border:1px solid var(--app-color-border, #e8eaed);border-radius:12px;background:var(--app-color-surface, #fff);padding:0;overflow:hidden;transition:border-color .28s ease,box-shadow .28s ease}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--collapsed{border-color:var(--app-color-border, #e4e6ea);box-shadow:none}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--expanded{border-color:var(--app-color-border-strong, #d4dce8);box-shadow:0 1px 2px var(--app-color-border-subtle, rgba(22, 40, 72, .05)),0 4px 18px var(--app-color-elevated-shadow, rgba(43, 127, 217, .07))}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle) .form-group__header{margin:0;padding:.65rem 1rem .75rem;border-radius:0}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--collapsed .form-group__header{padding-bottom:.7rem}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--expanded .form-group__header{margin-bottom:0;padding-bottom:.65rem}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--expanded .form-group__body{padding:.9rem 1rem}:host.form-group--dense.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--expanded .form-group__header{margin-bottom:0;padding-bottom:.5rem}:host.form-group--dense.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--expanded .form-group__body{padding:.7rem .85rem}.form-group__header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;margin:0 0 1rem;padding:.35rem 0;border-radius:8px;outline:none}.form-group__header--interactive{cursor:pointer;user-select:none;-webkit-user-select:none}.form-group__header--interactive:hover:not([aria-disabled=true]){background:var(--app-color-group-header-hover, rgba(43, 127, 217, .06))}.form-group__header--interactive:focus-visible{box-shadow:0 0 0 2px var(--app-color-focus-ring, rgba(43, 127, 217, .25))}.form-group__header-main{display:flex;align-items:flex-start;gap:.5rem;min-width:0;flex:1}.form-group__chevron{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-top:.1rem;flex-shrink:0;color:var(--ui-field-float-prefix-color, #5a7fa3);font-size:.75rem}.form-group__chevron--locked{color:var(--ui-form-group-chevron-locked, #9aa3ad)}.form-group__titles{min-width:0;flex:1}.form-group__title{margin:0 0 .2rem;font-size:1.05rem;font-weight:600;line-height:1.35;color:var(--ui-field-label-color, #1a1a1a)}.form-group__subtitle{margin:0;font-size:.85rem;line-height:1.4;color:var(--app-color-text-muted, #525252)}.form-group__header-trailing{display:flex;flex-shrink:0;align-items:flex-start;gap:.35rem}.form-group__invalid-flag{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-top:.1rem;font-size:1.05rem;line-height:1;color:var(--app-color-error, #c62828);cursor:inherit;opacity:0;visibility:hidden;pointer-events:none;transform:scale(.92);transition:opacity .22s ease,visibility .22s ease,transform .22s ease}.form-group__invalid-flag--visible{opacity:1;visibility:visible;pointer-events:auto;transform:scale(1)}.form-group__reorder{display:flex;flex-shrink:0;gap:.25rem;align-items:center}.form-group__reorder-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color, #5a7fa3);cursor:pointer;transition:background .15s ease,color .15s ease}.form-group__reorder-btn:hover:not(:disabled){background:var(--app-color-hover-bg-strong, rgba(90, 127, 163, .12));color:var(--ui-field-float-label-top-color, #4a6d8c)}.form-group__reorder-btn:disabled{cursor:not-allowed;opacity:.45}.form-group__body{display:flex;flex-direction:column;gap:.75rem;min-width:0;transition:opacity .18s ease}.form-group__body-stack{display:flex;flex-direction:column;gap:inherit;min-width:0;width:100%}.form-group__body-stack--neutral{display:block;gap:unset}:host ::ng-deep .form-group__body-stack:not(.form-group__body-stack--neutral)>*{display:flex;flex-direction:column;gap:inherit;min-width:0}.form-group__body--collapsed-hidden{display:none}:host.form-group--dense .form-group__header{margin-bottom:.65rem;padding-block:.2rem}:host.form-group--dense .form-group__title{font-size:1rem}:host.form-group--dense .form-group__body{gap:.5rem}:host.form-group--disabled{opacity:.72;pointer-events:none}:host.form-group--disabled .form-group__reorder{pointer-events:none}:host.form-group--outlined{padding:1rem 1rem 1.25rem;border:1px solid var(--ui-field-float-border, #b6cce5);border-radius:var(--ui-field-float-border-radius, 14px);background:var(--ui-field-float-bg, #f3f7fb)}:host.form-group--subtle{padding:.75rem .85rem 1rem;border-radius:10px;background:var(--app-color-background, #fafafa)}:host.form-group--divider:not(.form-group--outlined):not(.form-group--subtle):not(.form-group--collapsible) .form-group__header{border-bottom:1px solid var(--app-color-border, #e5e5e5);padding-bottom:.65rem;margin-bottom:1rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5545
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FormGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5546
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: FormGroupComponent, isStandalone: true, selector: "app-form-group", inputs: { titulo: "titulo", subtitulo: "subtitulo", collapsible: ["collapsible", "collapsible", booleanAttribute], foldable: ["foldable", "foldable", booleanAttribute], collapsed: ["collapsed", "collapsed", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], dense: ["dense", "dense", booleanAttribute], canMoveUp: ["canMoveUp", "canMoveUp", booleanAttribute], canMoveDown: ["canMoveDown", "canMoveDown", booleanAttribute], showHeader: ["showHeader", "showHeader", booleanAttribute], showDivider: ["showDivider", "showDivider", booleanAttribute], variant: "variant", destroyOnCollapse: ["destroyOnCollapse", "destroyOnCollapse", booleanAttribute], skipBodyChildStacking: ["skipBodyChildStacking", "skipBodyChildStacking", booleanAttribute], groupInvalid: ["groupInvalid", "groupInvalid", booleanAttribute], formGroupPath: "formGroupPath", uxSubmittedPass: ["uxSubmittedPass", "uxSubmittedPass", booleanAttribute] }, outputs: { collapsedChange: "collapsedChange", moveUp: "moveUp", moveDown: "moveDown" }, host: { properties: { "class": "this.hostClass" } }, usesOnChanges: true, ngImport: i0, template: "@if (showHeaderBar) {\r\n <div\r\n class=\"form-group__header\"\r\n [class.form-group__header--interactive]=\"headerIsInteractive\"\r\n [attr.role]=\"headerIsInteractive ? 'button' : null\"\r\n [attr.tabindex]=\"headerIsInteractive ? 0 : null\"\r\n [attr.aria-expanded]=\"headerIsInteractive ? !isCollapsed : null\"\r\n [attr.aria-disabled]=\"disabled ? true : null\"\r\n (click)=\"onHeaderClick()\"\r\n (keydown)=\"onHeaderKeydown($event)\"\r\n >\r\n <div class=\"form-group__header-main\">\r\n @if (collapsible && !disabled) {\r\n <span\r\n class=\"form-group__chevron\"\r\n [class.form-group__chevron--locked]=\"!foldable\"\r\n aria-hidden=\"true\"\r\n >\r\n <i\r\n class=\"fa-solid\"\r\n [class.fa-chevron-right]=\"foldable && isCollapsed\"\r\n [class.fa-chevron-down]=\"!foldable || !isCollapsed\"\r\n ></i>\r\n </span>\r\n }\r\n <div class=\"form-group__titles\">\r\n @if (titulo.trim()) {\r\n <h3 class=\"form-group__title\">{{ titulo }}</h3>\r\n }\r\n @if (subtitulo.trim()) {\r\n <p class=\"form-group__subtitle\">{{ subtitulo }}</p>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"form-group__header-trailing\">\r\n <span\r\n class=\"form-group__invalid-flag\"\r\n [class.form-group__invalid-flag--visible]=\"invalidFlagVisible\"\r\n [attr.role]=\"invalidFlagVisible ? 'img' : null\"\r\n [attr.aria-label]=\"invalidFlagVisible ? 'Existem erros de valida\u00E7\u00E3o neste grupo' : null\"\r\n [attr.aria-hidden]=\"invalidFlagVisible ? null : 'true'\"\r\n [attr.title]=\"invalidFlagVisible ? 'Existem erros de valida\u00E7\u00E3o neste grupo' : null\"\r\n >\r\n <i class=\"fa-solid fa-triangle-exclamation\" aria-hidden=\"true\"></i>\r\n </span>\r\n @if (canMoveUp || canMoveDown) {\r\n <div class=\"form-group__reorder\" (click)=\"$event.stopPropagation()\">\r\n @if (canMoveUp) {\r\n <button\r\n type=\"button\"\r\n class=\"form-group__reorder-btn\"\r\n [disabled]=\"disabled\"\r\n aria-label=\"Mover grupo para cima\"\r\n (click)=\"onMoveUpClick($event)\"\r\n >\r\n <i class=\"fa-solid fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n @if (canMoveDown) {\r\n <button\r\n type=\"button\"\r\n class=\"form-group__reorder-btn\"\r\n [disabled]=\"disabled\"\r\n aria-label=\"Mover grupo para baixo\"\r\n (click)=\"onMoveDownClick($event)\"\r\n >\r\n <i class=\"fa-solid fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n\r\n@if (renderBodyInDom) {\r\n <div class=\"form-group__body\" [class.form-group__body--collapsed-hidden]=\"bodyVisuallyHidden\">\r\n <div\r\n class=\"form-group__body-stack\"\r\n [class.form-group__body-stack--neutral]=\"skipBodyChildStacking\"\r\n >\r\n <ng-content />\r\n </div>\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box;scroll-margin-top:.75rem;scroll-margin-bottom:.5rem}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle){border:1px solid var(--app-color-border, #e8eaed);border-radius:12px;background:var(--app-color-surface, #fff);padding:0;overflow:hidden;transition:border-color .28s ease,box-shadow .28s ease}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--collapsed{border-color:var(--app-color-border, #e4e6ea);box-shadow:none}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--expanded{border-color:var(--app-color-border-strong, #d4dce8);box-shadow:0 1px 2px var(--app-color-border-subtle, rgba(22, 40, 72, .05)),0 4px 18px var(--app-color-elevated-shadow, rgba(43, 127, 217, .07))}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle) .form-group__header{margin:0;padding:.65rem 1rem .75rem;border-radius:0}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--collapsed .form-group__header{padding-bottom:.7rem}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--expanded .form-group__header{margin-bottom:0;padding-bottom:.65rem}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--expanded .form-group__body{padding:.9rem 1rem}:host.form-group--dense.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--expanded .form-group__header{margin-bottom:0;padding-bottom:.5rem}:host.form-group--dense.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--expanded .form-group__body{padding:.7rem .85rem}.form-group__header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;margin:0 0 1rem;padding:.35rem 0;border-radius:8px;outline:none}.form-group__header--interactive{cursor:pointer;user-select:none;-webkit-user-select:none}.form-group__header--interactive:hover:not([aria-disabled=true]){background:var(--app-color-group-header-hover, rgba(43, 127, 217, .06))}.form-group__header--interactive:focus-visible{box-shadow:0 0 0 2px var(--app-color-focus-ring, rgba(43, 127, 217, .25))}.form-group__header-main{display:flex;align-items:flex-start;gap:.5rem;min-width:0;flex:1}.form-group__chevron{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-top:.1rem;flex-shrink:0;color:var(--ui-field-float-prefix-color, #5a7fa3);font-size:.75rem}.form-group__chevron--locked{color:var(--ui-form-group-chevron-locked, #9aa3ad)}.form-group__titles{min-width:0;flex:1}.form-group__title{margin:0 0 .2rem;font-size:1.05rem;font-weight:600;line-height:1.35;color:var(--ui-field-label-color, #1a1a1a)}.form-group__subtitle{margin:0;font-size:.85rem;line-height:1.4;color:var(--app-color-text-muted, #525252)}.form-group__header-trailing{display:flex;flex-shrink:0;align-items:flex-start;gap:.35rem}.form-group__invalid-flag{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-top:.1rem;font-size:1.05rem;line-height:1;color:var(--app-color-error, #c62828);cursor:inherit;opacity:0;visibility:hidden;pointer-events:none;transform:scale(.92);transition:opacity .22s ease,visibility .22s ease,transform .22s ease}.form-group__invalid-flag--visible{opacity:1;visibility:visible;pointer-events:auto;transform:scale(1)}.form-group__reorder{display:flex;flex-shrink:0;gap:.25rem;align-items:center}.form-group__reorder-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color, #5a7fa3);cursor:pointer;transition:background .15s ease,color .15s ease}.form-group__reorder-btn:hover:not(:disabled){background:var(--app-color-hover-bg-strong, rgba(90, 127, 163, .12));color:var(--ui-field-float-label-top-color, #4a6d8c)}.form-group__reorder-btn:disabled{cursor:not-allowed;opacity:.45}.form-group__body{display:flex;flex-direction:column;gap:.75rem;min-width:0;transition:opacity .18s ease}.form-group__body-stack{display:flex;flex-direction:column;gap:inherit;min-width:0;width:100%}.form-group__body-stack--neutral{display:block;gap:unset}:host ::ng-deep .form-group__body-stack:not(.form-group__body-stack--neutral)>*{display:flex;flex-direction:column;gap:inherit;min-width:0}.form-group__body--collapsed-hidden{display:none}:host.form-group--dense .form-group__header{margin-bottom:.65rem;padding-block:.2rem}:host.form-group--dense .form-group__title{font-size:1rem}:host.form-group--dense .form-group__body{gap:.5rem}:host.form-group--disabled{opacity:.72;pointer-events:none}:host.form-group--disabled .form-group__reorder{pointer-events:none}:host.form-group--outlined{padding:1rem 1rem 1.25rem;border:1px solid var(--ui-field-float-border, #b6cce5);border-radius:var(--ui-field-float-border-radius, 14px);background:var(--ui-field-float-bg, #f3f7fb)}:host.form-group--subtle{padding:.75rem .85rem 1rem;border-radius:10px;background:var(--app-color-background, #fafafa)}:host.form-group--divider:not(.form-group--outlined):not(.form-group--subtle):not(.form-group--collapsible) .form-group__header{border-bottom:1px solid var(--app-color-border, #e5e5e5);padding-bottom:.65rem;margin-bottom:1rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5547
5547
  }
5548
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormGroupComponent, decorators: [{
5548
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FormGroupComponent, decorators: [{
5549
5549
  type: Component,
5550
5550
  args: [{ selector: 'app-form-group', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (showHeaderBar) {\r\n <div\r\n class=\"form-group__header\"\r\n [class.form-group__header--interactive]=\"headerIsInteractive\"\r\n [attr.role]=\"headerIsInteractive ? 'button' : null\"\r\n [attr.tabindex]=\"headerIsInteractive ? 0 : null\"\r\n [attr.aria-expanded]=\"headerIsInteractive ? !isCollapsed : null\"\r\n [attr.aria-disabled]=\"disabled ? true : null\"\r\n (click)=\"onHeaderClick()\"\r\n (keydown)=\"onHeaderKeydown($event)\"\r\n >\r\n <div class=\"form-group__header-main\">\r\n @if (collapsible && !disabled) {\r\n <span\r\n class=\"form-group__chevron\"\r\n [class.form-group__chevron--locked]=\"!foldable\"\r\n aria-hidden=\"true\"\r\n >\r\n <i\r\n class=\"fa-solid\"\r\n [class.fa-chevron-right]=\"foldable && isCollapsed\"\r\n [class.fa-chevron-down]=\"!foldable || !isCollapsed\"\r\n ></i>\r\n </span>\r\n }\r\n <div class=\"form-group__titles\">\r\n @if (titulo.trim()) {\r\n <h3 class=\"form-group__title\">{{ titulo }}</h3>\r\n }\r\n @if (subtitulo.trim()) {\r\n <p class=\"form-group__subtitle\">{{ subtitulo }}</p>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"form-group__header-trailing\">\r\n <span\r\n class=\"form-group__invalid-flag\"\r\n [class.form-group__invalid-flag--visible]=\"invalidFlagVisible\"\r\n [attr.role]=\"invalidFlagVisible ? 'img' : null\"\r\n [attr.aria-label]=\"invalidFlagVisible ? 'Existem erros de valida\u00E7\u00E3o neste grupo' : null\"\r\n [attr.aria-hidden]=\"invalidFlagVisible ? null : 'true'\"\r\n [attr.title]=\"invalidFlagVisible ? 'Existem erros de valida\u00E7\u00E3o neste grupo' : null\"\r\n >\r\n <i class=\"fa-solid fa-triangle-exclamation\" aria-hidden=\"true\"></i>\r\n </span>\r\n @if (canMoveUp || canMoveDown) {\r\n <div class=\"form-group__reorder\" (click)=\"$event.stopPropagation()\">\r\n @if (canMoveUp) {\r\n <button\r\n type=\"button\"\r\n class=\"form-group__reorder-btn\"\r\n [disabled]=\"disabled\"\r\n aria-label=\"Mover grupo para cima\"\r\n (click)=\"onMoveUpClick($event)\"\r\n >\r\n <i class=\"fa-solid fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n @if (canMoveDown) {\r\n <button\r\n type=\"button\"\r\n class=\"form-group__reorder-btn\"\r\n [disabled]=\"disabled\"\r\n aria-label=\"Mover grupo para baixo\"\r\n (click)=\"onMoveDownClick($event)\"\r\n >\r\n <i class=\"fa-solid fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n\r\n@if (renderBodyInDom) {\r\n <div class=\"form-group__body\" [class.form-group__body--collapsed-hidden]=\"bodyVisuallyHidden\">\r\n <div\r\n class=\"form-group__body-stack\"\r\n [class.form-group__body-stack--neutral]=\"skipBodyChildStacking\"\r\n >\r\n <ng-content />\r\n </div>\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box;scroll-margin-top:.75rem;scroll-margin-bottom:.5rem}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle){border:1px solid var(--app-color-border, #e8eaed);border-radius:12px;background:var(--app-color-surface, #fff);padding:0;overflow:hidden;transition:border-color .28s ease,box-shadow .28s ease}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--collapsed{border-color:var(--app-color-border, #e4e6ea);box-shadow:none}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--expanded{border-color:var(--app-color-border-strong, #d4dce8);box-shadow:0 1px 2px var(--app-color-border-subtle, rgba(22, 40, 72, .05)),0 4px 18px var(--app-color-elevated-shadow, rgba(43, 127, 217, .07))}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle) .form-group__header{margin:0;padding:.65rem 1rem .75rem;border-radius:0}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--collapsed .form-group__header{padding-bottom:.7rem}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--expanded .form-group__header{margin-bottom:0;padding-bottom:.65rem}:host.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--expanded .form-group__body{padding:.9rem 1rem}:host.form-group--dense.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--expanded .form-group__header{margin-bottom:0;padding-bottom:.5rem}:host.form-group--dense.form-group--collapsible:not(.form-group--outlined):not(.form-group--subtle).form-group--expanded .form-group__body{padding:.7rem .85rem}.form-group__header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;margin:0 0 1rem;padding:.35rem 0;border-radius:8px;outline:none}.form-group__header--interactive{cursor:pointer;user-select:none;-webkit-user-select:none}.form-group__header--interactive:hover:not([aria-disabled=true]){background:var(--app-color-group-header-hover, rgba(43, 127, 217, .06))}.form-group__header--interactive:focus-visible{box-shadow:0 0 0 2px var(--app-color-focus-ring, rgba(43, 127, 217, .25))}.form-group__header-main{display:flex;align-items:flex-start;gap:.5rem;min-width:0;flex:1}.form-group__chevron{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-top:.1rem;flex-shrink:0;color:var(--ui-field-float-prefix-color, #5a7fa3);font-size:.75rem}.form-group__chevron--locked{color:var(--ui-form-group-chevron-locked, #9aa3ad)}.form-group__titles{min-width:0;flex:1}.form-group__title{margin:0 0 .2rem;font-size:1.05rem;font-weight:600;line-height:1.35;color:var(--ui-field-label-color, #1a1a1a)}.form-group__subtitle{margin:0;font-size:.85rem;line-height:1.4;color:var(--app-color-text-muted, #525252)}.form-group__header-trailing{display:flex;flex-shrink:0;align-items:flex-start;gap:.35rem}.form-group__invalid-flag{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-top:.1rem;font-size:1.05rem;line-height:1;color:var(--app-color-error, #c62828);cursor:inherit;opacity:0;visibility:hidden;pointer-events:none;transform:scale(.92);transition:opacity .22s ease,visibility .22s ease,transform .22s ease}.form-group__invalid-flag--visible{opacity:1;visibility:visible;pointer-events:auto;transform:scale(1)}.form-group__reorder{display:flex;flex-shrink:0;gap:.25rem;align-items:center}.form-group__reorder-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color, #5a7fa3);cursor:pointer;transition:background .15s ease,color .15s ease}.form-group__reorder-btn:hover:not(:disabled){background:var(--app-color-hover-bg-strong, rgba(90, 127, 163, .12));color:var(--ui-field-float-label-top-color, #4a6d8c)}.form-group__reorder-btn:disabled{cursor:not-allowed;opacity:.45}.form-group__body{display:flex;flex-direction:column;gap:.75rem;min-width:0;transition:opacity .18s ease}.form-group__body-stack{display:flex;flex-direction:column;gap:inherit;min-width:0;width:100%}.form-group__body-stack--neutral{display:block;gap:unset}:host ::ng-deep .form-group__body-stack:not(.form-group__body-stack--neutral)>*{display:flex;flex-direction:column;gap:inherit;min-width:0}.form-group__body--collapsed-hidden{display:none}:host.form-group--dense .form-group__header{margin-bottom:.65rem;padding-block:.2rem}:host.form-group--dense .form-group__title{font-size:1rem}:host.form-group--dense .form-group__body{gap:.5rem}:host.form-group--disabled{opacity:.72;pointer-events:none}:host.form-group--disabled .form-group__reorder{pointer-events:none}:host.form-group--outlined{padding:1rem 1rem 1.25rem;border:1px solid var(--ui-field-float-border, #b6cce5);border-radius:var(--ui-field-float-border-radius, 14px);background:var(--ui-field-float-bg, #f3f7fb)}:host.form-group--subtle{padding:.75rem .85rem 1rem;border-radius:10px;background:var(--app-color-background, #fafafa)}:host.form-group--divider:not(.form-group--outlined):not(.form-group--subtle):not(.form-group--collapsible) .form-group__header{border-bottom:1px solid var(--app-color-border, #e5e5e5);padding-bottom:.65rem;margin-bottom:1rem}\n"] }]
5551
5551
  }], propDecorators: { titulo: [{
@@ -5630,12 +5630,12 @@ class FormRowComponent {
5630
5630
  }
5631
5631
  return parts.join(' ');
5632
5632
  }
5633
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5634
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: FormRowComponent, isStandalone: true, selector: "app-form-row", inputs: { gap: "gap", align: "align", justify: "justify", wrap: ["wrap", "wrap", booleanAttribute], stackOnMobile: ["stackOnMobile", "stackOnMobile", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<div class=\"form-row__grid\">\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-row__grid{display:grid;width:100%;min-width:0;box-sizing:border-box;grid-template-columns:repeat(12,minmax(0,1fr));align-items:stretch}:host(.form-row--gap-xs) .form-row__grid{gap:.35rem .5rem}:host(.form-row--gap-sm) .form-row__grid{gap:.5rem .75rem}:host(.form-row--gap-md) .form-row__grid{gap:.75rem 1.25rem}:host(.form-row--gap-lg) .form-row__grid{gap:1rem 1.5rem}:host(.form-row--align-start) .form-row__grid{align-items:start}:host(.form-row--align-center) .form-row__grid{align-items:center}:host(.form-row--align-end) .form-row__grid{align-items:end}:host(.form-row--align-stretch) .form-row__grid{align-items:stretch}:host(.form-row--justify-start) .form-row__grid{justify-items:stretch;justify-content:start}:host(.form-row--justify-center) .form-row__grid{justify-content:center}:host(.form-row--justify-end) .form-row__grid{justify-content:end}:host(.form-row--justify-between) .form-row__grid{justify-content:space-between}@media (max-width: 39.98rem){:host(.form-row--stack-mobile) .form-row__grid{grid-template-columns:1fr}:host(.form-row--stack-mobile) .form-row__grid ::ng-deep>app-form-col{grid-column:1/-1!important}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5633
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FormRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5634
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: FormRowComponent, isStandalone: true, selector: "app-form-row", inputs: { gap: "gap", align: "align", justify: "justify", wrap: ["wrap", "wrap", booleanAttribute], stackOnMobile: ["stackOnMobile", "stackOnMobile", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<div class=\"form-row__grid\">\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-row__grid{display:grid;width:100%;min-width:0;box-sizing:border-box;grid-template-columns:repeat(12,minmax(0,1fr));align-items:stretch}:host(.form-row--gap-xs) .form-row__grid{gap:.35rem .5rem}:host(.form-row--gap-sm) .form-row__grid{gap:.5rem .75rem}:host(.form-row--gap-md) .form-row__grid{gap:.75rem 1.25rem}:host(.form-row--gap-lg) .form-row__grid{gap:1rem 1.5rem}:host(.form-row--align-start) .form-row__grid{align-items:start}:host(.form-row--align-center) .form-row__grid{align-items:center}:host(.form-row--align-end) .form-row__grid{align-items:end}:host(.form-row--align-stretch) .form-row__grid{align-items:stretch}:host(.form-row--justify-start) .form-row__grid{justify-items:stretch;justify-content:start}:host(.form-row--justify-center) .form-row__grid{justify-content:center}:host(.form-row--justify-end) .form-row__grid{justify-content:end}:host(.form-row--justify-between) .form-row__grid{justify-content:space-between}@media(max-width:39.98rem){:host(.form-row--stack-mobile) .form-row__grid{grid-template-columns:1fr}:host(.form-row--stack-mobile) .form-row__grid ::ng-deep>app-form-col{grid-column:1/-1!important}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5635
5635
  }
5636
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormRowComponent, decorators: [{
5636
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FormRowComponent, decorators: [{
5637
5637
  type: Component,
5638
- args: [{ selector: 'app-form-row', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-row__grid\">\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-row__grid{display:grid;width:100%;min-width:0;box-sizing:border-box;grid-template-columns:repeat(12,minmax(0,1fr));align-items:stretch}:host(.form-row--gap-xs) .form-row__grid{gap:.35rem .5rem}:host(.form-row--gap-sm) .form-row__grid{gap:.5rem .75rem}:host(.form-row--gap-md) .form-row__grid{gap:.75rem 1.25rem}:host(.form-row--gap-lg) .form-row__grid{gap:1rem 1.5rem}:host(.form-row--align-start) .form-row__grid{align-items:start}:host(.form-row--align-center) .form-row__grid{align-items:center}:host(.form-row--align-end) .form-row__grid{align-items:end}:host(.form-row--align-stretch) .form-row__grid{align-items:stretch}:host(.form-row--justify-start) .form-row__grid{justify-items:stretch;justify-content:start}:host(.form-row--justify-center) .form-row__grid{justify-content:center}:host(.form-row--justify-end) .form-row__grid{justify-content:end}:host(.form-row--justify-between) .form-row__grid{justify-content:space-between}@media (max-width: 39.98rem){:host(.form-row--stack-mobile) .form-row__grid{grid-template-columns:1fr}:host(.form-row--stack-mobile) .form-row__grid ::ng-deep>app-form-col{grid-column:1/-1!important}}\n"] }]
5638
+ args: [{ selector: 'app-form-row', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-row__grid\">\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-row__grid{display:grid;width:100%;min-width:0;box-sizing:border-box;grid-template-columns:repeat(12,minmax(0,1fr));align-items:stretch}:host(.form-row--gap-xs) .form-row__grid{gap:.35rem .5rem}:host(.form-row--gap-sm) .form-row__grid{gap:.5rem .75rem}:host(.form-row--gap-md) .form-row__grid{gap:.75rem 1.25rem}:host(.form-row--gap-lg) .form-row__grid{gap:1rem 1.5rem}:host(.form-row--align-start) .form-row__grid{align-items:start}:host(.form-row--align-center) .form-row__grid{align-items:center}:host(.form-row--align-end) .form-row__grid{align-items:end}:host(.form-row--align-stretch) .form-row__grid{align-items:stretch}:host(.form-row--justify-start) .form-row__grid{justify-items:stretch;justify-content:start}:host(.form-row--justify-center) .form-row__grid{justify-content:center}:host(.form-row--justify-end) .form-row__grid{justify-content:end}:host(.form-row--justify-between) .form-row__grid{justify-content:space-between}@media(max-width:39.98rem){:host(.form-row--stack-mobile) .form-row__grid{grid-template-columns:1fr}:host(.form-row--stack-mobile) .form-row__grid ::ng-deep>app-form-col{grid-column:1/-1!important}}\n"] }]
5639
5639
  }], propDecorators: { gap: [{
5640
5640
  type: Input
5641
5641
  }], align: [{
@@ -5672,10 +5672,10 @@ class FormSectionComponent {
5672
5672
  get showHeader() {
5673
5673
  return this.titulo.trim().length > 0 || this.subtitulo.trim().length > 0;
5674
5674
  }
5675
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5676
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FormSectionComponent, isStandalone: true, selector: "app-form-section", inputs: { titulo: "titulo", subtitulo: "subtitulo", dense: ["dense", "dense", booleanAttribute], withDivider: ["withDivider", "withDivider", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "@if (showHeader) {\r\n<header class=\"form-section__header\">\r\n @if (titulo.trim()) {\r\n <h2 class=\"form-section__title\">{{ titulo }}</h2>\r\n }\r\n @if (subtitulo.trim()) {\r\n <p class=\"form-section__subtitle\">{{ subtitulo }}</p>\r\n }\r\n</header>\r\n}\r\n<div class=\"form-section__body\">\r\n <ng-content />\r\n</div>", styles: [":host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-section__header{margin:0 0 1.25rem;padding:0}.form-section__title{margin:0 0 .35rem;font-size:1.25rem;font-weight:600;line-height:1.3;color:var(--ui-field-label-color, #1a1a1a)}.form-section__subtitle{margin:0;font-size:.9rem;line-height:1.45;color:#525252}.form-section__body{display:flex;flex-direction:column;gap:1rem;min-width:0}:host.form-section--dense .form-section__header{margin-bottom:.75rem}:host.form-section--dense .form-section__title{font-size:1.1rem}:host.form-section--dense .form-section__body{gap:.65rem}:host.form-section--divider{padding-bottom:1.75rem;margin-bottom:1.75rem;border-bottom:1px solid #e5e5e5}:host.form-section--dense.form-section--divider{padding-bottom:1.25rem;margin-bottom:1.25rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5675
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FormSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5676
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: FormSectionComponent, isStandalone: true, selector: "app-form-section", inputs: { titulo: "titulo", subtitulo: "subtitulo", dense: ["dense", "dense", booleanAttribute], withDivider: ["withDivider", "withDivider", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "@if (showHeader) {\r\n<header class=\"form-section__header\">\r\n @if (titulo.trim()) {\r\n <h2 class=\"form-section__title\">{{ titulo }}</h2>\r\n }\r\n @if (subtitulo.trim()) {\r\n <p class=\"form-section__subtitle\">{{ subtitulo }}</p>\r\n }\r\n</header>\r\n}\r\n<div class=\"form-section__body\">\r\n <ng-content />\r\n</div>", styles: [":host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-section__header{margin:0 0 1.25rem;padding:0}.form-section__title{margin:0 0 .35rem;font-size:1.25rem;font-weight:600;line-height:1.3;color:var(--ui-field-label-color, #1a1a1a)}.form-section__subtitle{margin:0;font-size:.9rem;line-height:1.45;color:#525252}.form-section__body{display:flex;flex-direction:column;gap:1rem;min-width:0}:host.form-section--dense .form-section__header{margin-bottom:.75rem}:host.form-section--dense .form-section__title{font-size:1.1rem}:host.form-section--dense .form-section__body{gap:.65rem}:host.form-section--divider{padding-bottom:1.75rem;margin-bottom:1.75rem;border-bottom:1px solid #e5e5e5}:host.form-section--dense.form-section--divider{padding-bottom:1.25rem;margin-bottom:1.25rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5677
5677
  }
5678
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormSectionComponent, decorators: [{
5678
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FormSectionComponent, decorators: [{
5679
5679
  type: Component,
5680
5680
  args: [{ selector: 'app-form-section', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (showHeader) {\r\n<header class=\"form-section__header\">\r\n @if (titulo.trim()) {\r\n <h2 class=\"form-section__title\">{{ titulo }}</h2>\r\n }\r\n @if (subtitulo.trim()) {\r\n <p class=\"form-section__subtitle\">{{ subtitulo }}</p>\r\n }\r\n</header>\r\n}\r\n<div class=\"form-section__body\">\r\n <ng-content />\r\n</div>", styles: [":host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-section__header{margin:0 0 1.25rem;padding:0}.form-section__title{margin:0 0 .35rem;font-size:1.25rem;font-weight:600;line-height:1.3;color:var(--ui-field-label-color, #1a1a1a)}.form-section__subtitle{margin:0;font-size:.9rem;line-height:1.45;color:#525252}.form-section__body{display:flex;flex-direction:column;gap:1rem;min-width:0}:host.form-section--dense .form-section__header{margin-bottom:.75rem}:host.form-section--dense .form-section__title{font-size:1.1rem}:host.form-section--dense .form-section__body{gap:.65rem}:host.form-section--divider{padding-bottom:1.75rem;margin-bottom:1.75rem;border-bottom:1px solid #e5e5e5}:host.form-section--dense.form-section--divider{padding-bottom:1.25rem;margin-bottom:1.25rem}\n"] }]
5681
5681
  }], propDecorators: { titulo: [{
@@ -5985,10 +5985,10 @@ class ValidationSummaryComponent {
5985
5985
  const tab = el.getAttribute('tabindex');
5986
5986
  return tab != null && tab !== '-1';
5987
5987
  }
5988
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidationSummaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5989
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ValidationSummaryComponent, isStandalone: true, selector: "app-validation-summary", inputs: { messages: "messages", items: "items", summaryHeading: ["title", "summaryHeading"], visible: ["visible", "visible", booleanAttribute], pinned: ["pinned", "pinned", booleanAttribute], variant: "variant", compact: ["compact", "compact", booleanAttribute], panelMaxHeight: "panelMaxHeight", scrollBehavior: "scrollBehavior", beforeItemActivate: "beforeItemActivate", showCloseButton: ["showCloseButton", "showCloseButton", booleanAttribute], showListCollapseToggle: ["showListCollapseToggle", "showListCollapseToggle", booleanAttribute], closeButtonLabel: "closeButtonLabel", fieldNavigateHint: "fieldNavigateHint" }, outputs: { panelClose: "panelClose" }, host: { properties: { "class": "this.hostClass", "attr.hidden": "this.hostHidden" } }, usesOnChanges: true, ngImport: i0, template: "@if (isShown) {\r\n<div class=\"validation-summary__panel\" role=\"region\"\r\n [attr.aria-labelledby]=\"summaryHeading.trim() ? titleElementId : null\"\r\n [attr.aria-label]=\"summaryHeading.trim() ? null : 'Resumo de valida\u00E7\u00E3o'\"\r\n [class.validation-summary__panel--pinned]=\"pinned\"\r\n [class.validation-summary__panel--pinned-open]=\"pinned && pinnedOpen\"\r\n [class.validation-summary__panel--list-collapsed]=\"!panelBodyExpanded\">\r\n <div class=\"validation-summary__head\">\r\n @if (showListCollapseToggle) {\r\n <button type=\"button\" class=\"validation-summary__collapse-toggle\" (click)=\"toggleListBody()\"\r\n [attr.aria-expanded]=\"panelBodyExpanded\" [attr.aria-controls]=\"listRegionId\"\r\n [attr.aria-label]=\"panelBodyExpanded ? 'Recolher lista de erros' : 'Expandir lista de erros'\">\r\n <i class=\"fa-solid\" aria-hidden=\"true\" [class.fa-chevron-up]=\"panelBodyExpanded\"\r\n [class.fa-chevron-down]=\"!panelBodyExpanded\"></i>\r\n </button>\r\n }\r\n @if (summaryHeading.trim()) {\r\n <h3 class=\"validation-summary__title\" [id]=\"titleElementId\">\r\n {{ summaryHeading }}\r\n </h3>\r\n }\r\n @if (showCloseButton) {\r\n <button type=\"button\" class=\"validation-summary__close\" (click)=\"onCloseClick()\">\r\n {{ closeButtonLabel }}\r\n </button>\r\n }\r\n </div>\r\n <div class=\"validation-summary__list-wrap\" [id]=\"listRegionId\"\r\n [class.validation-summary__list-wrap--scrollable]=\"!!panelMaxHeight && panelBodyExpanded\"\r\n [class.validation-summary__list-wrap--collapsed]=\"!panelBodyExpanded\"\r\n [style.max-height]=\"panelBodyExpanded ? (panelMaxHeight || null) : null\" [attr.title]=\"fieldNavigateHint\">\r\n <ul class=\"validation-summary__list\" role=\"list\">\r\n @for (row of resolvedItems; track itemTrackKey(row, $index)) {\r\n <li class=\"validation-summary__item\" role=\"listitem\" (click)=\"onSummaryLinkActivate($event, row)\">\r\n @if (row.fieldId) {\r\n <button type=\"button\" class=\"validation-summary__link\" [attr.title]=\"fieldNavigateHint\">\r\n {{ row.message }}\r\n </button>\r\n } @else {\r\n <span class=\"validation-summary__text\">{{ row.message }}</span>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n</div>\r\n}", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;max-width:100%;min-width:0;box-sizing:border-box;flex:0 0 auto;align-self:stretch}:host.validation-summary--pinned-host{position:static;display:block;box-sizing:border-box;flex:0 0 auto!important;width:100%;max-width:100%;height:0!important;min-height:0!important;margin:0!important;padding:0!important;overflow:visible;pointer-events:none}.validation-summary__panel.validation-summary__panel--pinned{position:fixed;z-index:var(--app-z-validation-summary-pinned, 1400);top:max(.65rem,env(safe-area-inset-top,0px));left:1rem;right:1rem;width:auto;max-width:min(100%,52rem);margin-left:auto;margin-right:auto;box-sizing:border-box;pointer-events:auto;box-shadow:0 4px 6px -1px #00000014,0 10px 24px -6px #0000001f;transform:none;opacity:0;transition:opacity .2s ease-out}.validation-summary__panel.validation-summary__panel--pinned.validation-summary__panel--pinned-open{opacity:1}.validation-summary__panel{width:100%;border-radius:10px;padding:.85rem 1rem;box-sizing:border-box;border:1px solid transparent}.validation-summary__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:.45rem .75rem;margin-bottom:.55rem}.validation-summary__panel--list-collapsed .validation-summary__head{margin-bottom:0}.validation-summary__collapse-toggle{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:1px solid rgba(183,28,28,.35);border-radius:8px;background:#ffffffbf;color:var(--ui-validation-summary-title-error, #b71c1c);font-size:.8rem;line-height:1;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,border-color .15s ease}.validation-summary__collapse-toggle:hover{background:#fff;border-color:#b71c1c8c}.validation-summary__collapse-toggle:focus-visible{outline:2px solid var(--app-color-validation-focus-ring, rgba(185, 28, 28, .45));outline-offset:2px}.validation-summary__title{margin:0;flex:1 1 auto;min-width:0;font-size:1rem;font-weight:600;line-height:1.35;user-select:none;-webkit-user-select:none}.validation-summary__close{flex-shrink:0;margin:0 0 0 auto;padding:.3rem .7rem;border:1px solid rgba(183,28,28,.35);border-radius:8px;background:#ffffffbf;color:var(--ui-validation-summary-title-error, #b71c1c);font-size:.85rem;font-weight:500;font-family:inherit;line-height:1.3;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,border-color .15s ease}.validation-summary__close:hover{background:#fff;border-color:#b71c1c8c}.validation-summary__close:focus-visible{outline:2px solid var(--app-color-validation-focus-ring, rgba(185, 28, 28, .45));outline-offset:2px}.validation-summary__list-wrap{min-width:0;user-select:none;-webkit-user-select:none;overflow:hidden;transition:max-height .28s ease,opacity .22s ease,margin .2s ease}.validation-summary__list-wrap--collapsed{max-height:0!important;opacity:0;margin:0;padding:0;pointer-events:none}.validation-summary__list-wrap--scrollable{overflow-y:auto;overflow-x:hidden;padding-right:.15rem;scrollbar-gutter:stable}.validation-summary__list{margin:0;padding:0;list-style:none}.validation-summary__item{display:flex;align-items:flex-start;gap:.4rem;margin:.2rem 0;padding:0;line-height:1.45;color:var(--ui-validation-summary-text, #1a1a1a);user-select:none;-webkit-user-select:none}.validation-summary__item:before{content:\"\\2022\";flex-shrink:0;line-height:inherit;color:var(--ui-validation-summary-text, #1a1a1a)}.validation-summary__text{display:inline;font:inherit;user-select:none;-webkit-user-select:none}.validation-summary__link{flex:1;min-width:0;display:block;margin:0;padding:0;border:none;background:none;font:inherit;color:inherit;text-align:left;text-decoration:underline;text-underline-offset:.12em;cursor:pointer;user-select:none;-webkit-user-select:none}.validation-summary__link:hover{color:var(--ui-validation-summary-link-hover, #0d47a1)}.validation-summary__link:focus-visible{outline:2px solid var(--app-color-validation-focus-ring, rgba(185, 28, 28, .45));outline-offset:2px;border-radius:4px}:host.validation-summary--error .validation-summary__link:hover{color:var(--app-color-error, #b91c1c)}:host.validation-summary--error .validation-summary__panel{background:var(--ui-validation-summary-bg-error, #ffebee);border-color:var(--ui-validation-summary-border-error, #ffcdd2)}:host.validation-summary--error .validation-summary__title{color:var(--ui-validation-summary-title-error, #b71c1c)}:host.validation-summary--warning .validation-summary__panel{background:var(--ui-validation-summary-bg-warning, #fff8e1);border-color:var(--ui-validation-summary-border-warning, #ffe082)}:host.validation-summary--warning .validation-summary__title{color:var(--ui-validation-summary-title-warning, #e65100)}:host.validation-summary--warning .validation-summary__close{color:var(--ui-validation-summary-title-warning, #e65100);border-color:#e6510059}:host.validation-summary--warning .validation-summary__collapse-toggle{color:var(--ui-validation-summary-title-warning, #e65100);border-color:#e6510059}:host.validation-summary--warning .validation-summary__collapse-toggle:hover{border-color:#e651008c}:host.validation-summary--info .validation-summary__panel{background:var(--ui-validation-summary-bg-info, #e3f2fd);border-color:var(--ui-validation-summary-border-info, #90caf9)}:host.validation-summary--info .validation-summary__title{color:var(--ui-validation-summary-title-info, #0d47a1)}:host.validation-summary--info .validation-summary__close{color:var(--ui-validation-summary-title-info, #0d47a1);border-color:#0d47a159}:host.validation-summary--info .validation-summary__collapse-toggle{color:var(--ui-validation-summary-title-info, #0d47a1);border-color:#0d47a159}:host.validation-summary--info .validation-summary__collapse-toggle:hover{border-color:#0d47a18c}:host.validation-summary--compact .validation-summary__panel{padding:.55rem .7rem}:host.validation-summary--compact .validation-summary__head{margin-bottom:.35rem}:host.validation-summary--compact .validation-summary__title{font-size:.92rem}:host.validation-summary--compact .validation-summary__list{padding-left:0}:host.validation-summary--compact .validation-summary__item{font-size:.88rem;margin:.12rem 0}:host.validation-summary--compact .validation-summary__collapse-toggle{width:1.75rem;height:1.75rem;font-size:.72rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5988
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ValidationSummaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5989
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ValidationSummaryComponent, isStandalone: true, selector: "app-validation-summary", inputs: { messages: "messages", items: "items", summaryHeading: ["title", "summaryHeading"], visible: ["visible", "visible", booleanAttribute], pinned: ["pinned", "pinned", booleanAttribute], variant: "variant", compact: ["compact", "compact", booleanAttribute], panelMaxHeight: "panelMaxHeight", scrollBehavior: "scrollBehavior", beforeItemActivate: "beforeItemActivate", showCloseButton: ["showCloseButton", "showCloseButton", booleanAttribute], showListCollapseToggle: ["showListCollapseToggle", "showListCollapseToggle", booleanAttribute], closeButtonLabel: "closeButtonLabel", fieldNavigateHint: "fieldNavigateHint" }, outputs: { panelClose: "panelClose" }, host: { properties: { "class": "this.hostClass", "attr.hidden": "this.hostHidden" } }, usesOnChanges: true, ngImport: i0, template: "@if (isShown) {\r\n<div class=\"validation-summary__panel\" role=\"region\"\r\n [attr.aria-labelledby]=\"summaryHeading.trim() ? titleElementId : null\"\r\n [attr.aria-label]=\"summaryHeading.trim() ? null : 'Resumo de valida\u00E7\u00E3o'\"\r\n [class.validation-summary__panel--pinned]=\"pinned\"\r\n [class.validation-summary__panel--pinned-open]=\"pinned && pinnedOpen\"\r\n [class.validation-summary__panel--list-collapsed]=\"!panelBodyExpanded\">\r\n <div class=\"validation-summary__head\">\r\n @if (showListCollapseToggle) {\r\n <button type=\"button\" class=\"validation-summary__collapse-toggle\" (click)=\"toggleListBody()\"\r\n [attr.aria-expanded]=\"panelBodyExpanded\" [attr.aria-controls]=\"listRegionId\"\r\n [attr.aria-label]=\"panelBodyExpanded ? 'Recolher lista de erros' : 'Expandir lista de erros'\">\r\n <i class=\"fa-solid\" aria-hidden=\"true\" [class.fa-chevron-up]=\"panelBodyExpanded\"\r\n [class.fa-chevron-down]=\"!panelBodyExpanded\"></i>\r\n </button>\r\n }\r\n @if (summaryHeading.trim()) {\r\n <h3 class=\"validation-summary__title\" [id]=\"titleElementId\">\r\n {{ summaryHeading }}\r\n </h3>\r\n }\r\n @if (showCloseButton) {\r\n <button type=\"button\" class=\"validation-summary__close\" (click)=\"onCloseClick()\">\r\n {{ closeButtonLabel }}\r\n </button>\r\n }\r\n </div>\r\n <div class=\"validation-summary__list-wrap\" [id]=\"listRegionId\"\r\n [class.validation-summary__list-wrap--scrollable]=\"!!panelMaxHeight && panelBodyExpanded\"\r\n [class.validation-summary__list-wrap--collapsed]=\"!panelBodyExpanded\"\r\n [style.max-height]=\"panelBodyExpanded ? (panelMaxHeight || null) : null\" [attr.title]=\"fieldNavigateHint\">\r\n <ul class=\"validation-summary__list\" role=\"list\">\r\n @for (row of resolvedItems; track itemTrackKey(row, $index)) {\r\n <li class=\"validation-summary__item\" role=\"listitem\" (click)=\"onSummaryLinkActivate($event, row)\">\r\n @if (row.fieldId) {\r\n <button type=\"button\" class=\"validation-summary__link\" [attr.title]=\"fieldNavigateHint\">\r\n {{ row.message }}\r\n </button>\r\n } @else {\r\n <span class=\"validation-summary__text\">{{ row.message }}</span>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n</div>\r\n}", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;max-width:100%;min-width:0;box-sizing:border-box;flex:0 0 auto;align-self:stretch}:host.validation-summary--pinned-host{position:static;display:block;box-sizing:border-box;flex:0 0 auto!important;width:100%;max-width:100%;height:0!important;min-height:0!important;margin:0!important;padding:0!important;overflow:visible;pointer-events:none}.validation-summary__panel.validation-summary__panel--pinned{position:fixed;z-index:var(--app-z-validation-summary-pinned, 1400);top:max(.65rem,env(safe-area-inset-top,0px));left:1rem;right:1rem;width:auto;max-width:min(100%,52rem);margin-left:auto;margin-right:auto;box-sizing:border-box;pointer-events:auto;box-shadow:0 4px 6px -1px #00000014,0 10px 24px -6px #0000001f;transform:none;opacity:0;transition:opacity .2s ease-out}.validation-summary__panel.validation-summary__panel--pinned.validation-summary__panel--pinned-open{opacity:1}.validation-summary__panel{width:100%;border-radius:10px;padding:.85rem 1rem;box-sizing:border-box;border:1px solid transparent}.validation-summary__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:.45rem .75rem;margin-bottom:.55rem}.validation-summary__panel--list-collapsed .validation-summary__head{margin-bottom:0}.validation-summary__collapse-toggle{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:1px solid rgba(183,28,28,.35);border-radius:8px;background:#ffffffbf;color:var(--ui-validation-summary-title-error, #b71c1c);font-size:.8rem;line-height:1;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,border-color .15s ease}.validation-summary__collapse-toggle:hover{background:#fff;border-color:#b71c1c8c}.validation-summary__collapse-toggle:focus-visible{outline:2px solid var(--app-color-validation-focus-ring, rgba(185, 28, 28, .45));outline-offset:2px}.validation-summary__title{margin:0;flex:1 1 auto;min-width:0;font-size:1rem;font-weight:600;line-height:1.35;user-select:none;-webkit-user-select:none}.validation-summary__close{flex-shrink:0;margin:0 0 0 auto;padding:.3rem .7rem;border:1px solid rgba(183,28,28,.35);border-radius:8px;background:#ffffffbf;color:var(--ui-validation-summary-title-error, #b71c1c);font-size:.85rem;font-weight:500;font-family:inherit;line-height:1.3;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,border-color .15s ease}.validation-summary__close:hover{background:#fff;border-color:#b71c1c8c}.validation-summary__close:focus-visible{outline:2px solid var(--app-color-validation-focus-ring, rgba(185, 28, 28, .45));outline-offset:2px}.validation-summary__list-wrap{min-width:0;user-select:none;-webkit-user-select:none;overflow:hidden;transition:max-height .28s ease,opacity .22s ease,margin .2s ease}.validation-summary__list-wrap--collapsed{max-height:0!important;opacity:0;margin:0;padding:0;pointer-events:none}.validation-summary__list-wrap--scrollable{overflow-y:auto;overflow-x:hidden;padding-right:.15rem;scrollbar-gutter:stable}.validation-summary__list{margin:0;padding:0;list-style:none}.validation-summary__item{display:flex;align-items:flex-start;gap:.4rem;margin:.2rem 0;padding:0;line-height:1.45;color:var(--ui-validation-summary-text, #1a1a1a);user-select:none;-webkit-user-select:none}.validation-summary__item:before{content:\"\\2022\";flex-shrink:0;line-height:inherit;color:var(--ui-validation-summary-text, #1a1a1a)}.validation-summary__text{display:inline;font:inherit;user-select:none;-webkit-user-select:none}.validation-summary__link{flex:1;min-width:0;display:block;margin:0;padding:0;border:none;background:none;font:inherit;color:inherit;text-align:left;text-decoration:underline;text-underline-offset:.12em;cursor:pointer;user-select:none;-webkit-user-select:none}.validation-summary__link:hover{color:var(--ui-validation-summary-link-hover, #0d47a1)}.validation-summary__link:focus-visible{outline:2px solid var(--app-color-validation-focus-ring, rgba(185, 28, 28, .45));outline-offset:2px;border-radius:4px}:host.validation-summary--error .validation-summary__link:hover{color:var(--app-color-error, #b91c1c)}:host.validation-summary--error .validation-summary__panel{background:var(--ui-validation-summary-bg-error, #ffebee);border-color:var(--ui-validation-summary-border-error, #ffcdd2)}:host.validation-summary--error .validation-summary__title{color:var(--ui-validation-summary-title-error, #b71c1c)}:host.validation-summary--warning .validation-summary__panel{background:var(--ui-validation-summary-bg-warning, #fff8e1);border-color:var(--ui-validation-summary-border-warning, #ffe082)}:host.validation-summary--warning .validation-summary__title{color:var(--ui-validation-summary-title-warning, #e65100)}:host.validation-summary--warning .validation-summary__close{color:var(--ui-validation-summary-title-warning, #e65100);border-color:#e6510059}:host.validation-summary--warning .validation-summary__collapse-toggle{color:var(--ui-validation-summary-title-warning, #e65100);border-color:#e6510059}:host.validation-summary--warning .validation-summary__collapse-toggle:hover{border-color:#e651008c}:host.validation-summary--info .validation-summary__panel{background:var(--ui-validation-summary-bg-info, #e3f2fd);border-color:var(--ui-validation-summary-border-info, #90caf9)}:host.validation-summary--info .validation-summary__title{color:var(--ui-validation-summary-title-info, #0d47a1)}:host.validation-summary--info .validation-summary__close{color:var(--ui-validation-summary-title-info, #0d47a1);border-color:#0d47a159}:host.validation-summary--info .validation-summary__collapse-toggle{color:var(--ui-validation-summary-title-info, #0d47a1);border-color:#0d47a159}:host.validation-summary--info .validation-summary__collapse-toggle:hover{border-color:#0d47a18c}:host.validation-summary--compact .validation-summary__panel{padding:.55rem .7rem}:host.validation-summary--compact .validation-summary__head{margin-bottom:.35rem}:host.validation-summary--compact .validation-summary__title{font-size:.92rem}:host.validation-summary--compact .validation-summary__list{padding-left:0}:host.validation-summary--compact .validation-summary__item{font-size:.88rem;margin:.12rem 0}:host.validation-summary--compact .validation-summary__collapse-toggle{width:1.75rem;height:1.75rem;font-size:.72rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5990
5990
  }
5991
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidationSummaryComponent, decorators: [{
5991
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ValidationSummaryComponent, decorators: [{
5992
5992
  type: Component,
5993
5993
  args: [{ selector: 'app-validation-summary', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (isShown) {\r\n<div class=\"validation-summary__panel\" role=\"region\"\r\n [attr.aria-labelledby]=\"summaryHeading.trim() ? titleElementId : null\"\r\n [attr.aria-label]=\"summaryHeading.trim() ? null : 'Resumo de valida\u00E7\u00E3o'\"\r\n [class.validation-summary__panel--pinned]=\"pinned\"\r\n [class.validation-summary__panel--pinned-open]=\"pinned && pinnedOpen\"\r\n [class.validation-summary__panel--list-collapsed]=\"!panelBodyExpanded\">\r\n <div class=\"validation-summary__head\">\r\n @if (showListCollapseToggle) {\r\n <button type=\"button\" class=\"validation-summary__collapse-toggle\" (click)=\"toggleListBody()\"\r\n [attr.aria-expanded]=\"panelBodyExpanded\" [attr.aria-controls]=\"listRegionId\"\r\n [attr.aria-label]=\"panelBodyExpanded ? 'Recolher lista de erros' : 'Expandir lista de erros'\">\r\n <i class=\"fa-solid\" aria-hidden=\"true\" [class.fa-chevron-up]=\"panelBodyExpanded\"\r\n [class.fa-chevron-down]=\"!panelBodyExpanded\"></i>\r\n </button>\r\n }\r\n @if (summaryHeading.trim()) {\r\n <h3 class=\"validation-summary__title\" [id]=\"titleElementId\">\r\n {{ summaryHeading }}\r\n </h3>\r\n }\r\n @if (showCloseButton) {\r\n <button type=\"button\" class=\"validation-summary__close\" (click)=\"onCloseClick()\">\r\n {{ closeButtonLabel }}\r\n </button>\r\n }\r\n </div>\r\n <div class=\"validation-summary__list-wrap\" [id]=\"listRegionId\"\r\n [class.validation-summary__list-wrap--scrollable]=\"!!panelMaxHeight && panelBodyExpanded\"\r\n [class.validation-summary__list-wrap--collapsed]=\"!panelBodyExpanded\"\r\n [style.max-height]=\"panelBodyExpanded ? (panelMaxHeight || null) : null\" [attr.title]=\"fieldNavigateHint\">\r\n <ul class=\"validation-summary__list\" role=\"list\">\r\n @for (row of resolvedItems; track itemTrackKey(row, $index)) {\r\n <li class=\"validation-summary__item\" role=\"listitem\" (click)=\"onSummaryLinkActivate($event, row)\">\r\n @if (row.fieldId) {\r\n <button type=\"button\" class=\"validation-summary__link\" [attr.title]=\"fieldNavigateHint\">\r\n {{ row.message }}\r\n </button>\r\n } @else {\r\n <span class=\"validation-summary__text\">{{ row.message }}</span>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n</div>\r\n}", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;max-width:100%;min-width:0;box-sizing:border-box;flex:0 0 auto;align-self:stretch}:host.validation-summary--pinned-host{position:static;display:block;box-sizing:border-box;flex:0 0 auto!important;width:100%;max-width:100%;height:0!important;min-height:0!important;margin:0!important;padding:0!important;overflow:visible;pointer-events:none}.validation-summary__panel.validation-summary__panel--pinned{position:fixed;z-index:var(--app-z-validation-summary-pinned, 1400);top:max(.65rem,env(safe-area-inset-top,0px));left:1rem;right:1rem;width:auto;max-width:min(100%,52rem);margin-left:auto;margin-right:auto;box-sizing:border-box;pointer-events:auto;box-shadow:0 4px 6px -1px #00000014,0 10px 24px -6px #0000001f;transform:none;opacity:0;transition:opacity .2s ease-out}.validation-summary__panel.validation-summary__panel--pinned.validation-summary__panel--pinned-open{opacity:1}.validation-summary__panel{width:100%;border-radius:10px;padding:.85rem 1rem;box-sizing:border-box;border:1px solid transparent}.validation-summary__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:.45rem .75rem;margin-bottom:.55rem}.validation-summary__panel--list-collapsed .validation-summary__head{margin-bottom:0}.validation-summary__collapse-toggle{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:1px solid rgba(183,28,28,.35);border-radius:8px;background:#ffffffbf;color:var(--ui-validation-summary-title-error, #b71c1c);font-size:.8rem;line-height:1;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,border-color .15s ease}.validation-summary__collapse-toggle:hover{background:#fff;border-color:#b71c1c8c}.validation-summary__collapse-toggle:focus-visible{outline:2px solid var(--app-color-validation-focus-ring, rgba(185, 28, 28, .45));outline-offset:2px}.validation-summary__title{margin:0;flex:1 1 auto;min-width:0;font-size:1rem;font-weight:600;line-height:1.35;user-select:none;-webkit-user-select:none}.validation-summary__close{flex-shrink:0;margin:0 0 0 auto;padding:.3rem .7rem;border:1px solid rgba(183,28,28,.35);border-radius:8px;background:#ffffffbf;color:var(--ui-validation-summary-title-error, #b71c1c);font-size:.85rem;font-weight:500;font-family:inherit;line-height:1.3;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,border-color .15s ease}.validation-summary__close:hover{background:#fff;border-color:#b71c1c8c}.validation-summary__close:focus-visible{outline:2px solid var(--app-color-validation-focus-ring, rgba(185, 28, 28, .45));outline-offset:2px}.validation-summary__list-wrap{min-width:0;user-select:none;-webkit-user-select:none;overflow:hidden;transition:max-height .28s ease,opacity .22s ease,margin .2s ease}.validation-summary__list-wrap--collapsed{max-height:0!important;opacity:0;margin:0;padding:0;pointer-events:none}.validation-summary__list-wrap--scrollable{overflow-y:auto;overflow-x:hidden;padding-right:.15rem;scrollbar-gutter:stable}.validation-summary__list{margin:0;padding:0;list-style:none}.validation-summary__item{display:flex;align-items:flex-start;gap:.4rem;margin:.2rem 0;padding:0;line-height:1.45;color:var(--ui-validation-summary-text, #1a1a1a);user-select:none;-webkit-user-select:none}.validation-summary__item:before{content:\"\\2022\";flex-shrink:0;line-height:inherit;color:var(--ui-validation-summary-text, #1a1a1a)}.validation-summary__text{display:inline;font:inherit;user-select:none;-webkit-user-select:none}.validation-summary__link{flex:1;min-width:0;display:block;margin:0;padding:0;border:none;background:none;font:inherit;color:inherit;text-align:left;text-decoration:underline;text-underline-offset:.12em;cursor:pointer;user-select:none;-webkit-user-select:none}.validation-summary__link:hover{color:var(--ui-validation-summary-link-hover, #0d47a1)}.validation-summary__link:focus-visible{outline:2px solid var(--app-color-validation-focus-ring, rgba(185, 28, 28, .45));outline-offset:2px;border-radius:4px}:host.validation-summary--error .validation-summary__link:hover{color:var(--app-color-error, #b91c1c)}:host.validation-summary--error .validation-summary__panel{background:var(--ui-validation-summary-bg-error, #ffebee);border-color:var(--ui-validation-summary-border-error, #ffcdd2)}:host.validation-summary--error .validation-summary__title{color:var(--ui-validation-summary-title-error, #b71c1c)}:host.validation-summary--warning .validation-summary__panel{background:var(--ui-validation-summary-bg-warning, #fff8e1);border-color:var(--ui-validation-summary-border-warning, #ffe082)}:host.validation-summary--warning .validation-summary__title{color:var(--ui-validation-summary-title-warning, #e65100)}:host.validation-summary--warning .validation-summary__close{color:var(--ui-validation-summary-title-warning, #e65100);border-color:#e6510059}:host.validation-summary--warning .validation-summary__collapse-toggle{color:var(--ui-validation-summary-title-warning, #e65100);border-color:#e6510059}:host.validation-summary--warning .validation-summary__collapse-toggle:hover{border-color:#e651008c}:host.validation-summary--info .validation-summary__panel{background:var(--ui-validation-summary-bg-info, #e3f2fd);border-color:var(--ui-validation-summary-border-info, #90caf9)}:host.validation-summary--info .validation-summary__title{color:var(--ui-validation-summary-title-info, #0d47a1)}:host.validation-summary--info .validation-summary__close{color:var(--ui-validation-summary-title-info, #0d47a1);border-color:#0d47a159}:host.validation-summary--info .validation-summary__collapse-toggle{color:var(--ui-validation-summary-title-info, #0d47a1);border-color:#0d47a159}:host.validation-summary--info .validation-summary__collapse-toggle:hover{border-color:#0d47a18c}:host.validation-summary--compact .validation-summary__panel{padding:.55rem .7rem}:host.validation-summary--compact .validation-summary__head{margin-bottom:.35rem}:host.validation-summary--compact .validation-summary__title{font-size:.92rem}:host.validation-summary--compact .validation-summary__list{padding-left:0}:host.validation-summary--compact .validation-summary__item{font-size:.88rem;margin:.12rem 0}:host.validation-summary--compact .validation-summary__collapse-toggle{width:1.75rem;height:1.75rem;font-size:.72rem}\n"] }]
5994
5994
  }], propDecorators: { messages: [{
@@ -6076,10 +6076,10 @@ class FormTabComponent {
6076
6076
  labelledById() {
6077
6077
  return this.tabs ? this.tabs.headerIdFor(this.key) : '';
6078
6078
  }
6079
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6080
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FormTabComponent, isStandalone: true, selector: "app-form-tab", inputs: { key: "key", tabTitle: "tabTitle", disabled: ["disabled", "disabled", booleanAttribute], warning: ["warning", "warning", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"form-tab__panel\"\r\n role=\"tabpanel\"\r\n [id]=\"panelId()\"\r\n [attr.aria-labelledby]=\"labelledById() || null\"\r\n [attr.aria-hidden]=\"!isActive\"\r\n [hidden]=\"!isActive\"\r\n [class.form-tab__panel--active]=\"isActive\"\r\n>\r\n @if (!detachInactivePanel || isActive) {\r\n <ng-content />\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host.form-tab{display:block;width:100%;box-sizing:border-box}.form-tab__panel{width:100%;min-width:0;box-sizing:border-box}:host ::ng-deep .form-tab__panel app-form-group+app-form-group{margin-top:1rem}.form-tab__panel--active{animation:form-tab-panel-in .28s ease-out}@keyframes form-tab-panel-in{0%{opacity:.72}to{opacity:1}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6079
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FormTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6080
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: FormTabComponent, isStandalone: true, selector: "app-form-tab", inputs: { key: "key", tabTitle: "tabTitle", disabled: ["disabled", "disabled", booleanAttribute], warning: ["warning", "warning", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"form-tab__panel\"\r\n role=\"tabpanel\"\r\n [id]=\"panelId()\"\r\n [attr.aria-labelledby]=\"labelledById() || null\"\r\n [attr.aria-hidden]=\"!isActive\"\r\n [hidden]=\"!isActive\"\r\n [class.form-tab__panel--active]=\"isActive\"\r\n>\r\n @if (!detachInactivePanel || isActive) {\r\n <ng-content />\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host.form-tab{display:block;width:100%;box-sizing:border-box}.form-tab__panel{width:100%;min-width:0;box-sizing:border-box}:host ::ng-deep .form-tab__panel app-form-group+app-form-group{margin-top:1rem}.form-tab__panel--active{animation:form-tab-panel-in .28s ease-out}@keyframes form-tab-panel-in{0%{opacity:.72}to{opacity:1}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6081
6081
  }
6082
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormTabComponent, decorators: [{
6082
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FormTabComponent, decorators: [{
6083
6083
  type: Component,
6084
6084
  args: [{ selector: 'app-form-tab', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"form-tab__panel\"\r\n role=\"tabpanel\"\r\n [id]=\"panelId()\"\r\n [attr.aria-labelledby]=\"labelledById() || null\"\r\n [attr.aria-hidden]=\"!isActive\"\r\n [hidden]=\"!isActive\"\r\n [class.form-tab__panel--active]=\"isActive\"\r\n>\r\n @if (!detachInactivePanel || isActive) {\r\n <ng-content />\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host.form-tab{display:block;width:100%;box-sizing:border-box}.form-tab__panel{width:100%;min-width:0;box-sizing:border-box}:host ::ng-deep .form-tab__panel app-form-group+app-form-group{margin-top:1rem}.form-tab__panel--active{animation:form-tab-panel-in .28s ease-out}@keyframes form-tab-panel-in{0%{opacity:.72}to{opacity:1}}\n"] }]
6085
6085
  }], propDecorators: { key: [{
@@ -6197,10 +6197,10 @@ class FormTabsComponent {
6197
6197
  this.refreshTabPanels();
6198
6198
  }
6199
6199
  }
6200
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6201
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FormTabsComponent, isStandalone: true, selector: "app-form-tabs", inputs: { activeKey: "activeKey", keepAlive: ["keepAlive", "keepAlive", booleanAttribute], stretch: ["stretch", "stretch", booleanAttribute], variant: "variant", tablistAriaLabel: "tablistAriaLabel" }, outputs: { activeKeyChange: "activeKeyChange" }, queries: [{ propertyName: "tabQuery", predicate: i0.forwardRef(() => FormTabComponent) }], ngImport: i0, template: "<div [class]=\"hostClass\">\n <div class=\"form-tabs__shell\">\n <div class=\"form-tabs__header-scroll\">\n <div\n class=\"form-tabs__tablist\"\n role=\"tablist\"\n [attr.aria-label]=\"tablistAriaLabel\"\n >\n @for (tab of tabs; track tab.key) {\n <button\n type=\"button\"\n class=\"form-tabs__tab\"\n role=\"tab\"\n [id]=\"headerIdFor(tab.key)\"\n [attr.aria-selected]=\"isSelected(tab.key)\"\n [attr.aria-controls]=\"panelIdFor(tab.key)\"\n [attr.tabindex]=\"isSelected(tab.key) ? 0 : -1\"\n [disabled]=\"tab.disabled\"\n [class.form-tabs__tab--active]=\"isSelected(tab.key)\"\n [class.form-tabs__tab--warn]=\"tab.warning\"\n (click)=\"selectTab(tab.key)\"\n >\n <span class=\"form-tabs__tab-label\">{{ tab.tabTitle }}</span>\n @if (tab.warning) {\n <span\n class=\"form-tabs__tab-warn-icon\"\n aria-hidden=\"true\"\n title=\"Existem erros nesta se\u00E7\u00E3o\"\n >\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n </span>\n }\n </button>\n }\n </div>\n </div>\n <div class=\"form-tabs__panels\">\n <ng-content select=\"app-form-tab\" />\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.form-tabs{display:flex;flex-direction:column;width:100%;box-sizing:border-box}.form-tabs__shell{display:flex;flex-direction:column;gap:0;width:100%;padding:.7rem .85rem .85rem;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));border-radius:16px;background:var(--app-color-surface, #fff);box-sizing:border-box;box-shadow:0 1px 4px var(--app-color-shell-shadow, rgba(26, 47, 69, .05))}.form-tabs__header-scroll{width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;box-sizing:border-box;padding:.2rem .1rem .55rem}.form-tabs__tablist{display:inline-flex;flex-wrap:nowrap;gap:.5rem;min-width:min-content;box-sizing:border-box}.form-tabs--stretch .form-tabs__tablist{width:100%}.form-tabs--stretch .form-tabs__tab{flex:1 1 0;justify-content:center}.form-tabs__tab{display:inline-flex;align-items:center;gap:.4rem;flex-shrink:0;margin:0;padding:.52rem 1rem;border:1px solid var(--app-color-tab-inactive-border, rgba(182, 204, 229, .75));border-radius:11px;background:var(--app-color-tab-inactive-bg, #f3f6f9);color:var(--app-color-tab-inactive-text, #51667a);font-size:.94rem;font-weight:500;font-family:inherit;line-height:1.25;cursor:pointer;white-space:nowrap;user-select:none;-webkit-user-select:none;transition:background .2s ease,border-color .2s ease,color .2s ease,box-shadow .2s ease}.form-tabs__tab:hover:not(:disabled):not(.form-tabs__tab--active){border-color:var(--app-color-tab-hover-border, rgba(43, 127, 217, .42));background:var(--app-color-tab-hover-bg, #eef3f8);color:var(--app-color-text-primary, #3d5266)}.form-tabs__tab:focus,.form-tabs__tab:focus-visible{outline:none}.form-tabs__tab:disabled{opacity:.55;cursor:not-allowed}.form-tabs__tab--active{border-color:var(--ui-field-float-border-focus, #2b7fd9);background:var(--app-color-surface, #fff);color:var(--ui-field-float-input-text, #0f1b28);font-weight:600;box-shadow:0 2px 8px var(--app-color-tab-shadow, rgba(43, 127, 217, .14)),0 0 0 1px var(--app-color-primary-muted, rgba(43, 127, 217, .07))}.form-tabs__tab--active:hover:not(:disabled){border-color:var(--ui-field-float-border-focus, #2b7fd9);box-shadow:0 3px 10px var(--app-color-tab-shadow, rgba(43, 127, 217, .16)),0 0 0 1px var(--app-color-primary-muted, rgba(43, 127, 217, .08))}.form-tabs__tab-label{max-width:14rem;overflow:hidden;text-overflow:ellipsis}.form-tabs__tab-warn-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-field-input-invalid-border, #b91c1c);font-size:.82rem;flex-shrink:0}.form-tabs__panels{position:relative;width:100%;min-width:0;box-sizing:border-box;margin-top:.1rem;padding-top:.75rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .06))}.form-tabs--pill .form-tabs__tab{border-radius:999px;padding-inline:1.15rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6200
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FormTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6201
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: FormTabsComponent, isStandalone: true, selector: "app-form-tabs", inputs: { activeKey: "activeKey", keepAlive: ["keepAlive", "keepAlive", booleanAttribute], stretch: ["stretch", "stretch", booleanAttribute], variant: "variant", tablistAriaLabel: "tablistAriaLabel" }, outputs: { activeKeyChange: "activeKeyChange" }, queries: [{ propertyName: "tabQuery", predicate: i0.forwardRef(() => FormTabComponent) }], ngImport: i0, template: "<div [class]=\"hostClass\">\n <div class=\"form-tabs__shell\">\n <div class=\"form-tabs__header-scroll\">\n <div\n class=\"form-tabs__tablist\"\n role=\"tablist\"\n [attr.aria-label]=\"tablistAriaLabel\"\n >\n @for (tab of tabs; track tab.key) {\n <button\n type=\"button\"\n class=\"form-tabs__tab\"\n role=\"tab\"\n [id]=\"headerIdFor(tab.key)\"\n [attr.aria-selected]=\"isSelected(tab.key)\"\n [attr.aria-controls]=\"panelIdFor(tab.key)\"\n [attr.tabindex]=\"isSelected(tab.key) ? 0 : -1\"\n [disabled]=\"tab.disabled\"\n [class.form-tabs__tab--active]=\"isSelected(tab.key)\"\n [class.form-tabs__tab--warn]=\"tab.warning\"\n (click)=\"selectTab(tab.key)\"\n >\n <span class=\"form-tabs__tab-label\">{{ tab.tabTitle }}</span>\n @if (tab.warning) {\n <span\n class=\"form-tabs__tab-warn-icon\"\n aria-hidden=\"true\"\n title=\"Existem erros nesta se\u00E7\u00E3o\"\n >\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n </span>\n }\n </button>\n }\n </div>\n </div>\n <div class=\"form-tabs__panels\">\n <ng-content select=\"app-form-tab\" />\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.form-tabs{display:flex;flex-direction:column;width:100%;box-sizing:border-box}.form-tabs__shell{display:flex;flex-direction:column;gap:0;width:100%;padding:.7rem .85rem .85rem;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));border-radius:16px;background:var(--app-color-surface, #fff);box-sizing:border-box;box-shadow:0 1px 4px var(--app-color-shell-shadow, rgba(26, 47, 69, .05))}.form-tabs__header-scroll{width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;box-sizing:border-box;padding:.2rem .1rem .55rem}.form-tabs__tablist{display:inline-flex;flex-wrap:nowrap;gap:.5rem;min-width:min-content;box-sizing:border-box}.form-tabs--stretch .form-tabs__tablist{width:100%}.form-tabs--stretch .form-tabs__tab{flex:1 1 0;justify-content:center}.form-tabs__tab{display:inline-flex;align-items:center;gap:.4rem;flex-shrink:0;margin:0;padding:.52rem 1rem;border:1px solid var(--app-color-tab-inactive-border, rgba(182, 204, 229, .75));border-radius:11px;background:var(--app-color-tab-inactive-bg, #f3f6f9);color:var(--app-color-tab-inactive-text, #51667a);font-size:.94rem;font-weight:500;font-family:inherit;line-height:1.25;cursor:pointer;white-space:nowrap;user-select:none;-webkit-user-select:none;transition:background .2s ease,border-color .2s ease,color .2s ease,box-shadow .2s ease}.form-tabs__tab:hover:not(:disabled):not(.form-tabs__tab--active){border-color:var(--app-color-tab-hover-border, rgba(43, 127, 217, .42));background:var(--app-color-tab-hover-bg, #eef3f8);color:var(--app-color-text-primary, #3d5266)}.form-tabs__tab:focus,.form-tabs__tab:focus-visible{outline:none}.form-tabs__tab:disabled{opacity:.55;cursor:not-allowed}.form-tabs__tab--active{border-color:var(--ui-field-float-border-focus, #2b7fd9);background:var(--app-color-surface, #fff);color:var(--ui-field-float-input-text, #0f1b28);font-weight:600;box-shadow:0 2px 8px var(--app-color-tab-shadow, rgba(43, 127, 217, .14)),0 0 0 1px var(--app-color-primary-muted, rgba(43, 127, 217, .07))}.form-tabs__tab--active:hover:not(:disabled){border-color:var(--ui-field-float-border-focus, #2b7fd9);box-shadow:0 3px 10px var(--app-color-tab-shadow, rgba(43, 127, 217, .16)),0 0 0 1px var(--app-color-primary-muted, rgba(43, 127, 217, .08))}.form-tabs__tab-label{max-width:14rem;overflow:hidden;text-overflow:ellipsis}.form-tabs__tab-warn-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-field-input-invalid-border, #b91c1c);font-size:.82rem;flex-shrink:0}.form-tabs__panels{position:relative;width:100%;min-width:0;box-sizing:border-box;margin-top:.1rem;padding-top:.75rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .06))}.form-tabs--pill .form-tabs__tab{border-radius:999px;padding-inline:1.15rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6202
6202
  }
6203
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormTabsComponent, decorators: [{
6203
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FormTabsComponent, decorators: [{
6204
6204
  type: Component,
6205
6205
  args: [{ selector: 'app-form-tabs', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"hostClass\">\n <div class=\"form-tabs__shell\">\n <div class=\"form-tabs__header-scroll\">\n <div\n class=\"form-tabs__tablist\"\n role=\"tablist\"\n [attr.aria-label]=\"tablistAriaLabel\"\n >\n @for (tab of tabs; track tab.key) {\n <button\n type=\"button\"\n class=\"form-tabs__tab\"\n role=\"tab\"\n [id]=\"headerIdFor(tab.key)\"\n [attr.aria-selected]=\"isSelected(tab.key)\"\n [attr.aria-controls]=\"panelIdFor(tab.key)\"\n [attr.tabindex]=\"isSelected(tab.key) ? 0 : -1\"\n [disabled]=\"tab.disabled\"\n [class.form-tabs__tab--active]=\"isSelected(tab.key)\"\n [class.form-tabs__tab--warn]=\"tab.warning\"\n (click)=\"selectTab(tab.key)\"\n >\n <span class=\"form-tabs__tab-label\">{{ tab.tabTitle }}</span>\n @if (tab.warning) {\n <span\n class=\"form-tabs__tab-warn-icon\"\n aria-hidden=\"true\"\n title=\"Existem erros nesta se\u00E7\u00E3o\"\n >\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n </span>\n }\n </button>\n }\n </div>\n </div>\n <div class=\"form-tabs__panels\">\n <ng-content select=\"app-form-tab\" />\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.form-tabs{display:flex;flex-direction:column;width:100%;box-sizing:border-box}.form-tabs__shell{display:flex;flex-direction:column;gap:0;width:100%;padding:.7rem .85rem .85rem;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));border-radius:16px;background:var(--app-color-surface, #fff);box-sizing:border-box;box-shadow:0 1px 4px var(--app-color-shell-shadow, rgba(26, 47, 69, .05))}.form-tabs__header-scroll{width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;box-sizing:border-box;padding:.2rem .1rem .55rem}.form-tabs__tablist{display:inline-flex;flex-wrap:nowrap;gap:.5rem;min-width:min-content;box-sizing:border-box}.form-tabs--stretch .form-tabs__tablist{width:100%}.form-tabs--stretch .form-tabs__tab{flex:1 1 0;justify-content:center}.form-tabs__tab{display:inline-flex;align-items:center;gap:.4rem;flex-shrink:0;margin:0;padding:.52rem 1rem;border:1px solid var(--app-color-tab-inactive-border, rgba(182, 204, 229, .75));border-radius:11px;background:var(--app-color-tab-inactive-bg, #f3f6f9);color:var(--app-color-tab-inactive-text, #51667a);font-size:.94rem;font-weight:500;font-family:inherit;line-height:1.25;cursor:pointer;white-space:nowrap;user-select:none;-webkit-user-select:none;transition:background .2s ease,border-color .2s ease,color .2s ease,box-shadow .2s ease}.form-tabs__tab:hover:not(:disabled):not(.form-tabs__tab--active){border-color:var(--app-color-tab-hover-border, rgba(43, 127, 217, .42));background:var(--app-color-tab-hover-bg, #eef3f8);color:var(--app-color-text-primary, #3d5266)}.form-tabs__tab:focus,.form-tabs__tab:focus-visible{outline:none}.form-tabs__tab:disabled{opacity:.55;cursor:not-allowed}.form-tabs__tab--active{border-color:var(--ui-field-float-border-focus, #2b7fd9);background:var(--app-color-surface, #fff);color:var(--ui-field-float-input-text, #0f1b28);font-weight:600;box-shadow:0 2px 8px var(--app-color-tab-shadow, rgba(43, 127, 217, .14)),0 0 0 1px var(--app-color-primary-muted, rgba(43, 127, 217, .07))}.form-tabs__tab--active:hover:not(:disabled){border-color:var(--ui-field-float-border-focus, #2b7fd9);box-shadow:0 3px 10px var(--app-color-tab-shadow, rgba(43, 127, 217, .16)),0 0 0 1px var(--app-color-primary-muted, rgba(43, 127, 217, .08))}.form-tabs__tab-label{max-width:14rem;overflow:hidden;text-overflow:ellipsis}.form-tabs__tab-warn-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-field-input-invalid-border, #b91c1c);font-size:.82rem;flex-shrink:0}.form-tabs__panels{position:relative;width:100%;min-width:0;box-sizing:border-box;margin-top:.1rem;padding-top:.75rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .06))}.form-tabs--pill .form-tabs__tab{border-radius:999px;padding-inline:1.15rem}\n"] }]
6206
6206
  }], propDecorators: { tabQuery: [{
@@ -6272,10 +6272,10 @@ class DataGridActionsCellRendererComponent {
6272
6272
  ctx.onRemoveRow(row);
6273
6273
  }
6274
6274
  }
6275
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataGridActionsCellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6276
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DataGridActionsCellRendererComponent, isStandalone: true, selector: "app-data-grid-actions-cell-renderer", ngImport: i0, template: "<div class=\"data-grid-actions\">\r\n <button\r\n type=\"button\"\r\n class=\"data-grid-actions__icon-btn\"\r\n title=\"Editar\"\r\n aria-label=\"Editar\"\r\n (click)=\"edit()\"\r\n >\r\n <span class=\"fa-solid fa-arrows-rotate\" aria-hidden=\"true\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"data-grid-actions__icon-btn data-grid-actions__icon-btn--danger\"\r\n title=\"Remover\"\r\n aria-label=\"Remover\"\r\n (click)=\"remove()\"\r\n >\r\n <span class=\"fa-solid fa-trash-can\" aria-hidden=\"true\"></span>\r\n </button>\r\n</div>\r\n", styles: [".data-grid-actions{display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:.35rem;padding:.1rem 0}.data-grid-actions__icon-btn{display:inline-flex;align-items:center;justify-content:center;margin:0;width:2rem;min-width:2rem;height:2rem;padding:0;border:1px solid rgba(43,127,217,.45);border-radius:6px;background:#fff;color:var(--ui-field-float-border-focus, #2b7fd9);font-size:.95rem;line-height:1;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,border-color .15s ease,color .15s ease}.data-grid-actions__icon-btn:hover{background:#2b7fd914}.data-grid-actions__icon-btn:focus-visible{outline:2px solid var(--ui-field-float-border-focus, #2b7fd9);outline-offset:2px}.data-grid-actions__icon-btn--danger{border-color:#b71c1c73;color:var(--ui-field-input-invalid-border, #b91c1c)}.data-grid-actions__icon-btn--danger:hover{background:#b71c1c0f}.data-grid-actions__icon-btn--danger:focus-visible{outline-color:var(--ui-field-input-invalid-border, #b91c1c)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6275
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DataGridActionsCellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6276
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: DataGridActionsCellRendererComponent, isStandalone: true, selector: "app-data-grid-actions-cell-renderer", ngImport: i0, template: "<div class=\"data-grid-actions\">\r\n <button\r\n type=\"button\"\r\n class=\"data-grid-actions__icon-btn\"\r\n title=\"Editar\"\r\n aria-label=\"Editar\"\r\n (click)=\"edit()\"\r\n >\r\n <span class=\"fa-solid fa-arrows-rotate\" aria-hidden=\"true\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"data-grid-actions__icon-btn data-grid-actions__icon-btn--danger\"\r\n title=\"Remover\"\r\n aria-label=\"Remover\"\r\n (click)=\"remove()\"\r\n >\r\n <span class=\"fa-solid fa-trash-can\" aria-hidden=\"true\"></span>\r\n </button>\r\n</div>\r\n", styles: [".data-grid-actions{display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:.35rem;padding:.1rem 0}.data-grid-actions__icon-btn{display:inline-flex;align-items:center;justify-content:center;margin:0;width:2rem;min-width:2rem;height:2rem;padding:0;border:1px solid rgba(43,127,217,.45);border-radius:6px;background:#fff;color:var(--ui-field-float-border-focus, #2b7fd9);font-size:.95rem;line-height:1;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,border-color .15s ease,color .15s ease}.data-grid-actions__icon-btn:hover{background:#2b7fd914}.data-grid-actions__icon-btn:focus-visible{outline:2px solid var(--ui-field-float-border-focus, #2b7fd9);outline-offset:2px}.data-grid-actions__icon-btn--danger{border-color:#b71c1c73;color:var(--ui-field-input-invalid-border, #b91c1c)}.data-grid-actions__icon-btn--danger:hover{background:#b71c1c0f}.data-grid-actions__icon-btn--danger:focus-visible{outline-color:var(--ui-field-input-invalid-border, #b91c1c)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6277
6277
  }
6278
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataGridActionsCellRendererComponent, decorators: [{
6278
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DataGridActionsCellRendererComponent, decorators: [{
6279
6279
  type: Component,
6280
6280
  args: [{ selector: 'app-data-grid-actions-cell-renderer', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"data-grid-actions\">\r\n <button\r\n type=\"button\"\r\n class=\"data-grid-actions__icon-btn\"\r\n title=\"Editar\"\r\n aria-label=\"Editar\"\r\n (click)=\"edit()\"\r\n >\r\n <span class=\"fa-solid fa-arrows-rotate\" aria-hidden=\"true\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"data-grid-actions__icon-btn data-grid-actions__icon-btn--danger\"\r\n title=\"Remover\"\r\n aria-label=\"Remover\"\r\n (click)=\"remove()\"\r\n >\r\n <span class=\"fa-solid fa-trash-can\" aria-hidden=\"true\"></span>\r\n </button>\r\n</div>\r\n", styles: [".data-grid-actions{display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:.35rem;padding:.1rem 0}.data-grid-actions__icon-btn{display:inline-flex;align-items:center;justify-content:center;margin:0;width:2rem;min-width:2rem;height:2rem;padding:0;border:1px solid rgba(43,127,217,.45);border-radius:6px;background:#fff;color:var(--ui-field-float-border-focus, #2b7fd9);font-size:.95rem;line-height:1;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,border-color .15s ease,color .15s ease}.data-grid-actions__icon-btn:hover{background:#2b7fd914}.data-grid-actions__icon-btn:focus-visible{outline:2px solid var(--ui-field-float-border-focus, #2b7fd9);outline-offset:2px}.data-grid-actions__icon-btn--danger{border-color:#b71c1c73;color:var(--ui-field-input-invalid-border, #b91c1c)}.data-grid-actions__icon-btn--danger:hover{background:#b71c1c0f}.data-grid-actions__icon-btn--danger:focus-visible{outline-color:var(--ui-field-input-invalid-border, #b91c1c)}\n"] }]
6281
6281
  }] });
@@ -6490,12 +6490,12 @@ class DataGridComponent {
6490
6490
  return def;
6491
6491
  });
6492
6492
  }
6493
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6494
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DataGridComponent, isStandalone: true, selector: "app-data-grid", inputs: { rows: "rows", columns: "columns", pageSize: "pageSize", loading: "loading", initialPaginationPage: ["initialPaginationPage", "initialPaginationPage", numberAttribute], height: "height", emptyMessage: "emptyMessage", pagination: "pagination", showActionsColumn: "showActionsColumn" }, outputs: { edit: "edit", remove: "remove", selectionChange: "selectionChange", paginationChanged: "paginationChanged" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"data-grid ag-theme-alpine\" [style.height]=\"hostHeight\">\n @if (loading) {\n <div class=\"data-grid__skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\n <span class=\"visually-hidden\">A carregar grid...</span>\n <app-skeleton-table [columnCount]=\"skeletonColumnCount\" [rowCount]=\"skeletonRowCount\" [showPager]=\"pagination\" />\n </div>\n } @else {\n <ag-grid-angular\n class=\"data-grid__ag\"\n [rowData]=\"rows\"\n [columnDefs]=\"agColumnDefs\"\n [components]=\"frameworkComponents\"\n [context]=\"actionsContext\"\n [defaultColDef]=\"defaultColDef\"\n [pagination]=\"pagination\"\n [paginationPageSize]=\"pageSize\"\n [paginationPageSizeSelector]=\"effectivePaginationPageSizeSelector\"\n [suppressCellFocus]=\"true\"\n [animateRows]=\"false\"\n [domLayout]=\"'normal'\"\n [overlayNoRowsTemplate]=\"emptyOverlayTemplate\"\n [getRowId]=\"getRowId\"\n (gridReady)=\"onGridReady($event)\"\n />\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.data-grid{width:100%;min-width:0;min-height:200px;box-sizing:border-box;border-radius:10px;overflow:hidden;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-surface, #fff)}.data-grid__ag{display:block;width:100%;height:100%}.data-grid__skeleton{display:flex;flex-direction:column;width:100%;height:100%;min-height:0;box-sizing:border-box}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:host ::ng-deep .data-grid.ag-theme-alpine{--ag-border-color: var(--app-color-border-subtle, rgba(26, 47, 69, .12));--ag-header-background-color: var(--app-color-tab-inactive-bg, #f3f6f9);--ag-odd-row-background-color: var(--app-color-background, #fafbfc);--ag-row-hover-color: var(--app-color-hover-bg, rgba(43, 127, 217, .06));--ag-font-size: .9rem;--ag-header-height: 40px;--ag-row-height: 40px;--ag-border-radius: 0;--ag-wrapper-border-radius: 10px;--ag-selected-row-background-color: var(--app-color-selected-bg, rgba(43, 127, 217, .1));--ag-checkbox-unchecked-color: var(--app-color-text-muted, rgba(26, 47, 69, .35));--ag-range-selection-border-color: var(--ui-field-float-border-focus, #2b7fd9);font-family:inherit;color:var(--ui-field-float-input-text, #0f1b28)}:host ::ng-deep .data-grid.ag-theme-alpine .ag-header-cell-label{font-weight:600;font-size:.85rem;color:var(--app-color-text-primary, #3d5266)}:host ::ng-deep .data-grid.ag-theme-alpine .ag-paging-panel{border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));font-size:.85rem;color:var(--app-color-tab-inactive-text, #51667a)}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;min-height:5.5rem;padding:1.25rem 1rem;border-radius:10px;border:1px dashed var(--app-color-empty-border, rgba(26, 47, 69, .14));background:var(--app-color-empty-bg, rgba(243, 246, 249, .55));color:var(--app-color-tab-inactive-text, #51667a);font-size:.9rem;text-align:center;line-height:1.4}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state.empty-state--embed{min-height:4.5rem;padding:1rem .75rem}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__icon{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:50%;font-size:1rem;color:var(--app-color-text-secondary, rgba(61, 82, 102, .85));background:var(--app-color-skeleton-track, rgba(26, 47, 69, .06));border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08))}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__message{margin:0;max-width:28rem;font-size:.9rem;font-weight:500;color:var(--app-color-tab-inactive-text, #51667a)}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__description{margin:0;max-width:28rem;font-size:.8rem;color:var(--app-color-text-muted, #6b8299)}\n"], dependencies: [{ kind: "component", type: AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "components", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "excludeHiddenColumnsFromQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "advancedFilterModel", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "suppressAdvancedFilterEval", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "suppressChartToolPanelsButton", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDuration", "cellFlashDelay", "cellFadeDuration", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "suppressGroupMaintainValueType", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideInfiniteScroll", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "functionsPassive", "enableGroupEdit", "initialState", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "advancedFilterBuilderVisibleChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "gridPreDestroyed", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "component", type: SkeletonTableComponent, selector: "app-skeleton-table", inputs: ["columnCount", "rowCount", "showPager", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6493
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DataGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6494
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DataGridComponent, isStandalone: true, selector: "app-data-grid", inputs: { rows: "rows", columns: "columns", pageSize: "pageSize", loading: "loading", initialPaginationPage: ["initialPaginationPage", "initialPaginationPage", numberAttribute], height: "height", emptyMessage: "emptyMessage", pagination: "pagination", showActionsColumn: "showActionsColumn" }, outputs: { edit: "edit", remove: "remove", selectionChange: "selectionChange", paginationChanged: "paginationChanged" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"data-grid ag-theme-alpine\" [style.height]=\"hostHeight\">\n @if (loading) {\n <div class=\"data-grid__skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\n <span class=\"visually-hidden\">A carregar grid...</span>\n <app-skeleton-table [columnCount]=\"skeletonColumnCount\" [rowCount]=\"skeletonRowCount\" [showPager]=\"pagination\" />\n </div>\n } @else {\n <ag-grid-angular\n class=\"data-grid__ag\"\n [rowData]=\"rows\"\n [columnDefs]=\"agColumnDefs\"\n [components]=\"frameworkComponents\"\n [context]=\"actionsContext\"\n [defaultColDef]=\"defaultColDef\"\n [pagination]=\"pagination\"\n [paginationPageSize]=\"pageSize\"\n [paginationPageSizeSelector]=\"effectivePaginationPageSizeSelector\"\n [suppressCellFocus]=\"true\"\n [animateRows]=\"false\"\n [domLayout]=\"'normal'\"\n [overlayNoRowsTemplate]=\"emptyOverlayTemplate\"\n [getRowId]=\"getRowId\"\n (gridReady)=\"onGridReady($event)\"\n />\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.data-grid{width:100%;min-width:0;min-height:200px;box-sizing:border-box;border-radius:10px;overflow:hidden;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-surface, #fff)}.data-grid__ag{display:block;width:100%;height:100%}.data-grid__skeleton{display:flex;flex-direction:column;width:100%;height:100%;min-height:0;box-sizing:border-box}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:host ::ng-deep .data-grid.ag-theme-alpine{--ag-border-color: var(--app-color-border-subtle, rgba(26, 47, 69, .12));--ag-header-background-color: var(--app-color-tab-inactive-bg, #f3f6f9);--ag-odd-row-background-color: var(--app-color-background, #fafbfc);--ag-row-hover-color: var(--app-color-hover-bg, rgba(43, 127, 217, .06));--ag-font-size: .9rem;--ag-header-height: 40px;--ag-row-height: 40px;--ag-border-radius: 0;--ag-wrapper-border-radius: 10px;--ag-selected-row-background-color: var(--app-color-selected-bg, rgba(43, 127, 217, .1));--ag-checkbox-unchecked-color: var(--app-color-text-muted, rgba(26, 47, 69, .35));--ag-range-selection-border-color: var(--ui-field-float-border-focus, #2b7fd9);font-family:inherit;color:var(--ui-field-float-input-text, #0f1b28)}:host ::ng-deep .data-grid.ag-theme-alpine .ag-header-cell-label{font-weight:600;font-size:.85rem;color:var(--app-color-text-primary, #3d5266)}:host ::ng-deep .data-grid.ag-theme-alpine .ag-paging-panel{border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));font-size:.85rem;color:var(--app-color-tab-inactive-text, #51667a)}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;min-height:5.5rem;padding:1.25rem 1rem;border-radius:10px;border:1px dashed var(--app-color-empty-border, rgba(26, 47, 69, .14));background:var(--app-color-empty-bg, rgba(243, 246, 249, .55));color:var(--app-color-tab-inactive-text, #51667a);font-size:.9rem;text-align:center;line-height:1.4}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state.empty-state--embed{min-height:4.5rem;padding:1rem .75rem}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__icon{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:50%;font-size:1rem;color:var(--app-color-text-secondary, rgba(61, 82, 102, .85));background:var(--app-color-skeleton-track, rgba(26, 47, 69, .06));border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08))}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__message{margin:0;max-width:28rem;font-size:.9rem;font-weight:500;color:var(--app-color-tab-inactive-text, #51667a)}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__description{margin:0;max-width:28rem;font-size:.8rem;color:var(--app-color-text-muted, #6b8299)}\n"], dependencies: [{ kind: "component", type: AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipSwitchShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "enableStrictPivotColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "hidePaddedHeaderRows", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressMoveWhenColumnDragging", "suppressDragLeaveHidesColumns", "suppressGroupChangesColumnVisibility", "suppressMakeColumnVisibleAfterUnGroup", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "animateColumnResizing", "components", "editType", "suppressStartEditOnTab", "getFullRowEditValidationErrors", "invalidEditValueMode", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "findSearchValue", "findOptions", "quickFilterText", "cacheQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "alwaysPassFilter", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "advancedFilterParams", "suppressAdvancedFilterEval", "suppressSetFilterByDefault", "enableFilterHandlers", "filterHandlers", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressTouch", "suppressFocusAfterRefresh", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "loading", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "suppressOverlays", "overlayComponent", "overlayComponentParams", "overlayComponentSelector", "activeOverlay", "activeOverlayParams", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "formulaDataSource", "formulaFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "cellFlashDuration", "cellFadeDuration", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableCellSpan", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "refreshAfterGroupEdit", "rowDragInsertDelay", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "dragAndDropImageComponent", "dragAndDropImageComponentParams", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupHideParentOfSingleChild", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupHideColumnsUntilExpanded", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "treeData", "treeDataChildrenField", "treeDataParentIdField", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "groupHierarchyConfig", "pinnedTopRowData", "pinnedBottomRowData", "enableRowPinning", "isRowPinnable", "isRowPinned", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "cellSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "selectionColumnDef", "rowNumbers", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "enableGroupEdit", "initialState", "theme", "loadThemeGoogleFonts", "themeCssLayer", "styleNonce", "themeStyleContainer", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "focusGridInnerElement", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "tabToNextGridContainer", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "ssrmExpandAllAffectsAllRows", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow", "isRowValidDropPosition"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnsReset", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "bulkEditingStarted", "bulkEditingStopped", "batchEditingStarted", "batchEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "cellSelectionDeleteStart", "cellSelectionDeleteEnd", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "filterUiChanged", "floatingFilterUiChanged", "advancedFilterBuilderVisibleChanged", "findChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "dragCancelled", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "rowDragCancel", "rowResizeStarted", "rowResizeEnded", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "pinnedRowsChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "headerFocused", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "cellSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged"] }, { kind: "component", type: SkeletonTableComponent, selector: "app-skeleton-table", inputs: ["columnCount", "rowCount", "showPager", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6495
6495
  }
6496
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataGridComponent, decorators: [{
6496
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DataGridComponent, decorators: [{
6497
6497
  type: Component,
6498
- args: [{ selector: 'app-data-grid', standalone: true, imports: [AgGridAngular, SkeletonTableComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"data-grid ag-theme-alpine\" [style.height]=\"hostHeight\">\n @if (loading) {\n <div class=\"data-grid__skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\n <span class=\"visually-hidden\">A carregar grid...</span>\n <app-skeleton-table [columnCount]=\"skeletonColumnCount\" [rowCount]=\"skeletonRowCount\" [showPager]=\"pagination\" />\n </div>\n } @else {\n <ag-grid-angular\n class=\"data-grid__ag\"\n [rowData]=\"rows\"\n [columnDefs]=\"agColumnDefs\"\n [components]=\"frameworkComponents\"\n [context]=\"actionsContext\"\n [defaultColDef]=\"defaultColDef\"\n [pagination]=\"pagination\"\n [paginationPageSize]=\"pageSize\"\n [paginationPageSizeSelector]=\"effectivePaginationPageSizeSelector\"\n [suppressCellFocus]=\"true\"\n [animateRows]=\"false\"\n [domLayout]=\"'normal'\"\n [overlayNoRowsTemplate]=\"emptyOverlayTemplate\"\n [getRowId]=\"getRowId\"\n (gridReady)=\"onGridReady($event)\"\n />\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.data-grid{width:100%;min-width:0;min-height:200px;box-sizing:border-box;border-radius:10px;overflow:hidden;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-surface, #fff)}.data-grid__ag{display:block;width:100%;height:100%}.data-grid__skeleton{display:flex;flex-direction:column;width:100%;height:100%;min-height:0;box-sizing:border-box}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:host ::ng-deep .data-grid.ag-theme-alpine{--ag-border-color: var(--app-color-border-subtle, rgba(26, 47, 69, .12));--ag-header-background-color: var(--app-color-tab-inactive-bg, #f3f6f9);--ag-odd-row-background-color: var(--app-color-background, #fafbfc);--ag-row-hover-color: var(--app-color-hover-bg, rgba(43, 127, 217, .06));--ag-font-size: .9rem;--ag-header-height: 40px;--ag-row-height: 40px;--ag-border-radius: 0;--ag-wrapper-border-radius: 10px;--ag-selected-row-background-color: var(--app-color-selected-bg, rgba(43, 127, 217, .1));--ag-checkbox-unchecked-color: var(--app-color-text-muted, rgba(26, 47, 69, .35));--ag-range-selection-border-color: var(--ui-field-float-border-focus, #2b7fd9);font-family:inherit;color:var(--ui-field-float-input-text, #0f1b28)}:host ::ng-deep .data-grid.ag-theme-alpine .ag-header-cell-label{font-weight:600;font-size:.85rem;color:var(--app-color-text-primary, #3d5266)}:host ::ng-deep .data-grid.ag-theme-alpine .ag-paging-panel{border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));font-size:.85rem;color:var(--app-color-tab-inactive-text, #51667a)}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;min-height:5.5rem;padding:1.25rem 1rem;border-radius:10px;border:1px dashed var(--app-color-empty-border, rgba(26, 47, 69, .14));background:var(--app-color-empty-bg, rgba(243, 246, 249, .55));color:var(--app-color-tab-inactive-text, #51667a);font-size:.9rem;text-align:center;line-height:1.4}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state.empty-state--embed{min-height:4.5rem;padding:1rem .75rem}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__icon{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:50%;font-size:1rem;color:var(--app-color-text-secondary, rgba(61, 82, 102, .85));background:var(--app-color-skeleton-track, rgba(26, 47, 69, .06));border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08))}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__message{margin:0;max-width:28rem;font-size:.9rem;font-weight:500;color:var(--app-color-tab-inactive-text, #51667a)}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__description{margin:0;max-width:28rem;font-size:.8rem;color:var(--app-color-text-muted, #6b8299)}\n"] }]
6498
+ args: [{ selector: 'app-data-grid', imports: [AgGridAngular, SkeletonTableComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"data-grid ag-theme-alpine\" [style.height]=\"hostHeight\">\n @if (loading) {\n <div class=\"data-grid__skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\n <span class=\"visually-hidden\">A carregar grid...</span>\n <app-skeleton-table [columnCount]=\"skeletonColumnCount\" [rowCount]=\"skeletonRowCount\" [showPager]=\"pagination\" />\n </div>\n } @else {\n <ag-grid-angular\n class=\"data-grid__ag\"\n [rowData]=\"rows\"\n [columnDefs]=\"agColumnDefs\"\n [components]=\"frameworkComponents\"\n [context]=\"actionsContext\"\n [defaultColDef]=\"defaultColDef\"\n [pagination]=\"pagination\"\n [paginationPageSize]=\"pageSize\"\n [paginationPageSizeSelector]=\"effectivePaginationPageSizeSelector\"\n [suppressCellFocus]=\"true\"\n [animateRows]=\"false\"\n [domLayout]=\"'normal'\"\n [overlayNoRowsTemplate]=\"emptyOverlayTemplate\"\n [getRowId]=\"getRowId\"\n (gridReady)=\"onGridReady($event)\"\n />\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.data-grid{width:100%;min-width:0;min-height:200px;box-sizing:border-box;border-radius:10px;overflow:hidden;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-surface, #fff)}.data-grid__ag{display:block;width:100%;height:100%}.data-grid__skeleton{display:flex;flex-direction:column;width:100%;height:100%;min-height:0;box-sizing:border-box}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:host ::ng-deep .data-grid.ag-theme-alpine{--ag-border-color: var(--app-color-border-subtle, rgba(26, 47, 69, .12));--ag-header-background-color: var(--app-color-tab-inactive-bg, #f3f6f9);--ag-odd-row-background-color: var(--app-color-background, #fafbfc);--ag-row-hover-color: var(--app-color-hover-bg, rgba(43, 127, 217, .06));--ag-font-size: .9rem;--ag-header-height: 40px;--ag-row-height: 40px;--ag-border-radius: 0;--ag-wrapper-border-radius: 10px;--ag-selected-row-background-color: var(--app-color-selected-bg, rgba(43, 127, 217, .1));--ag-checkbox-unchecked-color: var(--app-color-text-muted, rgba(26, 47, 69, .35));--ag-range-selection-border-color: var(--ui-field-float-border-focus, #2b7fd9);font-family:inherit;color:var(--ui-field-float-input-text, #0f1b28)}:host ::ng-deep .data-grid.ag-theme-alpine .ag-header-cell-label{font-weight:600;font-size:.85rem;color:var(--app-color-text-primary, #3d5266)}:host ::ng-deep .data-grid.ag-theme-alpine .ag-paging-panel{border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));font-size:.85rem;color:var(--app-color-tab-inactive-text, #51667a)}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;min-height:5.5rem;padding:1.25rem 1rem;border-radius:10px;border:1px dashed var(--app-color-empty-border, rgba(26, 47, 69, .14));background:var(--app-color-empty-bg, rgba(243, 246, 249, .55));color:var(--app-color-tab-inactive-text, #51667a);font-size:.9rem;text-align:center;line-height:1.4}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state.empty-state--embed{min-height:4.5rem;padding:1rem .75rem}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__icon{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:50%;font-size:1rem;color:var(--app-color-text-secondary, rgba(61, 82, 102, .85));background:var(--app-color-skeleton-track, rgba(26, 47, 69, .06));border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08))}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__message{margin:0;max-width:28rem;font-size:.9rem;font-weight:500;color:var(--app-color-tab-inactive-text, #51667a)}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__description{margin:0;max-width:28rem;font-size:.8rem;color:var(--app-color-text-muted, #6b8299)}\n"] }]
6499
6499
  }], propDecorators: { rows: [{
6500
6500
  type: Input,
6501
6501
  args: [{ required: true }]
@@ -6529,12 +6529,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
6529
6529
 
6530
6530
  /** Barra de consulta: pesquisa, filtros, ações e contador (slots `toolbar-start` / `toolbar-end`). */
6531
6531
  class DataToolbarComponent {
6532
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6533
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DataToolbarComponent, isStandalone: true, selector: "app-data-toolbar", ngImport: i0, template: "<div class=\"data-toolbar\">\r\n <div class=\"data-toolbar__start\">\r\n <ng-content select=\"[toolbar-start]\"></ng-content>\r\n </div>\r\n <div class=\"data-toolbar__end\">\r\n <ng-content select=\"[toolbar-end]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0}.data-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:flex-start;gap:.65rem .75rem;width:100%;min-width:0;box-sizing:border-box}.data-toolbar__start,.data-toolbar__end{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem .75rem;min-width:0}.data-toolbar__start{flex:1 1 auto;min-width:0}.data-toolbar__end{flex:0 1 auto;justify-content:flex-end}.data-toolbar__end:not(:empty){margin-left:auto}@media (max-width: 39.98rem){.data-toolbar{flex-direction:column;align-items:stretch}.data-toolbar__end{justify-content:flex-start}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6532
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DataToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6533
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: DataToolbarComponent, isStandalone: true, selector: "app-data-toolbar", ngImport: i0, template: "<div class=\"data-toolbar\">\r\n <div class=\"data-toolbar__start\">\r\n <ng-content select=\"[toolbar-start]\"></ng-content>\r\n </div>\r\n <div class=\"data-toolbar__end\">\r\n <ng-content select=\"[toolbar-end]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0}.data-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:flex-start;gap:.65rem .75rem;width:100%;min-width:0;box-sizing:border-box}.data-toolbar__start,.data-toolbar__end{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem .75rem;min-width:0}.data-toolbar__start{flex:1 1 auto;min-width:0}.data-toolbar__end{flex:0 1 auto;justify-content:flex-end}.data-toolbar__end:not(:empty){margin-left:auto}@media(max-width:39.98rem){.data-toolbar{flex-direction:column;align-items:stretch}.data-toolbar__end{justify-content:flex-start}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6534
6534
  }
6535
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataToolbarComponent, decorators: [{
6535
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DataToolbarComponent, decorators: [{
6536
6536
  type: Component,
6537
- args: [{ selector: 'app-data-toolbar', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"data-toolbar\">\r\n <div class=\"data-toolbar__start\">\r\n <ng-content select=\"[toolbar-start]\"></ng-content>\r\n </div>\r\n <div class=\"data-toolbar__end\">\r\n <ng-content select=\"[toolbar-end]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0}.data-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:flex-start;gap:.65rem .75rem;width:100%;min-width:0;box-sizing:border-box}.data-toolbar__start,.data-toolbar__end{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem .75rem;min-width:0}.data-toolbar__start{flex:1 1 auto;min-width:0}.data-toolbar__end{flex:0 1 auto;justify-content:flex-end}.data-toolbar__end:not(:empty){margin-left:auto}@media (max-width: 39.98rem){.data-toolbar{flex-direction:column;align-items:stretch}.data-toolbar__end{justify-content:flex-start}}\n"] }]
6537
+ args: [{ selector: 'app-data-toolbar', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"data-toolbar\">\r\n <div class=\"data-toolbar__start\">\r\n <ng-content select=\"[toolbar-start]\"></ng-content>\r\n </div>\r\n <div class=\"data-toolbar__end\">\r\n <ng-content select=\"[toolbar-end]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0}.data-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:flex-start;gap:.65rem .75rem;width:100%;min-width:0;box-sizing:border-box}.data-toolbar__start,.data-toolbar__end{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem .75rem;min-width:0}.data-toolbar__start{flex:1 1 auto;min-width:0}.data-toolbar__end{flex:0 1 auto;justify-content:flex-end}.data-toolbar__end:not(:empty){margin-left:auto}@media(max-width:39.98rem){.data-toolbar{flex-direction:column;align-items:stretch}.data-toolbar__end{justify-content:flex-start}}\n"] }]
6538
6538
  }] });
6539
6539
 
6540
6540
  class DataCardComponent {
@@ -6552,10 +6552,10 @@ class DataCardComponent {
6552
6552
  ev.stopPropagation();
6553
6553
  this.remove.emit();
6554
6554
  }
6555
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6556
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DataCardComponent, isStandalone: true, selector: "app-data-card", inputs: { title: "title", subtitle: "subtitle", avatarText: "avatarText", variant: "variant", showActions: "showActions" }, outputs: { edit: "edit", remove: "remove" }, ngImport: i0, template: "<article\r\n class=\"data-card\"\r\n [class.data-card--default]=\"variant === 'default'\"\r\n [attr.data-variant]=\"variant\"\r\n>\r\n <div class=\"data-card__row\">\r\n <div class=\"data-card__main\">\r\n @if (avatarText?.trim()) {\r\n <div class=\"data-card__avatar\" aria-hidden=\"true\">\r\n {{ avatarText!.trim().slice(0, 2) }}\r\n </div>\r\n }\r\n <div class=\"data-card__text\">\r\n <h4 class=\"data-card__title\">{{ title }}</h4>\r\n @if (subtitle?.trim()) {\r\n <p class=\"data-card__subtitle\">{{ subtitle }}</p>\r\n }\r\n </div>\r\n </div>\r\n @if (showActions) {\r\n <div class=\"data-card__actions\">\r\n <button\r\n type=\"button\"\r\n class=\"data-card__icon-btn\"\r\n title=\"Editar\"\r\n aria-label=\"Editar\"\r\n (click)=\"onEditClick($event)\"\r\n >\r\n <span class=\"fa-solid fa-arrows-rotate\" aria-hidden=\"true\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"data-card__icon-btn data-card__icon-btn--danger\"\r\n title=\"Remover\"\r\n aria-label=\"Remover\"\r\n (click)=\"onRemoveClick($event)\"\r\n >\r\n <span class=\"fa-solid fa-trash-can\" aria-hidden=\"true\"></span>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n</article>\r\n", styles: [":host{display:block;min-width:0}.data-card{box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1));background:var(--app-color-surface, #fff);padding:.85rem 1rem;transition:border-color .15s ease,box-shadow .15s ease}.data-card--default:hover{border-color:var(--app-color-selected-border, rgba(43, 127, 217, .28));box-shadow:0 1px 0 var(--app-color-border-subtle, rgba(26, 47, 69, .04))}.data-card__row{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.data-card__main{display:flex;align-items:flex-start;gap:.65rem;min-width:0;flex:1}.data-card__avatar{flex-shrink:0;width:2.35rem;height:2.35rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;letter-spacing:.02em;color:var(--app-color-text-primary, #2a4a66);background:linear-gradient(145deg,var(--app-color-avatar-gradient-start, rgba(43, 127, 217, .14)),var(--app-color-avatar-gradient-end, rgba(26, 47, 69, .06)));border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));text-transform:uppercase}.data-card__text{min-width:0}.data-card__title{margin:0;font-size:.95rem;font-weight:600;line-height:1.3;color:var(--ui-field-float-input-text, #0f1b28);word-break:break-word}.data-card__subtitle{margin:.2rem 0 0;font-size:.8rem;line-height:1.35;color:var(--app-color-text-muted, #5a6e82)}.data-card__actions{display:flex;flex-shrink:0;align-items:center;gap:.35rem}.data-card__icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;min-width:2rem;height:2rem;margin:0;padding:0;border:1px solid rgba(43,127,217,.45);border-radius:6px;background:#fff;color:var(--ui-field-float-border-focus, #2b7fd9);font-size:.95rem;line-height:1;cursor:pointer;transition:background .15s ease,border-color .15s ease}.data-card__icon-btn:hover{background:#2b7fd914}.data-card__icon-btn:focus-visible{outline:2px solid var(--ui-field-float-border-focus, #2b7fd9);outline-offset:2px}.data-card__icon-btn--danger{border-color:#b71c1c73;color:var(--ui-field-input-invalid-border, #b91c1c)}.data-card__icon-btn--danger:hover{background:#b71c1c0f}.data-card__icon-btn--danger:focus-visible{outline-color:var(--ui-field-input-invalid-border, #b91c1c)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6555
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DataCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6556
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DataCardComponent, isStandalone: true, selector: "app-data-card", inputs: { title: "title", subtitle: "subtitle", avatarText: "avatarText", variant: "variant", showActions: "showActions" }, outputs: { edit: "edit", remove: "remove" }, ngImport: i0, template: "<article\r\n class=\"data-card\"\r\n [class.data-card--default]=\"variant === 'default'\"\r\n [attr.data-variant]=\"variant\"\r\n>\r\n <div class=\"data-card__row\">\r\n <div class=\"data-card__main\">\r\n @if (avatarText?.trim()) {\r\n <div class=\"data-card__avatar\" aria-hidden=\"true\">\r\n {{ avatarText!.trim().slice(0, 2) }}\r\n </div>\r\n }\r\n <div class=\"data-card__text\">\r\n <h4 class=\"data-card__title\">{{ title }}</h4>\r\n @if (subtitle?.trim()) {\r\n <p class=\"data-card__subtitle\">{{ subtitle }}</p>\r\n }\r\n </div>\r\n </div>\r\n @if (showActions) {\r\n <div class=\"data-card__actions\">\r\n <button\r\n type=\"button\"\r\n class=\"data-card__icon-btn\"\r\n title=\"Editar\"\r\n aria-label=\"Editar\"\r\n (click)=\"onEditClick($event)\"\r\n >\r\n <span class=\"fa-solid fa-arrows-rotate\" aria-hidden=\"true\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"data-card__icon-btn data-card__icon-btn--danger\"\r\n title=\"Remover\"\r\n aria-label=\"Remover\"\r\n (click)=\"onRemoveClick($event)\"\r\n >\r\n <span class=\"fa-solid fa-trash-can\" aria-hidden=\"true\"></span>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n</article>\r\n", styles: [":host{display:block;min-width:0}.data-card{box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1));background:var(--app-color-surface, #fff);padding:.85rem 1rem;transition:border-color .15s ease,box-shadow .15s ease}.data-card--default:hover{border-color:var(--app-color-selected-border, rgba(43, 127, 217, .28));box-shadow:0 1px 0 var(--app-color-border-subtle, rgba(26, 47, 69, .04))}.data-card__row{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.data-card__main{display:flex;align-items:flex-start;gap:.65rem;min-width:0;flex:1}.data-card__avatar{flex-shrink:0;width:2.35rem;height:2.35rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;letter-spacing:.02em;color:var(--app-color-text-primary, #2a4a66);background:linear-gradient(145deg,var(--app-color-avatar-gradient-start, rgba(43, 127, 217, .14)),var(--app-color-avatar-gradient-end, rgba(26, 47, 69, .06)));border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));text-transform:uppercase}.data-card__text{min-width:0}.data-card__title{margin:0;font-size:.95rem;font-weight:600;line-height:1.3;color:var(--ui-field-float-input-text, #0f1b28);word-break:break-word}.data-card__subtitle{margin:.2rem 0 0;font-size:.8rem;line-height:1.35;color:var(--app-color-text-muted, #5a6e82)}.data-card__actions{display:flex;flex-shrink:0;align-items:center;gap:.35rem}.data-card__icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;min-width:2rem;height:2rem;margin:0;padding:0;border:1px solid rgba(43,127,217,.45);border-radius:6px;background:#fff;color:var(--ui-field-float-border-focus, #2b7fd9);font-size:.95rem;line-height:1;cursor:pointer;transition:background .15s ease,border-color .15s ease}.data-card__icon-btn:hover{background:#2b7fd914}.data-card__icon-btn:focus-visible{outline:2px solid var(--ui-field-float-border-focus, #2b7fd9);outline-offset:2px}.data-card__icon-btn--danger{border-color:#b71c1c73;color:var(--ui-field-input-invalid-border, #b91c1c)}.data-card__icon-btn--danger:hover{background:#b71c1c0f}.data-card__icon-btn--danger:focus-visible{outline-color:var(--ui-field-input-invalid-border, #b91c1c)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6557
6557
  }
6558
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataCardComponent, decorators: [{
6558
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DataCardComponent, decorators: [{
6559
6559
  type: Component,
6560
6560
  args: [{ selector: 'app-data-card', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<article\r\n class=\"data-card\"\r\n [class.data-card--default]=\"variant === 'default'\"\r\n [attr.data-variant]=\"variant\"\r\n>\r\n <div class=\"data-card__row\">\r\n <div class=\"data-card__main\">\r\n @if (avatarText?.trim()) {\r\n <div class=\"data-card__avatar\" aria-hidden=\"true\">\r\n {{ avatarText!.trim().slice(0, 2) }}\r\n </div>\r\n }\r\n <div class=\"data-card__text\">\r\n <h4 class=\"data-card__title\">{{ title }}</h4>\r\n @if (subtitle?.trim()) {\r\n <p class=\"data-card__subtitle\">{{ subtitle }}</p>\r\n }\r\n </div>\r\n </div>\r\n @if (showActions) {\r\n <div class=\"data-card__actions\">\r\n <button\r\n type=\"button\"\r\n class=\"data-card__icon-btn\"\r\n title=\"Editar\"\r\n aria-label=\"Editar\"\r\n (click)=\"onEditClick($event)\"\r\n >\r\n <span class=\"fa-solid fa-arrows-rotate\" aria-hidden=\"true\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"data-card__icon-btn data-card__icon-btn--danger\"\r\n title=\"Remover\"\r\n aria-label=\"Remover\"\r\n (click)=\"onRemoveClick($event)\"\r\n >\r\n <span class=\"fa-solid fa-trash-can\" aria-hidden=\"true\"></span>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n</article>\r\n", styles: [":host{display:block;min-width:0}.data-card{box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1));background:var(--app-color-surface, #fff);padding:.85rem 1rem;transition:border-color .15s ease,box-shadow .15s ease}.data-card--default:hover{border-color:var(--app-color-selected-border, rgba(43, 127, 217, .28));box-shadow:0 1px 0 var(--app-color-border-subtle, rgba(26, 47, 69, .04))}.data-card__row{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.data-card__main{display:flex;align-items:flex-start;gap:.65rem;min-width:0;flex:1}.data-card__avatar{flex-shrink:0;width:2.35rem;height:2.35rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;letter-spacing:.02em;color:var(--app-color-text-primary, #2a4a66);background:linear-gradient(145deg,var(--app-color-avatar-gradient-start, rgba(43, 127, 217, .14)),var(--app-color-avatar-gradient-end, rgba(26, 47, 69, .06)));border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));text-transform:uppercase}.data-card__text{min-width:0}.data-card__title{margin:0;font-size:.95rem;font-weight:600;line-height:1.3;color:var(--ui-field-float-input-text, #0f1b28);word-break:break-word}.data-card__subtitle{margin:.2rem 0 0;font-size:.8rem;line-height:1.35;color:var(--app-color-text-muted, #5a6e82)}.data-card__actions{display:flex;flex-shrink:0;align-items:center;gap:.35rem}.data-card__icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;min-width:2rem;height:2rem;margin:0;padding:0;border:1px solid rgba(43,127,217,.45);border-radius:6px;background:#fff;color:var(--ui-field-float-border-focus, #2b7fd9);font-size:.95rem;line-height:1;cursor:pointer;transition:background .15s ease,border-color .15s ease}.data-card__icon-btn:hover{background:#2b7fd914}.data-card__icon-btn:focus-visible{outline:2px solid var(--ui-field-float-border-focus, #2b7fd9);outline-offset:2px}.data-card__icon-btn--danger{border-color:#b71c1c73;color:var(--ui-field-input-invalid-border, #b91c1c)}.data-card__icon-btn--danger:hover{background:#b71c1c0f}.data-card__icon-btn--danger:focus-visible{outline-color:var(--ui-field-input-invalid-border, #b91c1c)}\n"] }]
6561
6561
  }], propDecorators: { title: [{
@@ -6583,10 +6583,10 @@ class EmptyStateComponent {
6583
6583
  /** Padding reduzido (ex.: células de tabela, listas densas). */
6584
6584
  this.embed = false;
6585
6585
  }
6586
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6587
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: EmptyStateComponent, isStandalone: true, selector: "app-empty-state", inputs: { message: "message", description: "description", iconClass: "iconClass", variant: "variant", embed: ["embed", "embed", booleanAttribute] }, ngImport: i0, template: "<div\n class=\"empty-state\"\n [class.empty-state--default]=\"variant === 'default'\"\n [class.empty-state--embed]=\"embed\"\n role=\"status\"\n>\n <span class=\"empty-state__icon\" aria-hidden=\"true\">\n <i [class]=\"iconClass\"></i>\n </span>\n <p class=\"empty-state__message\">{{ message }}</p>\n @if (description?.trim()) {\n <p class=\"empty-state__description\">{{ description }}</p>\n }\n</div>\n", styles: [":host{display:block;width:100%}.empty-state{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;min-height:5.5rem;padding:1.25rem 1rem;border-radius:10px;border:1px dashed var(--app-color-empty-border, rgba(26, 47, 69, .14));background:var(--app-color-empty-bg, rgba(243, 246, 249, .55));color:var(--app-color-tab-inactive-text, #51667a);font-size:.9rem;text-align:center;line-height:1.4}.empty-state__icon{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:50%;font-size:1rem;color:var(--app-color-text-secondary, rgba(61, 82, 102, .85));background:var(--app-color-skeleton-track, rgba(26, 47, 69, .06));border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08))}.empty-state__message{margin:0;max-width:28rem;font-size:.9rem;font-weight:500;color:var(--app-color-tab-inactive-text, #51667a)}.empty-state__description{margin:0;max-width:28rem;font-size:.8rem;color:var(--app-color-text-muted, #6b8299)}.empty-state--embed{min-height:4.5rem;padding:1rem .75rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6586
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6587
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: EmptyStateComponent, isStandalone: true, selector: "app-empty-state", inputs: { message: "message", description: "description", iconClass: "iconClass", variant: "variant", embed: ["embed", "embed", booleanAttribute] }, ngImport: i0, template: "<div\n class=\"empty-state\"\n [class.empty-state--default]=\"variant === 'default'\"\n [class.empty-state--embed]=\"embed\"\n role=\"status\"\n>\n <span class=\"empty-state__icon\" aria-hidden=\"true\">\n <i [class]=\"iconClass\"></i>\n </span>\n <p class=\"empty-state__message\">{{ message }}</p>\n @if (description?.trim()) {\n <p class=\"empty-state__description\">{{ description }}</p>\n }\n</div>\n", styles: [":host{display:block;width:100%}.empty-state{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;min-height:5.5rem;padding:1.25rem 1rem;border-radius:10px;border:1px dashed var(--app-color-empty-border, rgba(26, 47, 69, .14));background:var(--app-color-empty-bg, rgba(243, 246, 249, .55));color:var(--app-color-tab-inactive-text, #51667a);font-size:.9rem;text-align:center;line-height:1.4}.empty-state__icon{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:50%;font-size:1rem;color:var(--app-color-text-secondary, rgba(61, 82, 102, .85));background:var(--app-color-skeleton-track, rgba(26, 47, 69, .06));border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08))}.empty-state__message{margin:0;max-width:28rem;font-size:.9rem;font-weight:500;color:var(--app-color-tab-inactive-text, #51667a)}.empty-state__description{margin:0;max-width:28rem;font-size:.8rem;color:var(--app-color-text-muted, #6b8299)}.empty-state--embed{min-height:4.5rem;padding:1rem .75rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6588
6588
  }
6589
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EmptyStateComponent, decorators: [{
6589
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: EmptyStateComponent, decorators: [{
6590
6590
  type: Component,
6591
6591
  args: [{ selector: 'app-empty-state', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"empty-state\"\n [class.empty-state--default]=\"variant === 'default'\"\n [class.empty-state--embed]=\"embed\"\n role=\"status\"\n>\n <span class=\"empty-state__icon\" aria-hidden=\"true\">\n <i [class]=\"iconClass\"></i>\n </span>\n <p class=\"empty-state__message\">{{ message }}</p>\n @if (description?.trim()) {\n <p class=\"empty-state__description\">{{ description }}</p>\n }\n</div>\n", styles: [":host{display:block;width:100%}.empty-state{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;min-height:5.5rem;padding:1.25rem 1rem;border-radius:10px;border:1px dashed var(--app-color-empty-border, rgba(26, 47, 69, .14));background:var(--app-color-empty-bg, rgba(243, 246, 249, .55));color:var(--app-color-tab-inactive-text, #51667a);font-size:.9rem;text-align:center;line-height:1.4}.empty-state__icon{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:50%;font-size:1rem;color:var(--app-color-text-secondary, rgba(61, 82, 102, .85));background:var(--app-color-skeleton-track, rgba(26, 47, 69, .06));border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08))}.empty-state__message{margin:0;max-width:28rem;font-size:.9rem;font-weight:500;color:var(--app-color-tab-inactive-text, #51667a)}.empty-state__description{margin:0;max-width:28rem;font-size:.8rem;color:var(--app-color-text-muted, #6b8299)}.empty-state--embed{min-height:4.5rem;padding:1rem .75rem}\n"] }]
6592
6592
  }], propDecorators: { message: [{
@@ -6758,12 +6758,12 @@ class CardListComponent {
6758
6758
  this.visibleCount = Math.min(this.scrollBatchSize, total);
6759
6759
  this.cdr.markForCheck();
6760
6760
  }
6761
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CardListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6762
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CardListComponent, isStandalone: true, selector: "app-card-list", inputs: { items: "items", loading: "loading", loadingMore: ["loadingMore", "loadingMore", booleanAttribute], emptyMessage: "emptyMessage", variant: "variant", mapItem: "mapItem", showItemActions: "showItemActions", trackByProp: "trackByProp", dataMode: "dataMode", scrollBatchSize: "scrollBatchSize", scrollLoadThresholdPx: "scrollLoadThresholdPx", showFooter: "showFooter", scrollMaxHeight: "scrollMaxHeight", totalCountRemote: "totalCountRemote", hasNextPage: "hasNextPage" }, outputs: { loadMore: "loadMore", edit: "edit", remove: "remove" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"card-list\" [attr.data-variant]=\"variant\">\r\n @if (showFullSkeleton) {\r\n <div class=\"card-list__body\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\r\n <span class=\"card-list__visually-hidden\">A carregar lista\u2026</span>\r\n <div class=\"card-list__scroll\" [ngStyle]=\"scrollAreaStyle\">\r\n <div class=\"card-list__stack\">\r\n @for (_ of skeletonCardIndices(); track $index) {\r\n <app-skeleton-card [showActions]=\"showItemActions\" />\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (!showFullSkeleton && totalItemCount === 0 && !loadingMore) {\r\n <app-empty-state [message]=\"emptyMessage\" />\r\n }\r\n\r\n @if (!showFullSkeleton && totalItemCount > 0) {\r\n <div class=\"card-list__body\">\r\n <div class=\"card-list__scroll\" [ngStyle]=\"scrollAreaStyle\" (scroll)=\"onScroll($event)\"\r\n [attr.aria-busy]=\"loadingMore ? true : null\">\r\n <div class=\"card-list__stack\">\r\n @for (item of visibleItems; track trackFn($index, item)) {\r\n <app-data-card [title]=\"viewFor(item).title\" [subtitle]=\"viewFor(item).subtitle\"\r\n [avatarText]=\"viewFor(item).avatarText\" [variant]=\"variant\" [showActions]=\"showItemActions\"\r\n (edit)=\"edit.emit(item)\" (remove)=\"remove.emit(item)\" />\r\n }\r\n @if (loadingMore) {\r\n <span class=\"card-list__visually-hidden\">A carregar mais itens\u2026</span>\r\n @for (_ of skeletonTailIndices(); track $index) {\r\n <app-skeleton-card [showActions]=\"showItemActions\" />\r\n }\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (showFooter) {\r\n <div class=\"card-list__status\" role=\"status\" aria-live=\"polite\">\r\n <span class=\"card-list__status-text\">{{ scrollStatusLabel }}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.card-list{position:relative;width:100%;min-height:5rem;box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-surface, #fff);overflow:hidden}.card-list__body{display:flex;flex-direction:column;min-width:0}.card-list__scroll{min-height:0;box-sizing:border-box;-webkit-overflow-scrolling:touch}.card-list__stack{display:flex;flex-direction:column;gap:.75rem;padding:.75rem;box-sizing:border-box}.card-list__status{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.35rem .75rem;padding:.45rem .75rem .55rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));font-size:.8rem;color:var(--app-color-tab-inactive-text, #51667a);background:var(--app-color-background, #fafbfc)}.card-list__status-text{font-weight:500}.card-list__status-hint{font-size:.78rem;color:var(--app-color-text-muted, #6b8299)}.card-list__visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: DataCardComponent, selector: "app-data-card", inputs: ["title", "subtitle", "avatarText", "variant", "showActions"], outputs: ["edit", "remove"] }, { kind: "component", type: EmptyStateComponent, selector: "app-empty-state", inputs: ["message", "description", "iconClass", "variant", "embed"] }, { kind: "component", type: SkeletonCardComponent, selector: "app-skeleton-card", inputs: ["showActions", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6761
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CardListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6762
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: CardListComponent, isStandalone: true, selector: "app-card-list", inputs: { items: "items", loading: "loading", loadingMore: ["loadingMore", "loadingMore", booleanAttribute], emptyMessage: "emptyMessage", variant: "variant", mapItem: "mapItem", showItemActions: "showItemActions", trackByProp: "trackByProp", dataMode: "dataMode", scrollBatchSize: "scrollBatchSize", scrollLoadThresholdPx: "scrollLoadThresholdPx", showFooter: "showFooter", scrollMaxHeight: "scrollMaxHeight", totalCountRemote: "totalCountRemote", hasNextPage: "hasNextPage" }, outputs: { loadMore: "loadMore", edit: "edit", remove: "remove" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"card-list\" [attr.data-variant]=\"variant\">\r\n @if (showFullSkeleton) {\r\n <div class=\"card-list__body\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\r\n <span class=\"card-list__visually-hidden\">A carregar lista\u2026</span>\r\n <div class=\"card-list__scroll\" [ngStyle]=\"scrollAreaStyle\">\r\n <div class=\"card-list__stack\">\r\n @for (_ of skeletonCardIndices(); track $index) {\r\n <app-skeleton-card [showActions]=\"showItemActions\" />\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (!showFullSkeleton && totalItemCount === 0 && !loadingMore) {\r\n <app-empty-state [message]=\"emptyMessage\" />\r\n }\r\n\r\n @if (!showFullSkeleton && totalItemCount > 0) {\r\n <div class=\"card-list__body\">\r\n <div class=\"card-list__scroll\" [ngStyle]=\"scrollAreaStyle\" (scroll)=\"onScroll($event)\"\r\n [attr.aria-busy]=\"loadingMore ? true : null\">\r\n <div class=\"card-list__stack\">\r\n @for (item of visibleItems; track trackFn($index, item)) {\r\n <app-data-card [title]=\"viewFor(item).title\" [subtitle]=\"viewFor(item).subtitle\"\r\n [avatarText]=\"viewFor(item).avatarText\" [variant]=\"variant\" [showActions]=\"showItemActions\"\r\n (edit)=\"edit.emit(item)\" (remove)=\"remove.emit(item)\" />\r\n }\r\n @if (loadingMore) {\r\n <span class=\"card-list__visually-hidden\">A carregar mais itens\u2026</span>\r\n @for (_ of skeletonTailIndices(); track $index) {\r\n <app-skeleton-card [showActions]=\"showItemActions\" />\r\n }\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (showFooter) {\r\n <div class=\"card-list__status\" role=\"status\" aria-live=\"polite\">\r\n <span class=\"card-list__status-text\">{{ scrollStatusLabel }}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.card-list{position:relative;width:100%;min-height:5rem;box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-surface, #fff);overflow:hidden}.card-list__body{display:flex;flex-direction:column;min-width:0}.card-list__scroll{min-height:0;box-sizing:border-box;-webkit-overflow-scrolling:touch}.card-list__stack{display:flex;flex-direction:column;gap:.75rem;padding:.75rem;box-sizing:border-box}.card-list__status{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.35rem .75rem;padding:.45rem .75rem .55rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));font-size:.8rem;color:var(--app-color-tab-inactive-text, #51667a);background:var(--app-color-background, #fafbfc)}.card-list__status-text{font-weight:500}.card-list__status-hint{font-size:.78rem;color:var(--app-color-text-muted, #6b8299)}.card-list__visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: DataCardComponent, selector: "app-data-card", inputs: ["title", "subtitle", "avatarText", "variant", "showActions"], outputs: ["edit", "remove"] }, { kind: "component", type: EmptyStateComponent, selector: "app-empty-state", inputs: ["message", "description", "iconClass", "variant", "embed"] }, { kind: "component", type: SkeletonCardComponent, selector: "app-skeleton-card", inputs: ["showActions", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6763
6763
  }
6764
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CardListComponent, decorators: [{
6764
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CardListComponent, decorators: [{
6765
6765
  type: Component,
6766
- args: [{ selector: 'app-card-list', standalone: true, imports: [NgStyle, DataCardComponent, EmptyStateComponent, SkeletonCardComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"card-list\" [attr.data-variant]=\"variant\">\r\n @if (showFullSkeleton) {\r\n <div class=\"card-list__body\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\r\n <span class=\"card-list__visually-hidden\">A carregar lista\u2026</span>\r\n <div class=\"card-list__scroll\" [ngStyle]=\"scrollAreaStyle\">\r\n <div class=\"card-list__stack\">\r\n @for (_ of skeletonCardIndices(); track $index) {\r\n <app-skeleton-card [showActions]=\"showItemActions\" />\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (!showFullSkeleton && totalItemCount === 0 && !loadingMore) {\r\n <app-empty-state [message]=\"emptyMessage\" />\r\n }\r\n\r\n @if (!showFullSkeleton && totalItemCount > 0) {\r\n <div class=\"card-list__body\">\r\n <div class=\"card-list__scroll\" [ngStyle]=\"scrollAreaStyle\" (scroll)=\"onScroll($event)\"\r\n [attr.aria-busy]=\"loadingMore ? true : null\">\r\n <div class=\"card-list__stack\">\r\n @for (item of visibleItems; track trackFn($index, item)) {\r\n <app-data-card [title]=\"viewFor(item).title\" [subtitle]=\"viewFor(item).subtitle\"\r\n [avatarText]=\"viewFor(item).avatarText\" [variant]=\"variant\" [showActions]=\"showItemActions\"\r\n (edit)=\"edit.emit(item)\" (remove)=\"remove.emit(item)\" />\r\n }\r\n @if (loadingMore) {\r\n <span class=\"card-list__visually-hidden\">A carregar mais itens\u2026</span>\r\n @for (_ of skeletonTailIndices(); track $index) {\r\n <app-skeleton-card [showActions]=\"showItemActions\" />\r\n }\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (showFooter) {\r\n <div class=\"card-list__status\" role=\"status\" aria-live=\"polite\">\r\n <span class=\"card-list__status-text\">{{ scrollStatusLabel }}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.card-list{position:relative;width:100%;min-height:5rem;box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-surface, #fff);overflow:hidden}.card-list__body{display:flex;flex-direction:column;min-width:0}.card-list__scroll{min-height:0;box-sizing:border-box;-webkit-overflow-scrolling:touch}.card-list__stack{display:flex;flex-direction:column;gap:.75rem;padding:.75rem;box-sizing:border-box}.card-list__status{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.35rem .75rem;padding:.45rem .75rem .55rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));font-size:.8rem;color:var(--app-color-tab-inactive-text, #51667a);background:var(--app-color-background, #fafbfc)}.card-list__status-text{font-weight:500}.card-list__status-hint{font-size:.78rem;color:var(--app-color-text-muted, #6b8299)}.card-list__visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"] }]
6766
+ args: [{ selector: 'app-card-list', imports: [NgStyle, DataCardComponent, EmptyStateComponent, SkeletonCardComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"card-list\" [attr.data-variant]=\"variant\">\r\n @if (showFullSkeleton) {\r\n <div class=\"card-list__body\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\r\n <span class=\"card-list__visually-hidden\">A carregar lista\u2026</span>\r\n <div class=\"card-list__scroll\" [ngStyle]=\"scrollAreaStyle\">\r\n <div class=\"card-list__stack\">\r\n @for (_ of skeletonCardIndices(); track $index) {\r\n <app-skeleton-card [showActions]=\"showItemActions\" />\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (!showFullSkeleton && totalItemCount === 0 && !loadingMore) {\r\n <app-empty-state [message]=\"emptyMessage\" />\r\n }\r\n\r\n @if (!showFullSkeleton && totalItemCount > 0) {\r\n <div class=\"card-list__body\">\r\n <div class=\"card-list__scroll\" [ngStyle]=\"scrollAreaStyle\" (scroll)=\"onScroll($event)\"\r\n [attr.aria-busy]=\"loadingMore ? true : null\">\r\n <div class=\"card-list__stack\">\r\n @for (item of visibleItems; track trackFn($index, item)) {\r\n <app-data-card [title]=\"viewFor(item).title\" [subtitle]=\"viewFor(item).subtitle\"\r\n [avatarText]=\"viewFor(item).avatarText\" [variant]=\"variant\" [showActions]=\"showItemActions\"\r\n (edit)=\"edit.emit(item)\" (remove)=\"remove.emit(item)\" />\r\n }\r\n @if (loadingMore) {\r\n <span class=\"card-list__visually-hidden\">A carregar mais itens\u2026</span>\r\n @for (_ of skeletonTailIndices(); track $index) {\r\n <app-skeleton-card [showActions]=\"showItemActions\" />\r\n }\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (showFooter) {\r\n <div class=\"card-list__status\" role=\"status\" aria-live=\"polite\">\r\n <span class=\"card-list__status-text\">{{ scrollStatusLabel }}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.card-list{position:relative;width:100%;min-height:5rem;box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-surface, #fff);overflow:hidden}.card-list__body{display:flex;flex-direction:column;min-width:0}.card-list__scroll{min-height:0;box-sizing:border-box;-webkit-overflow-scrolling:touch}.card-list__stack{display:flex;flex-direction:column;gap:.75rem;padding:.75rem;box-sizing:border-box}.card-list__status{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.35rem .75rem;padding:.45rem .75rem .55rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));font-size:.8rem;color:var(--app-color-tab-inactive-text, #51667a);background:var(--app-color-background, #fafbfc)}.card-list__status-text{font-weight:500}.card-list__status-hint{font-size:.78rem;color:var(--app-color-text-muted, #6b8299)}.card-list__visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"] }]
6767
6767
  }], propDecorators: { items: [{
6768
6768
  type: Input,
6769
6769
  args: [{ required: true }]
@@ -6870,12 +6870,12 @@ class AdaptiveDataViewComponent {
6870
6870
  const n = this.items?.length ?? 0;
6871
6871
  return tpl.replaceAll('{count}', String(n));
6872
6872
  }
6873
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AdaptiveDataViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6874
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AdaptiveDataViewComponent, isStandalone: true, selector: "app-adaptive-data-view", inputs: { items: "items", gridColumns: "gridColumns", mapItem: "mapItem", pageSize: "pageSize", gridHeight: "gridHeight", cardScrollMaxHeight: "cardScrollMaxHeight", emptyMessageGrid: "emptyMessageGrid", emptyMessageCard: "emptyMessageCard", pagination: "pagination", showActionsColumn: "showActionsColumn", showCardItemActions: "showCardItemActions", scrollBatchSize: "scrollBatchSize", showCardFooter: "showCardFooter", loading: "loading", showResultCount: "showResultCount", resultCountTemplate: "resultCountTemplate", mobileView: "mobileView", desktopView: "desktopView" }, outputs: { edit: "edit", remove: "remove", loadMore: "loadMore" }, ngImport: i0, template: "<div class=\"adaptive-data-view\">\r\n <div class=\"adaptive-data-view__main\">\r\n @if (showGrid) {\r\n <app-data-grid\r\n [rows]=\"items\"\r\n [columns]=\"gridColumns\"\r\n [pageSize]=\"pageSize\"\r\n [pagination]=\"pagination\"\r\n [height]=\"gridHeight\"\r\n [emptyMessage]=\"emptyMessageGrid\"\r\n [showActionsColumn]=\"showActionsColumn\"\r\n [loading]=\"loading\"\r\n (edit)=\"edit.emit($event)\"\r\n (remove)=\"remove.emit($event)\"\r\n />\r\n }\r\n @if (showCard) {\r\n <app-card-list\r\n [items]=\"items\"\r\n [mapItem]=\"mapItem\"\r\n [scrollBatchSize]=\"scrollBatchSize\"\r\n [showItemActions]=\"showCardItemActions\"\r\n [showFooter]=\"showCardFooter\"\r\n [scrollMaxHeight]=\"cardScrollMaxHeight\"\r\n [emptyMessage]=\"emptyMessageCard\"\r\n [loading]=\"loading\"\r\n (edit)=\"edit.emit($event)\"\r\n (remove)=\"remove.emit($event)\"\r\n (loadMore)=\"loadMore.emit()\"\r\n />\r\n }\r\n </div>\r\n @if (showResultCount && resultCountDisplay) {\r\n <div class=\"adaptive-data-view__result-count\" aria-live=\"polite\">\r\n {{ resultCountDisplay }}\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.adaptive-data-view{display:flex;flex-direction:column;align-items:stretch;gap:.5rem;width:100%;min-width:0}.adaptive-data-view__main{display:block;flex:1 1 auto;min-width:0;min-height:0}.adaptive-data-view__result-count{flex:0 0 auto;width:100%;box-sizing:border-box;font-size:.875rem;line-height:1.35;color:#525252}\n"], dependencies: [{ kind: "component", type: DataGridComponent, selector: "app-data-grid", inputs: ["rows", "columns", "pageSize", "loading", "initialPaginationPage", "height", "emptyMessage", "pagination", "showActionsColumn"], outputs: ["edit", "remove", "selectionChange", "paginationChanged"] }, { kind: "component", type: CardListComponent, selector: "app-card-list", inputs: ["items", "loading", "loadingMore", "emptyMessage", "variant", "mapItem", "showItemActions", "trackByProp", "dataMode", "scrollBatchSize", "scrollLoadThresholdPx", "showFooter", "scrollMaxHeight", "totalCountRemote", "hasNextPage"], outputs: ["loadMore", "edit", "remove"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6873
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AdaptiveDataViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6874
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AdaptiveDataViewComponent, isStandalone: true, selector: "app-adaptive-data-view", inputs: { items: "items", gridColumns: "gridColumns", mapItem: "mapItem", pageSize: "pageSize", gridHeight: "gridHeight", cardScrollMaxHeight: "cardScrollMaxHeight", emptyMessageGrid: "emptyMessageGrid", emptyMessageCard: "emptyMessageCard", pagination: "pagination", showActionsColumn: "showActionsColumn", showCardItemActions: "showCardItemActions", scrollBatchSize: "scrollBatchSize", showCardFooter: "showCardFooter", loading: "loading", showResultCount: "showResultCount", resultCountTemplate: "resultCountTemplate", mobileView: "mobileView", desktopView: "desktopView" }, outputs: { edit: "edit", remove: "remove", loadMore: "loadMore" }, ngImport: i0, template: "<div class=\"adaptive-data-view\">\r\n <div class=\"adaptive-data-view__main\">\r\n @if (showGrid) {\r\n <app-data-grid\r\n [rows]=\"items\"\r\n [columns]=\"gridColumns\"\r\n [pageSize]=\"pageSize\"\r\n [pagination]=\"pagination\"\r\n [height]=\"gridHeight\"\r\n [emptyMessage]=\"emptyMessageGrid\"\r\n [showActionsColumn]=\"showActionsColumn\"\r\n [loading]=\"loading\"\r\n (edit)=\"edit.emit($event)\"\r\n (remove)=\"remove.emit($event)\"\r\n />\r\n }\r\n @if (showCard) {\r\n <app-card-list\r\n [items]=\"items\"\r\n [mapItem]=\"mapItem\"\r\n [scrollBatchSize]=\"scrollBatchSize\"\r\n [showItemActions]=\"showCardItemActions\"\r\n [showFooter]=\"showCardFooter\"\r\n [scrollMaxHeight]=\"cardScrollMaxHeight\"\r\n [emptyMessage]=\"emptyMessageCard\"\r\n [loading]=\"loading\"\r\n (edit)=\"edit.emit($event)\"\r\n (remove)=\"remove.emit($event)\"\r\n (loadMore)=\"loadMore.emit()\"\r\n />\r\n }\r\n </div>\r\n @if (showResultCount && resultCountDisplay) {\r\n <div class=\"adaptive-data-view__result-count\" aria-live=\"polite\">\r\n {{ resultCountDisplay }}\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.adaptive-data-view{display:flex;flex-direction:column;align-items:stretch;gap:.5rem;width:100%;min-width:0}.adaptive-data-view__main{display:block;flex:1 1 auto;min-width:0;min-height:0}.adaptive-data-view__result-count{flex:0 0 auto;width:100%;box-sizing:border-box;font-size:.875rem;line-height:1.35;color:#525252}\n"], dependencies: [{ kind: "component", type: DataGridComponent, selector: "app-data-grid", inputs: ["rows", "columns", "pageSize", "loading", "initialPaginationPage", "height", "emptyMessage", "pagination", "showActionsColumn"], outputs: ["edit", "remove", "selectionChange", "paginationChanged"] }, { kind: "component", type: CardListComponent, selector: "app-card-list", inputs: ["items", "loading", "loadingMore", "emptyMessage", "variant", "mapItem", "showItemActions", "trackByProp", "dataMode", "scrollBatchSize", "scrollLoadThresholdPx", "showFooter", "scrollMaxHeight", "totalCountRemote", "hasNextPage"], outputs: ["loadMore", "edit", "remove"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6875
6875
  }
6876
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AdaptiveDataViewComponent, decorators: [{
6876
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AdaptiveDataViewComponent, decorators: [{
6877
6877
  type: Component,
6878
- args: [{ selector: 'app-adaptive-data-view', standalone: true, imports: [DataGridComponent, CardListComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"adaptive-data-view\">\r\n <div class=\"adaptive-data-view__main\">\r\n @if (showGrid) {\r\n <app-data-grid\r\n [rows]=\"items\"\r\n [columns]=\"gridColumns\"\r\n [pageSize]=\"pageSize\"\r\n [pagination]=\"pagination\"\r\n [height]=\"gridHeight\"\r\n [emptyMessage]=\"emptyMessageGrid\"\r\n [showActionsColumn]=\"showActionsColumn\"\r\n [loading]=\"loading\"\r\n (edit)=\"edit.emit($event)\"\r\n (remove)=\"remove.emit($event)\"\r\n />\r\n }\r\n @if (showCard) {\r\n <app-card-list\r\n [items]=\"items\"\r\n [mapItem]=\"mapItem\"\r\n [scrollBatchSize]=\"scrollBatchSize\"\r\n [showItemActions]=\"showCardItemActions\"\r\n [showFooter]=\"showCardFooter\"\r\n [scrollMaxHeight]=\"cardScrollMaxHeight\"\r\n [emptyMessage]=\"emptyMessageCard\"\r\n [loading]=\"loading\"\r\n (edit)=\"edit.emit($event)\"\r\n (remove)=\"remove.emit($event)\"\r\n (loadMore)=\"loadMore.emit()\"\r\n />\r\n }\r\n </div>\r\n @if (showResultCount && resultCountDisplay) {\r\n <div class=\"adaptive-data-view__result-count\" aria-live=\"polite\">\r\n {{ resultCountDisplay }}\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.adaptive-data-view{display:flex;flex-direction:column;align-items:stretch;gap:.5rem;width:100%;min-width:0}.adaptive-data-view__main{display:block;flex:1 1 auto;min-width:0;min-height:0}.adaptive-data-view__result-count{flex:0 0 auto;width:100%;box-sizing:border-box;font-size:.875rem;line-height:1.35;color:#525252}\n"] }]
6878
+ args: [{ selector: 'app-adaptive-data-view', imports: [DataGridComponent, CardListComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"adaptive-data-view\">\r\n <div class=\"adaptive-data-view__main\">\r\n @if (showGrid) {\r\n <app-data-grid\r\n [rows]=\"items\"\r\n [columns]=\"gridColumns\"\r\n [pageSize]=\"pageSize\"\r\n [pagination]=\"pagination\"\r\n [height]=\"gridHeight\"\r\n [emptyMessage]=\"emptyMessageGrid\"\r\n [showActionsColumn]=\"showActionsColumn\"\r\n [loading]=\"loading\"\r\n (edit)=\"edit.emit($event)\"\r\n (remove)=\"remove.emit($event)\"\r\n />\r\n }\r\n @if (showCard) {\r\n <app-card-list\r\n [items]=\"items\"\r\n [mapItem]=\"mapItem\"\r\n [scrollBatchSize]=\"scrollBatchSize\"\r\n [showItemActions]=\"showCardItemActions\"\r\n [showFooter]=\"showCardFooter\"\r\n [scrollMaxHeight]=\"cardScrollMaxHeight\"\r\n [emptyMessage]=\"emptyMessageCard\"\r\n [loading]=\"loading\"\r\n (edit)=\"edit.emit($event)\"\r\n (remove)=\"remove.emit($event)\"\r\n (loadMore)=\"loadMore.emit()\"\r\n />\r\n }\r\n </div>\r\n @if (showResultCount && resultCountDisplay) {\r\n <div class=\"adaptive-data-view__result-count\" aria-live=\"polite\">\r\n {{ resultCountDisplay }}\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.adaptive-data-view{display:flex;flex-direction:column;align-items:stretch;gap:.5rem;width:100%;min-width:0}.adaptive-data-view__main{display:block;flex:1 1 auto;min-width:0;min-height:0}.adaptive-data-view__result-count{flex:0 0 auto;width:100%;box-sizing:border-box;font-size:.875rem;line-height:1.35;color:#525252}\n"] }]
6879
6879
  }], propDecorators: { items: [{
6880
6880
  type: Input,
6881
6881
  args: [{ required: true }]
@@ -6941,12 +6941,12 @@ class StatusBadgeComponent {
6941
6941
  neutral: 'status-badge--neutral',
6942
6942
  };
6943
6943
  }
6944
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StatusBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6945
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: StatusBadgeComponent, isStandalone: true, selector: "app-status-badge", inputs: { label: "label", variant: "variant", icon: "icon", size: "size", bordered: ["bordered", "bordered", booleanAttribute] }, ngImport: i0, template: "<span\r\n class=\"status-badge\"\r\n [ngClass]=\"variantClassMap[variant]\"\r\n [class.status-badge--sm]=\"size === 'sm'\"\r\n [class.status-badge--md]=\"size === 'md'\"\r\n [class.status-badge--bordered]=\"bordered\"\r\n [class.status-badge--no-border]=\"!bordered\"\r\n role=\"status\"\r\n>\r\n @if (icon.trim()) {\r\n <span class=\"status-badge__icon\" aria-hidden=\"true\">\r\n <i [attr.class]=\"icon\" aria-hidden=\"true\"></i>\r\n </span>\r\n }\r\n <span class=\"status-badge__label\">{{ label }}</span>\r\n</span>\r\n", styles: [":host{display:inline-block;max-width:100%;vertical-align:middle}.status-badge{display:inline-flex;align-items:center;gap:.35rem;max-width:100%;box-sizing:border-box;border-radius:6px;font-weight:600;line-height:1.25;border-style:solid;border-width:1px}.status-badge--bordered{border-color:transparent}.status-badge--no-border{border-color:transparent;border-width:0}.status-badge--sm{padding:.12rem .45rem;font-size:.72rem}.status-badge--md{padding:.2rem .55rem;font-size:.8rem}.status-badge__icon{display:inline-flex;flex-shrink:0;font-size:.85em;line-height:1}.status-badge__label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-badge--success{color:var(--app-color-success, #15803d);background:color-mix(in srgb,var(--app-color-success, #15803d) 12%,var(--app-color-surface, #fff))}.status-badge--success.status-badge--bordered{border-color:color-mix(in srgb,var(--app-color-success, #15803d) 35%,transparent)}.status-badge--error{color:var(--app-color-error, #b91c1c);background:var(--app-color-error-bg-subtle, rgba(185, 28, 28, .12))}.status-badge--error.status-badge--bordered{border-color:color-mix(in srgb,var(--app-color-error-border, #dc2626) 45%,transparent)}.status-badge--warning{color:var(--app-color-warning, #c2410c);background:color-mix(in srgb,var(--app-color-warning, #c2410c) 14%,var(--app-color-surface, #fff))}.status-badge--warning.status-badge--bordered{border-color:color-mix(in srgb,var(--app-color-warning, #c2410c) 38%,transparent)}.status-badge--info{color:var(--app-color-info, #1d4ed8);background:color-mix(in srgb,var(--app-color-info, #1d4ed8) 12%,var(--app-color-surface, #fff))}.status-badge--info.status-badge--bordered{border-color:color-mix(in srgb,var(--app-color-info, #1d4ed8) 35%,transparent)}.status-badge--neutral{color:var(--app-color-text-secondary, #5a7fa3);background:var(--app-color-tab-inactive-bg, #f3f6f9)}.status-badge--neutral.status-badge--bordered{border-color:var(--app-color-border-subtle, rgba(26, 47, 69, .12))}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6944
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: StatusBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6945
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: StatusBadgeComponent, isStandalone: true, selector: "app-status-badge", inputs: { label: "label", variant: "variant", icon: "icon", size: "size", bordered: ["bordered", "bordered", booleanAttribute] }, ngImport: i0, template: "<span\r\n class=\"status-badge\"\r\n [ngClass]=\"variantClassMap[variant]\"\r\n [class.status-badge--sm]=\"size === 'sm'\"\r\n [class.status-badge--md]=\"size === 'md'\"\r\n [class.status-badge--bordered]=\"bordered\"\r\n [class.status-badge--no-border]=\"!bordered\"\r\n role=\"status\"\r\n>\r\n @if (icon.trim()) {\r\n <span class=\"status-badge__icon\" aria-hidden=\"true\">\r\n <i [attr.class]=\"icon\" aria-hidden=\"true\"></i>\r\n </span>\r\n }\r\n <span class=\"status-badge__label\">{{ label }}</span>\r\n</span>\r\n", styles: [":host{display:inline-block;max-width:100%;vertical-align:middle}.status-badge{display:inline-flex;align-items:center;gap:.35rem;max-width:100%;box-sizing:border-box;border-radius:6px;font-weight:600;line-height:1.25;border-style:solid;border-width:1px}.status-badge--bordered{border-color:transparent}.status-badge--no-border{border-color:transparent;border-width:0}.status-badge--sm{padding:.12rem .45rem;font-size:.72rem}.status-badge--md{padding:.2rem .55rem;font-size:.8rem}.status-badge__icon{display:inline-flex;flex-shrink:0;font-size:.85em;line-height:1}.status-badge__label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-badge--success{color:var(--app-color-success, #15803d);background:color-mix(in srgb,var(--app-color-success, #15803d) 12%,var(--app-color-surface, #fff))}.status-badge--success.status-badge--bordered{border-color:color-mix(in srgb,var(--app-color-success, #15803d) 35%,transparent)}.status-badge--error{color:var(--app-color-error, #b91c1c);background:var(--app-color-error-bg-subtle, rgba(185, 28, 28, .12))}.status-badge--error.status-badge--bordered{border-color:color-mix(in srgb,var(--app-color-error-border, #dc2626) 45%,transparent)}.status-badge--warning{color:var(--app-color-warning, #c2410c);background:color-mix(in srgb,var(--app-color-warning, #c2410c) 14%,var(--app-color-surface, #fff))}.status-badge--warning.status-badge--bordered{border-color:color-mix(in srgb,var(--app-color-warning, #c2410c) 38%,transparent)}.status-badge--info{color:var(--app-color-info, #1d4ed8);background:color-mix(in srgb,var(--app-color-info, #1d4ed8) 12%,var(--app-color-surface, #fff))}.status-badge--info.status-badge--bordered{border-color:color-mix(in srgb,var(--app-color-info, #1d4ed8) 35%,transparent)}.status-badge--neutral{color:var(--app-color-text-secondary, #5a7fa3);background:var(--app-color-tab-inactive-bg, #f3f6f9)}.status-badge--neutral.status-badge--bordered{border-color:var(--app-color-border-subtle, rgba(26, 47, 69, .12))}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6946
6946
  }
6947
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StatusBadgeComponent, decorators: [{
6947
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: StatusBadgeComponent, decorators: [{
6948
6948
  type: Component,
6949
- args: [{ selector: 'app-status-badge', standalone: true, imports: [NgClass], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span\r\n class=\"status-badge\"\r\n [ngClass]=\"variantClassMap[variant]\"\r\n [class.status-badge--sm]=\"size === 'sm'\"\r\n [class.status-badge--md]=\"size === 'md'\"\r\n [class.status-badge--bordered]=\"bordered\"\r\n [class.status-badge--no-border]=\"!bordered\"\r\n role=\"status\"\r\n>\r\n @if (icon.trim()) {\r\n <span class=\"status-badge__icon\" aria-hidden=\"true\">\r\n <i [attr.class]=\"icon\" aria-hidden=\"true\"></i>\r\n </span>\r\n }\r\n <span class=\"status-badge__label\">{{ label }}</span>\r\n</span>\r\n", styles: [":host{display:inline-block;max-width:100%;vertical-align:middle}.status-badge{display:inline-flex;align-items:center;gap:.35rem;max-width:100%;box-sizing:border-box;border-radius:6px;font-weight:600;line-height:1.25;border-style:solid;border-width:1px}.status-badge--bordered{border-color:transparent}.status-badge--no-border{border-color:transparent;border-width:0}.status-badge--sm{padding:.12rem .45rem;font-size:.72rem}.status-badge--md{padding:.2rem .55rem;font-size:.8rem}.status-badge__icon{display:inline-flex;flex-shrink:0;font-size:.85em;line-height:1}.status-badge__label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-badge--success{color:var(--app-color-success, #15803d);background:color-mix(in srgb,var(--app-color-success, #15803d) 12%,var(--app-color-surface, #fff))}.status-badge--success.status-badge--bordered{border-color:color-mix(in srgb,var(--app-color-success, #15803d) 35%,transparent)}.status-badge--error{color:var(--app-color-error, #b91c1c);background:var(--app-color-error-bg-subtle, rgba(185, 28, 28, .12))}.status-badge--error.status-badge--bordered{border-color:color-mix(in srgb,var(--app-color-error-border, #dc2626) 45%,transparent)}.status-badge--warning{color:var(--app-color-warning, #c2410c);background:color-mix(in srgb,var(--app-color-warning, #c2410c) 14%,var(--app-color-surface, #fff))}.status-badge--warning.status-badge--bordered{border-color:color-mix(in srgb,var(--app-color-warning, #c2410c) 38%,transparent)}.status-badge--info{color:var(--app-color-info, #1d4ed8);background:color-mix(in srgb,var(--app-color-info, #1d4ed8) 12%,var(--app-color-surface, #fff))}.status-badge--info.status-badge--bordered{border-color:color-mix(in srgb,var(--app-color-info, #1d4ed8) 35%,transparent)}.status-badge--neutral{color:var(--app-color-text-secondary, #5a7fa3);background:var(--app-color-tab-inactive-bg, #f3f6f9)}.status-badge--neutral.status-badge--bordered{border-color:var(--app-color-border-subtle, rgba(26, 47, 69, .12))}\n"] }]
6949
+ args: [{ selector: 'app-status-badge', imports: [NgClass], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span\r\n class=\"status-badge\"\r\n [ngClass]=\"variantClassMap[variant]\"\r\n [class.status-badge--sm]=\"size === 'sm'\"\r\n [class.status-badge--md]=\"size === 'md'\"\r\n [class.status-badge--bordered]=\"bordered\"\r\n [class.status-badge--no-border]=\"!bordered\"\r\n role=\"status\"\r\n>\r\n @if (icon.trim()) {\r\n <span class=\"status-badge__icon\" aria-hidden=\"true\">\r\n <i [attr.class]=\"icon\" aria-hidden=\"true\"></i>\r\n </span>\r\n }\r\n <span class=\"status-badge__label\">{{ label }}</span>\r\n</span>\r\n", styles: [":host{display:inline-block;max-width:100%;vertical-align:middle}.status-badge{display:inline-flex;align-items:center;gap:.35rem;max-width:100%;box-sizing:border-box;border-radius:6px;font-weight:600;line-height:1.25;border-style:solid;border-width:1px}.status-badge--bordered{border-color:transparent}.status-badge--no-border{border-color:transparent;border-width:0}.status-badge--sm{padding:.12rem .45rem;font-size:.72rem}.status-badge--md{padding:.2rem .55rem;font-size:.8rem}.status-badge__icon{display:inline-flex;flex-shrink:0;font-size:.85em;line-height:1}.status-badge__label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-badge--success{color:var(--app-color-success, #15803d);background:color-mix(in srgb,var(--app-color-success, #15803d) 12%,var(--app-color-surface, #fff))}.status-badge--success.status-badge--bordered{border-color:color-mix(in srgb,var(--app-color-success, #15803d) 35%,transparent)}.status-badge--error{color:var(--app-color-error, #b91c1c);background:var(--app-color-error-bg-subtle, rgba(185, 28, 28, .12))}.status-badge--error.status-badge--bordered{border-color:color-mix(in srgb,var(--app-color-error-border, #dc2626) 45%,transparent)}.status-badge--warning{color:var(--app-color-warning, #c2410c);background:color-mix(in srgb,var(--app-color-warning, #c2410c) 14%,var(--app-color-surface, #fff))}.status-badge--warning.status-badge--bordered{border-color:color-mix(in srgb,var(--app-color-warning, #c2410c) 38%,transparent)}.status-badge--info{color:var(--app-color-info, #1d4ed8);background:color-mix(in srgb,var(--app-color-info, #1d4ed8) 12%,var(--app-color-surface, #fff))}.status-badge--info.status-badge--bordered{border-color:color-mix(in srgb,var(--app-color-info, #1d4ed8) 35%,transparent)}.status-badge--neutral{color:var(--app-color-text-secondary, #5a7fa3);background:var(--app-color-tab-inactive-bg, #f3f6f9)}.status-badge--neutral.status-badge--bordered{border-color:var(--app-color-border-subtle, rgba(26, 47, 69, .12))}\n"] }]
6950
6950
  }], propDecorators: { label: [{
6951
6951
  type: Input,
6952
6952
  args: [{ required: true }]
@@ -6982,12 +6982,12 @@ class DetailsViewComponent {
6982
6982
  /** Linhas de skeleton em modo loading. */
6983
6983
  this.skeletonPairs = [0, 1, 2, 3];
6984
6984
  }
6985
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DetailsViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6986
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DetailsViewComponent, isStandalone: true, selector: "app-details-view", inputs: { items: "items", projectionOnly: ["projectionOnly", "projectionOnly", booleanAttribute], columns: "columns", loading: ["loading", "loading", booleanAttribute], emptyMessage: "emptyMessage" }, ngImport: i0, template: "<section\r\n class=\"details-view\"\r\n [class.details-view--2col]=\"columns === 2\"\r\n [attr.aria-busy]=\"loading ? true : null\"\r\n>\r\n @if (loading) {\r\n <div class=\"details-view__loading\" aria-live=\"polite\">\r\n @for (_ of skeletonPairs; track $index) {\r\n <div class=\"details-view__skeleton-pair\">\r\n <app-skeleton-text [lines]=\"1\" lineHeight=\"0.65rem\" lastLineWidthPct=\"28\" />\r\n <app-skeleton-text [lines]=\"1\" lineHeight=\"0.85rem\" lastLineWidthPct=\"72\" />\r\n </div>\r\n }\r\n </div>\r\n } @else if (projectionOnly) {\r\n <dl\r\n class=\"details-view__list\"\r\n [class.details-view__list--2col]=\"columns === 2\"\r\n >\r\n <ng-content />\r\n </dl>\r\n } @else if (items.length > 0) {\r\n <dl\r\n class=\"details-view__list\"\r\n [class.details-view__list--2col]=\"columns === 2\"\r\n >\r\n @for (item of items; track $index) {\r\n <div class=\"details-view__pair\">\r\n <dt class=\"details-view__term\">{{ item.label }}</dt>\r\n <dd class=\"details-view__def\">{{ item.value?.trim() ? item.value : emDash }}</dd>\r\n </div>\r\n }\r\n </dl>\r\n } @else {\r\n <p class=\"details-view__empty\">{{ emptyMessage }}</p>\r\n }\r\n</section>\r\n", styles: [":host{display:block;width:100%;min-width:0;box-sizing:border-box}.details-view{width:100%;min-width:0}.details-view__loading{display:flex;flex-direction:column;gap:.75rem}.details-view__skeleton-pair{display:flex;flex-direction:column;gap:.35rem}.details-view__list{display:grid;grid-template-columns:minmax(0,1fr);gap:.85rem 1.25rem;margin:0;min-width:0}@media (min-width: 640px){.details-view__list--2col{grid-template-columns:repeat(2,minmax(0,1fr))}}.details-view__pair{display:grid;grid-template-columns:minmax(0,1fr);gap:.25rem;min-width:0}.details-view__term{margin:0;padding:0;font-size:.78rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--app-color-text-muted, #6b8299);line-height:1.35}.details-view__def{margin:0;padding:0;font-size:.9rem;font-weight:500;color:var(--app-color-text-primary, #1a2f45);line-height:1.45;word-break:break-word;min-width:0}.details-view__empty{margin:0;font-size:.88rem;color:var(--app-color-text-muted, #6b8299);line-height:1.45}\n"], dependencies: [{ kind: "component", type: SkeletonTextComponent, selector: "app-skeleton-text", inputs: ["lines", "lastLineWidthPct", "lineHeight", "gap", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6985
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DetailsViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6986
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DetailsViewComponent, isStandalone: true, selector: "app-details-view", inputs: { items: "items", projectionOnly: ["projectionOnly", "projectionOnly", booleanAttribute], columns: "columns", loading: ["loading", "loading", booleanAttribute], emptyMessage: "emptyMessage" }, ngImport: i0, template: "<section\r\n class=\"details-view\"\r\n [class.details-view--2col]=\"columns === 2\"\r\n [attr.aria-busy]=\"loading ? true : null\"\r\n>\r\n @if (loading) {\r\n <div class=\"details-view__loading\" aria-live=\"polite\">\r\n @for (_ of skeletonPairs; track $index) {\r\n <div class=\"details-view__skeleton-pair\">\r\n <app-skeleton-text [lines]=\"1\" lineHeight=\"0.65rem\" lastLineWidthPct=\"28\" />\r\n <app-skeleton-text [lines]=\"1\" lineHeight=\"0.85rem\" lastLineWidthPct=\"72\" />\r\n </div>\r\n }\r\n </div>\r\n } @else if (projectionOnly) {\r\n <dl\r\n class=\"details-view__list\"\r\n [class.details-view__list--2col]=\"columns === 2\"\r\n >\r\n <ng-content />\r\n </dl>\r\n } @else if (items.length > 0) {\r\n <dl\r\n class=\"details-view__list\"\r\n [class.details-view__list--2col]=\"columns === 2\"\r\n >\r\n @for (item of items; track $index) {\r\n <div class=\"details-view__pair\">\r\n <dt class=\"details-view__term\">{{ item.label }}</dt>\r\n <dd class=\"details-view__def\">{{ item.value?.trim() ? item.value : emDash }}</dd>\r\n </div>\r\n }\r\n </dl>\r\n } @else {\r\n <p class=\"details-view__empty\">{{ emptyMessage }}</p>\r\n }\r\n</section>\r\n", styles: [":host{display:block;width:100%;min-width:0;box-sizing:border-box}.details-view{width:100%;min-width:0}.details-view__loading{display:flex;flex-direction:column;gap:.75rem}.details-view__skeleton-pair{display:flex;flex-direction:column;gap:.35rem}.details-view__list{display:grid;grid-template-columns:minmax(0,1fr);gap:.85rem 1.25rem;margin:0;min-width:0}@media(min-width:640px){.details-view__list--2col{grid-template-columns:repeat(2,minmax(0,1fr))}}.details-view__pair{display:grid;grid-template-columns:minmax(0,1fr);gap:.25rem;min-width:0}.details-view__term{margin:0;padding:0;font-size:.78rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--app-color-text-muted, #6b8299);line-height:1.35}.details-view__def{margin:0;padding:0;font-size:.9rem;font-weight:500;color:var(--app-color-text-primary, #1a2f45);line-height:1.45;word-break:break-word;min-width:0}.details-view__empty{margin:0;font-size:.88rem;color:var(--app-color-text-muted, #6b8299);line-height:1.45}\n"], dependencies: [{ kind: "component", type: SkeletonTextComponent, selector: "app-skeleton-text", inputs: ["lines", "lastLineWidthPct", "lineHeight", "gap", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6987
6987
  }
6988
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DetailsViewComponent, decorators: [{
6988
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DetailsViewComponent, decorators: [{
6989
6989
  type: Component,
6990
- args: [{ selector: 'app-details-view', standalone: true, imports: [SkeletonTextComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section\r\n class=\"details-view\"\r\n [class.details-view--2col]=\"columns === 2\"\r\n [attr.aria-busy]=\"loading ? true : null\"\r\n>\r\n @if (loading) {\r\n <div class=\"details-view__loading\" aria-live=\"polite\">\r\n @for (_ of skeletonPairs; track $index) {\r\n <div class=\"details-view__skeleton-pair\">\r\n <app-skeleton-text [lines]=\"1\" lineHeight=\"0.65rem\" lastLineWidthPct=\"28\" />\r\n <app-skeleton-text [lines]=\"1\" lineHeight=\"0.85rem\" lastLineWidthPct=\"72\" />\r\n </div>\r\n }\r\n </div>\r\n } @else if (projectionOnly) {\r\n <dl\r\n class=\"details-view__list\"\r\n [class.details-view__list--2col]=\"columns === 2\"\r\n >\r\n <ng-content />\r\n </dl>\r\n } @else if (items.length > 0) {\r\n <dl\r\n class=\"details-view__list\"\r\n [class.details-view__list--2col]=\"columns === 2\"\r\n >\r\n @for (item of items; track $index) {\r\n <div class=\"details-view__pair\">\r\n <dt class=\"details-view__term\">{{ item.label }}</dt>\r\n <dd class=\"details-view__def\">{{ item.value?.trim() ? item.value : emDash }}</dd>\r\n </div>\r\n }\r\n </dl>\r\n } @else {\r\n <p class=\"details-view__empty\">{{ emptyMessage }}</p>\r\n }\r\n</section>\r\n", styles: [":host{display:block;width:100%;min-width:0;box-sizing:border-box}.details-view{width:100%;min-width:0}.details-view__loading{display:flex;flex-direction:column;gap:.75rem}.details-view__skeleton-pair{display:flex;flex-direction:column;gap:.35rem}.details-view__list{display:grid;grid-template-columns:minmax(0,1fr);gap:.85rem 1.25rem;margin:0;min-width:0}@media (min-width: 640px){.details-view__list--2col{grid-template-columns:repeat(2,minmax(0,1fr))}}.details-view__pair{display:grid;grid-template-columns:minmax(0,1fr);gap:.25rem;min-width:0}.details-view__term{margin:0;padding:0;font-size:.78rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--app-color-text-muted, #6b8299);line-height:1.35}.details-view__def{margin:0;padding:0;font-size:.9rem;font-weight:500;color:var(--app-color-text-primary, #1a2f45);line-height:1.45;word-break:break-word;min-width:0}.details-view__empty{margin:0;font-size:.88rem;color:var(--app-color-text-muted, #6b8299);line-height:1.45}\n"] }]
6990
+ args: [{ selector: 'app-details-view', imports: [SkeletonTextComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section\r\n class=\"details-view\"\r\n [class.details-view--2col]=\"columns === 2\"\r\n [attr.aria-busy]=\"loading ? true : null\"\r\n>\r\n @if (loading) {\r\n <div class=\"details-view__loading\" aria-live=\"polite\">\r\n @for (_ of skeletonPairs; track $index) {\r\n <div class=\"details-view__skeleton-pair\">\r\n <app-skeleton-text [lines]=\"1\" lineHeight=\"0.65rem\" lastLineWidthPct=\"28\" />\r\n <app-skeleton-text [lines]=\"1\" lineHeight=\"0.85rem\" lastLineWidthPct=\"72\" />\r\n </div>\r\n }\r\n </div>\r\n } @else if (projectionOnly) {\r\n <dl\r\n class=\"details-view__list\"\r\n [class.details-view__list--2col]=\"columns === 2\"\r\n >\r\n <ng-content />\r\n </dl>\r\n } @else if (items.length > 0) {\r\n <dl\r\n class=\"details-view__list\"\r\n [class.details-view__list--2col]=\"columns === 2\"\r\n >\r\n @for (item of items; track $index) {\r\n <div class=\"details-view__pair\">\r\n <dt class=\"details-view__term\">{{ item.label }}</dt>\r\n <dd class=\"details-view__def\">{{ item.value?.trim() ? item.value : emDash }}</dd>\r\n </div>\r\n }\r\n </dl>\r\n } @else {\r\n <p class=\"details-view__empty\">{{ emptyMessage }}</p>\r\n }\r\n</section>\r\n", styles: [":host{display:block;width:100%;min-width:0;box-sizing:border-box}.details-view{width:100%;min-width:0}.details-view__loading{display:flex;flex-direction:column;gap:.75rem}.details-view__skeleton-pair{display:flex;flex-direction:column;gap:.35rem}.details-view__list{display:grid;grid-template-columns:minmax(0,1fr);gap:.85rem 1.25rem;margin:0;min-width:0}@media(min-width:640px){.details-view__list--2col{grid-template-columns:repeat(2,minmax(0,1fr))}}.details-view__pair{display:grid;grid-template-columns:minmax(0,1fr);gap:.25rem;min-width:0}.details-view__term{margin:0;padding:0;font-size:.78rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--app-color-text-muted, #6b8299);line-height:1.35}.details-view__def{margin:0;padding:0;font-size:.9rem;font-weight:500;color:var(--app-color-text-primary, #1a2f45);line-height:1.45;word-break:break-word;min-width:0}.details-view__empty{margin:0;font-size:.88rem;color:var(--app-color-text-muted, #6b8299);line-height:1.45}\n"] }]
6991
6991
  }], propDecorators: { items: [{
6992
6992
  type: Input
6993
6993
  }], projectionOnly: [{
@@ -7007,10 +7007,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
7007
7007
  * O host usa `display: contents` para manter `<dl>` > `<dt>`/`<dd>` válidos.
7008
7008
  */
7009
7009
  class DetailsFieldComponent {
7010
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DetailsFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7011
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DetailsFieldComponent, isStandalone: true, selector: "app-details-field", inputs: { label: "label" }, host: { styleAttribute: "display: contents", classAttribute: "details-field-host" }, ngImport: i0, template: "<dt class=\"details-field__label\">{{ label }}</dt>\r\n<dd class=\"details-field__value\">\r\n <ng-content />\r\n</dd>\r\n", styles: [".details-field__label{margin:0;padding:0;font-size:.78rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--app-color-text-muted, #6b8299);line-height:1.35}.details-field__value{margin:0;padding:0;font-size:.9rem;font-weight:500;color:var(--app-color-text-primary, #1a2f45);line-height:1.45;word-break:break-word;min-width:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7010
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DetailsFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7011
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: DetailsFieldComponent, isStandalone: true, selector: "app-details-field", inputs: { label: "label" }, host: { styleAttribute: "display: contents", classAttribute: "details-field-host" }, ngImport: i0, template: "<dt class=\"details-field__label\">{{ label }}</dt>\r\n<dd class=\"details-field__value\">\r\n <ng-content />\r\n</dd>\r\n", styles: [".details-field__label{margin:0;padding:0;font-size:.78rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--app-color-text-muted, #6b8299);line-height:1.35}.details-field__value{margin:0;padding:0;font-size:.9rem;font-weight:500;color:var(--app-color-text-primary, #1a2f45);line-height:1.45;word-break:break-word;min-width:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7012
7012
  }
7013
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DetailsFieldComponent, decorators: [{
7013
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DetailsFieldComponent, decorators: [{
7014
7014
  type: Component,
7015
7015
  args: [{ selector: 'app-details-field', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
7016
7016
  class: 'details-field-host',
@@ -7051,10 +7051,10 @@ class StatCardComponent {
7051
7051
  this.cardActivate.emit();
7052
7052
  }
7053
7053
  }
7054
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StatCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7055
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: StatCardComponent, isStandalone: true, selector: "app-stat-card", inputs: { title: "title", value: "value", description: "description", icon: "icon", delta: "delta", deltaTone: "deltaTone", clickable: ["clickable", "clickable", booleanAttribute] }, outputs: { cardActivate: "cardActivate" }, ngImport: i0, template: "<article\r\n class=\"stat-card\"\r\n [class.stat-card--clickable]=\"clickable\"\r\n [attr.role]=\"clickable ? 'button' : null\"\r\n [attr.tabindex]=\"clickable ? 0 : null\"\r\n (click)=\"onActivate($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n>\r\n <div class=\"stat-card__header\">\r\n @if (icon.trim()) {\r\n <span class=\"stat-card__icon\" aria-hidden=\"true\">\r\n <i [attr.class]=\"icon\" aria-hidden=\"true\"></i>\r\n </span>\r\n }\r\n <h3 class=\"stat-card__title\">{{ title }}</h3>\r\n </div>\r\n <p class=\"stat-card__value\">{{ value }}</p>\r\n @if (description.trim()) {\r\n <p class=\"stat-card__description\">{{ description }}</p>\r\n }\r\n @if (delta.trim()) {\r\n <p\r\n class=\"stat-card__delta\"\r\n [class.stat-card__delta--positive]=\"deltaTone === 'positive'\"\r\n [class.stat-card__delta--negative]=\"deltaTone === 'negative'\"\r\n [class.stat-card__delta--neutral]=\"deltaTone === 'neutral'\"\r\n >\r\n <span class=\"stat-card__delta-text\">{{ delta }}</span>\r\n </p>\r\n }\r\n</article>\r\n", styles: [":host{display:block;min-width:0;height:100%}.stat-card{box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1));background:var(--app-color-surface, #fff);padding:1rem 1.05rem;transition:border-color .15s ease,box-shadow .15s ease;height:100%}.stat-card--clickable{cursor:pointer}.stat-card--clickable:hover{border-color:var(--app-color-selected-border, rgba(43, 127, 217, .28));box-shadow:0 1px 0 var(--app-color-border-subtle, rgba(26, 47, 69, .04))}.stat-card--clickable:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.stat-card__header{display:flex;align-items:flex-start;gap:.5rem;margin-bottom:.45rem;min-width:0}.stat-card__icon{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:8px;font-size:.95rem;color:var(--app-color-primary, #2b7fd9);background:var(--app-color-primary-muted, rgba(43, 127, 217, .14));border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}.stat-card__title{margin:0;flex:1 1 auto;min-width:0;font-size:.82rem;font-weight:600;line-height:1.35;color:var(--app-color-text-muted, #6b8299);text-transform:uppercase;letter-spacing:.03em}.stat-card__value{margin:0 0 .35rem;font-size:1.45rem;font-weight:700;line-height:1.2;letter-spacing:-.02em;color:var(--app-color-text-primary, #1a2f45);word-break:break-word}.stat-card__description{margin:0 0 .35rem;font-size:.82rem;line-height:1.4;color:var(--app-color-text-secondary, #5a7fa3)}.stat-card__delta{margin:0;font-size:.8rem;font-weight:600;line-height:1.35}.stat-card__delta--positive{color:var(--app-color-success, #15803d)}.stat-card__delta--negative{color:var(--app-color-error, #b91c1c)}.stat-card__delta--neutral{color:var(--app-color-text-muted, #6b8299)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7054
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: StatCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7055
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: StatCardComponent, isStandalone: true, selector: "app-stat-card", inputs: { title: "title", value: "value", description: "description", icon: "icon", delta: "delta", deltaTone: "deltaTone", clickable: ["clickable", "clickable", booleanAttribute] }, outputs: { cardActivate: "cardActivate" }, ngImport: i0, template: "<article\r\n class=\"stat-card\"\r\n [class.stat-card--clickable]=\"clickable\"\r\n [attr.role]=\"clickable ? 'button' : null\"\r\n [attr.tabindex]=\"clickable ? 0 : null\"\r\n (click)=\"onActivate($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n>\r\n <div class=\"stat-card__header\">\r\n @if (icon.trim()) {\r\n <span class=\"stat-card__icon\" aria-hidden=\"true\">\r\n <i [attr.class]=\"icon\" aria-hidden=\"true\"></i>\r\n </span>\r\n }\r\n <h3 class=\"stat-card__title\">{{ title }}</h3>\r\n </div>\r\n <p class=\"stat-card__value\">{{ value }}</p>\r\n @if (description.trim()) {\r\n <p class=\"stat-card__description\">{{ description }}</p>\r\n }\r\n @if (delta.trim()) {\r\n <p\r\n class=\"stat-card__delta\"\r\n [class.stat-card__delta--positive]=\"deltaTone === 'positive'\"\r\n [class.stat-card__delta--negative]=\"deltaTone === 'negative'\"\r\n [class.stat-card__delta--neutral]=\"deltaTone === 'neutral'\"\r\n >\r\n <span class=\"stat-card__delta-text\">{{ delta }}</span>\r\n </p>\r\n }\r\n</article>\r\n", styles: [":host{display:block;min-width:0;height:100%}.stat-card{box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1));background:var(--app-color-surface, #fff);padding:1rem 1.05rem;transition:border-color .15s ease,box-shadow .15s ease;height:100%}.stat-card--clickable{cursor:pointer}.stat-card--clickable:hover{border-color:var(--app-color-selected-border, rgba(43, 127, 217, .28));box-shadow:0 1px 0 var(--app-color-border-subtle, rgba(26, 47, 69, .04))}.stat-card--clickable:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.stat-card__header{display:flex;align-items:flex-start;gap:.5rem;margin-bottom:.45rem;min-width:0}.stat-card__icon{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:8px;font-size:.95rem;color:var(--app-color-primary, #2b7fd9);background:var(--app-color-primary-muted, rgba(43, 127, 217, .14));border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}.stat-card__title{margin:0;flex:1 1 auto;min-width:0;font-size:.82rem;font-weight:600;line-height:1.35;color:var(--app-color-text-muted, #6b8299);text-transform:uppercase;letter-spacing:.03em}.stat-card__value{margin:0 0 .35rem;font-size:1.45rem;font-weight:700;line-height:1.2;letter-spacing:-.02em;color:var(--app-color-text-primary, #1a2f45);word-break:break-word}.stat-card__description{margin:0 0 .35rem;font-size:.82rem;line-height:1.4;color:var(--app-color-text-secondary, #5a7fa3)}.stat-card__delta{margin:0;font-size:.8rem;font-weight:600;line-height:1.35}.stat-card__delta--positive{color:var(--app-color-success, #15803d)}.stat-card__delta--negative{color:var(--app-color-error, #b91c1c)}.stat-card__delta--neutral{color:var(--app-color-text-muted, #6b8299)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7056
7056
  }
7057
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StatCardComponent, decorators: [{
7057
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: StatCardComponent, decorators: [{
7058
7058
  type: Component,
7059
7059
  args: [{ selector: 'app-stat-card', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<article\r\n class=\"stat-card\"\r\n [class.stat-card--clickable]=\"clickable\"\r\n [attr.role]=\"clickable ? 'button' : null\"\r\n [attr.tabindex]=\"clickable ? 0 : null\"\r\n (click)=\"onActivate($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n>\r\n <div class=\"stat-card__header\">\r\n @if (icon.trim()) {\r\n <span class=\"stat-card__icon\" aria-hidden=\"true\">\r\n <i [attr.class]=\"icon\" aria-hidden=\"true\"></i>\r\n </span>\r\n }\r\n <h3 class=\"stat-card__title\">{{ title }}</h3>\r\n </div>\r\n <p class=\"stat-card__value\">{{ value }}</p>\r\n @if (description.trim()) {\r\n <p class=\"stat-card__description\">{{ description }}</p>\r\n }\r\n @if (delta.trim()) {\r\n <p\r\n class=\"stat-card__delta\"\r\n [class.stat-card__delta--positive]=\"deltaTone === 'positive'\"\r\n [class.stat-card__delta--negative]=\"deltaTone === 'negative'\"\r\n [class.stat-card__delta--neutral]=\"deltaTone === 'neutral'\"\r\n >\r\n <span class=\"stat-card__delta-text\">{{ delta }}</span>\r\n </p>\r\n }\r\n</article>\r\n", styles: [":host{display:block;min-width:0;height:100%}.stat-card{box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1));background:var(--app-color-surface, #fff);padding:1rem 1.05rem;transition:border-color .15s ease,box-shadow .15s ease;height:100%}.stat-card--clickable{cursor:pointer}.stat-card--clickable:hover{border-color:var(--app-color-selected-border, rgba(43, 127, 217, .28));box-shadow:0 1px 0 var(--app-color-border-subtle, rgba(26, 47, 69, .04))}.stat-card--clickable:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.stat-card__header{display:flex;align-items:flex-start;gap:.5rem;margin-bottom:.45rem;min-width:0}.stat-card__icon{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:8px;font-size:.95rem;color:var(--app-color-primary, #2b7fd9);background:var(--app-color-primary-muted, rgba(43, 127, 217, .14));border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}.stat-card__title{margin:0;flex:1 1 auto;min-width:0;font-size:.82rem;font-weight:600;line-height:1.35;color:var(--app-color-text-muted, #6b8299);text-transform:uppercase;letter-spacing:.03em}.stat-card__value{margin:0 0 .35rem;font-size:1.45rem;font-weight:700;line-height:1.2;letter-spacing:-.02em;color:var(--app-color-text-primary, #1a2f45);word-break:break-word}.stat-card__description{margin:0 0 .35rem;font-size:.82rem;line-height:1.4;color:var(--app-color-text-secondary, #5a7fa3)}.stat-card__delta{margin:0;font-size:.8rem;font-weight:600;line-height:1.35}.stat-card__delta--positive{color:var(--app-color-success, #15803d)}.stat-card__delta--negative{color:var(--app-color-error, #b91c1c)}.stat-card__delta--neutral{color:var(--app-color-text-muted, #6b8299)}\n"] }]
7060
7060
  }], propDecorators: { title: [{
@@ -7111,10 +7111,10 @@ class ListItemComponent {
7111
7111
  }
7112
7112
  this.itemActivate.emit();
7113
7113
  }
7114
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7115
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ListItemComponent, isStandalone: true, selector: "app-list-item", inputs: { title: "title", subtitle: "subtitle", clickable: ["clickable", "clickable", booleanAttribute], selectable: ["selectable", "selectable", booleanAttribute] }, outputs: { itemActivate: "itemActivate" }, host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0, template: "<div\r\n class=\"list-item\"\r\n [class.list-item--clickable]=\"clickable\"\r\n [class.list-item--selectable]=\"selectable\"\r\n role=\"listitem\"\r\n [attr.tabindex]=\"clickable ? 0 : null\"\r\n (click)=\"onClick($event)\"\r\n>\r\n <div class=\"list-item__main\">\r\n <h4 class=\"list-item__title\">{{ title }}</h4>\r\n @if (subtitle.trim()) {\r\n <p class=\"list-item__subtitle\">{{ subtitle }}</p>\r\n }\r\n <div class=\"list-item__extra\">\r\n <ng-content />\r\n </div>\r\n </div>\r\n <div class=\"list-item__status\">\r\n <ng-content select=\"[list-item-status]\" />\r\n </div>\r\n <div class=\"list-item__actions\">\r\n <ng-content select=\"[list-item-actions]\" />\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.list-item{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.5rem .75rem;width:100%;box-sizing:border-box;padding:.65rem .75rem;border-radius:8px;border:1px solid transparent;background:transparent;text-align:left;transition:background .12s ease,border-color .12s ease}.list-item:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .06));border-color:var(--app-color-border-subtle, rgba(26, 47, 69, .08))}.list-item--clickable{cursor:pointer}.list-item--clickable:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.list-item--selectable{border-style:dashed;border-color:var(--app-color-border-subtle, rgba(26, 47, 69, .06))}.list-item__main{flex:1 1 12rem;min-width:0}.list-item__title{margin:0;font-size:.92rem;font-weight:600;line-height:1.35;color:var(--app-color-text-primary, #1a2f45);word-break:break-word}.list-item__subtitle{margin:.15rem 0 0;font-size:.82rem;line-height:1.4;color:var(--app-color-text-muted, #6b8299)}.list-item__extra{margin-top:.35rem;min-width:0;font-size:.84rem;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3)}.list-item__status{flex:0 0 auto;display:flex;align-items:center;min-height:1.75rem}.list-item__actions{flex:0 0 auto;display:flex;align-items:center;justify-content:flex-end;margin-left:auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7114
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7115
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ListItemComponent, isStandalone: true, selector: "app-list-item", inputs: { title: "title", subtitle: "subtitle", clickable: ["clickable", "clickable", booleanAttribute], selectable: ["selectable", "selectable", booleanAttribute] }, outputs: { itemActivate: "itemActivate" }, host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0, template: "<div\r\n class=\"list-item\"\r\n [class.list-item--clickable]=\"clickable\"\r\n [class.list-item--selectable]=\"selectable\"\r\n role=\"listitem\"\r\n [attr.tabindex]=\"clickable ? 0 : null\"\r\n (click)=\"onClick($event)\"\r\n>\r\n <div class=\"list-item__main\">\r\n <h4 class=\"list-item__title\">{{ title }}</h4>\r\n @if (subtitle.trim()) {\r\n <p class=\"list-item__subtitle\">{{ subtitle }}</p>\r\n }\r\n <div class=\"list-item__extra\">\r\n <ng-content />\r\n </div>\r\n </div>\r\n <div class=\"list-item__status\">\r\n <ng-content select=\"[list-item-status]\" />\r\n </div>\r\n <div class=\"list-item__actions\">\r\n <ng-content select=\"[list-item-actions]\" />\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.list-item{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.5rem .75rem;width:100%;box-sizing:border-box;padding:.65rem .75rem;border-radius:8px;border:1px solid transparent;background:transparent;text-align:left;transition:background .12s ease,border-color .12s ease}.list-item:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .06));border-color:var(--app-color-border-subtle, rgba(26, 47, 69, .08))}.list-item--clickable{cursor:pointer}.list-item--clickable:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.list-item--selectable{border-style:dashed;border-color:var(--app-color-border-subtle, rgba(26, 47, 69, .06))}.list-item__main{flex:1 1 12rem;min-width:0}.list-item__title{margin:0;font-size:.92rem;font-weight:600;line-height:1.35;color:var(--app-color-text-primary, #1a2f45);word-break:break-word}.list-item__subtitle{margin:.15rem 0 0;font-size:.82rem;line-height:1.4;color:var(--app-color-text-muted, #6b8299)}.list-item__extra{margin-top:.35rem;min-width:0;font-size:.84rem;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3)}.list-item__status{flex:0 0 auto;display:flex;align-items:center;min-height:1.75rem}.list-item__actions{flex:0 0 auto;display:flex;align-items:center;justify-content:flex-end;margin-left:auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7116
7116
  }
7117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ListItemComponent, decorators: [{
7117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ListItemComponent, decorators: [{
7118
7118
  type: Component,
7119
7119
  args: [{ selector: 'app-list-item', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"list-item\"\r\n [class.list-item--clickable]=\"clickable\"\r\n [class.list-item--selectable]=\"selectable\"\r\n role=\"listitem\"\r\n [attr.tabindex]=\"clickable ? 0 : null\"\r\n (click)=\"onClick($event)\"\r\n>\r\n <div class=\"list-item__main\">\r\n <h4 class=\"list-item__title\">{{ title }}</h4>\r\n @if (subtitle.trim()) {\r\n <p class=\"list-item__subtitle\">{{ subtitle }}</p>\r\n }\r\n <div class=\"list-item__extra\">\r\n <ng-content />\r\n </div>\r\n </div>\r\n <div class=\"list-item__status\">\r\n <ng-content select=\"[list-item-status]\" />\r\n </div>\r\n <div class=\"list-item__actions\">\r\n <ng-content select=\"[list-item-actions]\" />\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.list-item{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.5rem .75rem;width:100%;box-sizing:border-box;padding:.65rem .75rem;border-radius:8px;border:1px solid transparent;background:transparent;text-align:left;transition:background .12s ease,border-color .12s ease}.list-item:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .06));border-color:var(--app-color-border-subtle, rgba(26, 47, 69, .08))}.list-item--clickable{cursor:pointer}.list-item--clickable:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.list-item--selectable{border-style:dashed;border-color:var(--app-color-border-subtle, rgba(26, 47, 69, .06))}.list-item__main{flex:1 1 12rem;min-width:0}.list-item__title{margin:0;font-size:.92rem;font-weight:600;line-height:1.35;color:var(--app-color-text-primary, #1a2f45);word-break:break-word}.list-item__subtitle{margin:.15rem 0 0;font-size:.82rem;line-height:1.4;color:var(--app-color-text-muted, #6b8299)}.list-item__extra{margin-top:.35rem;min-width:0;font-size:.84rem;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3)}.list-item__status{flex:0 0 auto;display:flex;align-items:center;min-height:1.75rem}.list-item__actions{flex:0 0 auto;display:flex;align-items:center;justify-content:flex-end;margin-left:auto}\n"] }]
7120
7120
  }], propDecorators: { title: [{
@@ -7149,12 +7149,12 @@ class DataListComponent {
7149
7149
  /** Linhas de skeleton em modo loading. */
7150
7150
  this.skeletonRows = 5;
7151
7151
  }
7152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7153
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DataListComponent, isStandalone: true, selector: "app-data-list", inputs: { loading: ["loading", "loading", booleanAttribute], empty: ["empty", "empty", booleanAttribute], emptyTitle: "emptyTitle", emptyDescription: "emptyDescription", emptyIconClass: "emptyIconClass", skeletonRows: "skeletonRows" }, ngImport: i0, template: "<div class=\"data-list\" [attr.aria-busy]=\"loading ? true : null\">\r\n @if (loading) {\r\n <div class=\"data-list__loading\" role=\"status\" aria-live=\"polite\">\r\n <app-skeleton-list\r\n [rows]=\"skeletonRows\"\r\n [leading]=\"true\"\r\n rowGap=\"0.5rem\"\r\n lineHeight=\"0.85rem\"\r\n />\r\n </div>\r\n } @else if (empty) {\r\n <app-empty-state\r\n [message]=\"emptyTitle\"\r\n [description]=\"emptyDescription\"\r\n [iconClass]=\"emptyIconClass\"\r\n [embed]=\"true\"\r\n />\r\n } @else {\r\n <div class=\"data-list__items\" role=\"list\">\r\n <ng-content />\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.data-list{width:100%;min-width:0;box-sizing:border-box}.data-list__loading{padding:.25rem 0}.data-list__items{display:flex;flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none}\n"], dependencies: [{ kind: "component", type: SkeletonListComponent, selector: "app-skeleton-list", inputs: ["rows", "leading", "rowGap", "lineHeight", "animate"] }, { kind: "component", type: EmptyStateComponent, selector: "app-empty-state", inputs: ["message", "description", "iconClass", "variant", "embed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7152
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DataListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7153
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DataListComponent, isStandalone: true, selector: "app-data-list", inputs: { loading: ["loading", "loading", booleanAttribute], empty: ["empty", "empty", booleanAttribute], emptyTitle: "emptyTitle", emptyDescription: "emptyDescription", emptyIconClass: "emptyIconClass", skeletonRows: "skeletonRows" }, ngImport: i0, template: "<div class=\"data-list\" [attr.aria-busy]=\"loading ? true : null\">\r\n @if (loading) {\r\n <div class=\"data-list__loading\" role=\"status\" aria-live=\"polite\">\r\n <app-skeleton-list\r\n [rows]=\"skeletonRows\"\r\n [leading]=\"true\"\r\n rowGap=\"0.5rem\"\r\n lineHeight=\"0.85rem\"\r\n />\r\n </div>\r\n } @else if (empty) {\r\n <app-empty-state\r\n [message]=\"emptyTitle\"\r\n [description]=\"emptyDescription\"\r\n [iconClass]=\"emptyIconClass\"\r\n [embed]=\"true\"\r\n />\r\n } @else {\r\n <div class=\"data-list__items\" role=\"list\">\r\n <ng-content />\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.data-list{width:100%;min-width:0;box-sizing:border-box}.data-list__loading{padding:.25rem 0}.data-list__items{display:flex;flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none}\n"], dependencies: [{ kind: "component", type: SkeletonListComponent, selector: "app-skeleton-list", inputs: ["rows", "leading", "rowGap", "lineHeight", "animate"] }, { kind: "component", type: EmptyStateComponent, selector: "app-empty-state", inputs: ["message", "description", "iconClass", "variant", "embed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7154
7154
  }
7155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataListComponent, decorators: [{
7155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DataListComponent, decorators: [{
7156
7156
  type: Component,
7157
- args: [{ selector: 'app-data-list', standalone: true, imports: [SkeletonListComponent, EmptyStateComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"data-list\" [attr.aria-busy]=\"loading ? true : null\">\r\n @if (loading) {\r\n <div class=\"data-list__loading\" role=\"status\" aria-live=\"polite\">\r\n <app-skeleton-list\r\n [rows]=\"skeletonRows\"\r\n [leading]=\"true\"\r\n rowGap=\"0.5rem\"\r\n lineHeight=\"0.85rem\"\r\n />\r\n </div>\r\n } @else if (empty) {\r\n <app-empty-state\r\n [message]=\"emptyTitle\"\r\n [description]=\"emptyDescription\"\r\n [iconClass]=\"emptyIconClass\"\r\n [embed]=\"true\"\r\n />\r\n } @else {\r\n <div class=\"data-list__items\" role=\"list\">\r\n <ng-content />\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.data-list{width:100%;min-width:0;box-sizing:border-box}.data-list__loading{padding:.25rem 0}.data-list__items{display:flex;flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none}\n"] }]
7157
+ args: [{ selector: 'app-data-list', imports: [SkeletonListComponent, EmptyStateComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"data-list\" [attr.aria-busy]=\"loading ? true : null\">\r\n @if (loading) {\r\n <div class=\"data-list__loading\" role=\"status\" aria-live=\"polite\">\r\n <app-skeleton-list\r\n [rows]=\"skeletonRows\"\r\n [leading]=\"true\"\r\n rowGap=\"0.5rem\"\r\n lineHeight=\"0.85rem\"\r\n />\r\n </div>\r\n } @else if (empty) {\r\n <app-empty-state\r\n [message]=\"emptyTitle\"\r\n [description]=\"emptyDescription\"\r\n [iconClass]=\"emptyIconClass\"\r\n [embed]=\"true\"\r\n />\r\n } @else {\r\n <div class=\"data-list__items\" role=\"list\">\r\n <ng-content />\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.data-list{width:100%;min-width:0;box-sizing:border-box}.data-list__loading{padding:.25rem 0}.data-list__items{display:flex;flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none}\n"] }]
7158
7158
  }], propDecorators: { loading: [{
7159
7159
  type: Input,
7160
7160
  args: [{ transform: booleanAttribute }]
@@ -7181,10 +7181,10 @@ class DashboardSectionComponent {
7181
7181
  this.subtitle = '';
7182
7182
  this.titleId = `app-dashboard-section-title-${++dashboardSectionSeq}`;
7183
7183
  }
7184
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7185
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DashboardSectionComponent, isStandalone: true, selector: "app-dashboard-section", inputs: { title: "title", subtitle: "subtitle" }, ngImport: i0, template: "<section class=\"dashboard-section\" [attr.aria-labelledby]=\"titleId\">\r\n <header class=\"dashboard-section__header\">\r\n <div class=\"dashboard-section__headline\">\r\n <h2 class=\"dashboard-section__title\" [id]=\"titleId\">{{ title }}</h2>\r\n @if (subtitle.trim()) {\r\n <p class=\"dashboard-section__subtitle\">{{ subtitle }}</p>\r\n }\r\n </div>\r\n <div class=\"dashboard-section__actions\">\r\n <ng-content select=\"[dashboard-section-actions]\" />\r\n </div>\r\n </header>\r\n <div class=\"dashboard-section__body\">\r\n <ng-content />\r\n </div>\r\n</section>\r\n", styles: [":host{display:block;width:100%;min-width:0}.dashboard-section{box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1));background:var(--app-color-surface, #fff);padding:0;transition:border-color .15s ease,box-shadow .15s ease;display:flex;flex-direction:column;min-width:0;overflow:hidden}.dashboard-section__header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.5rem .75rem;padding:.85rem 1rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}.dashboard-section__headline{flex:1 1 12rem;min-width:0}.dashboard-section__title{margin:0;font-size:1rem;font-weight:600;line-height:1.35;color:var(--app-color-text-primary, #1a2f45)}.dashboard-section__subtitle{margin:.25rem 0 0;font-size:.84rem;line-height:1.4;color:var(--app-color-text-muted, #6b8299)}.dashboard-section__actions{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.5rem;min-width:0}.dashboard-section__actions:empty{display:none}.dashboard-section__body{padding:.85rem 1rem 1rem;min-width:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7184
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DashboardSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7185
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DashboardSectionComponent, isStandalone: true, selector: "app-dashboard-section", inputs: { title: "title", subtitle: "subtitle" }, ngImport: i0, template: "<section class=\"dashboard-section\" [attr.aria-labelledby]=\"titleId\">\r\n <header class=\"dashboard-section__header\">\r\n <div class=\"dashboard-section__headline\">\r\n <h2 class=\"dashboard-section__title\" [id]=\"titleId\">{{ title }}</h2>\r\n @if (subtitle.trim()) {\r\n <p class=\"dashboard-section__subtitle\">{{ subtitle }}</p>\r\n }\r\n </div>\r\n <div class=\"dashboard-section__actions\">\r\n <ng-content select=\"[dashboard-section-actions]\" />\r\n </div>\r\n </header>\r\n <div class=\"dashboard-section__body\">\r\n <ng-content />\r\n </div>\r\n</section>\r\n", styles: [":host{display:block;width:100%;min-width:0}.dashboard-section{box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1));background:var(--app-color-surface, #fff);padding:0;transition:border-color .15s ease,box-shadow .15s ease;display:flex;flex-direction:column;min-width:0;overflow:hidden}.dashboard-section__header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.5rem .75rem;padding:.85rem 1rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}.dashboard-section__headline{flex:1 1 12rem;min-width:0}.dashboard-section__title{margin:0;font-size:1rem;font-weight:600;line-height:1.35;color:var(--app-color-text-primary, #1a2f45)}.dashboard-section__subtitle{margin:.25rem 0 0;font-size:.84rem;line-height:1.4;color:var(--app-color-text-muted, #6b8299)}.dashboard-section__actions{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.5rem;min-width:0}.dashboard-section__actions:empty{display:none}.dashboard-section__body{padding:.85rem 1rem 1rem;min-width:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7186
7186
  }
7187
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardSectionComponent, decorators: [{
7187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DashboardSectionComponent, decorators: [{
7188
7188
  type: Component,
7189
7189
  args: [{ selector: 'app-dashboard-section', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"dashboard-section\" [attr.aria-labelledby]=\"titleId\">\r\n <header class=\"dashboard-section__header\">\r\n <div class=\"dashboard-section__headline\">\r\n <h2 class=\"dashboard-section__title\" [id]=\"titleId\">{{ title }}</h2>\r\n @if (subtitle.trim()) {\r\n <p class=\"dashboard-section__subtitle\">{{ subtitle }}</p>\r\n }\r\n </div>\r\n <div class=\"dashboard-section__actions\">\r\n <ng-content select=\"[dashboard-section-actions]\" />\r\n </div>\r\n </header>\r\n <div class=\"dashboard-section__body\">\r\n <ng-content />\r\n </div>\r\n</section>\r\n", styles: [":host{display:block;width:100%;min-width:0}.dashboard-section{box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1));background:var(--app-color-surface, #fff);padding:0;transition:border-color .15s ease,box-shadow .15s ease;display:flex;flex-direction:column;min-width:0;overflow:hidden}.dashboard-section__header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.5rem .75rem;padding:.85rem 1rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}.dashboard-section__headline{flex:1 1 12rem;min-width:0}.dashboard-section__title{margin:0;font-size:1rem;font-weight:600;line-height:1.35;color:var(--app-color-text-primary, #1a2f45)}.dashboard-section__subtitle{margin:.25rem 0 0;font-size:.84rem;line-height:1.4;color:var(--app-color-text-muted, #6b8299)}.dashboard-section__actions{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.5rem;min-width:0}.dashboard-section__actions:empty{display:none}.dashboard-section__body{padding:.85rem 1rem 1rem;min-width:0}\n"] }]
7190
7190
  }], propDecorators: { title: [{
@@ -7203,12 +7203,12 @@ class TableToolbarComponent {
7203
7203
  /** Ex.: `128 resultados` ou `Nenhum resultado`. */
7204
7204
  this.resultCountLabel = '';
7205
7205
  }
7206
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7207
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TableToolbarComponent, isStandalone: true, selector: "app-table-toolbar", inputs: { resultCountLabel: "resultCountLabel" }, ngImport: i0, template: "<app-data-toolbar class=\"table-toolbar__data-toolbar\">\r\n <div toolbar-start class=\"table-toolbar__start\">\r\n <div class=\"table-toolbar__search-filters\">\r\n <ng-content select=\"[tableToolbarSearch]\" />\r\n <ng-content select=\"[tableToolbarFilters]\" />\r\n </div>\r\n @if (resultCountLabel.trim()) {\r\n <p class=\"table-toolbar__count\" aria-live=\"polite\">{{ resultCountLabel }}</p>\r\n }\r\n </div>\r\n <div toolbar-end class=\"table-toolbar__end\">\r\n <ng-content select=\"[tableToolbarActions]\" />\r\n </div>\r\n</app-data-toolbar>\r\n", styles: [":host{display:block;width:100%;min-width:0}.table-toolbar__data-toolbar{width:100%}.table-toolbar__start{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem .85rem;min-width:0;flex:1 1 auto}.table-toolbar__search-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem .75rem;min-width:0;flex:1 1 14rem}.table-toolbar__count{margin:0;flex:0 0 auto;font-size:.82rem;font-weight:500;line-height:1.35;color:var(--app-color-text-muted, #6b8299);white-space:nowrap}.table-toolbar__end{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.5rem}\n"], dependencies: [{ kind: "component", type: DataToolbarComponent, selector: "app-data-toolbar" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7206
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TableToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7207
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: TableToolbarComponent, isStandalone: true, selector: "app-table-toolbar", inputs: { resultCountLabel: "resultCountLabel" }, ngImport: i0, template: "<app-data-toolbar class=\"table-toolbar__data-toolbar\">\r\n <div toolbar-start class=\"table-toolbar__start\">\r\n <div class=\"table-toolbar__search-filters\">\r\n <ng-content select=\"[tableToolbarSearch]\" />\r\n <ng-content select=\"[tableToolbarFilters]\" />\r\n </div>\r\n @if (resultCountLabel.trim()) {\r\n <p class=\"table-toolbar__count\" aria-live=\"polite\">{{ resultCountLabel }}</p>\r\n }\r\n </div>\r\n <div toolbar-end class=\"table-toolbar__end\">\r\n <ng-content select=\"[tableToolbarActions]\" />\r\n </div>\r\n</app-data-toolbar>\r\n", styles: [":host{display:block;width:100%;min-width:0}.table-toolbar__data-toolbar{width:100%}.table-toolbar__start{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem .85rem;min-width:0;flex:1 1 auto}.table-toolbar__search-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem .75rem;min-width:0;flex:1 1 14rem}.table-toolbar__count{margin:0;flex:0 0 auto;font-size:.82rem;font-weight:500;line-height:1.35;color:var(--app-color-text-muted, #6b8299);white-space:nowrap}.table-toolbar__end{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.5rem}\n"], dependencies: [{ kind: "component", type: DataToolbarComponent, selector: "app-data-toolbar" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7208
7208
  }
7209
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableToolbarComponent, decorators: [{
7209
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TableToolbarComponent, decorators: [{
7210
7210
  type: Component,
7211
- args: [{ selector: 'app-table-toolbar', standalone: true, imports: [DataToolbarComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-data-toolbar class=\"table-toolbar__data-toolbar\">\r\n <div toolbar-start class=\"table-toolbar__start\">\r\n <div class=\"table-toolbar__search-filters\">\r\n <ng-content select=\"[tableToolbarSearch]\" />\r\n <ng-content select=\"[tableToolbarFilters]\" />\r\n </div>\r\n @if (resultCountLabel.trim()) {\r\n <p class=\"table-toolbar__count\" aria-live=\"polite\">{{ resultCountLabel }}</p>\r\n }\r\n </div>\r\n <div toolbar-end class=\"table-toolbar__end\">\r\n <ng-content select=\"[tableToolbarActions]\" />\r\n </div>\r\n</app-data-toolbar>\r\n", styles: [":host{display:block;width:100%;min-width:0}.table-toolbar__data-toolbar{width:100%}.table-toolbar__start{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem .85rem;min-width:0;flex:1 1 auto}.table-toolbar__search-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem .75rem;min-width:0;flex:1 1 14rem}.table-toolbar__count{margin:0;flex:0 0 auto;font-size:.82rem;font-weight:500;line-height:1.35;color:var(--app-color-text-muted, #6b8299);white-space:nowrap}.table-toolbar__end{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.5rem}\n"] }]
7211
+ args: [{ selector: 'app-table-toolbar', imports: [DataToolbarComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-data-toolbar class=\"table-toolbar__data-toolbar\">\r\n <div toolbar-start class=\"table-toolbar__start\">\r\n <div class=\"table-toolbar__search-filters\">\r\n <ng-content select=\"[tableToolbarSearch]\" />\r\n <ng-content select=\"[tableToolbarFilters]\" />\r\n </div>\r\n @if (resultCountLabel.trim()) {\r\n <p class=\"table-toolbar__count\" aria-live=\"polite\">{{ resultCountLabel }}</p>\r\n }\r\n </div>\r\n <div toolbar-end class=\"table-toolbar__end\">\r\n <ng-content select=\"[tableToolbarActions]\" />\r\n </div>\r\n</app-data-toolbar>\r\n", styles: [":host{display:block;width:100%;min-width:0}.table-toolbar__data-toolbar{width:100%}.table-toolbar__start{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem .85rem;min-width:0;flex:1 1 auto}.table-toolbar__search-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem .75rem;min-width:0;flex:1 1 14rem}.table-toolbar__count{margin:0;flex:0 0 auto;font-size:.82rem;font-weight:500;line-height:1.35;color:var(--app-color-text-muted, #6b8299);white-space:nowrap}.table-toolbar__end{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.5rem}\n"] }]
7212
7212
  }], propDecorators: { resultCountLabel: [{
7213
7213
  type: Input
7214
7214
  }] } });
@@ -7223,12 +7223,12 @@ class TableEmptyStateComponent {
7223
7223
  this.iconClass = 'fa-solid fa-table';
7224
7224
  this.embed = true;
7225
7225
  }
7226
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableEmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7227
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: TableEmptyStateComponent, isStandalone: true, selector: "app-table-empty-state", inputs: { title: "title", description: "description", iconClass: "iconClass", embed: ["embed", "embed", booleanAttribute] }, ngImport: i0, template: "<div class=\"table-empty-state\">\r\n <app-empty-state\r\n [message]=\"title\"\r\n [description]=\"description\"\r\n [iconClass]=\"iconClass\"\r\n [embed]=\"embed\"\r\n />\r\n <div class=\"table-empty-state__action\">\r\n <ng-content select=\"[tableEmptyAction]\" />\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;width:100%}.table-empty-state{display:flex;flex-direction:column;align-items:center;gap:.65rem;width:100%;box-sizing:border-box}.table-empty-state__action{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem}.table-empty-state__action:empty{display:none}\n"], dependencies: [{ kind: "component", type: EmptyStateComponent, selector: "app-empty-state", inputs: ["message", "description", "iconClass", "variant", "embed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7226
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TableEmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7227
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: TableEmptyStateComponent, isStandalone: true, selector: "app-table-empty-state", inputs: { title: "title", description: "description", iconClass: "iconClass", embed: ["embed", "embed", booleanAttribute] }, ngImport: i0, template: "<div class=\"table-empty-state\">\r\n <app-empty-state\r\n [message]=\"title\"\r\n [description]=\"description\"\r\n [iconClass]=\"iconClass\"\r\n [embed]=\"embed\"\r\n />\r\n <div class=\"table-empty-state__action\">\r\n <ng-content select=\"[tableEmptyAction]\" />\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;width:100%}.table-empty-state{display:flex;flex-direction:column;align-items:center;gap:.65rem;width:100%;box-sizing:border-box}.table-empty-state__action{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem}.table-empty-state__action:empty{display:none}\n"], dependencies: [{ kind: "component", type: EmptyStateComponent, selector: "app-empty-state", inputs: ["message", "description", "iconClass", "variant", "embed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7228
7228
  }
7229
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableEmptyStateComponent, decorators: [{
7229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TableEmptyStateComponent, decorators: [{
7230
7230
  type: Component,
7231
- args: [{ selector: 'app-table-empty-state', standalone: true, imports: [EmptyStateComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"table-empty-state\">\r\n <app-empty-state\r\n [message]=\"title\"\r\n [description]=\"description\"\r\n [iconClass]=\"iconClass\"\r\n [embed]=\"embed\"\r\n />\r\n <div class=\"table-empty-state__action\">\r\n <ng-content select=\"[tableEmptyAction]\" />\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;width:100%}.table-empty-state{display:flex;flex-direction:column;align-items:center;gap:.65rem;width:100%;box-sizing:border-box}.table-empty-state__action{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem}.table-empty-state__action:empty{display:none}\n"] }]
7231
+ args: [{ selector: 'app-table-empty-state', imports: [EmptyStateComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"table-empty-state\">\r\n <app-empty-state\r\n [message]=\"title\"\r\n [description]=\"description\"\r\n [iconClass]=\"iconClass\"\r\n [embed]=\"embed\"\r\n />\r\n <div class=\"table-empty-state__action\">\r\n <ng-content select=\"[tableEmptyAction]\" />\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;width:100%}.table-empty-state{display:flex;flex-direction:column;align-items:center;gap:.65rem;width:100%;box-sizing:border-box}.table-empty-state__action{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem}.table-empty-state__action:empty{display:none}\n"] }]
7232
7232
  }], propDecorators: { title: [{
7233
7233
  type: Input,
7234
7234
  args: [{ required: true }]
@@ -7503,12 +7503,12 @@ class AppDialogComponent {
7503
7503
  el.removeAttribute('title');
7504
7504
  el.title = '';
7505
7505
  }
7506
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7507
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AppDialogComponent, isStandalone: true, selector: "app-dialog", inputs: { open: ["open", "open", booleanAttribute], dialogHeading: ["title", "dialogHeading"], description: "description", ariaLabel: "ariaLabel", size: "size", allowOverlayDismiss: ["allowOverlayDismiss", "allowOverlayDismiss", booleanAttribute], showCloseButton: ["showCloseButton", "showCloseButton", booleanAttribute] }, outputs: { openChange: "openChange" }, host: { listeners: { "document:keydown": "onDocumentKeydown($event)" }, properties: { "class": "this.hostThemeClasses", "attr.title": "this.hostTitleAttr" } }, usesOnChanges: true, ngImport: i0, template: "@if (open) {\r\n <div\r\n class=\"app-dialog-backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n <div class=\"app-dialog-stage\" aria-hidden=\"false\">\r\n <div\r\n class=\"app-dialog-panel\"\r\n [class.app-dialog-panel--sm]=\"size === LibDialogSize.Sm\"\r\n [class.app-dialog-panel--md]=\"size === LibDialogSize.Md\"\r\n [class.app-dialog-panel--lg]=\"size === LibDialogSize.Lg\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"\r\n dialogHeading.trim() ? titleId : description.trim() ? descriptionId : null\r\n \"\r\n [attr.aria-label]=\"!dialogHeading.trim() && !description.trim() ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"\r\n dialogHeading.trim() && description.trim() ? descriptionId : null\r\n \"\r\n cdkTrapFocus\r\n [cdkTrapFocusAutoCapture]=\"true\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (dialogHeading.trim()) {\r\n <header class=\"app-dialog-header\">\r\n <h2 class=\"app-dialog-title\" [id]=\"titleId\">{{ dialogHeading }}</h2>\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-dialog-close\"\r\n aria-label=\"Fechar di\u00E1logo\"\r\n (click)=\"requestClose()\"\r\n >\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n }\r\n </header>\r\n }\r\n @if (description.trim()) {\r\n <p class=\"app-dialog-description\" [id]=\"descriptionId\">{{ description }}</p>\r\n }\r\n <div class=\"app-dialog-body\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"app-dialog-footer\">\r\n <ng-content select=\"[appDialogFooter]\" />\r\n </footer>\r\n </div>\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-dialog-backdrop{position:fixed;inset:0;z-index:var(--app-z-dialog, 1200);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);pointer-events:auto}.app-dialog-stage{position:fixed;inset:0;z-index:calc(var(--app-z-dialog, 1200) + 1);display:flex;align-items:center;justify-content:center;padding:min(1.5rem,4vw);box-sizing:border-box;pointer-events:none;background:transparent}.app-dialog-panel{position:relative;z-index:0;display:flex;flex-direction:column;max-height:min(88vh,40rem);width:100%;pointer-events:auto;overflow:hidden;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));background:var(--app-color-surface, #fff);box-shadow:0 4px 6px -1px #00000014,0 12px 28px -8px #1a2f452e;outline:none;animation:app-lib-dialog-panel-in .28s cubic-bezier(.22,1,.36,1) both}.app-dialog-panel--sm{max-width:min(28rem,94vw)}.app-dialog-panel--md{max-width:min(40rem,94vw)}.app-dialog-panel--lg{max-width:min(56rem,96vw)}@media (prefers-reduced-motion: reduce){.app-dialog-panel{animation:none}}.app-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));flex:0 0 auto}.app-dialog-title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-description{margin:0;padding:.65rem 1rem;font-size:.88rem;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3);flex:0 0 auto}.app-dialog-close{flex:0 0 auto;width:2rem;height:2rem;margin:0;padding:0;border:1px solid var(--app-color-border, #d4d4d4);border-radius:6px;background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-secondary, #5a7fa3);font-size:1.35rem;line-height:1;cursor:pointer}.app-dialog-close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.app-dialog-close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.app-dialog-body{padding:1rem;flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;font-size:.9rem;line-height:1.5;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-footer{flex:0 0 auto;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.app-dialog-footer:empty{display:none;padding:0;border:none}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7506
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7507
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AppDialogComponent, isStandalone: true, selector: "app-dialog", inputs: { open: ["open", "open", booleanAttribute], dialogHeading: ["title", "dialogHeading"], description: "description", ariaLabel: "ariaLabel", size: "size", allowOverlayDismiss: ["allowOverlayDismiss", "allowOverlayDismiss", booleanAttribute], showCloseButton: ["showCloseButton", "showCloseButton", booleanAttribute] }, outputs: { openChange: "openChange" }, host: { listeners: { "document:keydown": "onDocumentKeydown($event)" }, properties: { "class": "this.hostThemeClasses", "attr.title": "this.hostTitleAttr" } }, usesOnChanges: true, ngImport: i0, template: "@if (open) {\r\n <div\r\n class=\"app-dialog-backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n <div class=\"app-dialog-stage\" aria-hidden=\"false\">\r\n <div\r\n class=\"app-dialog-panel\"\r\n [class.app-dialog-panel--sm]=\"size === LibDialogSize.Sm\"\r\n [class.app-dialog-panel--md]=\"size === LibDialogSize.Md\"\r\n [class.app-dialog-panel--lg]=\"size === LibDialogSize.Lg\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"\r\n dialogHeading.trim() ? titleId : description.trim() ? descriptionId : null\r\n \"\r\n [attr.aria-label]=\"!dialogHeading.trim() && !description.trim() ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"\r\n dialogHeading.trim() && description.trim() ? descriptionId : null\r\n \"\r\n cdkTrapFocus\r\n [cdkTrapFocusAutoCapture]=\"true\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (dialogHeading.trim()) {\r\n <header class=\"app-dialog-header\">\r\n <h2 class=\"app-dialog-title\" [id]=\"titleId\">{{ dialogHeading }}</h2>\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-dialog-close\"\r\n aria-label=\"Fechar di\u00E1logo\"\r\n (click)=\"requestClose()\"\r\n >\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n }\r\n </header>\r\n }\r\n @if (description.trim()) {\r\n <p class=\"app-dialog-description\" [id]=\"descriptionId\">{{ description }}</p>\r\n }\r\n <div class=\"app-dialog-body\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"app-dialog-footer\">\r\n <ng-content select=\"[appDialogFooter]\" />\r\n </footer>\r\n </div>\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-dialog-backdrop{position:fixed;inset:0;z-index:var(--app-z-dialog, 1200);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);pointer-events:auto}.app-dialog-stage{position:fixed;inset:0;z-index:calc(var(--app-z-dialog, 1200) + 1);display:flex;align-items:center;justify-content:center;padding:min(1.5rem,4vw);box-sizing:border-box;pointer-events:none;background:transparent}.app-dialog-panel{position:relative;z-index:0;display:flex;flex-direction:column;max-height:min(88vh,40rem);width:100%;pointer-events:auto;overflow:hidden;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));background:var(--app-color-surface, #fff);box-shadow:0 4px 6px -1px #00000014,0 12px 28px -8px #1a2f452e;outline:none;animation:app-lib-dialog-panel-in .28s cubic-bezier(.22,1,.36,1) both}.app-dialog-panel--sm{max-width:min(28rem,94vw)}.app-dialog-panel--md{max-width:min(40rem,94vw)}.app-dialog-panel--lg{max-width:min(56rem,96vw)}@media(prefers-reduced-motion:reduce){.app-dialog-panel{animation:none}}.app-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));flex:0 0 auto}.app-dialog-title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-description{margin:0;padding:.65rem 1rem;font-size:.88rem;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3);flex:0 0 auto}.app-dialog-close{flex:0 0 auto;width:2rem;height:2rem;margin:0;padding:0;border:1px solid var(--app-color-border, #d4d4d4);border-radius:6px;background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-secondary, #5a7fa3);font-size:1.35rem;line-height:1;cursor:pointer}.app-dialog-close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.app-dialog-close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.app-dialog-body{padding:1rem;flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;font-size:.9rem;line-height:1.5;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-footer{flex:0 0 auto;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.app-dialog-footer:empty{display:none;padding:0;border:none}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7508
7508
  }
7509
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppDialogComponent, decorators: [{
7509
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppDialogComponent, decorators: [{
7510
7510
  type: Component,
7511
- args: [{ selector: 'app-dialog', standalone: true, imports: [CdkTrapFocus], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (open) {\r\n <div\r\n class=\"app-dialog-backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n <div class=\"app-dialog-stage\" aria-hidden=\"false\">\r\n <div\r\n class=\"app-dialog-panel\"\r\n [class.app-dialog-panel--sm]=\"size === LibDialogSize.Sm\"\r\n [class.app-dialog-panel--md]=\"size === LibDialogSize.Md\"\r\n [class.app-dialog-panel--lg]=\"size === LibDialogSize.Lg\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"\r\n dialogHeading.trim() ? titleId : description.trim() ? descriptionId : null\r\n \"\r\n [attr.aria-label]=\"!dialogHeading.trim() && !description.trim() ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"\r\n dialogHeading.trim() && description.trim() ? descriptionId : null\r\n \"\r\n cdkTrapFocus\r\n [cdkTrapFocusAutoCapture]=\"true\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (dialogHeading.trim()) {\r\n <header class=\"app-dialog-header\">\r\n <h2 class=\"app-dialog-title\" [id]=\"titleId\">{{ dialogHeading }}</h2>\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-dialog-close\"\r\n aria-label=\"Fechar di\u00E1logo\"\r\n (click)=\"requestClose()\"\r\n >\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n }\r\n </header>\r\n }\r\n @if (description.trim()) {\r\n <p class=\"app-dialog-description\" [id]=\"descriptionId\">{{ description }}</p>\r\n }\r\n <div class=\"app-dialog-body\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"app-dialog-footer\">\r\n <ng-content select=\"[appDialogFooter]\" />\r\n </footer>\r\n </div>\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-dialog-backdrop{position:fixed;inset:0;z-index:var(--app-z-dialog, 1200);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);pointer-events:auto}.app-dialog-stage{position:fixed;inset:0;z-index:calc(var(--app-z-dialog, 1200) + 1);display:flex;align-items:center;justify-content:center;padding:min(1.5rem,4vw);box-sizing:border-box;pointer-events:none;background:transparent}.app-dialog-panel{position:relative;z-index:0;display:flex;flex-direction:column;max-height:min(88vh,40rem);width:100%;pointer-events:auto;overflow:hidden;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));background:var(--app-color-surface, #fff);box-shadow:0 4px 6px -1px #00000014,0 12px 28px -8px #1a2f452e;outline:none;animation:app-lib-dialog-panel-in .28s cubic-bezier(.22,1,.36,1) both}.app-dialog-panel--sm{max-width:min(28rem,94vw)}.app-dialog-panel--md{max-width:min(40rem,94vw)}.app-dialog-panel--lg{max-width:min(56rem,96vw)}@media (prefers-reduced-motion: reduce){.app-dialog-panel{animation:none}}.app-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));flex:0 0 auto}.app-dialog-title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-description{margin:0;padding:.65rem 1rem;font-size:.88rem;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3);flex:0 0 auto}.app-dialog-close{flex:0 0 auto;width:2rem;height:2rem;margin:0;padding:0;border:1px solid var(--app-color-border, #d4d4d4);border-radius:6px;background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-secondary, #5a7fa3);font-size:1.35rem;line-height:1;cursor:pointer}.app-dialog-close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.app-dialog-close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.app-dialog-body{padding:1rem;flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;font-size:.9rem;line-height:1.5;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-footer{flex:0 0 auto;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.app-dialog-footer:empty{display:none;padding:0;border:none}\n"] }]
7511
+ args: [{ selector: 'app-dialog', imports: [CdkTrapFocus], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (open) {\r\n <div\r\n class=\"app-dialog-backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n <div class=\"app-dialog-stage\" aria-hidden=\"false\">\r\n <div\r\n class=\"app-dialog-panel\"\r\n [class.app-dialog-panel--sm]=\"size === LibDialogSize.Sm\"\r\n [class.app-dialog-panel--md]=\"size === LibDialogSize.Md\"\r\n [class.app-dialog-panel--lg]=\"size === LibDialogSize.Lg\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"\r\n dialogHeading.trim() ? titleId : description.trim() ? descriptionId : null\r\n \"\r\n [attr.aria-label]=\"!dialogHeading.trim() && !description.trim() ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"\r\n dialogHeading.trim() && description.trim() ? descriptionId : null\r\n \"\r\n cdkTrapFocus\r\n [cdkTrapFocusAutoCapture]=\"true\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (dialogHeading.trim()) {\r\n <header class=\"app-dialog-header\">\r\n <h2 class=\"app-dialog-title\" [id]=\"titleId\">{{ dialogHeading }}</h2>\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-dialog-close\"\r\n aria-label=\"Fechar di\u00E1logo\"\r\n (click)=\"requestClose()\"\r\n >\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n }\r\n </header>\r\n }\r\n @if (description.trim()) {\r\n <p class=\"app-dialog-description\" [id]=\"descriptionId\">{{ description }}</p>\r\n }\r\n <div class=\"app-dialog-body\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"app-dialog-footer\">\r\n <ng-content select=\"[appDialogFooter]\" />\r\n </footer>\r\n </div>\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-dialog-backdrop{position:fixed;inset:0;z-index:var(--app-z-dialog, 1200);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);pointer-events:auto}.app-dialog-stage{position:fixed;inset:0;z-index:calc(var(--app-z-dialog, 1200) + 1);display:flex;align-items:center;justify-content:center;padding:min(1.5rem,4vw);box-sizing:border-box;pointer-events:none;background:transparent}.app-dialog-panel{position:relative;z-index:0;display:flex;flex-direction:column;max-height:min(88vh,40rem);width:100%;pointer-events:auto;overflow:hidden;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));background:var(--app-color-surface, #fff);box-shadow:0 4px 6px -1px #00000014,0 12px 28px -8px #1a2f452e;outline:none;animation:app-lib-dialog-panel-in .28s cubic-bezier(.22,1,.36,1) both}.app-dialog-panel--sm{max-width:min(28rem,94vw)}.app-dialog-panel--md{max-width:min(40rem,94vw)}.app-dialog-panel--lg{max-width:min(56rem,96vw)}@media(prefers-reduced-motion:reduce){.app-dialog-panel{animation:none}}.app-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));flex:0 0 auto}.app-dialog-title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-description{margin:0;padding:.65rem 1rem;font-size:.88rem;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3);flex:0 0 auto}.app-dialog-close{flex:0 0 auto;width:2rem;height:2rem;margin:0;padding:0;border:1px solid var(--app-color-border, #d4d4d4);border-radius:6px;background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-secondary, #5a7fa3);font-size:1.35rem;line-height:1;cursor:pointer}.app-dialog-close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.app-dialog-close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.app-dialog-body{padding:1rem;flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;font-size:.9rem;line-height:1.5;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-footer{flex:0 0 auto;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.app-dialog-footer:empty{display:none;padding:0;border:none}\n"] }]
7512
7512
  }], propDecorators: { hostThemeClasses: [{
7513
7513
  type: HostBinding,
7514
7514
  args: ['class']
@@ -7542,10 +7542,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
7542
7542
 
7543
7543
  /** Marca o conteúdo projectado no rodapé de `app-dialog`. */
7544
7544
  class DialogFooterDirective {
7545
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DialogFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
7546
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: DialogFooterDirective, isStandalone: true, selector: "[appDialogFooter]", ngImport: i0 }); }
7545
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DialogFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
7546
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: DialogFooterDirective, isStandalone: true, selector: "[appDialogFooter]", ngImport: i0 }); }
7547
7547
  }
7548
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DialogFooterDirective, decorators: [{
7548
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DialogFooterDirective, decorators: [{
7549
7549
  type: Directive,
7550
7550
  args: [{
7551
7551
  selector: '[appDialogFooter]',
@@ -7574,12 +7574,12 @@ class ConfirmDialogComponent {
7574
7574
  onCancel() {
7575
7575
  this.ref.close(false);
7576
7576
  }
7577
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfirmDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7578
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ConfirmDialogComponent, isStandalone: true, selector: "app-confirm-dialog", viewQueries: [{ propertyName: "cancelBtn", first: true, predicate: ["cancelBtn"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"confirm-dialog\"\r\n role=\"alertdialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"titleId\"\r\n [attr.aria-describedby]=\"descId\"\r\n>\r\n <header class=\"confirm-dialog__header\">\r\n <h2 class=\"confirm-dialog__title\" [id]=\"titleId\">{{ data.title }}</h2>\r\n </header>\r\n\r\n <div class=\"confirm-dialog__body\">\r\n <p class=\"confirm-dialog__message\" [id]=\"descId\">{{ data.message }}</p>\r\n </div>\r\n\r\n <footer class=\"confirm-dialog__footer\">\r\n <app-base-button\r\n #cancelBtn\r\n [type]=\"BaseButtonType.Button\"\r\n [variant]=\"BaseButtonVariant.Secondary\"\r\n [fullWidth]=\"false\"\r\n (click)=\"onCancel()\"\r\n >\r\n {{ data.cancelLabel ?? 'Cancelar' }}\r\n </app-base-button>\r\n <app-base-button\r\n [type]=\"BaseButtonType.Button\"\r\n [variant]=\"BaseButtonVariant.Primary\"\r\n [fullWidth]=\"false\"\r\n [class.confirm-dialog__confirm--danger]=\"data.variant === 'danger'\"\r\n (click)=\"onConfirm()\"\r\n >\r\n {{ data.confirmLabel ?? 'Confirmar' }}\r\n </app-base-button>\r\n </footer>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.confirm-dialog{box-sizing:border-box;display:flex;flex-direction:column;min-width:0;max-width:100%;min-height:0;overflow:hidden}.confirm-dialog__header{flex:0 0 auto;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}.confirm-dialog__title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.confirm-dialog__body{flex:1 1 auto;min-height:0;padding:1rem;overflow:auto}.confirm-dialog__message{margin:0;font-size:.9rem;line-height:1.5;color:var(--app-color-text-secondary, #5a7fa3)}.confirm-dialog__footer{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.5rem;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native{border-color:var(--app-color-error-border, #dc2626);background:var(--app-color-error, #b91c1c);color:var(--app-color-error-contrast, #fff)}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}\n"], dependencies: [{ kind: "component", type: BaseButtonComponent, selector: "app-base-button", inputs: ["type", "disabled", "readonly", "fullWidth", "loading", "variant", "appearance"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7577
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ConfirmDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7578
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: ConfirmDialogComponent, isStandalone: true, selector: "app-confirm-dialog", viewQueries: [{ propertyName: "cancelBtn", first: true, predicate: ["cancelBtn"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"confirm-dialog\"\r\n role=\"alertdialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"titleId\"\r\n [attr.aria-describedby]=\"descId\"\r\n>\r\n <header class=\"confirm-dialog__header\">\r\n <h2 class=\"confirm-dialog__title\" [id]=\"titleId\">{{ data.title }}</h2>\r\n </header>\r\n\r\n <div class=\"confirm-dialog__body\">\r\n <p class=\"confirm-dialog__message\" [id]=\"descId\">{{ data.message }}</p>\r\n </div>\r\n\r\n <footer class=\"confirm-dialog__footer\">\r\n <app-base-button\r\n #cancelBtn\r\n [type]=\"BaseButtonType.Button\"\r\n [variant]=\"BaseButtonVariant.Secondary\"\r\n [fullWidth]=\"false\"\r\n (click)=\"onCancel()\"\r\n >\r\n {{ data.cancelLabel ?? 'Cancelar' }}\r\n </app-base-button>\r\n <app-base-button\r\n [type]=\"BaseButtonType.Button\"\r\n [variant]=\"BaseButtonVariant.Primary\"\r\n [fullWidth]=\"false\"\r\n [class.confirm-dialog__confirm--danger]=\"data.variant === 'danger'\"\r\n (click)=\"onConfirm()\"\r\n >\r\n {{ data.confirmLabel ?? 'Confirmar' }}\r\n </app-base-button>\r\n </footer>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.confirm-dialog{box-sizing:border-box;display:flex;flex-direction:column;min-width:0;max-width:100%;min-height:0;overflow:hidden}.confirm-dialog__header{flex:0 0 auto;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}.confirm-dialog__title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.confirm-dialog__body{flex:1 1 auto;min-height:0;padding:1rem;overflow:auto}.confirm-dialog__message{margin:0;font-size:.9rem;line-height:1.5;color:var(--app-color-text-secondary, #5a7fa3)}.confirm-dialog__footer{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.5rem;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native{border-color:var(--app-color-error-border, #dc2626);background:var(--app-color-error, #b91c1c);color:var(--app-color-error-contrast, #fff)}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}\n"], dependencies: [{ kind: "component", type: BaseButtonComponent, selector: "app-base-button", inputs: ["type", "disabled", "readonly", "fullWidth", "loading", "variant", "appearance"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7579
7579
  }
7580
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfirmDialogComponent, decorators: [{
7580
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ConfirmDialogComponent, decorators: [{
7581
7581
  type: Component,
7582
- args: [{ selector: 'app-confirm-dialog', standalone: true, imports: [BaseButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"confirm-dialog\"\r\n role=\"alertdialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"titleId\"\r\n [attr.aria-describedby]=\"descId\"\r\n>\r\n <header class=\"confirm-dialog__header\">\r\n <h2 class=\"confirm-dialog__title\" [id]=\"titleId\">{{ data.title }}</h2>\r\n </header>\r\n\r\n <div class=\"confirm-dialog__body\">\r\n <p class=\"confirm-dialog__message\" [id]=\"descId\">{{ data.message }}</p>\r\n </div>\r\n\r\n <footer class=\"confirm-dialog__footer\">\r\n <app-base-button\r\n #cancelBtn\r\n [type]=\"BaseButtonType.Button\"\r\n [variant]=\"BaseButtonVariant.Secondary\"\r\n [fullWidth]=\"false\"\r\n (click)=\"onCancel()\"\r\n >\r\n {{ data.cancelLabel ?? 'Cancelar' }}\r\n </app-base-button>\r\n <app-base-button\r\n [type]=\"BaseButtonType.Button\"\r\n [variant]=\"BaseButtonVariant.Primary\"\r\n [fullWidth]=\"false\"\r\n [class.confirm-dialog__confirm--danger]=\"data.variant === 'danger'\"\r\n (click)=\"onConfirm()\"\r\n >\r\n {{ data.confirmLabel ?? 'Confirmar' }}\r\n </app-base-button>\r\n </footer>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.confirm-dialog{box-sizing:border-box;display:flex;flex-direction:column;min-width:0;max-width:100%;min-height:0;overflow:hidden}.confirm-dialog__header{flex:0 0 auto;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}.confirm-dialog__title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.confirm-dialog__body{flex:1 1 auto;min-height:0;padding:1rem;overflow:auto}.confirm-dialog__message{margin:0;font-size:.9rem;line-height:1.5;color:var(--app-color-text-secondary, #5a7fa3)}.confirm-dialog__footer{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.5rem;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native{border-color:var(--app-color-error-border, #dc2626);background:var(--app-color-error, #b91c1c);color:var(--app-color-error-contrast, #fff)}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}\n"] }]
7582
+ args: [{ selector: 'app-confirm-dialog', imports: [BaseButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"confirm-dialog\"\r\n role=\"alertdialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"titleId\"\r\n [attr.aria-describedby]=\"descId\"\r\n>\r\n <header class=\"confirm-dialog__header\">\r\n <h2 class=\"confirm-dialog__title\" [id]=\"titleId\">{{ data.title }}</h2>\r\n </header>\r\n\r\n <div class=\"confirm-dialog__body\">\r\n <p class=\"confirm-dialog__message\" [id]=\"descId\">{{ data.message }}</p>\r\n </div>\r\n\r\n <footer class=\"confirm-dialog__footer\">\r\n <app-base-button\r\n #cancelBtn\r\n [type]=\"BaseButtonType.Button\"\r\n [variant]=\"BaseButtonVariant.Secondary\"\r\n [fullWidth]=\"false\"\r\n (click)=\"onCancel()\"\r\n >\r\n {{ data.cancelLabel ?? 'Cancelar' }}\r\n </app-base-button>\r\n <app-base-button\r\n [type]=\"BaseButtonType.Button\"\r\n [variant]=\"BaseButtonVariant.Primary\"\r\n [fullWidth]=\"false\"\r\n [class.confirm-dialog__confirm--danger]=\"data.variant === 'danger'\"\r\n (click)=\"onConfirm()\"\r\n >\r\n {{ data.confirmLabel ?? 'Confirmar' }}\r\n </app-base-button>\r\n </footer>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.confirm-dialog{box-sizing:border-box;display:flex;flex-direction:column;min-width:0;max-width:100%;min-height:0;overflow:hidden}.confirm-dialog__header{flex:0 0 auto;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}.confirm-dialog__title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.confirm-dialog__body{flex:1 1 auto;min-height:0;padding:1rem;overflow:auto}.confirm-dialog__message{margin:0;font-size:.9rem;line-height:1.5;color:var(--app-color-text-secondary, #5a7fa3)}.confirm-dialog__footer{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.5rem;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native{border-color:var(--app-color-error-border, #dc2626);background:var(--app-color-error, #b91c1c);color:var(--app-color-error-contrast, #fff)}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}\n"] }]
7583
7583
  }], propDecorators: { cancelBtn: [{
7584
7584
  type: ViewChild,
7585
7585
  args: ['cancelBtn']
@@ -7642,10 +7642,10 @@ class ConfirmDialogService {
7642
7642
  confirm(data) {
7643
7643
  return firstValueFrom(this.open(data).pipe(map((r) => r === true)));
7644
7644
  }
7645
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfirmDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7646
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfirmDialogService, providedIn: 'root' }); }
7645
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ConfirmDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7646
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ConfirmDialogService, providedIn: 'root' }); }
7647
7647
  }
7648
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfirmDialogService, decorators: [{
7648
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ConfirmDialogService, decorators: [{
7649
7649
  type: Injectable,
7650
7650
  args: [{ providedIn: 'root' }]
7651
7651
  }] });
@@ -7660,11 +7660,11 @@ function nextId() {
7660
7660
  }
7661
7661
  class ToastService {
7662
7662
  constructor() {
7663
- this.items = signal([]);
7663
+ this.items = signal([], ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
7664
7664
  this.timers = new Map();
7665
7665
  this.actionHandlers = new Map();
7666
7666
  /** Lista actual (mais recente primeiro). */
7667
- this.toasts = computed(() => this.items());
7667
+ this.toasts = computed(() => this.items(), ...(ngDevMode ? [{ debugName: "toasts" }] : /* istanbul ignore next */ []));
7668
7668
  }
7669
7669
  /** Mostra um toast; devolve o id (para `dismiss` manual). */
7670
7670
  show(options) {
@@ -7716,10 +7716,10 @@ class ToastService {
7716
7716
  }
7717
7717
  this.timers.delete(id);
7718
7718
  }
7719
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7720
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToastService, providedIn: 'root' }); }
7719
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7720
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ToastService, providedIn: 'root' }); }
7721
7721
  }
7722
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToastService, decorators: [{
7722
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ToastService, decorators: [{
7723
7723
  type: Injectable,
7724
7724
  args: [{ providedIn: 'root' }]
7725
7725
  }] });
@@ -7728,8 +7728,8 @@ class ToastHostComponent {
7728
7728
  constructor() {
7729
7729
  this.toastService = inject(ToastService);
7730
7730
  this.theme = inject(AppThemeService);
7731
- this.topToasts = computed(() => this.toastService.toasts().filter((t) => t.position === 'top'));
7732
- this.bottomToasts = computed(() => this.toastService.toasts().filter((t) => t.position === 'bottom'));
7731
+ this.topToasts = computed(() => this.toastService.toasts().filter((t) => t.position === 'top'), ...(ngDevMode ? [{ debugName: "topToasts" }] : /* istanbul ignore next */ []));
7732
+ this.bottomToasts = computed(() => this.toastService.toasts().filter((t) => t.position === 'bottom'), ...(ngDevMode ? [{ debugName: "bottomToasts" }] : /* istanbul ignore next */ []));
7733
7733
  }
7734
7734
  dismiss(id) {
7735
7735
  this.toastService.dismiss(id);
@@ -7737,8 +7737,8 @@ class ToastHostComponent {
7737
7737
  action(id) {
7738
7738
  this.toastService.runAction(id);
7739
7739
  }
7740
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToastHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7741
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ToastHostComponent, isStandalone: true, selector: "app-toast-host", ngImport: i0, template: "@if (topToasts().length > 0) {\r\n <div\r\n class=\"toast-host toast-host--top app-library-theme\"\r\n [ngClass]=\"theme.themeClass()\"\r\n aria-live=\"polite\"\r\n aria-relevant=\"additions text\"\r\n >\r\n @for (t of topToasts(); track t.id) {\r\n <div\r\n [ngClass]=\"['toast-host__item', 'toast-host__item--' + t.type]\"\r\n @toastAnimTop\r\n role=\"status\"\r\n >\r\n <div class=\"toast-host__body\">\r\n @if (t.title) {\r\n <p class=\"toast-host__title\">{{ t.title }}</p>\r\n }\r\n <p class=\"toast-host__message\">{{ t.message }}</p>\r\n @if (t.actionLabel) {\r\n <button type=\"button\" class=\"toast-host__action\" (click)=\"action(t.id)\">\r\n {{ t.actionLabel }}\r\n </button>\r\n }\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"toast-host__close\"\r\n [attr.aria-label]=\"'Fechar notifica\u00E7\u00E3o'\"\r\n (click)=\"dismiss(t.id)\"\r\n >\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n}\r\n@if (bottomToasts().length > 0) {\r\n <div\r\n class=\"toast-host toast-host--bottom app-library-theme\"\r\n [ngClass]=\"theme.themeClass()\"\r\n aria-live=\"polite\"\r\n aria-relevant=\"additions text\"\r\n >\r\n @for (t of bottomToasts(); track t.id) {\r\n <div\r\n [ngClass]=\"['toast-host__item', 'toast-host__item--' + t.type]\"\r\n @toastAnimBottom\r\n role=\"status\"\r\n >\r\n <div class=\"toast-host__body\">\r\n @if (t.title) {\r\n <p class=\"toast-host__title\">{{ t.title }}</p>\r\n }\r\n <p class=\"toast-host__message\">{{ t.message }}</p>\r\n @if (t.actionLabel) {\r\n <button type=\"button\" class=\"toast-host__action\" (click)=\"action(t.id)\">\r\n {{ t.actionLabel }}\r\n </button>\r\n }\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"toast-host__close\"\r\n [attr.aria-label]=\"'Fechar notifica\u00E7\u00E3o'\"\r\n (click)=\"dismiss(t.id)\"\r\n >\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [":host{display:contents}.toast-host{position:fixed;right:0;z-index:var(--app-z-toast, 1300);display:flex;align-items:flex-end;gap:.6rem;box-sizing:border-box;pointer-events:none;max-width:100vw}.toast-host--top{top:0;flex-direction:column;padding:max(.85rem,env(safe-area-inset-top)) max(.85rem,env(safe-area-inset-right)) max(.85rem,env(safe-area-inset-bottom)) max(.85rem,env(safe-area-inset-left))}.toast-host--bottom{bottom:0;top:auto;flex-direction:column-reverse;padding:max(.85rem,env(safe-area-inset-top)) max(.85rem,env(safe-area-inset-right)) max(.85rem,env(safe-area-inset-bottom)) max(.85rem,env(safe-area-inset-left))}.toast-host__item{pointer-events:auto;display:flex;align-items:flex-start;gap:.6rem;width:min(25rem,100vw - 1.7rem);max-width:100%;box-sizing:border-box;border-radius:12px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1));background:var(--app-color-surface, #fff);box-shadow:0 4px 8px -2px #0000000f,0 14px 32px -8px #1a2f4524;padding:.85rem .65rem .85rem .95rem;border-left-width:5px;border-left-style:solid}.toast-host__item--success{border-left-color:var(--app-color-success, #15803d)}.toast-host__item--error{border-left-color:var(--app-color-error-border, #dc2626)}.toast-host__item--warning{border-left-color:var(--app-color-warning, #c2410c)}.toast-host__item--info{border-left-color:var(--app-color-info, #1d4ed8)}.toast-host__body{flex:1 1 auto;min-width:0}.toast-host__title{margin:0 0 .3rem;font-size:.9rem;font-weight:600;line-height:1.35;color:var(--app-color-text-primary, #1a2f45);letter-spacing:.01em}.toast-host__message{margin:0;font-size:.92rem;line-height:1.5;color:var(--app-color-text-secondary, #5a7fa3);word-break:break-word}.toast-host__action{margin:.5rem 0 0;padding:0;border:none;background:none;font:inherit;font-size:.86rem;font-weight:600;color:var(--app-color-primary, #2b7fd9);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.toast-host__action:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px;border-radius:4px}.toast-host__close{flex:0 0 auto;width:1.85rem;height:1.85rem;margin:-.05rem 0 0;padding:0;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--app-color-text-muted, #6b8299);font-size:1.25rem;line-height:1;cursor:pointer}.toast-host__close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08));color:var(--app-color-text-primary, #1a2f45)}.toast-host__close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
7740
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ToastHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7741
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ToastHostComponent, isStandalone: true, selector: "app-toast-host", ngImport: i0, template: "@if (topToasts().length > 0) {\r\n <div\r\n class=\"toast-host toast-host--top app-library-theme\"\r\n [ngClass]=\"theme.themeClass()\"\r\n aria-live=\"polite\"\r\n aria-relevant=\"additions text\"\r\n >\r\n @for (t of topToasts(); track t.id) {\r\n <div\r\n [ngClass]=\"['toast-host__item', 'toast-host__item--' + t.type]\"\r\n @toastAnimTop\r\n role=\"status\"\r\n >\r\n <div class=\"toast-host__body\">\r\n @if (t.title) {\r\n <p class=\"toast-host__title\">{{ t.title }}</p>\r\n }\r\n <p class=\"toast-host__message\">{{ t.message }}</p>\r\n @if (t.actionLabel) {\r\n <button type=\"button\" class=\"toast-host__action\" (click)=\"action(t.id)\">\r\n {{ t.actionLabel }}\r\n </button>\r\n }\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"toast-host__close\"\r\n [attr.aria-label]=\"'Fechar notifica\u00E7\u00E3o'\"\r\n (click)=\"dismiss(t.id)\"\r\n >\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n}\r\n@if (bottomToasts().length > 0) {\r\n <div\r\n class=\"toast-host toast-host--bottom app-library-theme\"\r\n [ngClass]=\"theme.themeClass()\"\r\n aria-live=\"polite\"\r\n aria-relevant=\"additions text\"\r\n >\r\n @for (t of bottomToasts(); track t.id) {\r\n <div\r\n [ngClass]=\"['toast-host__item', 'toast-host__item--' + t.type]\"\r\n @toastAnimBottom\r\n role=\"status\"\r\n >\r\n <div class=\"toast-host__body\">\r\n @if (t.title) {\r\n <p class=\"toast-host__title\">{{ t.title }}</p>\r\n }\r\n <p class=\"toast-host__message\">{{ t.message }}</p>\r\n @if (t.actionLabel) {\r\n <button type=\"button\" class=\"toast-host__action\" (click)=\"action(t.id)\">\r\n {{ t.actionLabel }}\r\n </button>\r\n }\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"toast-host__close\"\r\n [attr.aria-label]=\"'Fechar notifica\u00E7\u00E3o'\"\r\n (click)=\"dismiss(t.id)\"\r\n >\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [":host{display:contents}.toast-host{position:fixed;right:0;z-index:var(--app-z-toast, 1300);display:flex;align-items:flex-end;gap:.6rem;box-sizing:border-box;pointer-events:none;max-width:100vw}.toast-host--top{top:0;flex-direction:column;padding:max(.85rem,env(safe-area-inset-top)) max(.85rem,env(safe-area-inset-right)) max(.85rem,env(safe-area-inset-bottom)) max(.85rem,env(safe-area-inset-left))}.toast-host--bottom{bottom:0;top:auto;flex-direction:column-reverse;padding:max(.85rem,env(safe-area-inset-top)) max(.85rem,env(safe-area-inset-right)) max(.85rem,env(safe-area-inset-bottom)) max(.85rem,env(safe-area-inset-left))}.toast-host__item{pointer-events:auto;display:flex;align-items:flex-start;gap:.6rem;width:min(25rem,100vw - 1.7rem);max-width:100%;box-sizing:border-box;border-radius:12px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1));background:var(--app-color-surface, #fff);box-shadow:0 4px 8px -2px #0000000f,0 14px 32px -8px #1a2f4524;padding:.85rem .65rem .85rem .95rem;border-left-width:5px;border-left-style:solid}.toast-host__item--success{border-left-color:var(--app-color-success, #15803d)}.toast-host__item--error{border-left-color:var(--app-color-error-border, #dc2626)}.toast-host__item--warning{border-left-color:var(--app-color-warning, #c2410c)}.toast-host__item--info{border-left-color:var(--app-color-info, #1d4ed8)}.toast-host__body{flex:1 1 auto;min-width:0}.toast-host__title{margin:0 0 .3rem;font-size:.9rem;font-weight:600;line-height:1.35;color:var(--app-color-text-primary, #1a2f45);letter-spacing:.01em}.toast-host__message{margin:0;font-size:.92rem;line-height:1.5;color:var(--app-color-text-secondary, #5a7fa3);word-break:break-word}.toast-host__action{margin:.5rem 0 0;padding:0;border:none;background:none;font:inherit;font-size:.86rem;font-weight:600;color:var(--app-color-primary, #2b7fd9);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.toast-host__action:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px;border-radius:4px}.toast-host__close{flex:0 0 auto;width:1.85rem;height:1.85rem;margin:-.05rem 0 0;padding:0;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--app-color-text-muted, #6b8299);font-size:1.25rem;line-height:1;cursor:pointer}.toast-host__close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08));color:var(--app-color-text-primary, #1a2f45)}.toast-host__close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
7742
7742
  trigger('toastAnimTop', [
7743
7743
  transition(':enter', [
7744
7744
  style({ opacity: 0, transform: 'translateX(110%)' }),
@@ -7759,9 +7759,9 @@ class ToastHostComponent {
7759
7759
  ]),
7760
7760
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7761
7761
  }
7762
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToastHostComponent, decorators: [{
7762
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ToastHostComponent, decorators: [{
7763
7763
  type: Component,
7764
- args: [{ selector: 'app-toast-host', standalone: true, imports: [NgClass], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
7764
+ args: [{ selector: 'app-toast-host', imports: [NgClass], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
7765
7765
  trigger('toastAnimTop', [
7766
7766
  transition(':enter', [
7767
7767
  style({ opacity: 0, transform: 'translateX(110%)' }),
@@ -7791,10 +7791,10 @@ class LoadingDialogComponent {
7791
7791
  this.message = this.data?.message?.trim() || DEFAULT_MESSAGE;
7792
7792
  }
7793
7793
  static { this.seq = 0; }
7794
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoadingDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7795
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LoadingDialogComponent, isStandalone: true, selector: "app-loading-dialog", ngImport: i0, template: "<div\r\n class=\"loading-dialog\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"titleId\"\r\n [attr.aria-busy]=\"true\"\r\n>\r\n <div class=\"loading-dialog__content\">\r\n <div class=\"loading-dialog__spinner\" aria-hidden=\"true\"></div>\r\n <p class=\"loading-dialog__message\" [id]=\"titleId\">{{ message }}</p>\r\n </div>\r\n</div>\r\n", styles: [".loading-dialog{box-sizing:border-box;padding:1.75rem 2.25rem 2rem;outline:none}.loading-dialog__content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.25rem;text-align:center;min-width:min(17rem,78vw)}.loading-dialog__spinner{width:2.75rem;height:2.75rem;border-radius:50%;border:3px solid color-mix(in srgb,var(--app-color-primary, #2b7fd9) 22%,transparent);border-top-color:var(--app-color-primary, #2b7fd9);animation:loading-dialog-spin .75s linear infinite}@keyframes loading-dialog-spin{to{transform:rotate(360deg)}}.loading-dialog__message{margin:0;font-size:.95rem;font-weight:500;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7794
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: LoadingDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7795
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: LoadingDialogComponent, isStandalone: true, selector: "app-loading-dialog", ngImport: i0, template: "<div\r\n class=\"loading-dialog\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"titleId\"\r\n [attr.aria-busy]=\"true\"\r\n>\r\n <div class=\"loading-dialog__content\">\r\n <div class=\"loading-dialog__spinner\" aria-hidden=\"true\"></div>\r\n <p class=\"loading-dialog__message\" [id]=\"titleId\">{{ message }}</p>\r\n </div>\r\n</div>\r\n", styles: [".loading-dialog{box-sizing:border-box;padding:1.75rem 2.25rem 2rem;outline:none}.loading-dialog__content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.25rem;text-align:center;min-width:min(17rem,78vw)}.loading-dialog__spinner{width:2.75rem;height:2.75rem;border-radius:50%;border:3px solid color-mix(in srgb,var(--app-color-primary, #2b7fd9) 22%,transparent);border-top-color:var(--app-color-primary, #2b7fd9);animation:loading-dialog-spin .75s linear infinite}@keyframes loading-dialog-spin{to{transform:rotate(360deg)}}.loading-dialog__message{margin:0;font-size:.95rem;font-weight:500;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7796
7796
  }
7797
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoadingDialogComponent, decorators: [{
7797
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: LoadingDialogComponent, decorators: [{
7798
7798
  type: Component,
7799
7799
  args: [{ selector: 'app-loading-dialog', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"loading-dialog\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"titleId\"\r\n [attr.aria-busy]=\"true\"\r\n>\r\n <div class=\"loading-dialog__content\">\r\n <div class=\"loading-dialog__spinner\" aria-hidden=\"true\"></div>\r\n <p class=\"loading-dialog__message\" [id]=\"titleId\">{{ message }}</p>\r\n </div>\r\n</div>\r\n", styles: [".loading-dialog{box-sizing:border-box;padding:1.75rem 2.25rem 2rem;outline:none}.loading-dialog__content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.25rem;text-align:center;min-width:min(17rem,78vw)}.loading-dialog__spinner{width:2.75rem;height:2.75rem;border-radius:50%;border:3px solid color-mix(in srgb,var(--app-color-primary, #2b7fd9) 22%,transparent);border-top-color:var(--app-color-primary, #2b7fd9);animation:loading-dialog-spin .75s linear infinite}@keyframes loading-dialog-spin{to{transform:rotate(360deg)}}.loading-dialog__message{margin:0;font-size:.95rem;font-weight:500;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3)}\n"] }]
7800
7800
  }] });
@@ -7822,10 +7822,10 @@ class LoadingDialogService {
7822
7822
  scrollStrategy: new AppLibLightBlockScrollStrategy(),
7823
7823
  });
7824
7824
  }
7825
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoadingDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7826
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoadingDialogService, providedIn: 'root' }); }
7825
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: LoadingDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7826
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: LoadingDialogService, providedIn: 'root' }); }
7827
7827
  }
7828
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoadingDialogService, decorators: [{
7828
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: LoadingDialogService, decorators: [{
7829
7829
  type: Injectable,
7830
7830
  args: [{ providedIn: 'root' }]
7831
7831
  }] });
@@ -7851,7 +7851,7 @@ class ContextMenuComponent {
7851
7851
  'app-library-theme': true,
7852
7852
  [themeClass]: true,
7853
7853
  };
7854
- });
7854
+ }, ...(ngDevMode ? [{ debugName: "panelThemeNgClass" }] : /* istanbul ignore next */ []));
7855
7855
  }
7856
7856
  get resolvedMenuId() {
7857
7857
  return this.menuId.trim() || this.generatedId;
@@ -7909,12 +7909,12 @@ class ContextMenuComponent {
7909
7909
  onCloseRequest() {
7910
7910
  this.disposeOverlay();
7911
7911
  }
7912
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContextMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7913
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: ContextMenuComponent, isStandalone: true, selector: "app-context-menu", inputs: { items: "items", disabled: ["disabled", "disabled", booleanAttribute], menuId: "menuId" }, outputs: { itemSelect: "itemSelect" }, viewQueries: [{ propertyName: "menuTpl", first: true, predicate: ["menuTpl"], descendants: true, static: true }, { propertyName: "menuList", first: true, predicate: MenuListComponent, descendants: true }], ngImport: i0, template: "<span class=\"context-menu__host\" (contextmenu)=\"onContextMenu($event)\">\r\n <ng-content />\r\n</span>\r\n\r\n<ng-template #menuTpl>\r\n <div class=\"context-menu__surface\" [ngClass]=\"panelThemeNgClass()\" (click)=\"$event.stopPropagation()\">\r\n <app-menu-list\r\n [items]=\"items\"\r\n [menuId]=\"resolvedMenuId\"\r\n (itemSelect)=\"onItemSelect($event)\"\r\n (closeRequest)=\"onCloseRequest()\"\r\n />\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:contents}.context-menu__host{display:contents}.context-menu__surface{box-sizing:border-box;min-width:12.5rem;max-width:min(100vw - 1rem,22rem)}\n"], dependencies: [{ kind: "component", type: MenuListComponent, selector: "app-menu-list", inputs: ["items", "menuId", "dense", "nested", "selectedItemId", "compressText"], outputs: ["itemSelect", "closeRequest", "submenuBack"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7912
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContextMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7913
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: ContextMenuComponent, isStandalone: true, selector: "app-context-menu", inputs: { items: "items", disabled: ["disabled", "disabled", booleanAttribute], menuId: "menuId" }, outputs: { itemSelect: "itemSelect" }, viewQueries: [{ propertyName: "menuTpl", first: true, predicate: ["menuTpl"], descendants: true, static: true }, { propertyName: "menuList", first: true, predicate: MenuListComponent, descendants: true }], ngImport: i0, template: "<span class=\"context-menu__host\" (contextmenu)=\"onContextMenu($event)\">\r\n <ng-content />\r\n</span>\r\n\r\n<ng-template #menuTpl>\r\n <div class=\"context-menu__surface\" [ngClass]=\"panelThemeNgClass()\" (click)=\"$event.stopPropagation()\">\r\n <app-menu-list\r\n [items]=\"items\"\r\n [menuId]=\"resolvedMenuId\"\r\n (itemSelect)=\"onItemSelect($event)\"\r\n (closeRequest)=\"onCloseRequest()\"\r\n />\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:contents}.context-menu__host{display:contents}.context-menu__surface{box-sizing:border-box;min-width:12.5rem;max-width:min(100vw - 1rem,22rem)}\n"], dependencies: [{ kind: "component", type: MenuListComponent, selector: "app-menu-list", inputs: ["items", "menuId", "dense", "nested", "selectedItemId", "compressText"], outputs: ["itemSelect", "closeRequest", "submenuBack"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7914
7914
  }
7915
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContextMenuComponent, decorators: [{
7915
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ContextMenuComponent, decorators: [{
7916
7916
  type: Component,
7917
- args: [{ selector: 'app-context-menu', standalone: true, imports: [MenuListComponent, NgClass], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span class=\"context-menu__host\" (contextmenu)=\"onContextMenu($event)\">\r\n <ng-content />\r\n</span>\r\n\r\n<ng-template #menuTpl>\r\n <div class=\"context-menu__surface\" [ngClass]=\"panelThemeNgClass()\" (click)=\"$event.stopPropagation()\">\r\n <app-menu-list\r\n [items]=\"items\"\r\n [menuId]=\"resolvedMenuId\"\r\n (itemSelect)=\"onItemSelect($event)\"\r\n (closeRequest)=\"onCloseRequest()\"\r\n />\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:contents}.context-menu__host{display:contents}.context-menu__surface{box-sizing:border-box;min-width:12.5rem;max-width:min(100vw - 1rem,22rem)}\n"] }]
7917
+ args: [{ selector: 'app-context-menu', imports: [MenuListComponent, NgClass], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span class=\"context-menu__host\" (contextmenu)=\"onContextMenu($event)\">\r\n <ng-content />\r\n</span>\r\n\r\n<ng-template #menuTpl>\r\n <div class=\"context-menu__surface\" [ngClass]=\"panelThemeNgClass()\" (click)=\"$event.stopPropagation()\">\r\n <app-menu-list\r\n [items]=\"items\"\r\n [menuId]=\"resolvedMenuId\"\r\n (itemSelect)=\"onItemSelect($event)\"\r\n (closeRequest)=\"onCloseRequest()\"\r\n />\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:contents}.context-menu__host{display:contents}.context-menu__surface{box-sizing:border-box;min-width:12.5rem;max-width:min(100vw - 1rem,22rem)}\n"] }]
7918
7918
  }], propDecorators: { items: [{
7919
7919
  type: Input,
7920
7920
  args: [{ required: true }]
@@ -8057,15 +8057,15 @@ class DrawerComponent {
8057
8057
  }
8058
8058
  this.focusPreOpen = null;
8059
8059
  }
8060
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8061
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DrawerComponent, isStandalone: true, selector: "app-drawer", inputs: { open: ["open", "open", booleanAttribute], side: "side", size: "size", drawerHeading: ["title", "drawerHeading"], showCloseButton: ["showCloseButton", "showCloseButton", booleanAttribute] }, outputs: { openChange: "openChange" }, host: { properties: { "class.app-drawer-host--open": "open" }, classAttribute: "app-drawer-host" }, viewQueries: [{ propertyName: "panelRef", first: true, predicate: ["panelRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (open) {\r\n <div\r\n class=\"app-drawer__backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n\r\n <aside\r\n #panelRef\r\n class=\"app-drawer__panel\"\r\n [ngClass]=\"panelClasses\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"drawerHeading.trim() ? titleId : null\"\r\n tabindex=\"-1\"\r\n (keydown)=\"onPanelKeydown($event)\"\r\n >\r\n <header class=\"app-drawer__header\">\r\n @if (drawerHeading.trim()) {\r\n <h2 class=\"app-drawer__title\" [id]=\"titleId\">{{ drawerHeading }}</h2>\r\n }\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-drawer__close\"\r\n aria-label=\"Fechar painel\"\r\n (click)=\"onCloseClick()\"\r\n >\r\n <span class=\"app-drawer__close-x\" aria-hidden=\"true\">&times;</span>\r\n </button>\r\n }\r\n </header>\r\n\r\n <div class=\"app-drawer__body\">\r\n <ng-content />\r\n </div>\r\n\r\n <footer class=\"app-drawer__footer\">\r\n <ng-content select=\"[appDrawerFooter]\" />\r\n </footer>\r\n </aside>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-drawer__backdrop{position:fixed;inset:0;z-index:var(--app-z-drawer-backdrop, 1100);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);animation:app-drawer-backdrop-in .22s ease-out both}@keyframes app-drawer-backdrop-in{0%{backdrop-filter:blur(0);-webkit-backdrop-filter:blur(0)}to{backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05)}}.app-drawer__panel{position:fixed;z-index:var(--app-z-drawer-panel, 1101);display:flex;flex-direction:column;max-width:100vw;max-height:100vh;box-sizing:border-box;background:var(--app-color-surface, #fff);border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));box-shadow:-4px 0 24px var(--app-color-elevated-shadow, rgba(43, 127, 217, .07));outline:none}.app-drawer__panel--side-right{top:0;right:0;bottom:0;animation:app-drawer-slide-in-right .24s ease-out}.app-drawer__panel--side-left{top:0;left:0;bottom:0;animation:app-drawer-slide-in-left .24s ease-out;box-shadow:4px 0 24px var(--app-color-elevated-shadow, rgba(43, 127, 217, .07))}.app-drawer__panel--side-bottom{inset:auto 0 0;max-height:min(88vh,32rem);border-radius:8px 8px 0 0;animation:app-drawer-slide-in-bottom .24s ease-out}.app-drawer__panel--side-right.app-drawer__panel--size-sm,.app-drawer__panel--side-left.app-drawer__panel--size-sm{width:min(18rem,90vw)}.app-drawer__panel--side-right.app-drawer__panel--size-md,.app-drawer__panel--side-left.app-drawer__panel--size-md{width:min(24rem,90vw)}.app-drawer__panel--side-right.app-drawer__panel--size-lg,.app-drawer__panel--side-left.app-drawer__panel--size-lg{width:min(32rem,90vw)}.app-drawer__panel--side-bottom.app-drawer__panel--size-sm{min-height:12rem}.app-drawer__panel--side-bottom.app-drawer__panel--size-md{min-height:16rem}.app-drawer__panel--side-bottom.app-drawer__panel--size-lg{min-height:22rem}@keyframes app-drawer-slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes app-drawer-slide-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes app-drawer-slide-in-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}.app-drawer__header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .75rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));flex:0 0 auto}.app-drawer__title{margin:0;font-size:1.05rem;font-weight:600;color:var(--app-color-text-primary, #1a2f45);line-height:1.3;flex:1;min-width:0}.app-drawer__close{flex:0 0 auto;width:2rem;height:2rem;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;border:1px solid var(--app-color-border, #d4d4d4);background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-secondary, #5a7fa3);cursor:pointer;margin:0;padding:0}.app-drawer__close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.app-drawer__close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.app-drawer__close-x{font-size:1.35rem;line-height:1}.app-drawer__body{flex:1 1 auto;min-height:0;overflow:auto;padding:1rem;color:var(--app-color-text-primary, #1a2f45);font-size:.9rem;line-height:1.5}.app-drawer__footer{flex:0 0 auto;padding:.75rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.app-drawer__footer:empty{display:none;padding:0;border:none}@media (prefers-reduced-motion: reduce){.app-drawer__backdrop{animation:none}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8060
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8061
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DrawerComponent, isStandalone: true, selector: "app-drawer", inputs: { open: ["open", "open", booleanAttribute], side: "side", size: "size", drawerHeading: ["title", "drawerHeading"], showCloseButton: ["showCloseButton", "showCloseButton", booleanAttribute] }, outputs: { openChange: "openChange" }, host: { properties: { "class.app-drawer-host--open": "open" }, classAttribute: "app-drawer-host" }, viewQueries: [{ propertyName: "panelRef", first: true, predicate: ["panelRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (open) {\r\n <div\r\n class=\"app-drawer__backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n\r\n <aside\r\n #panelRef\r\n class=\"app-drawer__panel\"\r\n [ngClass]=\"panelClasses\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"drawerHeading.trim() ? titleId : null\"\r\n tabindex=\"-1\"\r\n (keydown)=\"onPanelKeydown($event)\"\r\n >\r\n <header class=\"app-drawer__header\">\r\n @if (drawerHeading.trim()) {\r\n <h2 class=\"app-drawer__title\" [id]=\"titleId\">{{ drawerHeading }}</h2>\r\n }\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-drawer__close\"\r\n aria-label=\"Fechar painel\"\r\n (click)=\"onCloseClick()\"\r\n >\r\n <span class=\"app-drawer__close-x\" aria-hidden=\"true\">&times;</span>\r\n </button>\r\n }\r\n </header>\r\n\r\n <div class=\"app-drawer__body\">\r\n <ng-content />\r\n </div>\r\n\r\n <footer class=\"app-drawer__footer\">\r\n <ng-content select=\"[appDrawerFooter]\" />\r\n </footer>\r\n </aside>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-drawer__backdrop{position:fixed;inset:0;z-index:var(--app-z-drawer-backdrop, 1100);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);animation:app-drawer-backdrop-in .22s ease-out both}@keyframes app-drawer-backdrop-in{0%{backdrop-filter:blur(0);-webkit-backdrop-filter:blur(0)}to{backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05)}}.app-drawer__panel{position:fixed;z-index:var(--app-z-drawer-panel, 1101);display:flex;flex-direction:column;max-width:100vw;max-height:100vh;box-sizing:border-box;background:var(--app-color-surface, #fff);border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));box-shadow:-4px 0 24px var(--app-color-elevated-shadow, rgba(43, 127, 217, .07));outline:none}.app-drawer__panel--side-right{top:0;right:0;bottom:0;animation:app-drawer-slide-in-right .24s ease-out}.app-drawer__panel--side-left{top:0;left:0;bottom:0;animation:app-drawer-slide-in-left .24s ease-out;box-shadow:4px 0 24px var(--app-color-elevated-shadow, rgba(43, 127, 217, .07))}.app-drawer__panel--side-bottom{inset:auto 0 0;max-height:min(88vh,32rem);border-radius:8px 8px 0 0;animation:app-drawer-slide-in-bottom .24s ease-out}.app-drawer__panel--side-right.app-drawer__panel--size-sm,.app-drawer__panel--side-left.app-drawer__panel--size-sm{width:min(18rem,90vw)}.app-drawer__panel--side-right.app-drawer__panel--size-md,.app-drawer__panel--side-left.app-drawer__panel--size-md{width:min(24rem,90vw)}.app-drawer__panel--side-right.app-drawer__panel--size-lg,.app-drawer__panel--side-left.app-drawer__panel--size-lg{width:min(32rem,90vw)}.app-drawer__panel--side-bottom.app-drawer__panel--size-sm{min-height:12rem}.app-drawer__panel--side-bottom.app-drawer__panel--size-md{min-height:16rem}.app-drawer__panel--side-bottom.app-drawer__panel--size-lg{min-height:22rem}@keyframes app-drawer-slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes app-drawer-slide-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes app-drawer-slide-in-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}.app-drawer__header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .75rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));flex:0 0 auto}.app-drawer__title{margin:0;font-size:1.05rem;font-weight:600;color:var(--app-color-text-primary, #1a2f45);line-height:1.3;flex:1;min-width:0}.app-drawer__close{flex:0 0 auto;width:2rem;height:2rem;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;border:1px solid var(--app-color-border, #d4d4d4);background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-secondary, #5a7fa3);cursor:pointer;margin:0;padding:0}.app-drawer__close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.app-drawer__close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.app-drawer__close-x{font-size:1.35rem;line-height:1}.app-drawer__body{flex:1 1 auto;min-height:0;overflow:auto;padding:1rem;color:var(--app-color-text-primary, #1a2f45);font-size:.9rem;line-height:1.5}.app-drawer__footer{flex:0 0 auto;padding:.75rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.app-drawer__footer:empty{display:none;padding:0;border:none}@media(prefers-reduced-motion:reduce){.app-drawer__backdrop{animation:none}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8062
8062
  }
8063
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DrawerComponent, decorators: [{
8063
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DrawerComponent, decorators: [{
8064
8064
  type: Component,
8065
- args: [{ selector: 'app-drawer', standalone: true, imports: [NgClass], changeDetection: ChangeDetectionStrategy.OnPush, host: {
8065
+ args: [{ selector: 'app-drawer', imports: [NgClass], changeDetection: ChangeDetectionStrategy.OnPush, host: {
8066
8066
  class: 'app-drawer-host',
8067
8067
  '[class.app-drawer-host--open]': 'open',
8068
- }, template: "@if (open) {\r\n <div\r\n class=\"app-drawer__backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n\r\n <aside\r\n #panelRef\r\n class=\"app-drawer__panel\"\r\n [ngClass]=\"panelClasses\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"drawerHeading.trim() ? titleId : null\"\r\n tabindex=\"-1\"\r\n (keydown)=\"onPanelKeydown($event)\"\r\n >\r\n <header class=\"app-drawer__header\">\r\n @if (drawerHeading.trim()) {\r\n <h2 class=\"app-drawer__title\" [id]=\"titleId\">{{ drawerHeading }}</h2>\r\n }\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-drawer__close\"\r\n aria-label=\"Fechar painel\"\r\n (click)=\"onCloseClick()\"\r\n >\r\n <span class=\"app-drawer__close-x\" aria-hidden=\"true\">&times;</span>\r\n </button>\r\n }\r\n </header>\r\n\r\n <div class=\"app-drawer__body\">\r\n <ng-content />\r\n </div>\r\n\r\n <footer class=\"app-drawer__footer\">\r\n <ng-content select=\"[appDrawerFooter]\" />\r\n </footer>\r\n </aside>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-drawer__backdrop{position:fixed;inset:0;z-index:var(--app-z-drawer-backdrop, 1100);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);animation:app-drawer-backdrop-in .22s ease-out both}@keyframes app-drawer-backdrop-in{0%{backdrop-filter:blur(0);-webkit-backdrop-filter:blur(0)}to{backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05)}}.app-drawer__panel{position:fixed;z-index:var(--app-z-drawer-panel, 1101);display:flex;flex-direction:column;max-width:100vw;max-height:100vh;box-sizing:border-box;background:var(--app-color-surface, #fff);border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));box-shadow:-4px 0 24px var(--app-color-elevated-shadow, rgba(43, 127, 217, .07));outline:none}.app-drawer__panel--side-right{top:0;right:0;bottom:0;animation:app-drawer-slide-in-right .24s ease-out}.app-drawer__panel--side-left{top:0;left:0;bottom:0;animation:app-drawer-slide-in-left .24s ease-out;box-shadow:4px 0 24px var(--app-color-elevated-shadow, rgba(43, 127, 217, .07))}.app-drawer__panel--side-bottom{inset:auto 0 0;max-height:min(88vh,32rem);border-radius:8px 8px 0 0;animation:app-drawer-slide-in-bottom .24s ease-out}.app-drawer__panel--side-right.app-drawer__panel--size-sm,.app-drawer__panel--side-left.app-drawer__panel--size-sm{width:min(18rem,90vw)}.app-drawer__panel--side-right.app-drawer__panel--size-md,.app-drawer__panel--side-left.app-drawer__panel--size-md{width:min(24rem,90vw)}.app-drawer__panel--side-right.app-drawer__panel--size-lg,.app-drawer__panel--side-left.app-drawer__panel--size-lg{width:min(32rem,90vw)}.app-drawer__panel--side-bottom.app-drawer__panel--size-sm{min-height:12rem}.app-drawer__panel--side-bottom.app-drawer__panel--size-md{min-height:16rem}.app-drawer__panel--side-bottom.app-drawer__panel--size-lg{min-height:22rem}@keyframes app-drawer-slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes app-drawer-slide-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes app-drawer-slide-in-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}.app-drawer__header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .75rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));flex:0 0 auto}.app-drawer__title{margin:0;font-size:1.05rem;font-weight:600;color:var(--app-color-text-primary, #1a2f45);line-height:1.3;flex:1;min-width:0}.app-drawer__close{flex:0 0 auto;width:2rem;height:2rem;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;border:1px solid var(--app-color-border, #d4d4d4);background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-secondary, #5a7fa3);cursor:pointer;margin:0;padding:0}.app-drawer__close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.app-drawer__close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.app-drawer__close-x{font-size:1.35rem;line-height:1}.app-drawer__body{flex:1 1 auto;min-height:0;overflow:auto;padding:1rem;color:var(--app-color-text-primary, #1a2f45);font-size:.9rem;line-height:1.5}.app-drawer__footer{flex:0 0 auto;padding:.75rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.app-drawer__footer:empty{display:none;padding:0;border:none}@media (prefers-reduced-motion: reduce){.app-drawer__backdrop{animation:none}}\n"] }]
8068
+ }, template: "@if (open) {\r\n <div\r\n class=\"app-drawer__backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n\r\n <aside\r\n #panelRef\r\n class=\"app-drawer__panel\"\r\n [ngClass]=\"panelClasses\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"drawerHeading.trim() ? titleId : null\"\r\n tabindex=\"-1\"\r\n (keydown)=\"onPanelKeydown($event)\"\r\n >\r\n <header class=\"app-drawer__header\">\r\n @if (drawerHeading.trim()) {\r\n <h2 class=\"app-drawer__title\" [id]=\"titleId\">{{ drawerHeading }}</h2>\r\n }\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-drawer__close\"\r\n aria-label=\"Fechar painel\"\r\n (click)=\"onCloseClick()\"\r\n >\r\n <span class=\"app-drawer__close-x\" aria-hidden=\"true\">&times;</span>\r\n </button>\r\n }\r\n </header>\r\n\r\n <div class=\"app-drawer__body\">\r\n <ng-content />\r\n </div>\r\n\r\n <footer class=\"app-drawer__footer\">\r\n <ng-content select=\"[appDrawerFooter]\" />\r\n </footer>\r\n </aside>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-drawer__backdrop{position:fixed;inset:0;z-index:var(--app-z-drawer-backdrop, 1100);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);animation:app-drawer-backdrop-in .22s ease-out both}@keyframes app-drawer-backdrop-in{0%{backdrop-filter:blur(0);-webkit-backdrop-filter:blur(0)}to{backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05)}}.app-drawer__panel{position:fixed;z-index:var(--app-z-drawer-panel, 1101);display:flex;flex-direction:column;max-width:100vw;max-height:100vh;box-sizing:border-box;background:var(--app-color-surface, #fff);border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));box-shadow:-4px 0 24px var(--app-color-elevated-shadow, rgba(43, 127, 217, .07));outline:none}.app-drawer__panel--side-right{top:0;right:0;bottom:0;animation:app-drawer-slide-in-right .24s ease-out}.app-drawer__panel--side-left{top:0;left:0;bottom:0;animation:app-drawer-slide-in-left .24s ease-out;box-shadow:4px 0 24px var(--app-color-elevated-shadow, rgba(43, 127, 217, .07))}.app-drawer__panel--side-bottom{inset:auto 0 0;max-height:min(88vh,32rem);border-radius:8px 8px 0 0;animation:app-drawer-slide-in-bottom .24s ease-out}.app-drawer__panel--side-right.app-drawer__panel--size-sm,.app-drawer__panel--side-left.app-drawer__panel--size-sm{width:min(18rem,90vw)}.app-drawer__panel--side-right.app-drawer__panel--size-md,.app-drawer__panel--side-left.app-drawer__panel--size-md{width:min(24rem,90vw)}.app-drawer__panel--side-right.app-drawer__panel--size-lg,.app-drawer__panel--side-left.app-drawer__panel--size-lg{width:min(32rem,90vw)}.app-drawer__panel--side-bottom.app-drawer__panel--size-sm{min-height:12rem}.app-drawer__panel--side-bottom.app-drawer__panel--size-md{min-height:16rem}.app-drawer__panel--side-bottom.app-drawer__panel--size-lg{min-height:22rem}@keyframes app-drawer-slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes app-drawer-slide-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes app-drawer-slide-in-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}.app-drawer__header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .75rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));flex:0 0 auto}.app-drawer__title{margin:0;font-size:1.05rem;font-weight:600;color:var(--app-color-text-primary, #1a2f45);line-height:1.3;flex:1;min-width:0}.app-drawer__close{flex:0 0 auto;width:2rem;height:2rem;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;border:1px solid var(--app-color-border, #d4d4d4);background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-secondary, #5a7fa3);cursor:pointer;margin:0;padding:0}.app-drawer__close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.app-drawer__close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.app-drawer__close-x{font-size:1.35rem;line-height:1}.app-drawer__body{flex:1 1 auto;min-height:0;overflow:auto;padding:1rem;color:var(--app-color-text-primary, #1a2f45);font-size:.9rem;line-height:1.5}.app-drawer__footer{flex:0 0 auto;padding:.75rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.app-drawer__footer:empty{display:none;padding:0;border:none}@media(prefers-reduced-motion:reduce){.app-drawer__backdrop{animation:none}}\n"] }]
8069
8069
  }], propDecorators: { open: [{
8070
8070
  type: Input,
8071
8071
  args: [{ transform: booleanAttribute }]
@@ -8104,12 +8104,12 @@ class ActionMenuComponent {
8104
8104
  this.openChange = new EventEmitter();
8105
8105
  this.MenuDropdownPlacement = MenuDropdownPlacement;
8106
8106
  }
8107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8108
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: ActionMenuComponent, isStandalone: true, selector: "app-action-menu", inputs: { items: "items", placement: "placement", minWidthPx: "minWidthPx", menuId: "menuId", triggerLabel: "triggerLabel", matchTriggerWidth: ["matchTriggerWidth", "matchTriggerWidth", booleanAttribute] }, outputs: { itemSelect: "itemSelect", openChange: "openChange" }, ngImport: i0, template: "<app-dropdown-menu\r\n class=\"action-menu\"\r\n [items]=\"items\"\r\n [placement]=\"placement\"\r\n [minWidthPx]=\"minWidthPx\"\r\n [matchTriggerWidth]=\"matchTriggerWidth\"\r\n [menuId]=\"menuId\"\r\n (itemSelect)=\"itemSelect.emit($event)\"\r\n (openChange)=\"openChange.emit($event)\"\r\n>\r\n <button type=\"button\" class=\"action-menu__trigger\" [attr.aria-label]=\"triggerLabel\">\r\n <i class=\"fa-solid fa-ellipsis\" aria-hidden=\"true\"></i>\r\n </button>\r\n</app-dropdown-menu>\r\n", styles: [":host{display:inline-flex;max-width:100%;vertical-align:middle}.action-menu__trigger{display:inline-flex;align-items:center;justify-content:center;width:2rem;min-height:2rem;padding:0;margin:0;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .14));border-radius:8px;background:var(--app-color-surface, #fff);color:var(--app-color-text-secondary, #5a7fa3);cursor:pointer;font-size:1rem;line-height:1;transition:background .15s ease,border-color .15s ease,color .15s ease}.action-menu__trigger:hover:not(:disabled){background:var(--app-color-hover-bg, rgba(43, 127, 217, .08));border-color:var(--app-color-border-strong, #b6cce5);color:var(--app-color-text-primary, #1a2f45)}.action-menu__trigger:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:1px}\n"], dependencies: [{ kind: "component", type: DropdownMenuComponent, selector: "app-dropdown-menu", inputs: ["items", "placement", "minWidthPx", "matchTriggerWidth", "menuId"], outputs: ["itemSelect", "openChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ActionMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8108
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: ActionMenuComponent, isStandalone: true, selector: "app-action-menu", inputs: { items: "items", placement: "placement", minWidthPx: "minWidthPx", menuId: "menuId", triggerLabel: "triggerLabel", matchTriggerWidth: ["matchTriggerWidth", "matchTriggerWidth", booleanAttribute] }, outputs: { itemSelect: "itemSelect", openChange: "openChange" }, ngImport: i0, template: "<app-dropdown-menu\r\n class=\"action-menu\"\r\n [items]=\"items\"\r\n [placement]=\"placement\"\r\n [minWidthPx]=\"minWidthPx\"\r\n [matchTriggerWidth]=\"matchTriggerWidth\"\r\n [menuId]=\"menuId\"\r\n (itemSelect)=\"itemSelect.emit($event)\"\r\n (openChange)=\"openChange.emit($event)\"\r\n>\r\n <button type=\"button\" class=\"action-menu__trigger\" [attr.aria-label]=\"triggerLabel\">\r\n <i class=\"fa-solid fa-ellipsis\" aria-hidden=\"true\"></i>\r\n </button>\r\n</app-dropdown-menu>\r\n", styles: [":host{display:inline-flex;max-width:100%;vertical-align:middle}.action-menu__trigger{display:inline-flex;align-items:center;justify-content:center;width:2rem;min-height:2rem;padding:0;margin:0;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .14));border-radius:8px;background:var(--app-color-surface, #fff);color:var(--app-color-text-secondary, #5a7fa3);cursor:pointer;font-size:1rem;line-height:1;transition:background .15s ease,border-color .15s ease,color .15s ease}.action-menu__trigger:hover:not(:disabled){background:var(--app-color-hover-bg, rgba(43, 127, 217, .08));border-color:var(--app-color-border-strong, #b6cce5);color:var(--app-color-text-primary, #1a2f45)}.action-menu__trigger:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:1px}\n"], dependencies: [{ kind: "component", type: DropdownMenuComponent, selector: "app-dropdown-menu", inputs: ["items", "placement", "minWidthPx", "matchTriggerWidth", "menuId"], outputs: ["itemSelect", "openChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8109
8109
  }
8110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionMenuComponent, decorators: [{
8110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ActionMenuComponent, decorators: [{
8111
8111
  type: Component,
8112
- args: [{ selector: 'app-action-menu', standalone: true, imports: [DropdownMenuComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-dropdown-menu\r\n class=\"action-menu\"\r\n [items]=\"items\"\r\n [placement]=\"placement\"\r\n [minWidthPx]=\"minWidthPx\"\r\n [matchTriggerWidth]=\"matchTriggerWidth\"\r\n [menuId]=\"menuId\"\r\n (itemSelect)=\"itemSelect.emit($event)\"\r\n (openChange)=\"openChange.emit($event)\"\r\n>\r\n <button type=\"button\" class=\"action-menu__trigger\" [attr.aria-label]=\"triggerLabel\">\r\n <i class=\"fa-solid fa-ellipsis\" aria-hidden=\"true\"></i>\r\n </button>\r\n</app-dropdown-menu>\r\n", styles: [":host{display:inline-flex;max-width:100%;vertical-align:middle}.action-menu__trigger{display:inline-flex;align-items:center;justify-content:center;width:2rem;min-height:2rem;padding:0;margin:0;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .14));border-radius:8px;background:var(--app-color-surface, #fff);color:var(--app-color-text-secondary, #5a7fa3);cursor:pointer;font-size:1rem;line-height:1;transition:background .15s ease,border-color .15s ease,color .15s ease}.action-menu__trigger:hover:not(:disabled){background:var(--app-color-hover-bg, rgba(43, 127, 217, .08));border-color:var(--app-color-border-strong, #b6cce5);color:var(--app-color-text-primary, #1a2f45)}.action-menu__trigger:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:1px}\n"] }]
8112
+ args: [{ selector: 'app-action-menu', imports: [DropdownMenuComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-dropdown-menu\r\n class=\"action-menu\"\r\n [items]=\"items\"\r\n [placement]=\"placement\"\r\n [minWidthPx]=\"minWidthPx\"\r\n [matchTriggerWidth]=\"matchTriggerWidth\"\r\n [menuId]=\"menuId\"\r\n (itemSelect)=\"itemSelect.emit($event)\"\r\n (openChange)=\"openChange.emit($event)\"\r\n>\r\n <button type=\"button\" class=\"action-menu__trigger\" [attr.aria-label]=\"triggerLabel\">\r\n <i class=\"fa-solid fa-ellipsis\" aria-hidden=\"true\"></i>\r\n </button>\r\n</app-dropdown-menu>\r\n", styles: [":host{display:inline-flex;max-width:100%;vertical-align:middle}.action-menu__trigger{display:inline-flex;align-items:center;justify-content:center;width:2rem;min-height:2rem;padding:0;margin:0;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .14));border-radius:8px;background:var(--app-color-surface, #fff);color:var(--app-color-text-secondary, #5a7fa3);cursor:pointer;font-size:1rem;line-height:1;transition:background .15s ease,border-color .15s ease,color .15s ease}.action-menu__trigger:hover:not(:disabled){background:var(--app-color-hover-bg, rgba(43, 127, 217, .08));border-color:var(--app-color-border-strong, #b6cce5);color:var(--app-color-text-primary, #1a2f45)}.action-menu__trigger:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:1px}\n"] }]
8113
8113
  }], propDecorators: { items: [{
8114
8114
  type: Input,
8115
8115
  args: [{ required: true }]
@@ -8156,14 +8156,14 @@ class AnchoredOverlayComponent {
8156
8156
  * Estratégia de scroll (predefinição: reposicionar; `close` para fechar ao scroll em certos modais).
8157
8157
  */
8158
8158
  this.scrollStrategy = null;
8159
- this.overlayPanelClasses = computed(() => ['app-library-theme', this.appTheme.themeClass(), 'anchored-overlay__pane']);
8159
+ this.overlayPanelClasses = computed(() => ['app-library-theme', this.appTheme.themeClass(), 'anchored-overlay__pane'], ...(ngDevMode ? [{ debugName: "overlayPanelClasses" }] : /* istanbul ignore next */ []));
8160
8160
  this.panelThemeNgClass = computed(() => {
8161
8161
  const themeClass = this.appTheme.themeClass();
8162
8162
  return {
8163
8163
  'app-library-theme': true,
8164
8164
  [themeClass]: true,
8165
8165
  };
8166
- });
8166
+ }, ...(ngDevMode ? [{ debugName: "panelThemeNgClass" }] : /* istanbul ignore next */ []));
8167
8167
  this.defaultScrollStrategy = this.overlay.scrollStrategies.reposition();
8168
8168
  }
8169
8169
  get effectiveScrollStrategy() {
@@ -8208,12 +8208,12 @@ class AnchoredOverlayComponent {
8208
8208
  this.open = next;
8209
8209
  this.openChange.emit(next);
8210
8210
  }
8211
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AnchoredOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8212
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: AnchoredOverlayComponent, isStandalone: true, selector: "app-anchored-overlay", inputs: { open: ["open", "open", booleanAttribute], panelTemplate: "panelTemplate", connectedPositions: "connectedPositions", pushConnectedOverlay: ["pushConnectedOverlay", "pushConnectedOverlay", booleanAttribute], hasBackdrop: ["hasBackdrop", "hasBackdrop", booleanAttribute], closeOnEscape: ["closeOnEscape", "closeOnEscape", booleanAttribute], closeOnOutsideClick: ["closeOnOutsideClick", "closeOnOutsideClick", booleanAttribute], panelWidthPx: "panelWidthPx", panelMinWidthPx: "panelMinWidthPx", panelMaxWidthPx: "panelMaxWidthPx", scrollStrategy: "scrollStrategy" }, outputs: { openChange: "openChange" }, ngImport: i0, template: "<div class=\"anchored-overlay\">\n <span class=\"anchored-overlay__origin\" cdkOverlayOrigin #anchorOrigin=\"cdkOverlayOrigin\">\n <ng-content />\n </span>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayOrigin]=\"anchorOrigin\"\n [cdkConnectedOverlayPositions]=\"connectedPositions\"\n [cdkConnectedOverlayPush]=\"pushConnectedOverlay\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\n [cdkConnectedOverlayScrollStrategy]=\"effectiveScrollStrategy\"\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayWidth]=\"$any(overlayWidthCss)\"\n [cdkConnectedOverlayMinWidth]=\"$any(overlayMinWidthCss)\"\n [cdkConnectedOverlayDisableClose]=\"false\"\n (backdropClick)=\"onBackdropClick()\"\n (overlayOutsideClick)=\"onOverlayOutsideClick()\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n (detach)=\"onDetach()\"\n >\n <div\n class=\"anchored-overlay__surface\"\n [ngClass]=\"panelThemeNgClass()\"\n [style.max-width.px]=\"panelMaxWidthPx != null && panelMaxWidthPx > 0 ? panelMaxWidthPx : null\"\n role=\"presentation\"\n >\n <ng-container [ngTemplateOutlet]=\"panelTemplate\" />\n </div>\n </ng-template>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;max-width:100%;vertical-align:middle}.anchored-overlay{display:block}.anchored-overlay__origin{display:inline-flex;max-width:100%;min-width:0;align-items:center;box-sizing:border-box}.anchored-overlay__surface{box-sizing:border-box;max-width:min(100vw - 16px,28rem);outline:none}:host ::ng-deep .anchored-overlay__pane{max-width:min(100vw - 16px,28rem)}\n"], dependencies: [{ kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8211
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AnchoredOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8212
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: AnchoredOverlayComponent, isStandalone: true, selector: "app-anchored-overlay", inputs: { open: ["open", "open", booleanAttribute], panelTemplate: "panelTemplate", connectedPositions: "connectedPositions", pushConnectedOverlay: ["pushConnectedOverlay", "pushConnectedOverlay", booleanAttribute], hasBackdrop: ["hasBackdrop", "hasBackdrop", booleanAttribute], closeOnEscape: ["closeOnEscape", "closeOnEscape", booleanAttribute], closeOnOutsideClick: ["closeOnOutsideClick", "closeOnOutsideClick", booleanAttribute], panelWidthPx: "panelWidthPx", panelMinWidthPx: "panelMinWidthPx", panelMaxWidthPx: "panelMaxWidthPx", scrollStrategy: "scrollStrategy" }, outputs: { openChange: "openChange" }, ngImport: i0, template: "<div class=\"anchored-overlay\">\n <span class=\"anchored-overlay__origin\" cdkOverlayOrigin #anchorOrigin=\"cdkOverlayOrigin\">\n <ng-content />\n </span>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayOrigin]=\"anchorOrigin\"\n [cdkConnectedOverlayPositions]=\"connectedPositions\"\n [cdkConnectedOverlayPush]=\"pushConnectedOverlay\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\n [cdkConnectedOverlayScrollStrategy]=\"effectiveScrollStrategy\"\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayWidth]=\"$any(overlayWidthCss)\"\n [cdkConnectedOverlayMinWidth]=\"$any(overlayMinWidthCss)\"\n [cdkConnectedOverlayDisableClose]=\"false\"\n (backdropClick)=\"onBackdropClick()\"\n (overlayOutsideClick)=\"onOverlayOutsideClick()\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n (detach)=\"onDetach()\"\n >\n <div\n class=\"anchored-overlay__surface\"\n [ngClass]=\"panelThemeNgClass()\"\n [style.max-width.px]=\"panelMaxWidthPx != null && panelMaxWidthPx > 0 ? panelMaxWidthPx : null\"\n role=\"presentation\"\n >\n <ng-container [ngTemplateOutlet]=\"panelTemplate\" />\n </div>\n </ng-template>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;max-width:100%;vertical-align:middle}.anchored-overlay{display:block}.anchored-overlay__origin{display:inline-flex;max-width:100%;min-width:0;align-items:center;box-sizing:border-box}.anchored-overlay__surface{box-sizing:border-box;max-width:min(100vw - 16px,28rem);outline:none}:host ::ng-deep .anchored-overlay__pane{max-width:min(100vw - 16px,28rem)}\n"], dependencies: [{ kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8213
8213
  }
8214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AnchoredOverlayComponent, decorators: [{
8214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AnchoredOverlayComponent, decorators: [{
8215
8215
  type: Component,
8216
- args: [{ selector: 'app-anchored-overlay', standalone: true, imports: [CdkConnectedOverlay, CdkOverlayOrigin, NgClass, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"anchored-overlay\">\n <span class=\"anchored-overlay__origin\" cdkOverlayOrigin #anchorOrigin=\"cdkOverlayOrigin\">\n <ng-content />\n </span>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayOrigin]=\"anchorOrigin\"\n [cdkConnectedOverlayPositions]=\"connectedPositions\"\n [cdkConnectedOverlayPush]=\"pushConnectedOverlay\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\n [cdkConnectedOverlayScrollStrategy]=\"effectiveScrollStrategy\"\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayWidth]=\"$any(overlayWidthCss)\"\n [cdkConnectedOverlayMinWidth]=\"$any(overlayMinWidthCss)\"\n [cdkConnectedOverlayDisableClose]=\"false\"\n (backdropClick)=\"onBackdropClick()\"\n (overlayOutsideClick)=\"onOverlayOutsideClick()\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n (detach)=\"onDetach()\"\n >\n <div\n class=\"anchored-overlay__surface\"\n [ngClass]=\"panelThemeNgClass()\"\n [style.max-width.px]=\"panelMaxWidthPx != null && panelMaxWidthPx > 0 ? panelMaxWidthPx : null\"\n role=\"presentation\"\n >\n <ng-container [ngTemplateOutlet]=\"panelTemplate\" />\n </div>\n </ng-template>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;max-width:100%;vertical-align:middle}.anchored-overlay{display:block}.anchored-overlay__origin{display:inline-flex;max-width:100%;min-width:0;align-items:center;box-sizing:border-box}.anchored-overlay__surface{box-sizing:border-box;max-width:min(100vw - 16px,28rem);outline:none}:host ::ng-deep .anchored-overlay__pane{max-width:min(100vw - 16px,28rem)}\n"] }]
8216
+ args: [{ selector: 'app-anchored-overlay', imports: [CdkConnectedOverlay, CdkOverlayOrigin, NgClass, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"anchored-overlay\">\n <span class=\"anchored-overlay__origin\" cdkOverlayOrigin #anchorOrigin=\"cdkOverlayOrigin\">\n <ng-content />\n </span>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayOrigin]=\"anchorOrigin\"\n [cdkConnectedOverlayPositions]=\"connectedPositions\"\n [cdkConnectedOverlayPush]=\"pushConnectedOverlay\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\n [cdkConnectedOverlayScrollStrategy]=\"effectiveScrollStrategy\"\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayWidth]=\"$any(overlayWidthCss)\"\n [cdkConnectedOverlayMinWidth]=\"$any(overlayMinWidthCss)\"\n [cdkConnectedOverlayDisableClose]=\"false\"\n (backdropClick)=\"onBackdropClick()\"\n (overlayOutsideClick)=\"onOverlayOutsideClick()\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n (detach)=\"onDetach()\"\n >\n <div\n class=\"anchored-overlay__surface\"\n [ngClass]=\"panelThemeNgClass()\"\n [style.max-width.px]=\"panelMaxWidthPx != null && panelMaxWidthPx > 0 ? panelMaxWidthPx : null\"\n role=\"presentation\"\n >\n <ng-container [ngTemplateOutlet]=\"panelTemplate\" />\n </div>\n </ng-template>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;max-width:100%;vertical-align:middle}.anchored-overlay{display:block}.anchored-overlay__origin{display:inline-flex;max-width:100%;min-width:0;align-items:center;box-sizing:border-box}.anchored-overlay__surface{box-sizing:border-box;max-width:min(100vw - 16px,28rem);outline:none}:host ::ng-deep .anchored-overlay__pane{max-width:min(100vw - 16px,28rem)}\n"] }]
8217
8217
  }], propDecorators: { open: [{
8218
8218
  type: Input,
8219
8219
  args: [{ transform: booleanAttribute }]
@@ -8347,10 +8347,10 @@ class TooltipPanelTemplateDirective {
8347
8347
  constructor() {
8348
8348
  this.templateRef = inject((TemplateRef));
8349
8349
  }
8350
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TooltipPanelTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8351
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: TooltipPanelTemplateDirective, isStandalone: true, selector: "ng-template[appTooltipPanel]", ngImport: i0 }); }
8350
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TooltipPanelTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8351
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: TooltipPanelTemplateDirective, isStandalone: true, selector: "ng-template[appTooltipPanel]", ngImport: i0 }); }
8352
8352
  }
8353
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TooltipPanelTemplateDirective, decorators: [{
8353
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TooltipPanelTemplateDirective, decorators: [{
8354
8354
  type: Directive,
8355
8355
  args: [{
8356
8356
  selector: 'ng-template[appTooltipPanel]',
@@ -8442,12 +8442,12 @@ class TooltipComponent {
8442
8442
  this.open = next;
8443
8443
  this.cdr.markForCheck();
8444
8444
  }
8445
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8446
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TooltipComponent, isStandalone: true, selector: "app-tooltip", inputs: { text: "text", placement: "placement", offsetPx: "offsetPx", showDelayMs: "showDelayMs", hideDelayMs: "hideDelayMs", disabled: ["disabled", "disabled", booleanAttribute] }, queries: [{ propertyName: "panelDirective", first: true, predicate: TooltipPanelTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "panelTpl", first: true, predicate: ["panelTpl"], descendants: true, static: true }], ngImport: i0, template: "<app-anchored-overlay\r\n [open]=\"open\"\r\n (openChange)=\"onAnchoredOpenChange($event)\"\r\n [panelTemplate]=\"panelTpl\"\r\n [connectedPositions]=\"positions\"\r\n [pushConnectedOverlay]=\"true\"\r\n [hasBackdrop]=\"false\"\r\n [closeOnEscape]=\"true\"\r\n [closeOnOutsideClick]=\"false\"\r\n>\r\n <span\r\n class=\"tooltip__trigger\"\r\n [attr.aria-describedby]=\"describedByWhenOpen\"\r\n (mouseenter)=\"onTriggerMouseEnter()\"\r\n (mouseleave)=\"onTriggerMouseLeave()\"\r\n (focusin)=\"onTriggerFocusIn()\"\r\n (focusout)=\"onTriggerFocusOut()\"\r\n >\r\n <ng-content />\r\n </span>\r\n</app-anchored-overlay>\r\n\r\n<ng-template #panelTpl>\r\n <div\r\n class=\"tooltip__panel\"\r\n [id]=\"tooltipId\"\r\n role=\"tooltip\"\r\n (mouseenter)=\"onPanelMouseEnter()\"\r\n (mouseleave)=\"onPanelMouseLeave()\"\r\n >\r\n @if (panelContentTpl) {\r\n <ng-container [ngTemplateOutlet]=\"panelContentTpl\" />\r\n } @else {\r\n {{ text }}\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: [".tooltip__trigger{display:inline-flex;max-width:100%;min-width:0;align-items:center}.tooltip__panel{max-width:min(18rem,100vw - 16px);padding:.4rem .6rem;font-size:.8125rem;line-height:1.35;color:var(--app-color-text-primary, #1a2f45);background:var(--app-color-nav-surface, var(--app-color-surface, #fff));border:1px solid var(--app-color-nav-border-subtle, var(--app-color-border-subtle, rgba(26, 47, 69, .12)));border-radius:4px;box-shadow:0 2px 8px var(--app-color-overlay-shadow, rgba(0, 0, 0, .1));box-sizing:border-box;animation:tooltip-fade-in .12s ease-out}@keyframes tooltip-fade-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "component", type: AnchoredOverlayComponent, selector: "app-anchored-overlay", inputs: ["open", "panelTemplate", "connectedPositions", "pushConnectedOverlay", "hasBackdrop", "closeOnEscape", "closeOnOutsideClick", "panelWidthPx", "panelMinWidthPx", "panelMaxWidthPx", "scrollStrategy"], outputs: ["openChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8445
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8446
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: TooltipComponent, isStandalone: true, selector: "app-tooltip", inputs: { text: "text", placement: "placement", offsetPx: "offsetPx", showDelayMs: "showDelayMs", hideDelayMs: "hideDelayMs", disabled: ["disabled", "disabled", booleanAttribute] }, queries: [{ propertyName: "panelDirective", first: true, predicate: TooltipPanelTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "panelTpl", first: true, predicate: ["panelTpl"], descendants: true, static: true }], ngImport: i0, template: "<app-anchored-overlay\r\n [open]=\"open\"\r\n (openChange)=\"onAnchoredOpenChange($event)\"\r\n [panelTemplate]=\"panelTpl\"\r\n [connectedPositions]=\"positions\"\r\n [pushConnectedOverlay]=\"true\"\r\n [hasBackdrop]=\"false\"\r\n [closeOnEscape]=\"true\"\r\n [closeOnOutsideClick]=\"false\"\r\n>\r\n <span\r\n class=\"tooltip__trigger\"\r\n [attr.aria-describedby]=\"describedByWhenOpen\"\r\n (mouseenter)=\"onTriggerMouseEnter()\"\r\n (mouseleave)=\"onTriggerMouseLeave()\"\r\n (focusin)=\"onTriggerFocusIn()\"\r\n (focusout)=\"onTriggerFocusOut()\"\r\n >\r\n <ng-content />\r\n </span>\r\n</app-anchored-overlay>\r\n\r\n<ng-template #panelTpl>\r\n <div\r\n class=\"tooltip__panel\"\r\n [id]=\"tooltipId\"\r\n role=\"tooltip\"\r\n (mouseenter)=\"onPanelMouseEnter()\"\r\n (mouseleave)=\"onPanelMouseLeave()\"\r\n >\r\n @if (panelContentTpl) {\r\n <ng-container [ngTemplateOutlet]=\"panelContentTpl\" />\r\n } @else {\r\n {{ text }}\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: [".tooltip__trigger{display:inline-flex;max-width:100%;min-width:0;align-items:center}.tooltip__panel{max-width:min(18rem,100vw - 16px);padding:.4rem .6rem;font-size:.8125rem;line-height:1.35;color:var(--app-color-text-primary, #1a2f45);background:var(--app-color-nav-surface, var(--app-color-surface, #fff));border:1px solid var(--app-color-nav-border-subtle, var(--app-color-border-subtle, rgba(26, 47, 69, .12)));border-radius:4px;box-shadow:0 2px 8px var(--app-color-overlay-shadow, rgba(0, 0, 0, .1));box-sizing:border-box;animation:tooltip-fade-in .12s ease-out}@keyframes tooltip-fade-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "component", type: AnchoredOverlayComponent, selector: "app-anchored-overlay", inputs: ["open", "panelTemplate", "connectedPositions", "pushConnectedOverlay", "hasBackdrop", "closeOnEscape", "closeOnOutsideClick", "panelWidthPx", "panelMinWidthPx", "panelMaxWidthPx", "scrollStrategy"], outputs: ["openChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8447
8447
  }
8448
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TooltipComponent, decorators: [{
8448
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TooltipComponent, decorators: [{
8449
8449
  type: Component,
8450
- args: [{ selector: 'app-tooltip', standalone: true, imports: [AnchoredOverlayComponent, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-anchored-overlay\r\n [open]=\"open\"\r\n (openChange)=\"onAnchoredOpenChange($event)\"\r\n [panelTemplate]=\"panelTpl\"\r\n [connectedPositions]=\"positions\"\r\n [pushConnectedOverlay]=\"true\"\r\n [hasBackdrop]=\"false\"\r\n [closeOnEscape]=\"true\"\r\n [closeOnOutsideClick]=\"false\"\r\n>\r\n <span\r\n class=\"tooltip__trigger\"\r\n [attr.aria-describedby]=\"describedByWhenOpen\"\r\n (mouseenter)=\"onTriggerMouseEnter()\"\r\n (mouseleave)=\"onTriggerMouseLeave()\"\r\n (focusin)=\"onTriggerFocusIn()\"\r\n (focusout)=\"onTriggerFocusOut()\"\r\n >\r\n <ng-content />\r\n </span>\r\n</app-anchored-overlay>\r\n\r\n<ng-template #panelTpl>\r\n <div\r\n class=\"tooltip__panel\"\r\n [id]=\"tooltipId\"\r\n role=\"tooltip\"\r\n (mouseenter)=\"onPanelMouseEnter()\"\r\n (mouseleave)=\"onPanelMouseLeave()\"\r\n >\r\n @if (panelContentTpl) {\r\n <ng-container [ngTemplateOutlet]=\"panelContentTpl\" />\r\n } @else {\r\n {{ text }}\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: [".tooltip__trigger{display:inline-flex;max-width:100%;min-width:0;align-items:center}.tooltip__panel{max-width:min(18rem,100vw - 16px);padding:.4rem .6rem;font-size:.8125rem;line-height:1.35;color:var(--app-color-text-primary, #1a2f45);background:var(--app-color-nav-surface, var(--app-color-surface, #fff));border:1px solid var(--app-color-nav-border-subtle, var(--app-color-border-subtle, rgba(26, 47, 69, .12)));border-radius:4px;box-shadow:0 2px 8px var(--app-color-overlay-shadow, rgba(0, 0, 0, .1));box-sizing:border-box;animation:tooltip-fade-in .12s ease-out}@keyframes tooltip-fade-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}\n"] }]
8450
+ args: [{ selector: 'app-tooltip', imports: [AnchoredOverlayComponent, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-anchored-overlay\r\n [open]=\"open\"\r\n (openChange)=\"onAnchoredOpenChange($event)\"\r\n [panelTemplate]=\"panelTpl\"\r\n [connectedPositions]=\"positions\"\r\n [pushConnectedOverlay]=\"true\"\r\n [hasBackdrop]=\"false\"\r\n [closeOnEscape]=\"true\"\r\n [closeOnOutsideClick]=\"false\"\r\n>\r\n <span\r\n class=\"tooltip__trigger\"\r\n [attr.aria-describedby]=\"describedByWhenOpen\"\r\n (mouseenter)=\"onTriggerMouseEnter()\"\r\n (mouseleave)=\"onTriggerMouseLeave()\"\r\n (focusin)=\"onTriggerFocusIn()\"\r\n (focusout)=\"onTriggerFocusOut()\"\r\n >\r\n <ng-content />\r\n </span>\r\n</app-anchored-overlay>\r\n\r\n<ng-template #panelTpl>\r\n <div\r\n class=\"tooltip__panel\"\r\n [id]=\"tooltipId\"\r\n role=\"tooltip\"\r\n (mouseenter)=\"onPanelMouseEnter()\"\r\n (mouseleave)=\"onPanelMouseLeave()\"\r\n >\r\n @if (panelContentTpl) {\r\n <ng-container [ngTemplateOutlet]=\"panelContentTpl\" />\r\n } @else {\r\n {{ text }}\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: [".tooltip__trigger{display:inline-flex;max-width:100%;min-width:0;align-items:center}.tooltip__panel{max-width:min(18rem,100vw - 16px);padding:.4rem .6rem;font-size:.8125rem;line-height:1.35;color:var(--app-color-text-primary, #1a2f45);background:var(--app-color-nav-surface, var(--app-color-surface, #fff));border:1px solid var(--app-color-nav-border-subtle, var(--app-color-border-subtle, rgba(26, 47, 69, .12)));border-radius:4px;box-shadow:0 2px 8px var(--app-color-overlay-shadow, rgba(0, 0, 0, .1));box-sizing:border-box;animation:tooltip-fade-in .12s ease-out}@keyframes tooltip-fade-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}\n"] }]
8451
8451
  }], propDecorators: { text: [{
8452
8452
  type: Input
8453
8453
  }], placement: [{
@@ -8473,10 +8473,10 @@ class PopoverBodyTemplateDirective {
8473
8473
  constructor() {
8474
8474
  this.templateRef = inject((TemplateRef));
8475
8475
  }
8476
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopoverBodyTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8477
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: PopoverBodyTemplateDirective, isStandalone: true, selector: "ng-template[appPopoverBody]", ngImport: i0 }); }
8476
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PopoverBodyTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8477
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: PopoverBodyTemplateDirective, isStandalone: true, selector: "ng-template[appPopoverBody]", ngImport: i0 }); }
8478
8478
  }
8479
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopoverBodyTemplateDirective, decorators: [{
8479
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PopoverBodyTemplateDirective, decorators: [{
8480
8480
  type: Directive,
8481
8481
  args: [{
8482
8482
  selector: 'ng-template[appPopoverBody]',
@@ -8488,10 +8488,10 @@ class PopoverFooterTemplateDirective {
8488
8488
  constructor() {
8489
8489
  this.templateRef = inject((TemplateRef));
8490
8490
  }
8491
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopoverFooterTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8492
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: PopoverFooterTemplateDirective, isStandalone: true, selector: "ng-template[appPopoverFooter]", ngImport: i0 }); }
8491
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PopoverFooterTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8492
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: PopoverFooterTemplateDirective, isStandalone: true, selector: "ng-template[appPopoverFooter]", ngImport: i0 }); }
8493
8493
  }
8494
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopoverFooterTemplateDirective, decorators: [{
8494
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PopoverFooterTemplateDirective, decorators: [{
8495
8495
  type: Directive,
8496
8496
  args: [{
8497
8497
  selector: 'ng-template[appPopoverFooter]',
@@ -8550,12 +8550,12 @@ class PopoverComponent {
8550
8550
  this.openChange.emit(next);
8551
8551
  this.cdr.markForCheck();
8552
8552
  }
8553
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8554
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PopoverComponent, isStandalone: true, selector: "app-popover", inputs: { title: "title", open: ["open", "open", booleanAttribute], placement: "placement", offsetPx: "offsetPx", minWidthPx: "minWidthPx", maxWidthPx: "maxWidthPx", ariaLabel: "ariaLabel" }, outputs: { openChange: "openChange" }, queries: [{ propertyName: "bodyDirective", first: true, predicate: PopoverBodyTemplateDirective, descendants: true }, { propertyName: "footerDirective", first: true, predicate: PopoverFooterTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "panelTpl", first: true, predicate: ["panelTpl"], descendants: true, static: true }], ngImport: i0, template: "<app-anchored-overlay\r\n [open]=\"open\"\r\n (openChange)=\"setOpen($event)\"\r\n [panelTemplate]=\"panelTpl\"\r\n [connectedPositions]=\"positions\"\r\n [pushConnectedOverlay]=\"true\"\r\n [hasBackdrop]=\"false\"\r\n [closeOnEscape]=\"true\"\r\n [closeOnOutsideClick]=\"true\"\r\n [panelMinWidthPx]=\"minWidthPx\"\r\n [panelMaxWidthPx]=\"maxWidthPx\"\r\n>\r\n <span class=\"popover__trigger-slot\" (click)=\"onTriggerClick($event)\">\r\n <ng-content select=\"[appPopoverTrigger]\" />\r\n </span>\r\n</app-anchored-overlay>\r\n\r\n<ng-template #panelTpl>\r\n <div\r\n class=\"popover__surface\"\r\n role=\"dialog\"\r\n [attr.aria-modal]=\"false\"\r\n [attr.aria-labelledby]=\"title.trim() ? titleId : null\"\r\n [attr.aria-label]=\"!title.trim() ? effectiveAriaLabel : null\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (title.trim()) {\r\n <header class=\"popover__header\" [id]=\"titleId\">{{ title }}</header>\r\n }\r\n <div class=\"popover__body\">\r\n @if (bodyTpl) {\r\n <ng-container [ngTemplateOutlet]=\"bodyTpl\" />\r\n }\r\n </div>\r\n @if (footerTpl) {\r\n <footer class=\"popover__footer\">\r\n <ng-container [ngTemplateOutlet]=\"footerTpl\" />\r\n </footer>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.popover__trigger-slot{display:inline-flex;max-width:100%;min-width:0;cursor:pointer}.popover__surface{display:flex;flex-direction:column;gap:0;min-width:0;padding:0;background:var(--app-color-nav-surface, var(--app-color-surface, #fff));border:1px solid var(--app-color-nav-border-subtle, var(--app-color-border-subtle, rgba(26, 47, 69, .09)));border-radius:4px;box-shadow:0 4px 12px var(--app-color-overlay-shadow, rgba(0, 0, 0, .12));max-height:min(70vh,24rem);overflow:auto;box-sizing:border-box;animation:popover-fade-in .15s ease-out}.popover__header{margin:0;padding:.65rem .85rem;font-size:.9rem;font-weight:600;color:var(--app-color-text-primary, #1a2f45);background:var(--app-color-nav-surface, var(--app-color-surface, #fff));border-bottom:1px solid var(--app-color-nav-border-subtle, var(--app-color-border-subtle, rgba(26, 47, 69, .09)))}.popover__body{padding:.75rem .85rem;font-size:.875rem;line-height:1.45;color:var(--app-color-text-primary, #1a2f45)}.popover__footer{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end;padding:.55rem .85rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-nav-surface, var(--app-color-surface, #fff))}@keyframes popover-fade-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "component", type: AnchoredOverlayComponent, selector: "app-anchored-overlay", inputs: ["open", "panelTemplate", "connectedPositions", "pushConnectedOverlay", "hasBackdrop", "closeOnEscape", "closeOnOutsideClick", "panelWidthPx", "panelMinWidthPx", "panelMaxWidthPx", "scrollStrategy"], outputs: ["openChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8553
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8554
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: PopoverComponent, isStandalone: true, selector: "app-popover", inputs: { title: "title", open: ["open", "open", booleanAttribute], placement: "placement", offsetPx: "offsetPx", minWidthPx: "minWidthPx", maxWidthPx: "maxWidthPx", ariaLabel: "ariaLabel" }, outputs: { openChange: "openChange" }, queries: [{ propertyName: "bodyDirective", first: true, predicate: PopoverBodyTemplateDirective, descendants: true }, { propertyName: "footerDirective", first: true, predicate: PopoverFooterTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "panelTpl", first: true, predicate: ["panelTpl"], descendants: true, static: true }], ngImport: i0, template: "<app-anchored-overlay\r\n [open]=\"open\"\r\n (openChange)=\"setOpen($event)\"\r\n [panelTemplate]=\"panelTpl\"\r\n [connectedPositions]=\"positions\"\r\n [pushConnectedOverlay]=\"true\"\r\n [hasBackdrop]=\"false\"\r\n [closeOnEscape]=\"true\"\r\n [closeOnOutsideClick]=\"true\"\r\n [panelMinWidthPx]=\"minWidthPx\"\r\n [panelMaxWidthPx]=\"maxWidthPx\"\r\n>\r\n <span class=\"popover__trigger-slot\" (click)=\"onTriggerClick($event)\">\r\n <ng-content select=\"[appPopoverTrigger]\" />\r\n </span>\r\n</app-anchored-overlay>\r\n\r\n<ng-template #panelTpl>\r\n <div\r\n class=\"popover__surface\"\r\n role=\"dialog\"\r\n [attr.aria-modal]=\"false\"\r\n [attr.aria-labelledby]=\"title.trim() ? titleId : null\"\r\n [attr.aria-label]=\"!title.trim() ? effectiveAriaLabel : null\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (title.trim()) {\r\n <header class=\"popover__header\" [id]=\"titleId\">{{ title }}</header>\r\n }\r\n <div class=\"popover__body\">\r\n @if (bodyTpl) {\r\n <ng-container [ngTemplateOutlet]=\"bodyTpl\" />\r\n }\r\n </div>\r\n @if (footerTpl) {\r\n <footer class=\"popover__footer\">\r\n <ng-container [ngTemplateOutlet]=\"footerTpl\" />\r\n </footer>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.popover__trigger-slot{display:inline-flex;max-width:100%;min-width:0;cursor:pointer}.popover__surface{display:flex;flex-direction:column;gap:0;min-width:0;padding:0;background:var(--app-color-nav-surface, var(--app-color-surface, #fff));border:1px solid var(--app-color-nav-border-subtle, var(--app-color-border-subtle, rgba(26, 47, 69, .09)));border-radius:4px;box-shadow:0 4px 12px var(--app-color-overlay-shadow, rgba(0, 0, 0, .12));max-height:min(70vh,24rem);overflow:auto;box-sizing:border-box;animation:popover-fade-in .15s ease-out}.popover__header{margin:0;padding:.65rem .85rem;font-size:.9rem;font-weight:600;color:var(--app-color-text-primary, #1a2f45);background:var(--app-color-nav-surface, var(--app-color-surface, #fff));border-bottom:1px solid var(--app-color-nav-border-subtle, var(--app-color-border-subtle, rgba(26, 47, 69, .09)))}.popover__body{padding:.75rem .85rem;font-size:.875rem;line-height:1.45;color:var(--app-color-text-primary, #1a2f45)}.popover__footer{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end;padding:.55rem .85rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-nav-surface, var(--app-color-surface, #fff))}@keyframes popover-fade-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "component", type: AnchoredOverlayComponent, selector: "app-anchored-overlay", inputs: ["open", "panelTemplate", "connectedPositions", "pushConnectedOverlay", "hasBackdrop", "closeOnEscape", "closeOnOutsideClick", "panelWidthPx", "panelMinWidthPx", "panelMaxWidthPx", "scrollStrategy"], outputs: ["openChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8555
8555
  }
8556
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopoverComponent, decorators: [{
8556
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PopoverComponent, decorators: [{
8557
8557
  type: Component,
8558
- args: [{ selector: 'app-popover', standalone: true, imports: [AnchoredOverlayComponent, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-anchored-overlay\r\n [open]=\"open\"\r\n (openChange)=\"setOpen($event)\"\r\n [panelTemplate]=\"panelTpl\"\r\n [connectedPositions]=\"positions\"\r\n [pushConnectedOverlay]=\"true\"\r\n [hasBackdrop]=\"false\"\r\n [closeOnEscape]=\"true\"\r\n [closeOnOutsideClick]=\"true\"\r\n [panelMinWidthPx]=\"minWidthPx\"\r\n [panelMaxWidthPx]=\"maxWidthPx\"\r\n>\r\n <span class=\"popover__trigger-slot\" (click)=\"onTriggerClick($event)\">\r\n <ng-content select=\"[appPopoverTrigger]\" />\r\n </span>\r\n</app-anchored-overlay>\r\n\r\n<ng-template #panelTpl>\r\n <div\r\n class=\"popover__surface\"\r\n role=\"dialog\"\r\n [attr.aria-modal]=\"false\"\r\n [attr.aria-labelledby]=\"title.trim() ? titleId : null\"\r\n [attr.aria-label]=\"!title.trim() ? effectiveAriaLabel : null\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (title.trim()) {\r\n <header class=\"popover__header\" [id]=\"titleId\">{{ title }}</header>\r\n }\r\n <div class=\"popover__body\">\r\n @if (bodyTpl) {\r\n <ng-container [ngTemplateOutlet]=\"bodyTpl\" />\r\n }\r\n </div>\r\n @if (footerTpl) {\r\n <footer class=\"popover__footer\">\r\n <ng-container [ngTemplateOutlet]=\"footerTpl\" />\r\n </footer>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.popover__trigger-slot{display:inline-flex;max-width:100%;min-width:0;cursor:pointer}.popover__surface{display:flex;flex-direction:column;gap:0;min-width:0;padding:0;background:var(--app-color-nav-surface, var(--app-color-surface, #fff));border:1px solid var(--app-color-nav-border-subtle, var(--app-color-border-subtle, rgba(26, 47, 69, .09)));border-radius:4px;box-shadow:0 4px 12px var(--app-color-overlay-shadow, rgba(0, 0, 0, .12));max-height:min(70vh,24rem);overflow:auto;box-sizing:border-box;animation:popover-fade-in .15s ease-out}.popover__header{margin:0;padding:.65rem .85rem;font-size:.9rem;font-weight:600;color:var(--app-color-text-primary, #1a2f45);background:var(--app-color-nav-surface, var(--app-color-surface, #fff));border-bottom:1px solid var(--app-color-nav-border-subtle, var(--app-color-border-subtle, rgba(26, 47, 69, .09)))}.popover__body{padding:.75rem .85rem;font-size:.875rem;line-height:1.45;color:var(--app-color-text-primary, #1a2f45)}.popover__footer{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end;padding:.55rem .85rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-nav-surface, var(--app-color-surface, #fff))}@keyframes popover-fade-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}\n"] }]
8558
+ args: [{ selector: 'app-popover', imports: [AnchoredOverlayComponent, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-anchored-overlay\r\n [open]=\"open\"\r\n (openChange)=\"setOpen($event)\"\r\n [panelTemplate]=\"panelTpl\"\r\n [connectedPositions]=\"positions\"\r\n [pushConnectedOverlay]=\"true\"\r\n [hasBackdrop]=\"false\"\r\n [closeOnEscape]=\"true\"\r\n [closeOnOutsideClick]=\"true\"\r\n [panelMinWidthPx]=\"minWidthPx\"\r\n [panelMaxWidthPx]=\"maxWidthPx\"\r\n>\r\n <span class=\"popover__trigger-slot\" (click)=\"onTriggerClick($event)\">\r\n <ng-content select=\"[appPopoverTrigger]\" />\r\n </span>\r\n</app-anchored-overlay>\r\n\r\n<ng-template #panelTpl>\r\n <div\r\n class=\"popover__surface\"\r\n role=\"dialog\"\r\n [attr.aria-modal]=\"false\"\r\n [attr.aria-labelledby]=\"title.trim() ? titleId : null\"\r\n [attr.aria-label]=\"!title.trim() ? effectiveAriaLabel : null\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (title.trim()) {\r\n <header class=\"popover__header\" [id]=\"titleId\">{{ title }}</header>\r\n }\r\n <div class=\"popover__body\">\r\n @if (bodyTpl) {\r\n <ng-container [ngTemplateOutlet]=\"bodyTpl\" />\r\n }\r\n </div>\r\n @if (footerTpl) {\r\n <footer class=\"popover__footer\">\r\n <ng-container [ngTemplateOutlet]=\"footerTpl\" />\r\n </footer>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.popover__trigger-slot{display:inline-flex;max-width:100%;min-width:0;cursor:pointer}.popover__surface{display:flex;flex-direction:column;gap:0;min-width:0;padding:0;background:var(--app-color-nav-surface, var(--app-color-surface, #fff));border:1px solid var(--app-color-nav-border-subtle, var(--app-color-border-subtle, rgba(26, 47, 69, .09)));border-radius:4px;box-shadow:0 4px 12px var(--app-color-overlay-shadow, rgba(0, 0, 0, .12));max-height:min(70vh,24rem);overflow:auto;box-sizing:border-box;animation:popover-fade-in .15s ease-out}.popover__header{margin:0;padding:.65rem .85rem;font-size:.9rem;font-weight:600;color:var(--app-color-text-primary, #1a2f45);background:var(--app-color-nav-surface, var(--app-color-surface, #fff));border-bottom:1px solid var(--app-color-nav-border-subtle, var(--app-color-border-subtle, rgba(26, 47, 69, .09)))}.popover__body{padding:.75rem .85rem;font-size:.875rem;line-height:1.45;color:var(--app-color-text-primary, #1a2f45)}.popover__footer{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end;padding:.55rem .85rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-nav-surface, var(--app-color-surface, #fff))}@keyframes popover-fade-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}\n"] }]
8559
8559
  }], propDecorators: { title: [{
8560
8560
  type: Input
8561
8561
  }], open: [{
@@ -8586,10 +8586,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
8586
8586
 
8587
8587
  /** Marca o elemento que abre/fecha o popover ao clicar. */
8588
8588
  class PopoverTriggerDirective {
8589
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopoverTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8590
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: PopoverTriggerDirective, isStandalone: true, selector: "[appPopoverTrigger]", ngImport: i0 }); }
8589
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PopoverTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8590
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: PopoverTriggerDirective, isStandalone: true, selector: "[appPopoverTrigger]", ngImport: i0 }); }
8591
8591
  }
8592
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopoverTriggerDirective, decorators: [{
8592
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PopoverTriggerDirective, decorators: [{
8593
8593
  type: Directive,
8594
8594
  args: [{
8595
8595
  selector: '[appPopoverTrigger]',
@@ -8634,10 +8634,10 @@ class AppShellSidebarTemplateDirective {
8634
8634
  constructor() {
8635
8635
  this.templateRef = inject((TemplateRef));
8636
8636
  }
8637
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppShellSidebarTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8638
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: AppShellSidebarTemplateDirective, isStandalone: true, selector: "ng-template[appShellSidebar]", ngImport: i0 }); }
8637
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppShellSidebarTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8638
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: AppShellSidebarTemplateDirective, isStandalone: true, selector: "ng-template[appShellSidebar]", ngImport: i0 }); }
8639
8639
  }
8640
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppShellSidebarTemplateDirective, decorators: [{
8640
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppShellSidebarTemplateDirective, decorators: [{
8641
8641
  type: Directive,
8642
8642
  args: [{
8643
8643
  selector: 'ng-template[appShellSidebar]',
@@ -8713,12 +8713,12 @@ class AppShellComponent {
8713
8713
  this.emitMobileNavOpen(false);
8714
8714
  }
8715
8715
  }
8716
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8717
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AppShellComponent, isStandalone: true, selector: "app-shell", inputs: { sidebarCollapsed: ["sidebarCollapsed", "sidebarCollapsed", booleanAttribute], mobileNavOpen: ["mobileNavOpen", "mobileNavOpen", booleanAttribute], mobileLayoutQuery: "mobileLayoutQuery" }, outputs: { sidebarCollapsedChange: "sidebarCollapsedChange", mobileNavOpenChange: "mobileNavOpenChange" }, host: { properties: { "class": "this.hostThemeClasses" } }, queries: [{ propertyName: "sidebarSlot", first: true, predicate: AppShellSidebarTemplateDirective, descendants: true }], exportAs: ["appShell"], ngImport: i0, template: "<div\r\n class=\"app-shell\"\r\n [class.app-shell--mobile]=\"isMobileLayout\"\r\n [class.app-shell--sidebar-collapsed]=\"sidebarCollapsed\"\r\n>\r\n @if (!isMobileLayout && sidebarTemplate) {\r\n <aside class=\"app-shell__sidebar\" aria-label=\"Navega\u00E7\u00E3o principal\">\r\n <ng-container [ngTemplateOutlet]=\"sidebarTemplate\" />\r\n </aside>\r\n }\r\n\r\n @if (isMobileLayout && sidebarTemplate) {\r\n <app-drawer\r\n [open]=\"mobileNavOpen\"\r\n (openChange)=\"onMobileDrawerOpenChange($event)\"\r\n [side]=\"DrawerSide.Left\"\r\n [size]=\"DrawerSize.Sm\"\r\n title=\"Navega\u00E7\u00E3o\"\r\n [showCloseButton]=\"true\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"sidebarTemplate\" />\r\n </app-drawer>\r\n }\r\n\r\n <div class=\"app-shell__main\">\r\n <ng-content select=\"[appShellTopbar]\" />\r\n <main class=\"app-shell__content\">\r\n <ng-content />\r\n </main>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@keyframes app-sidebar-nav-reveal-in{0%{opacity:0;transform:translate3d(-.45rem,0,0)}to{opacity:1;transform:translateZ(0)}}:host{display:flex;flex:1 1 auto;flex-direction:column;width:100%;min-width:0;min-height:0;box-sizing:border-box}.app-shell{display:flex;flex-direction:row;align-items:stretch;flex:1 1 auto;width:100%;min-height:0;min-width:0;box-sizing:border-box}.app-shell__sidebar{display:flex;flex-direction:column;flex:0 0 17.5rem;width:17.5rem;max-width:100%;min-width:0;min-height:0;align-self:stretch;overflow:hidden;transition:flex-basis .12s cubic-bezier(.22,1,.36,1),width .12s cubic-bezier(.22,1,.36,1),padding .12s cubic-bezier(.22,1,.36,1)}.app-shell--sidebar-collapsed:not(.app-shell--mobile) .app-shell__sidebar{flex-basis:5rem;width:5rem}.app-shell__main{flex:1 1 auto;display:flex;flex-direction:column;min-width:0;min-height:0;align-self:stretch;overflow:hidden}.app-shell__content{flex:1 1 auto;min-height:0;min-width:0;overflow:auto;padding:1rem 1.1rem;box-sizing:border-box;background:var(--app-color-shell-main-bg, var(--app-color-background, #fafbfc))}.app-shell--mobile .app-shell__sidebar{display:none}.app-shell--mobile .app-shell__main{width:100%}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DrawerComponent, selector: "app-drawer", inputs: ["open", "side", "size", "title", "showCloseButton"], outputs: ["openChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8716
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8717
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AppShellComponent, isStandalone: true, selector: "app-shell", inputs: { sidebarCollapsed: ["sidebarCollapsed", "sidebarCollapsed", booleanAttribute], mobileNavOpen: ["mobileNavOpen", "mobileNavOpen", booleanAttribute], mobileLayoutQuery: "mobileLayoutQuery" }, outputs: { sidebarCollapsedChange: "sidebarCollapsedChange", mobileNavOpenChange: "mobileNavOpenChange" }, host: { properties: { "class": "this.hostThemeClasses" } }, queries: [{ propertyName: "sidebarSlot", first: true, predicate: AppShellSidebarTemplateDirective, descendants: true }], exportAs: ["appShell"], ngImport: i0, template: "<div\r\n class=\"app-shell\"\r\n [class.app-shell--mobile]=\"isMobileLayout\"\r\n [class.app-shell--sidebar-collapsed]=\"sidebarCollapsed\"\r\n>\r\n @if (!isMobileLayout && sidebarTemplate) {\r\n <aside class=\"app-shell__sidebar\" aria-label=\"Navega\u00E7\u00E3o principal\">\r\n <ng-container [ngTemplateOutlet]=\"sidebarTemplate\" />\r\n </aside>\r\n }\r\n\r\n @if (isMobileLayout && sidebarTemplate) {\r\n <app-drawer\r\n [open]=\"mobileNavOpen\"\r\n (openChange)=\"onMobileDrawerOpenChange($event)\"\r\n [side]=\"DrawerSide.Left\"\r\n [size]=\"DrawerSize.Sm\"\r\n title=\"Navega\u00E7\u00E3o\"\r\n [showCloseButton]=\"true\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"sidebarTemplate\" />\r\n </app-drawer>\r\n }\r\n\r\n <div class=\"app-shell__main\">\r\n <ng-content select=\"[appShellTopbar]\" />\r\n <main class=\"app-shell__content\">\r\n <ng-content />\r\n </main>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@keyframes app-sidebar-nav-reveal-in{0%{opacity:0;transform:translate3d(-.45rem,0,0)}to{opacity:1;transform:translateZ(0)}}:host{display:flex;flex:1 1 auto;flex-direction:column;width:100%;min-width:0;min-height:0;box-sizing:border-box}.app-shell{display:flex;flex-direction:row;align-items:stretch;flex:1 1 auto;width:100%;min-height:0;min-width:0;box-sizing:border-box}.app-shell__sidebar{display:flex;flex-direction:column;flex:0 0 17.5rem;width:17.5rem;max-width:100%;min-width:0;min-height:0;align-self:stretch;overflow:hidden;transition:flex-basis .12s cubic-bezier(.22,1,.36,1),width .12s cubic-bezier(.22,1,.36,1),padding .12s cubic-bezier(.22,1,.36,1)}.app-shell--sidebar-collapsed:not(.app-shell--mobile) .app-shell__sidebar{flex-basis:5rem;width:5rem}.app-shell__main{flex:1 1 auto;display:flex;flex-direction:column;min-width:0;min-height:0;align-self:stretch;overflow:hidden}.app-shell__content{flex:1 1 auto;min-height:0;min-width:0;overflow:auto;padding:1rem 1.1rem;box-sizing:border-box;background:var(--app-color-shell-main-bg, var(--app-color-background, #fafbfc))}.app-shell--mobile .app-shell__sidebar{display:none}.app-shell--mobile .app-shell__main{width:100%}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DrawerComponent, selector: "app-drawer", inputs: ["open", "side", "size", "title", "showCloseButton"], outputs: ["openChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8718
8718
  }
8719
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppShellComponent, decorators: [{
8719
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppShellComponent, decorators: [{
8720
8720
  type: Component,
8721
- args: [{ selector: 'app-shell', standalone: true, exportAs: 'appShell', imports: [NgTemplateOutlet, DrawerComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"app-shell\"\r\n [class.app-shell--mobile]=\"isMobileLayout\"\r\n [class.app-shell--sidebar-collapsed]=\"sidebarCollapsed\"\r\n>\r\n @if (!isMobileLayout && sidebarTemplate) {\r\n <aside class=\"app-shell__sidebar\" aria-label=\"Navega\u00E7\u00E3o principal\">\r\n <ng-container [ngTemplateOutlet]=\"sidebarTemplate\" />\r\n </aside>\r\n }\r\n\r\n @if (isMobileLayout && sidebarTemplate) {\r\n <app-drawer\r\n [open]=\"mobileNavOpen\"\r\n (openChange)=\"onMobileDrawerOpenChange($event)\"\r\n [side]=\"DrawerSide.Left\"\r\n [size]=\"DrawerSize.Sm\"\r\n title=\"Navega\u00E7\u00E3o\"\r\n [showCloseButton]=\"true\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"sidebarTemplate\" />\r\n </app-drawer>\r\n }\r\n\r\n <div class=\"app-shell__main\">\r\n <ng-content select=\"[appShellTopbar]\" />\r\n <main class=\"app-shell__content\">\r\n <ng-content />\r\n </main>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@keyframes app-sidebar-nav-reveal-in{0%{opacity:0;transform:translate3d(-.45rem,0,0)}to{opacity:1;transform:translateZ(0)}}:host{display:flex;flex:1 1 auto;flex-direction:column;width:100%;min-width:0;min-height:0;box-sizing:border-box}.app-shell{display:flex;flex-direction:row;align-items:stretch;flex:1 1 auto;width:100%;min-height:0;min-width:0;box-sizing:border-box}.app-shell__sidebar{display:flex;flex-direction:column;flex:0 0 17.5rem;width:17.5rem;max-width:100%;min-width:0;min-height:0;align-self:stretch;overflow:hidden;transition:flex-basis .12s cubic-bezier(.22,1,.36,1),width .12s cubic-bezier(.22,1,.36,1),padding .12s cubic-bezier(.22,1,.36,1)}.app-shell--sidebar-collapsed:not(.app-shell--mobile) .app-shell__sidebar{flex-basis:5rem;width:5rem}.app-shell__main{flex:1 1 auto;display:flex;flex-direction:column;min-width:0;min-height:0;align-self:stretch;overflow:hidden}.app-shell__content{flex:1 1 auto;min-height:0;min-width:0;overflow:auto;padding:1rem 1.1rem;box-sizing:border-box;background:var(--app-color-shell-main-bg, var(--app-color-background, #fafbfc))}.app-shell--mobile .app-shell__sidebar{display:none}.app-shell--mobile .app-shell__main{width:100%}\n"] }]
8721
+ args: [{ selector: 'app-shell', exportAs: 'appShell', imports: [NgTemplateOutlet, DrawerComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"app-shell\"\r\n [class.app-shell--mobile]=\"isMobileLayout\"\r\n [class.app-shell--sidebar-collapsed]=\"sidebarCollapsed\"\r\n>\r\n @if (!isMobileLayout && sidebarTemplate) {\r\n <aside class=\"app-shell__sidebar\" aria-label=\"Navega\u00E7\u00E3o principal\">\r\n <ng-container [ngTemplateOutlet]=\"sidebarTemplate\" />\r\n </aside>\r\n }\r\n\r\n @if (isMobileLayout && sidebarTemplate) {\r\n <app-drawer\r\n [open]=\"mobileNavOpen\"\r\n (openChange)=\"onMobileDrawerOpenChange($event)\"\r\n [side]=\"DrawerSide.Left\"\r\n [size]=\"DrawerSize.Sm\"\r\n title=\"Navega\u00E7\u00E3o\"\r\n [showCloseButton]=\"true\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"sidebarTemplate\" />\r\n </app-drawer>\r\n }\r\n\r\n <div class=\"app-shell__main\">\r\n <ng-content select=\"[appShellTopbar]\" />\r\n <main class=\"app-shell__content\">\r\n <ng-content />\r\n </main>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@keyframes app-sidebar-nav-reveal-in{0%{opacity:0;transform:translate3d(-.45rem,0,0)}to{opacity:1;transform:translateZ(0)}}:host{display:flex;flex:1 1 auto;flex-direction:column;width:100%;min-width:0;min-height:0;box-sizing:border-box}.app-shell{display:flex;flex-direction:row;align-items:stretch;flex:1 1 auto;width:100%;min-height:0;min-width:0;box-sizing:border-box}.app-shell__sidebar{display:flex;flex-direction:column;flex:0 0 17.5rem;width:17.5rem;max-width:100%;min-width:0;min-height:0;align-self:stretch;overflow:hidden;transition:flex-basis .12s cubic-bezier(.22,1,.36,1),width .12s cubic-bezier(.22,1,.36,1),padding .12s cubic-bezier(.22,1,.36,1)}.app-shell--sidebar-collapsed:not(.app-shell--mobile) .app-shell__sidebar{flex-basis:5rem;width:5rem}.app-shell__main{flex:1 1 auto;display:flex;flex-direction:column;min-width:0;min-height:0;align-self:stretch;overflow:hidden}.app-shell__content{flex:1 1 auto;min-height:0;min-width:0;overflow:auto;padding:1rem 1.1rem;box-sizing:border-box;background:var(--app-color-shell-main-bg, var(--app-color-background, #fafbfc))}.app-shell--mobile .app-shell__sidebar{display:none}.app-shell--mobile .app-shell__main{width:100%}\n"] }]
8722
8722
  }], propDecorators: { hostThemeClasses: [{
8723
8723
  type: HostBinding,
8724
8724
  args: ['class']
@@ -8765,7 +8765,7 @@ class AppSidebarComponent {
8765
8765
  * Valor efectivo de `compressText` em `app-menu-list`: ao expandir, mantém-se comprimido
8766
8766
  * até a lateral terminar a animação de largura (evita flicker de texto).
8767
8767
  */
8768
- this.listCompressText = signal(true);
8768
+ this.listCompressText = signal(true, ...(ngDevMode ? [{ debugName: "listCompressText" }] : /* istanbul ignore next */ []));
8769
8769
  this.listRevealTimeoutId = null;
8770
8770
  this.destroyRef.onDestroy(() => this.clearListRevealTimeout());
8771
8771
  }
@@ -8795,12 +8795,12 @@ class AppSidebarComponent {
8795
8795
  this.listRevealTimeoutId = null;
8796
8796
  }
8797
8797
  }
8798
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppSidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8799
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: AppSidebarComponent, isStandalone: true, selector: "app-sidebar", inputs: { items: "items", menuId: "menuId", selectedItemId: "selectedItemId", collapsed: ["collapsed", "collapsed", booleanAttribute] }, outputs: { itemSelect: "itemSelect" }, host: { properties: { "class": "this.hostThemeClasses" } }, usesOnChanges: true, ngImport: i0, template: "<nav class=\"app-sidebar app-nav-surface\" [class.app-sidebar--collapsed]=\"collapsed\"\r\n [attr.aria-label]=\"'Navega\u00E7\u00E3o principal'\">\r\n <div class=\"app-sidebar__toolbar\"><ng-content select=\"[appSidebarToolbar]\" /></div>\r\n <app-menu-list\r\n class=\"app-sidebar__list\"\r\n [items]=\"items\"\r\n [menuId]=\"menuId\"\r\n [dense]=\"collapsed\"\r\n [compressText]=\"listCompressText()\"\r\n [selectedItemId]=\"selectedItemId\"\r\n (itemSelect)=\"itemSelect.emit($event)\"\r\n />\r\n</nav>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;min-width:0;height:100%;box-sizing:border-box}.app-sidebar{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;box-sizing:border-box;padding:.65rem .5rem;background:var(--app-color-nav-shell-bg);border-right:1px solid var(--app-color-nav-border-subtle)}.app-sidebar--collapsed{padding-left:.5rem;padding-right:.5rem}.app-sidebar__toolbar{flex:0 0 auto;display:flex;justify-content:flex-end;align-items:center;padding:0 .1rem .4rem;min-height:0}.app-sidebar__toolbar:empty{display:none}.app-sidebar--collapsed .app-sidebar__toolbar:not(:empty){justify-content:center;padding-left:0;padding-right:0}.app-sidebar__list{flex:1 1 auto;min-height:0;overflow:auto}\n"], dependencies: [{ kind: "component", type: MenuListComponent, selector: "app-menu-list", inputs: ["items", "menuId", "dense", "nested", "selectedItemId", "compressText"], outputs: ["itemSelect", "closeRequest", "submenuBack"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8798
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppSidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8799
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: AppSidebarComponent, isStandalone: true, selector: "app-sidebar", inputs: { items: "items", menuId: "menuId", selectedItemId: "selectedItemId", collapsed: ["collapsed", "collapsed", booleanAttribute] }, outputs: { itemSelect: "itemSelect" }, host: { properties: { "class": "this.hostThemeClasses" } }, usesOnChanges: true, ngImport: i0, template: "<nav class=\"app-sidebar app-nav-surface\" [class.app-sidebar--collapsed]=\"collapsed\"\r\n [attr.aria-label]=\"'Navega\u00E7\u00E3o principal'\">\r\n <div class=\"app-sidebar__toolbar\"><ng-content select=\"[appSidebarToolbar]\" /></div>\r\n <app-menu-list\r\n class=\"app-sidebar__list\"\r\n [items]=\"items\"\r\n [menuId]=\"menuId\"\r\n [dense]=\"collapsed\"\r\n [compressText]=\"listCompressText()\"\r\n [selectedItemId]=\"selectedItemId\"\r\n (itemSelect)=\"itemSelect.emit($event)\"\r\n />\r\n</nav>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;min-width:0;height:100%;box-sizing:border-box}.app-sidebar{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;box-sizing:border-box;padding:.65rem .5rem;background:var(--app-color-nav-shell-bg);border-right:1px solid var(--app-color-nav-border-subtle)}.app-sidebar--collapsed{padding-left:.5rem;padding-right:.5rem}.app-sidebar__toolbar{flex:0 0 auto;display:flex;justify-content:flex-end;align-items:center;padding:0 .1rem .4rem;min-height:0}.app-sidebar__toolbar:empty{display:none}.app-sidebar--collapsed .app-sidebar__toolbar:not(:empty){justify-content:center;padding-left:0;padding-right:0}.app-sidebar__list{flex:1 1 auto;min-height:0;overflow:auto}\n"], dependencies: [{ kind: "component", type: MenuListComponent, selector: "app-menu-list", inputs: ["items", "menuId", "dense", "nested", "selectedItemId", "compressText"], outputs: ["itemSelect", "closeRequest", "submenuBack"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8800
8800
  }
8801
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppSidebarComponent, decorators: [{
8801
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppSidebarComponent, decorators: [{
8802
8802
  type: Component,
8803
- args: [{ selector: 'app-sidebar', standalone: true, imports: [MenuListComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav class=\"app-sidebar app-nav-surface\" [class.app-sidebar--collapsed]=\"collapsed\"\r\n [attr.aria-label]=\"'Navega\u00E7\u00E3o principal'\">\r\n <div class=\"app-sidebar__toolbar\"><ng-content select=\"[appSidebarToolbar]\" /></div>\r\n <app-menu-list\r\n class=\"app-sidebar__list\"\r\n [items]=\"items\"\r\n [menuId]=\"menuId\"\r\n [dense]=\"collapsed\"\r\n [compressText]=\"listCompressText()\"\r\n [selectedItemId]=\"selectedItemId\"\r\n (itemSelect)=\"itemSelect.emit($event)\"\r\n />\r\n</nav>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;min-width:0;height:100%;box-sizing:border-box}.app-sidebar{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;box-sizing:border-box;padding:.65rem .5rem;background:var(--app-color-nav-shell-bg);border-right:1px solid var(--app-color-nav-border-subtle)}.app-sidebar--collapsed{padding-left:.5rem;padding-right:.5rem}.app-sidebar__toolbar{flex:0 0 auto;display:flex;justify-content:flex-end;align-items:center;padding:0 .1rem .4rem;min-height:0}.app-sidebar__toolbar:empty{display:none}.app-sidebar--collapsed .app-sidebar__toolbar:not(:empty){justify-content:center;padding-left:0;padding-right:0}.app-sidebar__list{flex:1 1 auto;min-height:0;overflow:auto}\n"] }]
8803
+ args: [{ selector: 'app-sidebar', imports: [MenuListComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav class=\"app-sidebar app-nav-surface\" [class.app-sidebar--collapsed]=\"collapsed\"\r\n [attr.aria-label]=\"'Navega\u00E7\u00E3o principal'\">\r\n <div class=\"app-sidebar__toolbar\"><ng-content select=\"[appSidebarToolbar]\" /></div>\r\n <app-menu-list\r\n class=\"app-sidebar__list\"\r\n [items]=\"items\"\r\n [menuId]=\"menuId\"\r\n [dense]=\"collapsed\"\r\n [compressText]=\"listCompressText()\"\r\n [selectedItemId]=\"selectedItemId\"\r\n (itemSelect)=\"itemSelect.emit($event)\"\r\n />\r\n</nav>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;min-width:0;height:100%;box-sizing:border-box}.app-sidebar{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;box-sizing:border-box;padding:.65rem .5rem;background:var(--app-color-nav-shell-bg);border-right:1px solid var(--app-color-nav-border-subtle)}.app-sidebar--collapsed{padding-left:.5rem;padding-right:.5rem}.app-sidebar__toolbar{flex:0 0 auto;display:flex;justify-content:flex-end;align-items:center;padding:0 .1rem .4rem;min-height:0}.app-sidebar__toolbar:empty{display:none}.app-sidebar--collapsed .app-sidebar__toolbar:not(:empty){justify-content:center;padding-left:0;padding-right:0}.app-sidebar__list{flex:1 1 auto;min-height:0;overflow:auto}\n"] }]
8804
8804
  }], ctorParameters: () => [], propDecorators: { hostThemeClasses: [{
8805
8805
  type: HostBinding,
8806
8806
  args: ['class']
@@ -8828,10 +8828,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
8828
8828
  * ```
8829
8829
  */
8830
8830
  class AppSidebarToolbarDirective {
8831
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppSidebarToolbarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8832
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: AppSidebarToolbarDirective, isStandalone: true, selector: "[appSidebarToolbar]", ngImport: i0 }); }
8831
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppSidebarToolbarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8832
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: AppSidebarToolbarDirective, isStandalone: true, selector: "[appSidebarToolbar]", ngImport: i0 }); }
8833
8833
  }
8834
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppSidebarToolbarDirective, decorators: [{
8834
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppSidebarToolbarDirective, decorators: [{
8835
8835
  type: Directive,
8836
8836
  args: [{
8837
8837
  selector: '[appSidebarToolbar]',
@@ -8856,10 +8856,10 @@ class AppShellSidebarToggleComponent {
8856
8856
  onClick() {
8857
8857
  this.toggle.emit();
8858
8858
  }
8859
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppShellSidebarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8860
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: AppShellSidebarToggleComponent, isStandalone: true, selector: "app-shell-sidebar-toggle", inputs: { collapsed: ["collapsed", "collapsed", booleanAttribute], expandLabel: "expandLabel", collapseLabel: "collapseLabel" }, outputs: { toggle: "toggle" }, ngImport: i0, template: "<button\r\n type=\"button\"\r\n class=\"app-shell-sidebar-toggle__btn\"\r\n [attr.aria-pressed]=\"collapsed\"\r\n [attr.aria-expanded]=\"!collapsed\"\r\n [attr.aria-label]=\"collapsed ? expandLabel : collapseLabel\"\r\n [attr.title]=\"collapsed ? expandLabel : collapseLabel\"\r\n (click)=\"onClick()\"\r\n>\r\n <i\r\n class=\"fa-solid\"\r\n [class.fa-angles-left]=\"!collapsed\"\r\n [class.fa-angles-right]=\"collapsed\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n</button>\r\n", styles: ["@charset \"UTF-8\";.app-shell-sidebar-toggle__btn{display:inline-flex;align-items:center;justify-content:center;width:2.35rem;height:2.35rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--app-color-text-secondary, #4a6682);cursor:pointer;line-height:1;font-size:.92rem;transition:background .16s ease,color .16s ease}.app-shell-sidebar-toggle__btn:hover{background:color-mix(in srgb,var(--app-color-primary) 6%,transparent);color:var(--app-color-primary)}.app-shell-sidebar-toggle__btn:focus-visible{outline:2px solid var(--app-color-nav-focus-ring);outline-offset:2px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8859
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppShellSidebarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8860
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.2.9", type: AppShellSidebarToggleComponent, isStandalone: true, selector: "app-shell-sidebar-toggle", inputs: { collapsed: ["collapsed", "collapsed", booleanAttribute], expandLabel: "expandLabel", collapseLabel: "collapseLabel" }, outputs: { toggle: "toggle" }, ngImport: i0, template: "<button\r\n type=\"button\"\r\n class=\"app-shell-sidebar-toggle__btn\"\r\n [attr.aria-pressed]=\"collapsed\"\r\n [attr.aria-expanded]=\"!collapsed\"\r\n [attr.aria-label]=\"collapsed ? expandLabel : collapseLabel\"\r\n [attr.title]=\"collapsed ? expandLabel : collapseLabel\"\r\n (click)=\"onClick()\"\r\n>\r\n <i\r\n class=\"fa-solid\"\r\n [class.fa-angles-left]=\"!collapsed\"\r\n [class.fa-angles-right]=\"collapsed\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n</button>\r\n", styles: ["@charset \"UTF-8\";.app-shell-sidebar-toggle__btn{display:inline-flex;align-items:center;justify-content:center;width:2.35rem;height:2.35rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--app-color-text-secondary, #4a6682);cursor:pointer;line-height:1;font-size:.92rem;transition:background .16s ease,color .16s ease}.app-shell-sidebar-toggle__btn:hover{background:color-mix(in srgb,var(--app-color-primary) 6%,transparent);color:var(--app-color-primary)}.app-shell-sidebar-toggle__btn:focus-visible{outline:2px solid var(--app-color-nav-focus-ring);outline-offset:2px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8861
8861
  }
8862
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppShellSidebarToggleComponent, decorators: [{
8862
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppShellSidebarToggleComponent, decorators: [{
8863
8863
  type: Component,
8864
8864
  args: [{ selector: 'app-shell-sidebar-toggle', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n type=\"button\"\r\n class=\"app-shell-sidebar-toggle__btn\"\r\n [attr.aria-pressed]=\"collapsed\"\r\n [attr.aria-expanded]=\"!collapsed\"\r\n [attr.aria-label]=\"collapsed ? expandLabel : collapseLabel\"\r\n [attr.title]=\"collapsed ? expandLabel : collapseLabel\"\r\n (click)=\"onClick()\"\r\n>\r\n <i\r\n class=\"fa-solid\"\r\n [class.fa-angles-left]=\"!collapsed\"\r\n [class.fa-angles-right]=\"collapsed\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n</button>\r\n", styles: ["@charset \"UTF-8\";.app-shell-sidebar-toggle__btn{display:inline-flex;align-items:center;justify-content:center;width:2.35rem;height:2.35rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--app-color-text-secondary, #4a6682);cursor:pointer;line-height:1;font-size:.92rem;transition:background .16s ease,color .16s ease}.app-shell-sidebar-toggle__btn:hover{background:color-mix(in srgb,var(--app-color-primary) 6%,transparent);color:var(--app-color-primary)}.app-shell-sidebar-toggle__btn:focus-visible{outline:2px solid var(--app-color-nav-focus-ring);outline-offset:2px}\n"] }]
8865
8865
  }], propDecorators: { collapsed: [{
@@ -8877,12 +8877,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
8877
8877
  * Barra superior com três zonas de projeção: início (ex.: menu), título, fim (ex.: usuário).
8878
8878
  */
8879
8879
  class AppTopbarComponent {
8880
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppTopbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8881
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AppTopbarComponent, isStandalone: true, selector: "app-topbar", ngImport: i0, template: "<div class=\"app-topbar\" role=\"banner\">\r\n <div class=\"app-topbar__start\">\r\n <ng-content select=\"[appTopbarStart]\" />\r\n </div>\r\n <div class=\"app-topbar__title\">\r\n <ng-content select=\"[appTopbarTitle]\" />\r\n </div>\r\n <div class=\"app-topbar__end\">\r\n <ng-content select=\"[appTopbarEnd]\" />\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.app-topbar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;min-height:3.25rem;padding:.5rem .85rem;box-sizing:border-box;background:var(--app-color-surface, #fff);border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));box-shadow:0 1px 2px var(--app-color-shell-shadow, rgba(26, 47, 69, .05))}.app-topbar__start,.app-topbar__end{display:flex;flex:0 0 auto;align-items:center;gap:.5rem;min-width:0}.app-topbar__title{flex:1 1 auto;min-width:0;margin:0;font-size:1.05rem;font-weight:600;color:var(--app-color-text-primary, #1a2f45);line-height:1.3}@media (max-width: 767.98px){.app-topbar{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto;align-items:center;column-gap:.5rem;row-gap:.35rem;min-height:auto;padding:.45rem .65rem .55rem}.app-topbar__start{grid-column:1;grid-row:1}.app-topbar__end{grid-column:3;grid-row:1;justify-self:end}.app-topbar__title{grid-column:1/-1;grid-row:2;flex:unset;font-size:.98rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8880
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppTopbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8881
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AppTopbarComponent, isStandalone: true, selector: "app-topbar", ngImport: i0, template: "<div class=\"app-topbar\" role=\"banner\">\r\n <div class=\"app-topbar__start\">\r\n <ng-content select=\"[appTopbarStart]\" />\r\n </div>\r\n <div class=\"app-topbar__title\">\r\n <ng-content select=\"[appTopbarTitle]\" />\r\n </div>\r\n <div class=\"app-topbar__end\">\r\n <ng-content select=\"[appTopbarEnd]\" />\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.app-topbar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;min-height:3.25rem;padding:.5rem .85rem;box-sizing:border-box;background:var(--app-color-surface, #fff);border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));box-shadow:0 1px 2px var(--app-color-shell-shadow, rgba(26, 47, 69, .05))}.app-topbar__start,.app-topbar__end{display:flex;flex:0 0 auto;align-items:center;gap:.5rem;min-width:0}.app-topbar__title{flex:1 1 auto;min-width:0;margin:0;font-size:1.05rem;font-weight:600;color:var(--app-color-text-primary, #1a2f45);line-height:1.3}@media(max-width:767.98px){.app-topbar{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto;align-items:center;column-gap:.5rem;row-gap:.35rem;min-height:auto;padding:.45rem .65rem .55rem}.app-topbar__start{grid-column:1;grid-row:1}.app-topbar__end{grid-column:3;grid-row:1;justify-self:end}.app-topbar__title{grid-column:1/-1;grid-row:2;flex:unset;font-size:.98rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8882
8882
  }
8883
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppTopbarComponent, decorators: [{
8883
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppTopbarComponent, decorators: [{
8884
8884
  type: Component,
8885
- args: [{ selector: 'app-topbar', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"app-topbar\" role=\"banner\">\r\n <div class=\"app-topbar__start\">\r\n <ng-content select=\"[appTopbarStart]\" />\r\n </div>\r\n <div class=\"app-topbar__title\">\r\n <ng-content select=\"[appTopbarTitle]\" />\r\n </div>\r\n <div class=\"app-topbar__end\">\r\n <ng-content select=\"[appTopbarEnd]\" />\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.app-topbar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;min-height:3.25rem;padding:.5rem .85rem;box-sizing:border-box;background:var(--app-color-surface, #fff);border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));box-shadow:0 1px 2px var(--app-color-shell-shadow, rgba(26, 47, 69, .05))}.app-topbar__start,.app-topbar__end{display:flex;flex:0 0 auto;align-items:center;gap:.5rem;min-width:0}.app-topbar__title{flex:1 1 auto;min-width:0;margin:0;font-size:1.05rem;font-weight:600;color:var(--app-color-text-primary, #1a2f45);line-height:1.3}@media (max-width: 767.98px){.app-topbar{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto;align-items:center;column-gap:.5rem;row-gap:.35rem;min-height:auto;padding:.45rem .65rem .55rem}.app-topbar__start{grid-column:1;grid-row:1}.app-topbar__end{grid-column:3;grid-row:1;justify-self:end}.app-topbar__title{grid-column:1/-1;grid-row:2;flex:unset;font-size:.98rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}\n"] }]
8885
+ args: [{ selector: 'app-topbar', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"app-topbar\" role=\"banner\">\r\n <div class=\"app-topbar__start\">\r\n <ng-content select=\"[appTopbarStart]\" />\r\n </div>\r\n <div class=\"app-topbar__title\">\r\n <ng-content select=\"[appTopbarTitle]\" />\r\n </div>\r\n <div class=\"app-topbar__end\">\r\n <ng-content select=\"[appTopbarEnd]\" />\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.app-topbar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;min-height:3.25rem;padding:.5rem .85rem;box-sizing:border-box;background:var(--app-color-surface, #fff);border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));box-shadow:0 1px 2px var(--app-color-shell-shadow, rgba(26, 47, 69, .05))}.app-topbar__start,.app-topbar__end{display:flex;flex:0 0 auto;align-items:center;gap:.5rem;min-width:0}.app-topbar__title{flex:1 1 auto;min-width:0;margin:0;font-size:1.05rem;font-weight:600;color:var(--app-color-text-primary, #1a2f45);line-height:1.3}@media(max-width:767.98px){.app-topbar{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto;align-items:center;column-gap:.5rem;row-gap:.35rem;min-height:auto;padding:.45rem .65rem .55rem}.app-topbar__start{grid-column:1;grid-row:1}.app-topbar__end{grid-column:3;grid-row:1;justify-self:end}.app-topbar__title{grid-column:1/-1;grid-row:2;flex:unset;font-size:.98rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}\n"] }]
8886
8886
  }] });
8887
8887
 
8888
8888
  /**
@@ -8903,12 +8903,12 @@ class AppUserMenuComponent {
8903
8903
  this.openChange = new EventEmitter();
8904
8904
  this.MenuDropdownPlacement = MenuDropdownPlacement;
8905
8905
  }
8906
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppUserMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8907
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AppUserMenuComponent, isStandalone: true, selector: "app-user-menu", inputs: { items: "items", menuId: "menuId", placement: "placement", minWidthPx: "minWidthPx", displayName: "displayName", avatarUrl: "avatarUrl", triggerLabel: "triggerLabel", showName: ["showName", "showName", booleanAttribute] }, outputs: { itemSelect: "itemSelect", openChange: "openChange" }, ngImport: i0, template: "<app-dropdown-menu\r\n class=\"user-menu__dropdown\"\r\n [items]=\"items\"\r\n [placement]=\"placement\"\r\n [minWidthPx]=\"minWidthPx\"\r\n [matchTriggerWidth]=\"false\"\r\n [menuId]=\"menuId\"\r\n (itemSelect)=\"itemSelect.emit($event)\"\r\n (openChange)=\"openChange.emit($event)\"\r\n>\r\n <button type=\"button\" class=\"user-menu__trigger\" [attr.aria-label]=\"triggerLabel\">\r\n @if (avatarUrl.trim()) {\r\n <img class=\"user-menu__avatar\" [src]=\"avatarUrl\" alt=\"\" width=\"32\" height=\"32\" />\r\n } @else {\r\n <span class=\"user-menu__avatar-fallback\" aria-hidden=\"true\">\r\n <i class=\"fa-solid fa-user\"></i>\r\n </span>\r\n }\r\n @if (showName && displayName.trim()) {\r\n <span class=\"user-menu__name\">{{ displayName }}</span>\r\n }\r\n </button>\r\n</app-dropdown-menu>\r\n", styles: [":host{display:inline-block;max-width:100%;vertical-align:middle}.user-menu__dropdown{display:inline-block;max-width:100%}.user-menu__trigger{display:inline-flex;align-items:center;gap:.5rem;max-width:100%;min-height:2.25rem;padding:.2rem .5rem;margin:0;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));border-radius:8px;background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-primary, #1a2f45);font:inherit;cursor:pointer;box-sizing:border-box}.user-menu__trigger:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.user-menu__trigger:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.user-menu__avatar{flex:0 0 auto;border-radius:50%;object-fit:cover}.user-menu__avatar-fallback{display:inline-flex;width:2rem;height:2rem;align-items:center;justify-content:center;border-radius:50%;background:var(--app-color-primary-muted, rgba(43, 127, 217, .14));color:var(--app-color-primary, #2b7fd9);font-size:.95rem}.user-menu__name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;font-weight:500}@media (max-width: 480px){.user-menu__name{display:none}}\n"], dependencies: [{ kind: "component", type: DropdownMenuComponent, selector: "app-dropdown-menu", inputs: ["items", "placement", "minWidthPx", "matchTriggerWidth", "menuId"], outputs: ["itemSelect", "openChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8906
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppUserMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8907
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AppUserMenuComponent, isStandalone: true, selector: "app-user-menu", inputs: { items: "items", menuId: "menuId", placement: "placement", minWidthPx: "minWidthPx", displayName: "displayName", avatarUrl: "avatarUrl", triggerLabel: "triggerLabel", showName: ["showName", "showName", booleanAttribute] }, outputs: { itemSelect: "itemSelect", openChange: "openChange" }, ngImport: i0, template: "<app-dropdown-menu\r\n class=\"user-menu__dropdown\"\r\n [items]=\"items\"\r\n [placement]=\"placement\"\r\n [minWidthPx]=\"minWidthPx\"\r\n [matchTriggerWidth]=\"false\"\r\n [menuId]=\"menuId\"\r\n (itemSelect)=\"itemSelect.emit($event)\"\r\n (openChange)=\"openChange.emit($event)\"\r\n>\r\n <button type=\"button\" class=\"user-menu__trigger\" [attr.aria-label]=\"triggerLabel\">\r\n @if (avatarUrl.trim()) {\r\n <img class=\"user-menu__avatar\" [src]=\"avatarUrl\" alt=\"\" width=\"32\" height=\"32\" />\r\n } @else {\r\n <span class=\"user-menu__avatar-fallback\" aria-hidden=\"true\">\r\n <i class=\"fa-solid fa-user\"></i>\r\n </span>\r\n }\r\n @if (showName && displayName.trim()) {\r\n <span class=\"user-menu__name\">{{ displayName }}</span>\r\n }\r\n </button>\r\n</app-dropdown-menu>\r\n", styles: [":host{display:inline-block;max-width:100%;vertical-align:middle}.user-menu__dropdown{display:inline-block;max-width:100%}.user-menu__trigger{display:inline-flex;align-items:center;gap:.5rem;max-width:100%;min-height:2.25rem;padding:.2rem .5rem;margin:0;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));border-radius:8px;background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-primary, #1a2f45);font:inherit;cursor:pointer;box-sizing:border-box}.user-menu__trigger:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.user-menu__trigger:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.user-menu__avatar{flex:0 0 auto;border-radius:50%;object-fit:cover}.user-menu__avatar-fallback{display:inline-flex;width:2rem;height:2rem;align-items:center;justify-content:center;border-radius:50%;background:var(--app-color-primary-muted, rgba(43, 127, 217, .14));color:var(--app-color-primary, #2b7fd9);font-size:.95rem}.user-menu__name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;font-weight:500}@media(max-width:480px){.user-menu__name{display:none}}\n"], dependencies: [{ kind: "component", type: DropdownMenuComponent, selector: "app-dropdown-menu", inputs: ["items", "placement", "minWidthPx", "matchTriggerWidth", "menuId"], outputs: ["itemSelect", "openChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8908
8908
  }
8909
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppUserMenuComponent, decorators: [{
8909
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppUserMenuComponent, decorators: [{
8910
8910
  type: Component,
8911
- args: [{ selector: 'app-user-menu', standalone: true, imports: [DropdownMenuComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-dropdown-menu\r\n class=\"user-menu__dropdown\"\r\n [items]=\"items\"\r\n [placement]=\"placement\"\r\n [minWidthPx]=\"minWidthPx\"\r\n [matchTriggerWidth]=\"false\"\r\n [menuId]=\"menuId\"\r\n (itemSelect)=\"itemSelect.emit($event)\"\r\n (openChange)=\"openChange.emit($event)\"\r\n>\r\n <button type=\"button\" class=\"user-menu__trigger\" [attr.aria-label]=\"triggerLabel\">\r\n @if (avatarUrl.trim()) {\r\n <img class=\"user-menu__avatar\" [src]=\"avatarUrl\" alt=\"\" width=\"32\" height=\"32\" />\r\n } @else {\r\n <span class=\"user-menu__avatar-fallback\" aria-hidden=\"true\">\r\n <i class=\"fa-solid fa-user\"></i>\r\n </span>\r\n }\r\n @if (showName && displayName.trim()) {\r\n <span class=\"user-menu__name\">{{ displayName }}</span>\r\n }\r\n </button>\r\n</app-dropdown-menu>\r\n", styles: [":host{display:inline-block;max-width:100%;vertical-align:middle}.user-menu__dropdown{display:inline-block;max-width:100%}.user-menu__trigger{display:inline-flex;align-items:center;gap:.5rem;max-width:100%;min-height:2.25rem;padding:.2rem .5rem;margin:0;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));border-radius:8px;background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-primary, #1a2f45);font:inherit;cursor:pointer;box-sizing:border-box}.user-menu__trigger:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.user-menu__trigger:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.user-menu__avatar{flex:0 0 auto;border-radius:50%;object-fit:cover}.user-menu__avatar-fallback{display:inline-flex;width:2rem;height:2rem;align-items:center;justify-content:center;border-radius:50%;background:var(--app-color-primary-muted, rgba(43, 127, 217, .14));color:var(--app-color-primary, #2b7fd9);font-size:.95rem}.user-menu__name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;font-weight:500}@media (max-width: 480px){.user-menu__name{display:none}}\n"] }]
8911
+ args: [{ selector: 'app-user-menu', imports: [DropdownMenuComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-dropdown-menu\r\n class=\"user-menu__dropdown\"\r\n [items]=\"items\"\r\n [placement]=\"placement\"\r\n [minWidthPx]=\"minWidthPx\"\r\n [matchTriggerWidth]=\"false\"\r\n [menuId]=\"menuId\"\r\n (itemSelect)=\"itemSelect.emit($event)\"\r\n (openChange)=\"openChange.emit($event)\"\r\n>\r\n <button type=\"button\" class=\"user-menu__trigger\" [attr.aria-label]=\"triggerLabel\">\r\n @if (avatarUrl.trim()) {\r\n <img class=\"user-menu__avatar\" [src]=\"avatarUrl\" alt=\"\" width=\"32\" height=\"32\" />\r\n } @else {\r\n <span class=\"user-menu__avatar-fallback\" aria-hidden=\"true\">\r\n <i class=\"fa-solid fa-user\"></i>\r\n </span>\r\n }\r\n @if (showName && displayName.trim()) {\r\n <span class=\"user-menu__name\">{{ displayName }}</span>\r\n }\r\n </button>\r\n</app-dropdown-menu>\r\n", styles: [":host{display:inline-block;max-width:100%;vertical-align:middle}.user-menu__dropdown{display:inline-block;max-width:100%}.user-menu__trigger{display:inline-flex;align-items:center;gap:.5rem;max-width:100%;min-height:2.25rem;padding:.2rem .5rem;margin:0;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));border-radius:8px;background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-primary, #1a2f45);font:inherit;cursor:pointer;box-sizing:border-box}.user-menu__trigger:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.user-menu__trigger:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.user-menu__avatar{flex:0 0 auto;border-radius:50%;object-fit:cover}.user-menu__avatar-fallback{display:inline-flex;width:2rem;height:2rem;align-items:center;justify-content:center;border-radius:50%;background:var(--app-color-primary-muted, rgba(43, 127, 217, .14));color:var(--app-color-primary, #2b7fd9);font-size:.95rem}.user-menu__name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;font-weight:500}@media(max-width:480px){.user-menu__name{display:none}}\n"] }]
8912
8912
  }], propDecorators: { items: [{
8913
8913
  type: Input,
8914
8914
  args: [{ required: true }]
@@ -8937,12 +8937,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
8937
8937
  * Filo hierárquico com `nav` + lista ordenada; último segmento com `aria-current="page"`.
8938
8938
  */
8939
8939
  class AppBreadcrumbComponent {
8940
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppBreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8941
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AppBreadcrumbComponent, isStandalone: true, selector: "app-breadcrumb", inputs: { items: "items" }, ngImport: i0, template: "@if (items.length) {\r\n <nav class=\"app-breadcrumb\" aria-label=\"Navega\u00E7\u00E3o em filo\">\r\n <ol class=\"app-breadcrumb__list\">\r\n @for (item of items; track $index; let last = $last) {\r\n <li class=\"app-breadcrumb__item\" [class.app-breadcrumb__item--current]=\"last\">\r\n @if (last) {\r\n <span class=\"app-breadcrumb__text app-breadcrumb__text--current\" aria-current=\"page\">\r\n {{ item.label }}\r\n </span>\r\n } @else if (item.route != null) {\r\n <a class=\"app-breadcrumb__link\" [routerLink]=\"$any(item.route)\">{{ item.label }}</a>\r\n <span class=\"app-breadcrumb__sep\" aria-hidden=\"true\">/</span>\r\n } @else if (item.href?.trim()) {\r\n <a class=\"app-breadcrumb__link\" [href]=\"item.href!.trim()\">{{ item.label }}</a>\r\n <span class=\"app-breadcrumb__sep\" aria-hidden=\"true\">/</span>\r\n } @else {\r\n <span class=\"app-breadcrumb__text\">{{ item.label }}</span>\r\n <span class=\"app-breadcrumb__sep\" aria-hidden=\"true\">/</span>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n </nav>\r\n}\r\n", styles: [":host{display:block;min-width:0;max-width:100%;box-sizing:border-box}.app-breadcrumb{max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.app-breadcrumb__list{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .15rem;margin:0;padding:0;list-style:none;font-size:.82rem;line-height:1.4;min-width:min-content}.app-breadcrumb__item{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:.15rem;min-width:0;max-width:100%}.app-breadcrumb__link{color:var(--app-color-nav-link, var(--app-color-primary, #2b7fd9));text-decoration:none;border-radius:4px}.app-breadcrumb__link:hover{text-decoration:underline}.app-breadcrumb__link:focus-visible{outline:2px solid var(--app-color-nav-focus-ring, var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45)));outline-offset:2px}.app-breadcrumb__text{color:var(--app-color-text-secondary, #5a7fa3);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:min(100%,14rem)}.app-breadcrumb__text--current{color:var(--app-color-text-primary, #1a2f45);font-weight:600;max-width:min(100%,20rem)}.app-breadcrumb__sep{color:var(--app-color-text-muted, #6b8299);-webkit-user-select:none;user-select:none;padding:0 .1rem}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8940
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppBreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8941
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AppBreadcrumbComponent, isStandalone: true, selector: "app-breadcrumb", inputs: { items: "items" }, ngImport: i0, template: "@if (items.length) {\r\n <nav class=\"app-breadcrumb\" aria-label=\"Navega\u00E7\u00E3o em filo\">\r\n <ol class=\"app-breadcrumb__list\">\r\n @for (item of items; track $index; let last = $last) {\r\n <li class=\"app-breadcrumb__item\" [class.app-breadcrumb__item--current]=\"last\">\r\n @if (last) {\r\n <span class=\"app-breadcrumb__text app-breadcrumb__text--current\" aria-current=\"page\">\r\n {{ item.label }}\r\n </span>\r\n } @else if (item.route != null) {\r\n <a class=\"app-breadcrumb__link\" [routerLink]=\"$any(item.route)\">{{ item.label }}</a>\r\n <span class=\"app-breadcrumb__sep\" aria-hidden=\"true\">/</span>\r\n } @else if (item.href?.trim()) {\r\n <a class=\"app-breadcrumb__link\" [href]=\"item.href!.trim()\">{{ item.label }}</a>\r\n <span class=\"app-breadcrumb__sep\" aria-hidden=\"true\">/</span>\r\n } @else {\r\n <span class=\"app-breadcrumb__text\">{{ item.label }}</span>\r\n <span class=\"app-breadcrumb__sep\" aria-hidden=\"true\">/</span>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n </nav>\r\n}\r\n", styles: [":host{display:block;min-width:0;max-width:100%;box-sizing:border-box}.app-breadcrumb{max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.app-breadcrumb__list{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .15rem;margin:0;padding:0;list-style:none;font-size:.82rem;line-height:1.4;min-width:min-content}.app-breadcrumb__item{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:.15rem;min-width:0;max-width:100%}.app-breadcrumb__link{color:var(--app-color-nav-link, var(--app-color-primary, #2b7fd9));text-decoration:none;border-radius:4px}.app-breadcrumb__link:hover{text-decoration:underline}.app-breadcrumb__link:focus-visible{outline:2px solid var(--app-color-nav-focus-ring, var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45)));outline-offset:2px}.app-breadcrumb__text{color:var(--app-color-text-secondary, #5a7fa3);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:min(100%,14rem)}.app-breadcrumb__text--current{color:var(--app-color-text-primary, #1a2f45);font-weight:600;max-width:min(100%,20rem)}.app-breadcrumb__sep{color:var(--app-color-text-muted, #6b8299);-webkit-user-select:none;user-select:none;padding:0 .1rem}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8942
8942
  }
8943
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppBreadcrumbComponent, decorators: [{
8943
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppBreadcrumbComponent, decorators: [{
8944
8944
  type: Component,
8945
- args: [{ selector: 'app-breadcrumb', standalone: true, imports: [RouterLink], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (items.length) {\r\n <nav class=\"app-breadcrumb\" aria-label=\"Navega\u00E7\u00E3o em filo\">\r\n <ol class=\"app-breadcrumb__list\">\r\n @for (item of items; track $index; let last = $last) {\r\n <li class=\"app-breadcrumb__item\" [class.app-breadcrumb__item--current]=\"last\">\r\n @if (last) {\r\n <span class=\"app-breadcrumb__text app-breadcrumb__text--current\" aria-current=\"page\">\r\n {{ item.label }}\r\n </span>\r\n } @else if (item.route != null) {\r\n <a class=\"app-breadcrumb__link\" [routerLink]=\"$any(item.route)\">{{ item.label }}</a>\r\n <span class=\"app-breadcrumb__sep\" aria-hidden=\"true\">/</span>\r\n } @else if (item.href?.trim()) {\r\n <a class=\"app-breadcrumb__link\" [href]=\"item.href!.trim()\">{{ item.label }}</a>\r\n <span class=\"app-breadcrumb__sep\" aria-hidden=\"true\">/</span>\r\n } @else {\r\n <span class=\"app-breadcrumb__text\">{{ item.label }}</span>\r\n <span class=\"app-breadcrumb__sep\" aria-hidden=\"true\">/</span>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n </nav>\r\n}\r\n", styles: [":host{display:block;min-width:0;max-width:100%;box-sizing:border-box}.app-breadcrumb{max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.app-breadcrumb__list{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .15rem;margin:0;padding:0;list-style:none;font-size:.82rem;line-height:1.4;min-width:min-content}.app-breadcrumb__item{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:.15rem;min-width:0;max-width:100%}.app-breadcrumb__link{color:var(--app-color-nav-link, var(--app-color-primary, #2b7fd9));text-decoration:none;border-radius:4px}.app-breadcrumb__link:hover{text-decoration:underline}.app-breadcrumb__link:focus-visible{outline:2px solid var(--app-color-nav-focus-ring, var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45)));outline-offset:2px}.app-breadcrumb__text{color:var(--app-color-text-secondary, #5a7fa3);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:min(100%,14rem)}.app-breadcrumb__text--current{color:var(--app-color-text-primary, #1a2f45);font-weight:600;max-width:min(100%,20rem)}.app-breadcrumb__sep{color:var(--app-color-text-muted, #6b8299);-webkit-user-select:none;user-select:none;padding:0 .1rem}\n"] }]
8945
+ args: [{ selector: 'app-breadcrumb', imports: [RouterLink], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (items.length) {\r\n <nav class=\"app-breadcrumb\" aria-label=\"Navega\u00E7\u00E3o em filo\">\r\n <ol class=\"app-breadcrumb__list\">\r\n @for (item of items; track $index; let last = $last) {\r\n <li class=\"app-breadcrumb__item\" [class.app-breadcrumb__item--current]=\"last\">\r\n @if (last) {\r\n <span class=\"app-breadcrumb__text app-breadcrumb__text--current\" aria-current=\"page\">\r\n {{ item.label }}\r\n </span>\r\n } @else if (item.route != null) {\r\n <a class=\"app-breadcrumb__link\" [routerLink]=\"$any(item.route)\">{{ item.label }}</a>\r\n <span class=\"app-breadcrumb__sep\" aria-hidden=\"true\">/</span>\r\n } @else if (item.href?.trim()) {\r\n <a class=\"app-breadcrumb__link\" [href]=\"item.href!.trim()\">{{ item.label }}</a>\r\n <span class=\"app-breadcrumb__sep\" aria-hidden=\"true\">/</span>\r\n } @else {\r\n <span class=\"app-breadcrumb__text\">{{ item.label }}</span>\r\n <span class=\"app-breadcrumb__sep\" aria-hidden=\"true\">/</span>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n </nav>\r\n}\r\n", styles: [":host{display:block;min-width:0;max-width:100%;box-sizing:border-box}.app-breadcrumb{max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.app-breadcrumb__list{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .15rem;margin:0;padding:0;list-style:none;font-size:.82rem;line-height:1.4;min-width:min-content}.app-breadcrumb__item{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:.15rem;min-width:0;max-width:100%}.app-breadcrumb__link{color:var(--app-color-nav-link, var(--app-color-primary, #2b7fd9));text-decoration:none;border-radius:4px}.app-breadcrumb__link:hover{text-decoration:underline}.app-breadcrumb__link:focus-visible{outline:2px solid var(--app-color-nav-focus-ring, var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45)));outline-offset:2px}.app-breadcrumb__text{color:var(--app-color-text-secondary, #5a7fa3);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:min(100%,14rem)}.app-breadcrumb__text--current{color:var(--app-color-text-primary, #1a2f45);font-weight:600;max-width:min(100%,20rem)}.app-breadcrumb__sep{color:var(--app-color-text-muted, #6b8299);-webkit-user-select:none;user-select:none;padding:0 .1rem}\n"] }]
8946
8946
  }], propDecorators: { items: [{
8947
8947
  type: Input,
8948
8948
  args: [{ required: true }]