diff --git a/src/features/inventory/pages/InventoryPage.tsx b/src/features/inventory/pages/InventoryPage.tsx index 786d7e9..fc0ac6b 100644 --- a/src/features/inventory/pages/InventoryPage.tsx +++ b/src/features/inventory/pages/InventoryPage.tsx @@ -166,9 +166,12 @@ export function InventoryPage() { return ( + {/* `useFlexGap`: sin él `spacing` separa con `margin-left` y pisa el + `ml: 'auto'` que manda las acciones a la derecha (TESIS-132). */} diff --git a/src/features/orders/pages/NewOrderPage.tsx b/src/features/orders/pages/NewOrderPage.tsx index 94e104a..799cfb3 100644 --- a/src/features/orders/pages/NewOrderPage.tsx +++ b/src/features/orders/pages/NewOrderPage.tsx @@ -121,7 +121,9 @@ export function NewOrderPage() { weight={formatWeight(draftWeight(items))} /> - + {/* `useFlexGap`: sin él `spacing` separa con `margin-left` y pisa el + `ml: 'auto'` que manda el botón de avanzar a la derecha (TESIS-132). */} + diff --git a/src/features/orders/pages/OrdersPage.tsx b/src/features/orders/pages/OrdersPage.tsx index a23f2c2..750f72e 100644 --- a/src/features/orders/pages/OrdersPage.tsx +++ b/src/features/orders/pages/OrdersPage.tsx @@ -92,9 +92,12 @@ export function OrdersPage() { return ( + {/* `useFlexGap`: sin él `spacing` separa con `margin-left` y pisa el + `ml: 'auto'` que manda las acciones a la derecha (TESIS-132). */} diff --git a/src/features/orders/pages/ShippingStepPage.tsx b/src/features/orders/pages/ShippingStepPage.tsx index 1c3a5e5..261bd6d 100644 --- a/src/features/orders/pages/ShippingStepPage.tsx +++ b/src/features/orders/pages/ShippingStepPage.tsx @@ -151,7 +151,9 @@ export function ShippingStepPage() { provincesError={provinces.isError} /> - + {/* `useFlexGap`: sin él `spacing` separa con `margin-left` y pisa el + `ml: 'auto'` que manda el botón de avanzar a la derecha (TESIS-132). */} + diff --git a/src/shared/components/PageWrapper.test.tsx b/src/shared/components/PageWrapper.test.tsx new file mode 100644 index 0000000..8097344 --- /dev/null +++ b/src/shared/components/PageWrapper.test.tsx @@ -0,0 +1,46 @@ +import { screen } from '@testing-library/react' +import { describe, expect, it } from 'vitest' + +import { renderWithTheme } from '../../test/renderWithTheme' + +import { PageWrapper } from './PageWrapper' + +describe('PageWrapper', () => { + it('centers the page and caps its width by default', () => { + renderWithTheme(Contenido) + + expect(screen.getByRole('main')).toHaveStyle({ + maxWidth: '1200px', + marginLeft: 'auto', + marginRight: 'auto', + width: '100%', + }) + }) + + // Las pantallas anchas le pasan `sx={{ maxWidth: 1400 }}`. Antes ese `sx` + // reemplazaba al base entero y la página quedaba sin padding ni centrado. + // Se afirma el centrado y no el padding: el padding va en un media query con + // `var(--mui-spacing)`, y jsdom no resuelve ninguno de los dos. + it('keeps the base styles when the caller overrides one of them', () => { + renderWithTheme(Contenido) + + expect(screen.getByRole('main')).toHaveStyle({ + maxWidth: '1400px', + marginLeft: 'auto', + marginRight: 'auto', + width: '100%', + }) + }) + + it('accepts an array of styles like any other sx', () => { + renderWithTheme( + Contenido, + ) + + expect(screen.getByRole('main')).toHaveStyle({ + maxWidth: '1400px', + marginLeft: 'auto', + minHeight: '100%', + }) + }) +}) diff --git a/src/shared/components/PageWrapper.tsx b/src/shared/components/PageWrapper.tsx index 39b0324..48bdb31 100644 --- a/src/shared/components/PageWrapper.tsx +++ b/src/shared/components/PageWrapper.tsx @@ -5,17 +5,23 @@ interface PageWrapperProps extends BoxProps { children: ReactNode } -export function PageWrapper({ children, ...props }: PageWrapperProps) { +export function PageWrapper({ children, sx, ...props }: PageWrapperProps) { return ( {children}