From 96fca5b3b283d7f77b39da892ac8085b58bf8ce4 Mon Sep 17 00:00:00 2001 From: Haixing <65376724+HaixingOoO@users.noreply.github.com> Date: Fri, 22 Dec 2023 10:19:09 +0800 Subject: [PATCH] fix(cascader): fix Cascader add filter select the bug (#2674) --- src/cascader/components/Item.tsx | 8 +++++++- src/cascader/core/effect.ts | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/cascader/components/Item.tsx b/src/cascader/components/Item.tsx index 0b311feb7..1da3b1f60 100644 --- a/src/cascader/components/Item.tsx +++ b/src/cascader/components/Item.tsx @@ -2,6 +2,7 @@ import React, { forwardRef, useMemo } from 'react'; import classNames from 'classnames'; import { ChevronRightIcon as TdChevronRightIcon } from 'tdesign-icons-react'; +import isFunction from 'lodash/isFunction'; import TLoading from '../../loading'; import Checkbox from '../../checkbox'; @@ -114,6 +115,11 @@ const Item = forwardRef( ); }; + const isFiltering = useMemo( + () => Boolean(cascaderContext.filterable) || isFunction(cascaderContext.filter), + [cascaderContext.filterable, cascaderContext.filter], + ); + return (
  • { e.stopPropagation(); e?.nativeEvent?.stopImmediatePropagation?.(); - + if (cascaderContext.inputVal && isFiltering) return; onClick(node); }} onMouseEnter={(e: React.MouseEvent) => { diff --git a/src/cascader/core/effect.ts b/src/cascader/core/effect.ts index 523fdc9b7..e27267b35 100644 --- a/src/cascader/core/effect.ts +++ b/src/cascader/core/effect.ts @@ -110,7 +110,13 @@ export function valueChangeEffect(node: TreeNode, cascaderContext: CascaderConte * @param cascaderContext */ export function closeIconClickEffect(cascaderContext: CascaderContextType) { - const { setVisible, multiple, setExpend, setValue } = cascaderContext; + const { setVisible, multiple, setExpend, setValue, treeStore } = cascaderContext; + + const expanded = treeStore.getExpanded(); + setTimeout(() => { + treeStore.replaceExpanded(expanded); + treeStore.refreshNodes(); + }, 0); setVisible(false, {});