From 6fc61693ed2bccd49977b842d9cc5028f84c2270 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=92=E6=A0=80?= Date: Fri, 26 Nov 2021 20:03:55 +0800 Subject: [PATCH] fix: add condition check to node.canPerformAction --- packages/designer/src/document/node/node.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/designer/src/document/node/node.ts b/packages/designer/src/document/node/node.ts index 86bfda345..d34040576 100644 --- a/packages/designer/src/document/node/node.ts +++ b/packages/designer/src/document/node/node.ts @@ -15,6 +15,7 @@ import { NodeStatus, CompositeValue, GlobalEvent, + ComponentAction, } from '@ali/lowcode-types'; import { compatStage } from '@ali/lowcode-utils'; import { SettingTopEntry } from '@ali/lowcode-designer'; @@ -863,10 +864,17 @@ export class Node { /** * 是否可执行某action */ - canPerformAction(action: string): boolean { + canPerformAction(actionName: string): boolean { const availableActions = - this.componentMeta?.availableActions?.map((action) => action.name) || []; - return availableActions.indexOf(action) >= 0; + this.componentMeta?.availableActions?.filter((action: ComponentAction) => { + const { condition } = action; + return typeof condition === 'function' ? + condition(this) !== false : + condition !== false; + }) + .map((action: ComponentAction) => action.name) || []; + + return availableActions.indexOf(actionName) >= 0; } // ======= compatible apis ====