Skip to content

Commit e96ecdb

Browse files
authored
fix(integrations): show disabled role combobox for readonly members (#3921)
1 parent c7ca90c commit e96ecdb

File tree

1 file changed

+27
-38
lines changed

1 file changed

+27
-38
lines changed

apps/sim/app/workspace/[workspaceId]/settings/components/integrations/integrations-manager.tsx

Lines changed: 27 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ const roleOptions = [
6262
{ value: 'admin', label: 'Admin' },
6363
] as const
6464

65+
const roleComboOptions = roleOptions.map((option) => ({ value: option.value, label: option.label }))
66+
6567
export function IntegrationsManager() {
6668
const params = useParams()
6769
const workspaceId = (params?.workspaceId as string) || ''
@@ -1315,42 +1317,32 @@ export function IntegrationsManager() {
13151317
</div>
13161318
</div>
13171319

1320+
<Combobox
1321+
options={roleComboOptions}
1322+
value={
1323+
roleOptions.find((option) => option.value === member.role)?.label || ''
1324+
}
1325+
selectedValue={member.role}
1326+
onChange={(value) =>
1327+
handleChangeMemberRole(member.userId, value as WorkspaceCredentialRole)
1328+
}
1329+
placeholder='Role'
1330+
disabled={
1331+
!isSelectedAdmin || (member.role === 'admin' && adminMemberCount <= 1)
1332+
}
1333+
size='sm'
1334+
/>
13181335
{isSelectedAdmin ? (
1319-
<>
1320-
<Combobox
1321-
options={roleOptions.map((option) => ({
1322-
value: option.value,
1323-
label: option.label,
1324-
}))}
1325-
value={
1326-
roleOptions.find((option) => option.value === member.role)?.label ||
1327-
''
1328-
}
1329-
selectedValue={member.role}
1330-
onChange={(value) =>
1331-
handleChangeMemberRole(
1332-
member.userId,
1333-
value as WorkspaceCredentialRole
1334-
)
1335-
}
1336-
placeholder='Role'
1337-
disabled={member.role === 'admin' && adminMemberCount <= 1}
1338-
size='sm'
1339-
/>
1340-
<Button
1341-
variant='ghost'
1342-
onClick={() => handleRemoveMember(member.userId)}
1343-
disabled={member.role === 'admin' && adminMemberCount <= 1}
1344-
className='w-full justify-end'
1345-
>
1346-
Remove
1347-
</Button>
1348-
</>
1336+
<Button
1337+
variant='ghost'
1338+
onClick={() => handleRemoveMember(member.userId)}
1339+
disabled={member.role === 'admin' && adminMemberCount <= 1}
1340+
className='w-full justify-end'
1341+
>
1342+
Remove
1343+
</Button>
13491344
) : (
1350-
<>
1351-
<Badge variant='gray-secondary'>{member.role}</Badge>
1352-
<div />
1353-
</>
1345+
<div />
13541346
)}
13551347
</div>
13561348
))}
@@ -1370,10 +1362,7 @@ export function IntegrationsManager() {
13701362
size='sm'
13711363
/>
13721364
<Combobox
1373-
options={roleOptions.map((option) => ({
1374-
value: option.value,
1375-
label: option.label,
1376-
}))}
1365+
options={roleComboOptions}
13771366
value={
13781367
roleOptions.find((option) => option.value === memberRole)?.label || ''
13791368
}

0 commit comments

Comments
 (0)