انتقل إلى المحتوى
TopClass UI

مجموعة اختيار فردي

اختيار واحد من خيارات قليلة معروضة كلها معًا. للمجموعة محطة Tab واحدة، والزر المحدد هو تلك المحطة قبل الترطيب.

client - الحجم لم يُقَس بعد

مجموعة اختيار فردي

client - الحجم لم يُقَس بعد

اختيار واحد من خيارات قليلة معروضة كلها معًا. للمجموعة محطة Tab واحدة، والزر المحدد هو تلك المحطة قبل الترطيب.

تثبيت

جرّبه

size
orientation
invalid

الشيفرة

radio-group.tsx
import { RadioGroupItem, RadioGroupRoot } from 'topclassui/radio-group'

<div className="grid justify-items-start gap-2">
  <span id="radio-group-playground-label" className="text-sm text-body">Billing</span>
  <RadioGroupRoot aria-labelledby="radio-group-playground-label" defaultValue="yearly">
    <RadioGroupItem value="monthly">Monthly</RadioGroupItem>
    <RadioGroupItem value="yearly">Yearly</RadioGroupItem>
    <RadioGroupItem value="lifetime">Lifetime</RadioGroupItem>
  </RadioGroupRoot>
</div>

المجموعة تحمل الحالة والنموذج؛ وكل RadioGroupItem يحمل value الخاص به ونصه فقط.

كل الحالات، بدون تمرير الفأرة

4 حالات

أو استورده من الحزمة

topclassui/radio-group
import { RadioGroupRoot, RadioGroupItem } from 'topclassui/radio-group'

ثبّت مرة واحدة:npm i topclassui@beta zod

أمثلة

  • لاختيار واحد من خيارات قليلة. للخيارات الكثيرة يناسب Select أكثر؛ ولخيارين إلى خمسة قصيرة في شريط واحد، SegmentedControl.
  • داخل نموذج ترسل المجموعة القيمة المحددة، ولا شيء ما دام لا زر محددًا. وقبل الترطيب ترسل القيمة الافتراضية.
  • orientation قيمته vertical (عمود) أو horizontal (صف يلتف). وهو للتخطيط فقط: مفاتيح الأسهم نفسها في الحالتين.
  • النص الطويل يلتف تحت نفسه بدل أن ينتهي بعلامة حذف: الخيار يُقرأ كاملًا.
  • على العنصر، يذهب style إلى <label>، ويذهب ref إلى زر الراديو نفسه.
basic
Billing
horizontal
form
Plan
sizes
long-content
بالعربية، من اليمين إلى اليسار
الفوترة

الخصائص

RadioGroupRoot

خصائص RadioGroupRoot
الخاصيةالنوعالافتراضيالحدودالوصف
aria-labelstring--The name read out when no visible text names the group.
aria-labelledbystring--The id of the visible text that names the group.
invalidbooleanfalse-RadioGroupRoot: marks the choice as wrong: sets aria-invalid on the group, and every circle turns to danger and thickens.
orientationvertical | horizontal"vertical"-RadioGroupRoot: a column, or a row that wraps. Layout only, written as data-orientation; the arrow keys do not change.
refRef<HTMLDivElement>--The element with role="radiogroup".
sizexs | sm | md | lg | xl | custom"md"-RadioGroupRoot: the toggle scale of every circle and the type step of its label; custom emits no size classes.

RadioGroupItem

خصائص RadioGroupItem
الخاصيةالنوعالافتراضيالحدودالوصف
value*string--The string the form receives, and what value and onValueChange of the group carry.
refRef<HTMLButtonElement>--The radio itself, which is a <button>.
styleCSSProperties--On the <label> around the radio and its text.

لوحة المفاتيح وإمكانية الوصول

لوحة مفاتيح RadioGroup
المفاتيحما يفعله
Tabيدخل المجموعة على الزر المحدد، ويغادرها عند الضغط التالي على Tab.
ArrowDownArrowRightينتقلان إلى الزر التالي ويحددانه، متخطّيَين الزر المعطّل، ويعودان إلى البداية بعد الأخير.
ArrowUpArrowLeftينتقلان إلى الزر السابق ويحددانه، ويعودان إلى النهاية بعد الأول.
Spaceيحدد الزر الذي عليه التركيز. أما Enter فلا.
  • سمِّ المجموعة بـaria-label أو aria-labelledby: لا تستطيع <label htmlFor> أن تسمّي مجموعة. وكل زر يسمّيه نصه.
  • مساحة الهدف 24px، و44px تحت مؤشر لمس، مهما كان size المرسوم: حلقة التركيز تحيط بالدائرة.
  • invalid يضبط aria-invalid على المجموعة: تتحوّل كل دائرة إلى لون الخطر ويزداد سمك خطها، محددة كانت أو لا.

من اليمين إلى اليسار

تقع كل دائرة على اليمين، قبل نصها. وتحت TopClassProvider باتجاه من اليمين إلى اليسار، ينتقل ArrowRight إلى الزر السابق.

الخادم والمتصفح

مكوّن متصفح: يُعرض على الخادم ثم يُرطَّب في المتصفح.

الملفات: index.tsx, client.tsx.

على الشارة: client - الحجم لم يُقَس بعد.