Advertisement
Guest User

Untitled

a guest
Dec 14th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.10 KB | None | 0 0
  1. import { Meteor } from 'meteor/meteor';
  2. import React from 'react';
  3. import i18n from 'meteor/universe:i18n';
  4.  
  5. import ProfileDropDown from './profileDropdown.jsx';
  6. import { Link } from 'react-router-dom';
  7. import { withTracker } from 'meteor/react-meteor-data';
  8. import './menu.css';
  9.  
  10. export default class Menu extends React.Component {
  11. constructor(props) {
  12. super(props);
  13. this.state = {
  14. form: "login"
  15. }
  16. }
  17.  
  18. changeForm() {
  19. const form = this.state.form;
  20. this.setState({
  21. form: form == "login" ? 'signup' : 'login'
  22. })
  23. }
  24. formLogin(event) {
  25. event.preventDefault();
  26. console.log('login')
  27. }
  28. formSignup(event) {
  29. event.preventDefault();
  30. console.log('signup')
  31. }
  32. loginWithFacebook() {
  33. let self = this;
  34. Meteor.loginWithFacebook((err) => {
  35. err ? null : self.state.modalInstance.close();
  36.  
  37. })
  38. }
  39.  
  40. componentDidMount() {
  41. let self = this;
  42. const sideNav = document.querySelector('.sidenav');
  43. const sideNavInstance = new M.Sidenav(sideNav, {});
  44.  
  45. var modal = document.querySelector('.modal');
  46. var modalInstance = new M.Modal(modal, {});
  47. }
  48.  
  49. componentWillUnmount() {
  50. }
  51.  
  52. render() {
  53. const formId = this.state.form == "login" ? "login" : "signup";
  54. const event = formId == "login" ? this.formLogin : this.formSignup;
  55. return (
  56. <div>
  57. <nav className="white z-depth-1">
  58. <div className="nav-wrapper">
  59. <img src="/svg/logo.svg" className="responsive-img brand-logo" />
  60. <a href="#" data-target="sideMenu" className="sidenav-trigger"><i className="material-icons">menu</i></a>
  61. {['navMenu', 'sideMenu'].map(nav => {
  62. const menuClass = nav == 'navMenu' ? "right hide-on-med-and-down" : "sidenav";
  63. return (
  64. <ul id={nav} className={menuClass} key={nav}>
  65. <li><Link to="/">{i18n.__('homepage')}</Link></li>
  66. <li><a href="collapsible.html">{i18n.__('all_travels')}</a></li>
  67. {!this.props.user ?
  68. <React.Fragment>
  69. <li><a href="/">{i18n.__('how_it_works')}</a></li>
  70. <li><a href="collapsible.html">{i18n.__('about')}</a></li>
  71. <li><a href="collapsible.html">{i18n.__('blog')}</a></li>
  72. <li><a href="collapsible.html">{i18n.__('signup')}</a></li>
  73. <li><a className="login-modal-trigger modal-trigger" href="#login-modal">{i18n.__('login')}</a></li>
  74. </React.Fragment>
  75. :
  76. <React.Fragment>
  77. <ProfileDropDown image={this.props.user.profile.image} name={this.props.user.profile.name} surname={this.props.user.profile.surname} />
  78. </React.Fragment>
  79. }
  80. </ul>
  81. )
  82. })
  83. }
  84.  
  85. </div>
  86. </nav>
  87.  
  88. <div id="login-modal" className="modal">
  89. <div className="modal-content row" style={{ height: "auto", padding: "0", marginBottom: "0" }}>
  90.  
  91. <div className={`col s12 m6 leftPanel ${formId}`} style={{ height: "auto" }}>
  92. <h5 className="center" style={{ fontSize: "1.3em" }}>
  93. {formId == 'login' ? i18n.__('login_account') : i18n.__('create_account')}
  94. </h5>
  95. <form id={formId} style={{ overflow: "auto" }} onSubmit={(e) => event(e)}>
  96. <div className="input-field col s12">
  97. <input id="username" type="text" />
  98. <label htmlFor="username">{i18n.__('username')}</label>
  99. </div>
  100. <div className="input-field col s12">
  101. <input id="password" type="password" />
  102. <label htmlFor="password">{i18n.__('password')}</label>
  103. </div>
  104. {formId == 'signup' ?
  105. <div>
  106. <div className="input-field col s12">
  107. <input id="name" type="text" />
  108. <label htmlFor="name">{i18n.__('first_name')}</label>
  109. </div>
  110. <div className="input-field col s12">
  111. <input id="surname" type="text" />
  112. <label htmlFor="surname">{i18n.__('surname')}</label>
  113. </div>
  114. <div className="input-field col s12">
  115. <input id="email" type="email" />
  116. <label htmlFor="email">{i18n.__('email')}</label>
  117. </div>
  118. </div>
  119. :
  120. ''
  121. }
  122. <button className="btn-flat teal white-text waves-effect waves-light col s12 center" type="submit" name="action">
  123. <i className="material-icons left">send</i>{formId == "login" ? i18n.__('login') : i18n.__('signup')}
  124. </button>
  125. </form>
  126. {
  127. formId == 'login' ?
  128. <div className="form-between center">{i18n.__("dont_have_account")}<a href="#" onClick={() => this.changeForm()}> {i18n.__('click_here')}</a></div>
  129. :
  130. <div className="form-between center">{i18n.__('already_have_an_account')}<a href="#" onClick={() => this.changeForm()}> {i18n.__('click_here')}</a></div>
  131. }
  132. <a onClick={() => this.loginWithFacebook()} className="waves-effect waves-light btn-flat col s12 center" style={{ background: "#3e5b98", color: "#fff" }}><i className="socicon socicon-facebook left"></i>{i18n.__('login_with_facebook')}</a>
  133. </div>
  134. <div className={`col m6 rightPanel hide-on-small-only ${formId}`}>
  135. </div>
  136.  
  137. </div>
  138. </div>
  139.  
  140. </div>
  141. );
  142.  
  143. }
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement