@vipsolucoes/dynamic-form 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -117,6 +117,7 @@ A biblioteca suporta os seguintes tipos de campos:
117
117
  - `datepicker` - Seletor de data
118
118
  - `textarea` - Área de texto
119
119
  - `toggleswitch` - Switch/Toggle
120
+ - `input-button` - Campo de texto com botão de ação
120
121
 
121
122
  ## 🎯 Exemplos de Configuração
122
123
 
@@ -191,6 +192,40 @@ A biblioteca suporta os seguintes tipos de campos:
191
192
  }
192
193
  ```
193
194
 
195
+ ### Campo Input-Button (Input com Botão de Ação)
196
+
197
+ O campo `input-button` combina um input text com um botão de ação usando o componente InputGroup do PrimeNG:
198
+
199
+ ```typescript
200
+ {
201
+ key: 'cep',
202
+ controlType: 'input-button',
203
+ label: 'CEP',
204
+ placeholder: '00000-000',
205
+ validators: [Validators.required],
206
+ buttonConfig: {
207
+ icon: 'pi pi-search',
208
+ tooltip: 'Buscar endereço',
209
+ position: 'right',
210
+ severity: 'primary'
211
+ },
212
+ buttonCallback: async (fieldKey, value) => {
213
+ console.log(`Buscando ${fieldKey}:`, value);
214
+ // Implementar lógica de busca
215
+ }
216
+ }
217
+ ```
218
+
219
+ Propriedades do `buttonConfig`:
220
+
221
+ - `icon`: Ícone do PrimeIcons (ex: 'pi pi-search')
222
+ - `label`: Texto do botão (opcional, pode usar apenas ícone)
223
+ - `tooltip`: Texto do tooltip ao passar o mouse
224
+ - `position`: Posição do botão ('left' | 'right'), padrão 'right'
225
+ - `severity`: Estilo do botão, padrão 'primary'
226
+
227
+ A função `buttonCallback` é executada quando o botão é clicado e recebe a key do campo e o valor atual como parâmetros.
228
+
194
229
  ### Campos Condicionais
195
230
 
196
231
  Você pode fazer campos serem habilitados/desabilitados baseado no valor de um toggle switch:
@@ -293,7 +328,8 @@ interface iFormConfig {
293
328
  | 'select'
294
329
  | 'datepicker'
295
330
  | 'textarea'
296
- | 'toggleswitch';
331
+ | 'toggleswitch'
332
+ | 'input-button';
297
333
  label: string; // Texto do label
298
334
  value?: any; // Valor inicial
299
335
  placeholder?: string; // Texto de placeholder
@@ -310,6 +346,14 @@ interface iFormConfig {
310
346
  textareaCols?: number; // Número de colunas do textarea
311
347
  toggleTrueValue?: any; // Valor quando toggle está ativo (default: true)
312
348
  toggleFalseValue?: any; // Valor quando toggle está inativo (default: false)
349
+ buttonConfig?: { // Configuração do botão para campos 'input-button'
350
+ icon?: string; // Ícone do PrimeIcons
351
+ label?: string; // Texto do botão
352
+ tooltip?: string; // Tooltip do botão
353
+ position?: 'left' | 'right'; // Posição do botão (default: 'right')
354
+ severity?: 'primary' | 'secondary' | 'success' | 'info' | 'warning' | 'danger' | 'help' | 'contrast'; // Estilo do botão
355
+ };
356
+ buttonCallback?: (fieldKey: string, fieldValue: any) => void | Promise<void>; // Callback executado ao clicar no botão
313
357
  }
314
358
  ```
315
359
 
@@ -11,6 +11,13 @@ import * as i2 from 'primeng/iftalabel';
11
11
  import { IftaLabelModule } from 'primeng/iftalabel';
12
12
  import * as i3$1 from 'primeng/inputtext';
13
13
  import { InputTextModule } from 'primeng/inputtext';
14
+ import * as i4 from 'primeng/inputgroup';
15
+ import { InputGroupModule } from 'primeng/inputgroup';
16
+ import { InputGroupAddonModule } from 'primeng/inputgroupaddon';
17
+ import * as i5 from 'primeng/button';
18
+ import { ButtonModule } from 'primeng/button';
19
+ import * as i6 from 'primeng/tooltip';
20
+ import { TooltipModule } from 'primeng/tooltip';
14
21
  import * as i3$2 from 'primeng/inputnumber';
15
22
  import { InputNumberModule } from 'primeng/inputnumber';
16
23
  import * as i3$3 from 'primeng/password';
