diff options
Diffstat (limited to 'lib/tech-vendors/contacts-table')
| -rw-r--r-- | lib/tech-vendors/contacts-table/add-contact-dialog.tsx | 21 | ||||
| -rw-r--r-- | lib/tech-vendors/contacts-table/contact-table-columns.tsx | 45 |
2 files changed, 34 insertions, 32 deletions
diff --git a/lib/tech-vendors/contacts-table/add-contact-dialog.tsx b/lib/tech-vendors/contacts-table/add-contact-dialog.tsx index 05e5092e..ff845e20 100644 --- a/lib/tech-vendors/contacts-table/add-contact-dialog.tsx +++ b/lib/tech-vendors/contacts-table/add-contact-dialog.tsx @@ -39,6 +39,7 @@ export function AddContactDialog({ vendorId }: AddContactDialogProps) { contactPosition: "", contactEmail: "", contactPhone: "", + country: "", isPrimary: false, }, }) @@ -50,6 +51,12 @@ export function AddContactDialog({ vendorId }: AddContactDialogProps) { alert(`에러: ${result.error}`) return } + + // 성공 시 메시지 표시 + if (result.data?.message) { + alert(result.data.message) + } + // 성공 시 모달 닫고 폼 리셋 form.reset() setOpen(false) @@ -139,6 +146,20 @@ export function AddContactDialog({ vendorId }: AddContactDialogProps) { )} /> + <FormField + control={form.control} + name="country" + render={({ field }) => ( + <FormItem> + <FormLabel>Country</FormLabel> + <FormControl> + <Input placeholder="예: Korea" {...field} /> + </FormControl> + <FormMessage /> + </FormItem> + )} + /> + {/* 단순 checkbox */} <FormField control={form.control} diff --git a/lib/tech-vendors/contacts-table/contact-table-columns.tsx b/lib/tech-vendors/contacts-table/contact-table-columns.tsx index fece5013..b8f4e7a2 100644 --- a/lib/tech-vendors/contacts-table/contact-table-columns.tsx +++ b/lib/tech-vendors/contacts-table/contact-table-columns.tsx @@ -4,48 +4,35 @@ import * as React from "react" import { type DataTableRowAction } from "@/types/table" import { type ColumnDef } from "@tanstack/react-table" import { Ellipsis } from "lucide-react" -import { toast } from "sonner" -import { getErrorMessage } from "@/lib/handle-error" import { formatDate } from "@/lib/utils" -import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Checkbox } from "@/components/ui/checkbox" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, - DropdownMenuRadioGroup, - DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, - DropdownMenuSub, - DropdownMenuSubContent, - DropdownMenuSubTrigger, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" -import { DataTableColumnHeader } from "@/components/data-table/data-table-column-header" -import { VendorContact, vendors } from "@/db/schema/vendors" -import { modifyVendor } from "../service" +import { TechVendorContact } from "@/db/schema/techVendors" import { DataTableColumnHeaderSimple } from "@/components/data-table/data-table-column-simple-header" -import { vendorContactsColumnsConfig } from "@/config/vendorContactsColumnsConfig" - - - +import { techVendorContactsColumnsConfig } from "@/config/techVendorContactsColumnsConfig" interface GetColumnsProps { - setRowAction: React.Dispatch<React.SetStateAction<DataTableRowAction<VendorContact> | null>>; + setRowAction: React.Dispatch<React.SetStateAction<DataTableRowAction<TechVendorContact> | null>>; } /** * tanstack table 컬럼 정의 (중첩 헤더 버전) */ -export function getColumns({ setRowAction }: GetColumnsProps): ColumnDef<VendorContact>[] { +export function getColumns({ setRowAction }: GetColumnsProps): ColumnDef<TechVendorContact>[] { // ---------------------------------------------------------------- // 1) select 컬럼 (체크박스) // ---------------------------------------------------------------- - const selectColumn: ColumnDef<VendorContact> = { + const selectColumn: ColumnDef<TechVendorContact> = { id: "select", header: ({ table }) => ( <Checkbox @@ -74,12 +61,10 @@ export function getColumns({ setRowAction }: GetColumnsProps): ColumnDef<VendorC // ---------------------------------------------------------------- // 2) actions 컬럼 (Dropdown 메뉴) // ---------------------------------------------------------------- - const actionsColumn: ColumnDef<VendorContact> = { + const actionsColumn: ColumnDef<TechVendorContact> = { id: "actions", enableHiding: false, cell: function Cell({ row }) { - const [isUpdatePending, startUpdateTransition] = React.useTransition() - return ( <DropdownMenu> <DropdownMenuTrigger asChild> @@ -95,7 +80,6 @@ export function getColumns({ setRowAction }: GetColumnsProps): ColumnDef<VendorC <DropdownMenuItem onSelect={() => { setRowAction({ row, type: "update" }) - }} > Edit @@ -118,10 +102,10 @@ export function getColumns({ setRowAction }: GetColumnsProps): ColumnDef<VendorC // ---------------------------------------------------------------- // 3) 일반 컬럼들을 "그룹"별로 묶어 중첩 columns 생성 // ---------------------------------------------------------------- - // 3-1) groupMap: { [groupName]: ColumnDef<VendorContact>[] } - const groupMap: Record<string, ColumnDef<VendorContact>[]> = {} + // 3-1) groupMap: { [groupName]: ColumnDef<TechVendorContact>[] } + const groupMap: Record<string, ColumnDef<TechVendorContact>[]> = {} - vendorContactsColumnsConfig.forEach((cfg) => { + techVendorContactsColumnsConfig.forEach((cfg) => { // 만약 group가 없으면 "_noGroup" 처리 const groupName = cfg.group || "_noGroup" @@ -130,7 +114,7 @@ export function getColumns({ setRowAction }: GetColumnsProps): ColumnDef<VendorC } // child column 정의 - const childCol: ColumnDef<VendorContact> = { + const childCol: ColumnDef<TechVendorContact> = { accessorKey: cfg.id, enableResizing: true, header: ({ column }) => ( @@ -142,19 +126,16 @@ export function getColumns({ setRowAction }: GetColumnsProps): ColumnDef<VendorC type: cfg.type, }, cell: ({ row, cell }) => { - - if (cfg.id === "createdAt") { const dateVal = cell.getValue() as Date - return formatDate(dateVal, "KR") + return formatDate(dateVal) } if (cfg.id === "updatedAt") { const dateVal = cell.getValue() as Date - return formatDate(dateVal, "KR") + return formatDate(dateVal) } - // code etc... return row.getValue(cfg.id) ?? "" }, @@ -166,7 +147,7 @@ export function getColumns({ setRowAction }: GetColumnsProps): ColumnDef<VendorC // ---------------------------------------------------------------- // 3-2) groupMap에서 실제 상위 컬럼(그룹)을 만들기 // ---------------------------------------------------------------- - const nestedColumns: ColumnDef<VendorContact>[] = [] + const nestedColumns: ColumnDef<TechVendorContact>[] = [] // 순서를 고정하고 싶다면 group 순서를 미리 정의하거나 sort해야 함 // 여기서는 그냥 Object.entries 순서 |
