import { EventEmitter, OnInit, OnDestroy, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';
import { MJQueryEntityExtended, MJQueryParameterEntity } from '@memberjunction/core-entities';
import { QueryParameterValues } from '../query-data-grid/models/query-grid-types';
import * as i0 from "@angular/core";
/**
* A single parameter field in the form
*/
interface ParameterField {
info: MJQueryParameterEntity;
value: string | number | boolean | Date | string[] | null;
error: string | null;
touched: boolean;
}
/**
* A slide-in form for entering query parameters before execution.
* Features:
* - Dynamic form generation from MJQueryParameterEntity metadata
* - Type-appropriate input controls (text, number, date, checkbox, multi-select)
* - Validation with helpful error messages
* - Sample values as placeholders
* - Description tooltips
*
* @example
* ```html
*
*
* ```
*/
export declare class QueryParameterFormComponent implements OnInit, OnChanges, OnDestroy {
private cdr;
/**
* The query metadata containing parameter definitions
*/
QueryInfo: MJQueryEntityExtended | null;
/**
* Initial values to populate the form (e.g., from saved state)
*/
InitialValues: QueryParameterValues;
/**
* Whether the panel is open/visible
*/
IsOpen: boolean;
/**
* Panel width in pixels
*/
PanelWidth: number;
/**
* Whether to show the overlay backdrop
*/
ShowOverlay: boolean;
/**
* Fired when user submits the form with valid parameters
*/
ParametersSubmit: EventEmitter;
/**
* Fired when panel is closed
*/
Close: EventEmitter;
Fields: ParameterField[];
HasRequiredParams: boolean;
AllRequiredFilled: boolean;
constructor(cdr: ChangeDetectorRef);
ngOnInit(): void;
ngOnChanges(changes: SimpleChanges): void;
ngOnDestroy(): void;
private buildForm;
private getInitialValue;
private parseDefaultValue;
OnValueChange(field: ParameterField, value: unknown): void;
OnDateChange(field: ParameterField, value: Date | null): void;
OnCheckboxChange(field: ParameterField, event: Event): void;
private validateField;
private validateAllFields;
private updateAllRequiredFilled;
get HasErrors(): boolean;
get CanSubmit(): boolean;
Submit(): void;
Cancel(): void;
Reset(): void;
GetInputType(param: MJQueryParameterEntity): string;
GetPlaceholder(param: MJQueryParameterEntity): string;
TrackByField(index: number, field: ParameterField): string;
GetStringValue(value: ParameterField['value']): string;
GetNumberValue(value: ParameterField['value']): number | null;
GetDateValue(value: ParameterField['value']): string;
GetBooleanValue(value: ParameterField['value']): boolean;
GetArrayDisplayValue(value: ParameterField['value']): string;
OnInputChange(field: ParameterField, event: Event): void;
OnNumberInputChange(field: ParameterField, event: Event): void;
OnDateInputChange(field: ParameterField, event: Event): void;
OnArrayInputChange(field: ParameterField, event: Event): void;
/**
* Parses array parameter input, supporting both JSON array syntax
* (`["A","B","C"]`) and plain comma-separated values (`A, B, C`).
*/
private parseArrayInput;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
}
export {};
//# sourceMappingURL=query-parameter-form.component.d.ts.map