Table

جدول داده با سرستون‌های راست‌چین، مناسب داشبوردها و فهرست‌های سازمانی؛ انتخاب سطر، مرتب‌سازی، حالت راه‌راه و بارگذاری بدون هیچ وابستگی بیرونی روی همین پنج عنصر استاندارد HTML ساخته شده‌اند.

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

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

فهرست فاکتورهای اخیر: مبالغ به تومان
شمارهمشتریتاریخوضعیتمبلغ
INV-001شرکت آریا۲۹ تیر ۱۴۰۵پرداخت‌شده۱۲٬۵۰۰٬۰۰۰ تومان
INV-002فروشگاه نیک۳۱ تیر ۱۴۰۵در انتظار۴٬۳۰۰٬۰۰۰ تومان
INV-003استودیو ماه۳ مرداد ۱۴۰۵پرداخت‌شده۸٬۹۰۰٬۰۰۰ تومان

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

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

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

نصب

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

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

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

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

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

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

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

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

استفاده

import {
  Table,
  TableBody,
  TableCell,
  TableHead,
  TableHeader,
  TableRow,
} from "@/components/ui/table"

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

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

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

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

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

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

ترکیب اجزا

جدول از اجزای Table، TableHeader، TableBody، TableFooter، TableRow، TableHead، TableCell و TableCaption تشکیل می‌شود؛ همان ساختار HTML استاندارد با استایل راست‌به‌چپ. انتخاب و مرتب‌سازی هم به همین روش ترکیبی اضافه شده‌اند: TableRow با پراپ value قابل‌انتخاب می‌شود، TableCheckboxCell/TableSelectAllCheckbox چک‌باکس متصل به همان انتخاب را رندر می‌کنند، و TableHead با پراپ sortKey قابل‌مرتب‌سازی می‌شود، هیچ‌کدام به یک کتابخانهٔ خارجی مثل react-aria وابسته نیستند، فقط Context داخلیِ خود Table.

دسترس‌پذیری

  • از عناصر معنایی table استفاده می‌کند؛ صفحه‌خوان‌ها ساختار سطر و ستون را کامل درک می‌کنند.
  • TableCaption توضیح جدول را برای همهٔ کاربران فراهم می‌کند.
  • سطر قابل‌انتخاب aria-selected و ستون قابل‌مرتب‌سازی aria-sort مناسب خودش را می‌گیرد؛ چک‌باکس‌های انتخاب aria-label فارسی دارند.
  • برای عناصر کنش‌پذیر داخل سلول (دکمه، لینک) روی onClick از event.stopPropagation() استفاده کنید تا با تاگل‌شدن انتخاب سطر تداخل نکند.

مرجع API

Table

ویژگینوعپیش‌فرضتوضیح
color"default" | "primary" | "success" | "warning" | "destructive" | "info""default"رنگ پس‌زمینهٔ سطر/سلولِ انتخاب‌شده.
size"default" | "compact""default"تراکم فاصلهٔ عمودی TableHead و TableCell.
selectionMode"none" | "single" | "multiple""none"حالت انتخاب سطر.
selectedKeys / defaultSelectedKeysSet<string>کلیدهای انتخاب‌شده (کنترل‌شده/غیرکنترل‌شده).
onSelectionChange(keys: Set<string>) => voidبا هر بار تغییر انتخاب صدا زده می‌شود.
disallowEmptySelectionbooleanfalseاگر true باشد، همیشه حداقل یک سطر انتخاب‌شده باقی می‌ماند.
sortDescriptor / defaultSortDescriptor{ column: string; direction: "ascending" | "descending" }ستون و جهت مرتب‌سازی فعال (کنترل‌شده/غیرکنترل‌شده).
onSortChange(descriptor: SortDescriptor) => voidبا کلیک روی یک TableHead دارای sortKey صدا زده می‌شود.
...propsReact.ComponentProps<"table">همهٔ ویژگی‌های تگ table پشتیبانی می‌شود.

TableHeader

ویژگینوعپیش‌فرضتوضیح
stickybooleanfalseسرستون را هنگام اسکرول عمودی بالای جدول ثابت نگه می‌دارد.

TableBody

ویژگینوعپیش‌فرضتوضیح
stripedbooleanfalseسطرهای فرد را با پس‌زمینهٔ خاکستری راه‌راه می‌کند.

TableRow

ویژگینوعپیش‌فرضتوضیح
valuestringکلید یکتای سطر؛ فقط با دادن این پراپ سطر قابل‌انتخاب می‌شود.
disabledbooleanfalseسطر را از انتخاب و کلیک خارج می‌کند (بدون مخفی‌کردن آن).

TableHead / TableCell

ویژگینوعپیش‌فرضتوضیح
align"start" | "center" | "end"ترازبندی افقی محتوای سلول/سرستون.
sortKeystringفقط TableHead؛ ستون را قابل‌مرتب‌سازی می‌کند.

TableCheckboxCell / TableSelectAllCheckbox

ویژگینوعپیش‌فرضتوضیح
TableCheckboxCellOmit<React.ComponentProps<"td">, "children" | "align">چک‌باکس انتخاب همان سطر؛ باید داخل یک TableRow دارای value قرار بگیرد.
TableSelectAllCheckboxOmit<React.ComponentProps<"th">, "children" | "align">چک‌باکس «انتخاب همه»؛ در selectionMode="multiple" استفاده می‌شود.

TableEmpty / TableLoadingRow

ویژگینوعپیش‌فرضتوضیح
colSpannumberبرابر تعداد ستون‌های جدول.
childrenReact.ReactNode"در حال بارگذاری…" (فقط TableLoadingRow)متن یا محتوای دلخواه داخل سطر.

...props

ویژگینوعپیش‌فرضتوضیح
...propsReact.ComponentProps<…>هر جزء تمام ویژگی‌های عنصر HTML متناظر خود را می‌پذیرد.

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

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

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

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

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

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