Task Rowsv1.0.0
وضعیتِ زندهٔ کاری که یک agent در پسزمینه انجام میدهد را ردیفبهردیف نشان میدهد — صف، در حال اجرا، تمام یا خطا. هر ردیف میتواند زیرمرحلههایِ خودش را هم داشته باشد که با کلیک باز میشوند.
این کامپوننت فعلاً برای ۱ فریمورک از ۴ فریمورک آماده است.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
نصب
با CLI اختصاصی digdesign کامپوننت را از رجیستری دیگ نصب کنید؛ وابستگیها و فایلها خودکار اضافه میشوند.
npx digdesign@latest add https://docs.digdesign.ir/r/task-rows.jsonpnpm dlx digdesign@latest add https://docs.digdesign.ir/r/task-rows.jsonyarn dlx digdesign@latest add https://docs.digdesign.ir/r/task-rows.jsonbunx --bun digdesign@latest add https://docs.digdesign.ir/r/task-rows.jsonاین کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
استفاده
import { TaskRow, TaskRows, TaskSubRow } from "@/components/ui/task-rows"
<TaskRows>
<TaskRow status={task.status} title={task.title} meta={task.meta} />
</TaskRows>این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
ترکیب اجزا
TaskRows فقط یک ظرفِ divide-y است. TaskRow اگر فرزند نداشته باشد یک ردیفِ ساده است؛ با دادنِ فرزند (معمولاً چند TaskSubRow) خودش را داخلِ یک Collapsible میپیچد.
دسترسپذیری
- ردیفِ دارایِ زیرمرحله یک دکمهٔ واقعی است با aria-expanded خودکار از Collapsible.
- وضعیتِ در حال اجرا از Spinner استفاده میکند که خودش role="status" دارد.
- چکباکسِ انتخاب با focus-within هم آشکار میشود، نه فقط هاورِ موس؛ کاربرِ کیبورد هم به آن میرسد.
مرجع API
TaskRow / TaskSubRow
| ویژگی | نوع | پیشفرض | توضیح |
|---|---|---|---|
| status | "queued" | "running" | "completed" | "failed" | — | آیکون و رنگِ ردیف را تعیین میکند. |
| title | ReactNode | — | عنوانِ تسک. |
| meta | ReactNode | — | متنِ کوچکِ کمکی سمتِ راستِ ردیف (مثلاً تعداد). |
| defaultOpen | boolean | false | فقط TaskRow؛ باز بودنِ اولیهٔ زیرمرحلهها. |
| selected / onSelectedChange | boolean / (selected: boolean) => void | — | فقط TaskRow؛ دادنِ onSelectedChange حالتِ قابلانتخاب را روشن میکند: چکباکس با هاور/فوکوس یا وقتی selected است، جایِ آیکونِ وضعیت را میگیرد. |
این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
نمونهها
Selectable
با دادنِ onSelectedChange، چکباکس دقیقاً روی جایِ آیکونِ وضعیت مینشیند (نه کنارش) و با هاور/فوکوس یا وقتی انتخاب شده با محوشدنِ نرم جایش را میگیرد؛ چون فقط opacity عوض میشود نه چیدمان، ردیف هیچوقت نمیپرد.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
کدام نمونه برای کدام موقعیت
| نمونه | کجا به کار میآید |
|---|---|
| Selectable | انتخابِ چند تسک برای اجرای دوباره یا لغوِ دستهجمعی |
دستورالعمل استفاده
تسکِ در حالِ اجرا قابلانتخاب نیست
انجام بده
کامپوننت خودش این را تضمین میکند: با status="running"، حتی با دادنِ onSelectedChange، چکباکس اصلاً ظاهر نمیشود و اسپینر همیشه دیده میماند چون خودش سیگنالِ زندهای است.
انجام نده
اگر خودتان با CSS/state دستی این محافظت را دور بزنید و چکباکس را روی ردیفِ در حال اجرا نگه دارید، کاربر تصور میکند میتواند کاری هنوز تمامنشده را لغو یا اجرایِدوباره کند.
meta را برای عددِ کوتاه نگه دار
انجام بده
یک عدد یا وضعیتِ کوتاه (تعداد، درصد، پیامِ خطا) بهترین استفاده از meta است.
انجام نده
متنِ بلند در meta باعثِ truncate شدنِ عنوان یا شکستنِ چیدمانِ ردیف میشود.