@xpyjs/gantt-vue
Version:
Vue wrapper for x-gantt
90 lines (89 loc) • 2.4 kB
JavaScript
import { defineComponent as p, ref as k, watch as f, onMounted as v, onUnmounted as x, createElementBlock as _, openBlock as b, nextTick as w } from "vue";
import { XGantt as h } from "@xpyjs/gantt-core";
import { colorjs as T, dayjs as X, generateId as B } from "@xpyjs/gantt-core";
const g = /* @__PURE__ */ p({
__name: "GanttVue",
props: {
options: { default: () => ({}) }
},
emits: ["loaded", "error", "update:link", "create:link", "select:link", "contextmenu:link", "select", "click:row", "dblclick:row", "contextmenu:row", "click:slider", "dblclick:slider", "contextmenu:slider", "move", "hover:slider", "leave:slider", "click:baseline", "contextmenu:baseline", "hover:baseline", "leave:baseline"],
setup(t, { expose: c, emit: o }) {
const l = t, r = o, i = k();
let e = null;
const d = async () => {
i.value && (await w(), e = new h(i.value, l.options), u());
}, u = () => {
if (!e) return;
[
"loaded",
"error",
"update:link",
"create:link",
"select:link",
"contextmenu:link",
"select",
"click:row",
"dblclick:row",
"contextmenu:row",
"click:slider",
"dblclick:slider",
"contextmenu:slider",
"move",
"hover:slider",
"leave:slider",
"click:baseline",
"contextmenu:baseline",
"hover:baseline",
"leave:baseline"
].forEach((s) => {
e.on(
s,
(...m) => {
r(s, ...m);
}
);
});
};
return f(
() => l,
(n) => {
e && e.update(n.options);
},
{ deep: !0 }
), c({
/**
* 获取甘特图实例
*/
getInstance: () => e,
/**
* 跳转日期
*/
jumpTo: (n) => {
e && e.jumpTo(n);
}
}), v(() => {
d();
}), x(() => {
e && (e.destroy(), e = null);
}), (n, s) => (b(), _("div", {
ref_key: "containerRef",
ref: i,
class: "x-gantt-container"
}, null, 512));
}
}), G = (t, c) => {
const o = t.__vccOpts || t;
for (const [l, r] of c)
o[l] = r;
return o;
}, y = /* @__PURE__ */ G(g, [["__scopeId", "data-v-668d94f2"]]), a = y;
a.install = (t) => {
t.component("XGanttVue", a);
};
export {
a as XGanttVue,
T as colorjs,
X as dayjs,
a as default,
B as generateId
};