| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- import moment from 'moment'
- import { useCallback } from 'react'
- import { Col, Row } from 'react-bootstrap'
- import { useTranslation } from 'react-i18next'
- import { User } from '../../../../../types/group-management/user'
- type GroupMemberRowProps = {
- user: User
- selectUser: (user: User) => void
- unselectUser: (user: User) => void
- selected: boolean
- }
- export default function UserRow({
- user,
- selectUser,
- unselectUser,
- selected,
- }: GroupMemberRowProps) {
- const { t } = useTranslation()
- const handleSelectUser = useCallback(
- (event, user) => {
- if (event.target.checked) {
- selectUser(user)
- } else {
- unselectUser(user)
- }
- },
- [selectUser, unselectUser]
- )
- return (
- <li key={`user-${user.email}`}>
- <Row>
- <Col xs={4}>
- <label htmlFor={`select-user-${user.email}`} className="sr-only">
- {t('select_user')}
- </label>
- <input
- className="select-item"
- id={`select-user-${user.email}`}
- type="checkbox"
- checked={selected}
- onChange={e => handleSelectUser(e, user)}
- />
- <span>{user.email}</span>
- </Col>
- <Col xs={4}>
- {user.first_name} {user.last_name}
- </Col>
- <Col xs={2}>
- {user.last_active_at
- ? moment(user.last_active_at).format('Do MMM YYYY')
- : 'N/A'}
- </Col>
- <Col xs={2}>
- {user.invite ? (
- <>
- <i
- className="fa fa-times"
- aria-hidden="true"
- aria-label={t('invite_not_accepted')}
- />
- <span className="sr-only">{t('invite_not_accepted')}</span>
- </>
- ) : (
- <>
- <i
- className="fa fa-check text-success"
- aria-hidden="true"
- aria-label={t('accepted_invite')}
- />
- <span className="sr-only">{t('accepted_invite')}</span>
- </>
- )}
- </Col>
- </Row>
- </li>
- )
- }
|