tanstack-table-vue 0.0.4 → 0.0.6
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/dist/components/TSTable.cjs +18 -76
- package/dist/components/TSTable.cjs.map +1 -1
- package/dist/components/TSTable.js +20 -78
- package/dist/components/TSTable.js.map +1 -1
- package/dist/index.cjs +0 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +18 -80
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/shared/utils.cjs +47 -29
- package/dist/shared/utils.cjs.map +1 -1
- package/dist/shared/utils.js +47 -29
- package/dist/shared/utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/shared/defineColumns.cjs +0 -24
- package/dist/shared/defineColumns.cjs.map +0 -1
- package/dist/shared/defineColumns.js +0 -22
- package/dist/shared/defineColumns.js.map +0 -1
|
@@ -1,97 +1,39 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
require('lodash.capitalize');
|
|
3
4
|
const vue = require('vue');
|
|
4
5
|
const vueTable = require('@tanstack/vue-table');
|
|
5
6
|
const shared_utils = require('../shared/utils.cjs');
|
|
6
7
|
|
|
7
|
-
const _hoisted_1 = { class: "p-2" };
|
|
8
|
-
const _hoisted_2 = ["colSpan"];
|
|
9
|
-
const _hoisted_3 = ["colSpan"];
|
|
10
8
|
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
11
9
|
__name: "TSTable",
|
|
12
10
|
props: {
|
|
11
|
+
columns: {},
|
|
13
12
|
data: {},
|
|
14
|
-
|
|
13
|
+
tableOptions: {}
|
|
15
14
|
},
|
|
16
15
|
setup(__props) {
|
|
17
16
|
const props = __props;
|
|
18
17
|
const slots = vue.useSlots();
|
|
19
18
|
const columnHelper = vueTable.createColumnHelper();
|
|
20
|
-
const
|
|
19
|
+
const processedColumns = vue.computed(() => {
|
|
20
|
+
vueTable.useVueTable({
|
|
21
|
+
columns: props.columns,
|
|
22
|
+
data: props.data,
|
|
23
|
+
getCoreRowModel: vueTable.getCoreRowModel(),
|
|
24
|
+
...props.tableOptions
|
|
25
|
+
});
|
|
21
26
|
return shared_utils.processColumns(columnHelper, props.columns, slots);
|
|
22
27
|
});
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
getCoreRowModel: vueTable.getCoreRowModel()
|
|
31
|
-
});
|
|
28
|
+
const tableOptions = {
|
|
29
|
+
columns: processedColumns.value,
|
|
30
|
+
data: props.data,
|
|
31
|
+
getCoreRowModel: vueTable.getCoreRowModel(),
|
|
32
|
+
...props.tableOptions
|
|
33
|
+
};
|
|
34
|
+
const table = vueTable.useVueTable(tableOptions);
|
|
32
35
|
return (_ctx, _cache) => {
|
|
33
|
-
return vue.
|
|
34
|
-
vue.createElementVNode("table", null, [
|
|
35
|
-
vue.createElementVNode("thead", null, [
|
|
36
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(table).getHeaderGroups(), (headerGroup) => {
|
|
37
|
-
return vue.openBlock(), vue.createElementBlock("tr", {
|
|
38
|
-
key: headerGroup.id
|
|
39
|
-
}, [
|
|
40
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(headerGroup.headers, (header) => {
|
|
41
|
-
return vue.openBlock(), vue.createElementBlock("th", {
|
|
42
|
-
key: header.id,
|
|
43
|
-
colSpan: header.colSpan
|
|
44
|
-
}, [
|
|
45
|
-
!header.isPlaceholder ? (vue.openBlock(), vue.createBlock(vue.unref(vueTable.FlexRender), {
|
|
46
|
-
key: 0,
|
|
47
|
-
render: header.column.columnDef.header,
|
|
48
|
-
props: header.getContext()
|
|
49
|
-
}, null, 8, ["render", "props"])) : vue.createCommentVNode("", true)
|
|
50
|
-
], 8, _hoisted_2);
|
|
51
|
-
}), 128))
|
|
52
|
-
]);
|
|
53
|
-
}), 128))
|
|
54
|
-
]),
|
|
55
|
-
vue.createElementVNode("tbody", null, [
|
|
56
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(table).getRowModel().rows, (row) => {
|
|
57
|
-
return vue.openBlock(), vue.createElementBlock("tr", {
|
|
58
|
-
key: row.id
|
|
59
|
-
}, [
|
|
60
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(row.getVisibleCells(), (cell) => {
|
|
61
|
-
return vue.openBlock(), vue.createElementBlock("td", {
|
|
62
|
-
key: cell.id
|
|
63
|
-
}, [
|
|
64
|
-
vue.createVNode(vue.unref(vueTable.FlexRender), {
|
|
65
|
-
render: cell.column.columnDef.cell,
|
|
66
|
-
props: cell.getContext()
|
|
67
|
-
}, null, 8, ["render", "props"])
|
|
68
|
-
]);
|
|
69
|
-
}), 128))
|
|
70
|
-
]);
|
|
71
|
-
}), 128))
|
|
72
|
-
]),
|
|
73
|
-
vue.createElementVNode("tfoot", null, [
|
|
74
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(table).getFooterGroups(), (footerGroup) => {
|
|
75
|
-
return vue.openBlock(), vue.createElementBlock("tr", {
|
|
76
|
-
key: footerGroup.id
|
|
77
|
-
}, [
|
|
78
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(footerGroup.headers, (header) => {
|
|
79
|
-
return vue.openBlock(), vue.createElementBlock("th", {
|
|
80
|
-
key: header.id,
|
|
81
|
-
colSpan: header.colSpan
|
|
82
|
-
}, [
|
|
83
|
-
!header.isPlaceholder ? (vue.openBlock(), vue.createBlock(vue.unref(vueTable.FlexRender), {
|
|
84
|
-
key: 0,
|
|
85
|
-
render: header.column.columnDef.footer,
|
|
86
|
-
props: header.getContext()
|
|
87
|
-
}, null, 8, ["render", "props"])) : vue.createCommentVNode("", true)
|
|
88
|
-
], 8, _hoisted_3);
|
|
89
|
-
}), 128))
|
|
90
|
-
]);
|
|
91
|
-
}), 128))
|
|
92
|
-
])
|
|
93
|
-
])
|
|
94
|
-
]);
|
|
36
|
+
return vue.renderSlot(_ctx.$slots, "default", { table: vue.unref(table) });
|
|
95
37
|
};
|
|
96
38
|
}
|
|
97
39
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TSTable.cjs","sources":["../../src/components/TSTable.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface TSTableProps<TData extends object> {\n
|
|
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 unknown as TStackColumnDef<TData>[],\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: any) => any;\n [key: `cell-${string}`]: (props: any) => any;\n [key: `footer-${string}`]: (props: any) => any;\n}>()\n</script>\n\n<template>\n <slot :table=\"table\" />\n</template>"],"names":["useSlots","createColumnHelper","computed","useVueTable","getCoreRowModel","processColumns"],"mappings":";;;;;;;;;;;;;;;AAeA,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,95 +1,37 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import 'lodash.capitalize';
|
|
2
|
+
import { defineComponent, useSlots, computed, renderSlot, unref } from 'vue';
|
|
3
|
+
import { createColumnHelper, useVueTable, getCoreRowModel } from '@tanstack/vue-table';
|
|
3
4
|
import { p as processColumns } from '../shared/utils.js';
|
|
4
5
|
|
|
5
|
-
const _hoisted_1 = { class: "p-2" };
|
|
6
|
-
const _hoisted_2 = ["colSpan"];
|
|
7
|
-
const _hoisted_3 = ["colSpan"];
|
|
8
6
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
9
7
|
__name: "TSTable",
|
|
10
8
|
props: {
|
|
9
|
+
columns: {},
|
|
11
10
|
data: {},
|
|
12
|
-
|
|
11
|
+
tableOptions: {}
|
|
13
12
|
},
|
|
14
13
|
setup(__props) {
|
|
15
14
|
const props = __props;
|
|
16
15
|
const slots = useSlots();
|
|
17
16
|
const columnHelper = createColumnHelper();
|
|
18
|
-
const
|
|
17
|
+
const processedColumns = computed(() => {
|
|
18
|
+
useVueTable({
|
|
19
|
+
columns: props.columns,
|
|
20
|
+
data: props.data,
|
|
21
|
+
getCoreRowModel: getCoreRowModel(),
|
|
22
|
+
...props.tableOptions
|
|
23
|
+
});
|
|
19
24
|
return processColumns(columnHelper, props.columns, slots);
|
|
20
25
|
});
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
getCoreRowModel: getCoreRowModel()
|
|
29
|
-
});
|
|
26
|
+
const tableOptions = {
|
|
27
|
+
columns: processedColumns.value,
|
|
28
|
+
data: props.data,
|
|
29
|
+
getCoreRowModel: getCoreRowModel(),
|
|
30
|
+
...props.tableOptions
|
|
31
|
+
};
|
|
32
|
+
const table = useVueTable(tableOptions);
|
|
30
33
|
return (_ctx, _cache) => {
|
|
31
|
-
return
|
|
32
|
-
createElementVNode("table", null, [
|
|
33
|
-
createElementVNode("thead", null, [
|
|
34
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(table).getHeaderGroups(), (headerGroup) => {
|
|
35
|
-
return openBlock(), createElementBlock("tr", {
|
|
36
|
-
key: headerGroup.id
|
|
37
|
-
}, [
|
|
38
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(headerGroup.headers, (header) => {
|
|
39
|
-
return openBlock(), createElementBlock("th", {
|
|
40
|
-
key: header.id,
|
|
41
|
-
colSpan: header.colSpan
|
|
42
|
-
}, [
|
|
43
|
-
!header.isPlaceholder ? (openBlock(), createBlock(unref(FlexRender), {
|
|
44
|
-
key: 0,
|
|
45
|
-
render: header.column.columnDef.header,
|
|
46
|
-
props: header.getContext()
|
|
47
|
-
}, null, 8, ["render", "props"])) : createCommentVNode("", true)
|
|
48
|
-
], 8, _hoisted_2);
|
|
49
|
-
}), 128))
|
|
50
|
-
]);
|
|
51
|
-
}), 128))
|
|
52
|
-
]),
|
|
53
|
-
createElementVNode("tbody", null, [
|
|
54
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(table).getRowModel().rows, (row) => {
|
|
55
|
-
return openBlock(), createElementBlock("tr", {
|
|
56
|
-
key: row.id
|
|
57
|
-
}, [
|
|
58
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(row.getVisibleCells(), (cell) => {
|
|
59
|
-
return openBlock(), createElementBlock("td", {
|
|
60
|
-
key: cell.id
|
|
61
|
-
}, [
|
|
62
|
-
createVNode(unref(FlexRender), {
|
|
63
|
-
render: cell.column.columnDef.cell,
|
|
64
|
-
props: cell.getContext()
|
|
65
|
-
}, null, 8, ["render", "props"])
|
|
66
|
-
]);
|
|
67
|
-
}), 128))
|
|
68
|
-
]);
|
|
69
|
-
}), 128))
|
|
70
|
-
]),
|
|
71
|
-
createElementVNode("tfoot", null, [
|
|
72
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(table).getFooterGroups(), (footerGroup) => {
|
|
73
|
-
return openBlock(), createElementBlock("tr", {
|
|
74
|
-
key: footerGroup.id
|
|
75
|
-
}, [
|
|
76
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(footerGroup.headers, (header) => {
|
|
77
|
-
return openBlock(), createElementBlock("th", {
|
|
78
|
-
key: header.id,
|
|
79
|
-
colSpan: header.colSpan
|
|
80
|
-
}, [
|
|
81
|
-
!header.isPlaceholder ? (openBlock(), createBlock(unref(FlexRender), {
|
|
82
|
-
key: 0,
|
|
83
|
-
render: header.column.columnDef.footer,
|
|
84
|
-
props: header.getContext()
|
|
85
|
-
}, null, 8, ["render", "props"])) : createCommentVNode("", true)
|
|
86
|
-
], 8, _hoisted_3);
|
|
87
|
-
}), 128))
|
|
88
|
-
]);
|
|
89
|
-
}), 128))
|
|
90
|
-
])
|
|
91
|
-
])
|
|
92
|
-
]);
|
|
34
|
+
return renderSlot(_ctx.$slots, "default", { table: unref(table) });
|
|
93
35
|
};
|
|
94
36
|
}
|
|
95
37
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TSTable.js","sources":["../../src/components/TSTable.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface TSTableProps<TData extends object> {\n
|
|
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 unknown as TStackColumnDef<TData>[],\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: any) => any;\n [key: `cell-${string}`]: (props: any) => any;\n [key: `footer-${string}`]: (props: any) => any;\n}>()\n</script>\n\n<template>\n <slot :table=\"table\" />\n</template>"],"names":[],"mappings":";;;;;;;;;;;;;AAeA,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.cjs
CHANGED
|
@@ -3,12 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
5
|
const components_TSTable = require('./components/TSTable.cjs');
|
|
6
|
-
const shared_defineColumns = require('./shared/defineColumns.cjs');
|
|
7
6
|
const shared_utils = require('./shared/utils.cjs');
|
|
8
7
|
|
|
9
8
|
|
|
10
9
|
|
|
11
10
|
exports.TSTable = components_TSTable._sfc_main;
|
|
12
|
-
exports.defineColumns = shared_defineColumns.defineColumns;
|
|
13
11
|
exports.processColumns = shared_utils.processColumns;
|
|
14
12
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import { AllowedComponentProps } from 'vue';
|
|
2
|
-
import {
|
|
3
|
-
import { Column } from '@tanstack/vue-table';
|
|
4
|
-
import { ColumnDef as ColumnDef_2 } from '@tanstack/vue-table';
|
|
2
|
+
import { ColumnDef } from '@tanstack/vue-table';
|
|
5
3
|
import { ColumnHelper } from '@tanstack/vue-table';
|
|
6
4
|
import { ComponentCustomProps } from 'vue';
|
|
7
|
-
import { HeaderContext } from '@tanstack/vue-table';
|
|
8
5
|
import { PublicProps } from 'vue';
|
|
9
|
-
import { Row } from '@tanstack/vue-table';
|
|
10
6
|
import { RowData } from '@tanstack/vue-table';
|
|
11
7
|
import { ShallowUnwrapRef } from 'vue';
|
|
12
8
|
import { Slots } from 'vue';
|
|
@@ -18,94 +14,36 @@ declare type __VLS_PrettifyLocal<T> = {
|
|
|
18
14
|
[K in keyof T]: T[K];
|
|
19
15
|
} & {};
|
|
20
16
|
|
|
21
|
-
export declare
|
|
22
|
-
id: string;
|
|
23
|
-
type?: "accessor";
|
|
24
|
-
header?: string;
|
|
25
|
-
footer?: string | ((props: any) => any);
|
|
26
|
-
cell?: (info: any) => any;
|
|
27
|
-
meta?: Record<string, any>;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export declare interface CellSlotProps<TData extends RowData> {
|
|
31
|
-
row: Row<TData>;
|
|
32
|
-
context: CellContext<TData, unknown>;
|
|
33
|
-
value: any;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
declare type ColumnConfig<TData extends object> = {
|
|
37
|
-
id: keyof TData & string;
|
|
38
|
-
header?: string;
|
|
39
|
-
footer?: string;
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
export declare type ColumnDef<TData extends object> = DisplayColumnDef | AccessorColumnDef | GroupColumnDef<TData>;
|
|
43
|
-
|
|
44
|
-
export declare function defineColumns<TData extends object>(columns: (ColumnConfig<TData> | GroupConfig<TData>)[]): ColumnDef<TData>[];
|
|
45
|
-
|
|
46
|
-
export declare interface DisplayColumnDef {
|
|
47
|
-
id: string;
|
|
48
|
-
type: "display";
|
|
49
|
-
header?: string;
|
|
50
|
-
footer?: string | ((props: any) => any);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export declare interface FooterSlotProps<TData extends RowData> {
|
|
54
|
-
column: Column<TData>;
|
|
55
|
-
context: HeaderContext<TData, unknown>;
|
|
56
|
-
}
|
|
17
|
+
export declare const processColumns: <TData extends RowData & object>(columnHelper: ColumnHelper<TData>, columns: ColumnDef<TData>[], slots: Readonly<Slots>, table: Table<TData>) => ColumnDef<TData>[];
|
|
57
18
|
|
|
58
|
-
export declare
|
|
59
|
-
id: string;
|
|
60
|
-
type: "group";
|
|
61
|
-
header?: string;
|
|
62
|
-
footer?: string | ((props: any) => any);
|
|
63
|
-
columns: Array<ColumnDef_2<TData>>;
|
|
64
|
-
meta?: Record<string, any>;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
declare type GroupConfig<TData extends object> = {
|
|
68
|
-
id: string;
|
|
69
|
-
header?: string;
|
|
70
|
-
footer?: string;
|
|
71
|
-
columns: ColumnConfig<TData>[];
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
export declare interface HeaderSlotProps<TData extends RowData> {
|
|
75
|
-
column: Column<TData>;
|
|
76
|
-
context: HeaderContext<TData, unknown>;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export declare const processColumns: <TData extends RowData & object>(columnHelper: ColumnHelper<TData>, columns: ColumnDef<TData>[], slots: Readonly<Slots>) => ColumnDef_2<TData>[];
|
|
80
|
-
|
|
81
|
-
export declare interface TableContext<TData extends RowData> {
|
|
82
|
-
table: Table<TData>;
|
|
83
|
-
column: Column<TData>;
|
|
84
|
-
row?: Row<TData>;
|
|
85
|
-
getValue: () => any;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
export declare const TSTable: <TData extends 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<{
|
|
19
|
+
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<{
|
|
89
20
|
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{} & VNodeProps & AllowedComponentProps & ComponentCustomProps, never>, never> & TSTableProps<TData> & Partial<{}>> & PublicProps;
|
|
90
21
|
expose(exposed: ShallowUnwrapRef< {}>): void;
|
|
91
22
|
attrs: any;
|
|
92
23
|
slots: Readonly<{
|
|
93
|
-
[key: `
|
|
94
|
-
[key: `
|
|
95
|
-
[key: `footer-${string}`]: (props:
|
|
24
|
+
[key: `header-${string}`]: (props: any) => any;
|
|
25
|
+
[key: `cell-${string}`]: (props: any) => any;
|
|
26
|
+
[key: `footer-${string}`]: (props: any) => any;
|
|
27
|
+
default: (props: {
|
|
28
|
+
table: Table<TData>;
|
|
29
|
+
}) => any;
|
|
96
30
|
}> & {
|
|
97
|
-
[key: `
|
|
98
|
-
[key: `
|
|
99
|
-
[key: `footer-${string}`]: (props:
|
|
31
|
+
[key: `header-${string}`]: (props: any) => any;
|
|
32
|
+
[key: `cell-${string}`]: (props: any) => any;
|
|
33
|
+
[key: `footer-${string}`]: (props: any) => any;
|
|
34
|
+
default: (props: {
|
|
35
|
+
table: Table<TData>;
|
|
36
|
+
}) => any;
|
|
100
37
|
};
|
|
101
38
|
emit: {};
|
|
102
39
|
}>) => VNode & {
|
|
103
40
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
104
41
|
};
|
|
105
42
|
|
|
106
|
-
export declare interface TSTableProps<TData extends object> {
|
|
107
|
-
data: TData[];
|
|
43
|
+
export declare interface TSTableProps<TData extends RowData & object> {
|
|
108
44
|
columns: ColumnDef<TData>[];
|
|
45
|
+
data: TData[];
|
|
46
|
+
tableOptions?: Record<string, any>;
|
|
109
47
|
}
|
|
110
48
|
|
|
111
49
|
export { }
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
package/dist/shared/utils.cjs
CHANGED
|
@@ -3,67 +3,85 @@
|
|
|
3
3
|
const capitalize = require('lodash.capitalize');
|
|
4
4
|
|
|
5
5
|
const getHeader = (col, slots, context) => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
const slotName = `header-${col.id}`;
|
|
6
|
+
const columnId = col.accessorKey || col.id || "";
|
|
7
|
+
const slotName = `header-${columnId}`;
|
|
10
8
|
if (slots[slotName]) {
|
|
11
9
|
return slots[slotName]({
|
|
12
10
|
column: context.column,
|
|
13
11
|
context
|
|
14
12
|
});
|
|
15
13
|
}
|
|
16
|
-
|
|
14
|
+
if (col.header) {
|
|
15
|
+
return col.header;
|
|
16
|
+
}
|
|
17
|
+
return capitalize(columnId.split("-").join(" "));
|
|
17
18
|
};
|
|
18
19
|
const getFooter = (col, slots, context) => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
const slotName = `footer-${col.id}`;
|
|
20
|
+
const columnId = col.accessorKey || col.id || "";
|
|
21
|
+
const slotName = `footer-${columnId}`;
|
|
23
22
|
if (slots[slotName]) {
|
|
24
23
|
return slots[slotName]({
|
|
25
24
|
column: context.column,
|
|
26
25
|
context
|
|
27
26
|
});
|
|
28
27
|
}
|
|
28
|
+
if (col.footer) {
|
|
29
|
+
return col.footer;
|
|
30
|
+
}
|
|
29
31
|
return void 0;
|
|
30
32
|
};
|
|
31
33
|
const getCell = (col, slots, context) => {
|
|
32
|
-
const
|
|
34
|
+
const columnId = col.accessorKey || col.id || "";
|
|
35
|
+
const slotName = `cell-${columnId}`;
|
|
33
36
|
if (slots[slotName]) {
|
|
34
37
|
return slots[slotName]({
|
|
38
|
+
cell: context.cell,
|
|
35
39
|
row: context.row,
|
|
36
|
-
context,
|
|
37
40
|
value: context.getValue()
|
|
38
41
|
});
|
|
39
42
|
}
|
|
40
|
-
|
|
43
|
+
const value = context.getValue();
|
|
44
|
+
if (col.cell) {
|
|
45
|
+
return typeof col.cell === "function" ? col.cell(context) : col.cell;
|
|
46
|
+
}
|
|
47
|
+
return value !== void 0 && value !== null ? value : "-";
|
|
41
48
|
};
|
|
42
|
-
const processColumns = (columnHelper, columns, slots) => {
|
|
49
|
+
const processColumns = (columnHelper, columns, slots, table) => {
|
|
43
50
|
return columns.map((col) => {
|
|
44
|
-
if (col
|
|
45
|
-
const groupCol = col;
|
|
51
|
+
if ("columns" in col && Array.isArray(col.columns)) {
|
|
46
52
|
return columnHelper.group({
|
|
47
|
-
id:
|
|
48
|
-
header: (context) => getHeader(
|
|
49
|
-
footer: (context) => getFooter(
|
|
50
|
-
columns: processColumns(columnHelper,
|
|
53
|
+
id: col.id || String(Math.random()),
|
|
54
|
+
header: (context) => getHeader(col, slots, context),
|
|
55
|
+
footer: col.footer ? (context) => getFooter(col, slots, context) : void 0,
|
|
56
|
+
columns: processColumns(columnHelper, col.columns, slots),
|
|
57
|
+
meta: col.meta
|
|
51
58
|
});
|
|
52
59
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
60
|
+
const accessorCol = col;
|
|
61
|
+
if (accessorCol.accessorKey) {
|
|
62
|
+
return columnHelper.accessor(accessorCol.accessorKey, {
|
|
63
|
+
id: accessorCol.id || accessorCol.accessorKey,
|
|
56
64
|
header: (context) => getHeader(col, slots, context),
|
|
57
|
-
footer: (context) => getFooter(col, slots, context),
|
|
58
|
-
cell: (context) => getCell(col, slots, context)
|
|
65
|
+
footer: col.footer ? (context) => getFooter(col, slots, context) : void 0,
|
|
66
|
+
cell: (context) => getCell(col, slots, context),
|
|
67
|
+
meta: col.meta
|
|
59
68
|
});
|
|
60
69
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
70
|
+
if (accessorCol.accessorFn) {
|
|
71
|
+
return columnHelper.accessor(accessorCol.accessorFn, {
|
|
72
|
+
id: accessorCol.id || String(Math.random()),
|
|
73
|
+
header: (context) => getHeader(col, slots, context),
|
|
74
|
+
footer: col.footer ? (context) => getFooter(col, slots, context) : void 0,
|
|
75
|
+
cell: (context) => getCell(col, slots, context),
|
|
76
|
+
meta: col.meta
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return columnHelper.display({
|
|
80
|
+
id: col.id || String(Math.random()),
|
|
64
81
|
header: (context) => getHeader(col, slots, context),
|
|
65
|
-
footer: (context) => getFooter(col, slots, context),
|
|
66
|
-
cell: (context) => getCell(col, slots, context)
|
|
82
|
+
footer: col.footer ? (context) => getFooter(col, slots, context) : void 0,
|
|
83
|
+
cell: (context) => getCell(col, slots, context),
|
|
84
|
+
meta: col.meta
|
|
67
85
|
});
|
|
68
86
|
});
|
|
69
87
|
};
|
|
@@ -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} from '@tanstack/vue-table'\nimport type { Slots } from 'vue'\nimport capitalize from 'lodash.capitalize'\
|
|
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, unknown>,\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>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, unknown>,\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>,\n slots: Readonly<Slots>,\n context: CellContext<TData, unknown>,\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>[],\n slots: Readonly<Slots>,\n table: Table<TData>,\n): TStackColumnDef<TData>[] => {\n return columns.map((col): TStackColumnDef<TData> => {\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, unknown>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, unknown>) => getFooter(col, slots, context) : undefined,\n columns: processColumns(columnHelper, col.columns, 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, unknown>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, unknown>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, unknown>) => 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, unknown>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, unknown>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, unknown>) => 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, unknown>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, unknown>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, unknown>) => getCell(col, slots, context),\n meta: col.meta,\n })\n })\n}\n"],"names":[],"mappings":"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"}
|
package/dist/shared/utils.js
CHANGED
|
@@ -1,67 +1,85 @@
|
|
|
1
1
|
import capitalize from 'lodash.capitalize';
|
|
2
2
|
|
|
3
3
|
const getHeader = (col, slots, context) => {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
const slotName = `header-${col.id}`;
|
|
4
|
+
const columnId = col.accessorKey || col.id || "";
|
|
5
|
+
const slotName = `header-${columnId}`;
|
|
8
6
|
if (slots[slotName]) {
|
|
9
7
|
return slots[slotName]({
|
|
10
8
|
column: context.column,
|
|
11
9
|
context
|
|
12
10
|
});
|
|
13
11
|
}
|
|
14
|
-
|
|
12
|
+
if (col.header) {
|
|
13
|
+
return col.header;
|
|
14
|
+
}
|
|
15
|
+
return capitalize(columnId.split("-").join(" "));
|
|
15
16
|
};
|
|
16
17
|
const getFooter = (col, slots, context) => {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
const slotName = `footer-${col.id}`;
|
|
18
|
+
const columnId = col.accessorKey || col.id || "";
|
|
19
|
+
const slotName = `footer-${columnId}`;
|
|
21
20
|
if (slots[slotName]) {
|
|
22
21
|
return slots[slotName]({
|
|
23
22
|
column: context.column,
|
|
24
23
|
context
|
|
25
24
|
});
|
|
26
25
|
}
|
|
26
|
+
if (col.footer) {
|
|
27
|
+
return col.footer;
|
|
28
|
+
}
|
|
27
29
|
return void 0;
|
|
28
30
|
};
|
|
29
31
|
const getCell = (col, slots, context) => {
|
|
30
|
-
const
|
|
32
|
+
const columnId = col.accessorKey || col.id || "";
|
|
33
|
+
const slotName = `cell-${columnId}`;
|
|
31
34
|
if (slots[slotName]) {
|
|
32
35
|
return slots[slotName]({
|
|
36
|
+
cell: context.cell,
|
|
33
37
|
row: context.row,
|
|
34
|
-
context,
|
|
35
38
|
value: context.getValue()
|
|
36
39
|
});
|
|
37
40
|
}
|
|
38
|
-
|
|
41
|
+
const value = context.getValue();
|
|
42
|
+
if (col.cell) {
|
|
43
|
+
return typeof col.cell === "function" ? col.cell(context) : col.cell;
|
|
44
|
+
}
|
|
45
|
+
return value !== void 0 && value !== null ? value : "-";
|
|
39
46
|
};
|
|
40
|
-
const processColumns = (columnHelper, columns, slots) => {
|
|
47
|
+
const processColumns = (columnHelper, columns, slots, table) => {
|
|
41
48
|
return columns.map((col) => {
|
|
42
|
-
if (col
|
|
43
|
-
const groupCol = col;
|
|
49
|
+
if ("columns" in col && Array.isArray(col.columns)) {
|
|
44
50
|
return columnHelper.group({
|
|
45
|
-
id:
|
|
46
|
-
header: (context) => getHeader(
|
|
47
|
-
footer: (context) => getFooter(
|
|
48
|
-
columns: processColumns(columnHelper,
|
|
51
|
+
id: col.id || String(Math.random()),
|
|
52
|
+
header: (context) => getHeader(col, slots, context),
|
|
53
|
+
footer: col.footer ? (context) => getFooter(col, slots, context) : void 0,
|
|
54
|
+
columns: processColumns(columnHelper, col.columns, slots),
|
|
55
|
+
meta: col.meta
|
|
49
56
|
});
|
|
50
57
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
58
|
+
const accessorCol = col;
|
|
59
|
+
if (accessorCol.accessorKey) {
|
|
60
|
+
return columnHelper.accessor(accessorCol.accessorKey, {
|
|
61
|
+
id: accessorCol.id || accessorCol.accessorKey,
|
|
54
62
|
header: (context) => getHeader(col, slots, context),
|
|
55
|
-
footer: (context) => getFooter(col, slots, context),
|
|
56
|
-
cell: (context) => getCell(col, slots, context)
|
|
63
|
+
footer: col.footer ? (context) => getFooter(col, slots, context) : void 0,
|
|
64
|
+
cell: (context) => getCell(col, slots, context),
|
|
65
|
+
meta: col.meta
|
|
57
66
|
});
|
|
58
67
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
68
|
+
if (accessorCol.accessorFn) {
|
|
69
|
+
return columnHelper.accessor(accessorCol.accessorFn, {
|
|
70
|
+
id: accessorCol.id || String(Math.random()),
|
|
71
|
+
header: (context) => getHeader(col, slots, context),
|
|
72
|
+
footer: col.footer ? (context) => getFooter(col, slots, context) : void 0,
|
|
73
|
+
cell: (context) => getCell(col, slots, context),
|
|
74
|
+
meta: col.meta
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return columnHelper.display({
|
|
78
|
+
id: col.id || String(Math.random()),
|
|
62
79
|
header: (context) => getHeader(col, slots, context),
|
|
63
|
-
footer: (context) => getFooter(col, slots, context),
|
|
64
|
-
cell: (context) => getCell(col, slots, context)
|
|
80
|
+
footer: col.footer ? (context) => getFooter(col, slots, context) : void 0,
|
|
81
|
+
cell: (context) => getCell(col, slots, context),
|
|
82
|
+
meta: col.meta
|
|
65
83
|
});
|
|
66
84
|
});
|
|
67
85
|
};
|
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} from '@tanstack/vue-table'\nimport type { Slots } from 'vue'\nimport capitalize from 'lodash.capitalize'\
|
|
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, unknown>,\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>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, unknown>,\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>,\n slots: Readonly<Slots>,\n context: CellContext<TData, unknown>,\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>[],\n slots: Readonly<Slots>,\n table: Table<TData>,\n): TStackColumnDef<TData>[] => {\n return columns.map((col): TStackColumnDef<TData> => {\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, unknown>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, unknown>) => getFooter(col, slots, context) : undefined,\n columns: processColumns(columnHelper, col.columns, 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, unknown>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, unknown>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, unknown>) => 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, unknown>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, unknown>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, unknown>) => 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, unknown>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, unknown>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, unknown>) => getCell(col, slots, context),\n meta: col.meta,\n })\n })\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
function defineColumns(columns) {
|
|
4
|
-
return columns.map((col) => {
|
|
5
|
-
if ("columns" in col) {
|
|
6
|
-
return {
|
|
7
|
-
id: col.id,
|
|
8
|
-
type: "group",
|
|
9
|
-
header: col.header,
|
|
10
|
-
footer: col.footer,
|
|
11
|
-
columns: defineColumns(col.columns)
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
return {
|
|
15
|
-
id: col.id,
|
|
16
|
-
type: "accessor",
|
|
17
|
-
header: col.header,
|
|
18
|
-
footer: col.footer
|
|
19
|
-
};
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
exports.defineColumns = defineColumns;
|
|
24
|
-
//# sourceMappingURL=defineColumns.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defineColumns.cjs","sources":["../../src/shared/defineColumns.ts"],"sourcesContent":["import type { ColumnDef } from \"./types\";\n\ntype ColumnConfig<TData extends object> = {\n id: keyof TData & string;\n header?: string;\n footer?: string;\n};\n\ntype GroupConfig<TData extends object> = {\n id: string;\n header?: string;\n footer?: string;\n columns: ColumnConfig<TData>[];\n};\n\nexport function defineColumns<TData extends object>(\n columns: (ColumnConfig<TData> | GroupConfig<TData>)[]\n): ColumnDef<TData>[] {\n return columns.map((col): ColumnDef<TData> => {\n if (\"columns\" in col) {\n return {\n id: col.id,\n type: \"group\",\n header: col.header,\n footer: col.footer,\n columns: defineColumns(col.columns),\n };\n }\n\n return {\n id: col.id,\n type: \"accessor\",\n header: col.header,\n footer: col.footer,\n };\n });\n}\n"],"names":[],"mappings":";;AAeO,SAAS,cACd,OACoB,EAAA;AACpB,EAAO,OAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,GAA0B,KAAA;AAC5C,IAAA,IAAI,aAAa,GAAK,EAAA;AACpB,MAAO,OAAA;AAAA,QACL,IAAI,GAAI,CAAA,EAAA;AAAA,QACR,IAAM,EAAA,OAAA;AAAA,QACN,QAAQ,GAAI,CAAA,MAAA;AAAA,QACZ,QAAQ,GAAI,CAAA,MAAA;AAAA,QACZ,OAAA,EAAS,aAAc,CAAA,GAAA,CAAI,OAAO;AAAA,OACpC;AAAA;AAGF,IAAO,OAAA;AAAA,MACL,IAAI,GAAI,CAAA,EAAA;AAAA,MACR,IAAM,EAAA,UAAA;AAAA,MACN,QAAQ,GAAI,CAAA,MAAA;AAAA,MACZ,QAAQ,GAAI,CAAA;AAAA,KACd;AAAA,GACD,CAAA;AACH;;;;"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
function defineColumns(columns) {
|
|
2
|
-
return columns.map((col) => {
|
|
3
|
-
if ("columns" in col) {
|
|
4
|
-
return {
|
|
5
|
-
id: col.id,
|
|
6
|
-
type: "group",
|
|
7
|
-
header: col.header,
|
|
8
|
-
footer: col.footer,
|
|
9
|
-
columns: defineColumns(col.columns)
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
return {
|
|
13
|
-
id: col.id,
|
|
14
|
-
type: "accessor",
|
|
15
|
-
header: col.header,
|
|
16
|
-
footer: col.footer
|
|
17
|
-
};
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export { defineColumns as d };
|
|
22
|
-
//# sourceMappingURL=defineColumns.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defineColumns.js","sources":["../../src/shared/defineColumns.ts"],"sourcesContent":["import type { ColumnDef } from \"./types\";\n\ntype ColumnConfig<TData extends object> = {\n id: keyof TData & string;\n header?: string;\n footer?: string;\n};\n\ntype GroupConfig<TData extends object> = {\n id: string;\n header?: string;\n footer?: string;\n columns: ColumnConfig<TData>[];\n};\n\nexport function defineColumns<TData extends object>(\n columns: (ColumnConfig<TData> | GroupConfig<TData>)[]\n): ColumnDef<TData>[] {\n return columns.map((col): ColumnDef<TData> => {\n if (\"columns\" in col) {\n return {\n id: col.id,\n type: \"group\",\n header: col.header,\n footer: col.footer,\n columns: defineColumns(col.columns),\n };\n }\n\n return {\n id: col.id,\n type: \"accessor\",\n header: col.header,\n footer: col.footer,\n };\n });\n}\n"],"names":[],"mappings":"AAeO,SAAS,cACd,OACoB,EAAA;AACpB,EAAO,OAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,GAA0B,KAAA;AAC5C,IAAA,IAAI,aAAa,GAAK,EAAA;AACpB,MAAO,OAAA;AAAA,QACL,IAAI,GAAI,CAAA,EAAA;AAAA,QACR,IAAM,EAAA,OAAA;AAAA,QACN,QAAQ,GAAI,CAAA,MAAA;AAAA,QACZ,QAAQ,GAAI,CAAA,MAAA;AAAA,QACZ,OAAA,EAAS,aAAc,CAAA,GAAA,CAAI,OAAO;AAAA,OACpC;AAAA;AAGF,IAAO,OAAA;AAAA,MACL,IAAI,GAAI,CAAA,EAAA;AAAA,MACR,IAAM,EAAA,UAAA;AAAA,MACN,QAAQ,GAAI,CAAA,MAAA;AAAA,MACZ,QAAQ,GAAI,CAAA;AAAA,KACd;AAAA,GACD,CAAA;AACH;;;;"}
|