diff --git a/src/pages/ClientDetails.tsx b/src/pages/ClientDetails.tsx index 2f4da4d..7055ff4 100644 --- a/src/pages/ClientDetails.tsx +++ b/src/pages/ClientDetails.tsx @@ -1,6 +1,6 @@ import { useEffect, useState } from 'react'; import { useParams, Link, useOutletContext } from 'react-router-dom'; -import { ArrowLeft, User, Tag, Package, DollarSign, Clock, Phone, ChevronLeft, ChevronRight, ShoppingBag, ReceiptText } from 'lucide-react'; +import { ArrowLeft, User, Tag, Package, DollarSign, Clock, Phone, ChevronDown, ChevronLeft, ChevronRight, ShoppingBag, ReceiptText } from 'lucide-react'; import { AreaChart, Area, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts'; import DateRangePicker from '../components/DateRangePicker'; import type { ClientDetailsAnalytics, DateRange, OrderData } from '../types'; @@ -55,6 +55,7 @@ const ClientDetails = () => { const [isLoading, setIsLoading] = useState(true); const [currentPage, setCurrentPage] = useState(1); const [ordersPerPage, setOrdersPerPage] = useState(5); + const [expandedOrderIds, setExpandedOrderIds] = useState>(() => new Set()); useEffect(() => { let isMounted = true; @@ -94,9 +95,22 @@ const ClientDetails = () => { const handleDateRangeChange = (range: DateRange) => { setCurrentPage(1); + setExpandedOrderIds(new Set()); setDateRange(range); }; + const toggleOrder = (orderId: string) => { + setExpandedOrderIds(current => { + const next = new Set(current); + if (next.has(orderId)) { + next.delete(orderId); + } else { + next.add(orderId); + } + return next; + }); + }; + if (isLoading) { return (
@@ -261,72 +275,105 @@ const ClientDetails = () => {

Nenhum pedido no período selecionado.

Altere o filtro de data para ver outros pedidos deste cliente.

- ) : paginatedOrders.map((group, groupIndex) => ( -
-
-

- - Pedido ID: {group.orderId} -

- - Total do Pedido: {formatCurrency(group.orderTotal)} - -
- -
- {group.items.map((order, index) => { - const metadata = getOrderMetadata(order); + ) : paginatedOrders.map((group) => { + const isExpanded = expandedOrderIds.has(group.orderId); - return ( -
-
-
-
- - ID: {order.ID_Produto} -
- {order.Data_Pedido && ( -
- - - Comprado: {order.Data_Pedido} - -
- )} + return ( +
+ + + {isExpanded && ( +
+ {group.items.map((order, index) => { + const metadata = getOrderMetadata(order); + + return ( +
+
+
+
+ + ID: {order.ID_Produto}
-

{order.Descricao_Produto}

- -
-
- - Qtd: {order.Quantidade} -
-
- - Preço: {formatCurrency(order.Valor_Unitario)} -
-
- {metadata.length > 0 && ( -
- {metadata.map(value => ( - - {value} - - ))} + {order.Data_Pedido && ( +
+ + + Comprado: {order.Data_Pedido} +
)}
+

{order.Descricao_Produto}

-
-

Subtotal

-

{formatCurrency(order.Quantidade * order.Valor_Unitario)}

+
+
+ + Qtd: {order.Quantidade} +
+
+ + Preço: {formatCurrency(order.Valor_Unitario)} +
+ {metadata.length > 0 && ( +
+ {metadata.map(value => ( + + {value} + + ))} +
+ )}
- ); - })} -
+ +
+

Subtotal

+

{formatCurrency(order.Quantidade * order.Valor_Unitario)}

+
+
+ ); + })}
- ))} + )} +
+ ); + })}