aio-login 8.0.0 → 8.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/index.d.ts +2 -2
  2. package/index.js +1 -1
  3. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -98,5 +98,5 @@ type I_AILogin = {
98
98
  };
99
99
  };
100
100
  export declare function AIOLogin_updateCatchedUser(loginId: string, newUser: any): any;
101
- export declare const AILogin: FC<I_AILogin>;
102
- export {};
101
+ declare const AILogin: FC<I_AILogin>;
102
+ export default AILogin;
package/index.js CHANGED
@@ -1 +1 @@
1
- import{useEffect as e,useRef as r,useState as t}from"react";import s from"aio-input";import{AddToAttrs as o,Storage as i}from"aio-utils";import{Loading as n,Alert as a}from"aio-popup";import u from"axios";import"./index.css";import{Fragment as l}from"react/jsx-runtime";import{jsxs as d}from"react/jsx-runtime";import{jsx as p}from"react/jsx-runtime";import{createElement as c}from"react";export function AIOLogin_updateCatchedUser(e,r){let t=new i("ai-login"+e),s=t.load("data");if(!s)return r;let o={...s,user:r};return t.save("data",o)}export const AILogin=f=>{let{translate:m=()=>{},otpLength:g=4}=f,{validation:h=()=>{}}=f,[y,k]=t(),[b]=t(new i("ai-login"+f.id)),[w,x]=t(L),[$]=t(new n),[T,v]=t(!1),R=r(w);R.current=w,console.log(R.current);let[q,N]=t(E());function _(){return f.mode?f.mode:f.userpass?"userpass":f.otp?"otpnumber":"userpass"}function E(e){let r={inputs:()=>null,key:e||_(),title:null,submitText:"",shouldReturnsUserAndToken:!1};if("userpass"===r.key)r.inputs=()=>d(l,{children:[A({mode:r.key,field:"username",type:"text"}),A({mode:r.key,field:"password",type:"text"})]}),r.shouldReturnsUserAndToken=!0;else if("register"===r.key){if(f.register){let t=(f.register.inputs||(()=>[]))(R.current)||[];r.inputs=()=>d(l,{children:[A({mode:r.key,field:"username",type:"text"}),A({mode:r.key,field:"password",type:"password"}),A({mode:r.key,field:"repassword",type:"password"}),t.map(e=>A({mode:r.key,field:e.field,type:e.type,inputProps:e}))]})}}else"otpnumber"===r.key?r.inputs=()=>A({mode:r.key,field:"otpnumber",type:"text"}):"otpcode"===r.key&&(r.inputs=()=>A({mode:r.key,field:"otpcode",type:"text"}),r.shouldReturnsUserAndToken=!0);return r.submitText=U(r.key+"Button"),r.title=p("div",{className:"ai-login-title",children:U(r.key+"Title")}),r}function A(e){let r=e.inputProps||{},t=R.current;"register"===e.mode&&(t=t.register);let{maxLength:o=({otpnumber:11,otpcode:g})[e.mode],filter:i="otpnumber"===e.mode||"otpcode"===e.mode?["number"]:void 0,preview:n="password"===e.field,rtl:a=!!f.fa,label:u=f.label(e.field)}=r,l={...r,"aria-label":`aio-login-${e.field}`},d=r=>{let t=R.current;"register"===e.mode?x({...t,register:{...t.register,[e.field]:r}}):x({...t,[e.field]:r})};return c(s,{...r,maxLength:o,filter:i,preview:n,rtl:a,label:u,onChange:d,inputAttrs:l,key:`${e.mode}-${e.field}`,value:t[e.field],type:e.type})}function L(){var e;let r={username:"",password:"",otpnumber:"",otpcode:"",register:{username:"",password:"",repassword:""}};if(!f.register)return r;if(null!==(e=f.register)&&void 0!==e&&e.defaultValue){let t={};for(let s in f.register.defaultValue)t[s]=f.register.defaultValue[s];r.register=t}return r}let[P,j]=t(!0),[B,C]=t(!!f.splash);function U(e){let r={registerButton:{en:"Register",fa:"ثبت نام"},userpassButton:{en:"Login",fa:"ورود"},otpnumberButton:{en:"Send Number",fa:"ارسال شماره همراه"},otpcodeButton:{en:"Login",fa:"ورود"},registerTitle:{en:"Register",fa:"ثبت نام"},userpassTitle:{en:"Login",fa:"ورود"},otpcodeTitle:{en:"OTP Code",fa:"کد یکبار مصرف"},otpnumberTitle:{en:"Phone Number",fa:"شماره همراه"},switchuserpass:{en:"login by user name",fa:"ورود با نام کاربری"},switchregister:{en:"Go To Register",fa:"ثبت نام"},switchotp:{en:"login by otp",fa:"ورود با رمز یکبار مصرف"},repasswordMatch:{en:"Password is not match with Re password",fa:"رمز عبور با تکرار آن مطابقت ندارد"},usernameRequired:{en:"User Name is required",fa:"نام کاربری ضروری است"},passwordRequired:{en:"password is required",fa:"رمز عبور ضروری است"},repasswordRequired:{en:"Re Password is required",fa:"تکرار رمز عبور ضروری است"},otpnumberRequired:{en:"Phone Number is required",fa:"شماره همراه ضروری است"},otpcodeLength:{en:`otp code should be ${g} digit`,fa:`کد یکبار مصرف باید ${g} رقم باشد`},registerError:{en:"Registeration failed",fa:"ثبت نام با خطا روبرو شد"},userpassError:{en:"login by username failed",fa:"ورود با نام کاربری با خطا روبرو شد"},otpcodeError:{en:"login by otp failed",fa:"ورود با کد یکبار مصرف با خطا روبرو شد"},otpnumberError:{en:"send otp number for receive otp code failed",fa:"ارسال شماره همراه برای دریافت کد یکبار مصرف با خطا روبرو شد"}};return f.fa?r[e].fa:m(e)||r[e].en}async function I(e,r){if(!f.userpass)return;let{onSuccess:t}=await f.userpass.api(R.current,"userpass");$.show("login0");let s=await t(e);if($.hide("login0"),"object"==typeof s&&s.user&&"string"==typeof s.token){s.message&&W({type:"success",text:s.message});let{user:o,token:i}=s;b.save("data",{user:o,token:i}),k({user:o,token:i})}else{let n=`onSuccess of props.${r}.${"userpass"===r?"api":"codeApi"} should returns {user:any,token:string}`;W({type:"error",text:U(`${r}Error`),subtext:n})}}async function V(e,r){if(!f.userpass)return;let{onSuccess:t}=await f.userpass.api(R.current,"userpass");$.show("login0");let s=await t(e);$.hide("login0"),s.message&&W({type:"success",text:s.message}),"otpnumber"===r?N(E("otpcode")):setTimeout(()=>window.location.reload(),1e3)}async function M(e){"userpass"===q.key||"otpcode"===q.key?I(e,q.key):V(e,q.key)}async function O(){$.show("login0");let{url:e,method:r,body:t,onCatch:s}=await f[q.key].api(R.current,q.key);$.hide("login0"),u[r](e,t).then(M).catch(e=>{s?W({type:"error",text:"Error",subtext:s(e)}):e.message&&W({type:"error",text:"Error",subtext:e.message})})}function S(e){x(L()),N(E(e))}function z(e){return{className:"ai-login-mode",onClick:()=>S(e)}}function F(){return d("div",{className:"ai-login-modes",children:[f.userpass&&"userpass"!==q.key&&p("button",{...z("userpass"),children:U("switchuserpass")}),f.register&&"register"!==q.key&&p("button",{...z("register"),children:U("switchregister")}),f.otp&&"otpnumber"!==q.key&&p("button",{...z("otpnumber"),children:U("switchotp")})]})}function G(){let e=R.current;if("otpcode"===q.key&&(e.otpcode||"").length!==g)return U("otpcodeLength");if("otpnumber"===q.key&&!e.otpnumber)return U("otpnumberRequired");if("userpass"===q.key&&!e.username)return U("usernameRequired");if("register"===q.key){if(!e.register.username)return U("usernameRequired");if(!e.register.password)return U("passwordRequired");if(!e.register.repassword)return U("repasswordRequired");if(e.register.password!==e.register.repassword)return U("repasswordMatch")}return h(e,q.key)}function D(){let e=G();return d(l,{children:[p("div",{className:"ai-login-errors",children:!!e&&p("div",{className:"ai-login-error",children:e})}),p("button",{className:"ai-login-submit",disabled:!!e||!!T,onClick(){v(!0),setTimeout(()=>v(!1),3e3),O()},children:q.submitText})]})}function H(){let{title:e,inputs:r}=q;return d("div",{className:"ai-login-form",children:[e,r(),D(),F()]})}let J=e=>{let r=f[e],t=null;return r&&(t=r(q.key)),p("div",{className:`ai-login-${e}`,children:t})};function K(){b.remove("data"),window.location.reload()}async function Q(){if(f.splash&&setTimeout(()=>{C(!1)},f.splash.time),f.mock){k({user:f.mock.user,token:f.mock.token});return}let e=b.load("data",{},f.rememberTime),{user:r,token:t}=e;$.show("login0");let{url:s,method:o,onSuccess:i,onCatch:n}=await f.checkToken(t||"");$.hide("login0"),r&&t&&u[o](s,{headers:{authorization:`Bearer ${t}`}}).then(e=>{let s;try{s=i(e)}catch(o){W({type:"error",text:"checkToken failed",subtext:o.message});return}!0===s?k({user:r,token:t}):!1===s?K():W({type:"error",text:"checkToken failed",subtext:"checkToken props should return string as error or true as token is valid and false as token is invalid"})}).catch(e=>{let r,t="";try{r=n(e)}catch(s){t=s.message}"string"==typeof r?t=r:!1===r?K():t="AILogin checkToken onCatch props should returns string as error or false as invalid token",t?W({type:"error",text:"checkToken failed",subtext:t}):e.message&&W({type:"error",text:"Error",subtext:e.message})}),j(!1)}function W(e){a(e)}function X(){if(P||B)return f.splash?f.splash.html:null;if(!y){let e=o(f.attrs,{className:"ai-login",style:{direction:f.fa?"rtl":void 0}});return d("div",{...e,children:[J("before")," ",H()," ",J("after")]})}return f.renderApp({token:y.token,user:y.user,logout:K})}return e(()=>{Q()},[]),p(l,{children:X()})};
1
+ import{useEffect as e,useRef as r,useState as t}from"react";import s from"aio-input";import{AddToAttrs as o,Storage as i}from"aio-utils";import{Loading as n,Alert as a}from"aio-popup";import u from"axios";import"./index.css";import{Fragment as l}from"react/jsx-runtime";import{jsxs as d}from"react/jsx-runtime";import{jsx as p}from"react/jsx-runtime";import{createElement as c}from"react";export function AIOLogin_updateCatchedUser(e,r){let t=new i("ai-login"+e),s=t.load("data");if(!s)return r;let o={...s,user:r};return t.save("data",o)}let AILogin=f=>{let{translate:m=()=>{},otpLength:g=4}=f,{validation:h=()=>{}}=f,[y,k]=t(),[b]=t(new i("ai-login"+f.id)),[w,x]=t(L),[$]=t(new n),[T,v]=t(!1),R=r(w);R.current=w,console.log(R.current);let[q,N]=t(A());function _(){return f.mode?f.mode:f.userpass?"userpass":f.otp?"otpnumber":"userpass"}function A(e){let r={inputs:()=>null,key:e||_(),title:null,submitText:"",shouldReturnsUserAndToken:!1};if("userpass"===r.key)r.inputs=()=>d(l,{children:[E({mode:r.key,field:"username",type:"text"}),E({mode:r.key,field:"password",type:"text"})]}),r.shouldReturnsUserAndToken=!0;else if("register"===r.key){if(f.register){let t=(f.register.inputs||(()=>[]))(R.current)||[];r.inputs=()=>d(l,{children:[E({mode:r.key,field:"username",type:"text"}),E({mode:r.key,field:"password",type:"password"}),E({mode:r.key,field:"repassword",type:"password"}),t.map(e=>E({mode:r.key,field:e.field,type:e.type,inputProps:e}))]})}}else"otpnumber"===r.key?r.inputs=()=>E({mode:r.key,field:"otpnumber",type:"text"}):"otpcode"===r.key&&(r.inputs=()=>E({mode:r.key,field:"otpcode",type:"text"}),r.shouldReturnsUserAndToken=!0);return r.submitText=U(r.key+"Button"),r.title=p("div",{className:"ai-login-title",children:U(r.key+"Title")}),r}function E(e){let r=e.inputProps||{},t=R.current;"register"===e.mode&&(t=t.register);let{maxLength:o=({otpnumber:11,otpcode:g})[e.mode],filter:i="otpnumber"===e.mode||"otpcode"===e.mode?["number"]:void 0,preview:n="password"===e.field,rtl:a=!!f.fa,label:u=f.label(e.field)}=r,l={...r,"aria-label":`aio-login-${e.field}`},d=r=>{let t=R.current;"register"===e.mode?x({...t,register:{...t.register,[e.field]:r}}):x({...t,[e.field]:r})};return c(s,{...r,maxLength:o,filter:i,preview:n,rtl:a,label:u,onChange:d,inputAttrs:l,key:`${e.mode}-${e.field}`,value:t[e.field],type:e.type})}function L(){var e;let r={username:"",password:"",otpnumber:"",otpcode:"",register:{username:"",password:"",repassword:""}};if(!f.register)return r;if(null!==(e=f.register)&&void 0!==e&&e.defaultValue){let t={};for(let s in f.register.defaultValue)t[s]=f.register.defaultValue[s];r.register=t}return r}let[P,j]=t(!0),[B,C]=t(!!f.splash);function U(e){let r={registerButton:{en:"Register",fa:"ثبت نام"},userpassButton:{en:"Login",fa:"ورود"},otpnumberButton:{en:"Send Number",fa:"ارسال شماره همراه"},otpcodeButton:{en:"Login",fa:"ورود"},registerTitle:{en:"Register",fa:"ثبت نام"},userpassTitle:{en:"Login",fa:"ورود"},otpcodeTitle:{en:"OTP Code",fa:"کد یکبار مصرف"},otpnumberTitle:{en:"Phone Number",fa:"شماره همراه"},switchuserpass:{en:"login by user name",fa:"ورود با نام کاربری"},switchregister:{en:"Go To Register",fa:"ثبت نام"},switchotp:{en:"login by otp",fa:"ورود با رمز یکبار مصرف"},repasswordMatch:{en:"Password is not match with Re password",fa:"رمز عبور با تکرار آن مطابقت ندارد"},usernameRequired:{en:"User Name is required",fa:"نام کاربری ضروری است"},passwordRequired:{en:"password is required",fa:"رمز عبور ضروری است"},repasswordRequired:{en:"Re Password is required",fa:"تکرار رمز عبور ضروری است"},otpnumberRequired:{en:"Phone Number is required",fa:"شماره همراه ضروری است"},otpcodeLength:{en:`otp code should be ${g} digit`,fa:`کد یکبار مصرف باید ${g} رقم باشد`},registerError:{en:"Registeration failed",fa:"ثبت نام با خطا روبرو شد"},userpassError:{en:"login by username failed",fa:"ورود با نام کاربری با خطا روبرو شد"},otpcodeError:{en:"login by otp failed",fa:"ورود با کد یکبار مصرف با خطا روبرو شد"},otpnumberError:{en:"send otp number for receive otp code failed",fa:"ارسال شماره همراه برای دریافت کد یکبار مصرف با خطا روبرو شد"}};return f.fa?r[e].fa:m(e)||r[e].en}async function I(e,r){if(!f.userpass)return;let{onSuccess:t}=await f.userpass.api(R.current,"userpass");$.show("login0");let s=await t(e);if($.hide("login0"),"object"==typeof s&&s.user&&"string"==typeof s.token){s.message&&W({type:"success",text:s.message});let{user:o,token:i}=s;b.save("data",{user:o,token:i}),k({user:o,token:i})}else{let n=`onSuccess of props.${r}.${"userpass"===r?"api":"codeApi"} should returns {user:any,token:string}`;W({type:"error",text:U(`${r}Error`),subtext:n})}}async function V(e,r){if(!f.userpass)return;let{onSuccess:t}=await f.userpass.api(R.current,"userpass");$.show("login0");let s=await t(e);$.hide("login0"),s.message&&W({type:"success",text:s.message}),"otpnumber"===r?N(A("otpcode")):setTimeout(()=>window.location.reload(),1e3)}async function M(e){"userpass"===q.key||"otpcode"===q.key?I(e,q.key):V(e,q.key)}async function O(){$.show("login0");let{url:e,method:r,body:t,onCatch:s}=await f[q.key].api(R.current,q.key);$.hide("login0"),u[r](e,t).then(M).catch(e=>{s?W({type:"error",text:"Error",subtext:s(e)}):e.message&&W({type:"error",text:"Error",subtext:e.message})})}function S(e){x(L()),N(A(e))}function z(e){return{className:"ai-login-mode",onClick:()=>S(e)}}function F(){return d("div",{className:"ai-login-modes",children:[f.userpass&&"userpass"!==q.key&&p("button",{...z("userpass"),children:U("switchuserpass")}),f.register&&"register"!==q.key&&p("button",{...z("register"),children:U("switchregister")}),f.otp&&"otpnumber"!==q.key&&p("button",{...z("otpnumber"),children:U("switchotp")})]})}function G(){let e=R.current;if("otpcode"===q.key&&(e.otpcode||"").length!==g)return U("otpcodeLength");if("otpnumber"===q.key&&!e.otpnumber)return U("otpnumberRequired");if("userpass"===q.key&&!e.username)return U("usernameRequired");if("register"===q.key){if(!e.register.username)return U("usernameRequired");if(!e.register.password)return U("passwordRequired");if(!e.register.repassword)return U("repasswordRequired");if(e.register.password!==e.register.repassword)return U("repasswordMatch")}return h(e,q.key)}function D(){let e=G();return d(l,{children:[p("div",{className:"ai-login-errors",children:!!e&&p("div",{className:"ai-login-error",children:e})}),p("button",{className:"ai-login-submit",disabled:!!e||!!T,onClick(){v(!0),setTimeout(()=>v(!1),3e3),O()},children:q.submitText})]})}function H(){let{title:e,inputs:r}=q;return d("div",{className:"ai-login-form",children:[e,r(),D(),F()]})}let J=e=>{let r=f[e],t=null;return r&&(t=r(q.key)),p("div",{className:`ai-login-${e}`,children:t})};function K(){b.remove("data"),window.location.reload()}async function Q(){if(f.splash&&setTimeout(()=>{C(!1)},f.splash.time),f.mock){k({user:f.mock.user,token:f.mock.token});return}let e=b.load("data",{},f.rememberTime),{user:r,token:t}=e;$.show("login0");let{url:s,method:o,onSuccess:i,onCatch:n}=await f.checkToken(t||"");$.hide("login0"),r&&t&&u[o](s,{headers:{authorization:`Bearer ${t}`}}).then(e=>{let s;try{s=i(e)}catch(o){W({type:"error",text:"checkToken failed",subtext:o.message});return}!0===s?k({user:r,token:t}):!1===s?K():W({type:"error",text:"checkToken failed",subtext:"checkToken props should return string as error or true as token is valid and false as token is invalid"})}).catch(e=>{let r,t="";try{r=n(e)}catch(s){t=s.message}"string"==typeof r?t=r:!1===r?K():t="AILogin checkToken onCatch props should returns string as error or false as invalid token",t?W({type:"error",text:"checkToken failed",subtext:t}):e.message&&W({type:"error",text:"Error",subtext:e.message})}),j(!1)}function W(e){a(e)}function X(){if(P||B)return f.splash?f.splash.html:null;if(!y){let e=o(f.attrs,{className:"ai-login",style:{direction:f.fa?"rtl":void 0}});return d("div",{...e,children:[J("before")," ",H()," ",J("after")]})}return f.renderApp({token:y.token,user:y.user,logout:K})}return e(()=>{Q()},[]),p(l,{children:X()})};export default AILogin;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aio-login",
3
- "version": "8.0.0",
3
+ "version": "8.0.1",
4
4
  "description": "handle all types of popup and modals in react",
5
5
  "main": "index.js",
6
6
  "scripts": {