diff --git a/components/table/hooks/useFilter/FilterDropdown.tsx b/components/table/hooks/useFilter/FilterDropdown.tsx index b88507a512..6a824f6b0d 100644 --- a/components/table/hooks/useFilter/FilterDropdown.tsx +++ b/components/table/hooks/useFilter/FilterDropdown.tsx @@ -1,12 +1,13 @@ import * as React from 'react'; import classNames from 'classnames'; import isEqual from 'lodash/isEqual'; +import type { FieldDataNode } from 'rc-tree'; import FilterFilled from '@ant-design/icons/FilterFilled'; import Button from '../../../button'; import Menu from '../../../menu'; import type { MenuProps } from '../../../menu'; import Tree from '../../../tree'; -import type { DataNode, EventDataNode } from '../../../tree'; +import type { EventDataNode } from '../../../tree'; import Checkbox from '../../../checkbox'; import type { CheckboxChangeEvent } from '../../../checkbox'; import Radio from '../../../radio'; @@ -27,6 +28,8 @@ import { flattenKeys } from '.'; import useSyncState from '../../../_util/hooks/useSyncState'; import { ConfigContext } from '../../../config-provider/context'; +type FilterTreeDataNode = FieldDataNode<{ title: React.ReactNode; key: React.Key }>; + interface FilterRestProps { confirm?: Boolean; closeDropdown?: Boolean; @@ -160,7 +163,10 @@ function FilterDropdown(props: FilterDropdownProps) { setFilteredKeysSync(selectedKeys); }; - const onCheck = (keys: Key[], { node, checked }: { node: EventDataNode; checked: boolean }) => { + const onCheck = ( + keys: Key[], + { node, checked }: { node: EventDataNode; checked: boolean }, + ) => { if (!filterMultiple) { onSelectKeys({ selectedKeys: checked && node.key ? [node.key] : [] }); } else { @@ -286,7 +292,7 @@ function FilterDropdown(props: FilterDropdownProps) { const getTreeData = ({ filters }: { filters?: ColumnFilterItem[] }) => (filters || []).map((filter, index) => { const key = String(filter.value); - const item: DataNode = { + const item: FilterTreeDataNode = { title: filter.text, key: filter.value !== undefined ? key : index, }; @@ -351,7 +357,7 @@ function FilterDropdown(props: FilterDropdownProps) { {locale.filterCheckall} ) : null} - checkable selectable={false} blockNode diff --git a/components/tree-select/index.en-US.md b/components/tree-select/index.en-US.md index feae8947e8..290651c9f4 100644 --- a/components/tree-select/index.en-US.md +++ b/components/tree-select/index.en-US.md @@ -66,6 +66,7 @@ Tree selection control. | onSearch | A callback function, can be executed when the search input changes | function(value: string) | - | | | onSelect | A callback function, can be executed when you select a treeNode | function(value, node, extra) | - | | | onTreeExpand | A callback function, can be executed when treeNode expanded | function(expandedKeys) | - | | +| treeExpandAction | Tree title open logic when click, optional: false \| `click` \| `doubleClick` | string \| boolean | false | | ### Tree Methods diff --git a/components/tree-select/index.tsx b/components/tree-select/index.tsx index dec102a5fa..587714700f 100644 --- a/components/tree-select/index.tsx +++ b/components/tree-select/index.tsx @@ -77,6 +77,7 @@ const InternalTreeSelect = , ref: React.Ref, @@ -208,6 +209,7 @@ const InternalTreeSelect = ); }; diff --git a/components/tree-select/index.zh-CN.md b/components/tree-select/index.zh-CN.md index a5e3cbdca7..b165ede9ca 100644 --- a/components/tree-select/index.zh-CN.md +++ b/components/tree-select/index.zh-CN.md @@ -67,6 +67,7 @@ cover: https://gw.alipayobjects.com/zos/alicdn/Ax4DA0njr/TreeSelect.svg | onSearch | 文本框值变化时回调 | function(value: string) | - | | | onSelect | 被选中时调用 | function(value, node, extra) | - | | | onTreeExpand | 展示节点时调用 | function(expandedKeys) | - | | +| treeExpandAction | 点击节点 title 时的展开逻辑,可选:false \| `click` \| `doubleClick` | string \| boolean | false | | ### Tree 方法 diff --git a/components/tree/DirectoryTree.tsx b/components/tree/DirectoryTree.tsx index cf0f59bd5b..408281eb8a 100644 --- a/components/tree/DirectoryTree.tsx +++ b/components/tree/DirectoryTree.tsx @@ -3,6 +3,7 @@ import classNames from 'classnames'; import type RcTree from 'rc-tree'; import debounce from 'lodash/debounce'; import { conductExpandParent } from 'rc-tree/lib/util'; +import omit from 'rc-util/lib/omit'; import type { EventDataNode, DataNode, Key } from 'rc-tree/lib/interface'; import { convertDataToEntities, convertTreeToData } from 'rc-tree/lib/utils/treeUtil'; import FileOutlined from '@ant-design/icons/FileOutlined'; @@ -104,7 +105,7 @@ const DirectoryTree: React.ForwardRefRenderFunction const onExpand = ( keys: Key[], info: { - node: EventDataNode; + node: EventDataNode; expanded: boolean; nativeEvent: MouseEvent; }, @@ -116,7 +117,7 @@ const DirectoryTree: React.ForwardRefRenderFunction return props.onExpand?.(keys, info); }; - const onClick = (event: React.MouseEvent, node: EventDataNode) => { + const onClick = (event: React.MouseEvent, node: EventDataNode) => { const { expandAction } = props; // Expand the tree @@ -127,7 +128,7 @@ const DirectoryTree: React.ForwardRefRenderFunction props.onClick?.(event, node); }; - const onDoubleClick = (event: React.MouseEvent, node: EventDataNode) => { + const onDoubleClick = (event: React.MouseEvent, node: EventDataNode) => { const { expandAction } = props; // Expand the tree @@ -218,7 +219,7 @@ const DirectoryTree: React.ForwardRefRenderFunction icon={getIcon} ref={treeRef} blockNode - {...otherProps} + {...omit(otherProps, ['expandAction'])} prefixCls={prefixCls} className={connectClassName} expandedKeys={expandedKeys} diff --git a/package.json b/package.json index 12a4a8d22b..80516c6151 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "lodash": "^4.17.21", "memoize-one": "^6.0.0", "moment": "^2.29.2", - "rc-cascader": "~3.5.0", + "rc-cascader": "~3.6.0", "rc-checkbox": "~2.3.0", "rc-collapse": "~3.3.0", "rc-dialog": "~8.8.2", @@ -151,8 +151,8 @@ "rc-tabs": "~11.16.0", "rc-textarea": "~0.3.0", "rc-tooltip": "~5.1.1", - "rc-tree": "~5.5.0", - "rc-tree-select": "~5.3.0", + "rc-tree": "~5.6.4", + "rc-tree-select": "~5.4.0", "rc-trigger": "^5.2.10", "rc-upload": "~4.3.0", "rc-util": "^5.20.0",