diff --git a/frontend/src/component/project/ProjectAccess/ProjectAccessAssign/ProjectAccessAssign.tsx b/frontend/src/component/project/ProjectAccess/ProjectAccessAssign/ProjectAccessAssign.tsx index c4de76b103..ee07e561f6 100644 --- a/frontend/src/component/project/ProjectAccess/ProjectAccessAssign/ProjectAccessAssign.tsx +++ b/frontend/src/component/project/ProjectAccess/ProjectAccessAssign/ProjectAccessAssign.tsx @@ -4,6 +4,7 @@ import { Button, capitalize, Checkbox, + Chip, styled, TextField, Tooltip, @@ -86,6 +87,18 @@ const StyledUserOption = styled('div')(({ theme }) => ({ }, })); +const getOptionLabel = (option: IAccessOption) => { + if ( + option.type === ENTITY_TYPE.USER || + option.type === ENTITY_TYPE.SERVICE_ACCOUNT + ) { + const optionUser = option.entity as IUser; + return optionUser.email || optionUser.name || optionUser.username || ''; + } else { + return option.entity.name; + } +}; + interface IAccessOption { id: number; entity: IUser | IGroup; @@ -272,7 +285,7 @@ export const ProjectAccessAssign = ({ }; const renderOption = ( - props: React.HTMLAttributes, + { key, ...props }: React.HTMLAttributes & { key?: any }, option: IAccessOption, selected: boolean, ) => { @@ -283,9 +296,9 @@ export const ProjectAccessAssign = ({ optionUser = option.entity as IUser; } return ( - - -
  • +
  • + + <> } checkedIcon={} @@ -319,9 +332,9 @@ export const ProjectAccessAssign = ({ } /> -
  • -
    -
    + + + ); }; @@ -340,6 +353,8 @@ export const ProjectAccessAssign = ({ ); } + const autocompleteSize = 'small'; + return ( renderOption(props, option, selected) } - getOptionLabel={(option: IAccessOption) => { - if ( - option.type === ENTITY_TYPE.USER || - option.type === - ENTITY_TYPE.SERVICE_ACCOUNT - ) { - const optionUser = - option.entity as IUser; + getOptionLabel={getOptionLabel} + renderTags={(tagValue, getTagProps) => + tagValue.map((option, index) => { return ( - optionUser.email || - optionUser.name || - optionUser.username || - '' + ); - } else { - return option.entity.name; - } - }} + }) + } filterOptions={(options, { inputValue }) => options.filter((option: IAccessOption) => { if (