فهرست هدف و نتیجه (TargetList و BulkResultList)
نامبردن از هدفهای یک اقدام گروهی پیش از اجرا و نمایش نتیجهٔ هر مورد پس از آن — انجام شد، کنار گذاشته شد، نتیجه نامشخص یا ناموفق؛ نتیجهٔ نامشخص هرگز موفقیت نیست.
معرفی
اقدامی که چند مورد را در بر میگیرد دو لحظه دارد و هر دو تا امروز با «یک عدد» و «یک toast» گذرانده میشدند: «6 اکانت» و «4 موفق، 2 ناموفق».
TargetListپیش از اجرا هدفها را نام میبرد: عنوان با شمار، دلیل، و نامها (شناسهها با رقم و جهت لاتین)، حداکثرlimitتا و بعد «و N مورد دیگر». دو تا از آن، «اجرا میشود» و «کنار گذاشته میشود»، پیشنمایش اقدام گروهیاند.BulkResultListپس از اجرا نتیجهٔ هر مورد را در همان دیالوگ نشان میدهد: تیتر کلی (role="status")، گروههای «ناموفق»، «نتیجه نامشخص»، «کنار گذاشته شد» و «انجام شد» با دلیل هر مورد، «تلاش دوباره برای N مورد» و «کپی گزارش».
قاعدهٔ ایمنی: uncertain یعنی درخواست رفت و پاسخ قطعی نیامد (timeout، قطع اتصال، 5xx پس از شروع کار). این مورد هرگز «انجام شد» نمایش داده نمیشود و هرگز کورکورانه دوباره فرستاده نمیشود: onRetry فقط شناسهٔ موردهای ناموفق را میگیرد. مقدار ناشناخته نیز uncertain خوانده میشود.
- sara.market
- ali.studio
- negar.shop
سوختهها دوباره وارد نمیشوند
- reza.gallery
ناموفق1
- ali.studioاینستاگرام درخواست را رد کرد
نتیجه نامشخص1
پاسخ قطعی نرسید. پیش از تلاش دوباره وضعیت را بررسی کنید؛ ممکن است انجام شده باشد.
- negar.shopپاسخ سرور نرسید
کنار گذاشته شد1
- reza.galleryسوخته
انجام شد1
استفاده
import { BulkResultList, TargetList } from '@partodata/ui'
// پیش از اجرا
<TargetList title="اجرا میشود" items={runnable} />
<TargetList title="کنار گذاشته میشود" tone="warning" reason="سوختهها دوباره وارد نمیشوند" items={skipped} />
// پس از اجرا، داخل ConfirmDialog (result) یا بدنهٔ دیالوگ
<BulkResultList
items={results} // { id, label, outcome: 'done' | 'skipped' | 'uncertain' | 'failed', reason? }
onRetry={(failedIds) => run(failedIds)}
/>summarizeBulkResult(items) همان شمارش و جمعبندی (success · partial · uncertain · failed · empty) را برای منطق صفحه (مثلاً انتخاب باقیمانده) میدهد.
رفتار
- تیتر: «6 مورد انجام شد» فقط وقتی همه انجام شده؛ وگرنه «4 از 6 مورد انجام شد»، «نتیجهٔ 2 مورد نامشخص است؛ بررسی کنید» یا «هیچ موردی انجام نشد». نقطهٔ تیتر از چهار رنگ معنایی گرامر است و همیشه کنار متن.
- نامشخص: راهنما میگوید پیش از تلاش دوباره وضعیت را بررسی کنید.
- کپی گزارش: یک خط به ازای هر مورد (نام، نتیجه، دلیل).
navigator.clipboard.writeTextمنتظر میشود و نتیجه («گزارش کپی شد» یا «کپی ممکن نشد») گفته میشود؛ شکست بیصدا نیست.labelوreasonهرگز رمز یا توکن نباید داشته باشند. - انجامشدهها وقتی همهچیز موفق نبوده جمع میشوند تا ناموفقها دیده شوند.
Props
TargetList
BulkResultList
دسترسیپذیری
- تیتر
role="status"است و نتیجه یکبار اعلام میشود؛ نقطههاaria-hiddenو معنا همیشه در متن است. - نامها در
<bdi dir="ltr">هستند تا شناسه با رقم لاتین در جملهٔ فارسی جابهجا نشود.
کامپوننتهای مرتبط
ConfirmDialog—childrenبرایTargetListوresultبرایBulkResultListActionFooter— پاورقی دیالوگStatusCell— نقطهٔ وضعیت