@@ -89,7 +96,6 @@ class DatePickerFieldComponent {
89
96
  [placeholder]="field().placeholder || ''"
90
97
  [dateFormat]="dateFormat()"
91
98
  [view]="field().dateViewType || 'date'"
92
- [disabled]="field().disabled ?? false"
93
99
  />
94
100
  <label [for]="field().key">{{ field().label }}</label>
95
101
  </p-iftalabel>
@@ -109,7 +115,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImpor
109
115
  [placeholder]="field().placeholder || ''"
110
116
  [dateFormat]="dateFormat()"
111
117
  [view]="field().dateViewType || 'date'"
112
- [disabled]="field().disabled ?? false"
113
118
  />
114
119
  <label [for]="field().key">{{ field().label }}</label>
115
120
  </p-iftalabel>
@@ -124,7 +129,7 @@ class InputTextFieldComponent {
124
129
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.7", type: InputTextFieldComponent, isStandalone: true, selector: "vp-input-text-field", inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
125
130
  <div [formGroup]="form()">
126
131
  <p-iftalabel>
127
- <input pInputText [id]="field().key" [type]="field().controlType" [formControlName]="field().key" [placeholder]="field().placeholder || ''" [disabled]="field().disabled ?? false" />
132
+ <input pInputText [id]="field().key" [type]="field().controlType" [formControlName]="field().key" [placeholder]="field().placeholder || ''" />
128
133
  <label [for]="field().key">{{ field().label }}</label>
129
134
  </p-iftalabel>
130
135
  </div>
@@ -135,13 +140,130 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImpor
135
140
  args: [{ selector: 'vp-input-text-field', standalone: true, imports: [ReactiveFormsModule, IftaLabelModule, InputTextModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
136
141
  <div [formGroup]="form()">
137
142
  <p-iftalabel>
138
- <input pInputText [id]="field().key" [type]="field().controlType" [formControlName]="field().key" [placeholder]="field().placeholder || ''" [disabled]="field().disabled ?? false" />
143
+ <input pInputText [id]="field().key" [type]="field().controlType" [formControlName]="field().key" [placeholder]="field().placeholder || ''" />
139
144
  <label [for]="field().key">{{ field().label }}</label>
140
145
  </p-iftalabel>
141
146
  </div>
142
147
  `, styles: [":host{display:block;width:100%}p-iftalabel{display:block;width:100%}input{width:100%}\n"] }]
143
148
  }], propDecorators: { form: [{ type: i0.Input, args: [{ isSignal: true, alias: "form", required: true }] }], field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }] } });
144
149
 
150
+ class InputButtonFieldComponent {
151
+ form = input.required(...(ngDevMode ? [{ debugName: "form" }] : []));
152
+ field = input.required(...(ngDevMode ? [{ debugName: "field" }] : []));
153
+ buttonConfig() {
154
+ return this.field().buttonConfig;
155
+ }
156
+ buttonPosition() {
157
+ return this.buttonConfig()?.position || 'right';
158
+ }
159
+ isFieldDisabled() {
160
+ const control = this.form().get(this.field().key);
161
+ return control?.disabled ?? false;
162
+ }
163
+ onButtonClick() {
164
+ const control = this.form().get(this.field().key);
165
+ const value = control?.value;
166
+ const callback = this.field().buttonCallback;
167
+ if (callback) {
168
+ callback(this.field().key, value);
169
+ }
170
+ }
171
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: InputButtonFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
172
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.7", type: InputButtonFieldComponent, isStandalone: true, selector: "vp-input-button-field", inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
173
+ <div [formGroup]="form()">
174
+ <p-inputgroup>
175
+ @if (buttonPosition() === 'left') {
176
+ <p-button
177
+ type="button"
178
+ [icon]="buttonConfig()?.icon || ''"
179
+ [label]="buttonConfig()?.label || ''"
180
+ [severity]="buttonConfig()?.severity || 'primary'"
181
+ [pTooltip]="buttonConfig()?.tooltip || ''"
182
+ tooltipPosition="top"
183
+ (click)="onButtonClick()"
184
+ [disabled]="isFieldDisabled()"
185
+ />
186
+ }
187
+
188
+ <p-iftalabel>
189
+ <input
190
+ pInputText
191
+ [id]="field().key"
192
+ [formControlName]="field().key"
193
+ [placeholder]="field().placeholder || ''"
194
+ />
195
+ <label [for]="field().key">{{ field().label }}</label>
196
+ </p-iftalabel>
197
+
198
+ @if (buttonPosition() === 'right') {
199
+ <p-button
200
+ type="button"
201
+ [icon]="buttonConfig()?.icon || ''"
202
+ [label]="buttonConfig()?.label || ''"
203
+ [severity]="buttonConfig()?.severity || 'primary'"
204
+ [pTooltip]="buttonConfig()?.tooltip || ''"
205
+ tooltipPosition="top"
206
+ (click)="onButtonClick()"
207
+ [disabled]="isFieldDisabled()"
208
+ />
209
+ }
210
+ </p-inputgroup>
211
+ </div>
212
+ `, isInline: true, styles: [":host{display:block;width:100%}p-inputgroup{display:flex;width:100%}p-iftalabel{flex:1}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: IftaLabelModule }, { kind: "component", type: i2.IftaLabel, selector: "p-iftalabel, p-iftaLabel, p-ifta-label" }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i3$1.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pInputTextPT", "pInputTextUnstyled", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i4.InputGroup, selector: "p-inputgroup, p-inputGroup, p-input-group", inputs: ["styleClass"] }, { kind: "ngmodule", type: InputGroupAddonModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i5.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
213
+ }
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: InputButtonFieldComponent, decorators: [{
215
+ type: Component,
216
+ args: [{ selector: 'vp-input-button-field', standalone: true, imports: [
217
+ ReactiveFormsModule,
218
+ IftaLabelModule,
219
+ InputTextModule,
220
+ InputGroupModule,
221
+ InputGroupAddonModule,
222
+ ButtonModule,
223
+ TooltipModule,
224
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: `
225
+ <div [formGroup]="form()">
226
+ <p-inputgroup>
227
+ @if (buttonPosition() === 'left') {
228
+ <p-button
229
+ type="button"
230
+ [icon]="buttonConfig()?.icon || ''"
231
+ [label]="buttonConfig()?.label || ''"
232
+ [severity]="buttonConfig()?.severity || 'primary'"
233
+ [pTooltip]="buttonConfig()?.tooltip || ''"
234
+ tooltipPosition="top"
235
+ (click)="onButtonClick()"
236
+ [disabled]="isFieldDisabled()"
237
+ />
238
+ }
239
+
240
+ <p-iftalabel>
241
+ <input
242
+ pInputText
243
+ [id]="field().key"
244
+ [formControlName]="field().key"
245
+ [placeholder]="field().placeholder || ''"
246
+ />
247
+ <label [for]="field().key">{{ field().label }}</label>
248
+ </p-iftalabel>
249
+
250
+ @if (buttonPosition() === 'right') {
251
+ <p-button
252
+ type="button"
253
+ [icon]="buttonConfig()?.icon || ''"
254
+ [label]="buttonConfig()?.label || ''"
255
+ [severity]="buttonConfig()?.severity || 'primary'"
256
+ [pTooltip]="buttonConfig()?.tooltip || ''"
257
+ tooltipPosition="top"
258
+ (click)="onButtonClick()"
259
+ [disabled]="isFieldDisabled()"
260
+ />
261
+ }
262
+ </p-inputgroup>
263
+ </div>
264
+ `, styles: [":host{display:block;width:100%}p-inputgroup{display:flex;width:100%}p-iftalabel{flex:1}\n"] }]
265
+ }], propDecorators: { form: [{ type: i0.Input, args: [{ isSignal: true, alias: "form", required: true }] }], field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }] } });
266
+
145
267
  class NumberInputFieldComponent {
146
268
  form = input.required(...(ngDevMode ? [{ debugName: "form" }] : []));
147
269
  field = input.required(...(ngDevMode ? [{ debugName: "field" }] : []));
@@ -149,7 +271,7 @@ class NumberInputFieldComponent {
149
271
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.7", type: NumberInputFieldComponent, isStandalone: true, selector: "vp-number-input-field", inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
150
272
  <div [formGroup]="form()">
151
273
  <p-iftalabel>
152
- <p-inputNumber [id]="field().key" [formControlName]="field().key" [placeholder]="field().placeholder || ''" [disabled]="field().disabled ?? false" styleClass="w-full" class="w-full" />
274
+ <p-inputNumber [id]="field().key" [formControlName]="field().key" [placeholder]="field().placeholder || ''" styleClass="w-full" class="w-full" />
153
275
  <label [for]="field().key">{{ field().label }}</label>
154
276
  </p-iftalabel>
155
277
  </div>
@@ -160,7 +282,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImpor
160
282
  args: [{ selector: 'vp-number-input-field', standalone: true, imports: [ReactiveFormsModule, IftaLabelModule, InputNumberModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
161
283
  <div [formGroup]="form()">
162
284
  <p-iftalabel>
163
- <p-inputNumber [id]="field().key" [formControlName]="field().key" [placeholder]="field().placeholder || ''" [disabled]="field().disabled ?? false" styleClass="w-full" class="w-full" />
285
+ <p-inputNumber [id]="field().key" [formControlName]="field().key" [placeholder]="field().placeholder || ''" styleClass="w-full" class="w-full" />
164
286
  <label [for]="field().key">{{ field().label }}</label>
165
287
  </p-iftalabel>
166
288
  </div>
@@ -180,7 +302,6 @@ class PasswordFieldComponent {
180
302
  [feedback]="false"
181
303
  [toggleMask]="true"
182
304
  [placeholder]="field().placeholder || ''"
183
- [disabled]="field().disabled ?? false"
184
305
  styleClass="w-full"
185
306
  class="w-full" />
186
307
  <label [for]="field().key">{{ field().label }}</label>
@@ -199,7 +320,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImpor
199
320
  [feedback]="false"
200
321
  [toggleMask]="true"
201
322
  [placeholder]="field().placeholder || ''"
202
- [disabled]="field().disabled ?? false"
203
323
  styleClass="w-full"
204
324
  class="w-full" />
205
325
  <label [for]="field().key">{{ field().label }}</label>
@@ -220,7 +340,6 @@ class SelectFieldComponent {
220
340
  [formControlName]="field().key"
221
341
  [options]="field().options!"
222
342
  [placeholder]="field().placeholder || 'Selecione'"
223
- [disabled]="field().disabled ?? false"
224
343
  optionLabel="label"
225
344
  optionValue="value"
226
345
  class="w-full" />
@@ -239,7 +358,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImpor
239
358
  [formControlName]="field().key"
240
359
  [options]="field().options!"
241
360
  [placeholder]="field().placeholder || 'Selecione'"
242
- [disabled]="field().disabled ?? false"
243
361
  optionLabel="label"
244
362
  optionValue="value"
245
363
  class="w-full" />
@@ -264,7 +382,6 @@ class TextareaFieldComponent {
264
382
  [rows]="field().textareaRows ?? 1"
265
383
  [cols]="field().textareaCols"
266
384
  [autoResize]="field().textareaAutoResize ?? false"
267
- [disabled]="field().disabled ?? false"
268
385
  ></textarea>
269
386
  <label [for]="field().key">{{ field().label }}</label>
270
387
  </p-iftalabel>
@@ -284,7 +401,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImpor
284
401
  [rows]="field().textareaRows ?? 1"
285
402
  [cols]="field().textareaCols"
286
403
  [autoResize]="field().textareaAutoResize ?? false"
287
- [disabled]="field().disabled ?? false"
288
404
  ></textarea>
289
405
  <label [for]="field().key">{{ field().label }}</label>
290
406
  </p-iftalabel>
@@ -306,7 +422,6 @@ class ToggleSwitchFieldComponent {
306
422
  [formControlName]="field().key"
307
423
  [inputId]="field().key"
308
424
  [invalid]="isInvalid()"
309
- [disabled]="field().disabled ?? false"
310
425
  [trueValue]="field().toggleTrueValue ?? true"
311
426
  [falseValue]="field().toggleFalseValue ?? false" />
312
427
  <label [for]="field().key" class="toggleswitch-label">{{ field().label }}</label>
@@ -321,7 +436,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImpor
321
436
  [formControlName]="field().key"
322
437
  [inputId]="field().key"
323
438
  [invalid]="isInvalid()"
324
- [disabled]="field().disabled ?? false"
325
439
  [trueValue]="field().toggleTrueValue ?? true"
326
440
  [falseValue]="field().toggleFalseValue ?? false" />
327
441
  <label [for]="field().key" class="toggleswitch-label">{{ field().label }}</label>
@@ -391,6 +505,7 @@ class DynamicFormComponent {
391
505
  datepicker: DatePickerFieldComponent,
392
506
  textarea: TextareaFieldComponent,
393
507
  toggleswitch: ToggleSwitchFieldComponent,
508
+ 'input-button': InputButtonFieldComponent,
394
509
  };
395
510
  ngOnInit() {
396
511
  const configValue = this.config();
@@ -470,6 +585,7 @@ class DynamicFormComponent {
470
585
  case 'email':
471
586
  case 'password':
472
587
  case 'textarea':
588
+ case 'input-button':
473
589
  return '';
474
590
  case 'number':
475
591
  return null;
@@ -502,11 +618,11 @@ class DynamicFormComponent {
502
618
  return control;
503
619
  }
504
620
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: DynamicFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
505
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.7", type: DynamicFormComponent, isStandalone: true, selector: "vp-dynamic-form", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { formReady: "formReady" }, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"dynamic-form-container\">\n @for (field of config(); track field.key) {\n @if (getFieldComponent(field.controlType); as fieldComponent) {\n <div [class]=\"'form-field-wrapper ' + (field.styleClass || '')\">\n <!-- Dynamically render the correct field component -->\n <ng-container [ngComponentOutlet]=\"fieldComponent\" [ngComponentOutletInputs]=\"{ form: form, field: field }\" />\n\n @if (field.hint) {\n <small class=\"hint-text\">{{ field.hint }}</small>\n }\n\n <!-- Reusable error display component -->\n <vp-form-field-error [control]=\"getControl(field.key)\" />\n </div>\n } @else {\n <div class=\"form-field-wrapper\">\n <small class=\"p-error\">Tipo de campo '{{ field.controlType }}' n\u00E3o encontrado.</small>\n </div>\n }\n }\n</form>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%}.dynamic-form-container{display:flex;flex-direction:column;gap:1.75rem;padding:1rem;border:1px solid var(--p-surface-border);border-radius:var(--p-border-radius);background-color:var(--p-surface-section)}.form-field-wrapper{display:flex;flex-direction:column;position:relative}:is(p-inputNumber,p-password,p-select,p-iftalabel){width:100%}:host ::ng-deep .p-password,:host ::ng-deep .p-password input,:host ::ng-deep .p-inputnumber,:host ::ng-deep .p-inputnumber input,:host ::ng-deep .p-datepicker input,:host ::ng-deep .p-select{width:100%!important}input[pInputText]{width:100%}.hint-text{margin-top:.5rem;color:var(--p-text-muted-color)}.error-messages{margin-top:.5rem;display:flex;flex-direction:column}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: DynamicFormErrorComponent, selector: "vp-form-field-error", inputs: ["control"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
621
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.7", type: DynamicFormComponent, isStandalone: true, selector: "vp-dynamic-form", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { formReady: "formReady" }, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"dynamic-form-container\">\n @for (field of config(); track field.key) { @if (getFieldComponent(field.controlType); as\n fieldComponent) {\n <div [class]=\"'form-field-wrapper ' + (field.styleClass || '')\">\n <!-- Dynamically render the correct field component -->\n <ng-container\n [ngComponentOutlet]=\"fieldComponent\"\n [ngComponentOutletInputs]=\"{ form: form, field: field }\"\n />\n\n @if (field.hint) {\n <small class=\"hint-text\">{{ field.hint }}</small>\n }\n\n <!-- Reusable error display component -->\n <vp-form-field-error [control]=\"getControl(field.key)\" />\n </div>\n } @else {\n <div class=\"form-field-wrapper\">\n <small class=\"p-error\">Tipo de campo '{{ field.controlType }}' n\u00E3o encontrado.</small>\n </div>\n } }\n</form>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%}.dynamic-form-container{display:flex;flex-direction:column;gap:1.75rem;padding:1rem;border:1px solid var(--p-surface-border);border-radius:var(--p-border-radius);background-color:var(--p-surface-section)}.form-field-wrapper{display:flex;flex-direction:column;position:relative}:is(p-inputNumber,p-password,p-select,p-iftalabel){width:100%}:host ::ng-deep .p-password,:host ::ng-deep .p-password input,:host ::ng-deep .p-inputnumber,:host ::ng-deep .p-inputnumber input,:host ::ng-deep .p-datepicker input,:host ::ng-deep .p-select{width:100%!important}input[pInputText]{width:100%}.hint-text{margin-top:.5rem;color:var(--p-text-muted-color)}.error-messages{margin-top:.5rem;display:flex;flex-direction:column}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: DynamicFormErrorComponent, selector: "vp-form-field-error", inputs: ["control"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
506
622
  }
507
623
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: DynamicFormComponent, decorators: [{
508
624
  type: Component,
509
- args: [{ selector: 'vp-dynamic-form', standalone: true, imports: [CommonModule, ReactiveFormsModule, NgComponentOutlet, DynamicFormErrorComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\" class=\"dynamic-form-container\">\n @for (field of config(); track field.key) {\n @if (getFieldComponent(field.controlType); as fieldComponent) {\n <div [class]=\"'form-field-wrapper ' + (field.styleClass || '')\">\n <!-- Dynamically render the correct field component -->\n <ng-container [ngComponentOutlet]=\"fieldComponent\" [ngComponentOutletInputs]=\"{ form: form, field: field }\" />\n\n @if (field.hint) {\n <small class=\"hint-text\">{{ field.hint }}</small>\n }\n\n <!-- Reusable error display component -->\n <vp-form-field-error [control]=\"getControl(field.key)\" />\n </div>\n } @else {\n <div class=\"form-field-wrapper\">\n <small class=\"p-error\">Tipo de campo '{{ field.controlType }}' n\u00E3o encontrado.</small>\n </div>\n }\n }\n</form>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%}.dynamic-form-container{display:flex;flex-direction:column;gap:1.75rem;padding:1rem;border:1px solid var(--p-surface-border);border-radius:var(--p-border-radius);background-color:var(--p-surface-section)}.form-field-wrapper{display:flex;flex-direction:column;position:relative}:is(p-inputNumber,p-password,p-select,p-iftalabel){width:100%}:host ::ng-deep .p-password,:host ::ng-deep .p-password input,:host ::ng-deep .p-inputnumber,:host ::ng-deep .p-inputnumber input,:host ::ng-deep .p-datepicker input,:host ::ng-deep .p-select{width:100%!important}input[pInputText]{width:100%}.hint-text{margin-top:.5rem;color:var(--p-text-muted-color)}.error-messages{margin-top:.5rem;display:flex;flex-direction:column}\n"] }]
625
+ args: [{ selector: 'vp-dynamic-form', standalone: true, imports: [CommonModule, ReactiveFormsModule, NgComponentOutlet, DynamicFormErrorComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\" class=\"dynamic-form-container\">\n @for (field of config(); track field.key) { @if (getFieldComponent(field.controlType); as\n fieldComponent) {\n <div [class]=\"'form-field-wrapper ' + (field.styleClass || '')\">\n <!-- Dynamically render the correct field component -->\n <ng-container\n [ngComponentOutlet]=\"fieldComponent\"\n [ngComponentOutletInputs]=\"{ form: form, field: field }\"\n />\n\n @if (field.hint) {\n <small class=\"hint-text\">{{ field.hint }}</small>\n }\n\n <!-- Reusable error display component -->\n <vp-form-field-error [control]=\"getControl(field.key)\" />\n </div>\n } @else {\n <div class=\"form-field-wrapper\">\n <small class=\"p-error\">Tipo de campo '{{ field.controlType }}' n\u00E3o encontrado.</small>\n </div>\n } }\n</form>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%}.dynamic-form-container{display:flex;flex-direction:column;gap:1.75rem;padding:1rem;border:1px solid var(--p-surface-border);border-radius:var(--p-border-radius);background-color:var(--p-surface-section)}.form-field-wrapper{display:flex;flex-direction:column;position:relative}:is(p-inputNumber,p-password,p-select,p-iftalabel){width:100%}:host ::ng-deep .p-password,:host ::ng-deep .p-password input,:host ::ng-deep .p-inputnumber,:host ::ng-deep .p-inputnumber input,:host ::ng-deep .p-datepicker input,:host ::ng-deep .p-select{width:100%!important}input[pInputText]{width:100%}.hint-text{margin-top:.5rem;color:var(--p-text-muted-color)}.error-messages{margin-top:.5rem;display:flex;flex-direction:column}\n"] }]
510
626
  }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], formReady: [{ type: i0.Output, args: ["formReady"] }] } });
511
627
 
512
628
  const PRIMENG_PTBR = {
@@ -674,5 +790,5 @@ function provideDynamicFormConfig(messages) {
674
790
  * Generated bundle index. Do not edit.
675
791
  */
676
792
 
677
- export { DYNAMIC_FORM_ERROR_MESSAGES, DatePickerFieldComponent, DynamicFormComponent, DynamicFormErrorComponent, FieldRegistryService, InputTextFieldComponent, NumberInputFieldComponent, PRIMENG_PTBR, PasswordFieldComponent, SelectFieldComponent, TextareaFieldComponent, ToggleSwitchFieldComponent, provideDynamicFormConfig };
793
+ export { DYNAMIC_FORM_ERROR_MESSAGES, DatePickerFieldComponent, DynamicFormComponent, DynamicFormErrorComponent, FieldRegistryService, InputButtonFieldComponent, InputTextFieldComponent, NumberInputFieldComponent, PRIMENG_PTBR, PasswordFieldComponent, SelectFieldComponent, TextareaFieldComponent, ToggleSwitchFieldComponent, provideDynamicFormConfig };
678
794
  //# sourceMappingURL=vipsolucoes-dynamic-form.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"vipsolucoes-dynamic-form.mjs","sources":["../../../projects/dynamic-form/src/lib/interfaces/error-messages.interface.ts","../../../projects/dynamic-form/src/lib/components/form-field-error/form-field-error.component.ts","../../../projects/dynamic-form/src/lib/fields/datepicker-field.component.ts","../../../projects/dynamic-form/src/lib/fields/input-text-field.component.ts","../../../projects/dynamic-form/src/lib/fields/number-input-field.component.ts","../../../projects/dynamic-form/src/lib/fields/password-field.component.ts","../../../projects/dynamic-form/src/lib/fields/select-field.component.ts","../../../projects/dynamic-form/src/lib/fields/textarea-field.component.ts","../../../projects/dynamic-form/src/lib/fields/toggleswitch-field.component.ts","../../../projects/dynamic-form/src/lib/services/field-registry.service.ts","../../../projects/dynamic-form/src/lib/components/dynamic-form/dynamic-form.component.ts","../../../projects/dynamic-form/src/lib/components/dynamic-form/dynamic-form.component.html","../../../projects/dynamic-form/src/lib/i18n/primeng-ptbr.ts","../../../projects/dynamic-form/src/lib/providers/dynamic-form.providers.ts","../../../projects/dynamic-form/src/public-api.ts","../../../projects/dynamic-form/src/vipsolucoes-dynamic-form.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Interface para configuração de mensagens de erro customizadas.\n */\nexport interface DynamicFormErrorMessages {\n required?: string;\n email?: string;\n minlength?: (requiredLength: number) => string;\n maxlength?: (requiredLength: number) => string;\n custom?: (error: any) => string;\n}\n\n/**\n * InjectionToken para prover mensagens de erro customizadas.\n */\nexport const DYNAMIC_FORM_ERROR_MESSAGES = new InjectionToken<DynamicFormErrorMessages>('DYNAMIC_FORM_ERROR_MESSAGES');\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, input } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\n\nimport { DYNAMIC_FORM_ERROR_MESSAGES, DynamicFormErrorMessages } from '../../interfaces/error-messages.interface';\n\n@Component({\n selector: 'vp-form-field-error',\n standalone: true,\n imports: [CommonModule],\n template: `\n @if (errorMessage) {\n <small class=\"p-error\">{{ errorMessage }}</small>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n margin-top: 0.5rem;\n min-height: 1rem;\n }\n .p-error {\n color: var(--p-red-500, #ef4444);\n font-size: 0.875rem;\n }\n `,\n ],\n})\nexport class DynamicFormErrorComponent {\n control = input.required<AbstractControl>();\n\n private readonly customMessages = inject(DYNAMIC_FORM_ERROR_MESSAGES, { optional: true });\n\n // Mapeamento de erros para mensagens\n private readonly defaultErrorMessages: { [key: string]: (err: any) => string } = {\n required: () => this.customMessages?.required ?? 'Este campo é obrigatório.',\n email: () => this.customMessages?.email ?? 'Por favor, insira um e-mail válido.',\n minlength: (err) => this.customMessages?.minlength?.(err.requiredLength) ?? `Mínimo de ${err.requiredLength} caracteres.`,\n maxlength: (err) => this.customMessages?.maxlength?.(err.requiredLength) ?? `Máximo de ${err.requiredLength} caracteres.`,\n custom: (err) => (this.customMessages?.custom ? this.customMessages.custom(err) : err),\n };\n\n // Getter simples - Angular detecta mudanças automaticamente\n get errorMessage(): string | null {\n const ctrl = this.control();\n if (!ctrl || !ctrl.errors || (!ctrl.touched && !ctrl.dirty)) {\n return null;\n }\n\n const errorKey = Object.keys(ctrl.errors)[0];\n return this.defaultErrorMessages[errorKey] ? this.defaultErrorMessages[errorKey](ctrl.errors[errorKey]) : 'Campo inválido.';\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { IftaLabelModule } from 'primeng/iftalabel';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-datepicker-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, DatePickerModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <p-datepicker\n [inputId]=\"field().key\"\n [formControlName]=\"field().key\"\n [showButtonBar]=\"true\"\n [iconDisplay]=\"'input'\"\n [placeholder]=\"field().placeholder || ''\"\n [dateFormat]=\"dateFormat()\"\n [view]=\"field().dateViewType || 'date'\"\n [disabled]=\"field().disabled ?? false\"\n />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n p-datepicker {\n width: 100%;\n }\n `,\n ],\n})\nexport class DatePickerFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n\n readonly dateFormat = computed(() => {\n const viewType = this.field().dateViewType || 'date';\n const customFormat = this.field().dateFormat;\n\n if (viewType === 'month') {\n return 'mm/yy';\n }\n if (viewType === 'year') {\n return 'yy';\n }\n\n return customFormat || 'dd/mm/yy';\n });\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { InputTextModule } from 'primeng/inputtext';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-input-text-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, InputTextModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <input pInputText [id]=\"field().key\" [type]=\"field().controlType\" [formControlName]=\"field().key\" [placeholder]=\"field().placeholder || ''\" [disabled]=\"field().disabled ?? false\" />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n input {\n width: 100%;\n }\n `,\n ],\n})\nexport class InputTextFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { InputNumberModule } from 'primeng/inputnumber';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-number-input-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, InputNumberModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <p-inputNumber [id]=\"field().key\" [formControlName]=\"field().key\" [placeholder]=\"field().placeholder || ''\" [disabled]=\"field().disabled ?? false\" styleClass=\"w-full\" class=\"w-full\" />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n :host ::ng-deep p-inputNumber,\n :host ::ng-deep .p-inputnumber,\n :host ::ng-deep .p-inputnumber input {\n width: 100%;\n }\n `,\n ],\n})\nexport class NumberInputFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { PasswordModule } from 'primeng/password';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-password-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, PasswordModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <p-password\n [id]=\"field().key\"\n [formControlName]=\"field().key\"\n [feedback]=\"false\"\n [toggleMask]=\"true\"\n [placeholder]=\"field().placeholder || ''\"\n [disabled]=\"field().disabled ?? false\"\n styleClass=\"w-full\"\n class=\"w-full\" />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n :host ::ng-deep .p-password,\n :host ::ng-deep .p-password input {\n width: 100%;\n }\n `,\n ],\n})\nexport class PasswordFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { SelectModule } from 'primeng/select';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-select-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, SelectModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <p-select\n [inputId]=\"field().key\"\n [formControlName]=\"field().key\"\n [options]=\"field().options!\"\n [placeholder]=\"field().placeholder || 'Selecione'\"\n [disabled]=\"field().disabled ?? false\"\n optionLabel=\"label\"\n optionValue=\"value\"\n class=\"w-full\" />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n p-select {\n width: 100%;\n }\n `,\n ],\n})\nexport class SelectFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { TextareaModule } from 'primeng/textarea';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-textarea-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, TextareaModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <textarea\n pTextarea\n [id]=\"field().key\"\n [formControlName]=\"field().key\"\n [placeholder]=\"field().placeholder || ''\"\n [rows]=\"field().textareaRows ?? 1\"\n [cols]=\"field().textareaCols\"\n [autoResize]=\"field().textareaAutoResize ?? false\"\n [disabled]=\"field().disabled ?? false\"\n ></textarea>\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n textarea {\n width: 100%;\n }\n `,\n ],\n})\nexport class TextareaFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { ToggleSwitchModule } from 'primeng/toggleswitch';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-toggleswitch-field',\n standalone: true,\n imports: [ReactiveFormsModule, ToggleSwitchModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\" class=\"toggleswitch-field\">\n <p-toggleswitch\n [formControlName]=\"field().key\"\n [inputId]=\"field().key\"\n [invalid]=\"isInvalid()\"\n [disabled]=\"field().disabled ?? false\"\n [trueValue]=\"field().toggleTrueValue ?? true\"\n [falseValue]=\"field().toggleFalseValue ?? false\" />\n <label [for]=\"field().key\" class=\"toggleswitch-label\">{{ field().label }}</label>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n .toggleswitch-field {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n width: 100%;\n }\n .toggleswitch-label {\n cursor: pointer;\n user-select: none;\n font-size: 0.875rem;\n color: var(--p-text-color, #333);\n margin: 0;\n }\n p-toggleswitch {\n flex-shrink: 0;\n }\n `,\n ],\n})\nexport class ToggleSwitchFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n\n isInvalid = computed(() => {\n const control = this.form().get(this.field().key);\n return control ? control.invalid && (control.touched || control.dirty) : false;\n });\n}\n","import { Injectable, signal, Type } from '@angular/core';\n\n/**\n * Serviço para registro de campos customizados.\n * Permite adicionar novos tipos de campos dinamicamente.\n */\n@Injectable({ providedIn: 'root' })\nexport class FieldRegistryService {\n private readonly registry = signal<Map<string, Type<any>>>(new Map());\n\n /**\n * Registra um novo tipo de campo.\n * @param type Tipo do campo (ex: 'custom', 'file', etc.)\n * @param component Componente Angular que renderiza o campo\n */\n registerField(type: string, component: Type<any>): void {\n this.registry.update((map) => new Map(map).set(type, component));\n }\n\n /**\n * Obtém o componente registrado para um tipo de campo.\n * @param type Tipo do campo\n * @returns Componente Angular ou undefined se não encontrado\n */\n getField(type: string): Type<any> | undefined {\n return this.registry().get(type);\n }\n\n /**\n * Remove um tipo de campo do registro.\n * @param type Tipo do campo a ser removido\n */\n unregisterField(type: string): void {\n this.registry.update((map) => {\n const newMap = new Map(map);\n newMap.delete(type);\n return newMap;\n });\n }\n\n /**\n * Limpa todos os campos registrados.\n */\n clear(): void {\n this.registry.set(new Map());\n }\n}\n","import { CommonModule, NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, inject, input, OnInit, output, Type } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractControl, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\n\nimport { DynamicFormErrorComponent } from '../form-field-error/form-field-error.component';\nimport { DatePickerFieldComponent } from '../../fields/datepicker-field.component';\nimport { InputTextFieldComponent } from '../../fields/input-text-field.component';\nimport { NumberInputFieldComponent } from '../../fields/number-input-field.component';\nimport { PasswordFieldComponent } from '../../fields/password-field.component';\nimport { SelectFieldComponent } from '../../fields/select-field.component';\nimport { TextareaFieldComponent } from '../../fields/textarea-field.component';\nimport { ToggleSwitchFieldComponent } from '../../fields/toggleswitch-field.component';\nimport { iFormConfig } from '../../interfaces/form-config.interface';\nimport { FieldRegistryService } from '../../services/field-registry.service';\n\n@Component({\n selector: 'vp-dynamic-form',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, NgComponentOutlet, DynamicFormErrorComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './dynamic-form.component.html',\n styleUrl: './dynamic-form.component.scss',\n})\nexport class DynamicFormComponent implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly fieldRegistry = inject(FieldRegistryService);\n\n config = input.required<iFormConfig[]>();\n formReady = output<FormGroup>();\n\n form = new FormGroup({});\n\n readonly fieldComponents: { [key: string]: Type<any> } = {\n text: InputTextFieldComponent,\n email: InputTextFieldComponent,\n password: PasswordFieldComponent,\n number: NumberInputFieldComponent,\n select: SelectFieldComponent,\n datepicker: DatePickerFieldComponent,\n textarea: TextareaFieldComponent,\n toggleswitch: ToggleSwitchFieldComponent,\n };\n\n ngOnInit(): void {\n const configValue = this.config();\n if (configValue && configValue.length > 0) {\n this.buildForm(configValue);\n this.setupFieldDependencies(configValue);\n this.formReady.emit(this.form);\n }\n }\n\n private buildForm(config: iFormConfig[]): void {\n config.forEach((field) => {\n // Para toggle switch, o valor padrão é false se não especificado\n const defaultValue = field.controlType === 'toggleswitch' ? (field.value ?? false) : (field.value ?? '');\n\n // Se o campo tem enabledWhen, ele deve começar desabilitado a menos que o toggle já esteja ativo\n const shouldBeDisabled = field.disabled ?? (field.enabledWhen ? !this.getToggleValue(field.enabledWhen, config) : false);\n\n const control = shouldBeDisabled\n ? new FormControl(\n { value: defaultValue, disabled: true },\n {\n validators: field.validators ?? [],\n }\n )\n : new FormControl(defaultValue, {\n validators: field.validators ?? [],\n });\n this.form.addControl(field.key, control);\n });\n }\n\n private setupFieldDependencies(config: iFormConfig[]): void {\n config.forEach((field) => {\n if (!field.enabledWhen) {\n return;\n }\n\n const toggleField = config.find((f) => f.key === field.enabledWhen);\n\n if (!toggleField) {\n console.warn(\n `DynamicFormComponent: Campo '${field.key}' referencia '${field.enabledWhen}' em enabledWhen, mas este campo não existe no formulário.`\n );\n return;\n }\n\n if (toggleField.controlType !== 'toggleswitch') {\n console.warn(\n `DynamicFormComponent: Campo '${field.key}' referencia '${field.enabledWhen}' em enabledWhen, mas este campo não é do tipo 'toggleswitch'.`\n );\n return;\n }\n\n const toggleControl = this.form.get(field.enabledWhen);\n const dependentControl = this.form.get(field.key);\n\n if (!toggleControl || !dependentControl) {\n console.warn(\n `DynamicFormComponent: Não foi possível encontrar os controles para configurar a dependência entre '${field.enabledWhen}' e '${field.key}'.`\n );\n return;\n }\n\n // Configura a subscription para reagir às mudanças do toggle\n toggleControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((toggleValue) => {\n const isToggleActive = toggleValue === (toggleField.toggleTrueValue ?? true);\n\n if (isToggleActive) {\n dependentControl.enable();\n } else {\n // Limpa o valor do campo antes de desabilitá-lo\n const resetValue = this.getResetValueForFieldType(field.controlType);\n dependentControl.setValue(resetValue, { emitEvent: false });\n dependentControl.disable();\n }\n });\n });\n }\n\n private getToggleValue(toggleKey: string, config: iFormConfig[]): boolean {\n const toggleField = config.find((f) => f.key === toggleKey);\n if (!toggleField || toggleField.controlType !== 'toggleswitch') {\n return false;\n }\n\n const toggleTrueValue = toggleField.toggleTrueValue ?? true;\n const toggleValue = toggleField.value ?? false;\n\n return toggleValue === toggleTrueValue;\n }\n\n /**\n * Retorna o valor padrão de reset para cada tipo de campo.\n * Usado quando um campo dependente é desabilitado e precisa ser limpo.\n */\n private getResetValueForFieldType(controlType: string): any {\n switch (controlType) {\n case 'text':\n case 'email':\n case 'password':\n case 'textarea':\n return '';\n case 'number':\n return null;\n case 'select':\n return null;\n case 'datepicker':\n return null;\n default:\n return '';\n }\n }\n\n /**\n * Obtém o componente a ser renderizado para um tipo de campo.\n * Primeiro verifica no registro customizado, depois nos componentes padrão.\n */\n getFieldComponent(controlType: string): Type<any> | null {\n // Verifica primeiro no registro customizado\n const customComponent = this.fieldRegistry.getField(controlType);\n if (customComponent) {\n return customComponent;\n }\n\n // Fallback para componentes padrão\n return this.fieldComponents[controlType] || null;\n }\n\n getControl(key: string): AbstractControl {\n const control = this.form.get(key);\n if (!control) {\n console.warn(`DynamicFormComponent: Controle não encontrado para a chave: ${key}`);\n }\n return control!;\n }\n}\n","<form [formGroup]=\"form\" class=\"dynamic-form-container\">\n @for (field of config(); track field.key) {\n @if (getFieldComponent(field.controlType); as fieldComponent) {\n <div [class]=\"'form-field-wrapper ' + (field.styleClass || '')\">\n <!-- Dynamically render the correct field component -->\n <ng-container [ngComponentOutlet]=\"fieldComponent\" [ngComponentOutletInputs]=\"{ form: form, field: field }\" />\n\n @if (field.hint) {\n <small class=\"hint-text\">{{ field.hint }}</small>\n }\n\n <!-- Reusable error display component -->\n <vp-form-field-error [control]=\"getControl(field.key)\" />\n </div>\n } @else {\n <div class=\"form-field-wrapper\">\n <small class=\"p-error\">Tipo de campo '{{ field.controlType }}' não encontrado.</small>\n </div>\n }\n }\n</form>\n","import { Translation } from 'primeng/api';\n\nexport const PRIMENG_PTBR: Translation = {\n // Filtros\n startsWith: 'Começa com',\n contains: 'Contém',\n notContains: 'Não contém',\n endsWith: 'Termina com',\n equals: 'Igual',\n notEquals: 'Diferente',\n noFilter: 'Sem filtro',\n lt: 'Menor que',\n lte: 'Menor ou igual a',\n gt: 'Maior que',\n gte: 'Maior ou igual a',\n is: 'É',\n isNot: 'Não é',\n before: 'Antes',\n after: 'Depois',\n dateIs: 'Data é',\n dateIsNot: 'Data não é',\n dateBefore: 'Data antes',\n dateAfter: 'Data depois',\n\n // Regras\n clear: 'Limpar',\n apply: 'Aplicar',\n matchAll: 'Corresponder a todos',\n matchAny: 'Corresponder a qualquer',\n addRule: 'Adicionar regra',\n removeRule: 'Remover regra',\n\n // Ações\n accept: 'Sim',\n reject: 'Não',\n choose: 'Escolher',\n upload: 'Enviar',\n cancel: 'Cancelar',\n completed: 'Concluído',\n pending: 'Pendente',\n\n // Arquivos\n fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],\n emptyMessage: 'Nenhum registro encontrado',\n emptyFilterMessage: 'Nenhum resultado encontrado',\n fileChosenMessage: '{0} arquivo(s) selecionado(s)',\n noFileChosenMessage: 'Nenhum arquivo selecionado',\n\n // Datas\n dayNames: ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado'],\n dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],\n dayNamesMin: ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],\n monthNames: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],\n monthNamesShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],\n dateFormat: 'dd/mm/yy',\n firstDayOfWeek: 0,\n today: 'Hoje',\n weekHeader: 'Sem',\n\n // Password\n weak: 'Fraca',\n medium: 'Média',\n strong: 'Forte',\n passwordPrompt: 'Digite uma senha',\n\n // Date navigation\n chooseYear: 'Escolher ano',\n chooseMonth: 'Escolher mês',\n chooseDate: 'Escolher data',\n prevDecade: 'Década anterior',\n nextDecade: 'Próxima década',\n prevYear: 'Ano anterior',\n nextYear: 'Próximo ano',\n prevMonth: 'Mês anterior',\n nextMonth: 'Próximo mês',\n prevHour: 'Hora anterior',\n nextHour: 'Próxima hora',\n prevMinute: 'Minuto anterior',\n nextMinute: 'Próximo minuto',\n prevSecond: 'Segundo anterior',\n nextSecond: 'Próximo segundo',\n am: 'AM',\n pm: 'PM',\n\n // Busca / seleção\n searchMessage: 'Digite para pesquisar',\n selectionMessage: '{0} item(ns) selecionado(s)',\n emptySelectionMessage: 'Nenhum item selecionado',\n emptySearchMessage: 'Nenhum resultado encontrado',\n\n // ARIA (acessibilidade)\n aria: {\n trueLabel: 'Verdadeiro',\n falseLabel: 'Falso',\n nullLabel: 'Não selecionado',\n star: '1 estrela',\n stars: '{star} estrelas',\n selectAll: 'Selecionar todos',\n unselectAll: 'Desmarcar todos',\n close: 'Fechar',\n previous: 'Anterior',\n next: 'Próximo',\n navigation: 'Navegação',\n scrollTop: 'Rolar para o topo',\n moveTop: 'Mover para o topo',\n moveUp: 'Mover para cima',\n moveDown: 'Mover para baixo',\n moveBottom: 'Mover para o final',\n moveToTarget: 'Mover para o destino',\n moveToSource: 'Mover para a origem',\n moveAllToTarget: 'Mover todos para o destino',\n moveAllToSource: 'Mover todos para a origem',\n pageLabel: 'Página {page}',\n firstPageLabel: 'Primeira página',\n lastPageLabel: 'Última página',\n nextPageLabel: 'Próxima página',\n prevPageLabel: 'Página anterior',\n rowsPerPageLabel: 'Itens por página',\n previousPageLabel: 'Página anterior',\n jumpToPageDropdownLabel: 'Pular para página',\n jumpToPageInputLabel: 'Ir para página',\n selectRow: 'Selecionar linha',\n unselectRow: 'Desmarcar linha',\n expandRow: 'Expandir linha',\n collapseRow: 'Recolher linha',\n showFilterMenu: 'Mostrar menu de filtro',\n hideFilterMenu: 'Ocultar menu de filtro',\n filterOperator: 'Operador de filtro',\n filterConstraint: 'Restrição de filtro',\n editRow: 'Editar linha',\n saveEdit: 'Salvar edição',\n cancelEdit: 'Cancelar edição',\n listView: 'Visualização em lista',\n gridView: 'Visualização em grade',\n slide: 'Slide',\n slideNumber: 'Slide {slideNumber}',\n zoomImage: 'Ampliar imagem',\n zoomIn: 'Aumentar zoom',\n zoomOut: 'Reduzir zoom',\n rotateRight: 'Girar à direita',\n rotateLeft: 'Girar à esquerda',\n listLabel: 'Lista',\n selectColor: 'Selecionar cor',\n removeLabel: 'Remover',\n browseFiles: 'Procurar arquivos',\n maximizeLabel: 'Maximizar',\n minimizeLabel: 'Minimizar',\n },\n};\n","import { Provider } from '@angular/core';\n\nimport { DYNAMIC_FORM_ERROR_MESSAGES, DynamicFormErrorMessages } from '../interfaces/error-messages.interface';\n\n/**\n * Provider para configurar mensagens de erro customizadas.\n * @param messages Mensagens de erro customizadas\n * @returns Provider configurado\n */\nexport function provideDynamicFormConfig(messages?: DynamicFormErrorMessages): Provider[] {\n const providers: Provider[] = [];\n\n if (messages) {\n providers.push({\n provide: DYNAMIC_FORM_ERROR_MESSAGES,\n useValue: messages,\n });\n }\n\n return providers;\n}\n","import { PRIMENG_PTBR } from './lib/i18n/primeng-ptbr';\n/*\n * Public API Surface of @vipsolucoes/dynamic-form\n */\n\n// Componentes\nexport { DynamicFormComponent } from './lib/components/dynamic-form/dynamic-form.component';\nexport { DynamicFormErrorComponent } from './lib/components/form-field-error/form-field-error.component';\n\n// Fields (para uso standalone)\nexport { InputTextFieldComponent } from './lib/fields/input-text-field.component';\nexport { SelectFieldComponent } from './lib/fields/select-field.component';\nexport { DatePickerFieldComponent } from './lib/fields/datepicker-field.component';\nexport { NumberInputFieldComponent } from './lib/fields/number-input-field.component';\nexport { PasswordFieldComponent } from './lib/fields/password-field.component';\nexport { TextareaFieldComponent } from './lib/fields/textarea-field.component';\nexport { ToggleSwitchFieldComponent } from './lib/fields/toggleswitch-field.component';\n\n// Interfaces\nexport type { iFormConfig, iFieldOption } from './lib/interfaces/form-config.interface';\nexport type { DynamicFormErrorMessages } from './lib/interfaces/error-messages.interface';\nexport { DYNAMIC_FORM_ERROR_MESSAGES } from './lib/interfaces/error-messages.interface';\n\n// Services\nexport { FieldRegistryService } from './lib/services/field-registry.service';\n\n// Utility functions\nexport { PRIMENG_PTBR } from './lib/i18n/primeng-ptbr';\nexport { provideDynamicFormConfig } from './lib/providers/dynamic-form.providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i2","i1"],"mappings":"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"}
1
+ {"version":3,"file":"vipsolucoes-dynamic-form.mjs","sources":["../../../projects/dynamic-form/src/lib/interfaces/error-messages.interface.ts","../../../projects/dynamic-form/src/lib/components/form-field-error/form-field-error.component.ts","../../../projects/dynamic-form/src/lib/fields/datepicker-field.component.ts","../../../projects/dynamic-form/src/lib/fields/input-text-field.component.ts","../../../projects/dynamic-form/src/lib/fields/input-button-field.component.ts","../../../projects/dynamic-form/src/lib/fields/number-input-field.component.ts","../../../projects/dynamic-form/src/lib/fields/password-field.component.ts","../../../projects/dynamic-form/src/lib/fields/select-field.component.ts","../../../projects/dynamic-form/src/lib/fields/textarea-field.component.ts","../../../projects/dynamic-form/src/lib/fields/toggleswitch-field.component.ts","../../../projects/dynamic-form/src/lib/services/field-registry.service.ts","../../../projects/dynamic-form/src/lib/components/dynamic-form/dynamic-form.component.ts","../../../projects/dynamic-form/src/lib/components/dynamic-form/dynamic-form.component.html","../../../projects/dynamic-form/src/lib/i18n/primeng-ptbr.ts","../../../projects/dynamic-form/src/lib/providers/dynamic-form.providers.ts","../../../projects/dynamic-form/src/public-api.ts","../../../projects/dynamic-form/src/vipsolucoes-dynamic-form.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Interface para configuração de mensagens de erro customizadas.\n */\nexport interface DynamicFormErrorMessages {\n required?: string;\n email?: string;\n minlength?: (requiredLength: number) => string;\n maxlength?: (requiredLength: number) => string;\n custom?: (error: any) => string;\n}\n\n/**\n * InjectionToken para prover mensagens de erro customizadas.\n */\nexport const DYNAMIC_FORM_ERROR_MESSAGES = new InjectionToken<DynamicFormErrorMessages>(\n 'DYNAMIC_FORM_ERROR_MESSAGES'\n);\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, input } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\n\nimport { DYNAMIC_FORM_ERROR_MESSAGES, DynamicFormErrorMessages } from '../../interfaces/error-messages.interface';\n\n@Component({\n selector: 'vp-form-field-error',\n standalone: true,\n imports: [CommonModule],\n template: `\n @if (errorMessage) {\n <small class=\"p-error\">{{ errorMessage }}</small>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n margin-top: 0.5rem;\n min-height: 1rem;\n }\n .p-error {\n color: var(--p-red-500, #ef4444);\n font-size: 0.875rem;\n }\n `,\n ],\n})\nexport class DynamicFormErrorComponent {\n control = input.required<AbstractControl>();\n\n private readonly customMessages = inject(DYNAMIC_FORM_ERROR_MESSAGES, { optional: true });\n\n // Mapeamento de erros para mensagens\n private readonly defaultErrorMessages: { [key: string]: (err: any) => string } = {\n required: () => this.customMessages?.required ?? 'Este campo é obrigatório.',\n email: () => this.customMessages?.email ?? 'Por favor, insira um e-mail válido.',\n minlength: (err) => this.customMessages?.minlength?.(err.requiredLength) ?? `Mínimo de ${err.requiredLength} caracteres.`,\n maxlength: (err) => this.customMessages?.maxlength?.(err.requiredLength) ?? `Máximo de ${err.requiredLength} caracteres.`,\n custom: (err) => (this.customMessages?.custom ? this.customMessages.custom(err) : err),\n };\n\n // Getter simples - Angular detecta mudanças automaticamente\n get errorMessage(): string | null {\n const ctrl = this.control();\n if (!ctrl || !ctrl.errors || (!ctrl.touched && !ctrl.dirty)) {\n return null;\n }\n\n const errorKey = Object.keys(ctrl.errors)[0];\n return this.defaultErrorMessages[errorKey] ? this.defaultErrorMessages[errorKey](ctrl.errors[errorKey]) : 'Campo inválido.';\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { IftaLabelModule } from 'primeng/iftalabel';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-datepicker-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, DatePickerModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <p-datepicker\n [inputId]=\"field().key\"\n [formControlName]=\"field().key\"\n [showButtonBar]=\"true\"\n [iconDisplay]=\"'input'\"\n [placeholder]=\"field().placeholder || ''\"\n [dateFormat]=\"dateFormat()\"\n [view]=\"field().dateViewType || 'date'\"\n />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n p-datepicker {\n width: 100%;\n }\n `,\n ],\n})\nexport class DatePickerFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n\n readonly dateFormat = computed(() => {\n const viewType = this.field().dateViewType || 'date';\n const customFormat = this.field().dateFormat;\n\n if (viewType === 'month') {\n return 'mm/yy';\n }\n if (viewType === 'year') {\n return 'yy';\n }\n\n return customFormat || 'dd/mm/yy';\n });\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { InputTextModule } from 'primeng/inputtext';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-input-text-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, InputTextModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <input pInputText [id]=\"field().key\" [type]=\"field().controlType\" [formControlName]=\"field().key\" [placeholder]=\"field().placeholder || ''\" />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n input {\n width: 100%;\n }\n `,\n ],\n})\nexport class InputTextFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { ButtonModule } from 'primeng/button';\nimport { TooltipModule } from 'primeng/tooltip';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-input-button-field',\n standalone: true,\n imports: [\n ReactiveFormsModule,\n IftaLabelModule,\n InputTextModule,\n InputGroupModule,\n InputGroupAddonModule,\n ButtonModule,\n TooltipModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-inputgroup>\n @if (buttonPosition() === 'left') {\n <p-button\n type=\"button\"\n [icon]=\"buttonConfig()?.icon || ''\"\n [label]=\"buttonConfig()?.label || ''\"\n [severity]=\"buttonConfig()?.severity || 'primary'\"\n [pTooltip]=\"buttonConfig()?.tooltip || ''\"\n tooltipPosition=\"top\"\n (click)=\"onButtonClick()\"\n [disabled]=\"isFieldDisabled()\"\n />\n }\n\n <p-iftalabel>\n <input\n pInputText\n [id]=\"field().key\"\n [formControlName]=\"field().key\"\n [placeholder]=\"field().placeholder || ''\"\n />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n\n @if (buttonPosition() === 'right') {\n <p-button\n type=\"button\"\n [icon]=\"buttonConfig()?.icon || ''\"\n [label]=\"buttonConfig()?.label || ''\"\n [severity]=\"buttonConfig()?.severity || 'primary'\"\n [pTooltip]=\"buttonConfig()?.tooltip || ''\"\n tooltipPosition=\"top\"\n (click)=\"onButtonClick()\"\n [disabled]=\"isFieldDisabled()\"\n />\n }\n </p-inputgroup>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-inputgroup {\n display: flex;\n width: 100%;\n }\n p-iftalabel {\n flex: 1;\n }\n `,\n ],\n})\nexport class InputButtonFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n\n buttonConfig() {\n return this.field().buttonConfig;\n }\n\n buttonPosition(): 'left' | 'right' {\n return this.buttonConfig()?.position || 'right';\n }\n\n isFieldDisabled(): boolean {\n const control = this.form().get(this.field().key);\n return control?.disabled ?? false;\n }\n\n onButtonClick(): void {\n const control = this.form().get(this.field().key);\n const value = control?.value;\n const callback = this.field().buttonCallback;\n\n if (callback) {\n callback(this.field().key, value);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { InputNumberModule } from 'primeng/inputnumber';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-number-input-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, InputNumberModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <p-inputNumber [id]=\"field().key\" [formControlName]=\"field().key\" [placeholder]=\"field().placeholder || ''\" styleClass=\"w-full\" class=\"w-full\" />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n :host ::ng-deep p-inputNumber,\n :host ::ng-deep .p-inputnumber,\n :host ::ng-deep .p-inputnumber input {\n width: 100%;\n }\n `,\n ],\n})\nexport class NumberInputFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { PasswordModule } from 'primeng/password';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-password-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, PasswordModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <p-password\n [id]=\"field().key\"\n [formControlName]=\"field().key\"\n [feedback]=\"false\"\n [toggleMask]=\"true\"\n [placeholder]=\"field().placeholder || ''\"\n styleClass=\"w-full\"\n class=\"w-full\" />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n :host ::ng-deep .p-password,\n :host ::ng-deep .p-password input {\n width: 100%;\n }\n `,\n ],\n})\nexport class PasswordFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { SelectModule } from 'primeng/select';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-select-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, SelectModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <p-select\n [inputId]=\"field().key\"\n [formControlName]=\"field().key\"\n [options]=\"field().options!\"\n [placeholder]=\"field().placeholder || 'Selecione'\"\n optionLabel=\"label\"\n optionValue=\"value\"\n class=\"w-full\" />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n p-select {\n width: 100%;\n }\n `,\n ],\n})\nexport class SelectFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { TextareaModule } from 'primeng/textarea';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-textarea-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, TextareaModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <textarea\n pTextarea\n [id]=\"field().key\"\n [formControlName]=\"field().key\"\n [placeholder]=\"field().placeholder || ''\"\n [rows]=\"field().textareaRows ?? 1\"\n [cols]=\"field().textareaCols\"\n [autoResize]=\"field().textareaAutoResize ?? false\"\n ></textarea>\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n textarea {\n width: 100%;\n }\n `,\n ],\n})\nexport class TextareaFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { ToggleSwitchModule } from 'primeng/toggleswitch';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-toggleswitch-field',\n standalone: true,\n imports: [ReactiveFormsModule, ToggleSwitchModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\" class=\"toggleswitch-field\">\n <p-toggleswitch\n [formControlName]=\"field().key\"\n [inputId]=\"field().key\"\n [invalid]=\"isInvalid()\"\n [trueValue]=\"field().toggleTrueValue ?? true\"\n [falseValue]=\"field().toggleFalseValue ?? false\" />\n <label [for]=\"field().key\" class=\"toggleswitch-label\">{{ field().label }}</label>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n .toggleswitch-field {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n width: 100%;\n }\n .toggleswitch-label {\n cursor: pointer;\n user-select: none;\n font-size: 0.875rem;\n color: var(--p-text-color, #333);\n margin: 0;\n }\n p-toggleswitch {\n flex-shrink: 0;\n }\n `,\n ],\n})\nexport class ToggleSwitchFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n\n isInvalid = computed(() => {\n const control = this.form().get(this.field().key);\n return control ? control.invalid && (control.touched || control.dirty) : false;\n });\n}\n","import { Injectable, signal, Type } from '@angular/core';\n\n/**\n * Serviço para registro de campos customizados.\n * Permite adicionar novos tipos de campos dinamicamente.\n */\n@Injectable({ providedIn: 'root' })\nexport class FieldRegistryService {\n private readonly registry = signal<Map<string, Type<any>>>(new Map());\n\n /**\n * Registra um novo tipo de campo.\n * @param type Tipo do campo (ex: 'custom', 'file', etc.)\n * @param component Componente Angular que renderiza o campo\n */\n registerField(type: string, component: Type<any>): void {\n this.registry.update((map) => new Map(map).set(type, component));\n }\n\n /**\n * Obtém o componente registrado para um tipo de campo.\n * @param type Tipo do campo\n * @returns Componente Angular ou undefined se não encontrado\n */\n getField(type: string): Type<any> | undefined {\n return this.registry().get(type);\n }\n\n /**\n * Remove um tipo de campo do registro.\n * @param type Tipo do campo a ser removido\n */\n unregisterField(type: string): void {\n this.registry.update((map) => {\n const newMap = new Map(map);\n newMap.delete(type);\n return newMap;\n });\n }\n\n /**\n * Limpa todos os campos registrados.\n */\n clear(): void {\n this.registry.set(new Map());\n }\n}\n","import { CommonModule, NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, inject, input, OnInit, output, Type } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractControl, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\n\nimport { DynamicFormErrorComponent } from '../form-field-error/form-field-error.component';\nimport { DatePickerFieldComponent } from '../../fields/datepicker-field.component';\nimport { InputTextFieldComponent } from '../../fields/input-text-field.component';\nimport { InputButtonFieldComponent } from '../../fields/input-button-field.component';\nimport { NumberInputFieldComponent } from '../../fields/number-input-field.component';\nimport { PasswordFieldComponent } from '../../fields/password-field.component';\nimport { SelectFieldComponent } from '../../fields/select-field.component';\nimport { TextareaFieldComponent } from '../../fields/textarea-field.component';\nimport { ToggleSwitchFieldComponent } from '../../fields/toggleswitch-field.component';\nimport { iFormConfig } from '../../interfaces/form-config.interface';\nimport { FieldRegistryService } from '../../services/field-registry.service';\n\n@Component({\n selector: 'vp-dynamic-form',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, NgComponentOutlet, DynamicFormErrorComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './dynamic-form.component.html',\n styleUrl: './dynamic-form.component.scss',\n})\nexport class DynamicFormComponent implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly fieldRegistry = inject(FieldRegistryService);\n\n config = input.required<iFormConfig[]>();\n formReady = output<FormGroup>();\n\n form = new FormGroup({});\n\n readonly fieldComponents: { [key: string]: Type<any> } = {\n text: InputTextFieldComponent,\n email: InputTextFieldComponent,\n password: PasswordFieldComponent,\n number: NumberInputFieldComponent,\n select: SelectFieldComponent,\n datepicker: DatePickerFieldComponent,\n textarea: TextareaFieldComponent,\n toggleswitch: ToggleSwitchFieldComponent,\n 'input-button': InputButtonFieldComponent,\n };\n\n ngOnInit(): void {\n const configValue = this.config();\n if (configValue && configValue.length > 0) {\n this.buildForm(configValue);\n this.setupFieldDependencies(configValue);\n this.formReady.emit(this.form);\n }\n }\n\n private buildForm(config: iFormConfig[]): void {\n config.forEach((field) => {\n // Para toggle switch, o valor padrão é false se não especificado\n const defaultValue = field.controlType === 'toggleswitch' ? (field.value ?? false) : (field.value ?? '');\n\n // Se o campo tem enabledWhen, ele deve começar desabilitado a menos que o toggle já esteja ativo\n const shouldBeDisabled = field.disabled ?? (field.enabledWhen ? !this.getToggleValue(field.enabledWhen, config) : false);\n\n const control = shouldBeDisabled\n ? new FormControl(\n { value: defaultValue, disabled: true },\n {\n validators: field.validators ?? [],\n }\n )\n : new FormControl(defaultValue, {\n validators: field.validators ?? [],\n });\n this.form.addControl(field.key, control);\n });\n }\n\n private setupFieldDependencies(config: iFormConfig[]): void {\n config.forEach((field) => {\n if (!field.enabledWhen) {\n return;\n }\n\n const toggleField = config.find((f) => f.key === field.enabledWhen);\n\n if (!toggleField) {\n console.warn(\n `DynamicFormComponent: Campo '${field.key}' referencia '${field.enabledWhen}' em enabledWhen, mas este campo não existe no formulário.`\n );\n return;\n }\n\n if (toggleField.controlType !== 'toggleswitch') {\n console.warn(\n `DynamicFormComponent: Campo '${field.key}' referencia '${field.enabledWhen}' em enabledWhen, mas este campo não é do tipo 'toggleswitch'.`\n );\n return;\n }\n\n const toggleControl = this.form.get(field.enabledWhen);\n const dependentControl = this.form.get(field.key);\n\n if (!toggleControl || !dependentControl) {\n console.warn(\n `DynamicFormComponent: Não foi possível encontrar os controles para configurar a dependência entre '${field.enabledWhen}' e '${field.key}'.`\n );\n return;\n }\n\n // Configura a subscription para reagir às mudanças do toggle\n toggleControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((toggleValue) => {\n const isToggleActive = toggleValue === (toggleField.toggleTrueValue ?? true);\n\n if (isToggleActive) {\n dependentControl.enable();\n } else {\n // Limpa o valor do campo antes de desabilitá-lo\n const resetValue = this.getResetValueForFieldType(field.controlType);\n dependentControl.setValue(resetValue, { emitEvent: false });\n dependentControl.disable();\n }\n });\n });\n }\n\n private getToggleValue(toggleKey: string, config: iFormConfig[]): boolean {\n const toggleField = config.find((f) => f.key === toggleKey);\n if (!toggleField || toggleField.controlType !== 'toggleswitch') {\n return false;\n }\n\n const toggleTrueValue = toggleField.toggleTrueValue ?? true;\n const toggleValue = toggleField.value ?? false;\n\n return toggleValue === toggleTrueValue;\n }\n\n /**\n * Retorna o valor padrão de reset para cada tipo de campo.\n * Usado quando um campo dependente é desabilitado e precisa ser limpo.\n */\n private getResetValueForFieldType(controlType: string): any {\n switch (controlType) {\n case 'text':\n case 'email':\n case 'password':\n case 'textarea':\n case 'input-button':\n return '';\n case 'number':\n return null;\n case 'select':\n return null;\n case 'datepicker':\n return null;\n default:\n return '';\n }\n }\n\n /**\n * Obtém o componente a ser renderizado para um tipo de campo.\n * Primeiro verifica no registro customizado, depois nos componentes padrão.\n */\n getFieldComponent(controlType: string): Type<any> | null {\n // Verifica primeiro no registro customizado\n const customComponent = this.fieldRegistry.getField(controlType);\n if (customComponent) {\n return customComponent;\n }\n\n // Fallback para componentes padrão\n return this.fieldComponents[controlType] || null;\n }\n\n getControl(key: string): AbstractControl {\n const control = this.form.get(key);\n if (!control) {\n console.warn(`DynamicFormComponent: Controle não encontrado para a chave: ${key}`);\n }\n return control!;\n }\n}\n","<form [formGroup]=\"form\" class=\"dynamic-form-container\">\n @for (field of config(); track field.key) { @if (getFieldComponent(field.controlType); as\n fieldComponent) {\n <div [class]=\"'form-field-wrapper ' + (field.styleClass || '')\">\n <!-- Dynamically render the correct field component -->\n <ng-container\n [ngComponentOutlet]=\"fieldComponent\"\n [ngComponentOutletInputs]=\"{ form: form, field: field }\"\n />\n\n @if (field.hint) {\n <small class=\"hint-text\">{{ field.hint }}</small>\n }\n\n <!-- Reusable error display component -->\n <vp-form-field-error [control]=\"getControl(field.key)\" />\n </div>\n } @else {\n <div class=\"form-field-wrapper\">\n <small class=\"p-error\">Tipo de campo '{{ field.controlType }}' não encontrado.</small>\n </div>\n } }\n</form>\n","import { Translation } from 'primeng/api';\n\nexport const PRIMENG_PTBR: Translation = {\n // Filtros\n startsWith: 'Começa com',\n contains: 'Contém',\n notContains: 'Não contém',\n endsWith: 'Termina com',\n equals: 'Igual',\n notEquals: 'Diferente',\n noFilter: 'Sem filtro',\n lt: 'Menor que',\n lte: 'Menor ou igual a',\n gt: 'Maior que',\n gte: 'Maior ou igual a',\n is: 'É',\n isNot: 'Não é',\n before: 'Antes',\n after: 'Depois',\n dateIs: 'Data é',\n dateIsNot: 'Data não é',\n dateBefore: 'Data antes',\n dateAfter: 'Data depois',\n\n // Regras\n clear: 'Limpar',\n apply: 'Aplicar',\n matchAll: 'Corresponder a todos',\n matchAny: 'Corresponder a qualquer',\n addRule: 'Adicionar regra',\n removeRule: 'Remover regra',\n\n // Ações\n accept: 'Sim',\n reject: 'Não',\n choose: 'Escolher',\n upload: 'Enviar',\n cancel: 'Cancelar',\n completed: 'Concluído',\n pending: 'Pendente',\n\n // Arquivos\n fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],\n emptyMessage: 'Nenhum registro encontrado',\n emptyFilterMessage: 'Nenhum resultado encontrado',\n fileChosenMessage: '{0} arquivo(s) selecionado(s)',\n noFileChosenMessage: 'Nenhum arquivo selecionado',\n\n // Datas\n dayNames: ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado'],\n dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],\n dayNamesMin: ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],\n monthNames: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],\n monthNamesShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],\n dateFormat: 'dd/mm/yy',\n firstDayOfWeek: 0,\n today: 'Hoje',\n weekHeader: 'Sem',\n\n // Password\n weak: 'Fraca',\n medium: 'Média',\n strong: 'Forte',\n passwordPrompt: 'Digite uma senha',\n\n // Date navigation\n chooseYear: 'Escolher ano',\n chooseMonth: 'Escolher mês',\n chooseDate: 'Escolher data',\n prevDecade: 'Década anterior',\n nextDecade: 'Próxima década',\n prevYear: 'Ano anterior',\n nextYear: 'Próximo ano',\n prevMonth: 'Mês anterior',\n nextMonth: 'Próximo mês',\n prevHour: 'Hora anterior',\n nextHour: 'Próxima hora',\n prevMinute: 'Minuto anterior',\n nextMinute: 'Próximo minuto',\n prevSecond: 'Segundo anterior',\n nextSecond: 'Próximo segundo',\n am: 'AM',\n pm: 'PM',\n\n // Busca / seleção\n searchMessage: 'Digite para pesquisar',\n selectionMessage: '{0} item(ns) selecionado(s)',\n emptySelectionMessage: 'Nenhum item selecionado',\n emptySearchMessage: 'Nenhum resultado encontrado',\n\n // ARIA (acessibilidade)\n aria: {\n trueLabel: 'Verdadeiro',\n falseLabel: 'Falso',\n nullLabel: 'Não selecionado',\n star: '1 estrela',\n stars: '{star} estrelas',\n selectAll: 'Selecionar todos',\n unselectAll: 'Desmarcar todos',\n close: 'Fechar',\n previous: 'Anterior',\n next: 'Próximo',\n navigation: 'Navegação',\n scrollTop: 'Rolar para o topo',\n moveTop: 'Mover para o topo',\n moveUp: 'Mover para cima',\n moveDown: 'Mover para baixo',\n moveBottom: 'Mover para o final',\n moveToTarget: 'Mover para o destino',\n moveToSource: 'Mover para a origem',\n moveAllToTarget: 'Mover todos para o destino',\n moveAllToSource: 'Mover todos para a origem',\n pageLabel: 'Página {page}',\n firstPageLabel: 'Primeira página',\n lastPageLabel: 'Última página',\n nextPageLabel: 'Próxima página',\n prevPageLabel: 'Página anterior',\n rowsPerPageLabel: 'Itens por página',\n previousPageLabel: 'Página anterior',\n jumpToPageDropdownLabel: 'Pular para página',\n jumpToPageInputLabel: 'Ir para página',\n selectRow: 'Selecionar linha',\n unselectRow: 'Desmarcar linha',\n expandRow: 'Expandir linha',\n collapseRow: 'Recolher linha',\n showFilterMenu: 'Mostrar menu de filtro',\n hideFilterMenu: 'Ocultar menu de filtro',\n filterOperator: 'Operador de filtro',\n filterConstraint: 'Restrição de filtro',\n editRow: 'Editar linha',\n saveEdit: 'Salvar edição',\n cancelEdit: 'Cancelar edição',\n listView: 'Visualização em lista',\n gridView: 'Visualização em grade',\n slide: 'Slide',\n slideNumber: 'Slide {slideNumber}',\n zoomImage: 'Ampliar imagem',\n zoomIn: 'Aumentar zoom',\n zoomOut: 'Reduzir zoom',\n rotateRight: 'Girar à direita',\n rotateLeft: 'Girar à esquerda',\n listLabel: 'Lista',\n selectColor: 'Selecionar cor',\n removeLabel: 'Remover',\n browseFiles: 'Procurar arquivos',\n maximizeLabel: 'Maximizar',\n minimizeLabel: 'Minimizar',\n },\n};\n","import { Provider } from '@angular/core';\n\nimport { DYNAMIC_FORM_ERROR_MESSAGES, DynamicFormErrorMessages } from '../interfaces/error-messages.interface';\n\n/**\n * Provider para configurar mensagens de erro customizadas.\n * @param messages Mensagens de erro customizadas\n * @returns Provider configurado\n */\nexport function provideDynamicFormConfig(messages?: DynamicFormErrorMessages): Provider[] {\n const providers: Provider[] = [];\n\n if (messages) {\n providers.push({\n provide: DYNAMIC_FORM_ERROR_MESSAGES,\n useValue: messages,\n });\n }\n\n return providers;\n}\n","import { PRIMENG_PTBR } from './lib/i18n/primeng-ptbr';\n/*\n * Public API Surface of @vipsolucoes/dynamic-form\n */\n\n// Componentes\nexport { DynamicFormComponent } from './lib/components/dynamic-form/dynamic-form.component';\nexport { DynamicFormErrorComponent } from './lib/components/form-field-error/form-field-error.component';\n\n// Fields (para uso standalone)\nexport { InputTextFieldComponent } from './lib/fields/input-text-field.component';\nexport { InputButtonFieldComponent } from './lib/fields/input-button-field.component';\nexport { SelectFieldComponent } from './lib/fields/select-field.component';\nexport { DatePickerFieldComponent } from './lib/fields/datepicker-field.component';\nexport { NumberInputFieldComponent } from './lib/fields/number-input-field.component';\nexport { PasswordFieldComponent } from './lib/fields/password-field.component';\nexport { TextareaFieldComponent } from './lib/fields/textarea-field.component';\nexport { ToggleSwitchFieldComponent } from './lib/fields/toggleswitch-field.component';\n\n// Interfaces\nexport type { iFormConfig, iFieldOption } from './lib/interfaces/form-config.interface';\nexport type { DynamicFormErrorMessages } from './lib/interfaces/error-messages.interface';\nexport { DYNAMIC_FORM_ERROR_MESSAGES } from './lib/interfaces/error-messages.interface';\n\n// Services\nexport { FieldRegistryService } from './lib/services/field-registry.service';\n\n// Utility functions\nexport { PRIMENG_PTBR } from './lib/i18n/primeng-ptbr';\nexport { provideDynamicFormConfig } from './lib/providers/dynamic-form.providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i2","i1"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vipsolucoes/dynamic-form",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "Biblioteca de formularios dinamicos para Angular com PrimeNG",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -1,6 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { OnInit, Type, InjectionToken, Provider } from '@angular/core';
3
3
  import { ValidatorFn, FormGroup, AbstractControl } from '@angular/forms';
4
+ import * as primeng_button from 'primeng/button';
5
+ import { ButtonSeverity } from 'primeng/button';
4
6
  import { Translation } from 'primeng/api';
5
7
 
6
8
  /**
@@ -21,7 +23,7 @@ interface iFormConfig {
21
23
  /**
22
24
  * O tipo de controle a ser renderizado.
23
25
  */
24
- controlType: 'text' | 'password' | 'email' | 'number' | 'select' | 'datepicker' | 'textarea' | 'toggleswitch';
26
+ controlType: 'text' | 'password' | 'email' | 'number' | 'select' | 'datepicker' | 'textarea' | 'toggleswitch' | 'input-button';
25
27
  /**
26
28
  * Texto a ser exibido no label do campo.
27
29
  */
@@ -88,6 +90,36 @@ interface iFormConfig {
88
90
  * Valor quando o toggle switch está desativado. Default: false. Aplicável apenas para controlType 'toggleswitch'.
89
91
  */
90
92
  toggleFalseValue?: any;
93
+ /**
94
+ * Configuração do botão para campos do tipo 'input-button'
95
+ */
96
+ buttonConfig?: {
97
+ /**
98
+ * Ícone do botão (PrimeIcons). Ex: 'pi pi-search'
99
+ */
100
+ icon?: string;
101
+ /**
102
+ * Label/texto do botão
103
+ */
104
+ label?: string;
105
+ /**
106
+ * Tooltip do botão
107
+ */
108
+ tooltip?: string;
109
+ /**
110
+ * Posição do botão. Default: 'right'
111
+ */
112
+ position?: 'left' | 'right';
113
+ /**
114
+ * Severity do botão. Default: 'primary'
115
+ */
116
+ severity?: ButtonSeverity;
117
+ };
118
+ /**
119
+ * Função callback executada ao clicar no botão do campo 'input-button'.
120
+ * Recebe a key do campo e o valor atual como parâmetros.
121
+ */
122
+ buttonCallback?: (fieldKey: string, fieldValue: any) => void | Promise<void>;
91
123
  }
92
124
 
93
125
  declare class DynamicFormComponent implements OnInit {
@@ -134,6 +166,23 @@ declare class InputTextFieldComponent {
134
166
  static ɵcmp: i0.ɵɵComponentDeclaration<InputTextFieldComponent, "vp-input-text-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
135
167
  }
136
168
 
169
+ declare class InputButtonFieldComponent {
170
+ form: i0.InputSignal<FormGroup<any>>;
171
+ field: i0.InputSignal<iFormConfig>;
172
+ buttonConfig(): {
173
+ icon?: string;
174
+ label?: string;
175
+ tooltip?: string;
176
+ position?: "left" | "right";
177
+ severity?: primeng_button.ButtonSeverity;
178
+ } | undefined;
179
+ buttonPosition(): 'left' | 'right';
180
+ isFieldDisabled(): boolean;
181
+ onButtonClick(): void;
182
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputButtonFieldComponent, never>;
183
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputButtonFieldComponent, "vp-input-button-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
184
+ }
185
+
137
186
  declare class SelectFieldComponent {
138
187
  form: i0.InputSignal<FormGroup<any>>;
139
188
  field: i0.InputSignal<iFormConfig>;
@@ -233,5 +282,5 @@ declare const PRIMENG_PTBR: Translation;
233
282
  */
234
283
  declare function provideDynamicFormConfig(messages?: DynamicFormErrorMessages): Provider[];
235
284
 
236
- export { DYNAMIC_FORM_ERROR_MESSAGES, DatePickerFieldComponent, DynamicFormComponent, DynamicFormErrorComponent, FieldRegistryService, InputTextFieldComponent, NumberInputFieldComponent, PRIMENG_PTBR, PasswordFieldComponent, SelectFieldComponent, TextareaFieldComponent, ToggleSwitchFieldComponent, provideDynamicFormConfig };
285
+ export { DYNAMIC_FORM_ERROR_MESSAGES, DatePickerFieldComponent, DynamicFormComponent, DynamicFormErrorComponent, FieldRegistryService, InputButtonFieldComponent, InputTextFieldComponent, NumberInputFieldComponent, PRIMENG_PTBR, PasswordFieldComponent, SelectFieldComponent, TextareaFieldComponent, ToggleSwitchFieldComponent, provideDynamicFormConfig };
237
286
  export type { DynamicFormErrorMessages, iFieldOption, iFormConfig };