tanstack-table-vue 0.0.4 → 0.0.5
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 +108 -66
- package/dist/components/TSTable.cjs.map +1 -1
- package/dist/components/TSTable.js +109 -67
- package/dist/components/TSTable.js.map +1 -1
- package/dist/index.d.ts +11 -1
- package/dist/shared/defineColumns.cjs.map +1 -1
- package/dist/shared/defineColumns.js.map +1 -1
- package/dist/shared/utils.cjs +1 -0
- package/dist/shared/utils.cjs.map +1 -1
- package/dist/shared/utils.js +1 -0
- package/dist/shared/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,14 +4,18 @@ const vue = require('vue');
|
|
|
4
4
|
const vueTable = require('@tanstack/vue-table');
|
|
5
5
|
const shared_utils = require('../shared/utils.cjs');
|
|
6
6
|
|
|
7
|
-
const _hoisted_1 = { class: "p-2" };
|
|
8
|
-
const _hoisted_2 = ["colSpan"];
|
|
9
|
-
const _hoisted_3 = ["colSpan"];
|
|
10
7
|
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
11
8
|
__name: "TSTable",
|
|
12
9
|
props: {
|
|
13
10
|
data: {},
|
|
14
|
-
columns: {}
|
|
11
|
+
columns: {},
|
|
12
|
+
tableComponent: { default: "table" },
|
|
13
|
+
theadComponent: { default: "thead" },
|
|
14
|
+
tbodyComponent: { default: "tbody" },
|
|
15
|
+
tfootComponent: { default: "tfoot" },
|
|
16
|
+
trComponent: { default: "tr" },
|
|
17
|
+
thComponent: { default: "th" },
|
|
18
|
+
tdComponent: { default: "td" }
|
|
15
19
|
},
|
|
16
20
|
setup(__props) {
|
|
17
21
|
const props = __props;
|
|
@@ -29,69 +33,107 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
29
33
|
},
|
|
30
34
|
getCoreRowModel: vueTable.getCoreRowModel()
|
|
31
35
|
});
|
|
36
|
+
const hasFooterGroupRows = (footerGroup) => {
|
|
37
|
+
return footerGroup.headers.some(
|
|
38
|
+
(h) => !h.isPlaceholder && h.column.columnDef.footer && typeof h.column.columnDef.footer === "function" && h.column.columnDef.footer(h.getContext())
|
|
39
|
+
);
|
|
40
|
+
};
|
|
41
|
+
const hasFooterRows = vue.computed(() => {
|
|
42
|
+
return table.getFooterGroups().some((footerGroup) => hasFooterGroupRows(footerGroup));
|
|
43
|
+
});
|
|
32
44
|
return (_ctx, _cache) => {
|
|
33
|
-
return vue.openBlock(), vue.
|
|
34
|
-
vue.
|
|
35
|
-
vue.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
45
|
+
return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(props.tableComponent), null, {
|
|
46
|
+
default: vue.withCtx(() => [
|
|
47
|
+
(vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(props.theadComponent), null, {
|
|
48
|
+
default: vue.withCtx(() => [
|
|
49
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(table).getHeaderGroups(), (headerGroup) => {
|
|
50
|
+
return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(props.trComponent), {
|
|
51
|
+
key: headerGroup.id
|
|
52
|
+
}, {
|
|
53
|
+
default: vue.withCtx(() => [
|
|
54
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(headerGroup.headers, (header) => {
|
|
55
|
+
return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(props.thComponent), {
|
|
56
|
+
key: header.id,
|
|
57
|
+
colSpan: header.colSpan
|
|
58
|
+
}, {
|
|
59
|
+
default: vue.withCtx(() => [
|
|
60
|
+
!header.isPlaceholder ? (vue.openBlock(), vue.createBlock(vue.unref(vueTable.FlexRender), {
|
|
61
|
+
key: 0,
|
|
62
|
+
render: header.column.columnDef.header,
|
|
63
|
+
props: header.getContext()
|
|
64
|
+
}, null, 8, ["render", "props"])) : vue.createCommentVNode("", true)
|
|
65
|
+
]),
|
|
66
|
+
_: 2
|
|
67
|
+
}, 1032, ["colSpan"]);
|
|
68
|
+
}), 128))
|
|
69
|
+
]),
|
|
70
|
+
_: 2
|
|
71
|
+
}, 1024);
|
|
72
|
+
}), 128))
|
|
73
|
+
]),
|
|
74
|
+
_: 1
|
|
75
|
+
})),
|
|
76
|
+
(vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(props.tbodyComponent), null, {
|
|
77
|
+
default: vue.withCtx(() => [
|
|
78
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(table).getRowModel().rows, (row) => {
|
|
79
|
+
return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(props.trComponent), {
|
|
80
|
+
key: row.id
|
|
81
|
+
}, {
|
|
82
|
+
default: vue.withCtx(() => [
|
|
83
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(row.getVisibleCells(), (cell) => {
|
|
84
|
+
return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(props.tdComponent), {
|
|
85
|
+
key: cell.id
|
|
86
|
+
}, {
|
|
87
|
+
default: vue.withCtx(() => [
|
|
88
|
+
vue.createVNode(vue.unref(vueTable.FlexRender), {
|
|
89
|
+
render: cell.column.columnDef.cell,
|
|
90
|
+
props: cell.getContext()
|
|
91
|
+
}, null, 8, ["render", "props"])
|
|
92
|
+
]),
|
|
93
|
+
_: 2
|
|
94
|
+
}, 1024);
|
|
95
|
+
}), 128))
|
|
96
|
+
]),
|
|
97
|
+
_: 2
|
|
98
|
+
}, 1024);
|
|
99
|
+
}), 128))
|
|
100
|
+
]),
|
|
101
|
+
_: 1
|
|
102
|
+
})),
|
|
103
|
+
hasFooterRows.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(props.tfootComponent), { key: 0 }, {
|
|
104
|
+
default: vue.withCtx(() => [
|
|
105
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(table).getFooterGroups(), (footerGroup) => {
|
|
106
|
+
return vue.openBlock(), vue.createElementBlock(vue.Fragment, {
|
|
107
|
+
key: footerGroup.id
|
|
108
|
+
}, [
|
|
109
|
+
hasFooterGroupRows(footerGroup) ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(props.trComponent), { key: 0 }, {
|
|
110
|
+
default: vue.withCtx(() => [
|
|
111
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(footerGroup.headers, (header) => {
|
|
112
|
+
return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(props.thComponent), {
|
|
113
|
+
key: header.id,
|
|
114
|
+
colSpan: header.colSpan
|
|
115
|
+
}, {
|
|
116
|
+
default: vue.withCtx(() => [
|
|
117
|
+
!header.isPlaceholder ? (vue.openBlock(), vue.createBlock(vue.unref(vueTable.FlexRender), {
|
|
118
|
+
key: 0,
|
|
119
|
+
render: header.column.columnDef.footer,
|
|
120
|
+
props: header.getContext()
|
|
121
|
+
}, null, 8, ["render", "props"])) : vue.createCommentVNode("", true)
|
|
122
|
+
]),
|
|
123
|
+
_: 2
|
|
124
|
+
}, 1032, ["colSpan"]);
|
|
125
|
+
}), 128))
|
|
126
|
+
]),
|
|
127
|
+
_: 2
|
|
128
|
+
}, 1024)) : vue.createCommentVNode("", true)
|
|
129
|
+
], 64);
|
|
130
|
+
}), 128))
|
|
131
|
+
]),
|
|
132
|
+
_: 1
|
|
133
|
+
})) : vue.createCommentVNode("", true)
|
|
134
|
+
]),
|
|
135
|
+
_: 1
|
|
136
|
+
});
|
|
95
137
|
};
|
|
96
138
|
}
|
|
97
139
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TSTable.cjs","sources":["../../src/components/TSTable.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface TSTableProps<TData extends object> {\n data: TData[]\n columns: ColumnDef<TData>[]\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"TData extends object\">\nimport type { ColumnDef, HeaderSlotProps, CellSlotProps, FooterSlotProps } from '../shared/types'\nimport { computed, useSlots } from 'vue'\nimport { FlexRender } from '@tanstack/vue-table'\nimport {\n createColumnHelper,\n useVueTable,\n getCoreRowModel,\n} from '@tanstack/vue-table'\nimport { processColumns } from '../shared/utils';\n\nconst props = defineProps<TSTableProps<TData>>()\n\ndefineSlots<{\n [key: `cell-${string}`]: (props: CellSlotProps<TData>) => any;\n [key: `header-${string}`]: (props: HeaderSlotProps<TData>) => any;\n [key: `footer-${string}`]: (props: FooterSlotProps<TData>) => any;\n}>()\n\nconst slots = useSlots()\n\nconst columnHelper = createColumnHelper<TData>()\n\nconst tableColumns = computed(() => {\n return processColumns(columnHelper, props.columns, slots)\n})\n\nconst table = useVueTable<TData>({\n get data() {\n return props.data\n },\n get columns() {\n return tableColumns.value\n },\n getCoreRowModel: getCoreRowModel()\n})\n</script>\n\n<template>\n <
|
|
1
|
+
{"version":3,"file":"TSTable.cjs","sources":["../../src/components/TSTable.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface TSTableProps<TData extends object> {\n data: TData[]\n columns: ColumnDef<TData>[]\n\n /**\n * Custom components for the table\n */\n tableComponent?: string | object\n theadComponent?: string | object\n tbodyComponent?: string | object\n tfootComponent?: string | object\n trComponent?: string | object\n thComponent?: string | object\n tdComponent?: string | object\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"TData extends object\">\nimport type { ColumnDef, HeaderSlotProps, CellSlotProps, FooterSlotProps } from '../shared/types'\nimport { computed, useSlots } from 'vue'\nimport { FlexRender, type HeaderGroup } from '@tanstack/vue-table'\nimport {\n createColumnHelper,\n useVueTable,\n getCoreRowModel,\n} from '@tanstack/vue-table'\nimport { processColumns } from '../shared/utils';\n\nconst props = withDefaults(defineProps<TSTableProps<TData>>(), {\n tableComponent: 'table',\n theadComponent: 'thead',\n tbodyComponent: 'tbody',\n tfootComponent: 'tfoot',\n trComponent: 'tr',\n thComponent: 'th',\n tdComponent: 'td'\n})\n\ndefineSlots<{\n [key: `cell-${string}`]: (props: CellSlotProps<TData>) => any;\n [key: `header-${string}`]: (props: HeaderSlotProps<TData>) => any;\n [key: `footer-${string}`]: (props: FooterSlotProps<TData>) => any;\n}>()\n\nconst slots = useSlots()\n\nconst columnHelper = createColumnHelper<TData>()\n\nconst tableColumns = computed(() => {\n return processColumns(columnHelper, props.columns, slots)\n})\n\nconst table = useVueTable<TData>({\n get data() {\n return props.data\n },\n get columns() {\n return tableColumns.value\n },\n getCoreRowModel: getCoreRowModel()\n})\n\nconst hasFooterGroupRows = (footerGroup: HeaderGroup<TData>) => {\n return footerGroup.headers.some((h) =>\n !h.isPlaceholder &&\n h.column.columnDef.footer &&\n typeof h.column.columnDef.footer === 'function' &&\n h.column.columnDef.footer(h.getContext())\n )\n}\n\nconst hasFooterRows = computed(() => {\n return table.getFooterGroups().some(footerGroup => hasFooterGroupRows(footerGroup))\n})\n</script>\n\n<template>\n <component :is=\"props.tableComponent\">\n <component :is=\"props.theadComponent\">\n <component :is=\"props.trComponent\" v-for=\"headerGroup in table.getHeaderGroups()\" :key=\"headerGroup.id\">\n <component :is=\"props.thComponent\" v-for=\"header in headerGroup.headers\" :key=\"header.id\"\n :colSpan=\"header.colSpan\">\n <FlexRender v-if=\"!header.isPlaceholder\" :render=\"header.column.columnDef.header\"\n :props=\"header.getContext()\" />\n </component>\n </component>\n </component>\n <component :is=\"props.tbodyComponent\">\n <component :is=\"props.trComponent\" v-for=\"row in table.getRowModel().rows\" :key=\"row.id\">\n <component :is=\"props.tdComponent\" v-for=\"cell in row.getVisibleCells()\" :key=\"cell.id\">\n <FlexRender :render=\"cell.column.columnDef.cell\" :props=\"cell.getContext()\" />\n </component>\n </component>\n </component>\n <component :is=\"props.tfootComponent\" v-if=\"hasFooterRows\">\n <template v-for=\"footerGroup in table.getFooterGroups()\" :key=\"footerGroup.id\">\n <component :is=\"props.trComponent\" v-if=\"hasFooterGroupRows(footerGroup)\">\n <component :is=\"props.thComponent\" v-for=\"header in footerGroup.headers\" :key=\"header.id\"\n :colSpan=\"header.colSpan\">\n <FlexRender v-if=\"!header.isPlaceholder\" :render=\"header.column.columnDef.footer\"\n :props=\"header.getContext()\" />\n </component>\n </component>\n </template>\n </component>\n </component>\n</template>"],"names":["useSlots","createColumnHelper","computed","processColumns","useVueTable","getCoreRowModel"],"mappings":";;;;;;;;;;;;;;;;;;;;AA6BA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAgBd,IAAA,MAAM,QAAQA,YAAS,EAAA;AAEvB,IAAA,MAAM,eAAeC,2BAA0B,EAAA;AAE/C,IAAM,MAAA,YAAA,GAAeC,aAAS,MAAM;AAClC,MAAA,OAAOC,2BAAe,CAAA,YAAA,EAAc,KAAM,CAAA,OAAA,EAAS,KAAK,CAAA;AAAA,KACzD,CAAA;AAED,IAAA,MAAM,QAAQC,oBAAmB,CAAA;AAAA,MAC/B,IAAI,IAAO,GAAA;AACT,QAAA,OAAO,KAAM,CAAA,IAAA;AAAA,OACf;AAAA,MACA,IAAI,OAAU,GAAA;AACZ,QAAA,OAAO,YAAa,CAAA,KAAA;AAAA,OACtB;AAAA,MACA,iBAAiBC,wBAAgB;AAAA,KAClC,CAAA;AAED,IAAM,MAAA,kBAAA,GAAqB,CAAC,WAAoC,KAAA;AAC9D,MAAA,OAAO,YAAY,OAAQ,CAAA,IAAA;AAAA,QAAK,CAAC,MAC/B,CAAC,CAAA,CAAE,iBACH,CAAE,CAAA,MAAA,CAAO,UAAU,MACnB,IAAA,OAAO,EAAE,MAAO,CAAA,SAAA,CAAU,WAAW,UACrC,IAAA,CAAA,CAAE,OAAO,SAAU,CAAA,MAAA,CAAO,CAAE,CAAA,UAAA,EAAY;AAAA,OAC1C;AAAA,KACF;AAEA,IAAM,MAAA,aAAA,GAAgBH,aAAS,MAAM;AACnC,MAAA,OAAO,MAAM,eAAgB,EAAA,CAAE,KAAK,CAAe,WAAA,KAAA,kBAAA,CAAmB,WAAW,CAAC,CAAA;AAAA,KACnF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
import { defineComponent, useSlots, computed,
|
|
1
|
+
import { defineComponent, useSlots, computed, createBlock, openBlock, resolveDynamicComponent, withCtx, createCommentVNode, createElementBlock, Fragment, renderList, unref, createVNode } from 'vue';
|
|
2
2
|
import { createColumnHelper, useVueTable, getCoreRowModel, FlexRender } from '@tanstack/vue-table';
|
|
3
3
|
import { p as processColumns } from '../shared/utils.js';
|
|
4
4
|
|
|
5
|
-
const _hoisted_1 = { class: "p-2" };
|
|
6
|
-
const _hoisted_2 = ["colSpan"];
|
|
7
|
-
const _hoisted_3 = ["colSpan"];
|
|
8
5
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
9
6
|
__name: "TSTable",
|
|
10
7
|
props: {
|
|
11
8
|
data: {},
|
|
12
|
-
columns: {}
|
|
9
|
+
columns: {},
|
|
10
|
+
tableComponent: { default: "table" },
|
|
11
|
+
theadComponent: { default: "thead" },
|
|
12
|
+
tbodyComponent: { default: "tbody" },
|
|
13
|
+
tfootComponent: { default: "tfoot" },
|
|
14
|
+
trComponent: { default: "tr" },
|
|
15
|
+
thComponent: { default: "th" },
|
|
16
|
+
tdComponent: { default: "td" }
|
|
13
17
|
},
|
|
14
18
|
setup(__props) {
|
|
15
19
|
const props = __props;
|
|
@@ -27,69 +31,107 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
27
31
|
},
|
|
28
32
|
getCoreRowModel: getCoreRowModel()
|
|
29
33
|
});
|
|
34
|
+
const hasFooterGroupRows = (footerGroup) => {
|
|
35
|
+
return footerGroup.headers.some(
|
|
36
|
+
(h) => !h.isPlaceholder && h.column.columnDef.footer && typeof h.column.columnDef.footer === "function" && h.column.columnDef.footer(h.getContext())
|
|
37
|
+
);
|
|
38
|
+
};
|
|
39
|
+
const hasFooterRows = computed(() => {
|
|
40
|
+
return table.getFooterGroups().some((footerGroup) => hasFooterGroupRows(footerGroup));
|
|
41
|
+
});
|
|
30
42
|
return (_ctx, _cache) => {
|
|
31
|
-
return openBlock(),
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
43
|
+
return openBlock(), createBlock(resolveDynamicComponent(props.tableComponent), null, {
|
|
44
|
+
default: withCtx(() => [
|
|
45
|
+
(openBlock(), createBlock(resolveDynamicComponent(props.theadComponent), null, {
|
|
46
|
+
default: withCtx(() => [
|
|
47
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(table).getHeaderGroups(), (headerGroup) => {
|
|
48
|
+
return openBlock(), createBlock(resolveDynamicComponent(props.trComponent), {
|
|
49
|
+
key: headerGroup.id
|
|
50
|
+
}, {
|
|
51
|
+
default: withCtx(() => [
|
|
52
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(headerGroup.headers, (header) => {
|
|
53
|
+
return openBlock(), createBlock(resolveDynamicComponent(props.thComponent), {
|
|
54
|
+
key: header.id,
|
|
55
|
+
colSpan: header.colSpan
|
|
56
|
+
}, {
|
|
57
|
+
default: withCtx(() => [
|
|
58
|
+
!header.isPlaceholder ? (openBlock(), createBlock(unref(FlexRender), {
|
|
59
|
+
key: 0,
|
|
60
|
+
render: header.column.columnDef.header,
|
|
61
|
+
props: header.getContext()
|
|
62
|
+
}, null, 8, ["render", "props"])) : createCommentVNode("", true)
|
|
63
|
+
]),
|
|
64
|
+
_: 2
|
|
65
|
+
}, 1032, ["colSpan"]);
|
|
66
|
+
}), 128))
|
|
67
|
+
]),
|
|
68
|
+
_: 2
|
|
69
|
+
}, 1024);
|
|
70
|
+
}), 128))
|
|
71
|
+
]),
|
|
72
|
+
_: 1
|
|
73
|
+
})),
|
|
74
|
+
(openBlock(), createBlock(resolveDynamicComponent(props.tbodyComponent), null, {
|
|
75
|
+
default: withCtx(() => [
|
|
76
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(table).getRowModel().rows, (row) => {
|
|
77
|
+
return openBlock(), createBlock(resolveDynamicComponent(props.trComponent), {
|
|
78
|
+
key: row.id
|
|
79
|
+
}, {
|
|
80
|
+
default: withCtx(() => [
|
|
81
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(row.getVisibleCells(), (cell) => {
|
|
82
|
+
return openBlock(), createBlock(resolveDynamicComponent(props.tdComponent), {
|
|
83
|
+
key: cell.id
|
|
84
|
+
}, {
|
|
85
|
+
default: withCtx(() => [
|
|
86
|
+
createVNode(unref(FlexRender), {
|
|
87
|
+
render: cell.column.columnDef.cell,
|
|
88
|
+
props: cell.getContext()
|
|
89
|
+
}, null, 8, ["render", "props"])
|
|
90
|
+
]),
|
|
91
|
+
_: 2
|
|
92
|
+
}, 1024);
|
|
93
|
+
}), 128))
|
|
94
|
+
]),
|
|
95
|
+
_: 2
|
|
96
|
+
}, 1024);
|
|
97
|
+
}), 128))
|
|
98
|
+
]),
|
|
99
|
+
_: 1
|
|
100
|
+
})),
|
|
101
|
+
hasFooterRows.value ? (openBlock(), createBlock(resolveDynamicComponent(props.tfootComponent), { key: 0 }, {
|
|
102
|
+
default: withCtx(() => [
|
|
103
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(table).getFooterGroups(), (footerGroup) => {
|
|
104
|
+
return openBlock(), createElementBlock(Fragment, {
|
|
105
|
+
key: footerGroup.id
|
|
106
|
+
}, [
|
|
107
|
+
hasFooterGroupRows(footerGroup) ? (openBlock(), createBlock(resolveDynamicComponent(props.trComponent), { key: 0 }, {
|
|
108
|
+
default: withCtx(() => [
|
|
109
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(footerGroup.headers, (header) => {
|
|
110
|
+
return openBlock(), createBlock(resolveDynamicComponent(props.thComponent), {
|
|
111
|
+
key: header.id,
|
|
112
|
+
colSpan: header.colSpan
|
|
113
|
+
}, {
|
|
114
|
+
default: withCtx(() => [
|
|
115
|
+
!header.isPlaceholder ? (openBlock(), createBlock(unref(FlexRender), {
|
|
116
|
+
key: 0,
|
|
117
|
+
render: header.column.columnDef.footer,
|
|
118
|
+
props: header.getContext()
|
|
119
|
+
}, null, 8, ["render", "props"])) : createCommentVNode("", true)
|
|
120
|
+
]),
|
|
121
|
+
_: 2
|
|
122
|
+
}, 1032, ["colSpan"]);
|
|
123
|
+
}), 128))
|
|
124
|
+
]),
|
|
125
|
+
_: 2
|
|
126
|
+
}, 1024)) : createCommentVNode("", true)
|
|
127
|
+
], 64);
|
|
128
|
+
}), 128))
|
|
129
|
+
]),
|
|
130
|
+
_: 1
|
|
131
|
+
})) : createCommentVNode("", true)
|
|
132
|
+
]),
|
|
133
|
+
_: 1
|
|
134
|
+
});
|
|
93
135
|
};
|
|
94
136
|
}
|
|
95
137
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TSTable.js","sources":["../../src/components/TSTable.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface TSTableProps<TData extends object> {\n data: TData[]\n columns: ColumnDef<TData>[]\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"TData extends object\">\nimport type { ColumnDef, HeaderSlotProps, CellSlotProps, FooterSlotProps } from '../shared/types'\nimport { computed, useSlots } from 'vue'\nimport { FlexRender } from '@tanstack/vue-table'\nimport {\n createColumnHelper,\n useVueTable,\n getCoreRowModel,\n} from '@tanstack/vue-table'\nimport { processColumns } from '../shared/utils';\n\nconst props = defineProps<TSTableProps<TData>>()\n\ndefineSlots<{\n [key: `cell-${string}`]: (props: CellSlotProps<TData>) => any;\n [key: `header-${string}`]: (props: HeaderSlotProps<TData>) => any;\n [key: `footer-${string}`]: (props: FooterSlotProps<TData>) => any;\n}>()\n\nconst slots = useSlots()\n\nconst columnHelper = createColumnHelper<TData>()\n\nconst tableColumns = computed(() => {\n return processColumns(columnHelper, props.columns, slots)\n})\n\nconst table = useVueTable<TData>({\n get data() {\n return props.data\n },\n get columns() {\n return tableColumns.value\n },\n getCoreRowModel: getCoreRowModel()\n})\n</script>\n\n<template>\n <
|
|
1
|
+
{"version":3,"file":"TSTable.js","sources":["../../src/components/TSTable.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface TSTableProps<TData extends object> {\n data: TData[]\n columns: ColumnDef<TData>[]\n\n /**\n * Custom components for the table\n */\n tableComponent?: string | object\n theadComponent?: string | object\n tbodyComponent?: string | object\n tfootComponent?: string | object\n trComponent?: string | object\n thComponent?: string | object\n tdComponent?: string | object\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"TData extends object\">\nimport type { ColumnDef, HeaderSlotProps, CellSlotProps, FooterSlotProps } from '../shared/types'\nimport { computed, useSlots } from 'vue'\nimport { FlexRender, type HeaderGroup } from '@tanstack/vue-table'\nimport {\n createColumnHelper,\n useVueTable,\n getCoreRowModel,\n} from '@tanstack/vue-table'\nimport { processColumns } from '../shared/utils';\n\nconst props = withDefaults(defineProps<TSTableProps<TData>>(), {\n tableComponent: 'table',\n theadComponent: 'thead',\n tbodyComponent: 'tbody',\n tfootComponent: 'tfoot',\n trComponent: 'tr',\n thComponent: 'th',\n tdComponent: 'td'\n})\n\ndefineSlots<{\n [key: `cell-${string}`]: (props: CellSlotProps<TData>) => any;\n [key: `header-${string}`]: (props: HeaderSlotProps<TData>) => any;\n [key: `footer-${string}`]: (props: FooterSlotProps<TData>) => any;\n}>()\n\nconst slots = useSlots()\n\nconst columnHelper = createColumnHelper<TData>()\n\nconst tableColumns = computed(() => {\n return processColumns(columnHelper, props.columns, slots)\n})\n\nconst table = useVueTable<TData>({\n get data() {\n return props.data\n },\n get columns() {\n return tableColumns.value\n },\n getCoreRowModel: getCoreRowModel()\n})\n\nconst hasFooterGroupRows = (footerGroup: HeaderGroup<TData>) => {\n return footerGroup.headers.some((h) =>\n !h.isPlaceholder &&\n h.column.columnDef.footer &&\n typeof h.column.columnDef.footer === 'function' &&\n h.column.columnDef.footer(h.getContext())\n )\n}\n\nconst hasFooterRows = computed(() => {\n return table.getFooterGroups().some(footerGroup => hasFooterGroupRows(footerGroup))\n})\n</script>\n\n<template>\n <component :is=\"props.tableComponent\">\n <component :is=\"props.theadComponent\">\n <component :is=\"props.trComponent\" v-for=\"headerGroup in table.getHeaderGroups()\" :key=\"headerGroup.id\">\n <component :is=\"props.thComponent\" v-for=\"header in headerGroup.headers\" :key=\"header.id\"\n :colSpan=\"header.colSpan\">\n <FlexRender v-if=\"!header.isPlaceholder\" :render=\"header.column.columnDef.header\"\n :props=\"header.getContext()\" />\n </component>\n </component>\n </component>\n <component :is=\"props.tbodyComponent\">\n <component :is=\"props.trComponent\" v-for=\"row in table.getRowModel().rows\" :key=\"row.id\">\n <component :is=\"props.tdComponent\" v-for=\"cell in row.getVisibleCells()\" :key=\"cell.id\">\n <FlexRender :render=\"cell.column.columnDef.cell\" :props=\"cell.getContext()\" />\n </component>\n </component>\n </component>\n <component :is=\"props.tfootComponent\" v-if=\"hasFooterRows\">\n <template v-for=\"footerGroup in table.getFooterGroups()\" :key=\"footerGroup.id\">\n <component :is=\"props.trComponent\" v-if=\"hasFooterGroupRows(footerGroup)\">\n <component :is=\"props.thComponent\" v-for=\"header in footerGroup.headers\" :key=\"header.id\"\n :colSpan=\"header.colSpan\">\n <FlexRender v-if=\"!header.isPlaceholder\" :render=\"header.column.columnDef.footer\"\n :props=\"header.getContext()\" />\n </component>\n </component>\n </template>\n </component>\n </component>\n</template>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA6BA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAgBd,IAAA,MAAM,QAAQ,QAAS,EAAA;AAEvB,IAAA,MAAM,eAAe,kBAA0B,EAAA;AAE/C,IAAM,MAAA,YAAA,GAAe,SAAS,MAAM;AAClC,MAAA,OAAO,cAAe,CAAA,YAAA,EAAc,KAAM,CAAA,OAAA,EAAS,KAAK,CAAA;AAAA,KACzD,CAAA;AAED,IAAA,MAAM,QAAQ,WAAmB,CAAA;AAAA,MAC/B,IAAI,IAAO,GAAA;AACT,QAAA,OAAO,KAAM,CAAA,IAAA;AAAA,OACf;AAAA,MACA,IAAI,OAAU,GAAA;AACZ,QAAA,OAAO,YAAa,CAAA,KAAA;AAAA,OACtB;AAAA,MACA,iBAAiB,eAAgB;AAAA,KAClC,CAAA;AAED,IAAM,MAAA,kBAAA,GAAqB,CAAC,WAAoC,KAAA;AAC9D,MAAA,OAAO,YAAY,OAAQ,CAAA,IAAA;AAAA,QAAK,CAAC,MAC/B,CAAC,CAAA,CAAE,iBACH,CAAE,CAAA,MAAA,CAAO,UAAU,MACnB,IAAA,OAAO,EAAE,MAAO,CAAA,SAAA,CAAU,WAAW,UACrC,IAAA,CAAA,CAAE,OAAO,SAAU,CAAA,MAAA,CAAO,CAAE,CAAA,UAAA,EAAY;AAAA,OAC1C;AAAA,KACF;AAEA,IAAM,MAAA,aAAA,GAAgB,SAAS,MAAM;AACnC,MAAA,OAAO,MAAM,eAAgB,EAAA,CAAE,KAAK,CAAe,WAAA,KAAA,kBAAA,CAAmB,WAAW,CAAC,CAAA;AAAA,KACnF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -68,7 +68,7 @@ declare type GroupConfig<TData extends object> = {
|
|
|
68
68
|
id: string;
|
|
69
69
|
header?: string;
|
|
70
70
|
footer?: string;
|
|
71
|
-
columns: ColumnConfig<TData>[];
|
|
71
|
+
columns: (ColumnConfig<TData> | GroupConfig<TData>)[];
|
|
72
72
|
};
|
|
73
73
|
|
|
74
74
|
export declare interface HeaderSlotProps<TData extends RowData> {
|
|
@@ -106,6 +106,16 @@ export declare const TSTable: <TData extends object>(__VLS_props: NonNullable<Aw
|
|
|
106
106
|
export declare interface TSTableProps<TData extends object> {
|
|
107
107
|
data: TData[];
|
|
108
108
|
columns: ColumnDef<TData>[];
|
|
109
|
+
/**
|
|
110
|
+
* Custom components for the table
|
|
111
|
+
*/
|
|
112
|
+
tableComponent?: string | object;
|
|
113
|
+
theadComponent?: string | object;
|
|
114
|
+
tbodyComponent?: string | object;
|
|
115
|
+
tfootComponent?: string | object;
|
|
116
|
+
trComponent?: string | object;
|
|
117
|
+
thComponent?: string | object;
|
|
118
|
+
tdComponent?: string | object;
|
|
109
119
|
}
|
|
110
120
|
|
|
111
121
|
export { }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineColumns.cjs","sources":["../../src/shared/defineColumns.ts"],"sourcesContent":["import type { ColumnDef } from
|
|
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> | GroupConfig<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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineColumns.js","sources":["../../src/shared/defineColumns.ts"],"sourcesContent":["import type { ColumnDef } from
|
|
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> | GroupConfig<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;;;;"}
|
package/dist/shared/utils.cjs
CHANGED
|
@@ -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'\nimport type {\n ColumnDef,\n AccessorColumnDef,\n GroupColumnDef,\n HeaderSlotProps,\n CellSlotProps,\n FooterSlotProps,\n} from './types'\n\nconst getHeader = <TData extends RowData & object>(\n col: ColumnDef<TData>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, unknown>,\n) => {\n if (col.header) {\n return col.header\n }\n\n const slotName = `header-${col.id}`\n\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n } as HeaderSlotProps<TData>)\n }\n\n return capitalize(col.id.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 if (col.footer) {\n return col.footer\n }\n\n const slotName = `footer-${col.id}`\n\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n } as FooterSlotProps<TData>)\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 slotName = `cell-${col.id}`\n\n if (slots[slotName]) {\n return slots[slotName]({\n row: context.row,\n context,\n value: context.getValue(),\n } as CellSlotProps<TData>)\n }\n\n return context.getValue()\n}\n\nexport const processColumns = <TData extends RowData & object>(\n columnHelper: ColumnHelper<TData>,\n columns: ColumnDef<TData>[],\n slots: Readonly<Slots>,\n): TStackColumnDef<TData>[] => {\n return columns.map((col) => {\n if (col.type === 'group') {\n const groupCol = col as GroupColumnDef<TData>\n return columnHelper.group({\n id: groupCol.id,\n header: (context: HeaderContext<TData, unknown>) => getHeader(groupCol, slots, context),\n footer: (context: HeaderContext<TData, unknown>) => getFooter(groupCol, slots, context),\n columns: processColumns(columnHelper, groupCol.columns as ColumnDef<TData>[], slots),\n }) as TStackColumnDef<TData>\n }\n\n if (col.type === 'display') {\n return columnHelper.display({\n id: col.id,\n header: (context: HeaderContext<TData, unknown>) => getHeader(col, slots, context),\n footer: (context: HeaderContext<TData, unknown>) => getFooter(col, slots, context),\n cell: (context: CellContext<TData, unknown>) => getCell(col, slots, context),\n }) as TStackColumnDef<TData>\n }\n\n // For accessor columns\n const accessorCol = col as AccessorColumnDef\n return columnHelper.accessor((row) => row[accessorCol.id as keyof TData], {\n id: accessorCol.id,\n header: (context: HeaderContext<TData, unknown>) => getHeader(col, slots, context),\n footer: (context: HeaderContext<TData, unknown>) => getFooter(col, slots, context),\n cell: (context: CellContext<TData, unknown>) => getCell(col, slots, context),\n }) as TStackColumnDef<TData>\n })\n}\n"],"names":[],"mappings":";;;;AAkBA,MAAM,SAAY,GAAA,CAChB,GACA,EAAA,KAAA,EACA,OACG,KAAA;AACH,EAAA,IAAI,IAAI,MAAQ,EAAA;AACd,IAAA,OAAO,GAAI,CAAA,MAAA;AAAA;AAGb,EAAM,MAAA,QAAA,GAAW,CAAU,OAAA,EAAA,GAAA,CAAI,EAAE,CAAA,CAAA;AAEjC,EAAI,IAAA,KAAA,CAAM,QAAQ,CAAG,EAAA;AACnB,IAAO,OAAA,KAAA,CAAM,QAAQ,CAAE,CAAA;AAAA,MACrB,QAAQ,OAAQ,CAAA,MAAA;AAAA,MAChB;AAAA,KACyB,CAAA;AAAA;AAG7B,EAAO,OAAA,UAAA,CAAW,IAAI,EAAG,CAAA,KAAA,CAAM,GAAG,CAAE,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA;AAC/C,CAAA;AAEA,MAAM,SAAY,GAAA,CAChB,GACA,EAAA,KAAA,EACA,OACG,KAAA;AACH,EAAA,IAAI,IAAI,MAAQ,EAAA;AACd,IAAA,OAAO,GAAI,CAAA,MAAA;AAAA;AAGb,EAAM,MAAA,QAAA,GAAW,CAAU,OAAA,EAAA,GAAA,CAAI,EAAE,CAAA,CAAA;AAEjC,EAAI,IAAA,KAAA,CAAM,QAAQ,CAAG,EAAA;AACnB,IAAO,OAAA,KAAA,CAAM,QAAQ,CAAE,CAAA;AAAA,MACrB,QAAQ,OAAQ,CAAA,MAAA;AAAA,MAChB;AAAA,KACyB,CAAA;AAAA;AAG7B,EAAO,OAAA,MAAA;AACT,CAAA;AAEA,MAAM,OAAU,GAAA,CACd,GACA,EAAA,KAAA,EACA,OACG,KAAA;AACH,EAAM,MAAA,QAAA,GAAW,CAAQ,KAAA,EAAA,GAAA,CAAI,EAAE,CAAA,CAAA;AAE/B,EAAI,IAAA,KAAA,CAAM,QAAQ,CAAG,EAAA;AACnB,IAAO,OAAA,KAAA,CAAM,QAAQ,CAAE,CAAA;AAAA,MACrB,KAAK,OAAQ,CAAA,GAAA;AAAA,MACb,OAAA;AAAA,MACA,KAAA,EAAO,QAAQ,QAAS;AAAA,KACD,CAAA;AAAA;AAG3B,EAAA,OAAO,QAAQ,QAAS,EAAA;AAC1B,CAAA;AAEO,MAAM,cAAiB,GAAA,CAC5B,YACA,EAAA,OAAA,EACA,KAC6B,KAAA;AAC7B,EAAO,OAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,GAAQ,KAAA;AAC1B,IAAI,IAAA,GAAA,CAAI,SAAS,OAAS,EAAA;AACxB,MAAA,MAAM,QAAW,GAAA,GAAA;AACjB,MAAA,OAAO,aAAa,KAAM,CAAA;AAAA,QACxB,IAAI,QAAS,CAAA,EAAA;AAAA,QACb,QAAQ,CAAC,OAAA,KAA2C,SAAU,CAAA,QAAA,EAAU,OAAO,OAAO,CAAA;AAAA,QACtF,QAAQ,CAAC,OAAA,KAA2C,SAAU,CAAA,QAAA,EAAU,OAAO,OAAO,CAAA;AAAA,QACtF,OAAS,EAAA,cAAA,CAAe,YAAc,EAAA,QAAA,CAAS,SAA+B,KAAK;AAAA,OACpF,CAAA;AAAA;AAGH,IAAI,IAAA,GAAA,CAAI,SAAS,SAAW,EAAA;AAC1B,MAAA,OAAO,aAAa,OAAQ,CAAA;AAAA,QAC1B,IAAI,GAAI,CAAA,EAAA;AAAA,QACR,QAAQ,CAAC,OAAA,KAA2C,SAAU,CAAA,GAAA,EAAK,OAAO,OAAO,CAAA;AAAA,QACjF,QAAQ,CAAC,OAAA,KAA2C,SAAU,CAAA,GAAA,EAAK,OAAO,OAAO,CAAA;AAAA,QACjF,MAAM,CAAC,OAAA,KAAyC,OAAQ,CAAA,GAAA,EAAK,OAAO,OAAO;AAAA,OAC5E,CAAA;AAAA;AAIH,IAAA,MAAM,WAAc,GAAA,GAAA;AACpB,IAAA,OAAO,aAAa,QAAS,CAAA,CAAC,QAAQ,GAAI,CAAA,WAAA,CAAY,EAAiB,CAAG,EAAA;AAAA,MACxE,IAAI,WAAY,CAAA,EAAA;AAAA,MAChB,QAAQ,CAAC,OAAA,KAA2C,SAAU,CAAA,GAAA,EAAK,OAAO,OAAO,CAAA;AAAA,MACjF,QAAQ,CAAC,OAAA,KAA2C,SAAU,CAAA,GAAA,EAAK,OAAO,OAAO,CAAA;AAAA,MACjF,MAAM,CAAC,OAAA,KAAyC,OAAQ,CAAA,GAAA,EAAK,OAAO,OAAO;AAAA,KAC5E,CAAA;AAAA,GACF,CAAA;AACH;;;;"}
|
|
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'\nimport type {\n ColumnDef,\n AccessorColumnDef,\n GroupColumnDef,\n HeaderSlotProps,\n CellSlotProps,\n FooterSlotProps,\n} from './types'\n\nconst getHeader = <TData extends RowData & object>(\n col: ColumnDef<TData>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, unknown>,\n) => {\n if (col.header) {\n return col.header\n }\n\n const slotName = `header-${col.id}`\n\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n } as HeaderSlotProps<TData>)\n }\n\n return capitalize(col.id.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 if (col.footer) {\n return col.footer\n }\n\n const slotName = `footer-${col.id}`\n\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n } as FooterSlotProps<TData>)\n }\n\n console.log(`footer for ${col.id} is undefined`)\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 slotName = `cell-${col.id}`\n\n if (slots[slotName]) {\n return slots[slotName]({\n row: context.row,\n context,\n value: context.getValue(),\n } as CellSlotProps<TData>)\n }\n\n return context.getValue()\n}\n\nexport const processColumns = <TData extends RowData & object>(\n columnHelper: ColumnHelper<TData>,\n columns: ColumnDef<TData>[],\n slots: Readonly<Slots>,\n): TStackColumnDef<TData>[] => {\n return columns.map((col) => {\n if (col.type === 'group') {\n const groupCol = col as GroupColumnDef<TData>\n return columnHelper.group({\n id: groupCol.id,\n header: (context: HeaderContext<TData, unknown>) => getHeader(groupCol, slots, context),\n footer: (context: HeaderContext<TData, unknown>) => getFooter(groupCol, slots, context),\n columns: processColumns(columnHelper, groupCol.columns as ColumnDef<TData>[], slots),\n }) as TStackColumnDef<TData>\n }\n\n if (col.type === 'display') {\n return columnHelper.display({\n id: col.id,\n header: (context: HeaderContext<TData, unknown>) => getHeader(col, slots, context),\n footer: (context: HeaderContext<TData, unknown>) => getFooter(col, slots, context),\n cell: (context: CellContext<TData, unknown>) => getCell(col, slots, context),\n }) as TStackColumnDef<TData>\n }\n\n // For accessor columns\n const accessorCol = col as AccessorColumnDef\n return columnHelper.accessor((row) => row[accessorCol.id as keyof TData], {\n id: accessorCol.id,\n header: (context: HeaderContext<TData, unknown>) => getHeader(col, slots, context),\n footer: (context: HeaderContext<TData, unknown>) => getFooter(col, slots, context),\n cell: (context: CellContext<TData, unknown>) => getCell(col, slots, context),\n }) as TStackColumnDef<TData>\n })\n}\n"],"names":[],"mappings":"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"}
|
package/dist/shared/utils.js
CHANGED
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'\nimport type {\n ColumnDef,\n AccessorColumnDef,\n GroupColumnDef,\n HeaderSlotProps,\n CellSlotProps,\n FooterSlotProps,\n} from './types'\n\nconst getHeader = <TData extends RowData & object>(\n col: ColumnDef<TData>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, unknown>,\n) => {\n if (col.header) {\n return col.header\n }\n\n const slotName = `header-${col.id}`\n\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n } as HeaderSlotProps<TData>)\n }\n\n return capitalize(col.id.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 if (col.footer) {\n return col.footer\n }\n\n const slotName = `footer-${col.id}`\n\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n } as FooterSlotProps<TData>)\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 slotName = `cell-${col.id}`\n\n if (slots[slotName]) {\n return slots[slotName]({\n row: context.row,\n context,\n value: context.getValue(),\n } as CellSlotProps<TData>)\n }\n\n return context.getValue()\n}\n\nexport const processColumns = <TData extends RowData & object>(\n columnHelper: ColumnHelper<TData>,\n columns: ColumnDef<TData>[],\n slots: Readonly<Slots>,\n): TStackColumnDef<TData>[] => {\n return columns.map((col) => {\n if (col.type === 'group') {\n const groupCol = col as GroupColumnDef<TData>\n return columnHelper.group({\n id: groupCol.id,\n header: (context: HeaderContext<TData, unknown>) => getHeader(groupCol, slots, context),\n footer: (context: HeaderContext<TData, unknown>) => getFooter(groupCol, slots, context),\n columns: processColumns(columnHelper, groupCol.columns as ColumnDef<TData>[], slots),\n }) as TStackColumnDef<TData>\n }\n\n if (col.type === 'display') {\n return columnHelper.display({\n id: col.id,\n header: (context: HeaderContext<TData, unknown>) => getHeader(col, slots, context),\n footer: (context: HeaderContext<TData, unknown>) => getFooter(col, slots, context),\n cell: (context: CellContext<TData, unknown>) => getCell(col, slots, context),\n }) as TStackColumnDef<TData>\n }\n\n // For accessor columns\n const accessorCol = col as AccessorColumnDef\n return columnHelper.accessor((row) => row[accessorCol.id as keyof TData], {\n id: accessorCol.id,\n header: (context: HeaderContext<TData, unknown>) => getHeader(col, slots, context),\n footer: (context: HeaderContext<TData, unknown>) => getFooter(col, slots, context),\n cell: (context: CellContext<TData, unknown>) => getCell(col, slots, context),\n }) as TStackColumnDef<TData>\n })\n}\n"],"names":[],"mappings":"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"}
|
|
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'\nimport type {\n ColumnDef,\n AccessorColumnDef,\n GroupColumnDef,\n HeaderSlotProps,\n CellSlotProps,\n FooterSlotProps,\n} from './types'\n\nconst getHeader = <TData extends RowData & object>(\n col: ColumnDef<TData>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, unknown>,\n) => {\n if (col.header) {\n return col.header\n }\n\n const slotName = `header-${col.id}`\n\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n } as HeaderSlotProps<TData>)\n }\n\n return capitalize(col.id.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 if (col.footer) {\n return col.footer\n }\n\n const slotName = `footer-${col.id}`\n\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n } as FooterSlotProps<TData>)\n }\n\n console.log(`footer for ${col.id} is undefined`)\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 slotName = `cell-${col.id}`\n\n if (slots[slotName]) {\n return slots[slotName]({\n row: context.row,\n context,\n value: context.getValue(),\n } as CellSlotProps<TData>)\n }\n\n return context.getValue()\n}\n\nexport const processColumns = <TData extends RowData & object>(\n columnHelper: ColumnHelper<TData>,\n columns: ColumnDef<TData>[],\n slots: Readonly<Slots>,\n): TStackColumnDef<TData>[] => {\n return columns.map((col) => {\n if (col.type === 'group') {\n const groupCol = col as GroupColumnDef<TData>\n return columnHelper.group({\n id: groupCol.id,\n header: (context: HeaderContext<TData, unknown>) => getHeader(groupCol, slots, context),\n footer: (context: HeaderContext<TData, unknown>) => getFooter(groupCol, slots, context),\n columns: processColumns(columnHelper, groupCol.columns as ColumnDef<TData>[], slots),\n }) as TStackColumnDef<TData>\n }\n\n if (col.type === 'display') {\n return columnHelper.display({\n id: col.id,\n header: (context: HeaderContext<TData, unknown>) => getHeader(col, slots, context),\n footer: (context: HeaderContext<TData, unknown>) => getFooter(col, slots, context),\n cell: (context: CellContext<TData, unknown>) => getCell(col, slots, context),\n }) as TStackColumnDef<TData>\n }\n\n // For accessor columns\n const accessorCol = col as AccessorColumnDef\n return columnHelper.accessor((row) => row[accessorCol.id as keyof TData], {\n id: accessorCol.id,\n header: (context: HeaderContext<TData, unknown>) => getHeader(col, slots, context),\n footer: (context: HeaderContext<TData, unknown>) => getFooter(col, slots, context),\n cell: (context: CellContext<TData, unknown>) => getCell(col, slots, context),\n }) as TStackColumnDef<TData>\n })\n}\n"],"names":[],"mappings":"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"}
|