import { getTeamMembers } from '@/web/support/user/team/api'; import { Box, Flex, HStack, Input, ModalBody, ModalFooter, Button, useDisclosure } from '@chakra-ui/react'; import { TeamMemberItemType } from '@fastgpt/global/support/user/team/type'; import Avatar from '@fastgpt/web/components/common/Avatar'; import Icon from '@fastgpt/web/components/common/Icon'; import MyModal from '@fastgpt/web/components/common/MyModal'; import MyTag from '@fastgpt/web/components/common/Tag'; import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; import { useTranslation } from 'next-i18next'; import React, { useState } from 'react'; export type ChangeOwnerModalProps = { avatar?: string; name: string; onChangeOwner: (tmbId: string) => Promise; }; export function ChangeOwnerModal({ onClose, avatar, name, onChangeOwner }: ChangeOwnerModalProps & { onClose: () => void }) { const { t } = useTranslation(); const [inputValue, setInputValue] = React.useState(''); const { data: teamMembers = [] } = useRequest2(getTeamMembers, { manual: false }); const memberList = teamMembers.filter((item) => { return item.memberName.includes(inputValue); }); const { isOpen: isOpenMemberListMenu, onClose: onCloseMemberListMenu, onOpen: onOpenMemberListMenu } = useDisclosure(); const [selectedMember, setSelectedMember] = useState(null); const { runAsync, loading } = useRequest2(onChangeOwner, { onSuccess: onClose, successToast: t('common:permission.change_owner_success'), errorToast: t('common:permission.change_owner_failed') }); const onConfirm = async () => { if (!selectedMember) { return; } await runAsync(selectedMember.tmbId); }; return ( {name} {t('common:permission.change_owner_to')} {selectedMember && ( )} { setInputValue(e.target.value); setSelectedMember(null); }} onFocus={() => { onOpenMemberListMenu(); setSelectedMember(null); }} // onBlur={() => { // setTimeout(() => { // onCloseMemberListMenu(); // }, 10); // }} {...(selectedMember && { pl: '10' })} /> {isOpenMemberListMenu && memberList.length > 0 && ( {memberList.map((item) => ( { setInputValue(item.memberName); setSelectedMember(item); onCloseMemberListMenu(); }} > {item.memberName} ))} )} {t('common:permission.change_owner_tip')} ); }