@revolist/vue-datagrid
Version:
Vue 2 DataGrid Spreadsheet component with native Vue 2 render support
162 lines (161 loc) • 5.04 kB
JavaScript
import a from "vue";
import { defineCustomElements as f } from "@revolist/revogrid/loader";
export * from "@revolist/revogrid/loader";
export * from "@revolist/revogrid";
const m = (o, e = []) => function(n) {
const r = this, s = e.reduce((l, c) => ({
...l,
[c]: (u) => {
r.$emit(c, u);
}
}), r.$listeners), i = r.$props ? Object.keys(r.$props).reduce((l, c) => (l[p(c)] = r.$props[c], l[c] = r.$props[c], l), {}) : {};
return n(
o,
{
ref: "wc",
domProps: i,
on: s,
attrs: { "data-testid": o }
},
[r.$slots.default]
);
}, t = (o) => function(...e) {
this.$refs.wc[o](...e);
}, g = (o) => o.toLowerCase(), p = (o) => g(
o.replace(/([A-Z0-9])/g, (e) => " " + e[0]).trim().replace(/ /g, "-")
), h = [
"revo-grid"
];
a.config.ignoredElements = [...a.config.ignoredElements, ...h];
const C = /* @__PURE__ */ a.extend({
props: {
rowHeaders: {},
frameSize: {},
rowSize: {},
colSize: {},
range: {},
readonly: {},
resize: {},
canFocus: {},
useClipboard: {},
columns: {},
source: {},
pinnedTopSource: {},
pinnedBottomSource: {},
rowDefinitions: {},
editors: {},
applyOnClose: {},
plugins: {},
columnTypes: {},
theme: {},
rowClass: {},
autoSizeColumn: {},
filter: {},
sorting: {},
focusTemplate: {},
canMoveColumns: {},
trimmedRows: {},
exporting: {},
grouping: {},
stretch: {},
additionalData: {},
disableVirtualX: {},
disableVirtualY: {},
hideAttribution: {},
jobsBeforeRender: {},
registerVNode: {},
accessible: {},
canDrag: {}
},
methods: {
refresh: t("refresh"),
setDataAt: t("setDataAt"),
scrollToRow: t("scrollToRow"),
scrollToColumnIndex: t("scrollToColumnIndex"),
scrollToColumnProp: t("scrollToColumnProp"),
updateColumns: t("updateColumns"),
addTrimmed: t("addTrimmed"),
scrollToCoordinate: t("scrollToCoordinate"),
setCellEdit: t("setCellEdit"),
setCellsFocus: t("setCellsFocus"),
getSource: t("getSource"),
getVisibleSource: t("getVisibleSource"),
getSourceStore: t("getSourceStore"),
getColumnStore: t("getColumnStore"),
updateColumnSorting: t("updateColumnSorting"),
clearSorting: t("clearSorting"),
getColumns: t("getColumns"),
clearFocus: t("clearFocus"),
getPlugins: t("getPlugins"),
getFocused: t("getFocused"),
getContentSize: t("getContentSize"),
getSelectedRange: t("getSelectedRange"),
refreshExtraElements: t("refreshExtraElements")
},
render: m("revo-grid", ["contentsizechanged", "beforeedit", "beforerangeedit", "afteredit", "beforeautofill", "beforerange", "afterfocus", "roworderchanged", "beforesorting", "beforesourcesortingapply", "beforesortingapply", "rowdragstart", "headerclick", "beforecellfocus", "beforefocuslost", "beforesourceset", "beforeanysource", "aftersourceset", "afteranysource", "beforecolumnsset", "beforecolumnapplied", "aftercolumnsset", "beforefilterapply", "beforefiltertrimmed", "beforetrimmed", "aftertrimmed", "viewportscroll", "beforeexport", "beforeeditstart", "aftercolumnresize", "beforerowdefinition", "filterconfigchanged", "sortingconfigchanged", "rowheaderschanged", "beforegridrender", "aftergridrender", "aftergridinit", "additionaldatachanged", "afterthemechanged", "created"])
}), d = (o, e, n, r) => {
if (!e)
return null;
let s;
if (e != null && e.childNodes.length && (s = e.childNodes[0]), !s)
return s = document.createElement("span"), e.appendChild(s), typeof o == "object" && (o = a.extend(o)), new o({ el: s, propsData: n, parent: r == null ? void 0 : r.vue });
let i = s.__vue__;
if (i && n)
for (const l in n)
i.$props[l] = n[l];
return i;
}, E = (o, e) => (n, r, s) => {
const i = e ? { ...e, ...r } : r;
return n("span", {
key: `${i.key}-${i.rowIndex || 0}`,
ref: (c) => d(o, c, i, s)
});
};
class b {
constructor(e, n, r, s) {
this.VueEditorConstructor = e, this.column = n, this.save = r, this.close = s, this.element = null;
}
// optional, called after editor rendered
componentDidRender() {
}
// optional, called after editor destroyed
disconnectedCallback() {
var e;
(e = this.vueEl) == null || e.$destroy(), this.vueEl = void 0;
}
render(e, n) {
var r;
return e("span", {
key: `${this.column.prop}-${((r = this.editCell) == null ? void 0 : r.rowIndex) || 0}`,
ref: (s) => this.renderAdapter(s, n)
});
}
renderAdapter(e, n) {
if (!e)
return;
const r = {
...this.editCell,
column: this.column,
save: this.save,
close: this.close
}, s = d(
this.VueEditorConstructor,
e,
r,
n
);
s && (this.vueEl = s);
}
}
const T = (o) => function(e, n, r) {
return new b(o, e, n, r);
}, V = async () => (await f(), C);
export {
T as Editor,
E as Template,
V as VGrid,
T as VGridVueEditor,
E as VGridVueTemplate,
d as VGridVueTemplateConstructor,
V as default
};