summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/client-data-table/data-table.tsx11
-rw-r--r--components/data-table/data-table-detail.tsx13
-rw-r--r--components/data-table/data-table-resizer.tsx12
-rw-r--r--components/data-table/data-table.tsx18
-rw-r--r--components/data-table/expandable-data-table.tsx7
-rw-r--r--components/data-table/infinite-data-table.tsx7
6 files changed, 46 insertions, 22 deletions
diff --git a/components/client-data-table/data-table.tsx b/components/client-data-table/data-table.tsx
index 9ea44775..44168bd2 100644
--- a/components/client-data-table/data-table.tsx
+++ b/components/client-data-table/data-table.tsx
@@ -203,7 +203,8 @@ export function ClientDataTable<TData, TValue>({
onScroll={handleScroll} // ๐ŸŽฏ ์Šคํฌ๋กค ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์ถ”๊ฐ€
>
<UiTable
- className="[&>thead]:sticky [&>thead]:top-0 [&>thead]:z-10 table-fixed">
+ className="[&>thead]:sticky [&>thead]:top-0 [&>thead]:z-10">
+ {/* table-fixed ์ œ๊ฑฐ: nested header์—์„œ ๋™์  width ๋ณ€๊ฒฝ์„ ์œ„ํ•ด ์œ ์—ฐํ•œ ๋ ˆ์ด์•„์›ƒ ์‚ฌ์šฉ */}
<TableHeader>
{table.getHeaderGroups().map((headerGroup) => (
<TableRow key={headerGroup.id} className={compactStyles.headerRow}>
@@ -221,7 +222,9 @@ export function ClientDataTable<TData, TValue>({
className={compactStyles.header}
style={{
...getPinnedStyle(header.column, true), // ๐ŸŽฏ ํ—ค๋”์ž„์„ ๋ช…์‹œ
- width: header.getSize() // ๐ŸŽฏ width ๋ณ„๋„ ์„ค์ •
+ // ๋ถ€๋ชจ ๊ทธ๋ฃน ํ—ค๋”๋Š” colSpan์œผ๋กœ ๋„ˆ๋น„๊ฐ€ ๊ฒฐ์ •๋˜๋ฏ€๋กœ width ์„ค์ •ํ•˜์ง€ ์•Š์Œ
+ // ์ž์‹ ํ—ค๋”๋งŒ ๊ฐœ๋ณ„ width ์„ค์ •
+ ...(!('columns' in header.column.columnDef) && { width: header.getSize() }),
}}
>
<div style={{ position: "relative" }}>
@@ -232,8 +235,8 @@ export function ClientDataTable<TData, TValue>({
header.getContext()
)}
- {/* ๋ฆฌ์‚ฌ์ด์ฆˆ ํ•ธ๋“ค - ํ—ค๋”์—๋งŒ ์ถ”๊ฐ€ */}
- {header.column.getCanResize() && (
+ {/* ๋ถ€๋ชจ ๊ทธ๋ฃน ํ—ค๋”๋Š” ๋ฆฌ์‚ฌ์ด์ฆˆ ๋ถˆ๊ฐ€, ์ž์‹ ํ—ค๋”๋งŒ ๋ฆฌ์‚ฌ์ด์ฆˆ ๊ฐ€๋Šฅ */}
+ {header.column.getCanResize() && !('columns' in header.column.columnDef) && (
<DataTableResizer header={header} />
)}
</div>
diff --git a/components/data-table/data-table-detail.tsx b/components/data-table/data-table-detail.tsx
index c34f9e73..f3f09fe2 100644
--- a/components/data-table/data-table-detail.tsx
+++ b/components/data-table/data-table-detail.tsx
@@ -87,11 +87,13 @@ export function DataTableDetail<TData>({
data-column-id={header.column.id}
className={compactStyles.header}
style={{
- ...getCommonPinningStylesWithBorder({
- column: header.column,
- isHeader: true
+ ...getCommonPinningStylesWithBorder({
+ column: header.column,
+ isHeader: true
}),
- width: header.getSize(),
+ // ๋ถ€๋ชจ ๊ทธ๋ฃน ํ—ค๋”๋Š” colSpan์œผ๋กœ ๋„ˆ๋น„๊ฐ€ ๊ฒฐ์ •๋˜๋ฏ€๋กœ width ์„ค์ •ํ•˜์ง€ ์•Š์Œ
+ // ์ž์‹ ํ—ค๋”๋งŒ ๊ฐœ๋ณ„ width ์„ค์ •
+ ...(!('columns' in header.column.columnDef) && { width: header.getSize() }),
}}
>
<div style={{ position: "relative" }}>
@@ -102,7 +104,8 @@ export function DataTableDetail<TData>({
header.getContext()
)}
- {header.column.getCanResize() && (
+ {/* ๋ถ€๋ชจ ๊ทธ๋ฃน ํ—ค๋”๋Š” ๋ฆฌ์‚ฌ์ด์ฆˆ ๋ถˆ๊ฐ€, ์ž์‹ ํ—ค๋”๋งŒ ๋ฆฌ์‚ฌ์ด์ฆˆ ๊ฐ€๋Šฅ */}
+ {header.column.getCanResize() && !('columns' in header.column.columnDef) && (
<DataTableResizer header={header} />
)}
</div>
diff --git a/components/data-table/data-table-resizer.tsx b/components/data-table/data-table-resizer.tsx
index 9723a0b4..8053606d 100644
--- a/components/data-table/data-table-resizer.tsx
+++ b/components/data-table/data-table-resizer.tsx
@@ -18,9 +18,10 @@ export function DataTableResizer<TData, TValue>({
// ๋”๋ธ”ํด๋ฆญ ์‹œ ๋„ˆ๋น„ ์ž๋™ ์กฐ์ • ํ•จ์ˆ˜
const handleDoubleClick = React.useCallback(() => {
+
// ํ…Œ์ด๋ธ” ์ธ์Šคํ„ด์Šค ๊ฐ€์ ธ์˜ค๊ธฐ
const table = header.getContext().table
-
+
// 0. ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ์„ค์ •
const defaultMinWidth = 80 // ๊ธฐ๋ณธ ์ตœ์†Œ ๋„ˆ๋น„
const extraPadding = 24 // ์—ฌ์œ  ๊ณต๊ฐ„
@@ -75,15 +76,20 @@ export function DataTableResizer<TData, TValue>({
table.setColumnSizing(updatedSizing)
}, [header])
+ const handleMouseDown = React.useCallback((e: React.MouseEvent) => {
+ // ๊ธฐ๋ณธ resize handler ์‚ฌ์šฉ
+ header.getResizeHandler()(e);
+ }, [header]);
+
return (
<>
{/* ํ—ค๋” ์ฝ˜ํ…์ธ  ์ฐธ์กฐ๋ฅผ ์œ„ํ•œ ์š”์†Œ */}
<div ref={contentRef} className="absolute opacity-0 pointer-events-none" />
-
+
{/* ๋ฆฌ์‚ฌ์ด์ € */}
<div
{...props}
- onMouseDown={header.getResizeHandler()}
+ onMouseDown={handleMouseDown}
onTouchStart={header.getResizeHandler()}
onDoubleClick={handleDoubleClick} // ๋”๋ธ”ํด๋ฆญ ํ•ธ๋“ค๋Ÿฌ ์ถ”๊ฐ€
className={cn(
diff --git a/components/data-table/data-table.tsx b/components/data-table/data-table.tsx
index 07e4dcd2..2eb3e020 100644
--- a/components/data-table/data-table.tsx
+++ b/components/data-table/data-table.tsx
@@ -75,7 +75,8 @@ export function DataTable<TData>({
<div className={cn("w-full space-y-2.5 overflow-auto", className)} {...props}>
{stableChildren}
<div className="max-w-[100vw] overflow-auto" style={{ maxHeight: maxHeight || '35rem' }} >
- <Table className="[&>thead]:sticky [&>thead]:top-0 [&>thead]:z-10 table-fixed">
+ <Table className="[&>thead]:sticky [&>thead]:top-0 [&>thead]:z-10">
+ {/* table-fixed ์ œ๊ฑฐ: nested header์—์„œ ๋™์  width ๋ณ€๊ฒฝ์„ ์œ„ํ•ด ์œ ์—ฐํ•œ ๋ ˆ์ด์•„์›ƒ ์‚ฌ์šฉ */}
{/* ํ…Œ์ด๋ธ” ํ—ค๋” */}
<TableHeader>
{table.getHeaderGroups().map((headerGroup) => (
@@ -92,11 +93,15 @@ export function DataTable<TData>({
data-column-id={header.column.id}
className={cn(compactStyles.header, "whitespace-normal break-words")}
style={{
- ...getCommonPinningStylesWithBorder({
- column: header.column,
- isHeader: true
+ ...getCommonPinningStylesWithBorder({
+ column: header.column,
+ isHeader: true
+ }),
+ // ๋ถ€๋ชจ ๊ทธ๋ฃน ํ—ค๋”๋Š” colSpan์œผ๋กœ ๋„ˆ๋น„๊ฐ€ ๊ฒฐ์ •๋˜๋ฏ€๋กœ width ์„ค์ •ํ•˜์ง€ ์•Š์Œ
+ // ์ž์‹ ํ—ค๋”๋งŒ ๊ฐœ๋ณ„ width ์„ค์ •
+ ...(!('columns' in header.column.columnDef) && {
+ width: header.getSize()
}),
- width: header.getSize(),
}}
>
<div style={{ position: "relative" }}>
@@ -107,7 +112,8 @@ export function DataTable<TData>({
header.getContext()
)}
- {header.column.getCanResize() && (
+ {/* ๋ถ€๋ชจ ๊ทธ๋ฃน ํ—ค๋”๋Š” ๋ฆฌ์‚ฌ์ด์ฆˆ ๋ถˆ๊ฐ€, ์ž์‹ ํ—ค๋”๋งŒ ๋ฆฌ์‚ฌ์ด์ฆˆ ๊ฐ€๋Šฅ */}
+ {header.column.getCanResize() && !('columns' in header.column.columnDef) && (
<DataTableResizer header={header} />
)}
</div>
diff --git a/components/data-table/expandable-data-table.tsx b/components/data-table/expandable-data-table.tsx
index 15c59540..d36f0251 100644
--- a/components/data-table/expandable-data-table.tsx
+++ b/components/data-table/expandable-data-table.tsx
@@ -532,7 +532,9 @@ export function ExpandableDataTable<TData>({
)}
style={{
...getPinnedStyle(header.column, true),
- width: header.getSize()
+ // ๋ถ€๋ชจ ๊ทธ๋ฃน ํ—ค๋”๋Š” colSpan์œผ๋กœ ๋„ˆ๋น„๊ฐ€ ๊ฒฐ์ •๋˜๋ฏ€๋กœ width ์„ค์ •ํ•˜์ง€ ์•Š์Œ
+ // ์ž์‹ ํ—ค๋”๋งŒ ๊ฐœ๋ณ„ width ์„ค์ •
+ ...(!('columns' in header.column.columnDef) && { width: header.getSize() }),
}}
>
<div style={{ position: "relative" }}>
@@ -543,7 +545,8 @@ export function ExpandableDataTable<TData>({
header.getContext()
)}
- {header.column.getCanResize() && (
+ {/* ๋ถ€๋ชจ ๊ทธ๋ฃน ํ—ค๋”๋Š” ๋ฆฌ์‚ฌ์ด์ฆˆ ๋ถˆ๊ฐ€, ์ž์‹ ํ—ค๋”๋งŒ ๋ฆฌ์‚ฌ์ด์ฆˆ ๊ฐ€๋Šฅ */}
+ {header.column.getCanResize() && !('columns' in header.column.columnDef) && (
<DataTableResizer header={header} />
)}
</div>
diff --git a/components/data-table/infinite-data-table.tsx b/components/data-table/infinite-data-table.tsx
index b8764d62..d766f35c 100644
--- a/components/data-table/infinite-data-table.tsx
+++ b/components/data-table/infinite-data-table.tsx
@@ -167,7 +167,9 @@ export function InfiniteDataTable<TData>({
className={compactStyles.header}
style={{
...getPinnedStyle(header.column, true), // ๐ŸŽฏ ํ—ค๋”์ž„์„ ๋ช…์‹œ
- width: header.getSize(), // ๐ŸŽฏ width ๋ณ„๋„ ์„ค์ •
+ // ๋ถ€๋ชจ ๊ทธ๋ฃน ํ—ค๋”๋Š” colSpan์œผ๋กœ ๋„ˆ๋น„๊ฐ€ ๊ฒฐ์ •๋˜๋ฏ€๋กœ width ์„ค์ •ํ•˜์ง€ ์•Š์Œ
+ // ์ž์‹ ํ—ค๋”๋งŒ ๊ฐœ๋ณ„ width ์„ค์ •
+ ...(!('columns' in header.column.columnDef) && { width: header.getSize() }),
}}
>
<div style={{ position: "relative" }}>
@@ -178,7 +180,8 @@ export function InfiniteDataTable<TData>({
header.getContext()
)}
- {header.column.getCanResize() && (
+ {/* ๋ถ€๋ชจ ๊ทธ๋ฃน ํ—ค๋”๋Š” ๋ฆฌ์‚ฌ์ด์ฆˆ ๋ถˆ๊ฐ€, ์ž์‹ ํ—ค๋”๋งŒ ๋ฆฌ์‚ฌ์ด์ฆˆ ๊ฐ€๋Šฅ */}
+ {header.column.getCanResize() && !('columns' in header.column.columnDef) && (
<DataTableResizer header={header} />
)}
</div>