Skip to content

Commit 31fa72c

Browse files
author
昔梦
committed
兼容antd4 tooltip+popover
1 parent 899acac commit 31fa72c

File tree

2 files changed

+35
-17
lines changed

2 files changed

+35
-17
lines changed

packages/x-flow/src/components/CustomNode/sourceHandle.tsx

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { PlusOutlined } from '@ant-design/icons';
22
import { Handle } from '@xyflow/react';
33
import { Tooltip } from 'antd';
4-
import React, { memo, useRef, useState } from 'react';
4+
import React, { memo, useMemo, useRef, useState } from 'react';
5+
import { getAntdVersion } from '../../utils';
56
import NodeSelectPopover from '../NodesPopover';
67

78
export default memo((props: any) => {
@@ -18,6 +19,19 @@ export default memo((props: any) => {
1819
const [openNodeSelectPopover, setOpenNodeSelectPopover] = useState(false);
1920
const popoverRef = useRef(null);
2021

22+
const toolTipVersionProps = useMemo(() => {
23+
const version = getAntdVersion();
24+
if (version === 'V5') {
25+
return {
26+
open: isShowTooltip,
27+
};
28+
}
29+
// V4
30+
return {
31+
visible: isShowTooltip,
32+
};
33+
}, [isShowTooltip]);
34+
2135
return (
2236
<Handle
2337
type="source"
@@ -53,8 +67,11 @@ export default memo((props: any) => {
5367
color: '#354052',
5468
fontSize: '12px',
5569
}}
56-
open={isShowTooltip}
57-
getPopupContainer={() => document.getElementById('xflow-container') as HTMLElement}
70+
color='#fff'
71+
{...toolTipVersionProps}
72+
getPopupContainer={() =>
73+
document.getElementById('xflow-container') as HTMLElement
74+
}
5875
>
5976
<PlusOutlined style={{ color: '#fff', fontSize: 10 }} />
6077
</Tooltip>

packages/x-flow/src/components/NodesPopover/index.tsx

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
import { useMemo } from 'react';
21
import { useClickAway } from 'ahooks';
32
import { Popover } from 'antd';
43
import React, {
54
forwardRef,
65
useCallback,
76
useContext,
87
useImperativeHandle,
8+
useMemo,
99
useRef,
1010
useState,
1111
} from 'react';
1212
import { useStore } from '../../hooks/useStore';
1313
import { ConfigContext } from '../../models/context';
14+
import { getAntdVersion } from '../../utils';
1415
import NodesMenu from '../NodesMenu';
15-
import { getAntdVersion } from '../../utils';
1616
import './index.less';
1717

1818
export default forwardRef((props: any, popoverRef) => {
@@ -29,9 +29,7 @@ export default forwardRef((props: any, popoverRef) => {
2929
nodeSelector || {};
3030

3131
useImperativeHandle(popoverRef, () => ({
32-
changeOpen: val => {
33-
setOpen(val);
34-
},
32+
changeOpen: openChange,
3533
}));
3634

3735
useClickAway(() => {
@@ -48,36 +46,39 @@ export default forwardRef((props: any, popoverRef) => {
4846
onNodeSelectPopoverChange && onNodeSelectPopoverChange(false);
4947
}, []);
5048

49+
const openChange = () => {
50+
setTimeout(() => {
51+
setIsAddingNode(true);
52+
closeRef.current = true;
53+
setOpen(true);
54+
}, 50);
55+
};
56+
5157
const popoverVersionProps = useMemo(() => {
5258
const version = getAntdVersion();
5359
if (version === 'V5') {
5460
return {
5561
open,
62+
onOpenChange: openChange,
5663
};
5764
}
5865
// V4
5966
return {
6067
visible: open,
68+
onVisibleChange: openChange,
6169
};
6270
}, [open]);
6371

6472
return (
6573
<Popover
66-
overlayClassName='nodes-popover'
74+
overlayClassName="nodes-popover"
6775
getPopupContainer={() => document.getElementById('xflow-container')}
6876
zIndex={2000}
6977
arrow={false}
7078
overlayInnerStyle={{ padding: '12px 6px' }}
7179
{...popoverProps}
72-
trigger='click'
80+
trigger="click"
7381
{...popoverVersionProps}
74-
onOpenChange={() => {
75-
setTimeout(() => {
76-
setIsAddingNode(true);
77-
closeRef.current = true;
78-
setOpen(true);
79-
}, 50);
80-
}}
8182
content={
8283
<NodesMenu
8384
ref={ref}

0 commit comments

Comments
 (0)