@visactor/vue-vtable
Version:
The vue version of VTable
59 lines (55 loc) • 1.99 kB
JavaScript
;
var vue = require('vue');
var vutils = require('@visactor/vutils');
require('tslib');
require('@visactor/vtable');
var util = require('../edit/util.js');
function useEditorRender(props, tableRef) {
const instance = vue.getCurrentInstance();
const validColumns = vue.computed(() => {
var _a;
const columns = (_a = props.options) === null || _a === void 0 ? void 0 : _a.columns;
if (!vutils.isArray(columns)) {
return [];
}
return columns.filter(col => !!vutils.isObject(col) && !!util.checkRenderEditor(col));
});
vue.watchEffect(() => {
resolveRenderEditor();
});
vue.onBeforeUnmount(() => {
releaseRenderEditor();
});
function resolveRenderEditor() {
const id = getTableId();
if (!vutils.isValid(id)) {
return;
}
let renderEditor = util.getRenderEditor();
if (renderEditor) {
renderEditor.removeNode(id);
}
else if (validColumns.value.length > 0) {
renderEditor = util.getRenderEditor(true, instance === null || instance === void 0 ? void 0 : instance.appContext);
}
validColumns.value.forEach(column => {
const { getEditCustomNode } = column;
const key = util.getRenderEditorColumnKeyField(column);
renderEditor.registerNode(id, key, getEditCustomNode);
delete column.editCustomNode;
});
}
function releaseRenderEditor() {
const id = getTableId();
if (!vutils.isValid(id)) {
return;
}
const renderEditor = util.getRenderEditor();
renderEditor === null || renderEditor === void 0 ? void 0 : renderEditor.release(id);
}
function getTableId() {
var _a;
return (_a = tableRef.value) === null || _a === void 0 ? void 0 : _a.id;
}
}
exports.useEditorRender = useEditorRender;