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  }