Radio Groupv1.0.1

گروهی از گزینه‌ها که کاربر فقط یکی از آن‌ها را انتخاب می‌کند.

ری‌اکت ۱۹ و Next.js با پیاده‌سازی دسترس‌پذیری داخلی دیگویو ۳ با Composition API — هنوز برای این کامپوننت پورت نشدهSvelte ۵ با runes — هنوز برای این کامپوننت پورت نشدهانگولار با signals و دایرکتیوهای standalone — هنوز برای این کامپوننت پورت نشده

این کامپوننت فعلاً برای ۱ فریم‌ورک از ۴ فریم‌ورک آماده است.

این نمونه هنوز برای Vue پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

این نمونه هنوز برای Svelte پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

این نمونه هنوز برای Angular پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

نصب

با CLI اختصاصی digdesign کامپوننت را از رجیستری دیگ نصب کنید؛ وابستگی‌ها و فایل‌ها خودکار اضافه می‌شوند.

پکیج‌منیجر پیش‌فرض Node.jsنصب سریع با لینک سخت و دیسک مشترکYarn نسخهٔ ۲ به بالا (Berry)رانتایم و پکیج‌منیجر Bun
npx digdesign@latest add https://docs.digdesign.ir/r/radio-group.json
pnpm dlx digdesign@latest add https://docs.digdesign.ir/r/radio-group.json
yarn dlx digdesign@latest add https://docs.digdesign.ir/r/radio-group.json
bunx --bun digdesign@latest add https://docs.digdesign.ir/r/radio-group.json

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

استفاده

import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"
import { Label } from "@/components/ui/label"

<RadioGroup defaultValue="a">
  <RadioGroupItem value="a" id="a" />
  <Label htmlFor="a">گزینهٔ یک</Label>

  <RadioGroupItem value="b" id="b" />
  <Label htmlFor="b">گزینهٔ دو</Label>
</RadioGroup>

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

ترکیب اجزا

disabled/invalid/required/readOnly روی خودِ RadioGroup به‌صورت پیش‌فرض به همهٔ گزینه‌ها می‌رسد؛ هر RadioGroupItem می‌تواند invalid یا readOnly خودش را جداگانه هم بدهد تا این پیش‌فرض را نادیده بگیرد.

دسترس‌پذیری

  • ناوبری بین گزینه‌ها با کلیدهای جهت‌نما انجام می‌شود (roving tabindex).
  • هر RadioGroupItem را با Label و id متصل کنید تا با کلیک روی متن هم انتخاب شود.
  • readOnly برخلاف disabled، گزینه را از چرخهٔ Tab و صفحه‌خوان حذف نمی‌کند؛ فقط جلوی تغییر مقدار را می‌گیرد.
  • invalid مقدار aria-invalid را ست می‌کند تا صفحه‌خوان وضعیت نامعتبر را همراه با متن خطای کنارش اعلام کند.
  • required مقدار aria-required را روی نقش radiogroup می‌گذارد، نه روی یک گزینهٔ خاص.

مرجع API

RadioGroup

چند RadioGroupItem را با یک مقدار انتخاب‌شده هماهنگ می‌کند؛ خودش نقش radiogroup می‌گیرد.

ویژگینوعپیش‌فرضتوضیح
value / defaultValuestring—گزینهٔ انتخاب‌شده (کنترل‌شده یا اولیه).
onValueChange(value: string) => void—با تغییر انتخاب صدا زده می‌شود.
orientation"horizontal" | "vertical""vertical"چیدمان گزینه‌ها زیر هم یا کنار هم.
namestring—نام فیلد در فرم. گزینه‌ها دکمه‌اند نه input، پس بدون name مقدار با submit بومی یا FormData ارسال نمی‌شود؛ با name یک input مخفی هم‌نام مقدار انتخاب‌شده را می‌فرستد.
formstring—شناسهٔ فرم، وقتی گروه بیرون از تگ form است.
interaction"none" | "press" | "pop" | "peek""none"اینتراکشن پیش‌فرض همهٔ گزینه‌های گروه: press کوچک شدن هنگام فشردن، pop ظاهر شدن نقطه با جهش، peek پیش‌نمایش نقطه روی هاور.
disabledbooleanfalseپیش‌فرض همهٔ گزینه‌ها را غیرفعال می‌کند؛ هر گزینه می‌تواند با disabled={false} این را نادیده بگیرد.
readOnlybooleanfalseکل گروه را از تغییر مقدار باز می‌دارد ولی برخلاف disabled، ظاهر عادی و چرخهٔ Tab را حفظ می‌کند.
invalidbooleanfalseپیش‌فرض همهٔ گزینه‌ها را در حالت نامعتبر نشان می‌دهد.
requiredbooleanfalsearia-required روی نقش radiogroup می‌گذارد.

RadioGroupItem

ویژگینوعپیش‌فرضتوضیح
valuestring—مقدار یکتای این گزینه.
variant"default" | "flat""default"default سایه‌دار است؛ flat بدون سایه و با پس‌زمینهٔ خاکستری خنثی، برای داخل کارت یا Surface.
interaction"none" | "press" | "pop" | "peek""none"واکنش به فشردن و هاور: press کوچک شدن هنگام فشردن، pop ظاهر شدن علامت با جهش، peek پیش‌نمایش علامت روی هاور. روی disabled و readOnly اعمال نمی‌شود. بدون مقدار، از RadioGroup ارث می‌برد.
disabledbooleanfalseغیرفعال کردن گزینه؛ مقدار گروه را نادیده می‌گیرد.
readOnlyboolean—جلوی انتخاب همین گزینه را می‌گیرد؛ نبود آن یعنی از readOnly گروه ارث می‌برد.
invalidboolean—وضعیت نامعتبر همین گزینه؛ نبود آن یعنی از invalid گروه ارث می‌برد.

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.