Skip to content

Commit e195305

Browse files
committed
fix: Enhance error handling and improve SelectItem accessibility
1 parent e9bb11e commit e195305

7 files changed

Lines changed: 41 additions & 39 deletions

File tree

web/src/main.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ loader.config({
3535
loader.init().then(() => {
3636
// Monaco is now loaded and available
3737
console.log('Monaco Editor loaded from local files');
38+
}).catch((error) => {
39+
console.error('Failed to load Monaco Editor:', error);
3840
});
3941

4042
// Initialize theme immediately before React renders

web/src/pages/gateway/components/ConfigEditor.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ export function ConfigEditor({ config, onChange, isDark, editorOptions, isEditin
151151
</SelectItem>
152152
))
153153
) : (
154-
<SelectItem key="default">default</SelectItem>
154+
<SelectItem key="default" textValue="default">default</SelectItem>
155155
)}
156156
</Select>
157157

web/src/pages/gateway/components/MCPServersConfig.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -224,9 +224,9 @@ export function MCPServersConfig({
224224
onChange={(e) => updateServer(index, 'type', e.target.value)}
225225
aria-label={t('gateway.mcp_type')}
226226
>
227-
<SelectItem key="stdio">stdio</SelectItem>
228-
<SelectItem key="sse">sse</SelectItem>
229-
<SelectItem key="streamable-http">streamable-http</SelectItem>
227+
<SelectItem key="stdio" textValue="stdio">stdio</SelectItem>
228+
<SelectItem key="sse" textValue="sse">sse</SelectItem>
229+
<SelectItem key="streamable-http" textValue="streamable-http">streamable-http</SelectItem>
230230
</Select>
231231
</div>
232232

@@ -236,8 +236,8 @@ export function MCPServersConfig({
236236
onChange={(e) => updateServer(index, 'policy', e.target.value)}
237237
aria-label={t('gateway.startup_policy')}
238238
>
239-
<SelectItem key="onDemand">{t('gateway.policy_on_demand')}</SelectItem>
240-
<SelectItem key="onStart">{t('gateway.policy_on_start')}</SelectItem>
239+
<SelectItem key="onDemand" textValue={t('gateway.policy_on_demand')}>{t('gateway.policy_on_demand')}</SelectItem>
240+
<SelectItem key="onStart" textValue={t('gateway.policy_on_start')}>{t('gateway.policy_on_start')}</SelectItem>
241241
</Select>
242242

243243
{(server.type === 'stdio' || !server.type) && (

web/src/pages/gateway/components/RouterConfig.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ export function RouterConfig({
128128
onChange={(e) => addCorsItem('allowMethods', e.target.value)}
129129
>
130130
{['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'HEAD', 'PATCH'].map(method => (
131-
<SelectItem key={method}>{method}</SelectItem>
131+
<SelectItem key={method} textValue={method}>{method}</SelectItem>
132132
))}
133133
</Select>
134134
</div>
@@ -282,12 +282,12 @@ export function RouterConfig({
282282
>
283283
<>
284284
{(parsedConfig?.servers || []).map(server => (
285-
<SelectItem key={server.name}>
285+
<SelectItem key={server.name} textValue={server.name}>
286286
{server.name}
287287
</SelectItem>
288288
))}
289289
{(parsedConfig?.mcpServers || []).map(server => (
290-
<SelectItem key={server.name}>
290+
<SelectItem key={server.name} textValue={server.name}>
291291
{server.name}
292292
</SelectItem>
293293
))}
@@ -372,7 +372,7 @@ export function RouterConfig({
372372
aria-label={t('gateway.auth_mode')}
373373
isDisabled={true}
374374
>
375-
<SelectItem key="oauth2">OAuth2</SelectItem>
375+
<SelectItem key="oauth2" textValue="OAuth2">OAuth2</SelectItem>
376376
</Select>
377377
</div>
378378
)}

web/src/pages/gateway/components/ToolsConfig.tsx

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -173,10 +173,10 @@ export function ToolsConfig({
173173
onChange={(e) => updateTool(index, 'method', e.target.value)}
174174
aria-label={t('gateway.method')}
175175
>
176-
<SelectItem key="GET">GET</SelectItem>
177-
<SelectItem key="POST">POST</SelectItem>
178-
<SelectItem key="PUT">PUT</SelectItem>
179-
<SelectItem key="DELETE">DELETE</SelectItem>
176+
<SelectItem key="GET" textValue="GET">GET</SelectItem>
177+
<SelectItem key="POST" textValue="POST">POST</SelectItem>
178+
<SelectItem key="PUT" textValue="PUT">PUT</SelectItem>
179+
<SelectItem key="DELETE" textValue="DELETE">DELETE</SelectItem>
180180
</Select>
181181
<Input
182182
label={t('gateway.endpoint')}
@@ -286,10 +286,10 @@ export function ToolsConfig({
286286
updateTool(index, 'args', updatedArgs);
287287
}}
288288
>
289-
<SelectItem key="body">{t('gateway.position_body')}</SelectItem>
290-
<SelectItem key="query">{t('gateway.position_query')}</SelectItem>
291-
<SelectItem key="path">{t('gateway.position_path')}</SelectItem>
292-
<SelectItem key="form-data">{t('gateway.type_form_data')}</SelectItem>
289+
<SelectItem key="body" textValue={t('gateway.position_body')}>{t('gateway.position_body')}</SelectItem>
290+
<SelectItem key="query" textValue={t('gateway.position_query')}>{t('gateway.position_query')}</SelectItem>
291+
<SelectItem key="path" textValue={t('gateway.position_path')}>{t('gateway.position_path')}</SelectItem>
292+
<SelectItem key="form-data" textValue={t('gateway.type_form_data')}>{t('gateway.type_form_data')}</SelectItem>
293293
</Select>
294294
</div>
295295

@@ -307,11 +307,11 @@ export function ToolsConfig({
307307
updateTool(index, 'args', updatedArgs);
308308
}}
309309
>
310-
<SelectItem key="string">{t('gateway.type_string')}</SelectItem>
311-
<SelectItem key="number">{t('gateway.type_number')}</SelectItem>
312-
<SelectItem key="boolean">{t('gateway.type_boolean')}</SelectItem>
313-
<SelectItem key="array">{t('gateway.type_array')}</SelectItem>
314-
<SelectItem key="object">{t('gateway.type_object')}</SelectItem>
310+
<SelectItem key="string" textValue={t('gateway.type_string')}>{t('gateway.type_string')}</SelectItem>
311+
<SelectItem key="number" textValue={t('gateway.type_number')}>{t('gateway.type_number')}</SelectItem>
312+
<SelectItem key="boolean" textValue={t('gateway.type_boolean')}>{t('gateway.type_boolean')}</SelectItem>
313+
<SelectItem key="array" textValue={t('gateway.type_array')}>{t('gateway.type_array')}</SelectItem>
314+
<SelectItem key="object" textValue={t('gateway.type_object')}>{t('gateway.type_object')}</SelectItem>
315315
</Select>
316316

317317
<div className="flex items-center gap-2">
@@ -355,10 +355,10 @@ export function ToolsConfig({
355355
updateTool(index, 'args', updatedArgs);
356356
}}
357357
>
358-
<SelectItem key="string">{t('gateway.type_string')}</SelectItem>
359-
<SelectItem key="number">{t('gateway.type_number')}</SelectItem>
360-
<SelectItem key="boolean">{t('gateway.type_boolean')}</SelectItem>
361-
<SelectItem key="object">{t('gateway.type_object')}</SelectItem>
358+
<SelectItem key="string" textValue={t('gateway.type_string')}>{t('gateway.type_string')}</SelectItem>
359+
<SelectItem key="number" textValue={t('gateway.type_number')}>{t('gateway.type_number')}</SelectItem>
360+
<SelectItem key="boolean" textValue={t('gateway.type_boolean')}>{t('gateway.type_boolean')}</SelectItem>
361+
<SelectItem key="object" textValue={t('gateway.type_object')}>{t('gateway.type_object')}</SelectItem>
362362
</Select>
363363

364364
{/* 如果数组元素是对象,显示对象属性配置 */}
@@ -444,9 +444,9 @@ export function ToolsConfig({
444444
updateTool(index, 'args', updatedArgs);
445445
}}
446446
>
447-
<SelectItem key="string">{t('gateway.type_string')}</SelectItem>
448-
<SelectItem key="number">{t('gateway.type_number')}</SelectItem>
449-
<SelectItem key="boolean">{t('gateway.type_boolean')}</SelectItem>
447+
<SelectItem key="string" textValue={t('gateway.type_string')}>{t('gateway.type_string')}</SelectItem>
448+
<SelectItem key="number" textValue={t('gateway.type_number')}>{t('gateway.type_number')}</SelectItem>
449+
<SelectItem key="boolean" textValue={t('gateway.type_boolean')}>{t('gateway.type_boolean')}</SelectItem>
450450
</Select>
451451
</div>
452452
<div className="lg:col-span-11">
@@ -586,9 +586,9 @@ export function ToolsConfig({
586586
updateTool(index, 'args', updatedArgs);
587587
}}
588588
>
589-
<SelectItem key="string">{t('gateway.type_string')}</SelectItem>
590-
<SelectItem key="number">{t('gateway.type_number')}</SelectItem>
591-
<SelectItem key="boolean">{t('gateway.type_boolean')}</SelectItem>
589+
<SelectItem key="string" textValue={t('gateway.type_string')}>{t('gateway.type_string')}</SelectItem>
590+
<SelectItem key="number" textValue={t('gateway.type_number')}>{t('gateway.type_number')}</SelectItem>
591+
<SelectItem key="boolean" textValue={t('gateway.type_boolean')}>{t('gateway.type_boolean')}</SelectItem>
592592
</Select>
593593
</div>
594594
<div className="lg:col-span-11">

web/src/pages/gateway/config-versions.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ export function ConfigVersionsPage() {
271271
placeholder={t('mcp.configVersions.select_tenant')}
272272
>
273273
{tenants.map(tenant => (
274-
<SelectItem key={tenant.name}>{tenant.name}</SelectItem>
274+
<SelectItem key={tenant.name} textValue={tenant.name}>{tenant.name}</SelectItem>
275275
))}
276276
</Select>
277277
<Select
@@ -282,7 +282,7 @@ export function ConfigVersionsPage() {
282282
placeholder={t('mcp.configVersions.select_config')}
283283
>
284284
{configNames.map(name => (
285-
<SelectItem key={name}>{name}</SelectItem>
285+
<SelectItem key={name} textValue={name}>{name}</SelectItem>
286286
))}
287287
</Select>
288288
</div>

web/src/pages/users/user-management.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -310,8 +310,8 @@ export function UserManagement() {
310310
});
311311
}}
312312
>
313-
<SelectItem key="admin">{t('users.role_admin')}</SelectItem>
314-
<SelectItem key="normal">{t('users.role_normal')}</SelectItem>
313+
<SelectItem key="admin" textValue={t('users.role_admin')}>{t('users.role_admin')}</SelectItem>
314+
<SelectItem key="normal" textValue={t('users.role_normal')}>{t('users.role_normal')}</SelectItem>
315315
</Select>
316316

317317
{/* Tenant selection section */}
@@ -381,8 +381,8 @@ export function UserManagement() {
381381
});
382382
}}
383383
>
384-
<SelectItem key="admin">{t('users.role_admin')}</SelectItem>
385-
<SelectItem key="normal">{t('users.role_normal')}</SelectItem>
384+
<SelectItem key="admin" textValue={t('users.role_admin')}>{t('users.role_admin')}</SelectItem>
385+
<SelectItem key="normal" textValue={t('users.role_normal')}>{t('users.role_normal')}</SelectItem>
386386
</Select>
387387

388388
<div className="flex items-center gap-2">

0 commit comments

Comments
 (0)