@chimera-pe/react-saas 0.0.8 → 0.0.10

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.
@@ -531,7 +531,7 @@ export {
531
531
  Le as Cargando,
532
532
  ze as Error,
533
533
  Je as SaasApp,
534
- xr as getInstanctia,
534
+ xr as getInstancia,
535
535
  hr as getToken,
536
536
  yr as getUsuario,
537
537
  _e as logout,
@@ -1 +1 @@
1
- (function(c,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("react/jsx-runtime"),require("@mui/material"),require("react-polyglot"),require("prop-types"),require("react-redux"),require("@reduxjs/toolkit"),require("axios"),require("jwt-decode"),require("react"),require("date-fns/locale"),require("@mui/x-date-pickers"),require("@mui/x-date-pickers/AdapterDateFns"),require("navigator-languages"),require("@mui/material/styles"),require("@mui/material/colors"),require("react-router-dom"),require("@mui/icons-material"),require("react-final-form"),require("mui-rff")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","@mui/material","react-polyglot","prop-types","react-redux","@reduxjs/toolkit","axios","jwt-decode","react","date-fns/locale","@mui/x-date-pickers","@mui/x-date-pickers/AdapterDateFns","navigator-languages","@mui/material/styles","@mui/material/colors","react-router-dom","@mui/icons-material","react-final-form","mui-rff"],n):(c=typeof globalThis<"u"?globalThis:c||self,n(c["react-saas"]={},c.ReactJSX,c.MuiMaterial,c.ReactPolyglot,c.PropTypes,c.ReactRedux,c.ReduxToolkit,c.Axios,c.JWTDecode,c.React,c.DateFNSLocale,c.MuiXDatePickers,c.MuiXDatePickersAdapter,c.NavigatorLanguages,c.MuiMaterialStyles,c.MuiMaterialColors,c.ReactRouterDom,c.MuiIconsMaterial,c.ReactFinalForm,c.MUIRFF))})(this,function(c,n,t,m,s,u,h,x,Q,f,q,Z,V,Y,b,A,g,j,P,L){"use strict";const T=()=>n.jsx(t.Box,{sx:{display:"flex",flexDirection:"column",flexGrow:1,justifyContent:"center",alignItems:"center"},children:n.jsx(t.CircularProgress,{})}),z=({titulo:r,texto:e,align:i="center",severity:a="error"})=>{const o=m.useTranslate();return n.jsx(t.Box,{sx:{display:"flex",flexDirection:"column",flexGrow:1,justifyContent:"center",alignItems:i},children:n.jsxs(t.Alert,{severity:a,children:[n.jsx(t.AlertTitle,{children:o(r)}),e&&o(e)]})})};Error.propTypes={titulo:s.string.isRequired,texto:s.string,align:s.string,severity:s.string};const I=h.createSlice({name:"ui",initialState:{tema:"light",temaSeleccionado:!1,idioma:"es"},reducers:{cambiarTema:(r,e)=>{r.tema=e.payload,r.temaSeleccionado=!0,localStorage.setItem("tema",e.payload)},cambiarIdioma:(r,e)=>{r.idioma=e.payload}}}),{cambiarTema:R,cambiarIdioma:ee}=I.actions,re=I.reducer,ie="https://saas.chimera.com.pe/backend",ne="https://saas.chimera.com.pe/oauth",D=(r=ne)=>({login:(e,i)=>x({url:`${r}/oauth/token`,headers:{"content-type":"application/x-www-form-urlencoded",Authorization:`Basic ${e}`},method:"post",data:{username:i.correo,password:i.password,grant_type:"password"}}),refreshToken:(e,i)=>x({url:`${r}/oauth/token`,headers:{"content-type":"application/x-www-form-urlencoded",Authorization:`Basic ${e}`},method:"post",data:{refresh_token:i,grant_type:"refresh_token"}})}),F=h.createSlice({name:"login",initialState:{cargando:!1,autenticado:!1,token:null,refreshToken:null,expiracion:null,usuario:null,perfiles:[],error:null},reducers:{logout:r=>{r.cargando=!1,r.autenticado=!1,r.token=null,r.refreshToken=null,r.expiracion=null,r.usuario=null,r.perfiles=[],r.error=null}},extraReducers(r){r.addCase(k.pending,e=>{e.cargando=!0,e.error=null}).addCase(k.fulfilled,(e,i)=>{const a=i.payload.access_token,o=Q(a),d=new Date;d.setSeconds(d.getSeconds()+i.payload.expires_in),e.cargando=!1,e.autenticado=!0,e.token=a,e.refreshToken=i.payload.refresh_token,e.expiracion=d.getTime(),e.usuario=o.name,e.perfiles=o.authorities}).addCase(k.rejected,(e,i)=>{var a;console.log(i),e.cargando=!1,e.autenticado=!1,e.token=null,e.refreshToken=null,e.expiracion=null,e.usuario=null,e.perfiles=[],e.error=(a=i.error)==null?void 0:a.message}).addCase(y.pending,e=>{e.cargando=!0}).addCase(y.fulfilled,(e,i)=>{const a=new Date;a.setSeconds(a.getSeconds()+i.payload.expires_in),e.token=i.payload.access_token,e.refreshToken=i.payload.refresh_token,e.expiracion=a.getTime()}).addCase(y.rejected,(e,i)=>{var a;e.cargando=!1,e.autenticado=!1,e.token=null,e.refreshToken=null,e.expiracion=null,e.usuario=null,e.perfiles=[],e.error=(a=i.error)==null?void 0:a.message})}}),k=h.createAsyncThunk("login/requestToken",async r=>(await D(r.devURL).login(r.clientCredentials,r.data)).data),y=h.createAsyncThunk("login/refreshToken",async(r,e,i)=>(await D(r).refreshToken(e,i)).data),{logout:U}=F.actions,oe=r=>r.token,ae=r=>r.usuario,se=F.reducer,M=h.createSlice({name:"notificacion",initialState:[],reducers:{mostrarNotificacion:(r,e)=>{r.push(e.payload)},ocultarNotificacion:r=>{r.pop()}}}),{mostrarNotificacion:ce,ocultarNotificacion:te}=M.actions,le=M.reducer,de=(r=ie,e)=>x({url:`${r}/identidad/`,params:{codigoAplicacion:e}}),C={primary:"#1C6CCC",secondary:"#17A7FF",error:"#f44336",warning:"#ff9800",info:"#2196f3",success:"#4caf50"},ue=h.createSlice({name:"inicializar",initialState:{inicializando:!0,inicializado:!1,instancia:{color:C},error:null},extraReducers(r){r.addCase(S.pending,e=>{e.inicializando=!0}).addCase(S.fulfilled,(e,i)=>{e.inicializando=!1,e.inicializado=!0,e.instancia={...i.payload,abreviatura:i.payload.nombre.match(/\b([A-Z])/g).join(""),color:{...C,...i.payload.color}},e.error=null}).addCase(S.rejected,(e,i)=>{e.inicializando=!1,e.inicializado=!1,e.instancia={color:C},e.error=i.payload})}}),S=h.createAsyncThunk("inicializar",async r=>(await de(r.devURL,r.aplicacion)).data),pe=r=>r.instancia,fe=ue.reducer,he=r=>h.configureStore({reducer:{ui:re,aplicacion:fe,login:se,notificaciones:le,...r}}),ge=()=>{const[r,e]=f.useState(!1),i=u.useDispatch(),a=m.useTranslate(),o=u.useSelector(l=>l.notificaciones[0]);f.useEffect(()=>{e(!!o)},[o]);const d=()=>{e(!1),i(te())};return n.jsx(t.Snackbar,{open:r,message:(o==null?void 0:o.mensaje)&&o.tipo==="default"&&a(o.mensaje),autoHideDuration:5e3,onClose:d,children:(o==null?void 0:o.mensaje)&&o.tipo!=="default"&&n.jsx(t.Alert,{severity:o.tipo,children:a(o.mensaje)})})},me={es:{inicializar:{error:{titulo:"Error iniciando aplicación",mensaje:"No fue posible conectarnos con el servicio"}},login:{titulo:"Acceder al sistema",correo:"Correo electrónico",password:"Contraseña",ingresar:"Acceder",validacion:{correo:"Debe ingresar una dirección de correo",password:"Debe ingresar una contraseña"},error:"Usuario o contraseña incorrectos"},copy:"Todos los derechos reservados "}},ke={en:q.enGB,es:q.es},N=({messages:r,children:e})=>{const i=u.useSelector(a=>a.ui.idioma);return n.jsx(m.I18n,{locale:i,messages:r[i],children:n.jsx(Z.LocalizationProvider,{dateAdapter:V.AdapterDateFns,adapterLocale:ke[i],children:e})})};N.propTypes={messages:s.object,children:s.element.isRequired};const ye=()=>{const r=Y();if(!(r!=null&&r.length))return;const e=r[0];return e.indexOf("-")?e.substring(0,e.indexOf("-")):e},B=({messages:r,idiomaDefecto:e,children:i})=>{const a=u.useDispatch(),o=ye();f.useEffect(()=>{let l=Reflect.ownKeys(r)[0];o&&Object.hasOwn(r,o)?l=o:e&&Object.hasOwn(r,e)&&(l=e),a(ee(l))},[a,r,e,o]);const d={};return Object.keys(r).forEach(l=>{d[l]={...r[l],saas:me[l]}}),n.jsx(N,{messages:d,children:i})};B.propTypes={messages:s.object,idiomaDefecto:s.string,children:s.element.isRequired};const E=({children:r})=>{const e=u.useDispatch(),{instancia:i}=u.useSelector(l=>l.aplicacion),a=u.useSelector(l=>l.ui.tema),o=t.useMediaQuery("(prefers-color-scheme: dark)");f.useEffect(()=>{e(R(o?"dark":"light"))},[e,o]);const d=f.useMemo(()=>b.createTheme({palette:{mode:a,primary:{main:i.color.primary},secondary:{main:i.color.secondary},error:{main:i.color.error},warning:{main:i.color.warning},info:{main:i.color.info},success:{main:i.color.success},...a==="light"&&{background:{default:A.grey.A200,paper:A.grey[100]}}},shape:{borderRadius:6}}),[a,i]);return n.jsxs(b.ThemeProvider,{theme:d,children:[n.jsx(t.CssBaseline,{}),r]})};E.propTypes={children:s.element.isRequired};const _=r=>{const e=u.useDispatch(),i=u.useSelector(o=>o.login),a=u.useSelector(o=>o.aplicacion.instancia);return f.useEffect(()=>{i.autenticado&&i.expiracion&&new Date(i.expiracion)<new Date&&(i.refreshToken?e(y(r,a.clientCredentials,i.refreshToken)):e(U()))},[r,a.clientCredentials,i,e]),i.autenticado},G=()=>{const r=u.useDispatch();return f.useCallback((e,i="default")=>{r(ce({mensaje:e,tipo:i}))},[r])},O=({devURL:r})=>{const e=u.useDispatch(),i=m.useTranslate(),a=G(),{cargando:o,error:d}=u.useSelector(p=>p.login),l=u.useSelector(p=>p.aplicacion.instancia),w=p=>{e(k({devURL:r,clientCredentials:l.clientCredentials,data:{correo:p.correo,password:p.password}}))},Se=p=>{const v={correo:void 0,password:void 0};return p.correo||(v.correo=i("saas.login.validacion.correo")),p.password||(v.password=i("saas.login.validacion.password")),v};return f.useEffect(()=>{d&&a("saas.login.error","error")},[a,d]),n.jsx(P.Form,{onSubmit:w,validate:Se,render:({handleSubmit:p})=>n.jsxs("form",{onSubmit:p,children:[n.jsx(L.TextField,{id:"correo",name:"correo",label:i("saas.login.correo"),variant:"outlined",autoComplete:"off",disabled:o,autoFocus:!0,InputProps:{startAdornment:n.jsx(t.InputAdornment,{position:"start",children:n.jsx(j.Email,{color:"primary"})})}}),n.jsx(L.TextField,{id:"password",name:"password",type:"password",label:i("saas.login.password"),variant:"outlined",autoComplete:"current-password",disabled:o,InputProps:{startAdornment:n.jsx(t.InputAdornment,{position:"start",children:n.jsx(j.Lock,{color:"primary"})})}}),n.jsxs(t.Grid,{container:!0,children:[n.jsx(t.Grid,{item:!0,xs:6}),n.jsx(t.Grid,{item:!0,xs:6,align:"right",children:n.jsx(t.Button,{variant:"contained",color:"primary",type:"submit",disabled:o,children:o?n.jsx(t.CircularProgress,{size:24,thickness:4}):i("saas.login.ingresar")})})]})]})})};O.propTypes={devURL:s.string};const $=({devURL:r})=>{const e=u.useSelector(l=>l.aplicacion.instancia),i=m.useTranslate(),a=g.useLocation(),o=_(r),{from:d}=a.state||{from:{pathname:"/"}};return!e.requiereLogin||o?n.jsx(g.Navigate,{to:d}):n.jsxs(t.Box,{sx:{position:"relative",display:"flex",flexDirection:"column",flexGrow:1,minHeight:"100vh",backgroundColor:"primary.main","&::before":{content:'""',backgroundImage:`url(${e.logo})`,backgroundSize:"contain",backgroundRepeat:"no-repeat",backgroundPosition:"right",position:"absolute",top:"20%",bottom:0,right:0,width:"50%",opacity:.02,filter:"grayscale(100%)"}},children:[n.jsx(t.Box,{sx:{display:"flex",justifyContent:"center",alignItems:"center",flexGrow:1},children:n.jsx(t.Container,{maxWidth:"md",children:n.jsxs(t.Grid,{container:!0,spacing:3,children:[n.jsxs(t.Grid,{item:!0,xs:12,lg:5,align:"center",children:[n.jsx("img",{src:e.logo,alt:e.nombre,style:{maxWidth:"100%"}}),n.jsx(t.Typography,{variant:"h3",align:"center",children:i("aplicacion.nombre",{smart_count:1})}),n.jsx(t.Typography,{variant:"h5",align:"center",children:e.nombre})]}),n.jsx(t.Grid,{item:!0,xs:12,lg:7,sx:{display:"flex",alignItems:"center",justifyContent:"center",zIndex:5},children:n.jsxs(t.Card,{elevation:5,children:[n.jsx(t.CardHeader,{title:i("saas.login.titulo"),titleTypographyProps:{align:"center"}}),n.jsx(t.CardContent,{sx:{"& .MuiTextField-root":{mb:2}},children:n.jsx(O,{devURL:r})})]})})]})})}),n.jsx(t.AppBar,{position:"static",color:"primary",children:n.jsx(t.Toolbar,{sx:{justifyContent:"center"},children:n.jsxs(t.Typography,{variant:"caption",children:[i("saas.copy"),n.jsx(t.Link,{href:"//chimera.com.pe",color:"inherit",target:"_blank",rel:"noreferrer",children:"Chimera Software"})]})})})]})};$.propTypes={devURL:s.string};const H=({devURL:r,redirectTo:e,children:i})=>{const a=g.useLocation();return _(r)?i:n.jsx(g.Navigate,{to:e,state:{from:a},replace:!0})};H.propTypes={devURL:s.string,redirectTo:s.string.isRequired,children:s.element.isRequired};const W=({devURL:r,requiereLogin:e,children:i})=>n.jsx(g.BrowserRouter,{children:n.jsxs(g.Routes,{children:[n.jsx(g.Route,{path:"/login",element:n.jsx($,{devURL:r})}),n.jsx(g.Route,{path:"/*",element:e?n.jsx(H,{devURL:r,redirectTo:"/login",children:i}):i})]})});W.propTypes={devURL:s.string,requiereLogin:s.bool,children:s.element.isRequired};const X=({devURL:r,children:e})=>{const i=u.useSelector(a=>a.aplicacion);return n.jsx(t.Box,{sx:{display:"flex",flexDirection:"column",minHeight:"100vh",justifyContent:"flex-start",backgroundColor:"background.default"},children:i.inicializando?n.jsx(T,{}):i.error||!i.inicializado?n.jsx(z,{titulo:"saas.inicializar.error.titulo",texto:"saas.inicializar.error.mensaje"}):n.jsxs(n.Fragment,{children:[n.jsx(W,{devURL:r,requiereLogin:i.instancia.requiereLogin,children:e}),n.jsx(ge,{})]})})};X.propTypes={devURL:s.string,children:s.element.isRequired};const J=({aplicacion:r,devSaasURL:e,devAuthURL:i,messages:a,idiomaDefecto:o,children:d})=>{const l=u.useDispatch();return f.useEffect(()=>{l(S({devURL:e,aplicacion:r}))},[l,r,e]),n.jsx(B,{messages:a,idiomaDefecto:o,children:n.jsx(E,{children:n.jsx(X,{devURL:i,children:d})})})};J.propTypes={aplicacion:s.string.isRequired,devSaasURL:s.string,devAuthURL:s.string,messages:s.object.isRequired,idiomaDefecto:s.string,children:s.element.isRequired};const K=({customReducers:r,aplicacion:e,devSaasURL:i,devAuthURL:a,dev:o=!1,idiomaDefecto:d,messages:l,children:w})=>n.jsx(u.Provider,{store:he(r),children:n.jsx(J,{aplicacion:e,devSaasURL:o?i:void 0,devAuthURL:o?a:void 0,idiomaDefecto:d,messages:l,children:w})});K.propTypes={customReducers:s.object,aplicacion:s.string.isRequired,devSaasURL:s.string,devAuthURL:s.string,dev:s.bool,idiomaDefecto:s.string,messages:s.object,children:s.element.isRequired},c.Cargando=T,c.Error=z,c.SaasApp=K,c.getInstanctia=pe,c.getToken=oe,c.getUsuario=ae,c.logout=U,c.useNotificar=G,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
1
+ (function(c,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("react/jsx-runtime"),require("@mui/material"),require("react-polyglot"),require("prop-types"),require("react-redux"),require("@reduxjs/toolkit"),require("axios"),require("jwt-decode"),require("react"),require("date-fns/locale"),require("@mui/x-date-pickers"),require("@mui/x-date-pickers/AdapterDateFns"),require("navigator-languages"),require("@mui/material/styles"),require("@mui/material/colors"),require("react-router-dom"),require("@mui/icons-material"),require("react-final-form"),require("mui-rff")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","@mui/material","react-polyglot","prop-types","react-redux","@reduxjs/toolkit","axios","jwt-decode","react","date-fns/locale","@mui/x-date-pickers","@mui/x-date-pickers/AdapterDateFns","navigator-languages","@mui/material/styles","@mui/material/colors","react-router-dom","@mui/icons-material","react-final-form","mui-rff"],n):(c=typeof globalThis<"u"?globalThis:c||self,n(c["react-saas"]={},c.ReactJSX,c.MuiMaterial,c.ReactPolyglot,c.PropTypes,c.ReactRedux,c.ReduxToolkit,c.Axios,c.JWTDecode,c.React,c.DateFNSLocale,c.MuiXDatePickers,c.MuiXDatePickersAdapter,c.NavigatorLanguages,c.MuiMaterialStyles,c.MuiMaterialColors,c.ReactRouterDom,c.MuiIconsMaterial,c.ReactFinalForm,c.MUIRFF))})(this,function(c,n,t,m,s,u,h,x,Q,f,q,Z,V,Y,b,A,g,j,P,L){"use strict";const T=()=>n.jsx(t.Box,{sx:{display:"flex",flexDirection:"column",flexGrow:1,justifyContent:"center",alignItems:"center"},children:n.jsx(t.CircularProgress,{})}),z=({titulo:r,texto:e,align:i="center",severity:a="error"})=>{const o=m.useTranslate();return n.jsx(t.Box,{sx:{display:"flex",flexDirection:"column",flexGrow:1,justifyContent:"center",alignItems:i},children:n.jsxs(t.Alert,{severity:a,children:[n.jsx(t.AlertTitle,{children:o(r)}),e&&o(e)]})})};Error.propTypes={titulo:s.string.isRequired,texto:s.string,align:s.string,severity:s.string};const I=h.createSlice({name:"ui",initialState:{tema:"light",temaSeleccionado:!1,idioma:"es"},reducers:{cambiarTema:(r,e)=>{r.tema=e.payload,r.temaSeleccionado=!0,localStorage.setItem("tema",e.payload)},cambiarIdioma:(r,e)=>{r.idioma=e.payload}}}),{cambiarTema:R,cambiarIdioma:ee}=I.actions,re=I.reducer,ie="https://saas.chimera.com.pe/backend",ne="https://saas.chimera.com.pe/oauth",D=(r=ne)=>({login:(e,i)=>x({url:`${r}/oauth/token`,headers:{"content-type":"application/x-www-form-urlencoded",Authorization:`Basic ${e}`},method:"post",data:{username:i.correo,password:i.password,grant_type:"password"}}),refreshToken:(e,i)=>x({url:`${r}/oauth/token`,headers:{"content-type":"application/x-www-form-urlencoded",Authorization:`Basic ${e}`},method:"post",data:{refresh_token:i,grant_type:"refresh_token"}})}),F=h.createSlice({name:"login",initialState:{cargando:!1,autenticado:!1,token:null,refreshToken:null,expiracion:null,usuario:null,perfiles:[],error:null},reducers:{logout:r=>{r.cargando=!1,r.autenticado=!1,r.token=null,r.refreshToken=null,r.expiracion=null,r.usuario=null,r.perfiles=[],r.error=null}},extraReducers(r){r.addCase(k.pending,e=>{e.cargando=!0,e.error=null}).addCase(k.fulfilled,(e,i)=>{const a=i.payload.access_token,o=Q(a),d=new Date;d.setSeconds(d.getSeconds()+i.payload.expires_in),e.cargando=!1,e.autenticado=!0,e.token=a,e.refreshToken=i.payload.refresh_token,e.expiracion=d.getTime(),e.usuario=o.name,e.perfiles=o.authorities}).addCase(k.rejected,(e,i)=>{var a;console.log(i),e.cargando=!1,e.autenticado=!1,e.token=null,e.refreshToken=null,e.expiracion=null,e.usuario=null,e.perfiles=[],e.error=(a=i.error)==null?void 0:a.message}).addCase(y.pending,e=>{e.cargando=!0}).addCase(y.fulfilled,(e,i)=>{const a=new Date;a.setSeconds(a.getSeconds()+i.payload.expires_in),e.token=i.payload.access_token,e.refreshToken=i.payload.refresh_token,e.expiracion=a.getTime()}).addCase(y.rejected,(e,i)=>{var a;e.cargando=!1,e.autenticado=!1,e.token=null,e.refreshToken=null,e.expiracion=null,e.usuario=null,e.perfiles=[],e.error=(a=i.error)==null?void 0:a.message})}}),k=h.createAsyncThunk("login/requestToken",async r=>(await D(r.devURL).login(r.clientCredentials,r.data)).data),y=h.createAsyncThunk("login/refreshToken",async(r,e,i)=>(await D(r).refreshToken(e,i)).data),{logout:U}=F.actions,oe=r=>r.token,ae=r=>r.usuario,se=F.reducer,M=h.createSlice({name:"notificacion",initialState:[],reducers:{mostrarNotificacion:(r,e)=>{r.push(e.payload)},ocultarNotificacion:r=>{r.pop()}}}),{mostrarNotificacion:ce,ocultarNotificacion:te}=M.actions,le=M.reducer,de=(r=ie,e)=>x({url:`${r}/identidad/`,params:{codigoAplicacion:e}}),C={primary:"#1C6CCC",secondary:"#17A7FF",error:"#f44336",warning:"#ff9800",info:"#2196f3",success:"#4caf50"},ue=h.createSlice({name:"inicializar",initialState:{inicializando:!0,inicializado:!1,instancia:{color:C},error:null},extraReducers(r){r.addCase(S.pending,e=>{e.inicializando=!0}).addCase(S.fulfilled,(e,i)=>{e.inicializando=!1,e.inicializado=!0,e.instancia={...i.payload,abreviatura:i.payload.nombre.match(/\b([A-Z])/g).join(""),color:{...C,...i.payload.color}},e.error=null}).addCase(S.rejected,(e,i)=>{e.inicializando=!1,e.inicializado=!1,e.instancia={color:C},e.error=i.payload})}}),S=h.createAsyncThunk("inicializar",async r=>(await de(r.devURL,r.aplicacion)).data),pe=r=>r.instancia,fe=ue.reducer,he=r=>h.configureStore({reducer:{ui:re,aplicacion:fe,login:se,notificaciones:le,...r}}),ge=()=>{const[r,e]=f.useState(!1),i=u.useDispatch(),a=m.useTranslate(),o=u.useSelector(l=>l.notificaciones[0]);f.useEffect(()=>{e(!!o)},[o]);const d=()=>{e(!1),i(te())};return n.jsx(t.Snackbar,{open:r,message:(o==null?void 0:o.mensaje)&&o.tipo==="default"&&a(o.mensaje),autoHideDuration:5e3,onClose:d,children:(o==null?void 0:o.mensaje)&&o.tipo!=="default"&&n.jsx(t.Alert,{severity:o.tipo,children:a(o.mensaje)})})},me={es:{inicializar:{error:{titulo:"Error iniciando aplicación",mensaje:"No fue posible conectarnos con el servicio"}},login:{titulo:"Acceder al sistema",correo:"Correo electrónico",password:"Contraseña",ingresar:"Acceder",validacion:{correo:"Debe ingresar una dirección de correo",password:"Debe ingresar una contraseña"},error:"Usuario o contraseña incorrectos"},copy:"Todos los derechos reservados "}},ke={en:q.enGB,es:q.es},N=({messages:r,children:e})=>{const i=u.useSelector(a=>a.ui.idioma);return n.jsx(m.I18n,{locale:i,messages:r[i],children:n.jsx(Z.LocalizationProvider,{dateAdapter:V.AdapterDateFns,adapterLocale:ke[i],children:e})})};N.propTypes={messages:s.object,children:s.element.isRequired};const ye=()=>{const r=Y();if(!(r!=null&&r.length))return;const e=r[0];return e.indexOf("-")?e.substring(0,e.indexOf("-")):e},B=({messages:r,idiomaDefecto:e,children:i})=>{const a=u.useDispatch(),o=ye();f.useEffect(()=>{let l=Reflect.ownKeys(r)[0];o&&Object.hasOwn(r,o)?l=o:e&&Object.hasOwn(r,e)&&(l=e),a(ee(l))},[a,r,e,o]);const d={};return Object.keys(r).forEach(l=>{d[l]={...r[l],saas:me[l]}}),n.jsx(N,{messages:d,children:i})};B.propTypes={messages:s.object,idiomaDefecto:s.string,children:s.element.isRequired};const E=({children:r})=>{const e=u.useDispatch(),{instancia:i}=u.useSelector(l=>l.aplicacion),a=u.useSelector(l=>l.ui.tema),o=t.useMediaQuery("(prefers-color-scheme: dark)");f.useEffect(()=>{e(R(o?"dark":"light"))},[e,o]);const d=f.useMemo(()=>b.createTheme({palette:{mode:a,primary:{main:i.color.primary},secondary:{main:i.color.secondary},error:{main:i.color.error},warning:{main:i.color.warning},info:{main:i.color.info},success:{main:i.color.success},...a==="light"&&{background:{default:A.grey.A200,paper:A.grey[100]}}},shape:{borderRadius:6}}),[a,i]);return n.jsxs(b.ThemeProvider,{theme:d,children:[n.jsx(t.CssBaseline,{}),r]})};E.propTypes={children:s.element.isRequired};const _=r=>{const e=u.useDispatch(),i=u.useSelector(o=>o.login),a=u.useSelector(o=>o.aplicacion.instancia);return f.useEffect(()=>{i.autenticado&&i.expiracion&&new Date(i.expiracion)<new Date&&(i.refreshToken?e(y(r,a.clientCredentials,i.refreshToken)):e(U()))},[r,a.clientCredentials,i,e]),i.autenticado},G=()=>{const r=u.useDispatch();return f.useCallback((e,i="default")=>{r(ce({mensaje:e,tipo:i}))},[r])},O=({devURL:r})=>{const e=u.useDispatch(),i=m.useTranslate(),a=G(),{cargando:o,error:d}=u.useSelector(p=>p.login),l=u.useSelector(p=>p.aplicacion.instancia),w=p=>{e(k({devURL:r,clientCredentials:l.clientCredentials,data:{correo:p.correo,password:p.password}}))},Se=p=>{const v={correo:void 0,password:void 0};return p.correo||(v.correo=i("saas.login.validacion.correo")),p.password||(v.password=i("saas.login.validacion.password")),v};return f.useEffect(()=>{d&&a("saas.login.error","error")},[a,d]),n.jsx(P.Form,{onSubmit:w,validate:Se,render:({handleSubmit:p})=>n.jsxs("form",{onSubmit:p,children:[n.jsx(L.TextField,{id:"correo",name:"correo",label:i("saas.login.correo"),variant:"outlined",autoComplete:"off",disabled:o,autoFocus:!0,InputProps:{startAdornment:n.jsx(t.InputAdornment,{position:"start",children:n.jsx(j.Email,{color:"primary"})})}}),n.jsx(L.TextField,{id:"password",name:"password",type:"password",label:i("saas.login.password"),variant:"outlined",autoComplete:"current-password",disabled:o,InputProps:{startAdornment:n.jsx(t.InputAdornment,{position:"start",children:n.jsx(j.Lock,{color:"primary"})})}}),n.jsxs(t.Grid,{container:!0,children:[n.jsx(t.Grid,{item:!0,xs:6}),n.jsx(t.Grid,{item:!0,xs:6,align:"right",children:n.jsx(t.Button,{variant:"contained",color:"primary",type:"submit",disabled:o,children:o?n.jsx(t.CircularProgress,{size:24,thickness:4}):i("saas.login.ingresar")})})]})]})})};O.propTypes={devURL:s.string};const $=({devURL:r})=>{const e=u.useSelector(l=>l.aplicacion.instancia),i=m.useTranslate(),a=g.useLocation(),o=_(r),{from:d}=a.state||{from:{pathname:"/"}};return!e.requiereLogin||o?n.jsx(g.Navigate,{to:d}):n.jsxs(t.Box,{sx:{position:"relative",display:"flex",flexDirection:"column",flexGrow:1,minHeight:"100vh",backgroundColor:"primary.main","&::before":{content:'""',backgroundImage:`url(${e.logo})`,backgroundSize:"contain",backgroundRepeat:"no-repeat",backgroundPosition:"right",position:"absolute",top:"20%",bottom:0,right:0,width:"50%",opacity:.02,filter:"grayscale(100%)"}},children:[n.jsx(t.Box,{sx:{display:"flex",justifyContent:"center",alignItems:"center",flexGrow:1},children:n.jsx(t.Container,{maxWidth:"md",children:n.jsxs(t.Grid,{container:!0,spacing:3,children:[n.jsxs(t.Grid,{item:!0,xs:12,lg:5,align:"center",children:[n.jsx("img",{src:e.logo,alt:e.nombre,style:{maxWidth:"100%"}}),n.jsx(t.Typography,{variant:"h3",align:"center",children:i("aplicacion.nombre",{smart_count:1})}),n.jsx(t.Typography,{variant:"h5",align:"center",children:e.nombre})]}),n.jsx(t.Grid,{item:!0,xs:12,lg:7,sx:{display:"flex",alignItems:"center",justifyContent:"center",zIndex:5},children:n.jsxs(t.Card,{elevation:5,children:[n.jsx(t.CardHeader,{title:i("saas.login.titulo"),titleTypographyProps:{align:"center"}}),n.jsx(t.CardContent,{sx:{"& .MuiTextField-root":{mb:2}},children:n.jsx(O,{devURL:r})})]})})]})})}),n.jsx(t.AppBar,{position:"static",color:"primary",children:n.jsx(t.Toolbar,{sx:{justifyContent:"center"},children:n.jsxs(t.Typography,{variant:"caption",children:[i("saas.copy"),n.jsx(t.Link,{href:"//chimera.com.pe",color:"inherit",target:"_blank",rel:"noreferrer",children:"Chimera Software"})]})})})]})};$.propTypes={devURL:s.string};const H=({devURL:r,redirectTo:e,children:i})=>{const a=g.useLocation();return _(r)?i:n.jsx(g.Navigate,{to:e,state:{from:a},replace:!0})};H.propTypes={devURL:s.string,redirectTo:s.string.isRequired,children:s.element.isRequired};const W=({devURL:r,requiereLogin:e,children:i})=>n.jsx(g.BrowserRouter,{children:n.jsxs(g.Routes,{children:[n.jsx(g.Route,{path:"/login",element:n.jsx($,{devURL:r})}),n.jsx(g.Route,{path:"/*",element:e?n.jsx(H,{devURL:r,redirectTo:"/login",children:i}):i})]})});W.propTypes={devURL:s.string,requiereLogin:s.bool,children:s.element.isRequired};const X=({devURL:r,children:e})=>{const i=u.useSelector(a=>a.aplicacion);return n.jsx(t.Box,{sx:{display:"flex",flexDirection:"column",minHeight:"100vh",justifyContent:"flex-start",backgroundColor:"background.default"},children:i.inicializando?n.jsx(T,{}):i.error||!i.inicializado?n.jsx(z,{titulo:"saas.inicializar.error.titulo",texto:"saas.inicializar.error.mensaje"}):n.jsxs(n.Fragment,{children:[n.jsx(W,{devURL:r,requiereLogin:i.instancia.requiereLogin,children:e}),n.jsx(ge,{})]})})};X.propTypes={devURL:s.string,children:s.element.isRequired};const J=({aplicacion:r,devSaasURL:e,devAuthURL:i,messages:a,idiomaDefecto:o,children:d})=>{const l=u.useDispatch();return f.useEffect(()=>{l(S({devURL:e,aplicacion:r}))},[l,r,e]),n.jsx(B,{messages:a,idiomaDefecto:o,children:n.jsx(E,{children:n.jsx(X,{devURL:i,children:d})})})};J.propTypes={aplicacion:s.string.isRequired,devSaasURL:s.string,devAuthURL:s.string,messages:s.object.isRequired,idiomaDefecto:s.string,children:s.element.isRequired};const K=({customReducers:r,aplicacion:e,devSaasURL:i,devAuthURL:a,dev:o=!1,idiomaDefecto:d,messages:l,children:w})=>n.jsx(u.Provider,{store:he(r),children:n.jsx(J,{aplicacion:e,devSaasURL:o?i:void 0,devAuthURL:o?a:void 0,idiomaDefecto:d,messages:l,children:w})});K.propTypes={customReducers:s.object,aplicacion:s.string.isRequired,devSaasURL:s.string,devAuthURL:s.string,dev:s.bool,idiomaDefecto:s.string,messages:s.object,children:s.element.isRequired},c.Cargando=T,c.Error=z,c.SaasApp=K,c.getInstancia=pe,c.getToken=oe,c.getUsuario=ae,c.logout=U,c.useNotificar=G,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chimera-pe/react-saas",
3
- "version": "0.0.8",
3
+ "version": "0.0.10",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "vite",