mortise-tenon-design 0.1.11 → 0.2.0
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/es/components/expand/index.mjs.map +1 -1
- package/es/components/sort/index.mjs +9 -0
- package/es/components/sort/index.mjs.map +1 -0
- package/es/components/sort/src/sort.mjs +54 -0
- package/es/components/sort/src/sort.mjs.map +1 -0
- package/es/components/table/index.mjs +10 -0
- package/es/components/table/index.mjs.map +1 -0
- package/es/components/table/src/table.css +1 -0
- package/es/components/table/src/table.vue.mjs +8 -0
- package/es/components/table/src/table.vue.mjs.map +1 -0
- package/es/components/table/src/table.vue2.mjs +100 -0
- package/es/components/table/src/table.vue2.mjs.map +1 -0
- package/es/index.mjs +6 -2
- package/es/index.mjs.map +1 -1
- package/lib/components/expand/index.js.map +1 -1
- package/lib/components/sort/index.js +2 -0
- package/lib/components/sort/index.js.map +1 -0
- package/lib/components/sort/src/sort.js +2 -0
- package/lib/components/sort/src/sort.js.map +1 -0
- package/lib/components/table/index.js +3 -0
- package/lib/components/table/index.js.map +1 -0
- package/lib/components/table/src/table.css +1 -0
- package/lib/components/table/src/table.vue.js +2 -0
- package/lib/components/table/src/table.vue.js.map +1 -0
- package/lib/components/table/src/table.vue2.js +2 -0
- package/lib/components/table/src/table.vue2.js.map +1 -0
- package/lib/index.js +1 -1
- package/package.json +1 -1
- package/types/expand/index.d.ts +4 -3
- package/types/index.d.ts +2 -0
- package/types/sort/index.d.ts +25 -0
- package/types/sort/src/sort.d.ts +36 -0
- package/types/table/index.d.ts +48 -0
- package/types/table/src/table.d.ts +38 -0
- package/types/table/src/table.vue.d.ts +41 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../packages/components/expand/index.ts"],"sourcesContent":["import type { App } from 'vue';\r\nimport Expand from './src/expand.vue';\r\n\r\nExpand.install = (app: App): void => {\r\n if (Expand.name) {\r\n app.component(Expand.name, Expand);\r\n }\r\n};\r\n\r\nexport const MtExpand = Expand;\r\n"],"names":["Expand","app","MtExpand"],"mappings":";AAGAA,EAAO,UAAU,CAACC,MAAmB;AACnC,EAAID,EAAO,QACLC,EAAA,UAAUD,EAAO,MAAMA,CAAM;AAErC;AAEO,MAAME,IAAWF;"}
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../packages/components/expand/index.ts"],"sourcesContent":["import type { App } from 'vue';\r\nimport Expand from './src/expand.vue';\r\n\r\nExpand.install = (app: App): void => {\r\n if (Expand.name) {\r\n app.component(Expand.name, Expand);\r\n }\r\n};\r\n\r\nexport const MtExpand = Expand;\r\n\r\nexport * from './src/expand';\r\n"],"names":["Expand","app","MtExpand"],"mappings":";AAGAA,EAAO,UAAU,CAACC,MAAmB;AACnC,EAAID,EAAO,QACLC,EAAA,UAAUD,EAAO,MAAMA,CAAM;AAErC;AAEO,MAAME,IAAWF;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../packages/components/sort/index.ts"],"sourcesContent":["import type { App } from 'vue';\r\nimport Sort from './src/sort';\r\n\r\nSort.install = (app: App): void => {\r\n if (Sort.name) {\r\n app.component(Sort.name, Sort);\r\n }\r\n};\r\n\r\nexport const MtSort = Sort;\r\n\r\nexport * from './src/sort';\r\n"],"names":["Sort","app","MtSort"],"mappings":";AAGAA,EAAK,UAAU,CAACC,MAAmB;AACjC,EAAID,EAAK,QACHC,EAAA,UAAUD,EAAK,MAAMA,CAAI;AAEjC;AAEO,MAAME,IAASF;"}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
import { defineComponent as l, computed as p } from "vue";
|
2
|
+
const d = l({
|
3
|
+
name: "MtSort",
|
4
|
+
props: {
|
5
|
+
/** 排序配置 */
|
6
|
+
sortList: {
|
7
|
+
type: Array,
|
8
|
+
default: () => []
|
9
|
+
},
|
10
|
+
/** 排序key名 */
|
11
|
+
keyName: {
|
12
|
+
type: String,
|
13
|
+
default: "sort-key"
|
14
|
+
}
|
15
|
+
},
|
16
|
+
setup(t, { slots: s }) {
|
17
|
+
const o = p(() => {
|
18
|
+
var c;
|
19
|
+
const e = ((c = s.default) == null ? void 0 : c.call(s)) || [], n = f(t.keyName, e), r = Array.from(new Set(t.sortList)).map((i) => n[i]).filter(Boolean);
|
20
|
+
return u(t.keyName, e, t.sortList, r);
|
21
|
+
});
|
22
|
+
return () => o.value;
|
23
|
+
}
|
24
|
+
});
|
25
|
+
function f(t, s, o = {}) {
|
26
|
+
return s.forEach((e) => {
|
27
|
+
var r;
|
28
|
+
const n = (r = e.props) == null ? void 0 : r[t];
|
29
|
+
if (n) {
|
30
|
+
o[n] ? console.warn(`<mt-sort-space> ${t}: ${n} repeat`) : o[n] = e;
|
31
|
+
return;
|
32
|
+
}
|
33
|
+
Array.isArray(e.children) && f(t, e.children, o);
|
34
|
+
}), o;
|
35
|
+
}
|
36
|
+
function u(t, s, o, e) {
|
37
|
+
const n = [];
|
38
|
+
return s.forEach((r) => {
|
39
|
+
var i;
|
40
|
+
const c = (i = r.props) == null ? void 0 : i[t];
|
41
|
+
if (c && o.includes(c)) {
|
42
|
+
const a = e.shift();
|
43
|
+
if (a) {
|
44
|
+
n.push(a);
|
45
|
+
return;
|
46
|
+
}
|
47
|
+
}
|
48
|
+
Array.isArray(r.children) && (r = { ...r }, r.children = u(t, r.children, o, e)), n.push(r);
|
49
|
+
}), n;
|
50
|
+
}
|
51
|
+
export {
|
52
|
+
d as default
|
53
|
+
};
|
54
|
+
//# sourceMappingURL=sort.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"sort.mjs","sources":["../../../../../../packages/components/sort/src/sort.ts"],"sourcesContent":["import type { PropType, VNode } from 'vue';\nimport { computed, defineComponent } from 'vue';\n\nexport interface SortSpaceProps {\n /** 排序配置 */\n sortList?: (string | number)[]\n /** 排序key名 */\n keyName?: string\n}\n\nexport default defineComponent({\n name: 'MtSort',\n props: {\n /** 排序配置 */\n sortList: {\n type: Array as PropType<(string | number)[]>,\n default: () => [],\n },\n /** 排序key名 */\n keyName: {\n type: String,\n default: 'sort-key',\n },\n },\n setup(props, { slots }) {\n const renderVNodes = computed(() => {\n const vNodeList = slots.default?.() || [];\n const sortVNodeMap = getVNodeMap(props.keyName, vNodeList);\n const sortVNodeList = Array.from(new Set(props.sortList)).map(key => sortVNodeMap[key]).filter(Boolean);\n return sortDefaultVNodes(props.keyName, vNodeList, props.sortList, sortVNodeList);\n });\n\n return () => renderVNodes.value;\n },\n});\n\n/** 获取插槽中需要排序的节点 */\nfunction getVNodeMap(keyName: string, vNodeList: VNode[], vNodeMap: Record<(string | number), VNode> = {}) {\n vNodeList.forEach((item) => {\n const sortKey = item.props?.[keyName];\n if (sortKey) {\n if (vNodeMap[sortKey]) {\n console.warn(`<mt-sort-space> ${keyName}: ${sortKey} repeat`);\n }\n else {\n vNodeMap[sortKey] = item;\n }\n return;\n }\n if (Array.isArray(item.children)) {\n getVNodeMap(keyName, item.children as VNode[], vNodeMap);\n }\n });\n return vNodeMap;\n}\n\n/** 根据排序后的节点跟换位置 */\nfunction sortDefaultVNodes(keyName: string, vNodeList: VNode[], sortList: (string | number)[], sortVNodeList: VNode[]) {\n const newList: VNode[] = [];\n vNodeList.forEach((vNode) => {\n const sortKey = vNode.props?.[keyName];\n if (sortKey && sortList.includes(sortKey)) {\n const sortVNode = sortVNodeList.shift();\n if (sortVNode) {\n newList.push(sortVNode);\n return;\n }\n }\n if (Array.isArray(vNode.children)) {\n vNode = { ...vNode }; // 避免修改原节点数据\n vNode.children = sortDefaultVNodes(keyName, vNode.children as VNode[], sortList, sortVNodeList);\n }\n newList.push(vNode);\n });\n return newList;\n}\n"],"names":["Sort","defineComponent","props","slots","renderVNodes","computed","vNodeList","_a","sortVNodeMap","getVNodeMap","sortVNodeList","key","sortDefaultVNodes","keyName","vNodeMap","item","sortKey","sortList","newList","vNode","sortVNode"],"mappings":";AAUA,MAAAA,IAAeC,EAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA;AAAA,IAEL,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS,MAAM,CAAA;AAAA,IACjB;AAAA;AAAA,IAEA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA,EACA,MAAMC,GAAO,EAAE,OAAAC,KAAS;AAChB,UAAAC,IAAeC,EAAS,MAAM;;AAClC,YAAMC,MAAYC,IAAAJ,EAAM,YAAN,gBAAAI,EAAA,KAAAJ,OAAqB,CAAC,GAClCK,IAAeC,EAAYP,EAAM,SAASI,CAAS,GACnDI,IAAgB,MAAM,KAAK,IAAI,IAAIR,EAAM,QAAQ,CAAC,EAAE,IAAI,OAAOM,EAAaG,CAAG,CAAC,EAAE,OAAO,OAAO;AACtG,aAAOC,EAAkBV,EAAM,SAASI,GAAWJ,EAAM,UAAUQ,CAAa;AAAA,IAAA,CACjF;AAED,WAAO,MAAMN,EAAa;AAAA,EAAA;AAE9B,CAAC;AAGD,SAASK,EAAYI,GAAiBP,GAAoBQ,IAA6C,CAAA,GAAI;AAC/F,SAAAR,EAAA,QAAQ,CAACS,MAAS;;AACpB,UAAAC,KAAUT,IAAAQ,EAAK,UAAL,gBAAAR,EAAaM;AAC7B,QAAIG,GAAS;AACP,MAAAF,EAASE,CAAO,IAClB,QAAQ,KAAK,mBAAmBH,CAAO,KAAKG,CAAO,SAAS,IAG5DF,EAASE,CAAO,IAAID;AAEtB;AAAA,IAAA;AAEF,IAAI,MAAM,QAAQA,EAAK,QAAQ,KACjBN,EAAAI,GAASE,EAAK,UAAqBD,CAAQ;AAAA,EACzD,CACD,GACMA;AACT;AAGA,SAASF,EAAkBC,GAAiBP,GAAoBW,GAA+BP,GAAwB;AACrH,QAAMQ,IAAmB,CAAC;AAChB,SAAAZ,EAAA,QAAQ,CAACa,MAAU;;AACrB,UAAAH,KAAUT,IAAAY,EAAM,UAAN,gBAAAZ,EAAcM;AAC9B,QAAIG,KAAWC,EAAS,SAASD,CAAO,GAAG;AACnC,YAAAI,IAAYV,EAAc,MAAM;AACtC,UAAIU,GAAW;AACb,QAAAF,EAAQ,KAAKE,CAAS;AACtB;AAAA,MAAA;AAAA,IACF;AAEF,IAAI,MAAM,QAAQD,EAAM,QAAQ,MACtBA,IAAA,EAAE,GAAGA,EAAM,GACnBA,EAAM,WAAWP,EAAkBC,GAASM,EAAM,UAAqBF,GAAUP,CAAa,IAEhGQ,EAAQ,KAAKC,CAAK;AAAA,EAAA,CACnB,GACMD;AACT;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../packages/components/table/index.ts"],"sourcesContent":["import type { App } from 'vue';\r\nimport Table from './src/table.vue';\r\n\r\nTable.install = (app: App): void => {\r\n if (Table.name) {\r\n app.component(Table.name, Table);\r\n }\r\n};\r\n\r\nexport const MtTable = Table;\r\n\r\nexport * from './src/table';\r\n"],"names":["Table","app","MtTable"],"mappings":";AAGAA,EAAM,UAAU,CAACC,MAAmB;AAClC,EAAID,EAAM,QACJC,EAAA,UAAUD,EAAM,MAAMA,CAAK;AAEnC;AAEO,MAAME,IAAUF;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
.mt-table[data-v-46d3894f]{width:100%;max-width:100%;border-spacing:0;border-collapse:collapse}.mt-table thead tr th[data-v-46d3894f]{padding:8px 16px;border:1px #f0f0f0 solid}.mt-table tbody tr td[data-v-46d3894f]{padding:16px;border:1px #f0f0f0 solid}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"table.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
@@ -0,0 +1,100 @@
|
|
1
|
+
import { defineComponent as M, computed as i, openBlock as o, createElementBlock as u, createElementVNode as v, Fragment as p, renderList as d, normalizeStyle as m, renderSlot as _, createTextVNode as k, toDisplayString as b } from "vue";
|
2
|
+
const D = { class: "mt-table" }, E = ["colspan", "rowspan"], N = ["colspan", "rowspan"], T = /* @__PURE__ */ M({
|
3
|
+
name: "MtTable",
|
4
|
+
__name: "table",
|
5
|
+
props: {
|
6
|
+
data: { default: () => [] },
|
7
|
+
config: { default: () => [] }
|
8
|
+
},
|
9
|
+
setup($) {
|
10
|
+
const S = $, h = i(() => S.config.map((t) => ({ ...t, columns: t.columns.filter((s) => s.title) }))), y = i(() => S.config.map((t) => ({ ...t, columns: t.columns.filter((s) => s.dataKey) }))), B = i(() => {
|
11
|
+
const t = h.value.map((a) => a.columns.reduce((e, n) => {
|
12
|
+
var l;
|
13
|
+
return e + (((l = n.head) == null ? void 0 : l.colSpan) || 1);
|
14
|
+
}, 0)), s = y.value.map((a) => a.columns.reduce((e, n) => {
|
15
|
+
var l;
|
16
|
+
return e + (((l = n.cell) == null ? void 0 : l.colSpan) || 1);
|
17
|
+
}, 0));
|
18
|
+
return Math.max(...t, ...s);
|
19
|
+
}), K = i(() => {
|
20
|
+
const t = h.value.map((s) => s.columns.map((a) => {
|
21
|
+
var e;
|
22
|
+
return ((e = a.head) == null ? void 0 : e.colSpan) || 0;
|
23
|
+
}));
|
24
|
+
return f(t);
|
25
|
+
}), L = i(() => {
|
26
|
+
const t = y.value.map((s) => s.columns.map((a) => {
|
27
|
+
var e;
|
28
|
+
return ((e = a.cell) == null ? void 0 : e.colSpan) || 0;
|
29
|
+
}));
|
30
|
+
return f(t);
|
31
|
+
});
|
32
|
+
function f(t) {
|
33
|
+
return t.map((s) => {
|
34
|
+
const a = s.filter(Boolean), e = a.reduce((r, c) => r + c, 0);
|
35
|
+
let n = s.length - a.length, l = B.value - e;
|
36
|
+
return s.map((r) => (!r && l > 0 && (r = Math.ceil(l / n), n--, l -= r), r));
|
37
|
+
});
|
38
|
+
}
|
39
|
+
return (t, s) => (o(), u("table", D, [
|
40
|
+
v("thead", null, [
|
41
|
+
(o(!0), u(p, null, d(h.value, (a, e) => (o(), u("tr", {
|
42
|
+
key: e,
|
43
|
+
style: m(a.headStyle)
|
44
|
+
}, [
|
45
|
+
(o(!0), u(p, null, d(a.columns, (n, l) => {
|
46
|
+
var r, c;
|
47
|
+
return o(), u("th", {
|
48
|
+
key: `${n.title}-${l}`,
|
49
|
+
colspan: K.value[e][l],
|
50
|
+
rowspan: (r = n.head) == null ? void 0 : r.rowSpan,
|
51
|
+
style: m((c = n.head) == null ? void 0 : c.style)
|
52
|
+
}, [
|
53
|
+
_(t.$slots, "header", {
|
54
|
+
column: n,
|
55
|
+
columnIndex: l,
|
56
|
+
row: a,
|
57
|
+
rowIndex: e
|
58
|
+
}, () => [
|
59
|
+
k(b(n.title), 1)
|
60
|
+
], !0)
|
61
|
+
], 12, E);
|
62
|
+
}), 128))
|
63
|
+
], 4))), 128))
|
64
|
+
]),
|
65
|
+
v("tbody", null, [
|
66
|
+
(o(!0), u(p, null, d(t.data, (a, e) => (o(), u(p, { key: e }, [
|
67
|
+
(o(!0), u(p, null, d(y.value, (n, l) => (o(), u("tr", {
|
68
|
+
key: l,
|
69
|
+
style: m(n.rowStyle)
|
70
|
+
}, [
|
71
|
+
(o(!0), u(p, null, d(n.columns, (r, c) => {
|
72
|
+
var C, g;
|
73
|
+
return o(), u("td", {
|
74
|
+
key: `${r.dataKey}-${c}`,
|
75
|
+
colspan: L.value[l][c],
|
76
|
+
rowspan: (C = r.cell) == null ? void 0 : C.rowSpan,
|
77
|
+
style: m((g = r.cell) == null ? void 0 : g.style)
|
78
|
+
}, [
|
79
|
+
_(t.$slots, "cell", {
|
80
|
+
column: r,
|
81
|
+
columnIndex: c,
|
82
|
+
dataIndex: e,
|
83
|
+
record: a,
|
84
|
+
row: n,
|
85
|
+
rowIndex: l
|
86
|
+
}, () => [
|
87
|
+
k(b(a[r.dataKey]), 1)
|
88
|
+
], !0)
|
89
|
+
], 12, N);
|
90
|
+
}), 128))
|
91
|
+
], 4))), 128))
|
92
|
+
], 64))), 128))
|
93
|
+
])
|
94
|
+
]));
|
95
|
+
}
|
96
|
+
});
|
97
|
+
export {
|
98
|
+
T as default
|
99
|
+
};
|
100
|
+
//# sourceMappingURL=table.vue2.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"table.vue2.mjs","sources":["../../../../../../packages/components/table/src/table.vue"],"sourcesContent":["<script lang=\"ts\" setup>\r\nimport type { TableProps } from './table';\r\nimport { computed } from 'vue';\r\n\r\ndefineOptions({ name: 'MtTable' });\r\n\r\nconst props = withDefaults(defineProps<TableProps>(), {\r\n data: () => [],\r\n config: () => [],\r\n});\r\n\r\n/** 表头配置 */\r\nconst headConfig = computed(() => {\r\n return props.config.map(rowItem => ({ ...rowItem, columns: rowItem.columns.filter(column => column.title) }));\r\n});\r\n\r\n/** 数据配置 */\r\nconst dataConfig = computed(() => {\r\n return props.config.map(rowItem => ({ ...rowItem, columns: rowItem.columns.filter(column => column.dataKey) }));\r\n});\r\n\r\n/** 最大列数 */\r\nconst maxColSpan = computed(() => {\r\n const handReduce = headConfig.value.map(item => item.columns.reduce((pre, cur) => pre + (cur.head?.colSpan || 1), 0));\r\n const cellReduce = dataConfig.value.map(item => item.columns.reduce((pre, cur) => pre + (cur.cell?.colSpan || 1), 0));\r\n return Math.max(...handReduce, ...cellReduce);\r\n});\r\n\r\n/** 表头列合并 */\r\nconst headColSpan = computed(() => {\r\n const colSpanList = headConfig.value.map(item => item.columns.map(column => column.head?.colSpan || 0));\r\n return getColSpanData(colSpanList);\r\n});\r\n\r\n/** 数据列合并 */\r\nconst dataColSpan = computed(() => {\r\n const colSpanList = dataConfig.value.map(item => item.columns.map(column => column.cell?.colSpan || 0));\r\n return getColSpanData(colSpanList);\r\n});\r\n\r\n/** 获取合并列数组 */\r\nfunction getColSpanData(colSpanList: number[][]) {\r\n return colSpanList.map((columns) => {\r\n const colSpanColumns = columns.filter(Boolean); // 已分配colSpan的列\r\n const beenColSpan = colSpanColumns.reduce((pur, cur) => pur + cur, 0); // 总colSpan\r\n let remainCount = columns.length - colSpanColumns.length; // 剩余未配置colSpan的列数\r\n let remainColSpan = maxColSpan.value - beenColSpan; // 剩余可分配的colSpan\r\n return columns.map((colSpan) => {\r\n if (!colSpan && remainColSpan > 0) {\r\n colSpan = Math.ceil(remainColSpan / remainCount); // 每列平均分配colSpan\r\n remainCount--;\r\n remainColSpan -= colSpan;\r\n }\r\n return colSpan;\r\n });\r\n });\r\n}\r\n</script>\r\n\r\n<template>\r\n <table class=\"mt-table\">\r\n <!-- 表头 -->\r\n <thead>\r\n <tr\r\n v-for=\"(row, rowIndex) in headConfig\"\r\n :key=\"rowIndex\"\r\n :style=\"row.headStyle\"\r\n >\r\n <template v-for=\"(column, columnIndex) in row.columns\" :key=\"`${column.title}-${columnIndex}`\">\r\n <th\r\n :colspan=\"headColSpan[rowIndex][columnIndex]\"\r\n :rowspan=\"column.head?.rowSpan\"\r\n :style=\"column.head?.style\"\r\n >\r\n <slot\r\n :column=\"column\"\r\n :column-index=\"columnIndex\"\r\n :row=\"row\"\r\n :row-index=\"rowIndex\"\r\n name=\"header\"\r\n >\r\n {{ column.title }}\r\n </slot>\r\n </th>\r\n </template>\r\n </tr>\r\n </thead>\r\n <!-- 表体 -->\r\n <tbody>\r\n <template\r\n v-for=\"(record, dataIndex) in data\"\r\n :key=\"dataIndex\"\r\n >\r\n <tr\r\n v-for=\"(row, rowIndex) in dataConfig\"\r\n :key=\"rowIndex\"\r\n :style=\"row.rowStyle\"\r\n >\r\n <template v-for=\"(column, columnIndex) in row.columns\" :key=\"`${column.dataKey}-${columnIndex}`\">\r\n <td\r\n :colspan=\"dataColSpan[rowIndex][columnIndex]\"\r\n :rowspan=\"column.cell?.rowSpan\"\r\n :style=\"column.cell?.style\"\r\n >\r\n <slot\r\n :column=\"column\"\r\n :column-index=\"columnIndex\"\r\n :data-index=\"dataIndex\"\r\n name=\"cell\"\r\n :record=\"record\"\r\n :row=\"row\"\r\n :row-index=\"rowIndex\"\r\n >\r\n {{ record[column.dataKey!] }}\r\n </slot>\r\n </td>\r\n </template>\r\n </tr>\r\n </template>\r\n </tbody>\r\n </table>\r\n</template>\r\n\r\n<style lang=\"scss\" scoped>\r\n.mt-table {\r\n width: 100%;\r\n max-width: 100%;\r\n border-spacing: 0;\r\n border-collapse: collapse;\r\n\r\n thead {\r\n tr {\r\n th {\r\n padding: 8px 16px;\r\n border: 1px #f0f0f0 solid;\r\n }\r\n }\r\n }\r\n\r\n tbody {\r\n tr {\r\n td {\r\n padding: 16px;\r\n border: 1px #f0f0f0 solid;\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n"],"names":["props","__props","headConfig","computed","rowItem","column","dataConfig","maxColSpan","handReduce","item","pre","cur","_a","cellReduce","headColSpan","colSpanList","getColSpanData","dataColSpan","columns","colSpanColumns","beenColSpan","pur","remainCount","remainColSpan","colSpan"],"mappings":";;;;;;;;;AAMA,UAAMA,IAAQC,GAMRC,IAAaC,EAAS,MACnBH,EAAM,OAAO,IAAI,CAAAI,OAAY,EAAE,GAAGA,GAAS,SAASA,EAAQ,QAAQ,OAAO,CAAAC,MAAUA,EAAO,KAAK,IAAI,CAC7G,GAGKC,IAAaH,EAAS,MACnBH,EAAM,OAAO,IAAI,CAAAI,OAAY,EAAE,GAAGA,GAAS,SAASA,EAAQ,QAAQ,OAAO,CAAAC,MAAUA,EAAO,OAAO,IAAI,CAC/G,GAGKE,IAAaJ,EAAS,MAAM;AAChC,YAAMK,IAAaN,EAAW,MAAM,IAAI,CAAAO,MAAQA,EAAK,QAAQ,OAAO,CAACC,GAAKC;;AAAQ,eAAAD,OAAOE,IAAAD,EAAI,SAAJ,gBAAAC,EAAU,YAAW;AAAA,SAAI,CAAC,CAAC,GAC9GC,IAAaP,EAAW,MAAM,IAAI,CAAAG,MAAQA,EAAK,QAAQ,OAAO,CAACC,GAAKC;;AAAQ,eAAAD,OAAOE,IAAAD,EAAI,SAAJ,gBAAAC,EAAU,YAAW;AAAA,SAAI,CAAC,CAAC;AACpH,aAAO,KAAK,IAAI,GAAGJ,GAAY,GAAGK,CAAU;AAAA,IAAA,CAC7C,GAGKC,IAAcX,EAAS,MAAM;AACjC,YAAMY,IAAcb,EAAW,MAAM,IAAI,CAAQO,MAAAA,EAAK,QAAQ,IAAI,CAAUJ,MAAA;;AAAA,iBAAAO,IAAAP,EAAO,SAAP,gBAAAO,EAAa,YAAW;AAAA,OAAC,CAAC;AACtG,aAAOI,EAAeD,CAAW;AAAA,IAAA,CAClC,GAGKE,IAAcd,EAAS,MAAM;AACjC,YAAMY,IAAcT,EAAW,MAAM,IAAI,CAAQG,MAAAA,EAAK,QAAQ,IAAI,CAAUJ,MAAA;;AAAA,iBAAAO,IAAAP,EAAO,SAAP,gBAAAO,EAAa,YAAW;AAAA,OAAC,CAAC;AACtG,aAAOI,EAAeD,CAAW;AAAA,IAAA,CAClC;AAGD,aAASC,EAAeD,GAAyB;AACxC,aAAAA,EAAY,IAAI,CAACG,MAAY;AAC5B,cAAAC,IAAiBD,EAAQ,OAAO,OAAO,GACvCE,IAAcD,EAAe,OAAO,CAACE,GAAKV,MAAQU,IAAMV,GAAK,CAAC;AAChE,YAAAW,IAAcJ,EAAQ,SAASC,EAAe,QAC9CI,IAAgBhB,EAAW,QAAQa;AAChC,eAAAF,EAAQ,IAAI,CAACM,OACd,CAACA,KAAWD,IAAgB,MACpBC,IAAA,KAAK,KAAKD,IAAgBD,CAAW,GAC/CA,KACiBC,KAAAC,IAEZA,EACR;AAAA,MAAA,CACF;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/es/index.mjs
CHANGED
@@ -1,5 +1,9 @@
|
|
1
|
-
import { MtExpand as
|
1
|
+
import { MtExpand as t } from "./components/expand/index.mjs";
|
2
|
+
import { MtSort as p } from "./components/sort/index.mjs";
|
3
|
+
import { MtTable as f } from "./components/table/index.mjs";
|
2
4
|
export {
|
3
|
-
|
5
|
+
t as MtExpand,
|
6
|
+
p as MtSort,
|
7
|
+
f as MtTable
|
4
8
|
};
|
5
9
|
//# sourceMappingURL=index.mjs.map
|
package/es/index.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../packages/components/expand/index.ts"],"sourcesContent":["import type { App } from 'vue';\r\nimport Expand from './src/expand.vue';\r\n\r\nExpand.install = (app: App): void => {\r\n if (Expand.name) {\r\n app.component(Expand.name, Expand);\r\n }\r\n};\r\n\r\nexport const MtExpand = Expand;\r\n"],"names":["Expand","app","MtExpand"],"mappings":"uHAGAA,EAAAA,QAAO,QAAWC,GAAmB,CAC/BD,EAAAA,QAAO,MACLC,EAAA,UAAUD,UAAO,KAAMA,EAAAA,OAAM,CAErC,EAEO,MAAME,EAAWF,EAAAA"}
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../packages/components/expand/index.ts"],"sourcesContent":["import type { App } from 'vue';\r\nimport Expand from './src/expand.vue';\r\n\r\nExpand.install = (app: App): void => {\r\n if (Expand.name) {\r\n app.component(Expand.name, Expand);\r\n }\r\n};\r\n\r\nexport const MtExpand = Expand;\r\n\r\nexport * from './src/expand';\r\n"],"names":["Expand","app","MtExpand"],"mappings":"uHAGAA,EAAAA,QAAO,QAAWC,GAAmB,CAC/BD,EAAAA,QAAO,MACLC,EAAA,UAAUD,UAAO,KAAMA,EAAAA,OAAM,CAErC,EAEO,MAAME,EAAWF,EAAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../packages/components/sort/index.ts"],"sourcesContent":["import type { App } from 'vue';\r\nimport Sort from './src/sort';\r\n\r\nSort.install = (app: App): void => {\r\n if (Sort.name) {\r\n app.component(Sort.name, Sort);\r\n }\r\n};\r\n\r\nexport const MtSort = Sort;\r\n\r\nexport * from './src/sort';\r\n"],"names":["Sort","app","MtSort"],"mappings":"iHAGAA,EAAAA,QAAK,QAAWC,GAAmB,CAC7BD,EAAAA,QAAK,MACHC,EAAA,UAAUD,UAAK,KAAMA,EAAAA,OAAI,CAEjC,EAEO,MAAME,EAASF,EAAAA"}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("vue"),d=a.defineComponent({name:"MtSort",props:{sortList:{type:Array,default:()=>[]},keyName:{type:String,default:"sort-key"}},setup(e,{slots:s}){const o=a.computed(()=>{var u;const t=((u=s.default)==null?void 0:u.call(s))||[],n=f(e.keyName,t),r=Array.from(new Set(e.sortList)).map(i=>n[i]).filter(Boolean);return l(e.keyName,t,e.sortList,r)});return()=>o.value}});function f(e,s,o={}){return s.forEach(t=>{var r;const n=(r=t.props)==null?void 0:r[e];if(n){o[n]?console.warn(`<mt-sort-space> ${e}: ${n} repeat`):o[n]=t;return}Array.isArray(t.children)&&f(e,t.children,o)}),o}function l(e,s,o,t){const n=[];return s.forEach(r=>{var i;const u=(i=r.props)==null?void 0:i[e];if(u&&o.includes(u)){const c=t.shift();if(c){n.push(c);return}}Array.isArray(r.children)&&(r={...r},r.children=l(e,r.children,o,t)),n.push(r)}),n}exports.default=d;
|
2
|
+
//# sourceMappingURL=sort.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"sort.js","sources":["../../../../../../packages/components/sort/src/sort.ts"],"sourcesContent":["import type { PropType, VNode } from 'vue';\nimport { computed, defineComponent } from 'vue';\n\nexport interface SortSpaceProps {\n /** 排序配置 */\n sortList?: (string | number)[]\n /** 排序key名 */\n keyName?: string\n}\n\nexport default defineComponent({\n name: 'MtSort',\n props: {\n /** 排序配置 */\n sortList: {\n type: Array as PropType<(string | number)[]>,\n default: () => [],\n },\n /** 排序key名 */\n keyName: {\n type: String,\n default: 'sort-key',\n },\n },\n setup(props, { slots }) {\n const renderVNodes = computed(() => {\n const vNodeList = slots.default?.() || [];\n const sortVNodeMap = getVNodeMap(props.keyName, vNodeList);\n const sortVNodeList = Array.from(new Set(props.sortList)).map(key => sortVNodeMap[key]).filter(Boolean);\n return sortDefaultVNodes(props.keyName, vNodeList, props.sortList, sortVNodeList);\n });\n\n return () => renderVNodes.value;\n },\n});\n\n/** 获取插槽中需要排序的节点 */\nfunction getVNodeMap(keyName: string, vNodeList: VNode[], vNodeMap: Record<(string | number), VNode> = {}) {\n vNodeList.forEach((item) => {\n const sortKey = item.props?.[keyName];\n if (sortKey) {\n if (vNodeMap[sortKey]) {\n console.warn(`<mt-sort-space> ${keyName}: ${sortKey} repeat`);\n }\n else {\n vNodeMap[sortKey] = item;\n }\n return;\n }\n if (Array.isArray(item.children)) {\n getVNodeMap(keyName, item.children as VNode[], vNodeMap);\n }\n });\n return vNodeMap;\n}\n\n/** 根据排序后的节点跟换位置 */\nfunction sortDefaultVNodes(keyName: string, vNodeList: VNode[], sortList: (string | number)[], sortVNodeList: VNode[]) {\n const newList: VNode[] = [];\n vNodeList.forEach((vNode) => {\n const sortKey = vNode.props?.[keyName];\n if (sortKey && sortList.includes(sortKey)) {\n const sortVNode = sortVNodeList.shift();\n if (sortVNode) {\n newList.push(sortVNode);\n return;\n }\n }\n if (Array.isArray(vNode.children)) {\n vNode = { ...vNode }; // 避免修改原节点数据\n vNode.children = sortDefaultVNodes(keyName, vNode.children as VNode[], sortList, sortVNodeList);\n }\n newList.push(vNode);\n });\n return newList;\n}\n"],"names":["Sort","defineComponent","props","slots","renderVNodes","computed","vNodeList","_a","sortVNodeMap","getVNodeMap","sortVNodeList","key","sortDefaultVNodes","keyName","vNodeMap","item","sortKey","sortList","newList","vNode","sortVNode"],"mappings":"mIAUAA,EAAeC,kBAAgB,CAC7B,KAAM,SACN,MAAO,CAEL,SAAU,CACR,KAAM,MACN,QAAS,IAAM,CAAA,CACjB,EAEA,QAAS,CACP,KAAM,OACN,QAAS,UAAA,CAEb,EACA,MAAMC,EAAO,CAAE,MAAAC,GAAS,CAChB,MAAAC,EAAeC,EAAAA,SAAS,IAAM,OAClC,MAAMC,IAAYC,EAAAJ,EAAM,UAAN,YAAAI,EAAA,KAAAJ,KAAqB,CAAC,EAClCK,EAAeC,EAAYP,EAAM,QAASI,CAAS,EACnDI,EAAgB,MAAM,KAAK,IAAI,IAAIR,EAAM,QAAQ,CAAC,EAAE,OAAWM,EAAaG,CAAG,CAAC,EAAE,OAAO,OAAO,EACtG,OAAOC,EAAkBV,EAAM,QAASI,EAAWJ,EAAM,SAAUQ,CAAa,CAAA,CACjF,EAED,MAAO,IAAMN,EAAa,KAAA,CAE9B,CAAC,EAGD,SAASK,EAAYI,EAAiBP,EAAoBQ,EAA6C,CAAA,EAAI,CAC/F,OAAAR,EAAA,QAASS,GAAS,OACpB,MAAAC,GAAUT,EAAAQ,EAAK,QAAL,YAAAR,EAAaM,GAC7B,GAAIG,EAAS,CACPF,EAASE,CAAO,EAClB,QAAQ,KAAK,mBAAmBH,CAAO,KAAKG,CAAO,SAAS,EAG5DF,EAASE,CAAO,EAAID,EAEtB,MAAA,CAEE,MAAM,QAAQA,EAAK,QAAQ,GACjBN,EAAAI,EAASE,EAAK,SAAqBD,CAAQ,CACzD,CACD,EACMA,CACT,CAGA,SAASF,EAAkBC,EAAiBP,EAAoBW,EAA+BP,EAAwB,CACrH,MAAMQ,EAAmB,CAAC,EAChB,OAAAZ,EAAA,QAASa,GAAU,OACrB,MAAAH,GAAUT,EAAAY,EAAM,QAAN,YAAAZ,EAAcM,GAC9B,GAAIG,GAAWC,EAAS,SAASD,CAAO,EAAG,CACnC,MAAAI,EAAYV,EAAc,MAAM,EACtC,GAAIU,EAAW,CACbF,EAAQ,KAAKE,CAAS,EACtB,MAAA,CACF,CAEE,MAAM,QAAQD,EAAM,QAAQ,IACtBA,EAAA,CAAE,GAAGA,CAAM,EACnBA,EAAM,SAAWP,EAAkBC,EAASM,EAAM,SAAqBF,EAAUP,CAAa,GAEhGQ,EAAQ,KAAKC,CAAK,CAAA,CACnB,EACMD,CACT"}
|
@@ -0,0 +1,3 @@
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./src/table.vue.js");e.default.install=t=>{e.default.name&&t.component(e.default.name,e.default)};const a=e.default;exports.MtTable=a;
|
2
|
+
//# sourceMappingURL=index.js.map
|
3
|
+
require('./src/table.css');
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../packages/components/table/index.ts"],"sourcesContent":["import type { App } from 'vue';\r\nimport Table from './src/table.vue';\r\n\r\nTable.install = (app: App): void => {\r\n if (Table.name) {\r\n app.component(Table.name, Table);\r\n }\r\n};\r\n\r\nexport const MtTable = Table;\r\n\r\nexport * from './src/table';\r\n"],"names":["Table","app","MtTable"],"mappings":"sHAGAA,EAAAA,QAAM,QAAWC,GAAmB,CAC9BD,EAAAA,QAAM,MACJC,EAAA,UAAUD,UAAM,KAAMA,EAAAA,OAAK,CAEnC,EAEO,MAAME,EAAUF,EAAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
.mt-table[data-v-46d3894f]{width:100%;max-width:100%;border-spacing:0;border-collapse:collapse}.mt-table thead tr th[data-v-46d3894f]{padding:8px 16px;border:1px #f0f0f0 solid}.mt-table tbody tr td[data-v-46d3894f]{padding:16px;border:1px #f0f0f0 solid}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./table.vue2.js");;/* empty css */const t=require("../../../_virtual/_plugin-vue_export-helper.js"),u=t.default(e.default,[["__scopeId","data-v-46d3894f"]]);exports.default=u;
|
2
|
+
//# sourceMappingURL=table.vue.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"table.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),g={class:"mt-table"},f=["colspan","rowspan"],E=["colspan","rowspan"],v=e.defineComponent({name:"MtTable",__name:"table",props:{data:{default:()=>[]},config:{default:()=>[]}},setup(y){const m=y,u=e.computed(()=>m.config.map(l=>({...l,columns:l.columns.filter(c=>c.title)}))),p=e.computed(()=>m.config.map(l=>({...l,columns:l.columns.filter(c=>c.dataKey)}))),S=e.computed(()=>{const l=u.value.map(n=>n.columns.reduce((t,o)=>{var a;return t+(((a=o.head)==null?void 0:a.colSpan)||1)},0)),c=p.value.map(n=>n.columns.reduce((t,o)=>{var a;return t+(((a=o.cell)==null?void 0:a.colSpan)||1)},0));return Math.max(...l,...c)}),B=e.computed(()=>{const l=u.value.map(c=>c.columns.map(n=>{var t;return((t=n.head)==null?void 0:t.colSpan)||0}));return i(l)}),h=e.computed(()=>{const l=p.value.map(c=>c.columns.map(n=>{var t;return((t=n.cell)==null?void 0:t.colSpan)||0}));return i(l)});function i(l){return l.map(c=>{const n=c.filter(Boolean),t=n.reduce((r,s)=>r+s,0);let o=c.length-n.length,a=S.value-t;return c.map(r=>(!r&&a>0&&(r=Math.ceil(a/o),o--,a-=r),r))})}return(l,c)=>(e.openBlock(),e.createElementBlock("table",g,[e.createElementVNode("thead",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,(n,t)=>(e.openBlock(),e.createElementBlock("tr",{key:t,style:e.normalizeStyle(n.headStyle)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.columns,(o,a)=>{var r,s;return e.openBlock(),e.createElementBlock("th",{key:`${o.title}-${a}`,colspan:B.value[t][a],rowspan:(r=o.head)==null?void 0:r.rowSpan,style:e.normalizeStyle((s=o.head)==null?void 0:s.style)},[e.renderSlot(l.$slots,"header",{column:o,columnIndex:a,row:n,rowIndex:t},()=>[e.createTextVNode(e.toDisplayString(o.title),1)],!0)],12,f)}),128))],4))),128))]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.data,(n,t)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:t},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(o,a)=>(e.openBlock(),e.createElementBlock("tr",{key:a,style:e.normalizeStyle(o.rowStyle)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.columns,(r,s)=>{var d,k;return e.openBlock(),e.createElementBlock("td",{key:`${r.dataKey}-${s}`,colspan:h.value[a][s],rowspan:(d=r.cell)==null?void 0:d.rowSpan,style:e.normalizeStyle((k=r.cell)==null?void 0:k.style)},[e.renderSlot(l.$slots,"cell",{column:r,columnIndex:s,dataIndex:t,record:n,row:o,rowIndex:a},()=>[e.createTextVNode(e.toDisplayString(n[r.dataKey]),1)],!0)],12,E)}),128))],4))),128))],64))),128))])]))}});exports.default=v;
|
2
|
+
//# sourceMappingURL=table.vue2.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"table.vue2.js","sources":["../../../../../../packages/components/table/src/table.vue"],"sourcesContent":["<script lang=\"ts\" setup>\r\nimport type { TableProps } from './table';\r\nimport { computed } from 'vue';\r\n\r\ndefineOptions({ name: 'MtTable' });\r\n\r\nconst props = withDefaults(defineProps<TableProps>(), {\r\n data: () => [],\r\n config: () => [],\r\n});\r\n\r\n/** 表头配置 */\r\nconst headConfig = computed(() => {\r\n return props.config.map(rowItem => ({ ...rowItem, columns: rowItem.columns.filter(column => column.title) }));\r\n});\r\n\r\n/** 数据配置 */\r\nconst dataConfig = computed(() => {\r\n return props.config.map(rowItem => ({ ...rowItem, columns: rowItem.columns.filter(column => column.dataKey) }));\r\n});\r\n\r\n/** 最大列数 */\r\nconst maxColSpan = computed(() => {\r\n const handReduce = headConfig.value.map(item => item.columns.reduce((pre, cur) => pre + (cur.head?.colSpan || 1), 0));\r\n const cellReduce = dataConfig.value.map(item => item.columns.reduce((pre, cur) => pre + (cur.cell?.colSpan || 1), 0));\r\n return Math.max(...handReduce, ...cellReduce);\r\n});\r\n\r\n/** 表头列合并 */\r\nconst headColSpan = computed(() => {\r\n const colSpanList = headConfig.value.map(item => item.columns.map(column => column.head?.colSpan || 0));\r\n return getColSpanData(colSpanList);\r\n});\r\n\r\n/** 数据列合并 */\r\nconst dataColSpan = computed(() => {\r\n const colSpanList = dataConfig.value.map(item => item.columns.map(column => column.cell?.colSpan || 0));\r\n return getColSpanData(colSpanList);\r\n});\r\n\r\n/** 获取合并列数组 */\r\nfunction getColSpanData(colSpanList: number[][]) {\r\n return colSpanList.map((columns) => {\r\n const colSpanColumns = columns.filter(Boolean); // 已分配colSpan的列\r\n const beenColSpan = colSpanColumns.reduce((pur, cur) => pur + cur, 0); // 总colSpan\r\n let remainCount = columns.length - colSpanColumns.length; // 剩余未配置colSpan的列数\r\n let remainColSpan = maxColSpan.value - beenColSpan; // 剩余可分配的colSpan\r\n return columns.map((colSpan) => {\r\n if (!colSpan && remainColSpan > 0) {\r\n colSpan = Math.ceil(remainColSpan / remainCount); // 每列平均分配colSpan\r\n remainCount--;\r\n remainColSpan -= colSpan;\r\n }\r\n return colSpan;\r\n });\r\n });\r\n}\r\n</script>\r\n\r\n<template>\r\n <table class=\"mt-table\">\r\n <!-- 表头 -->\r\n <thead>\r\n <tr\r\n v-for=\"(row, rowIndex) in headConfig\"\r\n :key=\"rowIndex\"\r\n :style=\"row.headStyle\"\r\n >\r\n <template v-for=\"(column, columnIndex) in row.columns\" :key=\"`${column.title}-${columnIndex}`\">\r\n <th\r\n :colspan=\"headColSpan[rowIndex][columnIndex]\"\r\n :rowspan=\"column.head?.rowSpan\"\r\n :style=\"column.head?.style\"\r\n >\r\n <slot\r\n :column=\"column\"\r\n :column-index=\"columnIndex\"\r\n :row=\"row\"\r\n :row-index=\"rowIndex\"\r\n name=\"header\"\r\n >\r\n {{ column.title }}\r\n </slot>\r\n </th>\r\n </template>\r\n </tr>\r\n </thead>\r\n <!-- 表体 -->\r\n <tbody>\r\n <template\r\n v-for=\"(record, dataIndex) in data\"\r\n :key=\"dataIndex\"\r\n >\r\n <tr\r\n v-for=\"(row, rowIndex) in dataConfig\"\r\n :key=\"rowIndex\"\r\n :style=\"row.rowStyle\"\r\n >\r\n <template v-for=\"(column, columnIndex) in row.columns\" :key=\"`${column.dataKey}-${columnIndex}`\">\r\n <td\r\n :colspan=\"dataColSpan[rowIndex][columnIndex]\"\r\n :rowspan=\"column.cell?.rowSpan\"\r\n :style=\"column.cell?.style\"\r\n >\r\n <slot\r\n :column=\"column\"\r\n :column-index=\"columnIndex\"\r\n :data-index=\"dataIndex\"\r\n name=\"cell\"\r\n :record=\"record\"\r\n :row=\"row\"\r\n :row-index=\"rowIndex\"\r\n >\r\n {{ record[column.dataKey!] }}\r\n </slot>\r\n </td>\r\n </template>\r\n </tr>\r\n </template>\r\n </tbody>\r\n </table>\r\n</template>\r\n\r\n<style lang=\"scss\" scoped>\r\n.mt-table {\r\n width: 100%;\r\n max-width: 100%;\r\n border-spacing: 0;\r\n border-collapse: collapse;\r\n\r\n thead {\r\n tr {\r\n th {\r\n padding: 8px 16px;\r\n border: 1px #f0f0f0 solid;\r\n }\r\n }\r\n }\r\n\r\n tbody {\r\n tr {\r\n td {\r\n padding: 16px;\r\n border: 1px #f0f0f0 solid;\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n"],"names":["props","__props","headConfig","computed","rowItem","column","dataConfig","maxColSpan","handReduce","item","pre","cur","_a","cellReduce","headColSpan","colSpanList","getColSpanData","dataColSpan","columns","colSpanColumns","beenColSpan","pur","remainCount","remainColSpan","colSpan"],"mappings":"0TAMA,MAAMA,EAAQC,EAMRC,EAAaC,EAAAA,SAAS,IACnBH,EAAM,OAAO,IAAII,IAAY,CAAE,GAAGA,EAAS,QAASA,EAAQ,QAAQ,OAAOC,GAAUA,EAAO,KAAK,GAAI,CAC7G,EAGKC,EAAaH,EAAAA,SAAS,IACnBH,EAAM,OAAO,IAAII,IAAY,CAAE,GAAGA,EAAS,QAASA,EAAQ,QAAQ,OAAOC,GAAUA,EAAO,OAAO,GAAI,CAC/G,EAGKE,EAAaJ,EAAAA,SAAS,IAAM,CAChC,MAAMK,EAAaN,EAAW,MAAM,IAAIO,GAAQA,EAAK,QAAQ,OAAO,CAACC,EAAKC,WAAQ,OAAAD,KAAOE,EAAAD,EAAI,OAAJ,YAAAC,EAAU,UAAW,IAAI,CAAC,CAAC,EAC9GC,EAAaP,EAAW,MAAM,IAAIG,GAAQA,EAAK,QAAQ,OAAO,CAACC,EAAKC,WAAQ,OAAAD,KAAOE,EAAAD,EAAI,OAAJ,YAAAC,EAAU,UAAW,IAAI,CAAC,CAAC,EACpH,OAAO,KAAK,IAAI,GAAGJ,EAAY,GAAGK,CAAU,CAAA,CAC7C,EAGKC,EAAcX,EAAAA,SAAS,IAAM,CACjC,MAAMY,EAAcb,EAAW,MAAM,IAAYO,GAAAA,EAAK,QAAQ,IAAcJ,GAAA,OAAA,QAAAO,EAAAP,EAAO,OAAP,YAAAO,EAAa,UAAW,EAAC,CAAC,EACtG,OAAOI,EAAeD,CAAW,CAAA,CAClC,EAGKE,EAAcd,EAAAA,SAAS,IAAM,CACjC,MAAMY,EAAcT,EAAW,MAAM,IAAYG,GAAAA,EAAK,QAAQ,IAAcJ,GAAA,OAAA,QAAAO,EAAAP,EAAO,OAAP,YAAAO,EAAa,UAAW,EAAC,CAAC,EACtG,OAAOI,EAAeD,CAAW,CAAA,CAClC,EAGD,SAASC,EAAeD,EAAyB,CACxC,OAAAA,EAAY,IAAKG,GAAY,CAC5B,MAAAC,EAAiBD,EAAQ,OAAO,OAAO,EACvCE,EAAcD,EAAe,OAAO,CAACE,EAAKV,IAAQU,EAAMV,EAAK,CAAC,EAChE,IAAAW,EAAcJ,EAAQ,OAASC,EAAe,OAC9CI,EAAgBhB,EAAW,MAAQa,EAChC,OAAAF,EAAQ,IAAKM,IACd,CAACA,GAAWD,EAAgB,IACpBC,EAAA,KAAK,KAAKD,EAAgBD,CAAW,EAC/CA,IACiBC,GAAAC,GAEZA,EACR,CAAA,CACF,CAAA"}
|
package/lib/index.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./components/expand/index.js");exports.MtExpand=e.MtExpand;
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./components/expand/index.js"),t=require("./components/sort/index.js"),r=require("./components/table/index.js");exports.MtExpand=e.MtExpand;exports.MtSort=t.MtSort;exports.MtTable=r.MtTable;
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
package/types/expand/index.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
export declare const MtExpand: {
|
2
|
-
new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('
|
2
|
+
new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('.').ExpandProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {
|
3
3
|
open: boolean;
|
4
4
|
targetRange: number;
|
5
5
|
transitionTime: number;
|
@@ -10,7 +10,7 @@ export declare const MtExpand: {
|
|
10
10
|
C: {};
|
11
11
|
M: {};
|
12
12
|
Defaults: {};
|
13
|
-
}, Readonly<import('
|
13
|
+
}, Readonly<import('.').ExpandProps> & Readonly<{}>, {}, {}, {}, {}, {
|
14
14
|
open: boolean;
|
15
15
|
targetRange: number;
|
16
16
|
transitionTime: number;
|
@@ -18,7 +18,7 @@ export declare const MtExpand: {
|
|
18
18
|
__isFragment?: never;
|
19
19
|
__isTeleport?: never;
|
20
20
|
__isSuspense?: never;
|
21
|
-
} & import('vue').ComponentOptionsBase<Readonly<import('
|
21
|
+
} & import('vue').ComponentOptionsBase<Readonly<import('.').ExpandProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {
|
22
22
|
open: boolean;
|
23
23
|
targetRange: number;
|
24
24
|
transitionTime: number;
|
@@ -30,3 +30,4 @@ export declare const MtExpand: {
|
|
30
30
|
}): any;
|
31
31
|
};
|
32
32
|
});
|
33
|
+
export * from './src/expand';
|
package/types/index.d.ts
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
export declare const MtSort: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
2
|
+
sortList: {
|
3
|
+
type: import('vue').PropType<(string | number)[]>;
|
4
|
+
default: () => never[];
|
5
|
+
};
|
6
|
+
keyName: {
|
7
|
+
type: StringConstructor;
|
8
|
+
default: string;
|
9
|
+
};
|
10
|
+
}>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
11
|
+
[key: string]: any;
|
12
|
+
}>[], {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
13
|
+
sortList: {
|
14
|
+
type: import('vue').PropType<(string | number)[]>;
|
15
|
+
default: () => never[];
|
16
|
+
};
|
17
|
+
keyName: {
|
18
|
+
type: StringConstructor;
|
19
|
+
default: string;
|
20
|
+
};
|
21
|
+
}>> & Readonly<{}>, {
|
22
|
+
sortList: (string | number)[];
|
23
|
+
keyName: string;
|
24
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
25
|
+
export * from './src/sort';
|
@@ -0,0 +1,36 @@
|
|
1
|
+
import { PropType, VNode } from 'vue';
|
2
|
+
export interface SortSpaceProps {
|
3
|
+
/** 排序配置 */
|
4
|
+
sortList?: (string | number)[];
|
5
|
+
/** 排序key名 */
|
6
|
+
keyName?: string;
|
7
|
+
}
|
8
|
+
declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
9
|
+
/** 排序配置 */
|
10
|
+
sortList: {
|
11
|
+
type: PropType<(string | number)[]>;
|
12
|
+
default: () => never[];
|
13
|
+
};
|
14
|
+
/** 排序key名 */
|
15
|
+
keyName: {
|
16
|
+
type: StringConstructor;
|
17
|
+
default: string;
|
18
|
+
};
|
19
|
+
}>, () => VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
20
|
+
[key: string]: any;
|
21
|
+
}>[], {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
22
|
+
/** 排序配置 */
|
23
|
+
sortList: {
|
24
|
+
type: PropType<(string | number)[]>;
|
25
|
+
default: () => never[];
|
26
|
+
};
|
27
|
+
/** 排序key名 */
|
28
|
+
keyName: {
|
29
|
+
type: StringConstructor;
|
30
|
+
default: string;
|
31
|
+
};
|
32
|
+
}>> & Readonly<{}>, {
|
33
|
+
sortList: (string | number)[];
|
34
|
+
keyName: string;
|
35
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
36
|
+
export default _default;
|
@@ -0,0 +1,48 @@
|
|
1
|
+
export declare const MtTable: {
|
2
|
+
new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('.').TableProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {
|
3
|
+
data: any[];
|
4
|
+
config: import('.').TableConfig[];
|
5
|
+
}, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
|
6
|
+
P: {};
|
7
|
+
B: {};
|
8
|
+
D: {};
|
9
|
+
C: {};
|
10
|
+
M: {};
|
11
|
+
Defaults: {};
|
12
|
+
}, Readonly<import('.').TableProps> & Readonly<{}>, {}, {}, {}, {}, {
|
13
|
+
data: any[];
|
14
|
+
config: import('.').TableConfig[];
|
15
|
+
}>;
|
16
|
+
__isFragment?: never;
|
17
|
+
__isTeleport?: never;
|
18
|
+
__isSuspense?: never;
|
19
|
+
} & import('vue').ComponentOptionsBase<Readonly<import('.').TableProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {
|
20
|
+
data: any[];
|
21
|
+
config: import('.').TableConfig[];
|
22
|
+
}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
|
23
|
+
$slots: {
|
24
|
+
header?(_: {
|
25
|
+
column: import('.').Column;
|
26
|
+
columnIndex: number;
|
27
|
+
row: {
|
28
|
+
columns: import('.').Column[];
|
29
|
+
rowStyle?: import('vue').CSSProperties;
|
30
|
+
headStyle?: import('vue').CSSProperties;
|
31
|
+
};
|
32
|
+
rowIndex: number;
|
33
|
+
}): any;
|
34
|
+
cell?(_: {
|
35
|
+
column: import('.').Column;
|
36
|
+
columnIndex: number;
|
37
|
+
dataIndex: number;
|
38
|
+
record: any;
|
39
|
+
row: {
|
40
|
+
columns: import('.').Column[];
|
41
|
+
rowStyle?: import('vue').CSSProperties;
|
42
|
+
headStyle?: import('vue').CSSProperties;
|
43
|
+
};
|
44
|
+
rowIndex: number;
|
45
|
+
}): any;
|
46
|
+
};
|
47
|
+
});
|
48
|
+
export * from './src/table';
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import { CSSProperties } from 'vue';
|
2
|
+
export interface TableProps {
|
3
|
+
/** 表格数据 */
|
4
|
+
data?: any[];
|
5
|
+
/** 表格配置 */
|
6
|
+
config?: TableConfig[];
|
7
|
+
}
|
8
|
+
/** 表体行 */
|
9
|
+
export interface TableConfig {
|
10
|
+
/** 行体样式 */
|
11
|
+
rowStyle?: CSSProperties;
|
12
|
+
/** 表头样式 */
|
13
|
+
headStyle?: CSSProperties;
|
14
|
+
/** 列配置 */
|
15
|
+
columns: Column[];
|
16
|
+
}
|
17
|
+
/** 标体列 */
|
18
|
+
export interface Column {
|
19
|
+
/** 唯一标识key */
|
20
|
+
key?: string;
|
21
|
+
/** 单元格数据字段(配置了才会显示对应数据列) */
|
22
|
+
dataKey?: string;
|
23
|
+
/** 表头名称(配置了才会显示对应列表头) */
|
24
|
+
title?: string;
|
25
|
+
/** 表头格配置 */
|
26
|
+
head?: CellProps;
|
27
|
+
/** 数据格配置 */
|
28
|
+
cell?: CellProps;
|
29
|
+
}
|
30
|
+
/** 单元格属性 */
|
31
|
+
export interface CellProps {
|
32
|
+
/** 样式 */
|
33
|
+
style?: CSSProperties;
|
34
|
+
/** 占用列数 */
|
35
|
+
colSpan?: number;
|
36
|
+
/** 占用行数 */
|
37
|
+
rowSpan?: number;
|
38
|
+
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
import { TableProps } from './table';
|
2
|
+
declare function __VLS_template(): {
|
3
|
+
slots: {
|
4
|
+
header?(_: {
|
5
|
+
column: import('./table').Column;
|
6
|
+
columnIndex: number;
|
7
|
+
row: {
|
8
|
+
columns: import('./table').Column[];
|
9
|
+
rowStyle?: import('vue').CSSProperties;
|
10
|
+
headStyle?: import('vue').CSSProperties;
|
11
|
+
};
|
12
|
+
rowIndex: number;
|
13
|
+
}): any;
|
14
|
+
cell?(_: {
|
15
|
+
column: import('./table').Column;
|
16
|
+
columnIndex: number;
|
17
|
+
dataIndex: number;
|
18
|
+
record: any;
|
19
|
+
row: {
|
20
|
+
columns: import('./table').Column[];
|
21
|
+
rowStyle?: import('vue').CSSProperties;
|
22
|
+
headStyle?: import('vue').CSSProperties;
|
23
|
+
};
|
24
|
+
rowIndex: number;
|
25
|
+
}): any;
|
26
|
+
};
|
27
|
+
refs: {};
|
28
|
+
attrs: Partial<{}>;
|
29
|
+
};
|
30
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
31
|
+
declare const __VLS_component: import('vue').DefineComponent<TableProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<TableProps> & Readonly<{}>, {
|
32
|
+
data: any[];
|
33
|
+
config: import('./table').TableConfig[];
|
34
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
35
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
36
|
+
export default _default;
|
37
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
38
|
+
new (): {
|
39
|
+
$slots: S;
|
40
|
+
};
|
41
|
+
};
|