From fd5bfd161d2cd0138458d837783ee6cd0f522dc9 Mon Sep 17 00:00:00 2001 From: nimbleghost <132819643+nimbleghost@users.noreply.github.com> Date: Mon, 26 Jun 2023 23:19:58 +0200 Subject: [PATCH 1/3] Web app UI: make preferences responsive --- web/src/components/Account.jsx | 2 +- web/src/components/Pref.jsx | 100 ++++++++++++++++++--------------- 2 files changed, 55 insertions(+), 47 deletions(-) diff --git a/web/src/components/Account.jsx b/web/src/components/Account.jsx index a6a624b8..977bf161 100644 --- a/web/src/components/Account.jsx +++ b/web/src/components/Account.jsx @@ -785,7 +785,7 @@ const Tokens = () => { }} /> - {tokens?.length > 0 && } +
{tokens?.length > 0 && }
diff --git a/web/src/components/Pref.jsx b/web/src/components/Pref.jsx index a725d115..5e64c41f 100644 --- a/web/src/components/Pref.jsx +++ b/web/src/components/Pref.jsx @@ -1,52 +1,60 @@ +import { styled } from "@mui/material"; import * as React from "react"; -export const PrefGroup = (props) =>
{props.children}
; +export const PrefGroup = styled("div", { attrs: { role: "table" } })` + display: flex; + flex-direction: column; + gap: 20px; +`; -export const Pref = (props) => { - const justifyContent = props.alignTop ? "normal" : "center"; - return ( -
-
+const PrefRow = styled("div")` + display: flex; + flex-direction: row; + + > :first-child { + flex: 1 0 40%; + display: flex; + flex-direction: column; + justify-content: ${(props) => (props.alignTop ? "normal" : "center")}; + } + + > :last-child { + flex: 1 0 calc(60% - 50px); + display: flex; + flex-direction: column; + justify-content: ${(props) => (props.alignTop ? "normal" : "center")}; + } + + @media (max-width: 1000px) { + flex-direction: column; + gap: 10px; + + > :first-child, + > :last-child { + flex: unset; + } + + > :last-child { + .MuiFormControl-root { + margin: 0; + } + } + } +`; + +export const Pref = (props) => ( + +
+
+ {props.title} + {props.subtitle && ({props.subtitle})} +
+ {props.description && (
- {props.title} - {props.subtitle && ({props.subtitle})} + {props.description}
- {props.description && ( -
- {props.description} -
- )} -
-
- {props.children} -
+ )}
- ); -}; +
{props.children}
+ +); From 4a1adaeab2e4e4ef9538f51982341a66d63044eb Mon Sep 17 00:00:00 2001 From: nimbleghost <132819643+nimbleghost@users.noreply.github.com> Date: Mon, 26 Jun 2023 23:34:22 +0200 Subject: [PATCH 2/3] Make login and sign up form responsive --- web/src/components/AvatarBox.jsx | 27 ++++++++++++++------------- web/src/components/Login.jsx | 2 +- web/src/components/Signup.jsx | 2 +- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/web/src/components/AvatarBox.jsx b/web/src/components/AvatarBox.jsx index 10378683..37c85d4e 100644 --- a/web/src/components/AvatarBox.jsx +++ b/web/src/components/AvatarBox.jsx @@ -1,22 +1,23 @@ import * as React from "react"; -import { Avatar, Box } from "@mui/material"; +import { Avatar, Box, styled } from "@mui/material"; import logo from "../img/ntfy-filled.svg"; +const AvatarBoxContainer = styled(Box)` + display: flex; + flex-grow: 1; + justify-content: center; + flex-direction: column; + align-content: center; + align-items: center; + height: 100dvh; + max-width: min(400px, 90dvw); + margin: auto; +`; const AvatarBox = (props) => ( - + {props.children} - + ); export default AvatarBox; diff --git a/web/src/components/Login.jsx b/web/src/components/Login.jsx index 4efec255..5c1af249 100644 --- a/web/src/components/Login.jsx +++ b/web/src/components/Login.jsx @@ -45,7 +45,7 @@ const Login = () => { return ( {t("login_title")} - + { return ( {t("signup_title")} - + Date: Mon, 26 Jun 2023 23:36:04 +0200 Subject: [PATCH 3/3] Use dvh for main height This takes into account browser UI for the viewport calculation --- web/src/components/App.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/components/App.jsx b/web/src/components/App.jsx index 7fdc706e..9b939ea5 100644 --- a/web/src/components/App.jsx +++ b/web/src/components/App.jsx @@ -118,7 +118,7 @@ const Main = (props) => ( flexDirection: "column", padding: 3, width: { sm: `calc(100% - ${Navigation.width}px)` }, - height: "100vh", + height: "100dvh", overflow: "auto", backgroundColor: ({ palette }) => (palette.mode === "light" ? palette.grey[100] : palette.grey[900]), }}