Легковесная библиотека для работы с формами, построенная на основе effector.
npm install efforms effector
new Form(initialValues, rules?, validCallback?, nonValidCallback?)
Создает новый экземпляр формы.
initialValues: T
- начальные значения полей формы
rules?: FormRulesType<T>
- правила валидации (опционально)
validCallback?: EventCallable<void>
- коллбек при успешной валидации (опционально)
nonValidCallback?: EventCallable<void>
- коллбек при неуспешной валидации (опционально)
$fields: Store<T>
- store с текущими значениями полей
$errors: Store<Record<keyof T, string[]>>
- store с ошибками валидации
setFields: Event<Partial<T>>
- установить значения полей
setErrors: Event<Record<keyof T, string[]>>
- установить ошибки
reset: Event<void>
- сбросить форму к начальным значениям
clearErrors: Event<void>
- очистить все ошибки
validate: Effect<void, void>
- выполнить валидацию формы
$handlers: Record<keyof T, (value: FormFieldValueType) => void>
- автоматически созданные обработчики для каждого поля
const simpleForm = new Form({
username: '',
age: 0,
});
// Изменение значений
simpleForm.$handlers.username('john_doe');
simpleForm.$handlers.age(25);
// Сброс формы
simpleForm.reset();
const form = new Form(
{ password: '' },
{
password: [
(value) => {
if (!value) {
return { valid: false, errors: ['Поле обязательно'] };
}
return { valid: true };
},
(value) => {
if ((value as string).length < 8) {
return { valid: false, errors: ['Минимум 8 символов'] };
}
return { valid: true };
},
(value) => {
if (!/[A-Z]/.test(value as string)) {
return { valid: false, errors: ['Нужна заглавная буква'] };
}
return { valid: true };
},
(value) => {
if (!/[0-9]/.test(value as string)) {
return { valid: false, errors: ['Нужна цифра'] };
}
return { valid: true };
},
],
},
);
"effector": "^22.0.0 || ^23.0.0"
"typescript": "^4.0.0 || ^5.0.0 || ^6.0.0"
Нашли баг? Создайте issue
Если вам нравится efforms, поставьте звезду на GitHub!