@@ -148,17 +148,25 @@ const VFolderDeployModalContent: React.FC<VFolderDeployModalContentProps> = ({
148148 userSelectedPresetId ??
149149 ( availablePresets [ 0 ] ?. id ? toLocalId ( availablePresets [ 0 ] . id ) : undefined ) ;
150150
151- const [ userSelectedResourceGroup , setUserSelectedResourceGroup ] = useState <
152- string | undefined
153- > ( undefined ) ;
154- const effectiveResourceGroup =
155- userSelectedResourceGroup ?? resourceGroups [ 0 ] ?. name ;
151+ // Hold the resource-group selection on the antd Form. `Form.useWatch`
152+ // subscribes to changes so the Deploy button's `disabled` prop updates
153+ // immediately, and `form.getFieldValue` reads it at submit time.
154+ // `BAIProjectResourceGroupSelect` auto-fills the "default" (or first
155+ // available) group via its `autoSelectDefault` prop.
156+ const [ form ] = Form . useForm < { resourceGroup ?: string } > ( ) ;
157+ const selectedResourceGroup = Form . useWatch ( 'resourceGroup' , form ) ;
156158
157159 const handleDeploy = ( ) : Promise < void > => {
158160 if ( ! vfolderId || ! projectId ) return Promise . resolve ( ) ;
159161
160162 const presetId = effectivePresetId ;
161- const resourceGroup = effectiveResourceGroup ;
163+ // In `isAutoDeployScenario`, `BAIProjectResourceGroupSelect` is never
164+ // mounted (the component returns `null` before reaching the form), so
165+ // its `autoSelectDefault` cannot populate the form value. Fall back to
166+ // the sole resource group here — same pattern as `ModelCardDeployModal`.
167+ const resourceGroup = isAutoDeployScenario
168+ ? resourceGroups [ 0 ] ?. name
169+ : form . getFieldValue ( 'resourceGroup' ) ;
162170
163171 if ( ! presetId || ! resourceGroup ) return Promise . resolve ( ) ;
164172
@@ -266,7 +274,7 @@ const VFolderDeployModalContent: React.FC<VFolderDeployModalContentProps> = ({
266274 footer = { null }
267275 width = { 480 }
268276 >
269- < Form layout = "vertical" >
277+ < Form form = { form } layout = "vertical" >
270278 < Form . Item
271279 label = { t ( 'modelStore.Preset' ) }
272280 tooltip = { t ( 'modelStore.PresetTooltip' ) }
@@ -301,14 +309,14 @@ const VFolderDeployModalContent: React.FC<VFolderDeployModalContentProps> = ({
301309 </ BAIFlex >
302310 </ Form . Item >
303311 < Form . Item
312+ name = "resourceGroup"
304313 label = { t ( 'modelStore.ResourceGroup' ) }
305314 tooltip = { t ( 'modelStore.ResourceGroupTooltip' ) }
306- required
315+ rules = { [ { required : true } ] }
307316 >
308317 < BAIProjectResourceGroupSelect
309318 projectName = { projectName ?? '' }
310- value = { effectiveResourceGroup }
311- onChange = { ( value : string ) => setUserSelectedResourceGroup ( value ) }
319+ autoSelectDefault
312320 style = { { width : '100%' } }
313321 />
314322 </ Form . Item >
@@ -339,7 +347,7 @@ const VFolderDeployModalContent: React.FC<VFolderDeployModalContentProps> = ({
339347 ! vfolderId ||
340348 ! projectId ||
341349 ! effectivePresetId ||
342- ! effectiveResourceGroup ||
350+ ! selectedResourceGroup ||
343351 hasNoPresets
344352 }
345353 >
@@ -353,7 +361,7 @@ const VFolderDeployModalContent: React.FC<VFolderDeployModalContentProps> = ({
353361 ! vfolderId ||
354362 ! projectId ||
355363 ! effectivePresetId ||
356- ! effectiveResourceGroup ||
364+ ! selectedResourceGroup ||
357365 hasNoPresets
358366 }
359367 >
0 commit comments