diff --git a/Client/src/Pages/Settings/index.css b/Client/src/Pages/Settings/index.css index 92d4dfe23..ebf065a7e 100644 --- a/Client/src/Pages/Settings/index.css +++ b/Client/src/Pages/Settings/index.css @@ -21,19 +21,20 @@ .delete-profile-form__wrapper h1.MuiTypography-root, .edit-password-form__wrapper h1.MuiTypography-root, .edit-team-form__wrapper h1.MuiTypography-root { - font-size: 13px; + font-size: var(--env-var-font-size-medium); color: var(--env-var-color-2); font-weight: 600; } .edit-profile-form__wrapper p.MuiTypography-root, .delete-profile-form__wrapper p.MuiTypography-root { - font-size: 13px; + font-size: var(--env-var-font-size-medium); color: var(--env-var-color-2); opacity: 0.6; } #modal-delete-account, -#modal-edit-org-name { - font-size: 16px; +#modal-edit-org-name, +#modal-invite-member { + font-size: var(--env-var-font-size-large); color: var(--env-var-color-2); font-weight: 600; } @@ -42,10 +43,15 @@ .edit-team-form__wrapper:not(:first-of-type) { margin-top: 40px; } +.edit-team-form__wrapper.compact { + margin-top: 30px; + color: var(--env-var-color-16); +} .edit-profile-form__wrapper input, .edit-password-form__wrapper input, -#edit-organization-name { - font-size: 13px; +#edit-organization-name, +#input-team-member { + font-size: var(--env-var-font-size-medium); padding: 10px; } @@ -73,7 +79,7 @@ fill: var(--env-var-color-15) !important; } -.edit-team-form .Mui-disabled { +#org-name-flex-container .Mui-disabled { color: var(--env-var-color-2) !important; } @@ -89,7 +95,7 @@ padding-left: 20px; } .edit-team-form__wrapper td { - font-size: 13px; + font-size: (--env-var-font-size-medium); color: var(--env-var-color-16); } @@ -100,7 +106,6 @@ padding-right: 50px; line-height: 1.75; } - .MuiInputBase-root:has(#select-actions) fieldset, .MuiInputBase-root:has(#select-role) fieldset { border-color: #a1a7b1; @@ -111,3 +116,18 @@ .MuiInputBase-root:has(#select-role):hover fieldset { border-color: var(--env-var-color-2); } + +.members-query{ + display: inline-flex; + justify-content: center; + align-items: center; + margin-left: 6px; + padding: 2px; + font-size: 12px; + font-weight: 500; + color: var(--env-var-color-3); + background-color: #e0e9fd; + min-width: 22px; + min-height: 22px; + border-radius: 50%; +} \ No newline at end of file diff --git a/Client/src/Pages/Settings/index.jsx b/Client/src/Pages/Settings/index.jsx index 9cf52f379..6909f863f 100644 --- a/Client/src/Pages/Settings/index.jsx +++ b/Client/src/Pages/Settings/index.jsx @@ -164,7 +164,6 @@ const Settings = () => { //TODO - implement delete profile picture function const handleDeletePicture = () => { setIsLoading(true); - setTimeout(() => { setIsLoading(false); }, 2000); @@ -176,7 +175,6 @@ const Settings = () => { //TODO - implement delete account function const handleDeleteAccount = () => { setIsLoading(true); - setTimeout(() => { setIsLoading(false); setIsOpen(false); @@ -184,7 +182,6 @@ const Settings = () => { }; const handleSaveProfile = () => { setIsLoading(true); - setTimeout(() => { setIsLoading(false); setIsOpen(false); @@ -220,31 +217,54 @@ const Settings = () => { }, 2000); }; - const [teamStates, setTeamStates] = useState(teamConfig); + const [teamStates, setTeamStates] = useState({ + members: teamConfig, + filter: "", + }); const handleCellChecked = (id) => { - const updatedTeamStates = [...teamStates]; + const updatedTeamStates = [...teamStates.members]; updatedTeamStates[id] = { ...updatedTeamStates[id], isChecked: !updatedTeamStates[id].isChecked, }; - setTeamStates(updatedTeamStates); + setTeamStates((prev) => ({ + ...prev, + members: updatedTeamStates, + })); + }; + const handleFilter = (filter) => { + setTeamStates((prev) => ({ + ...prev, + filter: filter, + })); }; const handleApplyActionSelect = () => { setIsLoading(true); - setTimeout(() => { setIsLoading(false); - setIsOpen(false); }, 2000); }; const handleApplyRoleSelect = () => { setIsLoading(true); - setTimeout(() => { setIsLoading(false); - setIsOpen(false); }, 2000); }; + const handleSaveTeam = () => { + setIsLoading(true); + setTimeout(() => { + setIsLoading(false); + }, 2000); + }; + const [toggleInviteModal, setToggleInviteModal] = useState(false); + const handleInviteMember = () => {}; + const handleMembersQuery = (type) => { + let count = 0; + teamStates.members.forEach((member) => { + type === "" ? count++ : member.type === type ? count++ : ""; + }); + return count; + }; return ( { { > toggleOrgModal(true)} isLoading={orgStates.isLoading} @@ -547,7 +568,52 @@ const Settings = () => { Team members -
+
+ + handleFilter("")} + sx={{ cursor: "pointer" }} + > + All + + {handleMembersQuery("")} + + + handleFilter("admin")} + sx={{ cursor: "pointer" }} + > + Administrator + + {handleMembersQuery("admin")} + + + handleFilter("member")} + sx={{ cursor: "pointer" }} + > + Member + + {handleMembersQuery("member")} + + + +
+
{ fontSize: "13px", color: theme.palette.secondary.main, }} - inputProps={{id: "select-actions-input"}} + inputProps={{ id: "select-actions-input" }} > {actionsConfig.map((action) => ( { fontSize: "13px", color: theme.palette.secondary.main, }} - inputProps={{id: "select-role-input"}} + inputProps={{ id: "select-role-input" }} > {roleConfig.map((role) => ( { @@ -649,33 +716,38 @@ const Settings = () => { - {teamStates.map((cell) => ( - - - handleCellChecked(cell.id)} - inputProps={{ "aria-label": "controlled" }} - /> - - - - - {cell.name} - - Created at {cell.createdAt} - - - {cell.email} - {cell.role} - - ))} + {teamStates.members.map((cell) => + teamStates.filter === "" || + teamStates.filter === cell.type ? ( + + + handleCellChecked(cell.id)} + inputProps={{ "aria-label": "controlled" }} + /> + + + + + {cell.name} + + Created at {cell.createdAt} + + + {cell.email} + {cell.role} + + ) : ( + "" + ) + )}
@@ -692,7 +764,7 @@ const Settings = () => { { + setToggleInviteModal(false)} + disablePortal + > + + + Invite new team member + + + When you add a new team member, they will get access to all + monitors. + + + // setOrgStates((prev) => ({ + // ...prev, + // newName: event.target.value, + // })) + // } + > + +