Radio Group

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

ری‌اکت ۱۹ و Next.js با پیاده‌سازی دسترس‌پذیری داخلی دیگویو ۳ با Composition API و Reka UISvelte ۵ با runes و Bits UIانگولار با signals و Angular CDK

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

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

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

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

نصب

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

نصب سریع با لینک سخت و دیسک مشترکپکیج‌منیجر پیش‌فرض Node.jsYarn نسخهٔ ۲ به بالا (Berry)رانتایم و پکیج‌منیجر Bun
pnpm dlx dig-ui@latest add https://design-system-tau-green.vercel.app/r/radio-group.json
npx dig-ui@latest add https://design-system-tau-green.vercel.app/r/radio-group.json
yarn dlx dig-ui@latest add https://design-system-tau-green.vercel.app/r/radio-group.json
bunx --bun dig-ui@latest add https://design-system-tau-green.vercel.app/r/radio-group.json

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

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

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

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

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

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

استفاده

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 پورت نشده است.

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

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

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

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

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

ترکیب اجزا

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"چیدمان گزینه‌ها زیر هم یا کنار هم.
disabledbooleanfalseپیش‌فرض همهٔ گزینه‌ها را غیرفعال می‌کند؛ هر گزینه می‌تواند با disabled={false} این را نادیده بگیرد.
readOnlybooleanfalseکل گروه را از تغییر مقدار باز می‌دارد ولی برخلاف disabled، ظاهر عادی و چرخهٔ Tab را حفظ می‌کند.
invalidbooleanfalseپیش‌فرض همهٔ گزینه‌ها را در حالت نامعتبر نشان می‌دهد.
requiredbooleanfalsearia-required روی نقش radiogroup می‌گذارد.

RadioGroupItem

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

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

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

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

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

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

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