@modular-forms/solid
Version:
The modular and type-safe form library for SolidJS
77 lines (76 loc) • 2.05 kB
JavaScript
import { createSignal } from './createSignal';
/**
* Creates and returns the store of the form.
*
* @param options The form options.
*
* @returns The reactive store.
*/
export function createFormStore({ initialValues = {}, validateOn = 'submit', revalidateOn = 'input', validate, } = {}) {
// Create signals of form store
const fieldNames = createSignal([]);
const fieldArrayNames = createSignal([]);
const element = createSignal();
const submitCount = createSignal(0);
const submitting = createSignal(false);
const submitted = createSignal(false);
const validating = createSignal(false);
const touched = createSignal(false);
const dirty = createSignal(false);
const invalid = createSignal(false);
const response = createSignal({});
// Return form functions and state
return {
internal: {
// Props
initialValues,
validate,
validateOn,
revalidateOn,
// Signals
fieldNames,
fieldArrayNames,
element,
submitCount,
submitting,
submitted,
validating,
touched,
dirty,
invalid,
response,
// Stores
fields: {},
fieldArrays: {},
// Other
validators: new Set(),
},
get element() {
return element.get();
},
get submitCount() {
return submitCount.get();
},
get submitting() {
return submitting.get();
},
get submitted() {
return submitted.get();
},
get validating() {
return validating.get();
},
get touched() {
return touched.get();
},
get dirty() {
return dirty.get();
},
get invalid() {
return invalid.get();
},
get response() {
return response.get();
},
};
}