@avinlab/form
Install
npm install @avinlab/form
Usage
Create a form and manage its values:
import { createForm } from '@avinlab/form';
const initialValues = { name: 'John', age: 30 };
const form = createForm(initialValues);
const handleUpdateForm = (newValues, prevValues) => {
console.log('Form updated', { newValues, prevValues });
};
form.onUpdate(handleUpdateForm);
const handleUpdateAgeField = (newValue, oldValue) => {
console.log('Field "age" updated', { newValue, oldValue });
};
form.onUpdateField('age', handleUpdateAgeField);
form.setValue('name', 'Jane');
form.setValue('age', 31);
form.offUpdate(handleUpdateForm);
form.offUpdateField('age', handleUpdateAgeField);
Form validation management:
import { createForm, createFormValidation } from '@avinlab/form';
const initialValues = { name: 'John', age: 30 };
const form = createForm(initialValues);
const formValidation = createFormValidation(form, (values) => {
const errors = {};
if (!values.name) {
errors.name = 'Name is required';
}
if (values.age && values.age < 18) {
errors.age = 'Must be at least 18';
}
return errors;
});
console.log(formValidation.errors);
console.log(formValidation.isValid);
form.setValue('age', 15);
console.log(formValidation.errors);
console.log(formValidation.isValid);
const handler = (errors) => {
console.log(errors);
};
formValidation.onValidate(handler);
formValidation.offValidate(handler);
formValidation.validate();