@uplink-protocol/form-controller
Version:
Reactive multi-step form controller with dynamic validation and state management
57 lines (56 loc) • 2.26 kB
TypeScript
import { BaseService } from './base.service';
import { ConfigService } from './config.service';
/**
* Service for managing form data and submission
*/
export declare class FormService extends BaseService<Record<string, Record<string, any>>> {
private configService;
private fieldErrorsService;
constructor(initialFormData: Record<string, Record<string, any>>, configService: ConfigService, fieldErrorsService: BaseService<Record<string, Record<string, string>>>, stepsValidityService: BaseService<Record<string, boolean>>);
/**
* Update a field value
* @param stepId Step ID
* @param fieldId Field ID
* @param value New field value
*/
updateField(stepId: string, fieldId: string, value: any): void;
/**
* Get form data for a specific step
* @param stepId Step ID
* @returns Step data or empty object if step doesn't exist
*/
getStepData(stepId: string): Record<string, any>;
/**
* Get all form data
* @returns Complete form data
*/
getAllData(): Record<string, Record<string, any>>;
/**
* Get flattened form data (merged from all steps)
* @returns Flattened form data
*/
getFlatData(): Record<string, any>;
/**
* Reset form data to initial values
* @param defaultValues Optional custom default values
*/
resetForm(defaultValues?: Record<string, any>): void;
/**
* Handle form submission logic with integrated validation
* @param validateAndMarkTouched Function to validate the entire form and mark fields touched
* @param findFirstInvalidStep Function to find the first invalid step
* @param goToStep Function to navigate to a step by index
* @returns Submission result object
*/
submitForm(validateAndMarkTouched: () => boolean, findFirstInvalidStep: () => number, goToStep: (index: number) => void): {
success: boolean;
data?: any;
errors?: any;
};
/**
* Completely reset the form, touch tracking, and validation state
* @param resetTouchTracking Function to reset touch tracking
* @param validateForm Function to validate the entire form
*/
completeReset(resetTouchTracking: () => void, validateForm: () => void): void;
}