Toolbar
ظرفی برای گروهی از دکمه/ضامن همردیف با role=toolbar؛ فقط یکی از فرزندهایش هر لحظه در چرخهٔ Tab قرار میگیرد و جابهجایی بین آنها با کلیدهای جهتدار (راستبهچپآگاه) انجام میشود.
این کامپوننت فعلاً برای ۱ فریمورک از ۴ فریمورک آماده است.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
نصب
با CLI اختصاصی dig-ui کامپوننت را از رجیستری دیگ نصب کنید؛ وابستگیها و فایلها خودکار اضافه میشوند.
pnpm dlx dig-ui@latest add https://design-system-tau-green.vercel.app/r/toolbar.jsonnpx dig-ui@latest add https://design-system-tau-green.vercel.app/r/toolbar.jsonyarn dlx dig-ui@latest add https://design-system-tau-green.vercel.app/r/toolbar.jsonbunx --bun dig-ui@latest add https://design-system-tau-green.vercel.app/r/toolbar.jsonاین کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Reka UI در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Bits UI در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Angular CDK در دست کار است.
استفاده
import { Toolbar } from "@/components/ui/toolbar"
<Toolbar aria-label="ابزار متن">
<Toggle aria-label="ضخیم"><Bold /></Toggle>
<Toggle aria-label="مورب"><Italic /></Toggle>
</Toolbar>این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Reka UI در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Bits UI در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Angular CDK در دست کار است.
ترکیب اجزا
Toolbar بهجای پیچیدن فرزندها در یک کامپوننت اختصاصی، مستقیم Button/Toggle/ToggleGroup/Separator موجود دیگ را میپذیرد و roving-tabindex را خودش روی عناصر فوکوسپذیر داخلش پیاده میکند.
برای جداکننده از Separator عمودی با کلاس h-6 استفاده کنید، چون Separator عمودی به یک والدِ با ارتفاع مشخص نیاز دارد.
دسترسپذیری
- role=toolbar و aria-orientation دارد؛ حتماً aria-label یا aria-labelledby روی خودش بگذارید تا صفحهخوان هدف نوار را بگوید.
- فقط یک آیتم tabIndex=0 دارد (roving-tabindex)؛ بقیه با فلش راست/چپ (یا بالا/پایین در حالت عمودی) قابلدسترسیاند، نه با Tabِ پیاپی. این دقیقاً الگوی توصیهشدهٔ WAI-ARIA برای toolbar است.
- جهت فلشها از روی direction محاسبهشدهٔ مرورگر تشخیص داده میشود، پس در RTL خودکار برعکس LTR کار میکند.
- Home/End به اولین/آخرین آیتم میپرد.
مرجع API
Toolbar
| ویژگی | نوع | پیشفرض | توضیح |
|---|---|---|---|
| orientation | "horizontal" | "vertical" | "horizontal" | جهت چیدمان و کلیدهای فلشیِ فعال. |
| children | React.ReactNode | — | هر Button/Toggle/ToggleGroup/Separator دیگ. |
این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Reka UI در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Bits UI در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Angular CDK در دست کار است.
نمونهها
با ToggleGroup و جداکننده
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
ویرایشگر متن (مثل Word)
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
عمودی
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
آیتم غیرفعال (Disabled)
ناوبری با کلید جهتدار خودش آیتمهای disabled را رد میکند، پس لازم نیست دستی مدیریتش کنید. آیتم را حذف نکنید؛ جای ثابتِ ابزارها در نوار به حافظهٔ عضلانی کاربر مینشیند.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
کدام نمونه برای کدام موقعیت
| نمونه | کجا به کار میآید |
|---|---|
| با ToggleGroup و جداکننده | نواری که کنشهای تکانتخابی (چیدمان) را از یک دکمهٔ مستقل جدا نگه میدارد |
| ویرایشگر متن (مثل Word) | نوار ابزار یک ادیتور متن غنی: قالببندی، چیدمان، فهرست و تاریخچه در یک ردیف |
| عمودی | نوار ابزار کنارِ یک بوم طراحی یا پنل جانبی که فضای افقی محدود است |
| آیتم غیرفعال (Disabled) | کنشی که برای انتخاب فعلی معنا ندارد |