import React, { useState } from 'react'; import { IUserHasId } from '@growi/core'; import { useTranslation } from 'next-i18next'; import { UncontrolledDropdown, DropdownToggle, DropdownMenu, } from 'reactstrap'; import AdminUsersContainer from '~/client/services/AdminUsersContainer'; import { withUnstatedContainers } from '../../UnstatedUtils'; import GiveAdminButton from './GiveAdminButton'; import RemoveAdminMenuItem from './RemoveAdminMenuItem'; import SendInvitationEmailButton from './SendInvitationEmailButton'; import StatusActivateButton from './StatusActivateButton'; import StatusSuspendedMenuItem from './StatusSuspendMenuItem'; import UserRemoveButton from './UserRemoveButton'; import styles from './UserMenu.module.scss'; type UserMenuProps = { adminUsersContainer: AdminUsersContainer, user: IUserHasId, } const UserMenu = (props: UserMenuProps) => { const { t } = useTranslation('admin'); const { adminUsersContainer, user } = props; const [isInvitationEmailSended, setIsInvitationEmailSended] = useState(user.isInvitationEmailSended); const onClickPasswordResetHandler = async() => { await adminUsersContainer.showPasswordResetModal(user); }; const onSuccessfullySentInvitationEmailHandler = () => { setIsInvitationEmailSended(true); }; const renderEditMenu = () => { return ( <>
  • {t('admin:user_management.user_table.edit_menu')}
  • ); }; const renderStatusMenu = () => { return ( <>
  • {t('user_management.status')}
  • {(user.status === 1 || user.status === 3) && } {user.status === 2 && } {user.status === 5 && ( )} {(user.status === 1 || user.status === 3 || user.status === 5) && }
  • ); }; const renderAdminMenu = () => { return ( <>
  • {t('admin:user_management.user_table.administrator_menu')}
  • {user.admin === true && } {user.admin === false && }
  • ); }; return ( {(user.status === 5 && !isInvitationEmailSended) && } {renderEditMenu} {user.status !== 4 && renderStatusMenu} {user.status === 2 && renderAdminMenu} ); }; /** * Wrapper component for using unstated */ // eslint-disable-next-line max-len const UserMenuWrapper: React.ForwardRefExoticComponent & React.RefAttributes> = withUnstatedContainers(UserMenu, [AdminUsersContainer]); export default UserMenuWrapper;