69 lines
1.8 KiB
TypeScript
69 lines
1.8 KiB
TypeScript
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
import dayjs from "dayjs";
|
|
import { usePathname, useRouter } from "next/navigation";
|
|
import type { ColumnDef, Row } from "@tanstack/react-table";
|
|
import { useLocalStorage } from "@frontend-opensource/use-react-hooks";
|
|
import type { Board } from "@/entities/board/model/board-interface";
|
|
import { useMenuStore } from "@/shared/lib";
|
|
import { Button } from "@common/components";
|
|
|
|
export const columns: ColumnDef<Board>[] = [
|
|
{
|
|
id: "no",
|
|
header: "NO",
|
|
cell: ({ row }) => row.index + 1,
|
|
},
|
|
{
|
|
accessorKey: "bbsNm",
|
|
header: "게시판명",
|
|
},
|
|
{
|
|
accessorKey: "bbsTypeNm",
|
|
header: "게시판유형",
|
|
},
|
|
{
|
|
accessorKey: "mdfrNm",
|
|
header: "최종수정자",
|
|
},
|
|
{
|
|
accessorKey: "mdfcnDt",
|
|
header: "최종수정일",
|
|
cell: ({ row }) =>
|
|
row.original.mdfcnDt
|
|
? dayjs(row.original.mdfcnDt).format("YYYY-MM-DD")
|
|
: "",
|
|
},
|
|
{
|
|
accessorKey: "useYn",
|
|
header: "사용여부",
|
|
},
|
|
{
|
|
id: "actions",
|
|
header: "게시물관리",
|
|
cell: ({ row }) => <ManageButton row={row} />,
|
|
},
|
|
];
|
|
|
|
const ManageButton = ({ row }: { row: Row<Board> }) => {
|
|
const router = useRouter();
|
|
const pathname = usePathname();
|
|
const [, setBbsInfo] = useLocalStorage("bbs-info", "");
|
|
const { setBbsInfo: setStoreBbsInfo } = useMenuStore((state) => state);
|
|
|
|
const { bbsTypeCd, bbsId } = row.original;
|
|
return (
|
|
<Button
|
|
size="sm"
|
|
onClick={(e) => {
|
|
e.stopPropagation();
|
|
router.push(`${pathname}/${bbsTypeCd.toLowerCase()}/${bbsId}`);
|
|
// router.push(`/pst/${bbsTypeCd.toLowerCase()}/${bbsId}`); // 공통 개발용
|
|
setBbsInfo(JSON.stringify(row.original));
|
|
setStoreBbsInfo(row.original);
|
|
}}
|
|
>
|
|
관리
|
|
</Button>
|
|
);
|
|
};
|