diff --git a/www/src/components/HomeNavigation/NavDrawer.tsx b/www/src/components/HomeNavigation/NavDrawer.tsx
index 2acd7dea..267e69e0 100644
--- a/www/src/components/HomeNavigation/NavDrawer.tsx
+++ b/www/src/components/HomeNavigation/NavDrawer.tsx
@@ -3,6 +3,8 @@ import React from "react";
import {
makeStyles,
createStyles,
+ useTheme,
+ useMediaQuery,
Drawer,
DrawerProps,
Grid,
@@ -11,10 +13,10 @@ import {
ListItem,
ListItemIcon,
ListItemText,
- Divider,
} from "@material-ui/core";
import { fade } from "@material-ui/core/styles";
import CloseIcon from "@material-ui/icons/Close";
+import AddIcon from "@material-ui/icons/Add";
import { APP_BAR_HEIGHT } from ".";
import FiretableLogo from "assets/Firetable";
@@ -36,6 +38,15 @@ const useStyles = makeStyles((theme) =>
padding: theme.spacing(0, 0.5, 0, 2),
},
+ nav: { height: "100%" },
+ list: {
+ display: "flex",
+ flexDirection: "column",
+ flexWrap: "nowrap",
+
+ height: "100%",
+ },
+
listItem: {
color: theme.palette.text.secondary,
minHeight: 48,
@@ -57,13 +68,22 @@ const useStyles = makeStyles((theme) =>
display: "block",
color: "inherit",
},
+
+ createTable: { marginTop: "auto" },
})
);
-export interface INavDrawerProps extends DrawerProps {}
+export interface INavDrawerProps extends DrawerProps {
+ handleCreateTable: () => void;
+}
-export default function NavDrawer(props: INavDrawerProps) {
+export default function NavDrawer({
+ handleCreateTable,
+ ...props
+}: INavDrawerProps) {
const classes = useStyles();
+ const theme = useTheme();
+ const isSm = useMediaQuery(theme.breakpoints.down("sm"));
const { sections } = useFiretableContext();
const { location } = useRouter();
@@ -72,7 +92,7 @@ export default function NavDrawer(props: INavDrawerProps) {
return (
@@ -98,8 +118,8 @@ export default function NavDrawer(props: INavDrawerProps) {
-
diff --git a/www/src/components/HomeNavigation/index.tsx b/www/src/components/HomeNavigation/index.tsx
index 8f48035a..5f60010b 100644
--- a/www/src/components/HomeNavigation/index.tsx
+++ b/www/src/components/HomeNavigation/index.tsx
@@ -1,4 +1,4 @@
-import React, { useState, useEffect } from "react";
+import React from "react";
import clsx from "clsx";
import _find from "lodash/find";
@@ -25,18 +25,20 @@ const useStyles = makeStyles((theme) =>
open: {},
navDrawerContainer: {
- width: 0,
- transition: theme.transitions.create("width", {
- easing: theme.transitions.easing.sharp,
- duration: theme.transitions.duration.leavingScreen,
- }),
-
- "$open &": {
- width: NAV_DRAWER_WIDTH,
+ [theme.breakpoints.up("md")]: {
+ width: 0,
transition: theme.transitions.create("width", {
- easing: theme.transitions.easing.easeOut,
- duration: theme.transitions.duration.enteringScreen,
+ easing: theme.transitions.easing.sharp,
+ duration: theme.transitions.duration.leavingScreen,
}),
+
+ "$open &": {
+ width: NAV_DRAWER_WIDTH,
+ transition: theme.transitions.create("width", {
+ easing: theme.transitions.easing.easeOut,
+ duration: theme.transitions.duration.enteringScreen,
+ }),
+ },
},
},
@@ -44,16 +46,18 @@ const useStyles = makeStyles((theme) =>
height: APP_BAR_HEIGHT,
[theme.breakpoints.down("sm")]: { paddingRight: 0 },
- transition: theme.transitions.create("width", {
- easing: theme.transitions.easing.sharp,
- duration: theme.transitions.duration.leavingScreen,
- }),
- "$open &": {
- width: `calc(100% - ${NAV_DRAWER_WIDTH}px)`,
+ [theme.breakpoints.up("md")]: {
transition: theme.transitions.create("width", {
- easing: theme.transitions.easing.easeOut,
- duration: theme.transitions.duration.enteringScreen,
+ easing: theme.transitions.easing.sharp,
+ duration: theme.transitions.duration.leavingScreen,
}),
+ "$open &": {
+ width: `calc(100% - ${NAV_DRAWER_WIDTH}px)`,
+ transition: theme.transitions.create("width", {
+ easing: theme.transitions.easing.easeOut,
+ duration: theme.transitions.duration.enteringScreen,
+ }),
+ },
},
},
maxHeight: {
@@ -81,14 +85,24 @@ const useStyles = makeStyles((theme) =>
})
);
+export interface IHomeNavigationProps {
+ children: React.ReactNode;
+
+ open: boolean;
+ setOpen: React.Dispatch>;
+
+ handleCreateTable: () => void;
+}
+
export default function HomeNavigation({
children,
-}: React.PropsWithChildren<{}>) {
+ open,
+ setOpen,
+ handleCreateTable,
+}: IHomeNavigationProps) {
const classes = useStyles();
const trigger = useScrollTrigger({ disableHysteresis: true, threshold: 0 });
- const [open, setOpen] = useState(false);
-
return (
- setOpen(false)} />
+ setOpen(false)}
+ handleCreateTable={handleCreateTable}
+ />
diff --git a/www/src/views/TablesView.tsx b/www/src/views/TablesView.tsx
index c589d969..77e6a3f9 100644
--- a/www/src/views/TablesView.tsx
+++ b/www/src/views/TablesView.tsx
@@ -107,17 +107,25 @@ const TablesView = () => {
data: null,
});
- const { sections, userClaims } = useFiretableContext();
+ const { sections } = useFiretableContext();
const { userDoc } = useAppContext();
const favs = userDoc.state.doc?.favoriteTables
? userDoc.state.doc.favoriteTables
: [];
+ const handleCreateTable = () =>
+ setSettingsDialogState({
+ mode: TableSettingsDialogModes.create,
+ data: null,
+ });
+
+ const [open, setOpen] = useState(false);
+
const TableCard = ({ table }) => {
const checked = Boolean(_find(favs, table));
return (
-
+
{
};
return (
-
+
{favs.length !== 0 && (
@@ -230,12 +242,7 @@ const TablesView = () => {
className={classes.fab}
color="secondary"
aria-label="Create table"
- onClick={() => {
- setSettingsDialogState({
- mode: TableSettingsDialogModes.create,
- data: null,
- });
- }}
+ onClick={handleCreateTable}
>