From a6fb85ddbbad37322885bdb1686c78345a5b02b2 Mon Sep 17 00:00:00 2001 From: LambNNot Date: Sat, 28 Feb 2026 21:51:00 -0800 Subject: [PATCH 01/10] feat: touch group-edit-modal.tsx --- src/components/groups/group-edit-modal.tsx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/components/groups/group-edit-modal.tsx diff --git a/src/components/groups/group-edit-modal.tsx b/src/components/groups/group-edit-modal.tsx new file mode 100644 index 0000000..9d18e7f --- /dev/null +++ b/src/components/groups/group-edit-modal.tsx @@ -0,0 +1,19 @@ +interface GroupEditModalProps { + open: boolean; + onOpenChange: (open: boolean) => void; + group: { + id: number; + name: string; + description: string | null; + members: Array<{ memberId: number; ownername: string }>; + memberCount: number; + }; + onSave: (data: { name: string; description: string | null }) => void; + onDelete: () => void; + onAddMembers: () => void; + isSubmitting?: boolean; +} + +export default function GroupEditModal(params: GroupEditModalProps) { + return params.group; +} From a48bc2921040e284c7fc754ea9108e8f39adbd34 Mon Sep 17 00:00:00 2001 From: LambNNot Date: Sun, 1 Mar 2026 06:16:22 -0800 Subject: [PATCH 02/10] feat: added groupeditmodal to personal test page for visual rendering --- src/app/team/phan/page.tsx | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/app/team/phan/page.tsx b/src/app/team/phan/page.tsx index 3dd6861..88c1545 100644 --- a/src/app/team/phan/page.tsx +++ b/src/app/team/phan/page.tsx @@ -1,8 +1,21 @@ "use client"; +import { GroupEditModal } from "@/components/groups/group-edit-modal"; import { useState } from "react"; export default function PhanPage() { const [counter, setCounter] = useState(0); + const [open, setOpen] = useState(true); + + const mockGroup = { + id: 1, + name: "Friends", + description: "People I keep in touch with.", + members: [ + { memberId: 1, ownername: "Alice" }, + { memberId: 2, ownername: "Bob" }, + ], + memberCount: 2, + }; return (
@@ -21,6 +34,14 @@ export default function PhanPage() { {counter}
+ {}} + onDelete={() => {}} + onAddMembers={() => {}} + />
); } From 03865967675e849af70efd1156b4468a78646013 Mon Sep 17 00:00:00 2001 From: LambNNot Date: Sun, 1 Mar 2026 09:44:27 -0800 Subject: [PATCH 03/10] feat: remove groupmember useState for simplified static use --- src/components/groups/group-edit-modal.tsx | 104 ++++++++++++++++++++- 1 file changed, 102 insertions(+), 2 deletions(-) diff --git a/src/components/groups/group-edit-modal.tsx b/src/components/groups/group-edit-modal.tsx index 9d18e7f..afa83e2 100644 --- a/src/components/groups/group-edit-modal.tsx +++ b/src/components/groups/group-edit-modal.tsx @@ -1,3 +1,10 @@ +import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from "@/components/ui/dialog"; +import { useState } from "react"; +import { Button } from "../ui/button"; +import { Textarea } from "../ui/textarea"; +import { Input } from "../ui/input"; +import { Loader2, Plus } from "lucide-react"; + interface GroupEditModalProps { open: boolean; onOpenChange: (open: boolean) => void; @@ -14,6 +21,99 @@ interface GroupEditModalProps { isSubmitting?: boolean; } -export default function GroupEditModal(params: GroupEditModalProps) { - return params.group; +export function GroupEditModal({ + open, + onOpenChange, + group, + onSave, + onDelete, + onAddMembers, + isSubmitting = false, +}: GroupEditModalProps) { + const [newName, setNewName] = useState(group.name); + const [newDescription, setNewDescription] = useState(group.description || ""); + + const handleOpenChange = (nextOpen: boolean) => { + if (isSubmitting) return; + if (!nextOpen) { + setNewName(""); + setNewDescription(""); + } + onOpenChange(nextOpen); + }; + + const handleSave = (newData: { name: string; description: string | null }) => { + if (isSubmitting) return; + onSave(newData); + }; + + return ( + + + + My Groups + +
+ +
+ + +
+
+ +