structra-ui 0.2.11 → 0.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import '../structra-ui.css';
2
2
  import * as i0 from '@angular/core';
3
- import { booleanAttribute, HostBinding, Input, ChangeDetectionStrategy, Component, numberAttribute, ElementRef, ViewChild, inject, ChangeDetectorRef, Injector, DestroyRef, EventEmitter, Output, Directive, signal, computed, Injectable, Renderer2, HostListener, ViewChildren, forwardRef, ApplicationRef, afterNextRender, ContentChildren, NgZone, ViewContainerRef, TemplateRef, ContentChild } from '@angular/core';
3
+ import { signal, booleanAttribute, Input, ChangeDetectionStrategy, Component, ElementRef, HostBinding, ViewChild, inject, ChangeDetectorRef, Injector, DestroyRef, EventEmitter, Output, Directive, numberAttribute, computed, Injectable, Renderer2, HostListener, ViewChildren, forwardRef, ApplicationRef, afterNextRender, ContentChildren, NgZone, ViewContainerRef, TemplateRef, ContentChild } from '@angular/core';
4
4
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
5
  import * as i1 from '@angular/forms';
6
6
  import { Validators, FormGroupDirective, NgForm, NgControl, NG_VALUE_ACCESSOR, FormsModule, FormGroup, FormArray, FormControl } from '@angular/forms';
@@ -25,205 +25,43 @@ import { RouterLink } from '@angular/router';
25
25
  /** Marcador de pacote publicado como `structra-ui`. */
26
26
  const STRUCTRA_UI = 'structra-ui';
27
27
 
28
- /** Bloco genérico de skeleton (linhas, caixas, células). */
29
- class SkeletonBlockComponent {
30
- constructor() {
31
- /** Largura CSS (ex.: `100%`, `6rem`, `40%`). */
32
- this.width = '100%';
33
- /** Altura CSS. */
34
- this.height = '0.75rem';
35
- /** Raio de canto. */
36
- this.radius = '8px';
37
- this.animate = true;
38
- }
39
- get hostClass() {
40
- const parts = ['skeleton-block'];
41
- if (this.animate) {
42
- parts.push('skeleton-block--animate');
43
- }
44
- else {
45
- parts.push('skeleton-block--static');
46
- }
47
- return parts.join(' ');
48
- }
49
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
50
- 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 }); }
51
- }
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonBlockComponent, decorators: [{
53
- type: Component,
54
- 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"] }]
55
- }], propDecorators: { width: [{
56
- type: Input
57
- }], height: [{
58
- type: Input
59
- }], radius: [{
60
- type: Input
61
- }], animate: [{
62
- type: Input,
63
- args: [{ transform: booleanAttribute }]
64
- }], hostClass: [{
65
- type: HostBinding,
66
- args: ['class']
67
- }] } });
68
-
69
- /** Várias linhas de texto placeholder. */
70
- class SkeletonTextComponent {
28
+ /**
29
+ * Feedback visual inline (erro, sucesso, aviso, informação). Reutiliza tokens semânticos da lib.
30
+ */
31
+ class AlertComponent {
71
32
  constructor() {
72
- this.lines = 3;
73
- /** Largura da última linha em % (1–100). */
74
- this.lastLineWidthPct = 62;
75
- this.lineHeight = '0.7rem';
76
- this.gap = '0.45rem';
77
- this.animate = true;
78
- }
79
- lineIndexes() {
80
- return Array.from({ length: Math.max(1, this.lines) }, (_, i) => i);
33
+ this.type = 'info';
34
+ this.message = '';
35
+ this.closable = false;
36
+ /** Quando `closable`, o alerta deixa de renderizar após fechar. */
37
+ this.visible = signal(true, ...(ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []));
38
+ this.modifierByType = {
39
+ error: 'alert--error',
40
+ success: 'alert--success',
41
+ warning: 'alert--warning',
42
+ info: 'alert--info',
43
+ };
81
44
  }
82
- widthForLine(i) {
83
- const n = Math.max(1, this.lines);
84
- if (i === n - 1) {
85
- const p = Math.min(100, Math.max(20, this.lastLineWidthPct));
86
- return `${p}%`;
87
- }
88
- return '100%';
45
+ get hasMessage() {
46
+ return this.message != null && String(this.message).trim().length > 0;
89
47
  }
90
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
91
- 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 }); }
92
- }
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonTextComponent, decorators: [{
94
- type: Component,
95
- 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"] }]
96
- }], propDecorators: { lines: [{
97
- type: Input,
98
- args: [{ transform: numberAttribute }]
99
- }], lastLineWidthPct: [{
100
- type: Input,
101
- args: [{ transform: numberAttribute }]
102
- }], lineHeight: [{
103
- type: Input
104
- }], gap: [{
105
- type: Input
106
- }], animate: [{
107
- type: Input,
108
- args: [{ transform: booleanAttribute }]
109
- }] } });
110
-
111
- /** Lista vertical de linhas (ex.: opções de dropdown). */
112
- class SkeletonListComponent {
113
- constructor() {
114
- this.rows = 6;
115
- /** Mostra um “leading” à esquerda (círculo pequeno). */
116
- this.leading = true;
117
- this.rowGap = '0.25rem';
118
- /** Altura da barra por linha (alinhada às opções de select ~0,95rem / lh 1,35). */
119
- this.lineHeight = '1.05rem';
120
- this.animate = true;
48
+ get alertHostClass() {
49
+ return `alert ${this.modifierByType[this.type]}`;
121
50
  }
122
- rowIndexes() {
123
- return Array.from({ length: Math.max(1, this.rows) }, (_, i) => i);
51
+ onClose() {
52
+ this.visible.set(false);
124
53
  }
125
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
126
- 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 }); }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
55
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AlertComponent, isStandalone: true, selector: "app-alert", inputs: { type: "type", message: "message", closable: ["closable", "closable", booleanAttribute] }, ngImport: i0, template: "@if (visible()) {\r\n <div [class]=\"alertHostClass\" role=\"alert\">\r\n <div class=\"alert__content\">\r\n @if (hasMessage) {\r\n <span class=\"alert__text\">{{ message }}</span>\r\n } @else {\r\n <span class=\"alert__text\"><ng-content /></span>\r\n }\r\n </div>\r\n\r\n @if (closable) {\r\n <button type=\"button\" class=\"alert__close\" aria-label=\"Fechar alerta\" (click)=\"onClose()\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n }\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block;max-width:100%;box-sizing:border-box}.alert{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;border-radius:var(--radius-md, 12px);border:1px solid;font-size:.875rem;line-height:1.4;font-family:var(--structra-font-family);font-weight:var(--structra-body-weight, 400)}.alert__content{flex:1 1 auto;min-width:0}.alert__text{display:block;word-wrap:break-word}.alert__close{flex-shrink:0;margin:0;padding:0 .125rem;background:transparent;border:none;cursor:pointer;font-size:1rem;line-height:1;color:inherit;opacity:.65;transition:opacity .12s ease}.alert__close:hover{opacity:1}.alert__close:focus-visible{outline:2px solid currentColor;outline-offset:2px;border-radius:4px}.alert--error{background:var(--ui-validation-summary-bg-error, #fef2f2);border-color:var(--ui-validation-summary-border-error, #fecaca);color:var(--ui-validation-summary-title-error, #991b1b)}.alert--success{color:var(--app-color-success, #166534);background:color-mix(in srgb,var(--app-color-success, #15803d) 10%,var(--app-color-surface, #ffffff));border-color:color-mix(in srgb,var(--app-color-success, #15803d) 28%,#ffffff)}.alert--warning{background:var(--ui-validation-summary-bg-warning, #fffbeb);border-color:var(--ui-validation-summary-border-warning, #fef3c7);color:var(--ui-validation-summary-title-warning, #92400e)}.alert--info{background:var(--ui-validation-summary-bg-info, #eff6ff);border-color:var(--ui-validation-summary-border-info, #bfdbfe);color:var(--ui-validation-summary-title-info, #1e3a8a)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
127
56
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonListComponent, decorators: [{
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AlertComponent, decorators: [{
129
58
  type: Component,
130
- 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"] }]
131
- }], propDecorators: { rows: [{
132
- type: Input,
133
- args: [{ transform: numberAttribute }]
134
- }], leading: [{
135
- type: Input,
136
- args: [{ transform: booleanAttribute }]
137
- }], rowGap: [{
59
+ args: [{ selector: 'app-alert', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (visible()) {\r\n <div [class]=\"alertHostClass\" role=\"alert\">\r\n <div class=\"alert__content\">\r\n @if (hasMessage) {\r\n <span class=\"alert__text\">{{ message }}</span>\r\n } @else {\r\n <span class=\"alert__text\"><ng-content /></span>\r\n }\r\n </div>\r\n\r\n @if (closable) {\r\n <button type=\"button\" class=\"alert__close\" aria-label=\"Fechar alerta\" (click)=\"onClose()\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n }\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block;max-width:100%;box-sizing:border-box}.alert{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;border-radius:var(--radius-md, 12px);border:1px solid;font-size:.875rem;line-height:1.4;font-family:var(--structra-font-family);font-weight:var(--structra-body-weight, 400)}.alert__content{flex:1 1 auto;min-width:0}.alert__text{display:block;word-wrap:break-word}.alert__close{flex-shrink:0;margin:0;padding:0 .125rem;background:transparent;border:none;cursor:pointer;font-size:1rem;line-height:1;color:inherit;opacity:.65;transition:opacity .12s ease}.alert__close:hover{opacity:1}.alert__close:focus-visible{outline:2px solid currentColor;outline-offset:2px;border-radius:4px}.alert--error{background:var(--ui-validation-summary-bg-error, #fef2f2);border-color:var(--ui-validation-summary-border-error, #fecaca);color:var(--ui-validation-summary-title-error, #991b1b)}.alert--success{color:var(--app-color-success, #166534);background:color-mix(in srgb,var(--app-color-success, #15803d) 10%,var(--app-color-surface, #ffffff));border-color:color-mix(in srgb,var(--app-color-success, #15803d) 28%,#ffffff)}.alert--warning{background:var(--ui-validation-summary-bg-warning, #fffbeb);border-color:var(--ui-validation-summary-border-warning, #fef3c7);color:var(--ui-validation-summary-title-warning, #92400e)}.alert--info{background:var(--ui-validation-summary-bg-info, #eff6ff);border-color:var(--ui-validation-summary-border-info, #bfdbfe);color:var(--ui-validation-summary-title-info, #1e3a8a)}\n"] }]
60
+ }], propDecorators: { type: [{
138
61
  type: Input
139
- }], lineHeight: [{
62
+ }], message: [{
140
63
  type: Input
141
- }], animate: [{
142
- type: Input,
143
- args: [{ transform: booleanAttribute }]
144
- }] } });
145
-
146
- /** Placeholder de cartão (avatar + texto + ações). */
147
- class SkeletonCardComponent {
148
- constructor() {
149
- this.showActions = true;
150
- this.animate = true;
151
- }
152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
153
- 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 }); }
154
- }
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonCardComponent, decorators: [{
156
- type: Component,
157
- 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"] }]
158
- }], propDecorators: { showActions: [{
159
- type: Input,
160
- args: [{ transform: booleanAttribute }]
161
- }], animate: [{
162
- type: Input,
163
- args: [{ transform: booleanAttribute }]
164
- }] } });
165
-
166
- /** Placeholder tabular (cabeçalho + linhas + faixa de paginação). */
167
- class SkeletonTableComponent {
168
- constructor() {
169
- this.columnCount = 4;
170
- this.rowCount = 8;
171
- this.showPager = true;
172
- this.animate = true;
173
- }
174
- colIndexes() {
175
- return Array.from({ length: Math.max(1, this.columnCount) }, (_, i) => i);
176
- }
177
- rowIndexes() {
178
- return Array.from({ length: Math.max(1, this.rowCount) }, (_, i) => i);
179
- }
180
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
181
- 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 }); }
182
- }
183
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonTableComponent, decorators: [{
184
- type: Component,
185
- 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"] }]
186
- }], propDecorators: { columnCount: [{
187
- type: Input,
188
- args: [{ transform: numberAttribute }]
189
- }], rowCount: [{
190
- type: Input,
191
- args: [{ transform: numberAttribute }]
192
- }], showPager: [{
193
- type: Input,
194
- args: [{ transform: booleanAttribute }]
195
- }], animate: [{
196
- type: Input,
197
- args: [{ transform: booleanAttribute }]
198
- }] } });
199
-
200
- /**
201
- * Placeholder de campo: barra de valor e, opcionalmente, quadrado à esquerda quando não há
202
- * ícone Font Awesome na coluna de prefixo do `app-base-field`.
203
- */
204
- class SkeletonFieldShellComponent {
205
- constructor() {
206
- /** @deprecated Ignorado: todos os campos usam o mesmo layout. */
207
- this.variant = 'text';
208
- this.animate = true;
209
- /**
210
- * Quando `false`, não renderiza o quadrado à esquerda (o `app-base-field` já mostra o ícone
211
- * de prefixo inerte na coluna correcta durante `loading`).
212
- */
213
- this.showLeadingIcon = true;
214
- }
215
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonFieldShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
216
- 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 }); }
217
- }
218
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonFieldShellComponent, decorators: [{
219
- type: Component,
220
- 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"] }]
221
- }], propDecorators: { variant: [{
222
- type: Input
223
- }], animate: [{
224
- type: Input,
225
- args: [{ transform: booleanAttribute }]
226
- }], showLeadingIcon: [{
64
+ }], closable: [{
227
65
  type: Input,
228
66
  args: [{ transform: booleanAttribute }]
229
67
  }] } });
@@ -292,11 +130,15 @@ class BaseButtonComponent {
292
130
  this.size = 'md';
293
131
  /** Arredondamento semântico do botão (design system). */
294
132
  this.radius = 'md';
295
- /** Placeholder de carregamento (skeleton no lugar do rótulo). */
133
+ /** Carregamento: spinner + `disabled` nativo + `aria-busy`; o rótulo projectado mantém-se visível. */
296
134
  this.loading = false;
297
135
  /** Estilo visual base; pode ser estendido no SCSS do projeto. */
298
136
  this.variant = 'primary';
299
137
  }
138
+ /** `disabled` efectivo do `<button>` (inclui `readonly` e `loading`). */
139
+ get isDisabled() {
140
+ return this.disabled || this.readonly || this.loading;
141
+ }
300
142
  /** Alias de {@link variant} (nome comum em design systems). */
301
143
  set appearance(value) {
302
144
  if (value === ButtonVariant.Primary ||
@@ -335,11 +177,11 @@ class BaseButtonComponent {
335
177
  this.nativeBtn?.nativeElement?.focus(options);
336
178
  }
337
179
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BaseButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
338
- 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], size: "size", radius: "radius", 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}:host(.base-button--size-sm){--bb-fs: .8125rem;--bb-min-h: 2rem;--bb-pad-y: .375rem;--bb-pad-x: .875rem;--bb-gap: .375rem;--bb-min-w: 4rem}:host(.base-button--size-md){--bb-fs: .9375rem;--bb-min-h: 2.5rem;--bb-pad-y: .5rem;--bb-pad-x: 1.25rem;--bb-gap: .5rem;--bb-min-w: 5rem}:host(.base-button--size-lg){--bb-fs: 1rem;--bb-min-h: 2.875rem;--bb-pad-y: .625rem;--bb-pad-x: 1.5rem;--bb-gap: .625rem;--bb-min-w: 5.5rem}:host(.base-button--size-xl){--bb-fs: 1.0625rem;--bb-min-h: 3.25rem;--bb-pad-y: .75rem;--bb-pad-x: 1.75rem;--bb-gap: .75rem;--bb-min-w: 6rem}:host(.base-button--size-xxl){--bb-fs: 1.125rem;--bb-min-h: 3.625rem;--bb-pad-y: .875rem;--bb-pad-x: 2rem;--bb-gap: .875rem;--bb-min-w: 6.5rem}:host(.base-button--link){--bb-min-h: 0;--bb-min-w: 0;--bb-gap: .35rem;--bb-pad-x: 0}:host(.base-button--link.base-button--size-sm){--bb-fs: .8125rem;--bb-pad-y: .05rem;--bb-gap: .3rem}:host(.base-button--link.base-button--size-md){--bb-fs: .9375rem}:host(.base-button--link.base-button--size-lg){--bb-fs: 1rem;--bb-pad-y: .12rem;--bb-gap: .4rem}:host(.base-button--link.base-button--size-xl){--bb-fs: 1.0625rem;--bb-pad-y: .14rem;--bb-gap: .45rem}:host(.base-button--link.base-button--size-xxl){--bb-fs: 1.125rem;--bb-pad-y: .16rem;--bb-gap: .5rem}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:var(--bb-min-w, 5rem);align-items:center;justify-content:center;text-align:center;gap:var(--bb-gap, .5rem);min-height:var(--bb-min-h, 2.5rem);padding:var(--bb-pad-y, .5rem) var(--bb-pad-x, 1.25rem);margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:var(--bb-fs, .9375rem);font-weight:var(--button-font-weight, var(--structra-button-weight));line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .15s ease,opacity .15s ease,filter .12s ease}:host(.base-button--radius-none) .base-button__native{border-radius:var(--radius-none, 0px)}:host(.base-button--radius-sm) .base-button__native{border-radius:var(--radius-sm, 4px)}:host(.base-button--radius-md) .base-button__native{border-radius:var(--ui-field-float-border-radius, 14px)}:host(.base-button--radius-lg) .base-button__native{border-radius:var(--radius-lg, 12px)}:host(.base-button--radius-pill) .base-button__native{border-radius:var(--radius-pill, 999px)}: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-button-primary-bg, var(--ui-field-float-border-focus, #2b7fd9));border-color:var(--ui-button-primary-border, var(--ui-field-float-border-focus, #2b7fd9))}:host(.base-button--primary) .base-button__native:hover:not(:disabled){background:var(--ui-button-primary-bg-hover);border-color:var(--ui-button-primary-border-hover)}:host(.base-button--primary) .base-button__native:active:not(:disabled){background:var(--ui-button-primary-bg-active);border-color:var(--ui-button-primary-border-active)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:#fff;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--secondary) .base-button__native:active:not(:disabled){background:var(--ui-button-secondary-bg-active)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-secondary, #606770);background:transparent;border-color:transparent;justify-content:center}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-text-secondary, #606770);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--ghost) .base-button__native:active:not(:disabled){background:var(--ui-button-ghost-bg-active)}:host(.base-button--link) .base-button__native{color:var(--app-color-primary, #2b7fd9);background:transparent;border:none;border-radius:0;padding:var(--bb-pad-y, .1rem) var(--bb-pad-x, 0);min-height:0;font-family:inherit;font-weight:var(--button-link-font-weight, var(--structra-label-weight));line-height:inherit;justify-content:flex-start;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;box-shadow:none;transition:color .15s ease,opacity .15s ease}:host(.base-button--link) .base-button__native:hover:not(:disabled){color:var(--app-color-secondary, #1a2f45);background:transparent;border-color:transparent;filter:none}:host(.base-button--link) .base-button__native:active:not(:disabled){color:var(--ui-button-link-text-active)}:host(.base-button--link) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 2px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .4));border-radius:2px}:host(.base-button--danger) .base-button__native{color:var(--app-color-error-contrast, #fff);background:var(--ui-button-danger-bg);border-color:var(--ui-button-danger-border)}:host(.base-button--danger) .base-button__native:hover:not(:disabled){background:var(--ui-button-danger-bg-hover);border-color:var(--ui-button-danger-border-hover)}:host(.base-button--danger) .base-button__native:active:not(:disabled){background:var(--ui-button-danger-bg-active);border-color:var(--ui-button-danger-border-active)}:host(.base-button--danger) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}:host(.base-button--warning) .base-button__native{color:var(--ui-button-warning-text, #111827);background:var(--ui-button-warning-bg);border-color:var(--ui-button-warning-border)}:host(.base-button--warning) .base-button__native:hover:not(:disabled){background:var(--ui-button-warning-bg-hover);border-color:var(--ui-button-warning-border-hover)}:host(.base-button--warning) .base-button__native:active:not(:disabled){background:var(--ui-button-warning-bg-active);border-color:var(--ui-button-warning-border-active)}:host(.base-button--warning) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-button-warning-focus-ring, rgba(202, 138, 4, .4))}:host(.base-button--success) .base-button__native{color:var(--ui-button-success-text, #ffffff);background:var(--ui-button-success-bg);border-color:var(--ui-button-success-border)}:host(.base-button--success) .base-button__native:hover:not(:disabled){background:var(--ui-button-success-bg-hover);border-color:var(--ui-button-success-border-hover)}:host(.base-button--success) .base-button__native:active:not(:disabled){background:var(--ui-button-success-bg-active);border-color:var(--ui-button-success-border-active)}:host(.base-button--success) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-button-success-focus-ring, rgba(21, 128, 61, .35))}: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))}:host(.base-button--readonly.base-button--link) .base-button__native{background:transparent;border:none;text-decoration:underline}.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:#fff;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-secondary, #606770) 10%,transparent);border-color:transparent}:host(.base-button--link.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-primary, #2b7fd9) 12%,transparent);border:none;min-height:calc(var(--bb-fs, .9375rem) * 1.35);border-radius:2px}:host(.base-button--danger.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-error, #b91c1c) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-error-border, #dc2626) 88%,#ffffff)}:host(.base-button--warning.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-warning, #ca8a04) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-warning, #ca8a04) 88%,#ffffff)}:host(.base-button--success.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-success, #15803d) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-success, #15803d) 88%,#ffffff)}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
180
+ 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], size: "size", radius: "radius", 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: "<button\n #nativeBtn\n class=\"base-button__native\"\n [class.base-button__native--loading]=\"loading\"\n [attr.type]=\"type\"\n [disabled]=\"isDisabled\"\n [attr.aria-readonly]=\"readonly ? true : null\"\n [attr.aria-busy]=\"loading ? 'true' : null\"\n>\n @if (loading) {\n <span class=\"base-button__spinner\" aria-hidden=\"true\"></span>\n }\n <ng-content />\n</button>\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;width:fit-content;max-width:100%;box-sizing:border-box;vertical-align:middle}:host(.base-button--size-sm){--bb-fs: .8125rem;--bb-min-h: 2rem;--bb-pad-y: .375rem;--bb-pad-x: .875rem;--bb-gap: .375rem;--bb-min-w: 4rem}:host(.base-button--size-md){--bb-fs: .9375rem;--bb-min-h: 2.5rem;--bb-pad-y: .5rem;--bb-pad-x: 1.25rem;--bb-gap: .5rem;--bb-min-w: 5rem}:host(.base-button--size-lg){--bb-fs: 1rem;--bb-min-h: 2.875rem;--bb-pad-y: .625rem;--bb-pad-x: 1.5rem;--bb-gap: .625rem;--bb-min-w: 5.5rem}:host(.base-button--size-xl){--bb-fs: 1.0625rem;--bb-min-h: 3.25rem;--bb-pad-y: .75rem;--bb-pad-x: 1.75rem;--bb-gap: .75rem;--bb-min-w: 6rem}:host(.base-button--size-xxl){--bb-fs: 1.125rem;--bb-min-h: 3.625rem;--bb-pad-y: .875rem;--bb-pad-x: 2rem;--bb-gap: .875rem;--bb-min-w: 6.5rem}:host(.base-button--link){--bb-min-h: 0;--bb-min-w: 0;--bb-gap: .35rem;--bb-pad-x: 0}:host(.base-button--link.base-button--size-sm){--bb-fs: .8125rem;--bb-pad-y: .05rem;--bb-gap: .3rem}:host(.base-button--link.base-button--size-md){--bb-fs: .9375rem}:host(.base-button--link.base-button--size-lg){--bb-fs: 1rem;--bb-pad-y: .12rem;--bb-gap: .4rem}:host(.base-button--link.base-button--size-xl){--bb-fs: 1.0625rem;--bb-pad-y: .14rem;--bb-gap: .45rem}:host(.base-button--link.base-button--size-xxl){--bb-fs: 1.125rem;--bb-pad-y: .16rem;--bb-gap: .5rem}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:var(--bb-min-w, 5rem);align-items:center;justify-content:center;text-align:center;gap:var(--bb-gap, .5rem);min-height:var(--bb-min-h, 2.5rem);padding:var(--bb-pad-y, .5rem) var(--bb-pad-x, 1.25rem);margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:var(--bb-fs, .9375rem);font-weight:var(--button-font-weight, var(--structra-button-weight));line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .15s ease,opacity .15s ease,filter .12s ease}:host(.base-button--radius-none) .base-button__native{border-radius:var(--radius-none, 0px)}:host(.base-button--radius-sm) .base-button__native{border-radius:var(--radius-sm, 4px)}:host(.base-button--radius-md) .base-button__native{border-radius:var(--ui-field-float-border-radius, 14px)}:host(.base-button--radius-lg) .base-button__native{border-radius:var(--radius-lg, 12px)}:host(.base-button--radius-pill) .base-button__native{border-radius:var(--radius-pill, 999px)}: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-button-primary-bg, var(--ui-field-float-border-focus, #2b7fd9));border-color:var(--ui-button-primary-border, var(--ui-field-float-border-focus, #2b7fd9))}:host(.base-button--primary) .base-button__native:hover:not(:disabled){background:var(--ui-button-primary-bg-hover);border-color:var(--ui-button-primary-border-hover)}:host(.base-button--primary) .base-button__native:active:not(:disabled){background:var(--ui-button-primary-bg-active);border-color:var(--ui-button-primary-border-active)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:#fff;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--secondary) .base-button__native:active:not(:disabled){background:var(--ui-button-secondary-bg-active)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-secondary, #606770);background:transparent;border-color:transparent;justify-content:center}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-text-secondary, #606770);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--ghost) .base-button__native:active:not(:disabled){background:var(--ui-button-ghost-bg-active)}:host(.base-button--link) .base-button__native{color:var(--app-color-primary, #2b7fd9);background:transparent;border:none;border-radius:0;padding:var(--bb-pad-y, .1rem) var(--bb-pad-x, 0);min-height:0;font-family:inherit;font-weight:var(--button-link-font-weight, var(--structra-label-weight));line-height:inherit;justify-content:flex-start;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;box-shadow:none;transition:color .15s ease,opacity .15s ease}:host(.base-button--link) .base-button__native:hover:not(:disabled){color:var(--app-color-secondary, #1a2f45);background:transparent;border-color:transparent;filter:none}:host(.base-button--link) .base-button__native:active:not(:disabled){color:var(--ui-button-link-text-active)}:host(.base-button--link) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 2px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .4));border-radius:2px}:host(.base-button--danger) .base-button__native{color:var(--app-color-error-contrast, #fff);background:var(--ui-button-danger-bg);border-color:var(--ui-button-danger-border)}:host(.base-button--danger) .base-button__native:hover:not(:disabled){background:var(--ui-button-danger-bg-hover);border-color:var(--ui-button-danger-border-hover)}:host(.base-button--danger) .base-button__native:active:not(:disabled){background:var(--ui-button-danger-bg-active);border-color:var(--ui-button-danger-border-active)}:host(.base-button--danger) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}:host(.base-button--warning) .base-button__native{color:var(--ui-button-warning-text, #111827);background:var(--ui-button-warning-bg);border-color:var(--ui-button-warning-border)}:host(.base-button--warning) .base-button__native:hover:not(:disabled){background:var(--ui-button-warning-bg-hover);border-color:var(--ui-button-warning-border-hover)}:host(.base-button--warning) .base-button__native:active:not(:disabled){background:var(--ui-button-warning-bg-active);border-color:var(--ui-button-warning-border-active)}:host(.base-button--warning) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-button-warning-focus-ring, rgba(202, 138, 4, .4))}:host(.base-button--success) .base-button__native{color:var(--ui-button-success-text, #ffffff);background:var(--ui-button-success-bg);border-color:var(--ui-button-success-border)}:host(.base-button--success) .base-button__native:hover:not(:disabled){background:var(--ui-button-success-bg-hover);border-color:var(--ui-button-success-border-hover)}:host(.base-button--success) .base-button__native:active:not(:disabled){background:var(--ui-button-success-bg-active);border-color:var(--ui-button-success-border-active)}:host(.base-button--success) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-button-success-focus-ring, rgba(21, 128, 61, .35))}: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))}:host(.base-button--readonly.base-button--link) .base-button__native{background:transparent;border:none;text-decoration:underline}.base-button__spinner{flex:0 0 auto;width:1em;height:1em;box-sizing:border-box;border:2px solid currentColor;border-right-color:transparent;border-radius:999px;animation:structra-button-spin .7s linear infinite}@keyframes structra-button-spin{to{transform:rotate(360deg)}}.base-button__native--loading{cursor:wait}@media(prefers-reduced-motion:reduce){.base-button__spinner{animation:none;border-right-color:color-mix(in srgb,currentColor 45%,transparent)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
339
181
  }
