commit
d7096f9231
|
@ -1,10 +1,12 @@
|
||||||
const React = require('react');
|
const React = require('react');
|
||||||
|
const ReactDOM = require('react-dom');
|
||||||
const Reflux = require('reflux');
|
const Reflux = require('reflux');
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const classNames = require('classnames');
|
const classNames = require('classnames');
|
||||||
|
|
||||||
const UserActions = require('actions/user-actions');
|
const UserActions = require('actions/user-actions');
|
||||||
const UserStore = require('stores/user-store');
|
const UserStore = require('stores/user-store');
|
||||||
|
const focus = require('lib-core/focus');
|
||||||
|
|
||||||
const Button = require('core-components/button');
|
const Button = require('core-components/button');
|
||||||
const Form = require('core-components/form');
|
const Form = require('core-components/form');
|
||||||
|
@ -35,7 +37,7 @@ let MainHomePageLoginWidget = React.createClass({
|
||||||
|
|
||||||
renderLogin() {
|
renderLogin() {
|
||||||
return (
|
return (
|
||||||
<Widget className="main-home-page--widget" title="Login">
|
<Widget className="main-home-page--widget" title="Login" ref="loginWidget">
|
||||||
<Form className="login-widget--form" ref="loginForm" onSubmit={this.handleLoginFormSubmit} errors={this.state.loginFormErrors} onValidateErrors={this.handleLoginFormErrorsValidation}>
|
<Form className="login-widget--form" ref="loginForm" onSubmit={this.handleLoginFormSubmit} errors={this.state.loginFormErrors} onValidateErrors={this.handleLoginFormErrorsValidation}>
|
||||||
<div className="login-widget--inputs">
|
<div className="login-widget--inputs">
|
||||||
<Input placeholder="email" name="email" className="login-widget--input" validation="EMAIL" required/>
|
<Input placeholder="email" name="email" className="login-widget--input" validation="EMAIL" required/>
|
||||||
|
@ -46,7 +48,7 @@ let MainHomePageLoginWidget = React.createClass({
|
||||||
<Button type="primary">LOG IN</Button>
|
<Button type="primary">LOG IN</Button>
|
||||||
</div>
|
</div>
|
||||||
</Form>
|
</Form>
|
||||||
<Button className="login-widget--forgot-password" type="link" onClick={this.handleForgotPasswordClick}>
|
<Button className="login-widget--forgot-password" type="link" onClick={this.handleForgotPasswordClick} onMouseDown={(event) => {event.preventDefault()}}>
|
||||||
{'Forgot your password?'}
|
{'Forgot your password?'}
|
||||||
</Button>
|
</Button>
|
||||||
</Widget>
|
</Widget>
|
||||||
|
@ -55,7 +57,7 @@ let MainHomePageLoginWidget = React.createClass({
|
||||||
|
|
||||||
renderPasswordRecovery() {
|
renderPasswordRecovery() {
|
||||||
return (
|
return (
|
||||||
<Widget className="main-home-page--widget main-home-page--password-widget" title="Password Recovery">
|
<Widget className="main-home-page--widget main-home-page--password-widget" title="Password Recovery" ref="recoverWidget">
|
||||||
<Form className="login-widget--form" onSubmit={this.handleForgotPasswordSubmit}>
|
<Form className="login-widget--form" onSubmit={this.handleForgotPasswordSubmit}>
|
||||||
<div className="login-widget--inputs">
|
<div className="login-widget--inputs">
|
||||||
<Input placeholder="email" name="email" className="login-widget--input" validation="EMAIL"/>
|
<Input placeholder="email" name="email" className="login-widget--input" validation="EMAIL"/>
|
||||||
|
@ -64,7 +66,7 @@ let MainHomePageLoginWidget = React.createClass({
|
||||||
<Button type="primary">Recover my password</Button>
|
<Button type="primary">Recover my password</Button>
|
||||||
</div>
|
</div>
|
||||||
</Form>
|
</Form>
|
||||||
<Button className="login-widget--forgot-password" type="link" onClick={this.handleBackToLoginClick}>
|
<Button className="login-widget--forgot-password" type="link" onClick={this.handleBackToLoginClick} onMouseDown={(event) => {event.preventDefault()}}>
|
||||||
{'Back to login form'}
|
{'Back to login form'}
|
||||||
</Button>
|
</Button>
|
||||||
</Widget>
|
</Widget>
|
||||||
|
@ -88,13 +90,13 @@ let MainHomePageLoginWidget = React.createClass({
|
||||||
handleForgotPasswordClick() {
|
handleForgotPasswordClick() {
|
||||||
this.setState({
|
this.setState({
|
||||||
sideToShow: 'back'
|
sideToShow: 'back'
|
||||||
});
|
}, this.moveFocusToCurrentSide);
|
||||||
},
|
},
|
||||||
|
|
||||||
handleBackToLoginClick() {
|
handleBackToLoginClick() {
|
||||||
this.setState({
|
this.setState({
|
||||||
sideToShow: 'front'
|
sideToShow: 'front'
|
||||||
});
|
}, this.moveFocusToCurrentSide);
|
||||||
},
|
},
|
||||||
|
|
||||||
onUserStoreChanged(event) {
|
onUserStoreChanged(event) {
|
||||||
|
@ -107,6 +109,23 @@ let MainHomePageLoginWidget = React.createClass({
|
||||||
this.refs.loginForm.refs.password.focus()
|
this.refs.loginForm.refs.password.focus()
|
||||||
}.bind(this));
|
}.bind(this));
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
moveFocusToCurrentSide() {
|
||||||
|
let currentWidget;
|
||||||
|
let previousWidget;
|
||||||
|
|
||||||
|
if (this.state.sideToShow === 'front') {
|
||||||
|
currentWidget = ReactDOM.findDOMNode(this.refs.loginWidget);
|
||||||
|
previousWidget = ReactDOM.findDOMNode(this.refs.recoverWidget);
|
||||||
|
} else {
|
||||||
|
currentWidget = ReactDOM.findDOMNode(this.refs.recoverWidget);
|
||||||
|
previousWidget = ReactDOM.findDOMNode(this.refs.loginWidget);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (focus.isActiveElementInsideDOMTree(previousWidget)) {
|
||||||
|
focus.focusFirstInput(currentWidget);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
const _ = require('lodash');
|
||||||
|
|
||||||
|
export default {
|
||||||
|
isActiveElementInsideDOMTree(domTree = document) {
|
||||||
|
let activeElement = document.activeElement;
|
||||||
|
let elements = domTree.querySelectorAll('*');
|
||||||
|
|
||||||
|
return (_.findIndex(elements, activeElement) !== -1);
|
||||||
|
},
|
||||||
|
|
||||||
|
focusFirstInput(domTree) {
|
||||||
|
let firstFocusableElement = domTree.querySelector('input');
|
||||||
|
|
||||||
|
if (firstFocusableElement) {
|
||||||
|
firstFocusableElement.focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
Loading…
Reference in New Issue