Skip to content

Commit 75ecfcc

Browse files
author
昔梦
committed
feat:新增react-flow:panOnScroll,和preventScrolling属性
1 parent d673be6 commit 75ecfcc

File tree

3 files changed

+10
-1
lines changed

3 files changed

+10
-1
lines changed

docs/xflow/api.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ group:
2727
| onMenuItemClick | 点击节点右上角复制粘贴删除功能, 支持自定义和默认行为 | (itemInfo: [ItemInfo](#iteminfo), defaultAction: () => void) => void | - |
2828
| clickAddNode | 自定义添加节点逻辑 | `(type: string, nodeItem: TNodeItem, addNode: (initData?: Record<string,any>) => void) => void` | - |
2929
| zoomOnScroll | 是否通过滚动鼠标滚轮来缩放画布 | `boolean` | `true` |
30+
| panOnScroll | 是否通过滚动鼠标滚轮来平移画布 | `boolean` | `false` |
31+
| preventScrolling | 是否阻止浏览器在画布上滚动时的默认行为 | `boolean` | `true` |
32+
33+
3034

3135

3236
## TNodePanel

packages/x-flow/src/XFlow.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ const XFlow: FC<FlowProps> = memo(props => {
8787
const { settingMap, globalConfig, readOnly } = useContext(ConfigContext);
8888
const [openPanel, setOpenPanel] = useState<boolean>(true);
8989
const [openLogPanel, setOpenLogPanel] = useState<boolean>(true);
90-
const { onNodeClick, zoomOnScroll=true } = props;
90+
const { onNodeClick, zoomOnScroll = true, panOnScroll = false, preventScrolling = true } = props;
9191
const nodeEditorRef = useRef(null);
9292

9393
useEffect(() => {
@@ -308,6 +308,9 @@ const XFlow: FC<FlowProps> = memo(props => {
308308
edges={edges}
309309
minZoom={0.3}
310310
zoomOnScroll={zoomOnScroll}
311+
panOnScroll={panOnScroll} // 禁用滚动平移
312+
preventScrolling={preventScrolling} // 允许页面滚动
313+
311314
defaultEdgeOptions={{
312315
type: 'buttonedge',
313316
style: {

packages/x-flow/src/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,8 @@ export interface FlowProps {
159159
onMenuItemClick?: (itemInfo: ItemInfo, defaultAction: () => void) => void;
160160
clickAddNode?: (type: string, nodeItem: TNodeItem, addNode: (initData?: Record<string, any>) => void) => void;
161161
zoomOnScroll?: boolean;
162+
panOnScroll?: boolean;
163+
preventScrolling?: boolean;
162164
}
163165
interface ItemInfo {
164166
key: 'copy' | 'paste' | 'delete' | string;

0 commit comments

Comments
 (0)