From 8104d35f08d3dec4ac51d9c2f604181275bfe37a Mon Sep 17 00:00:00 2001 From: liuhanchen Date: Sun, 11 Jun 2023 22:49:36 +0800 Subject: [PATCH] feat: 兼容旧版表格编辑器 --- packages/index.js | 2 ++ packages/table/editable copy.vue | 217 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- packages/table/editable.vue | 38 ++++++++++++++++++++++++++++++++++++-- packages/table/editor.vue | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ packages/table/index.vue | 7 +++++-- packages/table/normal.vue | 6 ++++++ packages/utils/vnode.js | 2 +- 7 files changed, 180 insertions(+), 222 deletions(-) delete mode 100644 packages/table/editable copy.vue create mode 100644 packages/table/editor.vue diff --git a/packages/index.js b/packages/index.js index 4b1e71f..0ee6398 100644 --- a/packages/index.js +++ b/packages/index.js @@ -2,6 +2,7 @@ import Vue from 'vue'; import ZTable from './table/index.vue'; import ZTableNormal from './table/normal'; import ZTableEditable from './table/editable'; +import ZTableEditor from './table/editor'; import ElImageViewer from './upload/image-viewer'; let components = {}; @@ -17,6 +18,7 @@ const install = function(Vue, opts = {}) { components[ZTable.name] = ZTable; components[ZTableNormal.name] = ZTableNormal; components[ZTableEditable.name] = ZTableEditable; + components[ZTableEditor.name] = ZTableEditor; Object.values(components).forEach(component => { // 组件前缀 const prefix = opts.name || 'z'; diff --git a/packages/table/editable copy.vue b/packages/table/editable copy.vue deleted file mode 100644 index 99efbb6..0000000 --- a/packages/table/editable copy.vue +++ /dev/null @@ -1,217 +0,0 @@ - - - - - diff --git a/packages/table/editable.vue b/packages/table/editable.vue index 99efbb6..d48d53b 100644 --- a/packages/table/editable.vue +++ b/packages/table/editable.vue @@ -61,14 +61,21 @@ diff --git a/packages/table/index.vue b/packages/table/index.vue index 6355c72..fdd4c3e 100644 --- a/packages/table/index.vue +++ b/packages/table/index.vue @@ -6,8 +6,11 @@ export default { functional: true, render(h, context) { const props = context.props || {}; - if (props.editable) { - return ref('z-table-editable', context); + if (Object.prototype.hasOwnProperty.call(props, 'editable') && props.editable !== false) { + return h('z-table-editable', { props, scopedSlots: context.scopedSlots, on: context.listeners }); + } + if (props.editor) { + return ref('z-table-editor', context); } return ref('z-table-normal', context); }, diff --git a/packages/table/normal.vue b/packages/table/normal.vue index 4144968..7bf0741 100644 --- a/packages/table/normal.vue +++ b/packages/table/normal.vue @@ -6,9 +6,15 @@ import { renderContext } from '../utils/vnode'; function headerRender(h, context, item) { const headerSlot = context.scopedSlots[`header-${item.prop}`]; return function(scope) { + // 自定义具名插槽 if (headerSlot) { return headerSlot(scope); } + // 自定义渲染函数 + if (item.header) { + return item.header(item, h, scope); + } + // 默认取值 return item.label; }; } diff --git a/packages/utils/vnode.js b/packages/utils/vnode.js index bdf35cb..82f5fde 100644 --- a/packages/utils/vnode.js +++ b/packages/utils/vnode.js @@ -1,6 +1,6 @@ // 注册函数式组件ref export function registerRef(vnode, context) { - if (!context.data.ref) { + if (!context.data.ref || !vnode.data.hook) { return vnode; } // 备份vnode原有的insert周期函数 -- libgit2 0.21.0