import * as _angular_core from '@angular/core'; import { WritableSignal, InjectionToken, Provider, OnInit, OnDestroy, AfterViewInit, DestroyRef, ElementRef, ChangeDetectorRef, OnChanges, TemplateRef, EventEmitter, ComponentRef, SimpleChanges, DoCheck, AfterViewChecked, Type, EnvironmentProviders, Injector } from '@angular/core'; import { AbstractControl, ControlValueAccessor, NgControl, ValidationErrors, FormControl, FormGroup, FormArray, FormGroupDirective, NgForm } from '@angular/forms'; import { Observable, BehaviorSubject, Subscription } from 'rxjs'; import * as _praxisui_core from '@praxisui/core'; import { ComponentMetadata, PraxisTextValue, PraxisI18nDictionary, PraxisI18nConfig, PraxisI18nMessageDescriptor, PraxisI18nService, GlobalActionService, GlobalActionRef, OptionSourceMetadata, GenericCrudService, GlobalConfigService, OptionDTO, ComponentMetadataEditorialDescriptor, ComponentDocMeta, ComponentMetadataRegistry, FieldMetadata, MaterialButtonMetadata, FieldArrayConfig, MaterialInputMetadata, MaterialColorInputMetadata, MaterialDateInputMetadata, MaterialDatepickerMetadata, MaterialDateRangeMetadata, DateRangePreset, DateRangeValue, MaterialDatetimeLocalInputMetadata, MaterialEmailInputMetadata, MaterialTextareaMetadata, MaterialNumericMetadata, MaterialCurrencyMetadata, MaterialCpfCnpjMetadata, MaterialPriceRangeMetadata, MaterialMonthInputMetadata, MaterialPasswordMetadata, MaterialSearchInputMetadata, MaterialSelectMetadata, LookupFilterRequest, LookupFilteringMetadata, LookupSortOptionMetadata, LookupFilterDefinitionMetadata, MaterialEntityLookupMetadata, LookupStatusTone, EntityLookupResultState, EntityLookupResult, LookupDialogMetadata, LookupFilterOperator, LookupFilterFieldType, LookupResultColumnMetadata, MaterialAutocompleteMetadata, RangeSliderMark, RangeSliderSemanticTone, MaterialToggleMetadata, MaterialRangeSliderMetadata, RangeSliderValue, InlinePeriodRangeMetadata, FieldControlType, MaterialTimepickerMetadata, MaterialTimeRangeMetadata, MaterialTreeNode, MaterialTreeSelectMetadata, MaterialMultiSelectTreeMetadata, MaterialChipsMetadata, RangeSliderSemanticBand, MaterialSliderMetadata, MaterialPhoneMetadata, MaterialTimeInputMetadata, MaterialUrlInputMetadata, MaterialWeekInputMetadata, MaterialColorPickerMetadata, MaterialYearInputMetadata, CapabilityCatalog, ComponentAuthoringManifest, ManifestControlProfile } from '@praxisui/core'; import { Router } from '@angular/router'; import { MatDialog, MatDialogRef } from '@angular/material/dialog'; import { MatSelect } from '@angular/material/select'; import * as _angular_material_core from '@angular/material/core'; import { MatOptionSelectionChange, ErrorStateMatcher } from '@angular/material/core'; import { MatDatepickerInputEvent, MatDateRangePicker, MatDatepicker } from '@angular/material/datepicker'; import { ConnectedPosition } from '@angular/cdk/overlay'; import * as _praxisui_dynamic_fields from '@praxisui/dynamic-fields'; import { MatAutocompleteTrigger } from '@angular/material/autocomplete'; import { MatMenuTrigger } from '@angular/material/menu'; import { NestedTreeControl } from '@angular/cdk/tree'; import { MatTreeNestedDataSource } from '@angular/material/tree'; import { SelectionModel } from '@angular/cdk/collections'; import { MatChipInputEvent } from '@angular/material/chips'; import { MatButtonToggleChange } from '@angular/material/button-toggle'; import { NgStyle } from '@angular/common'; import { SafeHtml } from '@angular/platform-browser'; import { MatSelectionListChange, MatSelectionList } from '@angular/material/list'; import { MatBottomSheet } from '@angular/material/bottom-sheet'; import { CdkDragDrop } from '@angular/cdk/drag-drop'; /** * @fileoverview Interface base para todos os componentes de campos dinâmicos * * Define o contrato comum que todos os componentes dinâmicos devem implementar * para garantir compatibilidade com o DynamicFieldLoaderDirective e outros * serviços do sistema. */ /** * Eventos de lifecycle que os componentes podem emitir */ interface ComponentLifecycleEvent { phase: 'init' | 'afterInit' | 'change' | 'destroy'; timestamp: number; componentId: string; metadata?: any; } /** * Opções para métodos de controle de valor */ interface ValueChangeOptions { emitEvent?: boolean; updateUI?: boolean; } /** * Interface base que todos os componentes de campos dinâmicos devem implementar. * * Esta interface define o contrato mínimo necessário para que um componente * seja compatível com o sistema de renderização dinâmica do Praxis. * * ## Responsabilidades Principais * * - Gerenciar metadata do componente através de signals * - Integrar com Angular Reactive Forms * - Fornecer controles de foco e blur * - Implementar lifecycle hooks customizados * - Manter identificação única do componente * * ## Implementação * * Componentes podem implementar esta interface diretamente ou herdar de: * - SimpleBaseInputComponent (para campos de entrada) * - SimpleBaseButtonComponent (para ações/botões) */ interface BaseDynamicFieldComponent { /** * Metadata do componente que define sua configuração e comportamento. * * Contém informações como label, tipo de controle, validações, * propriedades visuais e outras configurações específicas. */ readonly metadata: WritableSignal; /** * ID único do componente para identificação e debugging. * * Gerado automaticamente durante a inicialização e usado * para logging, testes e identificação em runtime. */ readonly componentId: WritableSignal; /** * FormControl associado ao componente para integração com Angular Reactive Forms. * * Opcional porque nem todos os componentes precisam de FormControl * (ex: botões, labels, componentes de exibição). */ readonly formControl?: WritableSignal; /** * Label textual exibido para o usuário, quando aplicável. * * Útil para componentes que apresentam uma descrição direta do campo * como inputs e seletores. Implementação opcional. */ label?: string; /** * Observable de eventos de lifecycle do componente. * * Permite monitorar o ciclo de vida do componente externamente * para debugging, analytics ou integração com outros sistemas. */ readonly lifecycleEvents$?: Observable; /** * Foca no elemento principal do componente. * * Deve focar no input, botão ou elemento interativo principal. * Implementação deve ser robusta e não falhar se elemento não existir. */ focus(): void; /** * Remove o foco do elemento principal do componente. * * Útil para controle programático de foco e navegação por teclado. */ blur(): void; /** * Define os metadados de entrada do componente. * * Permite que o componente ajuste propriedades derivadas (como label * e placeholders) antes da configuração padrão. * * @param metadata Metadados do campo */ setInputMetadata?(metadata: ComponentMetadata): void; /** * Injeta um FormControl externo a ser utilizado como fonte de verdade. * * Componentes que recebem este controle devem utilizá-lo diretamente, * sem sincronizações manuais com controles internos. */ setExternalControl?(control: AbstractControl): void; /** * Hook chamado após a inicialização completa do componente. * * Executado depois que metadata e formControl foram configurados. * Ideal para configurações específicas do componente. */ onComponentInit?(): void; /** * Hook chamado antes da destruição do componente. * * Usado para limpeza de recursos, cancelamento de subscriptions, * ou salvamento de estado. */ onComponentDestroy?(): void; /** * Define o valor do campo programaticamente. * * Implementação opcional para componentes que gerenciam valores. * Deve atualizar tanto o FormControl quanto o estado interno. */ setValue?(value: any, options?: ValueChangeOptions): void; /** * Obtém o valor atual do campo. * * @returns Valor atual ou null se não aplicável */ getValue?(): any; /** * Marca o componente como tocado (touched). * * Usado para controle de validação e exibição de mensagens de erro. */ markAsTouched?(): void; /** * Marca o componente como modificado (dirty). * * Indica que o valor foi alterado pelo usuário. */ markAsDirty?(): void; /** * Define o estado de loading do componente. * * Útil para botões e componentes que executam ações assíncronas. */ setLoading?(loading: boolean): void; /** * Define o estado de desabilitado do componente. */ setDisabled?(disabled: boolean): void; /** * Força a validação do componente. * * @returns Promise com erros de validação ou null se válido */ validateField?(): Promise; /** * Reseta o componente para seu estado inicial. */ resetField?(): void; } /** * Type guard para verificar se um objeto implementa BaseDynamicFieldComponent */ declare function isBaseDynamicFieldComponent(obj: any): obj is BaseDynamicFieldComponent; /** * Type guard para verificar se componente suporta valores (tem FormControl) */ declare function isValueBasedComponent(component: BaseDynamicFieldComponent): component is BaseDynamicFieldComponent & { formControl: WritableSignal; }; /** * Type guard para verificar se componente suporta loading */ declare function isLoadingCapableComponent(component: BaseDynamicFieldComponent): component is BaseDynamicFieldComponent & { setLoading: (loading: boolean) => void; }; type PraxisDynamicFieldText = PraxisTextValue; interface PraxisDynamicFieldsI18nOverrides { actions?: { clear?: { tooltip?: PraxisDynamicFieldText; ariaLabel?: PraxisDynamicFieldText; ariaLabelWithLabel?: PraxisDynamicFieldText; }; }; dialog?: { confirm?: PraxisDynamicFieldText; cancel?: PraxisDynamicFieldText; }; button?: { confirmTitle?: PraxisDynamicFieldText; confirmMessage?: PraxisDynamicFieldText; defaultLabel?: PraxisDynamicFieldText; shortcutDescription?: PraxisDynamicFieldText; validationLoadingAriaLabel?: PraxisDynamicFieldText; validationLoadingSrOnly?: PraxisDynamicFieldText; }; confirm?: { title?: PraxisDynamicFieldText; message?: PraxisDynamicFieldText; confirmText?: PraxisDynamicFieldText; cancelText?: PraxisDynamicFieldText; }; validation?: { genericFailed?: PraxisDynamicFieldText; }; fileUpload?: { emptySummary?: PraxisDynamicFieldText; multipleSummary?: PraxisDynamicFieldText; clearSelection?: PraxisDynamicFieldText; clearSelectionAriaLabel?: PraxisDynamicFieldText; selectedSummaryAriaLabel?: PraxisDynamicFieldText; previewAlt?: PraxisDynamicFieldText; sizeUnitBytes?: PraxisDynamicFieldText; sizeUnitKb?: PraxisDynamicFieldText; sizeUnitMb?: PraxisDynamicFieldText; sizeUnitGb?: PraxisDynamicFieldText; }; select?: { loadSchemaError?: PraxisDynamicFieldText; loadOptionsError?: PraxisDynamicFieldText; emptyOptionText?: PraxisDynamicFieldText; missingOptionLabel?: PraxisDynamicFieldText; searchPlaceholder?: PraxisDynamicFieldText; searchAriaLabel?: PraxisDynamicFieldText; loading?: PraxisDynamicFieldText; loadMore?: PraxisDynamicFieldText; endOfList?: PraxisDynamicFieldText; noOptionsAvailable?: PraxisDynamicFieldText; loadingOptionsAriaLabel?: PraxisDynamicFieldText; }; tree?: { expandNodeAriaLabel?: PraxisDynamicFieldText; collapseNodeAriaLabel?: PraxisDynamicFieldText; }; loader?: { missingComponent?: PraxisDynamicFieldText; }; password?: { reveal?: { show?: PraxisDynamicFieldText; hide?: PraxisDynamicFieldText; }; }; inlineDistance?: { placeholder?: PraxisDynamicFieldText; panelSubtitle?: PraxisDynamicFieldText; unitToggleAriaLabel?: PraxisDynamicFieldText; presetsAriaLabel?: PraxisDynamicFieldText; ariaSelection?: PraxisDynamicFieldText; valueSingle?: PraxisDynamicFieldText; valueRange?: PraxisDynamicFieldText; valueFrom?: PraxisDynamicFieldText; valueUpto?: PraxisDynamicFieldText; displayFrom?: PraxisDynamicFieldText; displayUpto?: PraxisDynamicFieldText; presetFrom?: PraxisDynamicFieldText; }; dateRange?: { shortcutsAriaLabel?: PraxisDynamicFieldText; }; inlineDateRange?: { placeholder?: PraxisDynamicFieldText; startPlaceholder?: PraxisDynamicFieldText; endPlaceholder?: PraxisDynamicFieldText; startAriaLabel?: PraxisDynamicFieldText; endAriaLabel?: PraxisDynamicFieldText; ariaSelection?: PraxisDynamicFieldText; quickPresetsAriaLabel?: PraxisDynamicFieldText; overlayCancelLabel?: PraxisDynamicFieldText; overlayApplyLabel?: PraxisDynamicFieldText; overlayActionsAriaLabel?: PraxisDynamicFieldText; overlayCancelAriaLabel?: PraxisDynamicFieldText; overlayApplyAriaLabel?: PraxisDynamicFieldText; presetAriaLabel?: PraxisDynamicFieldText; presetAriaLabelModeAuto?: PraxisDynamicFieldText; presetAriaLabelModeConfirm?: PraxisDynamicFieldText; }; inlineDate?: { placeholder?: PraxisDynamicFieldText; overlayCancelLabel?: PraxisDynamicFieldText; overlayApplyLabel?: PraxisDynamicFieldText; overlayActionsAriaLabel?: PraxisDynamicFieldText; overlayCancelAriaLabel?: PraxisDynamicFieldText; overlayApplyAriaLabel?: PraxisDynamicFieldText; }; inlineTimeRange?: { placeholder?: PraxisDynamicFieldText; ariaSelection?: PraxisDynamicFieldText; quickPresetsAriaLabel?: PraxisDynamicFieldText; startInputLabel?: PraxisDynamicFieldText; endInputLabel?: PraxisDynamicFieldText; presetAriaLabel?: PraxisDynamicFieldText; overlayActionsAriaLabel?: PraxisDynamicFieldText; clearActionLabel?: PraxisDynamicFieldText; cancelActionLabel?: PraxisDynamicFieldText; applyActionLabel?: PraxisDynamicFieldText; validation?: { range?: PraxisDynamicFieldText; minDistance?: PraxisDynamicFieldText; maxDistance?: PraxisDynamicFieldText; invalid?: PraxisDynamicFieldText; }; }; inlineRange?: { placeholder?: PraxisDynamicFieldText; minLabel?: PraxisDynamicFieldText; maxLabel?: PraxisDynamicFieldText; valueLabel?: PraxisDynamicFieldText; quickPresetsLabel?: PraxisDynamicFieldText; clearActionLabel?: PraxisDynamicFieldText; applyActionLabel?: PraxisDynamicFieldText; doneActionLabel?: PraxisDynamicFieldText; cancelActionLabel?: PraxisDynamicFieldText; }; inlineCurrencyRange?: { placeholder?: PraxisDynamicFieldText; ariaSelection?: PraxisDynamicFieldText; actions?: { ariaLabel?: PraxisDynamicFieldText; clear?: PraxisDynamicFieldText; cancel?: PraxisDynamicFieldText; apply?: PraxisDynamicFieldText; }; value?: { from?: PraxisDynamicFieldText; upto?: PraxisDynamicFieldText; }; validation?: { required?: PraxisDynamicFieldText; rangeOrder?: PraxisDynamicFieldText; rangeMin?: PraxisDynamicFieldText; rangeMax?: PraxisDynamicFieldText; invalid?: PraxisDynamicFieldText; }; }; inlineSelect?: { placeholder?: PraxisDynamicFieldText; searchPlaceholder?: PraxisDynamicFieldText; }; inlineTreeSelect?: { placeholder?: PraxisDynamicFieldText; searchPlaceholder?: PraxisDynamicFieldText; emptySearch?: PraxisDynamicFieldText; emptyDefault?: PraxisDynamicFieldText; }; inlineColorLabel?: { placeholder?: PraxisDynamicFieldText; panelSubtitle?: PraxisDynamicFieldText; optionsGroupAriaLabel?: PraxisDynamicFieldText; selectionTitle?: PraxisDynamicFieldText; selectionBadgesAriaLabel?: PraxisDynamicFieldText; removeSelectionAriaLabel?: PraxisDynamicFieldText; fallbackOptionLabel?: PraxisDynamicFieldText; emptyStateText?: PraxisDynamicFieldText; overlayActionsAriaLabel?: PraxisDynamicFieldText; clearActionLabel?: PraxisDynamicFieldText; cancelActionLabel?: PraxisDynamicFieldText; applyActionLabel?: PraxisDynamicFieldText; }; inlinePipeline?: { placeholder?: PraxisDynamicFieldText; panelSubtitle?: PraxisDynamicFieldText; searchPlaceholder?: PraxisDynamicFieldText; selectionActionsAriaLabel?: PraxisDynamicFieldText; clearActionLabel?: PraxisDynamicFieldText; cancelActionLabel?: PraxisDynamicFieldText; applyActionLabel?: PraxisDynamicFieldText; overlayActionsAriaLabel?: PraxisDynamicFieldText; selectionPillsAriaLabel?: PraxisDynamicFieldText; barAriaEmpty?: PraxisDynamicFieldText; barAriaSelected?: PraxisDynamicFieldText; optionsGroupAriaLabelMultiple?: PraxisDynamicFieldText; optionsGroupAriaLabelSingle?: PraxisDynamicFieldText; emptyStateText?: PraxisDynamicFieldText; }; inlineRelativePeriod?: { placeholder?: PraxisDynamicFieldText; panelSubtitle?: PraxisDynamicFieldText; defaultOptions?: { today?: PraxisDynamicFieldText; yesterday?: PraxisDynamicFieldText; last7?: PraxisDynamicFieldText; last30?: PraxisDynamicFieldText; thisMonth?: PraxisDynamicFieldText; lastMonth?: PraxisDynamicFieldText; thisQuarter?: PraxisDynamicFieldText; thisYear?: PraxisDynamicFieldText; }; progressEmptyLabel?: PraxisDynamicFieldText; progressAriaLabel?: PraxisDynamicFieldText; optionsGroupAriaLabel?: PraxisDynamicFieldText; fallbackOptionLabel?: PraxisDynamicFieldText; emptyStateText?: PraxisDynamicFieldText; overlayActionsAriaLabel?: PraxisDynamicFieldText; clearActionLabel?: PraxisDynamicFieldText; cancelActionLabel?: PraxisDynamicFieldText; applyActionLabel?: PraxisDynamicFieldText; }; inlinePeriodRange?: { minLabel?: PraxisDynamicFieldText; maxLabel?: PraxisDynamicFieldText; quickPresetsLabel?: PraxisDynamicFieldText; }; inlineMonthRange?: { quickPresetsLabel?: PraxisDynamicFieldText; presetFull?: PraxisDynamicFieldText; presetFirstHalf?: PraxisDynamicFieldText; presetSecondHalf?: PraxisDynamicFieldText; }; inlineYearRange?: { minLabel?: PraxisDynamicFieldText; maxLabel?: PraxisDynamicFieldText; quickPresetsLabel?: PraxisDynamicFieldText; presetFull?: PraxisDynamicFieldText; }; inlineTime?: { placeholder?: PraxisDynamicFieldText; openPanelAriaLabel?: PraxisDynamicFieldText; closePanelAriaLabel?: PraxisDynamicFieldText; hourLabel?: PraxisDynamicFieldText; minuteLabel?: PraxisDynamicFieldText; secondLabel?: PraxisDynamicFieldText; emptyStateLabel?: PraxisDynamicFieldText; }; inlineSentiment?: { placeholder?: PraxisDynamicFieldText; panelSubtitle?: PraxisDynamicFieldText; defaultOptions?: { terrible?: PraxisDynamicFieldText; bad?: PraxisDynamicFieldText; neutral?: PraxisDynamicFieldText; good?: PraxisDynamicFieldText; great?: PraxisDynamicFieldText; }; barAriaEmpty?: PraxisDynamicFieldText; barAriaSelected?: PraxisDynamicFieldText; optionsGroupAriaLabel?: PraxisDynamicFieldText; selectionPillsAriaLabel?: PraxisDynamicFieldText; fallbackOptionLabel?: PraxisDynamicFieldText; emptyStateText?: PraxisDynamicFieldText; overlayActionsAriaLabel?: PraxisDynamicFieldText; clearActionLabel?: PraxisDynamicFieldText; cancelActionLabel?: PraxisDynamicFieldText; applyActionLabel?: PraxisDynamicFieldText; }; autocomplete?: { inputAriaLabel?: PraxisDynamicFieldText; noResults?: PraxisDynamicFieldText; }; color?: { paletteButtonAriaLabel?: PraxisDynamicFieldText; openPickerTooltip?: PraxisDynamicFieldText; openPickerAriaLabel?: PraxisDynamicFieldText; copyValueTooltip?: PraxisDynamicFieldText; copyValueAriaLabel?: PraxisDynamicFieldText; nativeInputAriaLabel?: PraxisDynamicFieldText; recentSectionLabel?: PraxisDynamicFieldText; swatchAriaLabel?: PraxisDynamicFieldText; gradientTabLabel?: PraxisDynamicFieldText; paletteTabLabel?: PraxisDynamicFieldText; opacityLabel?: PraxisDynamicFieldText; addPaletteColorLabel?: PraxisDynamicFieldText; clearActionLabel?: PraxisDynamicFieldText; cancelActionLabel?: PraxisDynamicFieldText; applyActionLabel?: PraxisDynamicFieldText; }; multiSelect?: { placeholder?: PraxisDynamicFieldText; selectAllLabel?: PraxisDynamicFieldText; selectedTokensAriaLabel?: PraxisDynamicFieldText; removeSelectionAriaLabel?: PraxisDynamicFieldText; selectedPanelTitle?: PraxisDynamicFieldText; selectedPanelRemoveHint?: PraxisDynamicFieldText; panelActionsAriaLabel?: PraxisDynamicFieldText; clearActionLabel?: PraxisDynamicFieldText; cancelActionLabel?: PraxisDynamicFieldText; applyActionLabel?: PraxisDynamicFieldText; }; transferList?: { availableLabel?: PraxisDynamicFieldText; selectedLabel?: PraxisDynamicFieldText; moveSelectedToRightAriaLabel?: PraxisDynamicFieldText; moveAllToRightAriaLabel?: PraxisDynamicFieldText; moveSelectedToLeftAriaLabel?: PraxisDynamicFieldText; moveAllToLeftAriaLabel?: PraxisDynamicFieldText; availableEmptyText?: PraxisDynamicFieldText; selectedEmptyText?: PraxisDynamicFieldText; noResultsText?: PraxisDynamicFieldText; }; checkboxGroup?: { optionUnavailableDescription?: PraxisDynamicFieldText; }; } interface PraxisDynamicFieldsI18nOptions { locale?: string; fallbackLocale?: string; dictionaries?: Record; overrides?: PraxisDynamicFieldsI18nOverrides; } declare const PRAXIS_DYNAMIC_FIELDS_I18N: InjectionToken; declare function createPraxisDynamicFieldsI18nConfig(options?: PraxisDynamicFieldsI18nOptions): Partial; declare function providePraxisDynamicFieldsI18n(options?: PraxisDynamicFieldsI18nOptions): Provider[]; declare function resolvePraxisDynamicFieldsText(value: PraxisDynamicFieldText | null | undefined, fallback?: string): PraxisI18nMessageDescriptor; interface BasicComponentState { initialized: boolean; focused: boolean; disabled: boolean; touched: boolean; dirty: boolean; } interface BasicFieldState { value: any; valid: boolean; errors: ValidationErrors | null; } interface BaseValidationConfig { required?: boolean; minLength?: number; maxLength?: number; pattern?: string | RegExp; customValidator?: (value: any) => string | null; messages?: { required?: string; minlength?: string; maxlength?: string; pattern?: string; min?: string; max?: string; email?: string; url?: string; matchField?: string; unique?: string; requiredTrue?: string; fileType?: string; maxFileSize?: string; minWords?: string; conditionalValidation?: string; custom?: string; }; validateOnBlur?: boolean; debounceTime?: number; } type LogLevel$1 = 'trace' | 'debug' | 'info' | 'warn' | 'error'; declare abstract class SimpleBaseInputComponent implements ControlValueAccessor, OnInit, OnDestroy, AfterViewInit, BaseDynamicFieldComponent { protected readonly destroyRef: DestroyRef; protected readonly elementRef: ElementRef; protected readonly cdr: ChangeDetectorRef; private readonly injector; protected readonly i18n: PraxisI18nService; protected readonly dynamicFieldsI18n: PraxisDynamicFieldsI18nOverrides | null; private resolvedNgControl; private integratedControl; private controlIntegrationSubscription; private appliedBaseValidators; private appliedBaseValidatorsControl; /** Subject para eventos de lifecycle */ readonly lifecycleEvents$: BehaviorSubject; /** Native element registered by subclasses */ protected nativeElement: HTMLElement | null; protected getNgControl(): NgControl | null; /** Metadata do componente */ readonly metadata: _angular_core.WritableSignal; /** Estado básico do componente */ protected readonly componentState: _angular_core.WritableSignal; /** Estado básico do campo */ protected readonly fieldState: _angular_core.WritableSignal; /** ID único do componente */ readonly componentId: _angular_core.WritableSignal; /** Rótulo visível do campo */ label?: string; /** Placeholder opcional */ placeholder?: string; /** Indica se o placeholder deve ser exibido */ get shouldShowPlaceholder(): boolean; /** Whether to show the clear button (if enabled in metadata) */ showClear(): boolean; /** Clears the current value and marks the control touched/dirty */ onClearClick(): void; readonly internalControl: FormControl; /** FormControl signal para interface BaseDynamicFieldComponent */ readonly formControl: _angular_core.WritableSignal | null>; /** * Define um FormControl externo a ser utilizado como fonte de verdade. */ setExternalControl(control: AbstractControl): void; private asFormControl; /** * Retorna o FormControl em uso pelo componente. * * Quando um controle externo é fornecido, ele tem precedência; * caso contrário, o controle interno é utilizado. */ control(): FormControl; protected onChange: (_value: any) => void; private onTouched; private syncInProgress; readonly valueChange: _angular_core.OutputEmitterRef; readonly focusChange: _angular_core.OutputEmitterRef; readonly nativeBlur: _angular_core.OutputEmitterRef; readonly nativeChange: _angular_core.OutputEmitterRef; /** Configuração de validação baseada no metadata */ protected readonly validationConfig: _angular_core.Signal; /** Mensagem de erro atual */ readonly errorMessage: _angular_core.Signal; /** Posição/configuração de erro vinda do metadata */ readonly errorPosition: _angular_core.Signal<"bottom" | "top" | "tooltip">; /** Se deve exibir erros inline (mat-error) */ readonly showInlineErrors: _angular_core.Signal; /** Tooltip habilitado quando errorPosition === 'tooltip' */ readonly tooltipEnabled: _angular_core.Signal; /** Posição do tooltip mapeada para Angular Material */ readonly tooltipPosition: _angular_core.Signal<"above" | "below">; /** * Tooltip usado pelos campos inline: * 1) prioriza erro quando validators.errorPosition = tooltip * 2) materializa help text explícito do metadata (tooltip/hint) * 3) fallback para contexto "Campo: valor" quando houver valor preenchido */ inlineTooltipText(): string; inlineTooltipDisabled(): boolean; protected isInlineContextTooltipEnabled(): boolean; protected resolveInlineContextTooltipValue(): string; protected resolveInlineHelpTooltipText(): string; protected isInteractionBlockedByState(options?: { readonly includeReadonly?: boolean; readonly includePresentation?: boolean; }): boolean; protected isValidationVisualSuppressedByState(): boolean; protected resolveInlineContextTooltipLabel(): string; inputAriaLabel(): string | null; protected stringifyInlineContextValue(value: unknown): string; protected composeInlineChipDisplayText(label: string, value: string): string; private truncateInlineTooltipText; private humanizeInlineFieldName; /** Gate to control when inline errors may display (debounced for 'change') */ private readonly errorDisplayReady; private errorDebounceHandle; /** Verifica se há erro de validação (respeita validationTrigger/debounce) */ readonly hasValidationError: _angular_core.Signal; /** CSS classes básicas do componente */ readonly baseCssClasses: _angular_core.Signal; /** CSS classes completas do componente (extensível por subclasses) */ readonly componentCssClasses: _angular_core.Signal; /** Tipo de input */ readonly inputType: _angular_core.Signal; /** Aparência Material */ readonly materialAppearance: _angular_core.Signal; /** Cor Material */ readonly materialColor: _angular_core.Signal; /** Comportamento do float label (auto | always) */ readonly floatLabelBehavior: _angular_core.Signal<"auto" | "always">; constructor(); ngOnInit(): void; ngAfterViewInit(): void; ngOnDestroy(): void; writeValue(value: any): void; registerOnChange(fn: any): void; registerOnTouched(fn: any): void; setDisabledState(isDisabled: boolean): void; handleInput(event: Event): void; handleFocus(): void; handleBlur(): void; /** * Retorna a paleta Material quando a cor for 'primary' | 'accent' | 'warn'. * Caso contrário, retorna undefined para não aplicar [color]. */ iconPalette(c?: string): 'primary' | 'accent' | 'warn' | undefined; /** * Retorna a cor customizada (CSS) quando não for paleta Material. * Quando a cor for paleta, retorna null para não conflitar com [color]. */ iconCustomColor(c?: string): string | null; /** * Resolve cor final para ícones: * - paletas Material (primary/accent/warn) -> tokens CSS M3 * - cores CSS customizadas -> valor normalizado * - vazio -> fallback opcional */ iconResolvedColor(c?: string, fallback?: string | null): string | null; /** * Normaliza nomes de ícone aceitando alias `mi:*` e fallback opcional. */ normalizeIconName(icon: unknown, fallback?: string): string; /** * Ícone de prefixo configurável por metadata (`prefixIcon`), com fallback. */ prefixIconName(fallback?: string): string; /** * Cor do ícone de prefixo (`prefixIconColor`). */ prefixIconColor(): string | undefined; /** * Ícone de sufixo configurável por metadata (`suffixIcon`). */ suffixIconName(fallback?: string): string; /** * Cor do ícone de sufixo (`suffixIconColor`). */ suffixIconColor(): string | undefined; /** * Ícone do botão clear configurável por metadata (`clearButton.icon`). */ clearIconName(fallback?: string): string; /** * Cor do ícone do botão clear (`clearButton.iconColor`). */ clearIconColor(): string | undefined; /** * Resolve um valor do metadata usando caminho com ponto (`foo.bar.baz`). */ metadataValue(path: string): unknown; /** * Resolve nome de ícone a partir de uma lista de caminhos de metadata. */ metadataIconName(paths: string | string[], fallback?: string): string; /** * Resolve cor de ícone a partir de uma lista de caminhos de metadata. */ metadataIconColor(paths: string | string[]): string | undefined; /** * Define o valor do campo (implementação da interface BaseDynamicFieldComponent) */ setValue(value: any, options?: ValueChangeOptions): void; /** * Obtém o valor do campo */ getValue(): any; /** * Marca o campo como tocado */ markAsTouched(): void; /** * Marca o campo como sujo */ markAsDirty(): void; /** * Foca no elemento */ focus(): void; /** * Remove foco do elemento */ blur(): void; /** * Define metadata do componente */ protected setMetadata(metadata: ComponentMetadata): void; protected onActiveControlChanged(_previousControl: FormControl, _currentControl: FormControl): void; /** Registra elemento nativo e aplica atributos/eventos */ protected registerInputElement(el: HTMLElement): void; /** Aplica atributos e ARIA com base no metadata */ protected applyNativeAttributes(): void; /** Vincula handlers nativos de eventos */ private attachNativeEventHandlers; /** * Força validação do campo */ validateField(): Promise; /** * Hook chamado após inicialização - implementação da interface BaseDynamicFieldComponent * Subclasses podem override para implementar comportamento específico */ onComponentInit?(): void; /** * Hook chamado antes da destruição - implementação da interface BaseDynamicFieldComponent * Subclasses podem override para limpeza específica */ onComponentDestroy?(): void; /** * Define estado de loading - implementação da interface BaseDynamicFieldComponent */ setLoading?(loading: boolean): void; /** * Define estado desabilitado - implementação da interface BaseDynamicFieldComponent */ setDisabled?(disabled: boolean): void; /** * Reset do campo - implementação da interface BaseDynamicFieldComponent */ resetField?(): void; /** * Retorna classes CSS específicas da subclasse * Subclasses devem implementar este método para adicionar suas próprias classes */ protected getSpecificCssClasses(): string[]; private setupFormControlIntegration; private syncComponentStateFromControl; private handleMaskedNativeInput; protected applyNativeDisplayMask(value?: unknown): void; private resolveNativeDisplayMask; private refreshErrorTooltip; protected ariaInvalidAttribute(): 'true' | null; protected tDynamicFields(keySuffix: string, fallback: string, params?: Record): string; protected resolveDynamicFieldsMessage(value: string | { key?: string; text?: string; params?: Record; } | null | undefined, keySuffix: string, fallback: string, params?: Record): string; protected clearActionTooltip(): string | null; protected clearActionAriaLabel(): string; private resolveClearActionContextLabel; private interpolateValidationMessage; private setupValidators; private applyValidators; private removeAppliedBaseValidators; private createCustomValidator; private generateUniqueId; private getTransformApply; private getTransformName; private getValidationTrigger; private getValidationDebounce; private applyErrorDebounceOnChange; private applyTransformOnBlur; private restoreRawValueForEditing; private applyFunctionalDisplayTransformImmediately; /** * Sistema de logging básico */ protected log(level: LogLevel$1, message: string, data?: any): void; private emitLifecycleEvent; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } interface BasicButtonState { initialized: boolean; loading: boolean; disabled: boolean; focused: boolean; clicked: boolean; error: Error | null; } interface ButtonAction { type: 'navigation' | 'external-link' | 'global' | 'custom' | 'form-action'; target?: string; globalAction?: GlobalActionRef; payload?: any; confirmation?: { title: string; message: string; confirmLabel?: string; cancelLabel?: string; }; } type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error'; declare abstract class SimpleBaseButtonComponent implements OnInit, OnDestroy, BaseDynamicFieldComponent { protected readonly destroyRef: DestroyRef; protected readonly elementRef: ElementRef; protected readonly cdr: ChangeDetectorRef; protected readonly router: Router; protected readonly dialog: MatDialog; protected readonly globalActions: GlobalActionService | null; protected readonly i18n: PraxisI18nService; protected readonly dynamicFieldsI18n: PraxisDynamicFieldsI18nOverrides | null; /** Subject para eventos de lifecycle */ readonly lifecycleEvents$: BehaviorSubject; /** Metadata do componente */ readonly metadata: _angular_core.WritableSignal; /** Estado básico do botão */ protected readonly buttonState: _angular_core.WritableSignal; /** Ação configurada para o botão */ protected readonly buttonAction: _angular_core.WritableSignal; /** Métricas de clique */ private readonly clickMetrics; /** ID único do componente */ readonly componentId: _angular_core.WritableSignal; readonly actionExecuted: _angular_core.OutputEmitterRef; readonly click: _angular_core.OutputEmitterRef; readonly focusChange: _angular_core.OutputEmitterRef; /** CSS classes básicas do botão */ readonly baseButtonCssClasses: _angular_core.Signal; /** CSS classes completas do botão (extensível por subclasses) */ readonly componentCssClasses: _angular_core.Signal; /** Tipo de botão Material */ readonly buttonType: _angular_core.Signal; /** Aparência Material */ readonly materialAppearance: _angular_core.Signal; /** Cor Material */ readonly materialColor: _angular_core.Signal; /** Se o botão está desabilitado */ readonly isDisabled: _angular_core.Signal; /** Se o botão está em loading */ readonly isLoading: _angular_core.Signal; /** Texto a ser exibido no botão */ readonly buttonText: _angular_core.Signal; /** Ícone a ser exibido */ readonly buttonIcon: _angular_core.Signal; ngOnInit(): void; ngOnDestroy(): void; handleClick(event: MouseEvent): Promise; handleFocus(): void; handleBlur(): void; /** * Define loading state */ setLoading(loading: boolean): void; /** * Define disabled state */ setDisabled(disabled: boolean): void; /** * Executa ação programaticamente */ triggerAction(): Promise; /** * Foca no botão */ focus(): void; /** * Remove foco do botão */ blur(): void; /** * Define metadata do componente */ protected setMetadata(metadata: ComponentMetadata): void; /** * Retorna classes CSS específicas da subclasse */ protected getSpecificCssClasses(): string[]; /** * Hook chamado após inicialização - implementação da interface BaseDynamicFieldComponent * Subclasses podem override para implementar comportamento específico */ onComponentInit?(): void; /** * Hook chamado antes da destruição - implementação da interface BaseDynamicFieldComponent * Subclasses podem override para limpeza específica */ onComponentDestroy?(): void; /** * Hook chamado antes da execução de ação - para subclasses implementarem */ protected onBeforeAction(action: ButtonAction): Promise; /** * Hook chamado após execução de ação - para subclasses implementarem */ protected onAfterAction(action: ButtonAction, result: any): Promise; private initializeButtonAction; private executeAction; private showConfirmation; private executeCustomAction; private executeFormAction; private shouldAllowClick; private updateClickMetrics; private handleError; private generateUniqueId; /** * Sistema de logging básico */ protected log(level: LogLevel, message: string, data?: any): void; /** * Emite evento de lifecycle */ private emitLifecycleEvent; protected tDynamicFields(keySuffix: string, fallback: string, params?: Record): string; protected resolveDynamicFieldsMessage(value: string | { key?: string; text?: string; params?: Record; } | null | undefined, keySuffix: string, fallback: string, params?: Record): string; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } /** * Generic option definition for select components. */ interface SelectOption { /** Display label for the option */ label: string; /** Value associated with the option */ value: T; /** Whether the option is disabled */ disabled?: boolean; /** Optional supporting text rendered by components that expose rich option content */ description?: string; } /** * Metadata configuration for simple select components. */ interface SimpleSelectMetadata extends ComponentMetadata { /** Available options */ options?: SelectOption[]; /** Allow multiple selections */ multiple?: boolean; /** Whether search input should be displayed */ searchable?: boolean; /** Show select all option */ selectAll?: boolean; /** Maximum number of selections allowed */ maxSelections?: number; /** * When to load remote options (for async selects) * - 'open' (default): first fetch happens when the select is opened * - 'init': first fetch happens on component initialization * - 'none': do not auto-load; consumer must call retry()/loadMore() */ loadOn?: 'open' | 'init' | 'none'; /** Backend resource for dynamic options */ resourcePath?: string; /** Canonical metadata-driven source for derived options */ optionSource?: OptionSourceMetadata; /** Additional filter criteria for backend requests */ filterCriteria?: Record; /** Key for option label when loading from backend */ optionLabelKey?: string; /** Key for option value when loading from backend */ optionValueKey?: string; /** Placeholder option text when no value is selected */ emptyOptionText?: string; /** Function to display option values */ displayWith?: (value: any) => string; /** Custom compareWith for MatSelect */ compareWith?: (a: any, b: any) => boolean; } /** * Base directive providing common select behaviour. Extends * `SimpleBaseInputComponent` and manages option handling, multiple * selection, selection change events and helper utilities used by the * concrete Material components. */ declare abstract class SimpleBaseSelectComponent extends SimpleBaseInputComponent { protected readonly matSelectRef: _angular_core.Signal; /** Available options */ readonly options: _angular_core.WritableSignal[]>; /** Whether multiple selection is enabled */ readonly multiple: _angular_core.WritableSignal; /** Whether the component should allow searching */ readonly searchable: _angular_core.WritableSignal; /** Current search term when `searchable` is enabled */ readonly searchTerm: _angular_core.WritableSignal; /** Emits whenever the search term changes */ readonly searchTermChange: _angular_core.OutputEmitterRef; /** Whether a "select all" helper should be displayed */ readonly selectAll: _angular_core.WritableSignal; /** Maximum number of selections allowed (only applies when multiple=true) */ readonly maxSelections: _angular_core.WritableSignal; /** Backend resource path for dynamic option loading */ readonly resourcePath: _angular_core.WritableSignal; /** Canonical source for derived options */ readonly optionSource: _angular_core.WritableSignal; readonly useOptionsFilterEndpoint: _angular_core.WritableSignal; /** Criteria applied to backend filtering */ readonly filterCriteria: _angular_core.WritableSignal>; /** Field used for option labels when loading from backend */ readonly optionLabelKey: _angular_core.WritableSignal; /** Field used for option values when loading from backend */ readonly optionValueKey: _angular_core.WritableSignal; /** Text displayed for an empty option */ readonly emptyOptionText: _angular_core.WritableSignal; /** Current page index when fetching remote options */ readonly pageIndex: _angular_core.WritableSignal; /** Number of options retrieved per request */ readonly pageSize: _angular_core.WritableSignal; /** Indicates options are being loaded from backend */ readonly loading: _angular_core.WritableSignal; /** Holds error message when option loading fails */ readonly error: _angular_core.WritableSignal; private readonly matSelectInitEffect; private readonly multipleControlNormalizationEffect; /** CRUD service for remote option loading (optional) */ protected readonly crudService: GenericCrudService | null; /** Emits whenever the selected value(s) change */ readonly selectionChange: _angular_core.OutputEmitterRef; /** Emits whenever a specific option is selected */ readonly optionSelected: _angular_core.OutputEmitterRef>; /** Emits whenever options are loaded remotely */ readonly optionsLoaded: _angular_core.OutputEmitterRef[]>; readonly openedChange: _angular_core.OutputEmitterRef; protected matSelect: MatSelect | null; private panelClassCacheSignature; private panelClassCache; private remoteOptionsLoadTimer; private remoteOptionsLoadSignature; private remoteOptionsLoadDestroyHookRegistered; protected readonly global: GlobalConfigService; private dependencySub; protected remoteSelectionHydrationSub: Subscription | null; private hasLoadedOnce; /** Options filtered according to the current `searchTerm` */ readonly filteredOptions: _angular_core.Signal[]>; /** * Applies typed metadata to the select component. */ setInputMetadata(metadata: ComponentMetadata): void; private searchableOptionText; private normalizeOptionSearchText; /** * Applies typed metadata to the select component. */ setSelectMetadata(metadata: SimpleSelectMetadata): void; private scheduleRemoteOptionsLoad; protected setMetadata(metadata: ComponentMetadata): void; protected registerMatSelect(select: MatSelect): void; protected applySelectAttributes(): void; protected isReadonlyEffective(): boolean; protected defaultPanelClass(): string | string[] | undefined; selectPanelClass(): string[]; protected isInteractionDisabled(): boolean; protected normalizeMultipleControlValue(): void; setExternalControl(control: AbstractControl): void; /** Whether to show the clear button (if enabled in metadata) */ showClear(): boolean; /** Clears the selection according to single/multiple mode */ onClearClick(): void; /** * Ícone principal opcional para chips inline de componentes select-like. */ chipLeadingIcon(): string; /** * Cor opcional do ícone principal (`prefixIconColor`). */ chipLeadingIconColor(): string | undefined; /** * Ícone secundário opcional para chips inline (`suffixIcon`). */ chipTrailingIcon(): string; /** * Cor opcional do ícone secundário (`suffixIconColor`). */ chipTrailingIconColor(): string | undefined; /** * Ícone de busca do painel (campo search dentro do overlay/select panel). */ panelSearchIconName(fallback?: string): string; /** * Cor do ícone de busca do painel. */ panelSearchIconColor(): string | undefined; /** * Ícone para ação de reset/limpeza no painel. */ panelResetIconName(fallback?: string): string; /** * Cor do ícone de reset do painel. */ panelResetIconColor(): string | undefined; searchInputPlaceholder(): string; searchInputAriaLabel(): string; loadingOptionsLabel(): string; loadMoreOptionsLabel(): string; endOfOptionsLabel(): string; noOptionsAvailableLabel(): string; loadingOptionsAriaLabel(): string; /** * Ícone para estado "selecionado" em opções do painel. */ optionSelectedIconName(fallback?: string): string; /** * Cor do ícone de opção selecionada. */ optionSelectedIconColor(): string | undefined; /** * Ícone para seta de expansão de árvores (aberto). */ treeNodeExpandedIconName(fallback?: string): string; /** * Ícone para seta de expansão de árvores (fechado). */ treeNodeCollapsedIconName(fallback?: string): string; /** * Cor dos ícones de expandir/recolher nós em árvore. */ treeNodeToggleIconColor(): string | undefined; /** * Ícone de toggle do painel quando aberto. */ panelToggleOpenIconName(fallback?: string): string; /** * Ícone de toggle do painel quando fechado. */ panelToggleClosedIconName(fallback?: string): string; /** * Cor dos ícones de toggle do painel. */ panelToggleIconColor(): string | undefined; /** * Updates the current search term and emits the change event. */ onSearch(term: string): void; /** * Applies metadata after the component is initialized by the * DynamicFieldLoader, ensuring options and remote configuration are * processed when using the component declaratively. */ onComponentInit(): void; /** * Selects the given option. Handles both single and multiple selection * modes and emits the proper events. */ selectOption(option: SelectOption): void; /** Checks if the provided value is currently selected */ isSelected(value: T): boolean; isOptionDisabled(option: SelectOption): boolean; protected areOptionValuesEqual(left: unknown, right: unknown): boolean; protected normalizeComparableOptionValue(value: unknown): unknown; /** * Toggles selection of all options when `selectAll` is enabled in multiple * selection mode. */ toggleSelectAll(): void; /** Checks whether all options are currently selected */ isAllSelected(): boolean; /** TrackBy function to optimize ngFor over options */ trackByOption(index: number, option: SelectOption): T; /** Adds CSS class hook for select components */ protected getSpecificCssClasses(): string[]; protected resolveInlineContextTooltipValue(): string; /** Configures the CRUD service with the given resource path */ protected configureCrudService(path: string): void; private isOptionsFilterEndpoint; private resolveSelectedOptionLabel; private areSelectValuesEqual; /** * Loads schema metadata to infer label/value keys when not provided. * After resolving the keys, options are fetched from the backend. */ protected loadSchema(resolveLabel: boolean, resolveValue: boolean): void; /** Loads options from backend using GenericCrudService */ protected loadOptions(page?: number, searchTerm?: string, criteria?: Record): void; private currentIncludeIds; /** Dev-only warning when legacy alias keys are used instead of canonical ones */ protected devWarnSelectAliases(meta: any, component?: string): void; /** Public API to reload options; overridden by async/searchable variants */ reload(reset: boolean): void; /** Marks that at least one successful load has happened */ protected markLoadedOnce(): void; protected hasLoaded(): boolean; /** Setup effect to re-bind dependency observers when FormControl changes */ private readonly _depEffect; /** Rebind hydration for remote selected values when FormControl changes */ private readonly _remoteSelectionEffect; protected setupRemoteSelectionHydration(): void; private ensureCurrentValueLoaded; /** (Re)configure dependency observers based on metadata and current FormGroup */ protected setupDependencies(): void; protected extractDependencyValue(raw: any, path?: string): any; protected applyDependencyCriteria(fragment: Record, strategy?: 'merge' | 'replace'): void; protected onDependenciesChanged(): void; protected resolveDependencyFields(meta: SimpleSelectMetadata & Record): string[] | undefined; protected resolveDependencyFilterMap(meta: SimpleSelectMetadata & Record): Record | undefined; protected resolveDependencyValuePathConfig(meta: SimpleSelectMetadata & Record): string | Record | undefined; private getByPath; private setByPath; private unsetByPath; private mergeObjectsDeep; private replaceMappedKeys; private clone; static ɵfac: _angular_core.ɵɵFactoryDeclaration, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration, never, never, {}, { "searchTermChange": "searchTermChange"; "selectionChange": "selectionChange"; "optionSelected": "optionSelected"; "optionsLoaded": "optionsLoaded"; "openedChange": "openedChange"; }, never, never, true, never>; } type OptionSource = 'byId' | 'page'; declare class OptionStore { private readonly map; private readonly order; readonly loadedPages: Set; upsertById(option: OptionDTO, ephemeral?: boolean): void; addPage(pageIndex: number, page: OptionDTO[]): void; ensureVisible(ids: ID[]): void; clearPages(): void; get items(): OptionDTO[]; } declare const PRAXIS_DYNAMIC_FIELDS_PT_BR: PraxisI18nDictionary; declare const PRAXIS_DYNAMIC_FIELDS_EN_US: PraxisI18nDictionary; declare const PRAXIS_DYNAMIC_FIELDS_WAVE_1_COMPONENT_METADATA: ComponentDocMeta[]; declare const PRAXIS_DYNAMIC_FIELDS_EDITORIAL_WAVE_1: ComponentMetadataEditorialDescriptor[]; declare function registerPraxisDynamicFieldsWave1EditorialDescriptors(registry: ComponentMetadataRegistry): void; declare function providePraxisDynamicFieldsWave1EditorialRegistry(): Provider; /** * @fileoverview Diretiva para renderização dinâmica de campos de formulário * * Renderiza campos de formulário dinamicamente com base em metadados, * integrando com ComponentRegistryService para resolver tipos de componentes * e associando automaticamente com FormGroup controls. * * @example Uso básico * ```html * * * ``` * * @example Uso avançado com template personalizado * ```html *
* * *
* ``` * * Concurrency & Stability * - The directive may receive rapid, back-to-back input changes (e.g. initial * binding triggers ngOnChanges followed immediately by ngOnInit). Because * component resolution is async, naive implementations can interleave two * render cycles, causing duplicated shells/components. To avoid this, the * render pipeline is serialized with a lightweight reentrancy guard * (isRendering + pendingRender), coalescing intermediate requests into a * single subsequent pass. * - All component/shell references and subscriptions are tracked and disposed * deterministically to prevent memory leaks. */ interface DynamicFieldLoaderRenderErrorEvent { phase: 'executeRendering' | 'detectChanges'; fieldName: string; /** * Código estável para telemetria, regras de suporte e tratamento no host. */ code: 'component_resolution_failed' | 'component_missing' | 'component_detect_changes_failed'; /** * Retrocompatibilidade prática: mantém o erro técnico no mesmo campo * já consumido pelos hosts existentes. */ error: unknown; /** * Alias explícito para consumo novo e leitura sem ambiguidade. */ technicalError: unknown; /** * Mensagem técnica derivada do erro original, útil para telemetria e suporte. */ technicalMessage: string; /** * Mensagem pronta para UX/host quando existir uma versão localizada. * Ausente para erros puramente técnicos. */ userMessage?: string; /** * Contexto mínimo e serializável para observabilidade corporativa. */ context?: { controlType?: string; index?: number; stage?: string; }; fatal: boolean; } /** * Diretiva que renderiza campos de formulário dinamicamente baseado em metadados. * * Integra-se com ComponentRegistryService para resolver componentes por tipo, * associa automaticamente FormControls e emite referências dos componentes criados. * * ## 🏗️ Funcionalidades Principais * * - ✅ Renderização dinâmica baseada em FieldMetadata[] * - ✅ Integração automática com Angular Reactive Forms * - ✅ Resolução de componentes via ComponentRegistryService * - ✅ Validação robusta de inputs * - ✅ Emissão de ComponentRef para controle externo * - ✅ Lifecycle management completo * - ✅ Detecção automática de mudanças * * ## 🎯 Casos de Uso * * - Formulários dinâmicos baseados em configuração JSON * - Admin panels com campos configuráveis * - Workflows com etapas dinâmicas * - Formulários gerados por API/backend * - A/B testing de interfaces de formulário * * @selector [dynamicFieldLoader] * @usageNotes * - Sempre fornecer tanto fields quanto formGroup * - FormGroup deve ter controls correspondentes aos field names * - Usar ViewChild para capturar referências se necessário * - Componentes são criados de forma lazy (apenas quando necessário) */ declare class DynamicFieldLoaderDirective implements OnInit, OnDestroy, OnChanges { private readonly viewContainer; private readonly componentRegistry; private readonly cdr; private readonly i18n; private readonly dynamicFieldsI18n; /** * Metadados dos campos a serem renderizados. * * Array de objetos FieldMetadata que define a estrutura, * validação e comportamento de cada campo do formulário. * * @example * ```typescript * const fields: FieldMetadata[] = [ * { * name: 'email', * label: 'Email', * controlType: 'input', * required: true, * validators: { email: true } * }, * { * name: 'password', * label: 'Senha', * controlType: 'input', * inputType: 'password', * required: true * } * ]; * ``` */ fields: FieldMetadata[]; /** * FormGroup que gerencia os controles dos campos. * * Deve conter AbstractControl para cada campo definido no array fields. * A diretiva associa automaticamente cada componente ao control correspondente. * * @example * ```typescript * const formGroup = this.fb.group({ * email: ['', [Validators.required, Validators.email]], * password: ['', [Validators.required, Validators.minLength(8)]] * }); * ``` */ formGroup: FormGroup | null; /** * Controla se a diretiva deve injetar o AbstractControl externo * diretamente no componente via setExternalControl(control). * * Quando false (padrão), a diretiva apenas atribui o control ao signal * formControl, caso o componente o exponha, evitando acoplamento. */ enableExternalControlBinding: boolean; /** * Template opcional para embrulhar cada campo renderizado. * * O contexto fornece: * - `field`: metadata do campo * - `index`: posição do campo na lista * - `content`: `TemplateRef` com o conteúdo do campo a ser projetado * * @example * ```html * *
* *
*
* * * * ``` * * O `itemTemplate` permite projetar elementos adicionais ao redor do conteúdo * do campo. Não há suporte a arraste no `FieldShellComponent`. */ itemTemplate?: TemplateRef<{ field: FieldMetadata; index: number; content: TemplateRef; }>; /** Optional tracing toggle for diagnostics in host components */ debugTrace: boolean; /** Optional label to identify the host slot in logs */ debugTraceLabel: string; /** * Estados globais opcionais aplicados a todos os campos renderizados. * * Quando definidos, não substituem explicitamente metadados a menos que * seja necessário (ex.: readonlyMode/presentationMode = true, visible = false, * disabledMode = true). Quando não definidos (null), prevalecem metadados. */ readonlyMode: boolean | null; disabledMode: boolean | null; presentationMode: boolean | null; visible: boolean | null; /** @internal Special input for canvas mode integration */ canvasMode: boolean; /** * Emite um mapa com as referências dos componentes criados. * * Indexado pelo nome do campo (FieldMetadata.name). * Útil para controle externo, validação customizada ou manipulação direta. * * @example * ```typescript * onComponentsCreated(components: Map>) { * // Acessar componente específico * const emailComponent = components.get('email'); * if (emailComponent) { * emailComponent.instance.focus(); * } * * // Iterar todos os componentes * components.forEach((componentRef, fieldName) => { * console.log(`Campo ${fieldName} criado:`, componentRef.instance); * }); * } * ``` */ componentsCreated: EventEmitter>>; /** Evento emitido após a criação individual de um campo */ fieldCreated: EventEmitter<{ field: FieldMetadata; componentRef: ComponentRef; index: number; }>; /** Evento emitido quando um campo é destruído */ fieldDestroyed: EventEmitter<{ fieldName: string; }>; /** Evento emitido quando ocorre erro durante renderização de campo */ renderError: EventEmitter; /** @internal Emits when a field is hovered in canvas mode */ canvasMouseEnter: EventEmitter<{ field: FieldMetadata; element: HTMLElement; }>; /** @internal Emits when a field is no longer hovered in canvas mode */ canvasMouseLeave: EventEmitter<{ field: FieldMetadata; element: HTMLElement; }>; /** @internal Emits when a field is clicked in canvas mode */ canvasClick: EventEmitter<{ field: FieldMetadata; element: HTMLElement; }>; /** @internal Emits when a field receives focus in canvas mode */ canvasFocus: EventEmitter<{ field: FieldMetadata; element: HTMLElement; }>; /** Mapa interno de componentes criados */ private componentRefs; /** Mapa de shells criados */ private shellRefs; /** Subscription manager for shell events */ private shellSubscriptions; /** Ordem atual dos nomes de campo renderizados */ private currentOrder; /** Snapshot compacto para detectar mudanças relevantes nos campos (tipo + flags principais) */ private lastFieldsSnapshot; /** First-render guard to ignore transient input changes */ /** Serialize async renders to avoid duplicate creations on rapid changes */ private isRendering; private pendingRender; private _dbgPrevFieldsRef; private _dbgPrevFormGroupRef; private _dbgNgChangesCount; private _dbgRenderCalls; private _dbgInstanceId; private debugEnabled; /** Tracks whether at least one successful render has completed */ private hasRenderedOnce; /** Lifecycle guard to avoid rendering work after directive teardown */ private isDestroyed; private isTraceEnabled; private traceLog; private dbg; private toErrorMessage; private isDestroyedLifecycleError; private reportRenderError; private createReportedFatalError; private tDynamicFields; private resolveDynamicFieldsMessage; ngOnInit(): void; ngOnChanges(changes: SimpleChanges): void; ngOnDestroy(): void; /** * Re-renderiza todos os campos forçadamente. * * Útil quando metadata ou FormGroup foram alterados externamente * e a detecção automática de mudanças não foi suficiente. * * @example * ```typescript * @ViewChild(DynamicFieldLoaderDirective) * fieldLoader!: DynamicFieldLoaderDirective; * * updateFieldsExternally() { * // Modificar fields ou formGroup externamente * this.fields[0].disabled = true; * * // Forçar re-renderização * this.fieldLoader.refresh(); * } * ``` */ refresh(): void; /** * Obtém referência de componente específico por nome do campo. * * @param fieldName - Nome do campo conforme FieldMetadata.name * @returns ComponentRef ou undefined se não encontrado * * @example * ```typescript * const emailComponent = this.fieldLoader.getComponent('email'); * if (emailComponent) { * emailComponent.instance.setLoading(true); * } * ``` */ getComponent(fieldName: string): ComponentRef | undefined; /** * Obtém todos os componentes criados. * * @returns Map com todas as referências de componentes indexadas por nome */ getAllComponents(): Map>; /** * Valida as entradas da diretiva antes de processá-las. * * Verifica se inputs obrigatórios estão presentes e válidos, * emite warnings para problemas não-críticos. * * @throws Error se validação crítica falhar */ private validateInputs; /** * Carrega os campos dinâmicos no contêiner de visualização. * * Processo completo: * 1. Validar inputs * 2. Limpar componentes existentes * 3. Resolver e criar cada componente * 4. Associar propriedades e FormControl * 5. Emitir mapa de componentes criados */ private renderFields; /** * Executa a renderização dos campos com rollback em caso de erro. * * @private */ private executeRendering; /** Builds a semantic snapshot capturing metadata changes that affect runtime rendering. */ private buildFieldSnapshot; private buildFieldSemanticSignature; /** * Reatribui apenas os FormControls existentes aos componentes/shells sem refazer a renderização. */ private hasSameRenderShape; private updateExistingFieldMetadata; private rebindControlsOnly; /** Destroi todos os componentes e limpa o container */ private destroyComponents; /** Destroi um único campo pelo nome */ private destroySingle; /** Cria o componente de campo dentro de um FieldShell e aplica metadados/controle */ private createFieldComponent; /** * Aplica os estados globais aos shells já criados, sem re-render completo. */ private applyGlobalStates; private applyShellEffectiveStatesToComponent; /** * Tenta inferir o controlType a partir do próprio field. * Retorna null quando não é possível inferir, mantendo a validação original. */ private inferControlTypeFromField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } declare class MaterialButtonComponent extends SimpleBaseButtonComponent implements OnDestroy { private readonly keyboardService; private unregisterShortcut?; /** Estado adicional específico do Material Button */ protected readonly materialButtonState: _angular_core.WritableSignal<{ isPressed: boolean; rippleDisabled: boolean; }>; /** Variante do botão Material */ readonly buttonVariant: _angular_core.Signal<"flat" | "basic" | "icon" | "raised" | "stroked" | "fab" | "mini-fab">; /** Deve desabilitar ripple */ readonly shouldDisableRipple: _angular_core.Signal; /** É botão somente ícone */ readonly isIconOnlyButton: _angular_core.Signal; /** Deve mostrar ícone no texto */ readonly shouldShowIcon: _angular_core.Signal; /** Atalho de teclado */ readonly keyboardShortcut: _angular_core.Signal; /** Tooltip text */ readonly tooltipText: _angular_core.Signal; readonly validationLoadingAriaLabel: _angular_core.Signal; readonly validationLoadingSrOnly: _angular_core.Signal; private readonly syncKeyboardShortcutEffect; ngOnInit(): void; ngOnDestroy(): void; /** * Classes CSS específicas do Material Button */ protected getSpecificCssClasses(): string[]; /** * Override do handleClick para adicionar comportamento específico do Material Button */ handleClick(event: MouseEvent): Promise; /** * Define metadata específica do Material Button */ setButtonMetadata(metadata: MaterialButtonMetadata): void; /** * Alterna estado de ripple */ toggleRipple(disabled: boolean): void; /** * Obtém informações do botão */ getButtonInfo(): { id: string; variant: string; text: string; icon: string; isLoading: boolean; isDisabled: boolean; isIconOnly: boolean; }; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface ConfirmDialogData { title: string; message: string; confirmText: string; cancelText: string; type?: 'warning' | 'danger' | 'info'; icon?: string; } declare class ConfirmDialogComponent { dialogRef: MatDialogRef; data: ConfirmDialogData; constructor(dialogRef: MatDialogRef, data: ConfirmDialogData); getConfirmButtonColor(): 'primary' | 'accent' | 'warn'; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class EditableCollectionComponent implements BaseDynamicFieldComponent { private readonly dynamicForm; private readonly i18n; private readonly collectionRoot?; private readonly addButton?; readonly metadata: _angular_core.WritableSignal; readonly componentId: _angular_core.WritableSignal; readonly formControl: _angular_core.WritableSignal | null>; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; label: string; readonly arrayControl: _angular_core.Signal | null>; readonly itemFields: _angular_core.Signal; itemGroups(): FormGroup[]; readonly arrayConfig: _angular_core.Signal; readonly headingId: _angular_core.Signal; readonly errorId: _angular_core.Signal; setInputMetadata(metadata: ComponentMetadata): void; setExternalControl(control: AbstractControl): void; focus(): void; blur(): void; addItem(): void; removeItem(index: number): void; canAdd(): boolean; canShowAdd(): boolean; canRemove(_index: number): boolean; canShowRemove(_index: number): boolean; isInteractionDisabled(): boolean; isItemEditReadonly(): boolean; addLabel(): string; removeLabel(): string; emptyState(): string; hasVisibleErrors(): boolean; itemTitle(group: FormGroup, index: number): string; errorMessages(): string[]; trackItem(index: number, group: FormGroup): unknown; private readPath; private t; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class TextInputComponent extends SimpleBaseInputComponent { readonly validationChange: _angular_core.OutputEmitterRef; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; isReadonlyEffective(): boolean; ngOnInit(): void; onComponentInit(): void; /** * Adiciona classes CSS específicas do text-input */ protected getSpecificCssClasses(): string[]; /** * Reset do campo */ resetField(): void; /** * Força validação do campo (override para emitir evento) */ validateField(): Promise; /** * Define metadata e aplica configurações */ setInputMetadata(metadata: MaterialInputMetadata): void; showClear(): boolean; onClearClick(): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; private clearButtonConfig; private metadataRecord; private metadataAsField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Specialized input component for HTML color inputs. * * Renders a `` containing an `` element * with basic validation and hint support. Built on top of the * `SimpleBaseInputComponent` to leverage common functionality such as * reactive forms integration and error handling. */ declare class ColorInputComponent extends SimpleBaseInputComponent { private nativePickerRef?; private menuTrigger?; /** Emits whenever validation state changes. */ readonly validationChange: _angular_core.OutputEmitterRef; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; palettePreset: 'basic' | 'office' | 'material' | string; paletteColors: string[] | undefined; columns: number; popupWidth: number | string; preview: boolean; showRecent: boolean; maxRecent: number; showNativeOption: boolean; panelWidthPx: number; readonly recent: _angular_core.WritableSignal; readonly swatches: _angular_core.Signal; constructor(); ngOnInit(): void; validateField(): Promise; protected getSpecificCssClasses(): string[]; effectiveFloatLabelBehavior(): 'always'; /** Applies component metadata with strong typing. */ setInputMetadata(metadata: MaterialColorInputMetadata): void; /** Programmatically opens the native color picker if supported. */ openNativePicker(): void; onNativeColorChange(event: Event): void; previewColor(): string; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; isReadonlyEffective(): boolean; openMenu(): void; onSwatchClick(c: string): void; isSelected(c: string): boolean; copyCurrent(): void; colorPickerButtonTooltip(): string; colorPickerButtonAriaLabel(): string; copyButtonTooltip(): string; copyButtonAriaLabel(): string; nativeColorInputAriaLabel(): string; recentSectionLabel(): string; colorSwatchAriaLabel(color: string): string; private applyColor; currentSolidHex(): string; private pushRecent; private normalizeHex; private buildPaletteColors; private defaultHex; private defaultColor; private buildThemePalette; private resolveCssColor; private toHex; private colorProbe?; private ensureColorProbe; private resolveToHex; private isBrowser; private coerceWidth; private loadFromStorage; private saveToStorage; trackColor(_: number, c: string): string; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Specialized input component for HTML date inputs. * * Renders a `` containing an `` element * with basic validation and hint support. Built on top of the * `SimpleBaseInputComponent` to leverage common functionality such as * reactive forms integration and error handling. */ declare class DateInputComponent extends SimpleBaseInputComponent { /** Emits whenever validation state changes. */ readonly validationChange: _angular_core.OutputEmitterRef; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; isReadonlyEffective(): boolean; ngOnInit(): void; validateField(): Promise; protected getSpecificCssClasses(): string[]; /** Applies component metadata with strong typing. */ setInputMetadata(metadata: MaterialDateInputMetadata): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; private metadataAsField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Specialized component using Angular Material Datepicker. * * Renders a `` with an `` bound to a * `mat-datepicker`. Includes toggle button, hint and error support * following the same pattern used by other dynamic field components. */ declare class MaterialDatepickerComponent extends SimpleBaseInputComponent { /** Emits whenever validation state changes. */ readonly validationChange: _angular_core.OutputEmitterRef; private readonly dateAdapter; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; readonly minDate: _angular_core.Signal; readonly maxDate: _angular_core.Signal; readonly startAt: _angular_core.Signal; setExternalControl(control: AbstractControl): void; writeValue(value: unknown): void; setValue(value: unknown, options?: Parameters[1]): void; protected applyNativeDisplayMask(): void; onDateChange(event: MatDatepickerInputEvent): void; validateField(): Promise; protected getSpecificCssClasses(): string[]; /** Applies component metadata with strong typing. */ setDatepickerMetadata(metadata: MaterialDatepickerMetadata): void; setInputMetadata(metadata: MaterialDatepickerMetadata): void; protected setMetadata(metadata: MaterialDatepickerMetadata): void; isReadonlyEffective(): boolean; isInputReadonly(): boolean; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; showClear(): boolean; onClearClick(): void; private clearButtonConfig; private metadataRecordForClear; private metadataAsField; private parseDateOnlyString; private applyDateLocale; private resolveMetadataLocale; private resolveMetadataDateOrder; private stringMetadataValue; private coerceCurrentControlValue; private coerceDateValue; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface DateRangeShortcutItem { id: string; label: string; icon?: string; disabled?: boolean; description?: string; rangeDescription?: string; } /** * Specialized component using Angular Material Date Range picker. * * Renders a `` with a `mat-date-range-input` bound to * an internal `FormGroup`. Integrates toggle button, hint and error support * following the same pattern used by other dynamic field components. */ declare class MaterialDateRangeComponent extends SimpleBaseInputComponent implements OnInit { /** Emits whenever validation state changes. */ readonly validationChange: _angular_core.OutputEmitterRef; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; set metadataInput(val: MaterialDateRangeMetadata); readonly rangeGroup: FormGroup<{ start: FormControl; end: FormControl; }>; readonly minDate: _angular_core.Signal; readonly maxDate: _angular_core.Signal; readonly startAt: _angular_core.Signal; overlayOpen: boolean; readonly shortcutOverlayViewportMargin = 12; private pickerOpen; private readonly dateAdapter; picker: MatDateRangePicker; private endDateInput?; readonly shouldShowShortcuts: () => boolean; readonly shortcutOverlayAriaLabel: _angular_core.Signal; readonly overlayPositions: () => ConnectedPosition[]; private shortcutOverlayBelowPositions; private shortcutOverlayLeftPositions; private shortcutOverlayRightPositions; readonly resolvedPresets: _angular_core.Signal>; readonly shortcutItems: _angular_core.Signal; readonly activePresetId: () => string | null; writeValue(value: unknown): void; ngOnInit(): void; protected shouldPropagateRangeGroupChanges(): boolean; protected focusEndDateInput(event: Event): void; private propagateRangeValue; private isEmptyRangeValue; private areDatesEqual; validateField(): Promise; protected getSpecificCssClasses(): string[]; /** Applies component metadata with strong typing. */ setDateRangeMetadata(metadata: MaterialDateRangeMetadata): void; /** Standard API for manual form metadata updates */ setInputMetadata(metadata: MaterialDateRangeMetadata): void; isReadonlyEffective(): boolean; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; openShortcuts(): void; closeShortcuts(): void; onOverlayDetach(): void; onSelectPreset(id: string): void; protected normalizeDateRangeValue(value: unknown): DateRangeValue | null; private coerceDateLike; private metadataAsField; private resolveAdapterLocale; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Specialized input component for HTML datetime-local inputs. * * Renders a `` containing an `` * element with basic validation and hint support. */ declare class DatetimeLocalInputComponent extends SimpleBaseInputComponent { /** Emits whenever validation state changes. */ readonly validationChange: _angular_core.OutputEmitterRef; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; private metadataRecord; isReadonlyEffective(): boolean; ngOnInit(): void; validateField(): Promise; protected getSpecificCssClasses(): string[]; /** Applies component metadata with strong typing. */ setInputMetadata(metadata: MaterialDatetimeLocalInputMetadata): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; /** * Datetime-local input is officially minute-granularity only. * Non-minute step values fallback to 60s. */ normalizedStep(): number | null; /** Custom error messages for datetime validations */ readonly errorMessage: _angular_core.Signal; private datetimeBoundsValidator; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Specialized input component for HTML email inputs. * * Renders a `` containing an `` element * with basic validation and hint support. Built on top of the * `SimpleBaseInputComponent` to leverage common functionality such as * reactive forms integration and error handling. */ declare class EmailInputComponent extends SimpleBaseInputComponent { /** Emits whenever validation state changes. */ readonly validationChange: _angular_core.OutputEmitterRef; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; ngOnInit(): void; validateField(): Promise; protected getSpecificCssClasses(): string[]; /** Applies component metadata with strong typing. */ setInputMetadata(metadata: MaterialEmailInputMetadata): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; isReadonlyEffective(): boolean; private metadataAsField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Minimal Material Textarea component for isolation/debug */ declare class MaterialTextareaComponent extends SimpleBaseInputComponent implements AfterViewInit { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; charCount: number; private currentMetadata; isReadonlyEffective(): boolean; protected getSpecificCssClasses(): string[]; setInputMetadata(metadata: MaterialTextareaMetadata): void; private viewReady; ngAfterViewInit(): void; autoResizeEnabled(): boolean; private toNumber; getRowsAttr(): number; getMinRowsAttr(): number; getMaxRowsAttr(): number; ngOnInit(): void; showCharacterCount(): boolean; showStats(): boolean; getWords(): number; getLines(): number; isNearLimit(): boolean; isAtOrOverLimit(): boolean; private getMode; isCodeLikeMode(): boolean; effectiveSpellcheck(): boolean | null; effectiveWrap(): string | null; private getCurrentLines; private getLineStart; private outdentAtSelection; private _log; enableTabIndent(): boolean; showClear(): boolean; onClearClick(): void; onFocusLog(): void; onBlurLog(): void; onTextareaKeydown(event: KeyboardEvent): void; private getTabSize; private getTabUnit; onInputLog(_event: Event): void; onPaste(_event: ClipboardEvent): void; onCut(_event: ClipboardEvent): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Specialized input component for HTML number inputs. * * Renders a `` containing an `` element * with basic validation and hint support. Built on top of the * `SimpleBaseInputComponent` to leverage common functionality such as * reactive forms integration and error handling. */ declare class NumberInputComponent extends SimpleBaseInputComponent { /** Emits whenever validation state changes. */ readonly validationChange: _angular_core.OutputEmitterRef; private readonly numberPatternValidator; private minValidator; private maxValidator; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; isReadonlyEffective(): boolean; ngOnInit(): void; validateField(): Promise; protected getSpecificCssClasses(): string[]; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; /** Applies component metadata with strong typing. */ setInputMetadata(metadata: MaterialNumericMetadata): void; private applyNumericValidators; showClear(): boolean; onClearClick(): void; private clearButtonConfig; private metadataRecord; private metadataAsField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Input component for currency values with basic formatting support. * * Displays a currency symbol as prefix or suffix and validates numeric input. */ declare class MaterialCurrencyComponent extends SimpleBaseInputComponent { /** Emits whenever validation state changes. */ readonly validationChange: _angular_core.OutputEmitterRef; private readonly currencyPipe; private readonly defaultLocale; private rawDigits; private isNegative; private suppressInput; private formatterKey; private formatter; private metadataRecord; private readonly inputRef; /** Currency code used for formatting. */ readonly currencyCode: _angular_core.Signal; /** Position of the currency symbol relative to the input. */ readonly currencyPosition: _angular_core.Signal<"before" | "after">; /** Decimal places used for formatting. */ readonly decimalPlaces: _angular_core.Signal; /** Locale used for formatting and parsing. */ readonly locale: _angular_core.Signal; /** Thousands separator based on locale or metadata. */ readonly thousandsSeparator: _angular_core.Signal; /** Decimal separator based on locale or metadata. */ readonly decimalSeparator: _angular_core.Signal; ngOnInit(): void; /** Handles raw input and keeps numeric value in the control. */ onInput(event: Event): void; onKeydown(event: KeyboardEvent): void; onPaste(event: ClipboardEvent): void; private parseLocaleNumber; /** Keeps formatting when focusing, locking cursor to the end. */ onFocus(): void; /** Formats the current value using CurrencyPipe on blur. */ onBlur(): void; /** Extracts the symbol for the configured currency. */ protected currencySymbol(): string; protected getSpecificCssClasses(): string[]; onClearClick(): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; private minValidator?; private maxValidator?; private syncCurrencyValidators; /** Applies component metadata with strong typing. */ set metadataInput(metadata: MaterialCurrencyMetadata); setInputMetadata(metadata: MaterialCurrencyMetadata): void; /** Formats the input value without touching or changing focus state. */ formatDisplayValue(): void; writeValue(value: unknown): void; protected applyNativeDisplayMask(): void; validateField(): Promise; readonlyMode: boolean; set disabledMode(value: boolean); get disabledMode(): boolean; private _disabledMode; visible: boolean; presentationMode: boolean; isReadonlyEffective(): boolean; private resolveLocaleSeparators; private allowNegative; private applyMaskedInput; private digitsToNumber; private syncDigitsFromValue; private setCaretToEnd; private detectNegative; private getCurrencyFormatter; private currencyLocaleFallback; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class MaterialCpfCnpjInputComponent extends SimpleBaseInputComponent { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; private dynamicValidator; cpfCnpjMetadata: _angular_core.Signal; getSpecificCssClasses(): string[]; setInputMetadata(metadata: MaterialCpfCnpjMetadata): void; protected onActiveControlChanged(previousControl: FormControl, _currentControl: FormControl): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; onComponentInit(): void; private setupDynamicValidator; private shouldApplySemanticDocumentValidator; isReadonlyEffective(): boolean; writeValue(value: unknown): void; handleInput(event: Event): void; private cleanValue; private formatValue; private applyCpfMask; private applyCnpjMask; private metadataAsField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Component for selecting a price range using two currency inputs. * * Reuses `MaterialCurrencyComponent` for both the minimum and maximum * values, keeping formatting and validation consistent. */ declare class MaterialPriceRangeComponent extends SimpleBaseInputComponent implements OnInit, AfterViewInit { /** Emits whenever validation state changes. */ readonly validationChange: _angular_core.OutputEmitterRef; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; readonly rangeGroup: FormGroup<{ minPrice: FormControl; maxPrice: FormControl; }>; private currencyInputs?; private syncingFromGroup; private syncingFromControl; private formatQueued; readonly layoutMode: _angular_core.Signal<"row" | "column">; readonly layoutGap: _angular_core.Signal; readonly clearPlacement: _angular_core.Signal<"group" | "subinputs">; readonly startCurrencyMetadata: _angular_core.Signal; readonly endCurrencyMetadata: _angular_core.Signal; /** Custom error messages for range-specific validations */ readonly errorMessage: _angular_core.Signal; readonly containerTooltip: _angular_core.Signal; showClear(): boolean; ngOnInit(): void; ngAfterViewInit(): void; writeValue(value: unknown): void; setValue(value: unknown, options?: { emitEvent?: boolean; updateUI?: boolean; }): void; validateField(): Promise; protected getSpecificCssClasses(): string[]; isReadonlyEffective(): boolean; setInputMetadata(metadata: MaterialPriceRangeMetadata): void; /** Applies component metadata with strong typing. */ setPriceRangeMetadata(metadata: MaterialPriceRangeMetadata): void; private queueFormatSubInputs; private clearButtonConfig; private metadataAsField; private metadataRecord; private metadataDefaultValue; private normalizePriceRangeValue; private coerceNumber; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Specialized input component for HTML month inputs. * * Renders a `` containing an `` element * with optional min/max constraints, basic validation and hint support. * Built on top of the `SimpleBaseInputComponent` to reuse core features * like reactive forms integration and error handling. */ declare class MonthInputComponent extends SimpleBaseInputComponent { /** Emits whenever validation state changes. */ readonly validationChange: _angular_core.OutputEmitterRef; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; ngOnInit(): void; validateField(): Promise; protected getSpecificCssClasses(): string[]; /** Applies component metadata with strong typing. */ setInputMetadata(metadata: MaterialMonthInputMetadata): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; isReadonlyEffective(): boolean; private metadataAsField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Specialized input component for password fields. * * Renders a `` wrapping an `` element * and leverages `SimpleBaseInputComponent` for common functionality such as * validation, hint display and reactive forms integration. */ declare class PasswordInputComponent extends SimpleBaseInputComponent { /** Emits whenever validation state changes. */ readonly validationChange: _angular_core.OutputEmitterRef; private readonly reveal; readonly revealStyle: _angular_core.Signal; readonly revealLabel: _angular_core.Signal; readonly revealIcon: _angular_core.Signal; readonly revealAriaLabel: _angular_core.Signal; readonly revealTooltip: _angular_core.Signal; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; validateField(): Promise; protected getSpecificCssClasses(): string[]; revealToggleEnabled(): boolean; canToggleReveal(): boolean; resolvedInputType(): string; toggleReveal(): void; onRevealMouseDown(event: MouseEvent): void; onRevealToggleClick(event: MouseEvent): void; /** Applies typed metadata to the component. */ setInputMetadata(metadata: MaterialPasswordMetadata): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; isReadonlyEffective(): boolean; private metadataAsField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Specialized input component for HTML search inputs. * * Renders a `` containing an `` element * with Material styling and basic validation support. Built on top of the * `SimpleBaseInputComponent` to leverage common functionality such as reactive * forms integration and error handling. */ declare class SearchInputComponent extends SimpleBaseInputComponent { /** Emits whenever validation state changes. */ readonly validationChange: _angular_core.OutputEmitterRef; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; ngOnInit(): void; validateField(): Promise; protected getSpecificCssClasses(): string[]; /** Applies component metadata with strong typing. */ setInputMetadata(metadata: MaterialSearchInputMetadata): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; isReadonlyEffective(): boolean; private metadataAsField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class MaterialSelectComponent extends SimpleBaseSelectComponent { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; private searchInput?; protected defaultPanelClass(): string; setSelectMetadata(metadata: SimpleSelectMetadata): void; ngOnInit(): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; onSearchInputEvent(event: Event): void; onOpened(opened: boolean): void; private optionsFromLegacy; private normalizeOption; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class InlineSelectComponent extends SimpleBaseSelectComponent { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; searchInput?: ElementRef; inlineMinWidthPx: number; inlineMaxWidthPx: number; private fieldLabelText; private currentMetadata; private metadataRecord; private asRecord; private mapRawOption; setSelectMetadata(metadata: SimpleSelectMetadata): void; protected setMetadata(metadata: MaterialSelectMetadata): void; onComponentInit(): void; onViewportResize(): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; protected getSpecificCssClasses(): string[]; hasSelection(): boolean; displayText(): string; showQuickClear(): boolean; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onOpenedChange(opened: boolean): void; onSearchInput(term: string): void; onSearchInputEvent(event: Event): void; private hasValue; private resolveDisplayText; private equalsOptionValue; placeholderText(): string; searchPlaceholderText(): string; searchInputAriaLabel(): string; private resolveFieldLabelFromMetadata; private resolveHumanizedFieldName; ariaLabel(): string; private recalculateInlineSizeBounds; private resolveWidthBounds; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type LoadStrategy$1 = 'open' | 'init' | 'none'; type DependencyLoadMode$1 = 'respectLoadOn' | 'immediate' | 'manual'; interface SearchableSelectMetadata { selectOptions?: Array<{ label?: string; text?: string; value?: unknown; disabled?: boolean; }>; options?: Array<{ label?: string; text?: string; value?: unknown; disabled?: boolean; }>; multiple?: boolean; selectAll?: boolean; maxSelections?: number; resourcePath?: string; optionSource?: OptionSourceMetadata; filterCriteria?: Record; optionLabelKey?: string; optionValueKey?: string; loadOn?: LoadStrategy$1; dependencyLoadOnChange?: DependencyLoadMode$1; } declare class MaterialSearchableSelectComponent extends SimpleBaseSelectComponent implements DoCheck { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; private searchInput?; private readonly store; readonly endReached: _angular_core.WritableSignal; private initialLoadStrategy; private disabledModeAppliedToControl; ngDoCheck(): void; protected defaultPanelClass(): string; setSelectMetadata(metadata: SearchableSelectMetadata): void; ngOnInit(): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; searchableSelectAriaDisabled(): 'true' | null; searchableSelectAriaReadonly(): 'true' | null; isOptionDisabled(option: SelectOption): boolean; selectOption(option: SelectOption): void; toggleSelectAll(): void; onClearClick(): void; searchInputAriaLabel(): string; onSearchInputEvent(event: Event): void; onOpened(opened: boolean): void; private getSelectedIds; private preloadSelected; private refreshOptions; protected loadOptions(page?: number, searchTerm?: string, criteria?: Record): void; loadNextPage(): void; onSearch(term: string): void; protected registerMatSelect(select: MatSelect): void; reload(reset: boolean): void; protected onDependenciesChanged(): void; private syncDisabledModeControlState; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class InlineSearchableSelectComponent extends MaterialSearchableSelectComponent { inlineMinWidthPx: number; inlineMaxWidthPx: number; private fieldLabelText; setSelectMetadata(metadata: MaterialSelectMetadata): void; protected setMetadata(metadata: MaterialSelectMetadata): void; onComponentInit(): void; onViewportResize(): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; protected getSpecificCssClasses(): string[]; hasSelection(): boolean; selectedCount(): number; additionalSelectedCount(): number; displayText(): string; showQuickClear(): boolean; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onOpenedChange(opened: boolean): void; onSearchInput(term: string): void; onSearchInputEvent(event: Event): void; showLoadMore(): boolean; showEndReachedMessage(): boolean; onLoadMoreClick(event: MouseEvent): void; placeholderText(): string; searchPlaceholderText(): string; ariaLabel(): string; private resolveOptionLabel; private equalsOptionValue; private resolveFieldLabelFromMetadata; private recalculateInlineSizeBounds; private resolveWidthBounds; private currentInlineMetadata; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type LoadStrategy = 'open' | 'init' | 'none'; type DependencyLoadMode = 'respectLoadOn' | 'immediate' | 'manual'; type OptionId = string | number; type AsyncOption = OptionDTO; type AsyncRenderedOption = { label: string; value: unknown; disabled?: boolean; }; interface AsyncSelectMetadata { selectOptions?: Array<{ label?: string; text?: string; value?: unknown; disabled?: boolean; }>; options?: Array<{ label?: string; text?: string; value?: unknown; disabled?: boolean; }>; useCursor?: boolean; multiple?: boolean; searchable?: boolean; selectAll?: boolean; maxSelections?: number | null; emptyOptionText?: string | null; loadOn?: LoadStrategy; resourcePath?: string; optionSource?: OptionSourceMetadata; filterCriteria?: Record; optionLabelKey?: string; optionValueKey?: string; dependencyLoadOnChange?: DependencyLoadMode; } declare class MaterialAsyncSelectComponent extends SimpleBaseSelectComponent { private lastConfiguredPath?; private initialLoadStrategy; private hasPerformedInitialLoad; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; private searchInput?; readonly termControl: FormControl; readonly activeLookupFilters: _angular_core.WritableSignal; readonly selectedLookupSortKey: _angular_core.WritableSignal; protected readonly remoteTotalElements: _angular_core.WritableSignal; private readonly store; readonly endReached: _angular_core.WritableSignal; private cursorAfter; private cursorPageIndex; private dataVersion?; private useCursor; protected defaultPanelClass(): string; private isCategoricalBucketOptionSource; setSelectMetadata(metadata: AsyncSelectMetadata): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; searchInputAriaLabel(): string; ngOnInit(): void; onOpened(opened: boolean): void; private getSelectedIds; private preloadSelected; private refreshOptions; protected currentLookupFiltering(): LookupFilteringMetadata | null; lookupSortOptions(): LookupSortOptionMetadata[]; lookupFilterDefinitions(): LookupFilterDefinitionMetadata[]; protected initializeLookupFilteringState(): void; protected buildDefaultLookupFilters(filtering: LookupFilteringMetadata): LookupFilterRequest[]; protected normalizeLookupFilterValue(operator: LookupFilterRequest['operator'], values: unknown[]): unknown; hasLookupFiltering(): boolean; hasLookupSortOptions(): boolean; hasMultipleLookupSortOptions(): boolean; hasActiveLookupFilters(): boolean; lookupFilterForField(field: string): LookupFilterRequest | undefined; setLookupSortKey(sortKey: string | null): void; clearLookupFilters(field?: string): void; replaceLookupFilters(filters: LookupFilterRequest[]): void; protected refreshLookupQueryState(): void; private runQuery; loadMore(): void; retry(): void; handleKey(event: KeyboardEvent): void; protected registerMatSelect(select: MatSelect): void; reload(reset: boolean): void; protected setupRemoteSelectionHydration(): void; protected onDependenciesChanged(): void; private ensureCurrentValueLoadedByIds; private missingOptionLabel; private loadOptionsErrorLabel; protected mapRemoteOption(option: AsyncOption): AsyncRenderedOption; protected resolveRemoteOptionValue(option: AsyncOption): unknown; protected resolveRemoteOptionDisabled(option: AsyncOption): boolean; protected areOptionValuesEqual(left: unknown, right: unknown): boolean; private normalizeRemoteOptionValue; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface InlineClearButtonConfig { enabled?: boolean; ariaLabel?: string; } interface InlineAutoSizeConfig { minWidth?: number; maxWidth?: number; minWidthMobile?: number; maxWidthMobile?: number; } interface InlineMaterialDesignConfig { density?: string; } type InlineAsyncSelectMetadata = MaterialSelectMetadata & { clearButton?: InlineClearButtonConfig | false | null; searchPlaceholder?: string; ariaLabel?: string; inlineAutoSize?: InlineAutoSizeConfig | null; materialDesign?: InlineMaterialDesignConfig; density?: string; }; declare class InlineAsyncSelectComponent extends MaterialAsyncSelectComponent { inlineMinWidthPx: number; inlineMaxWidthPx: number; private fieldLabelText; private staticOptions; private currentMetadata; setSelectMetadata(metadata: InlineAsyncSelectMetadata): void; protected setMetadata(metadata: MaterialSelectMetadata): void; onComponentInit(): void; onViewportResize(): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; protected getSpecificCssClasses(): string[]; hasSelection(): boolean; selectedCount(): number; additionalSelectedCount(): number; displayText(): string; showQuickClear(): boolean; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onOpenedChange(opened: boolean): void; onSearchInputEvent(event: Event): void; onSearchInput(term: string): void; showLoadMore(): boolean; showEndReachedMessage(): boolean; onLoadMoreClick(event: MouseEvent): void; placeholderText(): string; searchPlaceholderText(): string; ariaLabel(): string; private resolveHumanizedFieldName; private resolveOptionLabel; private equalsOptionValue; private asRecord; private resolveFieldLabelFromMetadata; private currentSearchTerm; private applyStaticOptionsFilter; private humanizeFieldName; private recalculateInlineSizeBounds; private resolveWidthBounds; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type LookupOption = { label: string; value: unknown; disabled?: boolean; }; interface EntityLookupViewModel { id: string; identity: string; code: string; label: string; description: string; status: string; statusTone: LookupStatusTone; selectable: boolean; selectionState: EntityLookupResultState; disabledReason: string; detailHref: string; detailRoute: string; badges: string[]; richFields: EntityLookupRichFieldViewModel[]; } interface EntityLookupRichFieldViewModel { key: string; label: string; value: string; icon: string; presentation: string; tone: LookupStatusTone | 'info'; } interface LookupClearButtonConfig { enabled?: boolean; ariaLabel?: string; } interface LookupAutoSizeConfig { minWidth?: number; maxWidth?: number; minWidthMobile?: number; maxWidthMobile?: number; } interface LookupMaterialDesignConfig { density?: string; } interface LookupFilterChipViewModel { field: string; label: string; valueText: string; } interface SelectedLookupTokenViewModel { identity: string; text: string; title: string; } interface EntityLookupDialogData { metadata: MaterialEntityLookupMetadata; value: unknown; title?: string; } type EntityLookupMetadata = MaterialEntityLookupMetadata & { optionLabelKey?: string; optionValueKey?: string; clearButton?: LookupClearButtonConfig | false | null; inlineAutoSize?: LookupAutoSizeConfig | null; materialDesign?: LookupMaterialDesignConfig; density?: string; }; declare class InlineEntityLookupComponent extends MaterialAsyncSelectComponent { private readonly dialog; private readonly globalActions; private readonly resourceDiscovery; private readonly surfaceOpenAdapter; inlineMinWidthPx: number; inlineMaxWidthPx: number; private fieldLabelText; private staticOptions; set initialMetadata(metadata: MaterialEntityLookupMetadata | null | undefined); private currentMetadata; setSelectMetadata(metadata: EntityLookupMetadata): void; protected setMetadata(metadata: MaterialSelectMetadata): void; onComponentInit(): void; onViewportResize(): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; protected getSpecificCssClasses(): string[]; selectPanelClasses(): string[]; hasSelection(): boolean; selectedCount(): number; displayText(): string; richLayoutEnabled(): boolean; selectedCardLayout(): boolean; selectedCompactLayout(): boolean; fullFieldLayout(): boolean; showFieldDependencyHint(): boolean; showFieldSearchHint(): boolean; emptyTriggerIconName(): string; emptyTriggerSupportingText(): string; emptyTriggerContextText(): string; selectedLookupView(): EntityLookupViewModel | null; selectedLookupViews(): EntityLookupViewModel[]; visibleSelectedLookupTokens(): SelectedLookupTokenViewModel[]; hiddenSelectedLookupTokenCount(): number; trackByOption(index: number, option: LookupOption): string; trackLookupRichField(index: number, field: EntityLookupRichFieldViewModel): string; trackLookupBadge(index: number, badge: string): string; trackSelectedLookupToken(index: number, token: SelectedLookupTokenViewModel): string; trackLookupSortOption(index: number, option: { key?: string; label?: string; }): string; trackLookupFilterChip(index: number, chip: LookupFilterChipViewModel): string; isSelected(option: LookupOption): boolean; showSelectedTokenRemove(): boolean; selectedTokenRemoveAriaLabel(text: string): string; onRemoveSelectedToken(event: MouseEvent, identity: string): void; optionLookupView(option: LookupOption): EntityLookupViewModel; showCode(): boolean; showDescription(): boolean; showStatus(): boolean; showAvatar(): boolean; showBadges(): boolean; showDisabledReason(): boolean; showResultCount(): boolean; resultCountText(): string; hasVisibleBadges(item: EntityLookupViewModel): boolean; visibleBadges(item: EntityLookupViewModel): string[]; statusBadgeClass(item: EntityLookupViewModel): string; lookupInitials(item: EntityLookupViewModel): string; showDetailAction(item: EntityLookupViewModel): boolean; private hasGovernedDetailSurface; showChangeAction(): boolean; showCopyCodeAction(item: EntityLookupViewModel): boolean; showCopyIdAction(item: EntityLookupViewModel): boolean; showCreateAction(): boolean; detailActionText(): string; changeActionText(): string; copyCodeActionText(): string; copyIdActionText(): string; createActionText(): string; clearActionText(): string; selectionLimitReachedText(maxSelections: number | null | undefined): string; onDetailAction(event: MouseEvent, item: EntityLookupViewModel): void; private openDetailSurface; private tryOpenGovernedDetailSurface; private itemSurfacesHref; private selectDetailSurface; private lookupDetailPresentation; private detailSurfaceTitle; onChangeAction(event: MouseEvent): void; onCopyCodeAction(event: MouseEvent, item: EntityLookupViewModel): void; onCopyIdAction(event: MouseEvent, item: EntityLookupViewModel): void; onCreateAction(event: MouseEvent): void; optionPrimaryText(option: LookupOption): string; optionSecondaryText(option: LookupOption): string; protected resolveRemoteOptionValue(option: OptionDTO): EntityLookupResult; resetOptionText(): string; showQuickClear(): boolean; onResetOptionClick(event: MouseEvent): void; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onOpenedChange(opened: boolean): void; onSearchInputEvent(event: Event): void; onSearchInputKeydown(event: KeyboardEvent): void; onSearchInput(term: string): void; showLoadMore(): boolean; showEndReachedMessage(): boolean; showErrorStateOption(): boolean; showDependencyStateOption(): boolean; showEmptyStateOption(): boolean; onRetryClick(event: MouseEvent): void; errorStateLabel(): string; dependencyStateLabel(): string; emptyStateLabel(): string; onLoadMoreClick(event: MouseEvent): void; placeholderText(): string; searchPlaceholderText(): string; showLookupToolbar(): boolean; showLookupSortControl(): boolean; lookupSortSelectValue(): string; onLookupSortSelectionChange(event: Event): void; activeLookupFilterChips(): LookupFilterChipViewModel[]; clearAllLookupFilters(event: MouseEvent): void; clearLookupFilterChip(event: MouseEvent, field: string): void; sortLabelText(): string; sortDefaultOptionText(): string; clearAllFiltersText(): string; currentDialogMetadata(): LookupDialogMetadata | null; dialogEnabled(): boolean; showDialogOption(): boolean; dialogOpenActionText(): string; dialogOpenSupportingText(): string; dialogContextSupportingText(hasActiveFilters: boolean): string; dialogApplyActionText(): string; dialogFilterPanelToggleText(open: boolean): string; dialogFilterPlaceholderText(operator: LookupFilterOperator, type: LookupFilterFieldType): string; dialogFilterOperatorHintText(operator: LookupFilterOperator): string; dialogApplyFiltersActionText(): string; dialogClearFiltersActionText(): string; dialogFilterSelectEmptyText(label: string): string; dialogFilterStartAriaLabelText(label: string): string; dialogFilterEndAriaLabelText(label: string): string; dialogPreviewSelectionStateLabelText(): string; dialogPreviewSelectionStateText(state: EntityLookupResultState): string; dialogSearchAriaLabelText(): string; dialogResultsAriaLabelText(): string; dialogFiltersAriaLabelText(): string; dialogPreviewAriaLabelText(): string; dialogResultOptionAriaLabel(item: EntityLookupViewModel): string; dialogCancelActionText(): string; dialogTitleText(): string; onOpenDialogClick(event: MouseEvent): void; panelSearchIconName(fallback?: string): string; panelSearchIconColor(): string | undefined; panelResetIconName(fallback?: string): string; panelResetIconColor(): string | undefined; ariaLabel(): string; interactionDisabled(): boolean; readonlySummaryText(): string; private lookupDialogMetadata; private resolveDialogWidth; private humanizeLookupField; private interpolateLookupText; private lookupDependencyLabels; private missingDependencyLabels; private hasDependencyValue; private humanizeLookupDependencyField; private lookupFilterValueText; inlineTooltipText(): string; private resolveLookupText; private lookupViewFromValue; private resolveLookupData; private buildLookupPrimaryText; private fallbackLookupText; private lookupIdKey; private lookupIdKeys; private lookupLabelKey; private lookupCodeKeys; private lookupLabelKeys; private lookupSubtitleKey; private lookupSubtitleKeys; private lookupStatusKeys; private resolveLookupSelectable; private lookupBadges; richFieldToneClass(field: EntityLookupRichFieldViewModel): string; private lookupRichFields; private lookupRichFieldFromDescriptor; private asRichFieldArray; private formatLookupRichFieldValue; private normalizeLookupTone; private classifyLookupSelectionState; private resolveStatusTone; private lookupSeparator; private normalizeLookupText; private normalizeLookupOptionalText; private parseLookupSelectableValue; private firstDefined; private lookupSubtitleText; private uniqueLookupKeys; private equalsOptionValue; private resolveLookupIdentity; displayPreset(): string; private displayDensity; private lookupDisplayConfig; private lookupDisplayBoolean; private readLookupPath; private isPrimitiveLookupValue; private asRecord; private lookupOptionSource; private resolveDetailHref; private resolveDetailRoute; private applyLookupTemplate; private resolveFieldLabelFromMetadata; private currentSearchTerm; private hasUnmetDependencies; private resolveDependencyValuePathFor; private hasMeaningfulDependencyValue; private applyStaticOptionsFilter; private humanizeFieldName; private maxVisibleSelectedTokens; private removeSelectionByIdentity; private lookupOptionTrackIdentity; private recalculateInlineSizeBounds; private resolveWidthBounds; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class EntityLookupDialogComponent implements AfterViewInit { readonly data: EntityLookupDialogData; private readonly destroyRef; private readonly hostRef; private readonly dialogRef; readonly lookup: _angular_core.Signal; readonly selectionControl: FormControl; readonly dialogSearchControl: FormControl; readonly filterPanelOpen: FormControl; private readonly dialogFilterControls; private readonly dialogFilterSecondaryControls; private previewIdentity; private activeResultIndex; ngAfterViewInit(): void; apply(): void; cancel(): void; applyText(): string; cancelText(): string; searchPlaceholder(): string; dialogSearchAriaLabel(): string; dialogResultsAriaLabel(): string; dialogFiltersAriaLabel(): string; dialogPreviewAriaLabel(): string; showSortControl(): boolean; sortOptions(): _praxisui_core.LookupSortOptionMetadata[]; trackLookupSortOption(index: number, option: { key?: string; label?: string; }): string; trackDialogFilterDefinition(index: number, definition: LookupFilterDefinitionMetadata): string; trackDialogEnumOption(index: number, option: { value?: string; label?: string; }): string; trackDialogColumn(index: number, column: LookupResultColumnMetadata): string; trackResultOption(index: number, option: LookupOption): string; sortValue(): string; onSortChange(event: Event): void; sortLabel(): string; sortDefaultLabel(): string; dialogIntroText(): string; dialogContextText(): string; hasStructuredDialogFilters(): boolean; showFilterPanel(): boolean; toggleFilterPanel(): void; dialogFilterDefinitions(): LookupFilterDefinitionMetadata[]; filterPanelToggleText(): string; filterControl(field: string): FormControl; filterSecondaryControl(field: string): FormControl; dialogFilterLabel(definition: LookupFilterDefinitionMetadata): string; dialogFilterPlaceholder(definition: LookupFilterDefinitionMetadata): string; dialogFilterRangeEndPlaceholder(definition: LookupFilterDefinitionMetadata): string; dialogFilterStartAriaLabel(definition: LookupFilterDefinitionMetadata): string; dialogFilterEndAriaLabel(definition: LookupFilterDefinitionMetadata): string; dialogFilterInputType(definition: LookupFilterDefinitionMetadata): 'text' | 'date' | 'number'; useDialogEnumSelect(definition: LookupFilterDefinitionMetadata): boolean; useDialogMultiSelect(definition: LookupFilterDefinitionMetadata): boolean; useDialogRangeInputs(definition: LookupFilterDefinitionMetadata): boolean; dialogFilterSelectEmptyText(definition: LookupFilterDefinitionMetadata): string; dialogEnumOptions(definition: LookupFilterDefinitionMetadata): Array<{ value: string; label: string; }>; dialogOperatorHint(definition: LookupFilterDefinitionMetadata): string; applyDialogFiltersText(): string; clearDialogFiltersText(): string; applyDialogFilters(): void; resetDialogFilters(): void; dialogColumns(): LookupResultColumnMetadata[]; showResultTable(): boolean; showCardResultLayout(): boolean; showCompactResultLayout(): boolean; dialogColumnLabel(column: LookupResultColumnMetadata): string; columnFlex(column: LookupResultColumnMetadata): string; dialogCellText(option: LookupOption, column: LookupResultColumnMetadata): string; resultOptions(): _praxisui_dynamic_fields.SelectOption[]; hasResultRows(): boolean; hasSelection(): boolean; canApply(): boolean; selectedSummaryText(): string; selectedDisabledReason(): string; selectResult(option: LookupOption): void; isSelected(option: LookupOption): boolean; resultOptionDisabled(option: LookupOption): boolean; loadMore(): void; resultState(option: LookupOption): EntityLookupResultState; resultRowTitle(option: LookupOption): string | null; resultRowId(index: number): string; resultRowTabIndex(index: number): number; resultRowAriaLabel(option: LookupOption): string; setActiveResult(index: number, option: LookupOption): void; onResultRowKeydown(event: KeyboardEvent, index: number, option: LookupOption): void; showPreviewDetailAction(item: EntityLookupViewModel): boolean; showPreviewCopyCodeAction(item: EntityLookupViewModel): boolean; showPreviewCopyIdAction(item: EntityLookupViewModel): boolean; showPreviewCreateAction(): boolean; showPreviewClearAction(): boolean; onPreviewDetailAction(event: MouseEvent, item: EntityLookupViewModel): void; onPreviewCopyCodeAction(event: MouseEvent, item: EntityLookupViewModel): void; onPreviewCopyIdAction(event: MouseEvent, item: EntityLookupViewModel): void; onPreviewCreateAction(event: MouseEvent): void; onPreviewClearAction(event: MouseEvent): void; showPreviewPanel(): boolean; previewItem(): EntityLookupViewModel | null; setPreviewFromOption(option: LookupOption): void; previewSelectionStateLabel(): string; previewSelectionStateText(item: EntityLookupViewModel): string; private initializeDialogFilters; private dialogFilterEmptyValue; private serializeDialogFilterSingleValue; private serializeDialogFilterScalarValue; private buildDialogFilterRequest; private normalizeDialogFilterControlValue; private normalizeDialogFilterScalarValue; private resolveDialogFilterFieldValue; private pushDialogEnumOption; private syncPreviewIdentity; private focusResultRow; private normalizeOptionValue; private normalizeInitialDialogValue; private initialSelectionSnapshot; private selectionSnapshot; private selectedValueCount; private toggleMultipleSelection; private dialogCustomCellText; private humanizeColumnField; private optionIdentity; private dialogHasConfiguredColumns; private dialogResultLayout; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface InlineMultiSelectTokenViewModel { value: unknown; text: string; title: string; trackKey: string; } declare class InlineMultiSelectComponent extends SimpleBaseSelectComponent { unselectedFilteredOptions(): SelectOption[]; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; searchInput?: ElementRef; inlineMinWidthPx: number; inlineMaxWidthPx: number; private fieldLabelText; private panelOpen; private panelCommittedValue; private committingPanelValue; selectAllLabel(): string; setSelectMetadata(metadata: SimpleSelectMetadata): void; protected setMetadata(metadata: MaterialSelectMetadata): void; protected registerMatSelect(select: MatSelect): void; onComponentInit(): void; onViewportResize(): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; protected getSpecificCssClasses(): string[]; protected defaultPanelClass(): string | string[] | undefined; hasSelection(): boolean; selectedCount(): number; displayText(): string; selectedTokens(): InlineMultiSelectTokenViewModel[]; visibleSelectedTokens(): InlineMultiSelectTokenViewModel[]; hiddenSelectedTokenCount(): number; hiddenSelectedTokenTitle(): string; selectedTokensAriaLabel(): string; selectedTokenRemoveAriaLabel(text: string): string; selectedPanelTitle(): string; selectedPanelRemoveHint(): string; showQuickClear(): boolean; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onRemoveSelectedToken(event: MouseEvent, value: unknown): void; onOpenedChange(opened: boolean): void; showPanelActions(): boolean; showPanelClearAction(): boolean; panelActionsAriaLabel(): string; clearPanelActionLabel(): string; cancelPanelActionLabel(): string; applyPanelActionLabel(): string; clearPanelActionAriaLabel(): string; cancelPanelActionAriaLabel(): string; applyPanelActionAriaLabel(): string; clearPanelActionAppearance(): string; cancelPanelActionAppearance(): string; applyPanelActionAppearance(): string; clearPanelActionColorRole(): string; cancelPanelActionColorRole(): string; applyPanelActionColorRole(): string; onPanelClear(event: MouseEvent): void; onPanelCancel(event: MouseEvent): void; onPanelApply(event: MouseEvent): void; onSearchInput(term: string): void; onSearchInputEvent(event: Event): void; isOptionDisabled(option: SelectOption): boolean; placeholderText(): string; searchPlaceholderText(): string; searchInputAriaLabel(): string; ariaLabel(): string; private currentValues; private restorePanelCommittedValue; private usesExplicitApplyMode; private inlineOverlayAction; private resolveOptionLabel; private equalsOptionValue; private maxVisibleSelectedTokens; private stringifyTokenValue; private resolveFieldLabelFromMetadata; private humanizeFieldName; private recalculateInlineSizeBounds; private resolveWidthBounds; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class InlineInputComponent extends SimpleBaseInputComponent { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; inputEl?: ElementRef; measureEl?: ElementRef; private fieldLabelText; inlineWidthPx: number; inlineMaxWidthPx: number; private resizeRafId; private maskSyncRafId; private currentMetadata; private metadataRecord; private asRecord; protected setMetadata(metadata: MaterialInputMetadata): void; onComponentInit(): void; ngAfterViewInit(): void; onComponentDestroy(): void; onViewportResize(): void; protected getSpecificCssClasses(): string[]; inlineNativeInputType(): string; inputMode(): string | null; inlineFieldType(): string; isReadonlyEffective(): boolean; showQuickClear(): boolean; hasInlineValue(): boolean; showInlinePlaceholder(): boolean; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onInlineInput(event?: Event): void; widthProbeText(): string; placeholderText(): string; ariaLabel(): string; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; private scheduleInlineResize; private scheduleMaskedDisplaySync; private recalculateInlineWidth; private resolveWidthBounds; private resolveChromeWidth; private parsePx; private syncMaskedDisplayValue; private formatInlineDisplayValue; private resolveDisplayMask; private isInlinePhone; private resolveFieldLabelFromMetadata; private humanizeFieldName; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type AutocompleteOption = OptionDTO; declare class MaterialAutocompleteComponent extends SimpleBaseSelectComponent { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; private readonly store; readonly endReached: _angular_core.WritableSignal; displayWith: (opt: AutocompleteOption | null) => string; private initialLoadStrategy; setSelectMetadata(metadata: SimpleSelectMetadata): void; ngOnInit(): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; autocompleteInputAriaLabel(): string; noResultsLabel(): string; onSearchInputEvent(event: Event): void; isReadonlyEffective(): boolean; private getSelectedId; private preloadSelected; private refreshOptions; protected loadOptions(page?: number, searchTerm?: string, criteria?: Record): void; onOpened(): void; onScroll(index: number): void; onSearch(term: string): void; trackByOption(index: number, option: SelectOption): AutocompleteOption; reload(reset: boolean): void; protected onDependenciesChanged(): void; private toAutocompleteOption; private toOptionId; private toRecord; private missingOptionLabel; private loadOptionsErrorLabel; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class InlineAutocompleteComponent extends MaterialAutocompleteComponent { inputEl?: ElementRef; measureEl?: ElementRef; autocompleteTrigger?: MatAutocompleteTrigger; inlineWidthPx: number; inlineMaxWidthPx: number; private resizeRafId; private fieldLabelText; private staticOptions; displayWith: (value: unknown) => string; private currentMetadata; setSelectMetadata(metadata: SimpleSelectMetadata): void; protected setMetadata(metadata: MaterialAutocompleteMetadata): void; onComponentInit(): void; ngAfterViewInit(): void; onComponentDestroy(): void; onViewportResize(): void; protected getSpecificCssClasses(): string[]; isReadonlyEffective(): boolean; showQuickClear(): boolean; hasInlineValue(): boolean; showInlinePlaceholder(): boolean; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onSearchInputEvent(event: Event): void; onInputFocus(): void; onSearchInput(term: string): void; onAutocompleteClosed(): void; autocompleteViewportHeightPx(): number; widthProbeText(): string; placeholderText(): string; ariaLabel(): string; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; private currentSearchTerm; private applyStaticOptionsFilter; private resolveValueLabel; private equalsOptionValue; private asRecord; private scheduleInlineResize; private recalculateInlineWidth; private resolveWidthBounds; private resolveChromeWidth; private parsePx; private resolveFieldLabelFromMetadata; trackByOption(index: number, option: { label: string; value: OptionDTO; }): OptionDTO; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class InlineNumberComponent extends SimpleBaseInputComponent { private static readonly PERCENT_MIN_DEFAULT; private static readonly PERCENT_MAX_DEFAULT; private static readonly PERCENT_STEP_DEFAULT; private static readonly PERCENT_PLACEHOLDER_DEFAULT; inputEl?: ElementRef; measureEl?: ElementRef; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; inlineWidthPx: number; inlineMaxWidthPx: number; private resizeRafId; private fieldLabelText; private minValidator?; private maxValidator?; private readonly numberPatternValidator; private currentMetadata; private metadataRecord; private asRecord; setInputMetadata(metadata: MaterialNumericMetadata): void; protected setMetadata(metadata: MaterialNumericMetadata): void; onComponentInit(): void; ngAfterViewInit(): void; onComponentDestroy(): void; onViewportResize(): void; protected getSpecificCssClasses(): string[]; leadingIconName(): string; showPercentGraphicMode(): boolean; showPercentSuffix(): boolean; percentDisplayText(): string; percentRangeText(): string; percentInputCh(): string | null; percentAngle(): number; percentFillWidth(): number; effectiveMinValue(): number | null; effectiveMaxValue(): number | null; effectiveStepValue(): number | null; isReadonlyEffective(): boolean; showQuickClear(): boolean; showInlinePlaceholder(): boolean; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onInlineInput(): void; widthProbeText(): string; placeholderText(): string; ariaLabel(): string; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; private hasValue; private syncNumericValidators; private scheduleInlineResize; private recalculateInlineWidth; private resolveWidthBounds; private resolveChromeWidth; private parsePx; private resolveFiniteNumber; private resolvePositiveFiniteNumber; private resolveEffectiveMin; private resolveEffectiveMax; private resolveEffectiveStep; private defaultFieldLabel; private currentNumericValue; private percentRatio; private formatCompactNumber; private decimalPlacesFromStep; private longestMeasureCandidate; private isPercentFormat; private resolveFieldLabelFromMetadata; private humanizeFieldName; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class InlineCurrencyComponent extends SimpleBaseInputComponent { inputEl?: ElementRef; measureEl?: ElementRef; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; inlineWidthPx: number; inlineMaxWidthPx: number; private resizeRafId; private displayFormatRafId; private fieldLabelText; private minValidator?; private maxValidator?; private rawDigits; private isNegative; private suppressInput; private decimalFormatterKey; private decimalFormatter; private currencyFormatterKey; private currencyFormatter; private currentMetadata; private metadataRecord; private asRecord; readonly currencyCode: _angular_core.Signal; readonly currencyPosition: _angular_core.Signal<"before" | "after">; readonly decimalPlaces: _angular_core.Signal; readonly locale: _angular_core.Signal; setInputMetadata(metadata: MaterialCurrencyMetadata): void; protected setMetadata(metadata: MaterialCurrencyMetadata): void; onComponentInit(): void; ngAfterViewInit(): void; onComponentDestroy(): void; writeValue(value: unknown): void; onViewportResize(): void; protected getSpecificCssClasses(): string[]; protected resolveInlineContextTooltipValue(): string; isReadonlyEffective(): boolean; showQuickClear(): boolean; hasInlineValue(): boolean; showInlinePlaceholder(): boolean; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onInlineInput(): void; onFocus(): void; onBlur(): void; onInput(event: Event): void; onKeydown(event: KeyboardEvent): void; onPaste(event: ClipboardEvent): void; widthProbeText(): string; placeholderText(): string; ariaLabel(): string; currencySymbol(): string; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; private hasValue; private scheduleInlineResize; private recalculateInlineWidth; private resolveWidthBounds; private resolveChromeWidth; private parsePx; private syncCurrencyValidators; private allowNegative; private applyMaskedInput; private digitsToNumber; private normalizeDecimalPlaces; private syncDigitsFromValue; private formatDisplayValue; private scheduleDisplayFormat; private formatDecimalValue; private setCaretToEnd; private detectNegative; private parseLocaleNumber; private resolveLocaleSeparators; private getDecimalFormatter; private getCurrencyFormatter; private currencyLocaleFallback; private resolveFieldLabelFromMetadata; private humanizeFieldName; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface InlineCurrencyDistributionBar { id: string; value: number; ratio: number; color?: string; label?: string; } interface InlineCurrencySemanticBandView { id: string; startPercent: number; widthPercent: number; tone: RangeSliderSemanticTone; color?: string; label?: string; } declare class InlineCurrencyRangeComponent extends SimpleBaseInputComponent { private static readonly MAX_DISTRIBUTION_SOURCE_BINS; private static readonly MAX_DISTRIBUTION_RENDER_BINS; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; inlineMinWidthPx: number; inlineMaxWidthPx: number; panelMinWidthPx: number; panelMaxWidthPx: number; panelOpen: boolean; readonly overlayPositions: ConnectedPosition[]; readonly rangeGroup: FormGroup<{ minPrice: FormControl; maxPrice: FormControl; }>; readonly displayWithFn: (value: number) => string; readonly errorMessage: _angular_core.Signal; private fieldLabelText; private validatorCache; private rangeSyncInProgress; private formatterKey; private formatterCache; private distributionCacheKey; private distributionCache; private lastTriggerElement; private panelBaselineValue; private currentMetadata; setInputMetadata(metadata: MaterialPriceRangeMetadata): void; protected setMetadata(metadata: MaterialPriceRangeMetadata): void; onComponentInit(): void; onViewportResize(): void; onDocumentEscape(): void; protected getSpecificCssClasses(): string[]; protected resolveInlineContextTooltipValue(): string; minValue(): number; maxValue(): number; stepValue(): number; showTickMarks(): boolean; markLabels(): RangeSliderMark[]; semanticBands(): InlineCurrencySemanticBandView[]; markPosition(value: number): number; showDistributionBars(): boolean; distributionBars(): InlineCurrencyDistributionBar[]; distributionHeightPx(): number | null; distributionGapPx(): number | null; distributionRadiusPx(): number | null; distributionOpacity(): number | null; isInteractionBlocked(): boolean; hasSelection(): boolean; hasPanelSelection(): boolean; showQuickClear(): boolean; displayText(): string; currentSelectionText(): string; panelSelectionText(): string; scaleReadoutCondensed(): boolean; scaleReadoutSummaryOnly(): boolean; clearPanelActionLabel(): string; cancelPanelActionLabel(): string; applyPanelActionLabel(): string; clearPanelActionAriaLabel(): string; cancelPanelActionAriaLabel(): string; applyPanelActionAriaLabel(): string; panelActionsAriaLabel(): string; showPanelClearAction(): boolean; showPanelCancelAction(): boolean; clearPanelActionIcon(): string; cancelPanelActionIcon(): string; applyPanelActionIcon(): string; clearPanelActionAppearance(): string; cancelPanelActionAppearance(): string; applyPanelActionAppearance(): string; clearPanelActionColorRole(): string; cancelPanelActionColorRole(): string; applyPanelActionColorRole(): string; private formatRangeSelectionText; currentStartLabel(): string; currentEndLabel(): string; sliderStartThumbValue(): number; sliderEndThumbValue(): number; currentStartPosition(): string; currentEndPosition(): string; currentStartPositionPercent(): number; currentEndPositionPercent(): number; placeholderText(): string; panelTitle(): string; ariaLabel(): string; chipLeadingIcon(): string; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onTriggerClick(event: MouseEvent): void; onTriggerKeydown(event: Event): void; onSliderStartInput(event: Event): void; onSliderEndInput(event: Event): void; onPanelClear(event: MouseEvent): void; onPanelCancel(event: MouseEvent): void; onPanelApply(event: MouseEvent): void; closePanel(options?: { restoreFocus?: boolean; }): void; onOverlayDetach(): void; panelId(): string; panelTitleId(): string; isReadonlyEffective(): boolean; private rebuildValidators; private buildRangeValidator; private syncRangeGroupFromControl; private syncRangeGroupFromValue; private updateRangeFromSlider; private currentRangeValue; private panelRangeValue; private openPanel; cancelPanel(): void; private applyPanelValue; private usesExplicitApplyMode; private inlineOverlayAction; private resolveMarks; private resolveSemanticBands; private distributionVisual; private resolveDistributionVisual; private parseDistributionConfig; private parseDistributionBins; private normalizeRangeValue; private areRangeValuesEqual; private toFiniteNumberOrNull; private valuePositionPercent; private toNonEmptyText; private parseJsonValue; private normalizeTone; private normalizePositivePx; private clampRatio; private resolveDistributionGapPx; private resolveDistributionRadiusPx; private clampToBounds; private snapToStep; private decimalPlaces; private formatCurrency; private currencyFormatter; private resolveDecimalPlaces; private normalizeDecimalPlaces; private allowNegative; private recalculateInlineSizeBounds; private resetFormatterCache; private resetDistributionCache; private resolveFieldLabelFromMetadata; private currencyLocaleFallback; private compactDistributionBins; private rememberTriggerElement; private restoreFocusToTrigger; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class InlineToggleComponent extends SimpleBaseInputComponent { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; private fieldLabelText; private currentMetadata; private metadataRecord; private asRecord; setInputMetadata(metadata: MaterialToggleMetadata): void; protected setMetadata(metadata: MaterialToggleMetadata): void; protected getSpecificCssClasses(): string[]; showQuickClear(): boolean; hasSelection(): boolean; isTrue(): boolean; isFalse(): boolean; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; placeholderText(): string; toggleLabelText(): string; ariaLabel(): string; isReadonlyEffective(): boolean; showTextLabel(): boolean; private resolveFieldLabelFromMetadata; private humanizeFieldName; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface InlineRangeQuickPreset { id: string; label: string; icon?: string; value: number | null; start: number | null; end: number | null; } interface InlineRangeDistributionBar { id: string; value: number; ratio: number; color?: string; label?: string; } declare class InlineRangeSliderComponent extends SimpleBaseInputComponent { private static readonly PERCENT_MIN_DEFAULT; private static readonly PERCENT_MAX_DEFAULT; private static readonly PERCENT_STEP_DEFAULT; private static readonly MAX_DISTRIBUTION_SOURCE_BINS; private static readonly MAX_DISTRIBUTION_RENDER_BINS; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; inlineMinWidthPx: number; inlineMaxWidthPx: number; panelMinWidthPx: number; panelMaxWidthPx: number; panelOpen: boolean; readonly overlayPositions: ConnectedPosition[]; readonly rangeGroup: FormGroup<{ start: FormControl; end: FormControl; }>; readonly displayWithFn: (value: number) => string; private fieldLabelText; private validatorCache; private rangeSyncInProgress; private formatterKey; private formatterCache; private quickPresetsKey; private quickPresetsCache; private distributionCacheKey; private distributionCache; private activeSliderThumb; private sliderPointerInteractionActive; private sliderOutsideCloseSuppressedUntil; private sliderPointerLastClientX; private sliderPointerDirection; private lastTriggerElement; private panelBaselineValue; readonly singleDraftControl: FormControl; setInputMetadata(metadata: MaterialRangeSliderMetadata): void; protected setMetadata(metadata: MaterialRangeSliderMetadata): void; onComponentInit(): void; onViewportResize(): void; onDocumentEscape(): void; onDocumentPointerUp(): void; onDocumentPointerCancel(): void; onDocumentPointerMove(event: PointerEvent): void; protected getSpecificCssClasses(): string[]; minValue(): number; maxValue(): number; stepValue(): number; showTickMarks(): boolean; valueLabelEnabled(): boolean; isRangeMode(): boolean; isInteractionBlocked(): boolean; hasSelection(): boolean; hasPanelSelection(): boolean; showQuickClear(): boolean; showInlineInputs(): boolean; showDistributionBars(): boolean; distributionBars(): InlineRangeDistributionBar[]; distributionHeightPx(): number | null; distributionGapPx(): number | null; distributionRadiusPx(): number | null; distributionOpacity(): number | null; inputMinLabel(): string; inputMaxLabel(): string; inputValueLabel(): string; quickPresetsGroupLabel(): string; clearPanelActionLabel(): string; donePanelActionLabel(): string; cancelPanelActionLabel(): string; clearPanelActionAriaLabel(): string; applyPanelActionAriaLabel(): string; cancelPanelActionAriaLabel(): string; panelActionsAriaLabel(): string; showPanelClearAction(): boolean; showPanelCancelAction(): boolean; clearPanelActionIcon(): string; applyPanelActionIcon(): string; cancelPanelActionIcon(): string; clearPanelActionAppearance(): string; applyPanelActionAppearance(): string; cancelPanelActionAppearance(): string; clearPanelActionColorRole(): string; applyPanelActionColorRole(): string; cancelPanelActionColorRole(): string; singlePanelControl(): FormControl | FormControl; panelSelectionText(): string; quickPresets(): InlineRangeQuickPreset[]; hasQuickPresets(): boolean; presetAriaLabel(preset: InlineRangeQuickPreset): string; isPresetActive(preset: InlineRangeQuickPreset): boolean; applyQuickPreset(preset: InlineRangeQuickPreset, event: MouseEvent): void; onSingleInputBlur(): void; onRangeInputBlur(_edge: 'start' | 'end'): void; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onPanelClear(event: MouseEvent): void; onPanelDone(event: MouseEvent): void; onPanelCancel(event: MouseEvent): void; onThumbDragStart(thumb: 'start' | 'end'): void; onThumbDragEnd(): void; onSliderPointerDown(event: PointerEvent): void; onOverlayOutsideClick(event: MouseEvent): void; private finishSliderPointerInteraction; onTriggerClick(event: MouseEvent): void; onTriggerKeydown(event: Event): void; closePanel(): void; onOverlayDetach(): void; panelId(): string; panelTitleId(): string; displayText(): string; currentSelectionText(): string; placeholderText(): string; ariaLabel(): string; chipLeadingIcon(): string; chipTrailingIcon(): string; chipTrailingIconColor(): string | undefined; formatEdgeValue(value: number): string; isReadonlyEffective(): boolean; private rebuildValidators; private buildRangeValidator; private syncRangeGroupFromControl; private syncPanelControlsFromControl; private syncRangeGroupFromValue; private currentNumericValue; private currentRangeValue; private panelRangeValue; private panelNumericValue; private openPanel; private cancelPanel; private applyPanelValue; private usesExplicitApplyMode; private inlineOverlayAction; private normalizeSingleValue; private distributionVisual; private resolveDistributionVisual; private parseDistributionConfig; private parseDistributionBins; private compactDistributionBins; private normalizeRangeValue; private normalizeInteractiveRangeValue; private inlineTexts; private buildAutoQuickPresets; private parseAutoPresetLabels; private parseQuickPresets; private parseObjectConfig; private parseQuickPresetSource; private parseJsonValue; private toNonEmptyText; private normalizePositivePx; private clampRatio; private resolveDistributionGapPx; private resolveDistributionRadiusPx; private presetToRangeValue; private presetToSingleValue; private clampRangeValue; private areRangeValuesEqual; private toFiniteNumberOrNull; private rememberTriggerElement; private restoreFocusToTrigger; private clampToBounds; private snapToStep; private decimalPlaces; private formatValue; private numberFormatter; private usesCurrencyFormatting; private usesPercentFormatting; private resetFormatterCache; private normalizeDecimalPlaces; private resetQuickPresetsCache; private resetDistributionCache; private resolveFieldLabelFromMetadata; private humanizeFieldName; private recalculateInlineSizeBounds; private resolveWidthBounds; private currentMetadata; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type PeriodRangeState = { values: string[]; indexByValue: Map; }; declare class InlinePeriodRangeComponent extends SimpleBaseInputComponent { private innerComponent?; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; readonly sliderControl: FormControl; private syncingFromOuter; private syncingFromInner; readonly periodState: _angular_core.Signal; readonly resolvedMetadata: _angular_core.Signal; ngOnInit(): void; ngAfterViewInit(): void; writeValue(value: any): void; setInputMetadata(metadata: InlinePeriodRangeMetadata): void; protected setMetadata(metadata: InlinePeriodRangeMetadata): void; protected getSpecificCssClasses(): string[]; private syncFromOuterValue; private syncFromInnerValue; private toSliderValue; private toOuterValue; private adaptQuickPresets; private formatPeriodLabel; private formatMonthValue; private defaultIcon; private buildPeriods; private buildMonthPeriods; private buildQuarterPeriods; private buildYearPeriods; private parseYearMonth; private parseQuarter; private parseYear; private boundIndex; private syncInnerMetadata; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type YearRangeMetadata = Omit & { controlType: typeof FieldControlType.INLINE_YEAR_RANGE; displayFormat?: 'year' | 'compact-year-range'; quickPresetsLabels?: { full?: string; current?: string; previous?: string; recent?: string; }; } & Record; declare class InlineYearRangeComponent extends SimpleBaseInputComponent { private innerComponent?; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; readonly resolvedMetadata: _angular_core.Signal; protected getSpecificCssClasses(): string[]; ngAfterViewInit(): void; setInputMetadata(metadata: YearRangeMetadata): void; protected setMetadata(metadata: YearRangeMetadata): void; private syncInnerMetadata; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type MonthRangeMetadata = Omit & { controlType: typeof FieldControlType.INLINE_MONTH_RANGE; displayFormat?: 'month' | 'month-short-range'; monthLabels?: string[]; quickPresetsLabels?: { full?: string; q1?: string; q2?: string; q3?: string; q4?: string; firstHalf?: string; secondHalf?: string; }; } & Record; declare class InlineMonthRangeComponent extends SimpleBaseInputComponent { private innerComponent?; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; readonly resolvedMetadata: _angular_core.Signal; protected getSpecificCssClasses(): string[]; ngAfterViewInit(): void; setInputMetadata(metadata: MonthRangeMetadata): void; protected setMetadata(metadata: MonthRangeMetadata): void; private resolveMonthLabels; private syncInnerMetadata; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class InlineDateComponent extends MaterialDatepickerComponent { inputEl?: ElementRef; measureEl?: ElementRef; inlineWidthPx: number; inlineMaxWidthPx: number; private fieldLabelText; private resizeRafId; private currentMetadata; private metadataRecord; private asRecord; setDatepickerMetadata(metadata: MaterialDatepickerMetadata): void; onComponentInit(): void; ngAfterViewInit(): void; onComponentDestroy(): void; onViewportResize(): void; protected getSpecificCssClasses(): string[]; isReadonlyEffective(): boolean; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; showQuickClear(): boolean; hasInlineValue(): boolean; showInlinePlaceholder(): boolean; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onInlineInput(): void; onOverlayCancelAction(): void; onOverlayApplyAction(): void; openPicker(picker: MatDatepicker, event: MouseEvent): void; widthProbeText(): string; placeholderText(): string; ariaLabel(): string; usesExplicitApplyMode(): boolean; overlayCancelLabel(): string; overlayApplyLabel(): string; overlayActionsAriaLabel(): string; overlayCancelAriaLabel(): string; overlayApplyAriaLabel(): string; cancelPanelActionAppearance(): string; applyPanelActionAppearance(): string; cancelPanelActionColorRole(): string; applyPanelActionColorRole(): string; private inlineOverlayAction; private hasValue; private scheduleInlineResize; private recalculateInlineWidth; private resolveWidthBounds; private resolveChromeWidth; private parsePx; private resolveFieldLabelFromMetadata; private humanizeFieldName; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type InlineDateQuickPresetApplyMode = 'auto' | 'confirm'; interface InlineDateQuickPreset { id: string; label: string; icon?: string; disabled?: boolean; rangeDescription?: string; startDate: Date | null; endDate: Date | null; } declare class InlineDateRangeComponent extends MaterialDateRangeComponent { pickerRef?: MatDateRangePicker; startInputEl?: ElementRef; endInputEl?: ElementRef; measureEl?: ElementRef; inlineWidthPx: number; inlineMaxWidthPx: number; inlineTextTruncated: boolean; private fieldLabelText; private resizeRafId; overlayOpen: boolean; private overlayCommittedInSession; private overlayBaseline; private draftPresetId; private autoApplyCalendarClickTeardown; private readonly overlayActionsContainerClass; private readonly overlayActionsDensityClassPrefix; private readonly defaultInlineShortcutIds; private currentMetadata; setDateRangeMetadata(metadata: MaterialDateRangeMetadata): void; setInputMetadata(metadata: MaterialDateRangeMetadata): void; protected setMetadata(metadata: MaterialDateRangeMetadata): void; onComponentInit(): void; ngAfterViewInit(): void; onComponentDestroy(): void; onViewportResize(): void; protected getSpecificCssClasses(): string[]; protected resolveInlineContextTooltipValue(): string; panelClasses(): string[]; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; protected shouldPropagateRangeGroupChanges(): boolean; showInlineQuickPresets(): boolean; inlineQuickPresets(): InlineDateQuickPreset[]; private buildInlineQuickPresets; quickPresetsAriaLabel(): string; overlayCancelLabel(): string; overlayApplyLabel(): string; overlayActionsAriaLabel(): string; overlayCancelAriaLabel(): string; overlayApplyAriaLabel(): string; cancelPanelActionAppearance(): string; applyPanelActionAppearance(): string; cancelPanelActionColorRole(): string; applyPanelActionColorRole(): string; shouldRenderOverlayActions(): boolean; inlineQuickPresetsApplyMode(): InlineDateQuickPresetApplyMode; private inlineOverlayAction; presetAriaLabel(preset: InlineDateQuickPreset): string; presetTooltip(preset: InlineDateQuickPreset): string; shouldShowPresetTooltip(preset: InlineDateQuickPreset): boolean; isPresetActive(preset: InlineDateQuickPreset): boolean; applyQuickPreset(preset: InlineDateQuickPreset, event: MouseEvent): void; isInteractionBlocked(): boolean; showQuickClear(): boolean; showInlinePlaceholder(): boolean; showInlineDisplayText(): boolean; usesInlineDisplayText(): boolean; quickClearAriaLabel(): string; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onInlineInput(): void; onInputKeydown(event: Event, picker: MatDateRangePicker): void; onInputClick(picker: MatDateRangePicker, event: Event): void; onFieldContainerClick(picker: MatDateRangePicker, event: MouseEvent): void; openPicker(picker: MatDateRangePicker, event: Event): void; onOverlayOpened(): void; onOverlayClosed(): void; onOverlayApplyAction(): void; onOverlayCancelAction(): void; placeholderText(): string; startPlaceholderText(): string; endPlaceholderText(): string; startAriaLabel(): string; endAriaLabel(): string; widthProbeText(): string; inlineExpandedLabel(): string; displayText(): string; shouldShowInlineExpandedLabel(): boolean; private commitDateRangeValue; private currentRangeGroupValue; private cloneDateRangeValue; private restoreBaselineSelection; private displayRangeValue; private rangeDisplayText; hasValue(): boolean; hasBothValues(): boolean; hasPartialValue(): boolean; private coerceDate; private formatDate; private isSameDate; private resolveInlineQuickPresetConfig; private parsePositiveInt; private resolvePresetById; private scheduleInlineResize; private recalculateInlineWidth; private resolveWidthBounds; private resolveChromeWidth; private parsePx; private scheduleOverlayActionsContainerSync; private syncOverlayActionsContainerClass; private findOverlayActionsContainer; private syncAutoApplyCalendarBinding; private unbindAutoApplyCalendarBinding; private onAutoApplyCalendarInteraction; private overlayDensityPanelClass; private resolveDensityProfile; private isLikelyTruncatedLabel; private resolveFieldLabelFromMetadata; private normalizeLabelCandidate; private humanizeFieldName; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Angular Material timepicker component used in dynamic forms. * * Provides a form field with an input connected to `mat-timepicker`, allowing * users to select a time of day. Built on top of the `SimpleBaseInputComponent` * to reuse control value accessor integration and validation handling. */ declare class MaterialTimepickerComponent extends SimpleBaseInputComponent { /** Emits whenever validation state changes. */ readonly validationChange: _angular_core.OutputEmitterRef; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; ngOnInit(): void; validateField(): Promise; protected getSpecificCssClasses(): string[]; /** Applies component metadata with strong typing. */ setInputMetadata(metadata: MaterialTimepickerMetadata): void; isReadonlyEffective(): boolean; /** Calculates step attribute (seconds) based on metadata. */ stepAttribute(): number | null; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; private parseTimeToSeconds; private metadataAsField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type InlineTimeSegment = 'hours' | 'minutes' | 'seconds'; declare class InlineTimeComponent extends MaterialTimepickerComponent { inputEl?: ElementRef; measureEl?: ElementRef; panelEl?: ElementRef; inlineWidthPx: number; inlineMaxWidthPx: number; panelOpen: boolean; timeOptions: string[]; hourOptions: number[]; minuteOptions: number[]; secondOptions: number[]; usesSecondPrecision: boolean; private effectiveInlineMode; private fieldLabelText; private resizeRafId; private optionEntries; private selectedOption; private preferredSegments; private activeSegment; private lastTriggerElement; private currentMetadata; readonly overlayPositions: ConnectedPosition[]; setInputMetadata(metadata: MaterialTimepickerMetadata): void; onComponentInit(): void; ngAfterViewInit(): void; onComponentDestroy(): void; onViewportResize(): void; protected getSpecificCssClasses(): string[]; isReadonlyEffective(): boolean; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; isInteractionBlocked(): boolean; showQuickClear(): boolean; showPanelToggle(): boolean; hasInlineValue(): boolean; showInlinePlaceholder(): boolean; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onInlineInput(): void; togglePanel(event: MouseEvent): void; openPanel(event?: Event): void; closePanel(): void; onOverlayDetach(): void; onInputKeydown(event: KeyboardEvent): void; onPanelKeydown(event: KeyboardEvent): void; selectTimeOption(option: string, event?: Event): void; isOptionSelected(option: string): boolean; isHourSelected(hour: number): boolean; isMinuteSelected(minute: number): boolean; isSecondSelected(second: number): boolean; isActiveSegment(segment: InlineTimeSegment): boolean; selectHour(hour: number, event?: Event): void; selectMinute(minute: number, event?: Event): void; selectSecond(second: number, event?: Event): void; formatSegmentValue(value: number): string; hasAvailableOptions(): boolean; isColumnsMode(): boolean; panelToggleAriaLabel(): string; panelToggleOpenIconName(): string; panelToggleClosedIconName(): string; panelToggleIconColor(): string | undefined; selectedOptionIconName(): string; selectedOptionIconColor(): string | undefined; hourColumnLabel(): string; minuteColumnLabel(): string; secondColumnLabel(): string; emptyStateLabel(): string; private handleColumnsKeyboard; private handleListKeyboard; private shiftActiveSegment; private moveActiveSegmentValue; private resolveAvailableSegments; private resolveCurrentActiveSegment; private getOptionsForSegment; private getSelectedValueForSegment; private focusPanelRoot; private focusCurrentOption; panelId(): string; widthProbeText(): string; placeholderText(): string; ariaLabel(): string; private hasValue; private scheduleInlineResize; private recalculateInlineWidth; private resolveWidthBounds; private resolveChromeWidth; private resolveFieldLabelFromMetadata; private normalizeControlValue; private resolveDisplayTime; private refreshTimeOptions; private resolveOptionsFromMetadata; private resolveStepSeconds; private applyMinuteStepConstraint; private parseTimeValue; private parseInlineTimeToSeconds; private timeFromSeconds; private toInlineOption; private formatOptionValue; private resolveUseSeconds; private normalizeEntries; private syncSelectionState; private refreshColumnOptions; private selectBySegment; private findBestMatch; private rememberTriggerElement; private restoreFocusToTrigger; private commitOptionSelection; private findOptionByValue; private findClosestBySeconds; private resolveEffectiveInlineMode; private resolveInlineMode; private resolveInlineTexts; private parseInlineTexts; private nonEmptyText; private scrollSelectedIntoView; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface TimeRangeValue { start: string | null; end: string | null; } declare class PdxMaterialTimeRangeComponent extends SimpleBaseInputComponent implements OnInit { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; timeRangeForm: FormGroup<{ start: FormControl; end: FormControl; }>; private get meta(); startLabel: () => string; endLabel: () => string; startPlaceholder: () => string; endPlaceholder: () => string; ngOnInit(): void; writeValue(value: TimeRangeValue | null): void; setDisabledState(isDisabled: boolean): void; private rangeOrderValidator; private minDistanceValidator; private maxDistanceValidator; private timeToMinutes; setInputMetadata(metadata: MaterialTimeRangeMetadata): void; isReadonlyEffective(): boolean; private metadataAsField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface InlineTimeRangePreset { id: string; label: string; start: number; end: number; } declare class InlineTimeRangeComponent extends PdxMaterialTimeRangeComponent { measureEl?: ElementRef; panelOpen: boolean; inlineMinWidthPx: number; inlineMaxWidthPx: number; panelMinWidthPx: number; panelMaxWidthPx: number; readonly overlayPositions: ConnectedPosition[]; readonly sliderRangeForm: FormGroup<{ start: FormControl; end: FormControl; }>; readonly displayWithFn: (value: number) => string; private fieldLabelText; private resizeRafId; private sliderSyncInProgress; private timeFormSyncInProgress; private activePresetId; private activeSliderThumb; private presetCacheRaw; private presetCacheMin; private presetCacheMax; private presetCache; private trackGradientCacheKey; private trackGradientCacheValue; private lastTriggerElement; private panelCommittedValue; private draftTimeRangeValue; private committingPanelValue; private currentMetadata; setInputMetadata(metadata: MaterialTimeRangeMetadata): void; ngOnInit(): void; ngAfterViewInit(): void; setValue(value: any, options?: any): void; onComponentDestroy(): void; onViewportResize(): void; onDocumentEscape(): void; protected getSpecificCssClasses(): string[]; protected resolveInlineContextTooltipValue(): string; trackGradientCss(): string; minMinutes(): number; maxMinutes(): number; stepMinutes(): number; showTickMarks(): boolean; isInteractionBlocked(): boolean; hasValue(): boolean; hasBothValues(): boolean; hasPartialValue(): boolean; showInlinePlaceholder(): boolean; showQuickClear(): boolean; displayText(): string; widthProbeText(): string; placeholderText(): string; panelTitle(): string; ariaLabel(): string; quickPresetsAriaLabel(): string; chipLeadingIcon(): string; currentStartLabel(): string; currentEndLabel(): string; startInputLabel(): string; endInputLabel(): string; minTimeBound(): string; maxTimeBound(): string; timeInputStepSeconds(): number; hasPanelValidationError(): boolean; panelValidationMessage(): string; quickPresets(): InlineTimeRangePreset[]; isPresetActive(preset: InlineTimeRangePreset): boolean; presetAriaLabel(preset: InlineTimeRangePreset): string; applyQuickPreset(preset: InlineTimeRangePreset, event: MouseEvent): void; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onManualInputBlur(controlName: 'start' | 'end'): void; onTriggerClick(event: MouseEvent): void; onTriggerKeydown(event: Event): void; onThumbDragStart(thumb: 'start' | 'end'): void; onThumbDragEnd(): void; closePanel(): void; private closePanelWithoutDraftReset; onOverlayDetach(): void; onOverlayOutsideClick(event: MouseEvent): void; panelId(): string; panelTitleId(): string; showTimeRangeOverlayActions(): boolean; hasPanelValue(): boolean; panelActionsAriaLabel(): string; clearPanelActionLabel(): string; cancelPanelActionLabel(): string; applyPanelActionLabel(): string; clearPanelActionAriaLabel(): string; cancelPanelActionAriaLabel(): string; applyPanelActionAriaLabel(): string; showPanelClearAction(): boolean; showPanelCancelAction(): boolean; clearPanelActionIcon(): string; cancelPanelActionIcon(): string; applyPanelActionIcon(): string; clearPanelActionAppearance(): string; cancelPanelActionAppearance(): string; applyPanelActionAppearance(): string; clearPanelActionColorRole(): string; cancelPanelActionColorRole(): string; applyPanelActionColorRole(): string; onPanelClear(event: MouseEvent): void; onPanelCancel(event: MouseEvent): void; onPanelDone(event: MouseEvent): void; private onSliderChanged; private patchTimeFormFromMinutes; private syncSliderFromTimeForm; private syncPresetState; private resolvePresetIdByRange; private defaultQuickPresets; private parseQuickPresets; private resolveTrackShifts; private resolveTrackShiftColor; private buildTrackGradient; private rangeDisplayText; private resolveDisplayTime; private parseTimeToMinutes; private minutesToTimeString; private clampMinutes; private clampRangeMinutes; private normalizeSliderMinutes; private scheduleInlineResize; private recalculateInlineWidth; private resolveChromeWidth; private resolveWidthBounds; private recalculateInlineSizeBounds; private resolveFieldLabelFromMetadata; private humanizeFieldName; private openPanel; private cancelPanelSelection; private shouldHoldPanelDraft; private commitPanelValue; private currentPanelValue; private patchTimeRangeFormValue; private cloneTimeRangeValue; private usesExplicitTimeRangeOverlay; private inlineOverlayAction; private rememberTriggerElement; private restoreFocusToTrigger; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class InlineTreeSelectComponent extends SimpleBaseSelectComponent { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; searchInput?: ElementRef; menuTrigger?: MatMenuTrigger; readonly treeControl: NestedTreeControl; readonly dataSource: MatTreeNestedDataSource; readonly leafOnly: _angular_core.WritableSignal; readonly autoExpandOnSearch: _angular_core.WritableSignal; readonly returnPath: _angular_core.WritableSignal; readonly returnObject: _angular_core.WritableSignal; readonly selectedNode: _angular_core.WritableSignal; readonly selectedPathLabels: _angular_core.WritableSignal; inlineMinWidthPx: number; inlineMaxWidthPx: number; private allNodes; private parentMap; private fieldLabelText; private nodeDomKeys; private nodeDomCounter; private currentMetadata; private asRecord; hasChild: (_: number, node: MaterialTreeNode) => boolean; onComponentInit(): void; writeValue(value: unknown): void; setInputMetadata(metadata: ComponentMetadata): void; setTreeMetadata(metadata: MaterialTreeSelectMetadata): void; onViewportResize(): void; protected getSpecificCssClasses(): string[]; showQuickClear(): boolean; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onMenuOpened(): void; onMenuClosed(): void; onSearchInput(term: string): void; onSearchInputEvent(event: Event): void; toggleNode(node: MaterialTreeNode, event: MouseEvent): void; onNodeClick(node: MaterialTreeNode, event: MouseEvent): void; selectNode(node: MaterialTreeNode): void; isSelected(node: MaterialTreeNode): boolean; isNodeDisabled(node: MaterialTreeNode): boolean; isNodeSelectionOnlyDisabled(node: MaterialTreeNode): boolean; private isNodeSelectionBlocked; handleKeydown(event: KeyboardEvent, node: MaterialTreeNode): void; filteredTreeCount(): number; emptyStateText(): string; displayText(): string; hasSelection(): boolean; placeholderText(): string; searchPlaceholderText(): string; ariaLabel(): string; nodeDomKey(node: MaterialTreeNode): string; private resolveValue; private getPath; private focusSiblingNode; private focusNode; private getVisibleNodes; private applyFilter; private filterNodes; private countNodes; private syncSelectedState; private currentSelectionLookup; private findNodeByCurrentValue; private matchesCurrentValue; private normalizeNodes; private buildParentMap; private resolveFieldLabelFromMetadata; toggleNodeAriaLabel(node: MaterialTreeNode): string; private areValuesEqual; private recalculateInlineSizeBounds; private resolveWidthBounds; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type InlineRatingTone = 'low' | 'mid' | 'high'; declare class InlineRatingComponent extends InlineRangeSliderComponent { readonly overlayPositions: ConnectedPosition[]; readonly rangeGroup: FormGroup<{ start: FormControl; end: FormControl; }>; minValue(): number; maxValue(): number; stepValue(): number; isRangeMode(): boolean; chipLeadingIcon(): string; ratingBadgeIconName(): string; ratingBadgeIconColor(): string | undefined; ratingActiveStarIconName(): string; ratingInactiveStarIconName(): string; currentSelectionText(): string; placeholderText(): string; ariaLabel(): string; protected getSpecificCssClasses(): string[]; protected resolveInlineContextTooltipValue(): string; showRatingOverlayActions(): boolean; ratingScaleSlots(): number[]; slotTone(slot: number): InlineRatingTone; slotColor(slot: number): string; isSlotInSelectedRange(slot: number): boolean; selectedStartLabel(): string; selectedEndLabel(): string; ratingStarsAriaLabel(): string; onDocumentEscape(): void; toneLowColor(): string | null; toneMidColor(): string | null; toneHighColor(): string | null; ratingGradientLowColor(): string; ratingGradientMidColor(): string; ratingGradientHighColor(): string; ratingGradient(): string; badgeStarColor(): string | null; private ratingGradientColorByIndex; private ratingGradientColorByRatio; private readSelectedRange; private readRangeForDisplay; private toNumberOrNull; private clampValue; private formatRatingValue; private resolveAllowHalfFlag; private resolveColorToken; private parseColorPalette; private resolveRatingLabelFromMetadata; private humanizeRatingFieldName; private currentRatingMetadata; private usesExplicitRatingOverlay; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type DistanceUnit = 'km' | 'mi'; interface DistancePreset { id: string; valueBase: number | null; startBase: number | null; endBase: number | null; label: string; icon?: string; } declare class InlineDistanceRadiusComponent extends InlineRangeSliderComponent { readonly overlayPositions: ConnectedPosition[]; readonly rangeGroup: FormGroup<{ start: FormControl; end: FormControl; }>; private currentUnit; setInputMetadata(metadata: MaterialRangeSliderMetadata): void; protected setMetadata(metadata: MaterialRangeSliderMetadata): void; onComponentInit(): void; onTriggerKeydownEvent(event: Event): void; onDistancePanelOutsideClick(event: MouseEvent): void; showDistanceOverlayActions(): boolean; distanceSinglePanelControl(): FormControl | FormControl; minValue(): number; maxValue(): number; stepValue(): number; isRangeMode(): boolean; chipLeadingIcon(): string; placeholderText(): string; currentSelectionText(): string; displayText(): string; hasSelection(): boolean; ariaLabel(): string; protected getSpecificCssClasses(): string[]; protected resolveInlineContextTooltipValue(): string; activeUnit(): DistanceUnit; setActiveUnit(unit: DistanceUnit, event?: Event): void; activeUnitLabel(): string; availableUnits(): DistanceUnit[]; showUnitToggle(): boolean; unitButtonLabel(unit: DistanceUnit): string; displayDistanceValue(): number; displayDistanceText(): string; displayMinLabel(): string; displayMaxLabel(): string; panelSubtitleText(): string; unitToggleAriaLabel(): string; radialRingScales(): number[]; ringTransform(scale: number): string; ringOpacity(scale: number): number; isRingActive(scale: number): boolean; radialFillTransform(): string; radialFillOpacity(): number; radialFillBackground(): string; distanceRadialValueColor(): string; showRadialRangeBand(): boolean; radialRangeBandGradient(): string | null; radialRangeBandOpacity(): number; distancePresets(): DistancePreset[]; distancePresetsAriaLabel(): string; distancePresetAriaLabel(preset: DistancePreset): string; isDistancePresetActive(preset: DistancePreset): boolean; applyDistancePreset(preset: DistancePreset, event?: Event): void; distanceAccentColor(): string | null; distanceRingColor(): string | null; distanceTrackColor(): string | null; distanceGlowColor(): string | null; distanceGradientLowColor(): string; distanceGradientMidColor(): string; distanceGradientHighColor(): string; private syncUnitFromMetadata; private normalizedDistanceRatio; private normalizedRatioForValue; private radialFillScale; private radialScaleForRatio; private gradientColorForRatio; private distanceRangeBandOpacityOverride; private currentBaseValue; private currentRangeBaseValue; private currentRawDistanceValue; private usesExplicitDistanceOverlay; private currentRadialBaseValue; private currentNormalizedRangeRatios; private clampBaseValue; private baseUnit; private toDisplayValue; private toBaseValue; private formatDistanceForUnit; private resolveDisplayDecimals; private normalizePreset; private buildPresetLabel; private buildPresetRangeLabel; private defaultDistancePresets; private defaultDistanceRangePresets; private rangeForDisplay; private normalizeRangeBaseValue; private areRangesEqual; private formatBaseDistance; private toDistanceNumberOrNull; private parsePresetSource; private parseUnit; private parseUnitList; private parseStringToArray; private parseObject; private resolveColorToken; private resolveLabelFromMetadata; private currentDistanceMetadata; private distanceText; private distanceSingleLabel; private distanceRangeLabel; private distanceFromLabel; private distanceUpToLabel; private distanceFromMidLabel; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type PipelineOptionValue = unknown; interface PipelineOptionVisual { id: string; label: string; subtitle: string; value: PipelineOptionValue; color: string; weight: number; disabled: boolean; selected: boolean; } interface PipelineSegmentVisual { id: string; label: string; color: string; widthPct: number; selected: boolean; } declare class InlinePipelineStatusComponent extends SimpleBaseSelectComponent { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; searchInput?: ElementRef; readonly overlayPositions: ConnectedPosition[]; inlineMinWidthPx: number; inlineMaxWidthPx: number; panelMinWidthPx: number; panelMaxWidthPx: number; panelOpen: boolean; private fieldLabelText; private lastTriggerElement; private draftSelectionValue; private hasDraftSelectionValue; setSelectMetadata(metadata: SimpleSelectMetadata): void; protected setMetadata(metadata: MaterialSelectMetadata): void; onComponentInit(): void; onViewportResize(): void; onDocumentEscape(): void; protected getSpecificCssClasses(): string[]; protected resolveInlineContextTooltipValue(): string; hasSelection(): boolean; displayText(): string; selectedChipValueText(): string; showQuickClear(): boolean; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onTriggerClick(event: MouseEvent): void; onTriggerKeydown(event: Event): void; closePanel(): void; private closePanelWithoutDraftReset; onOverlayDetach(): void; onOverlayOutsideClick(event: MouseEvent): void; panelId(): string; panelTitleId(): string; panelTitleText(): string; panelSubtitleText(): string; searchPlaceholderText(): string; panelSearchIconName(fallback?: string): string; panelSearchIconColor(): string | undefined; onPanelSearchInput(term: string): void; onPanelSearchInputEvent(event: Event): void; showPipelineBar(): boolean; showSelectionPills(): boolean; showSelectionActions(): boolean; selectionActionsAriaLabel(): string; selectAllActionText(): string; clearSelectionActionText(): string; selectionPillsAriaLabel(): string; showSelectAllAction(): boolean; showClearSelectionAction(): boolean; onSelectAllClick(event: MouseEvent): void; onClearSelectionClick(event: MouseEvent): void; pipelineOptions(): PipelineOptionVisual[]; selectedVisualOptions(): PipelineOptionVisual[]; pipelineSegments(): PipelineSegmentVisual[]; pipelineGradientLowColor(): string; pipelineGradientMidColor(): string; pipelineGradientHighColor(): string; pipelineGradient(): string; pipelineBarAriaLabel(): string; optionsGroupAriaLabel(): string; optionAriaLabel(option: PipelineOptionVisual): string; toggleOption(option: PipelineOptionVisual, event?: Event): void; onOptionKeydown(event: Event, option: PipelineOptionVisual): void; chipLeadingIcon(): string; placeholderText(): string; ariaLabel(): string; emptyStateText(): string; private resolveMultipleMode; private selectedValues; showPipelineOverlayActions(): boolean; hasPanelSelection(): boolean; panelActionsAriaLabel(): string; clearPanelActionLabel(): string; cancelPanelActionLabel(): string; applyPanelActionLabel(): string; clearPanelActionAriaLabel(): string; cancelPanelActionAriaLabel(): string; applyPanelActionAriaLabel(): string; showPanelClearAction(): boolean; showPanelCancelAction(): boolean; clearPanelActionIcon(): string; cancelPanelActionIcon(): string; applyPanelActionIcon(): string; clearPanelActionAppearance(): string; cancelPanelActionAppearance(): string; applyPanelActionAppearance(): string; clearPanelActionColorRole(): string; cancelPanelActionColorRole(): string; applyPanelActionColorRole(): string; onPanelClear(event: MouseEvent): void; onPanelCancel(event: MouseEvent): void; onPanelDone(event: MouseEvent): void; isInteractionBlocked(): boolean; private toVisualOption; private resolveOptionOrderIndex; private resolveOptionSubtitle; private resolveOptionWeight; private resolveOptionColor; private resolveFallbackColor; private pipelineGradientColorByIndex; private pipelineGradientColorByRatio; private parseColorPalette; private resolvePipelineText; private interpolateLegacyAwareTemplate; private resolveMetadataKey; private parseObjectConfig; private nonEmptyText; private resolveColorToken; private mapRawOption; private equalsOptionValue; private resolveFieldLabelFromMetadata; private recalculateInlineSizeBounds; private resolveWidthBounds; private rememberTriggerElement; private restoreFocusToTrigger; private openPanel; private cancelPanelSelection; private currentRawSelectionValue; private setDraftSelectionValue; private clearDraftSelection; private cloneSelectionValue; private usesExplicitPipelineOverlay; private inlineOverlayAction; private multipleMode; private currentMetadata; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface ScoreBandVisual { id: string; label: string; color: string; start: number; end: number; startPct: number; endPct: number; centerPct: number; } declare class InlineScorePriorityComponent extends InlineRangeSliderComponent { readonly overlayPositions: ConnectedPosition[]; readonly rangeGroup: FormGroup<{ start: FormControl; end: FormControl; }>; private scoreMetadata; private asRecord; private metadataRecord; private getValueFromKeys; minValue(): number; maxValue(): number; stepValue(): number; isRangeMode(): boolean; chipLeadingIcon(): string; placeholderText(): string; currentSelectionText(): string; ariaLabel(): string; protected getSpecificCssClasses(): string[]; protected resolveInlineContextTooltipValue(): string; panelSubtitleText(): string; scoreBands(): ScoreBandVisual[]; scoreGradient(): string; showScaleLabels(): boolean; showBandChips(): boolean; selectedStartPct(): number; selectedEndPct(): number; selectedSinglePct(): number; selectedStartText(): string; selectedEndText(): string; selectedSingleText(): string; selectedStartBandLabel(): string; selectedEndBandLabel(): string; selectedSingleBandLabel(): string; selectedStartColor(): string; selectedEndColor(): string; selectedSingleColor(): string; scoreUnitText(): string; formatScoreNumber(value: number): string; rangeValueSeparatorText(): string; bandsAriaLabel(): string; bandAriaLabel(band: ScoreBandVisual): string; isBandActive(band: ScoreBandVisual): boolean; applyBandPreset(band: ScoreBandVisual, event?: Event): void; onViewportResize(): void; onDocumentEscape(): void; setInputMetadata(metadata: MaterialRangeSliderMetadata): void; protected setMetadata(metadata: MaterialRangeSliderMetadata): void; onComponentInit(): void; private scoreReadSingleFromControl; private scoreReadRangeFromControl; private scoreRangeForDisplay; showScoreOverlayActions(): boolean; private usesExplicitScoreOverlay; private scoreNormalizeRange; private scoreBuildBandVisual; private scoreFallbackColor; private scoreParseBandsSource; private scoreBandForValue; private scoreValueToPct; private scoreRangeToPct; private scoreClampValue; private scoreToFiniteNumber; private scoreResolveDecimals; private scoreResolveLabel; private scoreHumanizeName; private scoreUnitSuffix; private scoreSelectedFallbackColor; scoreGradientLowColor(): string; scoreGradientMidColor(): string; scoreGradientHighColor(): string; private scoreGradientColorByIndex; private scoreGradientColorByRatio; private resolveScoreText; private interpolateTemplate; private parseScoreObjectConfig; private parseColorList; private nonEmptyText; private resolveColorToken; private scoreRecalculateInlineSizeBounds; private scoreResolveWidthBounds; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface RelativePeriodOptionVisual { id: string; label: string; subtitle: string; icon: string; value: unknown; disabled: boolean; selected: boolean; } declare class InlineRelativePeriodComponent extends SimpleBaseSelectComponent { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; searchInput?: ElementRef; readonly overlayPositions: ConnectedPosition[]; inlineMinWidthPx: number; inlineMaxWidthPx: number; panelMinWidthPx: number; panelMaxWidthPx: number; panelOpen: boolean; private fieldLabelText; private lastTriggerElement; private draftSelectionValue; private hasDraftSelectionValue; private currentMetadata; private asRecord; private metadataRecord; setSelectMetadata(metadata: SimpleSelectMetadata): void; protected setMetadata(metadata: MaterialSelectMetadata): void; onComponentInit(): void; onViewportResize(): void; onDocumentEscape(): void; protected getSpecificCssClasses(): string[]; protected resolveInlineContextTooltipValue(): string; hasSelection(): boolean; displayText(): string; showQuickClear(): boolean; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onTriggerClick(event: MouseEvent): void; onTriggerKeydown(event: Event): void; closePanel(): void; private closePanelWithoutDraftReset; onOverlayDetach(): void; onOverlayOutsideClick(event: MouseEvent): void; panelId(): string; panelTitleId(): string; panelTitleText(): string; panelSubtitleText(): string; showProgressBar(): boolean; progressPercent(): number; progressStartLabel(): string; progressCurrentLabel(): string; progressAriaLabel(): string; progressGradientLowColor(): string; progressGradientMidColor(): string; progressGradientHighColor(): string; progressGradient(): string; cardColumns(): number; optionsGroupAriaLabel(): string; optionAriaLabel(option: RelativePeriodOptionVisual): string; relativeOptions(): RelativePeriodOptionVisual[]; toggleOption(option: RelativePeriodOptionVisual, event?: Event): void; onOptionKeydown(event: Event, option: RelativePeriodOptionVisual): void; chipLeadingIcon(): string; optionSelectedIconName(fallback?: string): string; optionSelectedIconColor(): string | undefined; placeholderText(): string; ariaLabel(): string; emptyStateText(): string; showRelativeOverlayActions(): boolean; hasPanelSelection(): boolean; panelActionsAriaLabel(): string; clearPanelActionLabel(): string; cancelPanelActionLabel(): string; applyPanelActionLabel(): string; clearPanelActionAriaLabel(): string; cancelPanelActionAriaLabel(): string; applyPanelActionAriaLabel(): string; showPanelClearAction(): boolean; showPanelCancelAction(): boolean; clearPanelActionIcon(): string; cancelPanelActionIcon(): string; applyPanelActionIcon(): string; clearPanelActionAppearance(): string; cancelPanelActionAppearance(): string; applyPanelActionAppearance(): string; clearPanelActionColorRole(): string; cancelPanelActionColorRole(): string; applyPanelActionColorRole(): string; onPanelClear(event: MouseEvent): void; onPanelCancel(event: MouseEvent): void; onPanelDone(event: MouseEvent): void; isInteractionBlocked(): boolean; private parseOptionsSource; private defaultRelativePeriodOptions; private selectedOptions; private toVisualOption; private resolveOptionSubtitle; private fallbackOptionLabel; private resolveOptionIcon; private selectedValues; private resolveCloseOnSelect; private resolveMultipleMode; private equalsOptionValue; private resolveText; private resolveMetadataKey; private parseObjectConfig; private nonEmptyText; private interpolateLegacyAwareTemplate; private resolveColorToken; private mapRawOption; private resolveFieldLabelFromMetadata; private recalculateInlineSizeBounds; private resolveWidthBounds; private rememberTriggerElement; private restoreFocusToTrigger; private openPanel; private cancelPanelSelection; private currentRawSelectionValue; private setDraftSelectionValue; private clearDraftSelection; private cloneSelectionValue; private usesExplicitRelativeOverlay; private inlineOverlayAction; private multipleMode; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface SentimentOptionVisual { id: string; label: string; subtitle: string; emoji: string; color: string; value: unknown; disabled: boolean; selected: boolean; } declare class InlineSentimentComponent extends SimpleBaseSelectComponent { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; readonly overlayPositions: ConnectedPosition[]; inlineMinWidthPx: number; inlineMaxWidthPx: number; panelMinWidthPx: number; panelMaxWidthPx: number; panelOpen: boolean; private fieldLabelText; private lastTriggerElement; private draftSelectionValue; private hasDraftSelectionValue; private currentMetadata; private asRecord; private metadataRecord; setSelectMetadata(metadata: SimpleSelectMetadata): void; protected setMetadata(metadata: MaterialSelectMetadata): void; onComponentInit(): void; onViewportResize(): void; onDocumentEscape(): void; protected getSpecificCssClasses(): string[]; protected resolveInlineContextTooltipValue(): string; hasSelection(): boolean; displayText(): string; showQuickClear(): boolean; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onTriggerClick(event: MouseEvent): void; onTriggerKeydown(event: Event): void; closePanel(): void; onOverlayDetach(): void; onOverlayOutsideClick(event: MouseEvent): void; panelId(): string; panelTitleId(): string; panelTitleText(): string; panelSubtitleText(): string; showSentimentBar(): boolean; sentimentBarAriaLabel(): string; optionsGroupAriaLabel(): string; optionAriaLabel(option: SentimentOptionVisual): string; sentimentOptions(): SentimentOptionVisual[]; selectedOptions(): SentimentOptionVisual[]; showSelectionPills(): boolean; selectionPillsAriaLabel(): string; emojiAnimationEnabled(): boolean; toggleOption(option: SentimentOptionVisual, event?: Event): void; onOptionKeydown(event: Event, option: SentimentOptionVisual): void; chipLeadingIcon(): string; placeholderText(): string; ariaLabel(): string; emptyStateText(): string; showSentimentOverlayActions(): boolean; hasPanelSelection(): boolean; panelActionsAriaLabel(): string; clearPanelActionLabel(): string; cancelPanelActionLabel(): string; applyPanelActionLabel(): string; clearPanelActionAriaLabel(): string; cancelPanelActionAriaLabel(): string; applyPanelActionAriaLabel(): string; showPanelClearAction(): boolean; showPanelCancelAction(): boolean; clearPanelActionIcon(): string; cancelPanelActionIcon(): string; applyPanelActionIcon(): string; clearPanelActionAppearance(): string; cancelPanelActionAppearance(): string; applyPanelActionAppearance(): string; clearPanelActionColorRole(): string; cancelPanelActionColorRole(): string; applyPanelActionColorRole(): string; onPanelClear(event: MouseEvent): void; onPanelCancel(event: MouseEvent): void; onPanelDone(event: MouseEvent): void; isInteractionBlocked(): boolean; private parseOptionsSource; private defaultSentimentOptions; private toVisualOption; private resolveOptionEmoji; private fallbackOptionLabel; private resolveOptionColor; private sentimentGradientColorByIndex; private sentimentGradientColorByRatio; private parseColorList; private selectedValues; private currentRawSelectionValue; private openPanel; private cancelPanelSelection; private setDraftSelectionValue; private clearDraftSelection; private cloneSelectionValue; private usesExplicitSentimentOverlay; private inlineOverlayAction; private currentSelectionVisuals; private fallbackVisualFromValue; private resolveCloseOnSelect; private resolveMultipleMode; private equalsOptionValue; private resolveText; private resolveMetadataKey; private parseObjectConfig; private nonEmptyText; private interpolateLegacyAwareTemplate; private resolveColorToken; private mapRawOption; private resolveFieldLabelFromMetadata; private recalculateInlineSizeBounds; private resolveWidthBounds; private rememberTriggerElement; private restoreFocusToTrigger; private multipleMode; sentimentGradientLowColor(): string; sentimentGradientMidColor(): string; sentimentGradientHighColor(): string; sentimentGradient(): string; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface ColorLabelOptionVisual { id: string; label: string; subtitle: string; color: string; value: unknown; disabled: boolean; selected: boolean; } declare class InlineColorLabelComponent extends SimpleBaseSelectComponent { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; readonly overlayPositions: ConnectedPosition[]; inlineMinWidthPx: number; inlineMaxWidthPx: number; panelMinWidthPx: number; panelMaxWidthPx: number; panelOpen: boolean; private fieldLabelText; private lastTriggerElement; private draftSelectionValue; private hasDraftSelectionValue; setSelectMetadata(metadata: SimpleSelectMetadata): void; protected setMetadata(metadata: MaterialSelectMetadata): void; onComponentInit(): void; onViewportResize(): void; onDocumentEscape(): void; protected getSpecificCssClasses(): string[]; protected resolveInlineContextTooltipValue(): string; hasSelection(): boolean; displayText(): string; selectedChipValueText(): string; showQuickClear(): boolean; onTriggerIconMouseDown(event: MouseEvent): void; onQuickClear(event: MouseEvent): void; onTriggerClick(event: MouseEvent): void; onTriggerKeydown(event: Event): void; closePanel(): void; onOverlayDetach(): void; onOverlayOutsideClick(event: MouseEvent): void; panelId(): string; panelTitleId(): string; panelTitleText(): string; panelSubtitleText(): string; colorLabelOptions(): ColorLabelOptionVisual[]; selectedOptions(): ColorLabelOptionVisual[]; cardColumns(): number; optionsGroupAriaLabel(): string; optionAriaLabel(option: ColorLabelOptionVisual): string; toggleOption(option: ColorLabelOptionVisual, event?: Event): void; onOptionKeydown(event: Event, option: ColorLabelOptionVisual): void; showSelectionBadges(): boolean; selectionTitleText(): string; selectionBadgesAriaLabel(): string; removeBadgeAriaLabel(option: ColorLabelOptionVisual): string; removeBadgeIconName(): string; removeBadgeIconColor(): string | undefined; optionSelectedIconName(fallback?: string): string; optionSelectedIconColor(): string | undefined; removeSelection(option: ColorLabelOptionVisual, event?: Event): void; chipLeadingIcon(): string; placeholderText(): string; ariaLabel(): string; emptyStateText(): string; showColorLabelOverlayActions(): boolean; hasPanelSelection(): boolean; panelActionsAriaLabel(): string; clearPanelActionLabel(): string; cancelPanelActionLabel(): string; applyPanelActionLabel(): string; clearPanelActionAriaLabel(): string; cancelPanelActionAriaLabel(): string; applyPanelActionAriaLabel(): string; showPanelClearAction(): boolean; showPanelCancelAction(): boolean; clearPanelActionIcon(): string; cancelPanelActionIcon(): string; applyPanelActionIcon(): string; clearPanelActionAppearance(): string; cancelPanelActionAppearance(): string; applyPanelActionAppearance(): string; clearPanelActionColorRole(): string; cancelPanelActionColorRole(): string; applyPanelActionColorRole(): string; onPanelClear(event: MouseEvent): void; onPanelCancel(event: MouseEvent): void; onPanelDone(event: MouseEvent): void; isInteractionBlocked(): boolean; private parseOptionsSource; private toVisualOption; private resolveOptionColor; private fallbackOptionLabel; private parseColorList; private selectedValues; private openPanel; private cancelPanelSelection; private setDraftSelectionValue; private clearDraftSelection; private currentSelectionValue; private cloneSelectionValue; private usesExplicitColorLabelOverlay; private inlineOverlayAction; private resolveCloseOnSelect; private resolveMultipleMode; private equalsOptionValue; private resolveText; private resolveMetadataKey; private parseObjectConfig; private nonEmptyText; private interpolateLegacyAwareTemplate; private mapRawOption; private resolveFieldLabelFromMetadata; private recalculateInlineSizeBounds; private resolveWidthBounds; private rememberTriggerElement; private restoreFocusToTrigger; private multipleMode; private currentMetadata; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class MaterialMultiSelectComponent extends SimpleBaseSelectComponent implements DoCheck { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; private disabledModeAppliedToControl; ngDoCheck(): void; protected defaultPanelClass(): string; selectAllLabel(): string; multiSelectAriaDisabled(): 'true' | null; multiSelectAriaReadonly(): 'true' | null; selectOption(option: SelectOption): void; toggleSelectAll(): void; onClearClick(): void; setSelectMetadata(metadata: SimpleSelectMetadata): void; /** Disables options when maxSelections reached */ isOptionDisabled(option: SelectOption): boolean; /** Emits optionSelected when a user picks an option */ onOptionSelectionChange(option: SelectOption, event: MatOptionSelectionChange): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; private optionsFromLegacy; private syncDisabledModeControlState; private normalizeOption; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Material wrapper for hierarchical multi select using `mat-tree`. * * Supports recursive selection with checkboxes and optional * "select all" helper. Values are emitted as array of node values. */ declare class MaterialMultiSelectTreeComponent extends SimpleBaseInputComponent { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; /** Tree control managing expansion state */ readonly treeControl: NestedTreeControl; /** Data source bound to the tree */ readonly dataSource: MatTreeNestedDataSource; /** Selection model for nodes */ readonly selection: SelectionModel; private readonly parentMap; private readonly valueMap; /** Show select all option */ readonly selectAll: _angular_core.WritableSignal; /** Maximum allowed selections */ readonly maxSelections: _angular_core.WritableSignal; /** Label for select all option */ readonly selectAllLabel: _angular_core.WritableSignal; /** Emits whenever the selection changes */ readonly selectionChange: EventEmitter; readonly loading: _angular_core.WritableSignal; onComponentInit(): void; setLoading(loading: boolean): void; showClear(): boolean; onClearClick(): void; /** Configure component metadata */ setTreeMetadata(metadata: MaterialMultiSelectTreeMetadata): void; loadingOptionsAriaLabel(): string; toggleNodeAriaLabel(node: MaterialTreeNode): string; private normalizeNodes; /** Whether a node has children */ hasChild: (_: number, node: MaterialTreeNode) => boolean; /** Toggle selection state of a node and its descendants */ toggleNode(node: MaterialTreeNode): void; private toggleDescendants; private updateAllParents; private updateParentSelection; private getDescendants; private getParent; private buildParentMap; /** Whether descendants of a node are partially selected */ descendantsPartiallySelected(node: MaterialTreeNode): boolean; private emitValue; writeValue(value: unknown): void; /** Toggle select all nodes */ toggleSelectAll(): void; private selectAllRecursive; /** Check if all enabled nodes are selected */ isAllSelected(): boolean; private getAllEnabledNodes; /** Disable node when maxSelections reached */ isNodeDisabled(node: MaterialTreeNode): boolean; /** CSS hook */ protected getSpecificCssClasses(): string[]; clearActionAriaLabel(): string; clearButtonIconColor(): string | undefined; clearButtonIcon(): string; private clearButtonConfig; private metadataAsField; private metadataRecord; private asRecord; private coerceNodesFromOptions; private normalizeNode; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class MaterialTreeSelectComponent extends SimpleBaseSelectComponent { private host; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; readonly treeControl: NestedTreeControl; readonly dataSource: MatTreeNestedDataSource; readonly leafOnly: _angular_core.WritableSignal; readonly autoExpandOnSearch: _angular_core.WritableSignal; readonly returnPath: _angular_core.WritableSignal; readonly returnObject: _angular_core.WritableSignal; private parentMap; private allNodes; private selectedNode; constructor(host: ElementRef); onComponentInit(): void; setTreeMetadata(metadata: MaterialTreeSelectMetadata): void; private normalizeNodes; private buildParentMap; hasChild: (_: number, node: MaterialTreeNode) => boolean; toggleNodeAriaLabel(node: MaterialTreeNode): string; selectNode(node: MaterialTreeNode): void; private resolveValue; private getPath; isSelected(node: MaterialTreeNode): boolean; isNodeDisabled(node: MaterialTreeNode): boolean; handleKeydown(event: KeyboardEvent, node: MaterialTreeNode): void; private focusSiblingNode; private focusNode; private getVisibleNodes; private applyFilter; private filterNodes; onSearchInputEvent(event: Event): void; private asRecord; private legacyNodesFromMetadata; private normalizeNode; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class MaterialChipsComponent extends SimpleBaseSelectComponent { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; readonly removable: _angular_core.WritableSignal; readonly addOnBlur: _angular_core.WritableSignal; readonly chipPlaceholder: _angular_core.WritableSignal; readonly separatorKeys: number[]; private asRecord; private mapRawOption; displayOption: (value: unknown) => string; selectedOptions(): SelectOption[]; isChipsInteractionDisabled(): boolean; canRemoveChips(): boolean; removeChipAriaLabel(option: SelectOption): string; selectOption(option: SelectOption): void; removeChip(option: SelectOption): void; onInputTokenEnd(event: MatChipInputEvent): void; onSearchInputEvent(event: Event): void; setInputMetadata(metadata: MaterialChipsMetadata): void; setSelectMetadata(metadata: SimpleSelectMetadata): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class MaterialButtonToggleComponent extends SimpleBaseSelectComponent { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; private asRecord; private mapRawOption; labelId(): string; groupAriaLabel(): string | null; groupAriaLabelledby(): string | null; toggleInteractionDisabled(): boolean; toggleAriaDisabled(): 'true' | null; toggleAriaReadonly(): 'true' | null; readonlyEffective(): boolean; setSelectMetadata(metadata: SimpleSelectMetadata): void; protected getSpecificCssClasses(): string[]; onGroupChange(event: MatButtonToggleChange): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class MaterialSlideToggleComponent extends SimpleBaseInputComponent implements DoCheck { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; private disabledModeAppliedToControl; ngDoCheck(): void; requiredEffective(): boolean; requiredTrueEffective(): boolean; toggleInteractionDisabled(): boolean; toggleAriaDisabled(): 'true' | null; toggleAriaReadonly(): 'true' | null; readonlyEffective(): boolean; onTogglePointerDown(event: Event): void; onToggleInteractionEvent(event: Event): void; onToggleKeydown(event: KeyboardEvent): void; /** Applies component metadata with strong typing. */ setInputMetadata(metadata: MaterialToggleMetadata): void; protected onActiveControlChanged(previousControl: FormControl, _currentControl: FormControl): void; private syncRequiredTrueValidator; private blockToggleInteractionIfNeeded; private syncDisabledModeControlState; protected getSpecificCssClasses(): string[]; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface SliderDistributionBar$1 { id: string; ratio: number; selected: boolean; background?: string; color?: string; label?: string; } interface SliderSemanticBandView$1 { id: string; startPercent: number; widthPercent: number; tone: RangeSliderSemanticBand['tone']; color?: string; label?: string; } declare class MaterialSliderComponent extends SimpleBaseInputComponent { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; /** Display function for slider values */ displayWithFn: (value: number) => string; sliderStep(): number; valueLabelEnabled(): boolean; showTickMarks(): boolean; trackMode(): 'normal' | 'inverted' | 'none'; sliderSize(): 'small' | 'medium' | 'large'; markLabels(): RangeSliderMark[]; semanticBandViews(): SliderSemanticBandView$1[]; distributionBars(): SliderDistributionBar$1[]; sliderInteractionDisabled(): boolean; sliderAriaDisabled(): 'true' | null; sliderAriaReadonly(): 'true' | null; readonlyEffective(): boolean; markPosition(value: number): number; /** Applies component metadata with strong typing. */ setInputMetadata(metadata: MaterialSliderMetadata): void; protected getSpecificCssClasses(): string[]; private currentMetadata; private resolveMarks; private parseJsonArray; private parseJsonObject; private normalizeTone; private resolveSemanticBands; private resolveDistributionBars; private normalizeDistributionColorMode; private isDistributionBarSelected; private resolveDistributionBarBackground; private stringConfig; formatSliderValue(value: unknown): string; private scaleValue; private formatStorageValue; private formatCurrencyValue; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type ThemeColor = 'primary' | 'secondary' | 'tertiary' | 'base' | 'info' | 'success' | 'warning' | 'error' | 'dark' | 'light' | 'inverse' | 'none'; type Rounded = 'full' | 'large' | 'medium' | 'small' | 'none'; type AvatarSize = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge' | 'none'; type FillMode = 'solid' | 'outline' | 'none'; type AvatarStatus = 'online' | 'offline' | 'busy' | 'away' | 'verified' | 'none'; type AvatarEmphasis = 'none' | 'ring' | 'halo'; type IconInput = string | SafeHtml | { name?: string; svg?: string; fontClass?: string; }; interface AvatarGroupItem { imageSrc?: string; imageAlt?: string; initials?: string; name?: string; icon?: IconInput; defaultIcon?: IconInput; themeColor?: ThemeColor; rounded?: Rounded; fillMode?: FillMode; status?: AvatarStatus; statusLabel?: string; emphasis?: AvatarEmphasis; emphasisColor?: ThemeColor; emphasisLabel?: string; tooltip?: string; ariaLabel?: string; } interface NormalizedAvatarGroupItem extends AvatarGroupItem { key: string; index: number; initialsText: string; imageUrl: string; label: string; tooltip: string; themeColor: ThemeColor; rounded: Rounded; fillMode: FillMode; status: AvatarStatus; emphasis: AvatarEmphasis; emphasisColor: ThemeColor; } declare class MaterialAvatarComponent implements OnChanges { private readonly sanitizer; private readonly elementRef; readonly metadata: _angular_core.WritableSignal; readonly componentId: _angular_core.WritableSignal; readonly formControl: _angular_core.WritableSignal | null>; imageSrc?: string; imageAlt?: string; initials?: string; /** Full name to generate initials from if `initials` is not provided. */ name?: string; icon?: IconInput; /** Fallback icon used when no image/icon/initials provided via inputs */ defaultIcon?: IconInput; private readonly appearanceTick; private readonly contentTick; private _themeColor; private _rounded; private _size; private _fillMode; private _border; private _sizePx?; private _sizeCss?; private _initialsMaxLength; private _groupItems; private _groupMaxVisible; private _groupOverlap; private _emphasis; private _emphasisColor; set themeColor(value: ThemeColor); get themeColor(): ThemeColor; set rounded(value: Rounded); get rounded(): Rounded; set size(value: AvatarSize); get size(): AvatarSize; set fillMode(value: FillMode); get fillMode(): FillMode; set border(value: boolean); get border(): boolean; set sizePx(value: number | undefined); get sizePx(): number | undefined; set sizeCss(value: string | undefined); get sizeCss(): string | undefined; tooltip?: string; ariaLabel?: string; status?: AvatarStatus; statusLabel?: string; badge?: string | number; badgeLabel?: string; emphasisLabel?: string; set emphasis(value: AvatarEmphasis | undefined); get emphasis(): AvatarEmphasis; set emphasisColor(value: ThemeColor | undefined); get emphasisColor(): ThemeColor; set initialsMaxLength(value: number | string | undefined); get initialsMaxLength(): number; set groupItems(value: AvatarGroupItem[] | undefined); get groupItems(): AvatarGroupItem[]; set groupMaxVisible(value: number | string | undefined); get groupMaxVisible(): number; set groupOverlap(value: number | string | undefined); get groupOverlap(): number; groupOverflowLabel?: string; groupLabel?: string; readonlyMode?: boolean; disabledMode?: boolean; visible?: boolean; presentationMode?: boolean; private _class?; set class(value: string | undefined); get class(): string | undefined; private _style?; set style(value: NgStyle | undefined); get style(): NgStyle | undefined; imageError: EventEmitter; private readonly _imgFailed; private readonly groupImageFailures; private readonly controlValue; private readonly _syncControlValue; readonly resolvedImageSrc: _angular_core.Signal; private readonly _resetOnSrcChange; readonly hasImage: _angular_core.Signal; readonly hasInitials: _angular_core.Signal; readonly componentCssClasses: _angular_core.Signal; readonly computedHostRole: _angular_core.Signal<"group" | "img">; readonly resolvedStyle: _angular_core.Signal<{ [x: string]: unknown; } | null>; readonly computedAriaLabel: _angular_core.Signal; readonly resolvedHint: _angular_core.Signal; readonly resolvedLabel: _angular_core.Signal; readonly hintId: _angular_core.Signal; private resolveIconKind; private pickImageSrcFromValue; private normalizeImageUrl; private normalizeCssSize; private normalizeThemeColor; private normalizeRounded; private normalizeFillMode; private normalizeStatus; private normalizeEmphasis; private initialsFrom; private groupItemLabel; private defaultStatusLabel; private iconNameFrom; private themeStyle; private radiusToken; readonly resolvedStatus: _angular_core.Signal; readonly resolvedStatusLabel: _angular_core.Signal; normalizedBadge(): string; readonly resolvedBadgeLabel: _angular_core.Signal; readonly resolvedEmphasisLabel: _angular_core.Signal; shouldShowImage(): boolean; shouldShowIcon(): boolean; shouldShowInitials(): boolean; shouldShowDefaultIcon(): boolean; shouldShowStatus(): boolean; shouldShowBadge(): boolean; shouldRenderGroup(): boolean; readonly normalizedGroupItems: _angular_core.Signal; readonly visibleGroupItems: _angular_core.Signal; readonly groupOverflowCount: _angular_core.Signal; groupItemClasses(item: NormalizedAvatarGroupItem): string; groupItemStyle(item: NormalizedAvatarGroupItem): Record; groupOverflowStyle(): Record; groupOverlapCss(): string; groupImageFailed(index: number): boolean; onGroupImgError(index: number): void; groupIconName(item: AvatarGroupItem): string | null; groupDefaultIconName(item: AvatarGroupItem): string | null; resolvedGroupOverflowLabel(): string; readonly hasExplicitIcon: _angular_core.Signal; readonly hasDefaultIcon: _angular_core.Signal; normalizedInitials(): string; onImgError(): void; focus(): void; blur(): void; iconName(): string | null; iconSvgSafe(): SafeHtml | null; iconFontClass(): string | null; ngOnChanges(_changes: SimpleChanges): void; setInputMetadata(meta: ComponentMetadata): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class MaterialRadioGroupComponent extends SimpleBaseSelectComponent implements DoCheck { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; private disabledModeAppliedToControl; ngDoCheck(): void; radioInteractionDisabled(): boolean; radioAriaDisabled(): 'true' | null; radioAriaReadonly(): 'true' | null; readonlyEffective(): boolean; radioOptionDisabled(option: SelectOption): boolean; radioOptionAriaDisabled(option: SelectOption): 'true' | null; onRadioButtonClick(event: MouseEvent): void; onRadioButtonKeydown(event: KeyboardEvent): void; selectOption(option: SelectOption): void; radioLabelId(): string; radioHintId(): string; radioErrorId(): string; radioLabelledBy(): string | null; radioDescribedBy(): string | null; isRequiredRadio(): boolean; private syncDisabledModeControlState; setSelectMetadata(metadata: SimpleSelectMetadata): void; protected getSpecificCssClasses(): string[]; private optionsFromLegacy; private normalizeOption; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class MaterialCheckboxGroupComponent extends SimpleBaseSelectComponent implements DoCheck { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; private disabledModeAppliedToControl; ngDoCheck(): void; checkboxInteractionDisabled(): boolean; checkboxAriaDisabled(): 'true' | null; checkboxAriaReadonly(): 'true' | null; readonlyEffective(): boolean; onCheckboxControlClick(event: MouseEvent, stopShellPropagation?: boolean): void; onCheckboxControlKeydown(event: KeyboardEvent): void; private syncDisabledModeControlState; setSelectMetadata(metadata: SimpleSelectMetadata): void; setExternalControl(control: AbstractControl): void; /** Disables options when maxSelections reached */ isOptionDisabled(option: SelectOption): boolean; protected getSpecificCssClasses(): string[]; isBooleanCheckbox(): boolean; isMultipleCheckbox(): boolean; selectionMode(): 'boolean' | 'multiple'; variant(): 'default' | 'consent' | 'compact' | 'tiles'; density(): 'compact' | 'comfortable' | 'spacious'; isRequiredCheckbox(): boolean; booleanLabelId(): string; booleanDescriptionId(): string; booleanHintId(): string; booleanErrorId(): string; groupHintId(): string; groupErrorId(): string; booleanAriaLabel(): string; booleanLabelledBy(): string | null; booleanDescribedBy(): string | null; groupDescribedBy(): string | null; booleanLinks(): Array<{ label: string; href: string; target?: '_blank' | '_self'; rel?: string; }>; defaultLinkRel(target: '_blank' | '_self' | undefined): string | null; onBooleanContentClick(event: MouseEvent): void; onBooleanCheckboxChange(): void; onMultipleOptionContentClick(option: SelectOption, event: MouseEvent): void; onSelectAllContentClick(event: MouseEvent): void; selectOption(option: SelectOption): void; toggleSelectAll(): void; private shouldToggleFromBooleanContent; private shouldToggleFromMultipleContent; private toggleBooleanCheckbox; private normalizeBooleanControlValue; private coerceBooleanControlValue; private syncBooleanOperationalEvents; private humanizeName; optionLabelId(option: SelectOption): string; optionDescriptionId(option: SelectOption): string | null; optionAriaLabel(option: SelectOption): string; optionSupportingText(option: SelectOption): string | null; selectAllLabelId(): string; selectAllAriaLabel(): string; selectAllLabelText(): string; private optionDomToken; private optionsFromLegacy; private normalizeOption; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class MaterialSelectionListComponent extends SimpleBaseSelectComponent implements DoCheck { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; private disabledModeAppliedToControl; ngDoCheck(): void; selectionListInteractionDisabled(): boolean; selectionListAriaDisabled(): 'true' | null; selectionListAriaReadonly(): 'true' | null; selectionOptionDisabled(option: SelectOption): boolean; selectionOptionAriaDisabled(option: SelectOption): 'true' | null; selectionListLabelId(): string; selectionListHintId(): string; selectionListErrorId(): string; selectionListCounterId(): string; selectionListLabelledBy(): string | null; selectionListDescribedBy(): string | null; isRequiredSelectionList(): boolean; onSelectionOptionClick(event: MouseEvent): void; onSelectionOptionKeydown(event: KeyboardEvent): void; selectOption(option: SelectOption): void; toggleSelectAll(): void; private syncDisabledModeControlState; private asRecord; private mapRawOption; setSelectMetadata(metadata: SimpleSelectMetadata): void; protected getSpecificCssClasses(): string[]; onSelectionChange(event: MatSelectionListChange): void; isOptionSelected(value: unknown): boolean; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Baseline file upload field. * * This component owns local file selection, validation and preview. Persisting * the selected file remains a host/backend concern; use @praxisui/files-upload * when the flow needs presign, progress, conflict policy or storage events. */ declare class MaterialFileUploadComponent extends SimpleBaseInputComponent implements OnDestroy { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; readonly selectedFiles: _angular_core.WritableSignal; readonly previewUrl: _angular_core.WritableSignal; private externalValueSyncSubscription; readonly selectedSummaryText: _angular_core.Signal; readonly selectedDetailText: _angular_core.Signal; /** * Updates the control value when the user selects a file. */ onFileSelected(event: Event): void; /** * Exposes metadata setter for integration with dynamic form loader. */ setFileUploadMetadata(metadata: ComponentMetadata): void; fileAccept(): string | null; allowsMultiple(): boolean; imagePreviewEnabled(): boolean; isInteractionDisabled(): boolean; clearSelectedFiles(options?: { resetInput?: boolean; }): void; clearLabel(): string; clearAriaLabel(): string; selectedSummaryAriaLabel(): string; fileInputDescribedBy(): string | null; hintId(): string; errorId(): string; previewAltText(): string; writeValue(value: unknown): void; ngOnDestroy(): void; /** * CSS classes specific to the file upload wrapper. */ protected getSpecificCssClasses(): string[]; protected onActiveControlChanged(previousControl: FormControl, currentControl: FormControl): void; private metadataRecord; private updatePreview; private clearPreview; private validateSelectedFiles; private isAcceptedFile; private maxFileSize; private maxFiles; private applyFileError; private clearFileErrors; private syncSelectedFilesFromValue; private extractFilesFromValue; private isFile; private isImageFile; private hasKnownImageExtension; private formatBytes; private dynamicFieldsText; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface PreloadStatus { isPreloading: boolean; progress: number; currentComponent: string | null; totalComponents: number; loadedComponents: number; failedComponents: number; errors: string[]; } declare class ComponentPreloaderService { private readonly componentRegistry; private readonly destroyRef; private preloadCompleted; private readonly preloadedComponents; private readonly statusSubject; private readonly componentsToPreload; /** * Observable do status atual do preload */ get status$(): Observable; /** * Verifica se o preload foi completado */ isPreloadCompleted(): boolean; /** * Verifica se um componente específico foi precarregado */ isComponentPreloaded(type: string): boolean; /** * Inicializa o sistema de componentes dinâmicos * Deve ser chamado na inicialização da aplicação */ initialize(): Promise; /** * Força um novo preload (útil para desenvolvimento) */ forceReload(): Promise; /** * Preload de um componente específico (on-demand) */ preloadComponent(type: string): Promise; /** * Executa o preload de todos os componentes configurados */ private preloadComponents; /** * Atualiza o status interno do preload */ private updateStatus; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } /** * Factory function para inicialização da aplicação * Usar no app.config.ts com APP_INITIALIZER * * Executa de forma não-bloqueante para não atrasar o bootstrap da app, * mas garante que o TextInputComponent seja pré-carregado em background */ declare function initializeComponentSystem(): () => undefined; /** * Factory function para inicialização síncrona (opcional) * Use apenas se quiser aguardar o preload antes da app inicializar */ declare function initializeComponentSystemSync(): () => Promise; /** * @fileoverview Componente para exibir status do preload de componentes * * Componente opcional para debug e monitoramento do preload. * Exibe informações em tempo real sobre o carregamento dos componentes. */ declare class PreloadStatusComponent implements OnInit, OnDestroy { private readonly preloader; private readonly destroyRef; metadata: unknown; visible: boolean; status: PreloadStatus | null; autoUpdate: boolean; private externalControl; private externalControlSubscription; private statusSubscription; ngOnInit(): void; ngOnDestroy(): void; /** * Força um novo preload */ forceReload(): Promise; /** * Toggle do auto-update */ toggleAutoUpdate(): void; private applyAutoUpdateMode; private cleanupStatusSubscription; private cleanupExternalControlSubscription; private bindExternalControl; /** * Subscreve às atualizações de status em tempo real */ private subscribeToStatus; /** * Carrega status atual uma vez */ private loadCurrentStatus; setExternalControl(control: AbstractControl): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Specialized input component for telephone numbers. * * Renders a `` wrapping an `` element with * Material styling. Built on top of `SimpleBaseInputComponent` to leverage * reactive forms integration, hint/error messaging and validation hooks. */ declare class PhoneInputComponent extends SimpleBaseInputComponent { /** Emits whenever validation state changes. */ readonly validationChange: _angular_core.OutputEmitterRef; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; private readonly allowedCharactersValidator; private readonly semanticPhoneValidator; ngOnInit(): void; writeValue(value: unknown): void; protected registerInputElement(el: HTMLElement): void; protected applyNativeDisplayMask(): void; handleInput(event: Event): void; handleBlur(): void; validateField(): Promise; protected getSpecificCssClasses(): string[]; /** Applies strongly typed metadata to the component. */ setInputMetadata(metadata: MaterialPhoneMetadata): void; protected onActiveControlChanged(_previousControl: FormControl, _currentControl: FormControl): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; isReadonlyEffective(): boolean; private metadataAsField; private phoneMetadata; private syncPhoneValidators; private validatePhoneControl; private isPhoneRuntimeEnabled; private metadataFlag; private resolveDefaultCountry; private resolveAllowedCountries; private resolvePhoneFormat; private resolveModelValue; private formatPhoneDisplayValue; private applyPhoneDisplayValue; private setNativeDisplayValue; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Specialized input component for HTML time inputs. * * Renders a `` containing an `` element * with optional min/max/step constraints, basic validation and hint support. * Built on top of the `SimpleBaseInputComponent` to reuse core features * like reactive forms integration and error handling. */ declare class TimeInputComponent extends SimpleBaseInputComponent { /** Emits whenever validation state changes. */ readonly validationChange: _angular_core.OutputEmitterRef; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; ngOnInit(): void; validateField(): Promise; protected getSpecificCssClasses(): string[]; /** Applies component metadata with strong typing. */ setInputMetadata(metadata: MaterialTimeInputMetadata): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; /** * Time input is officially minute-granularity only. * Non-minute step values fallback to 60s. */ normalizedStep(): number | null; isReadonlyEffective(): boolean; private metadataRecord; private metadataAsField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Specialized input component for HTML URL inputs. * * Renders a `` containing an `` element * with basic validation and hint support. Built on top of the * `SimpleBaseInputComponent` to leverage common functionality such as * reactive forms integration and error handling. */ declare class UrlInputComponent extends SimpleBaseInputComponent { /** Emits whenever validation state changes. */ readonly validationChange: _angular_core.OutputEmitterRef; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; ngOnInit(): void; validateField(): Promise; protected getSpecificCssClasses(): string[]; /** Applies component metadata with strong typing. */ setInputMetadata(metadata: MaterialUrlInputMetadata): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; isReadonlyEffective(): boolean; private metadataAsField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Specialized input component for HTML week inputs. * * Renders a `` containing an `` element * with optional min/max constraints, basic validation and hint support. * Built on top of the `SimpleBaseInputComponent` to reuse core features * like reactive forms integration and error handling. */ declare class WeekInputComponent extends SimpleBaseInputComponent { /** Emits whenever validation state changes. */ readonly validationChange: _angular_core.OutputEmitterRef; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; ngOnInit(): void; validateField(): Promise; protected getSpecificCssClasses(): string[]; /** Applies component metadata with strong typing. */ setInputMetadata(metadata: MaterialWeekInputMetadata): void; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; isReadonlyEffective(): boolean; private metadataAsField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Basic color picker component leveraging the native input type="color". * * Renders a text field displaying the selected color value and a palette * icon that opens the browser's color picker. This acts as a starting point * for a more advanced color selection experience. */ declare class MaterialColorPickerComponent extends SimpleBaseInputComponent { private pickerRef; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; /** Applies component metadata with strong typing. */ setInputMetadata(metadata: MaterialColorPickerMetadata): void; /** Opens the native color picker dialog. */ openPicker(): void; /** Handles color selection from the native input. */ onNativeColorChange(event: Event): void; protected getSpecificCssClasses(): string[]; effectiveFloatLabelBehavior(): 'always'; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; isReadonlyEffective(): boolean; previewColor(): string; colorPaletteAriaLabel(): string; private defaultColor; private defaultHex; private resolveCssColor; private toHex; private colorProbe?; private ensureColorProbe; private isBrowser; private metadataAsField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type SelectionMode = 'continuous' | 'single'; type PrecisionMode = 'item' | 'half'; interface RatingIconState { index: number; filled: boolean; half: boolean; hover: boolean; } declare class MaterialRatingComponent extends SimpleBaseInputComponent implements ControlValueAccessor { itemsCount: number; selection: SelectionMode; precision: PrecisionMode; set allowHalf(value: boolean | undefined); get allowHalf(): boolean; icon?: string; svgIcon?: string; svgIconOutline?: string; outlineIcon?: string; disabled: boolean; disabledMode: boolean; readonlyMode: boolean; presentationMode: boolean; tabindex: number; size: 'small' | 'medium' | 'large'; ariaLabel?: string; ratingColor?: string; outlineColor?: string; itemTemplate?: TemplateRef; itemsRoot?: ElementRef; value: number | null; private hoverIndex; private hoverHalf; private normalizeCssColor; writeValue(obj: unknown): void; setDisabledState(isDisabled: boolean): void; isFilled(index: number): boolean; showHalf(index: number): boolean; iconState(index: number): RatingIconState; onMouseMove(ev: MouseEvent, index: number): void; onPointerMove(ev: PointerEvent, index: number): void; onPointerDown(ev: PointerEvent, index: number): void; onMouseLeave(): void; onClick(ev: MouseEvent, index: number): void; onKeyDown(ev: KeyboardEvent): void; private computeValueFromIndex; private updateHoverFromPointer; private getVisualValue; private getActiveIndexAndHalf; private applyValue; ratingValueText(): string; effectiveTabIndex(): number; disabledEffective(): boolean; readonlyEffective(): boolean; ratingAriaLabel(): string; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; setInputMetadata(meta: unknown): void; private parseSize; private parseSelectionMode; private interactionBlocked; private asRecord; private metadataAsField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type PickerView = 'gradient' | 'palette'; type ColorFormat = 'hex' | 'rgb' | 'rgba' | 'hsl'; interface GradientSettings { showOpacity?: boolean; channel?: 'hsv' | 'hsl'; } interface PaletteSettings { preset?: 'basic' | 'office' | 'material' | string; colors?: string[]; columns?: number; } interface PopupSettings { width?: number | string; anchor?: Element; appendTo?: Element | unknown; } declare class PdxColorPickerComponent extends SimpleBaseInputComponent implements ControlValueAccessor, OnChanges { private readonly bottomSheet; actionsLayout: 'start' | 'end'; activeView: PickerView; adaptiveMode: boolean; adaptiveTitle?: string; adaptiveSubtitle?: unknown; clearButton: boolean; disabledMode: boolean; readonlyMode: boolean; visible: boolean; presentationMode: boolean; fillMode: 'solid' | 'flat' | 'outline'; format: ColorFormat; gradientSettings?: GradientSettings; icon?: string; iconClass?: string | string[] | Record; svgIcon?: unknown; paletteSettings?: PaletteSettings; popupSettings?: PopupSettings; preview: boolean; rounded: 'none' | 'small' | 'medium' | 'large' | 'full'; size: 'small' | 'medium' | 'large'; tabindex: number; views: PickerView[]; maxRecent: number; showRecent: boolean; clearButtonConfig: { enabled: boolean; icon?: string; iconColor?: string; tooltip?: string; ariaLabel?: string; showOnlyWhenFilled?: boolean; }; readonly valueChange: _angular_core.OutputEmitterRef; readonly open: _angular_core.OutputEmitterRef; readonly close: _angular_core.OutputEmitterRef; readonly cancel: _angular_core.OutputEmitterRef; readonly activeViewChange: _angular_core.OutputEmitterRef; readonly activeColorClick: _angular_core.OutputEmitterRef; readonly focusEvent: _angular_core.OutputEmitterRef; readonly blurEvent: _angular_core.OutputEmitterRef; toggleBtn?: ElementRef; private menuTrigger?; private readonly current; private readonly draft; private readonly draftAlpha; private readonly configTick; panelWidthPx: number; constructor(bottomSheet: MatBottomSheet); ngOnChanges(_changes: SimpleChanges): void; private resolveClearButtonConfig; showClearAction(): boolean; clearActionTooltip(): string | null; clearActionAriaLabel(): string; clearActionLabel(): string; colorPickerButtonTooltip(): string; colorPickerButtonAriaLabel(): string; copyButtonTooltip(): string; copyButtonAriaLabel(): string; gradientTabLabel(): string; paletteTabLabel(): string; opacityLabel(): string; recentSectionLabel(): string; addPaletteColorLabel(): string; colorSwatchAriaLabel(color: string): string; cancelActionLabel(): string; applyActionLabel(): string; ngOnInit(): void; writeValue(obj: unknown): void; handleFocus(): void; handleBlur(): void; openPicker(): void; onClose(): void; selectedTabIndex: _angular_core.WritableSignal; readonly showGradient: _angular_core.Signal; readonly showPalette: _angular_core.Signal; onTabIndexChange(i: number): void; draftPreview: _angular_core.Signal; draftSolidHex: _angular_core.Signal; draftOpacity: _angular_core.Signal; previewBackground(): string; onNativeGradient(ev: Event): void; onOpacity(ev: Event): void; private readonly customColors; readonly recentColors: _angular_core.WritableSignal; paletteColors: _angular_core.Signal; trackColor(_: number, c: string): string; onSwatchClick(c: string): void; addPaletteColor(): void; private pushRecent; copyDraft(): void; isSelected(c: string): boolean; onClear(): void; onCancel(): void; onApply(): void; readonlyEffective(): boolean; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; protected getSpecificCssClasses(): string[]; effectiveFloatLabelBehavior(): 'always'; setInputMetadata(meta: ComponentMetadata | null): void; private currentMetadataRecord; private asRecord; private toFormat; private toHex; private toRgb; private toHsl; private extractAlpha; private clamp01; private buildPaletteColors; private defaultColor; private defaultHex; private buildThemePalette; private resolveCssColor; private colorProbe?; private ensureColorProbe; private toComparableColor; private isBrowser; private coerceWidth; private loadFromStorage; private saveToStorage; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface SliderDistributionBar { id: string; ratio: number; selected: boolean; background?: string; color?: string; label?: string; } interface SliderSemanticBandView { id: string; startPercent: number; widthPercent: number; tone: RangeSliderSemanticBand['tone']; color?: string; label?: string; } declare class PdxMaterialRangeSliderComponent extends SimpleBaseInputComponent implements OnInit, AfterViewChecked { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; metadata: _angular_core.WritableSignal; private activeRangeThumb; readonly rangeGroup: FormGroup<{ start: FormControl; end: FormControl; }>; readonly isRangeMode: _angular_core.Signal; readonly displayWithFn: _angular_core.Signal<(value: number) => string>; readonly sliderStep: _angular_core.Signal; readonly valueLabelEnabled: _angular_core.Signal; readonly showTickMarks: _angular_core.Signal; readonly trackMode: _angular_core.Signal<_praxisui_core.RangeSliderTrackMode>; readonly sliderSize: _angular_core.Signal<"small" | "large" | "medium">; readonly markLabels: _angular_core.Signal; readonly semanticBandViews: _angular_core.Signal; distributionBars(): SliderDistributionBar[]; disabledEffective(): boolean; readonlyEffective(): boolean; sliderInteractionDisabled(): boolean; sliderAriaDisabled(): 'true' | null; sliderAriaReadonly(): 'true' | null; rangeAriaInvalidAttribute(): 'true' | null; rangeThumbAriaLabel(thumb: 'start' | 'end'): string; rangeThumbLabelId(thumb: 'start' | 'end'): string; readonly errorMessage: _angular_core.Signal; ngOnInit(): void; ngAfterViewChecked(): void; /** * Overrides writeValue to handle both single and range modes. */ writeValue(value: unknown): void; setExternalControl(control: AbstractControl): void; setInputMetadata(metadata: MaterialRangeSliderMetadata): void; /** * Sets the component metadata and re-initializes validators. * @param metadata The metadata for the component. */ setSliderMetadata(metadata: MaterialRangeSliderMetadata): void; protected setMetadata(metadata: MaterialRangeSliderMetadata): void; protected getSpecificCssClasses(): string[]; markPosition(value: number): number; formatSliderValue(value: unknown): string; onRangePointerDown(event: PointerEvent): void; private isPointerInteractionBlocked; private syncNativeThumbAria; private applyNativeThumbAria; private setOrRemoveAttribute; private closestRangeThumb; private updateActiveRangeThumbFromPointer; private clientXToSliderValue; private valueToTrackClientX; private snapSliderValue; private trackElement; private syncRangeGroupFromControlValue; private isRangeSliderValue; private resolveMarks; private parseJsonArray; private parseJsonObject; private normalizeTone; private resolveSemanticBands; private resolveDistributionBars; private normalizeDistributionColorMode; private isDistributionBarSelected; private resolveDistributionBarBackground; private stringConfig; private scaleValue; private formatStorageValue; private formatCurrencyValue; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface TransferListMetadata extends SimpleSelectMetadata { transferOptions?: Array<{ label?: string; text?: string; value?: unknown; disabled?: boolean; }>; leftLabel?: string; rightLabel?: string; leftPlaceholder?: string; rightPlaceholder?: string; leftEmptyText?: string; rightEmptyText?: string; noResultsText?: string; } declare class MaterialTransferListComponent extends SimpleBaseSelectComponent { readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; leftLabel: string; rightLabel: string; leftPlaceholder: string; rightPlaceholder: string; leftEmptyText: string; rightEmptyText: string; noResultsText: string; readonly leftOptions: _angular_core.WritableSignal[]>; readonly rightOptions: _angular_core.WritableSignal[]>; readonly leftFilter: _angular_core.WritableSignal; readonly rightFilter: _angular_core.WritableSignal; readonly filteredLeft: _angular_core.Signal[]>; readonly filteredRight: _angular_core.Signal[]>; constructor(); setInputMetadata(metadata: TransferListMetadata): void; setSelectMetadata(metadata: TransferListMetadata): void; moveSelectedToRightAriaLabel(): string; moveAllToRightAriaLabel(): string; moveSelectedToLeftAriaLabel(): string; moveAllToLeftAriaLabel(): string; leftListAriaLabel(): string; rightListAriaLabel(): string; leftEmptyMessage(): string; rightEmptyMessage(): string; isMaxSelectionReached(): boolean; isInteractionDisabled(): boolean; ngOnInit(): void; private updateListsFromValue; getSelectedOptions(list: MatSelectionList): SelectOption[]; moveRight(options: SelectOption[]): void; moveLeft(options: SelectOption[]): void; moveAllToRight(): void; moveAllToLeft(): void; drop(event: CdkDragDrop[]>): void; private syncControl; onLeftFilterInput(event: Event): void; onRightFilterInput(event: Event): void; private equalsOptionValue; private extractId; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class PdxYearInputComponent extends SimpleBaseInputComponent { private get meta(); readonly minYear: _angular_core.Signal; readonly maxYear: _angular_core.Signal; readonly step: _angular_core.Signal; readonlyMode: boolean; disabledMode: boolean; visible: boolean; presentationMode: boolean; isReadonlyEffective(): boolean; ngOnInit(): void; setInputMetadata(metadata: MaterialYearInputMetadata): void; private applySpecificValidators; errorStateMatcher(): _angular_material_core.ErrorStateMatcher; onYearInput(event: Event): void; protected getSpecificCssClasses(): string[]; private metadataAsField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** Metadata for TextInputComponent */ declare const PDX_TEXT_INPUT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_EDITABLE_COLLECTION_COMPONENT_METADATA: ComponentDocMeta; /** Metadata for NumberInputComponent */ declare const PDX_NUMBER_INPUT_COMPONENT_METADATA: ComponentDocMeta; /** * Metadata for MaterialSelectComponent * * Documenta inputs/description for catalogs and builders. This component * does not expose its own outputs (uses ControlValueAccessor), so no * events are listed here. */ declare const PDX_MATERIAL_SELECT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_SELECT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_SEARCHABLE_SELECT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_ASYNC_SELECT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_ENTITY_LOOKUP_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_ENTITY_LOOKUP_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_MULTI_SELECT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_TOGGLE_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_RANGE_SLIDER_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_PERIOD_RANGE_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_YEAR_RANGE_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_MONTH_RANGE_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_DATE_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_DATE_RANGE_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_TIME_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_TIME_RANGE_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_TREE_SELECT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_RATING_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_DISTANCE_RADIUS_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_PIPELINE_STATUS_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_SCORE_PRIORITY_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_RELATIVE_PERIOD_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_SENTIMENT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_COLOR_LABEL_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_NUMBER_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_CURRENCY_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_CURRENCY_RANGE_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_COLOR_INPUT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_DATE_INPUT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_DATETIME_LOCAL_INPUT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_EMAIL_INPUT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_DATEPICKER_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_DATE_RANGE_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_CURRENCY_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_TEXTAREA_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_SLIDER_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_AVATAR_COMPONENT_METADATA: ComponentDocMeta; /** Optional provider to auto-register the metadata for editors/palettes */ declare function provideMaterialAvatarMetadata(): Provider; declare const PDX_MATERIAL_TIMEPICKER_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_BUTTON_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_BUTTON_TOGGLE_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_CHECKBOX_GROUP_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_CHIPS_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_COLORPICKER_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_RATING_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_COLOR_PICKER_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_CPF_CNPJ_INPUT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_FILE_UPLOAD_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_MULTI_SELECT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_MULTI_SELECT_TREE_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_RADIO_GROUP_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_SEARCHABLE_SELECT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_ASYNC_SELECT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_AUTOCOMPLETE_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_SELECTION_LIST_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_SLIDE_TOGGLE_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_TRANSFER_LIST_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_TREE_SELECT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_PRICE_RANGE_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_RANGE_SLIDER_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MONTH_INPUT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_PASSWORD_INPUT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_PHONE_INPUT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_PRELOAD_STATUS_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_SEARCH_INPUT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_INPUT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_PHONE_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_INLINE_AUTOCOMPLETE_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_TIME_INPUT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_URL_INPUT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_WEEK_INPUT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_MATERIAL_TIME_RANGE_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_YEAR_INPUT_COMPONENT_METADATA: ComponentDocMeta; declare const PDX_FIELD_SHELL_COMPONENT_METADATA: ComponentDocMeta; declare class DateUtilsService { /** * Parses different date representations into a `Date` object. * Accepts ISO strings, `Date` instances or numeric arrays in the form * `[year, month, day, hour?, minute?, second?, millisecond?]`. * Returns `null` when the input cannot be parsed. */ parseDate(value: any): Date | null; getDefaultDateFormat(controlType?: string): string; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } interface ShortcutHandler { callback: () => void; description?: string; componentId?: string; priority?: number; } interface ShortcutInfo { shortcut: string; handlers: ShortcutHandler[]; } declare class KeyboardShortcutService { private readonly destroyRef; private readonly shortcuts; private isListening; constructor(); /** * Registra um atalho de teclado */ registerShortcut(shortcut: string, handler: ShortcutHandler): () => void; /** * Remove um atalho de teclado específico */ unregisterShortcut(shortcut: string, handler: ShortcutHandler): void; /** * Remove todos os atalhos de um componente específico */ unregisterComponentShortcuts(componentId: string): void; /** * Lista todos os atalhos registrados */ getRegisteredShortcuts(): ShortcutInfo[]; /** * Verifica se um atalho está registrado */ hasShortcut(shortcut: string): boolean; /** * Executa manualmente um atalho (para testes) */ executeShortcut(shortcut: string): boolean; /** * Inicia a escuta de eventos de teclado */ private startListening; /** * Verifica se deve processar o evento */ private shouldProcessEvent; /** * Converte um evento de teclado em string de atalho */ private eventToShortcut; /** * Normaliza uma string de atalho */ private normalizeShortcut; /** * Converte atalho em formato legível */ formatShortcut(shortcut: string): string; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } /** * Interfaces essenciais para o sistema de registro de componentes * Versão ultra-simplificada sem metadados redundantes */ /** * Registro de um componente no sistema com cache inteligente */ interface ComponentRegistration { /** Factory para carregamento lazy */ factory: () => Promise>; /** Promise compartilhada de carregamento em voo para evitar duplicidade concorrente */ loadingPromise?: Promise | null>; /** Componente em cache após carregamento */ cached?: Type; /** Timestamp do cache para validação TTL */ cachedAt?: number; /** Contador de tentativas de carregamento */ loadAttempts?: number; /** Último erro de carregamento */ lastError?: Error; } declare const CACHE_TTL: number; declare const MAX_LOAD_ATTEMPTS = 3; declare const RETRY_DELAY = 1000; /** * Interface do serviço de registro */ interface IComponentRegistry { /** * Registra um novo componente */ register(type: FieldControlType, factory: () => Promise>): void; /** * Obtém um componente registrado */ getComponent(type: FieldControlType): Promise | null>; /** * Verifica se um tipo está registrado */ isRegistered(type: FieldControlType): boolean; /** * Lista tipos registrados */ getRegisteredTypes(): FieldControlType[]; } /** * Resultado de carregamento de componente */ interface ComponentLoadResult { /** Componente carregado */ component: Type | null; /** Sucesso no carregamento */ success: boolean; /** Erro se houver */ error?: Error; } /** * Estatísticas do registro */ interface RegistryStats { /** Número de componentes registrados */ registeredComponents: number; /** Número de componentes em cache */ cachedComponents: number; /** Tipos registrados */ registeredTypes: FieldControlType[]; } declare class ComponentRegistryService implements IComponentRegistry { private readonly selectorRegistry; private readonly selectorBaseMap; private readonly disableSelectorDefaults; private readonly logger; private readonly logContext; /** * Registro interno de componentes */ private readonly registry; constructor(); /** * Registra um novo componente */ register(type: FieldControlType, factory: () => Promise<_angular_core.Type>): void; /** * Obtém um componente registrado com cache inteligente * Handles both string literals and enum values for backward compatibility */ getComponent(type: FieldControlType | string): Promise<_angular_core.Type | null>; /** * Verifica se um tipo está registrado * Handles both string literals and enum values */ isRegistered(type: FieldControlType | string): boolean; /** * Lista todos os tipos registrados */ getRegisteredTypes(): FieldControlType[]; /** * Limpa o cache de todos os componentes */ clearCache(): void; /** * Obtém estatísticas do registro */ getStats(): RegistryStats; /** * Limpa cache de componentes específicos ou todos */ clearCacheForType(type: FieldControlType): void; /** * Remove um componente do registro */ unregister(type: FieldControlType): boolean; /** * Pré-carrega componentes especificados */ preload(types: FieldControlType[]): Promise; /** * Normalizes control type to handle enum values and canonical inline compact controls. */ private normalizeControlType; /** * Registra componentes Material Design padrão */ private initializeDefaultComponents; private registerDefaultSelectors; /** * Verifica se o cache de um componente é válido */ private isCacheValid; /** * Carrega componente com lógica de retry */ private loadComponentWithRetry; private performLoadWithRetry; /** * Verifica se está em ambiente de produção */ private isProduction; /** * Utilitário para delay */ private delay; private buildLogOptions; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } /** * @fileoverview Providers para configuração da biblioteca praxis-dynamic-fields * * Providers necessários para o funcionamento correto da biblioteca, * incluindo HttpClient e outros serviços essenciais. */ /** * Providers essenciais para praxis-dynamic-fields * * Inclui HttpClient para data loading e outros providers necessários. * * Observação: FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS deve ser fornecido no root injector. * Providers em módulos lazy não afetam o singleton do registry. * * @example * ```typescript * // No app.config.ts ou main.ts * import { providePraxisDynamicFields } from 'praxis-dynamic-fields'; * * bootstrapApplication(AppComponent, { * providers: [ * ...providePraxisDynamicFields(), * // outros providers... * ] * }); * ``` */ declare function providePraxisDynamicFields(): (Provider | EnvironmentProviders)[]; /** * Providers básicos sem HttpClient (para casos onde já está configurado) * * Observação: FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS deve ser fornecido no root injector. */ declare function providePraxisDynamicFieldsCore(): Provider[]; /** * Providers sem registrar os defaults de selector -> controlType. * * Observação: "NoDefaults" aqui significa apenas opt-out dos defaults de * selector -> controlType. O registro editorial canônico da lib permanece * ativo porque ele faz parte da semântica publicada da superfície, não de um * fallback opcional. */ declare function providePraxisDynamicFieldsNoDefaults(): (Provider | EnvironmentProviders)[]; /** * Providers core sem registrar os defaults de selector -> controlType. * * Observação: "NoDefaults" aqui significa apenas opt-out dos defaults de * selector -> controlType. O registro editorial canônico da lib permanece * ativo porque ele faz parte da semântica publicada da superfície, não de um * fallback opcional. */ declare function providePraxisDynamicFieldsCoreNoDefaults(): Provider[]; type DynamicFieldCatalogTrack = 'primary-form' | 'inline-filter'; type DynamicFieldCatalogFamily = 'text' | 'numbers-range' | 'date-time' | 'selection' | 'trees-lists' | 'toggle-choice' | 'upload-color-visual'; type DynamicFieldCatalogStatus = 'stable' | 'preview' | 'experimental' | 'partial-docs'; type DynamicFieldDataSourceKind = 'local' | 'remote' | 'mixed' | 'specialized'; type DynamicFieldStateKey = 'default' | 'filled' | 'disabled' | 'readonly' | 'presentation' | 'error'; interface DynamicFieldDocLinks { catalogSlug: string; detailFragment: string; selectionGuideSlug: string; overviewSlug?: string; jsonApiPath?: string; } interface DynamicFieldSnippetRecipe { language: 'ts' | 'json'; snippet: string; note?: string; } type DynamicFieldCatalogIconKey = 'text' | 'numeric' | 'date-time' | 'selection' | 'tree-list' | 'toggle' | 'visual' | 'action' | 'automation'; type DynamicFieldCatalogIconTone = 'slate' | 'blue' | 'green' | 'amber' | 'violet' | 'rose' | 'teal'; interface DynamicFieldCatalogIconSemantic { key: DynamicFieldCatalogIconKey; tone: DynamicFieldCatalogIconTone; } type DynamicFieldInteractionPattern = 'single-value' | 'multi-line' | 'single-choice' | 'multi-choice' | 'lookup' | 'range' | 'toggle' | 'visual' | 'trigger'; interface DynamicFieldPreviewStateRecipe { state: DynamicFieldStateKey; label: string; supported: boolean; metadataPatch?: Record; initialValue?: unknown; errorMessage?: string; note?: string; } interface DynamicFieldPreviewRecipe { recipeId: string; fieldName: string; label: string; description?: string; baseMetadata: Record; states: DynamicFieldPreviewStateRecipe[]; presets?: DynamicFieldPreviewPreset[]; } interface DynamicFieldPreviewPreset { id: string; label: string; description: string; metadataPatch?: Record; /** * Default value for this preset after the active state metadata is applied. * State recipes still win when they define their own `initialValue`, except * for explicit entries in `stateInitialValues`. */ initialValue?: unknown; /** * Per-state value overrides for this preset. Precedence: * `stateInitialValues[state]` -> state recipe `initialValue` -> preset * `initialValue` -> default state seed -> generated fallback value. */ stateInitialValues?: Partial>; } interface DynamicFieldCatalogEntry { id: string; controlType: FieldControlType | string; track: DynamicFieldCatalogTrack; family: DynamicFieldCatalogFamily; status: DynamicFieldCatalogStatus; friendlyName: string; description: string; tags: string[]; intentExamples: string[]; valueShape: string; recommendedWhen: string[]; avoidWhen: string[]; dataSourceKind: DynamicFieldDataSourceKind; supportsStates: DynamicFieldStateKey[]; docs: DynamicFieldDocLinks; previewRecipe: DynamicFieldPreviewRecipe; snippetRecipe: DynamicFieldSnippetRecipe; icon?: DynamicFieldCatalogIconSemantic; interactionPattern: DynamicFieldInteractionPattern; a11yNotes?: string[]; themingNotes?: string[]; } declare const DYNAMIC_FIELD_DEFAULT_STATE_RECIPE: DynamicFieldPreviewStateRecipe; declare const DYNAMIC_FIELD_FILLED_STATE_RECIPE: DynamicFieldPreviewStateRecipe; declare const DYNAMIC_FIELD_DISABLED_STATE_RECIPE: DynamicFieldPreviewStateRecipe; declare const DYNAMIC_FIELD_READONLY_STATE_RECIPE: DynamicFieldPreviewStateRecipe; declare const DYNAMIC_FIELD_PRESENTATION_STATE_RECIPE: DynamicFieldPreviewStateRecipe; declare const DYNAMIC_FIELD_ERROR_STATE_RECIPE: DynamicFieldPreviewStateRecipe; declare const DYNAMIC_FIELD_BASE_STATE_RECIPES: DynamicFieldPreviewStateRecipe[]; declare function createDynamicFieldPreviewRecipe(input: { recipeId: string; fieldName: string; label: string; controlType: string; description?: string; metadata?: Record; states?: DynamicFieldPreviewStateRecipe[]; supportedStates?: DynamicFieldStateKey[]; }): DynamicFieldPreviewRecipe; declare const DYNAMIC_FIELDS_PLAYGROUND_CATALOG: DynamicFieldCatalogEntry[]; declare const CONTROL_TYPE_AI_CATALOGS: Partial>; declare function getControlTypeCatalog(controlType?: FieldControlType | string | null): CapabilityCatalog; declare const TEXT_INPUTS_AI_CAPABILITIES: CapabilityCatalog; declare const NUMERIC_INPUTS_AI_CAPABILITIES: CapabilityCatalog; declare module '@praxisui/core' { interface AiCapabilityCategoryMap { localization: true; } } declare const DATE_CONTROLS_AI_CAPABILITIES: CapabilityCatalog; declare const LIST_CONTROLS_AI_CAPABILITIES: CapabilityCatalog; declare const SELECT_CONTROLS_AI_CAPABILITIES: CapabilityCatalog; declare const CHIPS_CONTROLS_AI_CAPABILITIES: CapabilityCatalog; declare const TOGGLE_CONTROLS_AI_CAPABILITIES: CapabilityCatalog; declare const TREE_CONTROLS_AI_CAPABILITIES: CapabilityCatalog; declare const TIME_RANGE_AI_CAPABILITIES: CapabilityCatalog; declare const FILE_UPLOAD_AI_CAPABILITIES: CapabilityCatalog; declare const COLOR_CONTROLS_AI_CAPABILITIES: CapabilityCatalog; declare const PRICE_RANGE_AI_CAPABILITIES: CapabilityCatalog; declare const BRAZIL_INPUTS_AI_CAPABILITIES: CapabilityCatalog; declare const DISPLAY_ACTION_AI_CAPABILITIES: CapabilityCatalog; declare const YEAR_INPUT_AI_CAPABILITIES: CapabilityCatalog; declare const PRAXIS_DYNAMIC_FIELDS_AUTHORING_MANIFEST: ComponentAuthoringManifest; declare const PRAXIS_DYNAMIC_FIELDS_AUTHORING_PROFILES: ManifestControlProfile[]; /** * @fileoverview Custom Error State Matcher for Praxis Dynamic Fields * * Implements configurable error state matching strategies for Material Design * components based on field metadata configuration. * * This resolves CRITICAL ISSUE #8: ErrorStateMatcher not implemented */ type ErrorStateStrategy = 'default' | 'showOnDirtyAndInvalid' | 'showOnSubmitted' | 'showImmediately'; /** * Custom Error State Matcher that implements configurable strategies * for when to show validation errors in Material components. */ declare class PraxisErrorStateMatcher implements ErrorStateMatcher { private strategy; constructor(strategy?: ErrorStateStrategy); /** * Determines if a control should be considered to be in an error state. * * @param control - The form control to check * @param form - The parent form (if any) * @returns true if the control should show errors */ isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean; } declare function createErrorStateMatcher(strategy?: ErrorStateStrategy): ErrorStateMatcher; /** * Determines the appropriate error state strategy based on component context */ declare function inferErrorStateStrategy(fieldType: string, isLongForm?: boolean, userPreference?: ErrorStateStrategy): ErrorStateStrategy; /** * Helper function to get ErrorStateMatcher for a dynamic field component */ declare function getErrorStateMatcherForField(metadata: any): ErrorStateMatcher; /** * @fileoverview Sistema de logging inteligente para componentes dinâmicos * * Reduz spam de logs e permite controle fino sobre o que é exibido no console. * Especialmente útil para evitar logs repetitivos do DynamicFieldLoader. */ type LoggerLevel = 'error' | 'warn' | 'info' | 'debug' | 'trace'; interface LoggerConfig { /** Nível mínimo de log */ level: LoggerLevel; /** Prefixos para filtrar (ex: ['DynamicFieldLoader']) */ enabledPrefixes: string[]; /** Prefixos para silenciar */ silencedPrefixes: string[]; /** Throttling para logs repetitivos */ throttleRepetitive: boolean; /** Limite de logs iguais consecutivos */ repetitiveThreshold: number; /** Backend opcional para integrar com logger central do core */ backend?: unknown | null; } declare class DynamicFieldsLogger { private config; private repetitiveMessages; /** * Configura o logger globalmente */ configure(config: Partial): void; /** * Habilita debug para um componente específico */ enableDebugFor(prefix: string): void; /** * Silencia logs de um componente específico */ silencePrefix(prefix: string): void; /** * Log inteligente que considera configuração e throttling */ log(level: LoggerLevel, message: string, data?: any): void; /** * Shortcuts para diferentes níveis */ error(message: string, data?: any): void; warn(message: string, data?: any): void; info(message: string, data?: any): void; debug(message: string, data?: any): void; trace(message: string, data?: any): void; /** * Limpa contadores de mensagens repetitivas (útil para testes) */ clearRepetitiveCounters(): void; private shouldLog; private isRepetitive; private cleanup; private buildCoreLoggerContext; private extractMessagePrefix; private getConsoleFn; } declare const logger: DynamicFieldsLogger; declare function configureDynamicFieldsLogger(config: Partial): void; declare function enableDebugForComponent(componentName: string): void; declare function silenceComponent(componentName: string): void; declare const LoggerPresets: { /** Silencia logs repetitivos mas mantém erros e warnings */ PRODUCTION: { level: LoggerLevel; silencedPrefixes: string[]; throttleRepetitive: boolean; repetitiveThreshold: number; }; /** Habilita debug para componentes específicos */ DEVELOPMENT: { level: LoggerLevel; silencedPrefixes: string[]; throttleRepetitive: boolean; repetitiveThreshold: number; }; /** Máximo de logs para debug profundo */ VERBOSE: { level: LoggerLevel; enabledPrefixes: never[]; silencedPrefixes: never[]; throttleRepetitive: boolean; repetitiveThreshold: number; }; /** Silencia quase tudo exceto erros críticos */ SILENT: { level: LoggerLevel; silencedPrefixes: string[]; throttleRepetitive: boolean; repetitiveThreshold: number; }; }; type DynamicFieldsLoggerLevel = 'error' | 'warn' | 'info' | 'debug' | 'trace'; interface DynamicFieldsLoggerContext { lib?: string; component?: string; [key: string]: unknown; } interface DynamicFieldsCoreLogOptions { context?: DynamicFieldsLoggerContext; data?: unknown; dedupeKey?: string; throttleKey?: string; skipThrottle?: boolean; } type DynamicFieldsLevelMethod = (message: string, options?: DynamicFieldsCoreLogOptions) => void; interface DynamicFieldsCoreLoggerBackend { log?: (level: DynamicFieldsLoggerLevel, message: string, options?: DynamicFieldsCoreLogOptions) => void; error?: DynamicFieldsLevelMethod; warn?: DynamicFieldsLevelMethod; info?: DynamicFieldsLevelMethod; debug?: DynamicFieldsLevelMethod; trace?: DynamicFieldsLevelMethod; } declare const PRAXIS_DYNAMIC_FIELDS_LOGGER_BACKEND: InjectionToken; declare function setDynamicFieldsLoggerBackend(backend: unknown): void; declare function clearDynamicFieldsLoggerBackend(): void; declare function bindDynamicFieldsLoggerBackendFromInjector(injector: Injector): void; declare function emitToDynamicFieldsLoggerBackend(level: DynamicFieldsLoggerLevel, message: string, data: unknown, context: DynamicFieldsLoggerContext): boolean; /** * @fileoverview Utilitários para mapear JSON Schema para FieldMetadata * * Converte estruturas JSON Schema/OpenAPI com extensões x-ui * para o formato FieldMetadata esperado pelos componentes dinâmicos. * * Lida com campos que não possuem controlType definido, * inferindo tipos apropriados baseado no schema JSON. */ /** * Interface para propriedades JSON Schema básicas */ interface JsonSchemaProperty { type?: string; format?: string; title?: string; description?: string; oneOf?: JsonSchemaProperty[]; anyOf?: JsonSchemaProperty[]; 'x-ui'?: { controlType?: string; label?: string; required?: boolean; [key: string]: any; }; $ref?: string; properties?: { [key: string]: JsonSchemaProperty; }; items?: JsonSchemaProperty; enum?: any[]; [key: string]: any; } /** * Interface para schema completo com required fields */ interface JsonSchema { type: string; properties: { [key: string]: JsonSchemaProperty; }; required?: string[]; [key: string]: any; } /** * Mapeia um JSON Schema completo para array de FieldMetadata * * @param schema - Schema JSON completo * @returns Array de FieldMetadata prontos para renderização * * @example * ```typescript * const schema = { * type: 'object', * properties: { * name: { type: 'string', 'x-ui': { controlType: 'input', label: 'Nome' } }, * age: { type: 'integer' }, // Sem x-ui, será inferido * email: { type: 'string', format: 'email' } // Será inferido como email * }, * required: ['name'] * }; * * const fields = mapJsonSchemaToFields(schema); * ``` */ declare function mapJsonSchemaToFields(schema: JsonSchema): FieldMetadata[]; /** * Mapeia uma propriedade individual para FieldMetadata * * @param fieldName - Nome do campo * @param property - Propriedade do schema * @param requiredFields - Lista de campos obrigatórios * @returns FieldMetadata ou null se não puder ser mapeado */ declare function mapPropertyToFieldMetadata(fieldName: string, property: JsonSchemaProperty, requiredFields?: string[]): FieldMetadata | null; /** * Valida se um schema tem a estrutura mínima necessária * * @param schema - Schema a ser validado * @returns true se válido, false caso contrário */ declare function isValidJsonSchema(schema: any): schema is JsonSchema; /** * Função de conveniência para processar metadata JSON mista * * Aceita tanto arrays de FieldMetadata quanto JSON Schema, * normalizando tudo para FieldMetadata[] * * @param input - Array de FieldMetadata ou JsonSchema * @returns Array normalizado de FieldMetadata */ declare function normalizeFormMetadata(input: FieldMetadata[] | JsonSchema): FieldMetadata[]; declare const CLEAR_BUTTON_CONTROL_TYPES: Set; declare function supportsClearButtonControlType(controlType?: string | null): boolean; export { BRAZIL_INPUTS_AI_CAPABILITIES, CACHE_TTL, CHIPS_CONTROLS_AI_CAPABILITIES, CLEAR_BUTTON_CONTROL_TYPES, COLOR_CONTROLS_AI_CAPABILITIES, CONTROL_TYPE_AI_CATALOGS, ColorInputComponent, ComponentPreloaderService, ComponentRegistryService, ConfirmDialogComponent, DATE_CONTROLS_AI_CAPABILITIES, DISPLAY_ACTION_AI_CAPABILITIES, DYNAMIC_FIELDS_PLAYGROUND_CATALOG, DYNAMIC_FIELD_BASE_STATE_RECIPES, DYNAMIC_FIELD_DEFAULT_STATE_RECIPE, DYNAMIC_FIELD_DISABLED_STATE_RECIPE, DYNAMIC_FIELD_ERROR_STATE_RECIPE, DYNAMIC_FIELD_FILLED_STATE_RECIPE, DYNAMIC_FIELD_PRESENTATION_STATE_RECIPE, DYNAMIC_FIELD_READONLY_STATE_RECIPE, DateInputComponent, DateUtilsService, DatetimeLocalInputComponent, DynamicFieldLoaderDirective, EditableCollectionComponent, EmailInputComponent, EntityLookupDialogComponent, FILE_UPLOAD_AI_CAPABILITIES, InlineAsyncSelectComponent, InlineAutocompleteComponent, InlineColorLabelComponent, InlineCurrencyComponent, InlineCurrencyRangeComponent, InlineDateComponent, InlineDateRangeComponent, InlineDistanceRadiusComponent, InlineEntityLookupComponent, InlineInputComponent, InlineMonthRangeComponent, InlineMultiSelectComponent, InlineNumberComponent, InlinePeriodRangeComponent, InlinePipelineStatusComponent, InlineRangeSliderComponent, InlineRatingComponent, InlineRelativePeriodComponent, InlineScorePriorityComponent, InlineSearchableSelectComponent, InlineSelectComponent, InlineSentimentComponent, InlineTimeComponent, InlineTimeRangeComponent, InlineToggleComponent, InlineTreeSelectComponent, InlineYearRangeComponent, KeyboardShortcutService, LIST_CONTROLS_AI_CAPABILITIES, LoggerPresets, MAX_LOAD_ATTEMPTS, MaterialAsyncSelectComponent, MaterialAutocompleteComponent, MaterialAvatarComponent, 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, NUMERIC_INPUTS_AI_CAPABILITIES, NumberInputComponent, OptionStore, PDX_COLOR_INPUT_COMPONENT_METADATA, PDX_COLOR_PICKER_COMPONENT_METADATA, PDX_DATETIME_LOCAL_INPUT_COMPONENT_METADATA, PDX_DATE_INPUT_COMPONENT_METADATA, PDX_EDITABLE_COLLECTION_COMPONENT_METADATA, PDX_EMAIL_INPUT_COMPONENT_METADATA, PDX_ENTITY_LOOKUP_COMPONENT_METADATA, PDX_FIELD_SHELL_COMPONENT_METADATA, PDX_INLINE_ASYNC_SELECT_COMPONENT_METADATA, PDX_INLINE_AUTOCOMPLETE_COMPONENT_METADATA, PDX_INLINE_COLOR_LABEL_COMPONENT_METADATA, PDX_INLINE_CURRENCY_COMPONENT_METADATA, PDX_INLINE_CURRENCY_RANGE_COMPONENT_METADATA, PDX_INLINE_DATE_COMPONENT_METADATA, PDX_INLINE_DATE_RANGE_COMPONENT_METADATA, PDX_INLINE_DISTANCE_RADIUS_COMPONENT_METADATA, PDX_INLINE_ENTITY_LOOKUP_COMPONENT_METADATA, PDX_INLINE_INPUT_COMPONENT_METADATA, PDX_INLINE_MONTH_RANGE_COMPONENT_METADATA, PDX_INLINE_MULTI_SELECT_COMPONENT_METADATA, PDX_INLINE_NUMBER_COMPONENT_METADATA, PDX_INLINE_PERIOD_RANGE_COMPONENT_METADATA, PDX_INLINE_PHONE_COMPONENT_METADATA, PDX_INLINE_PIPELINE_STATUS_COMPONENT_METADATA, PDX_INLINE_RANGE_SLIDER_COMPONENT_METADATA, PDX_INLINE_RATING_COMPONENT_METADATA, PDX_INLINE_RELATIVE_PERIOD_COMPONENT_METADATA, PDX_INLINE_SCORE_PRIORITY_COMPONENT_METADATA, PDX_INLINE_SEARCHABLE_SELECT_COMPONENT_METADATA, PDX_INLINE_SELECT_COMPONENT_METADATA, PDX_INLINE_SENTIMENT_COMPONENT_METADATA, PDX_INLINE_TIME_COMPONENT_METADATA, PDX_INLINE_TIME_RANGE_COMPONENT_METADATA, PDX_INLINE_TOGGLE_COMPONENT_METADATA, PDX_INLINE_TREE_SELECT_COMPONENT_METADATA, PDX_INLINE_YEAR_RANGE_COMPONENT_METADATA, PDX_MATERIAL_ASYNC_SELECT_COMPONENT_METADATA, PDX_MATERIAL_AUTOCOMPLETE_COMPONENT_METADATA, PDX_MATERIAL_AVATAR_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_SLIDE_TOGGLE_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, PRAXIS_DYNAMIC_FIELDS_AUTHORING_MANIFEST, PRAXIS_DYNAMIC_FIELDS_AUTHORING_PROFILES, PRAXIS_DYNAMIC_FIELDS_EDITORIAL_WAVE_1, PRAXIS_DYNAMIC_FIELDS_EN_US, PRAXIS_DYNAMIC_FIELDS_I18N, PRAXIS_DYNAMIC_FIELDS_LOGGER_BACKEND, PRAXIS_DYNAMIC_FIELDS_PT_BR, PRAXIS_DYNAMIC_FIELDS_WAVE_1_COMPONENT_METADATA, PRICE_RANGE_AI_CAPABILITIES, PasswordInputComponent, PdxColorPickerComponent, PdxMaterialRangeSliderComponent, PdxMaterialTimeRangeComponent, PdxYearInputComponent, PhoneInputComponent, PraxisErrorStateMatcher, PreloadStatusComponent, RETRY_DELAY, SELECT_CONTROLS_AI_CAPABILITIES, SearchInputComponent, SimpleBaseButtonComponent, SimpleBaseInputComponent, SimpleBaseSelectComponent, TEXT_INPUTS_AI_CAPABILITIES, TIME_RANGE_AI_CAPABILITIES, TOGGLE_CONTROLS_AI_CAPABILITIES, TREE_CONTROLS_AI_CAPABILITIES, TextInputComponent, TimeInputComponent, UrlInputComponent, WeekInputComponent, YEAR_INPUT_AI_CAPABILITIES, bindDynamicFieldsLoggerBackendFromInjector, clearDynamicFieldsLoggerBackend, configureDynamicFieldsLogger, createDynamicFieldPreviewRecipe, createErrorStateMatcher, createPraxisDynamicFieldsI18nConfig, emitToDynamicFieldsLoggerBackend, enableDebugForComponent, getControlTypeCatalog, getErrorStateMatcherForField, inferErrorStateStrategy, initializeComponentSystem, initializeComponentSystemSync, isBaseDynamicFieldComponent, isLoadingCapableComponent, isValidJsonSchema, isValueBasedComponent, logger, mapJsonSchemaToFields, mapPropertyToFieldMetadata, normalizeFormMetadata, provideMaterialAvatarMetadata, providePraxisDynamicFields, providePraxisDynamicFieldsCore, providePraxisDynamicFieldsCoreNoDefaults, providePraxisDynamicFieldsI18n, providePraxisDynamicFieldsNoDefaults, providePraxisDynamicFieldsWave1EditorialRegistry, registerPraxisDynamicFieldsWave1EditorialDescriptors, resolvePraxisDynamicFieldsText, setDynamicFieldsLoggerBackend, silenceComponent, supportsClearButtonControlType }; export type { BaseDynamicFieldComponent, BaseValidationConfig, ComponentLifecycleEvent, ComponentLoadResult, ComponentRegistration, ConfirmDialogData, DynamicFieldCatalogEntry, DynamicFieldCatalogFamily, DynamicFieldCatalogIconKey, DynamicFieldCatalogIconSemantic, DynamicFieldCatalogIconTone, DynamicFieldCatalogStatus, DynamicFieldCatalogTrack, DynamicFieldDataSourceKind, DynamicFieldDocLinks, DynamicFieldInteractionPattern, DynamicFieldLoaderRenderErrorEvent, DynamicFieldPreviewPreset, DynamicFieldPreviewRecipe, DynamicFieldPreviewStateRecipe, DynamicFieldSnippetRecipe, DynamicFieldStateKey, DynamicFieldsCoreLogOptions, DynamicFieldsCoreLoggerBackend, DynamicFieldsLoggerContext, DynamicFieldsLoggerLevel, ErrorStateStrategy, GradientSettings, IComponentRegistry, JsonSchema, JsonSchemaProperty, LoggerConfig, LoggerLevel, OptionSource, PaletteSettings, PopupSettings, PraxisDynamicFieldText, PraxisDynamicFieldsI18nOptions, PraxisDynamicFieldsI18nOverrides, PreloadStatus, RatingIconState, RegistryStats, SelectOption, ShortcutHandler, ShortcutInfo, SimpleSelectMetadata, TimeRangeValue, ValueChangeOptions };