340
182
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BaseButtonComponent, decorators: [{
341
183
  type: Component,
342
- 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}:host(.base-button--size-sm){--bb-fs: .8125rem;--bb-min-h: 2rem;--bb-pad-y: .375rem;--bb-pad-x: .875rem;--bb-gap: .375rem;--bb-min-w: 4rem}:host(.base-button--size-md){--bb-fs: .9375rem;--bb-min-h: 2.5rem;--bb-pad-y: .5rem;--bb-pad-x: 1.25rem;--bb-gap: .5rem;--bb-min-w: 5rem}:host(.base-button--size-lg){--bb-fs: 1rem;--bb-min-h: 2.875rem;--bb-pad-y: .625rem;--bb-pad-x: 1.5rem;--bb-gap: .625rem;--bb-min-w: 5.5rem}:host(.base-button--size-xl){--bb-fs: 1.0625rem;--bb-min-h: 3.25rem;--bb-pad-y: .75rem;--bb-pad-x: 1.75rem;--bb-gap: .75rem;--bb-min-w: 6rem}:host(.base-button--size-xxl){--bb-fs: 1.125rem;--bb-min-h: 3.625rem;--bb-pad-y: .875rem;--bb-pad-x: 2rem;--bb-gap: .875rem;--bb-min-w: 6.5rem}:host(.base-button--link){--bb-min-h: 0;--bb-min-w: 0;--bb-gap: .35rem;--bb-pad-x: 0}:host(.base-button--link.base-button--size-sm){--bb-fs: .8125rem;--bb-pad-y: .05rem;--bb-gap: .3rem}:host(.base-button--link.base-button--size-md){--bb-fs: .9375rem}:host(.base-button--link.base-button--size-lg){--bb-fs: 1rem;--bb-pad-y: .12rem;--bb-gap: .4rem}:host(.base-button--link.base-button--size-xl){--bb-fs: 1.0625rem;--bb-pad-y: .14rem;--bb-gap: .45rem}:host(.base-button--link.base-button--size-xxl){--bb-fs: 1.125rem;--bb-pad-y: .16rem;--bb-gap: .5rem}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:var(--bb-min-w, 5rem);align-items:center;justify-content:center;text-align:center;gap:var(--bb-gap, .5rem);min-height:var(--bb-min-h, 2.5rem);padding:var(--bb-pad-y, .5rem) var(--bb-pad-x, 1.25rem);margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:var(--bb-fs, .9375rem);font-weight:var(--button-font-weight, var(--structra-button-weight));line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .15s ease,opacity .15s ease,filter .12s ease}:host(.base-button--radius-none) .base-button__native{border-radius:var(--radius-none, 0px)}:host(.base-button--radius-sm) .base-button__native{border-radius:var(--radius-sm, 4px)}:host(.base-button--radius-md) .base-button__native{border-radius:var(--ui-field-float-border-radius, 14px)}:host(.base-button--radius-lg) .base-button__native{border-radius:var(--radius-lg, 12px)}:host(.base-button--radius-pill) .base-button__native{border-radius:var(--radius-pill, 999px)}: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-button-primary-bg, var(--ui-field-float-border-focus, #2b7fd9));border-color:var(--ui-button-primary-border, var(--ui-field-float-border-focus, #2b7fd9))}:host(.base-button--primary) .base-button__native:hover:not(:disabled){background:var(--ui-button-primary-bg-hover);border-color:var(--ui-button-primary-border-hover)}:host(.base-button--primary) .base-button__native:active:not(:disabled){background:var(--ui-button-primary-bg-active);border-color:var(--ui-button-primary-border-active)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:#fff;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--secondary) .base-button__native:active:not(:disabled){background:var(--ui-button-secondary-bg-active)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-secondary, #606770);background:transparent;border-color:transparent;justify-content:center}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-text-secondary, #606770);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--ghost) .base-button__native:active:not(:disabled){background:var(--ui-button-ghost-bg-active)}:host(.base-button--link) .base-button__native{color:var(--app-color-primary, #2b7fd9);background:transparent;border:none;border-radius:0;padding:var(--bb-pad-y, .1rem) var(--bb-pad-x, 0);min-height:0;font-family:inherit;font-weight:var(--button-link-font-weight, var(--structra-label-weight));line-height:inherit;justify-content:flex-start;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;box-shadow:none;transition:color .15s ease,opacity .15s ease}:host(.base-button--link) .base-button__native:hover:not(:disabled){color:var(--app-color-secondary, #1a2f45);background:transparent;border-color:transparent;filter:none}:host(.base-button--link) .base-button__native:active:not(:disabled){color:var(--ui-button-link-text-active)}:host(.base-button--link) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 2px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .4));border-radius:2px}:host(.base-button--danger) .base-button__native{color:var(--app-color-error-contrast, #fff);background:var(--ui-button-danger-bg);border-color:var(--ui-button-danger-border)}:host(.base-button--danger) .base-button__native:hover:not(:disabled){background:var(--ui-button-danger-bg-hover);border-color:var(--ui-button-danger-border-hover)}:host(.base-button--danger) .base-button__native:active:not(:disabled){background:var(--ui-button-danger-bg-active);border-color:var(--ui-button-danger-border-active)}:host(.base-button--danger) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}:host(.base-button--warning) .base-button__native{color:var(--ui-button-warning-text, #111827);background:var(--ui-button-warning-bg);border-color:var(--ui-button-warning-border)}:host(.base-button--warning) .base-button__native:hover:not(:disabled){background:var(--ui-button-warning-bg-hover);border-color:var(--ui-button-warning-border-hover)}:host(.base-button--warning) .base-button__native:active:not(:disabled){background:var(--ui-button-warning-bg-active);border-color:var(--ui-button-warning-border-active)}:host(.base-button--warning) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-button-warning-focus-ring, rgba(202, 138, 4, .4))}:host(.base-button--success) .base-button__native{color:var(--ui-button-success-text, #ffffff);background:var(--ui-button-success-bg);border-color:var(--ui-button-success-border)}:host(.base-button--success) .base-button__native:hover:not(:disabled){background:var(--ui-button-success-bg-hover);border-color:var(--ui-button-success-border-hover)}:host(.base-button--success) .base-button__native:active:not(:disabled){background:var(--ui-button-success-bg-active);border-color:var(--ui-button-success-border-active)}:host(.base-button--success) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-button-success-focus-ring, rgba(21, 128, 61, .35))}: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))}:host(.base-button--readonly.base-button--link) .base-button__native{background:transparent;border:none;text-decoration:underline}.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:#fff;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-secondary, #606770) 10%,transparent);border-color:transparent}:host(.base-button--link.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-primary, #2b7fd9) 12%,transparent);border:none;min-height:calc(var(--bb-fs, .9375rem) * 1.35);border-radius:2px}:host(.base-button--danger.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-error, #b91c1c) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-error-border, #dc2626) 88%,#ffffff)}:host(.base-button--warning.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-warning, #ca8a04) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-warning, #ca8a04) 88%,#ffffff)}:host(.base-button--success.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-success, #15803d) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-success, #15803d) 88%,#ffffff)}\n"] }]
184
+ args: [{ selector: 'app-base-button', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n #nativeBtn\n class=\"base-button__native\"\n [class.base-button__native--loading]=\"loading\"\n [attr.type]=\"type\"\n [disabled]=\"isDisabled\"\n [attr.aria-readonly]=\"readonly ? true : null\"\n [attr.aria-busy]=\"loading ? 'true' : null\"\n>\n @if (loading) {\n <span class=\"base-button__spinner\" aria-hidden=\"true\"></span>\n }\n <ng-content />\n</button>\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;width:fit-content;max-width:100%;box-sizing:border-box;vertical-align:middle}:host(.base-button--size-sm){--bb-fs: .8125rem;--bb-min-h: 2rem;--bb-pad-y: .375rem;--bb-pad-x: .875rem;--bb-gap: .375rem;--bb-min-w: 4rem}:host(.base-button--size-md){--bb-fs: .9375rem;--bb-min-h: 2.5rem;--bb-pad-y: .5rem;--bb-pad-x: 1.25rem;--bb-gap: .5rem;--bb-min-w: 5rem}:host(.base-button--size-lg){--bb-fs: 1rem;--bb-min-h: 2.875rem;--bb-pad-y: .625rem;--bb-pad-x: 1.5rem;--bb-gap: .625rem;--bb-min-w: 5.5rem}:host(.base-button--size-xl){--bb-fs: 1.0625rem;--bb-min-h: 3.25rem;--bb-pad-y: .75rem;--bb-pad-x: 1.75rem;--bb-gap: .75rem;--bb-min-w: 6rem}:host(.base-button--size-xxl){--bb-fs: 1.125rem;--bb-min-h: 3.625rem;--bb-pad-y: .875rem;--bb-pad-x: 2rem;--bb-gap: .875rem;--bb-min-w: 6.5rem}:host(.base-button--link){--bb-min-h: 0;--bb-min-w: 0;--bb-gap: .35rem;--bb-pad-x: 0}:host(.base-button--link.base-button--size-sm){--bb-fs: .8125rem;--bb-pad-y: .05rem;--bb-gap: .3rem}:host(.base-button--link.base-button--size-md){--bb-fs: .9375rem}:host(.base-button--link.base-button--size-lg){--bb-fs: 1rem;--bb-pad-y: .12rem;--bb-gap: .4rem}:host(.base-button--link.base-button--size-xl){--bb-fs: 1.0625rem;--bb-pad-y: .14rem;--bb-gap: .45rem}:host(.base-button--link.base-button--size-xxl){--bb-fs: 1.125rem;--bb-pad-y: .16rem;--bb-gap: .5rem}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:var(--bb-min-w, 5rem);align-items:center;justify-content:center;text-align:center;gap:var(--bb-gap, .5rem);min-height:var(--bb-min-h, 2.5rem);padding:var(--bb-pad-y, .5rem) var(--bb-pad-x, 1.25rem);margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:var(--bb-fs, .9375rem);font-weight:var(--button-font-weight, var(--structra-button-weight));line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .15s ease,opacity .15s ease,filter .12s ease}:host(.base-button--radius-none) .base-button__native{border-radius:var(--radius-none, 0px)}:host(.base-button--radius-sm) .base-button__native{border-radius:var(--radius-sm, 4px)}:host(.base-button--radius-md) .base-button__native{border-radius:var(--ui-field-float-border-radius, 14px)}:host(.base-button--radius-lg) .base-button__native{border-radius:var(--radius-lg, 12px)}:host(.base-button--radius-pill) .base-button__native{border-radius:var(--radius-pill, 999px)}: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-button-primary-bg, var(--ui-field-float-border-focus, #2b7fd9));border-color:var(--ui-button-primary-border, var(--ui-field-float-border-focus, #2b7fd9))}:host(.base-button--primary) .base-button__native:hover:not(:disabled){background:var(--ui-button-primary-bg-hover);border-color:var(--ui-button-primary-border-hover)}:host(.base-button--primary) .base-button__native:active:not(:disabled){background:var(--ui-button-primary-bg-active);border-color:var(--ui-button-primary-border-active)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:#fff;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--secondary) .base-button__native:active:not(:disabled){background:var(--ui-button-secondary-bg-active)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-secondary, #606770);background:transparent;border-color:transparent;justify-content:center}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-text-secondary, #606770);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--ghost) .base-button__native:active:not(:disabled){background:var(--ui-button-ghost-bg-active)}:host(.base-button--link) .base-button__native{color:var(--app-color-primary, #2b7fd9);background:transparent;border:none;border-radius:0;padding:var(--bb-pad-y, .1rem) var(--bb-pad-x, 0);min-height:0;font-family:inherit;font-weight:var(--button-link-font-weight, var(--structra-label-weight));line-height:inherit;justify-content:flex-start;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;box-shadow:none;transition:color .15s ease,opacity .15s ease}:host(.base-button--link) .base-button__native:hover:not(:disabled){color:var(--app-color-secondary, #1a2f45);background:transparent;border-color:transparent;filter:none}:host(.base-button--link) .base-button__native:active:not(:disabled){color:var(--ui-button-link-text-active)}:host(.base-button--link) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 2px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .4));border-radius:2px}:host(.base-button--danger) .base-button__native{color:var(--app-color-error-contrast, #fff);background:var(--ui-button-danger-bg);border-color:var(--ui-button-danger-border)}:host(.base-button--danger) .base-button__native:hover:not(:disabled){background:var(--ui-button-danger-bg-hover);border-color:var(--ui-button-danger-border-hover)}:host(.base-button--danger) .base-button__native:active:not(:disabled){background:var(--ui-button-danger-bg-active);border-color:var(--ui-button-danger-border-active)}:host(.base-button--danger) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}:host(.base-button--warning) .base-button__native{color:var(--ui-button-warning-text, #111827);background:var(--ui-button-warning-bg);border-color:var(--ui-button-warning-border)}:host(.base-button--warning) .base-button__native:hover:not(:disabled){background:var(--ui-button-warning-bg-hover);border-color:var(--ui-button-warning-border-hover)}:host(.base-button--warning) .base-button__native:active:not(:disabled){background:var(--ui-button-warning-bg-active);border-color:var(--ui-button-warning-border-active)}:host(.base-button--warning) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-button-warning-focus-ring, rgba(202, 138, 4, .4))}:host(.base-button--success) .base-button__native{color:var(--ui-button-success-text, #ffffff);background:var(--ui-button-success-bg);border-color:var(--ui-button-success-border)}:host(.base-button--success) .base-button__native:hover:not(:disabled){background:var(--ui-button-success-bg-hover);border-color:var(--ui-button-success-border-hover)}:host(.base-button--success) .base-button__native:active:not(:disabled){background:var(--ui-button-success-bg-active);border-color:var(--ui-button-success-border-active)}:host(.base-button--success) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-button-success-focus-ring, rgba(21, 128, 61, .35))}: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))}:host(.base-button--readonly.base-button--link) .base-button__native{background:transparent;border:none;text-decoration:underline}.base-button__spinner{flex:0 0 auto;width:1em;height:1em;box-sizing:border-box;border:2px solid currentColor;border-right-color:transparent;border-radius:999px;animation:structra-button-spin .7s linear infinite}@keyframes structra-button-spin{to{transform:rotate(360deg)}}.base-button__native--loading{cursor:wait}@media(prefers-reduced-motion:reduce){.base-button__spinner{animation:none;border-right-color:color-mix(in srgb,currentColor 45%,transparent)}}\n"] }]
343
185
  }], propDecorators: { nativeBtn: [{
344
186
  type: ViewChild,
345
187
  args: ['nativeBtn', { read: ElementRef }]
@@ -377,11 +219,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
377
219
  */
378
220
  class ButtonComponent extends BaseButtonComponent {
379
221
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
380
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ButtonComponent, isStandalone: true, selector: "app-button", usesInheritance: true, 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}:host(.base-button--size-sm){--bb-fs: .8125rem;--bb-min-h: 2rem;--bb-pad-y: .375rem;--bb-pad-x: .875rem;--bb-gap: .375rem;--bb-min-w: 4rem}:host(.base-button--size-md){--bb-fs: .9375rem;--bb-min-h: 2.5rem;--bb-pad-y: .5rem;--bb-pad-x: 1.25rem;--bb-gap: .5rem;--bb-min-w: 5rem}:host(.base-button--size-lg){--bb-fs: 1rem;--bb-min-h: 2.875rem;--bb-pad-y: .625rem;--bb-pad-x: 1.5rem;--bb-gap: .625rem;--bb-min-w: 5.5rem}:host(.base-button--size-xl){--bb-fs: 1.0625rem;--bb-min-h: 3.25rem;--bb-pad-y: .75rem;--bb-pad-x: 1.75rem;--bb-gap: .75rem;--bb-min-w: 6rem}:host(.base-button--size-xxl){--bb-fs: 1.125rem;--bb-min-h: 3.625rem;--bb-pad-y: .875rem;--bb-pad-x: 2rem;--bb-gap: .875rem;--bb-min-w: 6.5rem}:host(.base-button--link){--bb-min-h: 0;--bb-min-w: 0;--bb-gap: .35rem;--bb-pad-x: 0}:host(.base-button--link.base-button--size-sm){--bb-fs: .8125rem;--bb-pad-y: .05rem;--bb-gap: .3rem}:host(.base-button--link.base-button--size-md){--bb-fs: .9375rem}:host(.base-button--link.base-button--size-lg){--bb-fs: 1rem;--bb-pad-y: .12rem;--bb-gap: .4rem}:host(.base-button--link.base-button--size-xl){--bb-fs: 1.0625rem;--bb-pad-y: .14rem;--bb-gap: .45rem}:host(.base-button--link.base-button--size-xxl){--bb-fs: 1.125rem;--bb-pad-y: .16rem;--bb-gap: .5rem}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:var(--bb-min-w, 5rem);align-items:center;justify-content:center;text-align:center;gap:var(--bb-gap, .5rem);min-height:var(--bb-min-h, 2.5rem);padding:var(--bb-pad-y, .5rem) var(--bb-pad-x, 1.25rem);margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:var(--bb-fs, .9375rem);font-weight:var(--button-font-weight, var(--structra-button-weight));line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .15s ease,opacity .15s ease,filter .12s ease}:host(.base-button--radius-none) .base-button__native{border-radius:var(--radius-none, 0px)}:host(.base-button--radius-sm) .base-button__native{border-radius:var(--radius-sm, 4px)}:host(.base-button--radius-md) .base-button__native{border-radius:var(--ui-field-float-border-radius, 14px)}:host(.base-button--radius-lg) .base-button__native{border-radius:var(--radius-lg, 12px)}:host(.base-button--radius-pill) .base-button__native{border-radius:var(--radius-pill, 999px)}: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-button-primary-bg, var(--ui-field-float-border-focus, #2b7fd9));border-color:var(--ui-button-primary-border, var(--ui-field-float-border-focus, #2b7fd9))}:host(.base-button--primary) .base-button__native:hover:not(:disabled){background:var(--ui-button-primary-bg-hover);border-color:var(--ui-button-primary-border-hover)}:host(.base-button--primary) .base-button__native:active:not(:disabled){background:var(--ui-button-primary-bg-active);border-color:var(--ui-button-primary-border-active)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:#fff;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--secondary) .base-button__native:active:not(:disabled){background:var(--ui-button-secondary-bg-active)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-secondary, #606770);background:transparent;border-color:transparent;justify-content:center}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-text-secondary, #606770);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--ghost) .base-button__native:active:not(:disabled){background:var(--ui-button-ghost-bg-active)}:host(.base-button--link) .base-button__native{color:var(--app-color-primary, #2b7fd9);background:transparent;border:none;border-radius:0;padding:var(--bb-pad-y, .1rem) var(--bb-pad-x, 0);min-height:0;font-family:inherit;font-weight:var(--button-link-font-weight, var(--structra-label-weight));line-height:inherit;justify-content:flex-start;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;box-shadow:none;transition:color .15s ease,opacity .15s ease}:host(.base-button--link) .base-button__native:hover:not(:disabled){color:var(--app-color-secondary, #1a2f45);background:transparent;border-color:transparent;filter:none}:host(.base-button--link) .base-button__native:active:not(:disabled){color:var(--ui-button-link-text-active)}:host(.base-button--link) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 2px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .4));border-radius:2px}:host(.base-button--danger) .base-button__native{color:var(--app-color-error-contrast, #fff);background:var(--ui-button-danger-bg);border-color:var(--ui-button-danger-border)}:host(.base-button--danger) .base-button__native:hover:not(:disabled){background:var(--ui-button-danger-bg-hover);border-color:var(--ui-button-danger-border-hover)}:host(.base-button--danger) .base-button__native:active:not(:disabled){background:var(--ui-button-danger-bg-active);border-color:var(--ui-button-danger-border-active)}:host(.base-button--danger) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}:host(.base-button--warning) .base-button__native{color:var(--ui-button-warning-text, #111827);background:var(--ui-button-warning-bg);border-color:var(--ui-button-warning-border)}:host(.base-button--warning) .base-button__native:hover:not(:disabled){background:var(--ui-button-warning-bg-hover);border-color:var(--ui-button-warning-border-hover)}:host(.base-button--warning) .base-button__native:active:not(:disabled){background:var(--ui-button-warning-bg-active);border-color:var(--ui-button-warning-border-active)}:host(.base-button--warning) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-button-warning-focus-ring, rgba(202, 138, 4, .4))}:host(.base-button--success) .base-button__native{color:var(--ui-button-success-text, #ffffff);background:var(--ui-button-success-bg);border-color:var(--ui-button-success-border)}:host(.base-button--success) .base-button__native:hover:not(:disabled){background:var(--ui-button-success-bg-hover);border-color:var(--ui-button-success-border-hover)}:host(.base-button--success) .base-button__native:active:not(:disabled){background:var(--ui-button-success-bg-active);border-color:var(--ui-button-success-border-active)}:host(.base-button--success) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-button-success-focus-ring, rgba(21, 128, 61, .35))}: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))}:host(.base-button--readonly.base-button--link) .base-button__native{background:transparent;border:none;text-decoration:underline}.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:#fff;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-secondary, #606770) 10%,transparent);border-color:transparent}:host(.base-button--link.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-primary, #2b7fd9) 12%,transparent);border:none;min-height:calc(var(--bb-fs, .9375rem) * 1.35);border-radius:2px}:host(.base-button--danger.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-error, #b91c1c) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-error-border, #dc2626) 88%,#ffffff)}:host(.base-button--warning.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-warning, #ca8a04) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-warning, #ca8a04) 88%,#ffffff)}:host(.base-button--success.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-success, #15803d) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-success, #15803d) 88%,#ffffff)}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
222
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ButtonComponent, isStandalone: true, selector: "app-button", usesInheritance: true, ngImport: i0, template: "<button\n #nativeBtn\n class=\"base-button__native\"\n [class.base-button__native--loading]=\"loading\"\n [attr.type]=\"type\"\n [disabled]=\"isDisabled\"\n [attr.aria-readonly]=\"readonly ? true : null\"\n [attr.aria-busy]=\"loading ? 'true' : null\"\n>\n @if (loading) {\n <span class=\"base-button__spinner\" aria-hidden=\"true\"></span>\n }\n <ng-content />\n</button>\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;width:fit-content;max-width:100%;box-sizing:border-box;vertical-align:middle}:host(.base-button--size-sm){--bb-fs: .8125rem;--bb-min-h: 2rem;--bb-pad-y: .375rem;--bb-pad-x: .875rem;--bb-gap: .375rem;--bb-min-w: 4rem}:host(.base-button--size-md){--bb-fs: .9375rem;--bb-min-h: 2.5rem;--bb-pad-y: .5rem;--bb-pad-x: 1.25rem;--bb-gap: .5rem;--bb-min-w: 5rem}:host(.base-button--size-lg){--bb-fs: 1rem;--bb-min-h: 2.875rem;--bb-pad-y: .625rem;--bb-pad-x: 1.5rem;--bb-gap: .625rem;--bb-min-w: 5.5rem}:host(.base-button--size-xl){--bb-fs: 1.0625rem;--bb-min-h: 3.25rem;--bb-pad-y: .75rem;--bb-pad-x: 1.75rem;--bb-gap: .75rem;--bb-min-w: 6rem}:host(.base-button--size-xxl){--bb-fs: 1.125rem;--bb-min-h: 3.625rem;--bb-pad-y: .875rem;--bb-pad-x: 2rem;--bb-gap: .875rem;--bb-min-w: 6.5rem}:host(.base-button--link){--bb-min-h: 0;--bb-min-w: 0;--bb-gap: .35rem;--bb-pad-x: 0}:host(.base-button--link.base-button--size-sm){--bb-fs: .8125rem;--bb-pad-y: .05rem;--bb-gap: .3rem}:host(.base-button--link.base-button--size-md){--bb-fs: .9375rem}:host(.base-button--link.base-button--size-lg){--bb-fs: 1rem;--bb-pad-y: .12rem;--bb-gap: .4rem}:host(.base-button--link.base-button--size-xl){--bb-fs: 1.0625rem;--bb-pad-y: .14rem;--bb-gap: .45rem}:host(.base-button--link.base-button--size-xxl){--bb-fs: 1.125rem;--bb-pad-y: .16rem;--bb-gap: .5rem}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:var(--bb-min-w, 5rem);align-items:center;justify-content:center;text-align:center;gap:var(--bb-gap, .5rem);min-height:var(--bb-min-h, 2.5rem);padding:var(--bb-pad-y, .5rem) var(--bb-pad-x, 1.25rem);margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:var(--bb-fs, .9375rem);font-weight:var(--button-font-weight, var(--structra-button-weight));line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .15s ease,opacity .15s ease,filter .12s ease}:host(.base-button--radius-none) .base-button__native{border-radius:var(--radius-none, 0px)}:host(.base-button--radius-sm) .base-button__native{border-radius:var(--radius-sm, 4px)}:host(.base-button--radius-md) .base-button__native{border-radius:var(--ui-field-float-border-radius, 14px)}:host(.base-button--radius-lg) .base-button__native{border-radius:var(--radius-lg, 12px)}:host(.base-button--radius-pill) .base-button__native{border-radius:var(--radius-pill, 999px)}: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-button-primary-bg, var(--ui-field-float-border-focus, #2b7fd9));border-color:var(--ui-button-primary-border, var(--ui-field-float-border-focus, #2b7fd9))}:host(.base-button--primary) .base-button__native:hover:not(:disabled){background:var(--ui-button-primary-bg-hover);border-color:var(--ui-button-primary-border-hover)}:host(.base-button--primary) .base-button__native:active:not(:disabled){background:var(--ui-button-primary-bg-active);border-color:var(--ui-button-primary-border-active)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:#fff;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--secondary) .base-button__native:active:not(:disabled){background:var(--ui-button-secondary-bg-active)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-secondary, #606770);background:transparent;border-color:transparent;justify-content:center}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-text-secondary, #606770);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--ghost) .base-button__native:active:not(:disabled){background:var(--ui-button-ghost-bg-active)}:host(.base-button--link) .base-button__native{color:var(--app-color-primary, #2b7fd9);background:transparent;border:none;border-radius:0;padding:var(--bb-pad-y, .1rem) var(--bb-pad-x, 0);min-height:0;font-family:inherit;font-weight:var(--button-link-font-weight, var(--structra-label-weight));line-height:inherit;justify-content:flex-start;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;box-shadow:none;transition:color .15s ease,opacity .15s ease}:host(.base-button--link) .base-button__native:hover:not(:disabled){color:var(--app-color-secondary, #1a2f45);background:transparent;border-color:transparent;filter:none}:host(.base-button--link) .base-button__native:active:not(:disabled){color:var(--ui-button-link-text-active)}:host(.base-button--link) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 2px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .4));border-radius:2px}:host(.base-button--danger) .base-button__native{color:var(--app-color-error-contrast, #fff);background:var(--ui-button-danger-bg);border-color:var(--ui-button-danger-border)}:host(.base-button--danger) .base-button__native:hover:not(:disabled){background:var(--ui-button-danger-bg-hover);border-color:var(--ui-button-danger-border-hover)}:host(.base-button--danger) .base-button__native:active:not(:disabled){background:var(--ui-button-danger-bg-active);border-color:var(--ui-button-danger-border-active)}:host(.base-button--danger) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}:host(.base-button--warning) .base-button__native{color:var(--ui-button-warning-text, #111827);background:var(--ui-button-warning-bg);border-color:var(--ui-button-warning-border)}:host(.base-button--warning) .base-button__native:hover:not(:disabled){background:var(--ui-button-warning-bg-hover);border-color:var(--ui-button-warning-border-hover)}:host(.base-button--warning) .base-button__native:active:not(:disabled){background:var(--ui-button-warning-bg-active);border-color:var(--ui-button-warning-border-active)}:host(.base-button--warning) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-button-warning-focus-ring, rgba(202, 138, 4, .4))}:host(.base-button--success) .base-button__native{color:var(--ui-button-success-text, #ffffff);background:var(--ui-button-success-bg);border-color:var(--ui-button-success-border)}:host(.base-button--success) .base-button__native:hover:not(:disabled){background:var(--ui-button-success-bg-hover);border-color:var(--ui-button-success-border-hover)}:host(.base-button--success) .base-button__native:active:not(:disabled){background:var(--ui-button-success-bg-active);border-color:var(--ui-button-success-border-active)}:host(.base-button--success) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-button-success-focus-ring, rgba(21, 128, 61, .35))}: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))}:host(.base-button--readonly.base-button--link) .base-button__native{background:transparent;border:none;text-decoration:underline}.base-button__spinner{flex:0 0 auto;width:1em;height:1em;box-sizing:border-box;border:2px solid currentColor;border-right-color:transparent;border-radius:999px;animation:structra-button-spin .7s linear infinite}@keyframes structra-button-spin{to{transform:rotate(360deg)}}.base-button__native--loading{cursor:wait}@media(prefers-reduced-motion:reduce){.base-button__spinner{animation:none;border-right-color:color-mix(in srgb,currentColor 45%,transparent)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
381
223
  }
382
224
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ButtonComponent, decorators: [{
383
225
  type: Component,
384
- args: [{ selector: 'app-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}:host(.base-button--size-sm){--bb-fs: .8125rem;--bb-min-h: 2rem;--bb-pad-y: .375rem;--bb-pad-x: .875rem;--bb-gap: .375rem;--bb-min-w: 4rem}:host(.base-button--size-md){--bb-fs: .9375rem;--bb-min-h: 2.5rem;--bb-pad-y: .5rem;--bb-pad-x: 1.25rem;--bb-gap: .5rem;--bb-min-w: 5rem}:host(.base-button--size-lg){--bb-fs: 1rem;--bb-min-h: 2.875rem;--bb-pad-y: .625rem;--bb-pad-x: 1.5rem;--bb-gap: .625rem;--bb-min-w: 5.5rem}:host(.base-button--size-xl){--bb-fs: 1.0625rem;--bb-min-h: 3.25rem;--bb-pad-y: .75rem;--bb-pad-x: 1.75rem;--bb-gap: .75rem;--bb-min-w: 6rem}:host(.base-button--size-xxl){--bb-fs: 1.125rem;--bb-min-h: 3.625rem;--bb-pad-y: .875rem;--bb-pad-x: 2rem;--bb-gap: .875rem;--bb-min-w: 6.5rem}:host(.base-button--link){--bb-min-h: 0;--bb-min-w: 0;--bb-gap: .35rem;--bb-pad-x: 0}:host(.base-button--link.base-button--size-sm){--bb-fs: .8125rem;--bb-pad-y: .05rem;--bb-gap: .3rem}:host(.base-button--link.base-button--size-md){--bb-fs: .9375rem}:host(.base-button--link.base-button--size-lg){--bb-fs: 1rem;--bb-pad-y: .12rem;--bb-gap: .4rem}:host(.base-button--link.base-button--size-xl){--bb-fs: 1.0625rem;--bb-pad-y: .14rem;--bb-gap: .45rem}:host(.base-button--link.base-button--size-xxl){--bb-fs: 1.125rem;--bb-pad-y: .16rem;--bb-gap: .5rem}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:var(--bb-min-w, 5rem);align-items:center;justify-content:center;text-align:center;gap:var(--bb-gap, .5rem);min-height:var(--bb-min-h, 2.5rem);padding:var(--bb-pad-y, .5rem) var(--bb-pad-x, 1.25rem);margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:var(--bb-fs, .9375rem);font-weight:var(--button-font-weight, var(--structra-button-weight));line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .15s ease,opacity .15s ease,filter .12s ease}:host(.base-button--radius-none) .base-button__native{border-radius:var(--radius-none, 0px)}:host(.base-button--radius-sm) .base-button__native{border-radius:var(--radius-sm, 4px)}:host(.base-button--radius-md) .base-button__native{border-radius:var(--ui-field-float-border-radius, 14px)}:host(.base-button--radius-lg) .base-button__native{border-radius:var(--radius-lg, 12px)}:host(.base-button--radius-pill) .base-button__native{border-radius:var(--radius-pill, 999px)}: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-button-primary-bg, var(--ui-field-float-border-focus, #2b7fd9));border-color:var(--ui-button-primary-border, var(--ui-field-float-border-focus, #2b7fd9))}:host(.base-button--primary) .base-button__native:hover:not(:disabled){background:var(--ui-button-primary-bg-hover);border-color:var(--ui-button-primary-border-hover)}:host(.base-button--primary) .base-button__native:active:not(:disabled){background:var(--ui-button-primary-bg-active);border-color:var(--ui-button-primary-border-active)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:#fff;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--secondary) .base-button__native:active:not(:disabled){background:var(--ui-button-secondary-bg-active)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-secondary, #606770);background:transparent;border-color:transparent;justify-content:center}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-text-secondary, #606770);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--ghost) .base-button__native:active:not(:disabled){background:var(--ui-button-ghost-bg-active)}:host(.base-button--link) .base-button__native{color:var(--app-color-primary, #2b7fd9);background:transparent;border:none;border-radius:0;padding:var(--bb-pad-y, .1rem) var(--bb-pad-x, 0);min-height:0;font-family:inherit;font-weight:var(--button-link-font-weight, var(--structra-label-weight));line-height:inherit;justify-content:flex-start;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;box-shadow:none;transition:color .15s ease,opacity .15s ease}:host(.base-button--link) .base-button__native:hover:not(:disabled){color:var(--app-color-secondary, #1a2f45);background:transparent;border-color:transparent;filter:none}:host(.base-button--link) .base-button__native:active:not(:disabled){color:var(--ui-button-link-text-active)}:host(.base-button--link) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 2px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .4));border-radius:2px}:host(.base-button--danger) .base-button__native{color:var(--app-color-error-contrast, #fff);background:var(--ui-button-danger-bg);border-color:var(--ui-button-danger-border)}:host(.base-button--danger) .base-button__native:hover:not(:disabled){background:var(--ui-button-danger-bg-hover);border-color:var(--ui-button-danger-border-hover)}:host(.base-button--danger) .base-button__native:active:not(:disabled){background:var(--ui-button-danger-bg-active);border-color:var(--ui-button-danger-border-active)}:host(.base-button--danger) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}:host(.base-button--warning) .base-button__native{color:var(--ui-button-warning-text, #111827);background:var(--ui-button-warning-bg);border-color:var(--ui-button-warning-border)}:host(.base-button--warning) .base-button__native:hover:not(:disabled){background:var(--ui-button-warning-bg-hover);border-color:var(--ui-button-warning-border-hover)}:host(.base-button--warning) .base-button__native:active:not(:disabled){background:var(--ui-button-warning-bg-active);border-color:var(--ui-button-warning-border-active)}:host(.base-button--warning) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-button-warning-focus-ring, rgba(202, 138, 4, .4))}:host(.base-button--success) .base-button__native{color:var(--ui-button-success-text, #ffffff);background:var(--ui-button-success-bg);border-color:var(--ui-button-success-border)}:host(.base-button--success) .base-button__native:hover:not(:disabled){background:var(--ui-button-success-bg-hover);border-color:var(--ui-button-success-border-hover)}:host(.base-button--success) .base-button__native:active:not(:disabled){background:var(--ui-button-success-bg-active);border-color:var(--ui-button-success-border-active)}:host(.base-button--success) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-button-success-focus-ring, rgba(21, 128, 61, .35))}: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))}:host(.base-button--readonly.base-button--link) .base-button__native{background:transparent;border:none;text-decoration:underline}.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:#fff;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-secondary, #606770) 10%,transparent);border-color:transparent}:host(.base-button--link.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-primary, #2b7fd9) 12%,transparent);border:none;min-height:calc(var(--bb-fs, .9375rem) * 1.35);border-radius:2px}:host(.base-button--danger.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-error, #b91c1c) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-error-border, #dc2626) 88%,#ffffff)}:host(.base-button--warning.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-warning, #ca8a04) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-warning, #ca8a04) 88%,#ffffff)}:host(.base-button--success.base-button--loading) .base-button__native--skeleton{color:transparent;background:color-mix(in srgb,var(--app-color-success, #15803d) 82%,#ffffff);border-color:color-mix(in srgb,var(--app-color-success, #15803d) 88%,#ffffff)}\n"] }]
226
+ args: [{ selector: 'app-button', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n #nativeBtn\n class=\"base-button__native\"\n [class.base-button__native--loading]=\"loading\"\n [attr.type]=\"type\"\n [disabled]=\"isDisabled\"\n [attr.aria-readonly]=\"readonly ? true : null\"\n [attr.aria-busy]=\"loading ? 'true' : null\"\n>\n @if (loading) {\n <span class=\"base-button__spinner\" aria-hidden=\"true\"></span>\n }\n <ng-content />\n</button>\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;width:fit-content;max-width:100%;box-sizing:border-box;vertical-align:middle}:host(.base-button--size-sm){--bb-fs: .8125rem;--bb-min-h: 2rem;--bb-pad-y: .375rem;--bb-pad-x: .875rem;--bb-gap: .375rem;--bb-min-w: 4rem}:host(.base-button--size-md){--bb-fs: .9375rem;--bb-min-h: 2.5rem;--bb-pad-y: .5rem;--bb-pad-x: 1.25rem;--bb-gap: .5rem;--bb-min-w: 5rem}:host(.base-button--size-lg){--bb-fs: 1rem;--bb-min-h: 2.875rem;--bb-pad-y: .625rem;--bb-pad-x: 1.5rem;--bb-gap: .625rem;--bb-min-w: 5.5rem}:host(.base-button--size-xl){--bb-fs: 1.0625rem;--bb-min-h: 3.25rem;--bb-pad-y: .75rem;--bb-pad-x: 1.75rem;--bb-gap: .75rem;--bb-min-w: 6rem}:host(.base-button--size-xxl){--bb-fs: 1.125rem;--bb-min-h: 3.625rem;--bb-pad-y: .875rem;--bb-pad-x: 2rem;--bb-gap: .875rem;--bb-min-w: 6.5rem}:host(.base-button--link){--bb-min-h: 0;--bb-min-w: 0;--bb-gap: .35rem;--bb-pad-x: 0}:host(.base-button--link.base-button--size-sm){--bb-fs: .8125rem;--bb-pad-y: .05rem;--bb-gap: .3rem}:host(.base-button--link.base-button--size-md){--bb-fs: .9375rem}:host(.base-button--link.base-button--size-lg){--bb-fs: 1rem;--bb-pad-y: .12rem;--bb-gap: .4rem}:host(.base-button--link.base-button--size-xl){--bb-fs: 1.0625rem;--bb-pad-y: .14rem;--bb-gap: .45rem}:host(.base-button--link.base-button--size-xxl){--bb-fs: 1.125rem;--bb-pad-y: .16rem;--bb-gap: .5rem}.base-button__native{-webkit-appearance:none;appearance:none;display:flex;width:auto;min-width:var(--bb-min-w, 5rem);align-items:center;justify-content:center;text-align:center;gap:var(--bb-gap, .5rem);min-height:var(--bb-min-h, 2.5rem);padding:var(--bb-pad-y, .5rem) var(--bb-pad-x, 1.25rem);margin:0;border:1px solid transparent;border-radius:var(--ui-field-float-border-radius, 14px);font:inherit;font-size:var(--bb-fs, .9375rem);font-weight:var(--button-font-weight, var(--structra-button-weight));line-height:1.25;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .15s ease,opacity .15s ease,filter .12s ease}:host(.base-button--radius-none) .base-button__native{border-radius:var(--radius-none, 0px)}:host(.base-button--radius-sm) .base-button__native{border-radius:var(--radius-sm, 4px)}:host(.base-button--radius-md) .base-button__native{border-radius:var(--ui-field-float-border-radius, 14px)}:host(.base-button--radius-lg) .base-button__native{border-radius:var(--radius-lg, 12px)}:host(.base-button--radius-pill) .base-button__native{border-radius:var(--radius-pill, 999px)}: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-button-primary-bg, var(--ui-field-float-border-focus, #2b7fd9));border-color:var(--ui-button-primary-border, var(--ui-field-float-border-focus, #2b7fd9))}:host(.base-button--primary) .base-button__native:hover:not(:disabled){background:var(--ui-button-primary-bg-hover);border-color:var(--ui-button-primary-border-hover)}:host(.base-button--primary) .base-button__native:active:not(:disabled){background:var(--ui-button-primary-bg-active);border-color:var(--ui-button-primary-border-active)}:host(.base-button--secondary) .base-button__native{color:var(--ui-field-float-label-top-color, #4a6d8c);background:#fff;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--secondary) .base-button__native:active:not(:disabled){background:var(--ui-button-secondary-bg-active)}:host(.base-button--ghost) .base-button__native{color:var(--app-color-text-secondary, #606770);background:transparent;border-color:transparent;justify-content:center}:host(.base-button--ghost) .base-button__native:hover:not(:disabled){color:var(--app-color-text-secondary, #606770);background:color-mix(in srgb,var(--app-color-primary) 6%,transparent)}:host(.base-button--ghost) .base-button__native:active:not(:disabled){background:var(--ui-button-ghost-bg-active)}:host(.base-button--link) .base-button__native{color:var(--app-color-primary, #2b7fd9);background:transparent;border:none;border-radius:0;padding:var(--bb-pad-y, .1rem) var(--bb-pad-x, 0);min-height:0;font-family:inherit;font-weight:var(--button-link-font-weight, var(--structra-label-weight));line-height:inherit;justify-content:flex-start;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;box-shadow:none;transition:color .15s ease,opacity .15s ease}:host(.base-button--link) .base-button__native:hover:not(:disabled){color:var(--app-color-secondary, #1a2f45);background:transparent;border-color:transparent;filter:none}:host(.base-button--link) .base-button__native:active:not(:disabled){color:var(--ui-button-link-text-active)}:host(.base-button--link) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 2px var(--ui-field-float-focus-ring, rgba(43, 127, 217, .4));border-radius:2px}:host(.base-button--danger) .base-button__native{color:var(--app-color-error-contrast, #fff);background:var(--ui-button-danger-bg);border-color:var(--ui-button-danger-border)}:host(.base-button--danger) .base-button__native:hover:not(:disabled){background:var(--ui-button-danger-bg-hover);border-color:var(--ui-button-danger-border-hover)}:host(.base-button--danger) .base-button__native:active:not(:disabled){background:var(--ui-button-danger-bg-active);border-color:var(--ui-button-danger-border-active)}:host(.base-button--danger) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}:host(.base-button--warning) .base-button__native{color:var(--ui-button-warning-text, #111827);background:var(--ui-button-warning-bg);border-color:var(--ui-button-warning-border)}:host(.base-button--warning) .base-button__native:hover:not(:disabled){background:var(--ui-button-warning-bg-hover);border-color:var(--ui-button-warning-border-hover)}:host(.base-button--warning) .base-button__native:active:not(:disabled){background:var(--ui-button-warning-bg-active);border-color:var(--ui-button-warning-border-active)}:host(.base-button--warning) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-button-warning-focus-ring, rgba(202, 138, 4, .4))}:host(.base-button--success) .base-button__native{color:var(--ui-button-success-text, #ffffff);background:var(--ui-button-success-bg);border-color:var(--ui-button-success-border)}:host(.base-button--success) .base-button__native:hover:not(:disabled){background:var(--ui-button-success-bg-hover);border-color:var(--ui-button-success-border-hover)}:host(.base-button--success) .base-button__native:active:not(:disabled){background:var(--ui-button-success-bg-active);border-color:var(--ui-button-success-border-active)}:host(.base-button--success) .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ui-button-success-focus-ring, rgba(21, 128, 61, .35))}: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))}:host(.base-button--readonly.base-button--link) .base-button__native{background:transparent;border:none;text-decoration:underline}.base-button__spinner{flex:0 0 auto;width:1em;height:1em;box-sizing:border-box;border:2px solid currentColor;border-right-color:transparent;border-radius:999px;animation:structra-button-spin .7s linear infinite}@keyframes structra-button-spin{to{transform:rotate(360deg)}}.base-button__native--loading{cursor:wait}@media(prefers-reduced-motion:reduce){.base-button__spinner{animation:none;border-right-color:color-mix(in srgb,currentColor 45%,transparent)}}\n"] }]
385
227
  }] });
386
228
 
387
229
  const counters = new Map();
@@ -412,6 +254,11 @@ class BaseFieldDirective {
412
254
  this.errorMessage = '';
413
255
  /** Se `true`, exibe o parágrafo de erro; por defeito `false` (só estado inválido na borda/label). */
414
256
  this.showErrorMessage = false;
257
+ /**
258
+ * Com campo inválido, aplica fundo semântico de erro (`--ui-field-invalid-input-bg`).
259
+ * Por defeito `false`: fundo igual ao válido (normal ou só leitura); só borda/foco/prefixo denunciam erro.
260
+ */
261
+ this.invalidThemed = false;
415
262
  this.required = false;
416
263
  /** Se `true` e `required`, exibe o asterisco no label (`BaseFieldComponent`); por defeito `false`. */
417
264
  this.showRequiredMark = false;
@@ -429,6 +276,11 @@ class BaseFieldDirective {
429
276
  this.autocomplete = true;
430
277
  /** Placeholder de carregamento no `app-base-field` (skeleton). */
431
278
  this.loading = false;
279
+ /**
280
+ * Se `true`, foca o controlo nativo após a vista estar montada (ignora se `disabled`, `readonly` ou `loading`).
281
+ * Por defeito `false`.
282
+ */
283
+ this.autofocus = false;
432
284
  /**
433
285
  * Mostra botão «…» no sufixo que abre menu de ações (dropdown com os itens em {@link contextMenuItems}).
434
286
  * Por defeito `false`.
@@ -571,8 +423,20 @@ class BaseFieldDirective {
571
423
  this.onTouched();
572
424
  this.cdr.markForCheck();
573
425
  }
426
+ /**
427
+ * Chamado em `ngAfterViewInit` dos campos concretos com o elemento focável (input, textarea, combobox, etc.).
428
+ */
429
+ applyAutofocusIfNeeded(resolve) {
430
+ if (!this.autofocus || this.disabled || this.readonly || this.loading) {
431
+ return;
432
+ }
433
+ queueMicrotask(() => {
434
+ const el = resolve();
435
+ el?.focus({ preventScroll: false });
436
+ });
437
+ }
574
438
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BaseFieldDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
575
- 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", "autocomplete", booleanAttribute], loading: ["loading", "loading", booleanAttribute], mostrarMenuContexto: ["mostrarMenuContexto", "mostrarMenuContexto", booleanAttribute], contextMenuItems: "contextMenuItems", contextMenuId: "contextMenuId" }, outputs: { contextMenuSelect: "contextMenuSelect" }, host: { properties: { "attr.data-control-id": "this.hostDataControlId" } }, ngImport: i0 }); }
439
+ 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", invalidThemed: ["invalidThemed", "invalidThemed", booleanAttribute], required: "required", showRequiredMark: "showRequiredMark", readonly: "readonly", showPrefixIcon: "showPrefixIcon", prefixIcon: "prefixIcon", iconLeft: "iconLeft", clearable: "clearable", clearAriaLabel: "clearAriaLabel", autocomplete: ["autocomplete", "autocomplete", booleanAttribute], loading: ["loading", "loading", booleanAttribute], autofocus: ["autofocus", "autofocus", booleanAttribute], mostrarMenuContexto: ["mostrarMenuContexto", "mostrarMenuContexto", booleanAttribute], contextMenuItems: "contextMenuItems", contextMenuId: "contextMenuId" }, outputs: { contextMenuSelect: "contextMenuSelect" }, host: { properties: { "attr.data-control-id": "this.hostDataControlId" } }, ngImport: i0 }); }
576
440
  }
577
441
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BaseFieldDirective, decorators: [{
578
442
  type: Directive
@@ -588,6 +452,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
588
452
  type: Input
589
453
  }], showErrorMessage: [{
590
454
  type: Input
455
+ }], invalidThemed: [{
456
+ type: Input,
457
+ args: [{ transform: booleanAttribute }]
591
458
  }], required: [{
592
459
  type: Input
593
460
  }], showRequiredMark: [{
@@ -611,6 +478,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
611
478
  }], loading: [{
612
479
  type: Input,
613
480
  args: [{ transform: booleanAttribute }]
481
+ }], autofocus: [{
482
+ type: Input,
483
+ args: [{ transform: booleanAttribute }]
614
484
  }], mostrarMenuContexto: [{
615
485
  type: Input,
616
486
  args: [{ transform: booleanAttribute }]
@@ -625,6 +495,209 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
625
495
  args: ['attr.data-control-id']
626
496
  }] } });
627
497
 
498
+ /** Bloco genérico de skeleton (linhas, caixas, células). */
499
+ class SkeletonBlockComponent {
500
+ constructor() {
501
+ /** Largura CSS (ex.: `100%`, `6rem`, `40%`). */
502
+ this.width = '100%';
503
+ /** Altura CSS. */
504
+ this.height = '0.75rem';
505
+ /** Raio de canto. */
506
+ this.radius = '8px';
507
+ this.animate = true;
508
+ }
509
+ get hostClass() {
510
+ const parts = ['skeleton-block'];
511
+ if (this.animate) {
512
+ parts.push('skeleton-block--animate');
513
+ }
514
+ else {
515
+ parts.push('skeleton-block--static');
516
+ }
517
+ return parts.join(' ');
518
+ }
519
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
520
+ 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 }); }
521
+ }
522
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonBlockComponent, decorators: [{
523
+ type: Component,
524
+ 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"] }]
525
+ }], propDecorators: { width: [{
526
+ type: Input
527
+ }], height: [{
528
+ type: Input
529
+ }], radius: [{
530
+ type: Input
531
+ }], animate: [{
532
+ type: Input,
533
+ args: [{ transform: booleanAttribute }]
534
+ }], hostClass: [{
535
+ type: HostBinding,
536
+ args: ['class']
537
+ }] } });
538
+
539
+ /** Várias linhas de texto placeholder. */
540
+ class SkeletonTextComponent {
541
+ constructor() {
542
+ this.lines = 3;
543
+ /** Largura da última linha em % (1–100). */
544
+ this.lastLineWidthPct = 62;
545
+ this.lineHeight = '0.7rem';
546
+ this.gap = '0.45rem';
547
+ this.animate = true;
548
+ }
549
+ lineIndexes() {
550
+ return Array.from({ length: Math.max(1, this.lines) }, (_, i) => i);
551
+ }
552
+ widthForLine(i) {
553
+ const n = Math.max(1, this.lines);
554
+ if (i === n - 1) {
555
+ const p = Math.min(100, Math.max(20, this.lastLineWidthPct));
556
+ return `${p}%`;
557
+ }
558
+ return '100%';
559
+ }
560
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
561
+ 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 }); }
562
+ }
563
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonTextComponent, decorators: [{
564
+ type: Component,
565
+ 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"] }]
566
+ }], propDecorators: { lines: [{
567
+ type: Input,
568
+ args: [{ transform: numberAttribute }]
569
+ }], lastLineWidthPct: [{
570
+ type: Input,
571
+ args: [{ transform: numberAttribute }]
572
+ }], lineHeight: [{
573
+ type: Input
574
+ }], gap: [{
575
+ type: Input
576
+ }], animate: [{
577
+ type: Input,
578
+ args: [{ transform: booleanAttribute }]
579
+ }] } });
580
+
581
+ /** Lista vertical de linhas (ex.: opções de dropdown). */
582
+ class SkeletonListComponent {
583
+ constructor() {
584
+ this.rows = 6;
585
+ /** Mostra um “leading” à esquerda (círculo pequeno). */
586
+ this.leading = true;
587
+ this.rowGap = '0.25rem';
588
+ /** Altura da barra por linha (alinhada às opções de select ~0,95rem / lh 1,35). */
589
+ this.lineHeight = '1.05rem';
590
+ this.animate = true;
591
+ }
592
+ rowIndexes() {
593
+ return Array.from({ length: Math.max(1, this.rows) }, (_, i) => i);
594
+ }
595
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
596
+ 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 }); }
597
+ }
598
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonListComponent, decorators: [{
599
+ type: Component,
600
+ 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"] }]
601
+ }], propDecorators: { rows: [{
602
+ type: Input,
603
+ args: [{ transform: numberAttribute }]
604
+ }], leading: [{
605
+ type: Input,
606
+ args: [{ transform: booleanAttribute }]
607
+ }], rowGap: [{
608
+ type: Input
609
+ }], lineHeight: [{
610
+ type: Input
611
+ }], animate: [{
612
+ type: Input,
613
+ args: [{ transform: booleanAttribute }]
614
+ }] } });
615
+
616
+ /** Placeholder de cartão (avatar + texto + ações). */
617
+ class SkeletonCardComponent {
618
+ constructor() {
619
+ this.showActions = true;
620
+ this.animate = true;
621
+ }
622
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
623
+ 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 }); }
624
+ }
625
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonCardComponent, decorators: [{
626
+ type: Component,
627
+ 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"] }]
628
+ }], propDecorators: { showActions: [{
629
+ type: Input,
630
+ args: [{ transform: booleanAttribute }]
631
+ }], animate: [{
632
+ type: Input,
633
+ args: [{ transform: booleanAttribute }]
634
+ }] } });
635
+
636
+ /** Placeholder tabular (cabeçalho + linhas + faixa de paginação). */
637
+ class SkeletonTableComponent {
638
+ constructor() {
639
+ this.columnCount = 4;
640
+ this.rowCount = 8;
641
+ this.showPager = true;
642
+ this.animate = true;
643
+ }
644
+ colIndexes() {
645
+ return Array.from({ length: Math.max(1, this.columnCount) }, (_, i) => i);
646
+ }
647
+ rowIndexes() {
648
+ return Array.from({ length: Math.max(1, this.rowCount) }, (_, i) => i);
649
+ }
650
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
651
+ 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 }); }
652
+ }
653
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonTableComponent, decorators: [{
654
+ type: Component,
655
+ 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"] }]
656
+ }], propDecorators: { columnCount: [{
657
+ type: Input,
658
+ args: [{ transform: numberAttribute }]
659
+ }], rowCount: [{
660
+ type: Input,
661
+ args: [{ transform: numberAttribute }]
662
+ }], showPager: [{
663
+ type: Input,
664
+ args: [{ transform: booleanAttribute }]
665
+ }], animate: [{
666
+ type: Input,
667
+ args: [{ transform: booleanAttribute }]
668
+ }] } });
669
+
670
+ /**
671
+ * Placeholder de campo: barra de valor e, opcionalmente, quadrado à esquerda quando não há
672
+ * ícone Font Awesome na coluna de prefixo do `app-base-field`.
673
+ */
674
+ class SkeletonFieldShellComponent {
675
+ constructor() {
676
+ /** `textarea`: várias barras (multilinha); restantes: uma barra estreita ao estilo «valor». */
677
+ this.variant = 'text';
678
+ this.animate = true;
679
+ /**
680
+ * Quando `false`, não renderiza o quadrado à esquerda (o `app-base-field` já mostra o ícone
681
+ * de prefixo inerte na coluna correcta durante `loading`).
682
+ */
683
+ this.showLeadingIcon = true;
684
+ }
685
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonFieldShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
686
+ 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\r\n class=\"skeleton-field-shell\"\r\n [class.skeleton-field-shell--bar-only]=\"!showLeadingIcon\"\r\n [class.skeleton-field-shell--textarea]=\"variant === 'textarea'\"\r\n aria-hidden=\"true\"\r\n>\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 @if (variant === 'textarea') {\r\n <div class=\"skeleton-field-shell__lines\">\r\n <app-skeleton-block class=\"skeleton-field-shell__value\" width=\"72%\" height=\"1.05em\" radius=\"6px\"\r\n [animate]=\"animate\" />\r\n <app-skeleton-block class=\"skeleton-field-shell__value\" width=\"92%\" height=\"1.05em\" radius=\"6px\"\r\n [animate]=\"animate\" />\r\n <app-skeleton-block class=\"skeleton-field-shell__value\" width=\"58%\" height=\"1.05em\" radius=\"6px\"\r\n [animate]=\"animate\" />\r\n </div>\r\n } @else {\r\n <app-skeleton-block class=\"skeleton-field-shell__value\" width=\"72%\" height=\"1.35em\" radius=\"6px\"\r\n [animate]=\"animate\" />\r\n }\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%}.skeleton-field-shell__lines{display:flex;flex-direction:column;justify-content:center;gap:.45rem;flex:1 1 auto;align-self:stretch;min-width:0;width:100%}.skeleton-field-shell--textarea{align-items:flex-start;padding-top:.55rem;padding-bottom:.45rem}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
687
+ }
688
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SkeletonFieldShellComponent, decorators: [{
689
+ type: Component,
690
+ args: [{ selector: 'app-skeleton-field-shell', imports: [SkeletonBlockComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"skeleton-field-shell\"\r\n [class.skeleton-field-shell--bar-only]=\"!showLeadingIcon\"\r\n [class.skeleton-field-shell--textarea]=\"variant === 'textarea'\"\r\n aria-hidden=\"true\"\r\n>\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 @if (variant === 'textarea') {\r\n <div class=\"skeleton-field-shell__lines\">\r\n <app-skeleton-block class=\"skeleton-field-shell__value\" width=\"72%\" height=\"1.05em\" radius=\"6px\"\r\n [animate]=\"animate\" />\r\n <app-skeleton-block class=\"skeleton-field-shell__value\" width=\"92%\" height=\"1.05em\" radius=\"6px\"\r\n [animate]=\"animate\" />\r\n <app-skeleton-block class=\"skeleton-field-shell__value\" width=\"58%\" height=\"1.05em\" radius=\"6px\"\r\n [animate]=\"animate\" />\r\n </div>\r\n } @else {\r\n <app-skeleton-block class=\"skeleton-field-shell__value\" width=\"72%\" height=\"1.35em\" radius=\"6px\"\r\n [animate]=\"animate\" />\r\n }\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%}.skeleton-field-shell__lines{display:flex;flex-direction:column;justify-content:center;gap:.45rem;flex:1 1 auto;align-self:stretch;min-width:0;width:100%}.skeleton-field-shell--textarea{align-items:flex-start;padding-top:.55rem;padding-bottom:.45rem}\n"] }]
691
+ }], propDecorators: { variant: [{
692
+ type: Input
693
+ }], animate: [{
694
+ type: Input,
695
+ args: [{ transform: booleanAttribute }]
696
+ }], showLeadingIcon: [{
697
+ type: Input,
698
+ args: [{ transform: booleanAttribute }]
699
+ }] } });
700
+
628
701
  const STRUCTRA_THEME_IDS = [
629
702
  'blue',
630
703
  'green',
@@ -1540,6 +1613,8 @@ class BaseFieldComponent {
1540
1613
  /** Asterisco visual do obrigatório no label (validação HTML `required` inalterada); por defeito `false`. */
1541
1614
  this.showRequiredMark = false;
1542
1615
  this.invalid = false;
1616
+ /** Fundo semântico de erro no involúcro; só com `invalid` + este `true`. */
1617
+ this.invalidThemed = false;
1543
1618
  this.filled = false;
1544
1619
  this.disabled = false;
1545
1620
  this.readonly = false;
@@ -1620,11 +1695,11 @@ class BaseFieldComponent {
1620
1695
  this.contextMenuSelect.emit(id);
1621
1696
  }
1622
1697
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BaseFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1623
- 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);overflow:hidden;background:var(--field-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):not(:focus-within):hover .base-field__box{border-color:var(--ui-field-float-border-hover);box-shadow:none}.base-field--readonly:not(.base-field--disabled):not(.base-field--invalid):not(:focus-within):hover .base-field__box{border-color:var(--ui-field-readonly-border-hover);box-shadow:none}.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;flex-direction:row;align-items:center;justify-content:center;flex-shrink:0;gap:.125rem;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:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;min-width:2rem;min-height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;line-height:0;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{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;font-size:1.2rem;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:var(--field-float-label-rest-weight, var(--structra-body-weight));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:var(--field-label-weight, var(--structra-label-weight));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;font-weight:var(--field-helper-weight, var(--structra-body-weight));color:var(--ui-field-error-text-color);user-select:none;-webkit-user-select:none}@supports (-webkit-appearance: none){.base-field--invalid:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill,.base-field--invalid:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:hover,.base-field--invalid:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus,.base-field--invalid:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:active,.base-field--invalid:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-invalid-input-bg, #fef2f2) inset!important;box-shadow:0 0 0 1000px var(--ui-field-invalid-input-bg, #fef2f2) inset!important;transition:background-color 50000s ease 0s!important}.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:hover,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:active,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-readonly-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-readonly-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-readonly-bg) inset!important;transition:background-color 50000s ease 0s!important}}.base-field--invalid:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill,.base-field--invalid:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill:hover,.base-field--invalid:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill:focus{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-invalid-input-bg, #fef2f2) inset!important;box-shadow:0 0 0 1000px var(--ui-field-invalid-input-bg, #fef2f2) inset!important;background-color:var(--ui-field-invalid-input-bg, #fef2f2)!important;transition:background-color 50000s ease 0s!important}.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):autofill,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):autofill:hover,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):autofill:focus{-webkit-text-fill-color:var(--ui-field-readonly-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-readonly-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-readonly-bg) inset!important;background-color:var(--ui-field-readonly-bg)!important;transition:background-color 50000s ease 0s!important}\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 }); }
1698
+ 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", invalidThemed: ["invalidThemed", "invalidThemed", booleanAttribute], 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\"\n [class.base-field--invalid-themed]=\"invalid && invalidThemed\" [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);overflow:hidden;background:var(--field-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):not(:focus-within):hover .base-field__box{border-color:var(--ui-field-float-border-hover);box-shadow:none}.base-field--readonly:not(.base-field--disabled):not(.base-field--invalid):not(:focus-within):hover .base-field__box{border-color:var(--ui-field-readonly-border-hover);box-shadow:none}.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:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__box{border-color:var(--ui-field-input-invalid-border);box-shadow:none;background:var(--field-background, var(--ui-field-float-bg))}.base-field--readonly.base-field--invalid:not(.base-field--disabled):not(.base-field--invalid-themed) .base-field__box{border-color:var(--ui-field-input-invalid-border);box-shadow:none;background:var(--ui-field-readonly-bg)}.base-field--invalid.base-field--invalid-themed .base-field__box{border-color:var(--ui-field-input-invalid-border);box-shadow:none;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:grid;grid-auto-flow:column;grid-auto-columns:auto;column-gap:.125rem;align-content:center;justify-content:end;justify-items:center;flex-shrink:0;padding-right:.4rem;padding-left:.1rem;min-height:0;align-self:stretch}.base-field__ctx-dropdown{display:inline-flex;flex-shrink:0;align-items:center;max-width:100%}.base-field__ctx-trigger{display:inline-grid;place-items: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:inline-grid;place-items:center;width:2rem;height:2rem;min-width:2rem;min-height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;line-height:0;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{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;font-size:1.2rem;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:var(--field-float-label-rest-weight, var(--structra-body-weight));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:var(--field-label-weight, var(--structra-label-weight));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;font-weight:var(--field-helper-weight, var(--structra-body-weight));color:var(--ui-field-error-text-color);user-select:none;-webkit-user-select:none}@supports (-webkit-appearance: none){.base-field--invalid:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill,.base-field--invalid:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:hover,.base-field--invalid:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus,.base-field--invalid:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:active,.base-field--invalid:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--field-background, var(--ui-field-float-bg)) inset!important;box-shadow:0 0 0 1000px var(--field-background, var(--ui-field-float-bg)) inset!important;transition:background-color 50000s ease 0s!important}.base-field--invalid.base-field--invalid-themed:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill,.base-field--invalid.base-field--invalid-themed:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:hover,.base-field--invalid.base-field--invalid-themed:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus,.base-field--invalid.base-field--invalid-themed:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:active,.base-field--invalid.base-field--invalid-themed:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-invalid-input-bg, #fef2f2) inset!important;box-shadow:0 0 0 1000px var(--ui-field-invalid-input-bg, #fef2f2) inset!important;transition:background-color 50000s ease 0s!important}.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:hover,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:active,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-readonly-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-readonly-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-readonly-bg) inset!important;transition:background-color 50000s ease 0s!important}}.base-field--invalid:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill,.base-field--invalid:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill:hover,.base-field--invalid:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill:focus{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--field-background, var(--ui-field-float-bg)) inset!important;box-shadow:0 0 0 1000px var(--field-background, var(--ui-field-float-bg)) inset!important;background-color:var(--field-background, var(--ui-field-float-bg))!important;transition:background-color 50000s ease 0s!important}.base-field--invalid.base-field--invalid-themed:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill,.base-field--invalid.base-field--invalid-themed:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill:hover,.base-field--invalid.base-field--invalid-themed:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill:focus{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-invalid-input-bg, #fef2f2) inset!important;box-shadow:0 0 0 1000px var(--ui-field-invalid-input-bg, #fef2f2) inset!important;background-color:var(--ui-field-invalid-input-bg, #fef2f2)!important;transition:background-color 50000s ease 0s!important}.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):autofill,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):autofill:hover,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):autofill:focus{-webkit-text-fill-color:var(--ui-field-readonly-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-readonly-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-readonly-bg) inset!important;background-color:var(--ui-field-readonly-bg)!important;transition:background-color 50000s ease 0s!important}\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 }); }
1624
1699
  }
1625
1700
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BaseFieldComponent, decorators: [{
1626
1701
  type: Component,
1627
- 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);overflow:hidden;background:var(--field-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):not(:focus-within):hover .base-field__box{border-color:var(--ui-field-float-border-hover);box-shadow:none}.base-field--readonly:not(.base-field--disabled):not(.base-field--invalid):not(:focus-within):hover .base-field__box{border-color:var(--ui-field-readonly-border-hover);box-shadow:none}.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;flex-direction:row;align-items:center;justify-content:center;flex-shrink:0;gap:.125rem;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:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;min-width:2rem;min-height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;line-height:0;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{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;font-size:1.2rem;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:var(--field-float-label-rest-weight, var(--structra-body-weight));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:var(--field-label-weight, var(--structra-label-weight));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;font-weight:var(--field-helper-weight, var(--structra-body-weight));color:var(--ui-field-error-text-color);user-select:none;-webkit-user-select:none}@supports (-webkit-appearance: none){.base-field--invalid:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill,.base-field--invalid:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:hover,.base-field--invalid:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus,.base-field--invalid:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:active,.base-field--invalid:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-invalid-input-bg, #fef2f2) inset!important;box-shadow:0 0 0 1000px var(--ui-field-invalid-input-bg, #fef2f2) inset!important;transition:background-color 50000s ease 0s!important}.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:hover,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:active,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-readonly-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-readonly-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-readonly-bg) inset!important;transition:background-color 50000s ease 0s!important}}.base-field--invalid:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill,.base-field--invalid:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill:hover,.base-field--invalid:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill:focus{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-invalid-input-bg, #fef2f2) inset!important;box-shadow:0 0 0 1000px var(--ui-field-invalid-input-bg, #fef2f2) inset!important;background-color:var(--ui-field-invalid-input-bg, #fef2f2)!important;transition:background-color 50000s ease 0s!important}.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):autofill,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):autofill:hover,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):autofill:focus{-webkit-text-fill-color:var(--ui-field-readonly-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-readonly-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-readonly-bg) inset!important;background-color:var(--ui-field-readonly-bg)!important;transition:background-color 50000s ease 0s!important}\n"] }]
1702
+ args: [{ selector: 'app-base-field', imports: [SkeletonFieldShellComponent, DropdownMenuComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"base-field\" [class.base-field--invalid]=\"invalid\"\n [class.base-field--invalid-themed]=\"invalid && invalidThemed\" [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);overflow:hidden;background:var(--field-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):not(:focus-within):hover .base-field__box{border-color:var(--ui-field-float-border-hover);box-shadow:none}.base-field--readonly:not(.base-field--disabled):not(.base-field--invalid):not(:focus-within):hover .base-field__box{border-color:var(--ui-field-readonly-border-hover);box-shadow:none}.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:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__box{border-color:var(--ui-field-input-invalid-border);box-shadow:none;background:var(--field-background, var(--ui-field-float-bg))}.base-field--readonly.base-field--invalid:not(.base-field--disabled):not(.base-field--invalid-themed) .base-field__box{border-color:var(--ui-field-input-invalid-border);box-shadow:none;background:var(--ui-field-readonly-bg)}.base-field--invalid.base-field--invalid-themed .base-field__box{border-color:var(--ui-field-input-invalid-border);box-shadow:none;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:grid;grid-auto-flow:column;grid-auto-columns:auto;column-gap:.125rem;align-content:center;justify-content:end;justify-items:center;flex-shrink:0;padding-right:.4rem;padding-left:.1rem;min-height:0;align-self:stretch}.base-field__ctx-dropdown{display:inline-flex;flex-shrink:0;align-items:center;max-width:100%}.base-field__ctx-trigger{display:inline-grid;place-items: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:inline-grid;place-items:center;width:2rem;height:2rem;min-width:2rem;min-height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;line-height:0;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{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;font-size:1.2rem;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:var(--field-float-label-rest-weight, var(--structra-body-weight));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:var(--field-label-weight, var(--structra-label-weight));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;font-weight:var(--field-helper-weight, var(--structra-body-weight));color:var(--ui-field-error-text-color);user-select:none;-webkit-user-select:none}@supports (-webkit-appearance: none){.base-field--invalid:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill,.base-field--invalid:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:hover,.base-field--invalid:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus,.base-field--invalid:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:active,.base-field--invalid:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--field-background, var(--ui-field-float-bg)) inset!important;box-shadow:0 0 0 1000px var(--field-background, var(--ui-field-float-bg)) inset!important;transition:background-color 50000s ease 0s!important}.base-field--invalid.base-field--invalid-themed:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill,.base-field--invalid.base-field--invalid-themed:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:hover,.base-field--invalid.base-field--invalid-themed:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus,.base-field--invalid.base-field--invalid-themed:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:active,.base-field--invalid.base-field--invalid-themed:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-invalid-input-bg, #fef2f2) inset!important;box-shadow:0 0 0 1000px var(--ui-field-invalid-input-bg, #fef2f2) inset!important;transition:background-color 50000s ease 0s!important}.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:hover,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:active,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-readonly-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-readonly-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-readonly-bg) inset!important;transition:background-color 50000s ease 0s!important}}.base-field--invalid:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill,.base-field--invalid:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill:hover,.base-field--invalid:not(.base-field--invalid-themed):not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill:focus{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--field-background, var(--ui-field-float-bg)) inset!important;box-shadow:0 0 0 1000px var(--field-background, var(--ui-field-float-bg)) inset!important;background-color:var(--field-background, var(--ui-field-float-bg))!important;transition:background-color 50000s ease 0s!important}.base-field--invalid.base-field--invalid-themed:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill,.base-field--invalid.base-field--invalid-themed:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill:hover,.base-field--invalid.base-field--invalid-themed:not(.base-field--readonly) .base-field__control ::ng-deep :where(input,textarea):autofill:focus{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-invalid-input-bg, #fef2f2) inset!important;box-shadow:0 0 0 1000px var(--ui-field-invalid-input-bg, #fef2f2) inset!important;background-color:var(--ui-field-invalid-input-bg, #fef2f2)!important;transition:background-color 50000s ease 0s!important}.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):autofill,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):autofill:hover,.base-field--readonly:not(.base-field--disabled) .base-field__control ::ng-deep :where(input,textarea):autofill:focus{-webkit-text-fill-color:var(--ui-field-readonly-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-readonly-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-readonly-bg) inset!important;background-color:var(--ui-field-readonly-bg)!important;transition:background-color 50000s ease 0s!important}\n"] }]
1628
1703
  }], propDecorators: { label: [{
1629
1704
  type: Input
1630
1705
  }], errorMessage: [{
@@ -1635,6 +1710,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
1635
1710
  type: Input
1636
1711
  }], invalid: [{
1637
1712
  type: Input
1713
+ }], invalidThemed: [{
1714
+ type: Input,
1715
+ args: [{ transform: booleanAttribute }]
1638
1716
  }], filled: [{
1639
1717
  type: Input
1640
1718
  }], disabled: [{
@@ -1807,6 +1885,9 @@ class TextFieldComponent extends NgControlFieldDirective {
1807
1885
  refreshFilledUi() {
1808
1886
  this.filledUi = this.inputText.trim().length > 0;
1809
1887
  }
1888
+ ngAfterViewInit() {
1889
+ this.applyAutofocusIfNeeded(() => this.nativeInputRef?.nativeElement);
1890
+ }
1810
1891
  afterWriteValue(value) {
1811
1892
  const s = value ?? '';
1812
1893
  const clipped = this.maxLength > 0 ? s.slice(0, this.maxLength) : s;
@@ -1865,7 +1946,7 @@ class TextFieldComponent extends NgControlFieldDirective {
1865
1946
  useExisting: forwardRef(() => TextFieldComponent),
1866
1947
  multi: true,
1867
1948
  },
1868
- ], 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.text-field__input:-webkit-autofill:hover,.text-field__input:-webkit-autofill:focus,.text-field__input:-webkit-autofill:active,.text-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.text-field__input:autofill,.text-field__input:autofill:hover,.text-field__input:autofill:focus,.text-field__input:autofill:active,.text-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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 }); }
1949
+ ], viewQueries: [{ propertyName: "nativeInputRef", first: true, predicate: ["nativeInput"], descendants: true, read: ElementRef }], 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.text-field__input:-webkit-autofill:hover,.text-field__input:-webkit-autofill:focus,.text-field__input:-webkit-autofill:active,.text-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.text-field__input:autofill,.text-field__input:autofill:hover,.text-field__input:autofill:focus,.text-field__input:autofill:active,.text-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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", "invalidThemed", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1869
1950
  }
