@@ -66,6 +66,11 @@ export function QuickConfigureInputs(props: QuickConfigureInputsProps) {
66
66
// Local field values state
67
67
const [ fieldValues , setFieldValues ] = useState < QuickConfigureFields > ( { } ) ;
68
68
69
+ // Advanced config accordion state
70
+ const [ accordionState , setAccordionState ] = useState < 'open' | 'closed' > (
71
+ 'closed'
72
+ ) ;
73
+
69
74
// on initial load, and when there are any deployed models found, set
70
75
// defaults for the field values for certain workflow types
71
76
useEffect ( ( ) => {
@@ -117,13 +122,24 @@ export function QuickConfigureInputs(props: QuickConfigureInputsProps) {
117
122
} , [ fieldValues ] ) ;
118
123
119
124
// Try to pre-fill the dimensions based on the chosen embedding model
125
+ // If not found, we display a helper callout, and automatically
126
+ // open the accordion to guide the user.
127
+ const [ unknownEmbeddingLength , setUnknownEmbeddingLength ] = useState < boolean > (
128
+ false
129
+ ) ;
120
130
useEffect ( ( ) => {
121
131
const selectedModel = deployedModels . find (
122
132
( model ) => model . id === fieldValues . embeddingModelId
123
133
) ;
124
134
if ( selectedModel ?. connectorId !== undefined ) {
125
135
const connector = connectors [ selectedModel . connectorId ] ;
126
136
if ( connector !== undefined ) {
137
+ const dimensions = getEmbeddingModelDimensions ( connector ) ;
138
+ if ( dimensions === undefined ) {
139
+ setUnknownEmbeddingLength ( true ) ;
140
+ setAccordionState ( 'open' ) ;
141
+ }
142
+ setUnknownEmbeddingLength ( dimensions === undefined ) ;
127
143
setFieldValues ( {
128
144
...fieldValues ,
129
145
embeddingLength : getEmbeddingModelDimensions ( connector ) ,
@@ -161,6 +177,16 @@ export function QuickConfigureInputs(props: QuickConfigureInputsProps) {
161
177
// we will always have a selectable embedding model.
162
178
< >
163
179
< EuiSpacer size = "m" />
180
+ { unknownEmbeddingLength && (
181
+ < >
182
+ < EuiCallOut
183
+ size = "s"
184
+ title = "No embedding length found. Make sure to manually configure below."
185
+ color = "warning"
186
+ />
187
+ < EuiSpacer size = "s" />
188
+ </ >
189
+ ) }
164
190
< EuiCompressedFormRow
165
191
fullWidth = { true }
166
192
label = {
@@ -313,8 +339,13 @@ export function QuickConfigureInputs(props: QuickConfigureInputsProps) {
313
339
< EuiAccordion
314
340
id = "optionalConfiguration"
315
341
buttonContent = "Optional configuration"
316
- initialIsOpen = { false }
342
+ forceState = { accordionState }
317
343
data-testid = "optionalConfigurationButton"
344
+ onToggle = { ( ) =>
345
+ accordionState === 'open'
346
+ ? setAccordionState ( 'closed' )
347
+ : setAccordionState ( 'open' )
348
+ }
318
349
>
319
350
< >
320
351
< EuiSpacer size = "s" />
0 commit comments