Personal Dashboard

Login.jsx 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import React from 'react'
  2. import { connect } from 'react-redux'
  3. import { Card } from '../../Shared/Components'
  4. import { InputGroup, Tooltip, Button, Classes, Intent } from '@blueprintjs/core'
  5. import { LOGIN } from '../../Store/Actions'
  6. import './Login.scss'
  7. const PasswordToggler = ({show, toggle}) =>
  8. <Tooltip content={`${show ? "Hide" : "Show"} Password`}>
  9. <Button className={Classes.MINIMAL} intent={Intent.WARNING}
  10. iconName={show ? "eye-off" : "eye-open"} onClick={toggle} />
  11. </Tooltip>
  12. const Logo = () => <h1 className="logo"><img src="lighthouse.png"/><span>Lighthouse</span></h1>
  13. const LoginTemplate = ({ togglePassword, showPassword, connect }) =>
  14. <div className="flex-frame center">
  15. <Logo />
  16. <Card>
  17. <form onSubmit={e => connect('test', e)}>
  18. <InputGroup name="username" placeholder="Username" leftIconName="user"/>
  19. <InputGroup name="password" placeholder="Enter your password..." leftIconName="lock"
  20. type={showPassword ? "text" : "password"}
  21. rightElement={<PasswordToggler show={showPassword} toggle={togglePassword} />}
  22. />
  23. <Button iconName="log-in" type="submit">Login</Button>
  24. </form>
  25. </Card>
  26. </div>
  27. export default class Login extends React.Component {
  28. state = { showPassword: false }
  29. togglePassword = () => this.setState({ showPassword: !this.state.showPassword })
  30. connect(test, e) {
  31. e.preventDefault();
  32. let data = new Map(new FormData(e.target));
  33. console.log(data);
  34. return false;
  35. }
  36. render() {
  37. return <LoginTemplate
  38. showPassword={this.state.showPassword}
  39. togglePassword={this.togglePassword}
  40. connect={this.connect}
  41. />
  42. }
  43. }