@praxisui/dynamic-fields 0.0.1

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/index.d.ts ADDED
@@ -0,0 +1,3399 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { WritableSignal, OnInit, OnDestroy, AfterViewInit, DestroyRef, ElementRef, ChangeDetectorRef, OnChanges, TemplateRef, EventEmitter, ComponentRef, SimpleChanges, Type, Provider, EnvironmentProviders } from '@angular/core';
3
+ import { AbstractControl, ControlValueAccessor, NgControl, ValidationErrors, FormControl, FormGroup, FormGroupDirective, NgForm } from '@angular/forms';
4
+ import { Observable, BehaviorSubject } from 'rxjs';
5
+ import { ComponentMetadata, GenericCrudService, GlobalConfigService, OptionDTO, FieldMetadata, MaterialButtonMetadata, MaterialInputMetadata, MaterialColorInputMetadata, MaterialDateInputMetadata, MaterialDatepickerMetadata, MaterialDateRangeMetadata, MaterialDatetimeLocalInputMetadata, MaterialEmailInputMetadata, MaterialTextareaMetadata, MaterialNumericMetadata, MaterialCurrencyMetadata, MaterialCpfCnpjMetadata, MaterialPriceRangeMetadata, MaterialMonthInputMetadata, MaterialPasswordMetadata, MaterialSearchInputMetadata, MaterialTreeNode, MaterialMultiSelectTreeMetadata, MaterialTreeSelectMetadata, MaterialToggleMetadata, MaterialSliderMetadata, MaterialPhoneMetadata, MaterialTimeInputMetadata, MaterialTimepickerMetadata, MaterialUrlInputMetadata, MaterialWeekInputMetadata, MaterialColorPickerMetadata, MaterialRangeSliderMetadata, MaterialYearInputMetadata, MaterialTimeRangeMetadata, ComponentDocMeta, FieldControlType } from '@praxisui/core';
6
+ import { Router } from '@angular/router';
7
+ import { MatDialog, MatDialogRef } from '@angular/material/dialog';
8
+ import { MatSelect } from '@angular/material/select';
9
+ import * as _angular_material_error_options_d_CGdTZUYk from '@angular/material/error-options.d-CGdTZUYk';
10
+ import { MatDatepickerInputEvent } from '@angular/material/datepicker';
11
+ import { MatOptionSelectionChange, ErrorStateMatcher } from '@angular/material/core';
12
+ import { SelectionModel } from '@angular/cdk/collections';
13
+ import { NestedTreeControl } from '@angular/cdk/tree';
14
+ import { MatTreeNestedDataSource } from '@angular/material/tree';
15
+ import { MatChipInputEvent } from '@angular/material/chips';
16
+ import { MatButtonToggleChange } from '@angular/material/button-toggle';
17
+ import { MatSelectionListChange, MatSelectionList } from '@angular/material/list';
18
+ import { MatBottomSheet } from '@angular/material/bottom-sheet';
19
+ import { CdkDragDrop } from '@angular/cdk/drag-drop';
20
+
21
+ /**
22
+ * @fileoverview Interface base para todos os componentes de campos dinâmicos
23
+ *
24
+ * Define o contrato comum que todos os componentes dinâmicos devem implementar
25
+ * para garantir compatibilidade com o DynamicFieldLoaderDirective e outros
26
+ * serviços do sistema.
27
+ */
28
+
29
+ /**
30
+ * Eventos de lifecycle que os componentes podem emitir
31
+ */
32
+ interface ComponentLifecycleEvent {
33
+ phase: 'init' | 'afterInit' | 'change' | 'destroy';
34
+ timestamp: number;
35
+ componentId: string;
36
+ metadata?: any;
37
+ }
38
+ /**
39
+ * Opções para métodos de controle de valor
40
+ */
41
+ interface ValueChangeOptions {
42
+ emitEvent?: boolean;
43
+ updateUI?: boolean;
44
+ }
45
+ /**
46
+ * Interface base que todos os componentes de campos dinâmicos devem implementar.
47
+ *
48
+ * Esta interface define o contrato mínimo necessário para que um componente
49
+ * seja compatível com o sistema de renderização dinâmica do Praxis.
50
+ *
51
+ * ## Responsabilidades Principais
52
+ *
53
+ * - Gerenciar metadata do componente através de signals
54
+ * - Integrar com Angular Reactive Forms
55
+ * - Fornecer controles de foco e blur
56
+ * - Implementar lifecycle hooks customizados
57
+ * - Manter identificação única do componente
58
+ *
59
+ * ## Implementação
60
+ *
61
+ * Componentes podem implementar esta interface diretamente ou herdar de:
62
+ * - SimpleBaseInputComponent (para campos de entrada)
63
+ * - SimpleBaseButtonComponent (para ações/botões)
64
+ */
65
+ interface BaseDynamicFieldComponent {
66
+ /**
67
+ * Metadata do componente que define sua configuração e comportamento.
68
+ *
69
+ * Contém informações como label, tipo de controle, validações,
70
+ * propriedades visuais e outras configurações específicas.
71
+ */
72
+ readonly metadata: WritableSignal<ComponentMetadata | null>;
73
+ /**
74
+ * ID único do componente para identificação e debugging.
75
+ *
76
+ * Gerado automaticamente durante a inicialização e usado
77
+ * para logging, testes e identificação em runtime.
78
+ */
79
+ readonly componentId: WritableSignal<string>;
80
+ /**
81
+ * FormControl associado ao componente para integração com Angular Reactive Forms.
82
+ *
83
+ * Opcional porque nem todos os componentes precisam de FormControl
84
+ * (ex: botões, labels, componentes de exibição).
85
+ */
86
+ readonly formControl?: WritableSignal<AbstractControl | null>;
87
+ /**
88
+ * Label textual exibido para o usuário, quando aplicável.
89
+ *
90
+ * Útil para componentes que apresentam uma descrição direta do campo
91
+ * como inputs e seletores. Implementação opcional.
92
+ */
93
+ label?: string;
94
+ /**
95
+ * Observable de eventos de lifecycle do componente.
96
+ *
97
+ * Permite monitorar o ciclo de vida do componente externamente
98
+ * para debugging, analytics ou integração com outros sistemas.
99
+ */
100
+ readonly lifecycleEvents$?: Observable<ComponentLifecycleEvent | null>;
101
+ /**
102
+ * Foca no elemento principal do componente.
103
+ *
104
+ * Deve focar no input, botão ou elemento interativo principal.
105
+ * Implementação deve ser robusta e não falhar se elemento não existir.
106
+ */
107
+ focus(): void;
108
+ /**
109
+ * Remove o foco do elemento principal do componente.
110
+ *
111
+ * Útil para controle programático de foco e navegação por teclado.
112
+ */
113
+ blur(): void;
114
+ /**
115
+ * Define os metadados de entrada do componente.
116
+ *
117
+ * Permite que o componente ajuste propriedades derivadas (como label
118
+ * e placeholders) antes da configuração padrão.
119
+ *
120
+ * @param metadata Metadados do campo
121
+ */
122
+ setInputMetadata?(metadata: ComponentMetadata): void;
123
+ /**
124
+ * Injeta um FormControl externo a ser utilizado como fonte de verdade.
125
+ *
126
+ * Componentes que recebem este controle devem utilizá-lo diretamente,
127
+ * sem sincronizações manuais com controles internos.
128
+ */
129
+ setExternalControl?(control: AbstractControl): void;
130
+ /**
131
+ * Hook chamado após a inicialização completa do componente.
132
+ *
133
+ * Executado depois que metadata e formControl foram configurados.
134
+ * Ideal para configurações específicas do componente.
135
+ */
136
+ onComponentInit?(): void;
137
+ /**
138
+ * Hook chamado antes da destruição do componente.
139
+ *
140
+ * Usado para limpeza de recursos, cancelamento de subscriptions,
141
+ * ou salvamento de estado.
142
+ */
143
+ onComponentDestroy?(): void;
144
+ /**
145
+ * Define o valor do campo programaticamente.
146
+ *
147
+ * Implementação opcional para componentes que gerenciam valores.
148
+ * Deve atualizar tanto o FormControl quanto o estado interno.
149
+ */
150
+ setValue?(value: any, options?: ValueChangeOptions): void;
151
+ /**
152
+ * Obtém o valor atual do campo.
153
+ *
154
+ * @returns Valor atual ou null se não aplicável
155
+ */
156
+ getValue?(): any;
157
+ /**
158
+ * Marca o componente como tocado (touched).
159
+ *
160
+ * Usado para controle de validação e exibição de mensagens de erro.
161
+ */
162
+ markAsTouched?(): void;
163
+ /**
164
+ * Marca o componente como modificado (dirty).
165
+ *
166
+ * Indica que o valor foi alterado pelo usuário.
167
+ */
168
+ markAsDirty?(): void;
169
+ /**
170
+ * Define o estado de loading do componente.
171
+ *
172
+ * Útil para botões e componentes que executam ações assíncronas.
173
+ */
174
+ setLoading?(loading: boolean): void;
175
+ /**
176
+ * Define o estado de desabilitado do componente.
177
+ */
178
+ setDisabled?(disabled: boolean): void;
179
+ /**
180
+ * Força a validação do componente.
181
+ *
182
+ * @returns Promise com erros de validação ou null se válido
183
+ */
184
+ validateField?(): Promise<any>;
185
+ /**
186
+ * Reseta o componente para seu estado inicial.
187
+ */
188
+ resetField?(): void;
189
+ }
190
+ /**
191
+ * Type guard para verificar se um objeto implementa BaseDynamicFieldComponent
192
+ */
193
+ declare function isBaseDynamicFieldComponent(obj: any): obj is BaseDynamicFieldComponent;
194
+ /**
195
+ * Type guard para verificar se componente suporta valores (tem FormControl)
196
+ */
197
+ declare function isValueBasedComponent(component: BaseDynamicFieldComponent): component is BaseDynamicFieldComponent & {
198
+ formControl: WritableSignal<AbstractControl | null>;
199
+ };
200
+ /**
201
+ * Type guard para verificar se componente suporta loading
202
+ */
203
+ declare function isLoadingCapableComponent(component: BaseDynamicFieldComponent): component is BaseDynamicFieldComponent & {
204
+ setLoading: (loading: boolean) => void;
205
+ };
206
+
207
+ interface BasicComponentState {
208
+ initialized: boolean;
209
+ focused: boolean;
210
+ disabled: boolean;
211
+ touched: boolean;
212
+ dirty: boolean;
213
+ }
214
+ interface BasicFieldState {
215
+ value: any;
216
+ valid: boolean;
217
+ errors: ValidationErrors | null;
218
+ }
219
+ interface BaseValidationConfig {
220
+ required?: boolean;
221
+ minLength?: number;
222
+ maxLength?: number;
223
+ pattern?: string | RegExp;
224
+ customValidator?: (value: any) => string | null;
225
+ messages?: {
226
+ required?: string;
227
+ minlength?: string;
228
+ maxlength?: string;
229
+ pattern?: string;
230
+ min?: string;
231
+ max?: string;
232
+ email?: string;
233
+ url?: string;
234
+ matchField?: string;
235
+ unique?: string;
236
+ requiredTrue?: string;
237
+ fileType?: string;
238
+ maxFileSize?: string;
239
+ minWords?: string;
240
+ conditionalValidation?: string;
241
+ custom?: string;
242
+ };
243
+ validateOnBlur?: boolean;
244
+ debounceTime?: number;
245
+ }
246
+ type LogLevel$1 = 'trace' | 'debug' | 'info' | 'warn' | 'error';
247
+ declare abstract class SimpleBaseInputComponent implements ControlValueAccessor, OnInit, OnDestroy, AfterViewInit, BaseDynamicFieldComponent {
248
+ protected readonly destroyRef: DestroyRef;
249
+ protected readonly elementRef: ElementRef<any>;
250
+ protected readonly cdr: ChangeDetectorRef;
251
+ private readonly injector;
252
+ private resolvedNgControl;
253
+ /** Subject para eventos de lifecycle */
254
+ readonly lifecycleEvents$: BehaviorSubject<ComponentLifecycleEvent | null>;
255
+ /** Native element registered by subclasses */
256
+ protected nativeElement: HTMLElement | null;
257
+ protected getNgControl(): NgControl | null;
258
+ /** Metadata do componente */
259
+ readonly metadata: _angular_core.WritableSignal<ComponentMetadata | null>;
260
+ /** Estado básico do componente */
261
+ protected readonly componentState: _angular_core.WritableSignal<BasicComponentState>;
262
+ /** Estado básico do campo */
263
+ protected readonly fieldState: _angular_core.WritableSignal<BasicFieldState>;
264
+ /** ID único do componente */
265
+ readonly componentId: _angular_core.WritableSignal<string>;
266
+ /** Rótulo visível do campo */
267
+ label?: string;
268
+ /** Placeholder opcional */
269
+ placeholder?: string;
270
+ /** Indica se o placeholder deve ser exibido */
271
+ get shouldShowPlaceholder(): boolean;
272
+ readonly internalControl: FormControl<any>;
273
+ /** FormControl signal para interface BaseDynamicFieldComponent */
274
+ readonly formControl: _angular_core.WritableSignal<FormControl<any> | null>;
275
+ /**
276
+ * Define um FormControl externo a ser utilizado como fonte de verdade.
277
+ */
278
+ setExternalControl(control: AbstractControl): void;
279
+ /**
280
+ * Retorna o FormControl em uso pelo componente.
281
+ *
282
+ * Quando um controle externo é fornecido, ele tem precedência;
283
+ * caso contrário, o controle interno é utilizado.
284
+ */
285
+ control(): FormControl;
286
+ protected onChange: (_value: any) => void;
287
+ private onTouched;
288
+ private syncInProgress;
289
+ readonly valueChange: _angular_core.OutputEmitterRef<any>;
290
+ readonly focusChange: _angular_core.OutputEmitterRef<boolean>;
291
+ readonly nativeBlur: _angular_core.OutputEmitterRef<FocusEvent>;
292
+ readonly nativeChange: _angular_core.OutputEmitterRef<Event>;
293
+ /** Configuração de validação baseada no metadata */
294
+ protected readonly validationConfig: _angular_core.Signal<BaseValidationConfig | null>;
295
+ /** Mensagem de erro atual */
296
+ readonly errorMessage: _angular_core.Signal<any>;
297
+ /** Posição/configuração de erro vinda do metadata */
298
+ readonly errorPosition: _angular_core.Signal<"bottom" | "top" | "tooltip">;
299
+ /** Se deve exibir erros inline (mat-error) */
300
+ readonly showInlineErrors: _angular_core.Signal<boolean>;
301
+ /** Tooltip habilitado quando errorPosition === 'tooltip' */
302
+ readonly tooltipEnabled: _angular_core.Signal<boolean>;
303
+ /** Posição do tooltip mapeada para Angular Material */
304
+ readonly tooltipPosition: _angular_core.Signal<"above" | "below">;
305
+ /** Gate to control when inline errors may display (debounced for 'change') */
306
+ private readonly errorDisplayReady;
307
+ private errorDebounceHandle;
308
+ /** Verifica se há erro de validação (respeita validationTrigger/debounce) */
309
+ readonly hasValidationError: _angular_core.Signal<boolean>;
310
+ /** CSS classes básicas do componente */
311
+ readonly baseCssClasses: _angular_core.Signal<string[]>;
312
+ /** CSS classes completas do componente (extensível por subclasses) */
313
+ readonly componentCssClasses: _angular_core.Signal<string>;
314
+ /** Tipo de input */
315
+ readonly inputType: _angular_core.Signal<any>;
316
+ /** Aparência Material */
317
+ readonly materialAppearance: _angular_core.Signal<any>;
318
+ /** Cor Material */
319
+ readonly materialColor: _angular_core.Signal<any>;
320
+ /** Comportamento do float label (auto | always) */
321
+ readonly floatLabelBehavior: _angular_core.Signal<"auto" | "always">;
322
+ constructor();
323
+ ngOnInit(): void;
324
+ ngAfterViewInit(): void;
325
+ ngOnDestroy(): void;
326
+ writeValue(value: any): void;
327
+ registerOnChange(fn: any): void;
328
+ registerOnTouched(fn: any): void;
329
+ setDisabledState(isDisabled: boolean): void;
330
+ handleInput(event: Event): void;
331
+ handleFocus(): void;
332
+ handleBlur(): void;
333
+ /**
334
+ * Retorna a paleta Material quando a cor for 'primary' | 'accent' | 'warn'.
335
+ * Caso contrário, retorna undefined para não aplicar [color].
336
+ */
337
+ iconPalette(c?: string): 'primary' | 'accent' | 'warn' | undefined;
338
+ /**
339
+ * Retorna a cor customizada (CSS) quando não for paleta Material.
340
+ * Quando a cor for paleta, retorna null para não conflitar com [color].
341
+ */
342
+ iconCustomColor(c?: string): string | null;
343
+ /**
344
+ * Define o valor do campo (implementação da interface BaseDynamicFieldComponent)
345
+ */
346
+ setValue(value: any, options?: ValueChangeOptions): void;
347
+ /**
348
+ * Obtém o valor do campo
349
+ */
350
+ getValue(): any;
351
+ /**
352
+ * Marca o campo como tocado
353
+ */
354
+ markAsTouched(): void;
355
+ /**
356
+ * Marca o campo como sujo
357
+ */
358
+ markAsDirty(): void;
359
+ /**
360
+ * Foca no elemento
361
+ */
362
+ focus(): void;
363
+ /**
364
+ * Remove foco do elemento
365
+ */
366
+ blur(): void;
367
+ /**
368
+ * Define metadata do componente
369
+ */
370
+ protected setMetadata(metadata: ComponentMetadata): void;
371
+ /** Registra elemento nativo e aplica atributos/eventos */
372
+ protected registerInputElement(el: HTMLElement): void;
373
+ /** Aplica atributos e ARIA com base no metadata */
374
+ protected applyNativeAttributes(): void;
375
+ /** Vincula handlers nativos de eventos */
376
+ private attachNativeEventHandlers;
377
+ /**
378
+ * Força validação do campo
379
+ */
380
+ validateField(): Promise<ValidationErrors | null>;
381
+ /**
382
+ * Hook chamado após inicialização - implementação da interface BaseDynamicFieldComponent
383
+ * Subclasses podem override para implementar comportamento específico
384
+ */
385
+ onComponentInit?(): void;
386
+ /**
387
+ * Hook chamado antes da destruição - implementação da interface BaseDynamicFieldComponent
388
+ * Subclasses podem override para limpeza específica
389
+ */
390
+ onComponentDestroy?(): void;
391
+ /**
392
+ * Define estado de loading - implementação da interface BaseDynamicFieldComponent
393
+ */
394
+ setLoading?(loading: boolean): void;
395
+ /**
396
+ * Define estado desabilitado - implementação da interface BaseDynamicFieldComponent
397
+ */
398
+ setDisabled?(disabled: boolean): void;
399
+ /**
400
+ * Reset do campo - implementação da interface BaseDynamicFieldComponent
401
+ */
402
+ resetField?(): void;
403
+ /**
404
+ * Retorna classes CSS específicas da subclasse
405
+ * Subclasses devem implementar este método para adicionar suas próprias classes
406
+ */
407
+ protected getSpecificCssClasses(): string[];
408
+ private setupFormControlIntegration;
409
+ private refreshErrorTooltip;
410
+ private setupValidators;
411
+ private applyValidators;
412
+ private createCustomValidator;
413
+ private generateUniqueId;
414
+ private getTransformApply;
415
+ private getTransformName;
416
+ private getValidationTrigger;
417
+ private getValidationDebounce;
418
+ private applyErrorDebounceOnChange;
419
+ private applyTransformOnBlur;
420
+ private restoreRawValueForEditing;
421
+ private applyFunctionalDisplayTransformImmediately;
422
+ /**
423
+ * Sistema de logging básico
424
+ */
425
+ protected log(level: LogLevel$1, message: string, data?: any): void;
426
+ private emitLifecycleEvent;
427
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SimpleBaseInputComponent, never>;
428
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SimpleBaseInputComponent, never, never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; }, { "valueChange": "valueChange"; "focusChange": "focusChange"; "nativeBlur": "nativeBlur"; "nativeChange": "nativeChange"; }, never, never, true, never>;
429
+ }
430
+
431
+ interface BasicButtonState {
432
+ initialized: boolean;
433
+ loading: boolean;
434
+ disabled: boolean;
435
+ focused: boolean;
436
+ clicked: boolean;
437
+ error: Error | null;
438
+ }
439
+ interface ButtonAction {
440
+ type: 'navigation' | 'external-link' | 'custom' | 'form-action';
441
+ target?: string;
442
+ payload?: any;
443
+ confirmation?: {
444
+ title: string;
445
+ message: string;
446
+ confirmLabel?: string;
447
+ cancelLabel?: string;
448
+ };
449
+ }
450
+ type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error';
451
+ declare abstract class SimpleBaseButtonComponent implements OnInit, OnDestroy, BaseDynamicFieldComponent {
452
+ protected readonly destroyRef: DestroyRef;
453
+ protected readonly elementRef: ElementRef<any>;
454
+ protected readonly cdr: ChangeDetectorRef;
455
+ protected readonly router: Router;
456
+ protected readonly dialog: MatDialog;
457
+ /** Subject para eventos de lifecycle */
458
+ readonly lifecycleEvents$: BehaviorSubject<ComponentLifecycleEvent | null>;
459
+ /** Metadata do componente */
460
+ readonly metadata: _angular_core.WritableSignal<ComponentMetadata | null>;
461
+ /** Estado básico do botão */
462
+ protected readonly buttonState: _angular_core.WritableSignal<BasicButtonState>;
463
+ /** Ação configurada para o botão */
464
+ protected readonly buttonAction: _angular_core.WritableSignal<ButtonAction | null>;
465
+ /** Métricas de clique */
466
+ private readonly clickMetrics;
467
+ /** ID único do componente */
468
+ readonly componentId: _angular_core.WritableSignal<string>;
469
+ readonly actionExecuted: _angular_core.OutputEmitterRef<any>;
470
+ readonly click: _angular_core.OutputEmitterRef<MouseEvent>;
471
+ readonly focusChange: _angular_core.OutputEmitterRef<boolean>;
472
+ /** CSS classes básicas do botão */
473
+ readonly baseButtonCssClasses: _angular_core.Signal<string[]>;
474
+ /** CSS classes completas do botão (extensível por subclasses) */
475
+ readonly componentCssClasses: _angular_core.Signal<string>;
476
+ /** Tipo de botão Material */
477
+ readonly buttonType: _angular_core.Signal<any>;
478
+ /** Aparência Material */
479
+ readonly materialAppearance: _angular_core.Signal<any>;
480
+ /** Cor Material */
481
+ readonly materialColor: _angular_core.Signal<any>;
482
+ /** Se o botão está desabilitado */
483
+ readonly isDisabled: _angular_core.Signal<any>;
484
+ /** Se o botão está em loading */
485
+ readonly isLoading: _angular_core.Signal<any>;
486
+ /** Texto a ser exibido no botão */
487
+ readonly buttonText: _angular_core.Signal<any>;
488
+ /** Ícone a ser exibido */
489
+ readonly buttonIcon: _angular_core.Signal<any>;
490
+ ngOnInit(): void;
491
+ ngOnDestroy(): void;
492
+ handleClick(event: MouseEvent): Promise<void>;
493
+ handleFocus(): void;
494
+ handleBlur(): void;
495
+ /**
496
+ * Define loading state
497
+ */
498
+ setLoading(loading: boolean): void;
499
+ /**
500
+ * Define disabled state
501
+ */
502
+ setDisabled(disabled: boolean): void;
503
+ /**
504
+ * Executa ação programaticamente
505
+ */
506
+ triggerAction(): Promise<void>;
507
+ /**
508
+ * Foca no botão
509
+ */
510
+ focus(): void;
511
+ /**
512
+ * Remove foco do botão
513
+ */
514
+ blur(): void;
515
+ /**
516
+ * Define metadata do componente
517
+ */
518
+ protected setMetadata(metadata: ComponentMetadata): void;
519
+ /**
520
+ * Retorna classes CSS específicas da subclasse
521
+ */
522
+ protected getSpecificCssClasses(): string[];
523
+ /**
524
+ * Hook chamado após inicialização - implementação da interface BaseDynamicFieldComponent
525
+ * Subclasses podem override para implementar comportamento específico
526
+ */
527
+ onComponentInit?(): void;
528
+ /**
529
+ * Hook chamado antes da destruição - implementação da interface BaseDynamicFieldComponent
530
+ * Subclasses podem override para limpeza específica
531
+ */
532
+ onComponentDestroy?(): void;
533
+ /**
534
+ * Hook chamado antes da execução de ação - para subclasses implementarem
535
+ */
536
+ protected onBeforeAction(action: ButtonAction): Promise<boolean>;
537
+ /**
538
+ * Hook chamado após execução de ação - para subclasses implementarem
539
+ */
540
+ protected onAfterAction(action: ButtonAction, result: any): Promise<void>;
541
+ private initializeButtonAction;
542
+ private executeAction;
543
+ private showConfirmation;
544
+ private executeCustomAction;
545
+ private executeFormAction;
546
+ private shouldAllowClick;
547
+ private updateClickMetrics;
548
+ private handleError;
549
+ private generateUniqueId;
550
+ /**
551
+ * Sistema de logging básico
552
+ */
553
+ protected log(level: LogLevel, message: string, data?: any): void;
554
+ /**
555
+ * Emite evento de lifecycle
556
+ */
557
+ private emitLifecycleEvent;
558
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SimpleBaseButtonComponent, never>;
559
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SimpleBaseButtonComponent, never, never, {}, { "actionExecuted": "actionExecuted"; "click": "click"; "focusChange": "focusChange"; }, never, never, true, never>;
560
+ }
561
+
562
+ /**
563
+ * Generic option definition for select components.
564
+ */
565
+ interface SelectOption<T = any> {
566
+ /** Display label for the option */
567
+ label: string;
568
+ /** Value associated with the option */
569
+ value: T;
570
+ /** Whether the option is disabled */
571
+ disabled?: boolean;
572
+ }
573
+ /**
574
+ * Metadata configuration for simple select components.
575
+ */
576
+ interface SimpleSelectMetadata<T = any> extends ComponentMetadata {
577
+ /** Available options */
578
+ options?: SelectOption<T>[];
579
+ /** Allow multiple selections */
580
+ multiple?: boolean;
581
+ /** Whether search input should be displayed */
582
+ searchable?: boolean;
583
+ /** Show select all option */
584
+ selectAll?: boolean;
585
+ /** Maximum number of selections allowed */
586
+ maxSelections?: number;
587
+ /**
588
+ * When to load remote options (for async selects)
589
+ * - 'open' (default): first fetch happens when the select is opened
590
+ * - 'init': first fetch happens on component initialization
591
+ * - 'none': do not auto-load; consumer must call retry()/loadMore()
592
+ */
593
+ loadOn?: 'open' | 'init' | 'none';
594
+ /** Backend resource for dynamic options */
595
+ resourcePath?: string;
596
+ /** Additional filter criteria for backend requests */
597
+ filterCriteria?: Record<string, any>;
598
+ /** Key for option label when loading from backend */
599
+ optionLabelKey?: string;
600
+ /** Key for option value when loading from backend */
601
+ optionValueKey?: string;
602
+ /** Placeholder option text when no value is selected */
603
+ emptyOptionText?: string;
604
+ /** Function to display option values */
605
+ displayWith?: (value: any) => string;
606
+ /** Custom compareWith for MatSelect */
607
+ compareWith?: (a: any, b: any) => boolean;
608
+ }
609
+ /**
610
+ * Base directive providing common select behaviour. Extends
611
+ * `SimpleBaseInputComponent` and manages option handling, multiple
612
+ * selection, selection change events and helper utilities used by the
613
+ * concrete Material components.
614
+ */
615
+ declare abstract class SimpleBaseSelectComponent<T = any> extends SimpleBaseInputComponent {
616
+ protected readonly matSelectRef: _angular_core.Signal<MatSelect | undefined>;
617
+ /** Available options */
618
+ readonly options: _angular_core.WritableSignal<SelectOption<T>[]>;
619
+ /** Whether multiple selection is enabled */
620
+ readonly multiple: _angular_core.WritableSignal<boolean>;
621
+ /** Whether the component should allow searching */
622
+ readonly searchable: _angular_core.WritableSignal<boolean>;
623
+ /** Current search term when `searchable` is enabled */
624
+ readonly searchTerm: _angular_core.WritableSignal<string>;
625
+ /** Emits whenever the search term changes */
626
+ readonly searchTermChange: _angular_core.OutputEmitterRef<string>;
627
+ /** Whether a "select all" helper should be displayed */
628
+ readonly selectAll: _angular_core.WritableSignal<boolean>;
629
+ /** Maximum number of selections allowed (only applies when multiple=true) */
630
+ readonly maxSelections: _angular_core.WritableSignal<number | null>;
631
+ /** Backend resource path for dynamic option loading */
632
+ readonly resourcePath: _angular_core.WritableSignal<string | null>;
633
+ /** Criteria applied to backend filtering */
634
+ readonly filterCriteria: _angular_core.WritableSignal<Record<string, any>>;
635
+ /** Field used for option labels when loading from backend */
636
+ readonly optionLabelKey: _angular_core.WritableSignal<string>;
637
+ /** Field used for option values when loading from backend */
638
+ readonly optionValueKey: _angular_core.WritableSignal<string>;
639
+ /** Text displayed for an empty option */
640
+ readonly emptyOptionText: _angular_core.WritableSignal<string | null>;
641
+ /** Current page index when fetching remote options */
642
+ readonly pageIndex: _angular_core.WritableSignal<number>;
643
+ /** Number of options retrieved per request */
644
+ readonly pageSize: _angular_core.WritableSignal<number>;
645
+ /** Indicates options are being loaded from backend */
646
+ readonly loading: _angular_core.WritableSignal<boolean>;
647
+ /** Holds error message when option loading fails */
648
+ readonly error: _angular_core.WritableSignal<string | null>;
649
+ private readonly matSelectInitEffect;
650
+ /** CRUD service for remote option loading (optional) */
651
+ protected readonly crudService: GenericCrudService<any> | null;
652
+ /** Emits whenever the selected value(s) change */
653
+ readonly selectionChange: _angular_core.OutputEmitterRef<T | T[]>;
654
+ /** Emits whenever a specific option is selected */
655
+ readonly optionSelected: _angular_core.OutputEmitterRef<SelectOption<T>>;
656
+ /** Emits whenever options are loaded remotely */
657
+ readonly optionsLoaded: _angular_core.OutputEmitterRef<SelectOption<T>[]>;
658
+ readonly openedChange: _angular_core.OutputEmitterRef<boolean>;
659
+ protected matSelect: MatSelect | null;
660
+ protected readonly global: GlobalConfigService;
661
+ private dependencySub;
662
+ private hasLoadedOnce;
663
+ /** Options filtered according to the current `searchTerm` */
664
+ readonly filteredOptions: _angular_core.Signal<SelectOption<T>[]>;
665
+ /**
666
+ * Applies typed metadata to the select component.
667
+ */
668
+ setSelectMetadata(metadata: SimpleSelectMetadata<T>): void;
669
+ protected setMetadata(metadata: ComponentMetadata): void;
670
+ protected registerMatSelect(select: MatSelect): void;
671
+ protected applySelectAttributes(): void;
672
+ /** Whether to show the clear button (if enabled in metadata) */
673
+ showClear(): boolean;
674
+ /** Clears the selection according to single/multiple mode */
675
+ onClearClick(): void;
676
+ /**
677
+ * Updates the current search term and emits the change event.
678
+ */
679
+ onSearch(term: string): void;
680
+ /**
681
+ * Applies metadata after the component is initialized by the
682
+ * DynamicFieldLoader, ensuring options and remote configuration are
683
+ * processed when using the component declaratively.
684
+ */
685
+ onComponentInit(): void;
686
+ /**
687
+ * Selects the given option. Handles both single and multiple selection
688
+ * modes and emits the proper events.
689
+ */
690
+ selectOption(option: SelectOption<T>): void;
691
+ /** Checks if the provided value is currently selected */
692
+ isSelected(value: T): boolean;
693
+ /**
694
+ * Toggles selection of all options when `selectAll` is enabled in multiple
695
+ * selection mode.
696
+ */
697
+ toggleSelectAll(): void;
698
+ /** Checks whether all options are currently selected */
699
+ isAllSelected(): boolean;
700
+ /** TrackBy function to optimize ngFor over options */
701
+ trackByOption(index: number, option: SelectOption<T>): T;
702
+ /** Adds CSS class hook for select components */
703
+ protected getSpecificCssClasses(): string[];
704
+ /** Configures the CRUD service with the given resource path */
705
+ protected configureCrudService(path: string): void;
706
+ /**
707
+ * Loads schema metadata to infer label/value keys when not provided.
708
+ * After resolving the keys, options are fetched from the backend.
709
+ */
710
+ protected loadSchema(resolveLabel: boolean, resolveValue: boolean): void;
711
+ /** Loads options from backend using GenericCrudService */
712
+ protected loadOptions(page?: number, searchTerm?: string, criteria?: Record<string, any>): void;
713
+ /** Dev-only warning when legacy alias keys are used instead of canonical ones */
714
+ protected devWarnSelectAliases(meta: any, component?: string): void;
715
+ /** Public API to reload options; overridden by async/searchable variants */
716
+ reload(reset: boolean): void;
717
+ /** Marks that at least one successful load has happened */
718
+ protected markLoadedOnce(): void;
719
+ protected hasLoaded(): boolean;
720
+ /** Setup effect to re-bind dependency observers when FormControl changes */
721
+ private readonly _depEffect;
722
+ /** (Re)configure dependency observers based on metadata and current FormGroup */
723
+ protected setupDependencies(): void;
724
+ protected extractDependencyValue(raw: any, path?: string): any;
725
+ protected applyDependencyCriteria(fragment: Record<string, any>, strategy?: 'merge' | 'replace'): void;
726
+ protected onDependenciesChanged(): void;
727
+ private getByPath;
728
+ private setByPath;
729
+ private unsetByPath;
730
+ private mergeObjectsDeep;
731
+ private replaceMappedKeys;
732
+ private clone;
733
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SimpleBaseSelectComponent<any>, never>;
734
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SimpleBaseSelectComponent<any>, never, never, {}, { "searchTermChange": "searchTermChange"; "selectionChange": "selectionChange"; "optionSelected": "optionSelected"; "optionsLoaded": "optionsLoaded"; "openedChange": "openedChange"; }, never, never, true, never>;
735
+ }
736
+
737
+ type OptionSource = 'byId' | 'page';
738
+ declare class OptionStore<ID = string | number> {
739
+ private readonly map;
740
+ private readonly order;
741
+ readonly loadedPages: Set<number>;
742
+ upsertById(option: OptionDTO<ID>, ephemeral?: boolean): void;
743
+ addPage(pageIndex: number, page: OptionDTO<ID>[]): void;
744
+ ensureVisible(ids: ID[]): void;
745
+ clearPages(): void;
746
+ get items(): OptionDTO<ID>[];
747
+ }
748
+
749
+ /**
750
+ * @fileoverview Diretiva para renderização dinâmica de campos de formulário
751
+ *
752
+ * Renderiza campos de formulário dinamicamente com base em metadados,
753
+ * integrando com ComponentRegistryService para resolver tipos de componentes
754
+ * e associando automaticamente com FormGroup controls.
755
+ *
756
+ * @example Uso básico
757
+ * ```html
758
+ * <ng-container
759
+ * dynamicFieldLoader
760
+ * [fields]="fieldMetadata"
761
+ * [formGroup]="userForm"
762
+ * (componentsCreated)="onComponentsReady($event)">
763
+ * </ng-container>
764
+ * ```
765
+ *
766
+ * @example Uso avançado com template personalizado
767
+ * ```html
768
+ * <div class="dynamic-form-container">
769
+ * <ng-container
770
+ * dynamicFieldLoader
771
+ * [fields]="complexFields"
772
+ * [formGroup]="complexForm"
773
+ * (componentsCreated)="handleComponents($event)">
774
+ * </ng-container>
775
+ * </div>
776
+ * ```
777
+ *
778
+ * Concurrency & Stability
779
+ * - The directive may receive rapid, back-to-back input changes (e.g. initial
780
+ * binding triggers ngOnChanges followed immediately by ngOnInit). Because
781
+ * component resolution is async, naive implementations can interleave two
782
+ * render cycles, causing duplicated shells/components. To avoid this, the
783
+ * render pipeline is serialized with a lightweight reentrancy guard
784
+ * (isRendering + pendingRender), coalescing intermediate requests into a
785
+ * single subsequent pass.
786
+ * - All component/shell references and subscriptions are tracked and disposed
787
+ * deterministically to prevent memory leaks.
788
+ */
789
+
790
+ /**
791
+ * Diretiva que renderiza campos de formulário dinamicamente baseado em metadados.
792
+ *
793
+ * Integra-se com ComponentRegistryService para resolver componentes por tipo,
794
+ * associa automaticamente FormControls e emite referências dos componentes criados.
795
+ *
796
+ * ## 🏗️ Funcionalidades Principais
797
+ *
798
+ * - ✅ Renderização dinâmica baseada em FieldMetadata[]
799
+ * - ✅ Integração automática com Angular Reactive Forms
800
+ * - ✅ Resolução de componentes via ComponentRegistryService
801
+ * - ✅ Validação robusta de inputs
802
+ * - ✅ Emissão de ComponentRef para controle externo
803
+ * - ✅ Lifecycle management completo
804
+ * - ✅ Detecção automática de mudanças
805
+ *
806
+ * ## 🎯 Casos de Uso
807
+ *
808
+ * - Formulários dinâmicos baseados em configuração JSON
809
+ * - Admin panels com campos configuráveis
810
+ * - Workflows com etapas dinâmicas
811
+ * - Formulários gerados por API/backend
812
+ * - A/B testing de interfaces de formulário
813
+ *
814
+ * @selector [dynamicFieldLoader]
815
+ * @usageNotes
816
+ * - Sempre fornecer tanto fields quanto formGroup
817
+ * - FormGroup deve ter controls correspondentes aos field names
818
+ * - Usar ViewChild para capturar referências se necessário
819
+ * - Componentes são criados de forma lazy (apenas quando necessário)
820
+ */
821
+ declare class DynamicFieldLoaderDirective implements OnInit, OnDestroy, OnChanges {
822
+ private readonly viewContainer;
823
+ private readonly componentRegistry;
824
+ private readonly cdr;
825
+ /**
826
+ * Metadados dos campos a serem renderizados.
827
+ *
828
+ * Array de objetos FieldMetadata que define a estrutura,
829
+ * validação e comportamento de cada campo do formulário.
830
+ *
831
+ * @example
832
+ * ```typescript
833
+ * const fields: FieldMetadata[] = [
834
+ * {
835
+ * name: 'email',
836
+ * label: 'Email',
837
+ * controlType: 'input',
838
+ * required: true,
839
+ * validators: { email: true }
840
+ * },
841
+ * {
842
+ * name: 'password',
843
+ * label: 'Senha',
844
+ * controlType: 'input',
845
+ * inputType: 'password',
846
+ * required: true
847
+ * }
848
+ * ];
849
+ * ```
850
+ */
851
+ fields: FieldMetadata[];
852
+ /**
853
+ * FormGroup que gerencia os controles dos campos.
854
+ *
855
+ * Deve conter AbstractControl para cada campo definido no array fields.
856
+ * A diretiva associa automaticamente cada componente ao control correspondente.
857
+ *
858
+ * @example
859
+ * ```typescript
860
+ * const formGroup = this.fb.group({
861
+ * email: ['', [Validators.required, Validators.email]],
862
+ * password: ['', [Validators.required, Validators.minLength(8)]]
863
+ * });
864
+ * ```
865
+ */
866
+ formGroup: FormGroup | null;
867
+ /**
868
+ * Controla se a diretiva deve injetar o AbstractControl externo
869
+ * diretamente no componente via setExternalControl(control).
870
+ *
871
+ * Quando false (padrão), a diretiva apenas atribui o control ao signal
872
+ * formControl, caso o componente o exponha, evitando acoplamento.
873
+ */
874
+ enableExternalControlBinding: boolean;
875
+ /**
876
+ * Template opcional para embrulhar cada campo renderizado.
877
+ *
878
+ * O contexto fornece:
879
+ * - `field`: metadata do campo
880
+ * - `index`: posição do campo na lista
881
+ * - `content`: `TemplateRef` com o conteúdo do campo a ser projetado
882
+ *
883
+ * @example
884
+ * ```html
885
+ * <ng-template #fieldItem let-field="field" let-index="index" let-content="content">
886
+ * <div class="field-wrapper">
887
+ * <ng-container [ngTemplateOutlet]="content"></ng-container>
888
+ * </div>
889
+ * </ng-template>
890
+ *
891
+ * <ng-container
892
+ * dynamicFieldLoader
893
+ * [fields]="fields"
894
+ * [formGroup]="form"
895
+ * [itemTemplate]="fieldItem">
896
+ * </ng-container>
897
+ * ```
898
+ *
899
+ * O `itemTemplate` permite projetar elementos adicionais ao redor do conteúdo
900
+ * do campo. Não há suporte a arraste no `FieldShellComponent`.
901
+ */
902
+ itemTemplate?: TemplateRef<{
903
+ field: FieldMetadata;
904
+ index: number;
905
+ content: TemplateRef<any>;
906
+ }>;
907
+ /**
908
+ * Estados globais opcionais aplicados a todos os campos renderizados.
909
+ *
910
+ * Quando definidos, não substituem explicitamente metadados a menos que
911
+ * seja necessário (ex.: readonlyMode/presentationMode = true, visible = false,
912
+ * disabledMode = true). Quando não definidos (null), prevalecem metadados.
913
+ */
914
+ readonlyMode: boolean | null;
915
+ disabledMode: boolean | null;
916
+ presentationMode: boolean | null;
917
+ visible: boolean | null;
918
+ /** @internal Special input for canvas mode integration */
919
+ canvasMode: boolean;
920
+ /**
921
+ * Emite um mapa com as referências dos componentes criados.
922
+ *
923
+ * Indexado pelo nome do campo (FieldMetadata.name).
924
+ * Útil para controle externo, validação customizada ou manipulação direta.
925
+ *
926
+ * @example
927
+ * ```typescript
928
+ * onComponentsCreated(components: Map<string, ComponentRef<BaseDynamicFieldComponent>>) {
929
+ * // Acessar componente específico
930
+ * const emailComponent = components.get('email');
931
+ * if (emailComponent) {
932
+ * emailComponent.instance.focus();
933
+ * }
934
+ *
935
+ * // Iterar todos os componentes
936
+ * components.forEach((componentRef, fieldName) => {
937
+ * console.log(`Campo ${fieldName} criado:`, componentRef.instance);
938
+ * });
939
+ * }
940
+ * ```
941
+ */
942
+ componentsCreated: EventEmitter<Map<string, ComponentRef<BaseDynamicFieldComponent>>>;
943
+ /** Evento emitido após a criação individual de um campo */
944
+ fieldCreated: EventEmitter<{
945
+ field: FieldMetadata;
946
+ componentRef: ComponentRef<any>;
947
+ index: number;
948
+ }>;
949
+ /** Evento emitido quando um campo é destruído */
950
+ fieldDestroyed: EventEmitter<{
951
+ fieldName: string;
952
+ }>;
953
+ /** @internal Emits when a field is hovered in canvas mode */
954
+ canvasMouseEnter: EventEmitter<{
955
+ field: FieldMetadata;
956
+ element: HTMLElement;
957
+ }>;
958
+ /** @internal Emits when a field is no longer hovered in canvas mode */
959
+ canvasMouseLeave: EventEmitter<{
960
+ field: FieldMetadata;
961
+ element: HTMLElement;
962
+ }>;
963
+ /** @internal Emits when a field is clicked in canvas mode */
964
+ canvasClick: EventEmitter<{
965
+ field: FieldMetadata;
966
+ element: HTMLElement;
967
+ }>;
968
+ /** Mapa interno de componentes criados */
969
+ private componentRefs;
970
+ /** Mapa de shells criados */
971
+ private shellRefs;
972
+ /** Subscription manager for shell events */
973
+ private shellSubscriptions;
974
+ /** Ordem atual dos nomes de campo renderizados */
975
+ private currentOrder;
976
+ /** Snapshot compacto para detectar mudanças relevantes nos campos (tipo + flags principais) */
977
+ private lastFieldsSnapshot;
978
+ /** First-render guard to ignore transient input changes */
979
+ /** Serialize async renders to avoid duplicate creations on rapid changes */
980
+ private isRendering;
981
+ private pendingRender;
982
+ private _dbgPrevFieldsRef;
983
+ private _dbgPrevFormGroupRef;
984
+ private _dbgNgChangesCount;
985
+ private _dbgRenderCalls;
986
+ private debugEnabled;
987
+ /** Tracks whether at least one successful render has completed */
988
+ private hasRenderedOnce;
989
+ private dbg;
990
+ ngOnInit(): void;
991
+ ngOnChanges(changes: SimpleChanges): void;
992
+ ngOnDestroy(): void;
993
+ /**
994
+ * Re-renderiza todos os campos forçadamente.
995
+ *
996
+ * Útil quando metadata ou FormGroup foram alterados externamente
997
+ * e a detecção automática de mudanças não foi suficiente.
998
+ *
999
+ * @example
1000
+ * ```typescript
1001
+ * @ViewChild(DynamicFieldLoaderDirective)
1002
+ * fieldLoader!: DynamicFieldLoaderDirective;
1003
+ *
1004
+ * updateFieldsExternally() {
1005
+ * // Modificar fields ou formGroup externamente
1006
+ * this.fields[0].disabled = true;
1007
+ *
1008
+ * // Forçar re-renderização
1009
+ * this.fieldLoader.refresh();
1010
+ * }
1011
+ * ```
1012
+ */
1013
+ refresh(): void;
1014
+ /**
1015
+ * Obtém referência de componente específico por nome do campo.
1016
+ *
1017
+ * @param fieldName - Nome do campo conforme FieldMetadata.name
1018
+ * @returns ComponentRef ou undefined se não encontrado
1019
+ *
1020
+ * @example
1021
+ * ```typescript
1022
+ * const emailComponent = this.fieldLoader.getComponent('email');
1023
+ * if (emailComponent) {
1024
+ * emailComponent.instance.setLoading(true);
1025
+ * }
1026
+ * ```
1027
+ */
1028
+ getComponent(fieldName: string): ComponentRef<BaseDynamicFieldComponent> | undefined;
1029
+ /**
1030
+ * Obtém todos os componentes criados.
1031
+ *
1032
+ * @returns Map com todas as referências de componentes indexadas por nome
1033
+ */
1034
+ getAllComponents(): Map<string, ComponentRef<BaseDynamicFieldComponent>>;
1035
+ /**
1036
+ * Valida as entradas da diretiva antes de processá-las.
1037
+ *
1038
+ * Verifica se inputs obrigatórios estão presentes e válidos,
1039
+ * emite warnings para problemas não-críticos.
1040
+ *
1041
+ * @throws Error se validação crítica falhar
1042
+ */
1043
+ private validateInputs;
1044
+ /**
1045
+ * Carrega os campos dinâmicos no contêiner de visualização.
1046
+ *
1047
+ * Processo completo:
1048
+ * 1. Validar inputs
1049
+ * 2. Limpar componentes existentes
1050
+ * 3. Resolver e criar cada componente
1051
+ * 4. Associar propriedades e FormControl
1052
+ * 5. Emitir mapa de componentes criados
1053
+ */
1054
+ private renderFields;
1055
+ /**
1056
+ * Executa a renderização dos campos com rollback em caso de erro.
1057
+ *
1058
+ * @private
1059
+ */
1060
+ private executeRendering;
1061
+ /** Builds a minimal snapshot capturing changes that matter for re-rendering. */
1062
+ private buildFieldSnapshot;
1063
+ /**
1064
+ * Reatribui apenas os FormControls existentes aos componentes/shells sem refazer a renderização.
1065
+ */
1066
+ private rebindControlsOnly;
1067
+ /** Destroi todos os componentes e limpa o container */
1068
+ private destroyComponents;
1069
+ /** Destroi um único campo pelo nome */
1070
+ private destroySingle;
1071
+ /** Cria o componente de campo dentro de um FieldShell e aplica metadados/controle */
1072
+ private createFieldComponent;
1073
+ /**
1074
+ * Aplica os estados globais aos shells já criados, sem re-render completo.
1075
+ */
1076
+ private applyGlobalStates;
1077
+ /**
1078
+ * Tenta inferir o controlType a partir do próprio field.
1079
+ * Retorna null quando não é possível inferir, mantendo a validação original.
1080
+ */
1081
+ private inferControlTypeFromField;
1082
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DynamicFieldLoaderDirective, never>;
1083
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DynamicFieldLoaderDirective, "[dynamicFieldLoader]", never, { "fields": { "alias": "fields"; "required": true; }; "formGroup": { "alias": "formGroup"; "required": true; }; "enableExternalControlBinding": { "alias": "enableExternalControlBinding"; "required": false; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; }; "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "canvasMode": { "alias": "canvasMode"; "required": false; }; }, { "componentsCreated": "componentsCreated"; "fieldCreated": "fieldCreated"; "fieldDestroyed": "fieldDestroyed"; "canvasMouseEnter": "canvasMouseEnter"; "canvasMouseLeave": "canvasMouseLeave"; "canvasClick": "canvasClick"; }, never, never, true, never>;
1084
+ }
1085
+
1086
+ declare class MaterialButtonComponent extends SimpleBaseButtonComponent implements OnDestroy {
1087
+ private readonly actionResolver;
1088
+ private readonly keyboardService;
1089
+ private unregisterShortcut?;
1090
+ /** Estado adicional específico do Material Button */
1091
+ protected readonly materialButtonState: _angular_core.WritableSignal<{
1092
+ isPressed: boolean;
1093
+ rippleDisabled: boolean;
1094
+ }>;
1095
+ /** Variante do botão Material */
1096
+ readonly buttonVariant: _angular_core.Signal<"basic" | "icon" | "flat" | "raised" | "stroked" | "fab" | "mini-fab">;
1097
+ /** Deve desabilitar ripple */
1098
+ readonly shouldDisableRipple: _angular_core.Signal<boolean>;
1099
+ /** É botão somente ícone */
1100
+ readonly isIconOnlyButton: _angular_core.Signal<boolean>;
1101
+ /** Deve mostrar ícone no texto */
1102
+ readonly shouldShowIcon: _angular_core.Signal<any>;
1103
+ /** Atalho de teclado */
1104
+ readonly keyboardShortcut: _angular_core.Signal<any>;
1105
+ /** Tooltip text */
1106
+ readonly tooltipText: _angular_core.Signal<string>;
1107
+ ngOnInit(): void;
1108
+ ngOnDestroy(): void;
1109
+ /**
1110
+ * Classes CSS específicas do Material Button
1111
+ */
1112
+ protected getSpecificCssClasses(): string[];
1113
+ /**
1114
+ * Override do handleClick para adicionar comportamento específico do Material Button
1115
+ */
1116
+ handleClick(event: MouseEvent): Promise<void>;
1117
+ /**
1118
+ * Define metadata específica do Material Button
1119
+ */
1120
+ setButtonMetadata(metadata: MaterialButtonMetadata): void;
1121
+ /**
1122
+ * Alterna estado de ripple
1123
+ */
1124
+ toggleRipple(disabled: boolean): void;
1125
+ /**
1126
+ * Obtém informações do botão
1127
+ */
1128
+ getButtonInfo(): any;
1129
+ private setupKeyboardShortcuts;
1130
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialButtonComponent, never>;
1131
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialButtonComponent, "pdx-material-button", never, {}, {}, never, never, true, never>;
1132
+ }
1133
+
1134
+ interface ConfirmDialogData {
1135
+ title: string;
1136
+ message: string;
1137
+ confirmText: string;
1138
+ cancelText: string;
1139
+ type?: 'warning' | 'danger' | 'info';
1140
+ icon?: string;
1141
+ }
1142
+ declare class ConfirmDialogComponent {
1143
+ dialogRef: MatDialogRef<ConfirmDialogComponent>;
1144
+ data: ConfirmDialogData;
1145
+ constructor(dialogRef: MatDialogRef<ConfirmDialogComponent>, data: ConfirmDialogData);
1146
+ getConfirmButtonColor(): 'primary' | 'accent' | 'warn';
1147
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfirmDialogComponent, never>;
1148
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfirmDialogComponent, "pdx-confirm-dialog", never, {}, {}, never, never, true, never>;
1149
+ }
1150
+
1151
+ declare class TextInputComponent extends SimpleBaseInputComponent {
1152
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
1153
+ readonlyMode: boolean;
1154
+ disabledMode: boolean;
1155
+ visible: boolean;
1156
+ presentationMode: boolean;
1157
+ isReadonlyEffective(): boolean;
1158
+ ngOnInit(): void;
1159
+ onComponentInit(): void;
1160
+ /**
1161
+ * Adiciona classes CSS específicas do text-input
1162
+ */
1163
+ protected getSpecificCssClasses(): string[];
1164
+ /**
1165
+ * Reset do campo
1166
+ */
1167
+ resetField(): void;
1168
+ /**
1169
+ * Força validação do campo (override para emitir evento)
1170
+ */
1171
+ validateField(): Promise<ValidationErrors | null>;
1172
+ /**
1173
+ * Define metadata e aplica configurações
1174
+ */
1175
+ setInputMetadata(metadata: MaterialInputMetadata): void;
1176
+ showClear(): boolean;
1177
+ onClearClick(): void;
1178
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1179
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextInputComponent, never>;
1180
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextInputComponent, "pdx-text-input", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
1181
+ }
1182
+
1183
+ /**
1184
+ * Specialized input component for HTML color inputs.
1185
+ *
1186
+ * Renders a `<mat-form-field>` containing an `<input type="color">` element
1187
+ * with basic validation and hint support. Built on top of the
1188
+ * `SimpleBaseInputComponent` to leverage common functionality such as
1189
+ * reactive forms integration and error handling.
1190
+ */
1191
+ declare class ColorInputComponent extends SimpleBaseInputComponent {
1192
+ private nativePickerRef?;
1193
+ private menuTrigger?;
1194
+ /** Emits whenever validation state changes. */
1195
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
1196
+ readonlyMode: boolean;
1197
+ disabledMode: boolean;
1198
+ visible: boolean;
1199
+ presentationMode: boolean;
1200
+ palettePreset: 'basic' | 'office' | 'material' | string;
1201
+ paletteColors: string[] | undefined;
1202
+ columns: number;
1203
+ popupWidth: number | string;
1204
+ preview: boolean;
1205
+ showRecent: boolean;
1206
+ maxRecent: number;
1207
+ showNativeOption: boolean;
1208
+ panelWidthPx: number;
1209
+ readonly recent: _angular_core.WritableSignal<string[]>;
1210
+ readonly swatches: _angular_core.Signal<string[]>;
1211
+ constructor();
1212
+ ngOnInit(): void;
1213
+ validateField(): Promise<ValidationErrors | null>;
1214
+ protected getSpecificCssClasses(): string[];
1215
+ /** Applies component metadata with strong typing. */
1216
+ setInputMetadata(metadata: MaterialColorInputMetadata): void;
1217
+ /** Programmatically opens the native color picker if supported. */
1218
+ openNativePicker(): void;
1219
+ onNativeColorChange(event: Event): void;
1220
+ previewColor(): string;
1221
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1222
+ isReadonlyEffective(): boolean;
1223
+ openMenu(): void;
1224
+ onSwatchClick(c: string): void;
1225
+ isSelected(c: string): boolean;
1226
+ copyCurrent(): void;
1227
+ private applyColor;
1228
+ currentSolidHex(): string;
1229
+ private pushRecent;
1230
+ private normalizeHex;
1231
+ private buildPaletteColors;
1232
+ private coerceWidth;
1233
+ private loadFromStorage;
1234
+ private saveToStorage;
1235
+ trackColor(_: number, c: string): string;
1236
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ColorInputComponent, never>;
1237
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ColorInputComponent, "pdx-color-input", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; "palettePreset": { "alias": "palettePreset"; "required": false; }; "paletteColors": { "alias": "paletteColors"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "popupWidth": { "alias": "popupWidth"; "required": false; }; "preview": { "alias": "preview"; "required": false; }; "showRecent": { "alias": "showRecent"; "required": false; }; "maxRecent": { "alias": "maxRecent"; "required": false; }; "showNativeOption": { "alias": "showNativeOption"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
1238
+ }
1239
+
1240
+ /**
1241
+ * Specialized input component for HTML date inputs.
1242
+ *
1243
+ * Renders a `<mat-form-field>` containing an `<input type="date">` element
1244
+ * with basic validation and hint support. Built on top of the
1245
+ * `SimpleBaseInputComponent` to leverage common functionality such as
1246
+ * reactive forms integration and error handling.
1247
+ */
1248
+ declare class DateInputComponent extends SimpleBaseInputComponent {
1249
+ /** Emits whenever validation state changes. */
1250
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
1251
+ readonlyMode: boolean;
1252
+ disabledMode: boolean;
1253
+ visible: boolean;
1254
+ presentationMode: boolean;
1255
+ isReadonlyEffective(): boolean;
1256
+ ngOnInit(): void;
1257
+ validateField(): Promise<ValidationErrors | null>;
1258
+ protected getSpecificCssClasses(): string[];
1259
+ /** Applies component metadata with strong typing. */
1260
+ setInputMetadata(metadata: MaterialDateInputMetadata): void;
1261
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1262
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateInputComponent, never>;
1263
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateInputComponent, "pdx-date-input", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
1264
+ }
1265
+
1266
+ /**
1267
+ * Specialized component using Angular Material Datepicker.
1268
+ *
1269
+ * Renders a `<mat-form-field>` with an `<input>` bound to a
1270
+ * `mat-datepicker`. Includes toggle button, hint and error support
1271
+ * following the same pattern used by other dynamic field components.
1272
+ */
1273
+ declare class MaterialDatepickerComponent extends SimpleBaseInputComponent {
1274
+ /** Emits whenever validation state changes. */
1275
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
1276
+ readonlyMode: boolean;
1277
+ disabledMode: boolean;
1278
+ visible: boolean;
1279
+ presentationMode: boolean;
1280
+ readonly minDate: _angular_core.Signal<any>;
1281
+ readonly maxDate: _angular_core.Signal<any>;
1282
+ readonly startAt: _angular_core.Signal<any>;
1283
+ onDateChange(event: MatDatepickerInputEvent<Date | null>): void;
1284
+ validateField(): Promise<ValidationErrors | null>;
1285
+ protected getSpecificCssClasses(): string[];
1286
+ /** Applies component metadata with strong typing. */
1287
+ setDatepickerMetadata(metadata: MaterialDatepickerMetadata): void;
1288
+ isReadonlyEffective(): boolean;
1289
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1290
+ showClear(): boolean;
1291
+ onClearClick(): void;
1292
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialDatepickerComponent, never>;
1293
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialDatepickerComponent, "pdx-material-datepicker", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
1294
+ }
1295
+
1296
+ /**
1297
+ * Specialized component using Angular Material Date Range picker.
1298
+ *
1299
+ * Renders a `<mat-form-field>` with a `mat-date-range-input` bound to
1300
+ * an internal `FormGroup`. Integrates toggle button, hint and error support
1301
+ * following the same pattern used by other dynamic field components.
1302
+ */
1303
+ declare class MaterialDateRangeComponent extends SimpleBaseInputComponent implements OnInit {
1304
+ /** Emits whenever validation state changes. */
1305
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
1306
+ readonlyMode: boolean;
1307
+ disabledMode: boolean;
1308
+ visible: boolean;
1309
+ presentationMode: boolean;
1310
+ readonly rangeGroup: FormGroup<{
1311
+ start: FormControl<Date | null>;
1312
+ end: FormControl<Date | null>;
1313
+ }>;
1314
+ readonly minDate: _angular_core.Signal<any>;
1315
+ readonly maxDate: _angular_core.Signal<any>;
1316
+ readonly startAt: _angular_core.Signal<any>;
1317
+ ngOnInit(): void;
1318
+ validateField(): Promise<ValidationErrors | null>;
1319
+ protected getSpecificCssClasses(): string[];
1320
+ /** Applies component metadata with strong typing. */
1321
+ setDateRangeMetadata(metadata: MaterialDateRangeMetadata): void;
1322
+ isReadonlyEffective(): boolean;
1323
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1324
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialDateRangeComponent, never>;
1325
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialDateRangeComponent, "pdx-material-date-range", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
1326
+ }
1327
+
1328
+ /**
1329
+ * Specialized input component for HTML datetime-local inputs.
1330
+ *
1331
+ * Renders a `<mat-form-field>` containing an `<input type="datetime-local">`
1332
+ * element with basic validation and hint support.
1333
+ */
1334
+ declare class DatetimeLocalInputComponent extends SimpleBaseInputComponent {
1335
+ /** Emits whenever validation state changes. */
1336
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
1337
+ readonlyMode: boolean;
1338
+ disabledMode: boolean;
1339
+ visible: boolean;
1340
+ presentationMode: boolean;
1341
+ isReadonlyEffective(): boolean;
1342
+ ngOnInit(): void;
1343
+ validateField(): Promise<ValidationErrors | null>;
1344
+ protected getSpecificCssClasses(): string[];
1345
+ /** Applies component metadata with strong typing. */
1346
+ setInputMetadata(metadata: MaterialDatetimeLocalInputMetadata): void;
1347
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1348
+ private datetimeBoundsValidator;
1349
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatetimeLocalInputComponent, never>;
1350
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatetimeLocalInputComponent, "pdx-datetime-local-input", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
1351
+ }
1352
+
1353
+ /**
1354
+ * Specialized input component for HTML email inputs.
1355
+ *
1356
+ * Renders a `<mat-form-field>` containing an `<input type="email">` element
1357
+ * with basic validation and hint support. Built on top of the
1358
+ * `SimpleBaseInputComponent` to leverage common functionality such as
1359
+ * reactive forms integration and error handling.
1360
+ */
1361
+ declare class EmailInputComponent extends SimpleBaseInputComponent {
1362
+ /** Emits whenever validation state changes. */
1363
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
1364
+ readonlyMode: boolean;
1365
+ disabledMode: boolean;
1366
+ visible: boolean;
1367
+ presentationMode: boolean;
1368
+ ngOnInit(): void;
1369
+ validateField(): Promise<ValidationErrors | null>;
1370
+ protected getSpecificCssClasses(): string[];
1371
+ /** Applies component metadata with strong typing. */
1372
+ setInputMetadata(metadata: MaterialEmailInputMetadata): void;
1373
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1374
+ isReadonlyEffective(): boolean;
1375
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmailInputComponent, never>;
1376
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmailInputComponent, "pdx-email-input", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
1377
+ }
1378
+
1379
+ /**
1380
+ * Minimal Material Textarea component for isolation/debug
1381
+ */
1382
+
1383
+ declare class MaterialTextareaComponent extends SimpleBaseInputComponent implements AfterViewInit {
1384
+ readonlyMode: boolean;
1385
+ disabledMode: boolean;
1386
+ visible: boolean;
1387
+ presentationMode: boolean;
1388
+ charCount: number;
1389
+ isReadonlyEffective(): boolean;
1390
+ protected getSpecificCssClasses(): string[];
1391
+ setInputMetadata(metadata: MaterialTextareaMetadata): void;
1392
+ private viewReady;
1393
+ ngAfterViewInit(): void;
1394
+ autoResizeEnabled(): boolean;
1395
+ private toNumber;
1396
+ getRowsAttr(): number;
1397
+ getMinRowsAttr(): number;
1398
+ getMaxRowsAttr(): number;
1399
+ ngOnInit(): void;
1400
+ showCharacterCount(): boolean;
1401
+ showStats(): boolean;
1402
+ getWords(): number;
1403
+ getLines(): number;
1404
+ isNearLimit(): boolean;
1405
+ isAtOrOverLimit(): boolean;
1406
+ private getMode;
1407
+ isCodeLikeMode(): boolean;
1408
+ effectiveSpellcheck(): boolean | null;
1409
+ effectiveWrap(): string | null;
1410
+ private getCurrentLines;
1411
+ private getLineStart;
1412
+ private outdentAtSelection;
1413
+ private _log;
1414
+ enableTabIndent(): boolean;
1415
+ showClear(): boolean;
1416
+ onClearClick(): void;
1417
+ onFocusLog(): void;
1418
+ onBlurLog(): void;
1419
+ onTextareaKeydown(event: KeyboardEvent): void;
1420
+ private getTabSize;
1421
+ private getTabUnit;
1422
+ onInputLog(_event: Event): void;
1423
+ onPaste(_event: ClipboardEvent): void;
1424
+ onCut(_event: ClipboardEvent): void;
1425
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialTextareaComponent, never>;
1426
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialTextareaComponent, "pdx-material-textarea", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
1427
+ }
1428
+
1429
+ /**
1430
+ * Specialized input component for HTML number inputs.
1431
+ *
1432
+ * Renders a `<mat-form-field>` containing an `<input type="number">` element
1433
+ * with basic validation and hint support. Built on top of the
1434
+ * `SimpleBaseInputComponent` to leverage common functionality such as
1435
+ * reactive forms integration and error handling.
1436
+ */
1437
+ declare class NumberInputComponent extends SimpleBaseInputComponent {
1438
+ /** Emits whenever validation state changes. */
1439
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
1440
+ readonlyMode: boolean;
1441
+ disabledMode: boolean;
1442
+ visible: boolean;
1443
+ presentationMode: boolean;
1444
+ isReadonlyEffective(): boolean;
1445
+ ngOnInit(): void;
1446
+ validateField(): Promise<ValidationErrors | null>;
1447
+ protected getSpecificCssClasses(): string[];
1448
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1449
+ /** Applies component metadata with strong typing. */
1450
+ setInputMetadata(metadata: MaterialNumericMetadata): void;
1451
+ showClear(): boolean;
1452
+ onClearClick(): void;
1453
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NumberInputComponent, never>;
1454
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NumberInputComponent, "pdx-number-input", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
1455
+ }
1456
+
1457
+ /**
1458
+ * Input component for currency values with basic formatting support.
1459
+ *
1460
+ * Displays a currency symbol as prefix or suffix and validates numeric input.
1461
+ */
1462
+ declare class MaterialCurrencyComponent extends SimpleBaseInputComponent {
1463
+ /** Emits whenever validation state changes. */
1464
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
1465
+ private readonly currencyPipe;
1466
+ private readonly defaultLocale;
1467
+ private readonly inputRef;
1468
+ /** Currency code used for formatting. */
1469
+ readonly currencyCode: _angular_core.Signal<string>;
1470
+ /** Position of the currency symbol relative to the input. */
1471
+ readonly currencyPosition: _angular_core.Signal<"before" | "after">;
1472
+ /** Decimal places used for formatting. */
1473
+ readonly decimalPlaces: _angular_core.Signal<number>;
1474
+ /** Locale used for formatting and parsing. */
1475
+ readonly locale: _angular_core.Signal<string>;
1476
+ /** Thousands separator based on locale or metadata. */
1477
+ readonly thousandsSeparator: _angular_core.Signal<string>;
1478
+ /** Decimal separator based on locale or metadata. */
1479
+ readonly decimalSeparator: _angular_core.Signal<string>;
1480
+ ngOnInit(): void;
1481
+ /** Handles raw input and keeps numeric value in the control. */
1482
+ onInput(event: Event): void;
1483
+ /** Removes formatting when focusing for easier editing. */
1484
+ onFocus(): void;
1485
+ /** Formats the current value using CurrencyPipe on blur. */
1486
+ onBlur(): void;
1487
+ /** Extracts the symbol for the configured currency. */
1488
+ protected currencySymbol(): string;
1489
+ protected getSpecificCssClasses(): string[];
1490
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1491
+ private escapeRegex;
1492
+ /** Applies component metadata with strong typing. */
1493
+ set metadataInput(metadata: MaterialCurrencyMetadata);
1494
+ setInputMetadata(metadata: MaterialCurrencyMetadata): void;
1495
+ validateField(): Promise<ValidationErrors | null>;
1496
+ readonlyMode: boolean;
1497
+ disabledMode: boolean;
1498
+ visible: boolean;
1499
+ presentationMode: boolean;
1500
+ isReadonlyEffective(): boolean;
1501
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialCurrencyComponent, never>;
1502
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialCurrencyComponent, "pdx-material-currency", never, { "metadataInput": { "alias": "metadata"; "required": true; }; "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
1503
+ }
1504
+
1505
+ declare class MaterialCpfCnpjInputComponent extends SimpleBaseInputComponent {
1506
+ readonlyMode: boolean;
1507
+ disabledMode: boolean;
1508
+ visible: boolean;
1509
+ presentationMode: boolean;
1510
+ private dynamicValidator;
1511
+ cpfCnpjMetadata: _angular_core.Signal<MaterialCpfCnpjMetadata | null>;
1512
+ getSpecificCssClasses(): string[];
1513
+ setInputMetadata(metadata: MaterialCpfCnpjMetadata): void;
1514
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1515
+ onComponentInit(): void;
1516
+ private setupDynamicValidator;
1517
+ isReadonlyEffective(): boolean;
1518
+ writeValue(value: any): void;
1519
+ handleInput(event: Event): void;
1520
+ private cleanValue;
1521
+ private formatValue;
1522
+ private applyCpfMask;
1523
+ private applyCnpjMask;
1524
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialCpfCnpjInputComponent, never>;
1525
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialCpfCnpjInputComponent, "pdx-material-cpf-cnpj-input", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
1526
+ }
1527
+
1528
+ /**
1529
+ * Component for selecting a price range using two currency inputs.
1530
+ *
1531
+ * Reuses `MaterialCurrencyComponent` for both the minimum and maximum
1532
+ * values, keeping formatting and validation consistent.
1533
+ */
1534
+ declare class MaterialPriceRangeComponent extends SimpleBaseInputComponent implements OnInit {
1535
+ /** Emits whenever validation state changes. */
1536
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
1537
+ readonlyMode: boolean;
1538
+ disabledMode: boolean;
1539
+ visible: boolean;
1540
+ presentationMode: boolean;
1541
+ readonly rangeGroup: FormGroup<{
1542
+ minPrice: FormControl<number | null>;
1543
+ maxPrice: FormControl<number | null>;
1544
+ }>;
1545
+ readonly startCurrencyMetadata: _angular_core.Signal<MaterialCurrencyMetadata>;
1546
+ readonly endCurrencyMetadata: _angular_core.Signal<MaterialCurrencyMetadata>;
1547
+ /** Custom error messages for range-specific validations */
1548
+ readonly errorMessage: _angular_core.Signal<string>;
1549
+ ngOnInit(): void;
1550
+ validateField(): Promise<ValidationErrors | null>;
1551
+ protected getSpecificCssClasses(): string[];
1552
+ /** Applies component metadata with strong typing. */
1553
+ setPriceRangeMetadata(metadata: MaterialPriceRangeMetadata): void;
1554
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialPriceRangeComponent, never>;
1555
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialPriceRangeComponent, "pdx-material-price-range", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
1556
+ }
1557
+
1558
+ /**
1559
+ * Specialized input component for HTML month inputs.
1560
+ *
1561
+ * Renders a `<mat-form-field>` containing an `<input type="month">` element
1562
+ * with optional min/max constraints, basic validation and hint support.
1563
+ * Built on top of the `SimpleBaseInputComponent` to reuse core features
1564
+ * like reactive forms integration and error handling.
1565
+ */
1566
+ declare class MonthInputComponent extends SimpleBaseInputComponent {
1567
+ /** Emits whenever validation state changes. */
1568
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
1569
+ readonlyMode: boolean;
1570
+ disabledMode: boolean;
1571
+ visible: boolean;
1572
+ presentationMode: boolean;
1573
+ ngOnInit(): void;
1574
+ validateField(): Promise<ValidationErrors | null>;
1575
+ protected getSpecificCssClasses(): string[];
1576
+ /** Applies component metadata with strong typing. */
1577
+ setInputMetadata(metadata: MaterialMonthInputMetadata): void;
1578
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1579
+ isReadonlyEffective(): boolean;
1580
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MonthInputComponent, never>;
1581
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MonthInputComponent, "pdx-month-input", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
1582
+ }
1583
+
1584
+ /**
1585
+ * Specialized input component for password fields.
1586
+ *
1587
+ * Renders a `<mat-form-field>` wrapping an `<input type="password">` element
1588
+ * and leverages `SimpleBaseInputComponent` for common functionality such as
1589
+ * validation, hint display and reactive forms integration.
1590
+ */
1591
+ declare class PasswordInputComponent extends SimpleBaseInputComponent {
1592
+ /** Emits whenever validation state changes. */
1593
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
1594
+ readonlyMode: boolean;
1595
+ disabledMode: boolean;
1596
+ visible: boolean;
1597
+ presentationMode: boolean;
1598
+ validateField(): Promise<ValidationErrors | null>;
1599
+ protected getSpecificCssClasses(): string[];
1600
+ /** Applies typed metadata to the component. */
1601
+ setInputMetadata(metadata: MaterialPasswordMetadata): void;
1602
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1603
+ isReadonlyEffective(): boolean;
1604
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PasswordInputComponent, never>;
1605
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PasswordInputComponent, "pdx-password-input", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
1606
+ }
1607
+
1608
+ /**
1609
+ * Specialized input component for HTML search inputs.
1610
+ *
1611
+ * Renders a `<mat-form-field>` containing an `<input type="search">` element
1612
+ * with Material styling and basic validation support. Built on top of the
1613
+ * `SimpleBaseInputComponent` to leverage common functionality such as reactive
1614
+ * forms integration and error handling.
1615
+ */
1616
+ declare class SearchInputComponent extends SimpleBaseInputComponent {
1617
+ /** Emits whenever validation state changes. */
1618
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
1619
+ readonlyMode: boolean;
1620
+ disabledMode: boolean;
1621
+ visible: boolean;
1622
+ presentationMode: boolean;
1623
+ ngOnInit(): void;
1624
+ validateField(): Promise<ValidationErrors | null>;
1625
+ protected getSpecificCssClasses(): string[];
1626
+ /** Applies component metadata with strong typing. */
1627
+ setInputMetadata(metadata: MaterialSearchInputMetadata): void;
1628
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1629
+ isReadonlyEffective(): boolean;
1630
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchInputComponent, never>;
1631
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchInputComponent, "pdx-search-input", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
1632
+ }
1633
+
1634
+ declare class MaterialSelectComponent extends SimpleBaseSelectComponent {
1635
+ readonlyMode: boolean;
1636
+ disabledMode: boolean;
1637
+ visible: boolean;
1638
+ presentationMode: boolean;
1639
+ setSelectMetadata(metadata: SimpleSelectMetadata<any>): void;
1640
+ ngOnInit(): void;
1641
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1642
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialSelectComponent, never>;
1643
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialSelectComponent, "pdx-material-select", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
1644
+ }
1645
+
1646
+ declare class MaterialMultiSelectComponent extends SimpleBaseSelectComponent {
1647
+ readonlyMode: boolean;
1648
+ disabledMode: boolean;
1649
+ visible: boolean;
1650
+ presentationMode: boolean;
1651
+ setSelectMetadata(metadata: SimpleSelectMetadata<any>): void;
1652
+ /** Disables options when maxSelections reached */
1653
+ isOptionDisabled(option: SelectOption<any>): boolean;
1654
+ /** Emits optionSelected when a user picks an option */
1655
+ onOptionSelectionChange(option: SelectOption<any>, event: MatOptionSelectionChange): void;
1656
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1657
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialMultiSelectComponent, never>;
1658
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialMultiSelectComponent, "pdx-material-multi-select", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
1659
+ }
1660
+
1661
+ /**
1662
+ * Material wrapper for hierarchical multi select using `mat-tree`.
1663
+ *
1664
+ * Supports recursive selection with checkboxes and optional
1665
+ * "select all" helper. Values are emitted as array of node values.
1666
+ */
1667
+ declare class MaterialMultiSelectTreeComponent extends SimpleBaseInputComponent {
1668
+ readonlyMode: boolean;
1669
+ disabledMode: boolean;
1670
+ visible: boolean;
1671
+ presentationMode: boolean;
1672
+ /** Tree control managing expansion state */
1673
+ readonly treeControl: NestedTreeControl<MaterialTreeNode, MaterialTreeNode>;
1674
+ /** Data source bound to the tree */
1675
+ readonly dataSource: MatTreeNestedDataSource<MaterialTreeNode>;
1676
+ /** Selection model for nodes */
1677
+ readonly selection: SelectionModel<MaterialTreeNode>;
1678
+ private readonly parentMap;
1679
+ private readonly valueMap;
1680
+ /** Show select all option */
1681
+ readonly selectAll: _angular_core.WritableSignal<boolean>;
1682
+ /** Maximum allowed selections */
1683
+ readonly maxSelections: _angular_core.WritableSignal<number | null>;
1684
+ /** Label for select all option */
1685
+ readonly selectAllLabel: _angular_core.WritableSignal<string>;
1686
+ /** Emits whenever the selection changes */
1687
+ readonly selectionChange: EventEmitter<any[]>;
1688
+ onComponentInit(): void;
1689
+ showClear(): boolean;
1690
+ onClearClick(): void;
1691
+ /** Configure component metadata */
1692
+ setTreeMetadata(metadata: MaterialMultiSelectTreeMetadata): void;
1693
+ private normalizeNodes;
1694
+ /** Whether a node has children */
1695
+ hasChild: (_: number, node: MaterialTreeNode) => boolean;
1696
+ /** Toggle selection state of a node and its descendants */
1697
+ toggleNode(node: MaterialTreeNode): void;
1698
+ private toggleDescendants;
1699
+ private updateAllParents;
1700
+ private updateParentSelection;
1701
+ private getDescendants;
1702
+ private getParent;
1703
+ private buildParentMap;
1704
+ /** Whether descendants of a node are partially selected */
1705
+ descendantsPartiallySelected(node: MaterialTreeNode): boolean;
1706
+ private emitValue;
1707
+ writeValue(value: any): void;
1708
+ /** Toggle select all nodes */
1709
+ toggleSelectAll(): void;
1710
+ private selectAllRecursive;
1711
+ /** Check if all enabled nodes are selected */
1712
+ isAllSelected(): boolean;
1713
+ private getAllEnabledNodes;
1714
+ /** Disable node when maxSelections reached */
1715
+ isNodeDisabled(node: MaterialTreeNode): boolean;
1716
+ /** CSS hook */
1717
+ protected getSpecificCssClasses(): string[];
1718
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialMultiSelectTreeComponent, never>;
1719
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialMultiSelectTreeComponent, "pdx-material-multi-select-tree", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
1720
+ }
1721
+
1722
+ declare class MaterialTreeSelectComponent extends SimpleBaseSelectComponent {
1723
+ private host;
1724
+ readonlyMode: boolean;
1725
+ disabledMode: boolean;
1726
+ visible: boolean;
1727
+ presentationMode: boolean;
1728
+ readonly treeControl: NestedTreeControl<MaterialTreeNode, MaterialTreeNode>;
1729
+ readonly dataSource: MatTreeNestedDataSource<MaterialTreeNode>;
1730
+ readonly leafOnly: _angular_core.WritableSignal<boolean>;
1731
+ readonly autoExpandOnSearch: _angular_core.WritableSignal<boolean>;
1732
+ readonly returnPath: _angular_core.WritableSignal<boolean>;
1733
+ readonly returnObject: _angular_core.WritableSignal<boolean>;
1734
+ private parentMap;
1735
+ private allNodes;
1736
+ private selectedNode;
1737
+ constructor(host: ElementRef<HTMLElement>);
1738
+ onComponentInit(): void;
1739
+ setTreeMetadata(metadata: MaterialTreeSelectMetadata): void;
1740
+ private normalizeNodes;
1741
+ private buildParentMap;
1742
+ hasChild: (_: number, node: MaterialTreeNode) => boolean;
1743
+ selectNode(node: MaterialTreeNode): void;
1744
+ private resolveValue;
1745
+ private getPath;
1746
+ isSelected(node: MaterialTreeNode): boolean;
1747
+ isNodeDisabled(node: MaterialTreeNode): boolean;
1748
+ handleKeydown(event: KeyboardEvent, node: MaterialTreeNode): void;
1749
+ private focusSiblingNode;
1750
+ private focusNode;
1751
+ private getVisibleNodes;
1752
+ private applyFilter;
1753
+ private filterNodes;
1754
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialTreeSelectComponent, never>;
1755
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialTreeSelectComponent, "pdx-material-tree-select", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
1756
+ }
1757
+
1758
+ declare class MaterialSearchableSelectComponent extends SimpleBaseSelectComponent {
1759
+ readonlyMode: boolean;
1760
+ disabledMode: boolean;
1761
+ visible: boolean;
1762
+ presentationMode: boolean;
1763
+ private searchInput?;
1764
+ private readonly store;
1765
+ readonly endReached: _angular_core.WritableSignal<boolean>;
1766
+ private initialLoadStrategy;
1767
+ setSelectMetadata(metadata: any): void;
1768
+ ngOnInit(): void;
1769
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1770
+ onOpened(opened: boolean): void;
1771
+ private getSelectedIds;
1772
+ private preloadSelected;
1773
+ private refreshOptions;
1774
+ protected loadOptions(page?: number, searchTerm?: string, criteria?: Record<string, any>): void;
1775
+ loadNextPage(): void;
1776
+ onSearch(term: string): void;
1777
+ protected registerMatSelect(select: any): void;
1778
+ reload(reset: boolean): void;
1779
+ protected onDependenciesChanged(): void;
1780
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialSearchableSelectComponent, never>;
1781
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialSearchableSelectComponent, "pdx-material-searchable-select", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
1782
+ }
1783
+
1784
+ declare class MaterialAutocompleteComponent extends SimpleBaseSelectComponent<OptionDTO<any>> {
1785
+ readonlyMode: boolean;
1786
+ disabledMode: boolean;
1787
+ visible: boolean;
1788
+ presentationMode: boolean;
1789
+ private readonly store;
1790
+ readonly endReached: _angular_core.WritableSignal<boolean>;
1791
+ displayWith: (opt: OptionDTO<any>) => string;
1792
+ private initialLoadStrategy;
1793
+ setSelectMetadata(metadata: SimpleSelectMetadata<any>): void;
1794
+ ngOnInit(): void;
1795
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1796
+ isReadonlyEffective(): boolean;
1797
+ private getSelectedId;
1798
+ private preloadSelected;
1799
+ private refreshOptions;
1800
+ protected loadOptions(page?: number, searchTerm?: string, criteria?: Record<string, any>): void;
1801
+ onOpened(): void;
1802
+ onScroll(index: number): void;
1803
+ onSearch(term: string): void;
1804
+ trackByOption(index: number, option: SelectOption<OptionDTO<any>>): any;
1805
+ reload(reset: boolean): void;
1806
+ protected onDependenciesChanged(): void;
1807
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialAutocompleteComponent, never>;
1808
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialAutocompleteComponent, "pdx-material-autocomplete", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
1809
+ }
1810
+
1811
+ declare class MaterialChipsComponent extends SimpleBaseSelectComponent {
1812
+ readonlyMode: boolean;
1813
+ disabledMode: boolean;
1814
+ visible: boolean;
1815
+ presentationMode: boolean;
1816
+ readonly removable: _angular_core.WritableSignal<boolean>;
1817
+ readonly addOnBlur: _angular_core.WritableSignal<boolean>;
1818
+ readonly separatorKeys: number[];
1819
+ displayOption: (value: any) => string;
1820
+ selectedOptions(): SelectOption[];
1821
+ removeChip(option: SelectOption): void;
1822
+ onInputTokenEnd(event: MatChipInputEvent): void;
1823
+ setSelectMetadata(metadata: SimpleSelectMetadata<any>): void;
1824
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1825
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialChipsComponent, never>;
1826
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialChipsComponent, "pdx-material-chips", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
1827
+ }
1828
+
1829
+ declare class MaterialButtonToggleComponent extends SimpleBaseSelectComponent {
1830
+ setSelectMetadata(metadata: SimpleSelectMetadata<any>): void;
1831
+ protected getSpecificCssClasses(): string[];
1832
+ onGroupChange(event: MatButtonToggleChange): void;
1833
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialButtonToggleComponent, never>;
1834
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialButtonToggleComponent, "pdx-material-button-toggle", never, {}, {}, never, never, true, never>;
1835
+ }
1836
+
1837
+ declare class MaterialSlideToggleComponent extends SimpleBaseInputComponent {
1838
+ readonlyMode: boolean;
1839
+ disabledMode: boolean;
1840
+ visible: boolean;
1841
+ presentationMode: boolean;
1842
+ /** Applies component metadata with strong typing. */
1843
+ setInputMetadata(metadata: MaterialToggleMetadata): void;
1844
+ protected getSpecificCssClasses(): string[];
1845
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialSlideToggleComponent, never>;
1846
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialSlideToggleComponent, "pdx-material-slide-toggle", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
1847
+ }
1848
+
1849
+ declare class MaterialSliderComponent extends SimpleBaseInputComponent {
1850
+ readonlyMode: boolean;
1851
+ disabledMode: boolean;
1852
+ visible: boolean;
1853
+ presentationMode: boolean;
1854
+ /** Display function for slider values */
1855
+ displayWithFn: (value: number) => any;
1856
+ /** Applies component metadata with strong typing. */
1857
+ setInputMetadata(metadata: MaterialSliderMetadata): void;
1858
+ protected getSpecificCssClasses(): string[];
1859
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialSliderComponent, never>;
1860
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialSliderComponent, "pdx-material-slider", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
1861
+ }
1862
+
1863
+ declare class MaterialAsyncSelectComponent extends SimpleBaseSelectComponent {
1864
+ private lastConfiguredPath?;
1865
+ private initialLoadStrategy;
1866
+ private hasPerformedInitialLoad;
1867
+ readonlyMode: boolean;
1868
+ disabledMode: boolean;
1869
+ visible: boolean;
1870
+ presentationMode: boolean;
1871
+ private searchInput?;
1872
+ readonly termControl: FormControl<string | null>;
1873
+ private readonly store;
1874
+ readonly endReached: _angular_core.WritableSignal<boolean>;
1875
+ private cursorAfter;
1876
+ private cursorPageIndex;
1877
+ private dataVersion?;
1878
+ private useCursor;
1879
+ setSelectMetadata(metadata: any): void;
1880
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
1881
+ ngOnInit(): void;
1882
+ onOpened(opened: boolean): void;
1883
+ private getSelectedIds;
1884
+ private preloadSelected;
1885
+ private refreshOptions;
1886
+ private runQuery;
1887
+ loadMore(): void;
1888
+ retry(): void;
1889
+ handleKey(event: KeyboardEvent): void;
1890
+ protected registerMatSelect(select: any): void;
1891
+ reload(reset: boolean): void;
1892
+ protected onDependenciesChanged(): void;
1893
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialAsyncSelectComponent, never>;
1894
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialAsyncSelectComponent, "pdx-material-async-select", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
1895
+ }
1896
+
1897
+ declare class MaterialRadioGroupComponent extends SimpleBaseSelectComponent {
1898
+ readonlyMode: boolean;
1899
+ disabledMode: boolean;
1900
+ visible: boolean;
1901
+ presentationMode: boolean;
1902
+ setSelectMetadata(metadata: SimpleSelectMetadata<any>): void;
1903
+ protected getSpecificCssClasses(): string[];
1904
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialRadioGroupComponent, never>;
1905
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialRadioGroupComponent, "pdx-material-radio-group", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
1906
+ }
1907
+
1908
+ declare class MaterialCheckboxGroupComponent extends SimpleBaseSelectComponent {
1909
+ readonlyMode: boolean;
1910
+ disabledMode: boolean;
1911
+ visible: boolean;
1912
+ presentationMode: boolean;
1913
+ setSelectMetadata(metadata: SimpleSelectMetadata<any>): void;
1914
+ /** Disables options when maxSelections reached */
1915
+ isOptionDisabled(option: SelectOption<any>): boolean;
1916
+ protected getSpecificCssClasses(): string[];
1917
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialCheckboxGroupComponent, never>;
1918
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialCheckboxGroupComponent, "pdx-material-checkbox-group", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
1919
+ }
1920
+
1921
+ declare class MaterialSelectionListComponent extends SimpleBaseSelectComponent {
1922
+ readonlyMode: boolean;
1923
+ disabledMode: boolean;
1924
+ visible: boolean;
1925
+ presentationMode: boolean;
1926
+ setSelectMetadata(metadata: SimpleSelectMetadata<any>): void;
1927
+ protected getSpecificCssClasses(): string[];
1928
+ onSelectionChange(event: MatSelectionListChange): void;
1929
+ isOptionSelected(value: any): boolean;
1930
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialSelectionListComponent, never>;
1931
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialSelectionListComponent, "pdx-material-selection-list", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
1932
+ }
1933
+
1934
+ /**
1935
+ * Placeholder component for file upload fields.
1936
+ *
1937
+ * Currently provides a simple `<input type="file">` element and basic
1938
+ * ControlValueAccessor integration. A full-featured implementation will
1939
+ * be provided in future iterations.
1940
+ */
1941
+ declare class MaterialFileUploadComponent extends SimpleBaseInputComponent {
1942
+ readonlyMode: boolean;
1943
+ disabledMode: boolean;
1944
+ visible: boolean;
1945
+ presentationMode: boolean;
1946
+ /**
1947
+ * Updates the control value when the user selects a file.
1948
+ */
1949
+ onFileSelected(event: Event): void;
1950
+ /**
1951
+ * Exposes metadata setter for integration with dynamic form loader.
1952
+ */
1953
+ setFileUploadMetadata(metadata: ComponentMetadata): void;
1954
+ /**
1955
+ * CSS classes specific to the file upload wrapper.
1956
+ */
1957
+ protected getSpecificCssClasses(): string[];
1958
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialFileUploadComponent, never>;
1959
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialFileUploadComponent, "pdx-material-file-upload", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
1960
+ }
1961
+
1962
+ interface PreloadStatus {
1963
+ isPreloading: boolean;
1964
+ progress: number;
1965
+ currentComponent: string | null;
1966
+ totalComponents: number;
1967
+ loadedComponents: number;
1968
+ failedComponents: number;
1969
+ errors: string[];
1970
+ }
1971
+ declare class ComponentPreloaderService {
1972
+ private readonly componentRegistry;
1973
+ private readonly destroyRef;
1974
+ private preloadCompleted;
1975
+ private readonly preloadedComponents;
1976
+ private readonly statusSubject;
1977
+ private readonly componentsToPreload;
1978
+ /**
1979
+ * Observable do status atual do preload
1980
+ */
1981
+ get status$(): Observable<PreloadStatus>;
1982
+ /**
1983
+ * Verifica se o preload foi completado
1984
+ */
1985
+ isPreloadCompleted(): boolean;
1986
+ /**
1987
+ * Verifica se um componente específico foi precarregado
1988
+ */
1989
+ isComponentPreloaded(type: string): boolean;
1990
+ /**
1991
+ * Inicializa o sistema de componentes dinâmicos
1992
+ * Deve ser chamado na inicialização da aplicação
1993
+ */
1994
+ initialize(): Promise<void>;
1995
+ /**
1996
+ * Força um novo preload (útil para desenvolvimento)
1997
+ */
1998
+ forceReload(): Promise<void>;
1999
+ /**
2000
+ * Preload de um componente específico (on-demand)
2001
+ */
2002
+ preloadComponent(type: string): Promise<boolean>;
2003
+ /**
2004
+ * Executa o preload de todos os componentes configurados
2005
+ */
2006
+ private preloadComponents;
2007
+ /**
2008
+ * Atualiza o status interno do preload
2009
+ */
2010
+ private updateStatus;
2011
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ComponentPreloaderService, never>;
2012
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ComponentPreloaderService>;
2013
+ }
2014
+ /**
2015
+ * Factory function para inicialização da aplicação
2016
+ * Usar no app.config.ts com APP_INITIALIZER
2017
+ *
2018
+ * Executa de forma não-bloqueante para não atrasar o bootstrap da app,
2019
+ * mas garante que o TextInputComponent seja pré-carregado em background
2020
+ */
2021
+ declare function initializeComponentSystem(): () => undefined;
2022
+ /**
2023
+ * Factory function para inicialização síncrona (opcional)
2024
+ * Use apenas se quiser aguardar o preload antes da app inicializar
2025
+ */
2026
+ declare function initializeComponentSystemSync(): () => Promise<void>;
2027
+
2028
+ /**
2029
+ * @fileoverview Componente para exibir status do preload de componentes
2030
+ *
2031
+ * Componente opcional para debug e monitoramento do preload.
2032
+ * Exibe informações em tempo real sobre o carregamento dos componentes.
2033
+ */
2034
+
2035
+ declare class PreloadStatusComponent implements OnInit, OnDestroy {
2036
+ private readonly preloader;
2037
+ status: PreloadStatus | null;
2038
+ autoUpdate: boolean;
2039
+ private externalControl;
2040
+ ngOnInit(): void;
2041
+ ngOnDestroy(): void;
2042
+ /**
2043
+ * Força um novo preload
2044
+ */
2045
+ forceReload(): Promise<void>;
2046
+ /**
2047
+ * Toggle do auto-update
2048
+ */
2049
+ toggleAutoUpdate(): void;
2050
+ /**
2051
+ * Subscreve às atualizações de status em tempo real
2052
+ */
2053
+ private subscribeToStatus;
2054
+ /**
2055
+ * Carrega status atual uma vez
2056
+ */
2057
+ private loadCurrentStatus;
2058
+ setExternalControl(control: AbstractControl): void;
2059
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PreloadStatusComponent, never>;
2060
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PreloadStatusComponent, "pdx-preload-status", never, {}, {}, never, never, true, never>;
2061
+ }
2062
+
2063
+ /**
2064
+ * Specialized input component for telephone numbers.
2065
+ *
2066
+ * Renders a `<mat-form-field>` wrapping an `<input type="tel">` element with
2067
+ * Material styling. Built on top of `SimpleBaseInputComponent` to leverage
2068
+ * reactive forms integration, hint/error messaging and validation hooks.
2069
+ */
2070
+ declare class PhoneInputComponent extends SimpleBaseInputComponent {
2071
+ /** Emits whenever validation state changes. */
2072
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
2073
+ readonlyMode: boolean;
2074
+ disabledMode: boolean;
2075
+ visible: boolean;
2076
+ presentationMode: boolean;
2077
+ ngOnInit(): void;
2078
+ validateField(): Promise<ValidationErrors | null>;
2079
+ protected getSpecificCssClasses(): string[];
2080
+ /** Applies strongly typed metadata to the component. */
2081
+ setInputMetadata(metadata: MaterialPhoneMetadata): void;
2082
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
2083
+ isReadonlyEffective(): boolean;
2084
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PhoneInputComponent, never>;
2085
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PhoneInputComponent, "pdx-phone-input", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
2086
+ }
2087
+
2088
+ /**
2089
+ * Specialized input component for HTML time inputs.
2090
+ *
2091
+ * Renders a `<mat-form-field>` containing an `<input type="time">` element
2092
+ * with optional min/max/step constraints, basic validation and hint support.
2093
+ * Built on top of the `SimpleBaseInputComponent` to reuse core features
2094
+ * like reactive forms integration and error handling.
2095
+ */
2096
+ declare class TimeInputComponent extends SimpleBaseInputComponent {
2097
+ /** Emits whenever validation state changes. */
2098
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
2099
+ readonlyMode: boolean;
2100
+ disabledMode: boolean;
2101
+ visible: boolean;
2102
+ presentationMode: boolean;
2103
+ ngOnInit(): void;
2104
+ validateField(): Promise<ValidationErrors | null>;
2105
+ protected getSpecificCssClasses(): string[];
2106
+ /** Applies component metadata with strong typing. */
2107
+ setInputMetadata(metadata: MaterialTimeInputMetadata): void;
2108
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
2109
+ isReadonlyEffective(): boolean;
2110
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TimeInputComponent, never>;
2111
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimeInputComponent, "pdx-time-input", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
2112
+ }
2113
+
2114
+ /**
2115
+ * Angular Material timepicker component used in dynamic forms.
2116
+ *
2117
+ * Provides a form field with an input connected to `mat-timepicker`, allowing
2118
+ * users to select a time of day. Built on top of the `SimpleBaseInputComponent`
2119
+ * to reuse control value accessor integration and validation handling.
2120
+ */
2121
+ declare class MaterialTimepickerComponent extends SimpleBaseInputComponent {
2122
+ /** Emits whenever validation state changes. */
2123
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
2124
+ readonlyMode: boolean;
2125
+ disabledMode: boolean;
2126
+ visible: boolean;
2127
+ presentationMode: boolean;
2128
+ ngOnInit(): void;
2129
+ validateField(): Promise<ValidationErrors | null>;
2130
+ protected getSpecificCssClasses(): string[];
2131
+ /** Applies component metadata with strong typing. */
2132
+ setInputMetadata(metadata: MaterialTimepickerMetadata): void;
2133
+ isReadonlyEffective(): boolean;
2134
+ /** Calculates step attribute (seconds) based on metadata. */
2135
+ stepAttribute(): number | null;
2136
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
2137
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialTimepickerComponent, never>;
2138
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialTimepickerComponent, "pdx-material-timepicker", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
2139
+ }
2140
+
2141
+ /**
2142
+ * Specialized input component for HTML URL inputs.
2143
+ *
2144
+ * Renders a `<mat-form-field>` containing an `<input type="url">` element
2145
+ * with basic validation and hint support. Built on top of the
2146
+ * `SimpleBaseInputComponent` to leverage common functionality such as
2147
+ * reactive forms integration and error handling.
2148
+ */
2149
+ declare class UrlInputComponent extends SimpleBaseInputComponent {
2150
+ /** Emits whenever validation state changes. */
2151
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
2152
+ readonlyMode: boolean;
2153
+ disabledMode: boolean;
2154
+ visible: boolean;
2155
+ presentationMode: boolean;
2156
+ ngOnInit(): void;
2157
+ validateField(): Promise<ValidationErrors | null>;
2158
+ protected getSpecificCssClasses(): string[];
2159
+ /** Applies component metadata with strong typing. */
2160
+ setInputMetadata(metadata: MaterialUrlInputMetadata): void;
2161
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
2162
+ isReadonlyEffective(): boolean;
2163
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UrlInputComponent, never>;
2164
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UrlInputComponent, "pdx-url-input", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
2165
+ }
2166
+
2167
+ /**
2168
+ * Specialized input component for HTML week inputs.
2169
+ *
2170
+ * Renders a `<mat-form-field>` containing an `<input type="week">` element
2171
+ * with optional min/max constraints, basic validation and hint support.
2172
+ * Built on top of the `SimpleBaseInputComponent` to reuse core features
2173
+ * like reactive forms integration and error handling.
2174
+ */
2175
+ declare class WeekInputComponent extends SimpleBaseInputComponent {
2176
+ /** Emits whenever validation state changes. */
2177
+ readonly validationChange: _angular_core.OutputEmitterRef<ValidationErrors | null>;
2178
+ readonlyMode: boolean;
2179
+ disabledMode: boolean;
2180
+ visible: boolean;
2181
+ presentationMode: boolean;
2182
+ ngOnInit(): void;
2183
+ validateField(): Promise<ValidationErrors | null>;
2184
+ protected getSpecificCssClasses(): string[];
2185
+ /** Applies component metadata with strong typing. */
2186
+ setInputMetadata(metadata: MaterialWeekInputMetadata): void;
2187
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
2188
+ isReadonlyEffective(): boolean;
2189
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<WeekInputComponent, never>;
2190
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WeekInputComponent, "pdx-week-input", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, { "validationChange": "validationChange"; }, never, never, true, never>;
2191
+ }
2192
+
2193
+ /**
2194
+ * Basic color picker component leveraging the native input type="color".
2195
+ *
2196
+ * Renders a text field displaying the selected color value and a palette
2197
+ * icon that opens the browser's color picker. This acts as a starting point
2198
+ * for a more advanced color selection experience.
2199
+ */
2200
+ declare class MaterialColorPickerComponent extends SimpleBaseInputComponent {
2201
+ private pickerRef;
2202
+ readonlyMode: boolean;
2203
+ disabledMode: boolean;
2204
+ visible: boolean;
2205
+ presentationMode: boolean;
2206
+ /** Applies component metadata with strong typing. */
2207
+ setInputMetadata(metadata: MaterialColorPickerMetadata): void;
2208
+ /** Opens the native color picker dialog. */
2209
+ openPicker(): void;
2210
+ /** Handles color selection from the native input. */
2211
+ onNativeColorChange(event: Event): void;
2212
+ protected getSpecificCssClasses(): string[];
2213
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
2214
+ isReadonlyEffective(): boolean;
2215
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialColorPickerComponent, never>;
2216
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialColorPickerComponent, "pdx-material-colorpicker", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
2217
+ }
2218
+
2219
+ type SelectionMode = 'continuous' | 'single';
2220
+ type PrecisionMode = 'item' | 'half';
2221
+ interface RatingIconState {
2222
+ index: number;
2223
+ filled: boolean;
2224
+ half: boolean;
2225
+ hover: boolean;
2226
+ }
2227
+ declare class MaterialRatingComponent extends SimpleBaseInputComponent implements ControlValueAccessor {
2228
+ itemsCount: number;
2229
+ selection: SelectionMode;
2230
+ precision: PrecisionMode;
2231
+ icon?: string;
2232
+ svgIcon?: string;
2233
+ svgIconOutline?: string;
2234
+ outlineIcon?: string;
2235
+ disabled: boolean;
2236
+ readonlyMode: boolean;
2237
+ presentationMode: boolean;
2238
+ tabindex: number;
2239
+ size: 'small' | 'medium' | 'large';
2240
+ ariaLabel?: string;
2241
+ ratingColor?: string;
2242
+ outlineColor?: string;
2243
+ itemTemplate?: TemplateRef<any>;
2244
+ itemsRoot?: ElementRef<HTMLElement>;
2245
+ value: number | null;
2246
+ private hoverIndex;
2247
+ private hoverHalf;
2248
+ private normalizeCssColor;
2249
+ writeValue(obj: any): void;
2250
+ setDisabledState(isDisabled: boolean): void;
2251
+ isFilled(index: number): boolean;
2252
+ showHalf(index: number): boolean;
2253
+ iconState(index: number): RatingIconState;
2254
+ onMouseMove(ev: MouseEvent, index: number): void;
2255
+ onMouseLeave(): void;
2256
+ onClick(ev: MouseEvent, index: number): void;
2257
+ onKeyDown(ev: KeyboardEvent): void;
2258
+ private computeValueFromIndex;
2259
+ private getVisualValue;
2260
+ private getActiveIndexAndHalf;
2261
+ private applyValue;
2262
+ readonlyEffective(): boolean;
2263
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
2264
+ setInputMetadata(meta: any): void;
2265
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialRatingComponent, never>;
2266
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialRatingComponent, "pdx-material-rating", never, { "itemsCount": { "alias": "itemsCount"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; "precision": { "alias": "precision"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "svgIcon": { "alias": "svgIcon"; "required": false; }; "svgIconOutline": { "alias": "svgIconOutline"; "required": false; }; "outlineIcon": { "alias": "outlineIcon"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "size": { "alias": "size"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ratingColor": { "alias": "ratingColor"; "required": false; }; "outlineColor": { "alias": "outlineColor"; "required": false; }; }, {}, ["itemTemplate"], never, true, never>;
2267
+ }
2268
+
2269
+ type PickerView = 'gradient' | 'palette';
2270
+ type ColorFormat = 'hex' | 'rgb' | 'rgba' | 'hsl';
2271
+ interface GradientSettings {
2272
+ showOpacity?: boolean;
2273
+ channel?: 'hsv' | 'hsl';
2274
+ }
2275
+ interface PaletteSettings {
2276
+ preset?: 'basic' | 'office' | 'material' | string;
2277
+ colors?: string[];
2278
+ columns?: number;
2279
+ }
2280
+ interface PopupSettings {
2281
+ width?: number | string;
2282
+ anchor?: Element;
2283
+ appendTo?: Element | any;
2284
+ }
2285
+ declare class PdxColorPickerComponent extends SimpleBaseInputComponent implements ControlValueAccessor {
2286
+ private readonly bottomSheet;
2287
+ actionsLayout: 'start' | 'end';
2288
+ activeView: PickerView;
2289
+ adaptiveMode: boolean;
2290
+ adaptiveTitle?: string;
2291
+ adaptiveSubtitle?: any;
2292
+ clearButton: boolean;
2293
+ disabledMode: boolean;
2294
+ readonlyMode: boolean;
2295
+ visible: boolean;
2296
+ presentationMode: boolean;
2297
+ fillMode: 'solid' | 'flat' | 'outline';
2298
+ format: ColorFormat;
2299
+ gradientSettings?: GradientSettings;
2300
+ icon?: string;
2301
+ iconClass?: string | string[] | Record<string, boolean>;
2302
+ svgIcon?: any;
2303
+ paletteSettings?: PaletteSettings;
2304
+ popupSettings?: PopupSettings;
2305
+ preview: boolean;
2306
+ rounded: 'none' | 'small' | 'medium' | 'large' | 'full';
2307
+ size: 'small' | 'medium' | 'large';
2308
+ tabindex: number;
2309
+ views: PickerView[];
2310
+ maxRecent: number;
2311
+ showRecent: boolean;
2312
+ readonly valueChange: _angular_core.OutputEmitterRef<string | null>;
2313
+ readonly open: _angular_core.OutputEmitterRef<void>;
2314
+ readonly close: _angular_core.OutputEmitterRef<void>;
2315
+ readonly cancel: _angular_core.OutputEmitterRef<void>;
2316
+ readonly activeViewChange: _angular_core.OutputEmitterRef<PickerView>;
2317
+ readonly activeColorClick: _angular_core.OutputEmitterRef<string>;
2318
+ readonly focusEvent: _angular_core.OutputEmitterRef<void>;
2319
+ readonly blurEvent: _angular_core.OutputEmitterRef<void>;
2320
+ toggleBtn?: any;
2321
+ private menuTrigger?;
2322
+ private readonly current;
2323
+ private readonly draft;
2324
+ private readonly draftAlpha;
2325
+ panelWidthPx: number;
2326
+ constructor(bottomSheet: MatBottomSheet);
2327
+ ngOnInit(): void;
2328
+ writeValue(obj: any): void;
2329
+ handleFocus(): void;
2330
+ handleBlur(): void;
2331
+ openPicker(): void;
2332
+ onClose(): void;
2333
+ selectedTabIndex: _angular_core.WritableSignal<number>;
2334
+ readonly showGradient: _angular_core.Signal<boolean>;
2335
+ readonly showPalette: _angular_core.Signal<boolean>;
2336
+ onTabIndexChange(i: number): void;
2337
+ draftPreview: _angular_core.Signal<string | null>;
2338
+ draftSolidHex: _angular_core.Signal<string>;
2339
+ draftOpacity: _angular_core.Signal<number>;
2340
+ previewBackground(): string;
2341
+ onNativeGradient(ev: Event): void;
2342
+ onOpacity(ev: Event): void;
2343
+ private readonly customColors;
2344
+ readonly recentColors: _angular_core.WritableSignal<string[]>;
2345
+ paletteColors: _angular_core.Signal<string[]>;
2346
+ trackColor(_: number, c: string): string;
2347
+ onSwatchClick(c: string): void;
2348
+ addPaletteColor(): void;
2349
+ private pushRecent;
2350
+ copyDraft(): void;
2351
+ isSelected(c: string): boolean;
2352
+ onClear(): void;
2353
+ onCancel(): void;
2354
+ onApply(): void;
2355
+ readonlyEffective(): boolean;
2356
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
2357
+ protected getSpecificCssClasses(): string[];
2358
+ setInputMetadata(meta: any): void;
2359
+ private toFormat;
2360
+ private toHex;
2361
+ private toRgb;
2362
+ private toHsl;
2363
+ private extractAlpha;
2364
+ private clamp01;
2365
+ private buildPaletteColors;
2366
+ private coerceWidth;
2367
+ private loadFromStorage;
2368
+ private saveToStorage;
2369
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PdxColorPickerComponent, never>;
2370
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PdxColorPickerComponent, "pdx-color-picker", never, { "actionsLayout": { "alias": "actionsLayout"; "required": false; }; "activeView": { "alias": "activeView"; "required": false; }; "adaptiveMode": { "alias": "adaptiveMode"; "required": false; }; "adaptiveTitle": { "alias": "adaptiveTitle"; "required": false; }; "adaptiveSubtitle": { "alias": "adaptiveSubtitle"; "required": false; }; "clearButton": { "alias": "clearButton"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; "fillMode": { "alias": "fillMode"; "required": false; }; "format": { "alias": "format"; "required": false; }; "gradientSettings": { "alias": "gradientSettings"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconClass": { "alias": "iconClass"; "required": false; }; "svgIcon": { "alias": "svgIcon"; "required": false; }; "paletteSettings": { "alias": "paletteSettings"; "required": false; }; "popupSettings": { "alias": "popupSettings"; "required": false; }; "preview": { "alias": "preview"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "size": { "alias": "size"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "views": { "alias": "views"; "required": false; }; "maxRecent": { "alias": "maxRecent"; "required": false; }; "showRecent": { "alias": "showRecent"; "required": false; }; }, { "valueChange": "valueChange"; "open": "open"; "close": "close"; "cancel": "cancel"; "activeViewChange": "activeViewChange"; "activeColorClick": "activeColorClick"; "focusEvent": "focusEvent"; "blurEvent": "blurEvent"; }, never, never, true, never>;
2371
+ }
2372
+
2373
+ declare class PdxMaterialRangeSliderComponent extends SimpleBaseInputComponent implements OnInit {
2374
+ readonlyMode: boolean;
2375
+ disabledMode: boolean;
2376
+ visible: boolean;
2377
+ presentationMode: boolean;
2378
+ metadata: _angular_core.WritableSignal<MaterialRangeSliderMetadata | null>;
2379
+ readonly rangeGroup: FormGroup<{
2380
+ start: FormControl<number | null>;
2381
+ end: FormControl<number | null>;
2382
+ }>;
2383
+ readonly isRangeMode: _angular_core.Signal<boolean>;
2384
+ readonly displayWithFn: _angular_core.Signal<(value: number) => string>;
2385
+ readonly errorMessage: _angular_core.Signal<string>;
2386
+ ngOnInit(): void;
2387
+ /**
2388
+ * Overrides writeValue to handle both single and range modes.
2389
+ */
2390
+ writeValue(value: any): void;
2391
+ /**
2392
+ * Sets the component metadata and re-initializes validators.
2393
+ * @param metadata The metadata for the component.
2394
+ */
2395
+ setSliderMetadata(metadata: MaterialRangeSliderMetadata): void;
2396
+ protected getSpecificCssClasses(): string[];
2397
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PdxMaterialRangeSliderComponent, never>;
2398
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PdxMaterialRangeSliderComponent, "pdx-material-range-slider", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
2399
+ }
2400
+
2401
+ declare class MaterialTransferListComponent extends SimpleBaseSelectComponent {
2402
+ readonlyMode: boolean;
2403
+ disabledMode: boolean;
2404
+ visible: boolean;
2405
+ presentationMode: boolean;
2406
+ leftLabel: string;
2407
+ rightLabel: string;
2408
+ leftPlaceholder: string;
2409
+ rightPlaceholder: string;
2410
+ readonly leftOptions: _angular_core.WritableSignal<SelectOption<any>[]>;
2411
+ readonly rightOptions: _angular_core.WritableSignal<SelectOption<any>[]>;
2412
+ readonly leftFilter: _angular_core.WritableSignal<string>;
2413
+ readonly rightFilter: _angular_core.WritableSignal<string>;
2414
+ readonly filteredLeft: _angular_core.Signal<SelectOption<any>[]>;
2415
+ readonly filteredRight: _angular_core.Signal<SelectOption<any>[]>;
2416
+ constructor();
2417
+ setSelectMetadata(metadata: SimpleSelectMetadata<any>): void;
2418
+ ngOnInit(): void;
2419
+ private updateListsFromValue;
2420
+ getSelectedOptions(list: MatSelectionList): SelectOption[];
2421
+ moveRight(options: SelectOption[]): void;
2422
+ moveLeft(options: SelectOption[]): void;
2423
+ moveAllToRight(): void;
2424
+ moveAllToLeft(): void;
2425
+ drop(event: CdkDragDrop<SelectOption<any>[]>): void;
2426
+ private syncControl;
2427
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialTransferListComponent, never>;
2428
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MaterialTransferListComponent, "pdx-material-transfer-list", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
2429
+ }
2430
+
2431
+ declare class PdxYearInputComponent extends SimpleBaseInputComponent {
2432
+ private get meta();
2433
+ readonly minYear: _angular_core.Signal<number | undefined>;
2434
+ readonly maxYear: _angular_core.Signal<number | undefined>;
2435
+ readonly step: _angular_core.Signal<number>;
2436
+ readonlyMode: boolean;
2437
+ disabledMode: boolean;
2438
+ visible: boolean;
2439
+ presentationMode: boolean;
2440
+ isReadonlyEffective(): boolean;
2441
+ ngOnInit(): void;
2442
+ setInputMetadata(metadata: MaterialYearInputMetadata): void;
2443
+ errorStateMatcher(): _angular_material_error_options_d_CGdTZUYk.E;
2444
+ onYearInput(event: Event): void;
2445
+ protected getSpecificCssClasses(): string[];
2446
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PdxYearInputComponent, never>;
2447
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PdxYearInputComponent, "pdx-year-input", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
2448
+ }
2449
+
2450
+ interface TimeRangeValue {
2451
+ start: string | null;
2452
+ end: string | null;
2453
+ }
2454
+ declare class PdxMaterialTimeRangeComponent extends SimpleBaseInputComponent implements OnInit {
2455
+ readonlyMode: boolean;
2456
+ disabledMode: boolean;
2457
+ visible: boolean;
2458
+ presentationMode: boolean;
2459
+ timeRangeForm: FormGroup<{
2460
+ start: FormControl<string | null>;
2461
+ end: FormControl<string | null>;
2462
+ }>;
2463
+ private get meta();
2464
+ startLabel: () => string;
2465
+ endLabel: () => string;
2466
+ startPlaceholder: () => string;
2467
+ endPlaceholder: () => string;
2468
+ ngOnInit(): void;
2469
+ writeValue(value: TimeRangeValue | null): void;
2470
+ setDisabledState(isDisabled: boolean): void;
2471
+ private rangeOrderValidator;
2472
+ private minDistanceValidator;
2473
+ private maxDistanceValidator;
2474
+ private timeToMinutes;
2475
+ setInputMetadata(metadata: MaterialTimeRangeMetadata): void;
2476
+ isReadonlyEffective(): boolean;
2477
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PdxMaterialTimeRangeComponent, never>;
2478
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PdxMaterialTimeRangeComponent, "pdx-material-time-range", never, { "readonlyMode": { "alias": "readonlyMode"; "required": false; }; "disabledMode": { "alias": "disabledMode"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "presentationMode": { "alias": "presentationMode"; "required": false; }; }, {}, never, never, true, never>;
2479
+ }
2480
+
2481
+ /** Metadata for TextInputComponent */
2482
+ declare const PDX_TEXT_INPUT_COMPONENT_METADATA: ComponentDocMeta;
2483
+
2484
+ /** Metadata for NumberInputComponent */
2485
+ declare const PDX_NUMBER_INPUT_COMPONENT_METADATA: ComponentDocMeta;
2486
+
2487
+ /**
2488
+ * Metadata for MaterialSelectComponent
2489
+ *
2490
+ * Documenta inputs/descrição para catálogos e builders. Este componente
2491
+ * não expõe @Output próprios (usa ControlValueAccessor), portanto não há
2492
+ * eventos listados aqui.
2493
+ */
2494
+ declare const PDX_MATERIAL_SELECT_COMPONENT_METADATA: ComponentDocMeta;
2495
+
2496
+ declare const PDX_COLOR_INPUT_COMPONENT_METADATA: ComponentDocMeta;
2497
+
2498
+ declare const PDX_DATE_INPUT_COMPONENT_METADATA: ComponentDocMeta;
2499
+
2500
+ declare const PDX_DATETIME_LOCAL_INPUT_COMPONENT_METADATA: ComponentDocMeta;
2501
+
2502
+ declare const PDX_EMAIL_INPUT_COMPONENT_METADATA: ComponentDocMeta;
2503
+
2504
+ declare const PDX_MATERIAL_DATEPICKER_COMPONENT_METADATA: ComponentDocMeta;
2505
+
2506
+ declare const PDX_MATERIAL_DATE_RANGE_COMPONENT_METADATA: ComponentDocMeta;
2507
+
2508
+ declare const PDX_MATERIAL_CURRENCY_COMPONENT_METADATA: ComponentDocMeta;
2509
+
2510
+ declare const PDX_MATERIAL_TEXTAREA_COMPONENT_METADATA: ComponentDocMeta;
2511
+
2512
+ declare const PDX_MATERIAL_SLIDER_COMPONENT_METADATA: ComponentDocMeta;
2513
+
2514
+ declare const PDX_MATERIAL_TIMEPICKER_COMPONENT_METADATA: ComponentDocMeta;
2515
+
2516
+ declare const PDX_MATERIAL_BUTTON_COMPONENT_METADATA: ComponentDocMeta;
2517
+
2518
+ declare const PDX_MATERIAL_BUTTON_TOGGLE_COMPONENT_METADATA: ComponentDocMeta;
2519
+
2520
+ declare const PDX_MATERIAL_CHECKBOX_GROUP_COMPONENT_METADATA: ComponentDocMeta;
2521
+
2522
+ declare const PDX_MATERIAL_CHIPS_COMPONENT_METADATA: ComponentDocMeta;
2523
+
2524
+ declare const PDX_MATERIAL_COLORPICKER_COMPONENT_METADATA: ComponentDocMeta;
2525
+
2526
+ declare const PDX_MATERIAL_RATING_COMPONENT_METADATA: ComponentDocMeta;
2527
+
2528
+ declare const PDX_COLOR_PICKER_COMPONENT_METADATA: ComponentDocMeta;
2529
+
2530
+ declare const PDX_MATERIAL_CPF_CNPJ_INPUT_COMPONENT_METADATA: ComponentDocMeta;
2531
+
2532
+ declare const PDX_MATERIAL_FILE_UPLOAD_COMPONENT_METADATA: ComponentDocMeta;
2533
+
2534
+ declare const PDX_MATERIAL_MULTI_SELECT_COMPONENT_METADATA: ComponentDocMeta;
2535
+
2536
+ declare const PDX_MATERIAL_MULTI_SELECT_TREE_COMPONENT_METADATA: ComponentDocMeta;
2537
+
2538
+ declare const PDX_MATERIAL_RADIO_GROUP_COMPONENT_METADATA: ComponentDocMeta;
2539
+
2540
+ declare const PDX_MATERIAL_SEARCHABLE_SELECT_COMPONENT_METADATA: ComponentDocMeta;
2541
+
2542
+ declare const PDX_MATERIAL_SELECTION_LIST_COMPONENT_METADATA: ComponentDocMeta;
2543
+
2544
+ declare const PDX_MATERIAL_TRANSFER_LIST_COMPONENT_METADATA: ComponentDocMeta;
2545
+
2546
+ declare const PDX_MATERIAL_TREE_SELECT_COMPONENT_METADATA: ComponentDocMeta;
2547
+
2548
+ declare const PDX_MATERIAL_PRICE_RANGE_COMPONENT_METADATA: ComponentDocMeta;
2549
+
2550
+ declare const PDX_MATERIAL_RANGE_SLIDER_COMPONENT_METADATA: ComponentDocMeta;
2551
+
2552
+ declare const PDX_MONTH_INPUT_COMPONENT_METADATA: ComponentDocMeta;
2553
+
2554
+ declare const PDX_PASSWORD_INPUT_COMPONENT_METADATA: ComponentDocMeta;
2555
+
2556
+ declare const PDX_PHONE_INPUT_COMPONENT_METADATA: ComponentDocMeta;
2557
+
2558
+ declare const PDX_PRELOAD_STATUS_COMPONENT_METADATA: ComponentDocMeta;
2559
+
2560
+ declare const PDX_SEARCH_INPUT_COMPONENT_METADATA: ComponentDocMeta;
2561
+
2562
+ declare const PDX_TIME_INPUT_COMPONENT_METADATA: ComponentDocMeta;
2563
+
2564
+ declare const PDX_URL_INPUT_COMPONENT_METADATA: ComponentDocMeta;
2565
+
2566
+ declare const PDX_WEEK_INPUT_COMPONENT_METADATA: ComponentDocMeta;
2567
+
2568
+ declare const PDX_MATERIAL_TIME_RANGE_COMPONENT_METADATA: ComponentDocMeta;
2569
+
2570
+ declare const PDX_YEAR_INPUT_COMPONENT_METADATA: ComponentDocMeta;
2571
+
2572
+ declare const PDX_FIELD_SHELL_COMPONENT_METADATA: ComponentDocMeta;
2573
+
2574
+ /**
2575
+ * Context object passed to action handlers containing all relevant data
2576
+ * about the component state and form context when an action is executed.
2577
+ *
2578
+ * This interface provides maximum flexibility for action handlers to access
2579
+ * both component-specific data and broader form/application context.
2580
+ *
2581
+ * @example Basic usage in action handler
2582
+ * ```typescript
2583
+ * this.registerAction('customAction', async (context: ActionContext) => {
2584
+ * console.log('Field:', context.fieldName);
2585
+ * console.log('Value:', context.fieldValue);
2586
+ * console.log('Metadata:', context.metadata);
2587
+ * return { success: true, data: 'Action completed' };
2588
+ * });
2589
+ * ```
2590
+ *
2591
+ * @example Using actionParam for parameterized actions
2592
+ * ```typescript
2593
+ * // Metadata configuration: action: "navigate:/dashboard"
2594
+ * this.registerAction('navigate', async (context: ActionContext) => {
2595
+ * const url = context.actionParam; // "/dashboard"
2596
+ * await this.router.navigate([url]);
2597
+ * return { success: true };
2598
+ * });
2599
+ * ```
2600
+ */
2601
+ interface ActionContext {
2602
+ /**
2603
+ * Name/identifier of the field that triggered the action.
2604
+ *
2605
+ * Useful for:
2606
+ * - Logging and debugging
2607
+ * - Field-specific business logic
2608
+ * - Form validation context
2609
+ *
2610
+ * @example "email", "firstName", "submitButton"
2611
+ */
2612
+ fieldName?: string;
2613
+ /**
2614
+ * Current value of the field that triggered the action.
2615
+ *
2616
+ * For different field types:
2617
+ * - Input fields: string value
2618
+ * - Checkboxes: boolean
2619
+ * - Select: selected option value
2620
+ * - Buttons: typically undefined
2621
+ *
2622
+ * @example "john@example.com", true, ["option1", "option2"]
2623
+ */
2624
+ fieldValue?: any;
2625
+ /**
2626
+ * Complete metadata configuration object for the field.
2627
+ *
2628
+ * Contains all field configuration including:
2629
+ * - Label, placeholder, validation rules
2630
+ * - UI configuration (appearance, icons, etc.)
2631
+ * - Custom properties specific to the field
2632
+ *
2633
+ * @example MaterialButtonMetadata, MaterialInputMetadata, etc.
2634
+ */
2635
+ metadata?: any;
2636
+ /**
2637
+ * Complete form data object containing all field values.
2638
+ *
2639
+ * Useful for:
2640
+ * - Cross-field validation
2641
+ * - Conditional logic based on other fields
2642
+ * - Form-wide operations
2643
+ *
2644
+ * @example { email: "user@example.com", name: "John", age: 30 }
2645
+ */
2646
+ formData?: any;
2647
+ /**
2648
+ * Reference to the Angular component instance that triggered the action.
2649
+ *
2650
+ * Provides access to:
2651
+ * - Component methods and properties
2652
+ * - ElementRef for DOM manipulation
2653
+ * - Angular lifecycle and services
2654
+ *
2655
+ * @example MaterialButtonComponent, MaterialInputComponent instances
2656
+ */
2657
+ componentInstance?: any;
2658
+ /**
2659
+ * Parameter extracted from action reference after colon separator.
2660
+ *
2661
+ * When action is defined as "actionName:parameter", this contains the parameter part.
2662
+ * Enables parameterized actions without separate configuration.
2663
+ *
2664
+ * @example
2665
+ * - Action: "navigate:/dashboard" → actionParam: "/dashboard"
2666
+ * - Action: "showAlert:Data saved successfully" → actionParam: "Data saved successfully"
2667
+ * - Action: "download:https://example.com/file.pdf" → actionParam: "https://example.com/file.pdf"
2668
+ */
2669
+ actionParam?: string;
2670
+ }
2671
+ /**
2672
+ * Result object returned by action handlers indicating success/failure
2673
+ * and any associated data or error information.
2674
+ *
2675
+ * Provides a standardized way for action handlers to communicate results
2676
+ * back to the calling component for appropriate user feedback.
2677
+ *
2678
+ * @example Successful action result
2679
+ * ```typescript
2680
+ * return {
2681
+ * success: true,
2682
+ * data: 'Form submitted successfully',
2683
+ * redirect: '/dashboard'
2684
+ * };
2685
+ * ```
2686
+ *
2687
+ * @example Failed action result
2688
+ * ```typescript
2689
+ * return {
2690
+ * success: false,
2691
+ * error: 'Validation failed: Email is required'
2692
+ * };
2693
+ * ```
2694
+ */
2695
+ interface ActionResult {
2696
+ /**
2697
+ * Indicates whether the action completed successfully.
2698
+ *
2699
+ * - true: Action completed without errors
2700
+ * - false: Action failed or encountered an error
2701
+ *
2702
+ * Used by components to determine appropriate user feedback
2703
+ * (success message, error display, etc.)
2704
+ */
2705
+ success: boolean;
2706
+ /**
2707
+ * Optional data returned by successful actions.
2708
+ *
2709
+ * Can contain:
2710
+ * - Success messages for user display
2711
+ * - Result data from API calls
2712
+ * - State information for further processing
2713
+ * - Any serializable data relevant to the action
2714
+ *
2715
+ * @example "Form submitted", { userId: 123 }, ["item1", "item2"]
2716
+ */
2717
+ data?: any;
2718
+ /**
2719
+ * Error message when action fails (success = false).
2720
+ *
2721
+ * Should contain:
2722
+ * - User-friendly error descriptions
2723
+ * - Validation error messages
2724
+ * - Technical error details (for logging)
2725
+ *
2726
+ * Displayed to users or logged for debugging purposes.
2727
+ *
2728
+ * @example "Network error occurred", "Invalid email format", "Access denied"
2729
+ */
2730
+ error?: string;
2731
+ /**
2732
+ * Optional URL for automatic navigation after action completion.
2733
+ *
2734
+ * When provided, the calling component may automatically redirect
2735
+ * the user to this URL after the action succeeds.
2736
+ *
2737
+ * Useful for:
2738
+ * - Post-submit redirects
2739
+ * - Workflow navigation
2740
+ * - Success page redirection
2741
+ *
2742
+ * @example "/dashboard", "/success", "https://external-site.com"
2743
+ */
2744
+ redirect?: string;
2745
+ }
2746
+ /**
2747
+ * Function signature for action handlers that can be registered with the ActionResolverService.
2748
+ *
2749
+ * Action handlers receive an ActionContext with all relevant component and form data,
2750
+ * and must return an ActionResult indicating success/failure.
2751
+ *
2752
+ * Handlers can be either synchronous or asynchronous to support both immediate
2753
+ * operations and API calls/complex processing.
2754
+ *
2755
+ * @example Synchronous action handler
2756
+ * ```typescript
2757
+ * const logHandler: ActionHandler = (context) => {
2758
+ * console.log('Field value:', context.fieldValue);
2759
+ * return { success: true, data: 'Logged successfully' };
2760
+ * };
2761
+ * ```
2762
+ *
2763
+ * @example Asynchronous action handler
2764
+ * ```typescript
2765
+ * const saveHandler: ActionHandler = async (context) => {
2766
+ * try {
2767
+ * await apiService.saveData(context.formData);
2768
+ * return { success: true, data: 'Data saved' };
2769
+ * } catch (error) {
2770
+ * return { success: false, error: 'Save failed' };
2771
+ * }
2772
+ * };
2773
+ * ```
2774
+ *
2775
+ * @param context - Complete action execution context
2776
+ * @returns Promise<ActionResult> or ActionResult indicating success/failure
2777
+ */
2778
+ type ActionHandler = (context: ActionContext) => Promise<ActionResult> | ActionResult;
2779
+ declare class ActionResolverService {
2780
+ private readonly router;
2781
+ private readonly http;
2782
+ private readonly dialog;
2783
+ private readonly actionRegistry;
2784
+ constructor();
2785
+ /**
2786
+ * Registra ações relacionadas a diálogos (unificado PraxisDialog)
2787
+ */
2788
+ private registerDialogActions;
2789
+ /**
2790
+ * Registra uma nova ação
2791
+ */
2792
+ registerAction(actionName: string, handler: ActionHandler): void;
2793
+ /**
2794
+ * Remove uma ação registrada
2795
+ */
2796
+ unregisterAction(actionName: string): void;
2797
+ /**
2798
+ * Executa uma ação por nome
2799
+ */
2800
+ executeAction(actionRef: string, context?: ActionContext): Promise<ActionResult>;
2801
+ /**
2802
+ * Lista todas as ações registradas
2803
+ */
2804
+ getRegisteredActions(): string[];
2805
+ /**
2806
+ * Verifica se uma ação existe
2807
+ */
2808
+ hasAction(actionName: string): boolean;
2809
+ /**
2810
+ * Registra ações built-in (pré-definidas) do sistema ActionResolverService.
2811
+ *
2812
+ * Este método é chamado automaticamente no constructor e registra um conjunto
2813
+ * de ações comuns úteis para aplicações corporativas, eliminando a necessidade
2814
+ * de implementar essas funcionalidades básicas repetidamente.
2815
+ *
2816
+ * Todas as ações built-in seguem padrões corporativos de:
2817
+ * - ✅ Tratamento de erros robusto
2818
+ * - ✅ Logging consistente para auditoria
2819
+ * - ✅ Mensagens user-friendly
2820
+ * - ✅ Segurança (noopener, noreferrer)
2821
+ * - ✅ Compatibilidade cross-browser
2822
+ *
2823
+ * ## 📋 Ações Disponíveis
2824
+ *
2825
+ * ### 📝 Formulários
2826
+ * - **submitForm**: Submete o formulário pai do componente
2827
+ * - **resetForm**: Reseta todos os campos do formulário pai
2828
+ *
2829
+ * ### 🧭 Navegação
2830
+ * - **navigate**: Navegação interna via Angular Router ou externa via window.location
2831
+ * - **openUrl**: Abre URL em nova aba com segurança (noopener, noreferrer)
2832
+ *
2833
+ * ### 📥 Downloads e Dados
2834
+ * - **download**: Inicia download de arquivo via URL
2835
+ * - **copyToClipboard**: Copia texto para área de transferência
2836
+ *
2837
+ * ### 🔔 Interface e Feedback
2838
+ * - **showAlert**: Exibe alerta nativo do navegador
2839
+ * - **log**: Registra mensagem no console para debugging
2840
+ *
2841
+ * ## 🎯 Uso no Metadata
2842
+ *
2843
+ * ```typescript
2844
+ * // Ação simples
2845
+ * const submitButton: MaterialButtonMetadata = {
2846
+ * name: 'submit',
2847
+ * label: 'Enviar',
2848
+ * controlType: 'button',
2849
+ * action: 'submitForm' // ← Ação built-in
2850
+ * };
2851
+ *
2852
+ * // Ação com parâmetro
2853
+ * const linkButton: MaterialButtonMetadata = {
2854
+ * name: 'dashboard',
2855
+ * label: 'Dashboard',
2856
+ * controlType: 'button',
2857
+ * action: 'navigate:/dashboard' // ← Parâmetro após ':'
2858
+ * };
2859
+ *
2860
+ * // Ação de download
2861
+ * const downloadButton: MaterialButtonMetadata = {
2862
+ * name: 'download',
2863
+ * label: 'Download PDF',
2864
+ * controlType: 'button',
2865
+ * action: 'download:https://example.com/report.pdf'
2866
+ * };
2867
+ * ```
2868
+ *
2869
+ * ## ⚠️ Notas Importantes
2870
+ *
2871
+ * - Ações são **case-sensitive**: use exatamente como documentado
2872
+ * - Parâmetros são opcionais: ações funcionam com/sem parâmetros
2873
+ * - Tratamento de erro: todas as ações retornam ActionResult padronizado
2874
+ * - Logging: ações importantes são logadas automaticamente para auditoria
2875
+ * - Segurança: URLs externas usam 'noopener,noreferrer' por padrão
2876
+ *
2877
+ * @private
2878
+ * @see ActionContext - Interface de contexto passada para todas as ações
2879
+ * @see ActionResult - Interface de resultado retornada por todas as ações
2880
+ * @see ActionHandler - Tipo de função para implementar ações customizadas
2881
+ */
2882
+ private registerBuiltInActions;
2883
+ /**
2884
+ * Encontra o elemento <form> pai de um componente Angular.
2885
+ *
2886
+ * Percorre a árvore DOM a partir do elemento do componente até encontrar
2887
+ * um elemento <form> pai ou chegar ao document.body.
2888
+ *
2889
+ * Usado pelas ações submitForm e resetForm para localizar o formulário
2890
+ * que contém o componente que disparou a ação.
2891
+ *
2892
+ * @param componentInstance - Instância do componente Angular
2893
+ * @returns HTMLFormElement se encontrado, null caso contrário
2894
+ *
2895
+ * @example Estrutura HTML típica
2896
+ * ```html
2897
+ * <form>
2898
+ * <mat-form-field>
2899
+ * <input matInput>
2900
+ * </mat-form-field>
2901
+ * <pdx-material-button action="submitForm">Submit</pdx-material-button>
2902
+ * </form>
2903
+ * ```
2904
+ *
2905
+ * @private
2906
+ */
2907
+ private findParentForm;
2908
+ /**
2909
+ * Registra ações de estado e validação de formulários.
2910
+ * Chamado durante a inicialização do serviço.
2911
+ */
2912
+ private registerStateValidationActions;
2913
+ /**
2914
+ * Registra ações de API e manipulação de dados.
2915
+ * Chamado durante a inicialização do serviço.
2916
+ */
2917
+ private registerApiDataActions;
2918
+ /**
2919
+ * Limpa drafts antigos do localStorage para evitar quota exceeded.
2920
+ *
2921
+ * Remove drafts com mais de 7 dias ou que estejam malformados.
2922
+ * Chamado automaticamente antes de salvar novos drafts.
2923
+ *
2924
+ * @private
2925
+ */
2926
+ private cleanupOldDrafts;
2927
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ActionResolverService, never>;
2928
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ActionResolverService>;
2929
+ }
2930
+
2931
+ declare class DateUtilsService {
2932
+ /**
2933
+ * Parses different date representations into a `Date` object.
2934
+ * Accepts ISO strings, `Date` instances or numeric arrays in the form
2935
+ * `[year, month, day, hour?, minute?, second?, millisecond?]`.
2936
+ * Returns `null` when the input cannot be parsed.
2937
+ */
2938
+ parseDate(value: any): Date | null;
2939
+ getDefaultDateFormat(controlType?: string): string;
2940
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateUtilsService, never>;
2941
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<DateUtilsService>;
2942
+ }
2943
+
2944
+ interface ShortcutHandler {
2945
+ callback: () => void;
2946
+ description?: string;
2947
+ componentId?: string;
2948
+ priority?: number;
2949
+ }
2950
+ interface ShortcutInfo {
2951
+ shortcut: string;
2952
+ handlers: ShortcutHandler[];
2953
+ }
2954
+ declare class KeyboardShortcutService {
2955
+ private readonly destroyRef;
2956
+ private readonly shortcuts;
2957
+ private isListening;
2958
+ constructor();
2959
+ /**
2960
+ * Registra um atalho de teclado
2961
+ */
2962
+ registerShortcut(shortcut: string, handler: ShortcutHandler): () => void;
2963
+ /**
2964
+ * Remove um atalho de teclado específico
2965
+ */
2966
+ unregisterShortcut(shortcut: string, handler: ShortcutHandler): void;
2967
+ /**
2968
+ * Remove todos os atalhos de um componente específico
2969
+ */
2970
+ unregisterComponentShortcuts(componentId: string): void;
2971
+ /**
2972
+ * Lista todos os atalhos registrados
2973
+ */
2974
+ getRegisteredShortcuts(): ShortcutInfo[];
2975
+ /**
2976
+ * Verifica se um atalho está registrado
2977
+ */
2978
+ hasShortcut(shortcut: string): boolean;
2979
+ /**
2980
+ * Executa manualmente um atalho (para testes)
2981
+ */
2982
+ executeShortcut(shortcut: string): boolean;
2983
+ /**
2984
+ * Inicia a escuta de eventos de teclado
2985
+ */
2986
+ private startListening;
2987
+ /**
2988
+ * Verifica se deve processar o evento
2989
+ */
2990
+ private shouldProcessEvent;
2991
+ /**
2992
+ * Converte um evento de teclado em string de atalho
2993
+ */
2994
+ private eventToShortcut;
2995
+ /**
2996
+ * Normaliza uma string de atalho
2997
+ */
2998
+ private normalizeShortcut;
2999
+ /**
3000
+ * Converte atalho em formato legível
3001
+ */
3002
+ formatShortcut(shortcut: string): string;
3003
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KeyboardShortcutService, never>;
3004
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<KeyboardShortcutService>;
3005
+ }
3006
+
3007
+ /**
3008
+ * Interfaces essenciais para o sistema de registro de componentes
3009
+ * Versão ultra-simplificada sem metadados redundantes
3010
+ */
3011
+
3012
+ /**
3013
+ * Registro de um componente no sistema com cache inteligente
3014
+ */
3015
+ interface ComponentRegistration<T = any> {
3016
+ /** Factory para carregamento lazy */
3017
+ factory: () => Promise<Type<T>>;
3018
+ /** Componente em cache após carregamento */
3019
+ cached?: Type<T>;
3020
+ /** Timestamp do cache para validação TTL */
3021
+ cachedAt?: number;
3022
+ /** Contador de tentativas de carregamento */
3023
+ loadAttempts?: number;
3024
+ /** Último erro de carregamento */
3025
+ lastError?: Error;
3026
+ }
3027
+ declare const CACHE_TTL: number;
3028
+ declare const MAX_LOAD_ATTEMPTS = 3;
3029
+ declare const RETRY_DELAY = 1000;
3030
+ /**
3031
+ * Interface do serviço de registro
3032
+ */
3033
+ interface IComponentRegistry {
3034
+ /**
3035
+ * Registra um novo componente
3036
+ */
3037
+ register<T>(type: FieldControlType, factory: () => Promise<Type<T>>): void;
3038
+ /**
3039
+ * Obtém um componente registrado
3040
+ */
3041
+ getComponent<T>(type: FieldControlType): Promise<Type<T> | null>;
3042
+ /**
3043
+ * Verifica se um tipo está registrado
3044
+ */
3045
+ isRegistered(type: FieldControlType): boolean;
3046
+ /**
3047
+ * Lista tipos registrados
3048
+ */
3049
+ getRegisteredTypes(): FieldControlType[];
3050
+ }
3051
+ /**
3052
+ * Resultado de carregamento de componente
3053
+ */
3054
+ interface ComponentLoadResult<T = any> {
3055
+ /** Componente carregado */
3056
+ component: Type<T> | null;
3057
+ /** Sucesso no carregamento */
3058
+ success: boolean;
3059
+ /** Erro se houver */
3060
+ error?: Error;
3061
+ }
3062
+ /**
3063
+ * Estatísticas do registro
3064
+ */
3065
+ interface RegistryStats {
3066
+ /** Número de componentes registrados */
3067
+ registeredComponents: number;
3068
+ /** Número de componentes em cache */
3069
+ cachedComponents: number;
3070
+ /** Tipos registrados */
3071
+ registeredTypes: FieldControlType[];
3072
+ }
3073
+
3074
+ declare class ComponentRegistryService implements IComponentRegistry {
3075
+ /**
3076
+ * Registro interno de componentes
3077
+ */
3078
+ private readonly registry;
3079
+ constructor();
3080
+ /**
3081
+ * Registra um novo componente
3082
+ */
3083
+ register<T>(type: FieldControlType, factory: () => Promise<_angular_core.Type<T>>): void;
3084
+ /**
3085
+ * Obtém um componente registrado com cache inteligente
3086
+ * Handles both string literals and enum values for backward compatibility
3087
+ */
3088
+ getComponent<T>(type: FieldControlType | string): Promise<_angular_core.Type<T> | null>;
3089
+ /**
3090
+ * Verifica se um tipo está registrado
3091
+ * Handles both string literals and enum values
3092
+ */
3093
+ isRegistered(type: FieldControlType | string): boolean;
3094
+ /**
3095
+ * Lista todos os tipos registrados
3096
+ */
3097
+ getRegisteredTypes(): FieldControlType[];
3098
+ /**
3099
+ * Limpa o cache de todos os componentes
3100
+ */
3101
+ clearCache(): void;
3102
+ /**
3103
+ * Obtém estatísticas do registro
3104
+ */
3105
+ getStats(): RegistryStats;
3106
+ /**
3107
+ * Limpa cache de componentes específicos ou todos
3108
+ */
3109
+ clearCacheForType(type: FieldControlType): void;
3110
+ /**
3111
+ * Remove um componente do registro
3112
+ */
3113
+ unregister(type: FieldControlType): boolean;
3114
+ /**
3115
+ * Pré-carrega componentes especificados
3116
+ */
3117
+ preload(types: FieldControlType[]): Promise<ComponentLoadResult[]>;
3118
+ /**
3119
+ * Normalizes control type to handle both string literals and enum values
3120
+ * This provides backward compatibility for existing code using string literals
3121
+ */
3122
+ private normalizeControlType;
3123
+ /**
3124
+ * Registra componentes Material Design padrão
3125
+ */
3126
+ private initializeDefaultComponents;
3127
+ /**
3128
+ * Verifica se o cache de um componente é válido
3129
+ */
3130
+ private isCacheValid;
3131
+ /**
3132
+ * Carrega componente com lógica de retry
3133
+ */
3134
+ private loadComponentWithRetry;
3135
+ /**
3136
+ * Verifica se está em ambiente de produção
3137
+ */
3138
+ private isProduction;
3139
+ /**
3140
+ * Utilitário para delay
3141
+ */
3142
+ private delay;
3143
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ComponentRegistryService, never>;
3144
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ComponentRegistryService>;
3145
+ }
3146
+
3147
+ /**
3148
+ * @fileoverview Providers para configuração da biblioteca praxis-dynamic-fields
3149
+ *
3150
+ * Providers necessários para o funcionamento correto da biblioteca,
3151
+ * incluindo HttpClient e outros serviços essenciais.
3152
+ */
3153
+
3154
+ /**
3155
+ * Providers essenciais para praxis-dynamic-fields
3156
+ *
3157
+ * Inclui HttpClient para data loading e outros providers necessários.
3158
+ *
3159
+ * @example
3160
+ * ```typescript
3161
+ * // No app.config.ts ou main.ts
3162
+ * import { providePraxisDynamicFields } from 'praxis-dynamic-fields';
3163
+ *
3164
+ * bootstrapApplication(AppComponent, {
3165
+ * providers: [
3166
+ * ...providePraxisDynamicFields(),
3167
+ * // outros providers...
3168
+ * ]
3169
+ * });
3170
+ * ```
3171
+ */
3172
+ declare function providePraxisDynamicFields(): (Provider | EnvironmentProviders)[];
3173
+ /**
3174
+ * Providers básicos sem HttpClient (para casos onde já está configurado)
3175
+ */
3176
+ declare function providePraxisDynamicFieldsCore(): Provider[];
3177
+
3178
+ /**
3179
+ * @fileoverview Custom Error State Matcher for Praxis Dynamic Fields
3180
+ *
3181
+ * Implements configurable error state matching strategies for Material Design
3182
+ * components based on field metadata configuration.
3183
+ *
3184
+ * This resolves CRITICAL ISSUE #8: ErrorStateMatcher not implemented
3185
+ */
3186
+
3187
+ type ErrorStateStrategy = 'default' | 'showOnDirtyAndInvalid' | 'showOnSubmitted' | 'showImmediately';
3188
+ /**
3189
+ * Custom Error State Matcher that implements configurable strategies
3190
+ * for when to show validation errors in Material components.
3191
+ */
3192
+ declare class PraxisErrorStateMatcher implements ErrorStateMatcher {
3193
+ private strategy;
3194
+ constructor(strategy?: ErrorStateStrategy);
3195
+ /**
3196
+ * Determines if a control should be considered to be in an error state.
3197
+ *
3198
+ * @param control - The form control to check
3199
+ * @param form - The parent form (if any)
3200
+ * @returns true if the control should show errors
3201
+ */
3202
+ isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean;
3203
+ }
3204
+ /**
3205
+ * Factory function to create ErrorStateMatcher instances based on strategy
3206
+ */
3207
+ declare function createErrorStateMatcher(strategy?: ErrorStateStrategy): ErrorStateMatcher;
3208
+ /**
3209
+ * Determines the appropriate error state strategy based on component context
3210
+ */
3211
+ declare function inferErrorStateStrategy(fieldType: string, isLongForm?: boolean, userPreference?: ErrorStateStrategy): ErrorStateStrategy;
3212
+ /**
3213
+ * Helper function to get ErrorStateMatcher for a dynamic field component
3214
+ */
3215
+ declare function getErrorStateMatcherForField(metadata: any): ErrorStateMatcher;
3216
+
3217
+ /**
3218
+ * @fileoverview Sistema de logging inteligente para componentes dinâmicos
3219
+ *
3220
+ * Reduz spam de logs e permite controle fino sobre o que é exibido no console.
3221
+ * Especialmente útil para evitar logs repetitivos do DynamicFieldLoader.
3222
+ */
3223
+ type LoggerLevel = 'error' | 'warn' | 'info' | 'debug' | 'trace';
3224
+ interface LoggerConfig {
3225
+ /** Nível mínimo de log */
3226
+ level: LoggerLevel;
3227
+ /** Prefixos para filtrar (ex: ['DynamicFieldLoader']) */
3228
+ enabledPrefixes: string[];
3229
+ /** Prefixos para silenciar */
3230
+ silencedPrefixes: string[];
3231
+ /** Throttling para logs repetitivos */
3232
+ throttleRepetitive: boolean;
3233
+ /** Limite de logs iguais consecutivos */
3234
+ repetitiveThreshold: number;
3235
+ }
3236
+ declare class DynamicFieldsLogger {
3237
+ private config;
3238
+ private repetitiveMessages;
3239
+ /**
3240
+ * Configura o logger globalmente
3241
+ */
3242
+ configure(config: Partial<LoggerConfig>): void;
3243
+ /**
3244
+ * Habilita debug para um componente específico
3245
+ */
3246
+ enableDebugFor(prefix: string): void;
3247
+ /**
3248
+ * Silencia logs de um componente específico
3249
+ */
3250
+ silencePrefix(prefix: string): void;
3251
+ /**
3252
+ * Log inteligente que considera configuração e throttling
3253
+ */
3254
+ log(level: LoggerLevel, message: string, data?: any): void;
3255
+ /**
3256
+ * Shortcuts para diferentes níveis
3257
+ */
3258
+ error(message: string, data?: any): void;
3259
+ warn(message: string, data?: any): void;
3260
+ info(message: string, data?: any): void;
3261
+ debug(message: string, data?: any): void;
3262
+ trace(message: string, data?: any): void;
3263
+ /**
3264
+ * Limpa contadores de mensagens repetitivas (útil para testes)
3265
+ */
3266
+ clearRepetitiveCounters(): void;
3267
+ private shouldLog;
3268
+ private isRepetitive;
3269
+ private cleanup;
3270
+ private getConsoleFn;
3271
+ }
3272
+ declare const logger: DynamicFieldsLogger;
3273
+ declare function configureDynamicFieldsLogger(config: Partial<LoggerConfig>): void;
3274
+ declare function enableDebugForComponent(componentName: string): void;
3275
+ declare function silenceComponent(componentName: string): void;
3276
+ declare const LoggerPresets: {
3277
+ /** Silencia logs repetitivos mas mantém erros e warnings */
3278
+ PRODUCTION: {
3279
+ level: LoggerLevel;
3280
+ silencedPrefixes: string[];
3281
+ throttleRepetitive: boolean;
3282
+ repetitiveThreshold: number;
3283
+ };
3284
+ /** Habilita debug para componentes específicos */
3285
+ DEVELOPMENT: {
3286
+ level: LoggerLevel;
3287
+ silencedPrefixes: string[];
3288
+ throttleRepetitive: boolean;
3289
+ repetitiveThreshold: number;
3290
+ };
3291
+ /** Máximo de logs para debug profundo */
3292
+ VERBOSE: {
3293
+ level: LoggerLevel;
3294
+ enabledPrefixes: never[];
3295
+ silencedPrefixes: never[];
3296
+ throttleRepetitive: boolean;
3297
+ repetitiveThreshold: number;
3298
+ };
3299
+ /** Silencia quase tudo exceto erros críticos */
3300
+ SILENT: {
3301
+ level: LoggerLevel;
3302
+ silencedPrefixes: string[];
3303
+ throttleRepetitive: boolean;
3304
+ repetitiveThreshold: number;
3305
+ };
3306
+ };
3307
+
3308
+ /**
3309
+ * @fileoverview Utilitários para mapear JSON Schema para FieldMetadata
3310
+ *
3311
+ * Converte estruturas JSON Schema/OpenAPI com extensões x-ui
3312
+ * para o formato FieldMetadata esperado pelos componentes dinâmicos.
3313
+ *
3314
+ * Lida com campos que não possuem controlType definido,
3315
+ * inferindo tipos apropriados baseado no schema JSON.
3316
+ */
3317
+
3318
+ /**
3319
+ * Interface para propriedades JSON Schema básicas
3320
+ */
3321
+ interface JsonSchemaProperty {
3322
+ type?: string;
3323
+ format?: string;
3324
+ 'x-ui'?: {
3325
+ controlType?: string;
3326
+ label?: string;
3327
+ required?: boolean;
3328
+ [key: string]: any;
3329
+ };
3330
+ $ref?: string;
3331
+ properties?: {
3332
+ [key: string]: JsonSchemaProperty;
3333
+ };
3334
+ items?: JsonSchemaProperty;
3335
+ enum?: any[];
3336
+ [key: string]: any;
3337
+ }
3338
+ /**
3339
+ * Interface para schema completo com required fields
3340
+ */
3341
+ interface JsonSchema {
3342
+ type: string;
3343
+ properties: {
3344
+ [key: string]: JsonSchemaProperty;
3345
+ };
3346
+ required?: string[];
3347
+ [key: string]: any;
3348
+ }
3349
+ /**
3350
+ * Mapeia um JSON Schema completo para array de FieldMetadata
3351
+ *
3352
+ * @param schema - Schema JSON completo
3353
+ * @returns Array de FieldMetadata prontos para renderização
3354
+ *
3355
+ * @example
3356
+ * ```typescript
3357
+ * const schema = {
3358
+ * type: 'object',
3359
+ * properties: {
3360
+ * name: { type: 'string', 'x-ui': { controlType: 'input', label: 'Nome' } },
3361
+ * age: { type: 'integer' }, // Sem x-ui, será inferido
3362
+ * email: { type: 'string', format: 'email' } // Será inferido como email
3363
+ * },
3364
+ * required: ['name']
3365
+ * };
3366
+ *
3367
+ * const fields = mapJsonSchemaToFields(schema);
3368
+ * ```
3369
+ */
3370
+ declare function mapJsonSchemaToFields(schema: JsonSchema): FieldMetadata[];
3371
+ /**
3372
+ * Mapeia uma propriedade individual para FieldMetadata
3373
+ *
3374
+ * @param fieldName - Nome do campo
3375
+ * @param property - Propriedade do schema
3376
+ * @param requiredFields - Lista de campos obrigatórios
3377
+ * @returns FieldMetadata ou null se não puder ser mapeado
3378
+ */
3379
+ declare function mapPropertyToFieldMetadata(fieldName: string, property: JsonSchemaProperty, requiredFields?: string[]): FieldMetadata | null;
3380
+ /**
3381
+ * Valida se um schema tem a estrutura mínima necessária
3382
+ *
3383
+ * @param schema - Schema a ser validado
3384
+ * @returns true se válido, false caso contrário
3385
+ */
3386
+ declare function isValidJsonSchema(schema: any): schema is JsonSchema;
3387
+ /**
3388
+ * Função de conveniência para processar metadata JSON mista
3389
+ *
3390
+ * Aceita tanto arrays de FieldMetadata quanto JSON Schema,
3391
+ * normalizando tudo para FieldMetadata[]
3392
+ *
3393
+ * @param input - Array de FieldMetadata ou JsonSchema
3394
+ * @returns Array normalizado de FieldMetadata
3395
+ */
3396
+ declare function normalizeFormMetadata(input: FieldMetadata[] | JsonSchema): FieldMetadata[];
3397
+
3398
+ export { ActionResolverService, CACHE_TTL, ColorInputComponent, ComponentPreloaderService, ComponentRegistryService, ConfirmDialogComponent, DateInputComponent, DateUtilsService, DatetimeLocalInputComponent, DynamicFieldLoaderDirective, EmailInputComponent, KeyboardShortcutService, LoggerPresets, MAX_LOAD_ATTEMPTS, MaterialAsyncSelectComponent, MaterialAutocompleteComponent, MaterialButtonComponent, MaterialButtonToggleComponent, MaterialCheckboxGroupComponent, MaterialChipsComponent, MaterialColorPickerComponent, MaterialCpfCnpjInputComponent, MaterialCurrencyComponent, MaterialDateRangeComponent, MaterialDatepickerComponent, MaterialFileUploadComponent, MaterialMultiSelectComponent, MaterialMultiSelectTreeComponent, MaterialPriceRangeComponent, MaterialRadioGroupComponent, MaterialRatingComponent, MaterialSearchableSelectComponent, MaterialSelectComponent, MaterialSelectionListComponent, MaterialSlideToggleComponent, MaterialSliderComponent, MaterialTextareaComponent, MaterialTimepickerComponent, MaterialTransferListComponent, MaterialTreeSelectComponent, MonthInputComponent, NumberInputComponent, OptionStore, PDX_COLOR_INPUT_COMPONENT_METADATA, PDX_COLOR_PICKER_COMPONENT_METADATA, PDX_DATETIME_LOCAL_INPUT_COMPONENT_METADATA, PDX_DATE_INPUT_COMPONENT_METADATA, PDX_EMAIL_INPUT_COMPONENT_METADATA, PDX_FIELD_SHELL_COMPONENT_METADATA, PDX_MATERIAL_BUTTON_COMPONENT_METADATA, PDX_MATERIAL_BUTTON_TOGGLE_COMPONENT_METADATA, PDX_MATERIAL_CHECKBOX_GROUP_COMPONENT_METADATA, PDX_MATERIAL_CHIPS_COMPONENT_METADATA, PDX_MATERIAL_COLORPICKER_COMPONENT_METADATA, PDX_MATERIAL_CPF_CNPJ_INPUT_COMPONENT_METADATA, PDX_MATERIAL_CURRENCY_COMPONENT_METADATA, PDX_MATERIAL_DATEPICKER_COMPONENT_METADATA, PDX_MATERIAL_DATE_RANGE_COMPONENT_METADATA, PDX_MATERIAL_FILE_UPLOAD_COMPONENT_METADATA, PDX_MATERIAL_MULTI_SELECT_COMPONENT_METADATA, PDX_MATERIAL_MULTI_SELECT_TREE_COMPONENT_METADATA, PDX_MATERIAL_PRICE_RANGE_COMPONENT_METADATA, PDX_MATERIAL_RADIO_GROUP_COMPONENT_METADATA, PDX_MATERIAL_RANGE_SLIDER_COMPONENT_METADATA, PDX_MATERIAL_RATING_COMPONENT_METADATA, PDX_MATERIAL_SEARCHABLE_SELECT_COMPONENT_METADATA, PDX_MATERIAL_SELECTION_LIST_COMPONENT_METADATA, PDX_MATERIAL_SELECT_COMPONENT_METADATA, PDX_MATERIAL_SLIDER_COMPONENT_METADATA, PDX_MATERIAL_TEXTAREA_COMPONENT_METADATA, PDX_MATERIAL_TIMEPICKER_COMPONENT_METADATA, PDX_MATERIAL_TIME_RANGE_COMPONENT_METADATA, PDX_MATERIAL_TRANSFER_LIST_COMPONENT_METADATA, PDX_MATERIAL_TREE_SELECT_COMPONENT_METADATA, PDX_MONTH_INPUT_COMPONENT_METADATA, PDX_NUMBER_INPUT_COMPONENT_METADATA, PDX_PASSWORD_INPUT_COMPONENT_METADATA, PDX_PHONE_INPUT_COMPONENT_METADATA, PDX_PRELOAD_STATUS_COMPONENT_METADATA, PDX_SEARCH_INPUT_COMPONENT_METADATA, PDX_TEXT_INPUT_COMPONENT_METADATA, PDX_TIME_INPUT_COMPONENT_METADATA, PDX_URL_INPUT_COMPONENT_METADATA, PDX_WEEK_INPUT_COMPONENT_METADATA, PDX_YEAR_INPUT_COMPONENT_METADATA, PasswordInputComponent, PdxColorPickerComponent, PdxMaterialRangeSliderComponent, PdxMaterialTimeRangeComponent, PdxYearInputComponent, PhoneInputComponent, PraxisErrorStateMatcher, PreloadStatusComponent, RETRY_DELAY, SearchInputComponent, SimpleBaseButtonComponent, SimpleBaseInputComponent, SimpleBaseSelectComponent, TextInputComponent, TimeInputComponent, UrlInputComponent, WeekInputComponent, configureDynamicFieldsLogger, createErrorStateMatcher, enableDebugForComponent, getErrorStateMatcherForField, inferErrorStateStrategy, initializeComponentSystem, initializeComponentSystemSync, isBaseDynamicFieldComponent, isLoadingCapableComponent, isValidJsonSchema, isValueBasedComponent, logger, mapJsonSchemaToFields, mapPropertyToFieldMetadata, normalizeFormMetadata, providePraxisDynamicFields, providePraxisDynamicFieldsCore, silenceComponent };
3399
+ export type { ActionContext, ActionHandler, ActionResult, BaseDynamicFieldComponent, BaseValidationConfig, ComponentLifecycleEvent, ComponentLoadResult, ComponentRegistration, ConfirmDialogData, ErrorStateStrategy, GradientSettings, IComponentRegistry, JsonSchema, JsonSchemaProperty, LoggerConfig, LoggerLevel, OptionSource, PaletteSettings, PopupSettings, PreloadStatus, RatingIconState, RegistryStats, SelectOption, ShortcutHandler, ShortcutInfo, SimpleSelectMetadata, TimeRangeValue, ValueChangeOptions };