From 21268ddd39133684d36ac7d1e03e526294dd2a9d Mon Sep 17 00:00:00 2001 From: Sean O'Connor Date: Mon, 29 Jun 2026 01:38:00 -0400 Subject: [PATCH] Refine receipt item expense selection --- components/expenses/ReceiptItemSelector.tsx | 58 +++++++++++++++++++-- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/components/expenses/ReceiptItemSelector.tsx b/components/expenses/ReceiptItemSelector.tsx index bf6a568..ee140cc 100644 --- a/components/expenses/ReceiptItemSelector.tsx +++ b/components/expenses/ReceiptItemSelector.tsx @@ -33,7 +33,7 @@ export function ReceiptItemSelector({ }: ReceiptItemSelectorProps) { const { colors } = useAppTheme(); const [selectedIds, setSelectedIds] = useState>( - () => new Set(items.map((item) => item.id)), + () => new Set(items.length === 1 ? [items[0]!.id] : []), ); const calculation = useMemo(() => { @@ -84,10 +84,11 @@ export function ReceiptItemSelector({ - Split receipt items + Select expense items - Select what this person owes. Tax is split proportionally. + Pick only the receipt lines that should become this expense. Tax is + split proportionally. @@ -95,6 +96,39 @@ export function ReceiptItemSelector({ + {items.length > 1 ? ( + + + setSelectedIds(new Set(items.map((item) => item.id))) + } + style={({ pressed }) => [ + styles.bulkAction, + pressed && styles.pressed, + ]} + > + + Select all + + + setSelectedIds(new Set())} + style={({ pressed }) => [ + styles.bulkAction, + pressed && styles.pressed, + ]} + > + + Clear + + + + ) : null} + {items.map((item) => { const selected = selectedIds.has(item.id); @@ -137,7 +171,11 @@ export function ReceiptItemSelector({