mirror of
https://github.com/fosrl/pangolin.git
synced 2026-05-17 06:24:32 +00:00
Fix the input to be tags
This commit is contained in:
@@ -95,6 +95,10 @@ export default function RoleMappingConfigFields({
|
|||||||
}
|
}
|
||||||
}, [supportsMultipleRolesPerUser, fixedRoleNames, onFixedRoleNamesChange]);
|
}, [supportsMultipleRolesPerUser, fixedRoleNames, onFixedRoleNamesChange]);
|
||||||
|
|
||||||
|
const [fixedRolesActiveTagIndex, setFixedRolesActiveTagIndex] = useState<
|
||||||
|
number | null
|
||||||
|
>(null);
|
||||||
|
|
||||||
const fixedRadioId = `${fieldIdPrefix}-fixed-roles-mode`;
|
const fixedRadioId = `${fieldIdPrefix}-fixed-roles-mode`;
|
||||||
const builderRadioId = `${fieldIdPrefix}-mapping-builder-mode`;
|
const builderRadioId = `${fieldIdPrefix}-mapping-builder-mode`;
|
||||||
const rawRadioId = `${fieldIdPrefix}-raw-expression-mode`;
|
const rawRadioId = `${fieldIdPrefix}-raw-expression-mode`;
|
||||||
@@ -161,38 +165,94 @@ export default function RoleMappingConfigFields({
|
|||||||
|
|
||||||
{roleMappingMode === "fixedRoles" && (
|
{roleMappingMode === "fixedRoles" && (
|
||||||
<div className="space-y-2 min-w-0 max-w-full">
|
<div className="space-y-2 min-w-0 max-w-full">
|
||||||
<RolesSelector
|
{restrictToOrgRoles ? (
|
||||||
selectedRoles={fixedRoleNames.map((name) => ({
|
<RolesSelector
|
||||||
id: name,
|
selectedRoles={fixedRoleNames.map((name) => ({
|
||||||
text: name
|
id: name,
|
||||||
}))}
|
text: name
|
||||||
mapRolesByName
|
}))}
|
||||||
orgId={orgId as string}
|
mapRolesByName
|
||||||
onSelectRoles={(nextTags) => {
|
orgId={orgId as string}
|
||||||
let names = [
|
onSelectRoles={(nextTags) => {
|
||||||
...new Set(nextTags.map((tag) => tag.text))
|
let names = [
|
||||||
];
|
...new Set(nextTags.map((tag) => tag.text))
|
||||||
|
];
|
||||||
|
|
||||||
if (!supportsMultipleRolesPerUser) {
|
if (!supportsMultipleRolesPerUser) {
|
||||||
if (
|
if (
|
||||||
names.length === 0 &&
|
names.length === 0 &&
|
||||||
fixedRoleNames.length > 0
|
fixedRoleNames.length > 0
|
||||||
) {
|
) {
|
||||||
onFixedRoleNamesChange([
|
onFixedRoleNamesChange([
|
||||||
fixedRoleNames[
|
fixedRoleNames[
|
||||||
fixedRoleNames.length - 1
|
fixedRoleNames.length - 1
|
||||||
]!
|
]!
|
||||||
]);
|
]);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
if (names.length > 1) {
|
||||||
|
names = [names[names.length - 1]!];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (names.length > 1) {
|
|
||||||
names = [names[names.length - 1]!];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onFixedRoleNamesChange(names);
|
onFixedRoleNamesChange(names);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
) : (
|
||||||
|
<TagInput
|
||||||
|
tags={fixedRoleNames.map((name) => ({
|
||||||
|
id: name,
|
||||||
|
text: name
|
||||||
|
}))}
|
||||||
|
setTags={(nextTags) => {
|
||||||
|
const prev = fixedRoleNames.map((name) => ({
|
||||||
|
id: name,
|
||||||
|
text: name
|
||||||
|
}));
|
||||||
|
const next =
|
||||||
|
typeof nextTags === "function"
|
||||||
|
? nextTags(prev)
|
||||||
|
: nextTags;
|
||||||
|
|
||||||
|
let names = [
|
||||||
|
...new Set(next.map((tag) => tag.text))
|
||||||
|
];
|
||||||
|
|
||||||
|
if (!supportsMultipleRolesPerUser) {
|
||||||
|
if (
|
||||||
|
names.length === 0 &&
|
||||||
|
fixedRoleNames.length > 0
|
||||||
|
) {
|
||||||
|
onFixedRoleNamesChange([
|
||||||
|
fixedRoleNames[
|
||||||
|
fixedRoleNames.length - 1
|
||||||
|
]!
|
||||||
|
]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (names.length > 1) {
|
||||||
|
names = [names[names.length - 1]!];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onFixedRoleNamesChange(names);
|
||||||
|
}}
|
||||||
|
activeTagIndex={fixedRolesActiveTagIndex}
|
||||||
|
setActiveTagIndex={setFixedRolesActiveTagIndex}
|
||||||
|
placeholder={t(
|
||||||
|
"roleMappingAssignRolesPlaceholderFreeform"
|
||||||
|
)}
|
||||||
|
enableAutocomplete={false}
|
||||||
|
autocompleteOptions={roleOptions}
|
||||||
|
restrictTagsToAutocompleteOptions={false}
|
||||||
|
allowDuplicates={false}
|
||||||
|
sortTags={true}
|
||||||
|
size="sm"
|
||||||
|
styleClasses={{
|
||||||
|
inlineTagsContainer: "min-w-0 max-w-full"
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
<FormDescription>
|
<FormDescription>
|
||||||
{showFreeformRoleNamesHint
|
{showFreeformRoleNamesHint
|
||||||
? t("roleMappingFixedRolesDescriptionDefaultPolicy")
|
? t("roleMappingFixedRolesDescriptionDefaultPolicy")
|
||||||
|
|||||||
Reference in New Issue
Block a user