@revolist/vue-datagrid
Version:
Vue 2 DataGrid Spreadsheet component with native Vue 2 render support
164 lines (163 loc) • 5.08 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 t = this, s = e.reduce((l, c) => ({
...l,
[c]: (u) => {
t.$emit(c, u);
}
}), t.$listeners), i = t.$props ? Object.keys(t.$props).reduce((l, c) => (l[p(c)] = t.$props[c], l[c] = t.$props[c], l), {}) : {};
return n(
o,
{
ref: "wc",
domProps: i,
on: s,
attrs: { "data-testid": o }
},
[t.$slots.default]
);
}, r = (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: {},
rtl: {},
canDrag: {}
},
methods: {
refresh: r("refresh"),
setDataAt: r("setDataAt"),
scrollToRow: r("scrollToRow"),
scrollToColumnIndex: r("scrollToColumnIndex"),
scrollToColumnProp: r("scrollToColumnProp"),
updateColumns: r("updateColumns"),
addTrimmed: r("addTrimmed"),
scrollToCoordinate: r("scrollToCoordinate"),
setCellEdit: r("setCellEdit"),
setCellsFocus: r("setCellsFocus"),
getSource: r("getSource"),
getVisibleSource: r("getVisibleSource"),
getSourceStore: r("getSourceStore"),
getColumnStore: r("getColumnStore"),
updateColumnSorting: r("updateColumnSorting"),
clearSorting: r("clearSorting"),
getColumns: r("getColumns"),
clearFocus: r("clearFocus"),
getPlugins: r("getPlugins"),
getFocused: r("getFocused"),
getContentSize: r("getContentSize"),
getSelectedRange: r("getSelectedRange"),
refreshExtraElements: r("refreshExtraElements"),
getProviders: r("getProviders")
},
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, t) => {
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: t == null ? void 0 : t.vue });
let i = s.__vue__;
if (i && n)
for (const l in n)
i.$props[l] = n[l];
return i;
}, E = (o, e) => (n, t, s) => {
const i = e ? { ...e, ...t } : t;
return n("span", {
key: `${i.key}-${i.rowIndex || 0}`,
ref: (c) => d(o, c, i, s)
});
};
class b {
constructor(e, n, t, s) {
this.VueEditorConstructor = e, this.column = n, this.save = t, 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 t;
return e("span", {
key: `${this.column.prop}-${((t = this.editCell) == null ? void 0 : t.rowIndex) || 0}`,
ref: (s) => this.renderAdapter(s, n)
});
}
renderAdapter(e, n) {
if (!e)
return;
const t = {
...this.editCell,
column: this.column,
save: this.save,
close: this.close
}, s = d(
this.VueEditorConstructor,
e,
t,
n
);
s && (this.vueEl = s);
}
}
const T = (o) => function(e, n, t) {
return new b(o, e, n, t);
}, 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
};