فیلد (Field)
wrapper پیشرفته برای فیلدهای فرم
معرفی
کامپوننت Field یک wrapper کامل برای مدیریت فیلدهای فرم است که شامل label، description، error و layout میشود.
چه زمانی استفاده کنیم:
- وقتی نیاز به نمایش label، توضیحات و پیام خطا در کنار فیلد دارید
- برای ساختاردهی فرمها بدون نیاز به react-hook-form
- وقتی چینش افقی یا عمودی فیلدها مورد نیاز است
چه زمانی استفاده نکنیم:
- برای input های بدون label — از
Inputمستقیم استفاده کنید - در context هایی که از
react-hook-form+Formاستفاده میکنید — ازFormFieldاستفاده کنید
زمین بازی
با تغییر تنظیمات زیر، پیشنمایش زنده را مشاهده کنید.
زمین بازی
نام کامل خود را وارد کنید.
تنظیمات
ظاهر
کد این نمونه بهصورت خودکار قابل تولید نیست — برای کد آمادهی copy/paste به بخش «استفاده» در بالای صفحه مراجعه کنید.
استفاده
نام کاربری شما برای ورود استفاده میشود
این فیلد الزامی است
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