summaryrefslogtreecommitdiff
path: root/lib/tech-vendors/contacts-table
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tech-vendors/contacts-table')
-rw-r--r--lib/tech-vendors/contacts-table/add-contact-dialog.tsx21
-rw-r--r--lib/tech-vendors/contacts-table/contact-table-columns.tsx45
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 순서