From e41df5c54734f03eb43e2ff759ddf6ac7d231fd9 Mon Sep 17 00:00:00 2001 From: Uyarn Date: Thu, 15 Aug 2024 19:19:26 +0800 Subject: [PATCH 1/2] chore: update common --- src/_common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_common b/src/_common index 1878b0313..1ae65fd27 160000 --- a/src/_common +++ b/src/_common @@ -1 +1 @@ -Subproject commit 1878b0313fa7dcdf5486f5adb7d2581c1c0d1c27 +Subproject commit 1ae65fd277c668c29481299772632fcec1c7645a From 81c1fcaa814b5d76794505c60c6ee227515c1632 Mon Sep 17 00:00:00 2001 From: Uyarn Date: Thu, 15 Aug 2024 19:26:35 +0800 Subject: [PATCH 2/2] fix(cascader): fix remove and change trigger effect --- src/cascader/core/effect.ts | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/cascader/core/effect.ts b/src/cascader/core/effect.ts index dd329d9c9..4a5dcff0c 100644 --- a/src/cascader/core/effect.ts +++ b/src/cascader/core/effect.ts @@ -140,24 +140,27 @@ export function handleRemoveTagEffect( } = cascaderContext; if (disabled) return; - const newValue = cloneDeep(value) as []; - const res = newValue.splice(index, 1); - const node = treeStore.getNodes(res[0])[0]; - setValue(newValue, 'uncheck', node.getModel()); - - const checked = node.setChecked(!node.isChecked()); - // 处理不同数据类型 - const resValue = valueType === 'single' - ? checked - : checked.map((val) => treeStore - .getNode(val) - .getPath() - .map((item) => item.value)); - - setValue(resValue, 'uncheck', node.getModel()); - if (isFunction(onRemove)) { - onRemove({ value: checked, node: node as any }); + // index equal to undefined means to click clear button + if (index !== undefined) { + const newValue = cloneDeep(value) as []; + const res = newValue.splice(index, 1); + const node = treeStore.getNodes(res[0])[0]; + + const checked = node.setChecked(!node.isChecked()); + // 处理不同数据类型 + const resValue = valueType === 'single' + ? checked + : checked.map((val) => treeStore + .getNode(val) + .getPath() + .map((item) => item.value)); + setValue(resValue, 'uncheck', node.getModel()); + if (isFunction(onRemove)) { + onRemove({ value: checked, node: node as any }); + } + } else if (isFunction(onRemove)) { + onRemove({ value, node: undefined }); } }