diff --git a/public/static/css/white.css b/public/static/css/white.css index 93416fd..5c3da5b 100644 --- a/public/static/css/white.css +++ b/public/static/css/white.css @@ -179,6 +179,7 @@ line-height: 2rem; display: block; margin: 2rem 0; + word-break: break-all; } .theme-default #item-rows .desc { diff --git a/src/client/web/src/components/core_state.ts b/src/client/web/src/components/core_state.ts index babb3ca..251e6c4 100644 --- a/src/client/web/src/components/core_state.ts +++ b/src/client/web/src/components/core_state.ts @@ -3,20 +3,21 @@ import { List, Set, Map } from "immutable"; import { UploadEntry } from "../worker/interface"; import { MsgPackage } from "../i18n/msger"; import { User, MetadataResp } from "../client"; -import { settingsDialogCtrl } from "./layers"; -import { filesViewCtrl } from "./panel_files"; import { FilesProps } from "./panel_files"; import { UploadingsProps } from "./panel_uploadings"; import { SharingsProps } from "./panel_sharings"; import { controlName as panelTabs } from "./root_frame"; -import { settingsTabsCtrl } from "./dialog_settings"; +import { + filesViewCtrl, + settingsTabsCtrl, + settingsDialogCtrl, + sharingCtrl, + ctrlOn, + ctrlOff, +} from "../common/controls"; import { LoginProps } from "./pane_login"; import { AdminProps } from "./pane_admin"; -export const ctrlHidden = "hidden"; -export const ctrlOn = "on"; -export const ctrlOff = "off"; -export const sharingCtrl = "sharingCtrl"; export interface MsgProps { lan: string; pkg: Map; @@ -110,9 +111,9 @@ export function initState(): ICoreState { control: { controls: Map({ [panelTabs]: "filesPanel", - [settingsDialogCtrl]: "off", + [settingsDialogCtrl]: ctrlOff, [settingsTabsCtrl]: "preferencePane", - [sharingCtrl]: "off", + [sharingCtrl]: ctrlOff, [filesViewCtrl]: "rows", }), options: Map>({ @@ -121,9 +122,9 @@ export function initState(): ICoreState { "uploadingsPanel", "sharingsPanel", ]), - [settingsDialogCtrl]: Set(["on", "off"]), + [settingsDialogCtrl]: Set([ctrlOn, ctrlOff]), [settingsTabsCtrl]: Set(["preferencePane", "managementPane"]), - [sharingCtrl]: Set(["on", "off"]), + [sharingCtrl]: Set([ctrlOn, ctrlOff]), [filesViewCtrl]: Set(["rows", "table"]), }), }, diff --git a/src/client/web/src/components/dialog_settings.tsx b/src/client/web/src/components/dialog_settings.tsx index c047714..0787974 100644 --- a/src/client/web/src/components/dialog_settings.tsx +++ b/src/client/web/src/components/dialog_settings.tsx @@ -11,8 +11,7 @@ import { Tabs } from "./control/tabs"; import { Container } from "./layout/container"; import { LoginProps } from "./pane_login"; import { roleAdmin } from "../client"; - -export const settingsTabsCtrl = "settingsTabs"; +import { settingsTabsCtrl } from "../common/controls"; export interface Props { admin: AdminProps; diff --git a/src/client/web/src/components/layers.tsx b/src/client/web/src/components/layers.tsx index d347cfe..80e94af 100644 --- a/src/client/web/src/components/layers.tsx +++ b/src/client/web/src/components/layers.tsx @@ -2,13 +2,7 @@ import * as React from "react"; import { List } from "immutable"; import { updater } from "./state_updater"; -import { - ICoreState, - MsgProps, - UIProps, - sharingCtrl, - ctrlOn, -} from "./core_state"; +import { ICoreState, MsgProps, UIProps } from "./core_state"; import { AdminProps } from "./pane_admin"; import { SettingsDialog } from "./dialog_settings"; @@ -16,8 +10,7 @@ import { AuthPane, LoginProps } from "./pane_login"; import { FilesProps } from "./panel_files"; import { Flexbox } from "./layout/flexbox"; import { Container } from "./layout/container"; - -export const settingsDialogCtrl = "settingsDialog"; +import { sharingCtrl, ctrlOn } from "../common/controls"; export interface Props { filesInfo: FilesProps; diff --git a/src/client/web/src/components/pane_admin.tsx b/src/client/web/src/components/pane_admin.tsx index 4e6d789..55346d2 100644 --- a/src/client/web/src/components/pane_admin.tsx +++ b/src/client/web/src/components/pane_admin.tsx @@ -141,6 +141,10 @@ export class UserForm extends React.Component< }; delUser = async () => { + if (!confirmMsg(this.props.msg.pkg.get("op.confirm"))) { + return; + } + return updater() .delUser(this.state.id) .then((status: string) => { diff --git a/src/client/web/src/components/panel_files.tsx b/src/client/web/src/components/panel_files.tsx index 5f5e829..4aec1bf 100644 --- a/src/client/web/src/components/panel_files.tsx +++ b/src/client/web/src/components/panel_files.tsx @@ -28,8 +28,7 @@ import { Rows, Row } from "./layout/rows"; import { Up } from "../worker/upload_mgr"; import { UploadEntry, UploadState } from "../worker/interface"; import { getIcon } from "./visual/icons"; - -export const filesViewCtrl = "filesView"; +import { filesViewCtrl } from "../common/controls"; export interface Item { name: string; diff --git a/src/client/web/src/components/state_updater.ts b/src/client/web/src/components/state_updater.ts index 820b4f7..b9511a1 100644 --- a/src/client/web/src/components/state_updater.ts +++ b/src/client/web/src/components/state_updater.ts @@ -1,12 +1,6 @@ import { List, Map, Set } from "immutable"; -import { - ICoreState, - sharingCtrl, - ctrlOn, - ctrlOff, - ctrlHidden, -} from "./core_state"; +import { ICoreState } from "./core_state"; import { getItemPath } from "../common/utils"; import { User, @@ -32,10 +26,16 @@ import { UploadEntry, UploadState } from "../worker/interface"; import { Up } from "../worker/upload_mgr"; import { alertMsg } from "../common/env"; import { controlName as panelTabs } from "./root_frame"; -import { settingsTabsCtrl } from "./dialog_settings"; -import { settingsDialogCtrl } from "./layers"; import { errUpdater, errServer } from "../common/errors"; import { ErrorLogger } from "../common/log_error"; +import { + settingsTabsCtrl, + settingsDialogCtrl, + sharingCtrl, + ctrlOn, + ctrlOff, + ctrlHidden, +} from "../common/controls"; import { MsgPackage, isValidLanPack } from "../i18n/msger"; diff --git a/src/client/web/src/components/topbar.tsx b/src/client/web/src/components/topbar.tsx index 39147e9..ef59d21 100644 --- a/src/client/web/src/components/topbar.tsx +++ b/src/client/web/src/components/topbar.tsx @@ -2,17 +2,11 @@ import * as React from "react"; import { List } from "immutable"; import { alertMsg, confirmMsg } from "../common/env"; -import { - ICoreState, - MsgProps, - UIProps, - ctrlOn, - ctrlHidden, -} from "./core_state"; +import { ICoreState, MsgProps, UIProps } from "./core_state"; import { LoginProps } from "./pane_login"; import { updater } from "./state_updater"; import { Flexbox } from "./layout/flexbox"; -import { settingsDialogCtrl } from "./layers"; +import { ctrlOn, ctrlHidden, settingsDialogCtrl } from "../common/controls"; import { QRCodeIcon } from "./visual/qrcode"; export interface State {} @@ -91,7 +85,12 @@ export class TopBar extends React.Component { > Quickshare , - , + ,