Skip to content

Commit de819ce

Browse files
committed
Show dish codes inline with titles
1 parent 95da08e commit de819ce

2 files changed

Lines changed: 43 additions & 10 deletions

File tree

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { render, screen } from '@testing-library/react';
2+
import { describe, expect, it, vi } from 'vitest';
3+
import { MenuItemListView, type MenuItemView } from './MenuItemListView';
4+
5+
vi.mock('next/image', () => ({
6+
default: (props: Record<string, unknown>) => {
7+
const { src, alt, ...rest } = props;
8+
delete rest.fill;
9+
delete rest.sizes;
10+
delete rest.unoptimized;
11+
// eslint-disable-next-line @next/next/no-img-element
12+
return <img src={src as string} alt={alt as string} {...rest} />;
13+
},
14+
}));
15+
16+
const item: MenuItemView = {
17+
name: 'Bruschetta',
18+
internalCode: '042',
19+
description: 'Pane tostato',
20+
price: 7.5,
21+
};
22+
23+
describe('MenuItemListView internal code layout', () => {
24+
it('shows the internal code inline after the item title', () => {
25+
render(<MenuItemListView item={item} />);
26+
27+
const heading = screen.getByRole('heading', { level: 4 });
28+
const code = screen.getByText('042');
29+
30+
expect(heading).toHaveTextContent('Bruschetta042');
31+
expect(code).toHaveClass('ml-2', 'font-mono', 'text-xs');
32+
});
33+
});

web/src/components/menu/views/MenuItemListView.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,17 +60,17 @@ export function MenuItemListView({ item, outOfStockLabel, onClick }: MenuItemLis
6060
} ${interactive ? "cursor-pointer hover:shadow-md transition-all" : ""}`}
6161
>
6262
<div className="flex-1 min-w-0">
63-
<h4 className="font-semibold text-gray-800 flex items-start justify-between gap-2">
64-
<span>
65-
<span className="block">{item.name}</span>
66-
{item.nameSecondary && (
67-
<span className="mt-0.5 block text-xs font-medium text-gray-500">
68-
{item.nameSecondary}
69-
</span>
70-
)}
71-
</span>
63+
<h4 className="font-semibold text-gray-800">
64+
<span>{item.name}</span>
7265
{item.internalCode && (
73-
<span className="font-mono text-xs font-normal text-gray-400 shrink-0 mt-0.5">{item.internalCode}</span>
66+
<span className="ml-2 align-baseline font-mono text-xs font-normal text-gray-400">
67+
{item.internalCode}
68+
</span>
69+
)}
70+
{item.nameSecondary && (
71+
<span className="mt-0.5 block text-xs font-medium text-gray-500">
72+
{item.nameSecondary}
73+
</span>
7474
)}
7575
</h4>
7676
{item.labels && item.labels.length > 0 && (

0 commit comments

Comments
 (0)