UNPKG

@visactor/vue-vtable

Version:

The vue version of VTable

59 lines (55 loc) 1.99 kB
'use strict'; 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;