diff options
Diffstat (limited to 'lib/docu-list-rule/document-class/table/document-class-table.tsx')
| -rw-r--r-- | lib/docu-list-rule/document-class/table/document-class-table.tsx | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/lib/docu-list-rule/document-class/table/document-class-table.tsx b/lib/docu-list-rule/document-class/table/document-class-table.tsx index c66a1395..c9156ff7 100644 --- a/lib/docu-list-rule/document-class/table/document-class-table.tsx +++ b/lib/docu-list-rule/document-class/table/document-class-table.tsx @@ -46,9 +46,9 @@ export function DocumentClassTable({ promises }: DocumentClassTableProps) { ] const { table } = useDataTable({ - data: rawData[0].data as typeof documentClasses.$inferSelect[], + data: rawData[0]?.data as typeof documentClasses.$inferSelect[] || [], columns, - pageCount: rawData[0].pageCount, + pageCount: rawData[0]?.pageCount || 0, enablePinning: true, enableAdvancedFilter: true, initialState: { @@ -59,6 +59,26 @@ export function DocumentClassTable({ promises }: DocumentClassTableProps) { clearOnDefault: true, }) + + // 컴포넌트 마운트 후 그룹핑 설정 + React.useEffect(() => { + if (rawData[0]?.data && table.getState().grouping.length === 0) { + table.setGrouping(["projectCode"]) + } + }, [table, rawData]) + + // 정렬 시 펼쳐진 상태 유지 + React.useEffect(() => { + const currentExpanded = table.getState().expanded + if (Object.keys(currentExpanded).length > 0) { + // 약간의 지연 후 현재 펼쳐진 상태를 다시 설정 + const timer = setTimeout(() => { + table.setExpanded(currentExpanded) + }, 100) + return () => clearTimeout(timer) + } + }, [table.getState().sorting, table]) + return ( <> <DataTable table={table}> |
