import { ChangeDetectorRef, EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; import { StepDetailsDrawerRef } from './step-details-drawer-ref'; import { StepDetailsDrawerData, DynamicFieldConfig } from './step-details-drawer-data'; import { TestCaseStepConfig } from '../test-case-step.models'; import type { DynamicSelectFieldConfig } from '../../dynamic-select/dynamic-select-field.component'; import * as i0 from "@angular/core"; /** * Step Details Drawer (Edit In Depth). * Renders only from the provided DynamicFieldConfig[]; no filtering or step-type-based field logic. * Each step instance receives its own complete field configuration. Generic key-based step read/write. */ export declare class StepDetailsDrawerComponent implements OnInit, OnChanges { private ref; private fb; private cdr; saveChanges: EventEmitter; cancel: EventEmitter; saveAsTemplate: EventEmitter; stepData: TestCaseStepConfig | null; stepNumberInput: number | string | null; /** When provided (e.g. Storybook), use instead of STEP_DETAILS_DRAWER_DATA.dynamicFields. */ dynamicFieldsInput: DynamicFieldConfig[] | null; /** When provided, use as drawer header title (overrides data.title). */ drawerTitle: string | null; step: TestCaseStepConfig; stepNumber: number | string; dynamicFields: DynamicFieldConfig[]; drawerTitleValue: string; advancedExpanded: boolean; form: FormGroup; pwLocator: string[]; /** Cached select configs per field key (stable refs for change detection). */ private selectConfigCache; /** Cache for data type select configs */ private dataTypeSelectConfigCache; /** Store data types for test-data fields */ private fieldDataTypes; /** Store raw values (without formatting) for test-data fields */ private fieldRawValues; /** Pre-computed data type options (static, no need to recreate) */ private readonly dataTypeOptions; /** All fields from the provided array (same reference; used for single source of truth in template). */ get allFields(): DynamicFieldConfig[]; /** Fields in main section (section === 'main' or undefined). */ get mainFields(): DynamicFieldConfig[]; /** Fields in constraints section. */ get constraintsFields(): DynamicFieldConfig[]; /** Fields in advanced section (inside expandable block). */ get advancedFields(): DynamicFieldConfig[]; /** True when the field at index is the first in its section (for showing section headers). */ isFirstInSection(index: number, section: 'main' | 'constraints' | 'advanced'): boolean; /** True when the field at index is not in the advanced section (render in main flow). */ isNonAdvancedField(index: number): boolean; constructor(ref: StepDetailsDrawerRef, fb: FormBuilder, cdr: ChangeDetectorRef, data?: StepDetailsDrawerData); ngOnInit(): void; ngOnChanges(changes: SimpleChanges): void; private buildFormFromDynamicFields; /** Read value from step by key. No step-type logic; step is a generic key-value bag. */ getStepValue(key: string): unknown; /** Write value to step by key. No step-type logic; step is a generic key-value bag. */ setStepValue(key: string, value: unknown): void; onBack(): void; onClose(): void; onCancel(): void; onSaveAsTemplate(): void; onSaveChanges(): void; private applyFormToStep; copyLocator(inputElement: HTMLInputElement): void; deleteLocator(index: number): void; /** Build select config for dropdown field (cached per key). */ getSelectConfig(field: DynamicFieldConfig): DynamicSelectFieldConfig | null; /** Resolved header title for template: @Input drawerTitle > injected data.title > default. */ get displayTitle(): string; /** Check if field needs data type dropdown (test-data, source-value, target-value) */ needsDataTypeDropdown(field: DynamicFieldConfig): boolean; /** Parse test data value to extract data type and raw value */ private parseTestDataValue; /** Format test data value based on data type */ private formatTestDataValue; /** Get data type select config for a field */ getDataTypeSelectConfig(field: DynamicFieldConfig): DynamicSelectFieldConfig | null; /** Get current data type for a field */ getCurrentDataType(field: DynamicFieldConfig): 'plain-text' | 'parameter' | 'runtime' | 'environment'; /** Get raw value (without formatting) for a field */ getRawValue(field: DynamicFieldConfig): string; /** Handle data type change */ onDataTypeChange(fieldKey: string, dataType: 'plain-text' | 'parameter' | 'runtime' | 'environment'): void; /** Handle test data value change (raw value input) */ onTestDataValueChange(fieldKey: string, rawValue: string): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }