@visactor/vue-vtable
Version:
The vue version of VTable
36 lines (32 loc) • 1.28 kB
JavaScript
;
var VTable = require('@visactor/vtable');
var editor = require('./editor.js');
var vutils = require('@visactor/vutils');
const DYNAMIC_RENDER_EDITOR = 'dynamic-render-editor';
function checkRenderEditor(column, getEditCustomNode) {
const { editor } = column || {};
const key = getRenderEditorColumnKeyField(column);
if (!vutils.isValid(key) || editor !== DYNAMIC_RENDER_EDITOR) {
return false;
}
if (typeof getEditCustomNode === 'function') {
column.getEditCustomNode = getEditCustomNode;
return true;
}
return typeof column.getEditCustomNode === 'function';
}
function getRenderEditorColumnKeyField(column) {
const { field, key } = column || {};
return vutils.isValid(key) ? key : field;
}
function getRenderEditor(create, currentContext) {
let renderEditor = VTable.register.editor(DYNAMIC_RENDER_EDITOR);
if (!renderEditor && !!create) {
renderEditor = new editor.DynamicRenderEditor(currentContext);
VTable.register.editor(DYNAMIC_RENDER_EDITOR, renderEditor);
}
return renderEditor;
}
exports.checkRenderEditor = checkRenderEditor;
exports.getRenderEditor = getRenderEditor;
exports.getRenderEditorColumnKeyField = getRenderEditorColumnKeyField;