فیلد (Field)
wrapper پیشرفته برای فیلدهای فرم
معرفی
کامپوننت Field یک wrapper کامل برای مدیریت فیلدهای فرم است که شامل label، description، error و layout میشود.
چه زمانی استفاده کنیم:
- وقتی نیاز به نمایش label، توضیحات و پیام خطا در کنار فیلد دارید
- برای ساختاردهی فرمها بدون نیاز به react-hook-form
- وقتی چینش افقی یا عمودی فیلدها مورد نیاز است
چه زمانی استفاده نکنیم:
- برای input های بدون label — از
Inputمستقیم استفاده کنید - در context هایی که از
react-hook-form+Formاستفاده میکنید — ازFormFieldاستفاده کنید
استفاده
نام کاربری شما برای ورود استفاده میشود
این فیلد الزامی است
import { Field, FieldLabel, FieldDescription, FieldError, Input } from '@parto-system-design/ui'
export default function MyComponent() {
return (
<Field>
<FieldLabel>نام کاربری</FieldLabel>
<Input placeholder="نام کاربری خود را وارد کنید" />
<FieldDescription>نام کاربری شما باید یکتا باشد</FieldDescription>
</Field>
)
}با خطا
<Field data-invalid="true">
<FieldLabel>ایمیل</FieldLabel>
<Input type="email" aria-invalid="true" />
<FieldError>ایمیل معتبر نیست</FieldError>
</Field>چینش افقی
<Field orientation="horizontal">
<FieldLabel>تنظیمات</FieldLabel>
<FieldContent>
<Switch />
<FieldDescription>فعالسازی اعلانها</FieldDescription>
</FieldContent>
</Field>FieldSet برای گروهبندی
<FieldSet>
<FieldLegend>اطلاعات شخصی</FieldLegend>
<FieldGroup>
<Field>
<FieldLabel>نام</FieldLabel>
<Input />
</Field>
<Field>
<FieldLabel>نام خانوادگی</FieldLabel>
<Input />
</Field>
</FieldGroup>
</FieldSet>با جداکننده
<FieldGroup>
<Field>
<FieldLabel>فیلد اول</FieldLabel>
<Input />
</Field>
<FieldSeparator>یا</FieldSeparator>
<Field>
<FieldLabel>فیلد دوم</FieldLabel>
<Input />
</Field>
</FieldGroup>Props
Field
FieldLegend
حالتها و انواع
چینش عمودی (پیشفرض)
Label بالای فیلد و توضیحات/خطا زیر آن.
چینش افقی
با orientation="horizontal" برای فیلدهایی مانند Switch یا Toggle.
حالت خطا
با data-invalid="true" تمام زیرکامپوننتها به رنگ خطا تغییر میکنند.
گروهبندی با FieldSet
چندین فیلد مرتبط را با FieldSet و FieldLegend گروهبندی کنید.
راهنمای استفاده
بکنید
- از
FieldDescriptionبرای ارائه راهنمای تکمیلی به کاربر استفاده کنید - فیلدهای مرتبط را باFieldSetوFieldLegendگروهبندی کنید - ازFieldErrorبرای نمایش پیامهای خطای واضح و کاربردی استفاده کنید
نکنید
- از Field بدون label استفاده نکنید — هر فیلد باید برچسب داشته باشد - در کنار react-hook-form از Field استفاده نکنید —
FormFieldمناسبتر است -FieldErrorرا بدونdata-invalidاستفاده نکنید — حالت خطا باید مشخص باشد
کامپوننتها
Field— wrapper اصلی (orientation و data-invalid)FieldLabel— برچسب فیلد (بر پایه Label)FieldDescription— توضیحات زیر فیلدFieldError— پیام خطا (رنگ destructive)FieldGroup— گروهبندی چند Field در کنار همFieldSet—<fieldset>HTML برای فرمهای گروهبندی شدهFieldLegend— عنوان FieldSet (variant: legend|label)FieldSeparator— جداکننده بین Fieldها (با متن اختیاری)FieldContent— محتوای جانبی در layout افقیFieldTitle— عنوان بدون ربط به input (نه label)
دسترسیپذیری
FieldLabelبه صورت خودکار باhtmlForبه فیلد مرتبط لینک میشودFieldErrorباaria-live="polite"برای screen reader اعلام میشودFieldSetاز تگ<fieldset>استاندارد HTML استفاده میکندFieldDescriptionباaria-describedbyبه فیلد مرتبط متصل میشود- پشتیبانی کامل از RTL