tanstack-table-vue 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# @tanstack-table-vue/core
|
|
2
|
+
|
|
3
|
+
Core package for TanStack Table Vue integration.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This package contains the core functionality for integrating TanStack Table with Vue.js. It provides:
|
|
8
|
+
|
|
9
|
+
- TSTable component for rendering tables
|
|
10
|
+
- Column processing utilities
|
|
11
|
+
- Type definitions and helpers
|
|
12
|
+
- Slot management system
|
|
13
|
+
|
|
14
|
+
## Components
|
|
15
|
+
|
|
16
|
+
### TSTable
|
|
17
|
+
|
|
18
|
+
The main component that renders the table structure. It accepts:
|
|
19
|
+
|
|
20
|
+
- `columns`: Column definitions
|
|
21
|
+
- `data`: Table data
|
|
22
|
+
- `tableOptions`: TanStack Table options
|
|
23
|
+
|
|
24
|
+
```vue
|
|
25
|
+
<TSTable :columns="columns" :data="data" :tableOptions="tableOptions">
|
|
26
|
+
<!-- Slots for customization -->
|
|
27
|
+
</TSTable>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Utilities
|
|
31
|
+
|
|
32
|
+
### Column Processing
|
|
33
|
+
|
|
34
|
+
The package includes utilities for processing columns and managing slots:
|
|
35
|
+
|
|
36
|
+
- `processColumns`: Converts column definitions to TanStack Table format
|
|
37
|
+
- `getHeader`, `getCell`, `getFooter`: Slot management functions
|
|
38
|
+
|
|
39
|
+
### Types
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
interface TSTableProps<TData extends RowData & object> {
|
|
43
|
+
columns: ColumnDef<TData>[]
|
|
44
|
+
data: TData[]
|
|
45
|
+
tableOptions?: Record<string, any>
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Usage with Slots
|
|
50
|
+
|
|
51
|
+
The package provides a flexible slot system:
|
|
52
|
+
|
|
53
|
+
```vue
|
|
54
|
+
<TSTable :columns="columns" :data="data">
|
|
55
|
+
<!-- Header slot -->
|
|
56
|
+
<template #header-columnId="{ column }">
|
|
57
|
+
Custom Header
|
|
58
|
+
</template>
|
|
59
|
+
|
|
60
|
+
<!-- Cell slot -->
|
|
61
|
+
<template #cell-columnId="{ value, row }">
|
|
62
|
+
Custom Cell
|
|
63
|
+
</template>
|
|
64
|
+
|
|
65
|
+
<!-- Footer slot -->
|
|
66
|
+
<template #footer-columnId="{ column }">
|
|
67
|
+
Custom Footer
|
|
68
|
+
</template>
|
|
69
|
+
</TSTable>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Internal Architecture
|
|
73
|
+
|
|
74
|
+
The package uses a slot-based system instead of render functions, making it more Vue-idiomatic. Key features:
|
|
75
|
+
|
|
76
|
+
- Automatic header generation from accessorKey
|
|
77
|
+
- Flexible slot naming based on column IDs
|
|
78
|
+
- Support for nested column groups
|
|
79
|
+
- Integration with TanStack Table's sorting, filtering, and other features
|
|
80
|
+
|
|
81
|
+
## Contributing
|
|
82
|
+
|
|
83
|
+
When contributing to this package, please:
|
|
84
|
+
|
|
85
|
+
1. Maintain type safety
|
|
86
|
+
2. Follow Vue.js best practices
|
|
87
|
+
3. Update tests for any new functionality
|
|
88
|
+
4. Document any public APIs
|
|
89
|
+
|
|
90
|
+
## License
|
|
91
|
+
|
|
92
|
+
MIT
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TSTable.cjs","sources":["../../src/components/TSTable.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ColumnDef, RowData, Table } from '@tanstack/vue-table'\n\nexport interface TSTableProps<TData extends RowData & object> {\n columns: ColumnDef<TData>[]\n data: TData[]\n tableOptions?: Record<string, any>\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"TData extends RowData & object\">\nimport { computed, useSlots } from 'vue'\nimport { useVueTable, createColumnHelper, type ColumnDef as TStackColumnDef, getCoreRowModel } from '@tanstack/vue-table'\nimport { processColumns } from '../shared'\n\nconst props = defineProps<TSTableProps<TData>>()\n\nconst slots = useSlots()\nconst columnHelper = createColumnHelper<TData>()\n\nconst processedColumns = computed(() => {\n const initialTable = useVueTable<TData>({\n columns: props.columns as
|
|
1
|
+
{"version":3,"file":"TSTable.cjs","sources":["../../src/components/TSTable.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ColumnDef, RowData, Table } from '@tanstack/vue-table'\nimport type { CellSlotProps, FooterSlotProps, HeaderSlotProps } from '../shared/types'\n\nexport interface TSTableProps<TData extends RowData & object> {\n columns: ColumnDef<TData, any>[]\n data: TData[]\n tableOptions?: Record<string, any>\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"TData extends RowData & object\">\nimport { computed, useSlots } from 'vue'\nimport { useVueTable, createColumnHelper, type ColumnDef as TStackColumnDef, getCoreRowModel } from '@tanstack/vue-table'\nimport { processColumns } from '../shared'\n\nconst props = defineProps<TSTableProps<TData>>()\n\nconst slots = useSlots()\nconst columnHelper = createColumnHelper<TData>()\n\nconst processedColumns = computed(() => {\n const initialTable = useVueTable<TData>({\n columns: props.columns as TStackColumnDef<TData, any>[],\n data: props.data,\n getCoreRowModel: getCoreRowModel(),\n ...props.tableOptions\n })\n return processColumns(columnHelper, props.columns, slots, initialTable)\n})\n\nconst tableOptions = {\n columns: processedColumns.value,\n data: props.data,\n getCoreRowModel: getCoreRowModel(),\n ...props.tableOptions\n}\n\nconst table = useVueTable<TData>(tableOptions)\n\ndefineSlots<{\n default: (props: {\n table: Table<TData>;\n }) => any;\n\n [key: `header-${string}`]: (props: HeaderSlotProps<TData>) => any;\n [key: `cell-${string}`]: (props: CellSlotProps<TData>) => any;\n [key: `footer-${string}`]: (props: FooterSlotProps<TData>) => any;\n}>()\n</script>\n\n<template>\n <slot :table=\"table\" />\n</template>"],"names":["useSlots","createColumnHelper","computed","useVueTable","getCoreRowModel","processColumns"],"mappings":";;;;;;;;;;;;;;;AAgBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,QAAQA,YAAS,EAAA;AACvB,IAAA,MAAM,eAAeC,2BAA0B,EAAA;AAE/C,IAAM,MAAA,gBAAA,GAAmBC,aAAS,MAAM;AACtC,MAAqBC,oBAAmB,CAAA;AAAA,QACtC,SAAS,KAAM,CAAA,OAAA;AAAA,QACf,MAAM,KAAM,CAAA,IAAA;AAAA,QACZ,iBAAiBC,wBAAgB,EAAA;AAAA,QACjC,GAAG,KAAM,CAAA;AAAA,OACV;AACD,MAAA,OAAOC,2BAAe,CAAA,YAAA,EAAc,KAAM,CAAA,OAAA,EAAS,KAAmB,CAAA;AAAA,KACvE,CAAA;AAED,IAAA,MAAM,YAAe,GAAA;AAAA,MACnB,SAAS,gBAAiB,CAAA,KAAA;AAAA,MAC1B,MAAM,KAAM,CAAA,IAAA;AAAA,MACZ,iBAAiBD,wBAAgB,EAAA;AAAA,MACjC,GAAG,KAAM,CAAA;AAAA,KACX;AAEA,IAAM,MAAA,KAAA,GAAQD,qBAAmB,YAAY,CAAA;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TSTable.js","sources":["../../src/components/TSTable.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ColumnDef, RowData, Table } from '@tanstack/vue-table'\n\nexport interface TSTableProps<TData extends RowData & object> {\n columns: ColumnDef<TData>[]\n data: TData[]\n tableOptions?: Record<string, any>\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"TData extends RowData & object\">\nimport { computed, useSlots } from 'vue'\nimport { useVueTable, createColumnHelper, type ColumnDef as TStackColumnDef, getCoreRowModel } from '@tanstack/vue-table'\nimport { processColumns } from '../shared'\n\nconst props = defineProps<TSTableProps<TData>>()\n\nconst slots = useSlots()\nconst columnHelper = createColumnHelper<TData>()\n\nconst processedColumns = computed(() => {\n const initialTable = useVueTable<TData>({\n columns: props.columns as
|
|
1
|
+
{"version":3,"file":"TSTable.js","sources":["../../src/components/TSTable.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ColumnDef, RowData, Table } from '@tanstack/vue-table'\nimport type { CellSlotProps, FooterSlotProps, HeaderSlotProps } from '../shared/types'\n\nexport interface TSTableProps<TData extends RowData & object> {\n columns: ColumnDef<TData, any>[]\n data: TData[]\n tableOptions?: Record<string, any>\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"TData extends RowData & object\">\nimport { computed, useSlots } from 'vue'\nimport { useVueTable, createColumnHelper, type ColumnDef as TStackColumnDef, getCoreRowModel } from '@tanstack/vue-table'\nimport { processColumns } from '../shared'\n\nconst props = defineProps<TSTableProps<TData>>()\n\nconst slots = useSlots()\nconst columnHelper = createColumnHelper<TData>()\n\nconst processedColumns = computed(() => {\n const initialTable = useVueTable<TData>({\n columns: props.columns as TStackColumnDef<TData, any>[],\n data: props.data,\n getCoreRowModel: getCoreRowModel(),\n ...props.tableOptions\n })\n return processColumns(columnHelper, props.columns, slots, initialTable)\n})\n\nconst tableOptions = {\n columns: processedColumns.value,\n data: props.data,\n getCoreRowModel: getCoreRowModel(),\n ...props.tableOptions\n}\n\nconst table = useVueTable<TData>(tableOptions)\n\ndefineSlots<{\n default: (props: {\n table: Table<TData>;\n }) => any;\n\n [key: `header-${string}`]: (props: HeaderSlotProps<TData>) => any;\n [key: `cell-${string}`]: (props: CellSlotProps<TData>) => any;\n [key: `footer-${string}`]: (props: FooterSlotProps<TData>) => any;\n}>()\n</script>\n\n<template>\n <slot :table=\"table\" />\n</template>"],"names":[],"mappings":";;;;;;;;;;;;;AAgBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,QAAQ,QAAS,EAAA;AACvB,IAAA,MAAM,eAAe,kBAA0B,EAAA;AAE/C,IAAM,MAAA,gBAAA,GAAmB,SAAS,MAAM;AACtC,MAAqB,WAAmB,CAAA;AAAA,QACtC,SAAS,KAAM,CAAA,OAAA;AAAA,QACf,MAAM,KAAM,CAAA,IAAA;AAAA,QACZ,iBAAiB,eAAgB,EAAA;AAAA,QACjC,GAAG,KAAM,CAAA;AAAA,OACV;AACD,MAAA,OAAO,cAAe,CAAA,YAAA,EAAc,KAAM,CAAA,OAAA,EAAS,KAAmB,CAAA;AAAA,KACvE,CAAA;AAED,IAAA,MAAM,YAAe,GAAA;AAAA,MACnB,SAAS,gBAAiB,CAAA,KAAA;AAAA,MAC1B,MAAM,KAAM,CAAA,IAAA;AAAA,MACZ,iBAAiB,eAAgB,EAAA;AAAA,MACjC,GAAG,KAAM,CAAA;AAAA,KACX;AAEA,IAAM,MAAA,KAAA,GAAQ,YAAmB,YAAY,CAAA;;;;;;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { AllowedComponentProps } from 'vue';
|
|
2
|
+
import { CellContext } from '@tanstack/vue-table';
|
|
3
|
+
import { Column } from '@tanstack/vue-table';
|
|
2
4
|
import { ColumnDef } from '@tanstack/vue-table';
|
|
3
5
|
import { ColumnHelper } from '@tanstack/vue-table';
|
|
4
6
|
import { ComponentCustomProps } from 'vue';
|
|
7
|
+
import { HeaderContext } from '@tanstack/vue-table';
|
|
5
8
|
import { PublicProps } from 'vue';
|
|
9
|
+
import { Row } from '@tanstack/vue-table';
|
|
6
10
|
import { RowData } from '@tanstack/vue-table';
|
|
7
11
|
import { ShallowUnwrapRef } from 'vue';
|
|
8
12
|
import { Slots } from 'vue';
|
|
@@ -14,23 +18,39 @@ declare type __VLS_PrettifyLocal<T> = {
|
|
|
14
18
|
[K in keyof T]: T[K];
|
|
15
19
|
} & {};
|
|
16
20
|
|
|
17
|
-
export declare
|
|
21
|
+
export declare interface CellSlotProps<TData extends RowData> {
|
|
22
|
+
row: Row<TData>;
|
|
23
|
+
context: CellContext<TData, any>;
|
|
24
|
+
value: any;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export declare interface FooterSlotProps<TData extends RowData> {
|
|
28
|
+
column: Column<TData, any>;
|
|
29
|
+
context: HeaderContext<TData, any>;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export declare interface HeaderSlotProps<TData extends RowData> {
|
|
33
|
+
column: Column<TData, any>;
|
|
34
|
+
context: HeaderContext<TData, any>;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export declare const processColumns: <TData extends RowData & object>(columnHelper: ColumnHelper<TData>, columns: ColumnDef<TData, any>[], slots: Readonly<Slots>, table: Table<TData>) => ColumnDef<TData, any>[];
|
|
18
38
|
|
|
19
39
|
export declare const TSTable: <TData extends RowData & object>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
20
40
|
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{} & VNodeProps & AllowedComponentProps & ComponentCustomProps, never>, never> & TSTableProps<TData> & Partial<{}>> & PublicProps;
|
|
21
41
|
expose(exposed: ShallowUnwrapRef< {}>): void;
|
|
22
42
|
attrs: any;
|
|
23
43
|
slots: Readonly<{
|
|
24
|
-
[key: `header-${string}`]: (props:
|
|
25
|
-
[key: `cell-${string}`]: (props:
|
|
26
|
-
[key: `footer-${string}`]: (props:
|
|
44
|
+
[key: `header-${string}`]: (props: HeaderSlotProps<TData>) => any;
|
|
45
|
+
[key: `cell-${string}`]: (props: CellSlotProps<TData>) => any;
|
|
46
|
+
[key: `footer-${string}`]: (props: FooterSlotProps<TData>) => any;
|
|
27
47
|
default: (props: {
|
|
28
48
|
table: Table<TData>;
|
|
29
49
|
}) => any;
|
|
30
50
|
}> & {
|
|
31
|
-
[key: `header-${string}`]: (props:
|
|
32
|
-
[key: `cell-${string}`]: (props:
|
|
33
|
-
[key: `footer-${string}`]: (props:
|
|
51
|
+
[key: `header-${string}`]: (props: HeaderSlotProps<TData>) => any;
|
|
52
|
+
[key: `cell-${string}`]: (props: CellSlotProps<TData>) => any;
|
|
53
|
+
[key: `footer-${string}`]: (props: FooterSlotProps<TData>) => any;
|
|
34
54
|
default: (props: {
|
|
35
55
|
table: Table<TData>;
|
|
36
56
|
}) => any;
|
|
@@ -41,7 +61,7 @@ export declare const TSTable: <TData extends RowData & object>(__VLS_props: NonN
|
|
|
41
61
|
};
|
|
42
62
|
|
|
43
63
|
export declare interface TSTableProps<TData extends RowData & object> {
|
|
44
|
-
columns: ColumnDef<TData>[];
|
|
64
|
+
columns: ColumnDef<TData, any>[];
|
|
45
65
|
data: TData[];
|
|
46
66
|
tableOptions?: Record<string, any>;
|
|
47
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.cjs","sources":["../../src/shared/utils.ts"],"sourcesContent":["import type {\n ColumnHelper,\n HeaderContext,\n CellContext,\n RowData,\n ColumnDef as TStackColumnDef,\n Table,\n ColumnDef,\n} from '@tanstack/vue-table'\nimport type { Slots } from 'vue'\nimport capitalize from 'lodash.capitalize'\n\nconst getHeader = <TData extends RowData & object>(\n col: ColumnDef<TData>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData,
|
|
1
|
+
{"version":3,"file":"utils.cjs","sources":["../../src/shared/utils.ts"],"sourcesContent":["import type {\n ColumnHelper,\n HeaderContext,\n CellContext,\n RowData,\n ColumnDef as TStackColumnDef,\n Table,\n ColumnDef,\n} from '@tanstack/vue-table'\nimport type { Slots } from 'vue'\nimport capitalize from 'lodash.capitalize'\n\nconst getHeader = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `header-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n })\n }\n\n // Then use header prop if provided\n if (col.header) {\n return col.header\n }\n\n // Finally fallback to capitalized id\n return capitalize(columnId.split('-').join(' '))\n}\n\nconst getFooter = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `footer-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n })\n }\n\n // Then use footer prop if provided\n if (col.footer) {\n return col.footer\n }\n\n return undefined\n}\n\nconst getCell = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: CellContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `cell-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n cell: context.cell,\n row: context.row,\n value: context.getValue(),\n })\n }\n\n // Then handle cell value\n const value = context.getValue()\n if (col.cell) {\n return typeof col.cell === 'function' ? col.cell(context) : col.cell\n }\n return value !== undefined && value !== null ? value : '-'\n}\n\nexport const processColumns = <TData extends RowData & object>(\n columnHelper: ColumnHelper<TData>,\n columns: ColumnDef<TData, any>[],\n slots: Readonly<Slots>,\n table: Table<TData>,\n): TStackColumnDef<TData, any>[] => {\n return columns.map((col): TStackColumnDef<TData, any> => {\n // Handle group columns by checking if columns property exists\n if ('columns' in col && Array.isArray(col.columns)) {\n return columnHelper.group({\n id: col.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n columns: processColumns(columnHelper, col.columns as ColumnDef<TData, any>[], slots, table),\n meta: col.meta,\n })\n }\n\n // Handle accessor columns\n const accessorCol = col as any\n if (accessorCol.accessorKey) {\n return columnHelper.accessor(accessorCol.accessorKey, {\n id: accessorCol.id || accessorCol.accessorKey,\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n }\n\n if (accessorCol.accessorFn) {\n return columnHelper.accessor(accessorCol.accessorFn, {\n id: accessorCol.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n }\n\n // Default case - treat as display column\n return columnHelper.display({\n id: col.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n })\n}\n"],"names":[],"mappings":"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"}
|
package/dist/shared/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../src/shared/utils.ts"],"sourcesContent":["import type {\n ColumnHelper,\n HeaderContext,\n CellContext,\n RowData,\n ColumnDef as TStackColumnDef,\n Table,\n ColumnDef,\n} from '@tanstack/vue-table'\nimport type { Slots } from 'vue'\nimport capitalize from 'lodash.capitalize'\n\nconst getHeader = <TData extends RowData & object>(\n col: ColumnDef<TData>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData,
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/shared/utils.ts"],"sourcesContent":["import type {\n ColumnHelper,\n HeaderContext,\n CellContext,\n RowData,\n ColumnDef as TStackColumnDef,\n Table,\n ColumnDef,\n} from '@tanstack/vue-table'\nimport type { Slots } from 'vue'\nimport capitalize from 'lodash.capitalize'\n\nconst getHeader = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `header-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n })\n }\n\n // Then use header prop if provided\n if (col.header) {\n return col.header\n }\n\n // Finally fallback to capitalized id\n return capitalize(columnId.split('-').join(' '))\n}\n\nconst getFooter = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `footer-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n })\n }\n\n // Then use footer prop if provided\n if (col.footer) {\n return col.footer\n }\n\n return undefined\n}\n\nconst getCell = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: CellContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `cell-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n cell: context.cell,\n row: context.row,\n value: context.getValue(),\n })\n }\n\n // Then handle cell value\n const value = context.getValue()\n if (col.cell) {\n return typeof col.cell === 'function' ? col.cell(context) : col.cell\n }\n return value !== undefined && value !== null ? value : '-'\n}\n\nexport const processColumns = <TData extends RowData & object>(\n columnHelper: ColumnHelper<TData>,\n columns: ColumnDef<TData, any>[],\n slots: Readonly<Slots>,\n table: Table<TData>,\n): TStackColumnDef<TData, any>[] => {\n return columns.map((col): TStackColumnDef<TData, any> => {\n // Handle group columns by checking if columns property exists\n if ('columns' in col && Array.isArray(col.columns)) {\n return columnHelper.group({\n id: col.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n columns: processColumns(columnHelper, col.columns as ColumnDef<TData, any>[], slots, table),\n meta: col.meta,\n })\n }\n\n // Handle accessor columns\n const accessorCol = col as any\n if (accessorCol.accessorKey) {\n return columnHelper.accessor(accessorCol.accessorKey, {\n id: accessorCol.id || accessorCol.accessorKey,\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n }\n\n if (accessorCol.accessorFn) {\n return columnHelper.accessor(accessorCol.accessorFn, {\n id: accessorCol.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n }\n\n // Default case - treat as display column\n return columnHelper.display({\n id: col.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n })\n}\n"],"names":[],"mappings":"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"}
|