1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-19 13:19:44 +02:00
planka/client/src/components/Project/MembershipAddPopup/MembershipAddPopup.jsx

59 lines
1.4 KiB
React
Raw Normal View History

2019-08-31 04:07:25 +05:00
import React, { useCallback } from 'react';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import { withPopup } from '../../../lib/popup';
import { Popup } from '../../../lib/custom-ui';
import UserItem from './UserItem';
import styles from './MembershipAddPopup.module.scss';
2019-08-31 04:07:25 +05:00
const MembershipAddStep = React.memo(({ users, currentUserIds, onCreate, onClose }) => {
2019-08-31 04:07:25 +05:00
const [t] = useTranslation();
const handleUserSelect = useCallback(
2020-03-25 00:15:47 +05:00
(id) => {
2019-08-31 04:07:25 +05:00
onCreate({
userId: id,
});
onClose();
},
[onCreate, onClose],
);
return (
<>
<Popup.Header>
{t('common.addMember', {
context: 'title',
})}
</Popup.Header>
<Popup.Content>
<div className={styles.menu}>
2020-03-25 00:15:47 +05:00
{users.map((user) => (
2019-08-31 04:07:25 +05:00
<UserItem
key={user.id}
name={user.name}
2020-04-21 05:04:34 +05:00
avatarUrl={user.avatarUrl}
2019-08-31 04:07:25 +05:00
isActive={currentUserIds.includes(user.id)}
onSelect={() => handleUserSelect(user.id)}
/>
))}
</div>
</Popup.Content>
</>
);
});
MembershipAddStep.propTypes = {
2019-08-31 04:07:25 +05:00
/* eslint-disable react/forbid-prop-types */
users: PropTypes.array.isRequired,
currentUserIds: PropTypes.array.isRequired,
/* eslint-disable react/forbid-prop-types */
onCreate: PropTypes.func.isRequired,
onClose: PropTypes.func.isRequired,
};
export default withPopup(MembershipAddStep);