{option["type"] === "user" && (
)}
{option["type"] === "group" && }
{option.label}
{option["type"] === "user" && option["email"] && (
{option["email"]}
)}
);
export function MultiMemberSelect({ onChange }: MultiMemberSelectProps) {
const { t } = useTranslation();
const [searchValue, setSearchValue] = useState("");
const [debouncedQuery] = useDebouncedValue(searchValue, 500);
const { data: suggestion, isLoading } = useSearchSuggestionsQuery({
query: debouncedQuery,
includeUsers: true,
includeGroups: true,
});
const [data, setData] = useState([]);
useEffect(() => {
if (suggestion) {
// Extract user and group items
const userItems = suggestion?.users.map((user: IUser) => ({
value: `user-${user.id}`,
label: user.name,
email: user.email,
avatarUrl: user.avatarUrl,
type: "user",
}));
const groupItems = suggestion?.groups.map((group: IGroup) => ({
value: `group-${group.id}`,
label: group.name,
type: "group",
}));
// Create fresh data structure based on current search results
const newData = [];
if (userItems && userItems.length > 0) {
newData.push({
group: t("Select a user"),
items: userItems,
});
}
if (groupItems && groupItems.length > 0) {
newData.push({
group: t("Select a group"),
items: groupItems,
});
}
setData(newData);
}
}, [suggestion, t]);
return (