@@ -5,7 +5,7 @@ import { initializeSwitchCaseFromManifest } from '../../core/actions/bjsworkflow
5
5
import { getOperationManifest } from '../../core/queries/operation' ;
6
6
import { useMonitoringView , useReadOnly } from '../../core/state/designerOptions/designerOptionsSelectors' ;
7
7
import { setShowDeleteModal } from '../../core/state/designerView/designerViewSlice' ;
8
- import { useIconUri } from '../../core/state/operation/operationSelector' ;
8
+ import { useIconUri , useParameterValidationErrors } from '../../core/state/operation/operationSelector' ;
9
9
import { useIsNodeSelected } from '../../core/state/panel/panelSelectors' ;
10
10
import { changePanelNode , setSelectedNodeId } from '../../core/state/panel/panelSlice' ;
11
11
import {
@@ -21,6 +21,7 @@ import { addSwitchCase, setFocusNode, toggleCollapsedGraphId } from '../../core/
21
21
import { LoopsPager } from '../common/LoopsPager/LoopsPager' ;
22
22
import { DropZone } from '../connections/dropzone' ;
23
23
import { DeleteMenuItem } from '../menuItems/deleteMenuItem' ;
24
+ import { MessageBarType } from '@fluentui/react' ;
24
25
import { SubgraphCard } from '@microsoft/designer-ui' ;
25
26
import { SUBGRAPH_TYPES , removeIdTag } from '@microsoft/logic-apps-shared' ;
26
27
import { memo , useCallback , useMemo } from 'react' ;
@@ -104,6 +105,18 @@ const SubgraphCardNode = ({ data, targetPosition = Position.Top, sourcePosition
104
105
[ deleteClick , metadata ?. subgraphType ]
105
106
) ;
106
107
108
+ const parameterValidationErrors = useParameterValidationErrors ( subgraphId ) ;
109
+ const parameterValidationErrorText = intl . formatMessage ( {
110
+ defaultMessage : 'Invalid parameters' ,
111
+ description : 'Text to explain that there are invalid parameters for this node' ,
112
+ } ) ;
113
+
114
+ const { errorMessage, errorLevel } = useMemo ( ( ) => {
115
+ if ( parameterValidationErrors ?. length > 0 )
116
+ return { errorMessage : parameterValidationErrorText , errorLevel : MessageBarType . severeWarning } ;
117
+ return { errorMessage : undefined , errorLevel : undefined } ;
118
+ } , [ parameterValidationErrors ?. length , parameterValidationErrorText ] ) ;
119
+
107
120
return (
108
121
< div >
109
122
< div style = { { display : 'flex' , alignItems : 'center' } } >
@@ -122,6 +135,8 @@ const SubgraphCardNode = ({ data, targetPosition = Position.Top, sourcePosition
122
135
collapsed = { graphCollapsed }
123
136
handleCollapse = { handleGraphCollapse }
124
137
contextMenuItems = { contextMenuItems }
138
+ errorLevel = { errorLevel }
139
+ errorMessage = { errorMessage }
125
140
/>
126
141
{ isMonitoringView && normalizedType === constants . NODE . TYPE . UNTIL ? (
127
142
< LoopsPager metadata = { metadata } scopeId = { subgraphId } collapsed = { graphCollapsed } />
0 commit comments