Skip to content

Commit 3b423b0

Browse files
author
昔梦
committed
feat:新增disabledShortcutDelete属性,是否禁用该节点的快捷键删除功能
1 parent 28f0c60 commit 3b423b0

File tree

5 files changed

+21
-5
lines changed

5 files changed

+21
-5
lines changed

docs/xflow/api.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,8 @@ Handle 配置继承自 React Flow 的 Handle 配置,用于控制节点连接
148148

149149
单个节点配置
150150

151-
| 属性 | 描述 | 类型 | 默认值 |
152-
| ------------------------------- | ----------------------------------------------------------- | ---------------------------------- | ------ |
151+
| 属性 | 描述 | 类型 | 默认值 |
152+
| -------------------------------------------- | ---------------------------- | ------------------------------- | ------ |
153153
| title | 节点名称 | `string` | |
154154
| type | 节点类型 | `string` | |
155155
| description | 节点描述 | `string` | |
@@ -169,7 +169,7 @@ Handle 配置继承自 React Flow 的 Handle 配置,用于控制节点连接
169169
| showTestingBtn | 是否展示节点的单点调试按钮 | `boolean` | `false` |
170170
| getSettingSchema | 动态获取节点的业务配置信息,返回值同settingSchema。同时设置`settingSchema``getSettingSchema`只生效`getSettingSchema` | `(nodeId: string, nodeType: string, nodeItem: TNodeItem, nodeData: any, form: ReturnType<typeof useForm>) => Promise<Schema>` | |
171171
| renderHandle | 自定义渲染节点的handle,以实现某个节点自定义的出口数量.`sourceHandle`是原handle组件 | `(sourceHandle: SourceHandleType,sourceHandleProps:ComponentProps<SourceHandleType>,nodeProps: {id: string;type: string;data: any;layout: 'LR';isConnectable: boolean;readOnly: boolean;}) => React.JSX.Element`| |
172-
172+
| disabledShortcutDelete | 是否禁用该节点的快捷键删除功能 | `boolean` | false |
173173

174174

175175
## TNodeSelector

docs/xflow/demo/best/basic/setting.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ export const settings = [
133133
type: 'icon-start',
134134
bgColor: '#17B26A',
135135
},
136+
disabledShortcutDelete: true,
136137
targetHandleHidden: true,
137138
settingSchema: {
138139
type: 'object',
@@ -215,6 +216,7 @@ export const settings = [
215216
type: 'icon-end',
216217
bgColor: '#F79009',
217218
},
219+
disabledShortcutDelete: true,
218220
sourceHandleHidden: true,
219221
settingSchema: {
220222
type: 'object',

docs/xflow/demo/quickStart/index.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export default () => {
77
title: '开始',
88
type: 'Start',
99
hidden: true,
10+
disabledShortcutDelete: true,
1011
targetHandleHidden: true,
1112
icon: {
1213
type: 'icon-start',
@@ -27,6 +28,7 @@ export default () => {
2728
title: '结束',
2829
type: 'End',
2930
hidden: true,
31+
disabledShortcutDelete: true,
3032
sourceHandleHidden: true,
3133
icon: {
3234
type: 'icon-end',

packages/x-flow/src/XFlow.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -348,11 +348,22 @@ const XFlow: FC<FlowProps> = memo(props => {
348348
},
349349
deletable: deletable, //默认连线属性受此项控制
350350
}}
351-
onBeforeDelete={async () => {
351+
onBeforeDelete={async (elements) => {
352352
if (readOnly) {
353353
return false;
354354
}
355-
return true;
355+
const nodesToDelete = elements?.nodes || [];
356+
const blockedNodes = nodesToDelete?.filter(node => {
357+
const nodeConfig = settingMap[node?.data?._nodeType as string];
358+
return nodeConfig?.hasOwnProperty('disabledShortcutDelete')
359+
? Boolean(nodeConfig?.disabledShortcutDelete)
360+
: false;
361+
});
362+
if (blockedNodes?.length > 0) {
363+
message.warning(`${blockedNodes.map(n => n.data?.title || n.id).join(', ')}节点不允许删除!`);
364+
return false;
365+
}
366+
return true
356367
}}
357368
onConnect={onConnect}
358369
onNodesChange={changes => {

packages/x-flow/src/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export interface TNodeItem {
5757
onTesting: (node, nodes) => void;// 单点调试方法
5858
showTestingBtn?: boolean; // 是否显示单点调试按钮
5959
className?: string;// 自定义节点class
60+
disabledShortcutDelete?: boolean; // 是否禁用快捷键删除
6061
}
6162

6263
export interface TNodeGroup {

0 commit comments

Comments
 (0)