ورودی OTP (Input OTP)
فیلد ورودی کد یکبار مصرف
معرفی
کامپوننت InputOTP برای ورود کدهای یکبار مصرف (OTP) استفاده میشود. بر پایه کتابخانه input-otp ساخته شده و از RTL پشتیبانی میکند.
چه زمانی استفاده کنیم:
- برای ورود کدهای تأیید پیامکی یا ایمیلی
- برای احراز هویت دو مرحلهای (2FA)
- وقتی نیاز به ورود کد عددی کوتاه (۴ تا ۸ رقم) دارید
چه زمانی استفاده نکنیم:
- برای ورودیهای غیر عددی — Input-OTP برای کدهای عددی است
- برای کدهای طولانیتر از ۸ رقم — از
Inputاستفاده کنید
استفاده
import { InputOTP, InputOTPGroup, InputOTPSlot } from '@parto-system-design/ui'
export default function MyComponent() {
return (
<InputOTP maxLength={6}>
<InputOTPGroup>
<InputOTPSlot index={0} />
<InputOTPSlot index={1} />
<InputOTPSlot index={2} />
<InputOTPSlot index={3} />
<InputOTPSlot index={4} />
<InputOTPSlot index={5} />
</InputOTPGroup>
</InputOTP>
)
}با جداکننده (Separator)
برای تقسیم کد به دو گروه:
import { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator } from '@parto-system-design/ui'
;<InputOTP maxLength={6}>
<InputOTPGroup>
<InputOTPSlot index={0} />
<InputOTPSlot index={1} />
<InputOTPSlot index={2} />
</InputOTPGroup>
<InputOTPSeparator />
<InputOTPGroup>
<InputOTPSlot index={3} />
<InputOTPSlot index={4} />
<InputOTPSlot index={5} />
</InputOTPGroup>
</InputOTP>کنترل شده
const [value, setValue] = React.useState('')
;<InputOTP maxLength={6} value={value} onChange={setValue}>
<InputOTPGroup>
<InputOTPSlot index={0} />
<InputOTPSlot index={1} />
<InputOTPSlot index={2} />
<InputOTPSlot index={3} />
<InputOTPSlot index={4} />
<InputOTPSlot index={5} />
</InputOTPGroup>
</InputOTP>حالت غیرفعال
<InputOTP maxLength={6} disabled>
<InputOTPGroup>
<InputOTPSlot index={0} />
<InputOTPSlot index={1} />
<InputOTPSlot index={2} />
<InputOTPSlot index={3} />
<InputOTPSlot index={4} />
<InputOTPSlot index={5} />
</InputOTPGroup>
</InputOTP>Props
InputOTP
InputOTPGroup
گروهبندی slotها در کنار هم.
InputOTPSlot
InputOTPSeparator
جداکننده بصری بین گروههای slot. پیشفرض آیکون خط — نمایش میدهد. محتوای سفارشی بهعنوان children قابل تنظیم است.
حالتها و انواع
بدون جداکننده
تمام slot ها در یک گروه واحد.
با جداکننده
تقسیم slot ها به دو یا چند گروه با InputOTPSeparator.
حالت کنترلشده
با value و onChange مقدار را کنترل کنید.
حالت غیرفعال
با disabled تمام slot ها غیرفعال میشوند.
راهنمای استفاده
بکنید
- از
InputOTPSeparatorبرای تقسیم کدهای طولانی (مثلاً ۶ رقمی) به دو گروه ۳ تایی استفاده کنید -dir="ltr"را برای کدهای عددی حفظ کنید تا ترتیب ورود صحیح باشد - از حالت کنترلشده (value+onChange) استفاده کنید تا بتوانید اعتبارسنجی انجام دهید
نکنید
- از InputOTP برای ورودیهای طولانیتر از ۸ رقم استفاده نکنید —
Inputمناسبتر است -dir="rtl"را برای کدهای عددی تنظیم نکنید — ترتیب ارقام معکوس میشود - بدون بازخورد بصری (مانند حالت خطا) از OTP استفاده نکنید
دسترسیپذیری
- ناوبری خودکار بین slot ها با تایپ کاراکتر
- پشتیبانی از Paste کد یکبار مصرف
- با
disabledکل input غیرفعال میشود - هر slot دارای
aria-labelمناسب برای screen reader است - پشتیبانی از Backspace برای بازگشت به slot قبلی