From f8b1b795a3290580eb549b4c22edc9ee2ecf2d04 Mon Sep 17 00:00:00 2001 From: EliAlarcon Date: Fri, 2 Feb 2024 10:10:28 -0500 Subject: [PATCH 1/5] =?UTF-8?q?Creaci=C3=B3n=20componente=20producto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/configs/navigationConfig.ts | 12 +++++++-- src/app/main/producto/Producto.tsx | 32 ++++++++++++++++++++++++ src/app/main/producto/ProductoConfig.tsx | 21 ++++++++++++++++ src/app/main/producto/i18n/en.ts | 5 ++++ 4 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 src/app/main/producto/Producto.tsx create mode 100644 src/app/main/producto/ProductoConfig.tsx create mode 100644 src/app/main/producto/i18n/en.ts diff --git a/src/app/configs/navigationConfig.ts b/src/app/configs/navigationConfig.ts index f72f831..5e66e5b 100644 --- a/src/app/configs/navigationConfig.ts +++ b/src/app/configs/navigationConfig.ts @@ -24,8 +24,8 @@ const navigationConfig: FuseNavItemType[] = [ }, { id: 'dashboard-component', - title: 'Tablero', - translate: 'TABLERO', + title: 'Dashboard', + translate: 'DASHBOARD', type: 'item', icon: 'heroicons-outline:star', url: 'dashboards/project' @@ -37,6 +37,14 @@ const navigationConfig: FuseNavItemType[] = [ type: 'item', icon: 'heroicons-outline:document-text', url: 'invoice/list' + }, + { + id: 'producto-component', + title: 'Producto', + translate: 'PRODUCT', + type: 'item', + icon: 'heroicons-outline:clipboard-check', + url: 'producto' } ]; diff --git a/src/app/main/producto/Producto.tsx b/src/app/main/producto/Producto.tsx new file mode 100644 index 0000000..1960f34 --- /dev/null +++ b/src/app/main/producto/Producto.tsx @@ -0,0 +1,32 @@ +import DemoContent from '@fuse/core/DemoContent'; +import FusePageSimple from '@fuse/core/FusePageSimple'; +import { useTranslation } from 'react-i18next'; +import { styled } from '@mui/material/styles'; + +const Root = styled(FusePageSimple)(({ theme }) => ({ + '& .FusePageSimple-header': { + backgroundColor: theme.palette.background.paper, + borderBottomWidth: 1, + borderStyle: 'solid', + borderColor: theme.palette.divider + }, + '& .FusePageSimple-content': {}, + '& .FusePageSimple-sidebarHeader': {}, + '& .FusePageSimple-sidebarContent': {} +})); + +function Producto() { + const { t } = useTranslation('products'); + + return( + +

{t('PRODUCTOS')}

+ + } + /> + ) +} + +export default Producto; \ No newline at end of file diff --git a/src/app/main/producto/ProductoConfig.tsx b/src/app/main/producto/ProductoConfig.tsx new file mode 100644 index 0000000..c8da1dd --- /dev/null +++ b/src/app/main/producto/ProductoConfig.tsx @@ -0,0 +1,21 @@ +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/i18n/en.ts b/src/app/main/producto/i18n/en.ts new file mode 100644 index 0000000..88c60a8 --- /dev/null +++ b/src/app/main/producto/i18n/en.ts @@ -0,0 +1,5 @@ +const locale = { + TITLE: 'Product' +}; + +export default locale; \ No newline at end of file From da9758d8755cc864546e878bd186506c82cdede3 Mon Sep 17 00:00:00 2001 From: Elizabeth Date: Fri, 2 Feb 2024 16:50:21 -0500 Subject: [PATCH 2/5] Tabla Detalle Productos --- src/app/configs/routesConfig.tsx | 4 +- src/app/main/producto/Producto.tsx | 4 + .../widgets/DetalleProductoRender.tsx | 206 ++++++++++++++++++ .../widgets/types/DetalleProductoType.ts | 14 ++ 4 files changed, 226 insertions(+), 2 deletions(-) create mode 100644 src/app/main/producto/widgets/DetalleProductoRender.tsx create mode 100644 src/app/main/producto/widgets/types/DetalleProductoType.ts diff --git a/src/app/configs/routesConfig.tsx b/src/app/configs/routesConfig.tsx index f5174e7..2d60c6e 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 InvoiceConfigs from '../main/invoice/InvoiceConfig'; -const routeConfigs: FuseRouteConfigsType = [ExampleConfig, SignOutConfig, SignInConfig, SignUpConfig, ProjectDashboardAppConfig, ...InvoiceConfigs]; +const routeConfigs: FuseRouteConfigsType = [ExampleConfig, SignOutConfig, SignInConfig, SignUpConfig, ProjectDashboardAppConfig, ProductoConfig, ...InvoiceConfigs]; /** * The routes of the application. diff --git a/src/app/main/producto/Producto.tsx b/src/app/main/producto/Producto.tsx index 1960f34..d79e9f9 100644 --- a/src/app/main/producto/Producto.tsx +++ b/src/app/main/producto/Producto.tsx @@ -2,6 +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'; const Root = styled(FusePageSimple)(({ theme }) => ({ '& .FusePageSimple-header': { @@ -25,6 +26,9 @@ function Producto() {

{t('PRODUCTOS')}

} + content={ + + } /> ) } diff --git a/src/app/main/producto/widgets/DetalleProductoRender.tsx b/src/app/main/producto/widgets/DetalleProductoRender.tsx new file mode 100644 index 0000000..f5d0143 --- /dev/null +++ b/src/app/main/producto/widgets/DetalleProductoRender.tsx @@ -0,0 +1,206 @@ +import * as React from 'react'; +import FuseSvgIcon from "@fuse/core/FuseSvgIcon"; +import { + Button, + IconButton, + Paper, + Table, + TableBody, + TableCell, + TableHead, + TablePagination, + TableRow, + Typography, +} from "@mui/material"; +import { useTranslation } from "react-i18next"; +import { Link } from "react-router-dom"; +import clsx from "clsx"; + +function ListDetalleProductoRender() { + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(10); + + const handleChangePage = (event: unknown, newPage: number) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event: React.ChangeEvent) => { + setRowsPerPage(+event.target.value); + setPage(0); + }; + + const { t } = useTranslation("products"); + const columns = [ + "Código", + "Nombre", + "Descripción", + "Stock Mínimo", + "Estado", + "Acciones" + ]; + + const rows = [ + { + artCodigo: 1, + artNombre: "Servicios Profesionales", + artDescripcion: "Prestación de servicios", + artStockMinimo: 0, + artEstado: "activo", + action: true, + }, + { + artCodigo: 2, + artNombre: "Servicios Varios", + artDescripcion: "", + artStockMinimo: 0, + artEstado: "inactivo", + action: true, + }, + { + artCodigo: 3, + artNombre: "Servicios Profesionales", + artDescripcion: "Prestación de servicios", + artStockMinimo: 0, + artEstado: "activo", + action: true, + }, + { + artCodigo: 4, + artNombre: "Servicios Varios", + artDescripcion: "", + artStockMinimo: 0, + artEstado: "inactivo", + action: true, + }, + { + artCodigo: 5, + artNombre: "Servicios Profesionales", + artDescripcion: "Prestación de servicios", + artStockMinimo: 0, + artEstado: "activo", + action: true, + }, + { + artCodigo: 6, + artNombre: "Servicios Varios", + artDescripcion: "", + artStockMinimo: 0, + artEstado: "inactivo", + action: true, + }, + ]; + + return ( + +
+
+ + {t("Detalle de productos")} + +
+
+ +
+
+
+ + + + {columns.map((column, index) => ( + + + {column} + + + ))} + + + + + {rows + .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) + .map((row, index) => ( + + {Object.entries(row).map(([key, value]) => { + switch (key) { + case "artEstado": { + return ( + + + {value} + + + ); + } + case "action": { + return ( + +
+ + heroicons-outline:pencil-alt + +
+
+ + heroicons-outline:trash + +
+
+ ); + } + default: { + return ( + + {value} + + ); + } + } + })} +
+ ))} +
+
+ +
+
+ ) +} + +export default ListDetalleProductoRender; \ No newline at end of file diff --git a/src/app/main/producto/widgets/types/DetalleProductoType.ts b/src/app/main/producto/widgets/types/DetalleProductoType.ts new file mode 100644 index 0000000..a2a356b --- /dev/null +++ b/src/app/main/producto/widgets/types/DetalleProductoType.ts @@ -0,0 +1,14 @@ +type DetalleProductoRow = { + artCodigo: number; + artNombre: string; + artDescripcion: string; + artStockMinimo: number; + artEstado: any; +}; + +type DetalleProductoType = { + columns: string[]; + rows: DetalleProductoRow[]; +}; + +export default DetalleProductoType; \ No newline at end of file From d52c64c102d37e7ed6096ae518711f31b3a00013 Mon Sep 17 00:00:00 2001 From: EliAlarcon Date: Mon, 5 Feb 2024 18:09:33 -0500 Subject: [PATCH 3/5] Componente BuscarProducto --- .../dashboard/project/ProjectDashboardApp.tsx | 5 -- src/app/main/producto/Producto.tsx | 3 +- src/app/main/producto/ProductoRender.tsx | 13 +++ .../main/producto/widgets/BuscarProducto.tsx | 81 +++++++++++++++++++ 4 files changed, 96 insertions(+), 6 deletions(-) create mode 100644 src/app/main/producto/ProductoRender.tsx create mode 100644 src/app/main/producto/widgets/BuscarProducto.tsx diff --git a/src/app/main/dashboard/project/ProjectDashboardApp.tsx b/src/app/main/dashboard/project/ProjectDashboardApp.tsx index 3ddc9e5..f8e6515 100644 --- a/src/app/main/dashboard/project/ProjectDashboardApp.tsx +++ b/src/app/main/dashboard/project/ProjectDashboardApp.tsx @@ -1,15 +1,10 @@ import FusePageSimple from '@fuse/core/FusePageSimple'; -import Tab from '@mui/material/Tab'; -import Tabs from '@mui/material/Tabs'; import { useState } from 'react'; -import Box from '@mui/material/Box'; import { styled } from '@mui/material/styles'; import * as React from 'react'; import FuseLoading from '@fuse/core/FuseLoading'; import ProjectDashboardAppHeader from './ProjectDashboardAppHeader'; import HomeTab from './tabs/home/HomeTab'; -import TeamTab from './tabs/team/TeamTab'; -import BudgetTab from './tabs/budget/BudgetTab'; import { useGetProjectDashboardWidgetsQuery } from './ProjectDashboardApi'; const Root = styled(FusePageSimple)(({ theme }) => ({ diff --git a/src/app/main/producto/Producto.tsx b/src/app/main/producto/Producto.tsx index d79e9f9..9d759ae 100644 --- a/src/app/main/producto/Producto.tsx +++ b/src/app/main/producto/Producto.tsx @@ -3,6 +3,7 @@ import FusePageSimple from '@fuse/core/FusePageSimple'; import { useTranslation } from 'react-i18next'; import { styled } from '@mui/material/styles'; import ListDetalleProductoRender from './widgets/DetalleProductoRender'; +import ProductoRender from './ProductoRender'; const Root = styled(FusePageSimple)(({ theme }) => ({ '& .FusePageSimple-header': { @@ -27,7 +28,7 @@ function Producto() { } content={ - + } /> ) diff --git a/src/app/main/producto/ProductoRender.tsx b/src/app/main/producto/ProductoRender.tsx new file mode 100644 index 0000000..58e987c --- /dev/null +++ b/src/app/main/producto/ProductoRender.tsx @@ -0,0 +1,13 @@ +import BuscarProducto from "./widgets/BuscarProducto"; +import ListDetalleProductoRender from "./widgets/DetalleProductoRender"; + +function ProductoRender() { + return( +
+ + +
+ ) +} + +export default ProductoRender; \ No newline at end of file diff --git a/src/app/main/producto/widgets/BuscarProducto.tsx b/src/app/main/producto/widgets/BuscarProducto.tsx new file mode 100644 index 0000000..56447f5 --- /dev/null +++ b/src/app/main/producto/widgets/BuscarProducto.tsx @@ -0,0 +1,81 @@ +import * as React from 'react'; +import { styled, alpha } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import Toolbar from '@mui/material/Toolbar'; +import IconButton from '@mui/material/IconButton'; +import Typography from '@mui/material/Typography'; +import InputBase from '@mui/material/InputBase'; +import FuseSvgIcon from '@fuse/core/FuseSvgIcon'; +import FuseSearch from '@fuse/core/FuseSearch'; +import { Card } from '@mui/material'; +import { color } from '@mui/system'; + +const Search = styled('div')(({ theme }) => ({ + position: 'relative', + borderRadius: theme.shape.borderRadius, + backgroundColor: alpha(theme.palette.common.black, 0.06), + '&:hover': { + /* backgroundColor: alpha(theme.palette.common.white, 0.25), */ + }, + width: '100%', + [theme.breakpoints.up('sm')]: { + /* marginLeft: theme.spacing(), */ + width: 'auto', + }, +})); + +const SearchIconWrapper = styled('div')(({ theme }) => ({ + padding: theme.spacing(0, 2), + height: '100%', + position: 'absolute', + pointerEvents: 'none', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', +})); + +const StyledInputBase = styled(InputBase)(({ theme }) => ({ + color: 'inherit', + width: '100%', + '& .MuiInputBase-input': { + padding: theme.spacing(1, 1, 1, 0), + // vertical padding + font size from searchIcon + paddingLeft: `calc(1em + ${theme.spacing(4)})`, + transition: theme.transitions.create('width'), + }, +})); + +function BuscarProducto() { + return ( + +
+ + {("Buscar producto")} + + + + + + heroicons-outline:search + + + + + +
+
+ ); +} + +export default BuscarProducto; \ No newline at end of file From c5f3ea74d4a95186deb5d382322777065da241bb Mon Sep 17 00:00:00 2001 From: EliAlarcon Date: Thu, 8 Feb 2024 15:35:19 -0500 Subject: [PATCH 4/5] =?UTF-8?q?Formulario=20Registro=20Producto=20y=20orga?= =?UTF-8?q?nizaci=C3=B3n=20de=20ventanas=20de=20producto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/configs/navigationConfig.ts | 2 +- src/app/configs/routesConfig.tsx | 4 +- src/app/main/producto/Producto.tsx | 2 +- src/app/main/producto/ProductoConfig.ts | 10 ++ src/app/main/producto/ProductoConfig.tsx | 21 --- src/app/main/producto/ProductoRender.tsx | 5 +- .../detalleProducto/DetalleProducto.tsx | 9 + .../detalleProducto/DetalleProductoConfig.tsx | 21 +++ .../DetalleProductoRender.tsx | 126 +++++++------- .../formularioProducto/FormularioProducto.tsx | 9 + .../FormularioProductoConfig.tsx | 23 +++ .../FormularioProductoRender.tsx | 158 ++++++++++++++++++ src/app/main/producto/i18n/en.ts | 5 - src/app/main/producto/i18n/es.ts | 5 + .../main/producto/widgets/DialogDelete.tsx | 59 +++++++ tsconfig.json | 2 +- 16 files changed, 369 insertions(+), 92 deletions(-) create mode 100644 src/app/main/producto/ProductoConfig.ts delete mode 100644 src/app/main/producto/ProductoConfig.tsx create mode 100644 src/app/main/producto/detalleProducto/DetalleProducto.tsx create mode 100644 src/app/main/producto/detalleProducto/DetalleProductoConfig.tsx rename src/app/main/producto/{widgets => detalleProducto}/DetalleProductoRender.tsx (56%) create mode 100644 src/app/main/producto/formularioProducto/FormularioProducto.tsx create mode 100644 src/app/main/producto/formularioProducto/FormularioProductoConfig.tsx create mode 100644 src/app/main/producto/formularioProducto/FormularioProductoRender.tsx delete mode 100644 src/app/main/producto/i18n/en.ts create mode 100644 src/app/main/producto/i18n/es.ts create mode 100644 src/app/main/producto/widgets/DialogDelete.tsx 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" ], } From dce24eb54b352ee8ed6100e34ce0243c7449aa45 Mon Sep 17 00:00:00 2001 From: EliAlarcon Date: Thu, 8 Feb 2024 15:40:22 -0500 Subject: [PATCH 5/5] =?UTF-8?q?Cambio=20traducci=C3=B3n=20en=20nav=20de=20?= =?UTF-8?q?product?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/configs/navigation-i18n/es.ts | 3 ++- .../producto/formularioProducto/FormularioProductoRender.tsx | 4 ---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/app/configs/navigation-i18n/es.ts b/src/app/configs/navigation-i18n/es.ts index 1fd6e9e..1a7a52b 100644 --- a/src/app/configs/navigation-i18n/es.ts +++ b/src/app/configs/navigation-i18n/es.ts @@ -2,7 +2,8 @@ const locale = { APPLICATIONS: 'Applications', EXAMPLE: 'Example', DASHBOARD: 'Tablero', - INVOICE: 'Factura' + INVOICE: 'Factura', + PRODUCT: 'Producto' }; export default locale; diff --git a/src/app/main/producto/formularioProducto/FormularioProductoRender.tsx b/src/app/main/producto/formularioProducto/FormularioProductoRender.tsx index 8daadf0..045ac80 100644 --- a/src/app/main/producto/formularioProducto/FormularioProductoRender.tsx +++ b/src/app/main/producto/formularioProducto/FormularioProductoRender.tsx @@ -51,10 +51,6 @@ const FormularioProductoRender = () => { multiple freeSolo options={[]} - /* value={value } - onChange={(event, newValue) => { - onChange(newValue); - }} */ renderInput={(params) => (