diff --git a/.gitignore b/.gitignore index 13e7b9c..0af93d9 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ yarn-error.log* # configuration files config.js config.qa.js +confg.dev.js yarn.lock package.lock.json \ No newline at end of file diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 0000000..4451901 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1,4 @@ +@ajay-devarakonda_navi +@shashank-shekhar_navi +@sriram-bhargav_navi +@k-kamalakannan_navi diff --git a/src/Pages/Team/partials/TeamForm.tsx b/src/Pages/Team/partials/TeamForm.tsx index 8be3c10..0c14bc1 100644 --- a/src/Pages/Team/partials/TeamForm.tsx +++ b/src/Pages/Team/partials/TeamForm.tsx @@ -155,8 +155,6 @@ const TeamForm = (props: TeamFormProps) => { -
-
diff --git a/src/components/MembersDetails/Members.module.scss b/src/components/MembersDetails/Members.module.scss index af5b7b4..1efa791 100644 --- a/src/components/MembersDetails/Members.module.scss +++ b/src/components/MembersDetails/Members.module.scss @@ -2,8 +2,7 @@ display: flex; justify-content: space-between; align-items: center; - - margin-top: 5%; + margin-top: 3%; } .participant-detail { @@ -26,3 +25,18 @@ .remove-logo { cursor: pointer; } + +.personIcon { + > div { + > div[role='tooltip']:nth-child(2) { + background-color: #e6f1ff !important; + color: #0276fe !important; + } + } +} + +.loader-container { + display: flex; + justify-content: center; + align-items: center; +} diff --git a/src/components/MembersDetails/index.tsx b/src/components/MembersDetails/index.tsx index b7b1cf5..7c59398 100644 --- a/src/components/MembersDetails/index.tsx +++ b/src/components/MembersDetails/index.tsx @@ -5,11 +5,12 @@ import { Avatar, Typography, Tag } from '@navi/web-ui/lib/primitives'; import styles from './Members.module.scss'; import { toast } from '@navi/web-ui/lib/primitives/Toast'; import { ApiService } from '@src/services/api'; -import { ModalDialog } from '@navi/web-ui/lib/primitives'; +import { ModalDialog, Tooltip } from '@navi/web-ui/lib/primitives'; import { useAuthData } from './UseAuthHook'; import PersonIcon from '@src/assets/PersonIcon'; import ManagerIcon from '@src/assets/ManagerIcon'; import { CloseIcon } from '@navi/web-ui/lib/icons'; +import LoadingIcon from '@navi/web-ui/lib/icons/LoadingIcon'; import { REMOVE_TEAM_MEMBER, @@ -24,6 +25,8 @@ const MembersDetails = (props: any) => { const [showTotalMembers, setShowTotalMembers] = useState(10); const [showRemoveButton, setShowRemoveButton] = useState(false); const [open, setOpen] = useState(false); + const [selectedParticipantId, setSelectedParticipantId] = useState('0'); + const [isLoading, setIsLoading] = useState(false); const fetchSingleTeamData = teamId => { const fetchTeamDataEndpoint = FETCH_SINGLE_TEAM_DATA(teamId); @@ -32,8 +35,10 @@ const MembersDetails = (props: any) => { if (response.status === 200) { const updatedData = response?.data?.data; setData(updatedData); + setIsLoading(false); } else { toast.error(response.data.error.message); + setIsLoading(false); } }) .catch(error => { @@ -52,6 +57,8 @@ const MembersDetails = (props: any) => { .then(response => { if (response.status === 200) { toast.success(response.data.data); + setIsLoading(true); + setData([]); fetchSingleTeamData(teamId); } else { toast.error(response.data.error.message); @@ -64,14 +71,15 @@ const MembersDetails = (props: any) => { }); }; - const handleMakeManager = (teamId, slackUserId) => { - setOpen(false); + const handleMakeManager = teamId => { + const slackUserId = selectedParticipantId; const endpoint = MAKE_MANAGER(teamId, slackUserId); - ApiService.patch(endpoint, {}) .then(response => { if (response.status === 200) { toast.success(response.data.data); + setIsLoading(true); + setData([]); fetchSingleTeamData(teamId); } else { toast.error(response.data.error.message); @@ -84,9 +92,13 @@ const MembersDetails = (props: any) => { }); }; + const handleOpenModal = participantId => { + setSelectedParticipantId(participantId); + setOpen(true); + }; + const userData = JSON.parse(localStorage.getItem('user-data') || '{}'); const userRoles = useAuthData(); - console.log('userRoles', userRoles); const managerEmail = data?.participants?.find( participant => participant.id === data.managerId, @@ -100,7 +112,15 @@ const MembersDetails = (props: any) => { } else { setShowRemoveButton(false); } - }, [data, userRoles]); + }, [data, userRoles, open]); + + if (isLoading) { + return ( +
+ +
+ ); + } return (
@@ -115,6 +135,7 @@ const MembersDetails = (props: any) => { >
{' '} +    {participant?.name} {totalMembers > 10 && index === showTotalMembers - 1 ? ( totalMembers !== showTotalMembers ? ( @@ -136,62 +157,53 @@ const MembersDetails = (props: any) => {
-
+
{showRemoveButton && !(participant.email === managerEmail) && ( -
- -
- )} - {showRemoveButton && - !(participant.email === managerEmail) && ( - <> - setOpen(true)} /> - + - - Teams can only have 1 manager. The current manager - will be changed to a member - - - + { + handleOpenModal(participant.id); + }} + /> + { + setOpen(false); + }, + }, + { + label: 'Change Manager', + onClick: () => { + setOpen(false); + handleMakeManager(data.id); + }, + }, + ]} + header="Are you sure you want to make this member a manager ?" + onClose={() => setOpen(false)} + > + + Teams can only have 1 manager. The current + manager will be changed to a member + + + +
)}
- {showRemoveButton && - !(participant.email === managerEmail) && ( -
- -
- )} {participant.email === managerEmail && }
@@ -199,11 +211,13 @@ const MembersDetails = (props: any) => { !(participant.email === managerEmail) && ( <>      - - handleRemoveUser(data.id, participant.id) - } - /> + + + handleRemoveUser(data.id, participant.id) + } + /> +           )}