1870
1951
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TextFieldComponent, decorators: [{
1871
1952
  type: Component,
@@ -1875,8 +1956,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
1875
1956
  useExisting: forwardRef(() => TextFieldComponent),
1876
1957
  multi: true,
1877
1958
  },
1878
- ], 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.text-field__input:-webkit-autofill:hover,.text-field__input:-webkit-autofill:focus,.text-field__input:-webkit-autofill:active,.text-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.text-field__input:autofill,.text-field__input:autofill:hover,.text-field__input:autofill:focus,.text-field__input:autofill:active,.text-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.text-field__input--invalid:not(:disabled)::placeholder{color:transparent}.text-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"] }]
1879
- }], propDecorators: { maxLength: [{
1959
+ ], 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.text-field__input:-webkit-autofill:hover,.text-field__input:-webkit-autofill:focus,.text-field__input:-webkit-autofill:active,.text-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.text-field__input:autofill,.text-field__input:autofill:hover,.text-field__input:autofill:focus,.text-field__input:autofill:active,.text-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.text-field__input--invalid:not(:disabled)::placeholder{color:transparent}.text-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"] }]
1960
+ }], propDecorators: { nativeInputRef: [{
1961
+ type: ViewChild,
1962
+ args: ['nativeInput', { read: ElementRef }]
1963
+ }], maxLength: [{
1880
1964
  type: Input,
1881
1965
  args: [{ transform: numberAttribute }]
1882
1966
  }] } });
