UNPKG

@modular-forms/react

Version:

The modular and type-safe form library for React

43 lines (42 loc) 1.49 kB
import { signal } from '@preact/signals-react'; import { getFieldArrayStore } from './getFieldArrayStore'; import { getPathValue } from './getPathValue'; import { getUniqueId } from './getUniqueId'; /** * Initializes and returns the store of a field array. * * @param form The form of the field array. * @param name The name of the field array. * * @returns The reactive store. */ export function initializeFieldArrayStore(form, name) { // Initialize store on first request if (!getFieldArrayStore(form, name)) { // Create initial items of field array const initialItems = getPathValue(name, form.internal.initialValues)?.map(() => getUniqueId()) || []; // Add store of field array to form form.internal.fieldArrays[name] = { // Signals initialItems: signal(initialItems), startItems: signal(initialItems), items: signal(initialItems), error: signal(''), active: signal(false), touched: signal(false), dirty: signal(false), // Other validate: [], validateOn: undefined, revalidateOn: undefined, consumers: new Set(), }; // Add name of field array to form form.internal.fieldArrayNames.value = [ ...form.internal.fieldArrayNames.peek(), name, ]; } // Return store of field array return getFieldArrayStore(form, name); }