diff options
Diffstat (limited to 'FrontEnd')
-rw-r--r-- | FrontEnd/src/locales/en/translation.json | 6 | ||||
-rw-r--r-- | FrontEnd/src/locales/zh/translation.json | 6 | ||||
-rw-r--r-- | FrontEnd/src/views/common/input/InputPanel.tsx | 6 | ||||
-rw-r--r-- | FrontEnd/src/views/register/index.tsx | 70 |
4 files changed, 46 insertions, 42 deletions
diff --git a/FrontEnd/src/locales/en/translation.json b/FrontEnd/src/locales/en/translation.json index 548dcfe1..d325a9c9 100644 --- a/FrontEnd/src/locales/en/translation.json +++ b/FrontEnd/src/locales/en/translation.json @@ -24,6 +24,12 @@ "register": "Only Registered Users", "public": "Public To Everyone" }, + "register": { + "username": "Username", + "password": "Password", + "confirmPassword": "Confirm Password", + "regsiterCode": "Register Code" + }, "serviceWorker": { "availableOffline": "Timeline is now cached in your computer and you can use it offline. 🎉🎉🎉", "upgradePrompt": "App is getting a new version!", diff --git a/FrontEnd/src/locales/zh/translation.json b/FrontEnd/src/locales/zh/translation.json index 58a9b2e6..f6f1b0f2 100644 --- a/FrontEnd/src/locales/zh/translation.json +++ b/FrontEnd/src/locales/zh/translation.json @@ -17,6 +17,12 @@ "register": "仅注册用户可见", "public": "对所有人公开" }, + "register": { + "username": "用户名", + "password": "密码", + "confirmPassword": "确认密码", + "regsiterCode": "注册码" + }, "connectionState": { "Connected": "已连接", "Connecting": "正在连接", diff --git a/FrontEnd/src/views/common/input/InputPanel.tsx b/FrontEnd/src/views/common/input/InputPanel.tsx index 1270cc53..704330eb 100644 --- a/FrontEnd/src/views/common/input/InputPanel.tsx +++ b/FrontEnd/src/views/common/input/InputPanel.tsx @@ -72,7 +72,9 @@ type MapInputListToValueTypeList<Tuple extends readonly Input[]> = { [Index in keyof Tuple]: MapInputToValueType<Tuple[Index]>; } & { length: Tuple["length"] }; -export type OperationInputError = (I18nText | null | undefined)[]; +export type InputPanelError = { + [index: number]: I18nText | null | undefined; +}; export interface InputPanelProps<InputList extends readonly Input[]> { scheme: InputList; @@ -81,7 +83,7 @@ export interface InputPanelProps<InputList extends readonly Input[]> { values: MapInputListToValueTypeList<InputList>, index: number ) => void; - error?: OperationInputError; + error?: InputPanelError; disable?: boolean; } diff --git a/FrontEnd/src/views/register/index.tsx b/FrontEnd/src/views/register/index.tsx index da59ef94..9108b789 100644 --- a/FrontEnd/src/views/register/index.tsx +++ b/FrontEnd/src/views/register/index.tsx @@ -1,4 +1,5 @@ import React from "react"; +import InputPanel, { InputPanelError } from "../common/input/InputPanel"; const RegisterPage: React.FC = () => { const [username, setUsername] = React.useState<string>(""); @@ -6,48 +7,37 @@ const RegisterPage: React.FC = () => { const [confirmPassword, setConfirmPassword] = React.useState<string>(""); const [registerCode, setRegisterCode] = React.useState<string>(""); + const [error, setError] = React.useState<InputPanelError>(); + return ( <div> - <div> - <label>Username</label> - <input - type="text" - value={username} - onChange={(e) => { - setUsername(e.target.value); - }} - /> - </div> - <div> - <label>Password</label> - <input - type="password" - value={password} - onChange={(e) => { - setPassword(e.target.value); - }} - /> - </div> - <div> - <label>Confirm Password</label> - <input - type="password" - value={confirmPassword} - onChange={(e) => { - setConfirmPassword(e.target.value); - }} - /> - </div> - <div> - <label>Register Code</label> - <input - type="text" - value={registerCode} - onChange={(e) => { - setRegisterCode(e.target.value); - }} - /> - </div> + <InputPanel + scheme={[ + { + type: "text", + label: "register.username", + }, + { + type: "text", + label: "register.password", + password: true, + }, + { + type: "text", + label: "register.confirmPassword", + password: true, + }, + { type: "text", label: "register.registerCode" }, + ]} + values={[username, password, confirmPassword, registerCode]} + onChange={(values) => { + setUsername(values[0]); + setPassword(values[1]); + setConfirmPassword(values[2]); + setRegisterCode(values[3]); + }} + error={error} + /> </div> ); }; |