import React, { useCallback } from 'react'; import PropTypes from 'prop-types'; import { Button, Icon, Radio, Table } from 'semantic-ui-react'; import ActionsPopup from './ActionsPopup'; import styles from './Item.module.scss'; const Item = React.memo( ({ email, username, name, organization, phone, isAdmin, emailUpdateForm, passwordUpdateForm, usernameUpdateForm, onUpdate, onUsernameUpdate, onUsernameUpdateMessageDismiss, onEmailUpdate, onEmailUpdateMessageDismiss, onPasswordUpdate, onPasswordUpdateMessageDismiss, onDelete, }) => { const handleIsAdminChange = useCallback(() => { onUpdate({ isAdmin: !isAdmin, }); }, [isAdmin, onUpdate]); return ( {name} {username || '-'} {email} ); }, ); Item.propTypes = { email: PropTypes.string.isRequired, username: PropTypes.string, name: PropTypes.string.isRequired, organization: PropTypes.string, phone: PropTypes.string, isAdmin: PropTypes.bool.isRequired, /* eslint-disable react/forbid-prop-types */ emailUpdateForm: PropTypes.object.isRequired, passwordUpdateForm: PropTypes.object.isRequired, usernameUpdateForm: PropTypes.object.isRequired, /* eslint-enable react/forbid-prop-types */ onUpdate: PropTypes.func.isRequired, onUsernameUpdate: PropTypes.func.isRequired, onUsernameUpdateMessageDismiss: PropTypes.func.isRequired, onEmailUpdate: PropTypes.func.isRequired, onEmailUpdateMessageDismiss: PropTypes.func.isRequired, onPasswordUpdate: PropTypes.func.isRequired, onPasswordUpdateMessageDismiss: PropTypes.func.isRequired, onDelete: PropTypes.func.isRequired, }; Item.defaultProps = { username: undefined, organization: undefined, phone: undefined, }; export default Item;