active settings menu item style
Some checks failed
continuous-integration/drone/pr Build is failing

This commit is contained in:
Martti Malmi 2023-11-23 10:57:28 +02:00
parent 7e69e9a42a
commit ef77606427
2 changed files with 13 additions and 10 deletions

View File

@ -49,6 +49,7 @@
} }
.settings-row:hover, .settings-row:hover,
.settings-row.active,
.settings-group-header:hover { .settings-group-header:hover {
color: var(--highlight); color: var(--highlight);
} }

View File

@ -1,7 +1,7 @@
import "./Root.css"; import "./Root.css";
import { useCallback, useEffect } from "react"; import { useCallback, useEffect } from "react";
import { FormattedMessage } from "react-intl"; import { FormattedMessage } from "react-intl";
import { Outlet, useLocation, useNavigate } from "react-router-dom"; import {Outlet, NavLink, useNavigate, useLocation} from "react-router-dom";
import Icon from "@/Icons/Icon"; import Icon from "@/Icons/Icon";
import { LoginStore, logout } from "@/Login"; import { LoginStore, logout } from "@/Login";
import useLogin from "@/Hooks/useLogin"; import useLogin from "@/Hooks/useLogin";
@ -16,13 +16,6 @@ const SettingsIndex = () => {
const pageWidth = usePageWidth(); const pageWidth = usePageWidth();
const sub = getCurrentSubscription(LoginStore.allSubscriptions()); const sub = getCurrentSubscription(LoginStore.allSubscriptions());
const handleNavigate = useCallback(
path => {
navigate(path);
},
[navigate],
);
const handleLogout = useCallback(() => { const handleLogout = useCallback(() => {
logout(login.id); logout(login.id);
navigate("/"); navigate("/");
@ -64,16 +57,25 @@ const SettingsIndex = () => {
menuItems.push({ icon: "code-circle", message: "Account Switcher", id: "7BX/yC", path: "accounts" }); menuItems.push({ icon: "code-circle", message: "Account Switcher", id: "7BX/yC", path: "accounts" });
} }
const getNavLinkClass = ({ isActive }: { isActive: boolean }) => {
return isActive ? "settings-row active" : "settings-row";
};
return ( return (
<div className="settings-nav"> <div className="settings-nav">
{!hideMenu && ( {!hideMenu && (
<div> <div>
{menuItems.map(({ icon, message, id, path }) => ( {menuItems.map(({ icon, message, id, path }) => (
<div className="settings-row" onClick={() => handleNavigate(path)} key={path}> <NavLink
to={path}
key={path}
className={getNavLinkClass}
end
>
<Icon name={icon} size={24} /> <Icon name={icon} size={24} />
<FormattedMessage {...(id ? { defaultMessage: message, id } : message)} /> <FormattedMessage {...(id ? { defaultMessage: message, id } : message)} />
<Icon name="arrowFront" size={16} /> <Icon name="arrowFront" size={16} />
</div> </NavLink>
))} ))}
<div className="settings-row" onClick={handleLogout}> <div className="settings-row" onClick={handleLogout}>
<Icon name="logout" size={24} /> <Icon name="logout" size={24} />