agregar clientes en factura
This commit is contained in:
parent
3f21087779
commit
7406a5d855
|
|
@ -35,5 +35,5 @@ yarn-error.log*
|
||||||
!.yarn/versions
|
!.yarn/versions
|
||||||
.pnp.*
|
.pnp.*
|
||||||
|
|
||||||
yarn.lock
|
/yarn.lock
|
||||||
package-lock.json
|
package-lock.json
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
"draft-js": "0.11.7",
|
"draft-js": "0.11.7",
|
||||||
"draftjs-to-html": "0.9.1",
|
"draftjs-to-html": "0.9.1",
|
||||||
"firebase": "10.7.1",
|
"firebase": "10.7.1",
|
||||||
|
"formik": "^2.4.5",
|
||||||
"framer-motion": "10.18.0",
|
"framer-motion": "10.18.0",
|
||||||
"history": "5.3.0",
|
"history": "5.3.0",
|
||||||
"i18next": "23.7.16",
|
"i18next": "23.7.16",
|
||||||
|
|
@ -57,6 +58,7 @@
|
||||||
"stylis-plugin-rtl": "2.1.1",
|
"stylis-plugin-rtl": "2.1.1",
|
||||||
"type-fest": "4.9.0",
|
"type-fest": "4.9.0",
|
||||||
"web-vitals": "3.5.1",
|
"web-vitals": "3.5.1",
|
||||||
|
"yup": "^1.3.3",
|
||||||
"zod": "3.22.4"
|
"zod": "3.22.4"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
|
|
||||||
|
|
@ -7,22 +7,34 @@ const clientes = [
|
||||||
id: 1,
|
id: 1,
|
||||||
nombreComercial: 'Andres Alvarez',
|
nombreComercial: 'Andres Alvarez',
|
||||||
razonSocial: 'Andres Alvarez',
|
razonSocial: 'Andres Alvarez',
|
||||||
identificacion: '1721529707',
|
identificacion: '1721529788',
|
||||||
direccion: 'Calle oe',
|
direccion: 'Calle oe',
|
||||||
telefono: '0988545102',
|
telefono: '0988545102',
|
||||||
correo: 'andres@test.com'
|
correo: 'andres@test.com'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
nombreComercial: 'Paul Ruales',
|
||||||
|
razonSocial: 'Paul Ruales',
|
||||||
|
identificacion: '1721524123',
|
||||||
|
direccion: 'Calle lomisima',
|
||||||
|
telefono: '0988544772',
|
||||||
|
correo: 'poul@test.com'
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
function DataClient() {
|
function DataClient() {
|
||||||
const [clients, setClients] = useState<Client[]>(clientes);
|
const [clients, setClients] = useState<Client[]>(clientes);
|
||||||
|
const [selectClient, setSelectClient] = useState<Client | null>(null);
|
||||||
|
|
||||||
const handleSelectClient = (value) => {
|
const handleSelectClient = (value:Client) => {
|
||||||
setClients([...clients, value]);
|
setSelectClient(value)
|
||||||
|
if(!clients.includes(value)) setClients([...clients, value])
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
<DataClientRender
|
<DataClientRender
|
||||||
client={clients}
|
client={clients}
|
||||||
handleSelectClient={handleSelectClient}
|
handleSelectClient={handleSelectClient}
|
||||||
|
selectClient={selectClient}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,43 +1,34 @@
|
||||||
import { useState } from 'react';
|
import { useState } from "react";
|
||||||
import FuseSvgIcon from '@fuse/core/FuseSvgIcon';
|
import FuseSvgIcon from "@fuse/core/FuseSvgIcon";
|
||||||
import { Autocomplete, Box, Divider, Grid, TextField, Typography, Button } from '@mui/material';
|
import {
|
||||||
import AddClient from './components/addClient/AddClient';
|
Autocomplete,
|
||||||
import { Client } from './DataClientInterfaz';
|
Box,
|
||||||
|
Divider,
|
||||||
|
Grid,
|
||||||
|
TextField,
|
||||||
|
Typography,
|
||||||
|
Button,
|
||||||
|
} from "@mui/material";
|
||||||
|
import AddClient from "./components/addClient/AddClient";
|
||||||
|
import { Client } from "./DataClientInterfaz";
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
client: Client[];
|
client: Client[];
|
||||||
handleSelectClient: (value: Client) => void;
|
handleSelectClient: (value: Client) => void;
|
||||||
|
selectClient: Client;
|
||||||
}
|
}
|
||||||
function DataClientRender({ client, handleSelectClient }: Props) {
|
function DataClientRender({ client, handleSelectClient, selectClient }: Props) {
|
||||||
const [openDialog, setOpenDialog] = useState<boolean>(false);
|
const [openDialog, setOpenDialog] = useState<boolean>(false);
|
||||||
return (
|
return (
|
||||||
<Box className="mt-10 p-20 shadow-2 rounded-8">
|
<Box className="mt-10 p-20 shadow-2 rounded-8">
|
||||||
<AddClient
|
<AddClient open={openDialog} setOpen={setOpenDialog} handleSelectClient={handleSelectClient}/>
|
||||||
open={openDialog}
|
<Grid container spacing={2}>
|
||||||
setOpen={setOpenDialog}
|
<Grid item xs={12} md={10}>
|
||||||
/>
|
<Typography component="h3" className="mb-7 text-16">
|
||||||
<Grid
|
|
||||||
container
|
|
||||||
spacing={2}
|
|
||||||
>
|
|
||||||
<Grid
|
|
||||||
item
|
|
||||||
xs={12}
|
|
||||||
md={10}
|
|
||||||
>
|
|
||||||
<Typography
|
|
||||||
component="h3"
|
|
||||||
className="mb-7 text-16"
|
|
||||||
>
|
|
||||||
Datos cliente
|
Datos cliente
|
||||||
</Typography>
|
</Typography>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid item xs={12} md={2} className="flex justify-end">
|
||||||
item
|
|
||||||
xs={12}
|
|
||||||
md={2}
|
|
||||||
className="flex justify-end"
|
|
||||||
>
|
|
||||||
<Button
|
<Button
|
||||||
color="primary"
|
color="primary"
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
|
|
@ -45,39 +36,28 @@ function DataClientRender({ client, handleSelectClient }: Props) {
|
||||||
size="small"
|
size="small"
|
||||||
onClick={() => setOpenDialog(true)}
|
onClick={() => setOpenDialog(true)}
|
||||||
startIcon={
|
startIcon={
|
||||||
<FuseSvgIcon
|
<FuseSvgIcon className="text-48" size={24} color="action">
|
||||||
className="text-48"
|
|
||||||
size={24}
|
|
||||||
color="action"
|
|
||||||
>
|
|
||||||
heroicons-outline:plus
|
heroicons-outline:plus
|
||||||
</FuseSvgIcon>
|
</FuseSvgIcon>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
Agregar{' '}
|
Agregar{" "}
|
||||||
</Button>
|
</Button>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid item xs={12}>
|
||||||
item
|
|
||||||
xs={12}
|
|
||||||
>
|
|
||||||
<Divider className="border-1 mb-10" />
|
<Divider className="border-1 mb-10" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid item xs={12} md={12}>
|
||||||
item
|
|
||||||
xs={12}
|
|
||||||
md={12}
|
|
||||||
>
|
|
||||||
<Autocomplete
|
<Autocomplete
|
||||||
className="mt-8 mb-16"
|
className="mt-8 mb-16"
|
||||||
options={client}
|
options={client}
|
||||||
getOptionLabel={(option) => option.razonSocial}
|
getOptionLabel={(option) => option.razonSocial}
|
||||||
noOptionsText="No se encontro un resultado"
|
noOptionsText="No se encontro un resultado"
|
||||||
size="small"
|
size="small"
|
||||||
/* value={value }
|
value={selectClient}
|
||||||
onChange={(event, newValue) => {
|
onChange={(event, newValue) => {
|
||||||
onChange(newValue);
|
handleSelectClient(newValue);
|
||||||
}} */
|
}}
|
||||||
renderInput={(params) => (
|
renderInput={(params) => (
|
||||||
<TextField
|
<TextField
|
||||||
{...params}
|
{...params}
|
||||||
|
|
@ -85,61 +65,44 @@ function DataClientRender({ client, handleSelectClient }: Props) {
|
||||||
label="Cliente"
|
label="Cliente"
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
InputLabelProps={{
|
InputLabelProps={{
|
||||||
shrink: true
|
shrink: true,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid item md={12}>
|
||||||
item
|
|
||||||
md={12}
|
|
||||||
>
|
|
||||||
<Divider />
|
<Divider />
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
{selectClient ? (
|
||||||
item
|
<>
|
||||||
md={4}
|
<Grid item md={4} xs={12}>
|
||||||
xs={12}
|
<b>Razón Social:</b> {selectClient.razonSocial}
|
||||||
>
|
|
||||||
<b>Razón Social:</b> Jonathan Andres Alvarez Flores
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid item md={4} xs={12}>
|
||||||
item
|
<b>Nombre Comercial:</b> {selectClient.nombreComercial}
|
||||||
md={4}
|
|
||||||
xs={12}
|
|
||||||
>
|
|
||||||
<b>Nombre Comercial:</b> Jonathan Andres Alvarez Flores
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid item md={4} xs={12}>
|
||||||
item
|
<b>Ruc:</b> {selectClient.identificacion}
|
||||||
md={4}
|
|
||||||
xs={12}
|
|
||||||
>
|
|
||||||
<b>Ruc:</b> 17215785512001
|
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid
|
<Grid item md={4} xs={12}>
|
||||||
item
|
<b>Dirección:</b> {selectClient.direccion}
|
||||||
md={4}
|
|
||||||
xs={12}
|
|
||||||
>
|
|
||||||
<b>Dirección:</b> Calle Oe11g y s32
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid item md={4} xs={12}>
|
||||||
item
|
<b>Teléfono:</b> {selectClient.telefono}
|
||||||
md={4}
|
|
||||||
xs={12}
|
|
||||||
>
|
|
||||||
<b>Teléfono:</b> 0988545211
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid item md={4} xs={12}>
|
||||||
item
|
<b>Correo:</b> {selectClient.correo}
|
||||||
md={4}
|
|
||||||
xs={12}
|
|
||||||
>
|
|
||||||
<b>Correo:</b> admin@qsoftec.com
|
|
||||||
</Grid>
|
</Grid>
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
<Box className="flex justify-center w-full mt-20">
|
||||||
|
<Typography variant="subtitle2" gutterBottom>
|
||||||
|
Seleccione o agrege el cliente
|
||||||
|
</Typography>
|
||||||
|
</Box>
|
||||||
|
)}
|
||||||
</Grid>
|
</Grid>
|
||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,56 @@
|
||||||
import AddClientRender from './AddClientRender';
|
import { useFormik } from "formik";
|
||||||
|
import { Client } from "../../DataClientInterfaz";
|
||||||
|
import AddClientRender from "./AddClientRender";
|
||||||
|
import * as Yup from "yup";
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
setOpen: (open: boolean) => void;
|
setOpen: (open: boolean) => void;
|
||||||
|
handleSelectClient: (value: Client) => void;
|
||||||
}
|
}
|
||||||
function AddClient({ open, setOpen }: Props) {
|
function AddClient({ open, setOpen, handleSelectClient }: Props) {
|
||||||
|
const formik = useFormik<Client>({
|
||||||
|
initialValues: {
|
||||||
|
id: Math.floor(Math.random() * 100),
|
||||||
|
nombreComercial: "",
|
||||||
|
razonSocial: "",
|
||||||
|
identificacion: "",
|
||||||
|
direccion: "",
|
||||||
|
telefono: "",
|
||||||
|
correo: "",
|
||||||
|
},
|
||||||
|
validationSchema: Yup.object({
|
||||||
|
nombreComercial: Yup.string().required("El campo es Obligatorio"),
|
||||||
|
razonSocial: Yup.string().required("El campo es Obligatorio"),
|
||||||
|
identificacion: Yup.string().required("El campo es Obligatorio"),
|
||||||
|
direccion: Yup.string().required("El campo es Obligatorio"),
|
||||||
|
telefono: Yup.string().required("El campo es Obligatorio"),
|
||||||
|
correo: Yup.string().required("El campo es Obligatorio")
|
||||||
|
.email("Correo no valido"),
|
||||||
|
}),
|
||||||
|
onSubmit: (value) => {
|
||||||
|
handleSaveClient(value)
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const handleOnChange = ({ target }) => {
|
||||||
|
const { name, value } = target;
|
||||||
|
formik.setFieldValue(name, value);
|
||||||
|
};
|
||||||
|
|
||||||
|
//TODO: Guardar cliente en la base de datos y seleccionar
|
||||||
|
const handleSaveClient = (value) => {
|
||||||
|
handleSelectClient(value)
|
||||||
|
formik.resetForm();
|
||||||
|
setOpen(false);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<AddClientRender
|
<AddClientRender
|
||||||
open={open}
|
open={open}
|
||||||
setOpen={setOpen}
|
setOpen={setOpen}
|
||||||
|
formik={formik}
|
||||||
|
handleOnChange={handleOnChange}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,100 +1,163 @@
|
||||||
import { DialogActions, DialogContent, DialogTitle, Button, Grid, TextField, Dialog } from '@mui/material';
|
import {
|
||||||
|
DialogActions,
|
||||||
|
DialogContent,
|
||||||
|
DialogTitle,
|
||||||
|
Button,
|
||||||
|
Grid,
|
||||||
|
TextField,
|
||||||
|
Dialog,
|
||||||
|
} from "@mui/material";
|
||||||
|
import { FormikProps } from "formik";
|
||||||
|
import { Client } from "../../DataClientInterfaz";
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
setOpen: (open: boolean) => void;
|
setOpen: (open: boolean) => void;
|
||||||
|
formik: FormikProps<Client>;
|
||||||
|
handleOnChange: (event) => void;
|
||||||
}
|
}
|
||||||
function AddClientRender({ open, setOpen }: Props) {
|
function AddClientRender({ open, setOpen, formik, handleOnChange }: Props) {
|
||||||
return (
|
return (
|
||||||
<Dialog
|
<Dialog open={open} scroll="body" fullWidth maxWidth="md">
|
||||||
open={open}
|
|
||||||
scroll="body"
|
|
||||||
fullWidth
|
|
||||||
maxWidth="md"
|
|
||||||
>
|
|
||||||
<DialogTitle id="alert-dialog-title">Agregar Cliente</DialogTitle>
|
<DialogTitle id="alert-dialog-title">Agregar Cliente</DialogTitle>
|
||||||
<DialogContent dividers>
|
<DialogContent dividers>
|
||||||
<Grid
|
<Grid container spacing={2}>
|
||||||
container
|
<Grid item md={6} xs={12}>
|
||||||
spacing={2}
|
|
||||||
>
|
|
||||||
<Grid
|
|
||||||
item
|
|
||||||
md={6}
|
|
||||||
xs={12}
|
|
||||||
>
|
|
||||||
<TextField
|
<TextField
|
||||||
size="small"
|
size="small"
|
||||||
label="Nombre Comercial"
|
label="Nombre Comercial"
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
fullWidth
|
fullWidth
|
||||||
|
name="nombreComercial"
|
||||||
|
value={formik.values.nombreComercial || ""}
|
||||||
|
onChange={handleOnChange}
|
||||||
|
onBlur={formik.handleBlur}
|
||||||
|
error={
|
||||||
|
formik.errors.nombreComercial && formik.touched.nombreComercial
|
||||||
|
? true
|
||||||
|
: false
|
||||||
|
}
|
||||||
|
helperText={
|
||||||
|
formik.errors.nombreComercial && formik.touched.nombreComercial
|
||||||
|
? formik.errors.nombreComercial
|
||||||
|
: false
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid item md={6} xs={12}>
|
||||||
item
|
|
||||||
md={6}
|
|
||||||
xs={12}
|
|
||||||
>
|
|
||||||
<TextField
|
<TextField
|
||||||
size="small"
|
size="small"
|
||||||
label="Razón Social"
|
label="Razón Social"
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
fullWidth
|
fullWidth
|
||||||
|
name="razonSocial"
|
||||||
|
value={formik.values.razonSocial || ""}
|
||||||
|
onChange={handleOnChange}
|
||||||
|
onBlur={formik.handleBlur}
|
||||||
|
error={
|
||||||
|
formik.errors.razonSocial && formik.touched.razonSocial
|
||||||
|
? true
|
||||||
|
: false
|
||||||
|
}
|
||||||
|
helperText={
|
||||||
|
formik.errors.razonSocial && formik.touched.razonSocial
|
||||||
|
? formik.errors.razonSocial
|
||||||
|
: false
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid item md={6} xs={12}>
|
||||||
item
|
|
||||||
md={6}
|
|
||||||
xs={12}
|
|
||||||
>
|
|
||||||
<TextField
|
<TextField
|
||||||
size="small"
|
size="small"
|
||||||
label="Identificación"
|
label="Identificación"
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
fullWidth
|
fullWidth
|
||||||
|
name="identificacion"
|
||||||
|
value={formik.values.identificacion || ""}
|
||||||
|
onChange={handleOnChange}
|
||||||
|
onBlur={formik.handleBlur}
|
||||||
|
error={
|
||||||
|
formik.errors.identificacion && formik.touched.identificacion
|
||||||
|
? true
|
||||||
|
: false
|
||||||
|
}
|
||||||
|
helperText={
|
||||||
|
formik.errors.identificacion && formik.touched.identificacion
|
||||||
|
? formik.errors.identificacion
|
||||||
|
: false
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid item md={6} xs={12}>
|
||||||
item
|
|
||||||
md={6}
|
|
||||||
xs={12}
|
|
||||||
>
|
|
||||||
<TextField
|
<TextField
|
||||||
size="small"
|
size="small"
|
||||||
label="Dirección"
|
label="Dirección"
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
fullWidth
|
fullWidth
|
||||||
|
name="direccion"
|
||||||
|
value={formik.values.direccion || ""}
|
||||||
|
onChange={handleOnChange}
|
||||||
|
onBlur={formik.handleBlur}
|
||||||
|
error={
|
||||||
|
formik.errors.direccion && formik.touched.direccion
|
||||||
|
? true
|
||||||
|
: false
|
||||||
|
}
|
||||||
|
helperText={
|
||||||
|
formik.errors.direccion && formik.touched.direccion
|
||||||
|
? formik.errors.direccion
|
||||||
|
: false
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid item md={6} xs={12}>
|
||||||
item
|
|
||||||
md={6}
|
|
||||||
xs={12}
|
|
||||||
>
|
|
||||||
<TextField
|
<TextField
|
||||||
size="small"
|
size="small"
|
||||||
label="Teléfono"
|
label="Teléfono"
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
fullWidth
|
fullWidth
|
||||||
|
name="telefono"
|
||||||
|
value={formik.values.telefono || ""}
|
||||||
|
onChange={handleOnChange}
|
||||||
|
onBlur={formik.handleBlur}
|
||||||
|
error={
|
||||||
|
formik.errors.telefono && formik.touched.telefono ? true : false
|
||||||
|
}
|
||||||
|
helperText={
|
||||||
|
formik.errors.telefono && formik.touched.telefono
|
||||||
|
? formik.errors.telefono
|
||||||
|
: false
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid item md={6} xs={12}>
|
||||||
item
|
|
||||||
md={6}
|
|
||||||
xs={12}
|
|
||||||
>
|
|
||||||
<TextField
|
<TextField
|
||||||
size="small"
|
size="small"
|
||||||
label="Correo electrónico"
|
label="Correo electrónico"
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
fullWidth
|
fullWidth
|
||||||
|
name="correo"
|
||||||
|
value={formik.values.correo || ""}
|
||||||
|
onChange={handleOnChange}
|
||||||
|
onBlur={formik.handleBlur}
|
||||||
|
error={
|
||||||
|
formik.errors.correo && formik.touched.correo ? true : false
|
||||||
|
}
|
||||||
|
helperText={
|
||||||
|
formik.errors.correo && formik.touched.correo
|
||||||
|
? formik.errors.correo
|
||||||
|
: false
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
<DialogActions className="pr-24">
|
<DialogActions className="pr-24">
|
||||||
<Button
|
<Button
|
||||||
onClick={() => setOpen(false)}
|
onClick={() => {
|
||||||
|
formik.resetForm();
|
||||||
|
setOpen(false);
|
||||||
|
}}
|
||||||
color="primary"
|
color="primary"
|
||||||
variant="contained"
|
variant="contained"
|
||||||
size="small"
|
size="small"
|
||||||
|
|
@ -102,7 +165,7 @@ function AddClientRender({ open, setOpen }: Props) {
|
||||||
Cancelar
|
Cancelar
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
onClick={() => setOpen(false)}
|
onClick={formik.submitForm}
|
||||||
color="primary"
|
color="primary"
|
||||||
autoFocus
|
autoFocus
|
||||||
variant="contained"
|
variant="contained"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
export interface Headers {
|
export interface Headers {
|
||||||
id: number;
|
id: number;
|
||||||
name: string;
|
name: string | Element;
|
||||||
style?: string | number;
|
style?: string | number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { Box, Grid, Typography, Divider, Button } from '@mui/material';
|
import { Box, Grid, Typography, Divider, Button, TextField } from '@mui/material';
|
||||||
import FuseSvgIcon from '@fuse/core/FuseSvgIcon';
|
import FuseSvgIcon from '@fuse/core/FuseSvgIcon';
|
||||||
import TableInvoice from './components/tableInvoice/TableInvoice';
|
import TableInvoice from './components/tableInvoice/TableInvoice';
|
||||||
import { ItemInvoice } from './DataInvoiceInterface';
|
import { ItemInvoice } from './DataInvoiceInterface';
|
||||||
|
|
@ -57,6 +57,53 @@ function DataInvoiceRender({ handleAddItem, items }: Props) {
|
||||||
>
|
>
|
||||||
<Divider className="border-1" />
|
<Divider className="border-1" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
<Grid
|
||||||
|
item
|
||||||
|
xs={12}
|
||||||
|
md={2}
|
||||||
|
>
|
||||||
|
<TextField
|
||||||
|
label='Serial'
|
||||||
|
size='small'
|
||||||
|
variant='outlined'
|
||||||
|
fullWidth
|
||||||
|
InputLabelProps={{
|
||||||
|
shrink: true,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</Grid>
|
||||||
|
<Grid
|
||||||
|
item
|
||||||
|
xs={12}
|
||||||
|
md={2}
|
||||||
|
>
|
||||||
|
<TextField
|
||||||
|
label='Fecha factura'
|
||||||
|
size='small'
|
||||||
|
variant='outlined'
|
||||||
|
type='date'
|
||||||
|
fullWidth
|
||||||
|
InputLabelProps={{
|
||||||
|
shrink: true,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</Grid>
|
||||||
|
<Grid
|
||||||
|
item
|
||||||
|
xs={12}
|
||||||
|
md={2}
|
||||||
|
>
|
||||||
|
<TextField
|
||||||
|
label='Fecha creada'
|
||||||
|
size='small'
|
||||||
|
variant='outlined'
|
||||||
|
type='date'
|
||||||
|
fullWidth
|
||||||
|
InputLabelProps={{
|
||||||
|
shrink: true,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid
|
||||||
container
|
container
|
||||||
|
|
@ -98,6 +145,66 @@ function DataInvoiceRender({ handleAddItem, items }: Props) {
|
||||||
$10
|
$10
|
||||||
</Typography>
|
</Typography>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
<Grid
|
||||||
|
item
|
||||||
|
xs={7}
|
||||||
|
md={9}
|
||||||
|
/>
|
||||||
|
<Grid
|
||||||
|
item
|
||||||
|
xs={2}
|
||||||
|
md={2}
|
||||||
|
>
|
||||||
|
<Typography
|
||||||
|
variant="subtitle2"
|
||||||
|
gutterBottom
|
||||||
|
>
|
||||||
|
Iva 12%:
|
||||||
|
</Typography>
|
||||||
|
</Grid>
|
||||||
|
<Grid
|
||||||
|
item
|
||||||
|
xs={3}
|
||||||
|
md={1}
|
||||||
|
className="item"
|
||||||
|
>
|
||||||
|
<Typography
|
||||||
|
variant="subtitle2"
|
||||||
|
gutterBottom
|
||||||
|
>
|
||||||
|
$5
|
||||||
|
</Typography>
|
||||||
|
</Grid>
|
||||||
|
<Grid
|
||||||
|
item
|
||||||
|
xs={7}
|
||||||
|
md={9}
|
||||||
|
/>
|
||||||
|
<Grid
|
||||||
|
item
|
||||||
|
xs={2}
|
||||||
|
md={2}
|
||||||
|
>
|
||||||
|
<Typography
|
||||||
|
variant="subtitle2"
|
||||||
|
gutterBottom
|
||||||
|
>
|
||||||
|
Total:
|
||||||
|
</Typography>
|
||||||
|
</Grid>
|
||||||
|
<Grid
|
||||||
|
item
|
||||||
|
xs={3}
|
||||||
|
md={1}
|
||||||
|
className="item"
|
||||||
|
>
|
||||||
|
<Typography
|
||||||
|
variant="subtitle2"
|
||||||
|
gutterBottom
|
||||||
|
>
|
||||||
|
$15
|
||||||
|
</Typography>
|
||||||
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { Button } from '@mui/material';
|
||||||
import { Headers } from '../../DataInvoiceInterface';
|
import { Headers } from '../../DataInvoiceInterface';
|
||||||
import TableInvoiceRender from './TableInvoiceRender';
|
import TableInvoiceRender from './TableInvoiceRender';
|
||||||
|
|
||||||
|
|
@ -9,7 +10,7 @@ function TableInvoice() {
|
||||||
{ id: 4, name: 'Valor unitario', style: 130 },
|
{ id: 4, name: 'Valor unitario', style: 130 },
|
||||||
{ id: 5, name: 'Iva', style: 10 },
|
{ id: 5, name: 'Iva', style: 10 },
|
||||||
{ id: 6, name: 'Total', style: 130 },
|
{ id: 6, name: 'Total', style: 130 },
|
||||||
{ id: 7, name: 'Acción', style: 10 }
|
{ id: 7, name: 'Acción', style: 10 },
|
||||||
];
|
];
|
||||||
return <TableInvoiceRender headers={headers} />;
|
return <TableInvoiceRender headers={headers} />;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
63
yarn.lock
63
yarn.lock
|
|
@ -2825,7 +2825,7 @@
|
||||||
resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64"
|
resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64"
|
||||||
integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==
|
integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==
|
||||||
|
|
||||||
"@types/hoist-non-react-statics@*", "@types/hoist-non-react-statics@^3.3.0":
|
"@types/hoist-non-react-statics@*", "@types/hoist-non-react-statics@^3.3.0", "@types/hoist-non-react-statics@^3.3.1":
|
||||||
version "3.3.5"
|
version "3.3.5"
|
||||||
resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz#dab7867ef789d87e2b4b0003c9d65c49cc44a494"
|
resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz#dab7867ef789d87e2b4b0003c9d65c49cc44a494"
|
||||||
integrity sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==
|
integrity sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==
|
||||||
|
|
@ -4243,6 +4243,11 @@ deep-is@^0.1.3:
|
||||||
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
|
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
|
||||||
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
|
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
|
||||||
|
|
||||||
|
deepmerge@^2.1.1:
|
||||||
|
version "2.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170"
|
||||||
|
integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==
|
||||||
|
|
||||||
define-data-property@^1.0.1, define-data-property@^1.1.1:
|
define-data-property@^1.0.1, define-data-property@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3"
|
resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3"
|
||||||
|
|
@ -5238,6 +5243,20 @@ form-data@^4.0.0:
|
||||||
combined-stream "^1.0.8"
|
combined-stream "^1.0.8"
|
||||||
mime-types "^2.1.12"
|
mime-types "^2.1.12"
|
||||||
|
|
||||||
|
formik@^2.4.5:
|
||||||
|
version "2.4.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/formik/-/formik-2.4.5.tgz#f899b5b7a6f103a8fabb679823e8fafc7e0ee1b4"
|
||||||
|
integrity sha512-Gxlht0TD3vVdzMDHwkiNZqJ7Mvg77xQNfmBRrNtvzcHZs72TJppSTDKHpImCMJZwcWPBJ8jSQQ95GJzXFf1nAQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/hoist-non-react-statics" "^3.3.1"
|
||||||
|
deepmerge "^2.1.1"
|
||||||
|
hoist-non-react-statics "^3.3.0"
|
||||||
|
lodash "^4.17.21"
|
||||||
|
lodash-es "^4.17.21"
|
||||||
|
react-fast-compare "^2.0.1"
|
||||||
|
tiny-warning "^1.0.2"
|
||||||
|
tslib "^2.0.0"
|
||||||
|
|
||||||
fraction.js@^4.3.6:
|
fraction.js@^4.3.6:
|
||||||
version "4.3.7"
|
version "4.3.7"
|
||||||
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7"
|
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7"
|
||||||
|
|
@ -6382,6 +6401,11 @@ locate-path@^6.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
p-locate "^5.0.0"
|
p-locate "^5.0.0"
|
||||||
|
|
||||||
|
lodash-es@^4.17.21:
|
||||||
|
version "4.17.21"
|
||||||
|
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
|
||||||
|
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
|
||||||
|
|
||||||
lodash.camelcase@^4.3.0:
|
lodash.camelcase@^4.3.0:
|
||||||
version "4.3.0"
|
version "4.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
|
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
|
||||||
|
|
@ -7296,6 +7320,11 @@ prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
|
||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
react-is "^16.13.1"
|
react-is "^16.13.1"
|
||||||
|
|
||||||
|
property-expr@^2.0.5:
|
||||||
|
version "2.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.6.tgz#f77bc00d5928a6c748414ad12882e83f24aec1e8"
|
||||||
|
integrity sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==
|
||||||
|
|
||||||
protobufjs@^7.2.4:
|
protobufjs@^7.2.4:
|
||||||
version "7.2.6"
|
version "7.2.6"
|
||||||
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.6.tgz#4a0ccd79eb292717aacf07530a07e0ed20278215"
|
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.6.tgz#4a0ccd79eb292717aacf07530a07e0ed20278215"
|
||||||
|
|
@ -7383,6 +7412,11 @@ react-draft-wysiwyg@1.15.0:
|
||||||
linkify-it "^2.2.0"
|
linkify-it "^2.2.0"
|
||||||
prop-types "^15.7.2"
|
prop-types "^15.7.2"
|
||||||
|
|
||||||
|
react-fast-compare@^2.0.1:
|
||||||
|
version "2.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9"
|
||||||
|
integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==
|
||||||
|
|
||||||
react-fast-compare@^3.0.1:
|
react-fast-compare@^3.0.1:
|
||||||
version "3.2.2"
|
version "3.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49"
|
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49"
|
||||||
|
|
@ -8458,6 +8492,11 @@ throat@^4.1.0:
|
||||||
resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a"
|
resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a"
|
||||||
integrity sha512-wCVxLDcFxw7ujDxaeJC6nfl2XfHJNYs8yUYJnvMgtPEFlttP9tHSfRUv2vBe6C4hkVFPWoP1P6ZccbYjmSEkKA==
|
integrity sha512-wCVxLDcFxw7ujDxaeJC6nfl2XfHJNYs8yUYJnvMgtPEFlttP9tHSfRUv2vBe6C4hkVFPWoP1P6ZccbYjmSEkKA==
|
||||||
|
|
||||||
|
tiny-case@^1.0.3:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/tiny-case/-/tiny-case-1.0.3.tgz#d980d66bc72b5d5a9ca86fb7c9ffdb9c898ddd03"
|
||||||
|
integrity sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==
|
||||||
|
|
||||||
tiny-warning@^1.0.2:
|
tiny-warning@^1.0.2:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
|
resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
|
||||||
|
|
@ -8500,6 +8539,11 @@ to-regex@^3.0.1, to-regex@^3.0.2:
|
||||||
regex-not "^1.0.2"
|
regex-not "^1.0.2"
|
||||||
safe-regex "^1.1.0"
|
safe-regex "^1.1.0"
|
||||||
|
|
||||||
|
toposort@^2.0.2:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330"
|
||||||
|
integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==
|
||||||
|
|
||||||
tr46@~0.0.3:
|
tr46@~0.0.3:
|
||||||
version "0.0.3"
|
version "0.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
|
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
|
||||||
|
|
@ -8600,7 +8644,7 @@ tslib@^1.8.1:
|
||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||||
|
|
||||||
tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.6.2:
|
tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.6.2:
|
||||||
version "2.6.2"
|
version "2.6.2"
|
||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
|
||||||
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
|
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
|
||||||
|
|
@ -8629,6 +8673,11 @@ type-fest@^0.20.2:
|
||||||
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
|
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
|
||||||
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
|
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
|
||||||
|
|
||||||
|
type-fest@^2.19.0:
|
||||||
|
version "2.19.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
|
||||||
|
integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
|
||||||
|
|
||||||
typed-array-buffer@^1.0.0:
|
typed-array-buffer@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60"
|
resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60"
|
||||||
|
|
@ -9126,6 +9175,16 @@ yocto-queue@^0.1.0:
|
||||||
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||||
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
|
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
|
||||||
|
|
||||||
|
yup@^1.3.3:
|
||||||
|
version "1.3.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/yup/-/yup-1.3.3.tgz#d2f6020ad1679754c5f8178a29243d5447dead04"
|
||||||
|
integrity sha512-v8QwZSsHH2K3/G9WSkp6mZKO+hugKT1EmnMqLNUcfu51HU9MDyhlETT/JgtzprnrnQHPWsjc6MUDMBp/l9fNnw==
|
||||||
|
dependencies:
|
||||||
|
property-expr "^2.0.5"
|
||||||
|
tiny-case "^1.0.3"
|
||||||
|
toposort "^2.0.2"
|
||||||
|
type-fest "^2.19.0"
|
||||||
|
|
||||||
zod@3.22.4:
|
zod@3.22.4:
|
||||||
version "3.22.4"
|
version "3.22.4"
|
||||||
resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff"
|
resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue