import { WebApplication } from '@/UIModels/Application' import { AppState } from '@/UIModels/AppState' import { observer } from 'mobx-react-lite' import { FunctionComponent } from 'preact' import { StateUpdater, useEffect, useRef, useState } from 'preact/hooks' import { AccountMenuPane } from '.' import { Button } from '@/Components/Button/Button' import { DecoratedInput } from '@/Components/Input/DecoratedInput' import { DecoratedPasswordInput } from '@/Components/Input/DecoratedPasswordInput' import { Icon } from '@/Components/Icon' import { IconButton } from '@/Components/Button/IconButton' import { AdvancedOptions } from './AdvancedOptions' type Props = { appState: AppState application: WebApplication setMenuPane: (pane: AccountMenuPane) => void email: string setEmail: StateUpdater password: string setPassword: StateUpdater } export const CreateAccount: FunctionComponent = observer( ({ appState, application, setMenuPane, email, setEmail, password, setPassword }) => { const emailInputRef = useRef(null) const passwordInputRef = useRef(null) const [isVault, setIsVault] = useState(false) useEffect(() => { if (emailInputRef.current) { emailInputRef.current?.focus() } }, []) const handleEmailChange = (text: string) => { setEmail(text) } const handlePasswordChange = (text: string) => { setPassword(text) } const handleKeyDown = (e: KeyboardEvent) => { if (e.key === 'Enter') { handleRegisterFormSubmit(e) } } const handleRegisterFormSubmit = (e: Event) => { e.preventDefault() if (!email || email.length === 0) { emailInputRef.current?.focus() return } if (!password || password.length === 0) { passwordInputRef.current?.focus() return } setEmail(email) setPassword(password) setMenuPane(AccountMenuPane.ConfirmPassword) } const handleClose = () => { setMenuPane(AccountMenuPane.GeneralMenu) setEmail('') setPassword('') } const onVaultChange = (isVault: boolean, vaultedEmail?: string) => { setIsVault(isVault) if (isVault && vaultedEmail) { setEmail(vaultedEmail) } } return ( <>
Create account
]} onChange={handleEmailChange} onKeyDown={handleKeyDown} placeholder="Email" ref={emailInputRef} type="email" value={email} /> ]} onChange={handlePasswordChange} onKeyDown={handleKeyDown} placeholder="Password" ref={passwordInputRef} value={password} />