Loading Statev1.0.0
نشانگرِ خنثیِ «در حال کار»ی که خودش شمارندهٔ ثانیهٔ سپریشده را نگه میدارد — مناسبِ لحظهای که یک agent هنوز جوابی برای نشاندادن ندارد. سه واریانتِ بصری دارد: dots، pulse-grid و orbit.
این کامپوننت فعلاً برای ۱ فریمورک از ۴ فریمورک آماده است.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
نصب
با CLI اختصاصی digdesign کامپوننت را از رجیستری دیگ نصب کنید؛ وابستگیها و فایلها خودکار اضافه میشوند.
npx digdesign@latest add https://docs.digdesign.ir/r/loading-state.jsonpnpm dlx digdesign@latest add https://docs.digdesign.ir/r/loading-state.jsonyarn dlx digdesign@latest add https://docs.digdesign.ir/r/loading-state.jsonbunx --bun digdesign@latest add https://docs.digdesign.ir/r/loading-state.jsonاین کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
استفاده
import { LoadingState } from "@/components/ui/loading-state"
<LoadingState variant="dots" label="در حال فکر کردن" />این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
ترکیب اجزا
یک بلوکِ مستقل است، نه یک ریشه با زیرقطعه؛ چون فقط یک شکلِ نمایشی دارد و نیازی به ترکیبِ دلخواه ندارد. شمارندهٔ ثانیه از لحظهٔ mount شدنِ خودِ کامپوننت شروع میشود — با unmount کردنِ آن (مثلاً وقتی جواب رسید) شمارش هم متوقف میشود.
رنگ فقط یک متغیرِ CSS (--loading) را ست میکند؛ هر سه واریانتِ بصری از همان یک متغیر رنگ میگیرند.
دسترسپذیری
- role="status" دارد تا صفحهخوانها متوجهِ منطقهٔ در حالِ بهروزرسانی شوند.
- شمارندهٔ ثانیه هر ۱۰۰ میلیثانیه بهروز میشود؛ چون role=status پیشفرض aria-live="polite" دارد، صفحهخوان همهٔ این تغییرات را با صدای بلند نمیخواند، فقط آخرین وضعیت را در فاصلههای مناسب اعلام میکند.
مرجع API
| ویژگی | نوع | پیشفرض | توضیح |
|---|---|---|---|
| variant | "dots" | "pulse-grid" | "orbit" | "dots" | شکلِ بصریِ نشانگر. |
| color | "default" | "primary" | "success" | "warning" | "primary" | رنگِ نشانگر. |
| label | ReactNode | "در حال پردازش" | متنِ کنارِ نشانگر. |
| showElapsed | boolean | true | نمایشِ شمارندهٔ ثانیهٔ سپریشده کنارِ برچسب. |
این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
نمونهها
Without Elapsed Time
با showElapsed={false} فقط نشانگر و برچسب میماند، بدون شمارندهٔ ثانیه.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
رنگها
چهار رنگ دارد؛ برای وضعیتِ عادی primary کافی است، success/warning برای زمینههای خاص.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
کدام نمونه برای کدام موقعیت
| نمونه | کجا به کار میآید |
|---|---|
| Without Elapsed Time | وقتی نمایشِ عدد ثانیه حواسپرتکننده است یا کارِ کوتاهی در جریان است |
| رنگها | چهار رنگ دارد؛ برای وضعیتِ عادی primary کافی است، success/warning برای زمینههای خاص. |
دستورالعمل استفاده
برچسبِ توصیفی بده، نه یک کلمهٔ ژنریک
انجام بده
برچسب باید بگوید agent الان دقیقاً چه کاری میکند؛ کاربر با این میفهمد صبر کردن ارزش دارد.
انجام نده
«در حال بارگذاری» بهتنهایی چیزی از پیشرفتِ واقعی نمیگوید؛ کاربر نمیداند منتظرِ چه چیزی است.
فقط برای کارِ واقعاً درحالانجام
انجام بده
این نشانگر برای لحظهای است که agent واقعاً منتظرِ یک نتیجه (API، مدل، فایل) است.
انجام نده
برای یک عملیاتِ آنیِ محلی (مثلاً فیلترکردنِ یک آرایهٔ کوچک)، نشاندادنِ این نشانگر فقط یک تاخیرِ ساختگی به کاربر تحمیل میکند.