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

تحكم مقسّم

اختيار واحد من خيارين إلى خمسة خيارات قصيرة، مرسوم كمسار واحد. هو مجموعة أزرار راديو: الأسهم تختار أثناء التنقل، وتنعكس من اليمين إلى اليسار.

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

تحكم مقسّم

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

اختيار واحد من خيارين إلى خمسة خيارات قصيرة، مرسوم كمسار واحد. هو مجموعة أزرار راديو: الأسهم تختار أثناء التنقل، وتنعكس من اليمين إلى اليسار.

تثبيت

جرّبه

size
fullWidth
invalid

الشيفرة

segmented-control.tsx
import { SegmentedControlItem, SegmentedControlRoot } from 'topclassui/segmented-control'

<SegmentedControlRoot aria-label="View" defaultValue="board">
  <SegmentedControlItem value="board">Board</SegmentedControlItem>
  <SegmentedControlItem value="table">Table</SegmentedControlItem>
  <SegmentedControlItem value="calendar">Calendar</SegmentedControlItem>
</SegmentedControlRoot>

الأسهم تنقل وتختار معًا، وتحت TopClassProvider باتجاه من اليمين إلى اليسار ينتقل السهم الأيمن إلى المقطع السابق.

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

4 حالات

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

topclassui/segmented-control
import { SegmentedControlRoot, SegmentedControlItem } from 'topclassui/segmented-control'

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

أمثلة

  • لاختيار واحد من خيارين إلى خمسة خيارات قصيرة: طريقة عرض، وضع، نطاق. يبقى مقطع واحد مختارًا دائمًا، وللخيارات الأطول تُقرأ RadioGroup بشكل أفضل.
  • جزءان، SegmentedControlRoot وSegmentedControlItem، ويعمل في المتصفح. صفحة الخادم تمرّر defaultValue وحدها، وvalue المتحكَّم بها مكانها ملف عميل.
  • يحتاج المسار إلى اسم ومقطع مختار: مرّر aria-label أو aria-labelledby، وvalue أو defaultValue. الأنواع ترفض مسارًا بدونهما.
  • invalid يضع aria-invalid على المسار، فيتحول خطه إلى الأحمر ويزداد سمكًا. وfullWidth يملأ الحاوية ويقسمها بالتساوي، لعدد قليل من المقاطع القصيرة.
  • عندما لا تتسع المقاطع يتمرر المسار أفقيًا داخل نفسه ولا تتمرر الصفحة، والتسمية الأطول من مقطعها تنتهي بعلامة حذف.
  • icon على المقطع يُرسم قبل تسميته. هو للزينة فقط: التسمية هي ما يسمّي المقطع.
basic
with-icons
sizes
full-width
Range
form
Default view
many
long-content
بالعربية، من اليمين إلى اليسار
طريقة العرض

الخصائص

SegmentedControlRoot

خصائص SegmentedControlRoot
الخاصيةالنوعالافتراضيالحدودالوصف
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.
defaultValuestring--The segment selected when the page opens, and after a form reset.
valuestring--The selected segment, held by its owner.
fullWidthbooleanfalse-SegmentedControlRoot: the track fills its parent and its segments share it equally. For a few short segments.
invalidbooleanfalse-SegmentedControlRoot: marks the choice as wrong: sets aria-invalid on the track, whose line turns to danger and thickens.
refRef<HTMLDivElement>--The track, the element with role="radiogroup".
sizexs | sm | md | lg | xl | custom"md"-SegmentedControlRoot: the height of the track and the padding and type step of every segment; custom emits none.

SegmentedControlItem

خصائص SegmentedControlItem
الخاصيةالنوعالافتراضيالحدودالوصف
value*string--The string the form receives, and what value and onValueChange of the root carry.
iconReactNode--Drawn before the label, at the size of its own. Decoration: the label names the segment.
refRef<HTMLButtonElement>--The segment itself, which is a <button>.
styleCSSProperties--

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

لوحة مفاتيح SegmentedControl
المفاتيحما يفعله
Tabيدخل المسار على المقطع المختار، وTab التالي يخرج منه.
ArrowRightينتقل إلى المقطع التالي ويختاره، ومن اليمين إلى اليسار إلى المقطع السابق.
ArrowLeftينتقل إلى المقطع السابق ويختاره، ومن اليمين إلى اليسار إلى التالي.
ArrowDownينتقل إلى المقطع التالي ويختاره.
ArrowUpينتقل إلى المقطع السابق ويختاره.
Spaceيختار المقطع الذي عليه التركيز.
  • المسار radiogroup، وكل مقطع <button> أصلي بالدور role="radio"، يُسمّى بنصه. الأسهم تتخطى المقطع المعطّل وتلتف عند الطرفين، وEnter وHome وEnd لا تفعل شيئًا.
  • قبل الترطيب يكون المقطع المختار هو محطة Tab الوحيدة، فيصل إليه Tab منذ أول عرض.
  • لا يقل ارتفاع كل مقطع عن 24 بكسل، و44 تحت مؤشر لمس. حلقة التركيز تُرسم داخل المقطع الذي عليه التركيز، وفي وضع الألوان القسرية يأخذ المقطع المختار لون التمييز من النظام.

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

يقع المقطع الأول على اليمين، وتنعكس الأسهم مع الاتجاه الذي يمرّره TopClassProvider من التخطيط.

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

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

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

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