tanstack-table-vue 0.0.8 → 0.0.9

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.
@@ -17,21 +17,27 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
17
17
  const slots = vue.useSlots();
18
18
  const columnHelper = vueTable.createColumnHelper();
19
19
  const processedColumns = vue.computed(() => {
20
- vueTable.useVueTable({
21
- columns: props.columns,
22
- data: props.data,
23
- getCoreRowModel: vueTable.getCoreRowModel(),
24
- ...props.tableOptions
25
- });
26
20
  return shared_utils.processColumns(columnHelper, props.columns, slots);
27
21
  });
28
- const tableOptions = {
22
+ const initialTableOptions = {
29
23
  columns: processedColumns.value,
30
24
  data: props.data,
31
25
  getCoreRowModel: vueTable.getCoreRowModel(),
32
26
  ...props.tableOptions
33
27
  };
34
- const table = vueTable.useVueTable(tableOptions);
28
+ const table = vueTable.useVueTable(initialTableOptions);
29
+ vue.watch(() => props.data, (newData) => {
30
+ table.setOptions((old) => ({
31
+ ...old,
32
+ data: newData
33
+ }));
34
+ }, { flush: "sync" });
35
+ vue.watch(processedColumns, (newColumns) => {
36
+ table.setOptions((old) => ({
37
+ ...old,
38
+ columns: newColumns
39
+ }));
40
+ }, { flush: "sync" });
35
41
  return (_ctx, _cache) => {
36
42
  return vue.renderSlot(_ctx.$slots, "default", { table: vue.unref(table) });
37
43
  };
@@ -1 +1 @@
1
- {"version":3,"file":"TSTable.cjs","sources":["../../src/components/TSTable.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ColumnDef, RowData, Table } from '@tanstack/vue-table'\nimport type { CellSlotProps, FooterSlotProps, HeaderSlotProps } from '../shared/types'\n\nexport interface TSTableProps<TData extends RowData & object> {\n columns: ColumnDef<TData, any>[]\n data: TData[]\n tableOptions?: Record<string, any>\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"TData extends RowData & object\">\nimport { computed, useSlots } from 'vue'\nimport { useVueTable, createColumnHelper, type ColumnDef as TStackColumnDef, getCoreRowModel } from '@tanstack/vue-table'\nimport { processColumns } from '../shared'\n\nconst props = defineProps<TSTableProps<TData>>()\n\nconst slots = useSlots()\nconst columnHelper = createColumnHelper<TData>()\n\nconst processedColumns = computed(() => {\n const initialTable = useVueTable<TData>({\n columns: props.columns as TStackColumnDef<TData, any>[],\n data: props.data,\n getCoreRowModel: getCoreRowModel(),\n ...props.tableOptions\n })\n return processColumns(columnHelper, props.columns, slots, initialTable)\n})\n\nconst tableOptions = {\n columns: processedColumns.value,\n data: props.data,\n getCoreRowModel: getCoreRowModel(),\n ...props.tableOptions\n}\n\nconst table = useVueTable<TData>(tableOptions)\n\ndefineSlots<{\n default: (props: {\n table: Table<TData>;\n }) => any;\n\n [key: `header-${string}`]: (props: HeaderSlotProps<TData>) => any;\n [key: `cell-${string}`]: (props: CellSlotProps<TData>) => any;\n [key: `footer-${string}`]: (props: FooterSlotProps<TData>) => any;\n}>()\n</script>\n\n<template>\n <slot :table=\"table\" />\n</template>"],"names":["useSlots","createColumnHelper","computed","useVueTable","getCoreRowModel","processColumns"],"mappings":";;;;;;;;;;;;;;;AAgBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,QAAQA,YAAS,EAAA;AACvB,IAAA,MAAM,eAAeC,2BAA0B,EAAA;AAE/C,IAAM,MAAA,gBAAA,GAAmBC,aAAS,MAAM;AACtC,MAAqBC,oBAAmB,CAAA;AAAA,QACtC,SAAS,KAAM,CAAA,OAAA;AAAA,QACf,MAAM,KAAM,CAAA,IAAA;AAAA,QACZ,iBAAiBC,wBAAgB,EAAA;AAAA,QACjC,GAAG,KAAM,CAAA;AAAA,OACV;AACD,MAAA,OAAOC,2BAAe,CAAA,YAAA,EAAc,KAAM,CAAA,OAAA,EAAS,KAAmB,CAAA;AAAA,KACvE,CAAA;AAED,IAAA,MAAM,YAAe,GAAA;AAAA,MACnB,SAAS,gBAAiB,CAAA,KAAA;AAAA,MAC1B,MAAM,KAAM,CAAA,IAAA;AAAA,MACZ,iBAAiBD,wBAAgB,EAAA;AAAA,MACjC,GAAG,KAAM,CAAA;AAAA,KACX;AAEA,IAAM,MAAA,KAAA,GAAQD,qBAAmB,YAAY,CAAA;;;;;;;;;"}
1
+ {"version":3,"file":"TSTable.cjs","sources":["../../src/components/TSTable.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ColumnDef, RowData, Table, TableOptionsWithReactiveData } from '@tanstack/vue-table'\nimport type { CellSlotProps, FooterSlotProps, HeaderSlotProps } from '../shared/types'\n\nexport type TableOptions = Omit<TableOptionsWithReactiveData<any>, 'columns' | 'data' | 'getCoreRowModel'>\n\nexport interface TSTableProps<TData extends RowData & object> {\n columns: ColumnDef<TData, any>[]\n data: TData[]\n tableOptions?: TableOptions\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"TData extends RowData & object\">\nimport { computed, useSlots, watch } from 'vue'\nimport { useVueTable, createColumnHelper, getCoreRowModel } from '@tanstack/vue-table'\nimport { processColumns } from '../shared'\n\nconst props = defineProps<TSTableProps<TData>>()\n\nconst slots = useSlots()\nconst columnHelper = createColumnHelper<TData>()\n\n// Use memo pattern for expensive column processing\nconst processedColumns = computed(() => {\n return processColumns(columnHelper, props.columns, slots)\n})\n\n// Create initial table options\nconst initialTableOptions = {\n columns: processedColumns.value,\n data: props.data,\n getCoreRowModel: getCoreRowModel(),\n ...props.tableOptions\n}\n\n// Initialize table with initial options\nconst table = useVueTable<TData>(initialTableOptions)\n\n// Watch for data changes and update table efficiently\nwatch(() => props.data, (newData) => {\n table.setOptions((old) => ({\n ...old,\n data: newData,\n }))\n}, { flush: 'sync' })\n\n// Watch columns separately to avoid unnecessary recalculations\nwatch(processedColumns, (newColumns) => {\n table.setOptions((old) => ({\n ...old,\n columns: newColumns,\n }))\n}, { flush: 'sync' })\n\ndefineSlots<{\n default: (props: {\n table: Table<TData>;\n }) => any;\n\n [key: `header-${string}`]: (props: HeaderSlotProps<TData>) => any;\n [key: `cell-${string}`]: (props: CellSlotProps<TData>) => any;\n [key: `footer-${string}`]: (props: FooterSlotProps<TData>) => any;\n}>()\n</script>\n\n<template>\n <slot :table=\"table\" />\n</template>"],"names":["useSlots","createColumnHelper","computed","processColumns","getCoreRowModel","useVueTable","watch"],"mappings":";;;;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,QAAQA,YAAS,EAAA;AACvB,IAAA,MAAM,eAAeC,2BAA0B,EAAA;AAG/C,IAAM,MAAA,gBAAA,GAAmBC,aAAS,MAAM;AACtC,MAAA,OAAOC,2BAAe,CAAA,YAAA,EAAc,KAAM,CAAA,OAAA,EAAS,KAAK,CAAA;AAAA,KACzD,CAAA;AAGD,IAAA,MAAM,mBAAsB,GAAA;AAAA,MAC1B,SAAS,gBAAiB,CAAA,KAAA;AAAA,MAC1B,MAAM,KAAM,CAAA,IAAA;AAAA,MACZ,iBAAiBC,wBAAgB,EAAA;AAAA,MACjC,GAAG,KAAM,CAAA;AAAA,KACX;AAGA,IAAM,MAAA,KAAA,GAAQC,qBAAmB,mBAAmB,CAAA;AAGpD,IAAAC,SAAA,CAAM,MAAM,KAAA,CAAM,IAAM,EAAA,CAAC,OAAY,KAAA;AACnC,MAAM,KAAA,CAAA,UAAA,CAAW,CAAC,GAAS,MAAA;AAAA,QACzB,GAAG,GAAA;AAAA,QACH,IAAM,EAAA;AAAA,OACN,CAAA,CAAA;AAAA,KACD,EAAA,EAAE,KAAO,EAAA,MAAA,EAAQ,CAAA;AAGpB,IAAMA,SAAA,CAAA,gBAAA,EAAkB,CAAC,UAAe,KAAA;AACtC,MAAM,KAAA,CAAA,UAAA,CAAW,CAAC,GAAS,MAAA;AAAA,QACzB,GAAG,GAAA;AAAA,QACH,OAAS,EAAA;AAAA,OACT,CAAA,CAAA;AAAA,KACD,EAAA,EAAE,KAAO,EAAA,MAAA,EAAQ,CAAA;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import 'lodash.capitalize';
2
- import { defineComponent, useSlots, computed, renderSlot, unref } from 'vue';
3
- import { createColumnHelper, useVueTable, getCoreRowModel } from '@tanstack/vue-table';
2
+ import { defineComponent, useSlots, computed, watch, renderSlot, unref } from 'vue';
3
+ import { createColumnHelper, getCoreRowModel, useVueTable } from '@tanstack/vue-table';
4
4
  import { p as processColumns } from '../shared/utils.js';
5
5
 
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -15,21 +15,27 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
15
15
  const slots = useSlots();
16
16
  const columnHelper = createColumnHelper();
17
17
  const processedColumns = computed(() => {
18
- useVueTable({
19
- columns: props.columns,
20
- data: props.data,
21
- getCoreRowModel: getCoreRowModel(),
22
- ...props.tableOptions
23
- });
24
18
  return processColumns(columnHelper, props.columns, slots);
25
19
  });
26
- const tableOptions = {
20
+ const initialTableOptions = {
27
21
  columns: processedColumns.value,
28
22
  data: props.data,
29
23
  getCoreRowModel: getCoreRowModel(),
30
24
  ...props.tableOptions
31
25
  };
32
- const table = useVueTable(tableOptions);
26
+ const table = useVueTable(initialTableOptions);
27
+ watch(() => props.data, (newData) => {
28
+ table.setOptions((old) => ({
29
+ ...old,
30
+ data: newData
31
+ }));
32
+ }, { flush: "sync" });
33
+ watch(processedColumns, (newColumns) => {
34
+ table.setOptions((old) => ({
35
+ ...old,
36
+ columns: newColumns
37
+ }));
38
+ }, { flush: "sync" });
33
39
  return (_ctx, _cache) => {
34
40
  return renderSlot(_ctx.$slots, "default", { table: unref(table) });
35
41
  };
@@ -1 +1 @@
1
- {"version":3,"file":"TSTable.js","sources":["../../src/components/TSTable.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ColumnDef, RowData, Table } from '@tanstack/vue-table'\nimport type { CellSlotProps, FooterSlotProps, HeaderSlotProps } from '../shared/types'\n\nexport interface TSTableProps<TData extends RowData & object> {\n columns: ColumnDef<TData, any>[]\n data: TData[]\n tableOptions?: Record<string, any>\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"TData extends RowData & object\">\nimport { computed, useSlots } from 'vue'\nimport { useVueTable, createColumnHelper, type ColumnDef as TStackColumnDef, getCoreRowModel } from '@tanstack/vue-table'\nimport { processColumns } from '../shared'\n\nconst props = defineProps<TSTableProps<TData>>()\n\nconst slots = useSlots()\nconst columnHelper = createColumnHelper<TData>()\n\nconst processedColumns = computed(() => {\n const initialTable = useVueTable<TData>({\n columns: props.columns as TStackColumnDef<TData, any>[],\n data: props.data,\n getCoreRowModel: getCoreRowModel(),\n ...props.tableOptions\n })\n return processColumns(columnHelper, props.columns, slots, initialTable)\n})\n\nconst tableOptions = {\n columns: processedColumns.value,\n data: props.data,\n getCoreRowModel: getCoreRowModel(),\n ...props.tableOptions\n}\n\nconst table = useVueTable<TData>(tableOptions)\n\ndefineSlots<{\n default: (props: {\n table: Table<TData>;\n }) => any;\n\n [key: `header-${string}`]: (props: HeaderSlotProps<TData>) => any;\n [key: `cell-${string}`]: (props: CellSlotProps<TData>) => any;\n [key: `footer-${string}`]: (props: FooterSlotProps<TData>) => any;\n}>()\n</script>\n\n<template>\n <slot :table=\"table\" />\n</template>"],"names":[],"mappings":";;;;;;;;;;;;;AAgBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,QAAQ,QAAS,EAAA;AACvB,IAAA,MAAM,eAAe,kBAA0B,EAAA;AAE/C,IAAM,MAAA,gBAAA,GAAmB,SAAS,MAAM;AACtC,MAAqB,WAAmB,CAAA;AAAA,QACtC,SAAS,KAAM,CAAA,OAAA;AAAA,QACf,MAAM,KAAM,CAAA,IAAA;AAAA,QACZ,iBAAiB,eAAgB,EAAA;AAAA,QACjC,GAAG,KAAM,CAAA;AAAA,OACV;AACD,MAAA,OAAO,cAAe,CAAA,YAAA,EAAc,KAAM,CAAA,OAAA,EAAS,KAAmB,CAAA;AAAA,KACvE,CAAA;AAED,IAAA,MAAM,YAAe,GAAA;AAAA,MACnB,SAAS,gBAAiB,CAAA,KAAA;AAAA,MAC1B,MAAM,KAAM,CAAA,IAAA;AAAA,MACZ,iBAAiB,eAAgB,EAAA;AAAA,MACjC,GAAG,KAAM,CAAA;AAAA,KACX;AAEA,IAAM,MAAA,KAAA,GAAQ,YAAmB,YAAY,CAAA;;;;;;;;;"}
1
+ {"version":3,"file":"TSTable.js","sources":["../../src/components/TSTable.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ColumnDef, RowData, Table, TableOptionsWithReactiveData } from '@tanstack/vue-table'\nimport type { CellSlotProps, FooterSlotProps, HeaderSlotProps } from '../shared/types'\n\nexport type TableOptions = Omit<TableOptionsWithReactiveData<any>, 'columns' | 'data' | 'getCoreRowModel'>\n\nexport interface TSTableProps<TData extends RowData & object> {\n columns: ColumnDef<TData, any>[]\n data: TData[]\n tableOptions?: TableOptions\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"TData extends RowData & object\">\nimport { computed, useSlots, watch } from 'vue'\nimport { useVueTable, createColumnHelper, getCoreRowModel } from '@tanstack/vue-table'\nimport { processColumns } from '../shared'\n\nconst props = defineProps<TSTableProps<TData>>()\n\nconst slots = useSlots()\nconst columnHelper = createColumnHelper<TData>()\n\n// Use memo pattern for expensive column processing\nconst processedColumns = computed(() => {\n return processColumns(columnHelper, props.columns, slots)\n})\n\n// Create initial table options\nconst initialTableOptions = {\n columns: processedColumns.value,\n data: props.data,\n getCoreRowModel: getCoreRowModel(),\n ...props.tableOptions\n}\n\n// Initialize table with initial options\nconst table = useVueTable<TData>(initialTableOptions)\n\n// Watch for data changes and update table efficiently\nwatch(() => props.data, (newData) => {\n table.setOptions((old) => ({\n ...old,\n data: newData,\n }))\n}, { flush: 'sync' })\n\n// Watch columns separately to avoid unnecessary recalculations\nwatch(processedColumns, (newColumns) => {\n table.setOptions((old) => ({\n ...old,\n columns: newColumns,\n }))\n}, { flush: 'sync' })\n\ndefineSlots<{\n default: (props: {\n table: Table<TData>;\n }) => any;\n\n [key: `header-${string}`]: (props: HeaderSlotProps<TData>) => any;\n [key: `cell-${string}`]: (props: CellSlotProps<TData>) => any;\n [key: `footer-${string}`]: (props: FooterSlotProps<TData>) => any;\n}>()\n</script>\n\n<template>\n <slot :table=\"table\" />\n</template>"],"names":[],"mappings":";;;;;;;;;;;;;AAkBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,QAAQ,QAAS,EAAA;AACvB,IAAA,MAAM,eAAe,kBAA0B,EAAA;AAG/C,IAAM,MAAA,gBAAA,GAAmB,SAAS,MAAM;AACtC,MAAA,OAAO,cAAe,CAAA,YAAA,EAAc,KAAM,CAAA,OAAA,EAAS,KAAK,CAAA;AAAA,KACzD,CAAA;AAGD,IAAA,MAAM,mBAAsB,GAAA;AAAA,MAC1B,SAAS,gBAAiB,CAAA,KAAA;AAAA,MAC1B,MAAM,KAAM,CAAA,IAAA;AAAA,MACZ,iBAAiB,eAAgB,EAAA;AAAA,MACjC,GAAG,KAAM,CAAA;AAAA,KACX;AAGA,IAAM,MAAA,KAAA,GAAQ,YAAmB,mBAAmB,CAAA;AAGpD,IAAA,KAAA,CAAM,MAAM,KAAA,CAAM,IAAM,EAAA,CAAC,OAAY,KAAA;AACnC,MAAM,KAAA,CAAA,UAAA,CAAW,CAAC,GAAS,MAAA;AAAA,QACzB,GAAG,GAAA;AAAA,QACH,IAAM,EAAA;AAAA,OACN,CAAA,CAAA;AAAA,KACD,EAAA,EAAE,KAAO,EAAA,MAAA,EAAQ,CAAA;AAGpB,IAAM,KAAA,CAAA,gBAAA,EAAkB,CAAC,UAAe,KAAA;AACtC,MAAM,KAAA,CAAA,UAAA,CAAW,CAAC,GAAS,MAAA;AAAA,QACzB,GAAG,GAAA;AAAA,QACH,OAAS,EAAA;AAAA,OACT,CAAA,CAAA;AAAA,KACD,EAAA,EAAE,KAAO,EAAA,MAAA,EAAQ,CAAA;;;;;;;;;"}
package/dist/index.d.ts CHANGED
@@ -11,6 +11,7 @@ import { RowData } from '@tanstack/vue-table';
11
11
  import { ShallowUnwrapRef } from 'vue';
12
12
  import { Slots } from 'vue';
13
13
  import { Table } from '@tanstack/vue-table';
14
+ import { TableOptionsWithReactiveData } from '@tanstack/vue-table';
14
15
  import { VNode } from 'vue';
15
16
  import { VNodeProps } from 'vue';
16
17
 
@@ -34,7 +35,9 @@ export declare interface HeaderSlotProps<TData extends RowData> {
34
35
  context: HeaderContext<TData, any>;
35
36
  }
36
37
 
37
- export declare const processColumns: <TData extends RowData & object>(columnHelper: ColumnHelper<TData>, columns: ColumnDef<TData, any>[], slots: Readonly<Slots>, table: Table<TData>) => ColumnDef<TData, any>[];
38
+ export declare const processColumns: <TData extends RowData & object>(columnHelper: ColumnHelper<TData>, columns: ColumnDef<TData, any>[], slots: Readonly<Slots>) => ColumnDef<TData, any>[];
39
+
40
+ export declare type TableOptions = Omit<TableOptionsWithReactiveData<any>, 'columns' | 'data' | 'getCoreRowModel'>;
38
41
 
39
42
  export declare const TSTable: <TData extends RowData & object>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
40
43
  props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{} & VNodeProps & AllowedComponentProps & ComponentCustomProps, never>, never> & TSTableProps<TData> & Partial<{}>> & PublicProps;
@@ -63,7 +66,7 @@ export declare const TSTable: <TData extends RowData & object>(__VLS_props: NonN
63
66
  export declare interface TSTableProps<TData extends RowData & object> {
64
67
  columns: ColumnDef<TData, any>[];
65
68
  data: TData[];
66
- tableOptions?: Record<string, any>;
69
+ tableOptions?: TableOptions;
67
70
  }
68
71
 
69
72
  export { }
@@ -46,7 +46,7 @@ const getCell = (col, slots, context) => {
46
46
  }
47
47
  return value !== void 0 && value !== null ? value : "-";
48
48
  };
49
- const processColumns = (columnHelper, columns, slots, table) => {
49
+ const processColumns = (columnHelper, columns, slots) => {
50
50
  return columns.map((col) => {
51
51
  if ("columns" in col && Array.isArray(col.columns)) {
52
52
  return columnHelper.group({
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs","sources":["../../src/shared/utils.ts"],"sourcesContent":["import type {\n ColumnHelper,\n HeaderContext,\n CellContext,\n RowData,\n ColumnDef as TStackColumnDef,\n Table,\n ColumnDef,\n} from '@tanstack/vue-table'\nimport type { Slots } from 'vue'\nimport capitalize from 'lodash.capitalize'\n\nconst getHeader = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `header-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n })\n }\n\n // Then use header prop if provided\n if (col.header) {\n return col.header\n }\n\n // Finally fallback to capitalized id\n return capitalize(columnId.split('-').join(' '))\n}\n\nconst getFooter = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `footer-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n })\n }\n\n // Then use footer prop if provided\n if (col.footer) {\n return col.footer\n }\n\n return undefined\n}\n\nconst getCell = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: CellContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `cell-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n cell: context.cell,\n row: context.row,\n value: context.getValue(),\n })\n }\n\n // Then handle cell value\n const value = context.getValue()\n if (col.cell) {\n return typeof col.cell === 'function' ? col.cell(context) : col.cell\n }\n return value !== undefined && value !== null ? value : '-'\n}\n\nexport const processColumns = <TData extends RowData & object>(\n columnHelper: ColumnHelper<TData>,\n columns: ColumnDef<TData, any>[],\n slots: Readonly<Slots>,\n table: Table<TData>,\n): TStackColumnDef<TData, any>[] => {\n return columns.map((col): TStackColumnDef<TData, any> => {\n // Handle group columns by checking if columns property exists\n if ('columns' in col && Array.isArray(col.columns)) {\n return columnHelper.group({\n id: col.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n columns: processColumns(columnHelper, col.columns as ColumnDef<TData, any>[], slots, table),\n meta: col.meta,\n })\n }\n\n // Handle accessor columns\n const accessorCol = col as any\n if (accessorCol.accessorKey) {\n return columnHelper.accessor(accessorCol.accessorKey, {\n id: accessorCol.id || accessorCol.accessorKey,\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n }\n\n if (accessorCol.accessorFn) {\n return columnHelper.accessor(accessorCol.accessorFn, {\n id: accessorCol.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n }\n\n // Default case - treat as display column\n return columnHelper.display({\n id: col.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n })\n}\n"],"names":[],"mappings":"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"}
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 ColumnDef,\n} from '@tanstack/vue-table'\nimport type { Slots } from 'vue'\nimport capitalize from 'lodash.capitalize'\n\nconst getHeader = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `header-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n })\n }\n\n // Then use header prop if provided\n if (col.header) {\n return col.header\n }\n\n // Finally fallback to capitalized id\n return capitalize(columnId.split('-').join(' '))\n}\n\nconst getFooter = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `footer-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n })\n }\n\n // Then use footer prop if provided\n if (col.footer) {\n return col.footer\n }\n\n return undefined\n}\n\nconst getCell = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: CellContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `cell-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n cell: context.cell,\n row: context.row,\n value: context.getValue(),\n })\n }\n\n // Then handle cell value\n const value = context.getValue()\n if (col.cell) {\n return typeof col.cell === 'function' ? col.cell(context) : col.cell\n }\n return value !== undefined && value !== null ? value : '-'\n}\n\nexport const processColumns = <TData extends RowData & object>(\n columnHelper: ColumnHelper<TData>,\n columns: ColumnDef<TData, any>[],\n slots: Readonly<Slots>,\n): TStackColumnDef<TData, any>[] => {\n return columns.map((col): TStackColumnDef<TData, any> => {\n // Handle group columns by checking if columns property exists\n if ('columns' in col && Array.isArray(col.columns)) {\n return columnHelper.group({\n id: col.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n columns: processColumns(columnHelper, col.columns as ColumnDef<TData, any>[], slots),\n meta: col.meta,\n })\n }\n\n // Handle accessor columns\n const accessorCol = col as any\n if (accessorCol.accessorKey) {\n return columnHelper.accessor(accessorCol.accessorKey, {\n id: accessorCol.id || accessorCol.accessorKey,\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n }\n\n if (accessorCol.accessorFn) {\n return columnHelper.accessor(accessorCol.accessorFn, {\n id: accessorCol.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n }\n\n // Default case - treat as display column\n return columnHelper.display({\n id: col.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n })\n}\n"],"names":[],"mappings":"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"}
@@ -44,7 +44,7 @@ const getCell = (col, slots, context) => {
44
44
  }
45
45
  return value !== void 0 && value !== null ? value : "-";
46
46
  };
47
- const processColumns = (columnHelper, columns, slots, table) => {
47
+ const processColumns = (columnHelper, columns, slots) => {
48
48
  return columns.map((col) => {
49
49
  if ("columns" in col && Array.isArray(col.columns)) {
50
50
  return columnHelper.group({
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../src/shared/utils.ts"],"sourcesContent":["import type {\n ColumnHelper,\n HeaderContext,\n CellContext,\n RowData,\n ColumnDef as TStackColumnDef,\n Table,\n ColumnDef,\n} from '@tanstack/vue-table'\nimport type { Slots } from 'vue'\nimport capitalize from 'lodash.capitalize'\n\nconst getHeader = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `header-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n })\n }\n\n // Then use header prop if provided\n if (col.header) {\n return col.header\n }\n\n // Finally fallback to capitalized id\n return capitalize(columnId.split('-').join(' '))\n}\n\nconst getFooter = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `footer-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n })\n }\n\n // Then use footer prop if provided\n if (col.footer) {\n return col.footer\n }\n\n return undefined\n}\n\nconst getCell = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: CellContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `cell-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n cell: context.cell,\n row: context.row,\n value: context.getValue(),\n })\n }\n\n // Then handle cell value\n const value = context.getValue()\n if (col.cell) {\n return typeof col.cell === 'function' ? col.cell(context) : col.cell\n }\n return value !== undefined && value !== null ? value : '-'\n}\n\nexport const processColumns = <TData extends RowData & object>(\n columnHelper: ColumnHelper<TData>,\n columns: ColumnDef<TData, any>[],\n slots: Readonly<Slots>,\n table: Table<TData>,\n): TStackColumnDef<TData, any>[] => {\n return columns.map((col): TStackColumnDef<TData, any> => {\n // Handle group columns by checking if columns property exists\n if ('columns' in col && Array.isArray(col.columns)) {\n return columnHelper.group({\n id: col.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n columns: processColumns(columnHelper, col.columns as ColumnDef<TData, any>[], slots, table),\n meta: col.meta,\n })\n }\n\n // Handle accessor columns\n const accessorCol = col as any\n if (accessorCol.accessorKey) {\n return columnHelper.accessor(accessorCol.accessorKey, {\n id: accessorCol.id || accessorCol.accessorKey,\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n }\n\n if (accessorCol.accessorFn) {\n return columnHelper.accessor(accessorCol.accessorFn, {\n id: accessorCol.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n }\n\n // Default case - treat as display column\n return columnHelper.display({\n id: col.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n })\n}\n"],"names":[],"mappings":"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"}
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 ColumnDef,\n} from '@tanstack/vue-table'\nimport type { Slots } from 'vue'\nimport capitalize from 'lodash.capitalize'\n\nconst getHeader = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `header-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n })\n }\n\n // Then use header prop if provided\n if (col.header) {\n return col.header\n }\n\n // Finally fallback to capitalized id\n return capitalize(columnId.split('-').join(' '))\n}\n\nconst getFooter = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: HeaderContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `footer-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n column: context.column,\n context,\n })\n }\n\n // Then use footer prop if provided\n if (col.footer) {\n return col.footer\n }\n\n return undefined\n}\n\nconst getCell = <TData extends RowData & object>(\n col: ColumnDef<TData, any>,\n slots: Readonly<Slots>,\n context: CellContext<TData, any>,\n) => {\n const columnId = (col as any).accessorKey || col.id || ''\n const slotName = `cell-${columnId}`\n\n // Check slot first\n if (slots[slotName]) {\n return slots[slotName]({\n cell: context.cell,\n row: context.row,\n value: context.getValue(),\n })\n }\n\n // Then handle cell value\n const value = context.getValue()\n if (col.cell) {\n return typeof col.cell === 'function' ? col.cell(context) : col.cell\n }\n return value !== undefined && value !== null ? value : '-'\n}\n\nexport const processColumns = <TData extends RowData & object>(\n columnHelper: ColumnHelper<TData>,\n columns: ColumnDef<TData, any>[],\n slots: Readonly<Slots>,\n): TStackColumnDef<TData, any>[] => {\n return columns.map((col): TStackColumnDef<TData, any> => {\n // Handle group columns by checking if columns property exists\n if ('columns' in col && Array.isArray(col.columns)) {\n return columnHelper.group({\n id: col.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n columns: processColumns(columnHelper, col.columns as ColumnDef<TData, any>[], slots),\n meta: col.meta,\n })\n }\n\n // Handle accessor columns\n const accessorCol = col as any\n if (accessorCol.accessorKey) {\n return columnHelper.accessor(accessorCol.accessorKey, {\n id: accessorCol.id || accessorCol.accessorKey,\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n }\n\n if (accessorCol.accessorFn) {\n return columnHelper.accessor(accessorCol.accessorFn, {\n id: accessorCol.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n }\n\n // Default case - treat as display column\n return columnHelper.display({\n id: col.id || String(Math.random()),\n header: (context: HeaderContext<TData, any>) => getHeader(col, slots, context),\n footer: col.footer ? (context: HeaderContext<TData, any>) => getFooter(col, slots, context) : undefined,\n cell: (context: CellContext<TData, any>) => getCell(col, slots, context),\n meta: col.meta,\n })\n })\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tanstack-table-vue",
3
- "version": "0.0.8",
3
+ "version": "0.0.9",
4
4
  "type": "module",
5
5
  "homepage": "https://github.com/dacsang97/tanstack-table-vue",
6
6
  "repository": {