Package Exports
- @wandry/inertia-form
- @wandry/inertia-form/dist/index.mjs
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@wandry/inertia-form) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@wandry/inertia-form
Production-ready React form components for Inertia.js with TypeScript support. Позволяет быстро создавать формы с поддержкой валидации, ошибок, сброса, кастомных полей и современных UI-практик (Radix UI, shadcn/ui, Tailwind).
Особенности
- Простая интеграция с Inertia.js и React
- Компоненты для типовых полей: TextField, SelectField, CheckboxField, TextareaField
- Базовый Field для создания собственных контролов
- Хуки для работы с формой:
useFormContext,useWatch - Поддержка ошибок, сброса, кастомных обработчиков
- Современный UI (Radix, shadcn, Tailwind)
- TypeScript-first
Установка
pnpm add @wandry/inertia-form
# или
npm install @wandry/inertia-form
# или
yarn add @wandry/inertia-formВажно: Пакет требует peer-зависимости:
react,@inertiajs/core,@inertiajs/react,@radix-ui/react-*,class-variance-authority,clsx,tailwind-merge,lucide-react.
Быстрый старт
import { Form, SubmitButton } from "@wandry/inertia-form";
import {
TextField,
SelectField,
CheckboxField,
TextareaField,
} from "@wandry/inertia-form";
export function ExampleForm() {
return (
<Form
action="/submit"
method="post"
defaultValues={{ name: "", agree: false }}
>
<TextField name="name" label="Имя" />
<SelectField
name="role"
label="Роль"
options={[
{ value: "admin", title: "Админ" },
{ value: "user", title: "Пользователь" },
]}
/>
<CheckboxField name="agree" label="Согласен с условиями" />
<TextareaField name="bio" label="О себе" />
<SubmitButton>Отправить</SubmitButton>
</Form>
);
}API
Компоненты
- Form — основной компонент формы. Пропсы:
action,method,defaultValues,onSubmit,classNameи др. - TextField — текстовое поле. Пропсы:
name,label,type,labelClassNameи др. - SelectField — выпадающий список. Пропсы:
name,label,options,labelClassNameи др. - CheckboxField — чекбокс. Пропсы:
name,label. - TextareaField — многострочное поле. Пропсы:
name,label,rows,labelClassNameи др. - Field — базовый компонент для создания собственных контролов.
- SubmitButton — кнопка отправки формы, автоматически блокируется при отправке.
Хуки
- useFormContext — доступ к состоянию формы, значениям, ошибкам, методам
getValues,setValueи др. - useWatch — отслеживание изменений отдельных полей или группы полей.
Пример кастомного поля
import { Field, useFormContext } from "@wandry/inertia-form";
function CustomNumberField({ name, label }) {
return (
<Field
name={name}
label={label}
controller={({ value, onChange }) => (
<input
type="number"
value={value}
onChange={(e) => onChange(Number(e.target.value))}
/>
)}
/>
);
}Лицензия
ISC