From 4fd9bd9c332a2bbc719e9d1f16573a50efddee31 Mon Sep 17 00:00:00 2001 From: hexxa Date: Sat, 25 Dec 2021 20:04:47 +0800 Subject: [PATCH] fix(fe/panes): refine styles of panes --- public/static/css/default.css | 4 + public/static/css/white.css | 14 +- .../web/src/components/control/tabs.tsx | 2 +- src/client/web/src/components/pane_admin.tsx | 391 ++++++++++-------- .../web/src/components/pane_settings.tsx | 345 ++++++++-------- 5 files changed, 397 insertions(+), 359 deletions(-) diff --git a/public/static/css/default.css b/public/static/css/default.css index 8c5e853..e9deb48 100644 --- a/public/static/css/default.css +++ b/public/static/css/default.css @@ -494,3 +494,7 @@ .full-width { width: 100%; } + +.bold { + font-weight: bold; +} \ No newline at end of file diff --git a/public/static/css/white.css b/public/static/css/white.css index 6d1c140..f824a49 100644 --- a/public/static/css/white.css +++ b/public/static/css/white.css @@ -113,7 +113,7 @@ background-color: white; border-radius: 0.8rem; margin-bottom: 2rem; - box-shadow: 0 5px 30px 0 rgb(31 38 135 / 10%); + box-shadow: 0 5px 30px 0 rgb(31 38 135 / 10%); } .container-padding { @@ -182,6 +182,7 @@ font-size: 1.4rem; line-height: 2rem; display: block; + overflow-wrap: break-word; } .theme-default #item-rows .hr { @@ -370,7 +371,7 @@ .theme-default .pane-title { color: black; - line-height: 4rem; + font-size: 1.6rem; } .theme-default #pane-settings { @@ -382,9 +383,14 @@ } .theme-default .user-form { - border: dashed 2px #ccc; - padding: 1rem; + font-size: 1.4rem; + padding: 1rem 0; margin-top: 1rem; + border-bottom: dashed 1px #000; +} + +.theme-default .more { + border: dashed 1px #ccc; } .theme-default .role-list-item { diff --git a/src/client/web/src/components/control/tabs.tsx b/src/client/web/src/components/control/tabs.tsx index e636890..83e4a47 100644 --- a/src/client/web/src/components/control/tabs.tsx +++ b/src/client/web/src/components/control/tabs.tsx @@ -14,7 +14,7 @@ import { colorClass } from "../visual/colors"; const defaultIconProps: IconProps = { name: "RiFolder2Fill", size: "1.6rem", - color: `${colorClass("1")}-font`, + color: `${colorClass("cyan1")}-font`, }; export interface Props { diff --git a/src/client/web/src/components/pane_admin.tsx b/src/client/web/src/components/pane_admin.tsx index bbe1d3d..4e6d789 100644 --- a/src/client/web/src/components/pane_admin.tsx +++ b/src/client/web/src/components/pane_admin.tsx @@ -2,6 +2,8 @@ import * as React from "react"; import { List, Map, Set } from "immutable"; import FileSize from "filesize"; +import { RiMore2Fill } from "@react-icons/all-files/ri/RiMore2Fill"; + import { alertMsg, confirmMsg } from "../common/env"; import { ICoreState, MsgProps, UIProps } from "./core_state"; import { User, Quota } from "../client"; @@ -39,6 +41,7 @@ export interface UserFormState { newPwd2: string; role: string; quota: Quota; + folded: boolean; } export class UserForm extends React.Component< @@ -59,6 +62,7 @@ export class UserForm extends React.Component< uploadSpeedLimit: p.quota.uploadSpeedLimit, downloadSpeedLimit: p.quota.downloadSpeedLimit, }, + folded: true, }; } @@ -150,25 +154,40 @@ export class UserForm extends React.Component< }); }; + toggle = () => { + this.setState({ folded: !this.state.folded }); + }; + render() { + const foldedClass = this.state.folded ? "hidden" : ""; + const foldIconColor = this.state.folded ? "black-font" : "cyan1-font"; + return (
-
- {`${this.props.msg.pkg.get("user.name")}: `} - {this.props.name} -
-
- {`${this.props.msg.pkg.get("user.id")}: `} - {this.props.id} -
+ {`${this.props.msg.pkg.get( + "user.name" + )}: `} + {this.props.name} + {`${this.props.msg.pkg.get( + "user.id" + )}: `} + {this.props.id}
, - , + + + + + , ])} childrenStyles={List([ { alignItems: "flex-start", flexBasis: "70%" }, @@ -178,130 +197,134 @@ export class UserForm extends React.Component< ])} /> -
+
+
- - -
- {this.props.msg.pkg.get("user.role")} -
- -
+ + +
+ {this.props.msg.pkg.get("user.role")} +
+ +
- -
- {`${this.props.msg.pkg.get("spaceLimit")} (${FileSize( - parseInt(this.state.quota.spaceLimit, 10), - { round: 0 } - )})`} -
- -
+ +
+ {`${this.props.msg.pkg.get("spaceLimit")} (${FileSize( + parseInt(this.state.quota.spaceLimit, 10), + { round: 0 } + )})`} +
+ +
- -
- {`${this.props.msg.pkg.get("uploadLimit")} (${FileSize( - this.state.quota.uploadSpeedLimit, - { round: 0 } - )})`} -
- -
+ +
+ {`${this.props.msg.pkg.get("uploadLimit")} (${FileSize( + this.state.quota.uploadSpeedLimit, + { round: 0 } + )})`} +
+ +
- -
- {`${this.props.msg.pkg.get("downloadLimit")} (${FileSize( - this.state.quota.downloadSpeedLimit, - { round: 0 } - )})`} -
- -
-
, + +
+ {`${this.props.msg.pkg.get("downloadLimit")} (${FileSize( + this.state.quota.downloadSpeedLimit, + { round: 0 } + )})`} +
+ +
+ , - , - ])} - childrenStyles={List([ - { alignItems: "flex-start", flexBasis: "70%" }, - { - justifyContent: "flex-end", - flexBasis: "30%", - }, - ])} - /> + , + ])} + childrenStyles={List([ + { alignItems: "flex-start", flexBasis: "70%" }, + { + justifyContent: "flex-end", + flexBasis: "30%", + }, + ])} + /> -
+
- -
-
- {this.props.msg.pkg.get("settings.pwd.new1")} + +
+
+ {this.props.msg.pkg.get("settings.pwd.new1")} +
+ +
- -
- -
-
- {this.props.msg.pkg.get("settings.pwd.new2")} +
+
+ {this.props.msg.pkg.get("settings.pwd.new2")} +
+
- -
-
, +
, - , - ])} - childrenStyles={List([ - { alignItems: "flex-start", flexBasis: "70%" }, - { - justifyContent: "flex-end", - }, - ])} - /> + , + ])} + childrenStyles={List([ + { alignItems: "flex-start", flexBasis: "70%" }, + { + justifyContent: "flex-end", + }, + ])} + /> + ); } @@ -343,19 +366,14 @@ export class AdminPane extends React.Component { }; addRole = async () => { - return updater() - .addRole(this.state.newRole) - .then((status: string) => { - if (status !== "") { - alertMsg(this.props.msg.pkg.get("add.fail")); - } else { - alertMsg(this.props.msg.pkg.get("add.ok")); - } - return updater().listRoles(); - }) - .then(() => { - this.props.update(updater().updateAdmin); - }); + const status = await updater().addRole(this.state.newRole); + if (status !== "") { + alertMsg(this.props.msg.pkg.get("add.fail")); + } else { + alertMsg(this.props.msg.pkg.get("add.ok")); + await updater().listRoles(); + this.props.update(updater().updateAdmin); + } }; delRole = async (role: string) => { @@ -363,19 +381,14 @@ export class AdminPane extends React.Component { return; } - return updater() - .delRole(role) - .then((status: string) => { - if (status !== "") { - this.props.msg.pkg.get("delete.fail"); - } else { - this.props.msg.pkg.get("delete.ok"); - } - return updater().listRoles(); - }) - .then(() => { - this.props.update(updater().updateAdmin); - }); + const status = await updater().delRole(role); + if (status !== "") { + this.props.msg.pkg.get("delete.fail"); + } else { + this.props.msg.pkg.get("delete.ok"); + await updater().listRoles(); + this.props.update(updater().updateAdmin); + } }; addUser = async () => { @@ -384,33 +397,29 @@ export class AdminPane extends React.Component { return; } - return updater() - .addUser({ - id: "", // backend will fill it - name: this.state.newUserName, - pwd: this.state.newUserPwd1, - role: this.state.newUserRole, - quota: undefined, - usedSpace: "0", - preferences: undefined, - }) - .then((status: string) => { - if (status !== "") { - alertMsg(this.props.msg.pkg.get("add.fail")); - } else { - alertMsg(this.props.msg.pkg.get("add.ok")); - } - this.setState({ - newUserName: "", - newUserPwd1: "", - newUserPwd2: "", - newUserRole: "", - }); - return updater().listUsers(); - }) - .then(() => { - this.props.update(updater().updateAdmin); + const status = await updater().addUser({ + id: "", // backend will fill it + name: this.state.newUserName, + pwd: this.state.newUserPwd1, + role: this.state.newUserRole, + quota: undefined, + usedSpace: "0", + preferences: undefined, + }); + + if (status !== "") { + alertMsg(this.props.msg.pkg.get("add.fail")); + } else { + alertMsg(this.props.msg.pkg.get("add.ok")); + this.setState({ + newUserName: "", + newUserPwd1: "", + newUserPwd2: "", + newUserRole: "", }); + await updater().listUsers(); + this.props.update(updater().updateAdmin); + } }; render() { @@ -464,7 +473,9 @@ export class AdminPane extends React.Component { {this.props.msg.pkg.get("user.add")}, +
+ {this.props.msg.pkg.get("user.add")} +
, , @@ -472,6 +483,8 @@ export class AdminPane extends React.Component { childrenStyles={List([{}, { justifyContent: "flex-end" }])} /> +
+
{this.props.msg.pkg.get("user.name")}
{ +
{this.props.msg.pkg.get("admin.users")}
, , ])} /> + +
+ {userList}
@@ -533,11 +549,15 @@ export class AdminPane extends React.Component {
{this.props.msg.pkg.get("role.add")}, +
+ {this.props.msg.pkg.get("role.add")} +
, , ])} /> +
+ { childrenStyles={List([{}, { justifyContent: "flex-end" }])} />
+
-
- + +
{this.props.msg.pkg.get("admin.roles")}
, , ])} /> + +
+ {roleList}
@@ -698,7 +721,7 @@ export class BgCfg extends React.Component {
{this.props.msg.pkg.get("cfg.bg")}, +
{this.props.msg.pkg.get("cfg.bg")}
, , + ])} + childrenStyles={List([{}, { justifyContent: "flex-end" }])} + />
-
- - {this.props.msg.pkg.get("settings.pwd.update")} - , - , - ])} - childrenStyles={List([{}, { justifyContent: "flex-end" }])} - /> - - -
- {this.props.msg.pkg.get("settings.pwd.old")} -
- -
- - -
- {this.props.msg.pkg.get("settings.pwd.new1")} -
- -
- - -
- {this.props.msg.pkg.get("settings.pwd.new2")} -
- -
-
- -
- -
- - {this.props.msg.pkg.get("settings.chooseLan")} - , - ])} - childrenStyles={List([{}, { justifyContent: "flex-end" }])} - /> -
- - + +
+ {this.props.msg.pkg.get("settings.pwd.old")}
-
+ + + + +
+ {this.props.msg.pkg.get("settings.pwd.new1")} +
+ +
+ + +
+ {this.props.msg.pkg.get("settings.pwd.new2")} +
+ +
+ + + + + {this.props.msg.pkg.get("settings.chooseLan")} + , + ])} + childrenStyles={List([{}, { justifyContent: "flex-end" }])} + />
- - {this.props.msg.pkg.get("settings.customLan")} - , + + +
+
- - - , - ])} - childrenStyles={List([{}, { justifyContent: "flex-end" }])} + + + {this.props.msg.pkg.get("settings.customLan")} + , + + + + , + ])} + childrenStyles={List([{}, { justifyContent: "flex-end" }])} + /> + +
+ +
+
+ {this.props.msg.pkg.get("settings.lanPackURL")} +
+ +
+
+ + + + {this.props.msg.pkg.get("cfg.bg")} + , + + , + ])} + childrenStyles={List([{}, { justifyContent: "flex-end" }])} + /> + +
+ +
+
+
+ {this.props.msg.pkg.get("cfg.bg.url")} +
+ +
- {this.props.msg.pkg.get("settings.lanPackURL")} + {this.props.msg.pkg.get("cfg.bg.repeat")}
+
+ +
+
+ {this.props.msg.pkg.get("cfg.bg.pos")} +
+ +
+ +
+
+ {this.props.msg.pkg.get("cfg.bg.align")} +
+
+
-
- -
- {this.props.msg.pkg.get("cfg.bg")}, - - , - ])} - childrenStyles={List([{}, { justifyContent: "flex-end" }])} - /> - -
-
-
- {this.props.msg.pkg.get("cfg.bg.url")} -
- -
- -
-
- {this.props.msg.pkg.get("cfg.bg.repeat")} -
- -
- -
-
- {this.props.msg.pkg.get("cfg.bg.pos")} -
- -
- -
-
- {this.props.msg.pkg.get("cfg.bg.align")} -
- -
-
-
- - {/*
+ {/*
{ ])} />
*/} -
); }