From 5d469f08a73d3fad57ec0569096c5da266aee39f Mon Sep 17 00:00:00 2001 From: JuruSysadmin Date: Wed, 14 Jan 2026 15:20:40 -0300 Subject: [PATCH] feat: Implement orders page with table and order details tabs. --- .../orders/components/OrderDetailsTabs.tsx | 2 +- src/features/orders/components/OrderItem.tsx | 0 .../orders/components/OrderItemsTable.tsx | 209 ------------------ src/features/orders/components/OrderTable.tsx | 13 +- src/features/orders/pages/OrdersPage.tsx | 2 +- 5 files changed, 5 insertions(+), 221 deletions(-) delete mode 100644 src/features/orders/components/OrderItem.tsx delete mode 100644 src/features/orders/components/OrderItemsTable.tsx diff --git a/src/features/orders/components/OrderDetailsTabs.tsx b/src/features/orders/components/OrderDetailsTabs.tsx index 3726c04..2badc5f 100644 --- a/src/features/orders/components/OrderDetailsTabs.tsx +++ b/src/features/orders/components/OrderDetailsTabs.tsx @@ -14,7 +14,7 @@ import MoveToInboxIcon from '@mui/icons-material/MoveToInbox'; import TvIcon from '@mui/icons-material/Tv'; import AccountBalanceWalletIcon from '@mui/icons-material/AccountBalanceWallet'; import { TabPanel } from './TabPanel'; -import { OrderItemsTable } from './OrderItemsTable'; +import { OrderItemsTable } from './tabs/OrderItemsTable'; import { PreBoxPanel } from './tabs/PreBoxPanel'; import { InformationPanel } from './tabs/InformationPanel'; import { TimelinePanel } from './tabs/TimelinePanel'; diff --git a/src/features/orders/components/OrderItem.tsx b/src/features/orders/components/OrderItem.tsx deleted file mode 100644 index e69de29..0000000 diff --git a/src/features/orders/components/OrderItemsTable.tsx b/src/features/orders/components/OrderItemsTable.tsx deleted file mode 100644 index 91fb7cb..0000000 --- a/src/features/orders/components/OrderItemsTable.tsx +++ /dev/null @@ -1,209 +0,0 @@ -'use client'; - -import { useMemo } from 'react'; -import Box from '@mui/material/Box'; -import Paper from '@mui/material/Paper'; -import Typography from '@mui/material/Typography'; -import CircularProgress from '@mui/material/CircularProgress'; -import Alert from '@mui/material/Alert'; -import { DataGridPremium } from '@mui/x-data-grid-premium'; -import { useOrderItems } from '../hooks/useOrderItems'; -import { createOrderItemsColumns } from './OrderItemsTableColumns'; -import { OrderItem } from '../schemas/order.item.schema'; - -interface OrderItemsTableProps { - orderId: number; -} - -export const OrderItemsTable = ({ orderId }: OrderItemsTableProps) => { - const { data: items, isLoading, error } = useOrderItems(orderId); - - const columns = useMemo(() => createOrderItemsColumns(), []); - - const rows = useMemo(() => { - if (!Array.isArray(items) || items.length === 0) return []; - return items.map((item: OrderItem, index: number) => ({ - id: `${orderId}-${item.productId}-${index}`, - ...item, - })); - }, [items, orderId]); - - if (isLoading) { - return ( - - - - Carregando itens do pedido... - - - ); - } - - if (error) { - return ( - - - {error instanceof Error - ? `Erro ao carregar itens: ${error.message}` - : 'Erro ao carregar itens do pedido.'} - - - ); - } - - if (!items || items.length === 0) { - return ( - - Nenhum item encontrado para este pedido. - - ); - } - - return ( - - - - `${visibleCount.toLocaleString()} de ${totalCount.toLocaleString()}`, - }} - slotProps={{ - pagination: { - labelRowsPerPage: 'Itens por página:', - labelDisplayedRows: ({ from, to, count }: { from: number; to: number; count: number }) => { - const pageSize = to >= from ? to - from + 1 : 10; - const currentPage = Math.floor((from - 1) / pageSize) + 1; - const totalPages = Math.ceil(count / pageSize); - return `${from}–${to} de ${count} | Página ${currentPage} de ${totalPages}`; - }, - }, - }} - /> - - - ); -}; diff --git a/src/features/orders/components/OrderTable.tsx b/src/features/orders/components/OrderTable.tsx index 881e5ab..c7afdaa 100644 --- a/src/features/orders/components/OrderTable.tsx +++ b/src/features/orders/components/OrderTable.tsx @@ -3,9 +3,9 @@ import { useMemo, useState } from 'react'; import { SearchBar } from './SearchBar'; import Box from '@mui/material/Box'; -import CircularProgress from '@mui/material/CircularProgress'; + import Alert from '@mui/material/Alert'; -import Typography from '@mui/material/Typography'; + import Paper from '@mui/material/Paper'; import { DataGridPremium, GridCellSelectionModel } from '@mui/x-data-grid-premium'; import { useOrders } from '../hooks/useOrders'; @@ -31,14 +31,7 @@ export const OrderTable = () => { [] ); - if (isLoading) { - return ( - - - Buscando pedidos... - - ); - } + if (error) { return ( diff --git a/src/features/orders/pages/OrdersPage.tsx b/src/features/orders/pages/OrdersPage.tsx index 022b98a..43d357d 100644 --- a/src/features/orders/pages/OrdersPage.tsx +++ b/src/features/orders/pages/OrdersPage.tsx @@ -6,7 +6,7 @@ import { Box, Typography } from '@mui/material'; export default function OrdersPage() { return ( - + Consultas de Pedidos