diff --git a/App/pelagia-portal/app/(portal)/inventory/items/items-table.tsx b/App/pelagia-portal/app/(portal)/inventory/items/items-table.tsx index 9536c6e..7c8a670 100644 --- a/App/pelagia-portal/app/(portal)/inventory/items/items-table.tsx +++ b/App/pelagia-portal/app/(portal)/inventory/items/items-table.tsx @@ -193,6 +193,12 @@ export function ItemsTable({ const lowestPrice = item.vendors.length > 0 ? Math.min(...item.vendors.map((v) => v.price)) : null; const sortedVendors = getSortedVendors(item.vendors); + // Cheapest and closest are independent of current sort order + const minPrice = sortedVendors.length > 1 ? Math.min(...sortedVendors.map((v) => v.price)) : null; + const closestVendorId = hasSite + ? (sortedVendors.filter((v) => v.distanceKm !== null).sort((a, b) => a.distanceKm! - b.distanceKm!)[0]?.vendorId ?? null) + : null; + return ( {/* Item row */} @@ -239,9 +245,10 @@ export function ItemsTable({ - {sortedVendors.map((vendor, idx) => { + {sortedVendors.map((vendor) => { const key = `${item.id}-${vendor.vendorId}`; - const isFirst = idx === 0; + const isCheapest = minPrice !== null && vendor.price === minPrice; + const isClosest = closestVendorId !== null && vendor.vendorId === closestVendorId; return ( @@ -256,10 +263,10 @@ export function ItemsTable({ {vendor.isVerified && ( Verified )} - {isFirst && sortBy === "distance" && vendor.distanceKm !== null && ( + {isClosest && ( ★ Closest )} - {isFirst && sortBy === "price" && ( + {isCheapest && ( Cheapest )}