@@ -1910,6 +1994,9 @@ class PasswordFieldComponent extends NgControlFieldDirective {
1910
1994
  super.ngOnInit();
1911
1995
  this.refreshPasswordToggleUi();
1912
1996
  }
1997
+ ngAfterViewInit() {
1998
+ this.applyAutofocusIfNeeded(() => this.nativeInputRef?.nativeElement);
1999
+ }
1913
2000
  refreshFilledUi() {
1914
2001
  this.filledUi = this.inputText.length > 0;
1915
2002
  }
@@ -1988,7 +2075,7 @@ class PasswordFieldComponent extends NgControlFieldDirective {
1988
2075
  useExisting: forwardRef(() => PasswordFieldComponent),
1989
2076
  multi: true,
1990
2077
  },
1991
- ], 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 ? autoComplete : 'off'\" [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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.password-field__input:-webkit-autofill:hover,.password-field__input:-webkit-autofill:focus,.password-field__input:-webkit-autofill:active,.password-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.password-field__input:autofill,.password-field__input:autofill:hover,.password-field__input:autofill:focus,.password-field__input:autofill:active,.password-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;min-width:2rem;min-height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;line-height:0;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{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;font-size:1rem;line-height:1;vertical-align:0}.password-field__toggle i:before{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 }); }
2078
+ ], viewQueries: [{ propertyName: "nativeInputRef", first: true, predicate: ["nativeInput"], descendants: true, read: ElementRef }], 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput class=\"password-field__input\" [type]=\"inputTypeUi\" [id]=\"controlId\" [attr.name]=\"name || null\"\n [attr.placeholder]=\"''\" [attr.autocomplete]=\"autocomplete ? autoComplete : 'off'\" [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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.password-field__input:-webkit-autofill:hover,.password-field__input:-webkit-autofill:focus,.password-field__input:-webkit-autofill:active,.password-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.password-field__input:autofill,.password-field__input:autofill:hover,.password-field__input:autofill:focus,.password-field__input:autofill:active,.password-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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:inline-grid;place-items:center;width:2rem;height:2rem;min-width:2rem;min-height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;line-height:0;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{display:block;width:1.25rem;height:1.25rem;font-size:1rem;line-height:1;text-align:center}.password-field__toggle i:before{display:block;line-height:1.24rem}: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", "invalidThemed", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1992
2079
  }
