UNPKG

extended-dynamic-forms

Version:

Extended React JSON Schema Form (RJSF) v6 with custom components, widgets, templates, layouts, and form events

78 lines (76 loc) 2.52 kB
import { RJSFSchema, UiSchema } from '@rjsf/utils'; import { ConditionalRule, ConditionalEvent, ConditionalActions, ConditionalEngineInstance } from '../types'; export declare class DynamicArrayConditionalEngine implements ConditionalEngineInstance { private originalRules; private engine; private expandedRules; constructor(rules: ConditionalRule[], schema: RJSFSchema, uiSchema?: UiSchema, extraActions?: ConditionalActions); /** * Expand array patterns like directors[*] based on actual form data */ expandArrayPatterns(rules: ConditionalRule[], formData: any): ConditionalRule[]; /** * Check if a rule contains array patterns like [*] */ private hasArrayPatterns; /** * Expand a single rule that contains array patterns */ private expandSingleRule; /** * Find all array patterns like "directors[*]" in a rule */ private findArrayPatterns; /** * Expand a rule for a specific array index */ private expandRuleForIndex; /** * Get nested value from object using dot notation */ private getNestedValue; /** * Pre-process uiSchema to ensure array items have proper template structure */ private preprocessUiSchemaForArrays; /** * Main processing method - implement ConditionalEngineInstance interface */ processFormData(formData: any): Promise<{ schema: RJSFSchema; uiSchema: UiSchema; formData: any; }>; /** * Get the original unexpanded rules */ getOriginalRules(): ConditionalRule[]; /** * Get the current expanded rules */ getCurrentRules(): ConditionalRule[]; /** * Manually set rules (useful for testing) */ setRules(rules: ConditionalRule[]): void; /** * Add a rule to the engine (implement ConditionalEngineInstance interface) */ addRule(rule: ConditionalRule): void; /** * Run the conditional engine and return events (implement ConditionalEngineInstance interface) */ run(formData: any): Promise<ConditionalEvent[]>; /** * Add an action to the engine (for ConditionalContext compatibility) */ addAction(actionType: string, actionFunction: any): void; /** * Remove an action from the engine (for ConditionalContext compatibility) */ removeAction(actionType: string): void; /** * Get available actions (for ConditionalContext compatibility) */ getAvailableActions(): string[]; }