From c80c09e2b6f507ab6ef0614a817b50d8ba1869bb Mon Sep 17 00:00:00 2001 From: AlvaroIC Date: Mon, 6 May 2024 02:01:57 +0200 Subject: [PATCH 1/5] Deleted language change switch --- webapp/src/common/Nav.tsx | 32 +------------------------------- 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/webapp/src/common/Nav.tsx b/webapp/src/common/Nav.tsx index 977e158..82b98cd 100644 --- a/webapp/src/common/Nav.tsx +++ b/webapp/src/common/Nav.tsx @@ -2,7 +2,7 @@ import React, { useState, useEffect } from 'react'; import { useLocation } from 'react-router-dom'; import './nav.scss'; import { useTranslation } from 'react-i18next'; -import { AppBar, Container, Toolbar, Grid, Stack, Button, Menu, MenuItem, Switch } from "@mui/material"; +import { AppBar, Container, Toolbar, Grid, Stack, Button, Menu, MenuItem } from "@mui/material"; import { useNavigate } from "react-router-dom"; const NavBar: React.FC<{}> = () => @@ -28,18 +28,6 @@ const NavBar: React.FC<{}> = () => setChevronRotated(false); }; - const handleSwitch = () => { - const language = localStorage.getItem("lang"); - if(language === "es"){ - localStorage.setItem("lang", "en"); - i18n.changeLanguage("en"); - } - else{ - localStorage.setItem("lang", "es"); - i18n.changeLanguage("es"); - } - }; - if(value === "false"){ navigate("/"); } @@ -159,24 +147,6 @@ const NavBar: React.FC<{}> = () => > {t('nav_logout')} - - British flag - {localStorage.getItem("lang") === 'en' && ( - - )} - {localStorage.getItem("lang") === 'es' && ( - - )} - Spanish flag - From 9eb2bb49f1de2bd7a48157e3dc75103522e0814b Mon Sep 17 00:00:00 2001 From: AlvaroIC Date: Mon, 6 May 2024 03:06:59 +0200 Subject: [PATCH 2/5] Language button created --- webapp/src/common/Nav.tsx | 103 ++++++++++++++++++++++++++++++-------- 1 file changed, 83 insertions(+), 20 deletions(-) diff --git a/webapp/src/common/Nav.tsx b/webapp/src/common/Nav.tsx index 82b98cd..04a8a9d 100644 --- a/webapp/src/common/Nav.tsx +++ b/webapp/src/common/Nav.tsx @@ -12,20 +12,33 @@ const NavBar: React.FC<{}> = () => const navigate = useNavigate(); const value:string= JSON.stringify(localStorage.getItem("isAuthenticated")).replace("\"","").replace("\"",""); const user = JSON.stringify(localStorage.getItem("username")).replace("\"", "").replace("\"", ""); - const [anchorEl, setAnchorEl] = useState(null); - const [open, setOpen] = useState(false); - const [chevronRotated, setChevronRotated] = useState(true); + const [profileAnchorEl, setProfileAnchorEl] = useState(null); + const [languageAnchorEl, setLanguageAnchorEl] = useState(null); + const [profileOpen, setProfileOpen] = useState(false); + const [languageOpen, setLanguageOpen] = useState(false); + const [profileChevronRotated, setProfileChevronRotated] = useState(false); + const [languageChevronRotated, setLanguageChevronRotated] = useState(false); - const handleClick = (event: React.MouseEvent | React.MouseEvent) => { - setAnchorEl(event.currentTarget); - setOpen(!open); - setChevronRotated(!chevronRotated); + + const handleProfileClick = (event: React.MouseEvent | React.MouseEvent) => { + setProfileAnchorEl(event.currentTarget); + setProfileOpen(!profileOpen); + setProfileChevronRotated(!profileChevronRotated); + }; + + const handleLanguageClick = (event: React.MouseEvent | React.MouseEvent) => { + setLanguageAnchorEl(event.currentTarget); + setLanguageOpen(!languageOpen); + setLanguageChevronRotated(!languageChevronRotated); }; const handleClose = () => { - setAnchorEl(null); - setOpen(false); - setChevronRotated(false); + setProfileAnchorEl(null); + setLanguageAnchorEl(null); + setProfileOpen(false); + setLanguageOpen(false); + setProfileChevronRotated(false); + setLanguageChevronRotated(false); }; if(value === "false"){ @@ -86,18 +99,20 @@ const NavBar: React.FC<{}> = () => + handleClose()} - anchorEl={anchorEl} + anchorEl={profileAnchorEl} anchorOrigin={{ vertical: 'bottom', - horizontal: 'right', + horizontal: 180, }} sx={{ marginTop: '5px' }} > @@ -149,6 +191,27 @@ const NavBar: React.FC<{}> = () => + + handleClose()} + anchorEl={languageAnchorEl} + anchorOrigin={{ + vertical: 'bottom', + horizontal: 'center', + }} + sx={{ marginTop: '5px' }} + > + + English + + + Español + + + From 4c479da78067c7c3288f73e475bd770c63b678f9 Mon Sep 17 00:00:00 2001 From: AlvaroIC Date: Mon, 6 May 2024 03:26:28 +0200 Subject: [PATCH 3/5] Language change functionality --- webapp/src/common/Nav.tsx | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/webapp/src/common/Nav.tsx b/webapp/src/common/Nav.tsx index 04a8a9d..8afebc5 100644 --- a/webapp/src/common/Nav.tsx +++ b/webapp/src/common/Nav.tsx @@ -18,6 +18,7 @@ const NavBar: React.FC<{}> = () => const [languageOpen, setLanguageOpen] = useState(false); const [profileChevronRotated, setProfileChevronRotated] = useState(false); const [languageChevronRotated, setLanguageChevronRotated] = useState(false); + const [selectedLanguage, setSelectedLanguage] = useState(localStorage.getItem("lang")); // Default language is English const handleProfileClick = (event: React.MouseEvent | React.MouseEvent) => { @@ -41,6 +42,13 @@ const NavBar: React.FC<{}> = () => setLanguageChevronRotated(false); }; + const handleLanguageSelect = (lang: string) => { + setSelectedLanguage(lang); + localStorage.setItem("lang", lang); + i18n.changeLanguage(lang); + handleClose(); + }; + if(value === "false"){ navigate("/"); } @@ -144,13 +152,13 @@ const NavBar: React.FC<{}> = () => aria-controls={languageOpen ? 'menu' : undefined} aria-expanded={languageOpen ? 'true' : undefined} aria-haspopup='true' - sx={{ textTransform: 'none', color: 'white' }} + sx={{ color: 'white', fontSize: '15px' }} > - {t('nav_language')} + {selectedLanguage} = () => }} sx={{ marginTop: '5px' }} > - + handleLanguageSelect("en")}> English - + handleLanguageSelect("es")}> Español From 5bb25e8c73768a13e45a862281734152881e19e4 Mon Sep 17 00:00:00 2001 From: AlvaroIC Date: Mon, 6 May 2024 12:30:27 +0200 Subject: [PATCH 4/5] Styles for language change menu --- webapp/src/common/Nav.tsx | 8 ++++---- webapp/src/common/nav.scss | 4 +++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/webapp/src/common/Nav.tsx b/webapp/src/common/Nav.tsx index 8afebc5..0f05482 100644 --- a/webapp/src/common/Nav.tsx +++ b/webapp/src/common/Nav.tsx @@ -136,7 +136,7 @@ const NavBar: React.FC<{}> = () => viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" className={` - chevron + chevron--menu ${profileChevronRotated ? 'chevron--rotated' : ''} `} > @@ -157,8 +157,8 @@ const NavBar: React.FC<{}> = () => {selectedLanguage} = () => anchorEl={languageAnchorEl} anchorOrigin={{ vertical: 'bottom', - horizontal: 'center', + horizontal: -5, }} sx={{ marginTop: '5px' }} > diff --git a/webapp/src/common/nav.scss b/webapp/src/common/nav.scss index 9669fa7..45b46d8 100644 --- a/webapp/src/common/nav.scss +++ b/webapp/src/common/nav.scss @@ -43,8 +43,10 @@ } .chevron{ - margin-top: 1px; transition: transform 0.1s ease; + &--menu{ + margin-top: 1px; + } } .chevron--rotated{ From 09eaf15ef6bec2d835c8698c4b2042c9d301f609 Mon Sep 17 00:00:00 2001 From: AlvaroIC Date: Mon, 6 May 2024 12:34:07 +0200 Subject: [PATCH 5/5] Country flags removed --- webapp/public/british-flag.png | Bin 18066 -> 0 bytes webapp/public/spanish-flag.png | Bin 2330 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 webapp/public/british-flag.png delete mode 100644 webapp/public/spanish-flag.png diff --git a/webapp/public/british-flag.png b/webapp/public/british-flag.png deleted file mode 100644 index 9670356322c7791101efd7e06fce031d6b6f783e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18066 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