// External imports import * as React from "react" import { Varchar, AdvancedDataType } from "fawkes-server/build/support" // Internal imports import * as ce from "../../helpers/componentEnhancer" import AdvancedForm from "../reusable/advancedForm/advancedForm" import AdvancedFormField from "../reusable/advancedForm/advancedFormField" import AdvancedFormInput from "../reusable/advancedForm/presenters/advancedFormInput" import AdvancedFormSubmitButton from "../reusable/advancedForm/presenters/advancedFormSubmitButton" import * as userActions from "../../actions/user" import Title from "../reusable/title" import Button from "../reusable/button" import { AdvancedForm as AdvancedFormInStore } from "../../store/types" export interface ParentProps {} interface StateProps { form?: AdvancedFormInStore } interface DispatchProps { logIn: (email: string, password: string) => void sendLoginLink: (email: string) => void } interface LocalState {} class LoginForm extends React.Component< ParentProps & StateProps & DispatchProps & ce.EnhancedPropsPrivate, LocalState > { render() { return (
l.public.title())} subtitle={this.props.cl(l => l.loginForm.title())} > <Button label={this.props.cl(l => l.registrationForm.title())} href="/register" /> <Button label={this.props.cl(l => l.forgotPasswordForm.title())} href="/forgotPassword" /> { this.props.logIn(formData.email, formData.password) }} > l.loginForm.email.label()), placeholder: this.props.cl(l => l.loginForm.email.placeholder()), infoIcon: "at", isRequired: true, validate: true, typeOverride: "email" }} /> l.loginForm.password.label()), placeholder: this.props.cl(l => l.loginForm.password.placeholder() ), infoIcon: "key", isRequired: true, validate: true, typeOverride: "password" }} />
) } } const stateMappings: ce.StateMappings = (s, props) => ({ form: s.advancedForm.forms.find(form => form.id === "login") }) const dispatchMappings: ce.DispatchMappings = (d, props) => ({ logIn: (email: Varchar, password: Varchar) => { d( userActions.logInWithEmail( props.module.api, email, password, props.history ) ) }, sendLoginLink: (email: Varchar) => { d( userActions.sendLoginLink( props.module.api, email, props.module.clientUrl, props.history ) ) } }) export default ((): React.ComponentType => ce.enhance(LoginForm, { stateMappings, dispatchMappings }))()