167 lines
4.3 KiB
JavaScript
167 lines
4.3 KiB
JavaScript
import { defineComponent as x, ref as p, watch as j, onMounted as I, getCurrentInstance as A, unref as E, onBeforeUnmount as O, setBlockTracking as h, createElementVNode as g, mergeProps as T, renderSlot as R, h as S, render as _ } from "vue";
|
|
const w = [
|
|
"childRow",
|
|
"column-sizing",
|
|
"column-visibility",
|
|
"destroy",
|
|
"draw",
|
|
"error",
|
|
"init",
|
|
"length",
|
|
"order",
|
|
"page",
|
|
"preDraw",
|
|
"preInit",
|
|
"preXhr",
|
|
"processing",
|
|
"requestChild",
|
|
"search",
|
|
"stateLoadParams",
|
|
"stateLoaded",
|
|
"stateSaveParams",
|
|
"xhr",
|
|
"autoFill",
|
|
"preAutoFill",
|
|
"buttons-action",
|
|
"buttons-processing",
|
|
"column-reorder",
|
|
"key",
|
|
"key-blur",
|
|
"key-focus",
|
|
"key-refocus",
|
|
"key-return-submit",
|
|
"responsive-display",
|
|
"responsive-resize",
|
|
"rowgroup-datasrc",
|
|
"pre-row-reorder",
|
|
"row-reorder",
|
|
"row-reordered",
|
|
"dtsb-inserted",
|
|
"deselect",
|
|
"select",
|
|
"select-blur",
|
|
"selectItems",
|
|
"selectStyle",
|
|
"user-select",
|
|
"stateRestore-change"
|
|
];
|
|
let m;
|
|
const C = {
|
|
name: "Datatables.netVue",
|
|
inheritAttrs: !1,
|
|
use(i) {
|
|
m = i;
|
|
}
|
|
}, L = /* @__PURE__ */ x({
|
|
...C,
|
|
props: {
|
|
ajax: null,
|
|
columns: null,
|
|
data: null,
|
|
options: null
|
|
},
|
|
emits: w,
|
|
setup(i, { expose: c }) {
|
|
const o = i, y = p(null), u = {}, l = p(), D = p([]);
|
|
j(
|
|
() => o.data,
|
|
(t) => {
|
|
let e = l.value;
|
|
e && (f(e), e.clear(), e.rows.add(t).draw(!1));
|
|
},
|
|
{
|
|
deep: !0
|
|
}
|
|
), I(() => {
|
|
var a;
|
|
const t = A();
|
|
let e = Object.assign({}, o.options) || {};
|
|
if (o.data && (e.data = o.data, k(e.data)), o.columns && (e.columns = o.columns), e.columns && v(e.columns, t), o.ajax && (e.ajax = o.ajax), e.columnDefs || (e.columnDefs = []), t) {
|
|
let n = Object.keys(t.slots);
|
|
for (let r = 0; r < n.length; r++) {
|
|
let s = n[r];
|
|
if (s.match(/^column\-/)) {
|
|
let d = s.replace("column-", "");
|
|
e.columnDefs.push({
|
|
target: d.match(/^\d+$/) ? parseInt(d) : d + ":name",
|
|
render: "#" + s
|
|
});
|
|
}
|
|
}
|
|
v(e.columnDefs, t);
|
|
}
|
|
if (!m)
|
|
throw new Error(
|
|
"DataTables library not set. See https://datatables.net/tn/19 for details."
|
|
);
|
|
l.value = new m(E(y), e), (a = l.value) == null || a.on("preXhr", function() {
|
|
f(l.value);
|
|
});
|
|
for (let n of w)
|
|
l.value && t && l.value.on(n, function() {
|
|
var r = Array.from(arguments), s = r.shift();
|
|
r.unshift({ event: s, dt: l }), r.unshift(n), t.emit.apply(t, r);
|
|
});
|
|
}), O(() => {
|
|
var t;
|
|
f(l.value), (t = l.value) == null || t.destroy(!0);
|
|
});
|
|
function k(t) {
|
|
D.value = t.value ? t.value.slice() : t.slice();
|
|
}
|
|
function b(t) {
|
|
return function(e, a, n, r) {
|
|
let s = r.settings.sTableId + "," + r.row + "," + r.col;
|
|
if (!u[s]) {
|
|
let d = S("div", t({
|
|
cellData: e,
|
|
colIndex: r.col,
|
|
rowData: n,
|
|
rowIndex: r.row,
|
|
type: a
|
|
}));
|
|
u[s] = document.createElement("div"), _(d, u[s]);
|
|
}
|
|
return u[s];
|
|
};
|
|
}
|
|
function v(t, e) {
|
|
if (e)
|
|
for (let n = 0; n < t.length; n++) {
|
|
let r = t[n];
|
|
if (typeof r.render == "string" && r.render.charAt(0) === "#") {
|
|
var a = r.render.replace("#", "");
|
|
e.slots[a] && (r.render = b(e.slots[a]));
|
|
} else if (typeof r.render == "object" && typeof r.render.display == "string" && r.render.display.charAt(0) === "#") {
|
|
var a = r.render.display.replace("#", "");
|
|
e.slots[a] && (r.render.display = b(e.slots[a]));
|
|
}
|
|
}
|
|
}
|
|
function f(t) {
|
|
let e = Object.keys(u), a = t.table().node().id;
|
|
for (var n = 0; n < e.length; n++)
|
|
e[n].indexOf(a + ",") === 0 && delete u[e[n]];
|
|
}
|
|
return c({
|
|
dt: l
|
|
}), (t, e) => e[0] || (h(-1), e[0] = g("div", { class: "datatable" }, [
|
|
g("table", T({
|
|
ref_key: "table",
|
|
ref: y
|
|
}, t.$attrs, { style: { width: "100%" } }), [
|
|
R(t.$slots, "default")
|
|
], 16)
|
|
]), h(1), e[0]);
|
|
}
|
|
}), V = /* @__PURE__ */ (() => {
|
|
const i = L;
|
|
return i.install = (c) => {
|
|
c.component("Datatables.netVue", i);
|
|
}, i;
|
|
})();
|
|
export {
|
|
L as DataTable,
|
|
V as default
|
|
};
|