File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
import {
Table,
TableBody,
TableCell,
TableHead,
TableHeaderCell,
TableRow,
} from '@/components/ui/table';
import {
formatBoardCategoryLabel,
formatFaqTypeLabel,
formatOptionalValue,
formatVisibilityLabel,
type BoardPost,
} from '@/lib/domain/board-post';
import { BoardRowActions } from '../../_components/board-row-actions';
interface FaqTableProps {
items: BoardPost[];
page: number;
pageSize: number;
totalCount: number;
}
const COLUMN_HEADERS = [
'번호',
'구분',
'유형',
'제목',
'작성자',
'등록일',
'사용여부',
'관리',
];
/**
* FAQ 목록 테이블 — 시안 A_BOA_014 ③.
*
* "유형"은 현재 항상 `-`다 — 백엔드에 유형 저장 필드가 아직 없어 조회 응답에 값이 없다
* (`board-post.ts`의 `BOARD_TYPE_CODE_PARAM` 주석). 열은 유지해 두었으므로 백엔드에 필드가
* 추가되면 Repository 매핑만 늘리면 그대로 채워진다.
*/
export function FaqTable({ items, page, pageSize, totalCount }: FaqTableProps) {
const offset = (page - 1) * pageSize;
return (
<Table>
<TableHead>
<TableRow>
{COLUMN_HEADERS.map((header) => (
<TableHeaderCell key={header}>{header}</TableHeaderCell>
))}
</TableRow>
</TableHead>
<TableBody>
{items.map((post, index) => (
<TableRow key={post.id}>
<TableCell>{totalCount - offset - index}</TableCell>
<TableCell>{formatBoardCategoryLabel(post.categoryCode)}</TableCell>
<TableCell>{formatFaqTypeLabel(post.typeCode)}</TableCell>
<TableCell>{formatOptionalValue(post.title)}</TableCell>
<TableCell>{formatOptionalValue(post.authorName)}</TableCell>
<TableCell>{formatOptionalValue(post.createdAt)}</TableCell>
<TableCell>{formatVisibilityLabel(post.isVisible)}</TableCell>
<TableCell>
<BoardRowActions boardType="faq" post={post} />
</TableCell>
</TableRow>
))}
</TableBody>
</Table>
);
}