1 line
5.0 KiB
JavaScript
1 line
5.0 KiB
JavaScript
import{A as e,D as t,E as n,I as r,J as i,K as a,L as o,M as s,N as c,R as l,St as u,Tt as d,W as f,X as ee,_ as te,g as p,k as m,n as h,nt as g,pt as _,xt as v}from"./BasicIcon-B6lR-mG3.js";import{a as y}from"./dist-BEjUUhLz.js";import{c as b,t as x,u as S}from"./format-BHJptHdF.js";import{c as ne,f as re,i as ie,n as C}from"./index-DDi4iM2C.js";import{t as ae}from"./IconChevronBack-BXRfc2bX.js";import{t as w}from"./FormErrorBanner-8PcsTbdO.js";import{n as T,r as E,t as D}from"./formErrors-DglFjYkZ.js";import{t as O}from"./IconEditPen-CppsBLM9.js";var k={class:`page auth-page`},oe={class:`auth-top`},se={class:`page__scroll auth-body`},ce={class:`auth-lead`},A={class:`form-group`},j={class:`otp-row flex w-full max-w-full justify-center ltr`,dir:`ltr`,role:`group`,"aria-label":`کد تأیید`},M=[`id`,`value`,`aria-label`,`onInput`,`onKeydown`,`onPaste`],N={key:0,class:`input-error-text`},P={class:`ltr tabular-nums`,dir:`ltr`},F=4,I=60,L=h(l({__name:`OtpView`,setup(l){let h=p(),L=te(),R=ne(),z=m(()=>{let e=h.query.phone,t=Array.isArray(e)?e[0]:e;return b(typeof t==`string`?t:``)}),B=m(()=>h.query.mode===`register`),V=_(Array.from({length:F},()=>``)),H=_([]),U=_({}),W=_(``),G=_(I),K=m(()=>V.value.join(``)),q=m(()=>G.value<=0&&!R.loading),le=m(()=>{let e=Math.floor(G.value/60),t=G.value%60,n=`${String(e).padStart(2,`0`)}:${String(t).padStart(2,`0`)}`;return S(n)}),{pause:ue,resume:de}=y(()=>{if(G.value<=1){G.value=0,ue();return}--G.value},1e3,{immediate:!1});function J(){U.value=T(U.value,`code`),E(U.value)||(W.value=``)}function fe(e,t){H.value[t]=e}function Y(e){let t=Math.max(0,Math.min(3,e));f(()=>H.value[t]?.focus())}function X(){G.value=I,de()}function Z(e,t=0){let n=x(e).slice(0,F-t);if(!n)return t;let r=[...V.value],i=t;for(let e of n){if(i>=F)break;r[i]=e,i+=1}return V.value=r,J(),Math.min(i,3)}function Q(){K.value.length===F&&!R.loading&&$()}function pe(e,t){let n=t.target,r=x(n.value);if(r.length>1){let t=Z(r,e);n.value=V.value[e]??``,Y(t),Q();return}let i=r.slice(-1);V.value[e]=i,n.value=i,J(),i&&e<3?Y(e+1):i&&Q()}function me(e,t){if(t.key===`Backspace`){if(V.value[e]){V.value[e]=``,J();return}e>0&&(V.value[e-1]=``,J(),Y(e-1));return}if(t.key===`ArrowLeft`){t.preventDefault(),Y(e-1);return}t.key===`ArrowRight`&&(t.preventDefault(),Y(e+1))}function he(e,t){t.preventDefault(),Y(Z(t.clipboardData?.getData(`text`)??``,e)),Q()}function ge(e){return e?S(e):``}async function $(){if(R.loading)return;U.value={},W.value=``;let e={};if(K.value.length<F&&(e.code=`کد تأیید را کامل وارد کنید.`),E(e)){U.value=e,W.value=D;return}let t=await R.confirmOtp(z.value,x(K.value));t.success?L.replace(`/`):(W.value=t.message??`کد تأیید نامعتبر است.`,V.value=Array.from({length:F},()=>``),Y(0))}async function _e(){if(!q.value)return;W.value=``,U.value={};let e=B.value?re():null;if(B.value&&!e){W.value=`برای ارسال مجدد کد، نام و نام خانوادگی لازم است. لطفاً دوباره ثبتنام را شروع کنید.`;return}let t=await R.requestOtp(z.value,{isRegister:B.value,firstName:e?.firstName,lastName:e?.lastName});t.success?(V.value=Array.from({length:F},()=>``),X(),Y(0)):W.value=t.message??`خطا در ارسال مجدد کد.`}function ve(){L.replace({name:B.value?`register`:`login`})}return a(()=>{if(!z.value){L.replace({name:`login`});return}X(),Y(0)}),(a,l)=>(i(),c(`div`,k,[e(`header`,oe,[e(`button`,{type:`button`,class:`icon-btn`,"aria-label":`بازگشت`,onClick:l[0]||=e=>v(L).push(B.value?`/register`:`/login`)},[o(ae,{size:20})]),l[1]||=e(`h1`,{class:`auth-top__title`},`تأیید موبایل`,-1),o(ie,{variant:`inline`})]),e(`div`,se,[e(`p`,ce,`کد ارسالشده به `+d(v(S)(z.value))+` را وارد کنید.`,1),e(`form`,{class:`card`,onSubmit:n($,[`prevent`])},[o(w,{message:W.value},null,8,[`message`]),e(`div`,A,[e(`div`,j,[(i(!0),c(t,null,ee(V.value,(e,t)=>(i(),c(`input`,{id:`otp-${t}`,key:t,ref_for:!0,ref:e=>fe(e,t),class:u([`otp-box`,{"otp-box--error":U.value.code}]),type:`text`,inputmode:`numeric`,autocomplete:`one-time-code`,maxlength:`1`,value:ge(e),"aria-label":`رقم ${v(S)(String(t+1))}`,onInput:e=>pe(t,e),onKeydown:e=>me(t,e),onPaste:e=>he(t,e)},null,42,M))),128))]),U.value.code?(i(),c(`p`,N,d(U.value.code),1)):s(``,!0)]),o(C,{block:``,type:`submit`,loading:v(R).loading},{default:g(()=>[...l[2]||=[r(`تأیید و ورود`,-1)]]),_:1},8,[`loading`]),o(C,{block:``,variant:`outline`,type:`button`,class:`mt-2`,disabled:!q.value,onClick:_e},{default:g(()=>[q.value?(i(),c(t,{key:0},[r(`ارسال مجدد کد`)],64)):(i(),c(t,{key:1},[r(`ارسال مجدد کد (`+d(le.value)+`)`,1)],64))]),_:1},8,[`disabled`]),e(`button`,{type:`button`,class:`mt-3 mx-auto flex items-center justify-center gap-1.5 border-0 bg-transparent p-0 text-sm text-muted cursor-pointer transition-colors hover:text-text`,onClick:ve},[e(`span`,P,d(v(S)(z.value)),1),l[3]||=e(`span`,null,`ویرایش شماره`,-1),o(O,{size:18,"stroke-width":1.5})])],32)])]))}}),[[`__scopeId`,`data-v-125d5e90`]]);export{L as default}; |