diff --git a/src/app/configs/navigationConfig.ts b/src/app/configs/navigationConfig.ts index 5e66e5b..807e9ab 100644 --- a/src/app/configs/navigationConfig.ts +++ b/src/app/configs/navigationConfig.ts @@ -44,7 +44,7 @@ const navigationConfig: FuseNavItemType[] = [ translate: 'PRODUCT', type: 'item', icon: 'heroicons-outline:clipboard-check', - url: 'producto' + url: 'product/list' } ]; diff --git a/src/app/configs/routesConfig.tsx b/src/app/configs/routesConfig.tsx index 2d60c6e..fd82ac4 100644 --- a/src/app/configs/routesConfig.tsx +++ b/src/app/configs/routesConfig.tsx @@ -9,10 +9,10 @@ import SignOutConfig from '../main/sign-out/SignOutConfig'; import Error404Page from '../main/404/Error404Page'; import ExampleConfig from '../main/example/ExampleConfig'; import ProjectDashboardAppConfig from '../main/dashboard/project/ProjectDashboardAppConfig'; -import ProductoConfig from '../main/producto/ProductoConfig'; +import ProductoConfigs from '../main/producto/ProductoConfig' import InvoiceConfigs from '../main/invoice/InvoiceConfig'; -const routeConfigs: FuseRouteConfigsType = [ExampleConfig, SignOutConfig, SignInConfig, SignUpConfig, ProjectDashboardAppConfig, ProductoConfig, ...InvoiceConfigs]; +const routeConfigs: FuseRouteConfigsType = [ExampleConfig, SignOutConfig, SignInConfig, SignUpConfig, ProjectDashboardAppConfig, ...ProductoConfigs, ...InvoiceConfigs]; /** * The routes of the application. diff --git a/src/app/main/producto/Producto.tsx b/src/app/main/producto/Producto.tsx index 9d759ae..7f85aa7 100644 --- a/src/app/main/producto/Producto.tsx +++ b/src/app/main/producto/Producto.tsx @@ -2,7 +2,7 @@ import DemoContent from '@fuse/core/DemoContent'; import FusePageSimple from '@fuse/core/FusePageSimple'; import { useTranslation } from 'react-i18next'; import { styled } from '@mui/material/styles'; -import ListDetalleProductoRender from './widgets/DetalleProductoRender'; +import ListDetalleProductoRender from './detalleProducto/DetalleProductoRender'; import ProductoRender from './ProductoRender'; const Root = styled(FusePageSimple)(({ theme }) => ({ diff --git a/src/app/main/producto/ProductoConfig.ts b/src/app/main/producto/ProductoConfig.ts new file mode 100644 index 0000000..d453022 --- /dev/null +++ b/src/app/main/producto/ProductoConfig.ts @@ -0,0 +1,10 @@ +import { FuseRouteConfigsType } from "@fuse/utils/FuseUtils"; +import FormularioProductoConfig from "./formularioProducto/FormularioProductoConfig"; +import DetalleProductoConfig from "./detalleProducto/DetalleProductoConfig"; + +const productoConfigs: FuseRouteConfigsType = [ + DetalleProductoConfig, + FormularioProductoConfig +] + +export default productoConfigs; \ No newline at end of file diff --git a/src/app/main/producto/ProductoConfig.tsx b/src/app/main/producto/ProductoConfig.tsx deleted file mode 100644 index c8da1dd..0000000 --- a/src/app/main/producto/ProductoConfig.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import i18next from "i18next"; -import { lazy } from 'react'; -import en from './i18n/en'; - -i18next.addResourceBundle('en', 'examplePage', en); - -const Producto = lazy(() => import('./Producto')); - -const ProductoConfig = { - settings: { - layout: {} - }, - routes: [ - { - path: 'producto', - element: - } - ] -}; - -export default ProductoConfig; \ No newline at end of file diff --git a/src/app/main/producto/ProductoRender.tsx b/src/app/main/producto/ProductoRender.tsx index 58e987c..93c7afb 100644 --- a/src/app/main/producto/ProductoRender.tsx +++ b/src/app/main/producto/ProductoRender.tsx @@ -1,11 +1,12 @@ import BuscarProducto from "./widgets/BuscarProducto"; -import ListDetalleProductoRender from "./widgets/DetalleProductoRender"; +import ListDetalleProductoRender from "./detalleProducto/DetalleProductoRender"; +import DetalleProducto from "./detalleProducto/DetalleProducto"; function ProductoRender() { return(
- +
) } diff --git a/src/app/main/producto/detalleProducto/DetalleProducto.tsx b/src/app/main/producto/detalleProducto/DetalleProducto.tsx new file mode 100644 index 0000000..f03c992 --- /dev/null +++ b/src/app/main/producto/detalleProducto/DetalleProducto.tsx @@ -0,0 +1,9 @@ +import ListDetalleProductoRender from "./DetalleProductoRender" + +const DetalleProducto = () => { + return( + + ) +} + +export default DetalleProducto; \ No newline at end of file diff --git a/src/app/main/producto/detalleProducto/DetalleProductoConfig.tsx b/src/app/main/producto/detalleProducto/DetalleProductoConfig.tsx new file mode 100644 index 0000000..918e410 --- /dev/null +++ b/src/app/main/producto/detalleProducto/DetalleProductoConfig.tsx @@ -0,0 +1,21 @@ +import i18next from "i18next"; +import { lazy } from 'react'; +import es from '../i18n/es'; + +i18next.addResourceBundle('es', 'detailProduct', es); + +const Producto = lazy(() => import('../Producto')); + +const DetalleProductoConfig = { + settings: { + layout: {} + }, + routes: [ + { + path: 'product/list', + element: + } + ] +}; + +export default DetalleProductoConfig; \ No newline at end of file diff --git a/src/app/main/producto/widgets/DetalleProductoRender.tsx b/src/app/main/producto/detalleProducto/DetalleProductoRender.tsx similarity index 56% rename from src/app/main/producto/widgets/DetalleProductoRender.tsx rename to src/app/main/producto/detalleProducto/DetalleProductoRender.tsx index f5d0143..124be1f 100644 --- a/src/app/main/producto/widgets/DetalleProductoRender.tsx +++ b/src/app/main/producto/detalleProducto/DetalleProductoRender.tsx @@ -1,4 +1,4 @@ -import * as React from 'react'; +import * as React from "react"; import FuseSvgIcon from "@fuse/core/FuseSvgIcon"; import { Button, @@ -15,6 +15,7 @@ import { import { useTranslation } from "react-i18next"; import { Link } from "react-router-dom"; import clsx from "clsx"; +import ResponsiveDialog from "../widgets/DialogDelete"; function ListDetalleProductoRender() { const [page, setPage] = React.useState(0); @@ -24,7 +25,9 @@ function ListDetalleProductoRender() { setPage(newPage); }; - const handleChangeRowsPerPage = (event: React.ChangeEvent) => { + const handleChangeRowsPerPage = ( + event: React.ChangeEvent + ) => { setRowsPerPage(+event.target.value); setPage(0); }; @@ -36,7 +39,7 @@ function ListDetalleProductoRender() { "Descripción", "Stock Mínimo", "Estado", - "Acciones" + "Acciones", ]; const rows = [ @@ -104,7 +107,7 @@ function ListDetalleProductoRender() { variant="contained" color="secondary" component={Link} - to={'/invoice/edit'} + to={"/product/form"} startIcon={ {rows - .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) - .map((row, index) => ( - - {Object.entries(row).map(([key, value]) => { - switch (key) { - case "artEstado": { - return ( - - ( + + {Object.entries(row).map(([key, value]) => { + switch (key) { + case "artEstado": { + return ( + + + {value} + + + ); + } + case "action": { + return ( + - {value} - - - ); - } - case "action": { - return ( - -
+
- heroicons-outline:pencil-alt + + heroicons-outline:pencil-alt + -
-
- - heroicons-outline:trash - -
- - ); +
+
+ +
+
+ ); + } + default: { + return ( + + {value} + + ); + } } - default: { - return ( - - {value} - - ); - } - } - })} -
- ))} + })} + + ))} + rowsPerPageOptions={[5, 10, 25]} + component="div" + count={rows.length} + rowsPerPage={rowsPerPage} + page={page} + onPageChange={handleChangePage} + onRowsPerPageChange={handleChangeRowsPerPage} + /> - ) + ); } -export default ListDetalleProductoRender; \ No newline at end of file +export default ListDetalleProductoRender; diff --git a/src/app/main/producto/formularioProducto/FormularioProducto.tsx b/src/app/main/producto/formularioProducto/FormularioProducto.tsx new file mode 100644 index 0000000..48054d4 --- /dev/null +++ b/src/app/main/producto/formularioProducto/FormularioProducto.tsx @@ -0,0 +1,9 @@ +import FormularioProductoRender from "./FormularioProductoRender" + +const FormularioProducto = () => { + return( + + ); +}; + +export default FormularioProducto; \ No newline at end of file diff --git a/src/app/main/producto/formularioProducto/FormularioProductoConfig.tsx b/src/app/main/producto/formularioProducto/FormularioProductoConfig.tsx new file mode 100644 index 0000000..13dbdd1 --- /dev/null +++ b/src/app/main/producto/formularioProducto/FormularioProductoConfig.tsx @@ -0,0 +1,23 @@ +import i18next from "i18next"; +import es from "../i18n/es"; +import { lazy } from "react"; + +i18next.addResourceBundle('es', 'formProducto', es); + +const FormularioProducto = lazy(() => import('./FormularioProducto')); + +const FormularioProductoConfig = { + settings: { + layout: { + config: {}, + }, + }, + routes: [ + { + path: 'product/form', + element: , + }, + ], +}; + +export default FormularioProductoConfig; diff --git a/src/app/main/producto/formularioProducto/FormularioProductoRender.tsx b/src/app/main/producto/formularioProducto/FormularioProductoRender.tsx new file mode 100644 index 0000000..8daadf0 --- /dev/null +++ b/src/app/main/producto/formularioProducto/FormularioProductoRender.tsx @@ -0,0 +1,158 @@ +import FusePageSimple from "@fuse/core/FusePageSimple"; +import { + Autocomplete, + Card, + CardActions, + CardContent, + CardHeader, + Divider, + TextField, + styled, + Button, + Grid, +} from "@mui/material"; +import { useState } from "react"; + +const FormularioProductoRender = () => { + const [formData, setFormData] = useState({ + codigo: "", + tipo: "", + nombre: "", + descripcion: "", + stockMinimo: "", + margenGanancia: "", + estado: "", + }); + + const [datosCargados, setDatosCargados] = useState(false); + + const cargarDatosDesdeBD = () => { + setDatosCargados(true); + }; + + return ( + + + + + + + + { + onChange(newValue); + }} */ + renderInput={(params) => ( + + )} + /> + + + + ( + + )} + /> + + + + + + + + + + + {datosCargados && ( + + )} + + + ); +}; + +export default FormularioProductoRender; diff --git a/src/app/main/producto/i18n/en.ts b/src/app/main/producto/i18n/en.ts deleted file mode 100644 index 88c60a8..0000000 --- a/src/app/main/producto/i18n/en.ts +++ /dev/null @@ -1,5 +0,0 @@ -const locale = { - TITLE: 'Product' -}; - -export default locale; \ No newline at end of file diff --git a/src/app/main/producto/i18n/es.ts b/src/app/main/producto/i18n/es.ts new file mode 100644 index 0000000..3ac0c84 --- /dev/null +++ b/src/app/main/producto/i18n/es.ts @@ -0,0 +1,5 @@ +const locale = { + TITLE: 'Producto' +}; + +export default locale; \ No newline at end of file diff --git a/src/app/main/producto/widgets/DialogDelete.tsx b/src/app/main/producto/widgets/DialogDelete.tsx new file mode 100644 index 0000000..bb61900 --- /dev/null +++ b/src/app/main/producto/widgets/DialogDelete.tsx @@ -0,0 +1,59 @@ +import FuseSvgIcon from "@fuse/core/FuseSvgIcon"; +import { + Button, + useMediaQuery, + useTheme, + Dialog, + DialogTitle, + DialogContent, + DialogContentText, + DialogActions, + IconButton, +} from "@mui/material"; +import React from "react"; + +function ResponsiveDialog() { + const [open, setOpen] = React.useState(false); + const theme = useTheme(); + const fullScreen = useMediaQuery(theme.breakpoints.down("sm")); + + const handleClickOpen = () => { + setOpen(true); + }; + + const handleClose = () => { + setOpen(false); + }; + + return ( +
+ + heroicons-outline:trash + + + {"Confirmar"} + + + Este elemento se eliminará permanentemente. ¿Deseas continuar?. + + + + + + + +
+ ); +} + +export default ResponsiveDialog; diff --git a/tsconfig.json b/tsconfig.json index c0324bc..071db1f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -48,5 +48,5 @@ "tailwind.config.js", "vite.config.mts", "vite-env.d.ts" - ], +, "src/app/main/producto/.tsx" ], }