1993
2080
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PasswordFieldComponent, decorators: [{
1994
2081
  type: Component,
@@ -1998,8 +2085,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
1998
2085
  useExisting: forwardRef(() => PasswordFieldComponent),
1999
2086
  multi: true,
2000
2087
  },
2001
- ], 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 ? autoComplete : 'off'\" [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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.password-field__input:-webkit-autofill:hover,.password-field__input:-webkit-autofill:focus,.password-field__input:-webkit-autofill:active,.password-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.password-field__input:autofill,.password-field__input:autofill:hover,.password-field__input:autofill:focus,.password-field__input:autofill:active,.password-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;min-width:2rem;min-height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;line-height:0;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{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;font-size:1rem;line-height:1;vertical-align:0}.password-field__toggle i:before{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"] }]
2002
- }], propDecorators: { showPrefixIcon: [{
2088
+ ], 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput class=\"password-field__input\" [type]=\"inputTypeUi\" [id]=\"controlId\" [attr.name]=\"name || null\"\n [attr.placeholder]=\"''\" [attr.autocomplete]=\"autocomplete ? autoComplete : 'off'\" [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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.password-field__input:-webkit-autofill:hover,.password-field__input:-webkit-autofill:focus,.password-field__input:-webkit-autofill:active,.password-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.password-field__input:autofill,.password-field__input:autofill:hover,.password-field__input:autofill:focus,.password-field__input:autofill:active,.password-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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:inline-grid;place-items:center;width:2rem;height:2rem;min-width:2rem;min-height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ui-field-float-prefix-color);cursor:pointer;line-height:0;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{display:block;width:1.25rem;height:1.25rem;font-size:1rem;line-height:1;text-align:center}.password-field__toggle i:before{display:block;line-height:1.24rem}: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"] }]
2089
+ }], propDecorators: { nativeInputRef: [{
2090
+ type: ViewChild,
2091
+ args: ['nativeInput', { read: ElementRef }]
2092
+ }], showPrefixIcon: [{
2003
2093
  type: Input,
2004
2094
  args: [{ transform: booleanAttribute }]
2005
2095
  }], prefixIcon: [{
@@ -2040,6 +2130,9 @@ class TextareaFieldComponent extends NgControlFieldDirective {
2040
2130
  super.ngOnInit();
2041
2131
  this.updateTextareaHeight();
2042
2132
  }
2133
+ ngAfterViewInit() {
2134
+ this.applyAutofocusIfNeeded(() => this.nativeInputRef?.nativeElement);
2135
+ }
2043
2136
  ngOnChanges(changes) {
2044
2137
  super.ngOnChanges(changes);
2045
2138
  if (changes['rows'] || changes['maxResizeRows']) {
@@ -2112,7 +2205,7 @@ class TextareaFieldComponent extends NgControlFieldDirective {
2112
2205
  useExisting: forwardRef(() => TextareaFieldComponent),
2113
2206
  multi: true,
2114
2207
  },
2115
- ], 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.textarea-field__input:-webkit-autofill:hover,.textarea-field__input:-webkit-autofill:focus,.textarea-field__input:-webkit-autofill:active,.textarea-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.textarea-field__input:autofill,.textarea-field__input:autofill:hover,.textarea-field__input:autofill:focus,.textarea-field__input:autofill:active,.textarea-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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 }); }
2208
+ ], viewQueries: [{ propertyName: "nativeInputRef", first: true, predicate: ["nativeInput"], 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\" skeletonVariant=\"textarea\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.textarea-field__input:-webkit-autofill:hover,.textarea-field__input:-webkit-autofill:focus,.textarea-field__input:-webkit-autofill:active,.textarea-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.textarea-field__input:autofill,.textarea-field__input:autofill:hover,.textarea-field__input:autofill:focus,.textarea-field__input:autofill:active,.textarea-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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", "invalidThemed", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2116
2209
  }
2117
2210
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TextareaFieldComponent, decorators: [{
2118
2211
  type: Component,
@@ -2122,8 +2215,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
2122
2215
  useExisting: forwardRef(() => TextareaFieldComponent),
2123
2216
  multi: true,
2124
2217
  },
2125
- ], 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.textarea-field__input:-webkit-autofill:hover,.textarea-field__input:-webkit-autofill:focus,.textarea-field__input:-webkit-autofill:active,.textarea-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.textarea-field__input:autofill,.textarea-field__input:autofill:hover,.textarea-field__input:autofill:focus,.textarea-field__input:autofill:active,.textarea-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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"] }]
2126
- }], propDecorators: { hostInvalidClass: [{
2218
+ ], template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\" skeletonVariant=\"textarea\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\"\n [invalid]=\"uiInvalid\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.textarea-field__input:-webkit-autofill:hover,.textarea-field__input:-webkit-autofill:focus,.textarea-field__input:-webkit-autofill:active,.textarea-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.textarea-field__input:autofill,.textarea-field__input:autofill:hover,.textarea-field__input:autofill:focus,.textarea-field__input:autofill:active,.textarea-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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"] }]
2219
+ }], propDecorators: { nativeInputRef: [{
2220
+ type: ViewChild,
2221
+ args: ['nativeInput', { read: ElementRef }]
2222
+ }], hostInvalidClass: [{
2127
2223
  type: HostBinding,
2128
2224
  args: ['class.textarea-field--invalid']
2129
2225
  }], maxLength: [{
@@ -2212,6 +2308,9 @@ class IntegerFieldComponent extends NgControlFieldDirective {
2212
2308
  this.inputText = '';
2213
2309
  this.filledUi = false;
2214
2310
  }
2311
+ ngAfterViewInit() {
2312
+ this.applyAutofocusIfNeeded(() => this.nativeInputRef?.nativeElement);
2313
+ }
2215
2314
  refreshFilledUi() {
2216
2315
  this.filledUi = this.inputText.length > 0;
2217
2316
  }
@@ -2324,7 +2423,7 @@ class IntegerFieldComponent extends NgControlFieldDirective {
2324
2423
  useExisting: forwardRef(() => IntegerFieldComponent),
2325
2424
  multi: true,
2326
2425
  },
2327
- ], 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]=\"''\" [attr.autocomplete]=\"autocompleteAttr\" [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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.integer-field__input:-webkit-autofill:hover,.integer-field__input:-webkit-autofill:focus,.integer-field__input:-webkit-autofill:active,.integer-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.integer-field__input:autofill,.integer-field__input:autofill:hover,.integer-field__input:autofill:focus,.integer-field__input:autofill:active,.integer-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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 }); }
2426
+ ], viewQueries: [{ propertyName: "nativeInputRef", first: true, predicate: ["nativeInput"], descendants: true, read: ElementRef }], 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput class=\"integer-field__input\" type=\"text\" inputmode=\"numeric\" [id]=\"controlId\"\n [attr.name]=\"name || null\" [attr.placeholder]=\"''\" [attr.autocomplete]=\"autocompleteAttr\" [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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.integer-field__input:-webkit-autofill:hover,.integer-field__input:-webkit-autofill:focus,.integer-field__input:-webkit-autofill:active,.integer-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.integer-field__input:autofill,.integer-field__input:autofill:hover,.integer-field__input:autofill:focus,.integer-field__input:autofill:active,.integer-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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", "invalidThemed", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2328
2427
  }
2329
2428
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IntegerFieldComponent, decorators: [{
2330
2429
  type: Component,
@@ -2334,8 +2433,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
2334
2433
  useExisting: forwardRef(() => IntegerFieldComponent),
2335
2434
  multi: true,
2336
2435
  },
2337
- ], 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]=\"''\" [attr.autocomplete]=\"autocompleteAttr\" [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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.integer-field__input:-webkit-autofill:hover,.integer-field__input:-webkit-autofill:focus,.integer-field__input:-webkit-autofill:active,.integer-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.integer-field__input:autofill,.integer-field__input:autofill:hover,.integer-field__input:autofill:focus,.integer-field__input:autofill:active,.integer-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.integer-field__input--invalid:not(:disabled)::placeholder{color:transparent}.integer-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"] }]
2338
- }], propDecorators: { max: [{
2436
+ ], 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput class=\"integer-field__input\" type=\"text\" inputmode=\"numeric\" [id]=\"controlId\"\n [attr.name]=\"name || null\" [attr.placeholder]=\"''\" [attr.autocomplete]=\"autocompleteAttr\" [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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.integer-field__input:-webkit-autofill:hover,.integer-field__input:-webkit-autofill:focus,.integer-field__input:-webkit-autofill:active,.integer-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.integer-field__input:autofill,.integer-field__input:autofill:hover,.integer-field__input:autofill:focus,.integer-field__input:autofill:active,.integer-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.integer-field__input--invalid:not(:disabled)::placeholder{color:transparent}.integer-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"] }]
2437
+ }], propDecorators: { nativeInputRef: [{
2438
+ type: ViewChild,
2439
+ args: ['nativeInput', { read: ElementRef }]
2440
+ }], max: [{
2339
2441
  type: Input,
2340
2442
  args: [{ transform: numberAttribute }]
2341
2443
  }] } });
@@ -2500,6 +2602,9 @@ class DecimalFieldComponent extends NgControlFieldDirective {
2500
2602
  this.inputText = '';
2501
2603
  this.filledUi = false;
2502
2604
  }
2605
+ ngAfterViewInit() {
2606
+ this.applyAutofocusIfNeeded(() => this.nativeInputRef?.nativeElement);
2607
+ }
2503
2608
  refreshFilledUi() {
2504
2609
  this.filledUi = this.inputText.trim().length > 0;
2505
2610
  }
@@ -2636,7 +2741,7 @@ class DecimalFieldComponent extends NgControlFieldDirective {
2636
2741
  useExisting: forwardRef(() => DecimalFieldComponent),
2637
2742
  multi: true,
2638
2743
  },
2639
- ], 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.decimal-field__input:-webkit-autofill:hover,.decimal-field__input:-webkit-autofill:focus,.decimal-field__input:-webkit-autofill:active,.decimal-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.decimal-field__input:autofill,.decimal-field__input:autofill:hover,.decimal-field__input:autofill:focus,.decimal-field__input:autofill:active,.decimal-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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 }); }
2744
+ ], viewQueries: [{ propertyName: "nativeInputRef", first: true, predicate: ["nativeInput"], descendants: true, read: ElementRef }], 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.decimal-field__input:-webkit-autofill:hover,.decimal-field__input:-webkit-autofill:focus,.decimal-field__input:-webkit-autofill:active,.decimal-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.decimal-field__input:autofill,.decimal-field__input:autofill:hover,.decimal-field__input:autofill:focus,.decimal-field__input:autofill:active,.decimal-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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", "invalidThemed", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2640
2745
  }
2641
2746
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DecimalFieldComponent, decorators: [{
2642
2747
  type: Component,
@@ -2646,8 +2751,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
2646
2751
  useExisting: forwardRef(() => DecimalFieldComponent),
2647
2752
  multi: true,
2648
2753
  },
2649
- ], 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.decimal-field__input:-webkit-autofill:hover,.decimal-field__input:-webkit-autofill:focus,.decimal-field__input:-webkit-autofill:active,.decimal-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.decimal-field__input:autofill,.decimal-field__input:autofill:hover,.decimal-field__input:autofill:focus,.decimal-field__input:autofill:active,.decimal-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.decimal-field__input--invalid:not(:disabled)::placeholder{color:transparent}.decimal-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"] }]
2650
- }], propDecorators: { max: [{
2754
+ ], 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.decimal-field__input:-webkit-autofill:hover,.decimal-field__input:-webkit-autofill:focus,.decimal-field__input:-webkit-autofill:active,.decimal-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.decimal-field__input:autofill,.decimal-field__input:autofill:hover,.decimal-field__input:autofill:focus,.decimal-field__input:autofill:active,.decimal-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.decimal-field__input--invalid:not(:disabled)::placeholder{color:transparent}.decimal-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"] }]
2755
+ }], propDecorators: { nativeInputRef: [{
2756
+ type: ViewChild,
2757
+ args: ['nativeInput', { read: ElementRef }]
2758
+ }], max: [{
2651
2759
  type: Input,
2652
2760
  args: [{ transform: numberAttribute }]
2653
2761
  }] } });
@@ -2815,6 +2923,9 @@ class DateFieldComponent extends NgControlFieldDirective {
2815
2923
  onBlur() {
2816
2924
  this.notifyTouched();
2817
2925
  }
2926
+ ngAfterViewInit() {
2927
+ this.applyAutofocusIfNeeded(() => this.nativeInputRef?.nativeElement);
2928
+ }
2818
2929
  onClear() {
2819
2930
  if (this.disabled || this.readonly) {
2820
2931
  return;
@@ -2839,7 +2950,7 @@ class DateFieldComponent extends NgControlFieldDirective {
2839
2950
  multi: true,
2840
2951
  },
2841
2952
  { provide: MAT_DATE_LOCALE, useValue: 'pt-BR' },
2842
- ], 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 }); }
2953
+ ], viewQueries: [{ propertyName: "nativeInputRef", first: true, predicate: ["nativeInput"], descendants: true, read: ElementRef }, { 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput 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", "invalidThemed", "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 }); }
2843
2954
  }
