tanstack-table-vue 0.0.3 → 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.
@@ -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.createElementBlock("div", _hoisted_1, [
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
- ]);
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 <div class=\"p-2\">\n <table>\n <thead>\n <tr v-for=\"headerGroup in table.getHeaderGroups()\" :key=\"headerGroup.id\">\n <th v-for=\"header in headerGroup.headers\" :key=\"header.id\" :colSpan=\"header.colSpan\">\n <FlexRender v-if=\"!header.isPlaceholder\" :render=\"header.column.columnDef.header\"\n :props=\"header.getContext()\" />\n </th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"row in table.getRowModel().rows\" :key=\"row.id\">\n <td v-for=\"cell in row.getVisibleCells()\" :key=\"cell.id\">\n <FlexRender :render=\"cell.column.columnDef.cell\" :props=\"cell.getContext()\" />\n </td>\n </tr>\n </tbody>\n <tfoot>\n <tr v-for=\"footerGroup in table.getFooterGroups()\" :key=\"footerGroup.id\">\n <th v-for=\"header in footerGroup.headers\" :key=\"header.id\" :colSpan=\"header.colSpan\">\n <FlexRender v-if=\"!header.isPlaceholder\" :render=\"header.column.columnDef.footer\"\n :props=\"header.getContext()\" />\n </th>\n </tr>\n </tfoot>\n </table>\n </div>\n</template>"],"names":["useSlots","createColumnHelper","computed","processColumns","useVueTable","getCoreRowModel"],"mappings":";;;;;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAQd,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
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, createElementBlock, openBlock, createElementVNode, Fragment, renderList, unref, createBlock, createCommentVNode, createVNode } from 'vue';
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(), createElementBlock("div", _hoisted_1, [
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
- ]);
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 <div class=\"p-2\">\n <table>\n <thead>\n <tr v-for=\"headerGroup in table.getHeaderGroups()\" :key=\"headerGroup.id\">\n <th v-for=\"header in headerGroup.headers\" :key=\"header.id\" :colSpan=\"header.colSpan\">\n <FlexRender v-if=\"!header.isPlaceholder\" :render=\"header.column.columnDef.header\"\n :props=\"header.getContext()\" />\n </th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"row in table.getRowModel().rows\" :key=\"row.id\">\n <td v-for=\"cell in row.getVisibleCells()\" :key=\"cell.id\">\n <FlexRender :render=\"cell.column.columnDef.cell\" :props=\"cell.getContext()\" />\n </td>\n </tr>\n </tbody>\n <tfoot>\n <tr v-for=\"footerGroup in table.getFooterGroups()\" :key=\"footerGroup.id\">\n <th v-for=\"header in footerGroup.headers\" :key=\"header.id\" :colSpan=\"header.colSpan\">\n <FlexRender v-if=\"!header.isPlaceholder\" :render=\"header.column.columnDef.footer\"\n :props=\"header.getContext()\" />\n </th>\n </tr>\n </tfoot>\n </table>\n </div>\n</template>"],"names":[],"mappings":";;;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAQd,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
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 \"./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
+ {"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 \"./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
+ {"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;;;;"}
@@ -26,6 +26,7 @@ const getFooter = (col, slots, context) => {
26
26
  context
27
27
  });
28
28
  }
29
+ console.log(`footer for ${col.id} is undefined`);
29
30
  return void 0;
30
31
  };
31
32
  const getCell = (col, slots, context) => {
@@ -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":"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"}
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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"}
@@ -24,6 +24,7 @@ const getFooter = (col, slots, context) => {
24
24
  context
25
25
  });
26
26
  }
27
+ console.log(`footer for ${col.id} is undefined`);
27
28
  return void 0;
28
29
  };
29
30
  const getCell = (col, slots, context) => {
@@ -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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"}
package/package.json CHANGED
@@ -1,7 +1,16 @@
1
1
  {
2
2
  "name": "tanstack-table-vue",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "type": "module",
5
+ "homepage": "https://github.com/dacsang97/tanstack-table-vue",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/dacsang97/tanstack-table-vue.git"
9
+ },
10
+ "bugs": {
11
+ "url": "https://github.com/dacsang97/tanstack-table-vue/issues"
12
+ },
13
+ "license": "MIT",
5
14
  "exports": {
6
15
  ".": {
7
16
  "types": "./dist/index.d.ts",