Skip to content

Commit e733205

Browse files
committed
fix(knowledge): keep connector mode switch focused across mode changes
1 parent 09cc11a commit e733205

2 files changed

Lines changed: 26 additions & 1 deletion

File tree

apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/connector-config-fields/connector-config-fields.test.tsx

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,4 +106,26 @@ describe('connector input mode switch', () => {
106106
act(() => radio('Manual input').click())
107107
expect(radio('Selector').checked).toBe(true)
108108
})
109+
110+
it('keeps focus on the switch through a keyboard mode round trip', () => {
111+
act(() => root.render(<Harness />))
112+
const selector = radio('Selector')
113+
const manual = radio('Manual input')
114+
115+
act(() => {
116+
manual.focus()
117+
manual.click()
118+
})
119+
expect(radio('Manual input')).toBe(manual)
120+
expect(manual.checked).toBe(true)
121+
expect(document.activeElement).toBe(manual)
122+
123+
act(() => {
124+
selector.focus()
125+
selector.click()
126+
})
127+
expect(radio('Selector')).toBe(selector)
128+
expect(selector.checked).toBe(true)
129+
expect(document.activeElement).toBe(selector)
130+
})
109131
})

apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/connector-config-fields/connector-config-fields.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export function ConnectorConfigFields({
6464

6565
return (
6666
<ChipModalField
67-
key={field.id}
67+
key={hasCanonicalPair && canonicalId ? `canonical:${canonicalId}` : field.id}
6868
type='custom'
6969
title={
7070
/**
@@ -111,6 +111,7 @@ export function ConnectorConfigFields({
111111
>
112112
{field.type === 'selector' && field.selectorKey ? (
113113
<ConnectorSelectorField
114+
key={field.id}
114115
field={field as ConnectorConfigField & { selectorKey: SelectorKey }}
115116
value={sourceConfig[field.id] ?? (field.multi ? [] : '')}
116117
onChange={(value: ConfigFieldValue) => onFieldChange(field.id, value)}
@@ -122,6 +123,7 @@ export function ConnectorConfigFields({
122123
/>
123124
) : field.type === 'dropdown' && field.options ? (
124125
<ChipCombobox
126+
key={field.id}
125127
options={field.options.map((opt) => ({
126128
label: opt.label,
127129
value: opt.id,
@@ -136,6 +138,7 @@ export function ConnectorConfigFields({
136138
/>
137139
) : (
138140
<ChipInput
141+
key={field.id}
139142
value={
140143
Array.isArray(sourceConfig[field.id])
141144
? (sourceConfig[field.id] as string[]).join(', ')

0 commit comments

Comments
 (0)