show different NavbarItems depending on device width

This commit is contained in:
Aria Moradi
2021-10-30 16:34:09 +03:30
parent 78f70a38be
commit a30ddcf811
3 changed files with 29 additions and 5 deletions

View File

@@ -34,6 +34,8 @@ import Reader from 'screens/Reader';
import Updates from 'screens/Updates'; import Updates from 'screens/Updates';
import DownloadQueue from 'screens/DownloadQueue'; import DownloadQueue from 'screens/DownloadQueue';
import Browse from 'screens/Browse'; import Browse from 'screens/Browse';
import Sources from 'screens/Sources';
import Extensions from 'screens/Extensions';
declare module '@mui/styles/defaultTheme' { declare module '@mui/styles/defaultTheme' {
// eslint-disable-next-line @typescript-eslint/no-empty-interface // eslint-disable-next-line @typescript-eslint/no-empty-interface
@@ -164,6 +166,12 @@ export default function App() {
<Route path="/updates"> <Route path="/updates">
<Updates /> <Updates />
</Route> </Route>
<Route path="/sources">
<Sources />
</Route>
<Route path="/extensions">
<Extensions />
</Route>
<Route path="/browse"> <Route path="/browse">
<Browse /> <Browse />
</Route> </Route>

View File

@@ -16,6 +16,7 @@ import { useTheme } from '@mui/material/styles';
import CollectionsBookmarkIcon from '@mui/icons-material/CollectionsBookmark'; import CollectionsBookmarkIcon from '@mui/icons-material/CollectionsBookmark';
import NewReleasesIcon from '@mui/icons-material/NewReleases'; import NewReleasesIcon from '@mui/icons-material/NewReleases';
import ExploreIcon from '@mui/icons-material/Explore'; import ExploreIcon from '@mui/icons-material/Explore';
import ExtensionIcon from '@mui/icons-material/Extension';
import GetAppIcon from '@mui/icons-material/GetApp'; import GetAppIcon from '@mui/icons-material/GetApp';
import SettingsIcon from '@mui/icons-material/Settings'; import SettingsIcon from '@mui/icons-material/Settings';
import ArrowBack from '@mui/icons-material/ArrowBack'; import ArrowBack from '@mui/icons-material/ArrowBack';
@@ -42,23 +43,37 @@ const navbarItems: Array<NavbarItem> = [
path: '/library', path: '/library',
title: 'Library', title: 'Library',
IconComponent: CollectionsBookmarkIcon, IconComponent: CollectionsBookmarkIcon,
}, show: 'both',
{ }, {
path: '/updates', path: '/updates',
title: 'Updates', title: 'Updates',
IconComponent: NewReleasesIcon, IconComponent: NewReleasesIcon,
show: 'both',
}, {
path: '/sources',
title: 'Sources',
IconComponent: ExploreIcon,
show: 'desktop',
}, {
path: '/extensions',
title: 'Extensions',
IconComponent: ExtensionIcon,
show: 'desktop',
}, { }, {
path: '/browse', path: '/browse',
title: 'Browse', title: 'Browse',
IconComponent: ExploreIcon, IconComponent: ExploreIcon,
show: 'mobile',
}, { }, {
path: '/downloads', path: '/downloads',
title: 'Downloads', title: 'Downloads',
IconComponent: GetAppIcon, IconComponent: GetAppIcon,
show: 'both',
}, { }, {
path: '/settings', path: '/settings',
title: 'Settings', title: 'Settings',
IconComponent: SettingsIcon, IconComponent: SettingsIcon,
show: 'both',
}, },
]; ];
@@ -78,11 +93,11 @@ export default function DefaultNavBar() {
let navbar = <></>; let navbar = <></>;
if (isMobileWidth) { if (isMobileWidth) {
if (!isMainRoute) { if (isMainRoute) {
navbar = <MobileBottomBar navBarItems={navbarItems} />; navbar = <MobileBottomBar navBarItems={navbarItems.filter((it) => it.show !== 'desktop')} />;
} }
} else { } else {
navbar = <DesktopSideBar navBarItems={navbarItems} />; navbar = <DesktopSideBar navBarItems={navbarItems.filter((it) => it.show !== 'mobile')} />;
} }
return ( return (

1
src/typings.d.ts vendored
View File

@@ -197,4 +197,5 @@ interface NavbarItem{
path: string, path: string,
title:string, title:string,
IconComponent: OverridableComponent<SvgIconTypeMap<{}, 'svg'>>, IconComponent: OverridableComponent<SvgIconTypeMap<{}, 'svg'>>,
show: 'mobile' | 'desktop' | 'both'
} }