import React, { useState } from 'react'; import { UserOutlined } from '@ant-design/icons'; import { Select } from 'antd'; import styled from 'styled-components'; import { CorpUser, DataHubRole } from '../../../types.generated'; import AssignRoleConfirmation from './AssignRoleConfirmation'; import { mapRoleIcon } from './UserUtils'; type Props = { user: CorpUser; userRoleUrn: string; selectRoleOptions: Array; refetch?: () => void; }; const RoleSelect = styled(Select)` min-width: 105px; `; const RoleIcon = styled.span` margin-right: 6px; font-size: 12px; `; export default function SelectRole({ user, userRoleUrn, selectRoleOptions, refetch }: Props) { const [isViewingAssignRole, setIsViewingAssignRole] = useState(false); const [roleToAssign, setRoleToAssign] = useState(); const rolesMap: Map = new Map(); selectRoleOptions.forEach((role) => { rolesMap.set(role.urn, role); }); const selectOptions = () => selectRoleOptions.map((role) => { return ( {mapRoleIcon(role.name)} {role.name} ); }); const onSelectRole = (roleUrn: string) => { const roleFromMap: DataHubRole = rolesMap.get(roleUrn) as DataHubRole; setRoleToAssign(roleFromMap); setIsViewingAssignRole(true); }; const noRoleText = 'No Role'; return ( <> {noRoleText} } value={userRoleUrn || undefined} onChange={(e) => onSelectRole(e as string)} > {selectOptions()} setIsViewingAssignRole(false)} onConfirm={() => { setIsViewingAssignRole(false); setTimeout(function () { refetch?.(); }, 3000); }} /> ); }