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")} + +
+
)}
);