2844
2955
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DateFieldComponent, decorators: [{
2845
2956
  type: Component,
@@ -2856,8 +2967,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
2856
2967
  multi: true,
2857
2968
  },
2858
2969
  { provide: MAT_DATE_LOCALE, useValue: 'pt-BR' },
2859
- ], 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"] }]
2860
- }], propDecorators: { picker: [{
2970
+ ], 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput 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"] }]
2971
+ }], propDecorators: { nativeInputRef: [{
2972
+ type: ViewChild,
2973
+ args: ['nativeInput', { read: ElementRef }]
2974
+ }], picker: [{
2861
2975
  type: ViewChild,
2862
2976
  args: ['picker']
2863
2977
  }], showTimeHours: [{
@@ -2925,6 +3039,9 @@ class MaskedTextFieldBase extends NgControlFieldDirective {
2925
3039
  get pattern() {
2926
3040
  return this.maskPattern;
2927
3041
  }
3042
+ ngAfterViewInit() {
3043
+ this.applyAutofocusIfNeeded(() => this.nativeInputRef?.nativeElement);
3044
+ }
2928
3045
  /**
2929
3046
  * Padrão de formatação para o valor digitado (só dígitos).
2930
3047
  * Sobrescrever para máscara dinâmica (ex.: CPF até 11 dígitos, CNPJ depois).
@@ -3032,11 +3149,14 @@ class MaskedTextFieldBase extends NgControlFieldDirective {
3032
3149
  }
3033
3150
  }
3034
3151
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MaskedTextFieldBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
3035
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: MaskedTextFieldBase, isStandalone: true, inputs: { maskPattern: "maskPattern" }, usesInheritance: true, ngImport: i0 }); }
3152
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: MaskedTextFieldBase, isStandalone: true, inputs: { maskPattern: "maskPattern" }, viewQueries: [{ propertyName: "nativeInputRef", first: true, predicate: ["nativeInput"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0 }); }
3036
3153
  }
3037
3154
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MaskedTextFieldBase, decorators: [{
3038
3155
  type: Directive
3039
- }], propDecorators: { maskPattern: [{
3156
+ }], propDecorators: { nativeInputRef: [{
3157
+ type: ViewChild,
3158
+ args: ['nativeInput', { read: ElementRef }]
3159
+ }], maskPattern: [{
3040
3160
  type: Input
3041
3161
  }] } });
3042
3162
 
@@ -3069,7 +3189,7 @@ class InputMaskFieldComponent extends MaskedTextFieldBase {
3069
3189
  useExisting: forwardRef(() => InputMaskFieldComponent),
3070
3190
  multi: true,
3071
3191
  },
3072
- ], 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.input-mask-field__input:-webkit-autofill:hover,.input-mask-field__input:-webkit-autofill:focus,.input-mask-field__input:-webkit-autofill:active,.input-mask-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.input-mask-field__input:autofill,.input-mask-field__input:autofill:hover,.input-mask-field__input:autofill:focus,.input-mask-field__input:autofill:active,.input-mask-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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 }); }
3192
+ ], 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.input-mask-field__input:-webkit-autofill:hover,.input-mask-field__input:-webkit-autofill:focus,.input-mask-field__input:-webkit-autofill:active,.input-mask-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.input-mask-field__input:autofill,.input-mask-field__input:autofill:hover,.input-mask-field__input:autofill:focus,.input-mask-field__input:autofill:active,.input-mask-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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", "invalidThemed", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3073
3193
  }
3074
3194
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: InputMaskFieldComponent, decorators: [{
3075
3195
  type: Component,
@@ -3079,7 +3199,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
3079
3199
  useExisting: forwardRef(() => InputMaskFieldComponent),
3080
3200
  multi: true,
3081
3201
  },
3082
- ], 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.input-mask-field__input:-webkit-autofill:hover,.input-mask-field__input:-webkit-autofill:focus,.input-mask-field__input:-webkit-autofill:active,.input-mask-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.input-mask-field__input:autofill,.input-mask-field__input:autofill:hover,.input-mask-field__input:autofill:focus,.input-mask-field__input:autofill:active,.input-mask-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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"] }]
3202
+ ], 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.input-mask-field__input:-webkit-autofill:hover,.input-mask-field__input:-webkit-autofill:focus,.input-mask-field__input:-webkit-autofill:active,.input-mask-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.input-mask-field__input:autofill,.input-mask-field__input:autofill:hover,.input-mask-field__input:autofill:focus,.input-mask-field__input:autofill:active,.input-mask-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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"] }]
3083
3203
  }], propDecorators: { hostInvalidClass: [{
3084
3204
  type: HostBinding,
3085
3205
  args: ['class.input-mask-field--invalid']
@@ -3112,7 +3232,7 @@ class CepFieldComponent extends MaskedTextFieldBase {
3112
3232
  useExisting: forwardRef(() => CepFieldComponent),
3113
3233
  multi: true,
3114
3234
  },
3115
- ], 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.cep-field__input:-webkit-autofill:hover,.cep-field__input:-webkit-autofill:focus,.cep-field__input:-webkit-autofill:active,.cep-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.cep-field__input:autofill,.cep-field__input:autofill:hover,.cep-field__input:autofill:focus,.cep-field__input:autofill:active,.cep-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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 }); }
3235
+ ], 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.cep-field__input:-webkit-autofill:hover,.cep-field__input:-webkit-autofill:focus,.cep-field__input:-webkit-autofill:active,.cep-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.cep-field__input:autofill,.cep-field__input:autofill:hover,.cep-field__input:autofill:focus,.cep-field__input:autofill:active,.cep-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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", "invalidThemed", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3116
3236
  }
3117
3237
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CepFieldComponent, decorators: [{
3118
3238
  type: Component,
@@ -3122,7 +3242,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
3122
3242
  useExisting: forwardRef(() => CepFieldComponent),
3123
3243
  multi: true,
3124
3244
  },
3125
- ], 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.cep-field__input:-webkit-autofill:hover,.cep-field__input:-webkit-autofill:focus,.cep-field__input:-webkit-autofill:active,.cep-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.cep-field__input:autofill,.cep-field__input:autofill:hover,.cep-field__input:autofill:focus,.cep-field__input:autofill:active,.cep-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.cep-field__input--invalid:not(:disabled)::placeholder{color:transparent}.cep-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"] }]
3245
+ ], 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.cep-field__input:-webkit-autofill:hover,.cep-field__input:-webkit-autofill:focus,.cep-field__input:-webkit-autofill:active,.cep-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.cep-field__input:autofill,.cep-field__input:autofill:hover,.cep-field__input:autofill:focus,.cep-field__input:autofill:active,.cep-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.cep-field__input--invalid:not(:disabled)::placeholder{color:transparent}.cep-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"] }]
3126
3246
  }], propDecorators: { hostInvalidClass: [{
3127
3247
  type: HostBinding,
3128
3248
  args: ['class.cep-field--invalid']
@@ -3170,7 +3290,7 @@ class PhoneFieldComponent extends MaskedTextFieldBase {
3170
3290
  useExisting: forwardRef(() => PhoneFieldComponent),
3171
3291
  multi: true,
3172
3292
  },
3173
- ], 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.phone-field__input:-webkit-autofill:hover,.phone-field__input:-webkit-autofill:focus,.phone-field__input:-webkit-autofill:active,.phone-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.phone-field__input:autofill,.phone-field__input:autofill:hover,.phone-field__input:autofill:focus,.phone-field__input:autofill:active,.phone-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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 }); }
3293
+ ], 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.phone-field__input:-webkit-autofill:hover,.phone-field__input:-webkit-autofill:focus,.phone-field__input:-webkit-autofill:active,.phone-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.phone-field__input:autofill,.phone-field__input:autofill:hover,.phone-field__input:autofill:focus,.phone-field__input:autofill:active,.phone-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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", "invalidThemed", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3174
3294
  }
3175
3295
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: PhoneFieldComponent, decorators: [{
3176
3296
  type: Component,
@@ -3180,7 +3300,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
3180
3300
  useExisting: forwardRef(() => PhoneFieldComponent),
3181
3301
  multi: true,
3182
3302
  },
3183
- ], 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.phone-field__input:-webkit-autofill:hover,.phone-field__input:-webkit-autofill:focus,.phone-field__input:-webkit-autofill:active,.phone-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.phone-field__input:autofill,.phone-field__input:autofill:hover,.phone-field__input:autofill:focus,.phone-field__input:autofill:active,.phone-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.phone-field__input--invalid:not(:disabled)::placeholder{color:transparent}.phone-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"] }]
3303
+ ], 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.phone-field__input:-webkit-autofill:hover,.phone-field__input:-webkit-autofill:focus,.phone-field__input:-webkit-autofill:active,.phone-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.phone-field__input:autofill,.phone-field__input:autofill:hover,.phone-field__input:autofill:focus,.phone-field__input:autofill:active,.phone-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.phone-field__input--invalid:not(:disabled)::placeholder{color:transparent}.phone-field__input:disabled{opacity:var(--ui-field-input-disabled-opacity);cursor:not-allowed}\n"] }]
3184
3304
  }], propDecorators: { hostInvalidClass: [{
3185
3305
  type: HostBinding,
3186
3306
  args: ['class.phone-field--invalid']
@@ -3228,7 +3348,7 @@ class CpfCnpjFieldComponent extends MaskedTextFieldBase {
3228
3348
  useExisting: forwardRef(() => CpfCnpjFieldComponent),
3229
3349
  multi: true,
3230
3350
  },
3231
- ], 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.cpf-cnpj-field__input:-webkit-autofill:hover,.cpf-cnpj-field__input:-webkit-autofill:focus,.cpf-cnpj-field__input:-webkit-autofill:active,.cpf-cnpj-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.cpf-cnpj-field__input:autofill,.cpf-cnpj-field__input:autofill:hover,.cpf-cnpj-field__input:autofill:focus,.cpf-cnpj-field__input:autofill:active,.cpf-cnpj-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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 }); }
3351
+ ], 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.cpf-cnpj-field__input:-webkit-autofill:hover,.cpf-cnpj-field__input:-webkit-autofill:focus,.cpf-cnpj-field__input:-webkit-autofill:active,.cpf-cnpj-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.cpf-cnpj-field__input:autofill,.cpf-cnpj-field__input:autofill:hover,.cpf-cnpj-field__input:autofill:focus,.cpf-cnpj-field__input:autofill:active,.cpf-cnpj-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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", "invalidThemed", "filled", "disabled", "readonly", "inputId", "errorId", "showPrefixIcon", "prefixIcon", "clearable", "clearAriaLabel", "showSuffixSlot", "valueAlignEnd", "loading", "skeletonVariant", "mostrarMenuContexto", "contextMenuItems", "contextMenuId"], outputs: ["clear", "contextMenuSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3232
3352
  }
3233
3353
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CpfCnpjFieldComponent, decorators: [{
3234
3354
  type: Component,
@@ -3238,7 +3358,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
3238
3358
  useExisting: forwardRef(() => CpfCnpjFieldComponent),
3239
3359
  multi: true,
3240
3360
  },
3241
- ], 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.cpf-cnpj-field__input:-webkit-autofill:hover,.cpf-cnpj-field__input:-webkit-autofill:focus,.cpf-cnpj-field__input:-webkit-autofill:active,.cpf-cnpj-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.cpf-cnpj-field__input:autofill,.cpf-cnpj-field__input:autofill:hover,.cpf-cnpj-field__input:autofill:focus,.cpf-cnpj-field__input:autofill:active,.cpf-cnpj-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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"] }]
3361
+ ], 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\" [invalidThemed]=\"invalidThemed\" [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 #nativeInput 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: ["@charset \"UTF-8\";: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;font-weight:var(--field-value-weight, var(--structra-body-weight));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:-webkit-autofill,.cpf-cnpj-field__input:-webkit-autofill:hover,.cpf-cnpj-field__input:-webkit-autofill:focus,.cpf-cnpj-field__input:-webkit-autofill:active,.cpf-cnpj-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.cpf-cnpj-field__input:autofill,.cpf-cnpj-field__input:autofill:hover,.cpf-cnpj-field__input:autofill:focus,.cpf-cnpj-field__input:autofill:active,.cpf-cnpj-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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"] }]
3242
3362
  }], propDecorators: { hostInvalidClass: [{
3243
3363
  type: HostBinding,
3244
3364
  args: ['class.cpf-cnpj-field--invalid']
@@ -3504,6 +3624,9 @@ class CheckboxFieldComponent extends BooleanFieldDirective {
3504
3624
  get fullWidthClass() {
3505
3625
  return this.fullWidth;
3506
3626
  }
3627
+ ngAfterViewInit() {
3628
+ this.applyAutofocusIfNeeded(() => this.nativeInputRef?.nativeElement);
3629
+ }
3507
3630
  onCheckboxClick(ev) {
3508
3631
  if (this.readonly || this.loading) {
3509
3632
  ev.preventDefault();
@@ -3521,7 +3644,7 @@ class CheckboxFieldComponent extends BooleanFieldDirective {
3521
3644
  useExisting: forwardRef(() => CheckboxFieldComponent),
3522
3645
  multi: true,
3523
3646
  },
3524
- ], 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:auto;box-sizing:border-box}:host(.checkbox-field--full-width){width:100%}.checkbox-field__row{display:flex;align-items:center;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:0;flex-shrink:0;box-sizing:border-box;border:1px solid var(--ui-field-float-border);border-radius:4px;background-color:var(--field-background, 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-family:var(--structra-font-family);font-size:1rem;font-weight:var(--checkbox-label-weight, var(--structra-label-weight));line-height:1.35;color:#000;cursor:pointer;-webkit-user-select:none;user-select:none;padding-top:.1em}.checkbox-field__error{margin:.35rem 0 0 1.6rem;padding:0;font-size:.75rem;font-weight:var(--checkbox-helper-weight, var(--structra-body-weight));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:#000;cursor:default}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3647
+ ], viewQueries: [{ propertyName: "nativeInputRef", first: true, predicate: ["nativeInput"], descendants: true, read: ElementRef }], 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 #nativeInput\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:auto;box-sizing:border-box}:host(.checkbox-field--full-width){width:100%}.checkbox-field__row{display:flex;align-items:center;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:0;flex-shrink:0;box-sizing:border-box;border:1px solid var(--ui-field-float-border);border-radius:4px;background-color:var(--field-background, 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--invalid .checkbox-field__label{color:var(--ui-field-float-label-invalid-color)}.checkbox-field__label{font-family:var(--structra-font-family);font-size:1rem;font-weight:var(--checkbox-label-weight, var(--structra-label-weight));line-height:1.35;color:#000;cursor:pointer;-webkit-user-select:none;user-select:none;padding-top:.1em}.checkbox-field__error{margin:.35rem 0 0 1.6rem;padding:0;font-size:.75rem;font-weight:var(--checkbox-helper-weight, var(--structra-body-weight));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:#000;cursor:default}.checkbox-field--readonly.checkbox-field--invalid .checkbox-field__label{color:var(--ui-field-float-label-invalid-color)}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3525
3648
  }
3526
3649
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CheckboxFieldComponent, decorators: [{
3527
3650
  type: Component,
@@ -3531,8 +3654,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
3531
3654
  useExisting: forwardRef(() => CheckboxFieldComponent),
3532
3655
  multi: true,
3533
3656
  },
3534
- ], 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:auto;box-sizing:border-box}:host(.checkbox-field--full-width){width:100%}.checkbox-field__row{display:flex;align-items:center;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:0;flex-shrink:0;box-sizing:border-box;border:1px solid var(--ui-field-float-border);border-radius:4px;background-color:var(--field-background, 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-family:var(--structra-font-family);font-size:1rem;font-weight:var(--checkbox-label-weight, var(--structra-label-weight));line-height:1.35;color:#000;cursor:pointer;-webkit-user-select:none;user-select:none;padding-top:.1em}.checkbox-field__error{margin:.35rem 0 0 1.6rem;padding:0;font-size:.75rem;font-weight:var(--checkbox-helper-weight, var(--structra-body-weight));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:#000;cursor:default}\n"] }]
3535
- }], propDecorators: { fullWidth: [{
3657
+ ], 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 #nativeInput\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:auto;box-sizing:border-box}:host(.checkbox-field--full-width){width:100%}.checkbox-field__row{display:flex;align-items:center;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:0;flex-shrink:0;box-sizing:border-box;border:1px solid var(--ui-field-float-border);border-radius:4px;background-color:var(--field-background, 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--invalid .checkbox-field__label{color:var(--ui-field-float-label-invalid-color)}.checkbox-field__label{font-family:var(--structra-font-family);font-size:1rem;font-weight:var(--checkbox-label-weight, var(--structra-label-weight));line-height:1.35;color:#000;cursor:pointer;-webkit-user-select:none;user-select:none;padding-top:.1em}.checkbox-field__error{margin:.35rem 0 0 1.6rem;padding:0;font-size:.75rem;font-weight:var(--checkbox-helper-weight, var(--structra-body-weight));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:#000;cursor:default}.checkbox-field--readonly.checkbox-field--invalid .checkbox-field__label{color:var(--ui-field-float-label-invalid-color)}\n"] }]
3658
+ }], propDecorators: { nativeInputRef: [{
3659
+ type: ViewChild,
3660
+ args: ['nativeInput', { read: ElementRef }]
3661
+ }], fullWidth: [{
3536
3662
  type: Input,
3537
3663
  args: [{ transform: booleanAttribute }]
3538
3664
  }], fullWidthClass: [{
@@ -3544,6 +3670,9 @@ class SwitchFieldComponent extends BooleanFieldDirective {
3544
3670
  get labelId() {
3545
3671
  return `${this.controlId}-switch-label`;
3546
3672
  }
3673
+ ngAfterViewInit() {
3674
+ this.applyAutofocusIfNeeded(() => this.nativeInputRef?.nativeElement);
3675
+ }
3547
3676
  toggle() {
3548
3677
  if (this.disabled || this.readonly || this.loading) {
3549
3678
  return;
@@ -3557,7 +3686,7 @@ class SwitchFieldComponent extends BooleanFieldDirective {
3557
3686
  useExisting: forwardRef(() => SwitchFieldComponent),
3558
3687
  multi: true,
3559
3688
  },
3560
- ], 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: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.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(--field-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-family:var(--structra-font-family);font-size:1rem;font-weight:var(--switch-label-weight, var(--structra-label-weight));line-height:1.35;color:#000;-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;font-weight:var(--switch-helper-weight, var(--structra-body-weight));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:#000}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3689
+ ], viewQueries: [{ propertyName: "nativeInputRef", first: true, predicate: ["nativeInput"], descendants: true, read: ElementRef }], 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 #nativeInput\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: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.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(--field-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-family:var(--structra-font-family);font-size:1rem;font-weight:var(--switch-label-weight, var(--structra-label-weight));line-height:1.35;color:#000;-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;font-weight:var(--switch-helper-weight, var(--structra-body-weight));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:#000}\n"], dependencies: [{ kind: "component", type: SkeletonBlockComponent, selector: "app-skeleton-block", inputs: ["width", "height", "radius", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3561
3690
  }
3562
3691
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SwitchFieldComponent, decorators: [{
3563
3692
  type: Component,
@@ -3567,8 +3696,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
3567
3696
  useExisting: forwardRef(() => SwitchFieldComponent),
3568
3697
  multi: true,
3569
3698
  },
3570
- ], 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: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.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(--field-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-family:var(--structra-font-family);font-size:1rem;font-weight:var(--switch-label-weight, var(--structra-label-weight));line-height:1.35;color:#000;-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;font-weight:var(--switch-helper-weight, var(--structra-body-weight));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:#000}\n"] }]
3571
- }] });
3699
+ ], 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 #nativeInput\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: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.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(--field-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-family:var(--structra-font-family);font-size:1rem;font-weight:var(--switch-label-weight, var(--structra-label-weight));line-height:1.35;color:#000;-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;font-weight:var(--switch-helper-weight, var(--structra-body-weight));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:#000}\n"] }]
3700
+ }], propDecorators: { nativeInputRef: [{
3701
+ type: ViewChild,
3702
+ args: ['nativeInput', { read: ElementRef }]
3703
+ }] } });
3572
3704
 
3573
3705
  /**
3574
3706
  * Lógica comum de select / combobox: opções, índice ativo, comparação e
@@ -3917,6 +4049,9 @@ class SelectFieldComponent extends DropdownOptionFieldBase {
3917
4049
  set pageableInput(value) {
3918
4050
  this.pagination = value;
3919
4051
  }
4052
+ ngAfterViewInit() {
4053
+ this.applyAutofocusIfNeeded(() => this.nativeInputRef?.nativeElement);
4054
+ }
3920
4055
  afterWriteValue(value) {
3921
4056
  this.syncActiveIndexFromValue(value);
3922
4057
  this.cdr.markForCheck();
@@ -4208,7 +4343,7 @@ class SelectFieldComponent extends DropdownOptionFieldBase {
4208
4343
  useExisting: forwardRef(() => SelectFieldComponent),
4209
4344
  multi: true,
4210
4345
  },
4211
- ], 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 }); }
4346
+ ], viewQueries: [{ propertyName: "optionsPanelTpl", first: true, predicate: ["optionsPanelTpl"], descendants: true, static: true }, { propertyName: "dropdownTriggerRootRef", first: true, predicate: ["dropdownFieldTriggerRoot"], descendants: true, read: ElementRef }, { propertyName: "nativeInputRef", first: true, predicate: ["nativeInput"], 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\" [invalidThemed]=\"invalidThemed\"\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 #nativeInput\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", "invalidThemed", "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 }); }
4212
4347
  }
4213
4348
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SelectFieldComponent, decorators: [{
4214
4349
  type: Component,
@@ -4218,7 +4353,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
4218
4353
  useExisting: forwardRef(() => SelectFieldComponent),
4219
4354
  multi: true,
4220
4355
  },
4221
- ], 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"] }]
4356
+ ], template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\" [invalid]=\"uiInvalid\" [invalidThemed]=\"invalidThemed\"\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 #nativeInput\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"] }]
4222
4357
  }], propDecorators: { hostInvalidClass: [{
4223
4358
  type: HostBinding,
4224
4359
  args: ['class.select-field--invalid']
@@ -4243,6 +4378,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
4243
4378
  }], dropdownTriggerRootRef: [{
4244
4379
  type: ViewChild,
4245
4380
  args: ['dropdownFieldTriggerRoot', { read: ElementRef }]
4381
+ }], nativeInputRef: [{
4382
+ type: ViewChild,
4383
+ args: ['nativeInput', { read: ElementRef }]
4246
4384
  }], onDropdownHostEscape: [{
4247
4385
  type: HostListener,
4248
4386
  args: ['keydown', ['$event']]
@@ -4269,6 +4407,9 @@ class MultiselectFieldComponent extends DropdownMultiOptionFieldBase {
4269
4407
  set pageableInput(value) {
4270
4408
  this.pagination = value;
4271
4409
  }
4410
+ ngAfterViewInit() {
4411
+ this.applyAutofocusIfNeeded(() => this.nativeInputRef?.nativeElement);
4412
+ }
4272
4413
  writeValue(value) {
4273
4414
  // Normaliza: FormControl pode enviar null; valor interno é sempre array.
4274
4415
  const normalized = value == null ? [] : Array.isArray(value) ? [...value] : [];
@@ -4579,7 +4720,7 @@ class MultiselectFieldComponent extends DropdownMultiOptionFieldBase {
4579
4720
  useExisting: forwardRef(() => MultiselectFieldComponent),
4580
4721
  multi: true,
4581
4722
  },
4582
- ], 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: ["@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)}.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 }); }
4723
+ ], viewQueries: [{ propertyName: "optionsPanelTpl", first: true, predicate: ["optionsPanelTpl"], descendants: true, static: true }, { propertyName: "dropdownTriggerRootRef", first: true, predicate: ["dropdownFieldTriggerRoot"], descendants: true, read: ElementRef }, { propertyName: "nativeInputRef", first: true, predicate: ["nativeInput"], 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\" [invalidThemed]=\"invalidThemed\"\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 #nativeInput\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: ["@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)}.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", "invalidThemed", "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 }); }
4583
4724
  }
4584
4725
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MultiselectFieldComponent, decorators: [{
4585
4726
  type: Component,
@@ -4589,7 +4730,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
4589
4730
  useExisting: forwardRef(() => MultiselectFieldComponent),
4590
4731
  multi: true,
4591
4732
  },
4592
- ], 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: ["@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)}.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"] }]
4733
+ ], template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\" [invalid]=\"uiInvalid\" [invalidThemed]=\"invalidThemed\"\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 #nativeInput\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: ["@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)}.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"] }]
4593
4734
  }], propDecorators: { hostInvalidClass: [{
4594
4735
  type: HostBinding,
4595
4736
  args: ['class.multiselect-field--invalid']
@@ -4614,6 +4755,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
4614
4755
  }], dropdownTriggerRootRef: [{
4615
4756
  type: ViewChild,
4616
4757
  args: ['dropdownFieldTriggerRoot', { read: ElementRef }]
4758
+ }], nativeInputRef: [{
4759
+ type: ViewChild,
4760
+ args: ['nativeInput', { read: ElementRef }]
4617
4761
  }], onDropdownHostEscape: [{
4618
4762
  type: HostListener,
4619
4763
  args: ['keydown', ['$event']]
@@ -4647,6 +4791,9 @@ class DropdownSearchFieldComponent extends DropdownOptionFieldBase {
4647
4791
  get hostInvalidClass() {
4648
4792
  return this.uiInvalid;
4649
4793
  }
4794
+ ngAfterViewInit() {
4795
+ this.applyAutofocusIfNeeded(() => this.nativeInputRef?.nativeElement);
4796
+ }
4650
4797
  afterWriteValue(value) {
4651
4798
  this.searchQuery =
4652
4799
  value == null ? '' : (this.findOptionByValue(value)?.label ?? '');
@@ -5094,7 +5241,7 @@ class DropdownSearchFieldComponent extends DropdownOptionFieldBase {
5094
5241
  useExisting: forwardRef(() => DropdownSearchFieldComponent),
5095
5242
  multi: true,
5096
5243
  },
5097
- ], 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:-webkit-autofill,.dropdown-search-field__input:-webkit-autofill:hover,.dropdown-search-field__input:-webkit-autofill:focus,.dropdown-search-field__input:-webkit-autofill:active,.dropdown-search-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.dropdown-search-field__input:autofill,.dropdown-search-field__input:autofill:hover,.dropdown-search-field__input:autofill:focus,.dropdown-search-field__input:autofill:active,.dropdown-search-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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 }); }
5244
+ ], viewQueries: [{ propertyName: "optionsPanelTpl", first: true, predicate: ["optionsPanelTpl"], descendants: true, static: true }, { propertyName: "dropdownTriggerRootRef", first: true, predicate: ["dropdownFieldTriggerRoot"], descendants: true, read: ElementRef }, { propertyName: "nativeInputRef", first: true, predicate: ["nativeInput"], 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\" [invalidThemed]=\"invalidThemed\"\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 #nativeInput 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:-webkit-autofill,.dropdown-search-field__input:-webkit-autofill:hover,.dropdown-search-field__input:-webkit-autofill:focus,.dropdown-search-field__input:-webkit-autofill:active,.dropdown-search-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.dropdown-search-field__input:autofill,.dropdown-search-field__input:autofill:hover,.dropdown-search-field__input:autofill:focus,.dropdown-search-field__input:autofill:active,.dropdown-search-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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", "invalidThemed", "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 }); }
5098
5245
  }
5099
5246
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DropdownSearchFieldComponent, decorators: [{
5100
5247
  type: Component,
@@ -5104,7 +5251,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
5104
5251
  useExisting: forwardRef(() => DropdownSearchFieldComponent),
5105
5252
  multi: true,
5106
5253
  },
5107
- ], 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:-webkit-autofill,.dropdown-search-field__input:-webkit-autofill:hover,.dropdown-search-field__input:-webkit-autofill:focus,.dropdown-search-field__input:-webkit-autofill:active,.dropdown-search-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.dropdown-search-field__input:autofill,.dropdown-search-field__input:autofill:hover,.dropdown-search-field__input:autofill:focus,.dropdown-search-field__input:autofill:active,.dropdown-search-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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"] }]
5254
+ ], template: "<app-base-field [label]=\"floatLabelCaption\" [filled]=\"filledUi\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n [loading]=\"loading\"\n [errorMessage]=\"uiErrorMessage\" [required]=\"uiRequiredEffective\" [showRequiredMark]=\"showRequiredMark\" [invalid]=\"uiInvalid\" [invalidThemed]=\"invalidThemed\"\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 #nativeInput 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:-webkit-autofill,.dropdown-search-field__input:-webkit-autofill:hover,.dropdown-search-field__input:-webkit-autofill:focus,.dropdown-search-field__input:-webkit-autofill:active,.dropdown-search-field__input:-webkit-autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;transition:background-color 50000s ease 0s!important}.dropdown-search-field__input:autofill,.dropdown-search-field__input:autofill:hover,.dropdown-search-field__input:autofill:focus,.dropdown-search-field__input:autofill:active,.dropdown-search-field__input:autofill:focus-visible{-webkit-text-fill-color:var(--ui-field-float-input-text)!important;caret-color:var(--ui-field-float-input-text)!important;-webkit-box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;box-shadow:0 0 0 1000px var(--ui-field-float-bg) inset!important;background-color:var(--ui-field-float-bg)!important;transition:background-color 50000s ease 0s!important}.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"] }]
5108
5255
  }], propDecorators: { hostInvalidClass: [{
5109
5256
  type: HostBinding,
5110
5257
  args: ['class.dropdown-search-field--invalid']
@@ -5126,6 +5273,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
5126
5273
  }], dropdownTriggerRootRef: [{
5127
5274
  type: ViewChild,
5128
5275
  args: ['dropdownFieldTriggerRoot', { read: ElementRef }]
5276
+ }], nativeInputRef: [{
5277
+ type: ViewChild,
5278
+ args: ['nativeInput', { read: ElementRef }]
5129
5279
  }], onDropdownHostEscape: [{
5130
5280
  type: HostListener,
5131
5281
  args: ['keydown', ['$event']]
@@ -5923,6 +6073,10 @@ class FileUploadFieldComponent {
5923
6073
  */
5924
6074
  this.maxFiles = 0;
5925
6075
  this.disabled = false;
6076
+ /** Skeleton na zona de drop (sem interação até voltar a `false`). */
6077
+ this.loading = false;
6078
+ /** Foca o `<input type="file">` nativo quando a zona está visível (não em `loading`). */
6079
+ this.autofocus = false;
5926
6080
  this.multiple = false;
5927
6081
  this.value = null;
5928
6082
  /**
@@ -5952,6 +6106,18 @@ class FileUploadFieldComponent {
5952
6106
  const manual = this.id.trim();
5953
6107
  return manual.length > 0 ? manual : this.autoId;
5954
6108
  }
6109
+ get loadingAriaLabel() {
6110
+ const t = (this.label ?? '').trim();
6111
+ return t.length > 0 ? `A carregar ${t}` : 'A carregar área de arquivos';
6112
+ }
6113
+ ngAfterViewInit() {
6114
+ if (!this.autofocus || this.disabled || this.loading) {
6115
+ return;
6116
+ }
6117
+ queueMicrotask(() => {
6118
+ this.fileInputRef?.nativeElement?.focus({ preventScroll: false });
6119
+ });
6120
+ }
5955
6121
  get hostDataControlId() {
5956
6122
  return this.fieldId;
5957
6123
  }
@@ -6076,7 +6242,7 @@ class FileUploadFieldComponent {
6076
6242
  }
6077
6243
  }
6078
6244
  openSelector(ev) {
6079
- if (this.disabled) {
6245
+ if (this.disabled || this.loading) {
6080
6246
  return;
6081
6247
  }
6082
6248
  ev?.stopPropagation();
@@ -6091,7 +6257,7 @@ class FileUploadFieldComponent {
6091
6257
  this.cdr.markForCheck();
6092
6258
  }
6093
6259
  onZoneKeydown(ev) {
6094
- if (this.disabled) {
6260
+ if (this.disabled || this.loading) {
6095
6261
  return;
6096
6262
  }
6097
6263
  if (ev.key === 'Enter' || ev.key === ' ') {
@@ -6100,7 +6266,7 @@ class FileUploadFieldComponent {
6100
6266
  }
6101
6267
  }
6102
6268
  onDragOver(ev) {
6103
- if (this.disabled) {
6269
+ if (this.disabled || this.loading) {
6104
6270
  return;
6105
6271
  }
6106
6272
  ev.preventDefault();
@@ -6114,7 +6280,7 @@ class FileUploadFieldComponent {
6114
6280
  this.cdr.markForCheck();
6115
6281
  }
6116
6282
  onDrop(ev) {
6117
- if (this.disabled) {
6283
+ if (this.disabled || this.loading) {
6118
6284
  return;
6119
6285
  }
6120
6286
  ev.preventDefault();
@@ -6316,11 +6482,11 @@ class FileUploadFieldComponent {
6316
6482
  this.filePreviewObjectUrls.clear();
6317
6483
  }
6318
6484
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FileUploadFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6319
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: FileUploadFieldComponent, isStandalone: true, selector: "app-file-upload-field", inputs: { label: "label", id: "id", hint: "hint", accept: "accept", acceptLabel: "acceptLabel", maxSizeMb: ["maxSizeMb", "maxSizeMb", numberAttribute], maxFiles: ["maxFiles", "maxFiles", numberAttribute], disabled: ["disabled", "disabled", booleanAttribute], multiple: ["multiple", "multiple", booleanAttribute], value: "value", fileItemRowClickable: ["fileItemRowClickable", "fileItemRowClickable", booleanAttribute], showFileDownload: "showFileDownload" }, outputs: { valueChange: "valueChange", fileRejected: "fileRejected", fileItemClick: "fileItemClick" }, host: { properties: { "attr.data-control-id": "this.hostDataControlId" } }, viewQueries: [{ propertyName: "fileInputRef", first: true, predicate: ["fileInput"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"file-upload-field\"\r\n [class.file-upload-field--disabled]=\"disabled\"\r\n [class.file-upload-field--error]=\"errorMessage\"\r\n>\r\n @if (label && label.length > 0) {\r\n <label class=\"file-upload-field__label\" [attr.for]=\"fieldId\">\r\n {{ label }}\r\n </label>\r\n }\r\n <div\r\n class=\"file-upload-field__zone\"\r\n (click)=\"openSelector($event)\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n (mouseenter)=\"onZoneEnter()\"\r\n (mouseleave)=\"onZoneLeave()\"\r\n [class.file-upload-field__zone--dragging]=\"isDragging\"\r\n [class.file-upload-field__zone--hover]=\"hasHover && !disabled\"\r\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\r\n role=\"button\"\r\n [attr.tabindex]=\"disabled ? -1 : 0\"\r\n (keydown)=\"onZoneKeydown($event)\"\r\n >\r\n <input\r\n #fileInput\r\n [id]=\"fieldId\"\r\n type=\"file\"\r\n class=\"file-upload-field__native\"\r\n [attr.accept]=\"accept && accept.length ? accept : null\"\r\n [multiple]=\"multiple\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onNativeChange($event)\"\r\n />\r\n <div class=\"file-upload-field__zone-inner\">\r\n <i class=\"fa-solid fa-cloud-arrow-up file-upload-field__icon\" aria-hidden=\"true\"></i>\r\n <span class=\"file-upload-field__hint-main\">\r\n Arraste arquivos ou\r\n <span class=\"file-upload-field__hint-cta\">clique para procurar</span>\r\n </span>\r\n @if (acceptDisplayText) {\r\n <span class=\"file-upload-field__hint-accept\">{{ acceptDisplayText }}</span>\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (hint && hint.length > 0) {\r\n <p class=\"file-upload-field__hint\" [id]=\"fieldId + '-hint'\">{{ hint }}</p>\r\n }\r\n\r\n @if (errorMessage) {\r\n <p class=\"file-upload-field__error\" role=\"alert\" [id]=\"fieldId + '-err'\">\r\n {{ errorMessage }}\r\n </p>\r\n }\r\n\r\n @if (hasValue) {\r\n <ul class=\"file-upload-field__list\" [attr.aria-label]=\"'Arquivos selecionados'\">\r\n @for (row of filesList; track row.file) {\r\n <li\r\n class=\"file-upload-field__item\"\r\n [class.file-upload-field__item--with-image]=\"imageListPreviewUrl(row.file)\"\r\n [class.file-upload-field__item--selectable]=\"fileItemClickActive\"\r\n (click)=\"onFileItemRowClick($event, row.file)\"\r\n >\r\n @if (imageListPreviewUrl(row.file); as thumbSrc) {\r\n <div class=\"file-upload-field__thumb\" aria-hidden=\"true\">\r\n <img\r\n class=\"file-upload-field__thumb-img\"\r\n [src]=\"thumbSrc\"\r\n [alt]=\"'Pr\u00E9-visualiza\u00E7\u00E3o: ' + row.name\"\r\n loading=\"lazy\"\r\n decoding=\"async\"\r\n />\r\n </div>\r\n }\r\n <div class=\"file-upload-field__item-meta\">\r\n <span class=\"file-upload-field__name\">{{ row.name }}</span>\r\n <span class=\"file-upload-field__size\">{{ row.sizeLabel }}</span>\r\n <span class=\"file-upload-field__type\">{{ row.typeLabel }}</span>\r\n </div>\r\n <div class=\"file-upload-field__item-actions\">\r\n @if (showFileDownload) {\r\n <button\r\n type=\"button\"\r\n class=\"file-upload-field__download\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"'Download ' + row.name\"\r\n (click)=\"onDownloadFile(row.file, $event)\"\r\n >\r\n <i class=\"fa-solid fa-download\" aria-hidden=\"true\"></i>\r\n <span class=\"file-upload-field__download-text\">Download</span>\r\n </button>\r\n }\r\n <button\r\n type=\"button\"\r\n class=\"file-upload-field__remove\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"'Remover ' + row.name\"\r\n (click)=\"onRemoveFile($index, $event)\"\r\n >\r\n <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\r\n <span class=\"file-upload-field__remove-text\">Remover</span>\r\n </button>\r\n </div>\r\n </li>\r\n }\r\n </ul>\r\n @if (showClearAllButton) {\r\n <button\r\n type=\"button\"\r\n class=\"file-upload-field__clear\"\r\n [disabled]=\"disabled\"\r\n (click)=\"clearAll($event)\"\r\n >\r\n Limpar tudo\r\n </button>\r\n }\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box;user-select:none;-webkit-user-select:none}.file-upload-field{display:flex;flex-direction:column;gap:.35rem;min-width:0;width:100%}.file-upload-field__label{display:block;font-size:.82rem;font-weight:500;color:var(--ui-text-secondary, #404040)}.file-upload-field--disabled .file-upload-field__label,.file-upload-field--disabled .file-upload-field__hint,.file-upload-field--disabled .file-upload-field__hint-main{opacity:var(--ui-field-input-disabled-opacity, .6)}.file-upload-field__zone{position:relative;display:flex;flex-direction:column;align-items:stretch;min-height:4.5rem;border:1px solid var(--ui-field-float-border, #d1d1d1);border-radius:var(--ui-field-float-border-radius, 8px);background:var(--field-background, var(--ui-field-float-bg, #ffffff));cursor:pointer;user-select:none;-webkit-user-select:none;transition:border-color .1s ease,box-shadow .1s ease,background .1s ease}.file-upload-field__zone:focus{outline:none}.file-upload-field--disabled .file-upload-field__zone,.file-upload-field--disabled .file-upload-field__zone[role=button]{cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity, .6);pointer-events:none}.file-upload-field--error .file-upload-field__zone{border-color:var(--ui-field-input-invalid-border, #b91c1c);background:var(--ui-field-invalid-input-bg, #fef2f2)}.file-upload-field--error .file-upload-field__zone--hover,.file-upload-field--error .file-upload-field__zone--dragging{border-color:var(--ui-field-input-invalid-border, #b91c1c);box-shadow:0 0 0 2px var(--ui-field-input-invalid-focus-halo, rgba(185, 28, 28, .2))}.file-upload-field:not(.file-upload-field--error) .file-upload-field__zone--hover{border-color:var(--ui-field-float-border-hover);box-shadow:none}.file-upload-field__zone--dragging{border-style:dashed;border-width:2px;border-color:var(--ui-field-float-border-focus, #2563eb);background:var(--ui-field-readonly-bg, #f4f4f5);box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(37, 99, 235, .2))}.file-upload-field:not(.file-upload-field--disabled) .file-upload-field__zone:focus-visible{border-color:var(--ui-field-float-border-focus, #2563eb);box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(37, 99, 235, .25))}.file-upload-field__zone-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;text-align:center;padding:1.1rem .9rem;min-height:3.4rem}.file-upload-field__icon{font-size:1.35rem;color:var(--ui-field-float-prefix-color, #6b6b6b);opacity:.9}.file-upload-field__zone--dragging .file-upload-field__icon{color:var(--ui-field-float-border-focus, #2563eb)}.file-upload-field__hint-main{font-size:.8rem;line-height:1.4;color:var(--ui-text-secondary, #525252);max-width:18rem}.file-upload-field__hint-cta{color:var(--ui-field-float-border-focus, #2563eb);font-weight:500;text-decoration:underline;text-underline-offset:2px}.file-upload-field__hint-accept{display:block;font-size:.72rem;color:var(--ui-text-muted, #737373);max-width:20rem;word-break:break-word}.file-upload-field__native{position:absolute;width:.1px;height:.1px;opacity:0;overflow:hidden;z-index:-1;pointer-events:none}.file-upload-field__hint{font-size:.75rem;line-height:1.4;margin:.15rem 0 0;color:var(--ui-text-secondary, #525252)}.file-upload-field__error{font-size:.75rem;line-height:1.4;margin:.1rem 0 0;color:#b91c1c}.file-upload-field__list{list-style:none;margin:.2rem 0 0;padding:0;display:flex;flex-direction:column;gap:.4rem}.file-upload-field__item{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.5rem .75rem;padding:.55rem .65rem;border:1px solid var(--ui-field-float-border, #e5e5e5);border-radius:6px;background:var(--ui-page-bg, #fafafa);font-size:.78rem;line-height:1.35}.file-upload-field__item--selectable{cursor:pointer}.file-upload-field__thumb{flex-shrink:0;width:4.5rem;height:4.5rem;border-radius:6px;overflow:hidden;background:#e5e5e5;border:1px solid var(--ui-field-float-border, #e5e5e5)}.file-upload-field__thumb-img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}.file-upload-field__item-meta{display:flex;flex-direction:column;gap:.1rem;min-width:0;flex:1 1 8rem}.file-upload-field__name{font-weight:500;color:#171717;word-break:break-word}.file-upload-field__size{color:#737373;font-size:.76rem}.file-upload-field__type{color:#8b8b8b;font-size:.72rem;font-family:ui-monospace,Consolas,monospace}.file-upload-field__item-actions{display:inline-flex;flex-wrap:wrap;align-items:flex-start;align-content:flex-start;justify-content:flex-end;gap:.2rem .35rem;flex-shrink:0;min-height:0}.file-upload-field__download{display:inline-grid;grid-template-columns:1em minmax(0,max-content);column-gap:.35rem;place-items:center;border:0;background:transparent;color:var(--app-color-primary, #2563eb);padding:.15rem .35rem;border-radius:4px;cursor:pointer;font:inherit;font-size:.75rem;font-weight:500;line-height:1.15;flex-shrink:0;transition:background .1s ease,color .1s ease}.file-upload-field__download:hover:not(:disabled){background:color-mix(in srgb,var(--app-color-primary, #2563eb) 10%,transparent)}.file-upload-field__download:disabled{opacity:.45;cursor:not-allowed}.file-upload-field__remove{display:inline-grid;grid-template-columns:1em minmax(0,max-content);column-gap:.35rem;place-items:center;border:0;background:transparent;color:#b91c1c;padding:.15rem .35rem;border-radius:4px;cursor:pointer;font:inherit;font-size:.75rem;font-weight:500;line-height:1.15;flex-shrink:0;transition:background .1s ease}.file-upload-field__remove:hover:not(:disabled){background:#fef2f2}.file-upload-field__remove:disabled{opacity:.45;cursor:not-allowed}.file-upload-field__remove i,.file-upload-field__download i{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:1em;height:1em;line-height:0;font-size:1em;align-self:center;justify-self:center}.file-upload-field__remove-text,.file-upload-field__download-text{position:relative;width:auto;min-width:0;height:auto;clip:auto;line-height:1.15;transform:translateY(.08em)}.file-upload-field__clear{align-self:flex-start;margin-top:.1rem;font-size:.75rem;color:#525252;background:transparent;border:0;text-decoration:underline;text-underline-offset:2px;padding:.15rem .1rem .15rem 0;cursor:pointer;transition:color .1s ease}.file-upload-field__clear:hover:not(:disabled){color:#171717;background:transparent}.file-upload-field__clear:disabled{opacity:.45;cursor:not-allowed}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6485
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: FileUploadFieldComponent, isStandalone: true, selector: "app-file-upload-field", inputs: { label: "label", id: "id", hint: "hint", accept: "accept", acceptLabel: "acceptLabel", maxSizeMb: ["maxSizeMb", "maxSizeMb", numberAttribute], maxFiles: ["maxFiles", "maxFiles", numberAttribute], disabled: ["disabled", "disabled", booleanAttribute], loading: ["loading", "loading", booleanAttribute], autofocus: ["autofocus", "autofocus", booleanAttribute], multiple: ["multiple", "multiple", booleanAttribute], value: "value", fileItemRowClickable: ["fileItemRowClickable", "fileItemRowClickable", booleanAttribute], showFileDownload: "showFileDownload" }, outputs: { valueChange: "valueChange", fileRejected: "fileRejected", fileItemClick: "fileItemClick" }, host: { properties: { "attr.data-control-id": "this.hostDataControlId" } }, viewQueries: [{ propertyName: "fileInputRef", first: true, predicate: ["fileInput"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"file-upload-field\"\r\n [class.file-upload-field--disabled]=\"disabled\"\r\n [class.file-upload-field--loading]=\"loading\"\r\n [class.file-upload-field--error]=\"errorMessage\"\r\n>\r\n @if (label && label.length > 0) {\r\n <label class=\"file-upload-field__label\" [attr.for]=\"fieldId\">\r\n {{ label }}\r\n </label>\r\n }\r\n @if (loading) {\r\n <div\r\n class=\"file-upload-field__zone file-upload-field__zone--loading\"\r\n aria-busy=\"true\"\r\n role=\"status\"\r\n [attr.aria-label]=\"loadingAriaLabel\"\r\n >\r\n <app-skeleton-field-shell [showLeadingIcon]=\"true\" />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"file-upload-field__zone\"\r\n (click)=\"openSelector($event)\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n (mouseenter)=\"onZoneEnter()\"\r\n (mouseleave)=\"onZoneLeave()\"\r\n [class.file-upload-field__zone--dragging]=\"isDragging\"\r\n [class.file-upload-field__zone--hover]=\"hasHover && !disabled\"\r\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\r\n role=\"button\"\r\n [attr.tabindex]=\"disabled ? -1 : 0\"\r\n (keydown)=\"onZoneKeydown($event)\"\r\n >\r\n <input\r\n #fileInput\r\n [id]=\"fieldId\"\r\n type=\"file\"\r\n class=\"file-upload-field__native\"\r\n [attr.accept]=\"accept && accept.length ? accept : null\"\r\n [multiple]=\"multiple\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onNativeChange($event)\"\r\n />\r\n <div class=\"file-upload-field__zone-inner\">\r\n <i class=\"fa-solid fa-cloud-arrow-up file-upload-field__icon\" aria-hidden=\"true\"></i>\r\n <span class=\"file-upload-field__hint-main\">\r\n Arraste arquivos ou\r\n <span class=\"file-upload-field__hint-cta\">clique para procurar</span>\r\n </span>\r\n @if (acceptDisplayText) {\r\n <span class=\"file-upload-field__hint-accept\">{{ acceptDisplayText }}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (hint && hint.length > 0) {\r\n <p class=\"file-upload-field__hint\" [id]=\"fieldId + '-hint'\">{{ hint }}</p>\r\n }\r\n\r\n @if (errorMessage) {\r\n <p class=\"file-upload-field__error\" role=\"alert\" [id]=\"fieldId + '-err'\">\r\n {{ errorMessage }}\r\n </p>\r\n }\r\n\r\n @if (hasValue) {\r\n <ul class=\"file-upload-field__list\" [attr.aria-label]=\"'Arquivos selecionados'\">\r\n @for (row of filesList; track row.file) {\r\n <li\r\n class=\"file-upload-field__item\"\r\n [class.file-upload-field__item--with-image]=\"imageListPreviewUrl(row.file)\"\r\n [class.file-upload-field__item--selectable]=\"fileItemClickActive\"\r\n (click)=\"onFileItemRowClick($event, row.file)\"\r\n >\r\n @if (imageListPreviewUrl(row.file); as thumbSrc) {\r\n <div class=\"file-upload-field__thumb\" aria-hidden=\"true\">\r\n <img\r\n class=\"file-upload-field__thumb-img\"\r\n [src]=\"thumbSrc\"\r\n [alt]=\"'Pr\u00E9-visualiza\u00E7\u00E3o: ' + row.name\"\r\n loading=\"lazy\"\r\n decoding=\"async\"\r\n />\r\n </div>\r\n }\r\n <div class=\"file-upload-field__item-meta\">\r\n <span class=\"file-upload-field__name\">{{ row.name }}</span>\r\n <span class=\"file-upload-field__size\">{{ row.sizeLabel }}</span>\r\n <span class=\"file-upload-field__type\">{{ row.typeLabel }}</span>\r\n </div>\r\n <div class=\"file-upload-field__item-actions\">\r\n @if (showFileDownload) {\r\n <button\r\n type=\"button\"\r\n class=\"file-upload-field__download\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"'Download ' + row.name\"\r\n (click)=\"onDownloadFile(row.file, $event)\"\r\n >\r\n <i class=\"fa-solid fa-download\" aria-hidden=\"true\"></i>\r\n <span class=\"file-upload-field__download-text\">Download</span>\r\n </button>\r\n }\r\n <button\r\n type=\"button\"\r\n class=\"file-upload-field__remove\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"'Remover ' + row.name\"\r\n (click)=\"onRemoveFile($index, $event)\"\r\n >\r\n <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\r\n <span class=\"file-upload-field__remove-text\">Remover</span>\r\n </button>\r\n </div>\r\n </li>\r\n }\r\n </ul>\r\n @if (showClearAllButton) {\r\n <button\r\n type=\"button\"\r\n class=\"file-upload-field__clear\"\r\n [disabled]=\"disabled\"\r\n (click)=\"clearAll($event)\"\r\n >\r\n Limpar tudo\r\n </button>\r\n }\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box;user-select:none;-webkit-user-select:none}.file-upload-field{display:flex;flex-direction:column;gap:.35rem;min-width:0;width:100%}.file-upload-field__label{display:block;font-size:.82rem;font-weight:500;color:var(--ui-text-secondary, #404040)}.file-upload-field--disabled .file-upload-field__label,.file-upload-field--disabled .file-upload-field__hint,.file-upload-field--disabled .file-upload-field__hint-main{opacity:var(--ui-field-input-disabled-opacity, .6)}.file-upload-field__zone--loading{cursor:progress;pointer-events:none;justify-content:center;padding:.65rem .85rem;box-sizing:border-box}.file-upload-field__zone--loading ::ng-deep .skeleton-field-shell{width:100%}.file-upload-field__zone{position:relative;display:flex;flex-direction:column;align-items:stretch;min-height:4.5rem;border:1px solid var(--ui-field-float-border, #d1d1d1);border-radius:var(--ui-field-float-border-radius, 8px);background:var(--field-background, var(--ui-field-float-bg, #ffffff));cursor:pointer;user-select:none;-webkit-user-select:none;transition:border-color .1s ease,box-shadow .1s ease,background .1s ease}.file-upload-field__zone:focus{outline:none}.file-upload-field--disabled .file-upload-field__zone,.file-upload-field--disabled .file-upload-field__zone[role=button]{cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity, .6);pointer-events:none}.file-upload-field--error .file-upload-field__zone{border-color:var(--ui-field-input-invalid-border, #b91c1c);background:var(--ui-field-invalid-input-bg, #fef2f2)}.file-upload-field--error .file-upload-field__zone--hover,.file-upload-field--error .file-upload-field__zone--dragging{border-color:var(--ui-field-input-invalid-border, #b91c1c);box-shadow:0 0 0 2px var(--ui-field-input-invalid-focus-halo, rgba(185, 28, 28, .2))}.file-upload-field:not(.file-upload-field--error) .file-upload-field__zone--hover{border-color:var(--ui-field-float-border-hover);box-shadow:none}.file-upload-field__zone--dragging{border-style:dashed;border-width:2px;border-color:var(--ui-field-float-border-focus, #2563eb);background:var(--ui-field-readonly-bg, #f4f4f5);box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(37, 99, 235, .2))}.file-upload-field:not(.file-upload-field--disabled) .file-upload-field__zone:focus-visible{border-color:var(--ui-field-float-border-focus, #2563eb);box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(37, 99, 235, .25))}.file-upload-field__zone-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;text-align:center;padding:1.1rem .9rem;min-height:3.4rem}.file-upload-field__icon{font-size:1.35rem;color:var(--ui-field-float-prefix-color, #6b6b6b);opacity:.9}.file-upload-field__zone--dragging .file-upload-field__icon{color:var(--ui-field-float-border-focus, #2563eb)}.file-upload-field__hint-main{font-size:.8rem;line-height:1.4;color:var(--ui-text-secondary, #525252);max-width:18rem}.file-upload-field__hint-cta{color:var(--ui-field-float-border-focus, #2563eb);font-weight:500;text-decoration:underline;text-underline-offset:2px}.file-upload-field__hint-accept{display:block;font-size:.72rem;color:var(--ui-text-muted, #737373);max-width:20rem;word-break:break-word}.file-upload-field__native{position:absolute;width:.1px;height:.1px;opacity:0;overflow:hidden;z-index:-1;pointer-events:none}.file-upload-field__hint{font-size:.75rem;line-height:1.4;margin:.15rem 0 0;color:var(--ui-text-secondary, #525252)}.file-upload-field__error{font-size:.75rem;line-height:1.4;margin:.1rem 0 0;color:#b91c1c}.file-upload-field__list{list-style:none;margin:.2rem 0 0;padding:0;display:flex;flex-direction:column;gap:.4rem}.file-upload-field__item{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.5rem .75rem;padding:.55rem .65rem;border:1px solid var(--ui-field-float-border, #e5e5e5);border-radius:6px;background:var(--ui-page-bg, #fafafa);font-size:.78rem;line-height:1.35}.file-upload-field__item--selectable{cursor:pointer}.file-upload-field__thumb{flex-shrink:0;width:4.5rem;height:4.5rem;border-radius:6px;overflow:hidden;background:#e5e5e5;border:1px solid var(--ui-field-float-border, #e5e5e5)}.file-upload-field__thumb-img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}.file-upload-field__item-meta{display:flex;flex-direction:column;gap:.1rem;min-width:0;flex:1 1 8rem}.file-upload-field__name{font-weight:500;color:#171717;word-break:break-word}.file-upload-field__size{color:#737373;font-size:.76rem}.file-upload-field__type{color:#8b8b8b;font-size:.72rem;font-family:ui-monospace,Consolas,monospace}.file-upload-field__item-actions{display:inline-flex;flex-wrap:wrap;align-items:flex-start;align-content:flex-start;justify-content:flex-end;gap:.2rem .35rem;flex-shrink:0;min-height:0}.file-upload-field__download{display:inline-grid;grid-template-columns:1em minmax(0,max-content);column-gap:.35rem;place-items:center;border:0;background:transparent;color:var(--app-color-primary, #2563eb);padding:.15rem .35rem;border-radius:4px;cursor:pointer;font:inherit;font-size:.75rem;font-weight:500;line-height:1.15;flex-shrink:0;transition:background .1s ease,color .1s ease}.file-upload-field__download:hover:not(:disabled){background:color-mix(in srgb,var(--app-color-primary, #2563eb) 10%,transparent)}.file-upload-field__download:disabled{opacity:.45;cursor:not-allowed}.file-upload-field__remove{display:inline-grid;grid-template-columns:1em minmax(0,max-content);column-gap:.35rem;place-items:center;border:0;background:transparent;color:#b91c1c;padding:.15rem .35rem;border-radius:4px;cursor:pointer;font:inherit;font-size:.75rem;font-weight:500;line-height:1.15;flex-shrink:0;transition:background .1s ease}.file-upload-field__remove:hover:not(:disabled){background:#fef2f2}.file-upload-field__remove:disabled{opacity:.45;cursor:not-allowed}.file-upload-field__remove i,.file-upload-field__download i{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:1em;height:1em;line-height:0;font-size:1em;align-self:center;justify-self:center}.file-upload-field__remove-text,.file-upload-field__download-text{position:relative;width:auto;min-width:0;height:auto;clip:auto;line-height:1.15;transform:translateY(.08em)}.file-upload-field__clear{align-self:flex-start;margin-top:.1rem;font-size:.75rem;color:#525252;background:transparent;border:0;text-decoration:underline;text-underline-offset:2px;padding:.15rem .1rem .15rem 0;cursor:pointer;transition:color .1s ease}.file-upload-field__clear:hover:not(:disabled){color:#171717;background:transparent}.file-upload-field__clear:disabled{opacity:.45;cursor:not-allowed}\n"], dependencies: [{ kind: "component", type: SkeletonFieldShellComponent, selector: "app-skeleton-field-shell", inputs: ["variant", "animate", "showLeadingIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6320
6486
  }
6321
6487
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FileUploadFieldComponent, decorators: [{
6322
6488
  type: Component,
6323
- args: [{ selector: 'app-file-upload-field', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"file-upload-field\"\r\n [class.file-upload-field--disabled]=\"disabled\"\r\n [class.file-upload-field--error]=\"errorMessage\"\r\n>\r\n @if (label && label.length > 0) {\r\n <label class=\"file-upload-field__label\" [attr.for]=\"fieldId\">\r\n {{ label }}\r\n </label>\r\n }\r\n <div\r\n class=\"file-upload-field__zone\"\r\n (click)=\"openSelector($event)\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n (mouseenter)=\"onZoneEnter()\"\r\n (mouseleave)=\"onZoneLeave()\"\r\n [class.file-upload-field__zone--dragging]=\"isDragging\"\r\n [class.file-upload-field__zone--hover]=\"hasHover && !disabled\"\r\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\r\n role=\"button\"\r\n [attr.tabindex]=\"disabled ? -1 : 0\"\r\n (keydown)=\"onZoneKeydown($event)\"\r\n >\r\n <input\r\n #fileInput\r\n [id]=\"fieldId\"\r\n type=\"file\"\r\n class=\"file-upload-field__native\"\r\n [attr.accept]=\"accept && accept.length ? accept : null\"\r\n [multiple]=\"multiple\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onNativeChange($event)\"\r\n />\r\n <div class=\"file-upload-field__zone-inner\">\r\n <i class=\"fa-solid fa-cloud-arrow-up file-upload-field__icon\" aria-hidden=\"true\"></i>\r\n <span class=\"file-upload-field__hint-main\">\r\n Arraste arquivos ou\r\n <span class=\"file-upload-field__hint-cta\">clique para procurar</span>\r\n </span>\r\n @if (acceptDisplayText) {\r\n <span class=\"file-upload-field__hint-accept\">{{ acceptDisplayText }}</span>\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (hint && hint.length > 0) {\r\n <p class=\"file-upload-field__hint\" [id]=\"fieldId + '-hint'\">{{ hint }}</p>\r\n }\r\n\r\n @if (errorMessage) {\r\n <p class=\"file-upload-field__error\" role=\"alert\" [id]=\"fieldId + '-err'\">\r\n {{ errorMessage }}\r\n </p>\r\n }\r\n\r\n @if (hasValue) {\r\n <ul class=\"file-upload-field__list\" [attr.aria-label]=\"'Arquivos selecionados'\">\r\n @for (row of filesList; track row.file) {\r\n <li\r\n class=\"file-upload-field__item\"\r\n [class.file-upload-field__item--with-image]=\"imageListPreviewUrl(row.file)\"\r\n [class.file-upload-field__item--selectable]=\"fileItemClickActive\"\r\n (click)=\"onFileItemRowClick($event, row.file)\"\r\n >\r\n @if (imageListPreviewUrl(row.file); as thumbSrc) {\r\n <div class=\"file-upload-field__thumb\" aria-hidden=\"true\">\r\n <img\r\n class=\"file-upload-field__thumb-img\"\r\n [src]=\"thumbSrc\"\r\n [alt]=\"'Pr\u00E9-visualiza\u00E7\u00E3o: ' + row.name\"\r\n loading=\"lazy\"\r\n decoding=\"async\"\r\n />\r\n </div>\r\n }\r\n <div class=\"file-upload-field__item-meta\">\r\n <span class=\"file-upload-field__name\">{{ row.name }}</span>\r\n <span class=\"file-upload-field__size\">{{ row.sizeLabel }}</span>\r\n <span class=\"file-upload-field__type\">{{ row.typeLabel }}</span>\r\n </div>\r\n <div class=\"file-upload-field__item-actions\">\r\n @if (showFileDownload) {\r\n <button\r\n type=\"button\"\r\n class=\"file-upload-field__download\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"'Download ' + row.name\"\r\n (click)=\"onDownloadFile(row.file, $event)\"\r\n >\r\n <i class=\"fa-solid fa-download\" aria-hidden=\"true\"></i>\r\n <span class=\"file-upload-field__download-text\">Download</span>\r\n </button>\r\n }\r\n <button\r\n type=\"button\"\r\n class=\"file-upload-field__remove\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"'Remover ' + row.name\"\r\n (click)=\"onRemoveFile($index, $event)\"\r\n >\r\n <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\r\n <span class=\"file-upload-field__remove-text\">Remover</span>\r\n </button>\r\n </div>\r\n </li>\r\n }\r\n </ul>\r\n @if (showClearAllButton) {\r\n <button\r\n type=\"button\"\r\n class=\"file-upload-field__clear\"\r\n [disabled]=\"disabled\"\r\n (click)=\"clearAll($event)\"\r\n >\r\n Limpar tudo\r\n </button>\r\n }\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box;user-select:none;-webkit-user-select:none}.file-upload-field{display:flex;flex-direction:column;gap:.35rem;min-width:0;width:100%}.file-upload-field__label{display:block;font-size:.82rem;font-weight:500;color:var(--ui-text-secondary, #404040)}.file-upload-field--disabled .file-upload-field__label,.file-upload-field--disabled .file-upload-field__hint,.file-upload-field--disabled .file-upload-field__hint-main{opacity:var(--ui-field-input-disabled-opacity, .6)}.file-upload-field__zone{position:relative;display:flex;flex-direction:column;align-items:stretch;min-height:4.5rem;border:1px solid var(--ui-field-float-border, #d1d1d1);border-radius:var(--ui-field-float-border-radius, 8px);background:var(--field-background, var(--ui-field-float-bg, #ffffff));cursor:pointer;user-select:none;-webkit-user-select:none;transition:border-color .1s ease,box-shadow .1s ease,background .1s ease}.file-upload-field__zone:focus{outline:none}.file-upload-field--disabled .file-upload-field__zone,.file-upload-field--disabled .file-upload-field__zone[role=button]{cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity, .6);pointer-events:none}.file-upload-field--error .file-upload-field__zone{border-color:var(--ui-field-input-invalid-border, #b91c1c);background:var(--ui-field-invalid-input-bg, #fef2f2)}.file-upload-field--error .file-upload-field__zone--hover,.file-upload-field--error .file-upload-field__zone--dragging{border-color:var(--ui-field-input-invalid-border, #b91c1c);box-shadow:0 0 0 2px var(--ui-field-input-invalid-focus-halo, rgba(185, 28, 28, .2))}.file-upload-field:not(.file-upload-field--error) .file-upload-field__zone--hover{border-color:var(--ui-field-float-border-hover);box-shadow:none}.file-upload-field__zone--dragging{border-style:dashed;border-width:2px;border-color:var(--ui-field-float-border-focus, #2563eb);background:var(--ui-field-readonly-bg, #f4f4f5);box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(37, 99, 235, .2))}.file-upload-field:not(.file-upload-field--disabled) .file-upload-field__zone:focus-visible{border-color:var(--ui-field-float-border-focus, #2563eb);box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(37, 99, 235, .25))}.file-upload-field__zone-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;text-align:center;padding:1.1rem .9rem;min-height:3.4rem}.file-upload-field__icon{font-size:1.35rem;color:var(--ui-field-float-prefix-color, #6b6b6b);opacity:.9}.file-upload-field__zone--dragging .file-upload-field__icon{color:var(--ui-field-float-border-focus, #2563eb)}.file-upload-field__hint-main{font-size:.8rem;line-height:1.4;color:var(--ui-text-secondary, #525252);max-width:18rem}.file-upload-field__hint-cta{color:var(--ui-field-float-border-focus, #2563eb);font-weight:500;text-decoration:underline;text-underline-offset:2px}.file-upload-field__hint-accept{display:block;font-size:.72rem;color:var(--ui-text-muted, #737373);max-width:20rem;word-break:break-word}.file-upload-field__native{position:absolute;width:.1px;height:.1px;opacity:0;overflow:hidden;z-index:-1;pointer-events:none}.file-upload-field__hint{font-size:.75rem;line-height:1.4;margin:.15rem 0 0;color:var(--ui-text-secondary, #525252)}.file-upload-field__error{font-size:.75rem;line-height:1.4;margin:.1rem 0 0;color:#b91c1c}.file-upload-field__list{list-style:none;margin:.2rem 0 0;padding:0;display:flex;flex-direction:column;gap:.4rem}.file-upload-field__item{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.5rem .75rem;padding:.55rem .65rem;border:1px solid var(--ui-field-float-border, #e5e5e5);border-radius:6px;background:var(--ui-page-bg, #fafafa);font-size:.78rem;line-height:1.35}.file-upload-field__item--selectable{cursor:pointer}.file-upload-field__thumb{flex-shrink:0;width:4.5rem;height:4.5rem;border-radius:6px;overflow:hidden;background:#e5e5e5;border:1px solid var(--ui-field-float-border, #e5e5e5)}.file-upload-field__thumb-img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}.file-upload-field__item-meta{display:flex;flex-direction:column;gap:.1rem;min-width:0;flex:1 1 8rem}.file-upload-field__name{font-weight:500;color:#171717;word-break:break-word}.file-upload-field__size{color:#737373;font-size:.76rem}.file-upload-field__type{color:#8b8b8b;font-size:.72rem;font-family:ui-monospace,Consolas,monospace}.file-upload-field__item-actions{display:inline-flex;flex-wrap:wrap;align-items:flex-start;align-content:flex-start;justify-content:flex-end;gap:.2rem .35rem;flex-shrink:0;min-height:0}.file-upload-field__download{display:inline-grid;grid-template-columns:1em minmax(0,max-content);column-gap:.35rem;place-items:center;border:0;background:transparent;color:var(--app-color-primary, #2563eb);padding:.15rem .35rem;border-radius:4px;cursor:pointer;font:inherit;font-size:.75rem;font-weight:500;line-height:1.15;flex-shrink:0;transition:background .1s ease,color .1s ease}.file-upload-field__download:hover:not(:disabled){background:color-mix(in srgb,var(--app-color-primary, #2563eb) 10%,transparent)}.file-upload-field__download:disabled{opacity:.45;cursor:not-allowed}.file-upload-field__remove{display:inline-grid;grid-template-columns:1em minmax(0,max-content);column-gap:.35rem;place-items:center;border:0;background:transparent;color:#b91c1c;padding:.15rem .35rem;border-radius:4px;cursor:pointer;font:inherit;font-size:.75rem;font-weight:500;line-height:1.15;flex-shrink:0;transition:background .1s ease}.file-upload-field__remove:hover:not(:disabled){background:#fef2f2}.file-upload-field__remove:disabled{opacity:.45;cursor:not-allowed}.file-upload-field__remove i,.file-upload-field__download i{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:1em;height:1em;line-height:0;font-size:1em;align-self:center;justify-self:center}.file-upload-field__remove-text,.file-upload-field__download-text{position:relative;width:auto;min-width:0;height:auto;clip:auto;line-height:1.15;transform:translateY(.08em)}.file-upload-field__clear{align-self:flex-start;margin-top:.1rem;font-size:.75rem;color:#525252;background:transparent;border:0;text-decoration:underline;text-underline-offset:2px;padding:.15rem .1rem .15rem 0;cursor:pointer;transition:color .1s ease}.file-upload-field__clear:hover:not(:disabled){color:#171717;background:transparent}.file-upload-field__clear:disabled{opacity:.45;cursor:not-allowed}\n"] }]
6489
+ args: [{ selector: 'app-file-upload-field', standalone: true, imports: [SkeletonFieldShellComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"file-upload-field\"\r\n [class.file-upload-field--disabled]=\"disabled\"\r\n [class.file-upload-field--loading]=\"loading\"\r\n [class.file-upload-field--error]=\"errorMessage\"\r\n>\r\n @if (label && label.length > 0) {\r\n <label class=\"file-upload-field__label\" [attr.for]=\"fieldId\">\r\n {{ label }}\r\n </label>\r\n }\r\n @if (loading) {\r\n <div\r\n class=\"file-upload-field__zone file-upload-field__zone--loading\"\r\n aria-busy=\"true\"\r\n role=\"status\"\r\n [attr.aria-label]=\"loadingAriaLabel\"\r\n >\r\n <app-skeleton-field-shell [showLeadingIcon]=\"true\" />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"file-upload-field__zone\"\r\n (click)=\"openSelector($event)\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n (mouseenter)=\"onZoneEnter()\"\r\n (mouseleave)=\"onZoneLeave()\"\r\n [class.file-upload-field__zone--dragging]=\"isDragging\"\r\n [class.file-upload-field__zone--hover]=\"hasHover && !disabled\"\r\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\r\n role=\"button\"\r\n [attr.tabindex]=\"disabled ? -1 : 0\"\r\n (keydown)=\"onZoneKeydown($event)\"\r\n >\r\n <input\r\n #fileInput\r\n [id]=\"fieldId\"\r\n type=\"file\"\r\n class=\"file-upload-field__native\"\r\n [attr.accept]=\"accept && accept.length ? accept : null\"\r\n [multiple]=\"multiple\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onNativeChange($event)\"\r\n />\r\n <div class=\"file-upload-field__zone-inner\">\r\n <i class=\"fa-solid fa-cloud-arrow-up file-upload-field__icon\" aria-hidden=\"true\"></i>\r\n <span class=\"file-upload-field__hint-main\">\r\n Arraste arquivos ou\r\n <span class=\"file-upload-field__hint-cta\">clique para procurar</span>\r\n </span>\r\n @if (acceptDisplayText) {\r\n <span class=\"file-upload-field__hint-accept\">{{ acceptDisplayText }}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (hint && hint.length > 0) {\r\n <p class=\"file-upload-field__hint\" [id]=\"fieldId + '-hint'\">{{ hint }}</p>\r\n }\r\n\r\n @if (errorMessage) {\r\n <p class=\"file-upload-field__error\" role=\"alert\" [id]=\"fieldId + '-err'\">\r\n {{ errorMessage }}\r\n </p>\r\n }\r\n\r\n @if (hasValue) {\r\n <ul class=\"file-upload-field__list\" [attr.aria-label]=\"'Arquivos selecionados'\">\r\n @for (row of filesList; track row.file) {\r\n <li\r\n class=\"file-upload-field__item\"\r\n [class.file-upload-field__item--with-image]=\"imageListPreviewUrl(row.file)\"\r\n [class.file-upload-field__item--selectable]=\"fileItemClickActive\"\r\n (click)=\"onFileItemRowClick($event, row.file)\"\r\n >\r\n @if (imageListPreviewUrl(row.file); as thumbSrc) {\r\n <div class=\"file-upload-field__thumb\" aria-hidden=\"true\">\r\n <img\r\n class=\"file-upload-field__thumb-img\"\r\n [src]=\"thumbSrc\"\r\n [alt]=\"'Pr\u00E9-visualiza\u00E7\u00E3o: ' + row.name\"\r\n loading=\"lazy\"\r\n decoding=\"async\"\r\n />\r\n </div>\r\n }\r\n <div class=\"file-upload-field__item-meta\">\r\n <span class=\"file-upload-field__name\">{{ row.name }}</span>\r\n <span class=\"file-upload-field__size\">{{ row.sizeLabel }}</span>\r\n <span class=\"file-upload-field__type\">{{ row.typeLabel }}</span>\r\n </div>\r\n <div class=\"file-upload-field__item-actions\">\r\n @if (showFileDownload) {\r\n <button\r\n type=\"button\"\r\n class=\"file-upload-field__download\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"'Download ' + row.name\"\r\n (click)=\"onDownloadFile(row.file, $event)\"\r\n >\r\n <i class=\"fa-solid fa-download\" aria-hidden=\"true\"></i>\r\n <span class=\"file-upload-field__download-text\">Download</span>\r\n </button>\r\n }\r\n <button\r\n type=\"button\"\r\n class=\"file-upload-field__remove\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"'Remover ' + row.name\"\r\n (click)=\"onRemoveFile($index, $event)\"\r\n >\r\n <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\r\n <span class=\"file-upload-field__remove-text\">Remover</span>\r\n </button>\r\n </div>\r\n </li>\r\n }\r\n </ul>\r\n @if (showClearAllButton) {\r\n <button\r\n type=\"button\"\r\n class=\"file-upload-field__clear\"\r\n [disabled]=\"disabled\"\r\n (click)=\"clearAll($event)\"\r\n >\r\n Limpar tudo\r\n </button>\r\n }\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box;user-select:none;-webkit-user-select:none}.file-upload-field{display:flex;flex-direction:column;gap:.35rem;min-width:0;width:100%}.file-upload-field__label{display:block;font-size:.82rem;font-weight:500;color:var(--ui-text-secondary, #404040)}.file-upload-field--disabled .file-upload-field__label,.file-upload-field--disabled .file-upload-field__hint,.file-upload-field--disabled .file-upload-field__hint-main{opacity:var(--ui-field-input-disabled-opacity, .6)}.file-upload-field__zone--loading{cursor:progress;pointer-events:none;justify-content:center;padding:.65rem .85rem;box-sizing:border-box}.file-upload-field__zone--loading ::ng-deep .skeleton-field-shell{width:100%}.file-upload-field__zone{position:relative;display:flex;flex-direction:column;align-items:stretch;min-height:4.5rem;border:1px solid var(--ui-field-float-border, #d1d1d1);border-radius:var(--ui-field-float-border-radius, 8px);background:var(--field-background, var(--ui-field-float-bg, #ffffff));cursor:pointer;user-select:none;-webkit-user-select:none;transition:border-color .1s ease,box-shadow .1s ease,background .1s ease}.file-upload-field__zone:focus{outline:none}.file-upload-field--disabled .file-upload-field__zone,.file-upload-field--disabled .file-upload-field__zone[role=button]{cursor:not-allowed;opacity:var(--ui-field-input-disabled-opacity, .6);pointer-events:none}.file-upload-field--error .file-upload-field__zone{border-color:var(--ui-field-input-invalid-border, #b91c1c);background:var(--ui-field-invalid-input-bg, #fef2f2)}.file-upload-field--error .file-upload-field__zone--hover,.file-upload-field--error .file-upload-field__zone--dragging{border-color:var(--ui-field-input-invalid-border, #b91c1c);box-shadow:0 0 0 2px var(--ui-field-input-invalid-focus-halo, rgba(185, 28, 28, .2))}.file-upload-field:not(.file-upload-field--error) .file-upload-field__zone--hover{border-color:var(--ui-field-float-border-hover);box-shadow:none}.file-upload-field__zone--dragging{border-style:dashed;border-width:2px;border-color:var(--ui-field-float-border-focus, #2563eb);background:var(--ui-field-readonly-bg, #f4f4f5);box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(37, 99, 235, .2))}.file-upload-field:not(.file-upload-field--disabled) .file-upload-field__zone:focus-visible{border-color:var(--ui-field-float-border-focus, #2563eb);box-shadow:0 0 0 3px var(--ui-field-float-focus-ring, rgba(37, 99, 235, .25))}.file-upload-field__zone-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;text-align:center;padding:1.1rem .9rem;min-height:3.4rem}.file-upload-field__icon{font-size:1.35rem;color:var(--ui-field-float-prefix-color, #6b6b6b);opacity:.9}.file-upload-field__zone--dragging .file-upload-field__icon{color:var(--ui-field-float-border-focus, #2563eb)}.file-upload-field__hint-main{font-size:.8rem;line-height:1.4;color:var(--ui-text-secondary, #525252);max-width:18rem}.file-upload-field__hint-cta{color:var(--ui-field-float-border-focus, #2563eb);font-weight:500;text-decoration:underline;text-underline-offset:2px}.file-upload-field__hint-accept{display:block;font-size:.72rem;color:var(--ui-text-muted, #737373);max-width:20rem;word-break:break-word}.file-upload-field__native{position:absolute;width:.1px;height:.1px;opacity:0;overflow:hidden;z-index:-1;pointer-events:none}.file-upload-field__hint{font-size:.75rem;line-height:1.4;margin:.15rem 0 0;color:var(--ui-text-secondary, #525252)}.file-upload-field__error{font-size:.75rem;line-height:1.4;margin:.1rem 0 0;color:#b91c1c}.file-upload-field__list{list-style:none;margin:.2rem 0 0;padding:0;display:flex;flex-direction:column;gap:.4rem}.file-upload-field__item{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.5rem .75rem;padding:.55rem .65rem;border:1px solid var(--ui-field-float-border, #e5e5e5);border-radius:6px;background:var(--ui-page-bg, #fafafa);font-size:.78rem;line-height:1.35}.file-upload-field__item--selectable{cursor:pointer}.file-upload-field__thumb{flex-shrink:0;width:4.5rem;height:4.5rem;border-radius:6px;overflow:hidden;background:#e5e5e5;border:1px solid var(--ui-field-float-border, #e5e5e5)}.file-upload-field__thumb-img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}.file-upload-field__item-meta{display:flex;flex-direction:column;gap:.1rem;min-width:0;flex:1 1 8rem}.file-upload-field__name{font-weight:500;color:#171717;word-break:break-word}.file-upload-field__size{color:#737373;font-size:.76rem}.file-upload-field__type{color:#8b8b8b;font-size:.72rem;font-family:ui-monospace,Consolas,monospace}.file-upload-field__item-actions{display:inline-flex;flex-wrap:wrap;align-items:flex-start;align-content:flex-start;justify-content:flex-end;gap:.2rem .35rem;flex-shrink:0;min-height:0}.file-upload-field__download{display:inline-grid;grid-template-columns:1em minmax(0,max-content);column-gap:.35rem;place-items:center;border:0;background:transparent;color:var(--app-color-primary, #2563eb);padding:.15rem .35rem;border-radius:4px;cursor:pointer;font:inherit;font-size:.75rem;font-weight:500;line-height:1.15;flex-shrink:0;transition:background .1s ease,color .1s ease}.file-upload-field__download:hover:not(:disabled){background:color-mix(in srgb,var(--app-color-primary, #2563eb) 10%,transparent)}.file-upload-field__download:disabled{opacity:.45;cursor:not-allowed}.file-upload-field__remove{display:inline-grid;grid-template-columns:1em minmax(0,max-content);column-gap:.35rem;place-items:center;border:0;background:transparent;color:#b91c1c;padding:.15rem .35rem;border-radius:4px;cursor:pointer;font:inherit;font-size:.75rem;font-weight:500;line-height:1.15;flex-shrink:0;transition:background .1s ease}.file-upload-field__remove:hover:not(:disabled){background:#fef2f2}.file-upload-field__remove:disabled{opacity:.45;cursor:not-allowed}.file-upload-field__remove i,.file-upload-field__download i{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:1em;height:1em;line-height:0;font-size:1em;align-self:center;justify-self:center}.file-upload-field__remove-text,.file-upload-field__download-text{position:relative;width:auto;min-width:0;height:auto;clip:auto;line-height:1.15;transform:translateY(.08em)}.file-upload-field__clear{align-self:flex-start;margin-top:.1rem;font-size:.75rem;color:#525252;background:transparent;border:0;text-decoration:underline;text-underline-offset:2px;padding:.15rem .1rem .15rem 0;cursor:pointer;transition:color .1s ease}.file-upload-field__clear:hover:not(:disabled){color:#171717;background:transparent}.file-upload-field__clear:disabled{opacity:.45;cursor:not-allowed}\n"] }]
6324
6490
  }], propDecorators: { label: [{
6325
6491
  type: Input
6326
6492
  }], id: [{
@@ -6340,6 +6506,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
6340
6506
  }], disabled: [{
6341
6507
  type: Input,
6342
6508
  args: [{ transform: booleanAttribute }]
6509
+ }], loading: [{
6510
+ type: Input,
6511
+ args: [{ transform: booleanAttribute }]
6512
+ }], autofocus: [{
6513
+ type: Input,
6514
+ args: [{ transform: booleanAttribute }]
6343
6515
  }], multiple: [{
6344
6516
  type: Input,
6345
6517
  args: [{ transform: booleanAttribute }]
@@ -10408,5 +10580,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
10408
10580
  * Generated bundle index. Do not edit.
10409
10581
  */
10410
10582
 
10411
- export { ADAPTIVE_DATA_VIEW_MOBILE_QUERY, APP_SIDEBAR_LABEL_REVEAL_LAG_MS, APP_SIDEBAR_LAYOUT_DURATION_MS, APP_SIDEBAR_NAV_REVEAL_TOTAL_MS, APP_THEME_BASE_CLASS, APP_THEME_IDS, ActionMenuComponent, AdaptiveDataViewComponent, AnchoredOverlayComponent, AppBreadcrumbComponent, AppDialogComponent, AppLibLightBlockScrollStrategy, AppShellComponent, AppShellSidebarTemplateDirective, AppShellSidebarToggleComponent, AppSidebarComponent, AppSidebarToolbarDirective, AppTheme, AppThemeService, AppTopbarComponent, AppUserMenuComponent, BR_ESTADOS_NOME_SIGLA, BaseFieldComponent, BaseFieldDirective, BooleanFieldDirective, ButtonComponent, ButtonRadius, ButtonSize, ButtonType, ButtonVariant, CardListComponent, CepFieldComponent, CheckboxFieldComponent, ConfirmDialogComponent, ConfirmDialogService, ContextMenuComponent, CpfCnpjFieldComponent, DashboardSectionComponent, DataCardComponent, DataGridComponent, DataListComponent, DataToolbarComponent, DateFieldComponent, DecimalFieldComponent, DetailsFieldComponent, DetailsViewComponent, DialogFooterDirective, DividerComponent, DrawerComponent, DrawerSide, DrawerSize, DropdownBaseComponent, DropdownMenuComponent, DropdownMultiOptionFieldBase, DropdownOptionFieldBase, DropdownSearchFieldComponent, EmptyStateComponent, FILE_PREVIEW_UNAVAILABLE_MESSAGE, FileUploadFieldComponent, FormActionsAlign, FormActionsComponent, FormColComponent, FormGroupComponent, FormGroupVariant, FormLayoutGap, FormRowAlign, FormRowComponent, FormRowJustify, FormSectionAlign, FormSectionComponent, FormSectionRadius, FormSectionVariant, FormTabComponent, FormTabsComponent, ImagePreviewPanelComponent, InputMaskFieldComponent, IntegerFieldComponent, LAYOUT_STACK_SIDE_BY_SIDE, LAYOUT_STACK_STACKED, LayoutStackAlign, LayoutStackComponent, LayoutStackDirection, LayoutStackItemAlign, LibDialogSize, ListItemComponent, LoadingDialogComponent, LoadingDialogService, MaskedTextFieldBase, MenuDividerComponent, MenuDropdownPlacement, MenuGroupComponent, MenuListComponent, MultiselectFieldComponent, NgControlFieldDirective, OverlayPlacement, PDF_IFRAME_VIEWER_HASH, PasswordFieldComponent, PhoneFieldComponent, PopoverBodyTemplateDirective, PopoverComponent, PopoverFooterTemplateDirective, PopoverTriggerDirective, STRUCTRA_THEME_IDS, STRUCTRA_UI, SelectFieldComponent, SkeletonBlockComponent, SkeletonCardComponent, SkeletonFieldShellComponent, SkeletonListComponent, SkeletonTableComponent, SkeletonTextComponent, StatCardComponent, StatusBadgeComponent, SwitchFieldComponent, TableEmptyStateComponent, TableToolbarComponent, TextFieldComponent, TextareaFieldComponent, ThemeDirective, ToastHostComponent, ToastService, TooltipComponent, TooltipPanelTemplateDirective, ValidationSummaryComponent, anchoredOverlayPositions, appendPdfIframeViewerParams, applyPickedCalendarDate, buildDecimalBrDisplay, buildDecimalBrParseString, buildEmptyStateOverlayHtml, caretIndexFromIntegerDigitCount, caretIndexFromSemantic, cepMaskCompleteValidator, cpfCnpjMaskCompleteValidator, escapeHtml, extractDecimalBrParts, fileIsLikelyImage, fileMatchesAccept, fixedDigitsMaskCompleteValidator, formatAcceptForDisplay, formatDateTimePtBr, formatDecimalBr, formatFileSizeBytes, formatIntegerThousandsBr, formatMaskDigits, formatUiFieldDateValue, getFilePreviewKind, getThemeClass, getThemeClassList, getThemeTokenClass, libDialogPanelClasses, mapEstadosToOptions, maskDigitCount, normalizeFormDateValue, normalizeStructraTheme, parseDecimalBr, parseIntegerString, parseUiFieldDateValue, phoneBrMaskCompleteValidator, resolveControlAtPath, sanitizeDecimalBrInput, sanitizeIntegerDigits, sectionHasVisibleInvalid, semanticCaretAt, semanticIntegerDigitCountLeft, stripToDigits, subscribeMarkForCheckOnInvalidUiRefresh, subtreeHasVisibleInvalid };
10583
+ export { ADAPTIVE_DATA_VIEW_MOBILE_QUERY, APP_SIDEBAR_LABEL_REVEAL_LAG_MS, APP_SIDEBAR_LAYOUT_DURATION_MS, APP_SIDEBAR_NAV_REVEAL_TOTAL_MS, APP_THEME_BASE_CLASS, APP_THEME_IDS, ActionMenuComponent, AdaptiveDataViewComponent, AlertComponent, AnchoredOverlayComponent, AppBreadcrumbComponent, AppDialogComponent, AppLibLightBlockScrollStrategy, AppShellComponent, AppShellSidebarTemplateDirective, AppShellSidebarToggleComponent, AppSidebarComponent, AppSidebarToolbarDirective, AppTheme, AppThemeService, AppTopbarComponent, AppUserMenuComponent, BR_ESTADOS_NOME_SIGLA, BaseFieldComponent, BaseFieldDirective, BooleanFieldDirective, ButtonComponent, ButtonRadius, ButtonSize, ButtonType, ButtonVariant, CardListComponent, CepFieldComponent, CheckboxFieldComponent, ConfirmDialogComponent, ConfirmDialogService, ContextMenuComponent, CpfCnpjFieldComponent, DashboardSectionComponent, DataCardComponent, DataGridComponent, DataListComponent, DataToolbarComponent, DateFieldComponent, DecimalFieldComponent, DetailsFieldComponent, DetailsViewComponent, DialogFooterDirective, DividerComponent, DrawerComponent, DrawerSide, DrawerSize, DropdownBaseComponent, DropdownMenuComponent, DropdownMultiOptionFieldBase, DropdownOptionFieldBase, DropdownSearchFieldComponent, EmptyStateComponent, FILE_PREVIEW_UNAVAILABLE_MESSAGE, FileUploadFieldComponent, FormActionsAlign, FormActionsComponent, FormColComponent, FormGroupComponent, FormGroupVariant, FormLayoutGap, FormRowAlign, FormRowComponent, FormRowJustify, FormSectionAlign, FormSectionComponent, FormSectionRadius, FormSectionVariant, FormTabComponent, FormTabsComponent, ImagePreviewPanelComponent, InputMaskFieldComponent, IntegerFieldComponent, LAYOUT_STACK_SIDE_BY_SIDE, LAYOUT_STACK_STACKED, LayoutStackAlign, LayoutStackComponent, LayoutStackDirection, LayoutStackItemAlign, LibDialogSize, ListItemComponent, LoadingDialogComponent, LoadingDialogService, MaskedTextFieldBase, MenuDividerComponent, MenuDropdownPlacement, MenuGroupComponent, MenuListComponent, MultiselectFieldComponent, NgControlFieldDirective, OverlayPlacement, PDF_IFRAME_VIEWER_HASH, PasswordFieldComponent, PhoneFieldComponent, PopoverBodyTemplateDirective, PopoverComponent, PopoverFooterTemplateDirective, PopoverTriggerDirective, STRUCTRA_THEME_IDS, STRUCTRA_UI, SelectFieldComponent, SkeletonBlockComponent, SkeletonCardComponent, SkeletonFieldShellComponent, SkeletonListComponent, SkeletonTableComponent, SkeletonTextComponent, StatCardComponent, StatusBadgeComponent, SwitchFieldComponent, TableEmptyStateComponent, TableToolbarComponent, TextFieldComponent, TextareaFieldComponent, ThemeDirective, ToastHostComponent, ToastService, TooltipComponent, TooltipPanelTemplateDirective, ValidationSummaryComponent, anchoredOverlayPositions, appendPdfIframeViewerParams, applyPickedCalendarDate, buildDecimalBrDisplay, buildDecimalBrParseString, buildEmptyStateOverlayHtml, caretIndexFromIntegerDigitCount, caretIndexFromSemantic, cepMaskCompleteValidator, cpfCnpjMaskCompleteValidator, escapeHtml, extractDecimalBrParts, fileIsLikelyImage, fileMatchesAccept, fixedDigitsMaskCompleteValidator, formatAcceptForDisplay, formatDateTimePtBr, formatDecimalBr, formatFileSizeBytes, formatIntegerThousandsBr, formatMaskDigits, formatUiFieldDateValue, getFilePreviewKind, getThemeClass, getThemeClassList, getThemeTokenClass, libDialogPanelClasses, mapEstadosToOptions, maskDigitCount, normalizeFormDateValue, normalizeStructraTheme, parseDecimalBr, parseIntegerString, parseUiFieldDateValue, phoneBrMaskCompleteValidator, resolveControlAtPath, sanitizeDecimalBrInput, sanitizeIntegerDigits, sectionHasVisibleInvalid, semanticCaretAt, semanticIntegerDigitCountLeft, stripToDigits, subscribeMarkForCheckOnInvalidUiRefresh, subtreeHasVisibleInvalid };
10412
10584
  //# sourceMappingURL=structra-ui.mjs.map