PhoneInput — شماره همراه ایرانی
شماره همراه برای ورود، ثبتنام و تأیید هویت است. کاربر شماره را با قالب خوانا تایپ میکند؛ اما سرور همیشه یک رشتهٔ ساده دریافت میکند، مثل کپی کد، بدون فاصله، بدون کپی کد و بدون علامت. این کامپوننت پایهٔ ظاهر و دسترسپذیری کپی کد را دارد و فقط منطق شماره را اضافه میکند.
وضعیت: beta · لایه: ۳ (کپی کد) · کد: کپی کد
import { PhoneInput } from '@tokapps/tuk';نمونهٔ زنده
ارقام فارسی، کپی کد، یا فقط کپی کد را تایپ یا بچسبانید؛ کامپوننت آن را به قالب ملی تبدیل میکند. هنگام ترک فیلد با شماره ناقص یا نامعتبر، پیام خطا ظاهر میشود.
کد قابل کپی
فرم با ارسال یک رشته
کپی کد یک فیلد پنهان میسازد که فقط ارقام شماره معتبر را دارد. اگر شماره معتبر نباشد، مقدار آن خالی است.
import { PhoneInput } from '@tokapps/tuk';export function MobileStep() { return ( <form onSubmit={(e) => { e.preventDefault(); const mobile = new FormData(e.currentTarget).get('mobile'); if (typeof mobile === 'string' && mobile) sendOtp(mobile); }} > <PhoneInput name="mobile" isRequired /> <button type="submit">ارسال کد</button> </form> );}کنترلشده با state
کپی کد شماره معتبر کامل را میدهد؛ برای ناقص یا نامعتبر کپی کد میدهد.
const [mobile, setMobile] = useState('');<PhoneInput label="شماره همراه" value={mobile} onChange={setMobile} />// mobile === '09123456789' وقتی شماره کامل و معتبر است، و '' در غیر این صورتالگوی سفارشی (اپراتور یا قاعدهٔ دیگر)
<PhoneInput label="شماره همراه" pattern={/^09\d{9}$/} />همهٔ پیکربندیها
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد | — | مقدار کنترلشده؛ شماره ملی یا رشتهٔ خالی. هر قالب ورودی به شکل ملی تبدیل میشود. |
| کپی کد | کپی کد | — | مقدار اولیه (غیرکنترلشده)؛ کپی کد هم پذیرفته میشود. |
| کپی کد | کپی کد | — | با هر تغییر. شماره معتبر کامل یا کپی کد. |
| کپی کد | کپی کد | — | اگر داده شود، یک فیلد پنهان با رشتهٔ ارقام برای فرم میسازد. |
| کپی کد | کپی کد | کپی کد | برچسب قابلمشاهده. |
| کپی کد | کپی کد | — | توضیح زیر فیلد. |
| کپی کد | کپی کد | کپی کد | پیام خطا؛ بعد از ترک فیلد با شماره نامعتبر یا ناقص، یا وقتی کپی کد درست است. |
| کپی کد | کپی کد · کپی کد · کپی کد | کپی کد | اندازهٔ فیلد؛ همان اندازههای Input. |
| کپی کد | کپی کد | کپی کد | اگر خالی باشد بعد از ترک فیلد خطا نشان داده میشود. |
| کپی کد | کپی کد | کپی کد | غیرفعال. |
| کپی کد | کپی کد | کپی کد | فقط نمایش. |
| کپی کد | کپی کد | کپی کد | خطای بیرونی، مثلاً شمارهٔ ثبتشده در سرور. |
| کپی کد | کپی کد | کپی کد | الگوی اعتبارسنجی روی رشتهٔ ارقام. پیشفرض پیشوندهای اپراتورهای فعال را میپذیرد. |
| کپی کد | کپی کد | کپی کد | متن راهنمای داخل فیلد. |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد | کپی کد | صدا بعد از ترک فیلد، اگر مقدار عوض شده باشد. کپی کد بیصداست. |
| کپی کد | کپی کد | — | مقصد اختصاصی صدا. |
| کپی کد | کپی کد · کپی کد | کپی کد | نمایش در چاپ. |
| کپی کد | کپی کد | — | بعد از ترک فیلد. |
| کپی کد | کپی کد | — | کلاس روی ریشه. |
توابع کمکی خالص (برای سرور و تست)
| تابع | کار |
|---|---|
| کپی کد | هر ورودی را به حداکثر ۱۱ رقم ملی تبدیل میکند؛ ارقام فارسی و عربی را لاتین میکند؛ کپی کد، کپی کد و کپی کد دهرقمی را درست میکند. |
| کپی کد | قالب نمایش کپی کد را میسازد؛ فقط برای نمایش. |
| کپی کد | بررسی اعتبار با الگو. |
| کپی کد | الگوی پیشفرض: کپی کد. |
قواعد اعتبارسنجی
- شماره باید ۱۱ رقم و با کپی کد شروع شود.
- پیشوند بعد از کپی کد باید یکی از بلوکهای الگو باشد: کپی کد تا کپی کد، کپی کد، کپی کد، کپی کد، کپی کد و کپی کد.
- شماره ناقص یا با پیشوند ثابتنشده خطا میدهد.
نکتهٔ نگهداری: بلوکهای اپراتور با زمان تغییر میکنند. الگوی پیشفرض را با جدول رسمی تخصیص شماره در اجرای نهایی تطبیق دهید؛ اگر لازم شد، کپی کد را در سطح محصول بازنویسی کنید تا بدون تغییر کامپوننت بهروز شود.
خروجی به فرم و سرور
- در فرم فقط کپی کد مقدار را میفرستد و آن هم فقط ارقام است: کپی کد.
- کپی کد همان رشته را میدهد یا کپی کد.
- نمایش کپی کد هرگز به سرور نمیرود.
- سرور باید همچنان شماره را اعتبارسنجی کند؛ این کامپوننت در مرورگر است.
حالتها
| حالت | نشانه | نمایش |
|---|---|---|
| پیشفرض | بدون خطا | متن راهنما یا شماره با قالب ماسک |
| ناقص یا نامعتبر بعد از ترک فیلد | کپی کد و شماره نامعتبر | حاشیهٔ خطا، آیکون و پیام |
| کپی کد | خطای بیرونی | همان حالت خطا |
| کپی کد / کپی کد / کپی کد | همان الگوی Input | — |
RTL، کیبورد و صفحهخوان
- ورودی همیشه چپبهراست است؛ شماره لاتین نمایش داده میشود، حتی در صفحهٔ فارسی.
- کپی کد و کپی کد برای صفحهکلید عددی و پیشنهاد شماره.
- برچسب، توضیح و خطا با همان مسیرهای Input به فیلد وصلاند.
صدا، حرکت، چاپ
- صدا: پیشفرض کپی کد، opt-in و همراه معادل بصری. کپی کد برای فرمهای حساس.
- حرکت: همان گذار حاشیهٔ Input؛ در کاهش حرکت بیانیمیشن.
- چاپ: کپی کد پیشفرض.
توکنها
از Input به ارث میرسد: کپی کد و توکنهای معنایی. هیچ توکن جدیدی تعریف نشده است.
قرارداد ARCH
- ظاهر و رفتار فقط از Input است؛ تم فقط حرکت و توکنها را تغییر میدهد.
- منطق شماره در کپی کد است و بدون وابستگی به React تست میشود.
- اعتبارسنجی در مرورگر است؛ تأیید مالکیت شماره با کد پیامکی (CodeCells) انجام میشود.