From b93d6ea22d630d250861478d9cc4f162394abb4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=8F=9C=20Cai?= Date: Tue, 5 Nov 2024 04:14:43 +0800 Subject: [PATCH 1/2] fix(cascader): when dynamically loading, you can search for any node --- src/cascader/core/effect.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/cascader/core/effect.ts b/src/cascader/core/effect.ts index 911e0f971f..4a2d48e7cc 100644 --- a/src/cascader/core/effect.ts +++ b/src/cascader/core/effect.ts @@ -176,7 +176,6 @@ export const treeNodesEffect = ( let nodes = []; if (inputVal) { const filterMethods = (node: TreeNode) => { - if (!node.isLeaf()) return; if (isFunction(filter)) { return filter(`${inputVal}`, node as TreeNodeModel & TreeNode); } From 75f70d94c6b33c6f2560ee5033591d8449c4dc3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BFCai?= Date: Tue, 12 Nov 2024 18:17:41 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(Cascader):=20=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E5=9C=A8load=20=E6=AC=A1=E7=BA=A7=E6=95=B0=E6=8D=AE=E6=97=B6?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=95=B0=E6=8D=AE=E6=8A=96=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/cascader/core/effect.ts | 46 +++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/src/cascader/core/effect.ts b/src/cascader/core/effect.ts index 4a2d48e7cc..5da6b97ecd 100644 --- a/src/cascader/core/effect.ts +++ b/src/cascader/core/effect.ts @@ -19,8 +19,20 @@ export function expendClickEffect( node: TreeNode, cascaderContext: CascaderContextType, ) { - const { checkStrictly, multiple, treeStore, setVisible, setValue, setTreeNodes, setExpend, value, max, valueType } = - cascaderContext; + const { + checkStrictly, + multiple, + treeStore, + setVisible, + setValue, + setTreeNodes, + setExpend, + value, + max, + valueType, + inputVal, + filter, + } = cascaderContext; const isDisabled = node.disabled || (multiple && (value as TreeNodeValue[]).length >= max && max !== 0); @@ -30,8 +42,9 @@ export function expendClickEffect( const expanded = node.setExpanded(true); treeStore.refreshNodes(); treeStore.replaceExpanded(expanded); - const nodes = treeStore.getNodes().filter((node: TreeNode) => node.visible); - setTreeNodes(nodes); + + // 搜索状态下更新treeNodes + treeNodesEffect(inputVal, treeStore, setTreeNodes, filter); // 多选条件下手动维护expend if (multiple) { @@ -173,20 +186,19 @@ export const treeNodesEffect = ( filter: CascaderContextType['filter'], ) => { if (!treeStore) return; - let nodes = []; - if (inputVal) { - const filterMethods = (node: TreeNode) => { - if (isFunction(filter)) { - return filter(`${inputVal}`, node as TreeNodeModel & TreeNode); - } - const fullPathLabel = getFullPathLabel(node, ''); - return fullPathLabel.indexOf(`${inputVal}`) > -1; - }; - nodes = treeStore.nodes.filter(filterMethods); - } else { - nodes = treeStore.getNodes().filter((node: TreeNode) => node.visible); - } + const filterMethods = (node: TreeNode) => { + if (isFunction(filter)) { + return filter(`${inputVal}`, node as TreeNodeModel & TreeNode); + } + const fullPathLabel = getFullPathLabel(node, ''); + return fullPathLabel.includes(`${inputVal}`) && !Array.isArray(node.children) && node.visible; + }; + + const nodes = inputVal + ? treeStore.nodes.filter((item) => filterMethods(item)) + : treeStore.getNodes().filter((node) => node.visible); + setTreeNodes(nodes); };