@tanstack/vue-table 9.0.0-alpha.25 → 9.0.0-alpha.30
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/FlexRender.cjs +60 -9
- package/dist/FlexRender.cjs.map +1 -1
- package/dist/FlexRender.d.cts +38 -5
- package/dist/FlexRender.d.ts +38 -5
- package/dist/FlexRender.js +60 -10
- package/dist/FlexRender.js.map +1 -1
- package/dist/createTableHook.d.cts +2 -2
- package/dist/createTableHook.d.ts +2 -2
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/package.json +3 -3
- package/src/FlexRender.ts +97 -16
package/dist/FlexRender.cjs
CHANGED
|
@@ -1,22 +1,73 @@
|
|
|
1
1
|
let vue = require("vue");
|
|
2
2
|
|
|
3
3
|
//#region src/FlexRender.ts
|
|
4
|
+
/**
|
|
5
|
+
* If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.
|
|
6
|
+
* @example flexRender(cell.column.columnDef.cell, cell.getContext())
|
|
7
|
+
*/
|
|
8
|
+
function flexRender(render, props) {
|
|
9
|
+
if (typeof render === "function") {
|
|
10
|
+
const rendered = render(props);
|
|
11
|
+
if ((0, vue.isVNode)(rendered)) return rendered;
|
|
12
|
+
if (typeof rendered === "function" || typeof rendered === "object") return (0, vue.h)(rendered, props);
|
|
13
|
+
return rendered;
|
|
14
|
+
}
|
|
15
|
+
if (typeof render === "object") return (0, vue.h)(render, props);
|
|
16
|
+
return render;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Simplified component for rendering headers, cells, or footers.
|
|
20
|
+
*
|
|
21
|
+
* Supports both the new shorthand pattern and the legacy `:render`/`:props` pattern:
|
|
22
|
+
* @example
|
|
23
|
+
* ```vue
|
|
24
|
+
* <!-- New shorthand pattern -->
|
|
25
|
+
* <FlexRender :cell="cell" />
|
|
26
|
+
* <FlexRender :header="header" />
|
|
27
|
+
* <FlexRender :footer="header" />
|
|
28
|
+
*
|
|
29
|
+
* <!-- Legacy pattern (still supported) -->
|
|
30
|
+
* <FlexRender :render="cell.column.columnDef.cell" :props="cell.getContext()" />
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
4
33
|
const FlexRender = (0, vue.defineComponent)({
|
|
5
|
-
props:
|
|
34
|
+
props: {
|
|
35
|
+
render: {
|
|
36
|
+
type: [
|
|
37
|
+
Function,
|
|
38
|
+
Object,
|
|
39
|
+
String
|
|
40
|
+
],
|
|
41
|
+
default: void 0
|
|
42
|
+
},
|
|
43
|
+
props: {
|
|
44
|
+
type: Object,
|
|
45
|
+
default: void 0
|
|
46
|
+
},
|
|
47
|
+
cell: {
|
|
48
|
+
type: Object,
|
|
49
|
+
default: void 0
|
|
50
|
+
},
|
|
51
|
+
header: {
|
|
52
|
+
type: Object,
|
|
53
|
+
default: void 0
|
|
54
|
+
},
|
|
55
|
+
footer: {
|
|
56
|
+
type: Object,
|
|
57
|
+
default: void 0
|
|
58
|
+
}
|
|
59
|
+
},
|
|
6
60
|
setup: (props) => {
|
|
7
61
|
return () => {
|
|
8
|
-
if (
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
return rendered;
|
|
13
|
-
}
|
|
14
|
-
if (typeof props.render === "object") return (0, vue.h)(props.render, props.props);
|
|
15
|
-
return props.render;
|
|
62
|
+
if (props.cell) return flexRender(props.cell.column.columnDef.cell, props.cell.getContext());
|
|
63
|
+
if (props.header) return flexRender(props.header.column.columnDef.header, props.header.getContext());
|
|
64
|
+
if (props.footer) return flexRender(props.footer.column.columnDef.footer, props.footer.getContext());
|
|
65
|
+
return flexRender(props.render, props.props);
|
|
16
66
|
};
|
|
17
67
|
}
|
|
18
68
|
});
|
|
19
69
|
|
|
20
70
|
//#endregion
|
|
21
71
|
exports.FlexRender = FlexRender;
|
|
72
|
+
exports.flexRender = flexRender;
|
|
22
73
|
//# sourceMappingURL=FlexRender.cjs.map
|
package/dist/FlexRender.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlexRender.cjs","names":[],"sources":["../src/FlexRender.ts"],"sourcesContent":["import { defineComponent, h, isVNode } from 'vue'\
|
|
1
|
+
{"version":3,"file":"FlexRender.cjs","names":[],"sources":["../src/FlexRender.ts"],"sourcesContent":["import { defineComponent, h, isVNode } from 'vue'\nimport type { PropType } from 'vue'\nimport type {\n Cell,\n CellData,\n Header,\n RowData,\n TableFeatures,\n} from '@tanstack/table-core'\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n * @example flexRender(cell.column.columnDef.cell, cell.getContext())\n */\nexport function flexRender(render: any, props: any): any {\n if (typeof render === 'function') {\n const rendered = render(props)\n\n if (isVNode(rendered)) {\n return rendered\n }\n\n if (typeof rendered === 'function' || typeof rendered === 'object') {\n return h(rendered, props)\n }\n\n return rendered\n }\n\n if (typeof render === 'object') {\n return h(render, props)\n }\n\n return render\n}\n\n/**\n * Simplified component for rendering headers, cells, or footers.\n *\n * Supports both the new shorthand pattern and the legacy `:render`/`:props` pattern:\n * @example\n * ```vue\n * <!-- New shorthand pattern -->\n * <FlexRender :cell=\"cell\" />\n * <FlexRender :header=\"header\" />\n * <FlexRender :footer=\"header\" />\n *\n * <!-- Legacy pattern (still supported) -->\n * <FlexRender :render=\"cell.column.columnDef.cell\" :props=\"cell.getContext()\" />\n * ```\n */\nexport const FlexRender = defineComponent({\n props: {\n render: {\n type: [Function, Object, String] as PropType<any>,\n default: undefined,\n },\n props: {\n type: Object as PropType<any>,\n default: undefined,\n },\n cell: {\n type: Object as PropType<Cell<any, any, any>>,\n default: undefined,\n },\n header: {\n type: Object as PropType<Header<any, any, any>>,\n default: undefined,\n },\n footer: {\n type: Object as PropType<Header<any, any, any>>,\n default: undefined,\n },\n },\n setup: (props: {\n render?: any\n props?: any\n cell?: Cell<any, any, any>\n header?: Header<any, any, any>\n footer?: Header<any, any, any>\n }) => {\n return () => {\n // New shorthand pattern: extract render and props from cell/header/footer\n if (props.cell) {\n return flexRender(\n props.cell.column.columnDef.cell,\n props.cell.getContext(),\n )\n }\n\n if (props.header) {\n return flexRender(\n props.header.column.columnDef.header,\n props.header.getContext(),\n )\n }\n\n if (props.footer) {\n return flexRender(\n props.footer.column.columnDef.footer,\n props.footer.getContext(),\n )\n }\n\n // Legacy pattern: use render and props directly\n return flexRender(props.render, props.props)\n }\n },\n})\n"],"mappings":";;;;;;;AAcA,SAAgB,WAAW,QAAa,OAAiB;AACvD,KAAI,OAAO,WAAW,YAAY;EAChC,MAAM,WAAW,OAAO,MAAM;AAE9B,uBAAY,SAAS,CACnB,QAAO;AAGT,MAAI,OAAO,aAAa,cAAc,OAAO,aAAa,SACxD,mBAAS,UAAU,MAAM;AAG3B,SAAO;;AAGT,KAAI,OAAO,WAAW,SACpB,mBAAS,QAAQ,MAAM;AAGzB,QAAO;;;;;;;;;;;;;;;;;AAkBT,MAAa,sCAA6B;CACxC,OAAO;EACL,QAAQ;GACN,MAAM;IAAC;IAAU;IAAQ;IAAO;GAChC,SAAS;GACV;EACD,OAAO;GACL,MAAM;GACN,SAAS;GACV;EACD,MAAM;GACJ,MAAM;GACN,SAAS;GACV;EACD,QAAQ;GACN,MAAM;GACN,SAAS;GACV;EACD,QAAQ;GACN,MAAM;GACN,SAAS;GACV;EACF;CACD,QAAQ,UAMF;AACJ,eAAa;AAEX,OAAI,MAAM,KACR,QAAO,WACL,MAAM,KAAK,OAAO,UAAU,MAC5B,MAAM,KAAK,YAAY,CACxB;AAGH,OAAI,MAAM,OACR,QAAO,WACL,MAAM,OAAO,OAAO,UAAU,QAC9B,MAAM,OAAO,YAAY,CAC1B;AAGH,OAAI,MAAM,OACR,QAAO,WACL,MAAM,OAAO,OAAO,UAAU,QAC9B,MAAM,OAAO,YAAY,CAC1B;AAIH,UAAO,WAAW,MAAM,QAAQ,MAAM,MAAM;;;CAGjD,CAAC"}
|
package/dist/FlexRender.d.cts
CHANGED
|
@@ -1,13 +1,46 @@
|
|
|
1
1
|
import * as _$vue from "vue";
|
|
2
|
+
import { Cell, Header } from "@tanstack/table-core";
|
|
2
3
|
|
|
3
4
|
//#region src/FlexRender.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.
|
|
7
|
+
* @example flexRender(cell.column.columnDef.cell, cell.getContext())
|
|
8
|
+
*/
|
|
9
|
+
declare function flexRender(render: any, props: any): any;
|
|
10
|
+
/**
|
|
11
|
+
* Simplified component for rendering headers, cells, or footers.
|
|
12
|
+
*
|
|
13
|
+
* Supports both the new shorthand pattern and the legacy `:render`/`:props` pattern:
|
|
14
|
+
* @example
|
|
15
|
+
* ```vue
|
|
16
|
+
* <!-- New shorthand pattern -->
|
|
17
|
+
* <FlexRender :cell="cell" />
|
|
18
|
+
* <FlexRender :header="header" />
|
|
19
|
+
* <FlexRender :footer="header" />
|
|
20
|
+
*
|
|
21
|
+
* <!-- Legacy pattern (still supported) -->
|
|
22
|
+
* <FlexRender :render="cell.column.columnDef.cell" :props="cell.getContext()" />
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
4
25
|
declare const FlexRender: _$vue.DefineComponent<{
|
|
5
|
-
render
|
|
6
|
-
props
|
|
26
|
+
render?: any;
|
|
27
|
+
props?: any;
|
|
28
|
+
cell?: Cell<any, any, any>;
|
|
29
|
+
header?: Header<any, any, any>;
|
|
30
|
+
footer?: Header<any, any, any>;
|
|
7
31
|
}, () => any, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<{
|
|
8
|
-
render
|
|
32
|
+
render?: any;
|
|
33
|
+
props?: any;
|
|
34
|
+
cell?: Cell<any, any, any>;
|
|
35
|
+
header?: Header<any, any, any>;
|
|
36
|
+
footer?: Header<any, any, any>;
|
|
37
|
+
}> & Readonly<{}>, {
|
|
9
38
|
props: any;
|
|
10
|
-
|
|
39
|
+
render: any;
|
|
40
|
+
cell: any;
|
|
41
|
+
header: any;
|
|
42
|
+
footer: any;
|
|
43
|
+
}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
|
|
11
44
|
//#endregion
|
|
12
|
-
export { FlexRender };
|
|
45
|
+
export { FlexRender, flexRender };
|
|
13
46
|
//# sourceMappingURL=FlexRender.d.cts.map
|
package/dist/FlexRender.d.ts
CHANGED
|
@@ -1,13 +1,46 @@
|
|
|
1
1
|
import * as _$vue from "vue";
|
|
2
|
+
import { Cell, Header } from "@tanstack/table-core";
|
|
2
3
|
|
|
3
4
|
//#region src/FlexRender.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.
|
|
7
|
+
* @example flexRender(cell.column.columnDef.cell, cell.getContext())
|
|
8
|
+
*/
|
|
9
|
+
declare function flexRender(render: any, props: any): any;
|
|
10
|
+
/**
|
|
11
|
+
* Simplified component for rendering headers, cells, or footers.
|
|
12
|
+
*
|
|
13
|
+
* Supports both the new shorthand pattern and the legacy `:render`/`:props` pattern:
|
|
14
|
+
* @example
|
|
15
|
+
* ```vue
|
|
16
|
+
* <!-- New shorthand pattern -->
|
|
17
|
+
* <FlexRender :cell="cell" />
|
|
18
|
+
* <FlexRender :header="header" />
|
|
19
|
+
* <FlexRender :footer="header" />
|
|
20
|
+
*
|
|
21
|
+
* <!-- Legacy pattern (still supported) -->
|
|
22
|
+
* <FlexRender :render="cell.column.columnDef.cell" :props="cell.getContext()" />
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
4
25
|
declare const FlexRender: _$vue.DefineComponent<{
|
|
5
|
-
render
|
|
6
|
-
props
|
|
26
|
+
render?: any;
|
|
27
|
+
props?: any;
|
|
28
|
+
cell?: Cell<any, any, any>;
|
|
29
|
+
header?: Header<any, any, any>;
|
|
30
|
+
footer?: Header<any, any, any>;
|
|
7
31
|
}, () => any, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<{
|
|
8
|
-
render
|
|
32
|
+
render?: any;
|
|
33
|
+
props?: any;
|
|
34
|
+
cell?: Cell<any, any, any>;
|
|
35
|
+
header?: Header<any, any, any>;
|
|
36
|
+
footer?: Header<any, any, any>;
|
|
37
|
+
}> & Readonly<{}>, {
|
|
9
38
|
props: any;
|
|
10
|
-
|
|
39
|
+
render: any;
|
|
40
|
+
cell: any;
|
|
41
|
+
header: any;
|
|
42
|
+
footer: any;
|
|
43
|
+
}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
|
|
11
44
|
//#endregion
|
|
12
|
-
export { FlexRender };
|
|
45
|
+
export { FlexRender, flexRender };
|
|
13
46
|
//# sourceMappingURL=FlexRender.d.ts.map
|
package/dist/FlexRender.js
CHANGED
|
@@ -1,22 +1,72 @@
|
|
|
1
1
|
import { defineComponent, h, isVNode } from "vue";
|
|
2
2
|
|
|
3
3
|
//#region src/FlexRender.ts
|
|
4
|
+
/**
|
|
5
|
+
* If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.
|
|
6
|
+
* @example flexRender(cell.column.columnDef.cell, cell.getContext())
|
|
7
|
+
*/
|
|
8
|
+
function flexRender(render, props) {
|
|
9
|
+
if (typeof render === "function") {
|
|
10
|
+
const rendered = render(props);
|
|
11
|
+
if (isVNode(rendered)) return rendered;
|
|
12
|
+
if (typeof rendered === "function" || typeof rendered === "object") return h(rendered, props);
|
|
13
|
+
return rendered;
|
|
14
|
+
}
|
|
15
|
+
if (typeof render === "object") return h(render, props);
|
|
16
|
+
return render;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Simplified component for rendering headers, cells, or footers.
|
|
20
|
+
*
|
|
21
|
+
* Supports both the new shorthand pattern and the legacy `:render`/`:props` pattern:
|
|
22
|
+
* @example
|
|
23
|
+
* ```vue
|
|
24
|
+
* <!-- New shorthand pattern -->
|
|
25
|
+
* <FlexRender :cell="cell" />
|
|
26
|
+
* <FlexRender :header="header" />
|
|
27
|
+
* <FlexRender :footer="header" />
|
|
28
|
+
*
|
|
29
|
+
* <!-- Legacy pattern (still supported) -->
|
|
30
|
+
* <FlexRender :render="cell.column.columnDef.cell" :props="cell.getContext()" />
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
4
33
|
const FlexRender = defineComponent({
|
|
5
|
-
props:
|
|
34
|
+
props: {
|
|
35
|
+
render: {
|
|
36
|
+
type: [
|
|
37
|
+
Function,
|
|
38
|
+
Object,
|
|
39
|
+
String
|
|
40
|
+
],
|
|
41
|
+
default: void 0
|
|
42
|
+
},
|
|
43
|
+
props: {
|
|
44
|
+
type: Object,
|
|
45
|
+
default: void 0
|
|
46
|
+
},
|
|
47
|
+
cell: {
|
|
48
|
+
type: Object,
|
|
49
|
+
default: void 0
|
|
50
|
+
},
|
|
51
|
+
header: {
|
|
52
|
+
type: Object,
|
|
53
|
+
default: void 0
|
|
54
|
+
},
|
|
55
|
+
footer: {
|
|
56
|
+
type: Object,
|
|
57
|
+
default: void 0
|
|
58
|
+
}
|
|
59
|
+
},
|
|
6
60
|
setup: (props) => {
|
|
7
61
|
return () => {
|
|
8
|
-
if (
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
return rendered;
|
|
13
|
-
}
|
|
14
|
-
if (typeof props.render === "object") return h(props.render, props.props);
|
|
15
|
-
return props.render;
|
|
62
|
+
if (props.cell) return flexRender(props.cell.column.columnDef.cell, props.cell.getContext());
|
|
63
|
+
if (props.header) return flexRender(props.header.column.columnDef.header, props.header.getContext());
|
|
64
|
+
if (props.footer) return flexRender(props.footer.column.columnDef.footer, props.footer.getContext());
|
|
65
|
+
return flexRender(props.render, props.props);
|
|
16
66
|
};
|
|
17
67
|
}
|
|
18
68
|
});
|
|
19
69
|
|
|
20
70
|
//#endregion
|
|
21
|
-
export { FlexRender };
|
|
71
|
+
export { FlexRender, flexRender };
|
|
22
72
|
//# sourceMappingURL=FlexRender.js.map
|
package/dist/FlexRender.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlexRender.js","names":[],"sources":["../src/FlexRender.ts"],"sourcesContent":["import { defineComponent, h, isVNode } from 'vue'\
|
|
1
|
+
{"version":3,"file":"FlexRender.js","names":[],"sources":["../src/FlexRender.ts"],"sourcesContent":["import { defineComponent, h, isVNode } from 'vue'\nimport type { PropType } from 'vue'\nimport type {\n Cell,\n CellData,\n Header,\n RowData,\n TableFeatures,\n} from '@tanstack/table-core'\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n * @example flexRender(cell.column.columnDef.cell, cell.getContext())\n */\nexport function flexRender(render: any, props: any): any {\n if (typeof render === 'function') {\n const rendered = render(props)\n\n if (isVNode(rendered)) {\n return rendered\n }\n\n if (typeof rendered === 'function' || typeof rendered === 'object') {\n return h(rendered, props)\n }\n\n return rendered\n }\n\n if (typeof render === 'object') {\n return h(render, props)\n }\n\n return render\n}\n\n/**\n * Simplified component for rendering headers, cells, or footers.\n *\n * Supports both the new shorthand pattern and the legacy `:render`/`:props` pattern:\n * @example\n * ```vue\n * <!-- New shorthand pattern -->\n * <FlexRender :cell=\"cell\" />\n * <FlexRender :header=\"header\" />\n * <FlexRender :footer=\"header\" />\n *\n * <!-- Legacy pattern (still supported) -->\n * <FlexRender :render=\"cell.column.columnDef.cell\" :props=\"cell.getContext()\" />\n * ```\n */\nexport const FlexRender = defineComponent({\n props: {\n render: {\n type: [Function, Object, String] as PropType<any>,\n default: undefined,\n },\n props: {\n type: Object as PropType<any>,\n default: undefined,\n },\n cell: {\n type: Object as PropType<Cell<any, any, any>>,\n default: undefined,\n },\n header: {\n type: Object as PropType<Header<any, any, any>>,\n default: undefined,\n },\n footer: {\n type: Object as PropType<Header<any, any, any>>,\n default: undefined,\n },\n },\n setup: (props: {\n render?: any\n props?: any\n cell?: Cell<any, any, any>\n header?: Header<any, any, any>\n footer?: Header<any, any, any>\n }) => {\n return () => {\n // New shorthand pattern: extract render and props from cell/header/footer\n if (props.cell) {\n return flexRender(\n props.cell.column.columnDef.cell,\n props.cell.getContext(),\n )\n }\n\n if (props.header) {\n return flexRender(\n props.header.column.columnDef.header,\n props.header.getContext(),\n )\n }\n\n if (props.footer) {\n return flexRender(\n props.footer.column.columnDef.footer,\n props.footer.getContext(),\n )\n }\n\n // Legacy pattern: use render and props directly\n return flexRender(props.render, props.props)\n }\n },\n})\n"],"mappings":";;;;;;;AAcA,SAAgB,WAAW,QAAa,OAAiB;AACvD,KAAI,OAAO,WAAW,YAAY;EAChC,MAAM,WAAW,OAAO,MAAM;AAE9B,MAAI,QAAQ,SAAS,CACnB,QAAO;AAGT,MAAI,OAAO,aAAa,cAAc,OAAO,aAAa,SACxD,QAAO,EAAE,UAAU,MAAM;AAG3B,SAAO;;AAGT,KAAI,OAAO,WAAW,SACpB,QAAO,EAAE,QAAQ,MAAM;AAGzB,QAAO;;;;;;;;;;;;;;;;;AAkBT,MAAa,aAAa,gBAAgB;CACxC,OAAO;EACL,QAAQ;GACN,MAAM;IAAC;IAAU;IAAQ;IAAO;GAChC,SAAS;GACV;EACD,OAAO;GACL,MAAM;GACN,SAAS;GACV;EACD,MAAM;GACJ,MAAM;GACN,SAAS;GACV;EACD,QAAQ;GACN,MAAM;GACN,SAAS;GACV;EACD,QAAQ;GACN,MAAM;GACN,SAAS;GACV;EACF;CACD,QAAQ,UAMF;AACJ,eAAa;AAEX,OAAI,MAAM,KACR,QAAO,WACL,MAAM,KAAK,OAAO,UAAU,MAC5B,MAAM,KAAK,YAAY,CACxB;AAGH,OAAI,MAAM,OACR,QAAO,WACL,MAAM,OAAO,OAAO,UAAU,QAC9B,MAAM,OAAO,YAAY,CAC1B;AAGH,OAAI,MAAM,OACR,QAAO,WACL,MAAM,OAAO,OAAO,UAAU,QAC9B,MAAM,OAAO,YAAY,CAC1B;AAIH,UAAO,WAAW,MAAM,QAAQ,MAAM,MAAM;;;CAGjD,CAAC"}
|
|
@@ -99,9 +99,9 @@ declare const AppFlexRender: _$vue.DefineComponent<_$vue.ExtractPropTypes<{
|
|
|
99
99
|
default: undefined;
|
|
100
100
|
};
|
|
101
101
|
}>> & Readonly<{}>, {
|
|
102
|
-
footer: any;
|
|
103
|
-
header: any;
|
|
104
102
|
cell: any;
|
|
103
|
+
header: any;
|
|
104
|
+
footer: any;
|
|
105
105
|
}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
|
|
106
106
|
declare function createTableHook<TFeatures extends TableFeatures, const TTableComponents extends Record<string, ComponentType<any>>, const TCellComponents extends Record<string, ComponentType<any>>, const THeaderComponents extends Record<string, ComponentType<any>>>({
|
|
107
107
|
tableComponents,
|
|
@@ -99,9 +99,9 @@ declare const AppFlexRender: _$vue.DefineComponent<_$vue.ExtractPropTypes<{
|
|
|
99
99
|
default: undefined;
|
|
100
100
|
};
|
|
101
101
|
}>> & Readonly<{}>, {
|
|
102
|
-
footer: any;
|
|
103
|
-
header: any;
|
|
104
102
|
cell: any;
|
|
103
|
+
header: any;
|
|
104
|
+
footer: any;
|
|
105
105
|
}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
|
|
106
106
|
declare function createTableHook<TFeatures extends TableFeatures, const TTableComponents extends Record<string, ComponentType<any>>, const TCellComponents extends Record<string, ComponentType<any>>, const THeaderComponents extends Record<string, ComponentType<any>>>({
|
|
107
107
|
tableComponents,
|
package/dist/index.cjs
CHANGED
|
@@ -6,6 +6,7 @@ const require_createTableHook = require('./createTableHook.cjs');
|
|
|
6
6
|
exports.AppFlexRender = require_createTableHook.AppFlexRender;
|
|
7
7
|
exports.FlexRender = require_FlexRender.FlexRender;
|
|
8
8
|
exports.createTableHook = require_createTableHook.createTableHook;
|
|
9
|
+
exports.flexRender = require_FlexRender.flexRender;
|
|
9
10
|
exports.useTable = require_useTable.useTable;
|
|
10
11
|
var _tanstack_table_core = require("@tanstack/table-core");
|
|
11
12
|
Object.keys(_tanstack_table_core).forEach(function (k) {
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FlexRender } from "./FlexRender.cjs";
|
|
1
|
+
import { FlexRender, flexRender } from "./FlexRender.cjs";
|
|
2
2
|
import { TableOptionsWithReactiveData, VueTable, useTable } from "./useTable.cjs";
|
|
3
3
|
import { AppCellContext, AppCellProps, AppColumnHelper, AppFlexRender, AppHeaderContext, AppHeaderProps, AppTableProps, AppVueTable, CreateTableHookOptions, createTableHook } from "./createTableHook.cjs";
|
|
4
4
|
export * from "@tanstack/table-core";
|
|
5
|
-
export { AppCellContext, AppCellProps, AppColumnHelper, AppFlexRender, AppHeaderContext, AppHeaderProps, AppTableProps, AppVueTable, CreateTableHookOptions, FlexRender, TableOptionsWithReactiveData, VueTable, createTableHook, useTable };
|
|
5
|
+
export { AppCellContext, AppCellProps, AppColumnHelper, AppFlexRender, AppHeaderContext, AppHeaderProps, AppTableProps, AppVueTable, CreateTableHookOptions, FlexRender, TableOptionsWithReactiveData, VueTable, createTableHook, flexRender, useTable };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FlexRender } from "./FlexRender.js";
|
|
1
|
+
import { FlexRender, flexRender } from "./FlexRender.js";
|
|
2
2
|
import { TableOptionsWithReactiveData, VueTable, useTable } from "./useTable.js";
|
|
3
3
|
import { AppCellContext, AppCellProps, AppColumnHelper, AppFlexRender, AppHeaderContext, AppHeaderProps, AppTableProps, AppVueTable, CreateTableHookOptions, createTableHook } from "./createTableHook.js";
|
|
4
4
|
export * from "@tanstack/table-core";
|
|
5
|
-
export { AppCellContext, AppCellProps, AppColumnHelper, AppFlexRender, AppHeaderContext, AppHeaderProps, AppTableProps, AppVueTable, CreateTableHookOptions, FlexRender, TableOptionsWithReactiveData, VueTable, createTableHook, useTable };
|
|
5
|
+
export { AppCellContext, AppCellProps, AppColumnHelper, AppFlexRender, AppHeaderContext, AppHeaderProps, AppTableProps, AppVueTable, CreateTableHookOptions, FlexRender, TableOptionsWithReactiveData, VueTable, createTableHook, flexRender, useTable };
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { FlexRender } from "./FlexRender.js";
|
|
1
|
+
import { FlexRender, flexRender } from "./FlexRender.js";
|
|
2
2
|
import { useTable } from "./useTable.js";
|
|
3
3
|
import { AppFlexRender, createTableHook } from "./createTableHook.js";
|
|
4
4
|
|
|
5
5
|
export * from "@tanstack/table-core"
|
|
6
6
|
|
|
7
|
-
export { AppFlexRender, FlexRender, createTableHook, useTable };
|
|
7
|
+
export { AppFlexRender, FlexRender, createTableHook, flexRender, useTable };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/vue-table",
|
|
3
|
-
"version": "9.0.0-alpha.
|
|
3
|
+
"version": "9.0.0-alpha.30",
|
|
4
4
|
"description": "Headless UI for building powerful tables & datagrids for Vue.",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -41,12 +41,12 @@
|
|
|
41
41
|
],
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@tanstack/vue-store": "^0.9.3",
|
|
44
|
-
"@tanstack/table-core": "9.0.0-alpha.
|
|
44
|
+
"@tanstack/table-core": "9.0.0-alpha.30"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@vitejs/plugin-vue": "^6.0.5",
|
|
48
48
|
"eslint-plugin-vue": "^10.8.0",
|
|
49
|
-
"vue": "^3.5.
|
|
49
|
+
"vue": "^3.5.32"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"vue": ">=3.2"
|
package/src/FlexRender.ts
CHANGED
|
@@ -1,28 +1,109 @@
|
|
|
1
1
|
import { defineComponent, h, isVNode } from 'vue'
|
|
2
|
+
import type { PropType } from 'vue'
|
|
3
|
+
import type {
|
|
4
|
+
Cell,
|
|
5
|
+
CellData,
|
|
6
|
+
Header,
|
|
7
|
+
RowData,
|
|
8
|
+
TableFeatures,
|
|
9
|
+
} from '@tanstack/table-core'
|
|
2
10
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
11
|
+
/**
|
|
12
|
+
* If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.
|
|
13
|
+
* @example flexRender(cell.column.columnDef.cell, cell.getContext())
|
|
14
|
+
*/
|
|
15
|
+
export function flexRender(render: any, props: any): any {
|
|
16
|
+
if (typeof render === 'function') {
|
|
17
|
+
const rendered = render(props)
|
|
18
|
+
|
|
19
|
+
if (isVNode(rendered)) {
|
|
20
|
+
return rendered
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (typeof rendered === 'function' || typeof rendered === 'object') {
|
|
24
|
+
return h(rendered, props)
|
|
25
|
+
}
|
|
9
26
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
27
|
+
return rendered
|
|
28
|
+
}
|
|
13
29
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
30
|
+
if (typeof render === 'object') {
|
|
31
|
+
return h(render, props)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return render
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Simplified component for rendering headers, cells, or footers.
|
|
39
|
+
*
|
|
40
|
+
* Supports both the new shorthand pattern and the legacy `:render`/`:props` pattern:
|
|
41
|
+
* @example
|
|
42
|
+
* ```vue
|
|
43
|
+
* <!-- New shorthand pattern -->
|
|
44
|
+
* <FlexRender :cell="cell" />
|
|
45
|
+
* <FlexRender :header="header" />
|
|
46
|
+
* <FlexRender :footer="header" />
|
|
47
|
+
*
|
|
48
|
+
* <!-- Legacy pattern (still supported) -->
|
|
49
|
+
* <FlexRender :render="cell.column.columnDef.cell" :props="cell.getContext()" />
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export const FlexRender = defineComponent({
|
|
53
|
+
props: {
|
|
54
|
+
render: {
|
|
55
|
+
type: [Function, Object, String] as PropType<any>,
|
|
56
|
+
default: undefined,
|
|
57
|
+
},
|
|
58
|
+
props: {
|
|
59
|
+
type: Object as PropType<any>,
|
|
60
|
+
default: undefined,
|
|
61
|
+
},
|
|
62
|
+
cell: {
|
|
63
|
+
type: Object as PropType<Cell<any, any, any>>,
|
|
64
|
+
default: undefined,
|
|
65
|
+
},
|
|
66
|
+
header: {
|
|
67
|
+
type: Object as PropType<Header<any, any, any>>,
|
|
68
|
+
default: undefined,
|
|
69
|
+
},
|
|
70
|
+
footer: {
|
|
71
|
+
type: Object as PropType<Header<any, any, any>>,
|
|
72
|
+
default: undefined,
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
setup: (props: {
|
|
76
|
+
render?: any
|
|
77
|
+
props?: any
|
|
78
|
+
cell?: Cell<any, any, any>
|
|
79
|
+
header?: Header<any, any, any>
|
|
80
|
+
footer?: Header<any, any, any>
|
|
81
|
+
}) => {
|
|
82
|
+
return () => {
|
|
83
|
+
// New shorthand pattern: extract render and props from cell/header/footer
|
|
84
|
+
if (props.cell) {
|
|
85
|
+
return flexRender(
|
|
86
|
+
props.cell.column.columnDef.cell,
|
|
87
|
+
props.cell.getContext(),
|
|
88
|
+
)
|
|
89
|
+
}
|
|
17
90
|
|
|
18
|
-
|
|
91
|
+
if (props.header) {
|
|
92
|
+
return flexRender(
|
|
93
|
+
props.header.column.columnDef.header,
|
|
94
|
+
props.header.getContext(),
|
|
95
|
+
)
|
|
19
96
|
}
|
|
20
97
|
|
|
21
|
-
if (
|
|
22
|
-
return
|
|
98
|
+
if (props.footer) {
|
|
99
|
+
return flexRender(
|
|
100
|
+
props.footer.column.columnDef.footer,
|
|
101
|
+
props.footer.getContext(),
|
|
102
|
+
)
|
|
23
103
|
}
|
|
24
104
|
|
|
25
|
-
|
|
105
|
+
// Legacy pattern: use render and props directly
|
|
106
|
+
return flexRender(props.render, props.props)
|
|
26
107
|
}
|
|
27
108
|
},
|
|
28
109
|
})
|