import { WebApplication } from '@/ui_models/application'; import { AppState } from '@/ui_models/app_state'; import { observer } from 'mobx-react-lite'; import { FunctionComponent } from 'preact'; import { StateUpdater, useEffect, useRef, useState } from 'preact/hooks'; import { AccountMenuPane } from '.'; import { Button } from '../Button'; import { DecoratedInput } from '../DecoratedInput'; import { DecoratedPasswordInput } from '../DecoratedPasswordInput'; import { Icon } from '../Icon'; import { IconButton } from '../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} />