Voice Recorderv1.0.0
ضبط پیام صوتی برای پشتیبانی، چت یا ثبت توضیح. با یک دکمه شروع میشود؛ در حال ضبط نقطهٔ قرمز، زمان و میلههای زندهٔ سطح صدا دیده میشود، و بعد از توقف همان ضبط در پخشکننده با پخش و مکث، حذف و ضبط دوباره آماده است.
این کامپوننت فعلاً برای ۱ فریمورک از ۴ فریمورک آماده است.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
نصب
با CLI اختصاصی digdesign کامپوننت را از رجیستری دیگ نصب کنید؛ وابستگیها و فایلها خودکار اضافه میشوند.
npx digdesign@latest add https://docs.digdesign.ir/r/voice-recorder.jsonpnpm dlx digdesign@latest add https://docs.digdesign.ir/r/voice-recorder.jsonyarn dlx digdesign@latest add https://docs.digdesign.ir/r/voice-recorder.jsonbunx --bun digdesign@latest add https://docs.digdesign.ir/r/voice-recorder.jsonاین کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
استفاده
import { VoiceRecorder } from "@/components/ui/voice-recorder"
<VoiceRecorder name="voice" maxDuration={60} />این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
ترکیب اجزا
چهار حالت دارد: idle (دکمهٔ ضبط)، recording (زمان، میلهها، لغو و پایان)، recorded (پخشکنندهٔ همان ضبط با حذف و ضبط دوباره) و error. اجازهٔ میکروفون فقط وقتی کاربر دکمه را میزند گرفته میشود؛ اگر رد شود یا مرورگر پشتیبانی نکند، پیام فارسی میدهد.
خروجی یک File است که با onRecordingChange میگیرید، یا با name مثل یک input فایل همراه فرم ارسال میشود. maxDuration ضبط را در سقف مدت خودکار متوقف میکند.
دسترسپذیری
- حالت در حال ضبط یک ناحیهٔ role="status" با متن «در حال ضبط» برای صفحهخوان است؛ نقطهٔ قرمز و میلهها تزئینیاند.
- دکمههای لغو و پایان ضبط، حذف و ضبط دوباره برچسب فارسی دارند.
- بعد از ضبط، پخش همان AudioPlayer دیگ با دکمهٔ پخش و نوار زمان قابل کنترل با صفحهکلید است.
مرجع API
VoiceRecorder
| ویژگی | نوع | پیشفرض | توضیح |
|---|---|---|---|
| onRecordingChange | (file: File | null) => void | — | بعد از هر ضبط کامل؛ null یعنی ضبط حذف شد. |
| onStateChange | (state: "idle" | "requesting" | "recording" | "recorded" | "error") => void | — | با هر تغییر حالت. |
| name | string | — | نام فیلد؛ فایل ضبطشده با submit معمولی ارسال میشود. |
| maxDuration | number | 120 | سقف مدت ضبط به ثانیه؛ بعد از آن خودکار متوقف میشود. |
| startLabel | string | "ضبط پیام صوتی" | متن دکمهٔ شروع. |
| disabled | boolean | false | غیرفعال با رنگ غیرفعال. |
این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
نمونهها
در فرم (name)
با name فایل ضبطشده مثل یک input فایل همراه FormData ارسال میشود؛ حذف ضبط آن را از فرم هم برمیدارد.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
متن سفارشی و سقف مدت
برای پیام کوتاه، maxDuration را کم کنید تا ضبط سر ۳۰ ثانیه خودکار تمام شود.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
غیرفعال (Disabled)
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
کدام نمونه برای کدام موقعیت
| نمونه | کجا به کار میآید |
|---|---|
| در فرم (name) | تیکت پشتیبانی یا فرم ثبت شکایت با توضیح صوتی |
| متن سفارشی و سقف مدت | برای پیام کوتاه، maxDuration را کم کنید تا ضبط سر ۳۰ ثانیه خودکار تمام شود. |
| غیرفعال (Disabled) | ضبط فقط بعد از انتخاب موضوع ممکن است |