UNPKG

@uplink-protocol/form-controller

Version:

Reactive multi-step form controller with dynamic validation and state management

57 lines (56 loc) 2.26 kB
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; }