From 7391731569c4d0ed083e396a0e121b0b8c566c4d Mon Sep 17 00:00:00 2001 From: pengYYY Date: Mon, 7 Aug 2023 16:25:19 +0800 Subject: [PATCH] feat: tree disabled --- js/tree/tree-node-model.ts | 4 +++- js/tree/tree-node.ts | 7 ++++--- js/tree/types.ts | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/js/tree/tree-node-model.ts b/js/tree/tree-node-model.ts index 932e50c049..f71c2ce9ae 100644 --- a/js/tree/tree-node-model.ts +++ b/js/tree/tree-node-model.ts @@ -253,12 +253,14 @@ export class TreeNodeModel { public setData(data: OptionData) { const node = this[nodeKey]; // 详细细节可见 https://github.com/Tencent/tdesign-common/issues/655 - const _data = omit(data, ['children', 'value', 'label']); + const _data = omit(data, ['children', 'value', 'label', 'disabled']); const { keys } = node.tree.config; const dataValue = data[keys?.value || 'value']; const dataLabel = data[keys?.label || 'label']; + const dataDisabled = data[keys?.disabled || 'disabled']; if (!isUndefined(dataValue)) _data.value = dataValue; if (!isUndefined(dataLabel)) _data.label = dataLabel; + if (!isUndefined(dataDisabled)) _data.disable = dataDisabled; Object.assign(node.data, _data); Object.assign(node, _data); diff --git a/js/tree/tree-node.ts b/js/tree/tree-node.ts index 3f7b218586..ef243c88c9 100644 --- a/js/tree/tree-node.ts +++ b/js/tree/tree-node.ts @@ -27,7 +27,6 @@ export const setableStatus: Record = { expandMutex: null, activable: null, checkable: null, - disabled: null, draggable: null, loading: false, }; @@ -140,6 +139,7 @@ export class TreeNode { const propChildren = keys.children || 'children'; const propLabel = keys.label || 'label'; const propValue = keys.value || 'value'; + const propsDisabled = keys.disabled || 'disabled'; // 节点自身初始化数据 this.model = null; @@ -168,7 +168,6 @@ export class TreeNode { // 这种处理方式主要是解决 treeStore.setConfig 方法配置全局属性导致的状态切换与保留的问题 this.activable = null; this.checkable = null; - this.disabled = null; this.expandMutex = null; this.draggable = null; @@ -189,6 +188,8 @@ export class TreeNode { // 设置标签 this.label = data[propLabel] || ''; + // 设置是否禁用 + this.disabled = data[propsDisabled]; // 设置子节点 const children = data[propChildren]; @@ -557,7 +558,7 @@ export class TreeNode { const { tree } = this; const keys = Object.keys(item); keys.forEach((key) => { - if (hasOwnProperty.call(setableStatus, key) || key === 'label') { + if (hasOwnProperty.call(setableStatus, key) || key === 'label' || key === 'disabled') { this[key] = item[key]; } }); diff --git a/js/tree/types.ts b/js/tree/types.ts index bfa47f9737..fa843a0713 100644 --- a/js/tree/types.ts +++ b/js/tree/types.ts @@ -9,6 +9,7 @@ export interface KeysType { value?: string; label?: string; children?: string; + disabled?: string; } export interface TreeNodeState {