Skip to content

Commit a518cca

Browse files
committed
feat:menu增加只读
1 parent 8e85ef2 commit a518cca

File tree

5 files changed

+21
-14
lines changed

5 files changed

+21
-14
lines changed

packages/x-flow/src/XFlow.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ const XFlow: FC<FlowProps> = memo(props => {
8686
const { settingMap, globalConfig,readOnly } = useContext(ConfigContext);
8787
const [openPanel, setOpenPanel] = useState<boolean>(true);
8888
const [openLogPanel, setOpenLogPanel] = useState<boolean>(true);
89-
const { onNodeClick,panel } = props;
89+
const { onNodeClick,panel = {} } = props;
9090

9191
useEffect(() => {
9292
zoomTo(0.8);

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import SourceHandle from './sourceHandle';
1616
export default memo((props: any) => {
1717
const { id, type, data, layout, isConnectable, selected, onClick, status } =
1818
props;
19-
const { widgets, settingMap, globalConfig, onMenuItemClick, antdVersion } =
19+
const { widgets, settingMap, globalConfig, onMenuItemClick, antdVersion,readOnly } =
2020
useContext(ConfigContext);
2121
const deletable = globalConfig?.edge?.deletable ?? true;
2222

@@ -126,7 +126,7 @@ export default memo((props: any) => {
126126
if (type === 'Switch' && e.key.startsWith('paste-') && sourceHandle) {
127127
data['sourceHandle'] = sourceHandle;
128128
}
129-
onMenuItemClick(data, () => {
129+
onMenuItemClick(data as any, () => {
130130
defaultAction(e, sourceHandle);
131131
});
132132
} else {
@@ -187,7 +187,7 @@ export default memo((props: any) => {
187187
{menuItem.map((r: any) => {
188188
return <Menu.Item {...r}>{r.label}</Menu.Item>;
189189
})}
190-
<Menu.Item key={'delete'}>删除</Menu.Item>
190+
<Menu.Item key={'delete'} danger={true}>删除</Menu.Item>
191191
</Menu>
192192
);
193193

@@ -237,7 +237,7 @@ export default memo((props: any) => {
237237
/>
238238
)}
239239
{selected && (
240-
<Dropdown {...dropdownVersionProps} trigger={['click', 'contextMenu']}>
240+
<Dropdown disabled={readOnly} {...dropdownVersionProps} trigger={['click', 'contextMenu']}>
241241
<div className="xflow-node-actions-container">
242242
<MoreOutlined
243243
style={{ transform: 'rotateZ(90deg)', fontSize: '20px' }}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ export default memo((props: any) => {
1919
const [isShowTooltip, setIsShowTooltip] = useState(false);
2020
const [openNodeSelectPopover, setOpenNodeSelectPopover] = useState(false);
2121
const popoverRef = useRef(null);
22-
const { antdVersion }: any = useContext(ConfigContext);
23-
22+
const { antdVersion,globalConfig } = useContext(ConfigContext);
23+
const handleProps = globalConfig?.handle || {}
2424

2525
const toolTipVersionProps = useMemo(() => {
2626
if (antdVersion === 'V5') {
@@ -47,6 +47,7 @@ export default memo((props: any) => {
4747
setIsShowTooltip(false);
4848
setOpenNodeSelectPopover(true);
4949
}}
50+
{...handleProps}
5051
{...rest}
5152
>
5253
{(selected || isHovered || openNodeSelectPopover ) && (

packages/x-flow/src/models/context.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { createContext } from 'react';
2+
import { FlowProps } from '../types';
23
import { FlowStore } from './store';
34

5+
type Config = FlowProps & Record<string,any>
46
export const ConfigContext = createContext(null);
57

68
const StoreContext = createContext<FlowStore | null>(null);

packages/x-flow/src/types.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
import { NodeMouseHandler } from '@xyflow/react';
1+
import { NodeMouseHandler,Handle } from '@xyflow/react';
22
import { Schema } from 'form-render';
3-
import React, { ReactNode } from 'react';
3+
import React, { ReactNode ,ComponentProps} from 'react';
4+
5+
type HandleProps = ComponentProps<typeof Handle>
6+
47
export interface TNodeItem {
58
title: string; // 节点 title
69
type: string; // 节点类型 _group 比较te
@@ -82,10 +85,11 @@ export interface TControl{
8285
hideAnnotate?:boolean
8386
}
8487

85-
// export interface THandle{
86-
// isConnectableStart?:boolean
87-
// isConnectableEnd?:boolean
88-
// }
88+
export interface THandle{
89+
// isConnectableStart?:boolean
90+
// isConnectableEnd?:boolean
91+
isValidConnection?:HandleProps['isValidConnection']
92+
}
8993

9094
export interface TPanel{
9195
onClose:(activeNodeId:string)=>void
@@ -112,7 +116,7 @@ export interface FlowProps {
112116
nodeView?: TNodeView;
113117
edge?: TEdge;
114118
controls?:TControl
115-
//handle?:THandle
119+
handle?:THandle
116120
};
117121
logPanel?: TLogPanel; // 日志面板配置
118122
readOnly?:boolean//只读模式

0 commit comments

Comments
 (0)