From 5d2cad255c8d02eb6784cb02f5edabc1482e2d04 Mon Sep 17 00:00:00 2001 From: Arnaud Date: Fri, 10 Jul 2026 11:55:18 +0200 Subject: [PATCH] =?UTF-8?q?Revert=20"refactor:=20shopping=20list=20item=20?= =?UTF-8?q?row=20=E2=80=94=20direct=20buttons=20instead=20of=20"..."=20ove?= =?UTF-8?q?rflow=20menu"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 0022d807d00533a1c1374263bce66bde55583281. --- .../meal-plan/shopping-list-view.tsx | 125 +++++++++--------- 1 file changed, 63 insertions(+), 62 deletions(-) diff --git a/apps/web/components/meal-plan/shopping-list-view.tsx b/apps/web/components/meal-plan/shopping-list-view.tsx index a484ead..7f42b86 100644 --- a/apps/web/components/meal-plan/shopping-list-view.tsx +++ b/apps/web/components/meal-plan/shopping-list-view.tsx @@ -3,7 +3,7 @@ import { useMemo, useRef, useState } from "react"; import { useTranslations } from "next-intl"; import { cn } from "@/lib/utils"; -import { Check, Package, Loader2, GripVertical, Trash2, Search, Sparkles } from "lucide-react"; +import { Check, Package, Loader2, GripVertical, MoreVertical, Trash2, Search, Sparkles } from "lucide-react"; import { toast } from "sonner"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; @@ -14,7 +14,16 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; -import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuSub, + DropdownMenuSubContent, + DropdownMenuSubTrigger, + DropdownMenuTrigger, + DropdownMenuSeparator, +} from "@/components/ui/dropdown-menu"; import { AlertDialog, AlertDialogAction, @@ -615,12 +624,12 @@ type ItemRowProps = { function ItemRow({ item, readOnly, categoryOptions, categoryLabel, tShopping, onToggle, onChangeCategory, onDeleteRequest, dragHandle }: ItemRowProps) { const [newCategory, setNewCategory] = useState(""); return ( -
+
{dragHandle} {!readOnly && ( -
- setNewCategory(e.target.value)} - onKeyDown={(e) => { - if (e.key === "Enter" && newCategory.trim()) { - onChangeCategory(item, newCategory.trim()); - setNewCategory(""); - } - }} - placeholder={tShopping("newCategoryPlaceholder")} - className="h-7 text-xs" - /> - -
- - - - - onDeleteRequest(item)} - > - - - } /> - {tShopping("deleteItem")} - - -
+ + + + + + + {tShopping("changeCategory")} + + {categoryOptions.map((category) => ( + onChangeCategory(item, category)}> + {categoryLabel(category)} + + ))} + onChangeCategory(item, null)}> + {tShopping("aisleOther")} + + +
e.stopPropagation()}> + setNewCategory(e.target.value)} + onKeyDown={(e) => { + if (e.key === "Enter" && newCategory.trim()) { + onChangeCategory(item, newCategory.trim()); + setNewCategory(""); + } + }} + placeholder={tShopping("newCategoryPlaceholder")} + className="h-7 text-xs" + /> + +
+
+
+ + onDeleteRequest(item)}> + + {tShopping("deleteItem")} + +
+
)}
);