decred.org/dcrdex@v1.0.5/client/webserver/site/src/js/login.ts (about) 1 import { PageElement, app } from './registry' 2 import Doc from './doc' 3 import BasePage from './basepage' 4 import { AppPassResetForm, LoginForm, slideSwap } from './forms' 5 6 /* 7 LoginPage holds the form for login and password reset. 8 */ 9 export default class LoginPage extends BasePage { 10 loginForm: LoginForm 11 page: Record<string, PageElement> 12 appPassResetForm: AppPassResetForm 13 14 constructor (body: HTMLElement) { 15 super() 16 const page = this.page = Doc.idDescendants(body) 17 this.loginForm = new LoginForm(page.loginForm, () => { this.loggedIn() }) 18 19 const prepAndDisplayLoginForm = () => { 20 Doc.hide(page.resetAppPWForm) 21 this.loginForm.refresh() 22 Doc.show(page.loginForm) 23 this.loginForm.focus() 24 } 25 prepAndDisplayLoginForm() 26 27 this.appPassResetForm = new AppPassResetForm(page.resetAppPWForm, () => { prepAndDisplayLoginForm() }) 28 Doc.bind(page.forgotPassBtn, 'click', () => { 29 this.appPassResetForm.refresh() 30 slideSwap(page.loginForm, page.resetAppPWForm) 31 }) 32 Doc.bind(page.resetPassFormCloser, 'click', () => { prepAndDisplayLoginForm() }) 33 Doc.bind(page.forms, 'mousedown', (e: MouseEvent) => { 34 if (!Doc.mouseInElement(e, page.resetAppPWForm) && Doc.isDisplayed(page.resetAppPWForm)) { prepAndDisplayLoginForm() } 35 }) 36 } 37 38 /* login submits the sign-in form and parses the result. */ 39 async loggedIn () { 40 await app().loadPage('wallets') 41 } 42 }