UNPKG

vuux

Version:

Vue3 Nuxt3 Nuxt4 组件库

84 lines (83 loc) 2.58 kB
import { reactive as f, toRefs as x, computed as H, provide as S, onMounted as p, nextTick as u, watchEffect as y, onBeforeUnmount as C } from "vue"; import { Utils as m } from "@vuux/utils"; const k = (c, r, h, b) => { const i = f({ //表格设置 columns: c.columns, //表格数据 tableData: [], //数据是否转换完毕 isFormat: !0, //选中的数据 selectData: [], //是否固定头部 isFixedHead: !1, //模态框状态 model: !1, //配置了多少项 columnCount: c.columns.length }), { tableData: g, isFixedHead: v } = x(i), D = H(() => [c.border ? "is-border" : "", c.stripe ? "is-stripe" : ""].filter(Boolean)), s = (t, l = null) => t ? t.map((e) => { const a = f({ data: e, id: e.id, level: l ? l.level + 1 : 1, children: [], parent: l, open: !1, select: !1, indeterminate: !1 }); return e.children && e.children.length && (a.children = s(e.children, a)), a; }) : [], w = (t) => { for (; t?.parent; ) { const l = t.parent; l.select = l.children.every((e) => e.select), l.indeterminate = !l.select && l.children.some((e) => e.select || e.indeterminate), t = l; } }, d = (t) => { if (t.children?.length) for (let l = 0; l < t.children.length; l++) { const e = t.children[l]; e.select = t.select, e.indeterminate = t.indeterminate, d(e); } }, o = (t) => { const l = [], e = (a) => { if (a.select && l.push(a.data), a.children) for (let n = 0; n < a.children.length; n++) e(a.children[n]); }; for (let a = 0; a < t.length; a++) e(t[a]); b("select", l); }; S("tableContext", { selectAll: (t) => { const l = (e, a) => { if (e.select = a, e.indeterminate = !1, e.children?.length) for (let n = 0; n < e.children.length; n++) l(e.children[n], a); }; for (let e = 0; e < i.tableData.length; e++) l(i.tableData[e], t); o(i.tableData); }, select: async (t, l) => { t.select = l, t.indeterminate = !1, await u(), w(t), d(t), o(i.tableData); } }), p(async () => { await u(), i.tableData = s(c.data), i.isFormat = !1, await m.wait(500), h.value && r.value && (i.isFixedHead = h.value.clientHeight > r.value.clientHeight); }); const F = y(() => { m.isEmpty(c.data) ? i.tableData = [] : i.tableData = s(c.data); }); return C(() => { F(); }), { state: i, tableData: g, isFixedHead: v, classNames: D }; }; export { k as useTable };